[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [qemu-xen-unstable] qemu-xen: support qdisk with stubdoms
commit dd9d12dc85dfc5f873c8d57bd42f09b81219c250 Author: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Date: Tue Nov 23 17:57:17 2010 +0000 qemu-xen: support qdisk with stubdoms In the qemu used as backend provider for stubdoms, register two qdisk backends: one for the stubdom and one for the guest. Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- hw/xen_backend.c | 2 +- hw/xen_backend.h | 1 + hw/xen_machine_pv.c | 5 +++++ qemu-xen.h | 1 + xenstore.c | 36 ++++++++++++++++++++++++++++++++++++ 5 files changed, 44 insertions(+), 1 deletions(-) diff --git a/hw/xen_backend.c b/hw/xen_backend.c index afd0bf2..537e21f 100644 --- a/hw/xen_backend.c +++ b/hw/xen_backend.c @@ -526,7 +526,7 @@ void xen_be_check_state(struct XenDevice *xendev) /* ------------------------------------------------------------- */ -static int xenstore_scan(const char *type, int dom, struct XenDevOps *ops) +int xenstore_scan(const char *type, int dom, struct XenDevOps *ops) { struct XenDevice *xendev; char path[XEN_BUFSIZE], token[XEN_BUFSIZE]; diff --git a/hw/xen_backend.h b/hw/xen_backend.h index c48c593..28e77ac 100644 --- a/hw/xen_backend.h +++ b/hw/xen_backend.h @@ -78,6 +78,7 @@ void xen_be_check_state(struct XenDevice *xendev); /* xen backend driver bits */ int xen_be_init(void); int xen_be_register(const char *type, struct XenDevOps *ops); +int xenstore_scan(const char *type, int dom, struct XenDevOps *ops); int xen_be_set_state(struct XenDevice *xendev, enum xenbus_state state); int xen_be_bind_evtchn(struct XenDevice *xendev); void xen_be_unbind_evtchn(struct XenDevice *xendev); diff --git a/hw/xen_machine_pv.c b/hw/xen_machine_pv.c index b2475ba..7243174 100644 --- a/hw/xen_machine_pv.c +++ b/hw/xen_machine_pv.c @@ -27,6 +27,7 @@ #include "sysemu.h" #include "boards.h" #include "xen_backend.h" +#include "qemu-xen.h" #ifndef CONFIG_STUBDOM #include <hw/xen_blktap.h> @@ -44,6 +45,7 @@ static void xen_init_pv(ram_addr_t ram_size, int vga_ram_size, const char *direct_pci) { CPUState *env; + uint32_t domid_target; #ifndef CONFIG_STUBDOM /* Initialize tapdisk client */ @@ -70,6 +72,9 @@ static void xen_init_pv(ram_addr_t ram_size, int vga_ram_size, xen_be_register("vkbd", &xen_kbdmouse_ops); xen_be_register("vfb", &xen_framebuffer_ops); xen_be_register("qdisk", &xen_blkdev_ops); + domid_target = xenstore_read_target(); + if (domid_target) + xenstore_scan("qdisk", domid_target, &xen_blkdev_ops); /* setup framebuffer */ xen_init_display(xen_domid); diff --git a/qemu-xen.h b/qemu-xen.h index 7821b54..0e70dbe 100644 --- a/qemu-xen.h +++ b/qemu-xen.h @@ -63,6 +63,7 @@ void handle_buffered_pio(void); /* xenstore.c */ void xenstore_init(void); +uint32_t xenstore_read_target(void); void xenstore_parse_domain_config(int domid); int xenstore_parse_disable_pf_config(void); int xenstore_fd(void); diff --git a/xenstore.c b/xenstore.c index b7e7c28..d364a5e 100644 --- a/xenstore.c +++ b/xenstore.c @@ -391,6 +391,42 @@ static const char *xenstore_get_guest_uuid(void) return already_computed; } +uint32_t xenstore_read_target(void) +{ + char *domain_path = NULL, *target_path = NULL, *target_value = NULL, *p = NULL; + unsigned int len; + uint32_t target_domid = 0; + + if (xsh == NULL) + return 0; + + domain_path = xs_get_domain_path(xsh, domid); + if (domain_path == NULL) { + fprintf(logfile, "xs_get_domain_path() error. domid %d.\n", domid); + goto out; + } + + if (pasprintf(&target_path, "%s/target", domain_path) == -1) { + fprintf(logfile, "xenstore_get_guest_uuid(): out of memory.\n"); + goto out; + } + target_value = xs_read(xsh, XBT_NULL, target_path, &len); + if (target_value == NULL) { + fprintf(logfile, "xs_read(): target get error. %s.\n", target_path); + goto out; + } + + fprintf(logfile, "target = %s\n", target_value); + target_domid = strtoul(target_value, NULL, 10); + + out: + free(domain_path); + free(target_path); + free(target_value); + + return target_domid; +} + #define PT_PCI_MSITRANSLATE_DEFAULT 1 #define PT_PCI_POWER_MANAGEMENT_DEFAULT 0 int direct_pci_msitranslate; -- generated by git-patchbot for /home/xen/git/qemu-xen-unstable.git _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |