Card Disabled Page
From PEL Wiki
These are places I'm inserting "_printk_"s to find where my card gets disabled. There are seven init_levels:
- core_initcall _arch/x86_64/kernel/time.c_ - still enabled
- postcore_initcall _drivers/pci/probe.c_ - still enabled
- arch_initcall _drivers/pci/pci-acpi.c_ - still enabled
- subsys_initcall _arch/i386/pci/common.c_ - still enabled
- fs_initcall _arch/x86_64/kernel/pci-gart.c_ - still enabled
- device_initcall _drivers/acpi/pci_link.c_ - still enabled
- late_initcall _arch/x86_64/kernel/nmi.c_ - still enabled
Since that didn't work, I'm going through /var/log/messages adding new ones
For these two I had to also include pci.h so that they would compile.
- _drivers/acpi/ibm_acpi.c_ - already disabled
- _drivers/pnp/manager.c_ - already disabled
try some new ones before _ibm_acpi.c_
This one's called a lot of times.
- _drivers/acpi/pci_link.c_ - still enabled at last call
This has narrowed it down considerably. Hopefully the order is consistent, run to run.
acpi_pci_link_get_current: '''enabled 0x100106''' ACPI: PCI Interrupt Link [LNK4] enabled at IRQ 18 ACPI: PCI Interrupt 0000:01:05.0[A] -> Link [LNK4] -> GSI 18 (level, high) -> IRQ 217 ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[217] MMIO=[a0104000-a01047ff] Max Packet=[2048] SELinux: initialized (dev ramfs, type ramfs), uses genfs_contexts NET: Registered protocol family 10 Disabled Privacy Extensions on device ffffffff80452cc0(lo) IPv6 over IPv4 tunneling driver mtrr: type mismatch for a4000000,200000 old: write-back new: write-combining ACPI: Power Button (FF) [PWRF] ACPI: Power Button (CM) [PWRB] ACPI_IBM_INIT: '''disabled 0x100104'''
''drivers/acpi/pci_link.c'' - enabled ''net/ipv6/addrconf.c'' - enabled ''arch/i386/kernel/cpu/mtrr/main.c'' - disabled
ipv6_add_dev: '''enabled 0x100106''' IPv6 over IPv4 tunneling driver mtrr_add_page: '''disabled 100104'''
It looks like it's something that runs between the ipv6 driver and the mtrr. I'm going to go looking in the mtrr code, since that seems like the most likely place.
First I'm tracking back up the call stack, to see where mtrr_add_page is called from. It turned out that it was being called from the x-server or the video card driver, initializing the video memory.
mtrr/main.c mtrr_add
mtrr/ifs.c mtrr_ioctl,mtrr_write,mtrr_file_add
Another likely place that I just thought of is the driver for the cheap graphics card I have. It's possible that it doesn't want my card responding and disabled it. Along those same lines, it's possible that the *X-server is monkeying with it*. I tested that theory by booting into single-user mode, and it's still enabled, so if it's not the X-server, it's something related to it. I'm trying to fool the X-server into thinking that it isn't a video device to see if that helps. If it doesn't, then maybe it is the PCI subsystem disabling devices that don't have registered drivers.
Categories: Pel | Myles
