Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 02 May 1999 19:32:08 +0200
From:      Stefan Bethke <stefan.bethke@hanse.de>
To:        freebsd-current@freebsd.org
Cc:        sos@freebsd.org
Subject:   panic in nexus_setup_intr+0x13 with new ata driver
Message-ID:  <14289515.3134662328@monster.transit-a.hanse.de>

next in thread | raw e-mail | index | archive | help
I'm currently trying to get a Promise Ultra/33 to work with S=F8rens new =
ata
drivers.

The kernel config is as per LINT:
machine         "i386"
cpu             "I486_CPU"
ident           DEV
maxusers        40

options         INET                    #InterNETworking
options         NETATALK
options         FFS                     #Berkeley Fast Filesystem
options         NFS                     #Network Filesystem
options         MFS
options         "CD9660"                #ISO 9660 Filesystem
options         "CD9660_ROOT"           #CD-ROM usable as root device
options         FFS_ROOT                #FFS usable as root device [keep
this!]
options         NFS_ROOT                #NFS usable as root device
options         PROCFS                  #Process filesystem
options         SOFTUPDATES

options         "COMPAT_43"             #Compatible with BSD 4.3 [KEEP
THIS!]
options         SCSI_DELAY=3D3000         #Be pessimistic about Joe SCSI
device
options         UCONSOLE                #Allow users to grab the console
options         FAILSAFE                #Be conservative
options         USERCONFIG              #boot -c editor
options         VISUAL_USERCONFIG       #visual boot -c editor

config          kernel  root on sa0 dumps on sa0

controller      isa0
controller      eisa0
controller      pci0
controller      pnp0

controller      fdc0    at isa? port IO_FD1 irq 6 drq 2
disk            fd0     at fdc0 drive 0
disk            fd1     at fdc0 drive 1

# ATA and ATAPI devices
# This is work in progress, use at your own risk.
# It currently reuses the majors of wd.c and friends.
# It cannot co-exist with the old system in one kernel.
# You only need one "controller ata0" for it to find all
# PCI devices on modern machines.
controller      ata0
device          atadisk0        # ATA disk drives
#device         atapicd0        # ATAPI CDROM drives
#device         atapifd0        # ATAPI floppy drives
#device         atapist0        # ATAPI tape drives

options         DDB
makeoptions     DEBUG=3D-g
makeoptions     COPTFLAGS=3D"-O -DATA_DEBUG -DAD_DEBUG"

controller      ncr0
#controller     ahc0

controller      scbus0

device          da0
device          sa0
device          cd0
device          pass0

controller      atkbdc0 at isa? port IO_KBD
device          atkbd0  at atkbdc? irq 1
device          psm0    at atkbdc? irq 12

device          vga0    at isa? port ? conflicts

# splash screen/screen saver
pseudo-device   splash

# syscons is the default console driver, resembling an SCO console
device          sc0     at isa?

device          npx0    at nexus? port IO_NPX irq 13

device          sio0    at isa? port IO_COM1 flags 0x10 irq 4
device          sio1    at isa? port IO_COM2 irq 3

device          ed0     at pci?


pseudo-device   loop
pseudo-device   ether
pseudo-device   ppp     4
pseudo-device   tun     4
pseudo-device   bpfilter        4
pseudo-device   pty     16
pseudo-device   gzip            # Exec gzipped a.out's
pseudo-device   vn      4
pseudo-device   ccd     4

#options                KTRACE          #kernel tracing
options         SYSVSHM
options         SYSVSEM
options         SYSVMSG

options         "VM86"
options         VESA


#device         pcm0    at isa? disable port ? tty irq 10 drq 1 flags 0x0


I've written down the following:

ata-pci0: <Promise Ultra/33 IDE controller> at device 5.0 on pci0
ata-pci0: type4d33105a class=3D01 subclass=3D04 cmd=3D02000007
ata-pci0: Busmastering DMA supported
ata0: iobase=3D0xa000 altiobase=3D0xa100
ata0: mask=3D03 status0=3D50 status1=3D00
ata0: mask=3D03 status0=3D50 status1=3D00
ata0: devices =3D 0x1

Fatal trap 12: page fault while in kernel mode
fault virtual address   =3D 0x14
fault code              =3D supervisor read, page not present
instruction pointer     =3D 0x8:0xc02012fb
stack pointer           =3D 0x10:0xc02dad44
frame pointer           =3D 0x10:0xc02dad74
code segment            =3D base 0x0, limit 0xfffff, type 0x1b
                        =3D DPL 0, pres 1 def32 1, gran 1
processor flags         =3D interrupt enabled, resume, IOPL =3D 0
current process         =3D 0
interrupt mask          =3D net tty bio cam
kernel: type 12 trap, code=3D0
Stopped at      nexus_setup_intr+0x13:  pushl  0x14(%edx)
db> trace,8
nexus_setup_intr(c0689a40,c06895c0,0,c01e9d44,c068bd00) at
next_setup_intr+0x13
BUS_SETUP_INTR(c0689a40,c06895c0,0,c01e9d44,c068bd00) at =
BUS_SETUP_INTR+0x34
bus_generic_setup_intr(c0689800,c06895c0,0,c011e9d44,c068bd00) at
bus_generic_setup_intr+0x2b
BUS_SETUP_INTR(c0689800,c06895c0,0,c01e9d44,c068bd00) at =
BUS_SETUP_INTR+0x34
bus_generic_setup_intr(c0689740,c06895c0,0,c01e9d44,c068db00) at
bus_generic_setup_intr+0x2b
BUS_SETUP_INTR(c0689740,c06895c0,0,c01e9d44,c068bd00) at =
BUS_SETUP_INTR+0x34
bus_setup_intr(c06895c0,0,c01e9d44,c068bd00,c02dae88) at =
bus_setup_intr+0x21
ata_pciattach(c06895c0,c02daed0,c0148ce3,c06895c0,c06895c0) at
ata_pciattach+0x439
db> x/ia nexus_setup_intr,10
nexus_setup_intr:	pushl	%ebp
nexus_setup_intr+0x1:	movl	%esp,%ebp
nexus_setup_intr+0x3:	subl	$0x24,%esp
nexus_setup_intr+0x6:	pushl	%edi
nexus_setup_intr+0x7:	pushl	%esi
nexus_setup_intr+0x8:	pushl	%ebx
nexus_setup_intr+0x9:	movl	0xc(%ebp),%ebx
nexus_setup_intr+0xc:	testl	%ebx,%ebx
nexus_setup_intr+0xe:	jz	nexus_setup_intr+0x24
nexus_setup_intr+0x10:	movl	0x10(%ebp),%edx
nexus_setup_intr+0x13:	pushl	0x14(%edx)
nexus_setup_intr+0x16:	pushl	$0xc024bd96
nexus_setup_intr+0x1b:	pushl	%ebx
nexus_setup_intr+0x1c:	call	device_printf
nexus_setup_intr+0x21:	addl	$0xc,%esp
nexus_setup_intr+0x24:	movl	0x1c(%ebp),%edx
db> x/s $0xc024bd96
__set_sysintit_set_sym_nexus_rootmodule_sys_init+0x11e:  interrupting at =
irq
%d\012
db> show reg
cs	0x8
ds	0x10
es	0x10
fs	0x10
ss	0x10
eax	0xc02012e8	nexus_setup_intr
ecx	0xc0689a40
edx	0
ebx	0xc06895c0
esp	0xc02dad44
epb	0xc02dad74
esi	0x5
edi	0xc06896c0
eip	0xc02012fb	nexus_setup_intr+0x13
efl	0x10286


This is with a -current from about three days ago.

Unfortunatly, I don't understand enought about the new bus stuff to really
understand where the null pointer gets into the game.

Ah, if it matters: the Promise currently has the EPROM removed.


Any hints appreciated,
Stefan

--
Stefan Bethke
Muehlendamm 12            Phone: +49-40-256848, +49-177-3504009
D-22087 Hamburg           <stefan.bethke@hanse.de>
Hamburg, Germany          <stb@freebsd.org>



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?14289515.3134662328>