Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp945503pxb; Thu, 19 Aug 2021 15:31:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyeRPkH3v5zeKWSMDRrmk9h+xiPanbI4+Il/qiBeDeVzmWTlXuraVveuOQd2pBakca3U2h0 X-Received: by 2002:a17:906:49ce:: with SMTP id w14mr18088847ejv.273.1629412284029; Thu, 19 Aug 2021 15:31:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629412284; cv=none; d=google.com; s=arc-20160816; b=WIWrywqgcv33l6Zu6kmMjCt6jspeXyT7wHYfMskshulPU+FXRozSwn7UaEj4+OWLQs 3kgin9m2M7P8YkR3i5UwNVNGjal6LXH5tmhx8ehDNMbM+aJJbvCmjPozykTVh3BHtbfS ZF8ANYEE4/ZvWMcBKp99bbsQX0FT/u19+sieM96h4tskzNCKsh+Be1/d6JR7Pju/L4r7 DS1bAAUJTWvmGm1YQYRJObx7MJST4v1viFZOpoYfEjpyI8M/tISq+fBSN+hJENc9Xqvk 7vvypIi36Mfre5O/xwfejrOYU7XMyt0GzQWlTYInf0dUpvXuv3l7ujCqfaNjIzH3OjAX wwbA== 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=9LcUiMbIvgGkkeAl+Eqsq1dY0jYkDrhF+OapOZ3xHjc=; b=KRTwSlOxj2XU09Gb8SD9OHvTv4t3R4I5ulorSkeUHeMH0D0Y75At0oCho++OmX6eY5 etWyUfBXQMuK+uf57597dHNSsZd+nlCslKuUe/VrEuEf2F47WyQC6WrQECFxyQ3HZrTF GKRrAwdzO2EZTazlOQ3TkV/yCA2WgVdnik6OUw61Dk091vb3C0fFgllXRG8pn218/eNo LJEi0tvxkjCb9YmEkYGvZzQfSfbuh/C4mTJsaGf47kz7Qj/zV7vts/TesjgPj+1jRxCc asu6qxfF7LQTAZP1p7moFj2DcUCnWY+qyo/f4BoTeBZol16MPQSN60exA0lSES+P6h/V nVUA== 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 ck6si4314449edb.531.2021.08.19.15.30.56; Thu, 19 Aug 2021 15:31:24 -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 S234115AbhHSW37 (ORCPT + 99 others); Thu, 19 Aug 2021 18:29:59 -0400 Received: from mail-lf1-f51.google.com ([209.85.167.51]:36414 "EHLO mail-lf1-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229532AbhHSW36 (ORCPT ); Thu, 19 Aug 2021 18:29:58 -0400 Received: by mail-lf1-f51.google.com with SMTP id r9so16200665lfn.3; Thu, 19 Aug 2021 15:29:21 -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=9LcUiMbIvgGkkeAl+Eqsq1dY0jYkDrhF+OapOZ3xHjc=; b=YrNWLHUxJJvHmQCdwos1Ab0Cb1m6J0bPsmmAo24zX0APJ0Ge5UiWmfxZty4r3yBr1q Yn9VoDGJy0grgvrOvGnH5mYXrtr6EqE8nx3ldAsj6yqGlhwT20xskQ/SAPIpcu+daejK VZ9q0NVArSj6pwTb+lZ3Fgp32+Qb/FnQSVBluju33aoGEx0piBi1EgbjUImbRDa9LKmp HU1OJG41lIjQFI7IRoNv3aW2lEVYSsbIO92Leso9qwlNhXOmGZV176kBFA35JPS78W0I OBRS6izKGwqF+/kNfoBRss2PDUcHDGwzO2CH8XFfsFIvLHdT0+/HSow4QGgh6s+CrKn4 Gfaw== X-Gm-Message-State: AOAM530fVUFALAPBIxjAdwLQyDY7F1bC1VQVpWxpkFH4EO3gLhoS301r 5YLIpbnrW5LM5UowwzfJdEtHE8xspE2aDbxDcmU= X-Received: by 2002:a05:6512:ac9:: with SMTP id n9mr12041252lfu.635.1629412160767; Thu, 19 Aug 2021 15:29:20 -0700 (PDT) MIME-Version: 1.0 References: <20210817221048.88063-1-kim.phillips@amd.com> <20210817221048.88063-3-kim.phillips@amd.com> In-Reply-To: <20210817221048.88063-3-kim.phillips@amd.com> From: Namhyung Kim Date: Thu, 19 Aug 2021 15:29:09 -0700 Message-ID: Subject: Re: [PATCH 2/8] perf/x86/amd/ibs: Add workaround for erratum #1,197 To: Kim Phillips Cc: Peter Zijlstra , Borislav Petkov , Borislav Petkov , Ingo Molnar , Ingo Molnar , Thomas Gleixner , Alexander Shishkin , Andrew Murray , Arnaldo Carvalho de Melo , Boris Ostrovsky , "H. Peter Anvin" , Ian Rogers , Jiri Olsa , Joao Martins , Konrad Rzeszutek Wilk , Mark Rutland , Michael Petlan , Robert Richter , Stephane Eranian , linux-kernel , linux-perf-users , x86@kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, On Tue, Aug 17, 2021 at 3:11 PM Kim Phillips wrote: > > Erratum #1197 "IBS (Instruction Based Sampling) Register State May be > Incorrect After Restore From CC6" is published in a document available > at the link tag below: > > "Revision Guide for AMD Family 19h Models 00h-0Fh Processors" > 56683 Rev. 1.04 July 2021 > > Implement the erratum's suggested workaround and ignore IBS samples > if MSRC001_1031 == 0. > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537 > Signed-off-by: Kim Phillips > Cc: Alexander Shishkin > Cc: Andrew Murray > Cc: Arnaldo Carvalho de Melo > Cc: Borislav Petkov > Cc: Boris Ostrovsky > Cc: "H. Peter Anvin" > Cc: Ian Rogers > Cc: Ingo Molnar > Cc: Jiri Olsa > Cc: Joao Martins > Cc: Konrad Rzeszutek Wilk > Cc: Mark Rutland > Cc: Michael Petlan > Cc: Namhyung Kim > Cc: Peter Zijlstra > Cc: Robert Richter > Cc: Stephane Eranian > Cc: Thomas Gleixner > Cc: linux-kernel@vger.kernel.org > Cc: linux-perf-users@vger.kernel.org > Cc: x86@kernel.org > --- > arch/x86/events/amd/ibs.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/arch/x86/events/amd/ibs.c b/arch/x86/events/amd/ibs.c > index 8c25fbd5142e..222c890527a2 100644 > --- a/arch/x86/events/amd/ibs.c > +++ b/arch/x86/events/amd/ibs.c > @@ -90,6 +90,7 @@ struct perf_ibs { > unsigned long offset_mask[1]; > int offset_max; > unsigned int fetch_count_reset_broken : 1; > + unsigned int fetch_ignore_if_zero_rip : 1; > struct cpu_perf_ibs __percpu *pcpu; > > struct attribute **format_attrs; > @@ -673,6 +674,10 @@ static int perf_ibs_handle_irq(struct perf_ibs *perf_ibs, struct pt_regs *iregs) > if (check_rip && (ibs_data.regs[2] & IBS_RIP_INVALID)) { > regs.flags &= ~PERF_EFLAGS_EXACT; > } else { > + /* Workaround for erratum #1,197 */ > + if (perf_ibs->fetch_ignore_if_zero_rip && !(ibs_data.regs[1])) > + goto out; Can we just use the iregs.ip instead of dropping the sample? Users might care about the accurate number of samples.. Thanks, Namhyung > + > set_linear_ip(®s, ibs_data.regs[1]); > regs.flags |= PERF_EFLAGS_EXACT; > } > @@ -770,6 +775,9 @@ static __init void perf_event_ibs_init(void) > if (boot_cpu_data.x86 >= 0x16 && boot_cpu_data.x86 <= 0x18) > perf_ibs_fetch.fetch_count_reset_broken = 1; > > + if (boot_cpu_data.x86 == 0x19 && boot_cpu_data.x86_model < 0x10) > + perf_ibs_fetch.fetch_ignore_if_zero_rip = 1; > + > perf_ibs_pmu_init(&perf_ibs_fetch, "ibs_fetch"); > > if (ibs_caps & IBS_CAPS_OPCNT) { > -- > 2.31.1 >