Re: powerpc/pic/intr.c IPL_HIGH vs IPL_NONE
KIYOHARA Takashi <[email protected]> Mon, 31 Dec 2012 16:09:02 +0900 (JST)
| Newsgroups | gmane.os.netbsd.ports.bebox,gmane.os.netbsd.ports.powerpc,gmane.os.netbsd.current |
|---|---|
| Message-ID | <[email protected]> |
----Next_Part(Mon_Dec_31_16_09_02_2012_201)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi! Frank, From: Frank Wille <[email protected]> Date: Wed, 03 Oct 2012 19:24:27 +0200 > KIYOHARA Takashi wrote: > > > The hangup reason is changing imask[IPL_HIGH] to 0x3ffe0000 from > > 0x7ffe0000. > > Which means it was 0x7ffe0000 before, and now it is 0x3ffe0000? > > Can you compile the kernel with PIC_DEBUG, to get some more information > about the irqs, virqs and masks in your system? The attached ipl.log is after r1.23: ih->ih_ipl = ipl; And attached maxipl.log is before r1.22: ih->ih_ipl = maxipl; 'hwirq 42 to virq 1' is established i8259 with IPL_NONE in arch/bebox/bebox/machdep.c:cpu_startup(). # 42 => 16(cascading i8259) + 26(cascaded to bebox pic) Interrupt is enabled by spl0() in genppc_cpu_configure. And pic_handle_intr() is called the interrupt 26. However imask[0..7] is not masked virq 1. pic_handler_intr() --- 1st call ======== if ((imask[pcpl] & v_imen) != 0) { : <-- Don't reached. pic->pic_disable_irq(pic, picirq); } else { : splraise(is->is_ipl); <-- splraise(IPL_HIGH) mtmsr(msr | PSL_EE); <-- interrupt enable!! And 2nd call intr_deliver(is, virq); <-- not reached... } 2nd call ======== if ((imask[pcpl] & v_imen) != 0) { : <-- Oops, don't reached. pic->pic_disable_irq(pic, picirq); } else { : splraise(is->is_ipl); <-- splraise(IPL_HIGH) mtmsr(msr | PSL_EE); <-- interrupt enable!! And 3rd call, 4th, 5th... intr_deliver(is, virq); <-- not reached... X-< } --- pic_handler_intr() Shall I change to call intr_establish() with IPL_HIGH in cpu_startup()? Or ih->ih_ipl = (ipl != IPL_NONE) ? ipl : maxipl; Thanks, -- kiyohara ----Next_Part(Mon_Dec_31_16_09_02_2012_201)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="ipl.log" >> NetBSD/bebox BOOT, Revision 1.10 (Mon Dec 24 21:29:57 JST 2012) >> Memory: 262144 k /dev/disk/scsi/0/0/0: <FIREBALL ST4.3S > /dev/disk/ide/0/master/0: <WDC AC36400L> Boot: /dev/disk/scsi/000/0_0:/netbsd.ipl -s Loading /dev/disk/scsi/000/0_0:/netbsd.ipl 3576092+144980 [216448+207854]=0x3f4574 start=0x100000 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 6.99.15 (GENERIC) #7: Fri Dec 28 23:41:13 JST 2012 [email protected]:/usr/src/sys/arch/bebox/compile/GENERIC total memory = 256 MB avail memory = 244 MB mapping hwirq 42 to virq 1 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 00000000 -> 00000000 6: 00000000 -> 00000000 7: 00000000 -> 00000000 befs_init mainbus0 (root) cpu0 at mainbus0: 603e (Revision 4.0), ID 0 (primary) cpu0: HID0 0x90c000<DOZE,DPM,ICE,DCE>, powersave: 1 cpu1 at mainbus0: ID 1 cpu1: processor off-line; multiprocessor support not present in kernel pci0 at mainbus0 bus 0: indirect configuration space access pchb0 at pci0 dev 0 function 0 pchb0: Motorola MPC105 "Eagle" Host Bridge (rev. 0x24) pchb0: L2 cache: 256K, multiprocessor mode pcib0 at pci0 dev 11 function 0: Intel 82378ZB System I/O (rev. 0x43) siop0 at pci0 dev 12 function 0: Symbios Logic 53c810 (fast scsi) mapping hwirq 26 to virq 2 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 00000000 -> 20000000 6: 00000000 -> 20000000 7: 00000000 -> 20000000 siop0: interrupting at irq 26 scsibus0 at siop0: 8 targets, 8 luns per target ppb0 at pci0 dev 13 function 0: HiNT HB1 PCI-PCI Bridge (rev. 0x15) pci1 at ppb0 bus 1 Texas Instruments product 0x8025 (Firewire serial bus, interface 0x10, revision 0x01) at pci1 dev 0 function 0 not configured NEC USB Host Controller (USB serial bus, interface 0x10, revision 0x43) at pci1 dev 1 function 0 not configured NEC USB Host Controller (USB serial bus, interface 0x10, revision 0x43) at pci1 dev 1 function 1 not configured NEC USB2 Host Controller (USB serial bus, interface 0x20, revision 0x04) at pci1 dev 1 function 2 not configured vga0 at pci0 dev 14 function 0: S3 Trio32/64 (rev. 0x44) wsdisplay1 at vga0 kbdmux 1 drm at vga0 not configured bktr0 at pci0 dev 15 function 0 mapping hwirq 29 to virq 3 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 20000000 -> 30000000 6: 20000000 -> 30000000 7: 20000000 -> 30000000 bktr0: interrupting at irq 29 bktr0: Hauppauge Model 56111 C bktr0: Hauppauge WinCast/TV, Philips NTSC tuner, dbx stereo. isa0 at pcib0 lpt0 at isa0 port 0x378-0x37b irq 7 mapping hwirq 7 to virq 4 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 30000000 -> 38000000 6: 30000000 -> 38000000 7: 30000000 -> 38000000 ne0 at isa0 port 0x300-0x31f irq 5 ne0: NE2000 (RTL8019) Ethernet ne0: Ethernet address 00:c0:26:38:61:94 ne0: 10base2, 10baseT, 10baseT-FDX, auto, default [0x00 0x30] auto mapping hwirq 5 to virq 5 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 38000000 -> 3c000000 6: 38000000 -> 3c000000 7: 38000000 -> 3c000000 com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo com0: console mapping hwirq 4 to virq 6 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c000000 6: 3c000000 -> 3c000000 7: 3c000000 -> 3e000000 com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo mapping hwirq 3 to virq 7 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c000000 6: 3c000000 -> 3c000000 7: 3e000000 -> 3f000000 com2 at isa0 port 0x380-0x387 irq 22: ns16550a, working fifo mapping hwirq 22 to virq 8 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c000000 6: 3c000000 -> 3c000000 7: 3f000000 -> 3f800000 com3 at isa0 port 0x388-0x38f irq 23: ns16550a, working fifo mapping hwirq 23 to virq 9 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c000000 6: 3c000000 -> 3c000000 7: 3f800000 -> 3fc00000 pckbc0 at isa0 port 0x60-0x64 pckbdprobe: reset response 0x0 pms0 at pckbc0 (aux slot) mapping hwirq 12 to virq 10 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c200000 6: 3c000000 -> 3c200000 7: 3fc00000 -> 3fe00000 pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 attimer0 at isa0 port 0x40-0x43 wdc0 at isa0 port 0x1f0-0x1f7 irq 14 mapping hwirq 14 to virq 11 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c200000 -> 3c300000 6: 3c200000 -> 3c300000 7: 3fe00000 -> 3ff00000 atabus0 at wdc0 channel 0 joy0 at isa0 port 0x201 joy0: joystick not connected wss0 at isa0 port 0x82c-0x833 irq 30 drq 6,7mapping hwirq 30 to virq 12 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c300000 -> 3c300000 6: 3c300000 -> 3c380000 7: 3ff00000 -> 3ff80000 : CS4231A audio0 at wss0: full duplex, playback, capture, mmap mcclock0 at isa0 port 0x70-0x71: mc146818 compatible time-of-day clock fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2 mapping hwirq 6 to virq 13 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c300000 -> 3c340000 6: 3c380000 -> 3c3c0000 7: 3ff80000 -> 3ffc0000 vmmask 3c340000 schedmask 3c3c0000 highmask 3ffc0000 ----Next_Part(Mon_Dec_31_16_09_02_2012_201)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="maxipl.log" >> NetBSD/bebox BOOT, Revision 1.10 (Mon Dec 24 21:29:57 JST 2012) >> Memory: 262144 k /dev/disk/scsi/0/0/0: <FIREBALL ST4.3S > /dev/disk/ide/0/master/0: <WDC AC36400L> Boot: /dev/disk/scsi/000/0_0:/netbsd.maxipl -s Loading /dev/disk/scsi/000/0_0:/netbsd.maxipl 3576092+144980 [216448+207854]=0x3f4574 start=0x100000 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 6.99.15 (GENERIC) #8: Fri Dec 28 23:48:19 JST 2012 [email protected]:/usr/src/sys/arch/bebox/compile/GENERIC total memory = 256 MB avail memory = 244 MB mapping hwirq 42 to virq 1 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 00000000 -> 00000000 6: 00000000 -> 00000000 7: 00000000 -> 40000000 befs_init mainbus0 (root) cpu0 at mainbus0: 603e (Revision 4.0), ID 0 (primary) cpu0: HID0 0x90c000<DOZE,DPM,ICE,DCE>, powersave: 1 cpu1 at mainbus0: ID 1 cpu1: processor off-line; multiprocessor support not present in kernel pci0 at mainbus0 bus 0: indirect configuration space access pchb0 at pci0 dev 0 function 0 pchb0: Motorola MPC105 "Eagle" Host Bridge (rev. 0x24) pchb0: L2 cache: 256K, multiprocessor mode pcib0 at pci0 dev 11 function 0: Intel 82378ZB System I/O (rev. 0x43) siop0 at pci0 dev 12 function 0: Symbios Logic 53c810 (fast scsi) mapping hwirq 26 to virq 2 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 00000000 -> 20000000 6: 00000000 -> 20000000 7: 40000000 -> 60000000 siop0: interrupting at irq 26 scsibus0 at siop0: 8 targets, 8 luns per target ppb0 at pci0 dev 13 function 0: HiNT HB1 PCI-PCI Bridge (rev. 0x15) pci1 at ppb0 bus 1 Texas Instruments product 0x8025 (Firewire serial bus, interface 0x10, revision 0x01) at pci1 dev 0 function 0 not configured NEC USB Host Controller (USB serial bus, interface 0x10, revision 0x43) at pci1 dev 1 function 0 not configured NEC USB Host Controller (USB serial bus, interface 0x10, revision 0x43) at pci1 dev 1 function 1 not configured NEC USB2 Host Controller (USB serial bus, interface 0x20, revision 0x04) at pci1 dev 1 function 2 not configured vga0 at pci0 dev 14 function 0: S3 Trio32/64 (rev. 0x44) wsdisplay1 at vga0 kbdmux 1 drm at vga0 not configured bktr0 at pci0 dev 15 function 0 mapping hwirq 29 to virq 3 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 20000000 -> 30000000 6: 20000000 -> 30000000 7: 60000000 -> 70000000 bktr0: interrupting at irq 29 bktr0: Hauppauge Model 56111 C bktr0: Hauppauge WinCast/TV, Philips NTSC tuner, dbx stereo. isa0 at pcib0 lpt0 at isa0 port 0x378-0x37b irq 7 mapping hwirq 7 to virq 4 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 30000000 -> 38000000 6: 30000000 -> 38000000 7: 70000000 -> 78000000 ne0 at isa0 port 0x300-0x31f irq 5 ne0: NE2000 (RTL8019) Ethernet ne0: Ethernet address 00:c0:26:38:61:94 ne0: 10base2, 10baseT, 10baseT-FDX, auto, default [0x00 0x30] auto mapping hwirq 5 to virq 5 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 38000000 -> 3c000000 6: 38000000 -> 3c000000 7: 78000000 -> 7c000000 com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo com0: console mapping hwirq 4 to virq 6 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c000000 6: 3c000000 -> 3c000000 7: 7c000000 -> 7e000000 com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo mapping hwirq 3 to virq 7 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c000000 6: 3c000000 -> 3c000000 7: 7e000000 -> 7f000000 com2 at isa0 port 0x380-0x387 irq 22: ns16550a, working fifo mapping hwirq 22 to virq 8 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c000000 6: 3c000000 -> 3c000000 7: 7f000000 -> 7f800000 com3 at isa0 port 0x388-0x38f irq 23: ns16550a, working fifo mapping hwirq 23 to virq 9 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c000000 6: 3c000000 -> 3c000000 7: 7f800000 -> 7fc00000 pckbc0 at isa0 port 0x60-0x64 pckbdprobe: reset response 0x0 pms0 at pckbc0 (aux slot) mapping hwirq 12 to virq 10 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c000000 -> 3c200000 6: 3c000000 -> 3c200000 7: 7fc00000 -> 7fe00000 pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 attimer0 at isa0 port 0x40-0x43 wdc0 at isa0 port 0x1f0-0x1f7 irq 14 mapping hwirq 14 to virq 11 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c200000 -> 3c300000 6: 3c200000 -> 3c300000 7: 7fe00000 -> 7ff00000 atabus0 at wdc0 channel 0 joy0 at isa0 port 0x201 joy0: joystick not connected wss0 at isa0 port 0x82c-0x833 irq 30 drq 6,7mapping hwirq 30 to virq 12 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c300000 -> 3c300000 6: 3c300000 -> 3c380000 7: 7ff00000 -> 7ff80000 : CS4231A audio0 at wss0: full duplex, playback, capture, mmap mcclock0 at isa0 port 0x70-0x71: mc146818 compatible time-of-day clock fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2 mapping hwirq 6 to virq 13 0: 00000000 -> 00000000 1: 00000000 -> 00000000 2: 00000000 -> 00000000 3: 00000000 -> 00000000 4: 00000000 -> 00000000 5: 3c300000 -> 3c340000 6: 3c380000 -> 3c3c0000 7: 7ff80000 -> 7ffc0000 vmmask 3c340000 schedmask 3c3c0000 highmask 7ffc0000 scsibus0: waiting 2 seconds for devices to settle... sd0 at scsibus0 target 0 lun 0: <QUANTUM, FIREBALL ST4.3S, 0F0C> disk fixed sd0: 4159 MB, 7068 cyl, 6 head, 200 sec, 512 bytes/sect x 8519216 sectors sd0: sync (100.00ns offset 8), 8-bit (10.000MB/s) transfers, tagged queueing fd0 at fdc0 drive 1: 1.44MB, 80 cyl, 2 head, 18 sec cd0 at scsibus0 target 5 lun 0: <TEAC, CD-ROM CD-56S, 1.0D> cdrom removable cd0: sync (100.00ns offset 8), 8-bit (10.000MB/s) transfers wd0 at atabus0 drive 0 wd0: <WDC AC36400L> wd0: 6149 MB, 13328 cyl, 15 head, 63 sec, 512 bytes/sect x 12594960 sectors boot device: sd0 root on sd0a dumps on sd0b root file system type: ffs Enter pathname of shell or RETURN for /bin/sh: We recommend that you create a non-root account and use su(1) for root access. ----Next_Part(Mon_Dec_31_16_09_02_2012_201)----