Problem with pci_fixups in drivers/pci/probe.c

From: alan
Date: Thu Jan 05 2006 - 18:45:19 EST


I have an HP zv5200z laptop running a x86_64 kernel.

In order to get cardbus devices to work, I had to patch the kernel to get
the cardbus to actually see those devices. (We will call this patch
"cardbus.patch".)

I went to patch the current FC5T1 kernel and found that the patch no
longer applied. On further investigation I found that the patch had been
added to the kernel, but some helpful soul had added a subroutine that
made it absolutely worthless to anyone on x86 architecture.

in drivers/pci/probe.c at line 408 there is the following code:

/* Attempts to fix that up are really dangerous unless
we're going to re-assign all bus numbers. */
if (!pcibios_assign_all_busses())
return;

The problem with this is that for x86 and x86_64 this function is defined
as 0.

include/asm-x86_64/pci.h:18:#define pcibios_assign_all_busses() 0
include/asm-i386/pci.h:14:extern unsigned int pcibios_assign_all_busses(void);
include/asm-i386/pci.h:16:#define pcibios_assign_all_busses() 0
include/asm-ia64/pci.h:18:#define pcibios_assign_all_busses() 0

This "fix" makes the patch absolutely useless to me.

Is there a way to get this to only run the fixup where needed or to make
this patch less problematic or just remove the test entirely?

My cardbus devices will thank you.

--
"George W. Bush -- Bringing back the Sixties one Nixon at a time."

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