Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2444057pxb; Tue, 23 Feb 2021 07:14:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJyHKq673UP8+0WIYqW2fdeRMx1oKwAOPKC4wIAh1cv5/EZucdU1GIrkLbUUrh3kbwR0ek/z X-Received: by 2002:a05:6402:27cf:: with SMTP id c15mr27979417ede.179.1614093266595; Tue, 23 Feb 2021 07:14:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614093266; cv=none; d=google.com; s=arc-20160816; b=Sf2PJ4N7sT8H+SOlDBm8yPtWmhD0SLILiZ1xfVRobygREszYW9kP2+VEvkb2+gHAtJ qTHoc2okfqI86EtFfPunj1t3fdWL0Z7RIVJdReVQUP93+Rbd9Zk20/123BrbZW8e2rkI F5hMi4xfqmhTCVYGwmX41Y6UnsM5GsEcr/wR2BvWkb4qUrLuEhukdQEpJO8QukAIrQVu HEFWf26uNU4tzZqmdd6xGCNV/PeuPieeG9UBrXd7oaHyr/oPMh+49g8d5rh2qe4zok4j 7psYLZQFAxR65R96TbtQDmSj2/OqaUM8mzsU0tcFqu4KXDLOUqYnhnwhZ0Q09HihzuKC ZGng== 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=TAvFxow2tg8sBdIKol2WVfke34KD7HcGzBLgosBBq0o=; b=Xu8DRJPzx9+pFLewEvlpFGCKjgO9kQ7uMH7osxmwY4T0kU/WvT/f17BnE7IywrTJKh oMQnlsUpYjpcgkJgEKD2POaY29Fv0ZYl2Nod+eJSFLQBRaW3jcG2pAx9qpuzHyD2/6UO uSnBnTgA4RUdDfbhvF17AVp7CwKDiEO/iHF0Z97qpHaMbnjMJ6D2TNSD5D3u+Idn8nsO pqPl/i4sbbhOLh+MbdRcN/LCI5ab4NgswdTL9HE1GP5JKVefpw4p5dYNqaU9n+5kSBVY vvdglUcibssOyKxsJc/HfJNZFPT/1pElpVee/Nin01RO8tQaWln40WSER0GUlDEq97q+ 8ACA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=jvghciHC; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x18si14199179ejo.233.2021.02.23.07.13.59; Tue, 23 Feb 2021 07:14:26 -0800 (PST) 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; dkim=pass header.i=@google.com header.s=20161025 header.b=jvghciHC; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231818AbhBWPLk (ORCPT + 99 others); Tue, 23 Feb 2021 10:11:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38070 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231970AbhBWPLg (ORCPT ); Tue, 23 Feb 2021 10:11:36 -0500 Received: from mail-ot1-x329.google.com (mail-ot1-x329.google.com [IPv6:2607:f8b0:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4988CC061786 for ; Tue, 23 Feb 2021 07:10:55 -0800 (PST) Received: by mail-ot1-x329.google.com with SMTP id r19so8566393otk.2 for ; Tue, 23 Feb 2021 07:10:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=TAvFxow2tg8sBdIKol2WVfke34KD7HcGzBLgosBBq0o=; b=jvghciHCbxESrwcZC3Kxe25IOlJnCPRu4y1Dfo7kSWksWzpDqcwlBOp0oYoM/yBRwz 3G6GuIXwAhZKsyJ/oyQfnXqCWKh2+tYuCg2X+Krk1T7Kunho7bLRWGsDuG32hImf486x HN7/+3ommi2zIwJwwITL80uM+J2EHmMpz9xZOwfYeiUS6ieApY8yPO64TaAr7DC76z54 8JH29774RYXsTKsuDgE840XaVcNHO/T9GwST1KI7Ya7BHwgMa4HplKmOXzACVxN25O3w EVtnhZHMrA+xnQESANwDibvasLjc2lRAKucy/S1OKG7KAlJi8wTZvGnKyMlwDCfhB0ZY vmPA== 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=TAvFxow2tg8sBdIKol2WVfke34KD7HcGzBLgosBBq0o=; b=Y/zIi41qa5FTForoCzITCadULqZJNqGQRgs250nIj4WntYDK1v2ZmzqiF2AMRlKutb zHXFM0ThoXWG43sPxaPXK1p0zkWQ1n2Z8pmhRQlnx/0uOo9APe4kpcHX9NNkoYt0D8mY pHcuIxV3BBtK4aRL+b013kX493dxIutDAb/aSmf+e4PH5VE6HgeFAa8lvwUtYlwQzhr/ jdA1NMOq/KeNFfXCzNIcg2x0ENZvcjP2pNElKchcPM8eC1ancuNGFRhlOgNF2mrH2cLS sjUmzi29Xukb6TF9O/FY2PLbOU8mezZCmbwVEXEJ2e1yEJyn+g5wr208rKnaZYK7Derd z3Iw== X-Gm-Message-State: AOAM5337YB2OfP56kZcETH4mOVxaRRDJPRRRm12Hqcq2lseWbjhh5Xp+ PN3gE2AfBjXYu3bNm1SOczukH8ggEv9bb2WypTSUgg== X-Received: by 2002:a9d:5a05:: with SMTP id v5mr21074835oth.17.1614093054391; Tue, 23 Feb 2021 07:10:54 -0800 (PST) MIME-Version: 1.0 References: <20210223143426.2412737-1-elver@google.com> <20210223143426.2412737-5-elver@google.com> In-Reply-To: From: Marco Elver Date: Tue, 23 Feb 2021 16:10:42 +0100 Message-ID: Subject: Re: [PATCH RFC 4/4] perf/core: Add breakpoint information to siginfo on SIGTRAP To: Dmitry Vyukov Cc: Peter Zijlstra , Alexander Shishkin , Arnaldo Carvalho de Melo , Ingo Molnar , Jiri Olsa , Mark Rutland , Namhyung Kim , Thomas Gleixner , Alexander Potapenko , Al Viro , Arnd Bergmann , Christian Brauner , Jann Horn , Jens Axboe , Matt Morehouse , Peter Collingbourne , Ian Rogers , kasan-dev , linux-arch , linux-fsdevel , LKML , linux-m68k@lists.linux-m68k.org, "the arch/x86 maintainers" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 23 Feb 2021 at 16:01, Dmitry Vyukov wrote: > > On Tue, Feb 23, 2021 at 3:34 PM Marco Elver wrote: > > > > Encode information from breakpoint attributes into siginfo_t, which > > helps disambiguate which breakpoint fired. > > > > Note, providing the event fd may be unreliable, since the event may have > > been modified (via PERF_EVENT_IOC_MODIFY_ATTRIBUTES) between the event > > triggering and the signal being delivered to user space. > > > > Signed-off-by: Marco Elver > > --- > > kernel/events/core.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/kernel/events/core.c b/kernel/events/core.c > > index 8718763045fd..d7908322d796 100644 > > --- a/kernel/events/core.c > > +++ b/kernel/events/core.c > > @@ -6296,6 +6296,17 @@ static void perf_sigtrap(struct perf_event *event) > > info.si_signo = SIGTRAP; > > info.si_code = TRAP_PERF; > > info.si_errno = event->attr.type; > > + > > + switch (event->attr.type) { > > + case PERF_TYPE_BREAKPOINT: > > + info.si_addr = (void *)(unsigned long)event->attr.bp_addr; > > + info.si_perf = (event->attr.bp_len << 16) | (u64)event->attr.bp_type; > > + break; > > + default: > > + /* No additional info set. */ > > Should we prohibit using attr.sigtrap for !PERF_TYPE_BREAKPOINT if we > don't know what info to pass yet? I don't think it's necessary. This way, by default we get support for other perf events. If user space observes si_perf==0, then there's no information available. That would require that any event type that sets si_perf in future, must ensure that it sets si_perf!=0. I can add a comment to document the requirement here (and user space facing documentation should get a copy of how the info is encoded, too). Alternatively, we could set si_errno to 0 if no info is available, at the cost of losing the type information for events not explicitly listed here. What do you prefer? > > + break; > > + } > > + > > force_sig_info(&info); > > } > > > > -- > > 2.30.0.617.g56c4b15f3c-goog > >