[PROBLEM][2.5][AMD76X_PM]: Possible porting problem - Can't register AMD Northbridge?

Shawn Starr (spstarr@sh0n.net)
Sun, 15 Dec 2002 13:50:54 -0500


Below is some debugging added as well as having the kernel partly -DDEBUG
enabled:

===============================================
amd76x_pm: amd76x_pm hardware power management 0.1.0
amd76x_pm: Looking for Northbridge...
bus pci: add driver amd76x_pm-nb
kobject amd76x_pm-nb: registering. parent: <NULL>, subsys: drivers
Inside driver_attach()
!bus->match not true continue on..
!dev->driver keep going...
inside bus_match()
inside pci_bus_match()
pci_bus_match(): About to search ids list...
pci_match_bus(): ids->vendor = 1022
pci_match_bus(): ids->subvendor = ffffffff
pci_match_bus(): ids->class_mask = 0
pci_match_bus(): ids->device = 700c
pci_match_bus(): ids->class = 0
pci_match_bus(): DECISION: ids->vendor 1022 == pci_dev->vendor 1022?
pci_match_bus(): DECISION ids->device 700c == pci_dev->device 700d?
pci_match_bus(): DECISION ids->subvendor ffffffff == pci_dev->subsystem_vendor
0?
pci_match_bus(): DECISION ids->subdevice ffffffff == pci_dev->subsystem_device
0?
bus_match(): match(): We didn't find a match. Failed
bus_match(): Returns -19 [-ENODEV]
Dec 14 23:20:37 unknown kernel: Driver_attach(): Returns 0

(This repeats a few times in the list then terminates with driver_attach
returning 0).

However when detecting the Southbridge:

amd76x_pm: Looking for Southbridge...
bus pci: add driver amd76x_pm-sb
kobject amd76x_pm-sb: registering. parent: <NULL>, subsys: drivers
Inside driver_attach()
!bus->patch not true continue on..
!dev->driver keep going...
inside bus_match()
inside pci_bus_match()

[First one doesnt match]
[Second one doesn't match]
[Third one doesn't match]
[Forth one doesn't match]
[Firth one doesn't match]

On the 6th list check:

pci_match_bus(): ids->vendor = 1022
pci_match_bus(): ids->subvendor = ffffffff
pci_match_bus(): ids->class_mask = 0
pci_match_bus(): ids->device = 7443
pci_match_bus(): ids->class = 0
pci_match_bus(): DECISION: ids->vendor 1022 == pci_dev->vendor 1022?
pci_match_bus(): DECISION ids->device 7443 == pci_dev->device 7443?
pci_match_bus(): DECISION ids->subvendor ffffffff == pci_dev->subsystem_vendor
1043?
pci_match_bus(): DECISION ids->subdevice ffffffff == pci_dev->subsystem_device
8044?
bus_match(): We matched!
amd76x_pm: Initializing southbridge Advanced Micro Devic AMD-768 [Opus] ACPI
bus_match(): Success! Attach it!
bound device '00:07.3' to driver 'amd76x_pm-sb'
sysfs_create_link: depth = 4, size = 33
sysfs_create_link: path ='../../../../devices/pci0/00:07.3'
bus_match(): Returns 0
driver_attach():bus_match() returns 1
[ It keeps searching the list after this for other new things]

We OOPs when we try to use pdev_nb->device in a switch because pdev = NULL!
because the Northbridge was not found.

Unable to handle kernel NULL pointer dereference at virtual address 00000026
printing eip:
e08a5568
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0060:[<e08a5568>] Not tainted
EFLAGS: 00010282
EIP is at 0xe08a5568
eax: 00000000 ebx: 00000000 ecx: c034d6d4 edx: 00000282
esi: e08a3000 edi: 00000000 ebp: de365fa0 esp: de365f94
ds: 0068 es: 0068 ss: 0068
Process insmod (pid: 127, threadinfo=de364000 task=de363940)
Stack: e08a5b00 00007443 c034fb98 de365fbc c012e6d1 40017000 00001dd3 0804a028
de364000 00000003 bffffd48 c01093db 40017000 00001dd3 0804a028
00000003
00000000 bffffd48 00000080 0000002b 0000002b 00000080 400fb36d
00000023

Call Trace:
[sys_init_module+433/464] sys_init_module+0x1b1/0x1d0
[syscall_call+7/11] syscall_call+0x7/0xb

Code: 0f b7 40 26 c7 04 24 60 5b 8a e0 89 44 24 04 e8 74 85 87 df

This of course, hangs insmod :(

Any pointers, Do we need to register the Northbridge and Southbridge and if
so, why can't we find it?

00:00.0 Class 0600: 1022:700c (rev 11) <---------- Northbridge
00:01.0 Class 0604: 1022:700d
00:07.0 Class 0601: 1022:7440 (rev 04)
00:07.1 Class 0101: 1022:7441 (rev 04)
00:07.3 Class 0680: 1022:7443 (rev 03) <----------- Southbridge

I have them on this MPX A7M266-D machine but its not finding it.

Shawn.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/