From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YVWdQ-0002i2-4K for qemu-devel@nongnu.org; Tue, 10 Mar 2015 22:44:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YVWdM-0007L5-UP for qemu-devel@nongnu.org; Tue, 10 Mar 2015 22:44:36 -0400 Received: from [59.151.112.132] (port=14707 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YVWdM-0007JC-Ha for qemu-devel@nongnu.org; Tue, 10 Mar 2015 22:44:32 -0400 Message-ID: <54FFAA72.4030108@cn.fujitsu.com> Date: Wed, 11 Mar 2015 10:37:38 +0800 From: Chen Fan MIME-Version: 1.0 References: <1425932961.4675.211.camel@redhat.com> In-Reply-To: <1425932961.4675.211.camel@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC v4 4/9] aer: impove pcie_aer_init to support vfio device List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alex Williamson Cc: izumi.taku@jp.fujitsu.com, qemu-devel@nongnu.org On 03/10/2015 04:29 AM, Alex Williamson wrote: > On Mon, 2015-03-02 at 15:16 +0800, Chen Fan wrote: >> extend pcie_aer_init arguments to adjust vfio device. > Some discussion of why vfio wants this would be useful. qemu treats vfio device as an emulated device. and these attributes of aer can be emulated too. so here I would use pcie_aer_init to add an aer capability directly. and get rid of this patch from series. Thanks, Chen > > >> Signed-off-by: Chen Fan >> --- >> hw/pci-bridge/ioh3420.c | 3 ++- >> hw/pci-bridge/xio3130_downstream.c | 3 ++- >> hw/pci-bridge/xio3130_upstream.c | 3 ++- >> hw/pci/pcie_aer.c | 7 ++++--- >> include/hw/pci/pcie_aer.h | 4 +++- >> 5 files changed, 13 insertions(+), 7 deletions(-) >> >> diff --git a/hw/pci-bridge/ioh3420.c b/hw/pci-bridge/ioh3420.c >> index cce2fdd..354574f 100644 >> --- a/hw/pci-bridge/ioh3420.c >> +++ b/hw/pci-bridge/ioh3420.c >> @@ -129,7 +129,8 @@ 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, PCI_ERR_VER, >> + 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..407f75f 100644 >> --- a/hw/pci-bridge/xio3130_downstream.c >> +++ b/hw/pci-bridge/xio3130_downstream.c >> @@ -92,7 +92,8 @@ 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, PCI_ERR_VER, >> + 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..52b130f 100644 >> --- a/hw/pci-bridge/xio3130_upstream.c >> +++ b/hw/pci-bridge/xio3130_upstream.c >> @@ -81,7 +81,8 @@ 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, PCI_ERR_VER, >> + 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 ece1487..a76a943 100644 >> --- a/hw/pci/pcie_aer.c >> +++ b/hw/pci/pcie_aer.c >> @@ -94,12 +94,13 @@ 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, uint8_t cap_ver, >> + uint16_t offset, uint16_t size) >> { >> PCIExpressDevice *exp; >> >> - pcie_add_capability(dev, PCI_EXT_CAP_ID_ERR, PCI_ERR_VER, >> - offset, PCI_ERR_SIZEOF); >> + pcie_add_capability(dev, PCI_EXT_CAP_ID_ERR, >> + cap_ver, 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..afa074e 100644 >> --- a/include/hw/pci/pcie_aer.h >> +++ b/include/hw/pci/pcie_aer.h >> @@ -87,7 +87,9 @@ struct PCIEAERErr { >> >> extern const VMStateDescription vmstate_pcie_aer_log; >> >> -int pcie_aer_init(PCIDevice *dev, uint16_t offset); >> +int pcie_aer_init(PCIDevice *dev, uint8_t cap_ver, >> + 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); > > > . >