From: Alexander Graf <agraf@suse.de>
To: Gavin Shan <gwshan@linux.vnet.ibm.com>,
Alex Williamson <alex.williamson@redhat.com>
Cc: aik@ozlabs.ru, qiudayu@linux.vnet.ibm.com,
linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org
Subject: Re: [PATCH v7 3/3] drivers/vfio: EEH support for VFIO PCI device
Date: Wed, 28 May 2014 11:41:35 +0000 [thread overview]
Message-ID: <5385CB6F.50300@suse.de> (raw)
In-Reply-To: <20140528005532.GA5528@shangw>
On 28.05.14 02:55, Gavin Shan wrote:
> On Tue, May 27, 2014 at 12:15:27PM -0600, Alex Williamson wrote:
>> On Tue, 2014-05-27 at 18:40 +1000, Gavin Shan wrote:
>>> The patch adds new IOCTL commands for sPAPR VFIO container device
>>> to support EEH functionality for PCI devices, which have been passed
>>> through from host to somebody else via VFIO.
>>>
>>> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>>> ---
>>> Documentation/vfio.txt | 92 ++++++++++++++++++++++++++++++++++++-
>>> drivers/vfio/pci/Makefile | 1 +
>>> drivers/vfio/pci/vfio_pci.c | 20 +++++---
>>> drivers/vfio/pci/vfio_pci_eeh.c | 46 +++++++++++++++++++
>>> drivers/vfio/pci/vfio_pci_private.h | 5 ++
>>> drivers/vfio/vfio_iommu_spapr_tce.c | 85 ++++++++++++++++++++++++++++++++++
>>> include/uapi/linux/vfio.h | 66 ++++++++++++++++++++++++++
>>> 7 files changed, 308 insertions(+), 7 deletions(-)
>>> create mode 100644 drivers/vfio/pci/vfio_pci_eeh.c
[...]
>>> diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
>>> index cb9023d..c5fac36 100644
>>> --- a/include/uapi/linux/vfio.h
>>> +++ b/include/uapi/linux/vfio.h
>>> @@ -455,6 +455,72 @@ struct vfio_iommu_spapr_tce_info {
>>>
>>> #define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
>>>
>>> +/*
>>> + * EEH functionality can be enabled or disabled on one specific device.
>>> + * Also, the DMA or IO frozen state can be removed from the frozen PE
>>> + * if required.
>>> + */
>>> +struct vfio_eeh_pe_set_option {
>>> + __u32 argsz;
>>> + __u32 flags;
>>> + __u32 option;
>>> +#define VFIO_EEH_PE_SET_OPT_DISABLE 0 /* Disable EEH */
>>> +#define VFIO_EEH_PE_SET_OPT_ENABLE 1 /* Enable EEH */
>>> +#define VFIO_EEH_PE_SET_OPT_IO 2 /* Enable IO */
>>> +#define VFIO_EEH_PE_SET_OPT_DMA 3 /* Enable DMA */
>> This is more of a "command" than an "option" isn't it? Each of these
>> probably needs a more significant description.
>>
> Yeah, it would be regarded as "opcode" and I'll add more description about
> them in next revision.
Please just call them commands.
>
>>> +};
>>> +
>>> +#define VFIO_EEH_PE_SET_OPTION _IO(VFIO_TYPE, VFIO_BASE + 21)
>>> +
>>> +/*
>>> + * Each EEH PE should have unique address to be identified. PE's
>>> + * sharing mode is also useful information as well.
>>> + */
>>> +#define VFIO_EEH_PE_GET_ADDRESS 0 /* Get address */
>>> +#define VFIO_EEH_PE_GET_MODE 1 /* Query mode */
>>> +#define VFIO_EEH_PE_MODE_NONE 0 /* Not a PE */
>>> +#define VFIO_EEH_PE_MODE_NOT_SHARED 1 /* Exclusive */
>>> +#define VFIO_EEH_PE_MODE_SHARED 2 /* Shared mode */
>>> +
>>> +/*
>>> + * EEH PE might have been frozen because of PCI errors. Also, it might
>>> + * be experiencing reset for error revoery. The following command helps
>>> + * to get the state.
>>> + */
>>> +struct vfio_eeh_pe_get_state {
>>> + __u32 argsz;
>>> + __u32 flags;
>>> + __u32 state;
>>> +};
>> Should state be a union to better describe the value returned? What
>> exactly is the address and why does the user need to know it? Does this
>> need user input or could we just return the address and mode regardless?
>>
> Ok. I think you want enum (not union) for state. I'll have macros for the
> state in next revision as I did that for other cases.
>
> Those macros defined for "address" just for ABI stuff as Alex.G mentioned.
> There isn't corresponding ioctl command for host to get address any more
> because QEMU (user) will have to figure it out by himself. The "address"
> here means PE address and user has to figure it out according to PE
> segmentation.
Why would the user ever need the address?
Alex
WARNING: multiple messages have this Message-ID (diff)
From: Alexander Graf <agraf@suse.de>
To: Gavin Shan <gwshan@linux.vnet.ibm.com>,
Alex Williamson <alex.williamson@redhat.com>
Cc: aik@ozlabs.ru, qiudayu@linux.vnet.ibm.com,
linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org
Subject: Re: [PATCH v7 3/3] drivers/vfio: EEH support for VFIO PCI device
Date: Wed, 28 May 2014 13:41:35 +0200 [thread overview]
Message-ID: <5385CB6F.50300@suse.de> (raw)
In-Reply-To: <20140528005532.GA5528@shangw>
On 28.05.14 02:55, Gavin Shan wrote:
> On Tue, May 27, 2014 at 12:15:27PM -0600, Alex Williamson wrote:
>> On Tue, 2014-05-27 at 18:40 +1000, Gavin Shan wrote:
>>> The patch adds new IOCTL commands for sPAPR VFIO container device
>>> to support EEH functionality for PCI devices, which have been passed
>>> through from host to somebody else via VFIO.
>>>
>>> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>>> ---
>>> Documentation/vfio.txt | 92 ++++++++++++++++++++++++++++++++++++-
>>> drivers/vfio/pci/Makefile | 1 +
>>> drivers/vfio/pci/vfio_pci.c | 20 +++++---
>>> drivers/vfio/pci/vfio_pci_eeh.c | 46 +++++++++++++++++++
>>> drivers/vfio/pci/vfio_pci_private.h | 5 ++
>>> drivers/vfio/vfio_iommu_spapr_tce.c | 85 ++++++++++++++++++++++++++++++++++
>>> include/uapi/linux/vfio.h | 66 ++++++++++++++++++++++++++
>>> 7 files changed, 308 insertions(+), 7 deletions(-)
>>> create mode 100644 drivers/vfio/pci/vfio_pci_eeh.c
[...]
>>> diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
>>> index cb9023d..c5fac36 100644
>>> --- a/include/uapi/linux/vfio.h
>>> +++ b/include/uapi/linux/vfio.h
>>> @@ -455,6 +455,72 @@ struct vfio_iommu_spapr_tce_info {
>>>
>>> #define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
>>>
>>> +/*
>>> + * EEH functionality can be enabled or disabled on one specific device.
>>> + * Also, the DMA or IO frozen state can be removed from the frozen PE
>>> + * if required.
>>> + */
>>> +struct vfio_eeh_pe_set_option {
>>> + __u32 argsz;
>>> + __u32 flags;
>>> + __u32 option;
>>> +#define VFIO_EEH_PE_SET_OPT_DISABLE 0 /* Disable EEH */
>>> +#define VFIO_EEH_PE_SET_OPT_ENABLE 1 /* Enable EEH */
>>> +#define VFIO_EEH_PE_SET_OPT_IO 2 /* Enable IO */
>>> +#define VFIO_EEH_PE_SET_OPT_DMA 3 /* Enable DMA */
>> This is more of a "command" than an "option" isn't it? Each of these
>> probably needs a more significant description.
>>
> Yeah, it would be regarded as "opcode" and I'll add more description about
> them in next revision.
Please just call them commands.
>
>>> +};
>>> +
>>> +#define VFIO_EEH_PE_SET_OPTION _IO(VFIO_TYPE, VFIO_BASE + 21)
>>> +
>>> +/*
>>> + * Each EEH PE should have unique address to be identified. PE's
>>> + * sharing mode is also useful information as well.
>>> + */
>>> +#define VFIO_EEH_PE_GET_ADDRESS 0 /* Get address */
>>> +#define VFIO_EEH_PE_GET_MODE 1 /* Query mode */
>>> +#define VFIO_EEH_PE_MODE_NONE 0 /* Not a PE */
>>> +#define VFIO_EEH_PE_MODE_NOT_SHARED 1 /* Exclusive */
>>> +#define VFIO_EEH_PE_MODE_SHARED 2 /* Shared mode */
>>> +
>>> +/*
>>> + * EEH PE might have been frozen because of PCI errors. Also, it might
>>> + * be experiencing reset for error revoery. The following command helps
>>> + * to get the state.
>>> + */
>>> +struct vfio_eeh_pe_get_state {
>>> + __u32 argsz;
>>> + __u32 flags;
>>> + __u32 state;
>>> +};
>> Should state be a union to better describe the value returned? What
>> exactly is the address and why does the user need to know it? Does this
>> need user input or could we just return the address and mode regardless?
>>
> Ok. I think you want enum (not union) for state. I'll have macros for the
> state in next revision as I did that for other cases.
>
> Those macros defined for "address" just for ABI stuff as Alex.G mentioned.
> There isn't corresponding ioctl command for host to get address any more
> because QEMU (user) will have to figure it out by himself. The "address"
> here means PE address and user has to figure it out according to PE
> segmentation.
Why would the user ever need the address?
Alex
next prev parent reply other threads:[~2014-05-28 11:41 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-27 8:40 [PATCH v7 0/3] EEH Support for VFIO PCI Device Gavin Shan
2014-05-27 8:40 ` Gavin Shan
2014-05-27 8:40 ` [PATCH v7 1/3] powerpc/eeh: Avoid event on passed PE Gavin Shan
2014-05-27 8:40 ` Gavin Shan
2014-05-27 8:40 ` [PATCH v7 2/3] powerpc/eeh: EEH support for VFIO PCI device Gavin Shan
2014-05-27 8:40 ` Gavin Shan
2014-05-27 8:40 ` [PATCH v7 3/3] drivers/vfio: " Gavin Shan
2014-05-27 8:40 ` Gavin Shan
2014-05-27 18:15 ` Alex Williamson
2014-05-27 18:15 ` Alex Williamson
2014-05-27 20:30 ` Benjamin Herrenschmidt
2014-05-27 20:30 ` Benjamin Herrenschmidt
2014-05-27 20:37 ` Alex Williamson
2014-05-27 20:37 ` Alex Williamson
2014-05-27 20:41 ` Benjamin Herrenschmidt
2014-05-27 20:41 ` Benjamin Herrenschmidt
2014-05-27 22:49 ` Alexander Graf
2014-05-27 22:49 ` Alexander Graf
2014-05-28 0:39 ` Alex Williamson
2014-05-28 0:39 ` Alex Williamson
2014-05-28 0:44 ` Alexander Graf
2014-05-28 0:44 ` Alexander Graf
2014-05-28 0:57 ` Alex Williamson
2014-05-28 0:57 ` Alex Williamson
2014-05-28 11:37 ` Alexander Graf
2014-05-28 11:37 ` Alexander Graf
2014-05-28 16:17 ` Alex Williamson
2014-05-28 16:17 ` Alex Williamson
2014-05-28 22:40 ` Alexander Graf
2014-05-28 22:40 ` Alexander Graf
2014-05-28 23:37 ` Gavin Shan
2014-05-28 23:37 ` Gavin Shan
2014-05-28 23:38 ` Alexander Graf
2014-05-28 23:38 ` Alexander Graf
2014-05-28 23:41 ` Gavin Shan
2014-05-28 23:41 ` Gavin Shan
2014-05-28 0:55 ` Gavin Shan
2014-05-28 0:55 ` Gavin Shan
2014-05-28 11:41 ` Alexander Graf [this message]
2014-05-28 11:41 ` Alexander Graf
2014-05-28 12:49 ` Gavin Shan
2014-05-28 12:49 ` Gavin Shan
2014-05-28 13:12 ` Alexander Graf
2014-05-28 13:12 ` Alexander Graf
2014-05-28 23:13 ` Gavin Shan
2014-05-28 23:13 ` Gavin Shan
2014-05-28 21:58 ` Benjamin Herrenschmidt
2014-05-28 21:58 ` Benjamin Herrenschmidt
2014-05-28 22:46 ` Alexander Graf
2014-05-28 22:46 ` Alexander Graf
2014-05-28 23:18 ` Benjamin Herrenschmidt
2014-05-28 23:18 ` Benjamin Herrenschmidt
2014-05-30 3:44 ` Alexey Kardashevskiy
2014-05-30 3:44 ` Alexey Kardashevskiy
2014-05-30 3:49 ` Benjamin Herrenschmidt
2014-05-30 3:49 ` Benjamin Herrenschmidt
2014-05-28 16:32 ` Alex Williamson
2014-05-28 16:32 ` Alex Williamson
2014-05-29 0:05 ` Gavin Shan
2014-05-29 0:05 ` Gavin Shan
2014-05-29 0:44 ` Benjamin Herrenschmidt
2014-05-29 0:44 ` Benjamin Herrenschmidt
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=5385CB6F.50300@suse.de \
--to=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=alex.williamson@redhat.com \
--cc=gwshan@linux.vnet.ibm.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=qiudayu@linux.vnet.ibm.com \
/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.