Received: by 2002:a25:ca44:0:0:0:0:0 with SMTP id a65csp378315ybg; Tue, 28 Jul 2020 08:16:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw3M+W+wI/AAfS99/OPx7vPuz/FRNJ3JpNVJ5eHiKHw33LAmzEvPC8cVCVpU5oiLzJ9jI4t X-Received: by 2002:a05:6402:1ad1:: with SMTP id ba17mr1135139edb.119.1595949377569; Tue, 28 Jul 2020 08:16:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595949377; cv=none; d=google.com; s=arc-20160816; b=zVZ6VTe9COIbnPxcSTHHwZvMbzS/HsabpIfcOQ0hvbCeajsMAJEiSCC35p4E0smoE3 gXL4WOQFTD8UbXgrhUm7+re1HRYBfkfqoX7tZ+03to4ePd8+8PHEOOpJhCta9ets1rNq E/4rQghr6f+mvUqj7mxRbT5h0ZFwwxs5vmk3GR/7IrmehKVua67McfH7dVeGd4D272iE wUpim0T2VHu/3IzaANtsOrNfQNYVdgdRu+uXPvHrFDFQBg97VtP0VapbrZUqRPSbEwo3 u/A18qgg4rgpQhJmakifHtZWybWw+70y0JKyyat1X/7vMxEpUuaemexUqth3cBgaqglH iTjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=iJCizSAjAPUE7EUcp95DY3gcG9GO9i7tyIUefzlKX5w=; b=O+6lONecO/WVpJgmSLlxxdonB77QcdOW9vKmQaWANejZ7bu9nClgkxETDGNZeNSrAC ToU9LJT7LCOCSiv9H+AZ3tSeXvtHRGhfIopQS4VxjxbRja/kB00JsS57FeWOin/riDKi dKpyj/PH4ldE8U0D/QWnw6yVvFX3m49sa3pXmjQbOXt0DMISUhEDMI2yBPWzualOEaCM nftSZ7s+Lv8ZJ1Ao+tIXlGQk/WZPd48c65T1PRE094GSVvppI7Qu/7xndSrBCWZmm3gM UKrEnOxJf20aMUFP4ktTJ9q6p3E/4OCL0FqBSOup4ijJL7G+uC8IrwMoCkI9Wz28D3GJ 9gaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=GXFztRqU; 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 q22si5147312ejn.410.2020.07.28.08.15.56; Tue, 28 Jul 2020 08:16:17 -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; dkim=pass header.i=@google.com header.s=20161025 header.b=GXFztRqU; 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 S1730912AbgG1POi (ORCPT + 99 others); Tue, 28 Jul 2020 11:14:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42616 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730906AbgG1POf (ORCPT ); Tue, 28 Jul 2020 11:14:35 -0400 Received: from mail-ot1-x344.google.com (mail-ot1-x344.google.com [IPv6:2607:f8b0:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BFC4AC061794 for ; Tue, 28 Jul 2020 08:14:35 -0700 (PDT) Received: by mail-ot1-x344.google.com with SMTP id w17so15139269otl.4 for ; Tue, 28 Jul 2020 08:14:35 -0700 (PDT) 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=iJCizSAjAPUE7EUcp95DY3gcG9GO9i7tyIUefzlKX5w=; b=GXFztRqUjiaXnHwPsCQI2viH+duk1rN/9jBepjo358MPV3GNlKgD6ddCAE+dkyQekj px8ofpF3S7TNaawtHfNXokQX+TnhWR/9oIdUHLxq/XHX55y1wEvJ7rrmS94IgqTfULJj NSGxy3sbOGLzvcY/NRMU9AqQDx8fw8eTfw/mcbcshRWg/wwAOXQu4qWi8EwvDZT4o7vK +QXsiuOYeeFncUk5gETEsFlX0X/NEW/Muok1wT9g2oasji0nybDnE727hwQFw3y7pf0M Vx+LL+/7W4QpCRVxwEbOIOPfQtXu6tscE/UpUo/6tUtRHj5gOefxfG9DoglCgQui3x25 +8KQ== 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=iJCizSAjAPUE7EUcp95DY3gcG9GO9i7tyIUefzlKX5w=; b=rHsztA2ObIc+90T/1WFXVTR1IKWdvgsJWSuphAjv9gfEp+J8u+UYBmynQGfY2hn5Fq uLhpFsV1HkpQCPXGtNjDkwyOiVjGukVx8tixDKvCTSB/Ycx1SjW+ObRu3AGBWzD/XZDH EZGqA0qte0p3dHAZm2aECOkxNzno+LLoFpFKcnYGcfs282ZnE4QlNcC1Akl30b+dDPdH 854Th/rS8Cgci1ZZjPmhin2XSto6K/M8aoNNbHXwzh45s/zm3aFZ++H5X21IFiqP/sCM sZxAOqIZDW2THGAHN6X7xx3I6NqLW3CY/o/I1LZFtoISNIljxm6RlGo4KOLJhMdeme1J 8MPg== X-Gm-Message-State: AOAM531zDsZGe+GjIUO7MESI0765B1xiaMSyu6yG4lr9yqsZLLJUfe0F jaBhuxjguFD8Lu37P+7DMd1BFWKo1K282H8NHXVzgg== X-Received: by 2002:a05:6830:1612:: with SMTP id g18mr8986816otr.251.1595949274880; Tue, 28 Jul 2020 08:14:34 -0700 (PDT) MIME-Version: 1.0 References: <20200720120348.2406588-1-elver@google.com> <20200728113044.GA233444@gmail.com> In-Reply-To: <20200728113044.GA233444@gmail.com> From: Marco Elver Date: Tue, 28 Jul 2020 17:14:21 +0200 Message-ID: Subject: Re: [PATCH tip/locking/core] kcsan: Improve IRQ state trace reporting To: Ingo Molnar Cc: Peter Zijlstra , Borislav Petkov , Thomas Gleixner , "Paul E. McKenney" , Dmitry Vyukov , kasan-dev , LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 28 Jul 2020 at 13:30, Ingo Molnar wrote: > > > * Marco Elver wrote: > > > To improve the general usefulness of the IRQ state trace information > > with KCSAN enabled, save and restore the trace information when entering > > and exiting the KCSAN runtime as well as when generating a KCSAN report. > > > > Without this, reporting the IRQ state trace (whether via a KCSAN report > > or outside of KCSAN via a lockdep report) is rather useless due to > > continuously being touched by KCSAN. This is because if KCSAN is > > enabled, every instrumented memory access causes changes to IRQ state > > tracking information (either by KCSAN disabling/enabling interrupts or > > taking report_lock when generating a report). > > > > Before "lockdep: Prepare for NMI IRQ state tracking", KCSAN avoided > > touching the IRQ state trace via raw_local_irq_save/restore() and > > lockdep_off/on(). > > > > Fixes: 248591f5d257 ("kcsan: Make KCSAN compatible with new IRQ state tracking") > > Signed-off-by: Marco Elver > > --- [...] > > +void kcsan_restore_irqtrace(struct task_struct *task) > > +{ > > +#ifdef CONFIG_TRACE_IRQFLAGS > > + task->irq_events = task->kcsan_save_irqtrace.irq_events; > > + task->hardirq_enable_ip = task->kcsan_save_irqtrace.hardirq_enable_ip; > > + task->hardirq_disable_ip = task->kcsan_save_irqtrace.hardirq_disable_ip; > > + task->hardirq_enable_event = task->kcsan_save_irqtrace.hardirq_enable_event; > > + task->hardirq_disable_event = task->kcsan_save_irqtrace.hardirq_disable_event; > > + task->softirq_disable_ip = task->kcsan_save_irqtrace.softirq_disable_ip; > > + task->softirq_enable_ip = task->kcsan_save_irqtrace.softirq_enable_ip; > > + task->softirq_disable_event = task->kcsan_save_irqtrace.softirq_disable_event; > > + task->softirq_enable_event = task->kcsan_save_irqtrace.softirq_enable_event; > > +#endif > > Please, make such type of assignment blocks cleaner by using a local > helper variable, and by aligning the right side vertically as well. > > Also, would it make sense to unify the layout between the fields in > task struct and the new one you introduced? That would allow a simple > structure copy. Makes sense, thanks for the suggestion. I think we could introduce a new struct 'irqtrace_events'. I currently have something that adds this struct in . AFAIK it also adds readability improvements on initialization and use of the fields. I'll send a v2 with 2 patches. Thanks, -- Marco