[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH RFC 2/2] xen/kexec: Reserve KEXEC_TYPE_LIVEUPDATE and KEXEC_RANGE_MA_LIVEUPDATE



On 06/05/2021 11:42, Julien Grall wrote:
From: Julien Grall <jgrall@xxxxxxxxxx>

Unfortunately, the code to support Live Update has already been merged in
Kexec and shipped since 2.0.21. Reserve the IDs used by Kexec before they
end up to be re-used for a different purpose.

This patch reserves two IDs:
     * KEXEC_TYPE_LIVEUPDATE: New operation to request Live Update
     * KEXEC_MA_RANGE_LIVEUPDATE: New range to query the Live Update
       area below Xen

Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx>

Reviewed-by: Paul Durrant <paul@xxxxxxx>

---
  xen/include/public/kexec.h | 13 ++++++++++---
  1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/xen/include/public/kexec.h b/xen/include/public/kexec.h
index 3f2a118381ba..650d2feb036f 100644
--- a/xen/include/public/kexec.h
+++ b/xen/include/public/kexec.h
@@ -71,17 +71,22 @@
   */
/*
- * Kexec supports two types of operation:
+ * Kexec supports three types of operation:
   * - kexec into a regular kernel, very similar to a standard reboot
   *   - KEXEC_TYPE_DEFAULT is used to specify this type
   * - kexec into a special "crash kernel", aka kexec-on-panic
   *   - KEXEC_TYPE_CRASH is used to specify this type
   *   - parts of our system may be broken at kexec-on-panic time
   *     - the code should be kept as simple and self-contained as possible
+ * - Live update into a new Xen, preserving all running domains
+ *   - KEXEC_TYPE_LIVE_UPDATE is used to specify this type
+ *   - Xen performs non-cooperative live migration and stores live
+ *     update state in memory, passing it to the new Xen.
   */
-#define KEXEC_TYPE_DEFAULT 0
-#define KEXEC_TYPE_CRASH   1
+#define KEXEC_TYPE_DEFAULT      0
+#define KEXEC_TYPE_CRASH        1
+#define KEXEC_TYPE_LIVEUPDATE   2
/* The kexec implementation for Xen allows the user to load two
@@ -150,6 +155,8 @@ typedef struct xen_kexec_load_v1 {
  #define KEXEC_RANGE_MA_EFI_MEMMAP 5 /* machine address and size of
                                       * of the EFI Memory Map */
  #define KEXEC_RANGE_MA_VMCOREINFO 6 /* machine address and size of vmcoreinfo 
*/
+/* machine address and size of the Live Update area below Xen */
+#define KEXEC_RANGE_MA_LIVEUPDATE 7
/*
   * Find the address and size of certain memory areas





 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.