* [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups
@ 2015-09-10 9:17 Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 1/7] pci: Fix pci_device_iommu_address_space() bus propagation Michael S. Tsirkin
` (7 more replies)
0 siblings, 8 replies; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:17 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell
The following changes since commit fc04a730b7e60f4a62d6260d4eb9c537d1d3643f:
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20150908' into staging (2015-09-08 18:02:36 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
for you to fetch changes up to 0f288f854b96f56247e38f4207f71647133f0184:
hw/pci: fix pci_update_mappings() trace events (2015-09-10 12:15:30 +0300)
----------------------------------------------------------------
virtio,pc,acpi fixes, cleanups
Fixes all over the place.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
----------------------------------------------------------------
Benjamin Herrenschmidt (1):
pci: Fix pci_device_iommu_address_space() bus propagation
Cornelia Huck (1):
virtio: avoid leading underscores for helpers
Eduardo Habkost (1):
pc: Remove redundant arguments from xen_hvm_init()
Igor Mammedov (2):
pc: memhotplug: fix incorrectly set reserved-memory-end
pc: memhotplug: keep reserved-memory-end broken on 2.4 and earlier machines
Laszlo Ersek (1):
hw/pci: fix pci_update_mappings() trace events
Richard W.M. Jones (1):
acpi: Remove unused definition.
include/hw/acpi/aml-build.h | 1 -
include/hw/i386/pc.h | 1 +
include/hw/virtio/virtio-access.h | 2 +-
include/hw/virtio/virtio.h | 11 ++++++-----
include/hw/xen/xen.h | 4 ++--
hw/block/virtio-blk.c | 7 ++++---
hw/char/virtio-serial-bus.c | 2 +-
hw/i386/pc.c | 8 +++++++-
hw/i386/pc_piix.c | 6 +++---
hw/i386/pc_q35.c | 6 +++---
hw/net/vhost_net.c | 2 +-
hw/net/virtio-net.c | 31 ++++++++++++++++---------------
hw/pci/pci.c | 17 +++++++----------
hw/scsi/virtio-scsi.c | 8 ++++----
hw/virtio/dataplane/vring.c | 10 +++++-----
hw/virtio/vhost.c | 4 ++--
hw/virtio/virtio-balloon.c | 2 +-
hw/virtio/virtio.c | 14 +++++++-------
xen-hvm-stub.c | 3 +--
xen-hvm.c | 25 ++++++++++++-------------
trace-events | 4 ++--
21 files changed, 86 insertions(+), 82 deletions(-)
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PULL 1/7] pci: Fix pci_device_iommu_address_space() bus propagation
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
@ 2015-09-10 9:17 ` Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 2/7] pc: Remove redundant arguments from xen_hvm_init() Michael S. Tsirkin
` (6 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:17 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
he current code walks up the bus tree for an iommu, however it passes
to the iommu_fn() callback the bus/devfn of the immediate child of
the level where the callback was found, rather than the original
bus/devfn where the search started from.
This prevents iommu's like POWER8 (and in fact also Q35) to properly
provide an address space for a subset of devices that aren't immediate
children of the iommu.
PCIe carries the originator bdfn acccross to the iommu on all DMA
transactions, so we must be able to properly identify devices at all
levels.
This changes the function pci_device_iommu_address_space() to pass
the original pointers to the iommu_fn() callback instead.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/pci/pci.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 4700e95..eba7ca2 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -2383,17 +2383,14 @@ static void pci_device_class_init(ObjectClass *klass, void *data)
AddressSpace *pci_device_iommu_address_space(PCIDevice *dev)
{
PCIBus *bus = PCI_BUS(dev->bus);
+ PCIBus *iommu_bus = bus;
- if (bus->iommu_fn) {
- return bus->iommu_fn(bus, bus->iommu_opaque, dev->devfn);
+ while(iommu_bus && !iommu_bus->iommu_fn && iommu_bus->parent_dev) {
+ iommu_bus = PCI_BUS(iommu_bus->parent_dev->bus);
}
-
- if (bus->parent_dev) {
- /** We are ignoring the bus master DMA bit of the bridge
- * as it would complicate things such as VFIO for no good reason */
- return pci_device_iommu_address_space(bus->parent_dev);
+ if (iommu_bus && iommu_bus->iommu_fn) {
+ return iommu_bus->iommu_fn(bus, iommu_bus->iommu_opaque, dev->devfn);
}
-
return &address_space_memory;
}
--
MST
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PULL 2/7] pc: Remove redundant arguments from xen_hvm_init()
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 1/7] pci: Fix pci_device_iommu_address_space() bus propagation Michael S. Tsirkin
@ 2015-09-10 9:17 ` Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 3/7] virtio: avoid leading underscores for helpers Michael S. Tsirkin
` (5 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:17 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, xen-devel, Eduardo Habkost, Stefano Stabellini,
Paolo Bonzini, Richard Henderson
From: Eduardo Habkost <ehabkost@redhat.com>
Remove arguments that can be found in PCMachineState.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/xen/xen.h | 4 ++--
hw/i386/pc_piix.c | 4 +---
hw/i386/pc_q35.c | 4 +---
xen-hvm-stub.c | 3 +--
xen-hvm.c | 25 ++++++++++++-------------
5 files changed, 17 insertions(+), 23 deletions(-)
diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
index 4356af4..e90931a 100644
--- a/include/hw/xen/xen.h
+++ b/include/hw/xen/xen.h
@@ -10,6 +10,7 @@
#include "hw/irq.h"
#include "qemu-common.h"
+#include "qemu/typedefs.h"
/* xen-machine.c */
enum xen_mode {
@@ -38,8 +39,7 @@ qemu_irq *xen_interrupt_controller_init(void);
void xenstore_store_pv_console_info(int i, struct CharDriverState *chr);
#if defined(NEED_CPU_H) && !defined(CONFIG_USER_ONLY)
-int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
- MemoryRegion **ram_memory);
+int xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory);
void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
struct MemoryRegion *mr);
void xen_modified_memory(ram_addr_t start, ram_addr_t length);
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index b82921d..117f8dc 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -134,9 +134,7 @@ static void pc_init1(MachineState *machine)
pcms->below_4g_mem_size = machine->ram_size;
}
- if (xen_enabled() && xen_hvm_init(&pcms->below_4g_mem_size,
- &pcms->above_4g_mem_size,
- &ram_memory) != 0) {
+ if (xen_enabled() && xen_hvm_init(pcms, &ram_memory) != 0) {
fprintf(stderr, "xen hardware virtual machine initialisation failed\n");
exit(1);
}
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 7217cbf..4b38dee 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -125,9 +125,7 @@ static void pc_q35_init(MachineState *machine)
pcms->below_4g_mem_size = machine->ram_size;
}
- if (xen_enabled() && xen_hvm_init(&pcms->below_4g_mem_size,
- &pcms->above_4g_mem_size,
- &ram_memory) != 0) {
+ if (xen_enabled() && xen_hvm_init(pcms, &ram_memory) != 0) {
fprintf(stderr, "xen hardware virtual machine initialisation failed\n");
exit(1);
}
diff --git a/xen-hvm-stub.c b/xen-hvm-stub.c
index 46867d8..6a39425 100644
--- a/xen-hvm-stub.c
+++ b/xen-hvm-stub.c
@@ -47,8 +47,7 @@ void xen_modified_memory(ram_addr_t start, ram_addr_t length)
{
}
-int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
- MemoryRegion **ram_memory)
+int xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory)
{
return 0;
}
diff --git a/xen-hvm.c b/xen-hvm.c
index 0408462..55bce3a 100644
--- a/xen-hvm.c
+++ b/xen-hvm.c
@@ -180,8 +180,7 @@ qemu_irq *xen_interrupt_controller_init(void)
/* Memory Ops */
-static void xen_ram_init(ram_addr_t *below_4g_mem_size,
- ram_addr_t *above_4g_mem_size,
+static void xen_ram_init(PCMachineState *pcms,
ram_addr_t ram_size, MemoryRegion **ram_memory_p)
{
MemoryRegion *sysmem = get_system_memory();
@@ -198,20 +197,20 @@ static void xen_ram_init(ram_addr_t *below_4g_mem_size,
}
if (ram_size >= user_lowmem) {
- *above_4g_mem_size = ram_size - user_lowmem;
- *below_4g_mem_size = user_lowmem;
+ pcms->above_4g_mem_size = ram_size - user_lowmem;
+ pcms->below_4g_mem_size = user_lowmem;
} else {
- *above_4g_mem_size = 0;
- *below_4g_mem_size = ram_size;
+ pcms->above_4g_mem_size = 0;
+ pcms->below_4g_mem_size = ram_size;
}
- if (!*above_4g_mem_size) {
+ if (!pcms->above_4g_mem_size) {
block_len = ram_size;
} else {
/*
* Xen does not allocate the memory continuously, it keeps a
* hole of the size computed above or passed in.
*/
- block_len = (1ULL << 32) + *above_4g_mem_size;
+ block_len = (1ULL << 32) + pcms->above_4g_mem_size;
}
memory_region_init_ram(&ram_memory, NULL, "xen.ram", block_len,
&error_abort);
@@ -229,12 +228,12 @@ static void xen_ram_init(ram_addr_t *below_4g_mem_size,
*/
memory_region_init_alias(&ram_lo, NULL, "xen.ram.lo",
&ram_memory, 0xc0000,
- *below_4g_mem_size - 0xc0000);
+ pcms->below_4g_mem_size - 0xc0000);
memory_region_add_subregion(sysmem, 0xc0000, &ram_lo);
- if (*above_4g_mem_size > 0) {
+ if (pcms->above_4g_mem_size > 0) {
memory_region_init_alias(&ram_hi, NULL, "xen.ram.hi",
&ram_memory, 0x100000000ULL,
- *above_4g_mem_size);
+ pcms->above_4g_mem_size);
memory_region_add_subregion(sysmem, 0x100000000ULL, &ram_hi);
}
}
@@ -1159,7 +1158,7 @@ static void xen_wakeup_notifier(Notifier *notifier, void *data)
}
/* return 0 means OK, or -1 means critical issue -- will exit(1) */
-int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
+int xen_hvm_init(PCMachineState *pcms,
MemoryRegion **ram_memory)
{
int i, rc;
@@ -1270,7 +1269,7 @@ int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
/* Init RAM management */
xen_map_cache_init(xen_phys_offset_to_gaddr, state);
- xen_ram_init(below_4g_mem_size, above_4g_mem_size, ram_size, ram_memory);
+ xen_ram_init(pcms, ram_size, ram_memory);
qemu_add_vm_change_state_handler(xen_hvm_change_state_handler, state);
--
MST
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PULL 3/7] virtio: avoid leading underscores for helpers
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 1/7] pci: Fix pci_device_iommu_address_space() bus propagation Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 2/7] pc: Remove redundant arguments from xen_hvm_init() Michael S. Tsirkin
@ 2015-09-10 9:17 ` Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 4/7] acpi: Remove unused definition Michael S. Tsirkin
` (4 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:17 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Peter Maydell, qemu-block, Amit Shah, Stefan Hajnoczi,
Cornelia Huck, Paolo Bonzini
From: Cornelia Huck <cornelia.huck@de.ibm.com>
Commit ef546f1275f6563e8934dd5e338d29d9f9909ca6 ("virtio: add
feature checking helpers") introduced a helper __virtio_has_feature.
We don't want to use reserved identifiers, though, so let's
rename __virtio_has_feature to virtio_has_feature and virtio_has_feature
to virtio_vdev_has_feature.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/virtio/virtio-access.h | 2 +-
include/hw/virtio/virtio.h | 11 ++++++-----
hw/block/virtio-blk.c | 7 ++++---
hw/char/virtio-serial-bus.c | 2 +-
hw/net/vhost_net.c | 2 +-
hw/net/virtio-net.c | 31 ++++++++++++++++---------------
hw/scsi/virtio-scsi.c | 8 ++++----
hw/virtio/dataplane/vring.c | 10 +++++-----
hw/virtio/vhost.c | 4 ++--
hw/virtio/virtio-balloon.c | 2 +-
hw/virtio/virtio.c | 14 +++++++-------
11 files changed, 48 insertions(+), 45 deletions(-)
diff --git a/include/hw/virtio/virtio-access.h b/include/hw/virtio/virtio-access.h
index 1ec1dfd..8aec843 100644
--- a/include/hw/virtio/virtio-access.h
+++ b/include/hw/virtio/virtio-access.h
@@ -19,7 +19,7 @@
static inline bool virtio_access_is_big_endian(VirtIODevice *vdev)
{
- if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
/* Devices conforming to VIRTIO 1.0 or later are always LE. */
return false;
}
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index cccae89..6201ee8 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -261,26 +261,27 @@ static inline void virtio_clear_feature(uint64_t *features, unsigned int fbit)
*features &= ~(1ULL << fbit);
}
-static inline bool __virtio_has_feature(uint64_t features, unsigned int fbit)
+static inline bool virtio_has_feature(uint64_t features, unsigned int fbit)
{
assert(fbit < 64);
return !!(features & (1ULL << fbit));
}
-static inline bool virtio_has_feature(VirtIODevice *vdev, unsigned int fbit)
+static inline bool virtio_vdev_has_feature(VirtIODevice *vdev,
+ unsigned int fbit)
{
- return __virtio_has_feature(vdev->guest_features, fbit);
+ return virtio_has_feature(vdev->guest_features, fbit);
}
static inline bool virtio_host_has_feature(VirtIODevice *vdev,
unsigned int fbit)
{
- return __virtio_has_feature(vdev->host_features, fbit);
+ return virtio_has_feature(vdev->host_features, fbit);
}
static inline bool virtio_is_big_endian(VirtIODevice *vdev)
{
- if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
assert(vdev->device_endian != VIRTIO_DEVICE_ENDIAN_UNKNOWN);
return vdev->device_endian == VIRTIO_DEVICE_ENDIAN_BIG;
}
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 1556c9c..f9301ae 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -731,7 +731,7 @@ static uint64_t virtio_blk_get_features(VirtIODevice *vdev, uint64_t features,
virtio_add_feature(&features, VIRTIO_BLK_F_GEOMETRY);
virtio_add_feature(&features, VIRTIO_BLK_F_TOPOLOGY);
virtio_add_feature(&features, VIRTIO_BLK_F_BLK_SIZE);
- if (__virtio_has_feature(features, VIRTIO_F_VERSION_1)) {
+ if (virtio_has_feature(features, VIRTIO_F_VERSION_1)) {
if (s->conf.scsi) {
error_setg(errp, "Please set scsi=off for virtio-blk devices in order to use virtio 1.0");
return 0;
@@ -782,10 +782,11 @@ static void virtio_blk_set_status(VirtIODevice *vdev, uint8_t status)
*
* s->blk would erroneously be placed in writethrough mode.
*/
- if (!virtio_has_feature(vdev, VIRTIO_BLK_F_CONFIG_WCE)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_BLK_F_CONFIG_WCE)) {
aio_context_acquire(blk_get_aio_context(s->blk));
blk_set_enable_write_cache(s->blk,
- virtio_has_feature(vdev, VIRTIO_BLK_F_WCE));
+ virtio_vdev_has_feature(vdev,
+ VIRTIO_BLK_F_WCE));
aio_context_release(blk_get_aio_context(s->blk));
}
}
diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c
index bc56f5d..be97058 100644
--- a/hw/char/virtio-serial-bus.c
+++ b/hw/char/virtio-serial-bus.c
@@ -76,7 +76,7 @@ static VirtIOSerialPort *find_port_by_name(char *name)
static bool use_multiport(VirtIOSerial *vser)
{
VirtIODevice *vdev = VIRTIO_DEVICE(vser);
- return virtio_has_feature(vdev, VIRTIO_CONSOLE_F_MULTIPORT);
+ return virtio_vdev_has_feature(vdev, VIRTIO_CONSOLE_F_MULTIPORT);
}
static size_t write_to_port(VirtIOSerialPort *port,
diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
index 5c1d11f..1d76b94 100644
--- a/hw/net/vhost_net.c
+++ b/hw/net/vhost_net.c
@@ -197,7 +197,7 @@ static int vhost_net_set_vnet_endian(VirtIODevice *dev, NetClientState *peer,
{
int r = 0;
- if (virtio_has_feature(dev, VIRTIO_F_VERSION_1) ||
+ if (virtio_vdev_has_feature(dev, VIRTIO_F_VERSION_1) ||
(virtio_legacy_is_cross_endian(dev) && !virtio_is_big_endian(dev))) {
r = qemu_set_vnet_le(peer, set);
if (r) {
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 8d28e45..f72eebf 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -86,8 +86,8 @@ static void virtio_net_set_config(VirtIODevice *vdev, const uint8_t *config)
memcpy(&netcfg, config, n->config_size);
- if (!virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_MAC_ADDR) &&
- !virtio_has_feature(vdev, VIRTIO_F_VERSION_1) &&
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_CTRL_MAC_ADDR) &&
+ !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) &&
memcmp(netcfg.mac, n->mac, ETH_ALEN)) {
memcpy(n->mac, netcfg.mac, ETH_ALEN);
qemu_format_nic_info_str(qemu_get_queue(n->nic), n->mac);
@@ -304,7 +304,7 @@ static RxFilterInfo *virtio_net_query_rxfilter(NetClientState *nc)
info->multicast_table = str_list;
info->vlan_table = get_vlan_table(n);
- if (!virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VLAN)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_CTRL_VLAN)) {
info->vlan = RX_STATE_ALL;
} else if (!info->vlan_table) {
info->vlan = RX_STATE_NONE;
@@ -529,13 +529,13 @@ static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
int i;
virtio_net_set_multiqueue(n,
- __virtio_has_feature(features, VIRTIO_NET_F_MQ));
+ virtio_has_feature(features, VIRTIO_NET_F_MQ));
virtio_net_set_mrg_rx_bufs(n,
- __virtio_has_feature(features,
- VIRTIO_NET_F_MRG_RXBUF),
- __virtio_has_feature(features,
- VIRTIO_F_VERSION_1));
+ virtio_has_feature(features,
+ VIRTIO_NET_F_MRG_RXBUF),
+ virtio_has_feature(features,
+ VIRTIO_F_VERSION_1));
if (n->has_vnet_hdr) {
n->curr_guest_offloads =
@@ -552,7 +552,7 @@ static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
vhost_net_ack_features(get_vhost_net(nc->peer), features);
}
- if (__virtio_has_feature(features, VIRTIO_NET_F_CTRL_VLAN)) {
+ if (virtio_has_feature(features, VIRTIO_NET_F_CTRL_VLAN)) {
memset(n->vlans, 0, MAX_VLAN >> 3);
} else {
memset(n->vlans, 0xff, MAX_VLAN >> 3);
@@ -599,7 +599,7 @@ static int virtio_net_handle_offloads(VirtIONet *n, uint8_t cmd,
uint64_t offloads;
size_t s;
- if (!virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)) {
return VIRTIO_NET_ERR;
}
@@ -1449,7 +1449,7 @@ static void virtio_net_save_device(VirtIODevice *vdev, QEMUFile *f)
}
}
- if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)) {
qemu_put_be64(f, n->curr_guest_offloads);
}
}
@@ -1475,7 +1475,8 @@ static int virtio_net_load_device(VirtIODevice *vdev, QEMUFile *f,
n->vqs[0].tx_waiting = qemu_get_be32(f);
virtio_net_set_mrg_rx_bufs(n, qemu_get_be32(f),
- virtio_has_feature(vdev, VIRTIO_F_VERSION_1));
+ virtio_vdev_has_feature(vdev,
+ VIRTIO_F_VERSION_1));
if (version_id >= 3)
n->status = qemu_get_be16(f);
@@ -1558,7 +1559,7 @@ static int virtio_net_load_device(VirtIODevice *vdev, QEMUFile *f,
}
}
- if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)) {
n->curr_guest_offloads = qemu_get_be64(f);
} else {
n->curr_guest_offloads = virtio_net_supported_guest_offloads(n);
@@ -1585,8 +1586,8 @@ static int virtio_net_load_device(VirtIODevice *vdev, QEMUFile *f,
qemu_get_subqueue(n->nic, i)->link_down = link_down;
}
- if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ANNOUNCE) &&
- virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_NET_F_GUEST_ANNOUNCE) &&
+ virtio_vdev_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ)) {
n->announce_counter = SELF_ANNOUNCE_ROUNDS;
timer_mod(n->announce_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL));
}
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index a8bb1c6..1c33f14 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -145,7 +145,7 @@ static int virtio_scsi_parse_req(VirtIOSCSIReq *req,
*
* TODO: always disable this workaround for virtio 1.0 devices.
*/
- if (!virtio_has_feature(vdev, VIRTIO_F_ANY_LAYOUT)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_F_ANY_LAYOUT)) {
if (req->elem.out_num) {
req_size = req->elem.out_sg[0].iov_len;
}
@@ -759,7 +759,7 @@ static void virtio_scsi_change(SCSIBus *bus, SCSIDevice *dev, SCSISense sense)
VirtIOSCSI *s = container_of(bus, VirtIOSCSI, bus);
VirtIODevice *vdev = VIRTIO_DEVICE(s);
- if (virtio_has_feature(vdev, VIRTIO_SCSI_F_CHANGE) &&
+ if (virtio_vdev_has_feature(vdev, VIRTIO_SCSI_F_CHANGE) &&
dev->type != TYPE_ROM) {
virtio_scsi_push_event(s, dev, VIRTIO_SCSI_T_PARAM_CHANGE,
sense.asc | (sense.ascq << 8));
@@ -783,7 +783,7 @@ static void virtio_scsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev,
aio_context_release(s->ctx);
}
- if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) {
virtio_scsi_push_event(s, sd,
VIRTIO_SCSI_T_TRANSPORT_RESET,
VIRTIO_SCSI_EVT_RESET_RESCAN);
@@ -797,7 +797,7 @@ static void virtio_scsi_hotunplug(HotplugHandler *hotplug_dev, DeviceState *dev,
VirtIOSCSI *s = VIRTIO_SCSI(vdev);
SCSIDevice *sd = SCSI_DEVICE(dev);
- if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) {
virtio_scsi_push_event(s, sd,
VIRTIO_SCSI_T_TRANSPORT_RESET,
VIRTIO_SCSI_EVT_RESET_REMOVED);
diff --git a/hw/virtio/dataplane/vring.c b/hw/virtio/dataplane/vring.c
index 07fd69c..fece83a 100644
--- a/hw/virtio/dataplane/vring.c
+++ b/hw/virtio/dataplane/vring.c
@@ -105,7 +105,7 @@ void vring_teardown(Vring *vring, VirtIODevice *vdev, int n)
/* Disable guest->host notifies */
void vring_disable_notification(VirtIODevice *vdev, Vring *vring)
{
- if (!virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
vring_set_used_flags(vdev, vring, VRING_USED_F_NO_NOTIFY);
}
}
@@ -116,7 +116,7 @@ void vring_disable_notification(VirtIODevice *vdev, Vring *vring)
*/
bool vring_enable_notification(VirtIODevice *vdev, Vring *vring)
{
- if (virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
vring_avail_event(&vring->vr) = vring->vr.avail->idx;
} else {
vring_clear_used_flags(vdev, vring, VRING_USED_F_NO_NOTIFY);
@@ -135,12 +135,12 @@ bool vring_should_notify(VirtIODevice *vdev, Vring *vring)
* interrupts. */
smp_mb();
- if (virtio_has_feature(vdev, VIRTIO_F_NOTIFY_ON_EMPTY) &&
+ if (virtio_vdev_has_feature(vdev, VIRTIO_F_NOTIFY_ON_EMPTY) &&
unlikely(!vring_more_avail(vdev, vring))) {
return true;
}
- if (!virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
return !(vring_get_avail_flags(vdev, vring) &
VRING_AVAIL_F_NO_INTERRUPT);
}
@@ -402,7 +402,7 @@ int vring_pop(VirtIODevice *vdev, Vring *vring,
/* On success, increment avail index. */
vring->last_avail_idx++;
- if (virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
vring_avail_event(&vring->vr) =
virtio_tswap16(vdev, vring->last_avail_idx);
}
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 2712c6f..a08c36b 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -742,7 +742,7 @@ static int vhost_virtqueue_start(struct vhost_dev *dev,
return -errno;
}
- if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1) &&
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) &&
virtio_legacy_is_cross_endian(vdev)) {
r = vhost_virtqueue_set_vring_endian_legacy(dev,
virtio_is_big_endian(vdev),
@@ -839,7 +839,7 @@ static void vhost_virtqueue_stop(struct vhost_dev *dev,
/* In the cross-endian case, we need to reset the vring endianness to
* native as legacy devices expect so by default.
*/
- if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1) &&
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) &&
virtio_legacy_is_cross_endian(vdev)) {
r = vhost_virtqueue_set_vring_endian_legacy(dev,
!virtio_is_big_endian(vdev),
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
index 3577b7a..c419b17 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
@@ -70,7 +70,7 @@ static inline void reset_stats(VirtIOBalloon *dev)
static bool balloon_stats_supported(const VirtIOBalloon *s)
{
VirtIODevice *vdev = VIRTIO_DEVICE(s);
- return virtio_has_feature(vdev, VIRTIO_BALLOON_F_STATS_VQ);
+ return virtio_vdev_has_feature(vdev, VIRTIO_BALLOON_F_STATS_VQ);
}
static bool balloon_stats_enabled(const VirtIOBalloon *s)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 788b556..0832db9 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -220,7 +220,7 @@ static inline void vring_set_avail_event(VirtQueue *vq, uint16_t val)
void virtio_queue_set_notification(VirtQueue *vq, int enable)
{
vq->notification = enable;
- if (virtio_has_feature(vq->vdev, VIRTIO_RING_F_EVENT_IDX)) {
+ if (virtio_vdev_has_feature(vq->vdev, VIRTIO_RING_F_EVENT_IDX)) {
vring_set_avail_event(vq, vring_avail_idx(vq));
} else if (enable) {
vring_used_flags_unset_bit(vq, VRING_USED_F_NO_NOTIFY);
@@ -471,7 +471,7 @@ int virtqueue_pop(VirtQueue *vq, VirtQueueElement *elem)
max = vq->vring.num;
i = head = virtqueue_get_head(vq, vq->last_avail_idx++);
- if (virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
vring_set_avail_event(vq, vq->last_avail_idx);
}
@@ -560,7 +560,7 @@ int virtio_set_status(VirtIODevice *vdev, uint8_t val)
VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev);
trace_virtio_set_status(vdev, val);
- if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
if (!(vdev->status & VIRTIO_CONFIG_S_FEATURES_OK) &&
val & VIRTIO_CONFIG_S_FEATURES_OK) {
int ret = virtio_validate_features(vdev);
@@ -898,7 +898,7 @@ void virtio_queue_set_align(VirtIODevice *vdev, int n, int align)
VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus);
/* virtio-1 compliant devices cannot change the alignment */
- if (virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+ if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
error_report("tried to modify queue alignment for virtio-1 device");
return;
}
@@ -993,12 +993,12 @@ static bool vring_notify(VirtIODevice *vdev, VirtQueue *vq)
/* We need to expose used array entries before checking used event. */
smp_mb();
/* Always notify when queue is empty (when feature acknowledge) */
- if (virtio_has_feature(vdev, VIRTIO_F_NOTIFY_ON_EMPTY) &&
+ if (virtio_vdev_has_feature(vdev, VIRTIO_F_NOTIFY_ON_EMPTY) &&
!vq->inuse && vring_avail_idx(vq) == vq->last_avail_idx) {
return true;
}
- if (!virtio_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_RING_F_EVENT_IDX)) {
return !(vring_avail_flags(vq) & VRING_AVAIL_F_NO_INTERRUPT);
}
@@ -1035,7 +1035,7 @@ static bool virtio_device_endian_needed(void *opaque)
VirtIODevice *vdev = opaque;
assert(vdev->device_endian != VIRTIO_DEVICE_ENDIAN_UNKNOWN);
- if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+ if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
return vdev->device_endian != virtio_default_endian();
}
/* Devices conforming to VIRTIO 1.0 or later are always LE. */
--
MST
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PULL 4/7] acpi: Remove unused definition.
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
` (2 preceding siblings ...)
2015-09-10 9:17 ` [Qemu-devel] [PULL 3/7] virtio: avoid leading underscores for helpers Michael S. Tsirkin
@ 2015-09-10 9:17 ` Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 5/7] pc: memhotplug: fix incorrectly set reserved-memory-end Michael S. Tsirkin
` (3 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:17 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell, Richard W.M. Jones, Igor Mammedov
From: "Richard W.M. Jones" <rjones@redhat.com>
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/acpi/aml-build.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h
index e3afa13..1b632dc 100644
--- a/include/hw/acpi/aml-build.h
+++ b/include/hw/acpi/aml-build.h
@@ -9,7 +9,6 @@
/* Reserve RAM space for tables: add another order of magnitude. */
#define ACPI_BUILD_TABLE_MAX_SIZE 0x200000
-#define ACPI_BUILD_APPNAME "Bochs"
#define ACPI_BUILD_APPNAME6 "BOCHS "
#define ACPI_BUILD_APPNAME4 "BXPC"
--
MST
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PULL 5/7] pc: memhotplug: fix incorrectly set reserved-memory-end
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
` (3 preceding siblings ...)
2015-09-10 9:17 ` [Qemu-devel] [PULL 4/7] acpi: Remove unused definition Michael S. Tsirkin
@ 2015-09-10 9:17 ` Michael S. Tsirkin
2015-09-10 9:18 ` [Qemu-devel] [PULL 6/7] pc: memhotplug: keep reserved-memory-end broken on 2.4 and earlier machines Michael S. Tsirkin
` (2 subsequent siblings)
7 siblings, 0 replies; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:17 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Richard Henderson, Paolo Bonzini, Eduardo Habkost,
Igor Mammedov
From: Igor Mammedov <imammedo@redhat.com>
reserved-memory-end tells firmware address from which
it could start treating memory as PCI address space
and map PCI BARs after it to avoid collisions with
RAM.
Currently it is incorrectly pointing to address where
hotplugged memory range starts which could redirect
hotplugged RAM accesses to PCI BARs when firmware
maps them over RAM or viceverse.
Fix this by pointing reserved-memory-end to the end
of memory hotplug area.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/i386/pc.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 9f2924e..354e1b3 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1412,7 +1412,9 @@ FWCfgState *pc_memory_init(PCMachineState *pcms,
if (guest_info->has_reserved_memory && pcms->hotplug_memory.base) {
uint64_t *val = g_malloc(sizeof(*val));
- *val = cpu_to_le64(ROUND_UP(pcms->hotplug_memory.base, 0x1ULL << 30));
+ uint64_t res_mem_end = pcms->hotplug_memory.base +
+ memory_region_size(&pcms->hotplug_memory.mr);
+ *val = cpu_to_le64(ROUND_UP(res_mem_end, 0x1ULL << 30));
fw_cfg_add_file(fw_cfg, "etc/reserved-memory-end", val, sizeof(*val));
}
--
MST
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PULL 6/7] pc: memhotplug: keep reserved-memory-end broken on 2.4 and earlier machines
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
` (4 preceding siblings ...)
2015-09-10 9:17 ` [Qemu-devel] [PULL 5/7] pc: memhotplug: fix incorrectly set reserved-memory-end Michael S. Tsirkin
@ 2015-09-10 9:18 ` Michael S. Tsirkin
2015-09-10 9:18 ` [Qemu-devel] [PULL 7/7] hw/pci: fix pci_update_mappings() trace events Michael S. Tsirkin
2015-09-10 12:55 ` [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Peter Maydell
7 siblings, 0 replies; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:18 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Richard Henderson, Paolo Bonzini, Eduardo Habkost,
Igor Mammedov
From: Igor Mammedov <imammedo@redhat.com>
it will prevent guests on old machines from seeing
inconsistent memory mapping in firmware/ACPI views.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/hw/i386/pc.h | 1 +
hw/i386/pc.c | 8 ++++++--
hw/i386/pc_piix.c | 2 ++
hw/i386/pc_q35.c | 2 ++
4 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index d0cad87..ff0b48b 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -59,6 +59,7 @@ struct PCMachineClass {
MachineClass parent_class;
/*< public >*/
+ bool broken_reserved_end;
HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
DeviceState *dev);
};
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 354e1b3..b5107f7 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1412,8 +1412,12 @@ FWCfgState *pc_memory_init(PCMachineState *pcms,
if (guest_info->has_reserved_memory && pcms->hotplug_memory.base) {
uint64_t *val = g_malloc(sizeof(*val));
- uint64_t res_mem_end = pcms->hotplug_memory.base +
- memory_region_size(&pcms->hotplug_memory.mr);
+ PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
+ uint64_t res_mem_end = pcms->hotplug_memory.base;
+
+ if (!pcmc->broken_reserved_end) {
+ res_mem_end += memory_region_size(&pcms->hotplug_memory.mr);
+ }
*val = cpu_to_le64(ROUND_UP(res_mem_end, 0x1ULL << 30));
fw_cfg_add_file(fw_cfg, "etc/reserved-memory-end", val, sizeof(*val));
}
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 117f8dc..eab39fc 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -449,7 +449,9 @@ static void pc_i440fx_machine_options(MachineClass *m)
static void pc_i440fx_2_4_machine_options(MachineClass *m)
{
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
pc_i440fx_machine_options(m);
+ pcmc->broken_reserved_end = true;
m->default_machine_opts = "firmware=bios-256k.bin";
m->default_display = "std";
m->alias = "pc";
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 4b38dee..11601ab 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -368,7 +368,9 @@ static void pc_q35_machine_options(MachineClass *m)
static void pc_q35_2_4_machine_options(MachineClass *m)
{
+ PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
pc_q35_machine_options(m);
+ pcmc->broken_reserved_end = true;
m->default_machine_opts = "firmware=bios-256k.bin";
m->default_display = "std";
m->no_floppy = 1;
--
MST
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PULL 7/7] hw/pci: fix pci_update_mappings() trace events
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
` (5 preceding siblings ...)
2015-09-10 9:18 ` [Qemu-devel] [PULL 6/7] pc: memhotplug: keep reserved-memory-end broken on 2.4 and earlier machines Michael S. Tsirkin
@ 2015-09-10 9:18 ` Michael S. Tsirkin
2015-09-10 9:45 ` Laszlo Ersek
2015-09-10 12:55 ` [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Peter Maydell
7 siblings, 1 reply; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:18 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-trivial, Peter Maydell, Laszlo Ersek, Don Koch
From: Laszlo Ersek <lersek@redhat.com>
The current trace prototypes and (matching) trace calls lead to
"unorthodox" PCI BDF notation in at least the stderr trace backend. For
example, the four BARs of a QXL video card at 00:01.0 (bus 0, slot 1,
function 0) are traced like this (PID and timestamps removed):
pci_update_mappings_add d=0x7f14a73bf890 00:00.1 0,0x84000000+0x4000000
pci_update_mappings_add d=0x7f14a73bf890 00:00.1 1,0x80000000+0x4000000
pci_update_mappings_add d=0x7f14a73bf890 00:00.1 2,0x88200000+0x2000
pci_update_mappings_add d=0x7f14a73bf890 00:00.1 3,0xd060+0x20
The slot and function values are in reverse order.
Stick with the conventional BDF notation.
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Don Koch <dkoch@verizon.com>
Cc: qemu-trivial@nongnu.org
Fixes: 7828d75045
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/pci/pci.c | 4 ++--
trace-events | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index eba7ca2..ccea628 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1154,16 +1154,16 @@ static void pci_update_mappings(PCIDevice *d)
/* now do the real mapping */
if (r->addr != PCI_BAR_UNMAPPED) {
trace_pci_update_mappings_del(d, pci_bus_num(d->bus),
- PCI_FUNC(d->devfn),
PCI_SLOT(d->devfn),
+ PCI_FUNC(d->devfn),
i, r->addr, r->size);
memory_region_del_subregion(r->address_space, r->memory);
}
r->addr = new_addr;
if (r->addr != PCI_BAR_UNMAPPED) {
trace_pci_update_mappings_add(d, pci_bus_num(d->bus),
- PCI_FUNC(d->devfn),
PCI_SLOT(d->devfn),
+ PCI_FUNC(d->devfn),
i, r->addr, r->size);
memory_region_add_subregion_overlap(r->address_space,
r->addr, r->memory, 1);
diff --git a/trace-events b/trace-events
index 0a82f0c..1684a95 100644
--- a/trace-events
+++ b/trace-events
@@ -1303,8 +1303,8 @@ spapr_pci_lsi_set(const char *busname, int pin, uint32_t irq) "%s PIN%d IRQ %u"
spapr_pci_msi_retry(unsigned config_addr, unsigned req_num, unsigned max_irqs) "Guest device at %x asked %u, have only %u"
# hw/pci/pci.c
-pci_update_mappings_del(void *d, uint32_t bus, uint32_t func, uint32_t slot, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
-pci_update_mappings_add(void *d, uint32_t bus, uint32_t func, uint32_t slot, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
+pci_update_mappings_del(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
+pci_update_mappings_add(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
# hw/net/pcnet.c
pcnet_s_reset(void *s) "s=%p"
--
MST
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PULL 7/7] hw/pci: fix pci_update_mappings() trace events
2015-09-10 9:18 ` [Qemu-devel] [PULL 7/7] hw/pci: fix pci_update_mappings() trace events Michael S. Tsirkin
@ 2015-09-10 9:45 ` Laszlo Ersek
2015-09-10 9:54 ` Michael S. Tsirkin
0 siblings, 1 reply; 12+ messages in thread
From: Laszlo Ersek @ 2015-09-10 9:45 UTC (permalink / raw)
To: Michael S. Tsirkin, qemu-devel
Cc: qemu-trivial, Peter Maydell, Michael Tokarev, Don Koch,
Marcel Apfelbaum
Hi,
On 09/10/15 11:27, Michael S. Tsirkin wrote:
> From: Laszlo Ersek <lersek@redhat.com>
>
> The current trace prototypes and (matching) trace calls lead to
> "unorthodox" PCI BDF notation in at least the stderr trace backend. For
> example, the four BARs of a QXL video card at 00:01.0 (bus 0, slot 1,
> function 0) are traced like this (PID and timestamps removed):
>
> pci_update_mappings_add d=0x7f14a73bf890 00:00.1 0,0x84000000+0x4000000
> pci_update_mappings_add d=0x7f14a73bf890 00:00.1 1,0x80000000+0x4000000
> pci_update_mappings_add d=0x7f14a73bf890 00:00.1 2,0x88200000+0x2000
> pci_update_mappings_add d=0x7f14a73bf890 00:00.1 3,0xd060+0x20
>
> The slot and function values are in reverse order.
>
> Stick with the conventional BDF notation.
>
> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Cc: Don Koch <dkoch@verizon.com>
> Cc: qemu-trivial@nongnu.org
> Fixes: 7828d75045
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
can you please add Marcel's R-b too? From
<http://thread.gmane.org/gmane.comp.emulators.qemu/358561/focus=358673>.
Also, the patch has been picked up by Michael Tokarev for qemu-trivial,
<http://thread.gmane.org/gmane.comp.emulators.qemu/358561/focus=358673>.
I apologize for the confusion, but I really couldn't figure out myself
if this should go "only" to trivial, or to PCI "only". I guess the patch
could be dropped from exactly one of the two queues, but I also expect
that whenever the chronologically second one is going to be merged, git
will simply realize that the patch is already present.
So, my point is that please add *both* R-b tags, regardless of which
tree this is going to be pulled from first.
Also: any guidance for the next time I have a trivial patch for PCI?
Should I Cc qemu-trivial, or not?
Thanks!
Laszlo
> ---
> hw/pci/pci.c | 4 ++--
> trace-events | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index eba7ca2..ccea628 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -1154,16 +1154,16 @@ static void pci_update_mappings(PCIDevice *d)
> /* now do the real mapping */
> if (r->addr != PCI_BAR_UNMAPPED) {
> trace_pci_update_mappings_del(d, pci_bus_num(d->bus),
> - PCI_FUNC(d->devfn),
> PCI_SLOT(d->devfn),
> + PCI_FUNC(d->devfn),
> i, r->addr, r->size);
> memory_region_del_subregion(r->address_space, r->memory);
> }
> r->addr = new_addr;
> if (r->addr != PCI_BAR_UNMAPPED) {
> trace_pci_update_mappings_add(d, pci_bus_num(d->bus),
> - PCI_FUNC(d->devfn),
> PCI_SLOT(d->devfn),
> + PCI_FUNC(d->devfn),
> i, r->addr, r->size);
> memory_region_add_subregion_overlap(r->address_space,
> r->addr, r->memory, 1);
> diff --git a/trace-events b/trace-events
> index 0a82f0c..1684a95 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -1303,8 +1303,8 @@ spapr_pci_lsi_set(const char *busname, int pin, uint32_t irq) "%s PIN%d IRQ %u"
> spapr_pci_msi_retry(unsigned config_addr, unsigned req_num, unsigned max_irqs) "Guest device at %x asked %u, have only %u"
>
> # hw/pci/pci.c
> -pci_update_mappings_del(void *d, uint32_t bus, uint32_t func, uint32_t slot, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
> -pci_update_mappings_add(void *d, uint32_t bus, uint32_t func, uint32_t slot, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
> +pci_update_mappings_del(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
> +pci_update_mappings_add(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
>
> # hw/net/pcnet.c
> pcnet_s_reset(void *s) "s=%p"
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PULL 7/7] hw/pci: fix pci_update_mappings() trace events
2015-09-10 9:45 ` Laszlo Ersek
@ 2015-09-10 9:54 ` Michael S. Tsirkin
2015-09-10 10:29 ` Laszlo Ersek
0 siblings, 1 reply; 12+ messages in thread
From: Michael S. Tsirkin @ 2015-09-10 9:54 UTC (permalink / raw)
To: Laszlo Ersek
Cc: Peter Maydell, qemu-trivial, Michael Tokarev, qemu-devel,
Don Koch, Marcel Apfelbaum
On Thu, Sep 10, 2015 at 11:45:01AM +0200, Laszlo Ersek wrote:
> Hi,
>
> On 09/10/15 11:27, Michael S. Tsirkin wrote:
> > From: Laszlo Ersek <lersek@redhat.com>
> >
> > The current trace prototypes and (matching) trace calls lead to
> > "unorthodox" PCI BDF notation in at least the stderr trace backend. For
> > example, the four BARs of a QXL video card at 00:01.0 (bus 0, slot 1,
> > function 0) are traced like this (PID and timestamps removed):
> >
> > pci_update_mappings_add d=0x7f14a73bf890 00:00.1 0,0x84000000+0x4000000
> > pci_update_mappings_add d=0x7f14a73bf890 00:00.1 1,0x80000000+0x4000000
> > pci_update_mappings_add d=0x7f14a73bf890 00:00.1 2,0x88200000+0x2000
> > pci_update_mappings_add d=0x7f14a73bf890 00:00.1 3,0xd060+0x20
> >
> > The slot and function values are in reverse order.
> >
> > Stick with the conventional BDF notation.
> >
> > Cc: "Michael S. Tsirkin" <mst@redhat.com>
> > Cc: Don Koch <dkoch@verizon.com>
> > Cc: qemu-trivial@nongnu.org
> > Fixes: 7828d75045
> > Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> > Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>
> can you please add Marcel's R-b too? From
> <http://thread.gmane.org/gmane.comp.emulators.qemu/358561/focus=358673>.
>
> Also, the patch has been picked up by Michael Tokarev for qemu-trivial,
> <http://thread.gmane.org/gmane.comp.emulators.qemu/358561/focus=358673>.
> I apologize for the confusion, but I really couldn't figure out myself
> if this should go "only" to trivial, or to PCI "only". I guess the patch
> could be dropped from exactly one of the two queues, but I also expect
> that whenever the chronologically second one is going to be merged, git
> will simply realize that the patch is already present.
>
> So, my point is that please add *both* R-b tags, regardless of which
> tree this is going to be pulled from first.
>
> Also: any guidance for the next time I have a trivial patch for PCI?
> Should I Cc qemu-trivial, or not?
>
> Thanks!
> Laszlo
I dropped it from the tag, thanks.
I think you did everything right, but [trivial PATCH] confused
my scripts. Better would be [PATCH <anything>].
For pci, best to Cc just me - I can handle trivial patches there with no
problems.
>
> > ---
> > hw/pci/pci.c | 4 ++--
> > trace-events | 4 ++--
> > 2 files changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> > index eba7ca2..ccea628 100644
> > --- a/hw/pci/pci.c
> > +++ b/hw/pci/pci.c
> > @@ -1154,16 +1154,16 @@ static void pci_update_mappings(PCIDevice *d)
> > /* now do the real mapping */
> > if (r->addr != PCI_BAR_UNMAPPED) {
> > trace_pci_update_mappings_del(d, pci_bus_num(d->bus),
> > - PCI_FUNC(d->devfn),
> > PCI_SLOT(d->devfn),
> > + PCI_FUNC(d->devfn),
> > i, r->addr, r->size);
> > memory_region_del_subregion(r->address_space, r->memory);
> > }
> > r->addr = new_addr;
> > if (r->addr != PCI_BAR_UNMAPPED) {
> > trace_pci_update_mappings_add(d, pci_bus_num(d->bus),
> > - PCI_FUNC(d->devfn),
> > PCI_SLOT(d->devfn),
> > + PCI_FUNC(d->devfn),
> > i, r->addr, r->size);
> > memory_region_add_subregion_overlap(r->address_space,
> > r->addr, r->memory, 1);
> > diff --git a/trace-events b/trace-events
> > index 0a82f0c..1684a95 100644
> > --- a/trace-events
> > +++ b/trace-events
> > @@ -1303,8 +1303,8 @@ spapr_pci_lsi_set(const char *busname, int pin, uint32_t irq) "%s PIN%d IRQ %u"
> > spapr_pci_msi_retry(unsigned config_addr, unsigned req_num, unsigned max_irqs) "Guest device at %x asked %u, have only %u"
> >
> > # hw/pci/pci.c
> > -pci_update_mappings_del(void *d, uint32_t bus, uint32_t func, uint32_t slot, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
> > -pci_update_mappings_add(void *d, uint32_t bus, uint32_t func, uint32_t slot, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
> > +pci_update_mappings_del(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
> > +pci_update_mappings_add(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
> >
> > # hw/net/pcnet.c
> > pcnet_s_reset(void *s) "s=%p"
> >
>
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PULL 7/7] hw/pci: fix pci_update_mappings() trace events
2015-09-10 9:54 ` Michael S. Tsirkin
@ 2015-09-10 10:29 ` Laszlo Ersek
0 siblings, 0 replies; 12+ messages in thread
From: Laszlo Ersek @ 2015-09-10 10:29 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Peter Maydell, qemu-trivial, Michael Tokarev, qemu-devel,
Don Koch, Marcel Apfelbaum
On 09/10/15 11:54, Michael S. Tsirkin wrote:
> On Thu, Sep 10, 2015 at 11:45:01AM +0200, Laszlo Ersek wrote:
>> Hi,
>>
>> On 09/10/15 11:27, Michael S. Tsirkin wrote:
>>> From: Laszlo Ersek <lersek@redhat.com>
>>>
>>> The current trace prototypes and (matching) trace calls lead to
>>> "unorthodox" PCI BDF notation in at least the stderr trace backend. For
>>> example, the four BARs of a QXL video card at 00:01.0 (bus 0, slot 1,
>>> function 0) are traced like this (PID and timestamps removed):
>>>
>>> pci_update_mappings_add d=0x7f14a73bf890 00:00.1 0,0x84000000+0x4000000
>>> pci_update_mappings_add d=0x7f14a73bf890 00:00.1 1,0x80000000+0x4000000
>>> pci_update_mappings_add d=0x7f14a73bf890 00:00.1 2,0x88200000+0x2000
>>> pci_update_mappings_add d=0x7f14a73bf890 00:00.1 3,0xd060+0x20
>>>
>>> The slot and function values are in reverse order.
>>>
>>> Stick with the conventional BDF notation.
>>>
>>> Cc: "Michael S. Tsirkin" <mst@redhat.com>
>>> Cc: Don Koch <dkoch@verizon.com>
>>> Cc: qemu-trivial@nongnu.org
>>> Fixes: 7828d75045
>>> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
>>> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
>>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>>
>> can you please add Marcel's R-b too? From
>> <http://thread.gmane.org/gmane.comp.emulators.qemu/358561/focus=358673>.
>>
>> Also, the patch has been picked up by Michael Tokarev for qemu-trivial,
>> <http://thread.gmane.org/gmane.comp.emulators.qemu/358561/focus=358673>.
>> I apologize for the confusion, but I really couldn't figure out myself
>> if this should go "only" to trivial, or to PCI "only". I guess the patch
>> could be dropped from exactly one of the two queues, but I also expect
>> that whenever the chronologically second one is going to be merged, git
>> will simply realize that the patch is already present.
>>
>> So, my point is that please add *both* R-b tags, regardless of which
>> tree this is going to be pulled from first.
>>
>> Also: any guidance for the next time I have a trivial patch for PCI?
>> Should I Cc qemu-trivial, or not?
>>
>> Thanks!
>> Laszlo
>
> I dropped it from the tag, thanks.
>
> I think you did everything right, but [trivial PATCH] confused
> my scripts. Better would be [PATCH <anything>].
>
> For pci, best to Cc just me - I can handle trivial patches there with no
> problems.
Thanks, I'll try to remember both of these points.
Laszlo
>
>
>>
>>> ---
>>> hw/pci/pci.c | 4 ++--
>>> trace-events | 4 ++--
>>> 2 files changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
>>> index eba7ca2..ccea628 100644
>>> --- a/hw/pci/pci.c
>>> +++ b/hw/pci/pci.c
>>> @@ -1154,16 +1154,16 @@ static void pci_update_mappings(PCIDevice *d)
>>> /* now do the real mapping */
>>> if (r->addr != PCI_BAR_UNMAPPED) {
>>> trace_pci_update_mappings_del(d, pci_bus_num(d->bus),
>>> - PCI_FUNC(d->devfn),
>>> PCI_SLOT(d->devfn),
>>> + PCI_FUNC(d->devfn),
>>> i, r->addr, r->size);
>>> memory_region_del_subregion(r->address_space, r->memory);
>>> }
>>> r->addr = new_addr;
>>> if (r->addr != PCI_BAR_UNMAPPED) {
>>> trace_pci_update_mappings_add(d, pci_bus_num(d->bus),
>>> - PCI_FUNC(d->devfn),
>>> PCI_SLOT(d->devfn),
>>> + PCI_FUNC(d->devfn),
>>> i, r->addr, r->size);
>>> memory_region_add_subregion_overlap(r->address_space,
>>> r->addr, r->memory, 1);
>>> diff --git a/trace-events b/trace-events
>>> index 0a82f0c..1684a95 100644
>>> --- a/trace-events
>>> +++ b/trace-events
>>> @@ -1303,8 +1303,8 @@ spapr_pci_lsi_set(const char *busname, int pin, uint32_t irq) "%s PIN%d IRQ %u"
>>> spapr_pci_msi_retry(unsigned config_addr, unsigned req_num, unsigned max_irqs) "Guest device at %x asked %u, have only %u"
>>>
>>> # hw/pci/pci.c
>>> -pci_update_mappings_del(void *d, uint32_t bus, uint32_t func, uint32_t slot, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
>>> -pci_update_mappings_add(void *d, uint32_t bus, uint32_t func, uint32_t slot, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
>>> +pci_update_mappings_del(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
>>> +pci_update_mappings_add(void *d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "d=%p %02x:%02x.%x %d,%#"PRIx64"+%#"PRIx64
>>>
>>> # hw/net/pcnet.c
>>> pcnet_s_reset(void *s) "s=%p"
>>>
>>
>>
>>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
` (6 preceding siblings ...)
2015-09-10 9:18 ` [Qemu-devel] [PULL 7/7] hw/pci: fix pci_update_mappings() trace events Michael S. Tsirkin
@ 2015-09-10 12:55 ` Peter Maydell
7 siblings, 0 replies; 12+ messages in thread
From: Peter Maydell @ 2015-09-10 12:55 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: QEMU Developers
On 10 September 2015 at 10:17, Michael S. Tsirkin <mst@redhat.com> wrote:
> The following changes since commit fc04a730b7e60f4a62d6260d4eb9c537d1d3643f:
>
> Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20150908' into staging (2015-09-08 18:02:36 +0100)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
>
> for you to fetch changes up to 0f288f854b96f56247e38f4207f71647133f0184:
>
> hw/pci: fix pci_update_mappings() trace events (2015-09-10 12:15:30 +0300)
>
> ----------------------------------------------------------------
> virtio,pc,acpi fixes, cleanups
>
> Fixes all over the place.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2015-09-10 12:55 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-10 9:17 [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 1/7] pci: Fix pci_device_iommu_address_space() bus propagation Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 2/7] pc: Remove redundant arguments from xen_hvm_init() Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 3/7] virtio: avoid leading underscores for helpers Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 4/7] acpi: Remove unused definition Michael S. Tsirkin
2015-09-10 9:17 ` [Qemu-devel] [PULL 5/7] pc: memhotplug: fix incorrectly set reserved-memory-end Michael S. Tsirkin
2015-09-10 9:18 ` [Qemu-devel] [PULL 6/7] pc: memhotplug: keep reserved-memory-end broken on 2.4 and earlier machines Michael S. Tsirkin
2015-09-10 9:18 ` [Qemu-devel] [PULL 7/7] hw/pci: fix pci_update_mappings() trace events Michael S. Tsirkin
2015-09-10 9:45 ` Laszlo Ersek
2015-09-10 9:54 ` Michael S. Tsirkin
2015-09-10 10:29 ` Laszlo Ersek
2015-09-10 12:55 ` [Qemu-devel] [PULL 0/7] virtio,pc,acpi fixes, cleanups Peter Maydell
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).