Received: by 2002:a05:6358:5282:b0:b5:90e7:25cb with SMTP id g2csp84228rwa; Fri, 19 Aug 2022 23:01:45 -0700 (PDT) X-Google-Smtp-Source: AA6agR4mULzSrvkJOuRxu72WFsAD6Pk7B6QGAeWndljBefRtainMNiWUD99rgJMLCRGXbQCJPpaG X-Received: by 2002:a17:902:f693:b0:16f:1d57:8f46 with SMTP id l19-20020a170902f69300b0016f1d578f46mr10490247plg.2.1660975305120; Fri, 19 Aug 2022 23:01:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660975305; cv=none; d=google.com; s=arc-20160816; b=crrlVgTacaNL/52Zv1MDaJnaNY5n2L3Vr4Qry2pp7taTJGqVpn0lZ/h8ROVqGOCbJC 7IVkFXOunNX5zP15DZCCtzZ8j1IaM5vHcD5BDTQKaX6OQl+5pVmbFBSoY5b1DpE7OhfY 4ZL6UsCLpVEBdRDqmH/AjSWNsTat2yr001hHAfyiNv8FqKU42plvK9uCE9kr4ouPECZ9 AbH6SRHnC5WZFB4LedGSOtrAW5Nzl2LWQ+h+N6DjOXzanSeqvTZ+9bmpTBVyAZMZbq5S WsaW+H3CwhIG7hso1OWKW7z17/2WIxGSJDDMcw92dev0H/M7jyjPqOEMugpLd7LwsAqQ BwTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=E9EHPOexxaSPB4Et9KGbPPEujeBqmMkNavt9xWpOJ9k=; b=h4HseY2pbleNn2Ev4hNQU5PCQOQOuuRf0l+IsNH86qNKPhedsK8MEmLHcvP6w7fish ODUhie2Q8UArPvHwgwNdjsdn1fupF6PVwNitPSL+nAOeR4XUzMhfMKzDmiHJdjhNQL7u +HB/MLpYsBnjvHhJAB2JOAKxKHFtZNRxMaG6Mtoodj3Ix5hS7b+v+OWEOaaHG7BiJXuJ bR9g4TPenbL6y6xB+N1HZTsBoioddoSHIlGvMepquEzydbkzqRwxqKjCU/KadFSl6NKA HjwL9U82ubVbKyJbY3loRJpEjPtoHyK4PSfJjNmpWx+dS4xSys01N612UzDgUCZexoWz zcEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=alDHKbQp; 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=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bc22-20020a656d96000000b0041cef94f2cfsi6550698pgb.836.2022.08.19.23.01.27; Fri, 19 Aug 2022 23:01:45 -0700 (PDT) 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=@intel.com header.s=Intel header.b=alDHKbQp; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243781AbiHTGAo (ORCPT + 99 others); Sat, 20 Aug 2022 02:00:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229458AbiHTGAn (ORCPT ); Sat, 20 Aug 2022 02:00:43 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B2AF10D2; Fri, 19 Aug 2022 23:00:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1660975242; x=1692511242; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=xXtcwx3sLV5OqWzlJYDMpDLFYxKeoWVyzZmhoNvxUmg=; b=alDHKbQp6pXlKNjARH57pHlU0otFblWgs425u4V2DhiVdHz7ZWwEZqGO ljUx0MamaD0o/cCLQT+PI9pFu+C9jQ49OvzGbMJlS61pUzy2yVrDuH1Jq UWBKPSivIgEj6JzcceekPZySDtcc6lBUX+zoWfY77MWTkztFWAn0Ya1DN Q14R1z2b270mOWNZu64pxJKlsNs63XbRNjYVKG20YrKOzcHGph8y4Zyiw WkI6k4C2Wx8PtBXsaVDGA1vCHmg5bj4pLnIbGUH1p42rstjaB20IPhAW9 wY3G02vvpcnyLN/kcS4CY2uX4yawz2JLxo0UiGe7OqZtjdlpnjRqGUhxY w==; X-IronPort-AV: E=McAfee;i="6500,9779,10444"; a="293940203" X-IronPort-AV: E=Sophos;i="5.93,250,1654585200"; d="scan'208";a="293940203" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Aug 2022 23:00:41 -0700 X-IronPort-AV: E=Sophos;i="5.93,250,1654585200"; d="scan'208";a="637528412" Received: from ls.sc.intel.com (HELO localhost) ([143.183.96.54]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Aug 2022 23:00:41 -0700 From: isaku.yamahata@intel.com To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: isaku.yamahata@intel.com, isaku.yamahata@gmail.com, Paolo Bonzini , Sean Christopherson , Kai Huang , Chao Gao , Will Deacon Subject: [RFC PATCH 00/18] KVM hardware enable/disable reorganize Date: Fri, 19 Aug 2022 23:00:06 -0700 Message-Id: X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE 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 From: Isaku Yamahata The purpose of this patch series is to get feedback before going further. e.g. rebasing TDX KVM series, etc. This patch series is to implement the suggestion by Sean Christopherson [1] to reorganize enable/disable cpu virtualization feature by replacing the arch-generic current enable/disable logic with PM related hooks. And convert kvm/x86 to use new hooks. - Untable x86 hardware enable logic, snapshot MSRs for user return notifier, enabling cpu virtualization on cpu online and platform resume. and real enabling of CPU virtualization feature - Introduce hooks related to PM. - Convert kvm/x86 code to user those hooks. - Split out hardware enabling/disabling logic into a separate file. Compile it for non-x86 code. Once conversion of other KVM archs is done, this file can be dropped. - Delete cpus_hardware_enabled. 17/18 and 18/18 [1] https://lore.kernel.org/kvm/YvU+6fdkHaqQiKxp@google.com/ Chao Gao (2): KVM: x86: Move check_processor_compatibility from init ops to runtime ops Partially revert "KVM: Pass kvm_init()'s opaque param to additional arch funcs" Isaku Yamahata (16): KVM: x86: Drop kvm_user_return_msr_cpu_online() KVM: x86: Use this_cpu_ptr() instead of per_cpu_ptr(smp_processor_id()) KVM: Drop kvm_count_lock and instead protect kvm_usage_count with kvm_lock KVM: Add arch hooks for PM events with empty stub KVM: x86: Move TSC fixup logic to KVM arch resume callback KVM: Add arch hook when VM is added/deleted KVM: Move out KVM arch PM hooks and hardware enable/disable logic KVM: kvm_arch.c: Remove _nolock post fix KVM: kvm_arch.c: Remove a global variable, hardware_enable_failed KVM: Do processor compatibility check on cpu online and resume KVM: x86: Duplicate arch callbacks related to pm events KVM: Eliminate kvm_arch_post_init_vm() KVM: x86: Delete kvm_arch_hardware_enable/disable() KVM: Add config to not compile kvm_arch.c KVM: x86: Remove cpus_hardware_enabled and related sanity check KVM: Remove cpus_hardware_enabled and related sanity check Documentation/virt/kvm/locking.rst | 14 +-- arch/arm64/kvm/arm.c | 2 +- arch/mips/kvm/mips.c | 2 +- arch/powerpc/kvm/powerpc.c | 2 +- arch/riscv/kvm/main.c | 2 +- arch/s390/kvm/kvm-s390.c | 2 +- arch/x86/include/asm/kvm-x86-ops.h | 1 + arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/kvm/Kconfig | 1 + arch/x86/kvm/svm/svm.c | 4 +- arch/x86/kvm/vmx/vmx.c | 14 +-- arch/x86/kvm/x86.c | 184 ++++++++++++++++++++++------- include/linux/kvm_host.h | 14 ++- virt/kvm/Kconfig | 3 + virt/kvm/Makefile.kvm | 3 + virt/kvm/kvm_arch.c | 119 +++++++++++++++++++ virt/kvm/kvm_main.c | 177 ++++++++------------------- 17 files changed, 349 insertions(+), 197 deletions(-) create mode 100644 virt/kvm/kvm_arch.c -- 2.25.1