All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhou Jie <zhoujie2011@cn.fujitsu.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: izumi.taku@jp.fujitsu.com, caoj.fnst@cn.fujitsu.com,
	Chen Fan <fan.chen@easystack.cn>,
	qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH v8 11/12] vfio: register aer resume notification handler for aer resume
Date: Sun, 3 Jul 2016 12:00:22 +0800	[thread overview]
Message-ID: <99e88b46-8b8b-f7de-700f-8d644a7f005a@cn.fujitsu.com> (raw)
In-Reply-To: <bb6d23b4-2043-07c4-4bef-a2a00e5f4c58@cn.fujitsu.com>

Hi Alex,

On 2016/6/30 9:45, Zhou Jie wrote:
> Hi Alex,
>
> On 2016/6/30 2:22, Alex Williamson wrote:
>> On Wed, 29 Jun 2016 16:54:05 +0800
>> Zhou Jie <zhoujie2011@cn.fujitsu.com> wrote:
>>
>>> Hi Alex,
>>>
>>>> And yet we have struct pci_dev.broken_intx_masking and we test for
>>>> working DisINTx via pci_intx_mask_supported() rather than simply
>>>> looking for a PCIe device.  Some devices are broken and some simply
>>>> don't follow the spec, so you're going to need to deal with that or
>>>> exclude those devices.
>>> For those devices I have no way to disable the INTx.
>>
>> disable_irq()?  Clearly vfio-pci already manages these types of devices
>> and can disable INTx.  This is why I keep suggesting that maybe tearing
>> the interrupt setup down completely is a more complete and reliable
>> approach than masking in the command register.  Unless we're going to
>> exclude such devices from supporting this mode (which I don't condone),
>> we must deal with them.
> Thank you for tell me that.
> Yes, I can use disable_irq to disable the pci device irq.
> But should I enable the irq after reset?
> I will dig into it.

I will alter the VFIO driver like following.
During err occurs and resume:
1. Make config space read only.
2. Disable INTx/MSI Interrupt.
3. Do nothing for bar regions.

The following code will be modified.
1. vfio_pci_ioctl
    add a flag in vfio_device_info for workable_state support
    return workable_state in "struct vfio_pci_device" when user get info
2. vfio_pci_ioctl
    During err occurs and resume:
    if (cmd == VFIO_DEVICE_SET_IRQS || VFIO_DEVICE_RESET
    || VFIO_DEVICE_GET_PCI_HOT_RESET_INFO || VFIO_DEVICE_PCI_HOT_RESET)
    block for workable_state clearing
3. vfio_pci_write
    During err occurs and resume:
    ignore and return 0
4. vfio_pci_aer_err_detected
    Set workable_state to false in "struct vfio_pci_device"
    Disable INTx:
      If Disable INTx is support
        disable by PCI_COMMAND
      else
        disable by disable_irq function
    Disable MSI:
        disable by clearing the "Bus Master Enable" bit of PCI_COMMAND

5. vfio_pci_aer_resume
    Set workable_state to true in "struct vfio_pci_device"
    About INTx:
      According to the value of "vdev->ctx[0].masked"
      to decide whether to enable INTx
    About MSI:
      After reset the "Bus Master Enable" bit is default to 0.
      So user should process this after reset.

Sincerely
Zhou Jie

  reply	other threads:[~2016-07-03  4:00 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-27  2:12 [Qemu-devel] [PATCH v8 11/12] vfio: register aer resume notification handler for aer resume Zhou Jie
2016-05-27 16:06 ` Alex Williamson
2016-06-12  2:38   ` Zhou Jie
2016-06-20  7:41     ` Zhou Jie
2016-06-20 16:32       ` Alex Williamson
2016-06-21  2:16         ` Zhou Jie
2016-06-21  3:13           ` Alex Williamson
2016-06-21 12:41             ` Chen Fan
2016-06-21 14:44               ` Alex Williamson
2016-06-22  3:28                 ` Zhou Jie
2016-06-22  3:56                   ` Alex Williamson
2016-06-22  5:45                     ` Zhou Jie
2016-06-22  7:49                       ` Zhou Jie
2016-06-22 15:42                         ` Alex Williamson
2016-06-25  1:24                           ` Zhou Jie
2016-06-27 15:54                             ` Alex Williamson
2016-06-28  3:26                               ` Zhou Jie
2016-06-28  3:58                                 ` Alex Williamson
2016-06-28  5:27                                   ` Zhou Jie
2016-06-28 14:40                                     ` Alex Williamson
2016-06-29  8:54                                       ` Zhou Jie
2016-06-29 18:22                                         ` Alex Williamson
2016-06-30  1:45                                           ` Zhou Jie
2016-07-03  4:00                                             ` Zhou Jie [this message]
2016-07-05  1:36                                               ` Zhou Jie
2016-07-05 17:03                                                 ` Alex Williamson
2016-07-06  2:01                                                   ` Zhou Jie
2016-07-07 19:04                                                     ` Alex Williamson
2016-07-08  1:38                                                       ` Zhou Jie
2016-07-08 17:33                                                         ` Alex Williamson
2016-07-10  1:28                                                           ` Zhou Jie
2016-07-11 16:24                                                             ` Alex Williamson
2016-07-12  1:42                                                               ` Zhou Jie
2016-07-12 15:45                                                                 ` Alex Williamson
2016-07-13  1:04                                                                   ` Zhou Jie
2016-07-13  2:54                                                                     ` Alex Williamson
2016-07-13  3:33                                                                       ` Zhou Jie
2016-06-22 15:25                       ` Alex Williamson

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=99e88b46-8b8b-f7de-700f-8d644a7f005a@cn.fujitsu.com \
    --to=zhoujie2011@cn.fujitsu.com \
    --cc=alex.williamson@redhat.com \
    --cc=caoj.fnst@cn.fujitsu.com \
    --cc=fan.chen@easystack.cn \
    --cc=izumi.taku@jp.fujitsu.com \
    --cc=mst@redhat.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.