Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2381947pxj; Mon, 10 May 2021 01:17:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx/ez0VIyLBNmk7b9Z/vysr9ZYHCxomYryS+USpCjtsveqw/kpCW1FayJOQoObxMizedKuz X-Received: by 2002:a17:906:3153:: with SMTP id e19mr24596739eje.351.1620634663325; Mon, 10 May 2021 01:17:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620634663; cv=none; d=google.com; s=arc-20160816; b=RKCSKE+gFOBFPBoPbs5SMcmx5WmWKUNZf/Zu9PMsB5KBnTQEagvFg/Hx884TwhhmH+ tw11hxkzdAP/gZbnF+B2MypgEbKMNynSKJSTNfDpJZsafIL+fBxnLypkSHUmE7ZmZdzM ff+uzsClziXqWc9FKm5/iCd6sA/4bNAD95s20Gw5BErRL5ww6gOs01W3WxtUf0ycHF4M P+B8IyXWLVGvkuFp+sVfowF3KukmwbXSSUZdCpBrzZVi2StvY+7uO1lEwx3AXk3cqFBK LWZXOLMbc3l0Div1TfAJ4L90B6AjuootLSODbdjotK9ELjx6PrvqDUfzytndyVR68/Cf bzMA== 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:ironport-sdr:ironport-sdr; bh=clHpsygIdSweTk0gmKCLtwwhTOBWVm+FIA60SyiRW+Y=; b=xJjvWvCM+NsUZPIyetSto2ORgQgPUSvfw3T69XLedvwI+HrMAzTpZmJQrhhq1pS1x/ cRrvzXKNT9Y4EBWiID22o2rW4HcLmBnGwfXw+l+OVMObKZK3kzkWqa3JlaOyqycqpXlA EYaGx7hAtc+qoMCS9/9EWo1xordft1lHLR/tpRjoGrQYHdfnTy8b/70fuEvnxHRv72X6 Cg4GHBuGnW8JtrjwRZuFOtBt3MafUn1fC3g+17NbCMC5im20rfRVi1FDc36Uhmph/2MO d2jNxQLCcIUyj6G1eFhDvTm7yW6l+XFYTweAEk3pJQ9drvxp4aSIIK+a7T2bJ4x2f3/G ZXGg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s3si12671334edr.465.2021.05.10.01.17.20; Mon, 10 May 2021 01:17:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230157AbhEJIRU (ORCPT + 99 others); Mon, 10 May 2021 04:17:20 -0400 Received: from mga12.intel.com ([192.55.52.136]:42716 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230059AbhEJIRU (ORCPT ); Mon, 10 May 2021 04:17:20 -0400 IronPort-SDR: kTwoUV49CSQtICKqzAbwTsEW2M19tUkGb4igNiYrqFqcj05Rr00Kv4Fa3jbsgNgJHwyiFyqetM mjCsPXIRrmQQ== X-IronPort-AV: E=McAfee;i="6200,9189,9979"; a="178727651" X-IronPort-AV: E=Sophos;i="5.82,287,1613462400"; d="scan'208";a="178727651" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 May 2021 01:16:15 -0700 IronPort-SDR: AdPc4YmQaJF/PrgQns47ijYSAa+cNsQPEOSpQFr1r9goPyObksljui00Ajk2RGFoc90nxbmQJl uNZ9IZbIkiXg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,287,1613462400"; d="scan'208";a="408250810" Received: from clx-ap-likexu.sh.intel.com ([10.239.48.108]) by orsmga002.jf.intel.com with ESMTP; 10 May 2021 01:16:13 -0700 From: Like Xu To: Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , weijiang.yang@intel.com, wei.w.wang@intel.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RESEND PATCH v4 00/10] KVM: x86/pmu: Guest Architectural LBR Enabling Date: Mon, 10 May 2021 16:15:24 +0800 Message-Id: <20210510081535.94184-1-like.xu@linux.intel.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi geniuses, A new kernel cycle has begun, and this version looks promising. From the end user's point of view, the usage of Arch LBR is the same as the legacy LBR we have merged in the mainline, but it is much faster. The Architectural Last Branch Records (LBRs) is published in the 319433-040 release of Intel Architecture Instruction Set Extensions and Future Features Programming Reference[0]. The main advantages for the Arch LBR users are [1]: - Faster context switching due to XSAVES support and faster reset of LBR MSRs via the new DEPTH MSR - Faster LBR read for a non-PEBS event due to XSAVES support, which lowers the overhead of the NMI handler. - Linux kernel can support the LBR features without knowing the model number of the current CPU. Please check more details in each commit and feel free to comment. [0] https://software.intel.com/content/www/us/en/develop/download/ intel-architecture-instruction-set-extensions-and-future-features-programming-reference.html [1] https://lore.kernel.org/lkml/1593780569-62993-1-git-send-email-kan.liang@linux.intel.com/ --- v13->v13 RESEND Changelog: - Rebase to kvm/queue tree tag: kvm-5.13-2; - Includes two XSS dependency patches from kvm/intel tree; v3->v4 Changelog: - Add one more host patch to reuse ARCH_LBR_CTL_MASK; - Add reserve_lbr_buffers() instead of using GFP_ATOMIC; - Fia a bug in the arch_lbr_depth_is_valid(); - Add LBR_CTL_EN to unify DEBUGCTLMSR_LBR and ARCH_LBR_CTL_LBREN; - Add vmx->host_lbrctlmsr to save/restore host values; - Add KVM_SUPPORTED_XSS to refactoring supported_xss; - Clear Arch_LBR ans its XSS bit if it's not supported; - Add negative testing to the related kvm-unit-tests; - Refine code and commit messages; Previous: v4: https://lore.kernel.org/kvm/20210314155225.206661-1-like.xu@linux.intel.com/ v3: https://lore.kernel.org/kvm/20210303135756.1546253-1-like.xu@linux.intel.com/ Like Xu (8): perf/x86/intel: Fix the comment about guest LBR support on KVM perf/x86/lbr: Simplify the exposure check for the LBR_INFO registers KVM: vmx/pmu: Add MSR_ARCH_LBR_DEPTH emulation for Arch LBR KVM: vmx/pmu: Add MSR_ARCH_LBR_CTL emulation for Arch LBR KVM: vmx/pmu: Add Arch LBR emulation and its VMCS field KVM: x86: Expose Architectural LBR CPUID leaf KVM: x86: Refine the matching and clearing logic for supported_xss KVM: x86: Add XSAVE Support for Architectural LBRs Sean Christopherson (1): KVM: x86: Report XSS as an MSR to be saved if there are supported features Yang Weijiang (1): KVM: x86: Refresh CPUID on writes to MSR_IA32_XSS arch/x86/events/intel/core.c | 3 +- arch/x86/events/intel/lbr.c | 6 +- arch/x86/include/asm/kvm_host.h | 1 + arch/x86/include/asm/msr-index.h | 1 + arch/x86/include/asm/vmx.h | 4 ++ arch/x86/kvm/cpuid.c | 46 ++++++++++++-- arch/x86/kvm/vmx/capabilities.h | 25 +++++--- arch/x86/kvm/vmx/pmu_intel.c | 103 ++++++++++++++++++++++++++++--- arch/x86/kvm/vmx/vmx.c | 50 +++++++++++++-- arch/x86/kvm/vmx/vmx.h | 4 ++ arch/x86/kvm/x86.c | 19 +++++- 11 files changed, 226 insertions(+), 36 deletions(-) -- 2.31.1