NetBSD Problem Report #43339

From tsutsui@ceres.dti.ne.jp  Sat May 22 16:49:19 2010
Return-Path: <tsutsui@ceres.dti.ne.jp>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id DEB6B63B873
	for <gnats-bugs@gnats.NetBSD.org>; Sat, 22 May 2010 16:49:18 +0000 (UTC)
Message-Id: <201005221649.o4MGnFNi005925@mirage.ceres.dti.ne.jp>
Date: Sun, 23 May 2010 01:49:15 +0900 (JST)
From: tsutsui@ceres.dti.ne.jp
Reply-To: tsutsui@ceres.dti.ne.jp
To: gnats-bugs@gnats.NetBSD.org
Cc: tsutsui@ceres.dti.ne.jp
Subject: IPL_NONE == IPL_SOFTNET on arm ports and it causes assertion panic
X-Send-Pr-Version: 3.95

>Number:         43339
>Category:       port-arm
>Synopsis:       IPL_NONE == IPL_SOFTNET on arm ports and it causes assertion panic
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    port-arm-maintainer
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat May 22 16:50:00 +0000 2010
>Closed-Date:    Sun Jun 20 06:34:44 +0000 2010
>Last-Modified:  Sun Jun 20 06:34:44 +0000 2010
>Originator:     Izumi Tsutsui
>Release:        NetBSD 5.99.29
>Organization:
>Environment:
System: NetBSD 5.99.29 (GENERIC) updated around 201005221600Z
Architecture: arm
Machine: shark
>Description:
shark GENERIC kernel gets the following panic on remote login:

panic: pool 'synpl' is IPL_NONE, but called from interrupt context

The pool 'synpl' is allocated in sys/netinet/tcp_input.c:
---
	pool_init(&syn_cache_pool, sizeof(struct syn_cache), 0, 0, 0,
	    "synpl", NULL, IPL_SOFTNET);
---

But in most arm ports, IPL_SOFTNET == IPL_NONE in <machine/intr.h>:
---
#define IPL_NONE	0
#ifdef __HAVE_FAST_SOFTINTS
#define	IPL_SOFTCLOCK	1
#define	IPL_SOFTBIO	2
#define	IPL_SOFTNET	3
#define	IPL_SOFTSERIAL	4
#define IPL_VM		5
#define IPL_SCHED	6
#define IPL_HIGH	7

#define NIPL		8
#else
#define	IPL_SOFTCLOCK	IPL_NONE
#define	IPL_SOFTBIO	IPL_NONE
#define	IPL_SOFTNET	IPL_NONE
#define	IPL_SOFTSERIAL	IPL_NONE
#define IPL_VM		1
#define IPL_SCHED	2
#define IPL_HIGH	3

#define NIPL		4
#endif
---

>How-To-Repeat:
Boot GENERIC kernels with options DIAGNOSTIC on arm ports
and use TCP connections.

>Fix:
Set proper IPL_SOFTfoo values?
Disable options DIAGNOSTIC in all GENERIC kernels for workaround?
---
Izumi Tsutsui

>Release-Note:

>Audit-Trail:
From: Mindaugas Rasiukevicius <rmind@netbsd.org>
To: tsutsui@ceres.dti.ne.jp, gnats-bugs@NetBSD.org
Cc: port-arm-maintainer@netbsd.org, gnats-admin@netbsd.org,
 netbsd-bugs@netbsd.org
Subject: Re: port-arm/43339: IPL_NONE == IPL_SOFTNET on arm ports and it
 causes assertion panic
Date: Wed, 26 May 2010 03:03:35 +0100

 tsutsui@ceres.dti.ne.jp wrote:
 > >Number:         43339
 > >Category:       port-arm
 > >Synopsis:       IPL_NONE == IPL_SOFTNET on arm ports and it causes assertion panic
 >
 > ...
 >
 > >Fix:
 > Set proper IPL_SOFTfoo values?
 > ...

 Right, while from mutex(9) perspective IPL_NONE and IPL_SOFT* behave same,
 part of the reason for these definitions is a use for various assertions.
 Therefore, definitions should have unique values.

 -- 
 Mindaugas

From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
To: gnats-bugs@NetBSD.org
Cc: rmind@NetBSD.org, port-arm-maintainer@NetBSD.org, gnats-admin@NetBSD.org,
        netbsd-bugs@NetBSD.org, tsutsui@ceres.dti.ne.jp
Subject: Re: port-arm/43339: IPL_NONE == IPL_SOFTNET on arm ports and itcauses
	 assertion panic
Date: Wed, 2 Jun 2010 23:58:21 +0900

 > > >Fix:
 > > Set proper IPL_SOFTfoo values?
  :
 > Right, while from mutex(9) perspective IPL_NONE and IPL_SOFT* behave same,
 > part of the reason for these definitions is a use for various assertions.
 > Therefore, definitions should have unique values.

 Here is a dumb mechanical patch (tested only on shark):

 ---
 Index: acorn32/include/intr.h
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/acorn32/include/intr.h,v
 retrieving revision 1.8
 diff -u -r1.8 intr.h
 --- acorn32/include/intr.h	27 Apr 2008 18:58:43 -0000	1.8
 +++ acorn32/include/intr.h	2 Jun 2010 14:49:46 -0000
 @@ -41,7 +41,6 @@
  /* Hardware Interrupt Priority Levels are not mutually exclusive. */

  #define	IPL_NONE	0
 -#ifdef __HAVE_FAST_SOFTINTS
  #define	IPL_SOFTCLOCK	1
  #define	IPL_SOFTBIO	2
  #define	IPL_SOFTNET	3
 @@ -50,16 +49,6 @@
  #define	IPL_SCHED	6
  #define IPL_HIGH	7
  #define NIPL		8
 -#else
 -#define IPL_VM		1
 -#define	IPL_SCHED	2
 -#define IPL_HIGH	3
 -#define	IPL_SOFTSERIAL	IPL_NONE
 -#define	IPL_SOFTNET	IPL_NONE
 -#define	IPL_SOFTBIO	IPL_NONE
 -#define	IPL_SOFTCLOCK	IPL_NONE
 -#define NIPL		4
 -#endif

  #define	IST_UNUSABLE	-1	/* interrupt cannot be used */
  #define	IST_NONE	0	/* none (dummy) */
 Index: arm/arm32/intr.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/arm/arm32/intr.c,v
 retrieving revision 1.30
 diff -u -r1.30 intr.c
 --- arm/arm32/intr.c	19 Nov 2008 06:30:49 -0000	1.30
 +++ arm/arm32/intr.c	2 Jun 2010 14:49:47 -0000
 @@ -65,10 +65,14 @@
  		spl_masks[loop] = 0xffffffff;
  	}

 -	spl_masks[IPL_VM]	= irqmasks[IPL_VM];
 -	spl_masks[IPL_SCHED]	= irqmasks[IPL_SCHED];
 -	spl_masks[IPL_HIGH]	= irqmasks[IPL_HIGH];
 -	spl_masks[IPL_NONE]	= irqmasks[IPL_NONE];
 +	spl_masks[IPL_VM]	  = irqmasks[IPL_VM];
 +	spl_masks[IPL_SCHED]	  = irqmasks[IPL_SCHED];
 +	spl_masks[IPL_HIGH]	  = irqmasks[IPL_HIGH];
 +	spl_masks[IPL_SOFTSERIAL] = irqmasks[IPL_SOFTSERIAL];
 +	spl_masks[IPL_SOFTNET]	  = irqmasks[IPL_SOFTNET];
 +	spl_masks[IPL_SOFTBIO]	  = irqmasks[IPL_SOFTBIO];
 +	spl_masks[IPL_SOFTCLOCK]  = irqmasks[IPL_SOFTCLOCK];
 +	spl_masks[IPL_NONE]	  = irqmasks[IPL_NONE];

  }

 Index: arm/at91/at91aic.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/arm/at91/at91aic.c,v
 retrieving revision 1.3
 diff -u -r1.3 at91aic.c
 --- arm/at91/at91aic.c	23 Oct 2009 06:53:12 -0000	1.3
 +++ arm/at91/at91aic.c	2 Jun 2010 14:49:47 -0000
 @@ -145,23 +145,20 @@
  		aic_imask[ipl] = aic_irqs;
  	}

 -	aic_imask[IPL_NONE] = 0;
 +	/* IPL_NONE must open up all interrupts */
 +	KASSERT(aic_imask[IPL_NONE] == 0);
 +	KASSERT(aic_imask[IPL_SOFTCLOCK] == 0);
 +	KASSERT(aic_imask[IPL_SOFTBIO] == 0);
 +	KASSERT(aic_imask[IPL_SOFTNET] == 0);
 +	KASSERT(aic_imask[IPL_SOFTSERIAL] == 0);

  	/*
 -	 * splvm() blocks all interrupts that use the kernel memory
 -	 * allocation facilities.
 +	 * Enforce a hierarchy that gives "slow" device (or devices with
 +	 * limited input buffer space/"real-time" requirements) a better
 +	 * chance at not dropping data.
  	 */
 -	aic_imask[IPL_VM] |= aic_imask[IPL_NONE];
 -
 -	/*
 -	 * splclock() must block anything that uses the scheduler.
 -	 */
 -	aic_imask[IPL_CLOCK] |= aic_imask[IPL_VM];
 -
 -	/*
 -	 * splhigh() must block "everything".
 -	 */
 -	aic_imask[IPL_HIGH] |= aic_imask[IPL_CLOCK];
 +	aic_imask[IPL_SCHED] |= aic_imask[IPL_VM];
 +	aic_imask[IPL_HIGH] |= aic_imask[IPL_SCHED];

  	/*
  	 * Now compute which IRQs must be blocked when servicing any
 Index: arm/ep93xx/ep93xx_intr.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/arm/ep93xx/ep93xx_intr.c,v
 retrieving revision 1.13
 diff -u -r1.13 ep93xx_intr.c
 --- arm/ep93xx/ep93xx_intr.c	28 Apr 2008 20:23:14 -0000	1.13
 +++ arm/ep93xx/ep93xx_intr.c	2 Jun 2010 14:49:47 -0000
 @@ -150,9 +150,17 @@

  	KASSERT(vic1_imask[IPL_NONE] == 0);
  	KASSERT(vic2_imask[IPL_NONE] == 0);
 +	KASSERT(vic1_imask[IPL_SOFTCLOCK] == 0);
 +	KASSERT(vic2_imask[IPL_SOFTCLOCK] == 0);
 +	KASSERT(vic1_imask[IPL_SOFTBIO] == 0);
 +	KASSERT(vic2_imask[IPL_SOFTBIO] == 0);
 +	KASSERT(vic1_imask[IPL_SOFTNET] == 0);
 +	KASSERT(vic2_imask[IPL_SOFTNET] == 0);
 +	KASSERT(vic1_imask[IPL_SOFTSERIAL] == 0);
 +	KASSERT(vic2_imask[IPL_SOFTSERIAL] == 0);

  	/*
 -	 * splclock() must block anything that uses the scheduler.
 +	 * splsched() must block anything that uses the scheduler.
  	 */
  	vic1_imask[IPL_SCHED] |= vic1_imask[IPL_VM];
  	vic2_imask[IPL_SCHED] |= vic2_imask[IPL_VM];
 Index: arm/footbridge/isa/isa_machdep.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/arm/footbridge/isa/isa_machdep.c,v
 retrieving revision 1.16
 diff -u -r1.16 isa_machdep.c
 --- arm/footbridge/isa/isa_machdep.c	20 Aug 2009 12:51:28 -0000	1.16
 +++ arm/footbridge/isa/isa_machdep.c	2 Jun 2010 14:49:48 -0000
 @@ -203,12 +203,6 @@
  		imask[level] = irqs;
  	}

 -	imask[IPL_NONE] = 0;
 -	imask[IPL_SOFTCLOCK] |= imask[IPL_NONE];
 -	imask[IPL_SOFTBIO] |= imask[IPL_SOFTCLOCK];
 -	imask[IPL_SOFTNET] |= imask[IPL_SOFTBIO];
 -	imask[IPL_SOFTSERIAL] |= imask[IPL_SOFTNET];
 -	imask[IPL_VM] |= imask[IPL_SOFTSERIAL];
  	imask[IPL_SCHED] |= imask[IPL_VM];
  	imask[IPL_HIGH] |= imask[IPL_SCHED];

 Index: arm/ixp12x0/ixp12x0_intr.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/arm/ixp12x0/ixp12x0_intr.c,v
 retrieving revision 1.19
 diff -u -r1.19 ixp12x0_intr.c
 --- arm/ixp12x0/ixp12x0_intr.c	28 Apr 2008 20:23:14 -0000	1.19
 +++ arm/ixp12x0/ixp12x0_intr.c	2 Jun 2010 14:49:48 -0000
 @@ -206,21 +206,29 @@

  	KASSERT(imask[IPL_NONE] == 0);
  	KASSERT(pci_imask[IPL_NONE] == 0);
 +	KASSERT(imask[IPL_SOFTCLOCK] == 0);
 +	KASSERT(pci_imask[IPL_SOFTCLOCK] == 0);
 +	KASSERT(imask[IPL_SOFTBIO] == 0);
 +	KASSERT(pci_imask[IPL_SOFTBIO] == 0);
 +	KASSERT(imask[IPL_SOFTNET] == 0);
 +	KASSERT(pci_imask[IPL_SOFTNET] == 0);
 +	KASSERT(imask[IPL_SOFTSERIAL] == 0);
 +	KASSERT(pci_imask[IPL_SOFTSERIAL] == 0);

  	KASSERT(imask[IPL_VM] != 0);
  	KASSERT(pci_imask[IPL_VM] != 0);

  	/*
 -	 * splclock() must block anything that uses the scheduler.
 +	 * splsched() must block anything that uses the scheduler.
  	 */
 -	imask[IPL_CLOCK] |= imask[IPL_VM];
 -	pci_imask[IPL_CLOCK] |= pci_imask[IPL_VM];
 +	imask[IPL_SCHED] |= imask[IPL_VM];
 +	pci_imask[IPL_SCHED] |= pci_imask[IPL_VM];

  	/*
  	 * splhigh() must block "everything".
  	 */
 -	imask[IPL_HIGH] |= imask[IPL_CLOCK];
 -	pci_imask[IPL_HIGH] |= pci_imask[IPL_CLOCK];
 +	imask[IPL_HIGH] |= imask[IPL_SCHED];
 +	pci_imask[IPL_HIGH] |= pci_imask[IPL_SCHED];

  	/*
  	 * Now compute which IRQs must be blocked when servicing any
 Index: arm/xscale/i80321_icu.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/arm/xscale/i80321_icu.c,v
 retrieving revision 1.19
 diff -u -r1.19 i80321_icu.c
 --- arm/xscale/i80321_icu.c	5 Jan 2009 06:03:39 -0000	1.19
 +++ arm/xscale/i80321_icu.c	2 Jun 2010 14:49:48 -0000
 @@ -187,7 +187,11 @@
  		i80321_imask[ipl] = irqs;
  	}

 -	i80321_imask[IPL_NONE] = 0;
 +	KASSERT(i80321_imask[IPL_NONE] == 0);
 +	KASSERT(i80321_imask[IPL_SOFTCLOCK] == 0);
 +	KASSERT(i80321_imask[IPL_SOFTBIO] == 0);
 +	KASSERT(i80321_imask[IPL_SOFTNET] == 0);
 +	KASSERT(i80321_imask[IPL_SOFTSERIAL] == 0);

  	/*
  	 * Enforce a hierarchy that gives "slow" device (or devices with
 Index: arm/xscale/ixp425_intr.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/arm/xscale/ixp425_intr.c,v
 retrieving revision 1.20
 diff -u -r1.20 ixp425_intr.c
 --- arm/xscale/ixp425_intr.c	21 Oct 2009 14:15:50 -0000	1.20
 +++ arm/xscale/ixp425_intr.c	2 Jun 2010 14:49:48 -0000
 @@ -226,6 +226,11 @@
  	ixp425_imask[IPL_SOFTBIO] = SI_TO_IRQBIT(SI_SOFTBIO);
  	ixp425_imask[IPL_SOFTNET] = SI_TO_IRQBIT(SI_SOFTNET);
  	ixp425_imask[IPL_SOFTSERIAL] = SI_TO_IRQBIT(SI_SOFTSERIAL);
 +#else
 +	KASSERT(ixp425_imask[IPL_SOFTCLOCK] == 0);
 +	KASSERT(ixp425_imask[IPL_SOFTBIO] == 0);
 +	KASSERT(ixp425_imask[IPL_SOFTNET] == 0);
 +	KASSERT(ixp425_imask[IPL_SOFTSERIAL] == 0);
  #endif

  	/*
 @@ -233,10 +238,6 @@
  	 * limited input buffer space/"real-time" requirements) a better
  	 * chance at not dropping data.
  	 */
 -	ixp425_imask[IPL_SOFTBIO] |= ixp425_imask[IPL_SOFTCLOCK];
 -	ixp425_imask[IPL_SOFTNET] |= ixp425_imask[IPL_SOFTBIO];
 -	ixp425_imask[IPL_SOFTSERIAL] |= ixp425_imask[IPL_SOFTNET];
 -	ixp425_imask[IPL_VM] |= ixp425_imask[IPL_SOFTSERIAL];
  	ixp425_imask[IPL_SCHED] |= ixp425_imask[IPL_VM];
  	ixp425_imask[IPL_HIGH] |= ixp425_imask[IPL_SCHED];

 Index: arm/xscale/pxa2x0_intr.c
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/arm/xscale/pxa2x0_intr.c,v
 retrieving revision 1.16
 diff -u -r1.16 pxa2x0_intr.c
 --- arm/xscale/pxa2x0_intr.c	5 Sep 2009 17:40:35 -0000	1.16
 +++ arm/xscale/pxa2x0_intr.c	2 Jun 2010 14:49:48 -0000
 @@ -238,17 +238,13 @@
  		pxa2x0_imask[i] |= mask; /* Enable interrupt at lower level */

  	for( ; i < NIPL-1; ++i)
 -		pxa2x0_imask[i] &= ~mask; /* Disable itnerrupt at upper level */
 +		pxa2x0_imask[i] &= ~mask; /* Disable interrupt at upper level */

  	/*
  	 * Enforce a hierarchy that gives "slow" device (or devices with
  	 * limited input buffer space/"real-time" requirements) a better
  	 * chance at not dropping data.
  	 */
 -	pxa2x0_imask[IPL_SOFTBIO] &= pxa2x0_imask[IPL_SOFTCLOCK];
 -	pxa2x0_imask[IPL_SOFTNET] &= pxa2x0_imask[IPL_SOFTBIO];
 -	pxa2x0_imask[IPL_SOFTSERIAL] &= pxa2x0_imask[IPL_SOFTNET];
 -	pxa2x0_imask[IPL_VM] &= pxa2x0_imask[IPL_SOFTSERIAL];
  	pxa2x0_imask[IPL_SCHED] &= pxa2x0_imask[IPL_VM];
  	pxa2x0_imask[IPL_HIGH] &= pxa2x0_imask[IPL_SCHED];

 Index: evbarm/include/intr.h
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/evbarm/include/intr.h,v
 retrieving revision 1.20
 diff -u -r1.20 intr.h
 --- evbarm/include/intr.h	27 Apr 2008 18:58:46 -0000	1.20
 +++ evbarm/include/intr.h	2 Jun 2010 14:49:49 -0000
 @@ -41,7 +41,6 @@
  #ifdef _KERNEL

  /* Interrupt priority "levels". */
 -#ifdef __HAVE_FAST_SOFTINTS
  #define	IPL_NONE	0		/* nothing */
  #define	IPL_SOFTCLOCK	1		/* clock */
  #define	IPL_SOFTBIO	2		/* block I/O */
 @@ -52,18 +51,6 @@
  #define	IPL_HIGH	7		/* everything */

  #define	NIPL		8
 -#else
 -#define	IPL_NONE	0		/* nothing */
 -#define	IPL_SOFTCLOCK	IPL_NONE	/* clock */
 -#define	IPL_SOFTBIO	IPL_NONE	/* block I/O */
 -#define	IPL_SOFTNET	IPL_NONE	/* software network interrupt */
 -#define	IPL_SOFTSERIAL	IPL_NONE	/* software serial interrupt */
 -#define	IPL_VM		1		/* memory allocation */
 -#define	IPL_SCHED	2		/* clock interrupt */
 -#define	IPL_HIGH	3		/* everything */
 -
 -#define	NIPL		4
 -#endif

  /* Interrupt sharing types. */
  #define	IST_NONE	0	/* none */
 Index: hpcarm/include/intr.h
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/hpcarm/include/intr.h,v
 retrieving revision 1.13
 diff -u -r1.13 intr.h
 --- hpcarm/include/intr.h	17 Apr 2010 13:36:21 -0000	1.13
 +++ hpcarm/include/intr.h	2 Jun 2010 14:49:49 -0000
 @@ -38,7 +38,6 @@

  #ifdef _KERNEL

 -#ifdef __HAVE_FAST_SOFTINTS
  #define IPL_NONE	0
  #define IPL_SOFTCLOCK	1
  #define IPL_SOFTBIO	2
 @@ -49,18 +48,6 @@
  #define IPL_HIGH	7

  #define NIPL		8
 -#else
 -#define IPL_NONE	0
 -#define IPL_SOFTCLOCK	IPL_NONE
 -#define IPL_SOFTBIO	IPL_NONE
 -#define IPL_SOFTNET	IPL_NONE
 -#define IPL_SOFTSERIAL	IPL_NONE
 -#define IPL_VM		1
 -#define IPL_SCHED	2
 -#define IPL_HIGH	3
 -
 -#define NIPL		4
 -#endif

  #define	IST_UNUSABLE	-1	/* interrupt cannot be used */
  #define	IST_NONE	0	/* none (dummy) */
 Index: shark/include/intr.h
 ===================================================================
 RCS file: /cvsroot/src/sys/arch/shark/include/intr.h,v
 retrieving revision 1.9
 diff -u -r1.9 intr.h
 --- shark/include/intr.h	27 Apr 2008 18:58:47 -0000	1.9
 +++ shark/include/intr.h	2 Jun 2010 14:49:52 -0000
 @@ -37,7 +37,6 @@
  #define _SHARK_INTR_H_

  #define IPL_NONE	0
 -#ifdef __HAVE_FAST_SOFTINTS
  #define	IPL_SOFTCLOCK	1
  #define	IPL_SOFTBIO	2
  #define	IPL_SOFTNET	3
 @@ -47,17 +46,6 @@
  #define IPL_HIGH	7

  #define NIPL		8
 -#else
 -#define	IPL_SOFTCLOCK	IPL_NONE
 -#define	IPL_SOFTBIO	IPL_NONE
 -#define	IPL_SOFTNET	IPL_NONE
 -#define	IPL_SOFTSERIAL	IPL_NONE
 -#define IPL_VM		1
 -#define IPL_SCHED	2
 -#define IPL_HIGH	3
 -
 -#define NIPL		4
 -#endif

  #define	IST_UNUSABLE	-1	/* interrupt cannot be used */
  #define	IST_NONE	0	/* none (dummy) */

 ---
 Izumi Tsutsui

From: matthew green <mrg@eterna.com.au>
To: gnats-bugs@NetBSD.org, tsutsui@ceres.dti.ne.jp
Cc: port-arm-maintainer@netbsd.org, gnats-admin@netbsd.org,
    netbsd-bugs@netbsd.org
Subject: re: port-arm/43339: IPL_NONE == IPL_SOFTNET on arm ports and it causes assertion panic
Date: Sun, 06 Jun 2010 12:23:59 +1000

 i like your patch.  i've been running with a much simpler but
 similar for just shark change lately. works fine.

 please commit your change.


 .mrg.

From: Izumi Tsutsui <tsutsui@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/43339 CVS commit: src/sys/arch
Date: Sun, 13 Jun 2010 02:11:23 +0000

 Module Name:	src
 Committed By:	tsutsui
 Date:		Sun Jun 13 02:11:23 UTC 2010

 Modified Files:
 	src/sys/arch/acorn32/include: intr.h
 	src/sys/arch/arm/arm32: intr.c
 	src/sys/arch/arm/at91: at91aic.c
 	src/sys/arch/arm/ep93xx: ep93xx_intr.c
 	src/sys/arch/arm/footbridge/isa: isa_machdep.c
 	src/sys/arch/arm/ixp12x0: ixp12x0_intr.c
 	src/sys/arch/arm/xscale: i80321_icu.c ixp425_intr.c pxa2x0_intr.c
 	src/sys/arch/evbarm/include: intr.h
 	src/sys/arch/hpcarm/include: intr.h
 	src/sys/arch/shark/include: intr.h

 Log Message:
 Apply fixes for PR port-arm/43339:
  Set proper IPL_SOFTfoo values even in FAST_SOFTINT case.
  Some assertions in MI code expect they have unique values,
  per comments from rmind@.

 Also cleanup various "interrupt hierarchy" code since IPL_NONE and
 IPL_SOFTfoo should not be set by any hardware interrupt establish functions.

 Ok'ed by mrg@, tested on shark and hpcarm.


 To generate a diff of this commit:
 cvs rdiff -u -r1.8 -r1.9 src/sys/arch/acorn32/include/intr.h
 cvs rdiff -u -r1.30 -r1.31 src/sys/arch/arm/arm32/intr.c
 cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/at91/at91aic.c
 cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/ep93xx/ep93xx_intr.c
 cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/footbridge/isa/isa_machdep.c
 cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/ixp12x0/ixp12x0_intr.c
 cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/xscale/i80321_icu.c
 cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/xscale/ixp425_intr.c
 cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/xscale/pxa2x0_intr.c
 cvs rdiff -u -r1.20 -r1.21 src/sys/arch/evbarm/include/intr.h
 cvs rdiff -u -r1.13 -r1.14 src/sys/arch/hpcarm/include/intr.h
 cvs rdiff -u -r1.9 -r1.10 src/sys/arch/shark/include/intr.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->closed
State-Changed-By: mrg@NetBSD.org
State-Changed-When: Sun, 20 Jun 2010 06:34:44 +0000
State-Changed-Why:
tsutsui commited a fine fix for this issue.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.