Module Name: src Committed By: rin Date: Fri Aug 6 08:58:42 UTC 2021
Modified Files: src/sys/arch/arm/xscale: i80321_intr.h Log Message: Do *NOT* lower IPL in i80321_splraise(). Fix various strange crashes for DIAGNOSTIC kernel on evbarm/HDL_G, including one worked around by if_wm.c rev 1.706: http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/pci/if_wm.c#rev1.706 To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/xscale/i80321_intr.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/xscale/i80321_intr.h diff -u src/sys/arch/arm/xscale/i80321_intr.h:1.12 src/sys/arch/arm/xscale/i80321_intr.h:1.13 --- src/sys/arch/arm/xscale/i80321_intr.h:1.12 Wed Jan 24 09:04:45 2018 +++ src/sys/arch/arm/xscale/i80321_intr.h Fri Aug 6 08:58:42 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i80321_intr.h,v 1.12 2018/01/24 09:04:45 skrll Exp $ */ +/* $NetBSD: i80321_intr.h,v 1.13 2021/08/06 08:58:42 rin Exp $ */ /* * Copyright (c) 2001, 2002, 2006 Wasabi Systems, Inc. @@ -95,10 +95,15 @@ static inline int __attribute__((__unuse i80321_splraise(int ipl) { int old = curcpl(); - set_curcpl(ipl); - /* Don't let the compiler re-order this code with subsequent code */ - __insn_barrier(); + if (ipl > old) { + set_curcpl(ipl); + /* + * Don't let the compiler re-order this code with + * subsequent code + */ + __insn_barrier(); + } return (old); }