[PATCH v3] drm/amdgpu: Restore msix after FLR

Alex Deucher alexdeucher at gmail.com
Thu Jul 1 02:58:06 UTC 2021


On Wed, Jun 30, 2021 at 10:34 PM Zhou, Peng Ju <PengJu.Zhou at amd.com> wrote:
>
> [AMD Official Use Only]
>
> Hi Alex
> The function amdgpu_restore_msix is used for reset the msix during board reset(sriov reset or asic reset), it moves from host to guest, so I think a flag to indicate if msix enabled is not needed.
>

The function ultimately enables MSIX.  What if it was not enabled in
the first place?

Alex

>
> ----------------------------------------------------------------------
> BW
> Pengju Zhou
>
>
>
> > -----Original Message-----
> > From: Alex Deucher <alexdeucher at gmail.com>
> > Sent: Tuesday, June 29, 2021 10:28 PM
> > To: Zhou, Peng Ju <PengJu.Zhou at amd.com>
> > Cc: amd-gfx list <amd-gfx at lists.freedesktop.org>; Deng, Emily
> > <Emily.Deng at amd.com>
> > Subject: Re: [PATCH v3] drm/amdgpu: Restore msix after FLR
> >
> > On Fri, Jun 25, 2021 at 2:44 AM Peng Ju Zhou <PengJu.Zhou at amd.com> wrote:
> > >
> > > From: "Emily.Deng" <Emily.Deng at amd.com>
> > >
> > > After FLR, the msix will be cleared, so need to re-enable it.
> >
> > Do we need to store whether we enabled msix in the first place and then
> > decide whether to enable it again in this case?
> >
> > Alex
> >
> > >
> > > Signed-off-by: Emily.Deng <Emily.Deng at amd.com>
> > > Signed-off-by: Peng Ju Zhou <PengJu.Zhou at amd.com>
> > > ---
> > >  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 11 +++++++++++
> > >  1 file changed, 11 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> > > index 90f50561b43a..26e63cb5d8d5 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> > > @@ -277,6 +277,16 @@ static bool amdgpu_msi_ok(struct amdgpu_device
> > *adev)
> > >         return true;
> > >  }
> > >
> > > +void amdgpu_restore_msix(struct amdgpu_device *adev) {
> > > +       u16 ctrl;
> > > +
> > > +       pci_read_config_word(adev->pdev, adev->pdev->msix_cap +
> > PCI_MSIX_FLAGS, &ctrl);
> > > +       ctrl &= ~PCI_MSIX_FLAGS_ENABLE;
> > > +       pci_write_config_word(adev->pdev, adev->pdev->msix_cap +
> > PCI_MSIX_FLAGS, ctrl);
> > > +       ctrl |= PCI_MSIX_FLAGS_ENABLE;
> > > +       pci_write_config_word(adev->pdev, adev->pdev->msix_cap +
> > > +PCI_MSIX_FLAGS, ctrl); }
> > >  /**
> > >   * amdgpu_irq_init - initialize interrupt handling
> > >   *
> > > @@ -558,6 +568,7 @@ void amdgpu_irq_gpu_reset_resume_helper(struct
> > > amdgpu_device *adev)  {
> > >         int i, j, k;
> > >
> > > +       amdgpu_restore_msix(adev);
> > >         for (i = 0; i < AMDGPU_IRQ_CLIENTID_MAX; ++i) {
> > >                 if (!adev->irq.client[i].sources)
> > >                         continue;
> > > --
> > > 2.17.1
> > >
> > > _______________________________________________
> > > amd-gfx mailing list
> > > amd-gfx at lists.freedesktop.org
> > > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist
> > > s.freedesktop.org%2Fmailman%2Flistinfo%2Famd-
> > gfx&data=04%7C01%7CPe
> > >
> > ngJu.Zhou%40amd.com%7C409895f80e0d43ecba3808d93b0a15fc%7C3dd8961
> > fe4884
> > >
> > e608e11a82d994e183d%7C0%7C0%7C637605736778199787%7CUnknown%7C
> > TWFpbGZsb
> > >
> > 3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%
> > 3D%
> > >
> > 7C1000&sdata=w%2FgDzhoAjDraAMiyfx3XTPxx1QNff3OY%2BZWn1NYq%
> > 2Ffo%3D&
> > > amp;reserved=0


More information about the amd-gfx mailing list