All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1
@ 2016-02-04  1:31 Cao jin
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 1/4] pcie: modify the capability size assert Cao jin
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Cao jin @ 2016-02-04  1:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: chen.fan.fnst, izumi.taku, alex.williamson, mst

From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>

this patchset are splited out from my aer series patches,
this part of aer patches is harmless, and have been reviewed-by.
In order to avoid blocking it to merge, so I send it out independently
as part1. the part2 is under discussion. Thanks

Chen Fan (4):
  pcie: modify the capability size assert
  vfio: make the 4 bytes aligned for capability size
  aer: impove pcie_aer_init to support vfio device
  pcie_aer: expose pcie_aer_msg() interface

 hw/pci-bridge/ioh3420.c            | 2 +-
 hw/pci-bridge/xio3130_downstream.c | 2 +-
 hw/pci-bridge/xio3130_upstream.c   | 2 +-
 hw/pci/pcie.c                      | 2 +-
 hw/pci/pcie_aer.c                  | 6 +++---
 hw/vfio/pci.c                      | 3 ++-
 include/hw/pci/pcie_aer.h          | 3 ++-
 7 files changed, 11 insertions(+), 9 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 1/4] pcie: modify the capability size assert
  2016-02-04  1:31 [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Cao jin
@ 2016-02-04  1:31 ` Cao jin
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 2/4] vfio: make the 4 bytes aligned for capability size Cao jin
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Cao jin @ 2016-02-04  1:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: chen.fan.fnst, izumi.taku, alex.williamson, mst

From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>

 Device's Offset and size can reach PCIE_CONFIG_SPACE_SIZE,
 fix the corresponding assert.

Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/pci/pcie.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
index 435a6cf..4aca0c5 100644
--- a/hw/pci/pcie.c
+++ b/hw/pci/pcie.c
@@ -608,7 +608,7 @@ void pcie_add_capability(PCIDevice *dev,
 
     assert(offset >= PCI_CONFIG_SPACE_SIZE);
     assert(offset < offset + size);
-    assert(offset + size < PCIE_CONFIG_SPACE_SIZE);
+    assert(offset + size <= PCIE_CONFIG_SPACE_SIZE);
     assert(size >= 8);
     assert(pci_is_express(dev));
 
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 2/4] vfio: make the 4 bytes aligned for capability size
  2016-02-04  1:31 [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Cao jin
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 1/4] pcie: modify the capability size assert Cao jin
@ 2016-02-04  1:31 ` Cao jin
  2016-02-04 11:28   ` Michael S. Tsirkin
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 3/4] aer: impove pcie_aer_init to support vfio device Cao jin
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Cao jin @ 2016-02-04  1:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: chen.fan.fnst, izumi.taku, alex.williamson, mst

From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>

this function search the capability from the end, the last
size should 0x100 - pos, not 0xff - pos.

Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
---
 hw/vfio/pci.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 49f3d2d..e671506 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -1505,7 +1505,8 @@ static void vfio_unmap_bars(VFIOPCIDevice *vdev)
  */
 static uint8_t vfio_std_cap_max_size(PCIDevice *pdev, uint8_t pos)
 {
-    uint8_t tmp, next = 0xff;
+    uint8_t tmp;
+    uint16_t next = PCI_CONFIG_SPACE_SIZE;
 
     for (tmp = pdev->config[PCI_CAPABILITY_LIST]; tmp;
          tmp = pdev->config[tmp + 1]) {
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 3/4] aer: impove pcie_aer_init to support vfio device
  2016-02-04  1:31 [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Cao jin
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 1/4] pcie: modify the capability size assert Cao jin
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 2/4] vfio: make the 4 bytes aligned for capability size Cao jin
@ 2016-02-04  1:31 ` Cao jin
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 4/4] pcie_aer: expose pcie_aer_msg() interface Cao jin
  2016-02-04 11:28 ` [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Michael S. Tsirkin
  4 siblings, 0 replies; 8+ messages in thread
From: Cao jin @ 2016-02-04  1:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: chen.fan.fnst, izumi.taku, alex.williamson, mst

From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>

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.

Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.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 8ac4240..e62eefb 100644
--- a/hw/pci-bridge/ioh3420.c
+++ b/hw/pci-bridge/ioh3420.c
@@ -130,7 +130,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 9eb3d88..8458790 100644
--- a/hw/pci-bridge/xio3130_downstream.c
+++ b/hw/pci-bridge/xio3130_downstream.c
@@ -93,7 +93,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 7d255a6..c7fd397 100644
--- a/hw/pci-bridge/xio3130_upstream.c
+++ b/hw/pci-bridge/xio3130_upstream.c
@@ -82,7 +82,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 a9d9d06..8043020 100644
--- a/hw/pci/pcie_aer.c
+++ b/hw/pci/pcie_aer.c
@@ -95,12 +95,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 2fb8388..156acb0 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);
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 4/4] pcie_aer: expose pcie_aer_msg() interface
  2016-02-04  1:31 [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Cao jin
                   ` (2 preceding siblings ...)
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 3/4] aer: impove pcie_aer_init to support vfio device Cao jin
@ 2016-02-04  1:31 ` Cao jin
  2016-02-04 11:28 ` [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Michael S. Tsirkin
  4 siblings, 0 replies; 8+ messages in thread
From: Cao jin @ 2016-02-04  1:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: chen.fan.fnst, izumi.taku, alex.williamson, mst

From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>

For vfio device, we need to propagate the aer error to
Guest OS. we use the pcie_aer_msg() to send aer error
to guest.

Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/pci/pcie_aer.c         | 2 +-
 include/hw/pci/pcie_aer.h | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c
index 8043020..e2d4e68 100644
--- a/hw/pci/pcie_aer.c
+++ b/hw/pci/pcie_aer.c
@@ -371,7 +371,7 @@ static void pcie_aer_msg_root_port(PCIDevice *dev, const PCIEAERMsg *msg)
  *
  * Walk up the bus tree from the device, propagate the error message.
  */
-static void pcie_aer_msg(PCIDevice *dev, const PCIEAERMsg *msg)
+void pcie_aer_msg(PCIDevice *dev, const PCIEAERMsg *msg)
 {
     uint8_t type;
 
diff --git a/include/hw/pci/pcie_aer.h b/include/hw/pci/pcie_aer.h
index 156acb0..c2ee4e2 100644
--- a/include/hw/pci/pcie_aer.h
+++ b/include/hw/pci/pcie_aer.h
@@ -102,5 +102,6 @@ void pcie_aer_root_write_config(PCIDevice *dev,
 
 /* error injection */
 int pcie_aer_inject_error(PCIDevice *dev, const PCIEAERErr *err);
+void pcie_aer_msg(PCIDevice *dev, const PCIEAERMsg *msg);
 
 #endif /* QEMU_PCIE_AER_H */
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 2/4] vfio: make the 4 bytes aligned for capability size
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 2/4] vfio: make the 4 bytes aligned for capability size Cao jin
@ 2016-02-04 11:28   ` Michael S. Tsirkin
  0 siblings, 0 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2016-02-04 11:28 UTC (permalink / raw)
  To: Cao jin; +Cc: chen.fan.fnst, izumi.taku, alex.williamson, qemu-devel

On Thu, Feb 04, 2016 at 09:31:06AM +0800, Cao jin wrote:
> From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
> 
> this function search the capability from the end, the last
> size should 0x100 - pos, not 0xff - pos.
> 
> Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>

> ---
>  hw/vfio/pci.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
> index 49f3d2d..e671506 100644
> --- a/hw/vfio/pci.c
> +++ b/hw/vfio/pci.c
> @@ -1505,7 +1505,8 @@ static void vfio_unmap_bars(VFIOPCIDevice *vdev)
>   */
>  static uint8_t vfio_std_cap_max_size(PCIDevice *pdev, uint8_t pos)
>  {
> -    uint8_t tmp, next = 0xff;
> +    uint8_t tmp;
> +    uint16_t next = PCI_CONFIG_SPACE_SIZE;
>  
>      for (tmp = pdev->config[PCI_CAPABILITY_LIST]; tmp;
>           tmp = pdev->config[tmp + 1]) {
> -- 
> 1.9.3
> 
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1
  2016-02-04  1:31 [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Cao jin
                   ` (3 preceding siblings ...)
  2016-02-04  1:31 ` [Qemu-devel] [PATCH 4/4] pcie_aer: expose pcie_aer_msg() interface Cao jin
@ 2016-02-04 11:28 ` Michael S. Tsirkin
  2016-02-05  4:53   ` Alex Williamson
  4 siblings, 1 reply; 8+ messages in thread
From: Michael S. Tsirkin @ 2016-02-04 11:28 UTC (permalink / raw)
  To: Cao jin; +Cc: chen.fan.fnst, izumi.taku, alex.williamson, qemu-devel

On Thu, Feb 04, 2016 at 09:31:04AM +0800, Cao jin wrote:
> From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
> 
> this patchset are splited out from my aer series patches,
> this part of aer patches is harmless, and have been reviewed-by.
> In order to avoid blocking it to merge, so I send it out independently
> as part1. the part2 is under discussion. Thanks

I acked the remaining patch.
Alex, will you take it?

> Chen Fan (4):
>   pcie: modify the capability size assert
>   vfio: make the 4 bytes aligned for capability size
>   aer: impove pcie_aer_init to support vfio device
>   pcie_aer: expose pcie_aer_msg() interface
> 
>  hw/pci-bridge/ioh3420.c            | 2 +-
>  hw/pci-bridge/xio3130_downstream.c | 2 +-
>  hw/pci-bridge/xio3130_upstream.c   | 2 +-
>  hw/pci/pcie.c                      | 2 +-
>  hw/pci/pcie_aer.c                  | 6 +++---
>  hw/vfio/pci.c                      | 3 ++-
>  include/hw/pci/pcie_aer.h          | 3 ++-
>  7 files changed, 11 insertions(+), 9 deletions(-)
> 
> -- 
> 1.9.3
> 
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1
  2016-02-04 11:28 ` [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Michael S. Tsirkin
@ 2016-02-05  4:53   ` Alex Williamson
  0 siblings, 0 replies; 8+ messages in thread
From: Alex Williamson @ 2016-02-05  4:53 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: chen.fan.fnst, izumi.taku, Cao jin, qemu-devel

On Thu, 4 Feb 2016 13:28:53 +0200
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Thu, Feb 04, 2016 at 09:31:04AM +0800, Cao jin wrote:
> > From: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
> > 
> > this patchset are splited out from my aer series patches,
> > this part of aer patches is harmless, and have been reviewed-by.
> > In order to avoid blocking it to merge, so I send it out
> > independently as part1. the part2 is under discussion. Thanks  
> 
> I acked the remaining patch.
> Alex, will you take it?

If that's what you prefer, yes.  Thanks,

Alex

> > Chen Fan (4):
> >   pcie: modify the capability size assert
> >   vfio: make the 4 bytes aligned for capability size
> >   aer: impove pcie_aer_init to support vfio device
> >   pcie_aer: expose pcie_aer_msg() interface
> > 
> >  hw/pci-bridge/ioh3420.c            | 2 +-
> >  hw/pci-bridge/xio3130_downstream.c | 2 +-
> >  hw/pci-bridge/xio3130_upstream.c   | 2 +-
> >  hw/pci/pcie.c                      | 2 +-
> >  hw/pci/pcie_aer.c                  | 6 +++---
> >  hw/vfio/pci.c                      | 3 ++-
> >  include/hw/pci/pcie_aer.h          | 3 ++-
> >  7 files changed, 11 insertions(+), 9 deletions(-)
> > 
> > -- 
> > 1.9.3
> > 
> >   

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-02-05  4:53 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-04  1:31 [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Cao jin
2016-02-04  1:31 ` [Qemu-devel] [PATCH 1/4] pcie: modify the capability size assert Cao jin
2016-02-04  1:31 ` [Qemu-devel] [PATCH 2/4] vfio: make the 4 bytes aligned for capability size Cao jin
2016-02-04 11:28   ` Michael S. Tsirkin
2016-02-04  1:31 ` [Qemu-devel] [PATCH 3/4] aer: impove pcie_aer_init to support vfio device Cao jin
2016-02-04  1:31 ` [Qemu-devel] [PATCH 4/4] pcie_aer: expose pcie_aer_msg() interface Cao jin
2016-02-04 11:28 ` [Qemu-devel] [PATCH 0/4] vfio-pci: pass the aer error to guest, part1 Michael S. Tsirkin
2016-02-05  4:53   ` Alex Williamson

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.