Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp350509rdb; Thu, 30 Nov 2023 06:34:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IH3sWztZuwgyrKaAJ9cTld9pXRyj2XwFTOMUsWbp09RkXvoy34QRNk7YdugSpwgGyntmiAh X-Received: by 2002:a05:6808:d52:b0:3b8:63aa:826f with SMTP id w18-20020a0568080d5200b003b863aa826fmr21714172oik.25.1701354866959; Thu, 30 Nov 2023 06:34:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701354866; cv=none; d=google.com; s=arc-20160816; b=JsOmXC+7cWZlHPZtGQ5wl9bpJcbP8cuBipQbx5RDXm7qM3gSJzb5534ez5RorKAJg3 0bAFaeLYBvLaWGVZpvelBn2Qn+JFbkceqqXdunGwsPb66Nohd0Vxc0r0YkZACmYesGQh ZlSAcpg4aUqScrFUePt+NgBRWLMaklfvreg2jtZFBAYbEenMJWtS98U7Xx3wqJEYUVfr BP3iN47mkA5KcB5LQvaJh40iEr8sw/kYCsrfdKg22kx7K+050is9z6I+TAYsNWYwAAwS XebwsmNct6jItyxfDgTa3ED/73HIVxKzP8sXWr+rzIGOWrdMEVDdJsEzAAnJaCQE8667 sfFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=DzuyhMSUOBwsXe5kSIBs4HPwoYeVe5PCzJ1Mr9+JUkk=; fh=xsYFI8rNVVnarmyidtq0+H0YQ4HXVPfANjqGk6ciKC0=; b=W29AD7eGoCIwFS3nSHPLdI2eR0QS9xTkEk7ZuG3DpFuKapdwDhwN8hfSF1r8JajiEm 1vrEwiEUhRWOwofU5F8s9+7dmi6BibchnRvNiNhYxKH+GpJuzVHk01/OKbm2L7fTtgyU dGdaohr+dfGggvvpItqsFRc9WmBqr+RRb+W3xYn9LWy/Wq6eO1oWOQObJJaiJODlFE3R ww1tSp8UmYZhw+wSu/W8y7L95xiQrp4Di1BO6zKue6usCu7TDsF38FxGYJ0XCxsUbXBw lrjabJ8H6yTNwWF+Jd4kYxHllOonUeKmF/fGoImUIhV4z+bF1hKV75yUuhdW9/2L2fDj WGyA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id s24-20020a634518000000b005bd366fd5a1si1346046pga.449.2023.11.30.06.34.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Nov 2023 06:34:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 047F883F02A4; Thu, 30 Nov 2023 06:34:24 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346008AbjK3OeA convert rfc822-to-8bit (ORCPT + 99 others); Thu, 30 Nov 2023 09:34:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232000AbjK3Od6 (ORCPT ); Thu, 30 Nov 2023 09:33:58 -0500 Received: from mail-yw1-f173.google.com (mail-yw1-f173.google.com [209.85.128.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41D7585; Thu, 30 Nov 2023 06:34:05 -0800 (PST) Received: by mail-yw1-f173.google.com with SMTP id 00721157ae682-5cc3dd21b0cso10437947b3.3; Thu, 30 Nov 2023 06:34:05 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701354844; x=1701959644; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cjMwvKLpHyQcSSnE02SuxEvq8IHzlQRD3fny3+vWifw=; b=UrHVmfCPjbBWYWVyq/r8irrBtyUFh5uL7cOfIx/6KZkZqJ5wTHCSeGVtCBYGGV+tDA qNP7oqQF3SLTSBbksCOTVATyJDRw5TWssh8cnx+g55ZxYFJmNW8cYOe2Yi2MLt6XcE9G s478r86P6kokv0OQz6KPlemaq8UvVuZauxYia28dzfMRHsh696ihVJEtdYjmzx3cy9z/ yBqZa34siA2M9CtDYSc1e7kRZUM7oN62LVS7IJ5pCbd33Z17V7IG4bgdOSIAegNskipu 1KNyGWHs+4s+0o2OX73RgpzHCe38ByphZDH1oUf2iNzHSW0qVgQr1lq4uT19TYh1F5WP t27Q== X-Gm-Message-State: AOJu0YzK/64YXYJ0CmmeooguEtgFHfDSIe4WatIoJe7/OVMyjekgykfD 7sb4b1o5L6bPlU7jSDvx7GBgKR/a4lVaHg== X-Received: by 2002:a81:4322:0:b0:5d0:b284:6140 with SMTP id q34-20020a814322000000b005d0b2846140mr12558535ywa.51.1701354844198; Thu, 30 Nov 2023 06:34:04 -0800 (PST) Received: from mail-yb1-f179.google.com (mail-yb1-f179.google.com. [209.85.219.179]) by smtp.gmail.com with ESMTPSA id w66-20020a816245000000b00594fb0e2db3sm394152ywb.138.2023.11.30.06.34.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 30 Nov 2023 06:34:03 -0800 (PST) Received: by mail-yb1-f179.google.com with SMTP id 3f1490d57ef6-db54611b920so184753276.3; Thu, 30 Nov 2023 06:34:02 -0800 (PST) X-Received: by 2002:a25:ae9a:0:b0:daf:45f7:26a7 with SMTP id b26-20020a25ae9a000000b00daf45f726a7mr24459997ybj.17.1701354842128; Thu, 30 Nov 2023 06:34:02 -0800 (PST) MIME-Version: 1.0 References: <20231130125606.64931-1-prabhakar.mahadev-lad.rj@bp.renesas.com> In-Reply-To: <20231130125606.64931-1-prabhakar.mahadev-lad.rj@bp.renesas.com> From: Geert Uytterhoeven Date: Thu, 30 Nov 2023 15:33:51 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2] riscv: errata: andes: Probe for IOCP only once in boot stage To: Prabhakar Cc: Paul Walmsley , Palmer Dabbelt , Albert Ou , Conor Dooley , Geert Uytterhoeven , Yu Chien Peter Lin , Samuel Holland , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Biju Das , Lad Prabhakar Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Thu, 30 Nov 2023 06:34:24 -0800 (PST) Hi Prabhakar, On Thu, Nov 30, 2023 at 1:56 PM Prabhakar wrote: > From: Lad Prabhakar > > We need to probe for IOCP only once during boot stage, as we were probing > for IOCP for all the stages this caused the below issue during module-init > stage, > > [9.019104] Unable to handle kernel paging request at virtual address ffffffff8100d3a0 > [9.027153] Oops [#1] > [9.029421] Modules linked in: rcar_canfd renesas_usbhs i2c_riic can_dev spi_rspi i2c_core > [9.037686] CPU: 0 PID: 90 Comm: udevd Not tainted 6.7.0-rc1+ #57 > [9.043756] Hardware name: Renesas SMARC EVK based on r9a07g043f01 (DT) > [9.050339] epc : riscv_noncoherent_supported+0x10/0x3e > [9.055558] ra : andes_errata_patch_func+0x4a/0x52 > [9.060418] epc : ffffffff8000d8c2 ra : ffffffff8000d95c sp : ffffffc8003abb00 > [9.067607] gp : ffffffff814e25a0 tp : ffffffd80361e540 t0 : 0000000000000000 > [9.074795] t1 : 000000000900031e t2 : 0000000000000001 s0 : ffffffc8003abb20 > [9.081984] s1 : ffffffff015b57c7 a0 : 0000000000000000 a1 : 0000000000000001 > [9.089172] a2 : 0000000000000000 a3 : 0000000000000000 a4 : ffffffff8100d8be > [9.096360] a5 : 0000000000000001 a6 : 0000000000000001 a7 : 000000000900031e > [9.103548] s2 : ffffffff015b57d7 s3 : 0000000000000001 s4 : 000000000000031e > [9.110736] s5 : 8000000000008a45 s6 : 0000000000000500 s7 : 000000000000003f > [9.117924] s8 : ffffffc8003abd48 s9 : ffffffff015b1140 s10: ffffffff8151a1b0 > [9.125113] s11: ffffffff015b1000 t3 : 0000000000000001 t4 : fefefefefefefeff > [9.132301] t5 : ffffffff015b57c7 t6 : ffffffd8b63a6000 > [9.137587] status: 0000000200000120 badaddr: ffffffff8100d3a0 cause: 000000000000000f > [9.145468] [] riscv_noncoherent_supported+0x10/0x3e > [9.151972] [] _apply_alternatives+0x84/0x86 > [9.157784] [] apply_module_alternatives+0x10/0x1a > [9.164113] [] module_finalize+0x5e/0x7a > [9.169583] [] load_module+0xfd8/0x179c > [9.174965] [] init_module_from_file+0x76/0xaa > [9.180948] [] __riscv_sys_finit_module+0x176/0x2a8 > [9.187365] [] do_trap_ecall_u+0xbe/0x130 > [9.192922] [] ret_from_exception+0x0/0x64 > [9.198573] Code: 0009 b7e9 6797 014d a783 85a7 c799 4785 0717 0100 (0123) aef7 > [9.205994] ---[ end trace 0000000000000000 ]--- > > This is because we called riscv_noncoherent_supported() for all the stages > during IOCP probe. riscv_noncoherent_supported() function sets > noncoherent_supported variable to true which has an annotation set to > "__ro_after_init" due to which we were seeing the above splat. Fix this by > probing for IOCP only once in boot stage by having a boolean variable > is_iocp_probe_done which will be set to true upon IOCP probe in > errata_probe_iocp() and we bail out early if is_iocp_probe_done is set. > > While at it make return type of errata_probe_iocp() to void as we were > not checking the return value in andes_errata_patch_func(). > > Fixes: e021ae7f5145 ("riscv: errata: Add Andes alternative ports") > Signed-off-by: Lad Prabhakar > --- > v1->v2 > * As RISCV_ALTERNATIVES_BOOT stage can happen twice add a is_iocp_probe_done > variable to probe for IOCP only once. > * Updated commit message > * Make return value of errata_probe_iocp() to void Thanks for the update! > --- a/arch/riscv/errata/andes/errata.c > +++ b/arch/riscv/errata/andes/errata.c > @@ -38,29 +38,36 @@ static long ax45mp_iocp_sw_workaround(void) > return ret.error ? 0 : ret.value; > } > > -static bool errata_probe_iocp(unsigned int stage, unsigned long arch_id, unsigned long impid) > +static void errata_probe_iocp(unsigned int stage, unsigned long arch_id, unsigned long impid) > { > + static bool is_iocp_probe_done; done? > + > if (!IS_ENABLED(CONFIG_ERRATA_ANDES_CMO)) > - return false; > + return; > + > + if (is_iocp_probe_done) > + return; > Why not keep it simple, and just do done = true; here? Can arch_id or impid suddenly change, so you have to recheck? If the SBI call in ax45mp_iocp_sw_workaround() fails, is there really a need to try it again later? > if (arch_id != ANDESTECH_AX45MP_MARCHID || impid != ANDESTECH_AX45MP_MIMPID) > - return false; > + return; > > - if (!ax45mp_iocp_sw_workaround()) > - return false; > + if (!ax45mp_iocp_sw_workaround()) { > + is_iocp_probe_done = true; > + return; > + } > > /* Set this just to make core cbo code happy */ > riscv_cbom_block_size = 1; > riscv_noncoherent_supported(); > - > - return true; > + is_iocp_probe_done = true; > } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds