[PATCH 3/5] Float the pci bus number on MPC8641HPCN board.

Kumar Gala galak at kernel.crashing.org
Thu May 31 23:43:55 EST 2007


On May 22, 2007, at 10:35 PM, Zhang Wei-r63237 wrote:

> Hi, Wade,
>
> That's a good question.
>
> The ppc_md.exclude_device() function will be called before PCI config
> access in indirect_read/write_config() of the file
> arch/powerpc/sysdev/indirect_pci.c. If the hose->bus_offset value  
> is 0,
> the primary bus number register of the host must be hose->first_busno.
> Otherwise, if the host primary bus number register is 0, the
> hose->bus_offset must be the same value of hose->first_buseno.
>
> When the pci scan bus, the bridge will be scaned twice. When the  
> second
> scan is finished, the host primary bus number register will be  
> write to
> hose->first_busno. The PCI bus(not the first PCI host) access will be
> wrong in the later access. I'll check it and correct the
> hose->bus_offset value in these codes.

Can this be fixed by just setting hose->bus_offset in add_bridge?

Doing this in exclude is very bad.

- k

>> -----Original Message-----
>> From: Wade Farnsworth [mailto:wfarnsworth at mvista.com]
>> Subject: Re: [PATCH 3/5] Float the pci bus number on
>> MPC8641HPCN board.
>>
>> On Tue, 2007-05-22 at 11:38 +0800, Zhang Wei wrote:
>>>  int mpc86xx_exclude_device(u_char bus, u_char devfn)
>>>  {
>>> +	struct pci_controller *hose;
>>> +
>>> +	hose = pci_bus_to_hose(bus);
>>> +	if (unlikely(!hose))
>>> +		return PCIBIOS_DEVICE_NOT_FOUND;
>>> +
>>> +	/* Correcting the hose->bus_offset value. */
>>> +	out_be32(hose->cfg_addr, 0x80000000 | ((hose->first_busno
>>> +					- hose->bus_offset) << 16));
>>> +	if (unlikely(in_le32(hose->cfg_data) == 0xffffffff))
>>> +		hose->bus_offset = hose->bus_offset ? 0 :
>> hose->first_busno;
>>> +
>>>  	return PCIBIOS_SUCCESSFUL;
>>>  }
>>
>> What is the purpose of this code and why put it in
>> mpc86xx_exclude_device?
>>
>> --Wade
>>
>>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev




More information about the Linuxppc-dev mailing list