From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-21.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C090C4332D for ; Tue, 16 Mar 2021 18:45:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E8CF665144 for ; Tue, 16 Mar 2021 18:45:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240107AbhCPSpU (ORCPT ); Tue, 16 Mar 2021 14:45:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240092AbhCPSoq (ORCPT ); Tue, 16 Mar 2021 14:44:46 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D315C06174A for ; Tue, 16 Mar 2021 11:44:46 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id u1so42841876ybu.14 for ; Tue, 16 Mar 2021 11:44:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=reply-to:date:message-id:mime-version:subject:from:to:cc; bh=B7pVfJtAzkpAW4g2RjA9F8Hx9jH9epVTR8buiCtjOQY=; b=IdEsbcouCphArUM6+1+XobihwWZocP60WYNQ4DKS/5AwQbJgTBuKe/m843KN+Hlqum rvUGFgkyRm4NIHHBX7VbABhnkub0YGM22LDSHVS0FcLSv7J8PMISZ29743QEgPHIZNCT abhSfEW+w43DCWYcO0xgndK0b4cMWBmMyDiOQdkkCyAfH1goeopGZynOl3EHl2Rkpy9p wF+/W1aDlhCB0Sn+DGpbQbVKPQJDqxiFvk6X0AB8hCvIHlMPEy8230mFyuEXMyQixJqQ 7/7D8G2Wj+l4t2uLIenENHfL96u+yxGT/WXpw81B1qTL6WeEyRYmdodvqc7Y4SS6qQf7 VE5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:date:message-id:mime-version:subject :from:to:cc; bh=B7pVfJtAzkpAW4g2RjA9F8Hx9jH9epVTR8buiCtjOQY=; b=oceNVndL8lbUXoYn3CSQNTlZG1XsWMc/ub1apANrpP3NqU4KJPwIkG6l4OFbi6iMIj xaQvpn7HkkYrWcg1SsG2RFAYkcUFFaas3A4UX8tLIm+yH6mqTvChNAtz0Zj55ynMp7+H RPSlNK5BnudhM76izfBTYPRnCycxfCt/BleQ5bPY/PCQ8q15aU2SOYXPCN0XDIktlmlf OAFmSksJ6I4MtA86RdJLFm01R0gzyES/m3eR5XTaiZytlIlTQRPZACzUuds4klL1OE/R M/E/7ojtNmhFkcfaaZ7w3/4xBF9LRpXvaceJcH/dG6l6EdfNrMzSEQ3xT0//mx5fCGXk O39g== X-Gm-Message-State: AOAM532xhB8pqzMMjfPGIXUbcuCXri/zrGBLpXJuLpyAFtS5cnV+Eh+1 nMQ10Rz2YY+lfbqv4bqLe0eFBruU60E= X-Google-Smtp-Source: ABdhPJyekYTrFapZGgOnWObiCCFKwGHsizuQQ3hq48wnHVlvZApvgk42WrY4I/0k/TMh9fye+P0QgCtuAgI= X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:e113:95c2:2d1:e304]) (user=seanjc job=sendgmr) by 2002:a25:bc41:: with SMTP id d1mr322696ybk.125.1615920285519; Tue, 16 Mar 2021 11:44:45 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 16 Mar 2021 11:44:32 -0700 Message-Id: <20210316184436.2544875-1-seanjc@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.31.0.rc2.261.g7f71774620-goog Subject: [PATCH 0/4] KVM: x86: MSR filtering and related fixes From: Sean Christopherson To: Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Alexander Graf , Yuan Yao Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Rework the MSR filtering implementation to treat a given filter instance as an atomic unit, and to properly protect it with SRCU. Fix two nVMX bugs related to MSR filtering (one directly, one indirectly), and additional cleanup on top. Regarding the macro insanity in patch 03, I verified the before and after binary output for vmx_set_intercept_for_msr() was identical (this required wrapping "if (msr <= 0x1fff)" with (un)likely in both the before and after versions; gcc made seemingly random choices without forcing it to favor a specific branch). Sean Christopherson (4): KVM: x86: Protect userspace MSR filter with SRCU, and set atomically-ish KVM: nVMX: Handle dynamic MSR intercept toggling KVM: VMX: Macrofy the MSR bitmap getters and setters KVM: nVMX: Clean up x2APIC MSR handling for L2 Documentation/virt/kvm/api.rst | 6 +- arch/x86/include/asm/kvm_host.h | 17 ++-- arch/x86/kvm/vmx/nested.c | 161 +++++++++++++------------------- arch/x86/kvm/vmx/vmx.c | 67 +------------ arch/x86/kvm/vmx/vmx.h | 32 +++++++ arch/x86/kvm/x86.c | 109 ++++++++++++--------- 6 files changed, 176 insertions(+), 216 deletions(-) -- 2.31.0.rc2.261.g7f71774620-goog