All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Gavin Shan <gwshan@linux.vnet.ibm.com>, qemu-devel@nongnu.org
Cc: alex.williamson@redhat.com
Subject: Re: [Qemu-devel] [RFC PATCH 2/2] VFIO: Clear stale MSIx table during EEH reset
Date: Tue, 26 Aug 2014 20:25:20 +1000	[thread overview]
Message-ID: <53FC6090.7090703@ozlabs.ru> (raw)
In-Reply-To: <1408528328-11560-3-git-send-email-gwshan@linux.vnet.ibm.com>

On 08/20/2014 07:52 PM, Gavin Shan wrote:
> The PCI device MSIx table is cleaned out in hardware after EEH PE
> reset. However, we still hold the stale MSIx entries in QEMU, which
> should be cleared accordingly. Otherwise, we will run into another
> (recursive) EEH error and the PCI devices contained in the PE have
> to be offlined exceptionally.
> 
> The patch clears stale MSIx table before EEH PE reset so that MSIx
> table could be restored properly after EEH PE reset.
> 
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> ---
>  hw/misc/vfio.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
> index 1a3e7eb..3cf7f02 100644
> --- a/hw/misc/vfio.c
> +++ b/hw/misc/vfio.c
> @@ -4424,6 +4424,8 @@ int vfio_container_ioctl(AddressSpace *as, int32_t groupid,
>  {
>      VFIOGroup *group;
>      VFIOContainer *container;
> +    VFIODevice *vdev;
> +    struct vfio_eeh_pe_op *arg;
>      int ret = -1;
>  
>      group = vfio_get_group(groupid, as);
> @@ -4442,7 +4444,29 @@ int vfio_container_ioctl(AddressSpace *as, int32_t groupid,
>      switch (req) {
>      case VFIO_CHECK_EXTENSION:
>      case VFIO_IOMMU_SPAPR_TCE_GET_INFO:
> +        break;
>      case VFIO_EEH_PE_OP:
> +        arg = (struct vfio_eeh_pe_op *)param;
> +        switch (arg->op) {
> +        case VFIO_EEH_PE_RESET_HOT:
> +        case VFIO_EEH_PE_RESET_FUNDAMENTAL:
> +            /*
> +             * The MSIx table will be cleaned out by reset. We need
> +             * disable it so that it can be reenabled properly. Also,
> +             * the cached MSIx table should be cleared as it's not
> +             * reflecting the contents in hardware.
> +             */
> +            QLIST_FOREACH(vdev, &group->device_list, next) {
> +                if (msix_enabled(&vdev->pdev)) {
> +                    vfio_disable_msix(vdev);
> +                }
> +
> +                msix_reset(&vdev->pdev);
> +            }
> +
> +            break;
> +        }


This has to be done in spapr_pci_vfio (but we do not have there access to
vfio_disable_msix) or in the way that x86 would benefit from too but in
this case yes, we need an opinion from Alex (Williamson)...


> +
>          break;
>      default:
>          /* Return an error on unknown requests */
> 


-- 
Alexey

  reply	other threads:[~2014-08-26 10:25 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-20  9:52 [Qemu-devel] [RFC PATCH 0/2] Fix MSIx lost after PE reset Gavin Shan
2014-08-20  9:52 ` [Qemu-devel] [RFC PATCH 1/2] VFIO: Drop vfio_container_do_ioctl() Gavin Shan
2014-08-26 10:27   ` Alexey Kardashevskiy
2014-08-26 20:05     ` Alex Williamson
2014-08-20  9:52 ` [Qemu-devel] [RFC PATCH 2/2] VFIO: Clear stale MSIx table during EEH reset Gavin Shan
2014-08-26 10:25   ` Alexey Kardashevskiy [this message]
2014-08-26 20:25   ` Alex Williamson
2014-08-27 13:15     ` Gavin Shan
2014-08-27 13:29       ` Alex Williamson
2014-08-29  7:13         ` Gavin Shan
2014-08-26  0:58 ` [Qemu-devel] [RFC PATCH 0/2] Fix MSIx lost after PE reset Gavin Shan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53FC6090.7090703@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=alex.williamson@redhat.com \
    --cc=gwshan@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.