Message ID | 1520530757-4477-4-git-send-email-ian.jackson@eu.citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Mar 08, 2018 at 05:39:09PM +0000, Ian Jackson wrote: [...] > diff --git a/vl.c b/vl.c > index dae986b..e6e8e1e 100644 > --- a/vl.c > +++ b/vl.c > @@ -4719,6 +4719,7 @@ int main(int argc, char **argv, char **envp) > vm_start(); > } > > + xen_setup_post(); I don't think we should have accelerator-specific code in main(), if we already have accelerator classes that can abstract that out. I suggest adding a AccelClass;:setup_post() method that can be called here.
Eduardo Habkost writes ("Re: [PATCH 03/11] xen: defer call to xen_restrict until just before os_setup_post"): > On Thu, Mar 08, 2018 at 05:39:09PM +0000, Ian Jackson wrote: > [...] > > diff --git a/vl.c b/vl.c > > + xen_setup_post(); > > I don't think we should have accelerator-specific code in main(), > if we already have accelerator classes that can abstract that > out. I suggest adding a AccelClass;:setup_post() method that can > be called here. I think I can do that. Although, it is a bit disappointing to be given this feedback in v6 of this series. Did the right people not get CC'd on v5 in October ? Ian.
On Fri, Mar 09, 2018 at 11:33:35AM +0000, Ian Jackson wrote: > Eduardo Habkost writes ("Re: [PATCH 03/11] xen: defer call to xen_restrict until just before os_setup_post"): > > On Thu, Mar 08, 2018 at 05:39:09PM +0000, Ian Jackson wrote: > > [...] > > > diff --git a/vl.c b/vl.c > > > + xen_setup_post(); > > > > I don't think we should have accelerator-specific code in main(), > > if we already have accelerator classes that can abstract that > > out. I suggest adding a AccelClass;:setup_post() method that can > > be called here. > > I think I can do that. > > Although, it is a bit disappointing to be given this feedback in v6 of > this series. Did the right people not get CC'd on v5 in October ? That is entirely my fault, for not paying attention to the patch back in october (I was CCed on it). Sorry for that.
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index f24b7d4..9c3b6b3 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -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; diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c index 83099dd..f73b416 100644 --- a/hw/xen/xen-common.c +++ b/hw/xen/xen-common.c @@ -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); diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index d24ad09..6b785a4 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -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 { diff --git a/stubs/xen-hvm.c b/stubs/xen-hvm.c index 0067bcc..48ca8da 100644 --- a/stubs/xen-hvm.c +++ b/stubs/xen-hvm.c @@ -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) +{ +} diff --git a/vl.c b/vl.c index dae986b..e6e8e1e 100644 --- a/vl.c +++ b/vl.c @@ -4719,6 +4719,7 @@ int main(int argc, char **argv, char **envp) vm_start(); } + xen_setup_post(); os_setup_post(); main_loop();