From patchwork Sat Feb 1 01:13:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 13956012 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (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 0AE521CF9B for ; Sat, 1 Feb 2025 01:14:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372448; cv=none; b=us4KDnCgyIzANMoQcJ5Q7aXLnLkX5st0rteTKqjusfB7fvJMTyDGQSvujjzaAvsBwccJ8iqWjj+1Nuk6IGRuyiTvZcjD6NK7uxC912/2xgUWgAhtkVoC7cpmsUwerVb3t/ZIoAJj+6/zhI9bKv4CC1bRVEa4tXW5zcYc90TpXm8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372448; c=relaxed/simple; bh=UDiTXSTfBH0EOp+MejDSxKgfdfI3+KOE+dUN4Gwb0KE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=kFc7ZaMyfMg7rhNb1b5zIhNikpT9x+XMV7vIb4M49GWVqPGdgdxom/KZBqDA/6HDlV2j/zjXNae46EQUuQkX9l3pbcqdrZZF3TgRTQL203hgXO7FD6oCDf8XIg95AvLLKv04wkE8DahWeAw9dvJG2DrDd96U11FJA+Ay0Lxww30= 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=Tf82DaQi; arc=none smtp.client-ip=209.85.214.202 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="Tf82DaQi" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-216717543b7so67071715ad.0 for ; Fri, 31 Jan 2025 17:14:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738372445; x=1738977245; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=0Ic4S96V5xW2k4uiIcyvRxni7wZ7oCZzN7I2/Wa5niQ=; b=Tf82DaQi6NZHjwUHyhlWWkSQGnGayAv8C0ooCyBW/ZqQLfusoEfshKxsbGhdK+wA8T ewSWfwlQAj/RHSUq7xwESUT4Q8bGytN1/M6bt5PuXYtPIM+o9+CY/Y8EWVUkYLfQSKb2 NIj/2pc97yG1z0TvfOwpFZ2lCuakIKfHNzJtiwFokvo/TKwB5SIoy/Of3eLbQEvYtGEU LK+YIXR5kYYbg9p3SvDB04RDfJ2nw5OjsJ3cly8EnbMes74xHpoKKtHp4MxeOnseMlwU So6UmAkzlRRMOd8TaYEk1BJCuYA0naUdDQl8ZsZhRzhEL2n6tqF8OMLGw8fJrqkeCyuv bB0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738372445; x=1738977245; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0Ic4S96V5xW2k4uiIcyvRxni7wZ7oCZzN7I2/Wa5niQ=; b=R7uZAADTKQEBC5xhf6Wyi21X52xJ3T0gTKD3Pa0PYXUsZP65kB8mPD0zQNdvKXtJfg p0ZHpef/Ibh1eFiNhdQitX0qEXJjaK4ksN50XT9lyBDMXYLTno6JHU5Kzib+AGxIPMAM UhNFVyISxEGPLoca9Kt/QSOdh74ZB2fOGQV8J8WfoB+MXrkHK/OJb6bwfx3nH/Afu9RP +Xl9YD7j6fNLt7lZPGJio6KDBpvAt0irnoO9vlWfS/23oULCIENpbIARwJDJUWWWl3b9 dE50Lhs9xWeCSFJoZCn0NtaW8VuMOPfkywcNfWfdOei5Bnej1/zRKinPtPNSwJZzjULK sKxw== X-Gm-Message-State: AOJu0Yw3bs63GkHZrNbzVJSkKTYLHEtmA2wWVDsiAqLvLHR0kE2Lmeb6 0JpAqRkW3HEjmZOmQyUy536BjNRdQJOVc6UTPSYiKiFNs1JSElJnt1tfCn72sVoniUnMMPLT+Rt DuA== X-Google-Smtp-Source: AGHT+IGGOiNfAsKcc7I2Ois69n1RIN8U53iejt27njRVZnAgVIYEYR+WxCnPB5UeMYUjhcsFHlqBySEAKcY= X-Received: from plck17.prod.google.com ([2002:a17:902:f291:b0:21a:8476:ecc3]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:d48c:b0:215:b01a:627f with SMTP id d9443c01a7336-21dd7c4457emr223500625ad.4.1738372445221; Fri, 31 Jan 2025 17:14:05 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 31 Jan 2025 17:13:56 -0800 In-Reply-To: <20250201011400.669483-1-seanjc@google.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250201011400.669483-1-seanjc@google.com> X-Mailer: git-send-email 2.48.1.362.g079036d154-goog Message-ID: <20250201011400.669483-2-seanjc@google.com> Subject: [PATCH 1/5] KVM: x86/xen: Restrict hypercall MSR to unofficial synthetic range From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , David Woodhouse , Paul Durrant Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, syzbot+cdeaeec70992eca2d920@syzkaller.appspotmail.com, Joao Martins , David Woodhouse Reject userspace attempts to set the Xen hypercall page MSR to an index outside of the "standard" virtualization range [0x40000000, 0x4fffffff], as KVM is not equipped to handle collisions with real MSRs, e.g. KVM doesn't update MSR interception, conflicts with VMCS/VMCB fields, special case writes in KVM, etc. Allowing userspace to redirect any MSR write can also be used to attack the kernel, as kvm_xen_write_hypercall_page() takes multiple locks and writes to guest memory. E.g. if userspace sets the MSR to MSR_IA32_XSS, KVM's write to MSR_IA32_XSS during vCPU creation will trigger an SRCU violation due to writing guest memory: ============================= WARNING: suspicious RCU usage 6.13.0-rc3 ----------------------------- include/linux/kvm_host.h:1046 suspicious rcu_dereference_check() usage! stack backtrace: CPU: 6 UID: 1000 PID: 1101 Comm: repro Not tainted 6.13.0-rc3 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 Call Trace: dump_stack_lvl+0x7f/0x90 lockdep_rcu_suspicious+0x176/0x1c0 kvm_vcpu_gfn_to_memslot+0x259/0x280 kvm_vcpu_write_guest+0x3a/0xa0 kvm_xen_write_hypercall_page+0x268/0x300 kvm_set_msr_common+0xc44/0x1940 vmx_set_msr+0x9db/0x1fc0 kvm_vcpu_reset+0x857/0xb50 kvm_arch_vcpu_create+0x37e/0x4d0 kvm_vm_ioctl+0x669/0x2100 __x64_sys_ioctl+0xc1/0xf0 do_syscall_64+0xc5/0x210 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x7feda371b539 While the MSR index isn't strictly ABI, i.e. can theoretically float to any value, in practice no known VMM sets the MSR index to anything other than 0x40000000 or 0x40000200. Reported-by: syzbot+cdeaeec70992eca2d920@syzkaller.appspotmail.com Closes: https://lore.kernel.org/all/679258d4.050a0220.2eae65.000a.GAE@google.com Cc: Joao Martins Cc: Paul Durrant Cc: David Woodhouse Signed-off-by: Sean Christopherson --- arch/x86/kvm/xen.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index a909b817b9c0..35ecafc410f0 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -1324,6 +1324,14 @@ int kvm_xen_hvm_config(struct kvm *kvm, struct kvm_xen_hvm_config *xhc) xhc->blob_size_32 || xhc->blob_size_64)) return -EINVAL; + /* + * Restrict the MSR to the range that is unofficially reserved for + * synthetic, virtualization-defined MSRs, e.g. to prevent confusing + * KVM by colliding with a real MSR that requires special handling. + */ + if (xhc->msr && (xhc->msr < 0x40000000 || xhc->msr > 0x4fffffff)) + return -EINVAL; + mutex_lock(&kvm->arch.xen.xen_lock); if (xhc->msr && !kvm->arch.xen_hvm_config.msr) From patchwork Sat Feb 1 01:13:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 13956013 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (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 A5DA321364 for ; Sat, 1 Feb 2025 01:14:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372449; cv=none; b=fTHk1u+v1zWRZ8qCLOpntw6MK3ZckfPwr1A42LdyNp6Ic5A4j72jYGR3bj0xeo+vWD4xuIxYQgjtf5i/pLJ6YTy/nF+lzSi1+GSPFlop+2msvjiWflthRMTmb2Yiuo6Y6afkmZl9+gs+dgijaNVmyOOEZUNAueo9bFHCXKidQhw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372449; c=relaxed/simple; bh=Tg8GhNLpPA34vQJNweaMVYaIAHTcnBOATqkxrRePjzk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=Rp+wrZ52HbaKFOQzBBMxQaZ4OWe3kInX1EAmUh6PuK4Vb+scLUNp9V5DqHBs0n4cnDhelt+eSTp0ULmXXgfFkGA02y+a1/LGjR2W4mePYhJmMk48Gm36pK0jNxYpdqgNlLPTtgnJ5ZLupcCGcAVpVLkYhgqqaUUNDoWhNyTlnkw= 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=lmLuxJA4; arc=none smtp.client-ip=209.85.214.201 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="lmLuxJA4" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-216387ddda8so54658145ad.3 for ; Fri, 31 Jan 2025 17:14:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738372447; x=1738977247; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=8BJ4lYogToOhLZ7GzltFe2z01ZGXRRujJHAawRGlx94=; b=lmLuxJA4T+03nwub+046KPHLq8suX77ujRsOzsS7TQeDMEossCYNNtJh76lPdkR5cn bjiOFuyY299Q7+OWDjBKxkhWc0ah54ftu9s/U6rqxMcoQs2+48bTg/VJXwp6CCxhdb59 KsGUtr8bG1t2xQyhnNRxQ8f+SLThnSSbf5zQYMcVmWKZ+51HQpyxkYziDyLOoMyto8uG E7SMTbmREK8QAuIPC6w/kuNLtRcUVSxYMvOpCCyDC+51vO5XJ7rlsuQD1xz9fV6zzjrC wZ9+cJ9fX/LYadqf86+7RD38vgdWMvOlpO0MDylXsXykpV5HVfVAENakcXMkvFdq2+CK gqag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738372447; x=1738977247; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=8BJ4lYogToOhLZ7GzltFe2z01ZGXRRujJHAawRGlx94=; b=nR5JSBW/ZElgci4UAZGKGTqU2O/4p0kbrBZcI9LyLtcn7EuJ/KSUcYcrXLe3BlkxbL DNo3PODbWgbmi36siZ+PogWOoytwDocbNZPgh2f/F/l8IRtfs7OTYr5i6iGwe7vGFLyM bsbK0uJl3h6Qy/fo/GldX7bf9h+tt9QH36hNhUKhINlcd8MfAsK2W0zaw7GsrFIZMZoj p/qB/6bkpE5Pb7fes1JDPVjtjqiYCOiyKanH8NMB4IwCEELIyNPydymmLKkWwACZ+K+S L7CgUiByyCOOgmCGUhM+cMEEDrIrRS6bjaHcETFTjrQ8pHO2wCwKQoi2JXbfP4aKWFaC b0UQ== X-Gm-Message-State: AOJu0Yw6kmBegPoNCsEqAi+vYNPyrGvixRwiWZrFkrI/P7LFJnjDqI0f Xr8+Ld6EWMemod2Ugyr72rGD998WJNJR3d55Voz6gSJTgCn1KUqauKH+IgUoDlXnpH+4jpJa3eU 62g== X-Google-Smtp-Source: AGHT+IHtd/xn8X4/ZTBhWNwmLHwRcrXbBlCFmDpoSEG9bkywbg9XeRZ2Td6Ob3lUwcyyzNaiLUtTD89OvYA= X-Received: from pgjz10.prod.google.com ([2002:a63:e54a:0:b0:7fd:50ab:dc45]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:7343:b0:1e1:ab8b:dda1 with SMTP id adf61e73a8af0-1ed7a6e0999mr25109821637.35.1738372446922; Fri, 31 Jan 2025 17:14:06 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 31 Jan 2025 17:13:57 -0800 In-Reply-To: <20250201011400.669483-1-seanjc@google.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250201011400.669483-1-seanjc@google.com> X-Mailer: git-send-email 2.48.1.362.g079036d154-goog Message-ID: <20250201011400.669483-3-seanjc@google.com> Subject: [PATCH 2/5] KVM: x86/xen: Add an #ifdef'd helper to detect writes to Xen MSR From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , David Woodhouse , Paul Durrant Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, syzbot+cdeaeec70992eca2d920@syzkaller.appspotmail.com, Joao Martins , David Woodhouse Add a helper to detect writes to the Xen hypercall page MSR, and provide a stub for CONFIG_KVM_XEN=n to optimize out the check for kernels built without Xen support. Signed-off-by: Sean Christopherson --- arch/x86/kvm/x86.c | 2 +- arch/x86/kvm/xen.h | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index b2d9a16fd4d3..f13d9d3f7c60 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3733,7 +3733,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) u32 msr = msr_info->index; u64 data = msr_info->data; - if (msr && msr == vcpu->kvm->arch.xen_hvm_config.msr) + if (kvm_xen_is_hypercall_page_msr(vcpu->kvm, msr)) return kvm_xen_write_hypercall_page(vcpu, data); switch (msr) { diff --git a/arch/x86/kvm/xen.h b/arch/x86/kvm/xen.h index f5841d9000ae..e92e06926f76 100644 --- a/arch/x86/kvm/xen.h +++ b/arch/x86/kvm/xen.h @@ -56,6 +56,11 @@ static inline bool kvm_xen_msr_enabled(struct kvm *kvm) kvm->arch.xen_hvm_config.msr; } +static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr) +{ + return msr && msr == kvm->arch.xen_hvm_config.msr; +} + static inline bool kvm_xen_hypercall_enabled(struct kvm *kvm) { return static_branch_unlikely(&kvm_xen_enabled.key) && @@ -124,6 +129,11 @@ static inline bool kvm_xen_msr_enabled(struct kvm *kvm) return false; } +static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr) +{ + return false; +} + static inline bool kvm_xen_hypercall_enabled(struct kvm *kvm) { return false; From patchwork Sat Feb 1 01:13:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 13956014 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (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 29A5C374EA for ; Sat, 1 Feb 2025 01:14:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372450; cv=none; b=tEsXqvqH6OMH3+ZSPh+Sj2JZ4enyN7AVY/a1e3UhPFIAgjOgRvIG5sToYA7R72n426fUgJ6rLn9cx8qZ+T/ddcnjG05XVKZ+9adUTv0K2z9JbvnQMQOQNw9xSsva1efCV4/c11Jtr8BdPyCUF3WLV9tdjP2r76wc1imp+I0jvYE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372450; c=relaxed/simple; bh=OFd/w/+tQL5wnrtXX2mRa0QEN0vkaY5t6IadhKHz+Lc=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=g291384S8F3q5iCtFU6G5HS05WV8/K+qLa/vipXC4ArkAaQYJfmfn/pJ2dMu7JvGFetcUCjnSc+y/sUqq3VmtnQyjXIa00BuiX0iK9G52Yj94MmPHQnX59RYCAv+lieGTdhCfnFlG3BgDl/xr2tgCyHRd3qOGvB4TrlWhaPv7GQ= 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=QxDaEz3+; arc=none smtp.client-ip=209.85.216.73 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="QxDaEz3+" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-2ee86953aeaso4919942a91.2 for ; Fri, 31 Jan 2025 17:14:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738372448; x=1738977248; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=UtIlwPLorJtN8uqaYIAxjcSWyabjL0SN/uMOv7FI8DM=; b=QxDaEz3+lCCYN0Uqxyh4/kjWl5RFPhXWWLjcqv3IuINW6RVjN1OETOjK9xCefL5jsT i+XH28+MQzVwzWdXErWO8XxRtwtS3D5crYIAmpLcK1s1I1i6oGjBgd/B8BMgE7IOu8su sjEOF2XBY0FXOsCkKejh0zIhWk0aWNwyubCtagau7NthcltvVWvqFUZaTq3HFFGPVNyT gHd4RH/s8tR/e/ssdeOkjl1x3Y9UG4QKZCpx3ldxReuosK0BvKvdiQITiFDmzGMakabV Z+VjiCL0rS3WP8KOm+FuDzngwZ50tXvscnkwa/gD5ynEeWU9lS9EzvpLBT5e3jJNorbF xw8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738372448; x=1738977248; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=UtIlwPLorJtN8uqaYIAxjcSWyabjL0SN/uMOv7FI8DM=; b=ShjChQ6ciblGLqnS5ReagApSpMbjegXNGtYAy31HwybdDtH2jmF2w53gpPsoOpbsbC WeUuKge82tJQswhmR50+w1Y491EWfUesH8NP/mESOoZyBv5PcVYxnLR1lBX0IK4VJX2B sAgfC2RoTwfhqeQ3d2pfIAhOB022/yMzVwLD6y4g62bQdcYOeybHbOyUy5N596SokjAh alsgzlKkYRlqXRSOobEdmRyKo1Cr0OCFjj/Vqyq086LQEtpHy2rTLcLTL9EAPbRfGeJV foenG6fPAwqZbi6ekbsGBDl4wQDEhaG6F8pRwkLjAKv2dpP+2WQyJWUOZEfuzUHqDVVH +hJg== X-Gm-Message-State: AOJu0YztmgkDu1Qaz50iJxhJlwwwy9Jo0LEEN0zyUzDduvLzqm2o71Kg vjSxByLisQWowef2vpDGm9q4tDDzy7Dm5B6u1gdm9ksiZMHz+0XMKWUBZjYtipkmwkEzkC3Wgw+ W0g== X-Google-Smtp-Source: AGHT+IHdUP2wvkGWbJcC9vX8Zc2oaH78eyzzFFqJr7Tskwb7JAaDibUYRzKX3cLLCkGiVN2YpFq9EmueqBw= X-Received: from pjbnb8.prod.google.com ([2002:a17:90b:35c8:b0:2ef:71b9:f22f]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90a:c2c7:b0:2ef:33a4:ae6e with SMTP id 98e67ed59e1d1-2f83abd996dmr22783400a91.12.1738372448494; Fri, 31 Jan 2025 17:14:08 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 31 Jan 2025 17:13:58 -0800 In-Reply-To: <20250201011400.669483-1-seanjc@google.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250201011400.669483-1-seanjc@google.com> X-Mailer: git-send-email 2.48.1.362.g079036d154-goog Message-ID: <20250201011400.669483-4-seanjc@google.com> Subject: [PATCH 3/5] KVM: x86/xen: Consult kvm_xen_enabled when checking for Xen MSR writes From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , David Woodhouse , Paul Durrant Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, syzbot+cdeaeec70992eca2d920@syzkaller.appspotmail.com, Joao Martins , David Woodhouse Query kvm_xen_enabled when detecting writes to the Xen hypercall page MSR so that the check is optimized away in the likely scenario that Xen isn't enabled for the VM. Deliberately open code the check instead of using kvm_xen_msr_enabled() in order to avoid a double load of xen_hvm_config.msr (which is admittedly rather pointless given the widespread lack of READ_ONCE() usage on the plethora of vCPU-scoped accesses to kvm->arch.xen state). No functional change intended. Signed-off-by: Sean Christopherson --- arch/x86/kvm/xen.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86/kvm/xen.h b/arch/x86/kvm/xen.h index e92e06926f76..1e3a913dfb94 100644 --- a/arch/x86/kvm/xen.h +++ b/arch/x86/kvm/xen.h @@ -58,6 +58,9 @@ static inline bool kvm_xen_msr_enabled(struct kvm *kvm) static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr) { + if (!static_branch_unlikely(&kvm_xen_enabled.key)) + return false; + return msr && msr == kvm->arch.xen_hvm_config.msr; } From patchwork Sat Feb 1 01:13:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 13956015 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (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 1913F84D0F for ; Sat, 1 Feb 2025 01:14:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372452; cv=none; b=BoA1kVk6AY4hS2JIMFyE5/5v2st0x7vKdqsjwsfSL14Bi1BUuxBUJ/SVLc8f9EIxqT9tsz1DywELZTBvixHozYYUq/rNxpJUdspKdfwKwG1hVHCy/bHbkYlKFoYmmxyMTHXLyGc8LKLuh/j9FCBZ95e82RYm/S+0yWKUaY81c6c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372452; c=relaxed/simple; bh=nQ+kS3OisfJcraTufDITt8+LXlQftkTYQ+rT/BSf7qk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=Q2KPCw0QNoUPPpjUXIXkxvbbKHK2XqxIHalB2XM+mx3qlxYbH/QkFUhaddUaQDwETl4gznBv8InQrD+U+ccdzp5vxc6a6MGPAM237yLGq8HOLgHxOtLtvv181EMwDU99AE6sEFYcKGKqR5taoOhjJ3agt+z0YbIcC4tZ76rUSFU= 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=xvy1Evqo; arc=none smtp.client-ip=209.85.214.201 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="xvy1Evqo" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-2161d5b3eb5so50280985ad.3 for ; Fri, 31 Jan 2025 17:14:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738372450; x=1738977250; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=LJrvKjeAKyqO/F6ebF2NAkHhUdXXGXXObzqZ1bzPsRo=; b=xvy1Evqoy9wvNjsgLqUCcYfVDBx4Qo7DRJtaVpPw6H9V0VrRTpeh5nmKSETDpaCXTB 5xukqFXz2BSKPeiFMPwR6XPe1X8zdRd4Ttr+Q1uH6ABnuj8Q/g2IvgiDN57+0lWcLYHU +k2oyKC23llG3b8NIaC5v/f5NSps+we29/cZvHT6SHw8tPDtC3OGmX0zsUD167GMOxAG u/b0VxsDSH7QHVbbyjs+v3TFtfF5A0yW4hyDtfvk60ztaaLTVKHhjZzNN8ITIIOImawe QgEUQnOep3ou/u088aT2MZ3/pRtso3VFTWigm1+spklPc3TN+NXYQMii3tp9zmecihKn vb4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738372450; x=1738977250; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=LJrvKjeAKyqO/F6ebF2NAkHhUdXXGXXObzqZ1bzPsRo=; b=MBVyqwZFoYzThVR5sb26jtggvYsXwyGwJp865cDVivtZtqZVFswFYMy9W+UgCBXA0s OK3c8d6h5ckS1pAwg5AUSvC98XEalCBzPqRRgaiLEK2S47215/NwFuseZnXHXGXlFPhI oztSo55M7QY88diCOYbnsg6HflxebXNV3iB17Oo65Mr4oaxvD+9zcCStbrNKtM8bCU4U zgenLHVTsujRAyKwVRnOvHWthLbiLhXRXJYG0feG1C828BDtRp4rgbLjhIGJzf9ICzVL 2srwO2USQ4wrZ9adXrNJIuduRbS4TclvL/D3z6VpPNTeUpi54V7V6lqa6Fij+9+5temi FVwg== X-Gm-Message-State: AOJu0YxD6YD496aTImY1axb1vZuo52Ij5prmyFzuu3GmuCNUtBVE3Hni 9NaXlb5oYbMYT0QgDtRn1h8gBgvIdCj6ETAX9ivLRMVCS8DxcboxQlFoW8fMWEmE6Al3GMUKCPm bTQ== X-Google-Smtp-Source: AGHT+IEYlUfqd6A5Aj96yRwdP4ZObhFRmvU9ZVL70lUJyS5rZhH4M3tJR1haMPbVdKWzhFgSF0mEex6ADm4= X-Received: from pjbse7.prod.google.com ([2002:a17:90b:5187:b0:2ea:61ba:b8f7]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:e5c9:b0:216:7cbf:951f with SMTP id d9443c01a7336-21dd7d82d98mr211620785ad.21.1738372450219; Fri, 31 Jan 2025 17:14:10 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 31 Jan 2025 17:13:59 -0800 In-Reply-To: <20250201011400.669483-1-seanjc@google.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250201011400.669483-1-seanjc@google.com> X-Mailer: git-send-email 2.48.1.362.g079036d154-goog Message-ID: <20250201011400.669483-5-seanjc@google.com> Subject: [PATCH 4/5] KVM: x86/xen: Bury xen_hvm_config behind CONFIG_KVM_XEN=y From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , David Woodhouse , Paul Durrant Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, syzbot+cdeaeec70992eca2d920@syzkaller.appspotmail.com, Joao Martins , David Woodhouse Now that all references to kvm_vcpu_arch.xen_hvm_config are wrapped with CONFIG_KVM_XEN #ifdefs, bury the field itself behind CONFIG_KVM_XEN=y. No functional change intended. Signed-off-by: Sean Christopherson --- arch/x86/include/asm/kvm_host.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 5193c3dfbce1..7f9e00004db2 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1402,8 +1402,6 @@ struct kvm_arch { struct delayed_work kvmclock_update_work; struct delayed_work kvmclock_sync_work; - struct kvm_xen_hvm_config xen_hvm_config; - /* reads protected by irq_srcu, writes by irq_lock */ struct hlist_head mask_notifier_list; @@ -1413,6 +1411,7 @@ struct kvm_arch { #ifdef CONFIG_KVM_XEN struct kvm_xen xen; + struct kvm_xen_hvm_config xen_hvm_config; #endif bool backwards_tsc_observed; From patchwork Sat Feb 1 01:14:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 13956016 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 829B2139CEF for ; Sat, 1 Feb 2025 01:14:12 +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=1738372454; cv=none; b=sKsuCgnBnWhPrf86Q472H6VRUSC7Wj6YYAzaoCTBsyJGRwhrBWaeD/w2IB9kpM1m3KV0efXse+W/EnQ4SMLAm1wk+VUaCcvxi5dSRmsxKgnWrmZt+6nIGPdPV80DYjwB2xnrlxCg6ka0S1POqf2EbcNJrgE208QxoDVkVdjHAmU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738372454; c=relaxed/simple; bh=gmfQBBKbtVIQGUfDtmdL7tTLbIrBQrlYCQuHcr8oi38=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=NPz55qHGAsWI8z3X8Dqo8lga39POdH9O42a3Jhu6g0++MllLzKkNQBlx1NcHVOJ1qC+qFbBABDZGNwdE9++XuJvMEfQt9mOV/md6lKckmqTsdkCNue3Tg3fpEF5iDVfgBK7lLkdu/ADOwAOk80DDQIP3WLUiWwZPED7lxRj+HIU= 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=mOiooC+F; 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="mOiooC+F" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-2f129f7717fso5027883a91.0 for ; Fri, 31 Jan 2025 17:14:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1738372452; x=1738977252; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=zo8e7usXx7CJFB7yvSC/9n7CtYEg74QEVFvX1f2FIKc=; b=mOiooC+F6LD7cXPyt8cHYkjWj4SAbkEdtNSp0U9C9DfsIrX6PgCisrhWP16TFHUSAP CyLRKcCNSO0pXBvwgDEjK/sRGeAiZgQBHfUh0ac+1LBpH8njBdIKiTDas9LewPfafxJB +pGh/BAxqfAtqEXhRib7OIhQclxHyQRODDcpa5mGyI4zESUFfhkUojKgkm7N1ev2ocuP CNm/CQC0nIjTLEit4KFdrnVX3l71LNz4tV/2+QAmrRivbAZYKRzjB54mBSff3qP3vZrF SwQKjokPTdnE7Zbc6HONRfONynSKRdofXs5A3LI4LV0scgFYUN/etH/A0ror941dvAM/ YwBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738372452; x=1738977252; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zo8e7usXx7CJFB7yvSC/9n7CtYEg74QEVFvX1f2FIKc=; b=MO1t084C5NO3LTlAjedg7fbq9cWNaIYjRu61rPsPYuVB5eCaHSPu9AEm0+jCENGOGu D61x6HBlkvahLBbuiotPjGNZgwVnYnhBilcYX4AxTFsxV6r2z+LxjHWRmOLEQVAwUiiy 8gPvQkc4Uf9vLZ9dgD2snhM4qP4OBYJxjJ6adtf4u+YS/2dgQMYuiYS684Z0vG01kApM Ks0afew7M8QlViRC+Df59rEed4Wop48SS0nRkaVhrVgncCJwY+uCuRxnq5dfZRlVv6gj KbOvkl7rS09hgWuWPY5QPr7uQDGW6MzNSivB2L4E1grrAH525K+bTK9WzcVP+Kb79C85 IeDA== X-Gm-Message-State: AOJu0YyDLPdhNB6JILpr36q0ihvtLW6h76axql0WsAZ5J7RaxxNwO+vU qytYGyUazIMV3qn3k6L+eMl+5ySF29GWaQ+ZKH6ButIlzVUJGBvDTz1M0uozbHNwQD4SKvNc21k 3QA== X-Google-Smtp-Source: AGHT+IE9nZyv3byQJztPPuSt3eQgyUGggpNKDLxk0FqIQjZbmzSHUbiIVphoViaHsQTXXXDXmLBCD6n4DDU= X-Received: from pjbsb15.prod.google.com ([2002:a17:90b:50cf:b0:2ef:701e:21c1]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:534b:b0:2ee:48bf:7dc3 with SMTP id 98e67ed59e1d1-2f83ac00cd3mr19713341a91.15.1738372451786; Fri, 31 Jan 2025 17:14:11 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 31 Jan 2025 17:14:00 -0800 In-Reply-To: <20250201011400.669483-1-seanjc@google.com> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250201011400.669483-1-seanjc@google.com> X-Mailer: git-send-email 2.48.1.362.g079036d154-goog Message-ID: <20250201011400.669483-6-seanjc@google.com> Subject: [PATCH 5/5] KVM: x86/xen: Move kvm_xen_hvm_config field into kvm_xen From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , David Woodhouse , Paul Durrant Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, syzbot+cdeaeec70992eca2d920@syzkaller.appspotmail.com, Joao Martins , David Woodhouse Now that all KVM usage of the Xen HVM config information is buried behind CONFIG_KVM_XEN=y, move the per-VM kvm_xen_hvm_config field out of kvm_arch and into kvm_xen. No functional change intended. Signed-off-by: Sean Christopherson --- arch/x86/include/asm/kvm_host.h | 3 ++- arch/x86/kvm/x86.c | 2 +- arch/x86/kvm/xen.c | 20 ++++++++++---------- arch/x86/kvm/xen.h | 6 +++--- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 7f9e00004db2..e9ebd6d6492c 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1180,6 +1180,8 @@ struct kvm_xen { struct gfn_to_pfn_cache shinfo_cache; struct idr evtchn_ports; unsigned long poll_mask[BITS_TO_LONGS(KVM_MAX_VCPUS)]; + + struct kvm_xen_hvm_config hvm_config; }; #endif @@ -1411,7 +1413,6 @@ struct kvm_arch { #ifdef CONFIG_KVM_XEN struct kvm_xen xen; - struct kvm_xen_hvm_config xen_hvm_config; #endif bool backwards_tsc_observed; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index f13d9d3f7c60..b03c67d53e5f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3188,7 +3188,7 @@ static int kvm_guest_time_update(struct kvm_vcpu *v) * problems if they observe PVCLOCK_TSC_STABLE_BIT in the pvclock flags. */ bool xen_pvclock_tsc_unstable = - ka->xen_hvm_config.flags & KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE; + ka->xen.hvm_config.flags & KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE; #endif kernel_ns = 0; diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 35ecafc410f0..142018b9cdd2 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -1280,10 +1280,10 @@ int kvm_xen_write_hypercall_page(struct kvm_vcpu *vcpu, u64 data) * Note, truncation is a non-issue as 'lm' is guaranteed to be * false for a 32-bit kernel, i.e. when hva_t is only 4 bytes. */ - hva_t blob_addr = lm ? kvm->arch.xen_hvm_config.blob_addr_64 - : kvm->arch.xen_hvm_config.blob_addr_32; - u8 blob_size = lm ? kvm->arch.xen_hvm_config.blob_size_64 - : kvm->arch.xen_hvm_config.blob_size_32; + hva_t blob_addr = lm ? kvm->arch.xen.hvm_config.blob_addr_64 + : kvm->arch.xen.hvm_config.blob_addr_32; + u8 blob_size = lm ? kvm->arch.xen.hvm_config.blob_size_64 + : kvm->arch.xen.hvm_config.blob_size_32; u8 *page; int ret; @@ -1334,13 +1334,13 @@ int kvm_xen_hvm_config(struct kvm *kvm, struct kvm_xen_hvm_config *xhc) mutex_lock(&kvm->arch.xen.xen_lock); - if (xhc->msr && !kvm->arch.xen_hvm_config.msr) + if (xhc->msr && !kvm->arch.xen.hvm_config.msr) static_branch_inc(&kvm_xen_enabled.key); - else if (!xhc->msr && kvm->arch.xen_hvm_config.msr) + else if (!xhc->msr && kvm->arch.xen.hvm_config.msr) static_branch_slow_dec_deferred(&kvm_xen_enabled); - old_flags = kvm->arch.xen_hvm_config.flags; - memcpy(&kvm->arch.xen_hvm_config, xhc, sizeof(*xhc)); + old_flags = kvm->arch.xen.hvm_config.flags; + memcpy(&kvm->arch.xen.hvm_config, xhc, sizeof(*xhc)); mutex_unlock(&kvm->arch.xen.xen_lock); @@ -1421,7 +1421,7 @@ static bool kvm_xen_schedop_poll(struct kvm_vcpu *vcpu, bool longmode, int i; if (!lapic_in_kernel(vcpu) || - !(vcpu->kvm->arch.xen_hvm_config.flags & KVM_XEN_HVM_CONFIG_EVTCHN_SEND)) + !(vcpu->kvm->arch.xen.hvm_config.flags & KVM_XEN_HVM_CONFIG_EVTCHN_SEND)) return false; if (IS_ENABLED(CONFIG_64BIT) && !longmode) { @@ -2299,6 +2299,6 @@ void kvm_xen_destroy_vm(struct kvm *kvm) } idr_destroy(&kvm->arch.xen.evtchn_ports); - if (kvm->arch.xen_hvm_config.msr) + if (kvm->arch.xen.hvm_config.msr) static_branch_slow_dec_deferred(&kvm_xen_enabled); } diff --git a/arch/x86/kvm/xen.h b/arch/x86/kvm/xen.h index 1e3a913dfb94..d191103d8163 100644 --- a/arch/x86/kvm/xen.h +++ b/arch/x86/kvm/xen.h @@ -53,7 +53,7 @@ static inline void kvm_xen_sw_enable_lapic(struct kvm_vcpu *vcpu) static inline bool kvm_xen_msr_enabled(struct kvm *kvm) { return static_branch_unlikely(&kvm_xen_enabled.key) && - kvm->arch.xen_hvm_config.msr; + kvm->arch.xen.hvm_config.msr; } static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr) @@ -61,13 +61,13 @@ static inline bool kvm_xen_is_hypercall_page_msr(struct kvm *kvm, u32 msr) if (!static_branch_unlikely(&kvm_xen_enabled.key)) return false; - return msr && msr == kvm->arch.xen_hvm_config.msr; + return msr && msr == kvm->arch.xen.hvm_config.msr; } static inline bool kvm_xen_hypercall_enabled(struct kvm *kvm) { return static_branch_unlikely(&kvm_xen_enabled.key) && - (kvm->arch.xen_hvm_config.flags & + (kvm->arch.xen.hvm_config.flags & KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL); }