Received: by 2002:ac2:464d:0:0:0:0:0 with SMTP id s13csp3270355lfo; Mon, 23 May 2022 00:22:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwDra69V99b+zrRr1Gj1DDjeNMYPBwiEV6DrRErT0NHVUx+DtH7z8BPgOY5EJiwmTgl/m93 X-Received: by 2002:a17:902:bb89:b0:161:ffec:a1b3 with SMTP id m9-20020a170902bb8900b00161ffeca1b3mr11811148pls.141.1653290564269; Mon, 23 May 2022 00:22:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653290564; cv=none; d=google.com; s=arc-20160816; b=T7uZQroTa8RIOOE8RMzHC++IlvIB1l2MkSWnnUvUVCWbXtzXihzKMaIbD5mWrdDdBq CDgoGucpqIoLwkXnJueFTKSfudhATG9AIxyNEUD1KyklObjE8JjQHvM9ItfsWiBtSLEp 8T4gRnCHs48JcuTvBIvsMRQUg5xhKSwGbe7htx363DnrLnfqCq5Q3uRG9UWFarFQRJNq aGw3HO59+Q2DE6WuiM/S8ynWgMYTrwoPlpPQ+vTIEGFrjLG0zuBaQJLprdBhsfgRWIBL ZTut+YTnWJnGwH8IppvWoTw1bXNVYtZuN5R4lEm6BtBknV/LmVjYgijZ9H7s0lHACE8q DBqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=m1I83n4PUC08udPGh28I5vhbfHKAx+wBXDUq+Y3BXBo=; b=oL/8DU6kmtt0GWHDwZlEFs3WRCxONmSsvJA8VJyZW7bUAW6KuFiRjTsrOOo0PwdbDD y4LQup80KUuz3KNQzOgXm50XHtMzuGwnFI3FiaQDU2N3Esh0bmA3KLlO7RdI9ioKmeVJ ZIW2z1NHOJnkQAoLFOIgV1EVsn6zJ4AMrKIffighBVucTFMdUFb8XtsUCnb/2pAUwiZg uR7Y5o4HSk3D0i+M0cqRucg8OWS4YajfFQUXMpyva4AjVx3K92WTUG9e3C12jl+uJp10 6ij8I8ZSggtSCqA80sI+j4P7yRczXBrtTVndI1tFeznIJlkbMaUAazGdhVVNStu30Qog pU7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=EL5S8Pbf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id c4-20020a63da04000000b003f5fd255c35si8916849pgh.650.2022.05.23.00.22.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 May 2022 00:22:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=EL5S8Pbf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 2E197BC1C; Sun, 22 May 2022 23:37:37 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349663AbiETNAw (ORCPT + 99 others); Fri, 20 May 2022 09:00:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236247AbiETNAu (ORCPT ); Fri, 20 May 2022 09:00:50 -0400 Received: from mail-oi1-x22b.google.com (mail-oi1-x22b.google.com [IPv6:2607:f8b0:4864:20::22b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0067B615A for ; Fri, 20 May 2022 06:00:48 -0700 (PDT) Received: by mail-oi1-x22b.google.com with SMTP id n24so9812007oie.12 for ; Fri, 20 May 2022 06:00:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=m1I83n4PUC08udPGh28I5vhbfHKAx+wBXDUq+Y3BXBo=; b=EL5S8Pbfxlxir0aOubRo43JmPkaD40toeNu1YK18HJSHvtL1ZLCD0bRZPG+mKx7qkY f89SN8Dr0KcGuboF5Ut4MPmv1of+ce1NFHNqCUxt76s4ULgg5ClihqdpMg+zfOyEW6NE dOvtkezU4eMZ/xrep6lohbP8eIAaPtCnGxfcD9pmYSgQ9THg/KiOlsSw9UxNRgi6UzAY 9WH5Q9xN02YzkwaFSlN5lQ0E8QWAet29GrGboJS153P6KPIAhHys46wMoR9rUF4mZ/AD 03uXBFcA/1vtKXDqFkgfCvfiUnnrw8hIYpS+jLtGmbabzMX/ZbHX3N7lmS6piF0JiLab jvSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=m1I83n4PUC08udPGh28I5vhbfHKAx+wBXDUq+Y3BXBo=; b=ztaGBIzAzudMLsCp5f5shmtQU2sqgTt4mbGeh8ztXq7XDQrcUGyLt42OrO8071I6Vw DgF6U51C78+Q1MdP5O5MrBGz9O1x0SBddxJoURJRBt3Xcy80BRSkAz5BZN9aJtNLm/3D N3Cc3IkKRq7eTf8axQ3Bb9b/9ADhSwETgTfWJP+kPHkt0Dpr+EFBWRI2iDoOvTXt1CXw Qp1hbFxl+YbEh/fFKz45rx+aejNdgCs5xgVvmpz4OBc3uogXEukYygIWSTwZyE5M/TzL 9/JztYg8Dhkjp8rWb+tmbAbDZWQuFIBaoW6iXd50/5OtOVH7GnRc15Fr29NPYcFrpFEu M07A== X-Gm-Message-State: AOAM530bEi5ctbau7rmgrWFYls7FVW0giwXb7DbYKij6V59UpBDfbn1m OEukyxwCIqmkHUL1ugYzkqHBPrVIEjIGfSoAnj1eBQ== X-Received: by 2002:a05:6808:c2:b0:325:eb71:7266 with SMTP id t2-20020a05680800c200b00325eb717266mr5766203oic.269.1653051646802; Fri, 20 May 2022 06:00:46 -0700 (PDT) MIME-Version: 1.0 References: <20220518132512.37864-1-likexu@tencent.com> <20220518132512.37864-4-likexu@tencent.com> <31f3de9a-a752-e322-ebd0-731c42afd47a@redhat.com> In-Reply-To: <31f3de9a-a752-e322-ebd0-731c42afd47a@redhat.com> From: Jim Mattson Date: Fri, 20 May 2022 06:00:35 -0700 Message-ID: Subject: Re: [PATCH RESEND v3 03/11] KVM: x86/pmu: Protect kvm->arch.pmu_event_filter with SRCU To: Paolo Bonzini Cc: Like Xu , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Joerg Roedel , linux-kernel@vger.kernel.org, kvm@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=no 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 On Fri, May 20, 2022 at 5:51 AM Paolo Bonzini wrote: > > On 5/18/22 15:25, Like Xu wrote: > > From: Like Xu > > > > Similar to "kvm->arch.msr_filter", KVM should guarantee that vCPUs will > > see either the previous filter or the new filter when user space calls > > KVM_SET_PMU_EVENT_FILTER ioctl with the vCPU running so that guest > > pmu events with identical settings in both the old and new filter have > > deterministic behavior. > > > > Fixes: 66bb8a065f5a ("KVM: x86: PMU Event Filter") > > Signed-off-by: Like Xu > > Reviewed-by: Wanpeng Li > > Please always include the call trace where SRCU is not taken. The ones > I reconstructed always end up at a place inside srcu_read_lock/unlock: > > reprogram_gp_counter/reprogram_fixed_counter > amd_pmu_set_msr > kvm_set_msr_common > svm_set_msr > __kvm_set_msr > kvm_set_msr_ignored_check > kvm_set_msr_with_filter > kvm_emulate_wrmsr** > emulator_set_msr_with_filter** > kvm_set_msr > emulator_set_msr** > do_set_msr > __msr_io > msr_io > ioctl(KVM_SET_MSRS)** > intel_pmu_set_msr > kvm_set_msr_common > vmx_set_msr (see svm_set_msr) > reprogram_counter > global_ctrl_changed > intel_pmu_set_msr (see above) > kvm_pmu_handle_event > vcpu_enter_guest** > kvm_pmu_incr_counter > kvm_pmu_trigger_event > nested_vmx_run** > kvm_skip_emulated_instruction** > x86_emulate_instruction** > reprogram_fixed_counters > intel_pmu_set_msr (see above) > > Paolo I agree with Paolo that existing usage is covered by srcu_read_lock/unlock, but (a) it's not easy to confirm this, and (b) this is very fragile. Whichever way we decide to go, the userspace MSR filter and the PMU event filter should adopt the same approach.