[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5.1 6/8] xen: destroy_hvm_domain: Try xendevice
From: |
Stefano Stabellini |
Subject: |
Re: [Qemu-devel] [PATCH v5.1 6/8] xen: destroy_hvm_domain: Try xendevicemodel_shutdown |
Date: |
Thu, 26 Oct 2017 15:26:27 -0700 (PDT) |
User-agent: |
Alpine 2.10 (DEB 1266 2009-07-14) |
On Fri, 20 Oct 2017, Ian Jackson wrote:
> xc_interface_open etc. is not going to work if we have dropped
> privilege, but xendevicemodel_shutdown will if everything is new
> enough.
>
> xendevicemodel_shutdown is only availabe in Xen 4.10 and later, so
> provide a stub for earlier versions.
>
> Signed-off-by: Ian Jackson <address@hidden>
> Reviewed-by: Anthony PERARD <address@hidden>
> ---
> v2: Add compatibility stub for Xen < 4.10.
> Fix coding style.
> ---
> hw/i386/xen/xen-hvm.c | 10 ++++++++++
> include/hw/xen/xen_common.h | 7 +++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index 83420cd..25b8b14 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -1386,9 +1386,19 @@ void destroy_hvm_domain(bool reboot)
> {
> xc_interface *xc_handle;
> int sts;
> + int rc;
>
> unsigned int reason = reboot ? SHUTDOWN_reboot : SHUTDOWN_poweroff;
>
> + if (xen_dmod) {
> + rc = xendevicemodel_shutdown(xen_dmod, xen_domid, reason);
> + if (!rc) {
> + return;
> + }
> + perror("xendevicemodel_shutdown failed");
I don't think is a good idea to print an error because this is actually
a normal condition when QEMU is build and run against an older Xen.
Users might get confused when looking at the logs.
But it would be correct to print an error if errno != ENOTTY.
> + /* well, try the old thing then */
> + }
> +
> xc_handle = xc_interface_open(0, 0, 0);
> if (xc_handle == NULL) {
> fprintf(stderr, "Cannot acquire xenctrl handle\n");
> diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h
> index 8efdb8a..1d6fb57 100644
> --- a/include/hw/xen/xen_common.h
> +++ b/include/hw/xen/xen_common.h
> @@ -108,6 +108,13 @@ static inline int xentoolcore_restrict_all(domid_t domid)
> return -1;
> }
>
> +static inline int xendevicemodel_shutdown(xendevicemodel_handle *dmod,
> + domid_t domid, unsigned int reason)
> +{
> + errno = ENOTTY;
> + return -1;
> +}
> +
> #else /* CONFIG_XEN_CTRL_INTERFACE_VERSION >= 41000 */
>
> #include <xentoolcore.h>
> --
> 2.1.4
>
- Re: [Qemu-devel] [PATCH v5 0/8] xen: xen-domid-restrict improvements, (continued)
- [Qemu-devel] [PATCH v5.1 3/8] xen: defer call to xen_restrict until just before os_setup_post, Ian Jackson, 2017/10/20
- Re: [Qemu-devel] [PATCH v5.1 3/8] xen: defer call to xen_restrict until just before os_setup_post, Stefano Stabellini, 2017/10/26
- [Qemu-devel] [PATCH v5.1 6/8] xen: destroy_hvm_domain: Try xendevicemodel_shutdown, Ian Jackson, 2017/10/20
- Re: [Qemu-devel] [PATCH v5.1 6/8] xen: destroy_hvm_domain: Try xendevicemodel_shutdown,
Stefano Stabellini <=
- Re: [Qemu-devel] [PATCH v5.1 6/8] xen: destroy_hvm_domain: Try xendevicemodel_shutdown, Ian Jackson, 2017/10/27
- [Qemu-devel] [PATCH v5.1 4/8] xen: destroy_hvm_domain: Move reason into a variable, Ian Jackson, 2017/10/20
- Re: [Qemu-devel] [PATCH v5.1 4/8] xen: destroy_hvm_domain: Move reason into a variable, Stefano Stabellini, 2017/10/26
- [Qemu-devel] [PATCH v5.1 2/8] xen: restrict: use xentoolcore_restrict_all, Ian Jackson, 2017/10/20
- Re: [Qemu-devel] [PATCH v5.1 2/8] xen: restrict: use xentoolcore_restrict_all, Stefano Stabellini, 2017/10/26
- Re: [Qemu-devel] [PATCH v5.1 2/8] xen: restrict: use xentoolcore_restrict_all, Ian Jackson, 2017/10/27
- Re: [Qemu-devel] [PATCH v5.1 2/8] xen: restrict: use xentoolcore_restrict_all, Stefano Stabellini, 2017/10/27
- [Qemu-devel] [PATCH v5.1 7/8] os-posix: Provide new -runas <uid>:<gid> facility, Ian Jackson, 2017/10/20
- Re: [Qemu-devel] [PATCH v5.1 7/8] os-posix: Provide new -runas <uid>:<gid> facility, Anthony PERARD, 2017/10/24
- Re: [Qemu-devel] [PATCH v5.1 7/8] os-posix: Provide new -runas <uid>:<gid> facility, Ian Jackson, 2017/10/24