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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3E782C48BC3 for ; Wed, 21 Feb 2024 02:18:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C840A6B0083; Tue, 20 Feb 2024 21:18:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C33996B0085; Tue, 20 Feb 2024 21:18:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AFBB66B0087; Tue, 20 Feb 2024 21:18:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 9D25E6B0083 for ; Tue, 20 Feb 2024 21:18:53 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 3D68BC0865 for ; Wed, 21 Feb 2024 02:18:53 +0000 (UTC) X-FDA: 81814202946.03.231E475 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by imf22.hostedemail.com (Postfix) with ESMTP id C2AC5C0007 for ; Wed, 21 Feb 2024 02:18:50 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Z4EMAFEs; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf22.hostedemail.com: domain of binbin.wu@linux.intel.com has no SPF policy when checking 198.175.65.9) smtp.mailfrom=binbin.wu@linux.intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708481931; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9aemvakybuqkR3j9xweFCOHC1oAyd6PFZpYb+TYdOMo=; b=RjgzAdLo8DuTdJErEP5PmcKEAkNSLhAkSimU815/oGhAwDroN7JSNWX1NGv8T81lugsGP5 hwV+xzK3kin1MxOBcrDzIXPI5LbXxk5sfLE/hRhTXEWe1zDlbJb9NDknxK4JEPEly+PjWH zTMxf9EWmrIKTCKU50UT6hXu6Ud71KQ= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Z4EMAFEs; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf22.hostedemail.com: domain of binbin.wu@linux.intel.com has no SPF policy when checking 198.175.65.9) smtp.mailfrom=binbin.wu@linux.intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708481931; a=rsa-sha256; cv=none; b=s8172x5kccra5ItuaA4McW73rRfiicY/LzrbSk1iN2CXuPmdxLT0a1CCFwcQRn85GsaeRh 0B5acaiob30tjRVsEK88PPwsdEa/F8Zhwsh91AUCQl7sFpKRneyu6u+31wsDpCHc4VVi+g gFBDx6ekoLlvYbXxiwmbqmRaSjv/J7w= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1708481931; x=1740017931; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=HOY/ZKR3UxnM/lO9pCRb72aBDqSC44CZ4roDqmw4AiQ=; b=Z4EMAFEsOsSM309Jzaj47oLligcN3pNSD2FvXo14tsjpbTKY76N5vvYs izHPLIg+WZVqOY9BllDIfVvYzdN8DjHZKCeQvsxDtmUZHwJd+b+mnO/fk 7dpg0nKuE9FNqMM3CxcTRt3NWtvepEl8yzSGeVcrPYWcS2AfQmcLpi11s LhEIs0e2pAI7uzg+kCWJ4Km/zcHN+6CshIcBoyubPDtR66M6EaqQtT2aG d0t4sMp7FREWtoeFuuo/6aRaYmnTl//M/PT4Ub426qA9ilOojt3QLsBEj 7EGCXElX5yQ+wgSgjOqAGsxtEb2VtUhqwXYXZ5SmFW2fsoeSgXH1f3ngu A==; X-IronPort-AV: E=McAfee;i="6600,9927,10990"; a="25085313" X-IronPort-AV: E=Sophos;i="6.06,174,1705392000"; d="scan'208";a="25085313" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Feb 2024 18:18:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,174,1705392000"; d="scan'208";a="4881566" Received: from binbinwu-mobl.ccr.corp.intel.com (HELO [10.93.18.46]) ([10.93.18.46]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Feb 2024 18:18:45 -0800 Message-ID: <06b200d8-e432-478f-b564-b799da778c41@linux.intel.com> Date: Wed, 21 Feb 2024 10:18:43 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH v5 02/29] KVM: selftests: Expose function that sets up sregs based on VM's mode To: Sagi Shahar Cc: linux-kselftest@vger.kernel.org, Ackerley Tng , Erdem Aktas , Isaku Yamahata , Ryan Afranji , Sean Christopherson , Paolo Bonzini , Shuah Khan , Peter Gonda , Haibo Xu , Chao Peng , Vishal Annapurve , Roger Wang , Vipin Sharma , jmattson@google.com, dmatlack@google.com, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org References: <20231212204647.2170650-1-sagis@google.com> <20231212204647.2170650-3-sagis@google.com> From: Binbin Wu In-Reply-To: <20231212204647.2170650-3-sagis@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: C2AC5C0007 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: syj38q519w4m4jm3it4sp6u7r3rxs4uf X-HE-Tag: 1708481930-920748 X-HE-Meta: U2FsdGVkX1+hQcF0lHPpy+P54IOiMF2BDpsayjVAko/cH66O5JMvZWeo4t3xXn2qVfiO0brG5tcmv94oC2gJIgTqN0i05PnrL6TLQ69lJHKTeHXeOQP/KoaYmIvx4uQN7ZV4aomEkx7qHyuCk0rjCb5npp/GJY9oCGZt6PCL4d5bBSkY2h3tukDAUax0WXm2ZvSz4QhHE/SoYX4SCOjLavEw8lYHg69p02WbymtG8CjuhWsMWiNilL+uykPPapRD9qTdsqYhSw1Bho3mwmUM3fDThr6ZP0F/lKLhAnuPtzEU6sox7kKpEz7vaT39TE7vdgcWL+w2EGNggulKIC56jwFUBgN9h7tKwiIFU3aVgxNRElddNAhBIJeS/avHvHIJq2f9B1P46aNZDmKM/iqZ9xHaSs4olZgwRsb5g6/FqZC+/Ui9ZDnRxkUGvEHYjY5GhrBejMdYyLjIKv/IQkxbBLnldvLqJmMBi0s3u0SCpf6cQAxntRSoEJxGnaUJOL8b0DV1TrhapBxHCWoiIi83VT73czbAnN+40YHX8LYR8nIKtmLtjh+fZwzX454k0AFK9EnkSSKNdBIpHMDLe/l0JGCsfzKmov2VjF8xHZz9HNvAnqwC58bTVTLJ5+8WWVSUm8/2lAFI1ThuPfwyC8SNiysyVMOlMMDJPf+J8ZD/MK4xbBHIDhVWKcImsoW3G7b1x3528U7x6kzD709FcFND71WMaY8GhHpO3xoYRSYV0UStNPnF7BOHCepNCs0XWlufXz2ZR7NOucLpSbCJgxrg+OxYHZM5oc/HjPK0j2mYOhduYN53Ht95EvjLqB0xwIeq2p2kZpAkY6RYstqke/z+W6+8vsG0OQbbQuiBlyNbto/E6FonpNZINaIdU0IjeY9iMyzgIxi63Nnp7NmluUsjuS1/IjDVdB3grqCQyARViSCCCSNCcigBe5jK0QF5+zmad7jY5oKE/KVKMvS0Hbn Yd5hRs9w kJzwJaN+U2AOIquc8bbNYSrnnZ6qKO2XHGBXCqjvydte64rtHnZom2e7yflhpKGbyly+ubvUGuEzQP/2bPzKOiCLgED9OZCZAsTbS1HbjhdaJEnAvGumw0XAW+Gi4aZx8+kBdw7Ptww+fTu31VZTx12/+evgRpeJWqBtcMlyOjJb2ivu89nNAvJcyOjFJLf5JV7pfh5SimNY16kSPmx/ukFJX8Q== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 12/13/2023 4:46 AM, Sagi Shahar wrote: > From: Ackerley Tng > > This allows initializing sregs without setting vCPU registers in > KVM. > > No functional change intended. Reviewed-by: Binbin Wu > > Signed-off-by: Ackerley Tng > Signed-off-by: Ryan Afranji > Signed-off-by: Sagi Shahar > --- > .../selftests/kvm/include/x86_64/processor.h | 2 + > .../selftests/kvm/lib/x86_64/processor.c | 39 ++++++++++--------- > 2 files changed, 23 insertions(+), 18 deletions(-) > > diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools/testing/selftests/kvm/include/x86_64/processor.h > index 35fcf4d78dfa..0b8855d68744 100644 > --- a/tools/testing/selftests/kvm/include/x86_64/processor.h > +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h > @@ -958,6 +958,8 @@ static inline struct kvm_cpuid2 *allocate_kvm_cpuid2(int nr_entries) > void vcpu_init_cpuid(struct kvm_vcpu *vcpu, const struct kvm_cpuid2 *cpuid); > void vcpu_set_hv_cpuid(struct kvm_vcpu *vcpu); > > +void vcpu_setup_mode_sregs(struct kvm_vm *vm, struct kvm_sregs *sregs); > + > static inline struct kvm_cpuid_entry2 *__vcpu_get_cpuid_entry(struct kvm_vcpu *vcpu, > uint32_t function, > uint32_t index) > diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/testing/selftests/kvm/lib/x86_64/processor.c > index aef1c021c4bb..f130f78a4974 100644 > --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c > +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c > @@ -543,36 +543,39 @@ static void kvm_setup_tss_64bit(struct kvm_vm *vm, struct kvm_segment *segp, > kvm_seg_fill_gdt_64bit(vm, segp); > } > > -static void vcpu_setup(struct kvm_vm *vm, struct kvm_vcpu *vcpu) > +void vcpu_setup_mode_sregs(struct kvm_vm *vm, struct kvm_sregs *sregs) > { > - struct kvm_sregs sregs; > - > - /* Set mode specific system register values. */ > - vcpu_sregs_get(vcpu, &sregs); > - > - sregs.idt.limit = 0; > + sregs->idt.limit = 0; > > - kvm_setup_gdt(vm, &sregs.gdt); > + kvm_setup_gdt(vm, &sregs->gdt); > > switch (vm->mode) { > case VM_MODE_PXXV48_4K_SEV: > case VM_MODE_PXXV48_4K: > - sregs.cr0 = X86_CR0_PE | X86_CR0_NE | X86_CR0_PG; > - sregs.cr4 |= X86_CR4_PAE | X86_CR4_OSFXSR; > - sregs.efer |= (EFER_LME | EFER_LMA | EFER_NX); > - > - kvm_seg_set_unusable(&sregs.ldt); > - kvm_seg_set_kernel_code_64bit(vm, DEFAULT_CODE_SELECTOR, &sregs.cs); > - kvm_seg_set_kernel_data_64bit(vm, DEFAULT_DATA_SELECTOR, &sregs.ds); > - kvm_seg_set_kernel_data_64bit(vm, DEFAULT_DATA_SELECTOR, &sregs.es); > - kvm_setup_tss_64bit(vm, &sregs.tr, 0x18); > + sregs->cr0 = X86_CR0_PE | X86_CR0_NE | X86_CR0_PG; > + sregs->cr4 |= X86_CR4_PAE | X86_CR4_OSFXSR; > + sregs->efer |= (EFER_LME | EFER_LMA | EFER_NX); > + > + kvm_seg_set_unusable(&sregs->ldt); > + kvm_seg_set_kernel_code_64bit(vm, DEFAULT_CODE_SELECTOR, &sregs->cs); > + kvm_seg_set_kernel_data_64bit(vm, DEFAULT_DATA_SELECTOR, &sregs->ds); > + kvm_seg_set_kernel_data_64bit(vm, DEFAULT_DATA_SELECTOR, &sregs->es); > + kvm_setup_tss_64bit(vm, &sregs->tr, 0x18); > break; > > default: > TEST_FAIL("Unknown guest mode, mode: 0x%x", vm->mode); > } > > - sregs.cr3 = vm->pgd; > + sregs->cr3 = vm->pgd; > +} > + > +static void vcpu_setup(struct kvm_vm *vm, struct kvm_vcpu *vcpu) > +{ > + struct kvm_sregs sregs; > + > + vcpu_sregs_get(vcpu, &sregs); > + vcpu_setup_mode_sregs(vm, &sregs); > vcpu_sregs_set(vcpu, &sregs); > } >