PCI changes 2.6.26 => 2.6.28

Kumar Gala galak at kernel.crashing.org
Fri Apr 24 04:47:15 EST 2009


On Apr 23, 2009, at 9:24 AM, Gary Thomas wrote:

> I have found the culprit - in arch/powerpc/kernel/pci_32.c
>
> static void
> fixup_hide_host_resource_fsl(struct pci_dev *dev)
> {
> 	int i, class = dev->class >> 8;
>
> #if 0
> 	if ((class == PCI_CLASS_PROCESSOR_POWERPC ||
> 	     class == PCI_CLASS_BRIDGE_OTHER) &&
> #else
>        if ((class == PCI_CLASS_PROCESSOR_POWERPC) &&
> #endif
> 		(dev->hdr_type == PCI_HEADER_TYPE_NORMAL) &&
> 		(dev->bus->parent == NULL)) {
> 		for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
> 			dev->resource[i].start = 0;
> 			dev->resource[i].end = 0;
> 			dev->resource[i].flags = 0;
> 		}
> 	}
> }
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MOTOROLA, PCI_ANY_ID,  
> fixup_hide_host_resource_fsl);
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID,  
> fixup_hide_host_resource_fsl);
>
> This function is now (the #if 0 case is in 2.6.28) tossing out
> the memory resources used by the PCI bridge itself.  This makes
> everything fall over, at least on my 834x platform.
>
> This change was applied 2008-10-08, but it seems incorrect on the  
> 834x.

Its not.  The PCI subsystem shouldn't be allocating or seeing the PHBs  
resources.

>> Are you using u-boot to boot?  If so is the board port public?
>
> My systems use RedBoot (I'm the original author of RedBoot, so one  
> would
> expect that).  At this moment, the code isn't public, sorry.

Ok.  Not sure if RedBoot has a simple memory dump command, but if you  
can dump the IMMR registers for PCI (0x8400 - IOS and 0x8500 - PCI1).   
(I'm assuming PCI1 is the one you are using).  From IOS I wanted the  
outbound registers, for PCI1 the inbound ATU registers.

- k



More information about the Linuxppc-dev mailing list