Card Disabled Page

From PEL Wiki

Jump to: navigation, search

These are places I'm inserting "_printk_"s to find where my card gets disabled. There are seven init_levels:

  1. core_initcall _arch/x86_64/kernel/time.c_ - still enabled
  2. postcore_initcall _drivers/pci/probe.c_ - still enabled
  3. arch_initcall _drivers/pci/pci-acpi.c_ - still enabled
  4. subsys_initcall _arch/i386/pci/common.c_ - still enabled
  5. fs_initcall _arch/x86_64/kernel/pci-gart.c_ - still enabled
  6. device_initcall _drivers/acpi/pci_link.c_ - still enabled
  7. 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.