From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: izumi.taku@jp.fujitsu.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v5 2/7] aer: impove pcie_aer_init to support vfio device
Date: Mon, 16 Mar 2015 10:30:56 +0800 [thread overview]
Message-ID: <55064060.70105@cn.fujitsu.com> (raw)
In-Reply-To: <1426285501.3643.137.camel@redhat.com>
On 03/14/2015 06:25 AM, Alex Williamson wrote:
> On Thu, 2015-03-12 at 18:23 +0800, Chen Fan wrote:
>> pcie_aer_init was used to emulate an aer capability for pcie device,
>> but for vfio device, the aer config space size is mutable and is not
>> always equal to PCI_ERR_SIZEOF(0x48). it depends on where the TLP Prefix
>> register required, so here we add a size argument.
> This would need to go through the QEMU PCI tree. Question, do all of
> the fields of the AER capability directly translate to the guest view of
> the device? For instance, are there source and destination values that
> need to be emulated for the guest? I'm not really sure what we're
> exposing via the TLP Prefix area. Thanks,
I think all of the fields of the AER do not need to be emulated for the
guest.
the guest directly read the register of err status, Header log and TLP
prefix log.
and we don't need to care what TLP prefix exposes, due to the TLP prefix
area is depended on the End-End TLP Prefix Supported bit. the spec said
If the End-End TLP Prefix Supported bit (Section 7.8.15) is Clear, the
TLP Prefix
Log register is not required to be implemented. therefore if we directly use
the PCI_ERR_SIZEOF size to initialize aer, the maybe occur size overlap.
Thanks,
Chen
>
> Alex
>
>> Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
>> ---
>> hw/pci-bridge/ioh3420.c | 2 +-
>> hw/pci-bridge/xio3130_downstream.c | 2 +-
>> hw/pci-bridge/xio3130_upstream.c | 2 +-
>> hw/pci/pcie_aer.c | 4 ++--
>> include/hw/pci/pcie_aer.h | 2 +-
>> 5 files changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/hw/pci-bridge/ioh3420.c b/hw/pci-bridge/ioh3420.c
>> index cce2fdd..4d9cd3f 100644
>> --- a/hw/pci-bridge/ioh3420.c
>> +++ b/hw/pci-bridge/ioh3420.c
>> @@ -129,7 +129,7 @@ static int ioh3420_initfn(PCIDevice *d)
>> goto err_pcie_cap;
>> }
>> pcie_cap_root_init(d);
>> - rc = pcie_aer_init(d, IOH_EP_AER_OFFSET);
>> + rc = pcie_aer_init(d, IOH_EP_AER_OFFSET, PCI_ERR_SIZEOF);
>> if (rc < 0) {
>> goto err;
>> }
>> diff --git a/hw/pci-bridge/xio3130_downstream.c b/hw/pci-bridge/xio3130_downstream.c
>> index b3a6479..9737041 100644
>> --- a/hw/pci-bridge/xio3130_downstream.c
>> +++ b/hw/pci-bridge/xio3130_downstream.c
>> @@ -92,7 +92,7 @@ static int xio3130_downstream_initfn(PCIDevice *d)
>> goto err_pcie_cap;
>> }
>> pcie_cap_arifwd_init(d);
>> - rc = pcie_aer_init(d, XIO3130_AER_OFFSET);
>> + rc = pcie_aer_init(d, XIO3130_AER_OFFSET, PCI_ERR_SIZEOF);
>> if (rc < 0) {
>> goto err;
>> }
>> diff --git a/hw/pci-bridge/xio3130_upstream.c b/hw/pci-bridge/xio3130_upstream.c
>> index eada582..4d7f894 100644
>> --- a/hw/pci-bridge/xio3130_upstream.c
>> +++ b/hw/pci-bridge/xio3130_upstream.c
>> @@ -81,7 +81,7 @@ static int xio3130_upstream_initfn(PCIDevice *d)
>> }
>> pcie_cap_flr_init(d);
>> pcie_cap_deverr_init(d);
>> - rc = pcie_aer_init(d, XIO3130_AER_OFFSET);
>> + rc = pcie_aer_init(d, XIO3130_AER_OFFSET, PCI_ERR_SIZEOF);
>> if (rc < 0) {
>> goto err;
>> }
>> diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c
>> index 5a25c32..71045eb 100644
>> --- a/hw/pci/pcie_aer.c
>> +++ b/hw/pci/pcie_aer.c
>> @@ -94,12 +94,12 @@ static void aer_log_clear_all_err(PCIEAERLog *aer_log)
>> aer_log->log_num = 0;
>> }
>>
>> -int pcie_aer_init(PCIDevice *dev, uint16_t offset)
>> +int pcie_aer_init(PCIDevice *dev, uint16_t offset, uint16_t size)
>> {
>> PCIExpressDevice *exp;
>>
>> pcie_add_capability(dev, PCI_EXT_CAP_ID_ERR, PCI_ERR_VER,
>> - offset, PCI_ERR_SIZEOF);
>> + offset, size);
>> exp = &dev->exp;
>> exp->aer_cap = offset;
>>
>> diff --git a/include/hw/pci/pcie_aer.h b/include/hw/pci/pcie_aer.h
>> index bcac80a..a4cc6f3 100644
>> --- a/include/hw/pci/pcie_aer.h
>> +++ b/include/hw/pci/pcie_aer.h
>> @@ -87,7 +87,7 @@ struct PCIEAERErr {
>>
>> extern const VMStateDescription vmstate_pcie_aer_log;
>>
>> -int pcie_aer_init(PCIDevice *dev, uint16_t offset);
>> +int pcie_aer_init(PCIDevice *dev, uint16_t offset, uint16_t size);
>> void pcie_aer_exit(PCIDevice *dev);
>> void pcie_aer_write_config(PCIDevice *dev,
>> uint32_t addr, uint32_t val, int len);
>
>
> .
>
next prev parent reply other threads:[~2015-03-16 2:38 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-12 10:23 [Qemu-devel] [PATCH v5 0/7] pass aer error to guest for vfio device Chen Fan
2015-03-12 10:23 ` [Qemu-devel] [PATCH v5 1/7] vfio: add pcie extanded capability support Chen Fan
2015-03-12 10:23 ` [Qemu-devel] [PATCH v5 2/7] aer: impove pcie_aer_init to support vfio device Chen Fan
2015-03-13 22:25 ` Alex Williamson
2015-03-16 2:30 ` Chen Fan [this message]
2015-03-12 10:23 ` [Qemu-devel] [PATCH v5 3/7] vfio: add aer support for " Chen Fan
2015-03-13 22:28 ` Alex Williamson
2015-03-12 10:23 ` [Qemu-devel] [PATCH v5 4/7] pcie_aer: expose pcie_aer_msg() interface Chen Fan
2015-03-13 22:30 ` Alex Williamson
2015-03-18 13:29 ` Michael S. Tsirkin
2015-03-19 1:33 ` Chen Fan
2015-03-12 10:23 ` [Qemu-devel] [PATCH v5 5/7] vfio-pci: pass the aer error to guest Chen Fan
2015-03-13 22:34 ` Alex Williamson
2015-03-16 3:05 ` Chen Fan
2015-03-16 3:52 ` Alex Williamson
2015-03-16 7:35 ` Chen Fan
2015-03-16 14:09 ` Alex Williamson
2015-03-25 1:33 ` Chen Fan
2015-03-25 2:31 ` Alex Williamson
2015-03-25 1:53 ` Chen Fan
2015-03-25 2:41 ` Alex Williamson
2015-03-25 3:07 ` Chen Fan
2015-04-01 4:12 ` Chen Fan
2015-04-01 15:46 ` Alex Williamson
2015-04-08 8:59 ` Chen Fan
2015-04-08 15:36 ` Alex Williamson
2015-04-15 10:30 ` Chen Fan
2015-04-15 14:18 ` Alex Williamson
2015-03-12 10:23 ` [Qemu-devel] [PATCH v5 6/7] vfio: add 'x-aer' property to expose aercap Chen Fan
2015-03-18 13:23 ` Michael S. Tsirkin
2015-03-18 14:09 ` Alex Williamson
2015-03-12 10:23 ` [Qemu-devel] [PATCH v5 7/7] pc: add PC_I440FX_COMPAT to disable aercap for vifo device Chen Fan
2015-03-13 22:38 ` Alex Williamson
2015-03-16 2:48 ` Chen Fan
2015-03-16 2:49 ` Chen Fan
2015-03-18 13:23 ` Michael S. Tsirkin
2015-03-18 14:02 ` Alex Williamson
2015-03-18 14:05 ` Michael S. Tsirkin
2015-03-18 14:15 ` Alex Williamson
2015-03-18 14:36 ` Michael S. Tsirkin
2015-03-18 14:50 ` Alex Williamson
2015-03-18 15:02 ` Michael S. Tsirkin
2015-03-18 15:45 ` Alex Williamson
2015-03-18 16:44 ` Michael S. Tsirkin
2015-03-18 17:11 ` Alex Williamson
2015-03-18 17:45 ` Michael S. Tsirkin
2015-03-18 18:08 ` Alex Williamson
2015-03-18 18:56 ` Michael S. Tsirkin
2015-03-18 19:05 ` Alex Williamson
2015-03-19 21:26 ` Paolo Bonzini
2015-03-16 2:52 ` [Qemu-devel] [PATCH v5 0/7] pass aer error to guest for vfio device Chen Fan
2015-03-16 4:57 ` Michael S. Tsirkin
2015-03-19 21:44 ` Paolo Bonzini
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=55064060.70105@cn.fujitsu.com \
--to=chen.fan.fnst@cn.fujitsu.com \
--cc=alex.williamson@redhat.com \
--cc=izumi.taku@jp.fujitsu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).