From: David Gibson <david@gibson.dropbear.id.au> To: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>, Alex Williamson <alex.williamson@redhat.com>, Greg Kurz <groug@kaod.org> Cc: David Gibson <david@gibson.dropbear.id.au>, clg@kaod.org, qemu-ppc@nongnu.org Subject: [Qemu-devel] [PATCH v2 3/3] pcie: Simplify pci_adjust_config_limit() Date: Wed, 24 Apr 2019 14:19:59 +1000 [thread overview] Message-ID: <20190424041959.4087-4-david@gibson.dropbear.id.au> (raw) In-Reply-To: <20190424041959.4087-1-david@gibson.dropbear.id.au> Since c2077e2c "pci: Adjust PCI config limit based on bus topology", pci_adjust_config_limit() has been used in the config space read and write paths to only permit access to extended config space on buses which permit it. Specifically it prevents access on devices below a vanilla-PCI bus via some combination of bridges, even if both the host bridge and the device itself are PCI-E. It accomplishes this with a somewhat complex call up the chain of bridges to see if any of them prohibit extended config space access. This is overly complex, since we can always know if the bus will support such access at the point it is constructed. This patch simplifies the test by using a flag in the PCIBus instance indicating whether extended configuration space is accessible. It is false for vanilla PCI buses. For PCI-E buses, it is true for root buses and equal to the parent bus's's capability otherwise. For the special case of sPAPR's paravirtualized PCI root bus, which acts mostly like vanilla PCI, but does allow extended config space access, we override the default value of the flag from the host bridge code. This should cause no behavioural change. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>cd --- hw/pci/pci.c | 41 ++++++++++++++++++++++------------------ hw/pci/pci_host.c | 13 +++---------- hw/ppc/spapr_pci.c | 34 ++++++++++----------------------- include/hw/pci/pci.h | 1 - include/hw/pci/pci_bus.h | 9 ++++++++- 5 files changed, 44 insertions(+), 54 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index ea5941fb22..59ee034331 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -120,6 +120,27 @@ static void pci_bus_realize(BusState *qbus, Error **errp) vmstate_register(NULL, -1, &vmstate_pcibus, bus); } +static void pcie_bus_realize(BusState *qbus, Error **errp) +{ + PCIBus *bus = PCI_BUS(qbus); + + pci_bus_realize(qbus, errp); + + /* + * A PCI-E bus can support extended config space if it's the root + * bus, or if the bus/bridge above it does as well + */ + if (pci_bus_is_root(bus)) { + bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; + } else { + PCIBus *parent_bus = pci_get_bus(bus->parent_dev); + + if (pci_bus_allows_extended_config_space(parent_bus)) { + bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; + } + } +} + static void pci_bus_unrealize(BusState *qbus, Error **errp) { PCIBus *bus = PCI_BUS(qbus); @@ -142,11 +163,6 @@ static uint16_t pcibus_numa_node(PCIBus *bus) return NUMA_NODE_UNASSIGNED; } -static bool pcibus_allows_extended_config_space(PCIBus *bus) -{ - return false; -} - static void pci_bus_class_init(ObjectClass *klass, void *data) { BusClass *k = BUS_CLASS(klass); @@ -161,7 +177,6 @@ static void pci_bus_class_init(ObjectClass *klass, void *data) pbc->bus_num = pcibus_num; pbc->numa_node = pcibus_numa_node; - pbc->allows_extended_config_space = pcibus_allows_extended_config_space; } static const TypeInfo pci_bus_info = { @@ -182,16 +197,11 @@ static const TypeInfo conventional_pci_interface_info = { .parent = TYPE_INTERFACE, }; -static bool pciebus_allows_extended_config_space(PCIBus *bus) -{ - return true; -} - static void pcie_bus_class_init(ObjectClass *klass, void *data) { - PCIBusClass *pbc = PCI_BUS_CLASS(klass); + BusClass *k = BUS_CLASS(klass); - pbc->allows_extended_config_space = pciebus_allows_extended_config_space; + k->realize = pcie_bus_realize; } static const TypeInfo pcie_bus_info = { @@ -410,11 +420,6 @@ bool pci_bus_is_express(PCIBus *bus) return object_dynamic_cast(OBJECT(bus), TYPE_PCIE_BUS); } -bool pci_bus_allows_extended_config_space(PCIBus *bus) -{ - return PCI_BUS_GET_CLASS(bus)->allows_extended_config_space(bus); -} - void pci_root_bus_new_inplace(PCIBus *bus, size_t bus_size, DeviceState *parent, const char *name, MemoryRegion *address_space_mem, diff --git a/hw/pci/pci_host.c b/hw/pci/pci_host.c index 9d64b2e12f..5f3497256c 100644 --- a/hw/pci/pci_host.c +++ b/hw/pci/pci_host.c @@ -53,16 +53,9 @@ static inline PCIDevice *pci_dev_find_by_addr(PCIBus *bus, uint32_t addr) static void pci_adjust_config_limit(PCIBus *bus, uint32_t *limit) { - if (*limit > PCI_CONFIG_SPACE_SIZE) { - if (!pci_bus_allows_extended_config_space(bus)) { - *limit = PCI_CONFIG_SPACE_SIZE; - return; - } - - if (!pci_bus_is_root(bus)) { - PCIDevice *bridge = pci_bridge_get_device(bus); - pci_adjust_config_limit(pci_get_bus(bridge), limit); - } + if ((*limit > PCI_CONFIG_SPACE_SIZE) && + !pci_bus_allows_extended_config_space(bus)) { + *limit = PCI_CONFIG_SPACE_SIZE; } } diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index f62e6833b8..65a86be29c 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1638,28 +1638,6 @@ static void spapr_phb_unrealize(DeviceState *dev, Error **errp) memory_region_del_subregion(get_system_memory(), &sphb->mem32window); } -static bool spapr_phb_allows_extended_config_space(PCIBus *bus) -{ - SpaprPhbState *sphb = SPAPR_PCI_HOST_BRIDGE(BUS(bus)->parent); - - return sphb->pcie_ecs; -} - -static void spapr_phb_root_bus_class_init(ObjectClass *klass, void *data) -{ - PCIBusClass *pbc = PCI_BUS_CLASS(klass); - - pbc->allows_extended_config_space = spapr_phb_allows_extended_config_space; -} - -#define TYPE_SPAPR_PHB_ROOT_BUS "pci" - -static const TypeInfo spapr_phb_root_bus_info = { - .name = TYPE_SPAPR_PHB_ROOT_BUS, - .parent = TYPE_PCI_BUS, - .class_init = spapr_phb_root_bus_class_init, -}; - static void spapr_phb_realize(DeviceState *dev, Error **errp) { /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user @@ -1765,7 +1743,16 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp) pci_spapr_set_irq, pci_spapr_map_irq, sphb, &sphb->memspace, &sphb->iospace, PCI_DEVFN(0, 0), PCI_NUM_PINS, - TYPE_SPAPR_PHB_ROOT_BUS); + TYPE_PCI_BUS); + + /* + * Despite resembling a vanilla PCI bus in most ways, the PAPR + * para-virtualized PCI bus *does* permit PCI-E extended config + * space access + */ + if (sphb->pcie_ecs) { + bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; + } phb->bus = bus; qbus_set_hotplug_handler(BUS(phb->bus), OBJECT(sphb), NULL); @@ -2348,7 +2335,6 @@ void spapr_pci_rtas_init(void) static void spapr_pci_register_types(void) { type_register_static(&spapr_phb_info); - type_register_static(&spapr_phb_root_bus_info); } type_init(spapr_pci_register_types) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 33ccce320c..0edfaabbb0 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -395,7 +395,6 @@ typedef PCIINTxRoute (*pci_route_irq_fn)(void *opaque, int pin); #define TYPE_PCIE_BUS "PCIE" bool pci_bus_is_express(PCIBus *bus); -bool pci_bus_allows_extended_config_space(PCIBus *bus); void pci_root_bus_new_inplace(PCIBus *bus, size_t bus_size, DeviceState *parent, const char *name, diff --git a/include/hw/pci/pci_bus.h b/include/hw/pci/pci_bus.h index aea98d5040..2d5f74b7c1 100644 --- a/include/hw/pci/pci_bus.h +++ b/include/hw/pci/pci_bus.h @@ -17,12 +17,13 @@ typedef struct PCIBusClass { int (*bus_num)(PCIBus *bus); uint16_t (*numa_node)(PCIBus *bus); - bool (*allows_extended_config_space)(PCIBus *bus); } PCIBusClass; enum PCIBusFlags { /* This bus is the root of a PCI domain */ PCI_BUS_IS_ROOT = 0x0001, + /* PCIe extended configuration space is accessible on this bus */ + PCI_BUS_EXTENDED_CONFIG_SPACE = 0x0002, }; struct PCIBus { @@ -57,4 +58,10 @@ static inline bool pci_bus_is_root(PCIBus *bus) return !!(bus->flags & PCI_BUS_IS_ROOT); } +static inline bool pci_bus_allows_extended_config_space(PCIBus *bus) +{ + return !!(bus->flags & PCI_BUS_EXTENDED_CONFIG_SPACE); +} + + #endif /* QEMU_PCI_BUS_H */ -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: David Gibson <david@gibson.dropbear.id.au> To: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>, Alex Williamson <alex.williamson@redhat.com>, Greg Kurz <groug@kaod.org> Cc: qemu-ppc@nongnu.org, clg@kaod.org, David Gibson <david@gibson.dropbear.id.au> Subject: [Qemu-devel] [PATCH v2 3/3] pcie: Simplify pci_adjust_config_limit() Date: Wed, 24 Apr 2019 14:19:59 +1000 [thread overview] Message-ID: <20190424041959.4087-4-david@gibson.dropbear.id.au> (raw) Message-ID: <20190424041959.1E9uTIFVgmWBHIukyee0UuoamVm9ticEsSSTp9zIVLs@z> (raw) In-Reply-To: <20190424041959.4087-1-david@gibson.dropbear.id.au> Since c2077e2c "pci: Adjust PCI config limit based on bus topology", pci_adjust_config_limit() has been used in the config space read and write paths to only permit access to extended config space on buses which permit it. Specifically it prevents access on devices below a vanilla-PCI bus via some combination of bridges, even if both the host bridge and the device itself are PCI-E. It accomplishes this with a somewhat complex call up the chain of bridges to see if any of them prohibit extended config space access. This is overly complex, since we can always know if the bus will support such access at the point it is constructed. This patch simplifies the test by using a flag in the PCIBus instance indicating whether extended configuration space is accessible. It is false for vanilla PCI buses. For PCI-E buses, it is true for root buses and equal to the parent bus's's capability otherwise. For the special case of sPAPR's paravirtualized PCI root bus, which acts mostly like vanilla PCI, but does allow extended config space access, we override the default value of the flag from the host bridge code. This should cause no behavioural change. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>cd --- hw/pci/pci.c | 41 ++++++++++++++++++++++------------------ hw/pci/pci_host.c | 13 +++---------- hw/ppc/spapr_pci.c | 34 ++++++++++----------------------- include/hw/pci/pci.h | 1 - include/hw/pci/pci_bus.h | 9 ++++++++- 5 files changed, 44 insertions(+), 54 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index ea5941fb22..59ee034331 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -120,6 +120,27 @@ static void pci_bus_realize(BusState *qbus, Error **errp) vmstate_register(NULL, -1, &vmstate_pcibus, bus); } +static void pcie_bus_realize(BusState *qbus, Error **errp) +{ + PCIBus *bus = PCI_BUS(qbus); + + pci_bus_realize(qbus, errp); + + /* + * A PCI-E bus can support extended config space if it's the root + * bus, or if the bus/bridge above it does as well + */ + if (pci_bus_is_root(bus)) { + bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; + } else { + PCIBus *parent_bus = pci_get_bus(bus->parent_dev); + + if (pci_bus_allows_extended_config_space(parent_bus)) { + bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; + } + } +} + static void pci_bus_unrealize(BusState *qbus, Error **errp) { PCIBus *bus = PCI_BUS(qbus); @@ -142,11 +163,6 @@ static uint16_t pcibus_numa_node(PCIBus *bus) return NUMA_NODE_UNASSIGNED; } -static bool pcibus_allows_extended_config_space(PCIBus *bus) -{ - return false; -} - static void pci_bus_class_init(ObjectClass *klass, void *data) { BusClass *k = BUS_CLASS(klass); @@ -161,7 +177,6 @@ static void pci_bus_class_init(ObjectClass *klass, void *data) pbc->bus_num = pcibus_num; pbc->numa_node = pcibus_numa_node; - pbc->allows_extended_config_space = pcibus_allows_extended_config_space; } static const TypeInfo pci_bus_info = { @@ -182,16 +197,11 @@ static const TypeInfo conventional_pci_interface_info = { .parent = TYPE_INTERFACE, }; -static bool pciebus_allows_extended_config_space(PCIBus *bus) -{ - return true; -} - static void pcie_bus_class_init(ObjectClass *klass, void *data) { - PCIBusClass *pbc = PCI_BUS_CLASS(klass); + BusClass *k = BUS_CLASS(klass); - pbc->allows_extended_config_space = pciebus_allows_extended_config_space; + k->realize = pcie_bus_realize; } static const TypeInfo pcie_bus_info = { @@ -410,11 +420,6 @@ bool pci_bus_is_express(PCIBus *bus) return object_dynamic_cast(OBJECT(bus), TYPE_PCIE_BUS); } -bool pci_bus_allows_extended_config_space(PCIBus *bus) -{ - return PCI_BUS_GET_CLASS(bus)->allows_extended_config_space(bus); -} - void pci_root_bus_new_inplace(PCIBus *bus, size_t bus_size, DeviceState *parent, const char *name, MemoryRegion *address_space_mem, diff --git a/hw/pci/pci_host.c b/hw/pci/pci_host.c index 9d64b2e12f..5f3497256c 100644 --- a/hw/pci/pci_host.c +++ b/hw/pci/pci_host.c @@ -53,16 +53,9 @@ static inline PCIDevice *pci_dev_find_by_addr(PCIBus *bus, uint32_t addr) static void pci_adjust_config_limit(PCIBus *bus, uint32_t *limit) { - if (*limit > PCI_CONFIG_SPACE_SIZE) { - if (!pci_bus_allows_extended_config_space(bus)) { - *limit = PCI_CONFIG_SPACE_SIZE; - return; - } - - if (!pci_bus_is_root(bus)) { - PCIDevice *bridge = pci_bridge_get_device(bus); - pci_adjust_config_limit(pci_get_bus(bridge), limit); - } + if ((*limit > PCI_CONFIG_SPACE_SIZE) && + !pci_bus_allows_extended_config_space(bus)) { + *limit = PCI_CONFIG_SPACE_SIZE; } } diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index f62e6833b8..65a86be29c 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1638,28 +1638,6 @@ static void spapr_phb_unrealize(DeviceState *dev, Error **errp) memory_region_del_subregion(get_system_memory(), &sphb->mem32window); } -static bool spapr_phb_allows_extended_config_space(PCIBus *bus) -{ - SpaprPhbState *sphb = SPAPR_PCI_HOST_BRIDGE(BUS(bus)->parent); - - return sphb->pcie_ecs; -} - -static void spapr_phb_root_bus_class_init(ObjectClass *klass, void *data) -{ - PCIBusClass *pbc = PCI_BUS_CLASS(klass); - - pbc->allows_extended_config_space = spapr_phb_allows_extended_config_space; -} - -#define TYPE_SPAPR_PHB_ROOT_BUS "pci" - -static const TypeInfo spapr_phb_root_bus_info = { - .name = TYPE_SPAPR_PHB_ROOT_BUS, - .parent = TYPE_PCI_BUS, - .class_init = spapr_phb_root_bus_class_init, -}; - static void spapr_phb_realize(DeviceState *dev, Error **errp) { /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user @@ -1765,7 +1743,16 @@ static void spapr_phb_realize(DeviceState *dev, Error **errp) pci_spapr_set_irq, pci_spapr_map_irq, sphb, &sphb->memspace, &sphb->iospace, PCI_DEVFN(0, 0), PCI_NUM_PINS, - TYPE_SPAPR_PHB_ROOT_BUS); + TYPE_PCI_BUS); + + /* + * Despite resembling a vanilla PCI bus in most ways, the PAPR + * para-virtualized PCI bus *does* permit PCI-E extended config + * space access + */ + if (sphb->pcie_ecs) { + bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; + } phb->bus = bus; qbus_set_hotplug_handler(BUS(phb->bus), OBJECT(sphb), NULL); @@ -2348,7 +2335,6 @@ void spapr_pci_rtas_init(void) static void spapr_pci_register_types(void) { type_register_static(&spapr_phb_info); - type_register_static(&spapr_phb_root_bus_info); } type_init(spapr_pci_register_types) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 33ccce320c..0edfaabbb0 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -395,7 +395,6 @@ typedef PCIINTxRoute (*pci_route_irq_fn)(void *opaque, int pin); #define TYPE_PCIE_BUS "PCIE" bool pci_bus_is_express(PCIBus *bus); -bool pci_bus_allows_extended_config_space(PCIBus *bus); void pci_root_bus_new_inplace(PCIBus *bus, size_t bus_size, DeviceState *parent, const char *name, diff --git a/include/hw/pci/pci_bus.h b/include/hw/pci/pci_bus.h index aea98d5040..2d5f74b7c1 100644 --- a/include/hw/pci/pci_bus.h +++ b/include/hw/pci/pci_bus.h @@ -17,12 +17,13 @@ typedef struct PCIBusClass { int (*bus_num)(PCIBus *bus); uint16_t (*numa_node)(PCIBus *bus); - bool (*allows_extended_config_space)(PCIBus *bus); } PCIBusClass; enum PCIBusFlags { /* This bus is the root of a PCI domain */ PCI_BUS_IS_ROOT = 0x0001, + /* PCIe extended configuration space is accessible on this bus */ + PCI_BUS_EXTENDED_CONFIG_SPACE = 0x0002, }; struct PCIBus { @@ -57,4 +58,10 @@ static inline bool pci_bus_is_root(PCIBus *bus) return !!(bus->flags & PCI_BUS_IS_ROOT); } +static inline bool pci_bus_allows_extended_config_space(PCIBus *bus) +{ + return !!(bus->flags & PCI_BUS_EXTENDED_CONFIG_SPACE); +} + + #endif /* QEMU_PCI_BUS_H */ -- 2.20.1
next prev parent reply other threads:[~2019-04-24 4:20 UTC|newest] Thread overview: 289+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-24 4:19 [Qemu-devel] [PATCH v2 0/3] Simplify some not-really-necessary PCI bus callbacks David Gibson 2019-04-24 4:19 ` David Gibson 2019-04-24 4:19 ` [Qemu-devel] [PATCH v2 1/3] pcie: Remove redundant test in pcie_mmcfg_data_{read, write}() David Gibson 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 20/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 21/37] " Michael S. Tsirkin 2019-04-24 4:19 ` [Qemu-devel] [PATCH v2 1/3] " David Gibson 2019-04-24 16:04 ` Greg Kurz 2019-04-24 16:04 ` Greg Kurz 2019-04-24 4:19 ` [Qemu-devel] [PATCH v2 2/3] pci: Simplify pci_bus_is_root() David Gibson 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 21/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 22/37] " Michael S. Tsirkin 2019-04-24 4:19 ` [Qemu-devel] [PATCH v2 2/3] " David Gibson 2019-05-22 6:11 ` [Qemu-devel] [PULL v2 21/36] " David Gibson 2019-04-24 4:19 ` David Gibson [this message] 2019-04-24 4:19 ` [Qemu-devel] [PATCH v2 3/3] pcie: Simplify pci_adjust_config_limit() David Gibson 2019-04-24 16:09 ` Greg Kurz 2019-04-24 16:09 ` Greg Kurz 2019-04-26 6:40 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy 2019-05-07 4:48 ` David Gibson 2019-05-12 18:13 ` Michael S. Tsirkin 2019-05-13 6:20 ` David Gibson -- strict thread matches above, loose matches on Subject: below -- 2019-05-20 23:10 [Qemu-devel] [PULL v2 00/36] pci, pc, virtio: features, fixes Michael S. Tsirkin 2019-05-21 11:49 ` Peter Maydell 2019-05-21 13:26 ` Michael S. Tsirkin 2019-05-22 13:06 ` Igor Mammedov 2019-05-22 14:22 ` Laszlo Ersek 2019-05-22 21:15 ` Peter Maydell 2019-05-23 11:30 ` Laszlo Ersek 2019-05-23 0:51 ` Laszlo Ersek 2019-05-23 0:57 ` Laszlo Ersek 2019-05-23 8:37 ` Peter Maydell 2019-05-24 10:56 ` Laszlo Ersek 2019-05-21 13:35 ` Michael S. Tsirkin 2019-05-21 13:42 ` Michael S. Tsirkin 2019-05-21 14:56 ` Peter Maydell 2019-05-16 12:17 [Qemu-devel] [PULL 00/37] " Michael S. Tsirkin 2019-05-16 12:17 ` [Qemu-devel] [PULL 03/37] docs: reST-ify vhost-user documentation Michael S. Tsirkin 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 03/36] " Michael S. Tsirkin 2019-05-16 12:18 ` [Qemu-devel] [PULL 04/37] virtio: Introduce started flag to VirtioDevice Michael S. Tsirkin 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 04/36] " Michael S. Tsirkin 2019-05-24 10:19 ` Greg Kurz 2019-05-24 11:56 ` Yongji Xie 2019-05-27 10:44 ` Greg Kurz 2019-05-27 13:04 ` Yongji Xie 2019-05-27 15:45 ` Greg Kurz 2019-05-27 18:53 ` Michael S. Tsirkin 2019-05-28 2:48 ` Yongji Xie 2019-05-31 19:36 ` Eduardo Habkost 2019-06-01 15:49 ` Greg Kurz 2019-06-24 17:54 ` Laurent Vivier 2019-07-05 13:45 ` Greg Kurz 2019-05-28 0:08 ` David Gibson 2019-05-28 6:39 ` Greg Kurz 2019-05-29 11:18 ` Dr. David Alan Gilbert 2019-05-29 11:54 ` Greg Kurz 2019-05-29 12:38 ` Dr. David Alan Gilbert 2019-05-29 13:02 ` Greg Kurz 2019-05-29 13:40 ` Dr. David Alan Gilbert 2019-05-29 14:35 ` Yongji Xie 2019-05-29 14:42 ` Dr. David Alan Gilbert 2019-05-30 0:39 ` Yongji Xie 2019-05-30 9:06 ` Dr. David Alan Gilbert 2019-05-30 9:26 ` Yongji Xie 2019-05-30 9:34 ` Dr. David Alan Gilbert 2019-05-29 13:57 ` Yongji Xie 2019-05-16 12:18 ` [Qemu-devel] [PULL 05/37] virtio: Use started flag in virtio_vmstate_change() Michael S. Tsirkin 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 05/36] " Michael S. Tsirkin 2019-05-16 12:18 ` [Qemu-devel] [PULL 06/37] vhost-user-blk: Use started flag in vhost_user_blk_set_status() Michael S. Tsirkin 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 06/36] " Michael S. Tsirkin 2019-05-16 12:18 ` [Qemu-devel] [PULL 07/37] vhost-user-blk: Only start vhost-user backend with the first kick Michael S. Tsirkin 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 07/36] " Michael S. Tsirkin 2019-05-16 12:18 ` [Qemu-devel] [PULL 08/37] vhost-user-blk: Add return value for vhost_user_blk_start() Michael S. Tsirkin 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 08/36] " Michael S. Tsirkin 2019-05-16 12:18 ` [Qemu-devel] [PULL 09/37] vhost-user-blk: Add support to reconnect backend Michael S. Tsirkin 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 09/36] " Michael S. Tsirkin 2019-05-16 12:18 ` [Qemu-devel] [PULL 10/37] contrib/vhost-user-blk: enable inflight I/O tracking Michael S. Tsirkin 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 10/36] " Michael S. Tsirkin 2019-05-16 16:04 ` [Qemu-devel] [PULL 00/37] pci, pc, virtio: features, fixes Peter Maydell 2019-05-16 18:33 ` Philippe Mathieu-Daudé 2019-05-16 18:53 ` Philippe Mathieu-Daudé 2019-05-17 1:48 ` Wei Yang 2019-05-17 8:12 ` Philippe Mathieu-Daudé 2019-05-17 8:18 ` Thomas Huth 2019-05-17 8:37 ` Philippe Mathieu-Daudé 2019-05-17 2:59 ` Wei Yang 2019-05-17 3:12 ` Wei Yang 2019-05-17 8:14 ` Philippe Mathieu-Daudé 2019-05-17 8:19 ` Wei Yang 2019-05-17 11:13 ` Igor Mammedov 2019-05-20 0:33 ` Wei Yang 2019-05-20 22:59 ` Michael S. Tsirkin 2019-05-20 22:57 ` Michael S. Tsirkin 2019-05-02 14:51 [Qemu-devel] [PATCH v4 00/15] tests: acpi: add UEFI (ARM) testing support Igor Mammedov 2019-05-02 14:51 ` Igor Mammedov 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 01/15] tests: acpi: rename acpi_parse_rsdp_table() into acpi_fetch_rsdp_table() Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 22/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 23/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 01/15] " Igor Mammedov 2019-05-12 18:19 ` Michael S. Tsirkin 2019-05-13 9:04 ` Igor Mammedov 2019-05-13 9:35 ` Igor Mammedov 2019-05-17 7:55 ` [Qemu-devel] [PULL 23/37] " Igor Mammedov 2019-05-17 8:04 ` Philippe Mathieu-Daudé 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 02/15] tests: acpi: make acpi_fetch_table() take size of fetched table pointer Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 23/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 24/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 02/15] " Igor Mammedov 2019-05-05 0:58 ` Wei Yang 2019-05-05 0:58 ` Wei Yang 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 03/15] tests: acpi: make RSDT test routine handle XSDT Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 24/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 25/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 03/15] " Igor Mammedov 2019-05-05 1:14 ` Wei Yang 2019-05-05 1:14 ` Wei Yang 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 04/15] tests: acpi: make pointer to RSDP 64bit Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 25/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 26/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 04/15] " Igor Mammedov 2019-05-05 1:18 ` Wei Yang 2019-05-05 1:18 ` Wei Yang 2019-05-08 6:15 ` Philippe Mathieu-Daudé 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 05/15] tests: acpi: fetch X_DSDT if pointer to DSDT is 0 Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 26/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 27/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 05/15] " Igor Mammedov 2019-05-05 1:27 ` Wei Yang 2019-05-05 1:27 ` Wei Yang 2019-05-07 10:04 ` Igor Mammedov 2019-05-08 5:51 ` Wei Yang 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 06/15] tests: acpi: skip FACS table if board uses hw reduced ACPI profile Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 27/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 28/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 06/15] " Igor Mammedov 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 07/15] tests: acpi: move boot_sector_init() into x86 tests branch Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 28/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 29/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 07/15] " Igor Mammedov 2019-05-08 6:13 ` Philippe Mathieu-Daudé 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 08/15] tests: acpi: add acpi_find_rsdp_address_uefi() helper Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 29/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 30/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 08/15] " Igor Mammedov 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 09/15] tests: acpi: add a way to start tests with UEFI firmware Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 30/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 31/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 09/15] " Igor Mammedov 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 10/15] tests: acpi: ignore SMBIOS tests when UEFI firmware is used Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 31/36] " Michael S. Tsirkin 2019-05-16 12:20 ` [Qemu-devel] [PULL 32/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 10/15] " Igor Mammedov 2019-05-08 6:12 ` Philippe Mathieu-Daudé 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 11/15] tests: acpi: allow to override default accelerator Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 32/36] " Michael S. Tsirkin 2019-05-16 12:21 ` [Qemu-devel] [PULL 33/37] " Michael S. Tsirkin 2019-05-02 14:51 ` [Qemu-devel] [PATCH v4 11/15] " Igor Mammedov 2019-05-02 18:36 ` Laszlo Ersek 2019-05-02 14:52 ` [Qemu-devel] [PATCH v4 12/15] tests: add expected ACPI tables for arm/virt board Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 33/36] " Michael S. Tsirkin 2019-05-16 12:21 ` [Qemu-devel] [PULL 34/37] " Michael S. Tsirkin 2019-05-02 14:52 ` [Qemu-devel] [PATCH v4 12/15] " Igor Mammedov 2019-05-02 14:52 ` [Qemu-devel] [PATCH v4 13/15] tests: acpi: add simple arm/virt testcase Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 34/36] " Michael S. Tsirkin 2019-05-16 12:21 ` [Qemu-devel] [PULL 35/37] " Michael S. Tsirkin 2019-05-02 14:52 ` [Qemu-devel] [PATCH v4 13/15] " Igor Mammedov 2019-05-02 18:38 ` Laszlo Ersek 2019-05-02 14:52 ` [Qemu-devel] [PATCH v4 14/15] tests: acpi: refactor rebuild-expected-aml.sh to dump ACPI tables for a specified list of targets Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 35/36] " Michael S. Tsirkin 2019-05-16 12:21 ` [Qemu-devel] [PULL 36/37] " Michael S. Tsirkin 2019-05-02 14:52 ` [Qemu-devel] [PATCH v4 14/15] " Igor Mammedov 2019-05-05 1:30 ` Wei Yang 2019-05-05 1:30 ` Wei Yang 2019-05-02 14:52 ` [Qemu-devel] [PATCH v4 15/15] tests: acpi: print error unable to dump ACPI table during rebuild Igor Mammedov 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 36/36] " Michael S. Tsirkin 2019-05-16 12:21 ` [Qemu-devel] [PULL 37/37] " Michael S. Tsirkin 2019-05-02 14:52 ` [Qemu-devel] [PATCH v4 15/15] " Igor Mammedov 2019-05-02 15:16 ` [Qemu-devel] [PATCH v4 00/15] tests: acpi: add UEFI (ARM) testing support Wei Xu 2019-05-02 15:16 ` Wei Xu 2019-04-20 9:10 [Qemu-devel] [PATCH] libvhost-user: fix bad vu_log_write Li Feng 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 19/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 20/37] " Michael S. Tsirkin 2019-04-21 16:48 ` [Qemu-devel] [PATCH] " Marc-André Lureau 2019-04-21 16:48 ` Marc-André Lureau 2019-04-19 0:30 [Qemu-devel] [PATCH v4 0/6] Extract build_mcfg Wei Yang 2019-04-19 0:30 ` Wei Yang 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 1/6] q35: acpi: do not create dummy MCFG table Wei Yang 2019-04-19 0:30 ` Wei Yang 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 2/6] hw/arm/virt-acpi-build: remove unnecessary variable mcfg_start Wei Yang 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 16/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 16/37] " Michael S. Tsirkin 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 2/6] " Wei Yang 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 3/6] i386, acpi: remove mcfg_ prefix in AcpiMcfgInfo members Wei Yang 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 17/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 17/37] " Michael S. Tsirkin 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 3/6] " Wei Yang 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 4/6] hw/arm/virt-acpi-build: pass AcpiMcfgInfo to build_mcfg() Wei Yang 2019-05-20 23:11 ` [Qemu-devel] [PULL v2 18/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 18/37] " Michael S. Tsirkin 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 4/6] " Wei Yang 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 5/6] hw/acpi: Consolidate build_mcfg to pci.c Wei Yang 2019-05-16 12:19 ` [Qemu-devel] [PULL 19/37] " Michael S. Tsirkin 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 5/6] " Wei Yang 2019-05-16 18:35 ` Philippe Mathieu-Daudé 2019-05-17 0:33 ` Wei Yang 2019-04-19 0:30 ` [Qemu-devel] [PATCH v4 6/6] acpi: pci: use build_append_foo() API to construct MCFG Wei Yang 2019-04-19 0:30 ` Wei Yang 2019-05-15 1:10 ` Michael S. Tsirkin 2019-05-15 5:29 ` Philippe Mathieu-Daudé 2019-05-15 8:53 ` Wei Yang 2019-05-16 7:41 ` Wei Yang 2019-05-16 11:01 ` Philippe Mathieu-Daudé 2019-05-16 17:00 ` Igor Mammedov 2019-05-20 23:04 ` Michael S. Tsirkin 2019-05-15 8:46 ` Wei Yang 2019-05-10 21:22 ` [Qemu-devel] [PATCH v4 0/6] Extract build_mcfg Wei Yang 2019-05-10 23:59 ` Michael S. Tsirkin 2019-05-11 0:10 ` Wei Yang 2019-04-16 18:46 [Qemu-devel] [PATCH 0/2] vhost-user race condition on shutdown Dan Streetman 2019-04-16 18:46 ` [Qemu-devel] [PATCH 1/2] add VirtIONet vhost_stopped flag to prevent multiple stops Dan Streetman 2019-04-19 23:14 ` Michael S. Tsirkin 2019-04-22 20:31 ` Dan Streetman 2019-04-22 2:50 ` Jason Wang 2019-04-22 20:14 ` Dan Streetman 2019-04-22 20:14 ` Dan Streetman 2019-04-23 2:58 ` Jason Wang 2019-04-23 2:58 ` Jason Wang 2019-04-23 8:49 ` Dan Streetman 2019-04-23 8:49 ` Dan Streetman 2019-04-24 9:46 ` Jason Wang 2019-04-24 9:46 ` Jason Wang 2019-04-16 18:46 ` [Qemu-devel] [PATCH 2/2] do not call vhost_net_cleanup() on running net from char user event Dan Streetman 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 15/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 15/37] " Michael S. Tsirkin 2019-04-19 23:12 ` [Qemu-devel] [PATCH 0/2] vhost-user race condition on shutdown Michael S. Tsirkin 2019-04-19 23:12 ` Michael S. Tsirkin 2019-04-09 15:00 [Qemu-devel] [PATCH for-4.1] q35: acpi: do not create dummy MCFG table Igor Mammedov 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 14/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 14/37] " Michael S. Tsirkin 2019-04-09 15:00 ` [Qemu-devel] [PATCH for-4.1] " Igor Mammedov 2019-04-10 1:12 ` Wei Yang 2019-04-10 1:12 ` Wei Yang 2019-04-10 9:08 ` Igor Mammedov 2019-04-10 9:08 ` Igor Mammedov 2019-04-10 14:01 ` Wei Yang 2019-04-10 14:01 ` Wei Yang 2019-04-10 14:11 ` Igor Mammedov 2019-04-10 14:11 ` Igor Mammedov 2019-04-10 14:27 ` Wei Yang 2019-04-10 14:27 ` Wei Yang 2019-04-10 15:01 ` Igor Mammedov 2019-04-10 15:01 ` Igor Mammedov 2019-04-11 1:32 ` Wei Yang 2019-04-11 1:32 ` Wei Yang 2019-04-11 11:46 ` Igor Mammedov 2019-04-11 11:46 ` Igor Mammedov 2019-04-11 22:15 ` Wei Yang 2019-04-11 22:15 ` Wei Yang 2019-04-11 22:16 ` Wei Yang 2019-04-11 22:16 ` Wei Yang 2019-04-02 16:18 [Qemu-devel] [PATCH 0/3] acpi: More trace points Markus Armbruster 2019-04-02 16:18 ` [Qemu-devel] [PATCH 1/3] acpi/piix4: Convert debug printf()s to trace events Markus Armbruster 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 11/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 11/37] " Michael S. Tsirkin 2019-04-04 10:07 ` [Qemu-devel] [PATCH 1/3] " Igor Mammedov 2019-04-02 16:18 ` [Qemu-devel] [PATCH 2/3] acpi/pcihp: " Markus Armbruster 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 12/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 12/37] " Michael S. Tsirkin 2019-04-04 10:13 ` [Qemu-devel] [PATCH 2/3] " Igor Mammedov 2019-04-02 16:19 ` [Qemu-devel] [PATCH 3/3] acpi/pcihp: Add a few more trace points related to unplug Markus Armbruster 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 13/36] " Michael S. Tsirkin 2019-05-16 12:19 ` [Qemu-devel] [PULL 13/37] " Michael S. Tsirkin 2019-04-04 10:14 ` [Qemu-devel] [PATCH 3/3] " Igor Mammedov 2019-04-04 12:54 ` Laszlo Ersek 2019-04-04 14:19 ` Igor Mammedov 2019-04-02 19:24 ` [Qemu-devel] [PATCH 0/3] acpi: More trace points Philippe Mathieu-Daudé 2019-05-08 11:19 ` Markus Armbruster 2019-05-08 16:30 ` Michael S. Tsirkin 2019-02-15 10:32 [Qemu-devel] [PATCH v2 0/2] hw: provide error checking of disable-legacy/modern property usage Daniel P. Berrangé 2019-02-15 10:32 ` [Qemu-devel] [PATCH v2 1/2] hw: report invalid disable-legacy|modern usage for virtio-1-only devs Daniel P. Berrangé 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 01/36] " Michael S. Tsirkin 2019-05-16 12:17 ` [Qemu-devel] [PULL 01/37] " Michael S. Tsirkin 2019-05-17 19:01 ` [Qemu-devel] [PATCH v2 1/2] " Eduardo Habkost 2019-05-20 9:56 ` Daniel P. Berrangé 2019-05-20 20:59 ` Eduardo Habkost 2019-05-21 9:23 ` Daniel P. Berrangé 2019-02-15 10:32 ` [Qemu-devel] [PATCH v2 2/2] Revert "globals: Allow global properties to be optional" Daniel P. Berrangé 2019-05-20 23:10 ` [Qemu-devel] [PULL v2 02/36] " Michael S. Tsirkin 2019-05-16 12:17 ` [Qemu-devel] [PULL 02/37] " Michael S. Tsirkin 2019-05-20 21:00 ` [Qemu-devel] [PATCH v2 2/2] " Eduardo Habkost
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=20190424041959.4087-4-david@gibson.dropbear.id.au \ --to=david@gibson.dropbear.id.au \ --cc=alex.williamson@redhat.com \ --cc=clg@kaod.org \ --cc=groug@kaod.org \ --cc=marcel.apfelbaum@gmail.com \ --cc=mst@redhat.com \ --cc=qemu-devel@nongnu.org \ --cc=qemu-ppc@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: linkBe 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.