From patchwork Thu Dec 22 23:04:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vishal Annapurve X-Patchwork-Id: 3251 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp32450wrn; Thu, 22 Dec 2022 15:05:54 -0800 (PST) X-Google-Smtp-Source: AMrXdXtp44Ao24VwbEf6ai+ZTFOnaZTXEIgXAqORgGtK43bKo+PGxHAV27sMZo+wIC2txlLxPw7S X-Received: by 2002:a17:906:5619:b0:7c0:faca:52c with SMTP id f25-20020a170906561900b007c0faca052cmr5636356ejq.37.1671750353975; Thu, 22 Dec 2022 15:05:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671750353; cv=none; d=google.com; s=arc-20160816; b=SzxQMP4/Zr4TnkUMSt8DOMbCtEktLMkZlfG6drbZZ2TdieOFc71iqdQlEZnPeaA1iE rtecMT3viiObkd09IXAcxC8OlPykwX26ytDdC7liHec+BUY7cNEdXs7eHHOwJcDVHRCK XsrCJ0zT8VHLSAnF3OzbPasnbjZw1j/hGKPyWnIqi+Kk+Pbzbj1dgzQp5SZrZTu9iLJU Jh/YH0CabOCFJ1rKq+MoizpTgHJ4YT25bbe9c+ayQimdOgZXVqgmlqnYOr8MX/pT7jL8 gjdEATCmxBC1om6iPFk3dELHOlZwsJnXyyuVxmhw8Qf7vkvPQfRxI/xwXO4LnnR5Nimu Y0mQ== 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:mime-version:date :dkim-signature; bh=tHWaMPgNH1Gc3dyUgtUp96T2Ds+DtSztVEOEp9eXXLE=; b=WvUxYJz4nuPWOJjLkqB9P44w2rL5kTZhu6jU3qgXOlcLLtMXxQuvfIUtubiBl1IQbu 5Sc3PLXUiAEEn9G5z8p/fLfTjJ4+wh0dwTDYHw95xfgUfQC33dYtEc1oVFj4dXGeJzs/ dZhiUPj2PZjv2ezrqJ7U6iUi2RggD8VuzpgkQuS+2gIKzWD5b0qYC117wooru3Ua/O+T 2aPW14xr6uqj572vWsiH1v14VKHhXdCIDtOj6Maqtlnqr3Pyv9gOHNzKWgYiMh6u8Qoh jS49I2GHVRz0qOHu0Sl78wNtqf89kS38jNXLtVFhIZ6I4XjE84mNCln7m6WPd+on64oh 8r7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="J1m6H/8q"; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id xf3-20020a17090731c300b007ae417013desi1386879ejb.324.2022.12.22.15.05.30; Thu, 22 Dec 2022 15:05:53 -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="J1m6H/8q"; 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 S229982AbiLVXFL (ORCPT + 99 others); Thu, 22 Dec 2022 18:05:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49944 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229627AbiLVXFH (ORCPT ); Thu, 22 Dec 2022 18:05:07 -0500 Received: from mail-pl1-x649.google.com (mail-pl1-x649.google.com [IPv6:2607:f8b0:4864:20::649]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 187BD2717A for ; Thu, 22 Dec 2022 15:05:07 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id c12-20020a170902d48c00b00189e5443387so2225900plg.15 for ; Thu, 22 Dec 2022 15:05:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=tHWaMPgNH1Gc3dyUgtUp96T2Ds+DtSztVEOEp9eXXLE=; b=J1m6H/8q08TJDo6V440ml0vH1FPML4rBgC8Z8KKPyy9b9/w8p2/vuVbFAcP5/BIAJ4 8g2gBZHdZ0kkBZpuRDrDBf6PK5MKrygPfkntIl+QYO7R3SsdNqtM7zMJJFD+QQT7Vf3O cZzYsjv9ugcbYt1JdD/7UhuGjKi2sO0roV3kbzu1WamewDTwrz4UtKcNrevBr7fZqtH/ NFIWVwfuajUEi3u4L8ZDM7NCHNFAgx1b6x/mJ97l9sH5BMg4X0cRKjU9Mb8VFKkwMYvx lpO9dvk7LHv4xWvbOnlwithG5+PhG/ySqI8EUDrlzxI313a5QmjtI0xcWfwjMLYPijgz TS3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=tHWaMPgNH1Gc3dyUgtUp96T2Ds+DtSztVEOEp9eXXLE=; b=LRb3JuWl9GcrwXmE6OsTpgNgwwriWw65XeGpKvTjU8XPlICqc7V+iDVoYsvAnqXOOQ AzWB4je0Mt58Xjhfeg3UygDPZlpj0n2DNysVA6wBAZFH6NPFGZYDaYCRybjbA3NfQxya jHNkvsN/xVYPXqomLGzEjr0zxGMSHMv60Db9tD81yc4vmhNZH5W8wmqjdvnbPJXzfcy+ qM1RTlJX+cES8ERNPENBXT9jpw4J6qy2RaAJATJo1FBgIM4rz6MKPZeecuiGBvqxwOdF IvVt6gJvtpIJrKvorvNqbQiMfmRPVMDw/f2GOQDFkRWcmSEgjE6kFQCm28O/CcAYjvZm 8HBw== X-Gm-Message-State: AFqh2kqhHhvnO9rwe6WkSdyJ6G+fzhThnYBaWqrPtjJRv0ZI8AMCzn3d fsxV73RYhA5s8+WU/kID8sKglc+863l0TyYm X-Received: from vannapurve2.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:41f8]) (user=vannapurve job=sendgmr) by 2002:a17:90a:d350:b0:223:fa07:7bfb with SMTP id i16-20020a17090ad35000b00223fa077bfbmr675609pjx.38.1671750306569; Thu, 22 Dec 2022 15:05:06 -0800 (PST) Date: Thu, 22 Dec 2022 23:04:56 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.39.0.314.g84b9a713c41-goog Message-ID: <20221222230458.3828342-1-vannapurve@google.com> Subject: [V3 PATCH 0/2] Execute hypercalls from guests according to 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, pgonda@google.com, andrew.jones@linux.dev, Vishal Annapurve 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=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752957299338467827?= X-GMAIL-MSGID: =?utf-8?q?1752957299338467827?= Confidential VMs(CVMs) need to execute hypercall instruction as per the CPU type. Normally KVM emulates the vmcall/vmmcall instruction by patching the guest code at runtime. Such a guest memory manipulation by KVM is not allowed with CVMs. This series adds support of executing hypercall as per the native cpu type queried using cpuid instruction. CPU vendor type is stored after one time execution of cpuid instruction to be reused later. Changes in v3: 1) Guest logic is modified to not rely on host cpu type and instead query cpu vendor using cpuid instruction. 2) Existing callers of vmmcall/vmcall are not updated to avoid enforcing native hypercall instruction across all users which are mostly non-confidential usecases. v2: https://lore.kernel.org/all/20220915000448.1674802-1-vannapurve@google.com/ More discussion around this change: https://lore.kernel.org/lkml/Y1Hhw40H58EmZ6lK@google.com/ Vishal Annapurve (2): KVM: selftests: x86: Cache the cpu vendor type KVM: selftests: x86: Add native hypercall support .../selftests/kvm/include/x86_64/processor.h | 3 ++ .../selftests/kvm/lib/x86_64/processor.c | 51 +++++++++++++++++-- 2 files changed, 49 insertions(+), 5 deletions(-)