@@ -1254,14 +1254,6 @@ void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory)
goto err;
}
- if (xen_domid_restrict) {
- rc = xen_restrict(xen_domid);
- if (rc < 0) {
- error_report("failed to restrict: error %d", errno);
- goto err;
- }
- }
-
xen_create_ioreq_server(xen_domid, &state->ioservid);
state->exit.notify = xen_exit_notifier;
@@ -117,6 +117,19 @@ static void xen_change_state_handler(void *opaque, int running,
}
}
+void xen_setup_post(void)
+{
+ int rc;
+
+ if (xen_domid_restrict) {
+ rc = xen_restrict(xen_domid);
+ if (rc < 0) {
+ perror("xen: failed to restrict");
+ exit(1);
+ }
+ }
+}
+
static int xen_init(MachineState *ms)
{
xen_xc = xc_interface_open(0, 0, 0);
@@ -92,6 +92,8 @@ void qemu_remove_machine_init_done_notifier(Notifier *notify);
void qemu_announce_self(void);
+void xen_setup_post(void);
+
extern int autostart;
typedef enum {
@@ -13,6 +13,7 @@
#include "hw/xen/xen.h"
#include "exec/memory.h"
#include "qapi/qapi-commands-misc.h"
+#include "sysemu/sysemu.h"
int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
{
@@ -61,3 +62,7 @@ void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory)
void qmp_xen_set_global_dirty_log(bool enable, Error **errp)
{
}
+
+void xen_setup_post(void)
+{
+}
@@ -4719,6 +4719,7 @@ int main(int argc, char **argv, char **envp)
vm_start();
}
+ xen_setup_post();
os_setup_post();
main_loop();