Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp349819pxb; Wed, 14 Apr 2021 17:29:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzbd3TYuetxyvRWi3GZ9pNLrIwPFnxDFLf/G+FlWEkgnbATcUTv25rL94x5urytAmIhp2jb X-Received: by 2002:a17:902:c407:b029:e7:2272:d12e with SMTP id k7-20020a170902c407b02900e72272d12emr806057plk.52.1618446593708; Wed, 14 Apr 2021 17:29:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618446593; cv=none; d=google.com; s=arc-20160816; b=LEoJi5Gr+BgNVbt/n0xyIHSKALXEC+rlv82F21NhHye6zsyyAuGqRz1NhOkPjLLaGc MAJtHI+SE/dBNE2qx4DX37ZUtyA3HaoKF96DaFwrshNv9Iu6wCSRsmmlnYzqJExlqmvY 5nT2NhD+Z6w2BtOzADzHtZRSfbSeIHL/fI58RotN5fABrZIz5lq0cDFQyYX2pmyxW3Vc 2zTehvDgGnnh1RKTERyhgN31ZjIsMZM+AuBmAcbRsXyEptFkVLiu9A6dBXCkD1HCua9f K4jLmZ4BfcaC15FH9XU8nKvs7AuRHPxSWY2tcYzzQL3qUgQ1I2uczq4YW54C42r67+BH jtIA== 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; bh=G8GENsGc8D0bKDNdsjagU87Bnfm8Z5B+0SU7YS0JYXA=; b=tJ4DtXzgS/YCyznFSjVjLXbKxqj9ObMr37SnpZE+HvITyXpJreB/sQsCRbRQ2JhmLk NhdLhvOBweCTOas9RRmy52JP/3REP/wCn+6XDGKNtxMrW8+vHktKKmRUZ2qYBm1xGHMe EWHyOkb05UU2FNDwNHDD1xgAhQvEcjsPRPqAqCAc1Zj/96BineJxL9BHqGh9i6Isa39J 0A7W+9lLwBc8hsi6F8nF3hlVsqE2Q9GPWdJ7UYtj8tqpC5PaQ+jhdVWdMxzb43brnTTS iXBgUfRFIaoYdOADUJy7EPSfLlPN7CNd60fFK/ErAIPD+eatMgCyocWun7go94GmBs4j 488w== 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d9si1188488pjx.105.2021.04.14.17.29.41; Wed, 14 Apr 2021 17:29:53 -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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351701AbhDNNv6 (ORCPT + 99 others); Wed, 14 Apr 2021 09:51:58 -0400 Received: from mail-lf1-f52.google.com ([209.85.167.52]:34747 "EHLO mail-lf1-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351696AbhDNNvo (ORCPT ); Wed, 14 Apr 2021 09:51:44 -0400 Received: by mail-lf1-f52.google.com with SMTP id n8so33405212lfh.1 for ; Wed, 14 Apr 2021 06:51:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=G8GENsGc8D0bKDNdsjagU87Bnfm8Z5B+0SU7YS0JYXA=; b=jytwxLlO9c+x8F7zs/nxFzEfx4cCz0rgCBJej+qOmNeEcWEecHBsYrGluIsIB3IUel yoGDA2dikKm/PKM8rZx0sRMxXSbMiGRyhiIl+Ldl+ZSn0xDhs+MTPY0zgnb+HFhhQCAo z2yL1qfkErB9JpsvPRwijNBPHT/1woGPMAXc42CA0ezmbANCnKLDgLhqoribTgdRodJJ xYnCq3gLGOVBJPDhKiErU/oBApPw7odezd1GZ9kEeOpegSSEhbV3MEdGJ8fgQx2yytIL XCZri0DmgttddU7OkfsqBIZK5tmkfTR2+apABnnikg/iRgZD9dHqKfNIlbFyAK6dw9rD 8teg== X-Gm-Message-State: AOAM531cXn5w21P4AYUQITPS/qB6chZswtPxSmlnuk3JQtyiqHKRMxe9 AMLCEozk2X7w9JuTWihpxUecQ+/OMuSSTl8PUUs= X-Received: by 2002:a05:6512:2033:: with SMTP id s19mr26119138lfs.300.1618408281029; Wed, 14 Apr 2021 06:51:21 -0700 (PDT) MIME-Version: 1.0 References: <1618340250-29027-1-git-send-email-kan.liang@linux.intel.com> <1618340250-29027-2-git-send-email-kan.liang@linux.intel.com> In-Reply-To: <1618340250-29027-2-git-send-email-kan.liang@linux.intel.com> From: Namhyung Kim Date: Wed, 14 Apr 2021 22:51:09 +0900 Message-ID: Subject: Re: [PATCH V3 2/2] perf/x86: Reset the dirty counter to prevent the leak for an RDPMC task To: Kan Liang Cc: Peter Zijlstra , Ingo Molnar , linux-kernel , Arnaldo Carvalho de Melo , Andi Kleen , Mark Rutland , luto@amacapital.net, Stephane Eranian Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Kan, On Wed, Apr 14, 2021 at 4:04 AM wrote: > diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c > index dd9f3c2..0d4a1a3 100644 > --- a/arch/x86/events/core.c > +++ b/arch/x86/events/core.c > @@ -1585,6 +1585,8 @@ static void x86_pmu_del(struct perf_event *event, int flags) > if (cpuc->txn_flags & PERF_PMU_TXN_ADD) > goto do_del; > > + __set_bit(event->hw.idx, cpuc->dirty); > + > /* > * Not a TXN, therefore cleanup properly. > */ > @@ -2304,12 +2306,46 @@ static int x86_pmu_event_init(struct perf_event *event) > return err; > } > > +void x86_pmu_clear_dirty_counters(void) > +{ > + struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events); > + int i; > + > + if (bitmap_empty(cpuc->dirty, X86_PMC_IDX_MAX)) > + return; Maybe you can check it after clearing assigned counters. Thanks, Namhyung > + > + /* Don't need to clear the assigned counter. */ > + for (i = 0; i < cpuc->n_events; i++) > + __clear_bit(cpuc->assign[i], cpuc->dirty); > + > + for_each_set_bit(i, cpuc->dirty, X86_PMC_IDX_MAX) { > + /* Metrics and fake events don't have corresponding HW counters. */ > + if (is_metric_idx(i) || (i == INTEL_PMC_IDX_FIXED_VLBR)) > + continue; > + else if (i >= INTEL_PMC_IDX_FIXED) > + wrmsrl(MSR_ARCH_PERFMON_FIXED_CTR0 + (i - INTEL_PMC_IDX_FIXED), 0); > + else > + wrmsrl(x86_pmu_event_addr(i), 0); > + } > + > + bitmap_zero(cpuc->dirty, X86_PMC_IDX_MAX); > +}