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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09DAFECAAD5 for ; Thu, 1 Sep 2022 01:20:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232462AbiIABUk (ORCPT ); Wed, 31 Aug 2022 21:20:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60904 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232329AbiIABUi (ORCPT ); Wed, 31 Aug 2022 21:20:38 -0400 Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 64C6181690; Wed, 31 Aug 2022 18:20:37 -0700 (PDT) Received: by mail-pf1-x434.google.com with SMTP id 76so16103646pfy.3; Wed, 31 Aug 2022 18:20:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc; bh=j6hcngYlpvs5vhfu0mW47DQwHIYzAccUtyEnKVrv4bk=; b=Ig9Jz4jFpQYi8elhuz6NJZGp+7tykwAd+nejNRkApGgSCIGRxS9VSxgP40TfiKEoXH jVEGavejFbJKhMGtTtw6DgNifjj4+qZMIN+G/LNuLMf1grvfxCFz1bTjy8ZV3vyowdSv fhR+7g4wulbwNCcPK6RUiqXS0MdUJ6QoA27l8UJMy+5Wi4rexR/yDBcz/IrUcBkrZlvq oP1iDMKbU4KCvvmfrcrqwQ7rAraaU48gkzG0opBzFQSdzWGSaAhTFyTY4yAam+v6dZ+o xpYxDlTtusVBFCqjMWkOAZDTgaQjYjsJVqxQjWUzfGnHhEtXc52amf6gQHHeISjvtulj 7GIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc; bh=j6hcngYlpvs5vhfu0mW47DQwHIYzAccUtyEnKVrv4bk=; b=o84xAQ4vEnEUQecRTIk9Zlt2avPO0QxbiYBqLXr+H3FcM9Wl8Vo+4beMLTd2irWFs2 O1zCNP/iwHUZapvfAgG1f7BwxBXp6kwpMQvG87MDH9752RYRRfrc0QAwGOfGKW/ECRRp P+raAAyQ4oRTicEOZ4nKyb/1E2I9FFdSx9RWPPyBrS1h36UyjORQ8+CMt58Kjushhezu 9RXOYaaNvG0bNTpZ/HkNuXyfdfn2Ux/VAR7vJv2P05YFmLwnIUhVGfF9KN509a6IUtiD m1DeInJBBV1mtH3nWIwOPbUWHthjgHLBG7ZjFvpuVYWaUO9hfoKnq28Ptn7HjZ0xeFSA AD4A== X-Gm-Message-State: ACgBeo2bbs3hs2SCNKyIsin3e6t3xxlkoX8gEjS8HG8h2LqCkMmF79Mf CrKvxG3GCgJebQDw1rwAqUE= X-Google-Smtp-Source: AA6agR6davf04hg04CsbracjQnxa6NDVqvhJ2bCajCUXxLblO7l7GGadazUwNB0kHWiXtXbDC293Og== X-Received: by 2002:a63:1043:0:b0:429:fd41:b7cb with SMTP id 3-20020a631043000000b00429fd41b7cbmr23574082pgq.442.1661995236799; Wed, 31 Aug 2022 18:20:36 -0700 (PDT) Received: from localhost ([192.55.55.51]) by smtp.gmail.com with ESMTPSA id y11-20020a17090322cb00b00172dd10f64fsm6473650plg.263.2022.08.31.18.20.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Aug 2022 18:20:36 -0700 (PDT) Date: Wed, 31 Aug 2022 18:20:34 -0700 From: Isaku Yamahata To: Sagi Shahar Cc: linux-kselftest@vger.kernel.org, Paolo Bonzini , Sean Christopherson , Isaku Yamahata , Erdem Aktas , Ryan Afranji , Roger Wang , Shuah Khan , Andrew Jones , Marc Zyngier , Ben Gardon , Jim Mattson , David Matlack , Peter Xu , Oliver Upton , Ricardo Koller , Yang Zhong , Wei Wang , Xiaoyao Li , Peter Gonda , Marc Orr , Emanuele Giuseppe Esposito , Christian Borntraeger , Eric Auger , Yanan Wang , Aaron Lewis , Vitaly Kuznetsov , Peter Shier , Axel Rasmussen , Zhenzhong Duan , "Maciej S . Szmigiero" , Like Xu , linux-kernel@vger.kernel.org, kvm@vger.kernel.org, isaku.yamahata@gmail.com Subject: Re: [RFC PATCH v2 02/17] KVM: selftest: Add helper functions to create TDX VMs Message-ID: <20220901012034.GD2711697@ls.amr.corp.intel.com> References: <20220830222000.709028-1-sagis@google.com> <20220830222000.709028-3-sagis@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20220830222000.709028-3-sagis@google.com> Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On Tue, Aug 30, 2022 at 10:19:45PM +0000, Sagi Shahar wrote: > diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/testing/selftests/kvm/lib/x86_64/processor.c > index f35626df1dea..2a6e28c769f2 100644 > --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c > +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c > @@ -8,6 +8,7 @@ > #include "test_util.h" > #include "kvm_util.h" > #include "processor.h" > +#include "tdx.h" > > #ifndef NUM_INTERRUPTS > #define NUM_INTERRUPTS 256 > @@ -641,6 +642,32 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, > return vcpu; > } > > +/* > + * Adds a vCPU to a TD (Trusted Domain) with minimum defaults. It will not set > + * up any general purpose registers as they will be initialized by the TDX. In > + * TDX, vCPUs RIP is set to 0xFFFFFFF0. See Intel TDX EAS Section "Initial State > + * of Guest GPRs" for more information on vCPUs initial register values when > + * entering the TD first time. > + * > + * Input Args: > + * vm - Virtual Machine > + * vcpuid - The id of the VCPU to add to the VM. > + */ > +struct kvm_vcpu *vm_vcpu_add_tdx(struct kvm_vm *vm, uint32_t vcpu_id) > +{ > + struct kvm_mp_state mp_state; > + struct kvm_vcpu *vcpu; > + > + vcpu = __vm_vcpu_add(vm, vcpu_id); > + initialize_td_vcpu(vcpu); > + > + /* Setup the MP state */ > + mp_state.mp_state = 0; > + vcpu_mp_state_set(vcpu, &mp_state); > + > + return vcpu; > +} > + It's better to use symbolic value. I know this is copied from vmx version, though. diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/testing/selftests/kvm/lib/x86_64/processor.c index 3bb7dc5a55ea..4009bc926e33 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -636,7 +636,7 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, vcpu_regs_set(vcpu, ®s); /* Setup the MP state */ - mp_state.mp_state = 0; + mp_state.mp_state = KVM_MP_STATE_RUNNABLE; vcpu_mp_state_set(vcpu, &mp_state); return vcpu; @@ -662,7 +662,7 @@ struct kvm_vcpu *vm_vcpu_add_tdx(struct kvm_vm *vm, uint32_t vcpu_id) initialize_td_vcpu(vcpu); /* Setup the MP state */ - mp_state.mp_state = 0; + mp_state.mp_state = KVM_MP_STATE_RUNNABLE; vcpu_mp_state_set(vcpu, &mp_state); return vcpu; -- Isaku Yamahata