Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1027386pxk; Fri, 25 Sep 2020 04:28:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzJrZqfg8OPo5c42dbX1i23qgCuxcPTyZnUHI/Mq9VwthjxeaQO/6GTU6Xztf4zCBTzVRwx X-Received: by 2002:a17:906:8c1:: with SMTP id o1mr2287134eje.478.1601033283404; Fri, 25 Sep 2020 04:28:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601033283; cv=none; d=google.com; s=arc-20160816; b=peS72bxxUH4lO5HUStyDuqswYn/eordGKmuUPqtVTeZ+OkqyHtF86IY94CX4RtixvO 18R+peWPge5JhiKow6lE+KnItEdz8ELcGOaq9sUfr/mCErNliLh7ib0G7tu0chXMHOLi c+Xj8MdHbMfMnLT1HYnZD9avMi05OAl1l/Kef7Jmr2GXWsVJpxiOjUEfReFNoSTQ5U+Z sracJu8uYrehbm1o1hC0wJGVlkIkDA39PpK2EVbuXXoeV/gwc20AkxXX7nSIqxrXHxsB 085//XnPLTO/Ev/EUj3JOy5C8DKoavYsFDBMaTYKHlU0+mFS8CLMga2u8zyBX6AntBjQ gCtw== 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=WxOkTxBUdDygkxQk8SSiZ/3m/eISYyIoxaAPO6Ft/3c=; b=tvYVL8wynqP92CwC9iwVaO0K/qI1EepZj/BxxxRELxN28iohV7MqQsw3Pgk5hqfiod 4frZvngwfFkdjsgdxl0NZw+yPwS/mhaxOpPFEgkgcEuiEzFcjElxjAhRAoREXdgUy6qm vTX3kfKKzZ+YwVbFkZwMS2MR5oIroJqZJmSc9VlPHWBFBmxHHdF/HhtYOSpZwmWWIL0t xdz57vP0xRYgb7/FvoGIamYHDx7xczoK77yroGjFQ0zGpxArJaZnyBSKpc6J4fpocF7c uLrXMI0/nWfxxMvJH3wU+tbyk2iPysnIlPrYH+9gW8GD/pkJck7izm7WV4Dw4VFen0MT BsCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=AQUMaA2m; 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 pv7si1592019ejb.753.2020.09.25.04.27.40; Fri, 25 Sep 2020 04:28:03 -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=AQUMaA2m; 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 S1728069AbgIYL0Q (ORCPT + 99 others); Fri, 25 Sep 2020 07:26:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53670 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726255AbgIYL0O (ORCPT ); Fri, 25 Sep 2020 07:26:14 -0400 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 52322C0613CE for ; Fri, 25 Sep 2020 04:26:14 -0700 (PDT) Received: by mail-pf1-x443.google.com with SMTP id b124so2842294pfg.13 for ; Fri, 25 Sep 2020 04:26:14 -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=WxOkTxBUdDygkxQk8SSiZ/3m/eISYyIoxaAPO6Ft/3c=; b=AQUMaA2mUShicKX0LRfMzsr/JU4gyntiGkqnwNgVDtq5RxgOdRJLGETYAXd5xTEiha bkFx4pWFNuxAM5KWfR8fJ0P3dKruvwdZysZ8dGOlBYOdxgWkSkBUajMVVTCdYXWX10xi eAeQ1w5Ke4tzvSKmBMyJHC6GQfKNCKV0QICTJKjT2oLSXH6i34fknlc2pNy973sduyEv 2O3BeqTW+vZ+wz2SeDFR0nvjpyP+9/av1GJgF05yKru8G5tiGqRqIoRIiAX3cPJ5FDJ0 c8dgXhECbxM+mL+VNPhxP+d5+SdFSsxiAIZqbeUgjVeQTbCBUIAfYzPGXHDHtk6N+n3X wcWw== 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=WxOkTxBUdDygkxQk8SSiZ/3m/eISYyIoxaAPO6Ft/3c=; b=P4SBCjVa6veFRzzxLRgIqjuqIbFThQOQK+55azkewRrf4FVZ5RTeSbYqWVpb9fEBJO lk+QQHbPiNPmXlPsF0Tod5YxHTXoQ4T8U6qY360mm5Q20n2rZeu9883Pe4t7zNCd5/ot D06P86IfhY27LJqOqBdyaHFDJd2tXPQuCbYe+6e3kF5r/ZBQKlG1tCM7qIx/3hDV+f3u o2IJW4SM6CP1QjkdYwayyltwsVX/57ZPs+6i+ZTkUGOgmnCyZSFfP5PT4fZ85sub9Zbg GruwCjKFEuCi4mXRnNe/bBtZ2dD+X7GnrLt4sz9GkeRfXN+DbFLejd4YxtHIBcyAMLUS mOlw== X-Gm-Message-State: AOAM533vXHMrhMUqGPl6sMYPWGakMz1qa3BZsReoWesj3TXH1z3fEn3/ t5KX4HnkLzR6jRZAY45tQC9uV++x/w7cu1Gn085eQA== X-Received: by 2002:a62:1d51:0:b029:13e:d13d:a0fc with SMTP id d78-20020a621d510000b029013ed13da0fcmr3806915pfd.24.1601033173658; Fri, 25 Sep 2020 04:26:13 -0700 (PDT) MIME-Version: 1.0 References: <17ec8af55dc0a4d3ade679feb0858f0df4c80d27.1600987622.git.andreyknvl@google.com> <20200925104933.GD4846@gaia> In-Reply-To: <20200925104933.GD4846@gaia> From: Andrey Konovalov Date: Fri, 25 Sep 2020 13:26:02 +0200 Message-ID: Subject: Re: [PATCH v3 26/39] arm64: mte: Add in-kernel tag fault handler To: Catalin Marinas Cc: Dmitry Vyukov , Vincenzo Frascino , kasan-dev , Andrey Ryabinin , Alexander Potapenko , Marco Elver , Evgenii Stepanov , Elena Petrova , Branislav Rankov , Kevin Brodsky , Will Deacon , Andrew Morton , Linux ARM , Linux Memory Management List , LKML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 25, 2020 at 12:49 PM Catalin Marinas wrote: > > > diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c > > index a3bd189602df..d110f382dacf 100644 > > --- a/arch/arm64/mm/fault.c > > +++ b/arch/arm64/mm/fault.c > > @@ -33,6 +33,7 @@ > > #include > > #include > > #include > > +#include > > #include > > #include > > #include > > @@ -294,6 +295,11 @@ static void die_kernel_fault(const char *msg, unsigned long addr, > > do_exit(SIGKILL); > > } > > > > +static void report_tag_fault(unsigned long addr, unsigned int esr, > > + struct pt_regs *regs) > > +{ > > +} > > Do we need to introduce report_tag_fault() in this patch? It's fine but > add a note in the commit log that it will be populated in a subsequent > patch. I did, see the last line of the commit description. > > + > > static void __do_kernel_fault(unsigned long addr, unsigned int esr, > > struct pt_regs *regs) > > { > > @@ -641,10 +647,40 @@ static int do_sea(unsigned long addr, unsigned int esr, struct pt_regs *regs) > > return 0; > > } > > > > +static void do_tag_recovery(unsigned long addr, unsigned int esr, > > + struct pt_regs *regs) > > +{ > > + static bool reported = false; > > + > > + if (!READ_ONCE(reported)) { > > + report_tag_fault(addr, esr, regs); > > + WRITE_ONCE(reported, true); > > + } > > I don't mind the READ_ONCE/WRITE_ONCE here but not sure what they help > with. The fault can happen on multiple cores at the same time, right? In that case without READ/WRITE_ONCE() we'll have a data-race here.