[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 01/22] xen: Provide XEN_DMOP_remote_shutdown
SCHEDOP_remote_shutdown should be a DMOP so that a deprivileged qemu can do the propery tidying up. We should remove SCHEDOP_remote_shutdown at some point. CC: Jan Beulich <jbeulich@xxxxxxxx> CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: George Dunlap <George.Dunlap@xxxxxxxxxxxxx> CC: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Tim Deegan <tim@xxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> --- xen/arch/x86/hvm/dm.c | 9 +++++++++ xen/include/public/hvm/dm_op.h | 12 ++++++++++++ xen/include/xlat.lst | 1 + 3 files changed, 22 insertions(+) diff --git a/xen/arch/x86/hvm/dm.c b/xen/arch/x86/hvm/dm.c index 4cf6dee..9eee9fb 100644 --- a/xen/arch/x86/hvm/dm.c +++ b/xen/arch/x86/hvm/dm.c @@ -630,6 +630,14 @@ static int dm_op(const struct dmop_args *op_args) rc = hvm_inject_msi(d, data->addr, data->data); break; } + case XEN_DMOP_remote_shutdown: + { + const struct xen_dm_op_remote_shutdown *data = + &op.u.remote_shutdown; + + domain_shutdown(d, data->reason); + break; + } default: rc = -EOPNOTSUPP; @@ -659,6 +667,7 @@ CHECK_dm_op_modified_memory; CHECK_dm_op_set_mem_type; CHECK_dm_op_inject_event; CHECK_dm_op_inject_msi; +CHECK_dm_op_remote_shutdown; int compat_dm_op(domid_t domid, unsigned int nr_bufs, diff --git a/xen/include/public/hvm/dm_op.h b/xen/include/public/hvm/dm_op.h index 2a4c3d9..21552b7 100644 --- a/xen/include/public/hvm/dm_op.h +++ b/xen/include/public/hvm/dm_op.h @@ -357,6 +357,17 @@ struct xen_dm_op_map_mem_type_to_ioreq_server { has to be set to zero by the caller */ }; +/* + * XEN_DMOP_remote_shutdown : Declare a shutdown for another domain + * Identical to SCHEDOP_remote_shutdown + */ +#define XEN_DMOP_remote_shutdown 16 + +struct xen_dm_op_remote_shutdown { + uint32_t reason; /* SHUTDOWN_* => enum sched_shutdown_reason */ + /* (Other reason values are not blocked) */ +}; + struct xen_dm_op { uint32_t op; uint32_t pad; @@ -377,6 +388,7 @@ struct xen_dm_op { struct xen_dm_op_inject_msi inject_msi; struct xen_dm_op_map_mem_type_to_ioreq_server map_mem_type_to_ioreq_server; + struct xen_dm_op_remote_shutdown remote_shutdown; } u; }; diff --git a/xen/include/xlat.lst b/xen/include/xlat.lst index 0f17000..20055b4 100644 --- a/xen/include/xlat.lst +++ b/xen/include/xlat.lst @@ -70,6 +70,7 @@ ? dm_op_set_pci_intx_level hvm/dm_op.h ? dm_op_set_pci_link_route hvm/dm_op.h ? dm_op_track_dirty_vram hvm/dm_op.h +? dm_op_remote_shutdown hvm/dm_op.h ? vcpu_hvm_context hvm/hvm_vcpu.h ? vcpu_hvm_x86_32 hvm/hvm_vcpu.h ? vcpu_hvm_x86_64 hvm/hvm_vcpu.h -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |