* [PATCH 0/2] igb: Add FLR support @ 2023-08-29 9:05 Cédric Le Goater 2023-08-29 9:05 ` [PATCH 1/2] igb: Add a VF reset handler Cédric Le Goater ` (2 more replies) 0 siblings, 3 replies; 14+ messages in thread From: Cédric Le Goater @ 2023-08-29 9:05 UTC (permalink / raw) To: qemu-devel Cc: Akihiko Odaki, Sriram Yagnaraman, Jason Wang, Cédric Le Goater From: Cédric Le Goater <clg@redhat.com> Hello, Here is a little series adding FLR to the new IGB models. Thanks, C. Cédric Le Goater (2): igb: Add a VF reset handler igb: Add Function Level Reset to PF and VF hw/net/igb_common.h | 1 + hw/net/igb_core.h | 3 +++ hw/net/igb.c | 9 +++++++++ hw/net/igb_core.c | 6 ++++-- hw/net/igbvf.c | 13 +++++++++++++ hw/net/trace-events | 1 + 6 files changed, 31 insertions(+), 2 deletions(-) -- 2.41.0 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/2] igb: Add a VF reset handler 2023-08-29 9:05 [PATCH 0/2] igb: Add FLR support Cédric Le Goater @ 2023-08-29 9:05 ` Cédric Le Goater 2023-08-29 11:13 ` Philippe Mathieu-Daudé ` (2 more replies) 2023-08-29 9:05 ` [PATCH 2/2] igb: Add Function Level Reset to PF and VF Cédric Le Goater 2023-10-18 12:55 ` [PATCH 0/2] igb: Add FLR support Cédric Le Goater 2 siblings, 3 replies; 14+ messages in thread From: Cédric Le Goater @ 2023-08-29 9:05 UTC (permalink / raw) To: qemu-devel Cc: Akihiko Odaki, Sriram Yagnaraman, Jason Wang, Cédric Le Goater From: Cédric Le Goater <clg@redhat.com> Export the igb_vf_reset() helper routine from the PF model to let the IGBVF model implement its own device reset. Cc: Akihiko Odaki <akihiko.odaki@daynix.com> Suggested-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech> Signed-off-by: Cédric Le Goater <clg@redhat.com> --- hw/net/igb_common.h | 1 + hw/net/igb_core.h | 3 +++ hw/net/igb.c | 6 ++++++ hw/net/igb_core.c | 6 ++++-- hw/net/igbvf.c | 10 ++++++++++ hw/net/trace-events | 1 + 6 files changed, 25 insertions(+), 2 deletions(-) diff --git a/hw/net/igb_common.h b/hw/net/igb_common.h index 5c261ba9d39c..b316a5bcfa5c 100644 --- a/hw/net/igb_common.h +++ b/hw/net/igb_common.h @@ -152,5 +152,6 @@ enum { uint64_t igb_mmio_read(void *opaque, hwaddr addr, unsigned size); void igb_mmio_write(void *opaque, hwaddr addr, uint64_t val, unsigned size); +void igb_vf_reset(void *opaque, uint16_t vfn); #endif diff --git a/hw/net/igb_core.h b/hw/net/igb_core.h index 9cbbfd516bd5..bf8c46f26b51 100644 --- a/hw/net/igb_core.h +++ b/hw/net/igb_core.h @@ -130,6 +130,9 @@ igb_core_set_link_status(IGBCore *core); void igb_core_pci_uninit(IGBCore *core); +void +igb_core_vf_reset(IGBCore *core, uint16_t vfn); + bool igb_can_receive(IGBCore *core); diff --git a/hw/net/igb.c b/hw/net/igb.c index 8ff832acfc3b..e70a66ee038e 100644 --- a/hw/net/igb.c +++ b/hw/net/igb.c @@ -122,6 +122,12 @@ igb_mmio_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) igb_core_write(&s->core, addr, val, size); } +void igb_vf_reset(void *opaque, uint16_t vfn) +{ + IGBState *s = opaque; + igb_core_vf_reset(&s->core, vfn); +} + static bool igb_io_get_reg_index(IGBState *s, uint32_t *idx) { diff --git a/hw/net/igb_core.c b/hw/net/igb_core.c index 8b6b75c522f6..d710b9d32dcb 100644 --- a/hw/net/igb_core.c +++ b/hw/net/igb_core.c @@ -2153,11 +2153,13 @@ static void igb_set_vfmailbox(IGBCore *core, int index, uint32_t val) } } -static void igb_vf_reset(IGBCore *core, uint16_t vfn) +void igb_core_vf_reset(IGBCore *core, uint16_t vfn) { uint16_t qn0 = vfn; uint16_t qn1 = vfn + IGB_NUM_VM_POOLS; + trace_igb_core_vf_reset(vfn); + /* disable Rx and Tx for the VF*/ core->mac[RXDCTL0 + (qn0 * 16)] &= ~E1000_RXDCTL_QUEUE_ENABLE; core->mac[RXDCTL0 + (qn1 * 16)] &= ~E1000_RXDCTL_QUEUE_ENABLE; @@ -2236,7 +2238,7 @@ static void igb_set_vtctrl(IGBCore *core, int index, uint32_t val) if (val & E1000_CTRL_RST) { vfn = (index - PVTCTRL0) / 0x40; - igb_vf_reset(core, vfn); + igb_core_vf_reset(core, vfn); } } diff --git a/hw/net/igbvf.c b/hw/net/igbvf.c index d55e1e8a6abf..07343fa14a89 100644 --- a/hw/net/igbvf.c +++ b/hw/net/igbvf.c @@ -273,6 +273,13 @@ static void igbvf_pci_realize(PCIDevice *dev, Error **errp) pcie_ari_init(dev, 0x150); } +static void igbvf_qdev_reset_hold(Object *obj) +{ + PCIDevice *vf = PCI_DEVICE(obj); + + igb_vf_reset(pcie_sriov_get_pf(vf), pcie_sriov_vf_number(vf)); +} + static void igbvf_pci_uninit(PCIDevice *dev) { IgbVfState *s = IGBVF(dev); @@ -287,6 +294,7 @@ static void igbvf_class_init(ObjectClass *class, void *data) { DeviceClass *dc = DEVICE_CLASS(class); PCIDeviceClass *c = PCI_DEVICE_CLASS(class); + ResettableClass *rc = RESETTABLE_CLASS(class); c->realize = igbvf_pci_realize; c->exit = igbvf_pci_uninit; @@ -295,6 +303,8 @@ static void igbvf_class_init(ObjectClass *class, void *data) c->revision = 1; c->class_id = PCI_CLASS_NETWORK_ETHERNET; + rc->phases.hold = igbvf_qdev_reset_hold; + dc->desc = "Intel 82576 Virtual Function"; dc->user_creatable = false; diff --git a/hw/net/trace-events b/hw/net/trace-events index 6b5ba669a25d..1cfb0dda92be 100644 --- a/hw/net/trace-events +++ b/hw/net/trace-events @@ -274,6 +274,7 @@ igb_core_mdic_read(uint32_t addr, uint32_t data) "MDIC READ: PHY[%u] = 0x%x" igb_core_mdic_read_unhandled(uint32_t addr) "MDIC READ: PHY[%u] UNHANDLED" igb_core_mdic_write(uint32_t addr, uint32_t data) "MDIC WRITE: PHY[%u] = 0x%x" igb_core_mdic_write_unhandled(uint32_t addr) "MDIC WRITE: PHY[%u] UNHANDLED" +igb_core_vf_reset(uint16_t vfn) "VF%d" igb_link_set_ext_params(bool asd_check, bool speed_select_bypass, bool pfrstd) "Set extended link params: ASD check: %d, Speed select bypass: %d, PF reset done: %d" -- 2.41.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] igb: Add a VF reset handler 2023-08-29 9:05 ` [PATCH 1/2] igb: Add a VF reset handler Cédric Le Goater @ 2023-08-29 11:13 ` Philippe Mathieu-Daudé 2023-08-30 0:36 ` Akihiko Odaki 2023-08-30 10:11 ` Sriram Yagnaraman 2 siblings, 0 replies; 14+ messages in thread From: Philippe Mathieu-Daudé @ 2023-08-29 11:13 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel Cc: Akihiko Odaki, Sriram Yagnaraman, Jason Wang, Cédric Le Goater On 29/8/23 11:05, Cédric Le Goater wrote: > From: Cédric Le Goater <clg@redhat.com> > > Export the igb_vf_reset() helper routine from the PF model to let the Preferably splitting in 2 patches to KISS, Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > IGBVF model implement its own device reset. > > Cc: Akihiko Odaki <akihiko.odaki@daynix.com> > Suggested-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech> > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > hw/net/igb_common.h | 1 + > hw/net/igb_core.h | 3 +++ > hw/net/igb.c | 6 ++++++ > hw/net/igb_core.c | 6 ++++-- > hw/net/igbvf.c | 10 ++++++++++ > hw/net/trace-events | 1 + > 6 files changed, 25 insertions(+), 2 deletions(-) ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] igb: Add a VF reset handler 2023-08-29 9:05 ` [PATCH 1/2] igb: Add a VF reset handler Cédric Le Goater 2023-08-29 11:13 ` Philippe Mathieu-Daudé @ 2023-08-30 0:36 ` Akihiko Odaki 2023-08-30 10:11 ` Sriram Yagnaraman 2 siblings, 0 replies; 14+ messages in thread From: Akihiko Odaki @ 2023-08-30 0:36 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel Cc: Sriram Yagnaraman, Jason Wang, Cédric Le Goater On 2023/08/29 18:05, Cédric Le Goater wrote: > From: Cédric Le Goater <clg@redhat.com> > > Export the igb_vf_reset() helper routine from the PF model to let the > IGBVF model implement its own device reset. > > Cc: Akihiko Odaki <akihiko.odaki@daynix.com> > Suggested-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech> > Signed-off-by: Cédric Le Goater <clg@redhat.com> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> ^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: [PATCH 1/2] igb: Add a VF reset handler 2023-08-29 9:05 ` [PATCH 1/2] igb: Add a VF reset handler Cédric Le Goater 2023-08-29 11:13 ` Philippe Mathieu-Daudé 2023-08-30 0:36 ` Akihiko Odaki @ 2023-08-30 10:11 ` Sriram Yagnaraman 2 siblings, 0 replies; 14+ messages in thread From: Sriram Yagnaraman @ 2023-08-30 10:11 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel@nongnu.org Cc: Akihiko Odaki, Jason Wang, Cédric Le Goater > -----Original Message----- > From: Cédric Le Goater <clg@kaod.org> > Sent: Tuesday, 29 August 2023 11:05 > To: qemu-devel@nongnu.org > Cc: Akihiko Odaki <akihiko.odaki@daynix.com>; Sriram Yagnaraman > <sriram.yagnaraman@est.tech>; Jason Wang <jasowang@redhat.com>; Cédric > Le Goater <clg@redhat.com> > Subject: [PATCH 1/2] igb: Add a VF reset handler > > From: Cédric Le Goater <clg@redhat.com> > > Export the igb_vf_reset() helper routine from the PF model to let the IGBVF > model implement its own device reset. > > Cc: Akihiko Odaki <akihiko.odaki@daynix.com> > Suggested-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech> > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > hw/net/igb_common.h | 1 + > hw/net/igb_core.h | 3 +++ > hw/net/igb.c | 6 ++++++ > hw/net/igb_core.c | 6 ++++-- > hw/net/igbvf.c | 10 ++++++++++ > hw/net/trace-events | 1 + > 6 files changed, 25 insertions(+), 2 deletions(-) > Reviewed-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech> ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 2/2] igb: Add Function Level Reset to PF and VF 2023-08-29 9:05 [PATCH 0/2] igb: Add FLR support Cédric Le Goater 2023-08-29 9:05 ` [PATCH 1/2] igb: Add a VF reset handler Cédric Le Goater @ 2023-08-29 9:05 ` Cédric Le Goater 2023-08-30 10:12 ` Sriram Yagnaraman 2023-10-20 4:24 ` Jason Wang 2023-10-18 12:55 ` [PATCH 0/2] igb: Add FLR support Cédric Le Goater 2 siblings, 2 replies; 14+ messages in thread From: Cédric Le Goater @ 2023-08-29 9:05 UTC (permalink / raw) To: qemu-devel Cc: Akihiko Odaki, Sriram Yagnaraman, Jason Wang, Cédric Le Goater From: Cédric Le Goater <clg@redhat.com> The Intel 82576EB GbE Controller say that the Physical and Virtual Functions support Function Level Reset. Add the capability to each device model. Cc: Sriram Yagnaraman <sriram.yagnaraman@est.tech> Fixes: 3a977deebe6b ("Intrdocue igb device emulation") Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> Tested-by: Akihiko Odaki <akihiko.odaki@daynix.com> Signed-off-by: Cédric Le Goater <clg@redhat.com> --- hw/net/igb.c | 3 +++ hw/net/igbvf.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/hw/net/igb.c b/hw/net/igb.c index e70a66ee038e..b8c170ad9b1a 100644 --- a/hw/net/igb.c +++ b/hw/net/igb.c @@ -101,6 +101,7 @@ static void igb_write_config(PCIDevice *dev, uint32_t addr, trace_igb_write_config(addr, val, len); pci_default_write_config(dev, addr, val, len); + pcie_cap_flr_write_config(dev, addr, val, len); if (range_covers_byte(addr, len, PCI_COMMAND) && (dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) { @@ -433,6 +434,8 @@ static void igb_pci_realize(PCIDevice *pci_dev, Error **errp) } /* PCIe extended capabilities (in order) */ + pcie_cap_flr_init(pci_dev); + if (pcie_aer_init(pci_dev, 1, 0x100, 0x40, errp) < 0) { hw_error("Failed to initialize AER capability"); } diff --git a/hw/net/igbvf.c b/hw/net/igbvf.c index 07343fa14a89..55e321e4ec20 100644 --- a/hw/net/igbvf.c +++ b/hw/net/igbvf.c @@ -204,6 +204,7 @@ static void igbvf_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, { trace_igbvf_write_config(addr, val, len); pci_default_write_config(dev, addr, val, len); + pcie_cap_flr_write_config(dev, addr, val, len); } static uint64_t igbvf_mmio_read(void *opaque, hwaddr addr, unsigned size) @@ -266,6 +267,8 @@ static void igbvf_pci_realize(PCIDevice *dev, Error **errp) hw_error("Failed to initialize PCIe capability"); } + pcie_cap_flr_init(dev); + if (pcie_aer_init(dev, 1, 0x100, 0x40, errp) < 0) { hw_error("Failed to initialize AER capability"); } -- 2.41.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* RE: [PATCH 2/2] igb: Add Function Level Reset to PF and VF 2023-08-29 9:05 ` [PATCH 2/2] igb: Add Function Level Reset to PF and VF Cédric Le Goater @ 2023-08-30 10:12 ` Sriram Yagnaraman 2023-10-20 4:24 ` Jason Wang 1 sibling, 0 replies; 14+ messages in thread From: Sriram Yagnaraman @ 2023-08-30 10:12 UTC (permalink / raw) To: Cédric Le Goater, qemu-devel@nongnu.org Cc: Akihiko Odaki, Jason Wang, Cédric Le Goater > -----Original Message----- > From: Cédric Le Goater <clg@kaod.org> > Sent: Tuesday, 29 August 2023 11:05 > To: qemu-devel@nongnu.org > Cc: Akihiko Odaki <akihiko.odaki@daynix.com>; Sriram Yagnaraman > <sriram.yagnaraman@est.tech>; Jason Wang <jasowang@redhat.com>; Cédric > Le Goater <clg@redhat.com> > Subject: [PATCH 2/2] igb: Add Function Level Reset to PF and VF > > From: Cédric Le Goater <clg@redhat.com> > > The Intel 82576EB GbE Controller say that the Physical and Virtual Functions > support Function Level Reset. Add the capability to each device model. > > Cc: Sriram Yagnaraman <sriram.yagnaraman@est.tech> > Fixes: 3a977deebe6b ("Intrdocue igb device emulation") > Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> > Tested-by: Akihiko Odaki <akihiko.odaki@daynix.com> > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > hw/net/igb.c | 3 +++ > hw/net/igbvf.c | 3 +++ > 2 files changed, 6 insertions(+) > Reviewed-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech> ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] igb: Add Function Level Reset to PF and VF 2023-08-29 9:05 ` [PATCH 2/2] igb: Add Function Level Reset to PF and VF Cédric Le Goater 2023-08-30 10:12 ` Sriram Yagnaraman @ 2023-10-20 4:24 ` Jason Wang 2023-10-20 7:40 ` Cédric Le Goater 1 sibling, 1 reply; 14+ messages in thread From: Jason Wang @ 2023-10-20 4:24 UTC (permalink / raw) To: Cédric Le Goater Cc: qemu-devel, Akihiko Odaki, Sriram Yagnaraman, Cédric Le Goater On Tue, Aug 29, 2023 at 5:06 PM Cédric Le Goater <clg@kaod.org> wrote: > > From: Cédric Le Goater <clg@redhat.com> > > The Intel 82576EB GbE Controller say that the Physical and Virtual > Functions support Function Level Reset. Add the capability to each > device model. > Do we need to do migration compatibility for this? Thanks > Cc: Sriram Yagnaraman <sriram.yagnaraman@est.tech> > Fixes: 3a977deebe6b ("Intrdocue igb device emulation") > Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> > Tested-by: Akihiko Odaki <akihiko.odaki@daynix.com> > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > hw/net/igb.c | 3 +++ > hw/net/igbvf.c | 3 +++ > 2 files changed, 6 insertions(+) > > diff --git a/hw/net/igb.c b/hw/net/igb.c > index e70a66ee038e..b8c170ad9b1a 100644 > --- a/hw/net/igb.c > +++ b/hw/net/igb.c > @@ -101,6 +101,7 @@ static void igb_write_config(PCIDevice *dev, uint32_t addr, > > trace_igb_write_config(addr, val, len); > pci_default_write_config(dev, addr, val, len); > + pcie_cap_flr_write_config(dev, addr, val, len); > > if (range_covers_byte(addr, len, PCI_COMMAND) && > (dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) { > @@ -433,6 +434,8 @@ static void igb_pci_realize(PCIDevice *pci_dev, Error **errp) > } > > /* PCIe extended capabilities (in order) */ > + pcie_cap_flr_init(pci_dev); > + > if (pcie_aer_init(pci_dev, 1, 0x100, 0x40, errp) < 0) { > hw_error("Failed to initialize AER capability"); > } > diff --git a/hw/net/igbvf.c b/hw/net/igbvf.c > index 07343fa14a89..55e321e4ec20 100644 > --- a/hw/net/igbvf.c > +++ b/hw/net/igbvf.c > @@ -204,6 +204,7 @@ static void igbvf_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, > { > trace_igbvf_write_config(addr, val, len); > pci_default_write_config(dev, addr, val, len); > + pcie_cap_flr_write_config(dev, addr, val, len); > } > > static uint64_t igbvf_mmio_read(void *opaque, hwaddr addr, unsigned size) > @@ -266,6 +267,8 @@ static void igbvf_pci_realize(PCIDevice *dev, Error **errp) > hw_error("Failed to initialize PCIe capability"); > } > > + pcie_cap_flr_init(dev); > + > if (pcie_aer_init(dev, 1, 0x100, 0x40, errp) < 0) { > hw_error("Failed to initialize AER capability"); > } > -- > 2.41.0 > > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] igb: Add Function Level Reset to PF and VF 2023-10-20 4:24 ` Jason Wang @ 2023-10-20 7:40 ` Cédric Le Goater 2023-10-20 9:41 ` Cédric Le Goater 0 siblings, 1 reply; 14+ messages in thread From: Cédric Le Goater @ 2023-10-20 7:40 UTC (permalink / raw) To: Jason Wang, Cédric Le Goater Cc: qemu-devel, Akihiko Odaki, Sriram Yagnaraman On 10/20/23 06:24, Jason Wang wrote: > On Tue, Aug 29, 2023 at 5:06 PM Cédric Le Goater <clg@kaod.org> wrote: >> >> From: Cédric Le Goater <clg@redhat.com> >> >> The Intel 82576EB GbE Controller say that the Physical and Virtual >> Functions support Function Level Reset. Add the capability to each >> device model. >> > > Do we need to do migration compatibility for this? Yes. it does. the config space is now different. Thanks, C. > > Thanks > >> Cc: Sriram Yagnaraman <sriram.yagnaraman@est.tech> >> Fixes: 3a977deebe6b ("Intrdocue igb device emulation") >> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> >> Tested-by: Akihiko Odaki <akihiko.odaki@daynix.com> >> Signed-off-by: Cédric Le Goater <clg@redhat.com> >> --- >> hw/net/igb.c | 3 +++ >> hw/net/igbvf.c | 3 +++ >> 2 files changed, 6 insertions(+) >> >> diff --git a/hw/net/igb.c b/hw/net/igb.c >> index e70a66ee038e..b8c170ad9b1a 100644 >> --- a/hw/net/igb.c >> +++ b/hw/net/igb.c >> @@ -101,6 +101,7 @@ static void igb_write_config(PCIDevice *dev, uint32_t addr, >> >> trace_igb_write_config(addr, val, len); >> pci_default_write_config(dev, addr, val, len); >> + pcie_cap_flr_write_config(dev, addr, val, len); >> >> if (range_covers_byte(addr, len, PCI_COMMAND) && >> (dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) { >> @@ -433,6 +434,8 @@ static void igb_pci_realize(PCIDevice *pci_dev, Error **errp) >> } >> >> /* PCIe extended capabilities (in order) */ >> + pcie_cap_flr_init(pci_dev); >> + >> if (pcie_aer_init(pci_dev, 1, 0x100, 0x40, errp) < 0) { >> hw_error("Failed to initialize AER capability"); >> } >> diff --git a/hw/net/igbvf.c b/hw/net/igbvf.c >> index 07343fa14a89..55e321e4ec20 100644 >> --- a/hw/net/igbvf.c >> +++ b/hw/net/igbvf.c >> @@ -204,6 +204,7 @@ static void igbvf_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, >> { >> trace_igbvf_write_config(addr, val, len); >> pci_default_write_config(dev, addr, val, len); >> + pcie_cap_flr_write_config(dev, addr, val, len); >> } >> >> static uint64_t igbvf_mmio_read(void *opaque, hwaddr addr, unsigned size) >> @@ -266,6 +267,8 @@ static void igbvf_pci_realize(PCIDevice *dev, Error **errp) >> hw_error("Failed to initialize PCIe capability"); >> } >> >> + pcie_cap_flr_init(dev); >> + >> if (pcie_aer_init(dev, 1, 0x100, 0x40, errp) < 0) { >> hw_error("Failed to initialize AER capability"); >> } >> -- >> 2.41.0 >> >> > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] igb: Add Function Level Reset to PF and VF 2023-10-20 7:40 ` Cédric Le Goater @ 2023-10-20 9:41 ` Cédric Le Goater 2023-10-23 3:11 ` Jason Wang 0 siblings, 1 reply; 14+ messages in thread From: Cédric Le Goater @ 2023-10-20 9:41 UTC (permalink / raw) To: Jason Wang, Cédric Le Goater Cc: qemu-devel, Akihiko Odaki, Sriram Yagnaraman On 10/20/23 09:40, Cédric Le Goater wrote: > On 10/20/23 06:24, Jason Wang wrote: >> On Tue, Aug 29, 2023 at 5:06 PM Cédric Le Goater <clg@kaod.org> wrote: >>> >>> From: Cédric Le Goater <clg@redhat.com> >>> >>> The Intel 82576EB GbE Controller say that the Physical and Virtual >>> Functions support Function Level Reset. Add the capability to each >>> device model. >>> >> >> Do we need to do migration compatibility for this? > > Yes. it does. the config space is now different. Jason, To avoid an extra compat property, would it be ok to let the VF peek into the PF capabilities to set FLR or not ? Something like below. Thanks, C. @@ -238,6 +238,12 @@ static const MemoryRegionOps mmio_ops = }, }; +static bool igbvf_check_pf_flr(PCIDevice *dev) +{ + return !!(pci_get_long(dev->config + dev->exp.exp_cap + PCI_EXP_DEVCAP) + & PCI_EXP_DEVCAP_FLR); +} + static void igbvf_pci_realize(PCIDevice *dev, Error **errp) { IgbVfState *s = IGBVF(dev); @@ -267,7 +273,9 @@ static void igbvf_pci_realize(PCIDevice hw_error("Failed to initialize PCIe capability"); } - pcie_cap_flr_init(dev); + if (igbvf_check_pf_flr(pcie_sriov_get_pf(dev))) { + pcie_cap_flr_init(dev); + } if (pcie_aer_init(dev, 1, 0x100, 0x40, errp) < 0) { hw_error("Failed to initialize AER capability"); > > Thanks, > > C. > > >> >> Thanks >> >>> Cc: Sriram Yagnaraman <sriram.yagnaraman@est.tech> >>> Fixes: 3a977deebe6b ("Intrdocue igb device emulation") >>> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> >>> Tested-by: Akihiko Odaki <akihiko.odaki@daynix.com> >>> Signed-off-by: Cédric Le Goater <clg@redhat.com> >>> --- >>> hw/net/igb.c | 3 +++ >>> hw/net/igbvf.c | 3 +++ >>> 2 files changed, 6 insertions(+) >>> >>> diff --git a/hw/net/igb.c b/hw/net/igb.c >>> index e70a66ee038e..b8c170ad9b1a 100644 >>> --- a/hw/net/igb.c >>> +++ b/hw/net/igb.c >>> @@ -101,6 +101,7 @@ static void igb_write_config(PCIDevice *dev, uint32_t addr, >>> >>> trace_igb_write_config(addr, val, len); >>> pci_default_write_config(dev, addr, val, len); >>> + pcie_cap_flr_write_config(dev, addr, val, len); >>> >>> if (range_covers_byte(addr, len, PCI_COMMAND) && >>> (dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) { >>> @@ -433,6 +434,8 @@ static void igb_pci_realize(PCIDevice *pci_dev, Error **errp) >>> } >>> >>> /* PCIe extended capabilities (in order) */ >>> + pcie_cap_flr_init(pci_dev); >>> + >>> if (pcie_aer_init(pci_dev, 1, 0x100, 0x40, errp) < 0) { >>> hw_error("Failed to initialize AER capability"); >>> } >>> diff --git a/hw/net/igbvf.c b/hw/net/igbvf.c >>> index 07343fa14a89..55e321e4ec20 100644 >>> --- a/hw/net/igbvf.c >>> +++ b/hw/net/igbvf.c >>> @@ -204,6 +204,7 @@ static void igbvf_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, >>> { >>> trace_igbvf_write_config(addr, val, len); >>> pci_default_write_config(dev, addr, val, len); >>> + pcie_cap_flr_write_config(dev, addr, val, len); >>> } >>> >>> static uint64_t igbvf_mmio_read(void *opaque, hwaddr addr, unsigned size) >>> @@ -266,6 +267,8 @@ static void igbvf_pci_realize(PCIDevice *dev, Error **errp) >>> hw_error("Failed to initialize PCIe capability"); >>> } >>> >>> + pcie_cap_flr_init(dev); >>> + >>> if (pcie_aer_init(dev, 1, 0x100, 0x40, errp) < 0) { >>> hw_error("Failed to initialize AER capability"); >>> } >>> -- >>> 2.41.0 >>> >>> >> > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] igb: Add Function Level Reset to PF and VF 2023-10-20 9:41 ` Cédric Le Goater @ 2023-10-23 3:11 ` Jason Wang 2023-10-23 10:57 ` Akihiko Odaki 0 siblings, 1 reply; 14+ messages in thread From: Jason Wang @ 2023-10-23 3:11 UTC (permalink / raw) To: Cédric Le Goater Cc: Cédric Le Goater, qemu-devel, Akihiko Odaki, Sriram Yagnaraman On Fri, Oct 20, 2023 at 5:41 PM Cédric Le Goater <clg@redhat.com> wrote: > > On 10/20/23 09:40, Cédric Le Goater wrote: > > On 10/20/23 06:24, Jason Wang wrote: > >> On Tue, Aug 29, 2023 at 5:06 PM Cédric Le Goater <clg@kaod.org> wrote: > >>> > >>> From: Cédric Le Goater <clg@redhat.com> > >>> > >>> The Intel 82576EB GbE Controller say that the Physical and Virtual > >>> Functions support Function Level Reset. Add the capability to each > >>> device model. > >>> > >> > >> Do we need to do migration compatibility for this? > > > > Yes. it does. the config space is now different. > > Jason, > > To avoid an extra compat property, would it be ok to let the VF peek into > the PF capabilities to set FLR or not ? Something like below. I might be wrong, but it looks to me it's still a behaviour change? Thanks > > Thanks, > > C. > > > @@ -238,6 +238,12 @@ static const MemoryRegionOps mmio_ops = > }, > }; > > +static bool igbvf_check_pf_flr(PCIDevice *dev) > +{ > + return !!(pci_get_long(dev->config + dev->exp.exp_cap + PCI_EXP_DEVCAP) > + & PCI_EXP_DEVCAP_FLR); > +} > + > static void igbvf_pci_realize(PCIDevice *dev, Error **errp) > { > IgbVfState *s = IGBVF(dev); > @@ -267,7 +273,9 @@ static void igbvf_pci_realize(PCIDevice > hw_error("Failed to initialize PCIe capability"); > } > > - pcie_cap_flr_init(dev); > + if (igbvf_check_pf_flr(pcie_sriov_get_pf(dev))) { > + pcie_cap_flr_init(dev); > + } > > if (pcie_aer_init(dev, 1, 0x100, 0x40, errp) < 0) { > hw_error("Failed to initialize AER capability"); > > > > > > Thanks, > > > > C. > > > > > >> > >> Thanks > >> > >>> Cc: Sriram Yagnaraman <sriram.yagnaraman@est.tech> > >>> Fixes: 3a977deebe6b ("Intrdocue igb device emulation") > >>> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> > >>> Tested-by: Akihiko Odaki <akihiko.odaki@daynix.com> > >>> Signed-off-by: Cédric Le Goater <clg@redhat.com> > >>> --- > >>> hw/net/igb.c | 3 +++ > >>> hw/net/igbvf.c | 3 +++ > >>> 2 files changed, 6 insertions(+) > >>> > >>> diff --git a/hw/net/igb.c b/hw/net/igb.c > >>> index e70a66ee038e..b8c170ad9b1a 100644 > >>> --- a/hw/net/igb.c > >>> +++ b/hw/net/igb.c > >>> @@ -101,6 +101,7 @@ static void igb_write_config(PCIDevice *dev, uint32_t addr, > >>> > >>> trace_igb_write_config(addr, val, len); > >>> pci_default_write_config(dev, addr, val, len); > >>> + pcie_cap_flr_write_config(dev, addr, val, len); > >>> > >>> if (range_covers_byte(addr, len, PCI_COMMAND) && > >>> (dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) { > >>> @@ -433,6 +434,8 @@ static void igb_pci_realize(PCIDevice *pci_dev, Error **errp) > >>> } > >>> > >>> /* PCIe extended capabilities (in order) */ > >>> + pcie_cap_flr_init(pci_dev); > >>> + > >>> if (pcie_aer_init(pci_dev, 1, 0x100, 0x40, errp) < 0) { > >>> hw_error("Failed to initialize AER capability"); > >>> } > >>> diff --git a/hw/net/igbvf.c b/hw/net/igbvf.c > >>> index 07343fa14a89..55e321e4ec20 100644 > >>> --- a/hw/net/igbvf.c > >>> +++ b/hw/net/igbvf.c > >>> @@ -204,6 +204,7 @@ static void igbvf_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, > >>> { > >>> trace_igbvf_write_config(addr, val, len); > >>> pci_default_write_config(dev, addr, val, len); > >>> + pcie_cap_flr_write_config(dev, addr, val, len); > >>> } > >>> > >>> static uint64_t igbvf_mmio_read(void *opaque, hwaddr addr, unsigned size) > >>> @@ -266,6 +267,8 @@ static void igbvf_pci_realize(PCIDevice *dev, Error **errp) > >>> hw_error("Failed to initialize PCIe capability"); > >>> } > >>> > >>> + pcie_cap_flr_init(dev); > >>> + > >>> if (pcie_aer_init(dev, 1, 0x100, 0x40, errp) < 0) { > >>> hw_error("Failed to initialize AER capability"); > >>> } > >>> -- > >>> 2.41.0 > >>> > >>> > >> > > > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] igb: Add Function Level Reset to PF and VF 2023-10-23 3:11 ` Jason Wang @ 2023-10-23 10:57 ` Akihiko Odaki 2023-10-23 11:28 ` Cédric Le Goater 0 siblings, 1 reply; 14+ messages in thread From: Akihiko Odaki @ 2023-10-23 10:57 UTC (permalink / raw) To: Jason Wang, Cédric Le Goater Cc: Cédric Le Goater, qemu-devel, Sriram Yagnaraman On 2023/10/23 12:11, Jason Wang wrote: > On Fri, Oct 20, 2023 at 5:41 PM Cédric Le Goater <clg@redhat.com> wrote: >> >> On 10/20/23 09:40, Cédric Le Goater wrote: >>> On 10/20/23 06:24, Jason Wang wrote: >>>> On Tue, Aug 29, 2023 at 5:06 PM Cédric Le Goater <clg@kaod.org> wrote: >>>>> >>>>> From: Cédric Le Goater <clg@redhat.com> >>>>> >>>>> The Intel 82576EB GbE Controller say that the Physical and Virtual >>>>> Functions support Function Level Reset. Add the capability to each >>>>> device model. >>>>> >>>> >>>> Do we need to do migration compatibility for this? >>> >>> Yes. it does. the config space is now different. >> >> Jason, >> >> To avoid an extra compat property, would it be ok to let the VF peek into >> the PF capabilities to set FLR or not ? Something like below. > > I might be wrong, but it looks to me it's still a behaviour change? I think it's fine as long as the FLR capability of the PF is initialized with a compat property; there is no need of another property for the VFs. Regards, Akihiko Odaki ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] igb: Add Function Level Reset to PF and VF 2023-10-23 10:57 ` Akihiko Odaki @ 2023-10-23 11:28 ` Cédric Le Goater 0 siblings, 0 replies; 14+ messages in thread From: Cédric Le Goater @ 2023-10-23 11:28 UTC (permalink / raw) To: Akihiko Odaki, Jason Wang Cc: Cédric Le Goater, qemu-devel, Sriram Yagnaraman On 10/23/23 12:57, Akihiko Odaki wrote: > On 2023/10/23 12:11, Jason Wang wrote: >> On Fri, Oct 20, 2023 at 5:41 PM Cédric Le Goater <clg@redhat.com> wrote: >>> >>> On 10/20/23 09:40, Cédric Le Goater wrote: >>>> On 10/20/23 06:24, Jason Wang wrote: >>>>> On Tue, Aug 29, 2023 at 5:06 PM Cédric Le Goater <clg@kaod.org> wrote: >>>>>> >>>>>> From: Cédric Le Goater <clg@redhat.com> >>>>>> >>>>>> The Intel 82576EB GbE Controller say that the Physical and Virtual >>>>>> Functions support Function Level Reset. Add the capability to each >>>>>> device model. >>>>>> >>>>> >>>>> Do we need to do migration compatibility for this? >>>> >>>> Yes. it does. the config space is now different. >>> >>> Jason, >>> >>> To avoid an extra compat property, would it be ok to let the VF peek into >>> the PF capabilities to set FLR or not ? Something like below. >> >> I might be wrong, but it looks to me it's still a behaviour change? > > I think it's fine as long as the FLR capability of the PF is initialized with a compat property; there is no need of another property for the VFs. Yes. I wasn't clear enough in the statement above. I am trying to avoid *2* compat properties, one in each model. We could also check the PF property in the VF. I think this better. I will send a v2. Thanks, C. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/2] igb: Add FLR support 2023-08-29 9:05 [PATCH 0/2] igb: Add FLR support Cédric Le Goater 2023-08-29 9:05 ` [PATCH 1/2] igb: Add a VF reset handler Cédric Le Goater 2023-08-29 9:05 ` [PATCH 2/2] igb: Add Function Level Reset to PF and VF Cédric Le Goater @ 2023-10-18 12:55 ` Cédric Le Goater 2 siblings, 0 replies; 14+ messages in thread From: Cédric Le Goater @ 2023-10-18 12:55 UTC (permalink / raw) To: qemu-devel; +Cc: Akihiko Odaki, Sriram Yagnaraman, Jason Wang Hello Jason, On 8/29/23 11:05, Cédric Le Goater wrote: > From: Cédric Le Goater <clg@redhat.com> > > Hello, > > Here is a little series adding FLR to the new IGB models. Gentle ping to remind you to grab this small series for the next network PR. It has been reviewed. Or I can if you are done for 8.2. Thanks, C. > Thanks, > > C. > > Cédric Le Goater (2): > igb: Add a VF reset handler > igb: Add Function Level Reset to PF and VF > > hw/net/igb_common.h | 1 + > hw/net/igb_core.h | 3 +++ > hw/net/igb.c | 9 +++++++++ > hw/net/igb_core.c | 6 ++++-- > hw/net/igbvf.c | 13 +++++++++++++ > hw/net/trace-events | 1 + > 6 files changed, 31 insertions(+), 2 deletions(-) > ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2023-10-23 11:29 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-08-29 9:05 [PATCH 0/2] igb: Add FLR support Cédric Le Goater 2023-08-29 9:05 ` [PATCH 1/2] igb: Add a VF reset handler Cédric Le Goater 2023-08-29 11:13 ` Philippe Mathieu-Daudé 2023-08-30 0:36 ` Akihiko Odaki 2023-08-30 10:11 ` Sriram Yagnaraman 2023-08-29 9:05 ` [PATCH 2/2] igb: Add Function Level Reset to PF and VF Cédric Le Goater 2023-08-30 10:12 ` Sriram Yagnaraman 2023-10-20 4:24 ` Jason Wang 2023-10-20 7:40 ` Cédric Le Goater 2023-10-20 9:41 ` Cédric Le Goater 2023-10-23 3:11 ` Jason Wang 2023-10-23 10:57 ` Akihiko Odaki 2023-10-23 11:28 ` Cédric Le Goater 2023-10-18 12:55 ` [PATCH 0/2] igb: Add FLR support Cédric Le Goater
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).