From nobody Fri Jul 4 23:57:12 2025 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1622721048; cv=none; d=zohomail.com; s=zohoarc; b=DOoFbwgaFkl4kGofQjTCbCVGtZtuJ6Fh2Y9gN72G3DodEKHYHadIie6c0rwtfAb/qWAd8CL94q5nqpczojR5SXiDekBu1GMBXGrkpzqmZ/AmT+SPW8AzT1dAiOCZzVWEM7ydzv6aSrbe2t0OmY9WNNSABvNkeWnXnRt41IPSUS4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622721048; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=O5jFFxFei3pu3SlNpH6OKiipvIDwFG68UPcE4Ah0fFg=; b=bQqn5xq2G7+n3BxKEdvosgreqmO76MROjA/jGtxCYikyHM1+OHDynjCmdf1G+uW2QyMmZ+61JmB3DPS/KrviyyZQYpjYNLhlEIti8deKHbJ0f4kn9K+ER1w0I2HwmSy1rRb7HBS8xUdd8+pTwJwUv5on9E4LYjCU83fV3u/pODw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1622721048972337.8321055771411; Thu, 3 Jun 2021 04:50:48 -0700 (PDT) Received: from localhost ([::1]:51182 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lols7-0008KI-PK for importer2@patchew.org; Thu, 03 Jun 2021 07:50:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50538) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lolqO-0005UW-D6 for qemu-devel@nongnu.org; Thu, 03 Jun 2021 07:49:00 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:26094) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lolqM-00029N-LQ for qemu-devel@nongnu.org; Thu, 03 Jun 2021 07:49:00 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-370-vLsyURPwOJCPZk9STSAdSw-1; Thu, 03 Jun 2021 07:48:56 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B6BBE1013727 for ; Thu, 3 Jun 2021 11:48:55 +0000 (UTC) Received: from vitty.brq.redhat.com (unknown [10.40.194.97]) by smtp.corp.redhat.com (Postfix) with ESMTP id 188841A868; Thu, 3 Jun 2021 11:48:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1622720938; h=from:from: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; bh=O5jFFxFei3pu3SlNpH6OKiipvIDwFG68UPcE4Ah0fFg=; b=hmugZn2WboOI7Pd2GOxLZuccIhaCTRPNzCugRD8CjHXYR5t8lpOVKw6BF+k0cyY5OOm1Q9 NiP1V3z3vExrCUuBnu9eFrfyfQFGm39YHuwBh2zGBB3V0+c9296G7tVl9mV98e0tihdHHD pU7UoqY1IHTC2lUmSGxnVoNdDnusI3o= X-MC-Unique: vLsyURPwOJCPZk9STSAdSw-1 From: Vitaly Kuznetsov To: qemu-devel@nongnu.org, Eduardo Habkost Subject: [PATCH v7 7/9] i386: HV_HYPERCALL_AVAILABLE privilege bit is always needed Date: Thu, 3 Jun 2021 13:48:33 +0200 Message-Id: <20210603114835.847451-8-vkuznets@redhat.com> In-Reply-To: <20210603114835.847451-1-vkuznets@redhat.com> References: <20210603114835.847451-1-vkuznets@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=vkuznets@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=vkuznets@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.37, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, 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: Paolo Bonzini , Marcelo Tosatti , Igor Mammedov Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" According to TLFS, Hyper-V guest is supposed to check HV_HYPERCALL_AVAILABLE privilege bit before accessing HV_X64_MSR_GUEST_OS_ID/HV_X64_MSR_HYPERCALL MSRs but at least some Windows versions ignore that. As KVM is very permissive and allows accessing these MSRs unconditionally, no issue is observed. We may, however, want to tighten the checks eventually. Conforming to the spec is probably also a good idea. Enable HV_HYPERCALL_AVAILABLE bit unconditionally. Signed-off-by: Vitaly Kuznetsov Reviewed-by: Eduardo Habkost --- target/i386/kvm/kvm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 93f9b5a457d5..a3897d4d8788 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -810,8 +810,6 @@ static struct { [HYPERV_FEAT_RELAXED] =3D { .desc =3D "relaxed timing (hv-relaxed)", .flags =3D { - {.func =3D HV_CPUID_FEATURES, .reg =3D R_EAX, - .bits =3D HV_HYPERCALL_AVAILABLE}, {.func =3D HV_CPUID_ENLIGHTMENT_INFO, .reg =3D R_EAX, .bits =3D HV_RELAXED_TIMING_RECOMMENDED} } @@ -820,7 +818,7 @@ static struct { .desc =3D "virtual APIC (hv-vapic)", .flags =3D { {.func =3D HV_CPUID_FEATURES, .reg =3D R_EAX, - .bits =3D HV_HYPERCALL_AVAILABLE | HV_APIC_ACCESS_AVAILABLE}, + .bits =3D HV_APIC_ACCESS_AVAILABLE}, {.func =3D HV_CPUID_ENLIGHTMENT_INFO, .reg =3D R_EAX, .bits =3D HV_APIC_ACCESS_RECOMMENDED} } @@ -829,8 +827,7 @@ static struct { .desc =3D "clocksources (hv-time)", .flags =3D { {.func =3D HV_CPUID_FEATURES, .reg =3D R_EAX, - .bits =3D HV_HYPERCALL_AVAILABLE | HV_TIME_REF_COUNT_AVAILABL= E | - HV_REFERENCE_TSC_AVAILABLE} + .bits =3D HV_TIME_REF_COUNT_AVAILABLE | HV_REFERENCE_TSC_AVAI= LABLE} } }, [HYPERV_FEAT_CRASH] =3D { @@ -1343,6 +1340,9 @@ static int hyperv_fill_cpuids(CPUState *cs, c->ebx =3D hv_build_cpuid_leaf(cs, HV_CPUID_FEATURES, R_EBX); c->edx =3D hv_build_cpuid_leaf(cs, HV_CPUID_FEATURES, R_EDX); =20 + /* Unconditionally required with any Hyper-V enlightenment */ + c->eax |=3D HV_HYPERCALL_AVAILABLE; + /* Not exposed by KVM but needed to make CPU hotplug in Windows work */ c->edx |=3D HV_CPU_DYNAMIC_PARTITIONING_AVAILABLE; =20 --=20 2.31.1