Subject: Re: [PATCH V4 3/3] powerpc/fsl-pci: Unify pci/pcie initialization code

From: Scott Wood <[email-masked]>
Date: Fri, 10 Aug 2012 17:59:03 -0500

On 08/08/2012 10:52 PM, Jia Hongtao-B38951 wrote:
> 
> 
>> -----Original Message-----
>> From: Wood Scott-B07421
>> Sent: Wednesday, August 08, 2012 11:54 PM
>> To: Jia Hongtao-B38951
>> Cc: Wood Scott-B07421; Kumar Gala; [email-masked]; Li
>> Yang-R58472
>> Subject: Re: [PATCH V4 3/3] powerpc/fsl-pci: Unify pci/pcie
>> initialization code
>>
>> On 08/07/2012 10:57 PM, Jia Hongtao-B38951 wrote:
>>>
>>>
>>>> -----Original Message-----
>>>> From: Wood Scott-B07421
>>>> Sent: Tuesday, August 07, 2012 11:20 PM
>>>> To: Jia Hongtao-B38951
>>>> Cc: Wood Scott-B07421; Kumar Gala; [email-masked]; Li
>>>> Yang-R58472
>>>> Subject: Re: [PATCH V4 3/3] powerpc/fsl-pci: Unify pci/pcie
>>>> initialization code
>>>>
>>>> On 08/07/2012 01:23 AM, Jia Hongtao-B38951 wrote:
>>>>>> -----Original Message-----
>>>>>> From: Wood Scott-B07421
>>>>>> Sent: Monday, August 06, 2012 11:16 PM
>>>>>> To: Jia Hongtao-B38951
>>>>>> Cc: Wood Scott-B07421; Kumar Gala; [email-masked];
>>>>>> Li
>>>>>> Yang-R58472
>>>>>> Subject: Re: [PATCH V4 3/3] powerpc/fsl-pci: Unify pci/pcie
>>>>>> initialization code
>>>>>>
>>>>>> On 08/05/2012 09:39 PM, Jia Hongtao-B38951 wrote:
>>>>>>>
>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: Wood Scott-B07421
>>>>>>>> Sent: Saturday, August 04, 2012 12:04 AM
>>>>>>>> To: Jia Hongtao-B38951
>>>>>>>> Cc: Kumar Gala; [email-masked]; Wood Scott-B07421;
>>>>>>>> Li
>>>>>>>> Yang-R58472
>>>>>>>> Subject: Re: [PATCH V4 3/3] powerpc/fsl-pci: Unify pci/pcie
>>>>>>>> initialization code
>>>>>>>>
>>>>>>>> On 08/02/2012 10:39 PM, Jia Hongtao-B38951 wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> -----Original Message-----
>>>>>>>>>> From: Kumar Gala [mailto:[email-masked]]
>>>>>>>>>> Sent: Thursday, August 02, 2012 8:24 PM
>>>>>>>>>> To: Jia Hongtao-B38951
>>>>>>>>>> Cc: [email-masked]; Wood Scott-B07421; Li
>>>>>>>>>> Yang-R58472
>>>>>>>>>> Subject: Re: [PATCH V4 3/3] powerpc/fsl-pci: Unify pci/pcie
>>>>>>>>>> initialization code
>>>>>>>>>>
>>>>>>>>>> You need to convert all boards to use fsl_pci_init before this
>>>> patch.
>>>>>>>>>> Otherwise we'll end up with PCI getting initialized twice on
>>>> boards.
>>>>>>>>>>
>>>>>>>>>> - k
>>>>>>>>>
>>>>>>>>> If we covert all boards with platform driver in this patch PCI
>>>>>>>>> will be initialized only once without converting all boards to
>>>>>>>>> use fsl_pci_init first.
>>>>>>>>
>>>>>>>> Then we'd have to pick apart core changes from board changes when
>>>>>>>> reviewing.
>>>>>>>>
>>>>>>>>> If we convert all boards to use fsl_pci_init before this patch
>>>>>>>>> and convert them to use platform driver again after this patch.
>>>>>>>>> Then between this patch and next pci will be initialized twice
>> too.
>>>>>>>>
>>>>>>>> Why?  That one patch should both create the platform driver and
>>>>>>>> remove the init from fsl_pci_init() -- except things like primary
>>>> bus
>>>>>>>> detection which has to happen globally.
>>>>>>>>
>>>>>>>> -Scott
>>>>>>>
>>>>>>> "One patch both create the platform driver and remove the init
>>>>>>> from fsl_pci_init()" means we should create platform driver and
>>>>>>> applied to all boards. If so why not just directly convert all
>>>>>>> boards using platform driver?
>>>>>>
>>>>>> Because it's harder to review when you have a bunch of board code
>>>>>> in
>>>> the
>>>>>> patch in addition to core changes.
>>>>>>
>>>>>> Because you might want people to actually test on the boards in
>>>> question
>>>>>> when converting, especially given the change in how primary buses
>>>>>> are determined, and that some boards may need to provide their own
>>>>>> alternative.
>>>>>>
>>>>>> -Scott
>>>>>
>>>>> But if we separate the core changes and the boards update, between
>>>>> this
>>>> two
>>>>> patches PCI will be initialized twice.
>>>>
>>>> As I said earlier, you can remove the initcall and require boards to
>>>> manually call fsl_pci_init() until all boards are converted.
>>>>
>>>> -Scott
>>>
>>> As I said earlier, I can do this but it does not solve the twice-init
>> problem.
>>
>> I must have missed it.  Why does it not solve the problem?  If a board
>> doesn't call fsl_pci_init(), the platform driver doesn't get registered.
>>
>>> If I do this first and then add platform driver we also have to
>>> convert all boards using platform driver in the same patch.
>>>
>>> We finally using the platform driver so Why do you keep insisting on
>>> converting all boards using fsl_pci_init() first even it does no
>> improvement.
>>
>> What we're asking for is bisectability (don't have any intermediate
>> stages where PCI gets initialized twice), and the ability to have a
>> smooth transition where boards can be converted as people are able to
>> test them and look into their individual needs regarding primary bus.
>>
>> -Scott
> 
> In my patch there is no bisectability problem. If you don't think so could
> you please give more details?

You are registering the PCI platform device with an initcall, but you
haven't updated the unconverted boards to not do the init themselves --
and your proposal to fix that breaks the "smooth transition" request.

-Scott