[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 08/47] libqos: Add qpci_plug_device_test() and qpci_u
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PULL 08/47] libqos: Add qpci_plug_device_test() and qpci_unplug_acpi_device_test() |
Date: |
Wed, 15 Oct 2014 05:08:42 +0200 |
From: Igor Mammedov <address@hidden>
Functions will be used for testing hot(un)plug of PCI devices.
Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>
---
tests/libqos/pci-pc.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
tests/libqos/pci.h | 3 +++
2 files changed, 52 insertions(+)
diff --git a/tests/libqos/pci-pc.c b/tests/libqos/pci-pc.c
index 0609294..6dba0db 100644
--- a/tests/libqos/pci-pc.c
+++ b/tests/libqos/pci-pc.c
@@ -20,6 +20,9 @@
#include <glib.h>
+#define ACPI_PCIHP_ADDR 0xae00
+#define PCI_EJ_BASE 0x0008
+
typedef struct QPCIBusPC
{
QPCIBus bus;
@@ -247,3 +250,49 @@ void qpci_free_pc(QPCIBus *bus)
g_free(s);
}
+
+void qpci_plug_device_test(const char *driver, const char *id,
+ uint8_t slot, const char *opts)
+{
+ QDict *response;
+ char *cmd;
+
+ cmd = g_strdup_printf("{'execute': 'device_add',"
+ " 'arguments': {"
+ " 'driver': '%s',"
+ " 'addr': '%d',"
+ " %s%s"
+ " 'id': '%s'"
+ "}}", driver, slot,
+ opts ? opts : "", opts ? "," : "",
+ id);
+ response = qmp(cmd);
+ g_free(cmd);
+ g_assert(response);
+ g_assert(!qdict_haskey(response, "error"));
+ QDECREF(response);
+}
+
+void qpci_unplug_acpi_device_test(const char *id, uint8_t slot)
+{
+ QDict *response;
+ char *cmd;
+
+ cmd = g_strdup_printf("{'execute': 'device_del',"
+ " 'arguments': {"
+ " 'id': '%s'"
+ "}}", id);
+ response = qmp(cmd);
+ g_free(cmd);
+ g_assert(response);
+ g_assert(!qdict_haskey(response, "error"));
+ QDECREF(response);
+
+ outb(ACPI_PCIHP_ADDR + PCI_EJ_BASE, 1 << slot);
+
+ response = qmp("");
+ g_assert(response);
+ g_assert(qdict_haskey(response, "event"));
+ g_assert(!strcmp(qdict_get_str(response, "event"), "DEVICE_DELETED"));
+ QDECREF(response);
+}
diff --git a/tests/libqos/pci.h b/tests/libqos/pci.h
index d51eb9e..dfaee9e 100644
--- a/tests/libqos/pci.h
+++ b/tests/libqos/pci.h
@@ -87,4 +87,7 @@ void qpci_io_writel(QPCIDevice *dev, void *data, uint32_t
value);
void *qpci_iomap(QPCIDevice *dev, int barno, uint64_t *sizeptr);
void qpci_iounmap(QPCIDevice *dev, void *data);
+void qpci_plug_device_test(const char *driver, const char *id,
+ uint8_t slot, const char *opts);
+void qpci_unplug_acpi_device_test(const char *id, uint8_t slot);
#endif
--
1.8.4.5
- [Qemu-devel] [PULL 00/47] QOM devices patch queue 2014-10-15, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 01/47] qdev: gpio: Don't allow name share between I and O, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 02/47] qdev: gpio: Register GPIO inputs as child objects, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 03/47] qdev: gpio: Register GPIO outputs as QOM links, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 07/47] tests: virtio-serial: Check if hot-plug/unplug works, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 06/47] tests: virtio-scsi: Check if hot-plug/unplug works, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 04/47] qom: Add error handler for object_property_print(), Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 08/47] libqos: Add qpci_plug_device_test() and qpci_unplug_acpi_device_test(),
Andreas Färber <=
- [Qemu-devel] [PULL 09/47] tests: virtio-rng: Check if hot-plug/unplug works, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 05/47] qom: Add error handler for object alias property, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 11/47] tests: virtio-blk: Check if hot-plug/unplug works, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 10/47] tests: virtio-net: Check if hot-plug/unplug works, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 13/47] tests: usb: add port test to uhci unit test, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 16/47] tests: usb: usb-uas hotplug test, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 12/47] tests: usb: Move uhci port test code to libqos/usb.c, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 19/47] qdev: HotplugHandler: Rename unplug callback to unplug_request, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 14/47] tests: usb: Generic usb device hotplug, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 20/47] qdev: HotplugHandler: Provide unplug callback, Andreas Färber, 2014/10/14