[Skiboot] [PATCH 2/2] hw/phb4: Use read/write_reg in assert_perst

Carol L Soto clsoto at us.ibm.com
Fri May 31 01:50:47 AEST 2019



Oliver O'Halloran <oohall at gmail.com> wrote on 05/29/2019 11:36:42 PM:

> From: Oliver O'Halloran <oohall at gmail.com>
> To: skiboot at lists.ozlabs.org
> Cc: Oliver O'Halloran <oohall at gmail.com>, Carol L Soto
<clsoto at us.ibm.com>
> Date: 05/29/2019 11:37 PM
> Subject: [EXTERNAL] [PATCH 2/2] hw/phb4: Use read/write_reg in
assert_perst
>
> While the PHB is fenced we can't use the MMIO interface to access PHB
> registers. While processing a complete reset we inject a PHB fence to
> isolate the PHB from the rest of the system because the PHB won't
> respond to MMIOs from the rest of the system while being reset.
>
> We assert PERST after the fence has been erected which requires us to
> use the XSCOM indirect interface to access the PHB registers rather than
> the MMIO interface. Previously we did that when asserting PERST in the
> CRESET path. However in b8b4c79d4419 ("hw/phb4: Factor out PERST
> control"). This was re-written to use the raw in_be64() accessor. This
> means that CRESET would not be asserted in the reset path. On some
> Mellanox cards this would prevent them from re-loading their firmware
> when the system was fast-reset.
>
> This patch fixes the problem by replacing the raw {in|out}_be64()
> accessors with the phb4_{read|write}_reg() functions.
>
> Reported-by: Carol L Soto <clsoto at us.ibm.com>
> Fixes: b8b4c79d4419 ("hw/phb4: Factor out PERST control")
> Signed-off-by: Oliver O'Halloran <oohall at gmail.com>
> ---
>  hw/phb4.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/phb4.c b/hw/phb4.c
> index 5ebb28ad8b0c..fb6736643ba1 100644
> --- a/hw/phb4.c
> +++ b/hw/phb4.c
> @@ -2924,7 +2924,7 @@ static void phb4_assert_perst(struct pci_slot
> *slot, bool assert)
>      * bit in the btctl register also works.
>      */
>     phb4_pcicfg_read16(&p->phb, 0, p->ecap + PCICAP_EXP_LCTL, &linkctl);
> -   reg = in_be64(p->regs + PHB_PCIE_CRESET);
> +   reg = phb4_read_reg(p, PHB_PCIE_CRESET);
>
>     if (assert) {
>        linkctl |= PCICAP_EXP_LCTL_LINK_DIS;
> @@ -2934,7 +2934,7 @@ static void phb4_assert_perst(struct pci_slot
> *slot, bool assert)
>        reg |= PHB_PCIE_CRESET_PERST_N;
>     }
>
> -   out_be64(p->regs + PHB_PCIE_CRESET, reg);
> +   phb4_write_reg(p, PHB_PCIE_CRESET, reg);
>     phb4_pcicfg_write16(&p->phb, 0, p->ecap + PCICAP_EXP_LCTL, linkctl);
>  }
>
> --
> 2.20.1
>

Tested-by: Carol L Soto <clsoto at us.ibm.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/skiboot/attachments/20190530/64bb305d/attachment-0001.htm>


More information about the Skiboot mailing list