From nobody Mon Feb 9 20:32:13 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1602185004; cv=none; d=zohomail.com; s=zohoarc; b=g+MSqmX1zrtDz1MjA32Wce4ordI7es5vyrViN/Xs8RgxJnHeTPTAMhu1DPuj6Xp3v8THuqZslN8/y/u3W5IFYThfJG4rHoT5GkcUWIhx5iSNNRUrjwn9H58Wk99nGZ2qC/YPGYJIxFwn93RbtNm1CdwkUZ97RSum012DEgY3mD0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602185004; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NK7CpHuHkdziWvYnINTC4RC1wRqkyK5TJ03pOR95Gpw=; b=GfjxWm06zOgCm7njzqMYMxkwLdpI8ack5YN2jN9j5CjBNBbMmeEpWS0DbkYrhLceDPgiNVf2h6IfSxbrkLBeN/k55SJDdHZDyNaE6Aoyt5MXGPIiZg/PsSq8PxW3j5RQKxU9E6QPvbAY2AbJArD3N2QLKAL1luOfEZi4pKnTTMI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1602185004958179.60002864188277; Thu, 8 Oct 2020 12:23:24 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.4613.12182 (Exim 4.92) (envelope-from ) id 1kQbVJ-00024s-As; Thu, 08 Oct 2020 19:23:05 +0000 Received: by outflank-mailman (output) from mailman id 4613.12182; Thu, 08 Oct 2020 19:23:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kQbVJ-00024k-5y; Thu, 08 Oct 2020 19:23:05 +0000 Received: by outflank-mailman (input) for mailman id 4613; Thu, 08 Oct 2020 19:23:04 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kQbVH-00022n-V7 for xen-devel@lists.xenproject.org; Thu, 08 Oct 2020 19:23:03 +0000 Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 15f5fd7e-b207-46b1-9f4d-2ad76c0f10ab; Thu, 08 Oct 2020 19:22:58 +0000 (UTC) Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kQbVA-0004dx-MV; Thu, 08 Oct 2020 19:22:56 +0000 Received: from host109-146-187-185.range109-146.btcentralplus.com ([109.146.187.185] helo=u2f063a87eabd5f.home) by xenbits.xenproject.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kQb6u-0002P9-W8; Thu, 08 Oct 2020 18:57:53 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kQbVH-00022n-V7 for xen-devel@lists.xenproject.org; Thu, 08 Oct 2020 19:23:03 +0000 Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 15f5fd7e-b207-46b1-9f4d-2ad76c0f10ab; Thu, 08 Oct 2020 19:22:58 +0000 (UTC) Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kQbVA-0004dx-MV; Thu, 08 Oct 2020 19:22:56 +0000 Received: from host109-146-187-185.range109-146.btcentralplus.com ([109.146.187.185] helo=u2f063a87eabd5f.home) by xenbits.xenproject.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kQb6u-0002P9-W8; Thu, 08 Oct 2020 18:57:53 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 15f5fd7e-b207-46b1-9f4d-2ad76c0f10ab DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=NK7CpHuHkdziWvYnINTC4RC1wRqkyK5TJ03pOR95Gpw=; b=fgPKe+f5yoRg42ttK4I/VvlcO9 UL8ifZWH2gcHck4+lsRqprbrM2r3/gvTAUXtNiIAkxciGsycfdWXQTjkpSHKRWfLz6wTUCXuciwlE 3wHOrcUtitTYdZV5X6p+fKxDMCKykIx4oSE0RhMlA3sVcp5BvXsJ+ExhhwkfkPmJg1c8=; From: Paul Durrant To: xen-devel@lists.xenproject.org Cc: Paul Durrant , Andrew Cooper , Ian Jackson , Wei Liu Subject: [PATCH v10 11/11] tools/libs/guest: add code to save a v4 libxc stream Date: Thu, 8 Oct 2020 19:57:35 +0100 Message-Id: <20201008185735.29875-12-paul@xen.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201008185735.29875-1-paul@xen.org> References: <20201008185735.29875-1-paul@xen.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @xen.org) Content-Type: text/plain; charset="utf-8" From: Paul Durrant This patch adds the necessary code to save a REC_TYPE_DOMAIN_CONTEXT record, and stop saving the now obsolete REC_TYPE_SHARED_INFO and REC_TYPE_TSC_INFO records for PV guests. Signed-off-by: Paul Durrant --- Cc: Andrew Cooper Cc: Ian Jackson Cc: Wei Liu v10: - New in v10 - Derived from patch #8 of the v9 series --- tools/libs/guest/xg_sr_common_x86.c | 20 ----------- tools/libs/guest/xg_sr_common_x86.h | 6 ---- tools/libs/guest/xg_sr_save.c | 52 ++++++++++++++++++++++++++- tools/libs/guest/xg_sr_save_x86_hvm.c | 5 --- tools/libs/guest/xg_sr_save_x86_pv.c | 22 ------------ 5 files changed, 51 insertions(+), 54 deletions(-) diff --git a/tools/libs/guest/xg_sr_common_x86.c b/tools/libs/guest/xg_sr_c= ommon_x86.c index 6f12483907..10a35b998e 100644 --- a/tools/libs/guest/xg_sr_common_x86.c +++ b/tools/libs/guest/xg_sr_common_x86.c @@ -1,25 +1,5 @@ #include "xg_sr_common_x86.h" =20 -int write_x86_tsc_info(struct xc_sr_context *ctx) -{ - xc_interface *xch =3D ctx->xch; - struct xc_sr_rec_x86_tsc_info tsc =3D {}; - struct xc_sr_record rec =3D { - .type =3D REC_TYPE_X86_TSC_INFO, - .length =3D sizeof(tsc), - .data =3D &tsc, - }; - - if ( xc_domain_get_tsc_info(xch, ctx->domid, &tsc.mode, - &tsc.nsec, &tsc.khz, &tsc.incarnation) < 0= ) - { - PERROR("Unable to obtain TSC information"); - return -1; - } - - return write_record(ctx, &rec); -} - int handle_x86_tsc_info(struct xc_sr_context *ctx, struct xc_sr_record *re= c) { xc_interface *xch =3D ctx->xch; diff --git a/tools/libs/guest/xg_sr_common_x86.h b/tools/libs/guest/xg_sr_c= ommon_x86.h index b55758c96d..e504169705 100644 --- a/tools/libs/guest/xg_sr_common_x86.h +++ b/tools/libs/guest/xg_sr_common_x86.h @@ -3,12 +3,6 @@ =20 #include "xg_sr_common.h" =20 -/* - * Obtains a domains TSC information from Xen and writes a X86_TSC_INFO re= cord - * into the stream. - */ -int write_x86_tsc_info(struct xc_sr_context *ctx); - /* * Parses a X86_TSC_INFO record and applies the result to the domain. */ diff --git a/tools/libs/guest/xg_sr_save.c b/tools/libs/guest/xg_sr_save.c index 2ba7c3200c..3eecc3e987 100644 --- a/tools/libs/guest/xg_sr_save.c +++ b/tools/libs/guest/xg_sr_save.c @@ -13,7 +13,7 @@ static int write_headers(struct xc_sr_context *ctx, uint1= 6_t guest_type) struct xc_sr_ihdr ihdr =3D { .marker =3D IHDR_MARKER, .id =3D htonl(IHDR_ID), - .version =3D htonl(3), + .version =3D htonl(4), .options =3D htons(IHDR_OPT_LITTLE_ENDIAN), }; struct xc_sr_dhdr dhdr =3D { @@ -44,6 +44,52 @@ static int write_headers(struct xc_sr_context *ctx, uint= 16_t guest_type) return 0; } =20 +/* + * Writes a DOMAIN_CONTEXT record into the stream. + */ +static int write_domain_context_record(struct xc_sr_context *ctx) +{ + xc_interface *xch =3D ctx->xch; + struct xc_sr_record rec =3D { + .type =3D REC_TYPE_DOMAIN_CONTEXT, + }; + size_t len =3D 0; + int rc; + + rc =3D xc_domain_get_context(xch, ctx->domid, NULL, &len); + if ( rc < 0 ) + { + PERROR("can't get record length for dom %u\n", ctx->domid); + goto out; + } + + rec.data =3D malloc(len); + + rc =3D -1; + if ( !rec.data ) + { + PERROR("can't allocate %lu bytes\n", len); + goto out; + } + + rc =3D xc_domain_get_context(xch, ctx->domid, rec.data, &len); + if ( rc < 0 ) + { + PERROR("can't get domain record for dom %u\n", ctx->domid); + goto out; + } + + rec.length =3D len; + rc =3D write_record(ctx, &rec); + if ( rc < 0 ) + PERROR("failed to write DOMAIN_CONTEXT record"); + + out: + free(rec.data); + + return rc; +} + /* * Writes an END record into the stream. */ @@ -905,6 +951,10 @@ static int save(struct xc_sr_context *ctx, uint16_t gu= est_type) goto err; } =20 + rc =3D write_domain_context_record(ctx); + if ( rc ) + goto err; + rc =3D ctx->save.ops.end_of_checkpoint(ctx); if ( rc ) goto err; diff --git a/tools/libs/guest/xg_sr_save_x86_hvm.c b/tools/libs/guest/xg_sr= _save_x86_hvm.c index 1634a7bc43..d44fb3fc4f 100644 --- a/tools/libs/guest/xg_sr_save_x86_hvm.c +++ b/tools/libs/guest/xg_sr_save_x86_hvm.c @@ -193,11 +193,6 @@ static int x86_hvm_end_of_checkpoint(struct xc_sr_cont= ext *ctx) { int rc; =20 - /* Write the TSC record. */ - rc =3D write_x86_tsc_info(ctx); - if ( rc ) - return rc; - /* Write the HVM_CONTEXT record. */ rc =3D write_hvm_context(ctx); if ( rc ) diff --git a/tools/libs/guest/xg_sr_save_x86_pv.c b/tools/libs/guest/xg_sr_= save_x86_pv.c index 4964f1f7b8..3de7b19f54 100644 --- a/tools/libs/guest/xg_sr_save_x86_pv.c +++ b/tools/libs/guest/xg_sr_save_x86_pv.c @@ -849,20 +849,6 @@ static int write_x86_pv_p2m_frames(struct xc_sr_contex= t *ctx) return rc; } =20 -/* - * Writes an SHARED_INFO record into the stream. - */ -static int write_shared_info(struct xc_sr_context *ctx) -{ - struct xc_sr_record rec =3D { - .type =3D REC_TYPE_SHARED_INFO, - .length =3D PAGE_SIZE, - .data =3D ctx->x86.pv.shinfo, - }; - - return write_record(ctx, &rec); -} - /* * Normalise a pagetable for the migration stream. Performs mfn->pfn * conversions on the ptes. @@ -1093,14 +1079,6 @@ static int x86_pv_end_of_checkpoint(struct xc_sr_con= text *ctx) { int rc; =20 - rc =3D write_x86_tsc_info(ctx); - if ( rc ) - return rc; - - rc =3D write_shared_info(ctx); - if ( rc ) - return rc; - rc =3D write_all_vcpu_information(ctx); if ( rc ) return rc; --=20 2.20.1