kernel/4947: puc(4) on sparc64 again

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

kernel/4947: puc(4) on sparc64 again

Takashi-4
>Number:         4947
>Category:       kernel
>Synopsis:       puc(4) on sparc64 again
>Confidential:   yes
>Severity:       critical
>Priority:       medium
>Responsible:    bugs
>State:          open
>Quarter:        
>Keywords:      
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 21 07:50:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     KUDO Takashi
>Release:        3.8
>Organization:
net
>Environment:
        System      : OpenBSD 3.8
        Architecture: OpenBSD.sparc64
        Machine     : sparc64
>Description:
        When trying login to a machie connected direclty via puc,
        I get kernel crash.

        here is demsg.
Boot device: net  File and args:
10400 >> OpenBSD 3.5 (obj) #1: Mon Mar 29 15:12:40 MST 2004
    [hidden email]:/usr/src/sys/arch/sparc64/stand/ofwboot.net/obj
: trying bsd...
Using BOOTPARAMS protocol: ip address: 192.168.0.151, hostname: ultra5a
root addr=192.168.0.7 path=/e/h/ultra5a/o38
Booting /pci@1f,0/pci@1,1/network@1,1/bsd
4389160@0x1000000+171336@0x1800000+4022968@0x1829d48
symbols @ 0xfff1e280 58+259056+154413 start=0x1000000
[ using 414176 bytes of bsd ELF symbol table ]
console is /pci@1f,0/pci@1,1/ebus@1/se@14,400000:a
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2005 OpenBSD. All rights reserved.  http://www.OpenBSD.org

OpenBSD 3.8 (GENERIC) #607: Sat Sep 10 16:03:59 MDT 2005
    [hidden email]:/usr/src/sys/arch/sparc64/compile/GENERIC
total memory = 134217728
avail memory = 110493696
using 819 buffers containing 6709248 bytes of memory
bootpath: /pci@1f,0/pci@1,1/network@1,1
mainbus0 (root): Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 270MHz)
cpu0 at mainbus0: SUNW,UltraSPARC-IIi @ 270 MHz, version 0 FPU
cpu0: physical 32K instruction (32 b/l), 16K data (32 b/l), 256K external (64 b/
l)
psycho0 at mainbus0 addr 0xfffc4000
SUNW,sabre: impl 0, version 0: ign 7c0 bus range 0 to 2; PCI bus 0
DVMA map: c0000000 to e0000000
IOTDB: 10bc0000 to 10c40000
pci0 at psycho0
ppb0 at pci0 dev 1 function 1 "Sun Simba PCI-PCI" rev 0x11
pci1 at ppb0 bus 1
ebus0 at pci1 dev 1 function 0 "Sun PCIO Ebus2" rev 0x01
auxio0 at ebus0 addr 726000-726003, 728000-728003, 72a000-72a003, 72c000-72c003,
 72f000-72f003
power at ebus0 addr 724000-724003 ipl 37 not configured
SUNW,pll at ebus0 addr 504000-504002 not configured
sab0 at ebus0 addr 400000-40007f ipl 43: rev 3.2
sabtty0 at sab0 port 0: console i/o
sabtty1 at sab0 port 1
comkbd0 at ebus0 addr 3083f8-3083ff ipl 41: no keyboard
com0 at ebus0 addr 3062f8-3062ff ipl 42: mouse: ns16550a, 16 byte fifo
lpt0 at ebus0 addr 3043bc-3043cb, 30015c-30015d, 700000-70000f ipl 34: polled
fdthree at ebus0 addr 3023f0-3023f7, 706000-70600f, 720000-720003 ipl 39 not con
figured
clock1 at ebus0 addr 0-1fff: mk48t59: hostid 80a6cf99
flashprom at ebus0 addr 0-fffff not configured
audioce0 at ebus0 addr 200000-2000ff, 702000-70200f, 704000-70400f, 722000-72200
3 ipl 35 ipl 36: nvaddrs 0
audio0 at audioce0
hme0 at pci1 dev 1 function 1 "Sun HME" rev 0x01: address 08:00:20:a6:cf:99
nsphy0 at hme0 phy 1: DP83840 10/100 PHY, rev. 1
hme0: using ivec 3021 for interrupt
vgafb0 at pci1 dev 2 function 0 "ATI Mach64 GT" rev 0x9a
wsdisplay0 at vgafb0
wsdisplay0: screen 0 added (std, sun emulation)
pciide0 at pci1 dev 3 function 0 "CMD Technology PCI0646" rev 0x03: DMA, channel
 0 configured to native-PCI, channel 1 configured to native-PCI
pciide0: using ivec 1820 for native-PCI interrupt
pciide0: channel 0 disabled (no drives)
atapiscsi0 at pciide0 channel 1 drive 0
scsibus0 at atapiscsi0: 2 targets
cd0 at scsibus0 targ 0 lun 0: <GoldStar, CD-ROM CRD-8240B, 1.24> SCSI0 5/cdrom r
emovable
cd0(pciide0:1:0): using PIO mode 4, DMA mode 2
ppb1 at pci0 dev 1 function 0 "Sun Simba PCI-PCI" rev 0x11
pci2 at ppb1 bus 2
puc0 at pci2 dev 1 function 0 "Avlab LP-PCI 4 Serial" rev 0x00: com, com, com, c
om
com1 at puc0 port 0 ivec 10: ns16550a, 16 byte fifo
com2 at puc0 port 1 ivec 10: ns16550a, 16 byte fifo
com3 at puc0 port 2 ivec 10: ns16550a, 16 byte fifo
com4 at puc0 port 3 ivec 10: ns16550a, 16 byte fifo
puc1 at pci2 dev 2 function 0 "Avlab LP-PCI 4 Serial" rev 0x00: com, com, com, c
om
com5 at puc1 port 0 ivec 14: ns16550a, 16 byte fifo
com6 at puc1 port 1 ivec 14: ns16550a, 16 byte fifo
com7 at puc1 port 2 ivec 14: ns16550a, 16 byte fifo
com8 at puc1 port 3 ivec 14: ns16550a, 16 byte fifo
puc2 at pci2 dev 3 function 0 "Avlab LP-PCI 4 Serial" rev 0x00: com, com, com, c
om
com9 at puc2 port 0 ivec 18: ns16550a, 16 byte fifo
com10 at puc2 port 1 ivec 18: ns16550a, 16 byte fifo
com11 at puc2 port 2 ivec 18: ns16550a, 16 byte fifo
com12 at puc2 port 3 ivec 18: ns16550a, 16 byte fifo
pcons at mainbus0 not configured
No counter-timer -- using %tick at 270MHz as system clock.
       
>How-To-Repeat:
        $ grep com6 /etc/remote
        com6:dv=/dev/tty05:br#9600:pa=none:dc:
        $ tip com6
        <hit return repeatedly, probably 3-5 times, drop to ddb>

data fault: pc=100a920 addr=0
panic: kernel fault
kdb breakpoint at 130bca0
Stopped at      Debugger+0x4:   nop
RUN AT LEAST 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS PANIC!
DO NOT EVEN BOTHER REPORTING THIS WITHOUT INCLUDING THAT INFORMATION!
ddb> trace
data_access_fault(8af93f0, 30, 100a920, 0, 0, 0) at data_access_fault+0x2c0
trapbase(8af9691, 0, 0, fffffffff7506970, d, 0) at trapbase+0x87ac
b_to_q(0, 0, 1f1c480, 3f, 0, 180c6a8) at b_to_q+0xb8
ttwrite(1f1c400, 8af9c00, 1, 4a94f88c, 0, 0) at ttwrite+0x1fc
comwrite(28, 8af9c00, 1, 0, 0, 0) at comwrite+0x48
spec_write(8af9a30, 0, 0, 0, 0, 0) at spec_write+0xc8
nfsspec_write(8af9a30, 30042, 5215110, 0, 0, 0) at nfsspec_write+0x48
VOP_WRITE(50cd660, 8af9c00, 1, 5282320, 0, 0) at VOP_WRITE+0x38
vn_write(3, 52210c8, 8af9c00, 5282320, 0, 180c6a8) at vn_write+0xac
dofilewrite(16, 3, 5221090, ffffffffffff2f2f, 1, 1) at dofilewrite+0x6c
sys_write(9, 8af9dd0, 8af9dc0, 0, 0, 180c6a8) at sys_write+0x58
syscall(8af9ed0, 4, 4a94f888, 4a94f88c, 0, 0) at syscall+0x280
softtrap(3, ffffffffffff2f2f, 1, 0, 0, 0) at softtrap+0x184
ddb> ps
   PID   PPID   PGRP    UID  S       FLAGS  WAIT       COMMAND
  2689  17737  17737   1075  3        0x86  ttyin      tip
*17737  23324  17737   1075  7      0x4006             tip
 23324   8803  23324   1075  3      0x4086  pause      ksh
  8803  18024  18024   1075  2       0x104             sshd
 18024   5667  18024      0  3      0x4184  netio      sshd
 27597      1  27597      0  3      0x4086  ttyin      getty
 14606      1  14606      0  3        0x84  select     cron
  5667      1   5667      0  3        0x84  select     sshd
  4578      1   4578      0  3     0x40184  select     sendmail
 14295      1  14295      0  3       0x184  select     inetd
  7753  31555  31555     73  2       0x184             syslogd
 31555      1  31555      0  3        0x84  netio      syslogd
 15128      0      0      0  3    0x100284  nfsidl     nfsio
 19749      0      0      0  3    0x100284  nfsidl     nfsio
 11204      0      0      0  3    0x100284  nfsidl     nfsio
  3116      0      0      0  3    0x100284  nfsidl     nfsio
     9      0      0      0  3    0x100204  crypto_wa  crypto
     8      0      0      0  3    0x100204  aiodoned   aiodoned
     7      0      0      0  3    0x100204  syncer     update
     6      0      0      0  3    0x100204  cleaner    cleaner
     5      0      0      0  3    0x100204  reaper     reaper
     4      0      0      0  3    0x100204  pgdaemon   pagedaemon
     3      0      0      0  3    0x100204  pftm       pfpurge
     2      0      0      0  3    0x100204  kmalloc    kmthread
     1      0      1      0  3      0x4084  wait       init
     0     -1      0      0  3     0x80204  scheduler  swapper
ddb>

>Fix:
I think this problem arises from one comstart invocation being
intercepted by other comstart invocation through comintr.
kernel gets inconsistent state.

--- ./sys/dev/puc/com_puc.c.orig Wed Dec 21 13:02:54 2005
+++ ./sys/dev/puc/com_puc.c Wed Dec 21 16:01:57 2005
@@ -111,7 +111,7 @@
  /* Grab a PCI interrupt. */
  intrstr = pci_intr_string(pa->pc, pa->intrhandle);
  sc->sc_ih = pci_intr_establish(pa->pc, pa->intrhandle,
- IPL_HIGH, comintr, sc,
+ IPL_TTY, comintr, sc,
  sc->sc_dev.dv_xname);
  if (sc->sc_ih == NULL) {
  printf(": couldn't establish interrupt");


>Release-Note:
>Audit-Trail:
>Unformatted:

Reply | Threaded
Open this post in threaded view
|

Re: kernel/4947: puc(4) on sparc64 again

Damien Miller
The following reply was made to PR kernel/4947; it has been noted by GNATS.

From: Damien Miller <[hidden email]>
To: [hidden email]
Cc: [hidden email]
Subject: Re: kernel/4947: puc(4) on sparc64 again
Date: Sat, 24 Dec 2005 15:43:14 +1100

 [hidden email] wrote:
 >>Number:         4947
 >>Category:       kernel
 >>Synopsis:       puc(4) on sparc64 again
 >>Confidential:   yes
 >>Severity:       critical
 >>Priority:       medium
 >>Responsible:    bugs
 >>State:          open
 >>Quarter:        
 >>Keywords:      
 >>Date-Required:
 >>Class:          sw-bug
 >>Submitter-Id:   net
 >>Arrival-Date:   Wed Dec 21 07:50:02 GMT 2005
 >>Closed-Date:
 >>Last-Modified:
 >>Originator:     KUDO Takashi
 >>Release:        3.8
 >>Organization:
 ...
 > I think this problem arises from one comstart invocation being
 > intercepted by other comstart invocation through comintr.
 > kernel gets inconsistent state.
 >
 > --- ./sys/dev/puc/com_puc.c.orig Wed Dec 21 13:02:54 2005
 > +++ ./sys/dev/puc/com_puc.c Wed Dec 21 16:01:57 2005
 > @@ -111,7 +111,7 @@
 >   /* Grab a PCI interrupt. */
 >   intrstr = pci_intr_string(pa->pc, pa->intrhandle);
 >   sc->sc_ih = pci_intr_establish(pa->pc, pa->intrhandle,
 > - IPL_HIGH, comintr, sc,
 > + IPL_TTY, comintr, sc,
 >   sc->sc_dev.dv_xname);
 >   if (sc->sc_ih == NULL) {
 >   printf(": couldn't establish interrupt");
 
 Patch applied - arigato gozaimasu!
 
 -d

Reply | Threaded
Open this post in threaded view
|

Re: kernel/4947: puc(4) on sparc64 again

Takashi-4
>  > --- ./sys/dev/puc/com_puc.c.orig Wed Dec 21 13:02:54 2005
>  > +++ ./sys/dev/puc/com_puc.c Wed Dec 21 16:01:57 2005
>  > @@ -111,7 +111,7 @@
>  >   /* Grab a PCI interrupt. */
>  >   intrstr = pci_intr_string(pa->pc, pa->intrhandle);
>  >   sc->sc_ih = pci_intr_establish(pa->pc, pa->intrhandle,
>  > - IPL_HIGH, comintr, sc,
>  > + IPL_TTY, comintr, sc,
>  >   sc->sc_dev.dv_xname);
>  >   if (sc->sc_ih == NULL) {
>  >   printf(": couldn't establish interrupt");
>  
>  Patch applied - arigato gozaimasu!

dou itashimashite.

--
takashi