From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35075C433E0 for ; Tue, 16 Feb 2021 02:15:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 01B3664DE8 for ; Tue, 16 Feb 2021 02:15:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229910AbhBPCPw (ORCPT ); Mon, 15 Feb 2021 21:15:52 -0500 Received: from mga03.intel.com ([134.134.136.65]:30899 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229890AbhBPCPr (ORCPT ); Mon, 15 Feb 2021 21:15:47 -0500 IronPort-SDR: xiK4qGdkPMJqBW+9vmCrjxGhZHTIgzgNuXNaAevMKWToK5lAMZezdPSbnEZJwuRk1VyJg5ym+P 3VSNZrnUTTcQ== X-IronPort-AV: E=McAfee;i="6000,8403,9896"; a="182865762" X-IronPort-AV: E=Sophos;i="5.81,182,1610438400"; d="scan'208";a="182865762" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2021 18:14:53 -0800 IronPort-SDR: UeepbfHIqHro3Oe0YEBnszN0k3HD0n+ZeFXdp78DRv7POcOCW9F0i0vdGf28jsnsVE0fbS7xRY G+ETri2r/2qw== X-IronPort-AV: E=Sophos;i="5.81,182,1610438400"; d="scan'208";a="591705450" Received: from ls.sc.intel.com (HELO localhost) ([143.183.96.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2021 18:14:53 -0800 From: Isaku Yamahata To: qemu-devel@nongnu.org, pbonzini@redhat.com, alistair@alistair23.me, ehabkost@redhat.com, marcel.apfelbaum@gmail.com, mst@redhat.com, cohuck@redhat.com, mtosatti@redhat.com, xiaoyao.li@intel.com, seanjc@google.com Cc: kvm@vger.kernel.org, isaku.yamahata@gmail.com, isaku.yamahata@intel.com Subject: [RFC PATCH 21/23] i386/tdx: Use KVM_TDX_INIT_VCPU to pass HOB to TDVF Date: Mon, 15 Feb 2021 18:13:17 -0800 Message-Id: <5b25b7ef1249b2a229aa74541665c83009a99faf.1613188118.git.isaku.yamahata@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Specify the initial value for RCX/R8 to be the address of the HOB. Don't propagate the value to Qemu's cache of the registers so as to avoid implying that the register state is valid, e.g. Qemu doesn't model TDX-SEAM behavior for initializing other GPRs. Signed-off-by: Isaku Yamahata --- target/i386/kvm/tdx.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index 49b4355849..007d33989b 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -268,10 +268,17 @@ out: void tdx_post_init_vcpu(CPUState *cpu) { - CPUX86State *env = &X86_CPU(cpu)->env; + MachineState *ms = MACHINE(qdev_get_machine()); + TdxGuest *tdx = (TdxGuest *)object_dynamic_cast(OBJECT(ms->cgs), + TYPE_TDX_GUEST); + TdxFirmwareEntry *hob; + + if (!tdx) { + return; + } - _tdx_ioctl(cpu, KVM_TDX_INIT_VCPU, 0, - (void *)(unsigned long)env->regs[R_ECX]); + hob = tdx_get_hob_entry(tdx); + _tdx_ioctl(cpu, KVM_TDX_INIT_VCPU, 0, (void *)hob->address); } static bool tdx_guest_get_debug(Object *obj, Error **errp) -- 2.17.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C595C433E0 for ; Tue, 16 Feb 2021 02:37:18 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 323EB6186A for ; Tue, 16 Feb 2021 02:37:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 323EB6186A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:42802 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lBqEn-00026k-4S for qemu-devel@archiver.kernel.org; Mon, 15 Feb 2021 21:37:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:46376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lBpuF-0006pq-EI for qemu-devel@nongnu.org; Mon, 15 Feb 2021 21:16:05 -0500 Received: from mga17.intel.com ([192.55.52.151]:25635) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lBpu4-0001ZH-1i for qemu-devel@nongnu.org; Mon, 15 Feb 2021 21:16:03 -0500 IronPort-SDR: WIF/DqrUiPHyyjYU6R383XMJg7eudRs1IXSwIp5t+bjcFlEQHeaBBlSQf5D0T+Aa/109W6K7hr fR7kD6L+dcjQ== X-IronPort-AV: E=McAfee;i="6000,8403,9896"; a="162558776" X-IronPort-AV: E=Sophos;i="5.81,182,1610438400"; d="scan'208";a="162558776" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2021 18:14:53 -0800 IronPort-SDR: UeepbfHIqHro3Oe0YEBnszN0k3HD0n+ZeFXdp78DRv7POcOCW9F0i0vdGf28jsnsVE0fbS7xRY G+ETri2r/2qw== X-IronPort-AV: E=Sophos;i="5.81,182,1610438400"; d="scan'208";a="591705450" Received: from ls.sc.intel.com (HELO localhost) ([143.183.96.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2021 18:14:53 -0800 From: Isaku Yamahata To: qemu-devel@nongnu.org, pbonzini@redhat.com, alistair@alistair23.me, ehabkost@redhat.com, marcel.apfelbaum@gmail.com, mst@redhat.com, cohuck@redhat.com, mtosatti@redhat.com, xiaoyao.li@intel.com, seanjc@google.com Subject: [RFC PATCH 21/23] i386/tdx: Use KVM_TDX_INIT_VCPU to pass HOB to TDVF Date: Mon, 15 Feb 2021 18:13:17 -0800 Message-Id: <5b25b7ef1249b2a229aa74541665c83009a99faf.1613188118.git.isaku.yamahata@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Received-SPF: pass client-ip=192.55.52.151; envelope-from=isaku.yamahata@intel.com; helo=mga17.intel.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: isaku.yamahata@intel.com, isaku.yamahata@gmail.com, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Specify the initial value for RCX/R8 to be the address of the HOB. Don't propagate the value to Qemu's cache of the registers so as to avoid implying that the register state is valid, e.g. Qemu doesn't model TDX-SEAM behavior for initializing other GPRs. Signed-off-by: Isaku Yamahata --- target/i386/kvm/tdx.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index 49b4355849..007d33989b 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -268,10 +268,17 @@ out: void tdx_post_init_vcpu(CPUState *cpu) { - CPUX86State *env = &X86_CPU(cpu)->env; + MachineState *ms = MACHINE(qdev_get_machine()); + TdxGuest *tdx = (TdxGuest *)object_dynamic_cast(OBJECT(ms->cgs), + TYPE_TDX_GUEST); + TdxFirmwareEntry *hob; + + if (!tdx) { + return; + } - _tdx_ioctl(cpu, KVM_TDX_INIT_VCPU, 0, - (void *)(unsigned long)env->regs[R_ECX]); + hob = tdx_get_hob_entry(tdx); + _tdx_ioctl(cpu, KVM_TDX_INIT_VCPU, 0, (void *)hob->address); } static bool tdx_guest_get_debug(Object *obj, Error **errp) -- 2.17.1