On Sat, Mar 29, 2014 at 02:16:38PM +0100, Donovan Watteau wrote:
> On Sun, 23 Mar 2014, Mark Kettenis wrote:
> > > Date: Sun, 23 Mar 2014 17:53:47 +0100 (CET)
> > > From: Donovan Watteau <tso...@gmail.com>
> > > 
> > > ehci0 at pci0 dev 3 function 3 "SiS 7002 USB" rev 0x00: apic 2 int 23
> > > panic: kernel diagnostic assertion "(reg & 0x3) == 0" failed: file 
> > > "../../../
> > > arch/amd64/pci/pci_machdep.c", line 272
> > > Stopped at        Debugger+0x5:   leave
> > > Debugger() at Debugger+0x5
> > > panic() at panic+0xee
> > > __assert() at __assert+0x21
> > > pci_conf_read() at pci_conf_read+0xdd

Ignoring the unaligned memory access for a moment, should ehci_pci even
be using pci_conf_*(9) here? The registers it's accessing aren't
technically part of the devices PCI configuration space.

..

> > > ehci_pci_takecontroller() at ehci_pci_takecontroller+0x6b
> > > ehci_pci_attach() at ehci_pci_attach+0x22a
> > > config_attach() at config_attach+0x1bc
> > > pci_probe_device() at pci_probe_device+0x447
> > > pci_enumerate_bus() at pci_enumerate_bus+0xe9
> > > config_attach() at config_attach+0x1bc
> > > end trace frame: 0xffffffff81edce80, count: 0
> > > RUN AT LEASE 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS 
> > > PANIC!
> > > DO NOT EVEN BOTHER REPORTING THIS WITHOUT INCLUDING THAT INFORMATION!
> > > ddb> trace
> > > Debugger() at Debugger+0x5
> > > panic() at panic+0xee
> > > __assert() at __assert+0x21
> > > pci_conf_read() at pci_conf_read+0xdd
> > > ehci_pci_takecontroller() at ehci_pci_takecontroller+0x6b
> > > ehci_pci_attach() at ehci_pci_attach+0x22a
> > > config_attach() at config_attach+0x1bc
> > > pci_probe_device() at pci_probe_device+0x447
> > > pci_enumerate_bus() at pci_enumerate_bus+0xe9
> > > config_attach() at config_attach+0x1bc
> > > mainbus_attach() at mainbus_attach+0x163
> > > config_attach() at config_attach+0x1bc
> > > cpu_configure() at cpu_configure+0x17
> > > main() at main+0x41c
> > > end trace frame: 0x0, count: -14
> > > ddb> ps
> > >    PID   PPID   PGRP    UID  S      FLAGS  WAIT       COMMAND
> > > *    0     -1      0      0  7      0x200             swapper
> > > ddb>
> > 
> > Can you send the output of pcidump -vxx from that machine?
> > 
> 
> Here you go:
> 
> ...
>  0:3:3: SiS 7002 USB
>       0x0000: Vendor ID: 1039 Product ID: 7002
>       0x0004: Command: 0006 Status: 0290
>       0x0008: Class: 0c Subclass: 03 Interface: 20 Revision: 00
>       0x000c: BIST: 00 Header Type: 00 Latency Timer: 20 Cache Line Size: 08
>       0x0010: BAR mem 32bit addr: 0xef002000/0x00001000
>       0x0014: BAR empty (00000000)
>       0x0018: BAR empty (00000000)
>       0x001c: BAR empty (00000000)
>       0x0020: BAR empty (00000000)
>       0x0024: BAR empty (00000000)
>       0x0028: Cardbus CIS: 00000000
>       0x002c: Subsystem Vendor ID: 17aa Product ID: 100a
>       0x0030: Expansion ROM Base Address: 00000000
>       0x0038: 00000000
>       0x003c: Interrupt Pin: 04 Line: 03 Min Gnt: 00 Max Lat: 50
>       0x0050: Capability 0x01: Power Management
>       0x0000: 70021039 02900006 0c032000 00002008
>       0x0010: ef002000 00000000 00000000 00000000
>       0x0020: 00000000 00000000 00000000 100a17aa
>       0x0030: 00000000 00000050 00000000 50000403
>       0x0040: 08000000 00000000 00000000 00000000
>       0x0050: c9c20001 00000003 2100000a 00000000
>       0x0060: 01ff2020 00000000 00000000 00000000
>       0x0070: 00000001 c0000000 3fff0000 00000000
>       0x0080: 00000000 00000000 00000000 00000000
>       0x0090: 00000000 00000000 00000000 00000000
>       0x00a0: 00000000 00000000 00000000 00000000
>       0x00b0: 00000000 00000000 00000000 00000000
>       0x00c0: 00000000 00000000 00000000 00000000
>       0x00d0: 00000000 00000000 00000000 00000000
>       0x00e0: 00000000 00000000 00000000 00000000
>       0x00f0: 00000000 00000000 00000000 00000000

...

Of course, using bus_space(9) would have hidden this panic on
i386/amd64. :-)

-Bryan.

Reply via email to