From nobody Fri Dec 19 06:31:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+79521+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+79521+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1629321679; cv=none; d=zohomail.com; s=zohoarc; b=Vc5JpZExbnc4JkX+6LDeU63jiSG81wJCd+PwVVDAxLtkMxDOeXpF5DQK2EoQvFrfG/TCQOtTdKaji5OHNY5RiYxW7aGZDdwYgyt05jVg+8AQHkGY2TuDEdwLx4EV/u5pMVGcsG9Th81CscD0AWdEdu5siLPK5iDmxXxgL0pCGs8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629321679; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=VTz+TQBr5k1Njsswcjxc526lBCWTJKKD18t9TGrZLPY=; b=ZpotOjc4g97uKnLuegxvcMhWS/Ue6IVFXRtroJpMIwSMGlwwgFdJFgZtObXvbXLldmgIvcwslZLrONOfvE8KHNpgA7fdxNn/KNrcNoIHVoRWVBHhrajeKebjUlvFJ1WvWyzJDToYNFnXc5nnNFqh9lMvHj9YBpe7UkbRIC09t5Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+79521+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1629321679840788.6304906742487; Wed, 18 Aug 2021 14:21:19 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 3xh9YY1788612xUX9VJMo5o3; Wed, 18 Aug 2021 14:21:19 -0700 X-Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by mx.groups.io with SMTP id smtpd.web12.61483.1629321677815119949 for ; Wed, 18 Aug 2021 14:21:18 -0700 X-Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 17IL41tO041091; Wed, 18 Aug 2021 17:21:14 -0400 X-Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3agc2h2j7b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 Aug 2021 17:21:13 -0400 X-Received: from m0098393.ppops.net (m0098393.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 17ILGr86076556; Wed, 18 Aug 2021 17:21:13 -0400 X-Received: from ppma03wdc.us.ibm.com (ba.79.3fa9.ip4.static.sl-reverse.com [169.63.121.186]) by mx0a-001b2d01.pphosted.com with ESMTP id 3agc2h2j6u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 Aug 2021 17:21:13 -0400 X-Received: from pps.filterd (ppma03wdc.us.ibm.com [127.0.0.1]) by ppma03wdc.us.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 17ILGx71002790; Wed, 18 Aug 2021 21:21:12 GMT X-Received: from b03cxnp07029.gho.boulder.ibm.com (b03cxnp07029.gho.boulder.ibm.com [9.17.130.16]) by ppma03wdc.us.ibm.com with ESMTP id 3ae5fe595r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 Aug 2021 21:21:12 +0000 X-Received: from b03ledav005.gho.boulder.ibm.com (b03ledav005.gho.boulder.ibm.com [9.17.130.236]) by b03cxnp07029.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 17ILLASM47841784 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 18 Aug 2021 21:21:10 GMT X-Received: from b03ledav005.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 957EDBE054; Wed, 18 Aug 2021 21:21:10 +0000 (GMT) X-Received: from b03ledav005.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8158FBE059; Wed, 18 Aug 2021 21:21:09 +0000 (GMT) X-Received: from amdrome1.watson.ibm.com (unknown [9.2.130.16]) by b03ledav005.gho.boulder.ibm.com (Postfix) with ESMTP; Wed, 18 Aug 2021 21:21:09 +0000 (GMT) From: "Tobin Feldman-Fitzthum" To: tobin@ibm.com, dovmurik@linux.vnet.ibm.com, jejb@linux.ibm.com, frankeh@us.ibm.com, pbonzini@redhat.com, ashish.kalra@amd.com, thomas.lendacky@amd.com, brijesh.singh@amd.com, dgilbert@redhat.com, srutherford@google.com, devel@edk2.groups.io, ard.biesheuvel@arm.com, jiewen.yao@intel.com Subject: [edk2-devel] [RFC PATCH 4/9] OvmfPkg/AmdSev: MH support for mailbox protocol Date: Wed, 18 Aug 2021 17:20:43 -0400 Message-Id: <20210818212048.162626-5-tobin@linux.ibm.com> In-Reply-To: <20210818212048.162626-1-tobin@linux.ibm.com> References: <20210818212048.162626-1-tobin@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: 1lSJQpp-_RIqxHBpsypM6p4d57tAnIo- X-Proofpoint-GUID: wtTMdvFtj_JFoDIzELmA0LuV7wIpcAdG Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tobin@linux.ibm.com X-Gm-Message-State: FfMfdFFf9qygQXzFFo8XcZlJx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1629321679; bh=lM2pAbKysclDGPRAu5RhDmyTWJ0MsOgkW8hXPnW6yNQ=; h=Date:From:Reply-To:Subject:To; b=lyLqT+LOYnIplsFk0/mfKo+jOCClU38FNyugbo4PBosQpCA/DBBuTFqWgeieIInZfA8 zk6JQbvXQkSiVrjtkgmZKLn9uzHKxcw0B6wNqbPuQavOvIbYKCR6N2/cm/eSHgy6zgYY0 zPzKJYsLuJ6HxQP3SZq48PpjPvgJTeS9g7M= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1629321682004100007 Content-Type: text/plain; charset="utf-8" The migration handler communicates with the hypervisor via a shared mailbox page. The MH can perform four functions at the behest of the HV: init, save page, restore page, and reset. Signed-off-by: Tobin Feldman-Fitzthum --- .../ConfidentialMigrationDxe.inf | 1 + .../ConfidentialMigrationDxe.c | 74 +++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/OvmfPkg/AmdSev/ConfidentialMigration/ConfidentialMigrationDxe.= inf b/OvmfPkg/AmdSev/ConfidentialMigration/ConfidentialMigrationDxe.inf index 6e3fa7e51c..cb5609271c 100644 --- a/OvmfPkg/AmdSev/ConfidentialMigration/ConfidentialMigrationDxe.inf +++ b/OvmfPkg/AmdSev/ConfidentialMigration/ConfidentialMigrationDxe.inf @@ -29,6 +29,7 @@ [Pcd] gUefiOvmfPkgTokenSpaceGuid.PcdIsConfidentialMigrationTarget gUefiOvmfPkgTokenSpaceGuid.PcdStartConfidentialMigrationHandler + gUefiOvmfPkgTokenSpaceGuid.PcdConfidentialMigrationMailboxBase =20 [Depex] TRUE diff --git a/OvmfPkg/AmdSev/ConfidentialMigration/ConfidentialMigrationDxe.= c b/OvmfPkg/AmdSev/ConfidentialMigration/ConfidentialMigrationDxe.c index f0dfbd279e..a981aaeac7 100644 --- a/OvmfPkg/AmdSev/ConfidentialMigration/ConfidentialMigrationDxe.c +++ b/OvmfPkg/AmdSev/ConfidentialMigration/ConfidentialMigrationDxe.c @@ -6,14 +6,88 @@ **/ =20 #include +#include #include =20 +// +// Functions implemented by the migration handler +// +#define MH_FUNC_INIT 0 +#define MH_FUNC_SAVE_PAGE 1 +#define MH_FUNC_RESTORE_PAGE 2 +#define MH_FUNC_RESET 3 + +// +// Return codes for MH functions +// +#define MH_SUCCESS 0 +#define MH_INVALID_FUNC (-1) +#define MH_AUTH_ERR (-2) + +// +// Mailbox for communication with hypervisor +// +typedef volatile struct { + UINT64 Nr; + UINT64 Gpa; + UINT32 DoPrefetch; + UINT32 Ret; + UINT32 Go; + UINT32 Done; +} MH_COMMAND_PARAMETERS; + + VOID EFIAPI MigrationHandlerMain () { + UINT64 MailboxStart; + MH_COMMAND_PARAMETERS *Params; + VOID *PageVa; + DebugPrint (DEBUG_INFO,"Migration Handler Started\n"); =20 + MailboxStart =3D PcdGet32 (PcdConfidentialMigrationMailboxBase); + Params =3D (VOID *)MailboxStart; + PageVa =3D (VOID *)(MailboxStart + 0x1000); + + DisableInterrupts (); + Params->Go =3D 0; + + while (1) { + while (!Params->Go) { + CpuPause (); + } + Params->Done =3D 0; + + switch (Params->Nr) { + case MH_FUNC_INIT: + Params->Ret =3D MH_SUCCESS; + break; + + case MH_FUNC_SAVE_PAGE: + CopyMem (PageVa, (VOID *)Params->Gpa, 4096); + Params->Ret =3D MH_SUCCESS; + break; + + case MH_FUNC_RESTORE_PAGE: + CopyMem ((VOID *)Params->Gpa, PageVa, 4096); + Params->Ret =3D MH_SUCCESS; + break; + + case MH_FUNC_RESET: + Params->Ret =3D MH_SUCCESS; + break; + + default: + Params->Ret =3D MH_INVALID_FUNC; + break; + } + + Params->Go =3D 0; + Params->Done =3D 1; + + } } =20 /** --=20 2.20.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#79521): https://edk2.groups.io/g/devel/message/79521 Mute This Topic: https://groups.io/mt/84982983/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-