RE: [PATCH v2] PCI: designware: move remaining rc setup code to dw_pcie_setup_rc()

From: Gabriele Paoloni
Date: Thu Apr 07 2016 - 04:14:28 EST


Hi Pratyush

Many thanks for quick replying

> -----Original Message-----
> From: Pratyush Anand [mailto:pratyush.anand@xxxxxxxxx]
> Sent: 07 April 2016 07:59
> To: Gabriele Paoloni
> Cc: Jisheng Zhang; jingoohan1@xxxxxxxxx; bhelgaas@xxxxxxxxxx; linux-
> pci@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux-arm-
> kernel@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH v2] PCI: designware: move remaining rc setup code
> to dw_pcie_setup_rc()
>
> Hi Gab,
>
> Thanks for bringing it.
>
>
> On Wed, Apr 6, 2016 at 8:20 PM, Gabriele Paoloni
> <gabriele.paoloni@xxxxxxxxxx> wrote:
> > Hi, sorry to be late on this
> >
> >> -----Original Message-----
> >> From: linux-kernel-owner@xxxxxxxxxxxxxxx [mailto:linux-kernel-
> >> owner@xxxxxxxxxxxxxxx] On Behalf Of Jisheng Zhang
> >> Sent: 16 March 2016 11:41
> >> To: jingoohan1@xxxxxxxxx; pratyush.anand@xxxxxxxxx;
> bhelgaas@xxxxxxxxxx
> >> Cc: linux-pci@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux-
> arm-
> >> kernel@xxxxxxxxxxxxxxxxxxx; Jisheng Zhang
> >> Subject: [PATCH v2] PCI: designware: move remaining rc setup code to
> >> dw_pcie_setup_rc()
> >>
> >> dw_pcie_setup_rc(), as its name indicates, setups the RC. But
> current
> >> dw_pcie_host_init() also contains some necessary rc setup code.
> >>
> >> Another reason: the host may lost power during suspend to ram, the
> RC
> >> need to be re-setup after resume. The rc can't be correctly resumed
> >> without the rc setup code in dw_pcie_host_init().
> >>
> >> So this patch moves the code to dw_pcie_setup_rc() to address the
> above
> >> two issues. After this patch, each pcie designware driver users
> could
> >> call dw_pcie_setup_rc() to re-setup rc when resume back.
> >
> > I think this patch breaks the Hisilicon driver...
> >
> > Our driver performs linkup setup in UEFI therefore we do not call
> > dw_pcie_setup_rc(), we only call dw_pcie_host_init().
> >
> > Maybe better to group the part of code to be moved in as separate
> > function...
> >
> > Thanks and sorry for late reply.
> >
>
> I am just wondering, should n't then what ever we do in
> dw_pcie_setup_rc() be done in your boot loader and not just link up.

Currently the HiSilicon driver does not call dw_pcie_setup_rc() at all;
so everything is done in dw_pcie_setup_rc() is done in bootloader.

I guess your question is if we can execute in bootloader the part of
code the this patch has moved to in "dw_pcie_setup_rc()". I think the
problem here is that even if it was possible we would break backward
compatibility with previous bootloaders...

Thanks

Gab


>
> ~Pratyush