From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vitaly Kuznetsov Subject: [PATCH v9 00/11] toolstack-assisted approach to PVHVM guest kexec Date: Thu, 16 Jul 2015 18:27:15 +0200 Message-ID: <1437064046-12174-1-git-send-email-vkuznets@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZFm0W-0004Nj-KE for xen-devel@lists.xenproject.org; Thu, 16 Jul 2015 16:27:36 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Andrew Jones , Julien Grall , Keir Fraser , Ian Campbell , Stefano Stabellini , Andrew Cooper , Ian Jackson , Olaf Hering , Tim Deegan , David Vrabel , Jan Beulich , Wei Liu , Daniel De Graaf List-Id: xen-devel@lists.xenproject.org This patch series provides x86 PVHVM domains with an ability to perform kexec/kdump-style operations. Changes since v8 (also mentioned in individual patches) grouped by reviewer's name: [Ian Jackson] - PATCH 01: - describe the expected behavior for 'soft reset'. - PATCH 02: - Introduce on_soft_reset here (moved from PATCH 11). - PATCH 09: - Add 'Acked-by:'. - PATCH 11: - Redistribution of hunks between this patch and PATCH 3. - Shorten lines to 70-75 chars. - Rephrase 'soft-reset' action in xl.cfg.pod.5. [Konrad Rzeszutek Wilk] - PATCH 03: - Add 'Reviewed-by:'. - PATCH 04: - Check !d->controller_pause_count instead of pausing/unpausing the domain in evtchn_reset(). - PATCH 05: - Use WARN_GRANT_MAX define instead of hardcoded 10. - Update commit message explaining why 'g' keyhandler is not enough. - PATCH 06: - Introduce vcpu_info_reset() helper. - Take shutdown_lock while checking v->paused_for_shutdown in domain_soft_reset(). - PATCH 08: - Comments fixes. - pirq 0 is a valid pirq. - s/0/PAGE_ORDER_4K/ for guest_physmap_{add,remove}_page. - Free new page in case of guest_physmap_add_page() failure. - PATCH 09: - Add 'Reviewed-by:'. - PATCH 11: - Pause/unpase the domain when doing xc_domain_soft_reset. [Daniel De Graaf] - PATCH 07: - Add 'Acked-by:'. [Julien Grall] - PATCH 08: - Make ARM-specific hook return -ENOSYS. [Wei Liu] - PATCH 09: - Add 'Acked-by:'. Original description: The list of currently known issues blocking kexec (and why the series is required) is: - Bound event channels. - Registered vcpu_info. - PIRQ/emuirq mappings. - shared_info frame after XENMAPSPACE_shared_info operation. - Active grant mappings. Previously there were several attempts to solve these issues in different ways: - Individual 'shutdown' hypercalls (e.g. VCPUOP_reset_vcpu_info) (we agreed that one 'reset everything' hypercall is better). - Try building new domain reassigning old domain's memory (memory reassignment turned out being too cumbersome). - Toolstack-less 'reset everything' (turned out being impossible because there is not enough knowledge in the hypervisor, e.g. interdomain channels are being set up by the toolstack). This series is a mix of the previously sent 'toolstack-based' and 'reset everything' series. Here are some key points: - No new domain is created. - Domain is asking for soft reset with SCHEDOP_shutdown with SHUTDOWN_soft_reset shutdown reason. - XEN_DOMCTL_soft_reset is being called by the toolstack. - Device model is being restarted. With regards to active grants. In this series we restart domain's device model, remove it from xenstore and introduce it back. The only 'misbehaving' backend keeping active mapping I currently observe is xenconsoled: currently it has no interface to disconnect from a domain (it just periodically scans all domains to determine if any of them are dead). This is not an issue for us because: - This matches standard domain startup as this grant mapping is being set up by the toolstack. - Guest domain is aware of this special page. grant_table_warn_active_grants() is required to find possible misbehaving backends in future. v8 of the 'toolstack-assisted approach to pvhvm guest kexec' is available here: http://lists.xen.org/archives/html/xen-devel/2015-06/msg03632.html Vitaly Kuznetsov (11): xen: introduce SHUTDOWN_soft_reset shutdown reason libxl: support SHUTDOWN_soft_reset shutdown reason xl: introduce enum domain_restart_type xen: evtchn: make evtchn_reset() ready for soft reset xen: grant_table: implement grant_table_warn_active_grants() xen: Introduce XEN_DOMCTL_soft_reset flask: DOMCTL_soft_reset support xen: arch-specific hooks for domain_soft_reset() libxc: support XEN_DOMCTL_soft_reset operation libxc: add XC_DEVICE_MODEL_SAVE_FILE (lib)xl: soft reset support docs/man/xl.cfg.pod.5 | 10 ++ tools/flask/policy/policy/modules/xen/xen.if | 2 +- tools/libxc/include/xenctrl.h | 3 + tools/libxc/include/xenguest.h | 2 + tools/libxc/xc_domain.c | 9 ++ tools/libxl/libxl.c | 23 +++- tools/libxl/libxl.h | 15 +++ tools/libxl/libxl_create.c | 193 ++++++++++++++++++++++++--- tools/libxl/libxl_dm.c | 2 +- tools/libxl/libxl_internal.h | 4 + tools/libxl/libxl_types.idl | 4 + tools/libxl/xl.h | 7 + tools/libxl/xl_cmdimpl.c | 58 +++++--- tools/python/xen/lowlevel/xl/xl.c | 1 + xen/arch/arm/domain.c | 5 + xen/arch/x86/domain.c | 84 ++++++++++++ xen/arch/x86/hvm/hvm.c | 2 +- xen/common/domain.c | 48 +++++-- xen/common/domctl.c | 9 ++ xen/common/event_channel.c | 43 +++--- xen/common/grant_table.c | 35 +++++ xen/common/shutdown.c | 6 + xen/include/asm-x86/hvm/hvm.h | 2 + xen/include/public/domctl.h | 1 + xen/include/public/sched.h | 11 +- xen/include/xen/domain.h | 2 + xen/include/xen/event.h | 3 + xen/include/xen/grant_table.h | 5 + xen/include/xen/sched.h | 2 + xen/xsm/flask/hooks.c | 3 + xen/xsm/flask/policy/access_vectors | 2 + 31 files changed, 518 insertions(+), 78 deletions(-) -- 2.4.3