From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51EC53232 for ; Wed, 27 Nov 2024 14:00:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732716056; cv=none; b=EXQUThEQ7C3WGjGENzyB/fgd2ANeyyochk/84nJdYRVLtawNZUPNusoQ7D22bIcyhvNn2qE5ss76PSL44zcMc5czo3McrvwjL1UT0B9XOnMUgmi1HxikhbITHfUORuI52wTBqtRND1Io5svgCD9mI9TACPSHx1igaCD1DJwN0VY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732716056; c=relaxed/simple; bh=W1DxBS8fDYv3TRxGQaecFUft0N2XtDvc2T/7HVuJ2y0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=McSegAx1zjAieq6KIgjhxQL17uMZg00YvVz8TGuAH1kV5IF4K9o1hNiDwzyogOcnO0q0vGtuCzJdgDVLMR4xP9NRNAKKggr7RvnTAkK6hVi7Q1fUN3inN5TsTop94wBqcuV7c4PpT7+JOSGI93/URa7hTMnYtdWUQ6SxTwuSV3U= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=zEyvsi9o; arc=none smtp.client-ip=209.85.216.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="zEyvsi9o" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-2ea5447561bso6468301a91.1 for ; Wed, 27 Nov 2024 06:00:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1732716054; x=1733320854; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=EdwWS10u7VCBrGSuDVmxmJIAY/501oDBhCB/j2Uherc=; b=zEyvsi9oxc1WkLQF3ylJM7iMhdnLKRmx1eIs9LYCH5cm6VFS4MAJYghSX4+ayLqQgX F97xH2Cp2qfV9vNOVVG++SNj/CShrYHnINJeeJ4rhXAjHCBDJnrj/9NQQcu5YIigXGcW MTobQMEVT+ZgXPEv50pr05kfuVadLjDVcbFK4Ib7Vb1eTW8NMjpx16xd9j02tZ3/TXdu Q2bYbrn0+oxQGfciUlui+vnrqw/F9HPaeMJvP7wcM7AuQbmAx5nPhCAAYO017jtAspGb +Foq4EApTQ1NPoXx5XARYTC1YAWNIQMcROuKbLXYpEGoHyqc/glarh82UdJ70k6zzpOw PdBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732716054; x=1733320854; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=EdwWS10u7VCBrGSuDVmxmJIAY/501oDBhCB/j2Uherc=; b=ZzINZ3XIx6bkLdFy41cHR4yDAZIU7aHF9AN5xshGb/fm8OW8QAj0o96UQDlRlVsYrg aw7hiCJy0zwYWn7s4YDT0JEehQHIS+sl0QU/GYqLl/e5tvLWx3gEXojh3vrHC4nLX0Ju SR4Amj7vfur2YkcNSurCpl5wRrT+T7gsc4bZWCafm7nOPIqY/piFI8eGh9G98dg9NQZR WgLTMKSDCtruBqRg8ry70kvEC6+pO99MkhXotDzmbpAMsjdTmp5aICKAVVjCtazhBkYK YlHI4XjBRkXKFW2M91pEwyRfsY0BK76+SqKkLniujdyfMyy6O30YQJoFrxrc7F5/c5iU BlRw== X-Forwarded-Encrypted: i=1; AJvYcCUjEa0t3Lb3nQY0R0tjiadcElbeyCTwrIJOmCOqz0oB2vVGuRKqHe+NX0AsVEfXFV6Qtwykn2Q5Jdv3FHw=@vger.kernel.org X-Gm-Message-State: AOJu0YycRvzSx8aXHXn318lf+uO2qyZDvszuGCvDHIuLxfJyPZw9Zxg1 EFn1vd7ap3xd4ACwICMt1Nk7AAElNFT6lh4MlG/4xzkWX3Cr86a1RXih2BTc8imJJDwvwZpSS6I jjA== X-Google-Smtp-Source: AGHT+IEceWTnc4XBuGV61B8FQtJMJ4GYGuGv/V6MFcmhcEEziILmmaudgMsDr7JH5R7liBwxVt0pxc+caLk= X-Received: from pjbph7.prod.google.com ([2002:a17:90b:3bc7:b0:2c7:b802:270a]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:2245:b0:2ea:61de:3900 with SMTP id 98e67ed59e1d1-2ee097e3427mr3408431a91.32.1732716054604; Wed, 27 Nov 2024 06:00:54 -0800 (PST) Date: Wed, 27 Nov 2024 06:00:49 -0800 In-Reply-To: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241121201448.36170-1-adrian.hunter@intel.com> <20241121201448.36170-8-adrian.hunter@intel.com> Message-ID: Subject: Re: [PATCH 7/7] KVM: TDX: Add TSX_CTRL msr into uret_msrs list From: Sean Christopherson To: Chao Gao Cc: Adrian Hunter , pbonzini@redhat.com, kvm@vger.kernel.org, dave.hansen@linux.intel.com, rick.p.edgecombe@intel.com, kai.huang@intel.com, reinette.chatre@intel.com, xiaoyao.li@intel.com, tony.lindgren@linux.intel.com, binbin.wu@linux.intel.com, dmatlack@google.com, isaku.yamahata@intel.com, nik.borisov@suse.com, linux-kernel@vger.kernel.org, x86@kernel.org, yan.y.zhao@intel.com, weijiang.yang@intel.com Content-Type: text/plain; charset="us-ascii" On Fri, Nov 22, 2024, Chao Gao wrote: > >+static bool tdparams_tsx_supported(struct kvm_cpuid2 *cpuid) > >+{ > >+ const struct kvm_cpuid_entry2 *entry; > >+ u64 mask; > >+ u32 ebx; > >+ > >+ entry = kvm_find_cpuid_entry2(cpuid->entries, cpuid->nent, 0x7, 0); > >+ if (entry) > >+ ebx = entry->ebx; > >+ else > >+ ebx = 0; > >+ > >+ mask = __feature_bit(X86_FEATURE_HLE) | __feature_bit(X86_FEATURE_RTM); > >+ return ebx & mask; > >+} > >+ > > static int setup_tdparams(struct kvm *kvm, struct td_params *td_params, > > struct kvm_tdx_init_vm *init_vm) > > { > >@@ -1299,6 +1322,7 @@ static int setup_tdparams(struct kvm *kvm, struct td_params *td_params, > > MEMCPY_SAME_SIZE(td_params->mrowner, init_vm->mrowner); > > MEMCPY_SAME_SIZE(td_params->mrownerconfig, init_vm->mrownerconfig); > > > >+ to_kvm_tdx(kvm)->tsx_supported = tdparams_tsx_supported(cpuid); > > return 0; > > } > > > >@@ -2272,6 +2296,11 @@ static int __init __tdx_bringup(void) > > return -EIO; > > } > > } > >+ tdx_uret_tsx_ctrl_slot = kvm_find_user_return_msr(MSR_IA32_TSX_CTRL); > >+ if (tdx_uret_tsx_ctrl_slot == -1 && boot_cpu_has(X86_FEATURE_MSR_TSX_CTRL)) { > >+ pr_err("MSR_IA32_TSX_CTRL isn't included by kvm_find_user_return_msr\n"); > >+ return -EIO; > >+ } > > > > /* > > * Enabling TDX requires enabling hardware virtualization first, > >diff --git a/arch/x86/kvm/vmx/tdx.h b/arch/x86/kvm/vmx/tdx.h > >index 48cf0a1abfcc..815ff6bdbc7e 100644 > >--- a/arch/x86/kvm/vmx/tdx.h > >+++ b/arch/x86/kvm/vmx/tdx.h > >@@ -29,6 +29,14 @@ struct kvm_tdx { > > u8 nr_tdcs_pages; > > u8 nr_vcpu_tdcx_pages; > > > >+ /* > >+ * Used on each TD-exit, see tdx_user_return_msr_update_cache(). > >+ * TSX_CTRL value on TD exit > >+ * - set 0 if guest TSX enabled > >+ * - preserved if guest TSX disabled > >+ */ > >+ bool tsx_supported; > > Is it possible to drop this boolean and tdparams_tsx_supported()? I think we > can use the guest_can_use() framework instead. Yeah, though that optimized handling will soon come for free[*], and I plan on landing that sooner than TDX, so don't fret too much over this. [*] https://lore.kernel.org/all/20240517173926.965351-1-seanjc@google.com