Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp5000340rwl; Wed, 28 Dec 2022 11:44:50 -0800 (PST) X-Google-Smtp-Source: AMrXdXusplO+YrapCjLskQLvjjFT7piy3B2Ek/zdGjaz1x5/S01Z8P87Dg0a8eS0oUptcYkdzhQM X-Received: by 2002:a17:90a:1588:b0:223:1a17:55c3 with SMTP id m8-20020a17090a158800b002231a1755c3mr28951032pja.41.1672256690616; Wed, 28 Dec 2022 11:44:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672256690; cv=none; d=google.com; s=arc-20160816; b=BV+PrTwdzSJbxW+naHRipJCE5MpBd7h7LTGbKg1SiBMEYZmjR5jC3vqmIS0tknJgNf 4NIsD6vEcyYoZUaNLGsX0RmvUsDNeY7U7gdAU5f6+hyDNUclcoz8+k2ByrLEu7mQq7At JfAWO0UISA3oMiwU+cHxyHPzDUpSde4z93j54YgXU5b6Il8gwmENExlshIU/8QL8w1YR tOkmChK//nHJT12eVmnPVrRu08DIqawyYJY6HjV2UzTcG+tVeUFkC/4NViWvEooeQz83 J+0ALKl8bjId6p/+GxCL7rH58vioz1lYfoEcRHXFVMsRjoV7DLyN+zmwj/U6qcFkDwRk W/pg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=sIyfuO6L8HnU8CmCldKrIpDi7aTZJyxJfn1wljTzIeI=; b=CNjqO9UfkUnY8IDaH7VC0cvd1V/YfLLt4gQf8lUehnvfds7tT7vu5B96G6DvIj6xK8 WQSpLjf6UGxbQK4W2mNMJ3DhA26AK7pViw2QiaKyx3oWTt8m1YNRf60MM/LHJ2di9GXU fmkFPhoCP9w+My3WSLshfhDdJ6RLJSF5+DK6DjDDGaYw7WTZmqDwt3nIFG9mrWleWjqn YaAciHGUMMiCDZVIKbboMImEv+qmXuMh9MwFXw3IcT+zj+PO1qWox8qDivFXh5digq6p i3tjZxHcGY7/wv4n8/aR2hLFYUY+GWsSSX+j1szLyCzIY9EyROnil8q6COUrF7ZakK2t 9z5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=HbphtqtI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id my11-20020a17090b4c8b00b00212ee661e5bsi18119935pjb.153.2022.12.28.11.44.42; Wed, 28 Dec 2022 11:44:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=HbphtqtI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233191AbiL1TZZ (ORCPT + 64 others); Wed, 28 Dec 2022 14:25:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233350AbiL1TZF (ORCPT ); Wed, 28 Dec 2022 14:25:05 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E32AB183AE for ; Wed, 28 Dec 2022 11:24:56 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id v16-20020a17090a899000b00219b1f0ddebso12926757pjn.5 for ; Wed, 28 Dec 2022 11:24:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=sIyfuO6L8HnU8CmCldKrIpDi7aTZJyxJfn1wljTzIeI=; b=HbphtqtIjGcu1bCKK6wFWu4E/GlYZGDlsYger0IgbCeUkoHRrvjgvwYnY/vOQNJS3v FyjI7bdMglfCpRTTsNvK49p8IyLNoVRBVdcnldRVB+HUTo08LKiSrhC5Q/0Uc+QQdp+X IHJ89MTp65CrwucYaVMtjMiROhNdBnnGYlBREUmDHiQkTkehUA4DlpRUBvud1+SVqpMC 6jKDiAXw31yGNOiO07z1YlMzIXbFVC8qVLvnQMkUpOleAVc5L3CryHcplcqTmY4Pt+Gf tXjGKaI88IH6T+SOZw737PpHr745DcyWzXyYFxhUqfzzIygXPYuztcWMdNooU6ZBsvBQ U5Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=sIyfuO6L8HnU8CmCldKrIpDi7aTZJyxJfn1wljTzIeI=; b=ijMKKStsaTT14hNkFE01kEl5JP/h2MWruEIyM6BTf+AxRM+IVyORAZrsPha63LnCIX qiDB88VHs/xP/iUddCEECIHmr1CSvT/HHCd++2T7u/0DqIkixT+H4fCUOEAYddtg2FeK V609AF7q4hb4wSDsyEms1WSkocZ81isCUieE/OWcDCP8WRFyOvyux2zb3knmbHjhMhQ+ Pv7WZtutlRvyt9idQa9Ozejq+fAjCIphFRnpbipOmetoQSB6fBmTDcSIBxT26I90nJKA 8u0Xb4Ocbjf4buQWf3gakdsmcxY1bOqa29606hCZETfGeofo4HhTWelePS58DJxq2Jio c6/A== X-Gm-Message-State: AFqh2kqu03RUUl5/y986hBc84477lok6BB31BTse57cXrxaud8WaKId7 FjMdtLjJUheFka6W7UWM5d/y4CUhvJCXNDXu X-Received: from vannapurve2.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:41f8]) (user=vannapurve job=sendgmr) by 2002:a17:90a:7c48:b0:225:ff38:5494 with SMTP id e8-20020a17090a7c4800b00225ff385494mr796035pjl.151.1672255496443; Wed, 28 Dec 2022 11:24:56 -0800 (PST) Date: Wed, 28 Dec 2022 19:24:38 +0000 In-Reply-To: <20221228192438.2835203-1-vannapurve@google.com> Mime-Version: 1.0 References: <20221228192438.2835203-1-vannapurve@google.com> X-Mailer: git-send-email 2.39.0.314.g84b9a713c41-goog Message-ID: <20221228192438.2835203-5-vannapurve@google.com> Subject: [V4 PATCH 4/4] KVM: selftests: x86: Invoke kvm hypercall as per host cpu From: Vishal Annapurve To: x86@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: pbonzini@redhat.com, shuah@kernel.org, bgardon@google.com, seanjc@google.com, oupton@google.com, peterx@redhat.com, vkuznets@redhat.com, dmatlack@google.com, Vishal Annapurve Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Invoke vmcall/vmmcall instructions from kvm_hypercall as per host CPU type. CVMs and current kvm_hyerpcall callers need to execute hypercall as per the cpu type to avoid KVM having to emulate the instruction anyways. CVMs need to avoid KVM emulation as the guest code is not updatable from KVM. Guest code region can be marked un-mondifiable from KVM without CVMs as well, so in general it's safer to avoid KVM emulation for vmcall/vmmcall instructions. Suggested-by: Sean Christopherson Signed-off-by: Vishal Annapurve --- tools/testing/selftests/kvm/lib/x86_64/processor.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/testing/selftests/kvm/lib/x86_64/processor.c index 18f0608743d1..cc0b9c17fa91 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -1154,9 +1154,15 @@ uint64_t kvm_hypercall(uint64_t nr, uint64_t a0, uint64_t a1, uint64_t a2, { uint64_t r; - asm volatile("vmcall" + asm volatile("test %[use_vmmcall], %[use_vmmcall]\n\t" + "jnz 1f\n\t" + "vmcall\n\t" + "jmp 2f\n\t" + "1: vmmcall\n\t" + "2:" : "=a"(r) - : "a"(nr), "b"(a0), "c"(a1), "d"(a2), "S"(a3)); + : "a"(nr), "b"(a0), "c"(a1), "d"(a2), "S"(a3), + [use_vmmcall] "r" (is_host_cpu_amd())); return r; } -- 2.39.0.314.g84b9a713c41-goog