From patchwork Wed Jun 14 10:47:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 107886 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1148184vqr; Wed, 14 Jun 2023 03:51:55 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5JhkLaHTWdx5p+w7T66zZSyTamQ+RjQJYzw8Ku5SwCGKlafMXDlLHXUdB7Wr37Lx+ndwDC X-Received: by 2002:a05:6a20:a11c:b0:110:f65a:13d7 with SMTP id q28-20020a056a20a11c00b00110f65a13d7mr1275357pzk.9.1686739914984; Wed, 14 Jun 2023 03:51:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686739914; cv=none; d=google.com; s=arc-20160816; b=VNHH7LgHiJcl6Y2ayLWeihczxtyoITcovbrzkqCSZfAuNFzFMYp0FnTqe/dqRB4jM+ bFhNB3fS0ylf2cQZdnC2bE5nHAZzvLZSbQm0B+ZzcmcTxYYek6/JAeV+JjgrowGDmeC3 zcSL7BVIwDvF4eKNTN3aVLvPjs+wrvk6gzQk3whjaMz1BnFfHBP644nTJcbfe//xgh/e cBa1VtLCLuxEeBPgRZvRMrn+CigD5n5237S3r8wSnoeXDkF82hswpYQyd7ySz5lJJpsn uyp4mv4p6xmAgcnQ27Wq8+vhxacoyEeu3KRTTwdw2KoqZnoC7ntovl0sloc0P8pAcmgy 52IA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=vJaQfZH5klVZ+UsbJ+KX7G2hR7Ab0l6J5mOqBdKcW9k=; b=eB/It/CT1LPRwcNXPZd+6aImHPngi+SHI17GqGWRBBnzQUJP6ngXZ8GymQ6NN97FbT cp3w9S5aeeEU+d9Dg4X4PNB21n3FCFmQ9PdKaIbZpme7YuKUXV13RCTr/5bpZ90zs5fo F3w7mU1vF/KYAlMf4F5iCPx9kChH0zuEuwkTmhXY9SVwIC1+MHrMY6cWT0ubWYYwb9iE 0gadDLKPYeZNCGEHgl8oWn4WO4gPgF0q+tnnwGBZiXtdqbuvsFo5ZrNrxkkf5dUHIX3a 96gBTj40nuCBX+iQY+Ad0QrYncVfJMremR1TRFHCSfD8jXNgmXpJ1SxbZU7OKLf+2M8M 0BLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=n5w8Va0n; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id kb14-20020a170903338e00b001b02390367fsi1928034plb.595.2023.06.14.03.51.41; Wed, 14 Jun 2023 03:51:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=n5w8Va0n; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243381AbjFNKsM (ORCPT + 99 others); Wed, 14 Jun 2023 06:48:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234666AbjFNKsH (ORCPT ); Wed, 14 Jun 2023 06:48:07 -0400 Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB1D2E41; Wed, 14 Jun 2023 03:48:06 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-3f8d1eb535eso3903595e9.3; Wed, 14 Jun 2023 03:48:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686739685; x=1689331685; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vJaQfZH5klVZ+UsbJ+KX7G2hR7Ab0l6J5mOqBdKcW9k=; b=n5w8Va0n+nyCFXsVC0zkVOUgZr+2F3h9VXFV4pczcK2fT1Kcm8QencSnIb/VAtt8an avJgH7XRWFnJpaL36SorUN7DaMG85kGxjuu2+Hw41D3lMWvFVk8vZ7d4XzyNtkdxGCzf i6vP1C06wdh8cFH8D4bNQUWzNCdi+sbAtcpHGWZW7p59LhbMqTZzYIJ6il2ZXcvWK03I HZGKkybRD2KdwTqKH81AmxwZh3RdRhhCxooeNqFA2NiBkGEjcU/BaE35Gw3BWRFLkmwx yi2ACtaPUFJzi7QZl5F8xulQf/0ITC79Sf5xIPRgVBPjUaI2VLMP7u0XcDKX9y3/W28R Ib+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686739685; x=1689331685; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vJaQfZH5klVZ+UsbJ+KX7G2hR7Ab0l6J5mOqBdKcW9k=; b=KqYui7cBxXsDyQs1taAH8TcU7R7dNhAEV9rZJoPu6QdcjwAGqZoWvLWs07z0/v5LbV MUf6ReQFPqOBmONnJ6NpsXCoOvexvkhZ/krzN1SmxLnidTX1ygvbdiXJ+oHV88zpmZ3U IITSmjEyCYu9TQkeCnMo3nsLNeB9M0E5lfmL1dXcKTfrExAyeIGM4SiD2rCGaLnztnvf z/vr+mOLDMlG/xvVRTC6S3M0wM/6J1IoPsn/XCg5gKj5+MC8X7tslr92QaWbyyYU+BHV evGT3h1m7/dmN45epI/50ML73I/zy21YaBKEYVqrYGJa5ypHdFn5gyIECHt4eAo/m730 wGGA== X-Gm-Message-State: AC+VfDwxsAmcemcMUBmYk1652q6cjTdFzDSX5Aj/622wKGbu7bqLwVYZ 2m3wT/2p6V+RWl8C/yoqZV4= X-Received: by 2002:a05:600c:c2:b0:3f7:30c0:c6a with SMTP id u2-20020a05600c00c200b003f730c00c6amr9747793wmm.25.1686739684957; Wed, 14 Jun 2023 03:48:04 -0700 (PDT) Received: from prasmi.home ([2a00:23c8:2501:c701:64d6:8737:b80d:a298]) by smtp.gmail.com with ESMTPSA id y10-20020a1c4b0a000000b003f5ffba9ae1sm17154904wma.24.2023.06.14.03.48.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:48:04 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Arnd Bergmann , Conor Dooley , Geert Uytterhoeven , Guo Ren , Andrew Jones , Paul Walmsley , Palmer Dabbelt , Albert Ou , Samuel Holland , linux-riscv@lists.infradead.org, Christoph Hellwig Cc: Rob Herring , Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Lad Prabhakar , Heiko Stuebner Subject: [PATCH v9 1/6] riscv: asm: vendorid_list: Add Andes Technology to the vendors list Date: Wed, 14 Jun 2023 11:47:54 +0100 Message-Id: <20230614104759.228372-2-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768674993271953440?= X-GMAIL-MSGID: =?utf-8?q?1768674993271953440?= From: Lad Prabhakar Add Andes Technology to the vendors list. Signed-off-by: Lad Prabhakar Reviewed-by: Heiko Stuebner Reviewed-by: Conor Dooley Reviewed-by: Geert Uytterhoeven --- v8 -> v9 * Included RB tag from Geert v7 -> v8 * No change v6 -> v7 * No change v5 -> v6 * No change v4 -> v5 * Included RB tags RFC v3 -> v4 * New patch --- arch/riscv/include/asm/vendorid_list.h | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/include/asm/vendorid_list.h b/arch/riscv/include/asm/vendorid_list.h index cb89af3f0704..e55407ace0c3 100644 --- a/arch/riscv/include/asm/vendorid_list.h +++ b/arch/riscv/include/asm/vendorid_list.h @@ -5,6 +5,7 @@ #ifndef ASM_VENDOR_LIST_H #define ASM_VENDOR_LIST_H +#define ANDESTECH_VENDOR_ID 0x31e #define SIFIVE_VENDOR_ID 0x489 #define THEAD_VENDOR_ID 0x5b7 From patchwork Wed Jun 14 10:47:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 107887 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1148347vqr; Wed, 14 Jun 2023 03:52:18 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5DoTmKyojDxa9znf3A3q+kGKiCIOaH3R9S0Q8xjXFQ/zHYEFFDu2jv/LzEI691XjcansOY X-Received: by 2002:a17:902:db05:b0:1ac:750e:33ef with SMTP id m5-20020a170902db0500b001ac750e33efmr13381681plx.3.1686739937698; Wed, 14 Jun 2023 03:52:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686739937; cv=none; d=google.com; s=arc-20160816; b=E/mgntuMB2FBpJRGFxddSvwLNONhO9ceLNhT4je+n6RqKmZYT9IuaSiBfrRU2QRHUY ImB88xehERfu1hrF33HsNL5iI8itEX3fHHI4MYUE4SymzLGzsqtWdDBkEX1+a/C1ULG8 /wci5kBIoYxRcxgFQnjNvSsjTzqCefmhFXL76xYGRyqKZhPWDW3oItZwiySumerowpke YB6HzBQFpNDx7Oiq9EYhjQexZuICjkNuqNMDl6tKGHe3dJsJtphbkiyF67V6N4i0drN+ 5hVplYR8vAgIGT0i5wM/rU/l7DKNQNe75FeXE8VQhgIHhGdrts/fSjQN2U2MU5/G6OBR dAfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=pf6nJ5pAtpCEejIto1ITkT/Ujs7hVgaDq6Jw0ySs/Fs=; b=fZnQwWJm6QJgwmqt5jQkEnOHRfeYwAjuOvkDqtv63EFMrMecpvsY6wcfD+HNmM6Dll 8OGKtYfAgFWjHDxy6ptK/+DVDm9D2V5w9xTbFQmVKY5T0NoYQwdXMS0on2imq0oUtvlo YY9oM1vMoT1qPnYIBHXcJFqpsLHGyUHa6/0ZjiMpMtnt4hVfum2AFJN+729wiUZO8OQw BzA8bsolnpzVoTbZgUbN+37AAlWoc/twfDJSwruEBOQBO/45xwrtamoPNHJtH5YRa96n K3mPgbmP81Dp6jwamtLibDSyTuxDNFcv/CE6YxLcwMSd9/7a7C4oMZPhPZzA/yKfmfqh QPcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=OVqgxbAQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h10-20020a170902f54a00b001ac78ac2c9csi8688485plf.573.2023.06.14.03.52.05; Wed, 14 Jun 2023 03:52:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=OVqgxbAQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243464AbjFNKsQ (ORCPT + 99 others); Wed, 14 Jun 2023 06:48:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231674AbjFNKsJ (ORCPT ); Wed, 14 Jun 2023 06:48:09 -0400 Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47A85196; Wed, 14 Jun 2023 03:48:08 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-3f78a32266bso6150825e9.3; Wed, 14 Jun 2023 03:48:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686739687; x=1689331687; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pf6nJ5pAtpCEejIto1ITkT/Ujs7hVgaDq6Jw0ySs/Fs=; b=OVqgxbAQxQ6n2d54LD5i9knesgTF9kB3aDN+qc3mKg2gFwt42EUxN7rADNMY8TUTYG 4zDqwj4DkPMbbE998bYC4XwtpMISVnyufEkL42Fud8l71wAaBym+V2OvMlQ4D4I3jq8n jHkJulaLSZ5mSiMGquv1RBDixwxF1V6VB9LIkoWuVZb8lPRnNpVLGbwRqIyE/u4LYMGa ixxdZ9lHoDpKtwGxzrh4eSWPX9e2Q0kBlpTqiRKC4NtCwq2Qjbq+jzPRz5nQJfk1E+ly 53Q3lr6xPkVRRWsYc/Air1QwZ7wBAAVGQGoyGwXh+q3mjfivSVN4rGnwdjhAAYjiOvhz UinA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686739687; x=1689331687; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pf6nJ5pAtpCEejIto1ITkT/Ujs7hVgaDq6Jw0ySs/Fs=; b=QI3oI0Tcq7GZqN8+oS3+JPju4JxFJ/6d4IARmIlh6oQTtxSx1LiyOnNZfiTOch6EP4 25VNVyNp3pbzFf5BVpuKjqgS4bzmks7BZwiC4L1S8WOu7AaGirDchR/tyMnh0TvGqHMa LHpolqDxdIFyI1QcPbvHZY8dl8BBImzoKFEug5dFf+KNY3x8Ru7RABfVg5j3+9y40wSt AUt2lzXheh/8t1FGFmLuDRVykTGVjrXOyYGjbE65euCZfBQHJ1we10cVR00/Wm3VHYU5 /li9UDrqM2khP7S1JYSJryK9eCVQQvxSIcXpxIKuVObUd/i0pbUwAwgyNjRAA7thzcLv L1Kg== X-Gm-Message-State: AC+VfDx3gcQIhCy4cD0BAuPOQjPsQ1IyBdt+BdrcJ/x8lPPx638Or+qC 0HMGb29U17T+0AIUl1PdWn0= X-Received: by 2002:a05:600c:aca:b0:3f6:2ae:230e with SMTP id c10-20020a05600c0aca00b003f602ae230emr11964075wmr.3.1686739686561; Wed, 14 Jun 2023 03:48:06 -0700 (PDT) Received: from prasmi.home ([2a00:23c8:2501:c701:64d6:8737:b80d:a298]) by smtp.gmail.com with ESMTPSA id y10-20020a1c4b0a000000b003f5ffba9ae1sm17154904wma.24.2023.06.14.03.48.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:48:05 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Arnd Bergmann , Conor Dooley , Geert Uytterhoeven , Guo Ren , Andrew Jones , Paul Walmsley , Palmer Dabbelt , Albert Ou , Samuel Holland , linux-riscv@lists.infradead.org, Christoph Hellwig Cc: Rob Herring , Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Lad Prabhakar Subject: [PATCH v9 2/6] riscv: errata: Add Andes alternative ports Date: Wed, 14 Jun 2023 11:47:55 +0100 Message-Id: <20230614104759.228372-3-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768675016676634821?= X-GMAIL-MSGID: =?utf-8?q?1768675016676634821?= From: Lad Prabhakar Add required ports of the Alternative scheme for Andes CPU cores. I/O Coherence Port (IOCP) provides an AXI interface for connecting external non-caching masters, such as DMA controllers. IOCP is a specification option and is disabled on the Renesas RZ/Five SoC due to this reason cache management needs a software workaround. Signed-off-by: Lad Prabhakar Reviewed-by: Conor Dooley --- v8 -> v9 * Rebased to code on Palmer's for/next * Dropped calling patch_text_nosync() as dont use patch_text_nosync() call v7 -> v8 * Now patching the code using patch_text_nosync() and riscv_alternative_fix_offsets() v6 -> v7 * Renamed RZFIVE_SBI_EXT_IOCP_SW_WORKAROUND -> ANDES_SBI_EXT_IOCP_SW_WORKAROUND * Dropped "depends on !XIP_KERNEL" for ERRATA_ANDES config v5 -> v6 * Dropped patching alternative and now just probing IOCP v4 -> v5 * Sorted the Kconfig/Makefile/Switch based on Core name * Added a comments * Introduced RZFIVE_SBI_EXT_IOCP_SW_WORKAROUND SBI EXT ID to check if CMO needs to be applied. Is there a way we can access the DTB while patching as we can drop this SBI EXT ID and add a DT property instead for cmo? RFC v3 -> v4 * New patch --- arch/riscv/Kconfig.errata | 21 +++++++++ arch/riscv/errata/Makefile | 1 + arch/riscv/errata/andes/Makefile | 1 + arch/riscv/errata/andes/errata.c | 66 ++++++++++++++++++++++++++++ arch/riscv/include/asm/alternative.h | 3 ++ arch/riscv/include/asm/errata_list.h | 5 +++ arch/riscv/kernel/alternative.c | 5 +++ 7 files changed, 102 insertions(+) create mode 100644 arch/riscv/errata/andes/Makefile create mode 100644 arch/riscv/errata/andes/errata.c diff --git a/arch/riscv/Kconfig.errata b/arch/riscv/Kconfig.errata index 0c8f4652cd82..92c779764b27 100644 --- a/arch/riscv/Kconfig.errata +++ b/arch/riscv/Kconfig.errata @@ -1,5 +1,26 @@ menu "CPU errata selection" +config ERRATA_ANDES + bool "Andes AX45MP errata" + depends on RISCV_ALTERNATIVE + help + All Andes errata Kconfig depend on this Kconfig. Disabling + this Kconfig will disable all Andes errata. Please say "Y" + here if your platform uses Andes CPU cores. + + Otherwise, please say "N" here to avoid unnecessary overhead. + +config ERRATA_ANDES_CMO + bool "Apply Andes cache management errata" + depends on ERRATA_ANDES && MMU && ARCH_R9A07G043 + select RISCV_DMA_NONCOHERENT + default y + help + This will apply the cache management errata to handle the + non-standard handling on non-coherent operations on Andes cores. + + If you don't know what to do here, say "Y". + config ERRATA_SIFIVE bool "SiFive errata" depends on RISCV_ALTERNATIVE diff --git a/arch/riscv/errata/Makefile b/arch/riscv/errata/Makefile index 7b2637c8c332..8a2739485123 100644 --- a/arch/riscv/errata/Makefile +++ b/arch/riscv/errata/Makefile @@ -2,5 +2,6 @@ ifdef CONFIG_RELOCATABLE KBUILD_CFLAGS += -fno-pie endif +obj-$(CONFIG_ERRATA_ANDES) += andes/ obj-$(CONFIG_ERRATA_SIFIVE) += sifive/ obj-$(CONFIG_ERRATA_THEAD) += thead/ diff --git a/arch/riscv/errata/andes/Makefile b/arch/riscv/errata/andes/Makefile new file mode 100644 index 000000000000..2d644e19caef --- /dev/null +++ b/arch/riscv/errata/andes/Makefile @@ -0,0 +1 @@ +obj-y += errata.o diff --git a/arch/riscv/errata/andes/errata.c b/arch/riscv/errata/andes/errata.c new file mode 100644 index 000000000000..197db68cc8da --- /dev/null +++ b/arch/riscv/errata/andes/errata.c @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Erratas to be applied for Andes CPU cores + * + * Copyright (C) 2023 Renesas Electronics Corporation. + * + * Author: Lad Prabhakar + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#define ANDESTECH_AX45MP_MARCHID 0x8000000000008a45UL +#define ANDESTECH_AX45MP_MIMPID 0x500UL +#define ANDESTECH_SBI_EXT_ANDES 0x0900031E + +#define ANDES_SBI_EXT_IOCP_SW_WORKAROUND 1 + +static long ax45mp_iocp_sw_workaround(void) +{ + struct sbiret ret; + + /* + * ANDES_SBI_EXT_IOCP_SW_WORKAROUND SBI EXT checks if the IOCP is missing and + * cache is controllable only then CMO will be applied to the platform. + */ + ret = sbi_ecall(ANDESTECH_SBI_EXT_ANDES, ANDES_SBI_EXT_IOCP_SW_WORKAROUND, + 0, 0, 0, 0, 0, 0); + + return ret.error ? 0 : ret.value; +} + +static bool errata_probe_iocp(unsigned int stage, unsigned long arch_id, unsigned long impid) +{ + if (!IS_ENABLED(CONFIG_ERRATA_ANDES_CMO)) + return false; + + if (arch_id != ANDESTECH_AX45MP_MARCHID || impid != ANDESTECH_AX45MP_MIMPID) + return false; + + if (!ax45mp_iocp_sw_workaround()) + return false; + + /* Set this just to make core cbo code happy */ + riscv_cbom_block_size = 1; + riscv_noncoherent_supported(); + + return true; +} + +void __init_or_module andes_errata_patch_func(struct alt_entry *begin, struct alt_entry *end, + unsigned long archid, unsigned long impid, + unsigned int stage) +{ + errata_probe_iocp(stage, archid, impid); + + /* we have nothing to patch here ATM so just return back */ +} diff --git a/arch/riscv/include/asm/alternative.h b/arch/riscv/include/asm/alternative.h index 6a41537826a7..f6cfca939c92 100644 --- a/arch/riscv/include/asm/alternative.h +++ b/arch/riscv/include/asm/alternative.h @@ -46,6 +46,9 @@ struct alt_entry { u32 patch_id; /* The patch ID (erratum ID or cpufeature ID) */ }; +void andes_errata_patch_func(struct alt_entry *begin, struct alt_entry *end, + unsigned long archid, unsigned long impid, + unsigned int stage); void sifive_errata_patch_func(struct alt_entry *begin, struct alt_entry *end, unsigned long archid, unsigned long impid, unsigned int stage); diff --git a/arch/riscv/include/asm/errata_list.h b/arch/riscv/include/asm/errata_list.h index fb1a810f3d8c..e2ecd01bfac7 100644 --- a/arch/riscv/include/asm/errata_list.h +++ b/arch/riscv/include/asm/errata_list.h @@ -11,6 +11,11 @@ #include #include +#ifdef CONFIG_ERRATA_ANDES +#define ERRATA_ANDESTECH_NO_IOCP 0 +#define ERRATA_ANDESTECH_NUMBER 1 +#endif + #ifdef CONFIG_ERRATA_SIFIVE #define ERRATA_SIFIVE_CIP_453 0 #define ERRATA_SIFIVE_CIP_1200 1 diff --git a/arch/riscv/kernel/alternative.c b/arch/riscv/kernel/alternative.c index 6b75788c18e6..b0345992a35e 100644 --- a/arch/riscv/kernel/alternative.c +++ b/arch/riscv/kernel/alternative.c @@ -45,6 +45,11 @@ static void riscv_fill_cpu_mfr_info(struct cpu_manufacturer_info_t *cpu_mfr_info cpu_mfr_info->feature_probe_func = NULL; switch (cpu_mfr_info->vendor_id) { +#ifdef CONFIG_ERRATA_ANDES + case ANDESTECH_VENDOR_ID: + cpu_mfr_info->patch_func = andes_errata_patch_func; + break; +#endif #ifdef CONFIG_ERRATA_SIFIVE case SIFIVE_VENDOR_ID: cpu_mfr_info->patch_func = sifive_errata_patch_func; From patchwork Wed Jun 14 10:47:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 107893 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1155804vqr; Wed, 14 Jun 2023 04:05:23 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6XIhSOPwg3AhrxTkHtFmZbAgySKUBSA6caiC9VVggLpfNUyJqpCFwBgtp1g9I8O9UpSK39 X-Received: by 2002:a17:90a:680d:b0:259:3cc5:ff8f with SMTP id p13-20020a17090a680d00b002593cc5ff8fmr926707pjj.1.1686740723524; Wed, 14 Jun 2023 04:05:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686740723; cv=none; d=google.com; s=arc-20160816; b=YR3cp1199XHXRHW/hsW+MTgDrcPorWmPvj9B3y/26p5GZHPZx6Uc+EiaySJ2Cd9YSE enZIh8FQhVh0hpYrYL516iyOS/MO9n2O1r6MscD+BJcQ2ywBOimw+30Hs9o6SmuPxp1z +nL/FKe6AbAw6LkKAToQXcWrh+lyaknx8xvS4FN37JZrqk3UpqsSPCJxMGURoiPZmXO8 BZkhJeCTYOhXv3oj0QODC+Syafwdea4rFRr/70LI7D9PLVfRDvfHA+tJglG2u3hUGEfJ vHxEZOymEIYoPJ3lkZAOSMduYm5aZAw9Fv676p7XeiWWUUuBcl30/VvRLAU5pu8SDKej WoIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=54awEcwIqAI+xJ9eKb8uhlwdu40FnMLdikz9jtZBxm4=; b=bGk5DLwzEKsvg7TmW2tiZcOws2Y0r4Zw8hIuIaxWjCBOaVBkEMVt4iZNYxOfEkrHih j2V++WBVYBHlEoao8wvoMBoyWT72yTuS9kInVIR2iZqoFzQTcLMbxXZgiUIYqNZGDtbu SotlNDmDhDcnkpLXsNcNe2UUwVnR04p168bACpai8S2oUp7N+FPEVdlVoD+Om9lrigWL gjbTBRUwxXlTqCj2Khp42qe1CzZUUXeUmVNdPUtsascExVU4lfKy/7ysG50fkWO0L+aU gko22X8LcSLe/uOWvysNfCLb6/WriuH0otQQwLeE2q8BBwOQ6M+WkgmZ7aAcXVEfyLcE NHwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=dOf21LQJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e7-20020a17090a9a8700b002527ec91a2csi5416036pjp.98.2023.06.14.04.05.10; Wed, 14 Jun 2023 04:05:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=dOf21LQJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231674AbjFNKsT (ORCPT + 99 others); Wed, 14 Jun 2023 06:48:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243274AbjFNKsK (ORCPT ); Wed, 14 Jun 2023 06:48:10 -0400 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5AE4CE41; Wed, 14 Jun 2023 03:48:09 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-3f7368126a6so4222395e9.0; Wed, 14 Jun 2023 03:48:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686739688; x=1689331688; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=54awEcwIqAI+xJ9eKb8uhlwdu40FnMLdikz9jtZBxm4=; b=dOf21LQJi4YaxOaXsTRIRBfl5mzMPsK/ljTLaVc7Sf/IEKb5nPBBzLkza5lqDVjJlk gswK/LmWfmJCguDWOYIzkNz8la2pIfITbbdGdHcqgF3H8GfexMsTOYPxnCLRvnrl6zFy gB3ocwnBQlR/ZvuksBy3f14zo5ru+bh26cHxXLrVO2MegCYUozMHeEhM2cRzau/gAFMP 9cqC4D6Am/thiWBJmlgMQXgaiAW1USkE9UNdAabcgGN2OhSO+jcaAcJGky8Rb66BgHIe WNzUCvoSljptc7+esj381mZ0gBu6E/EZZBY1RXqQ9JScvy5JM1NuaOo0yCUw21w3+UkW rwQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686739688; x=1689331688; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=54awEcwIqAI+xJ9eKb8uhlwdu40FnMLdikz9jtZBxm4=; b=kdyOmw5uyjAiAayTy6wfzkUqHUJzaRwKG6097eahnd2XZQ+7GSuFvIVB6Ztsqzntwt 4QFljGkl+mGqKsyS5rYs0oqdmm4DusCLr4K05w2me0egFqrDZ5Ah01aSHWW8bU+ZDr1m xncHfqM9lbMhvsrFk9H2e0zmfQ0L6HzneJek2rsIhK2eIT++y6WwvEuh2Sq/O9pgfHcc KJmbmWW0sH3ITuY+OQoD8GWiBUGPr/aAfALU9+/ecDzlX8ajeCZpBA9avkGfFeOJ8kqU KxzPf83CKJKPmGpIZ6CB6r+pXDlnJGvwJDx+OjQw6UPKKkf1puMVttebJerOKogyYeLT QQ+A== X-Gm-Message-State: AC+VfDwic5G4BIQzdcDsG7WRFuohhtpnmDM1LZ7syhJiG9ePbiVRSm8z y3YxF38QMLKvBEr1KtJHE6Q= X-Received: by 2002:a7b:cb92:0:b0:3f5:ffe3:46a7 with SMTP id m18-20020a7bcb92000000b003f5ffe346a7mr9503412wmi.9.1686739687813; Wed, 14 Jun 2023 03:48:07 -0700 (PDT) Received: from prasmi.home ([2a00:23c8:2501:c701:64d6:8737:b80d:a298]) by smtp.gmail.com with ESMTPSA id y10-20020a1c4b0a000000b003f5ffba9ae1sm17154904wma.24.2023.06.14.03.48.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:48:07 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Arnd Bergmann , Conor Dooley , Geert Uytterhoeven , Guo Ren , Andrew Jones , Paul Walmsley , Palmer Dabbelt , Albert Ou , Samuel Holland , linux-riscv@lists.infradead.org, Christoph Hellwig Cc: Rob Herring , Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Lad Prabhakar Subject: [PATCH v9 3/6] riscv: mm: dma-noncoherent: nonstandard cache operations support Date: Wed, 14 Jun 2023 11:47:56 +0100 Message-Id: <20230614104759.228372-4-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768675840996682162?= X-GMAIL-MSGID: =?utf-8?q?1768675840996682162?= From: Lad Prabhakar Introduce support for nonstandard noncoherent systems in the RISC-V architecture. It enables function pointer support to handle cache management in such systems. This patch adds a new configuration option called "RISCV_NONSTANDARD_CACHE_OPS." This option is a boolean flag that depends on "RISCV_DMA_NONCOHERENT" and enables the function pointer support for cache management in nonstandard noncoherent systems. Signed-off-by: Lad Prabhakar Reviewed-by: Conor Dooley --- v8 -> v9 * New patch --- arch/riscv/Kconfig | 7 ++++ arch/riscv/include/asm/dma-noncoherent.h | 28 +++++++++++++++ arch/riscv/mm/dma-noncoherent.c | 43 ++++++++++++++++++++++++ arch/riscv/mm/pmem.c | 13 +++++++ 4 files changed, 91 insertions(+) create mode 100644 arch/riscv/include/asm/dma-noncoherent.h diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 628aad4fb6e2..325ab2124f0a 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -261,6 +261,13 @@ config RISCV_DMA_NONCOHERENT select ARCH_HAS_SYNC_DMA_FOR_DEVICE select DMA_DIRECT_REMAP +config RISCV_NONSTANDARD_CACHE_OPS + bool + depends on RISCV_DMA_NONCOHERENT + help + This enables function pointer support for non-standard noncoherent + systems to handle cache management. + config AS_HAS_INSN def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero) diff --git a/arch/riscv/include/asm/dma-noncoherent.h b/arch/riscv/include/asm/dma-noncoherent.h new file mode 100644 index 000000000000..f4e9bb2d3800 --- /dev/null +++ b/arch/riscv/include/asm/dma-noncoherent.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (C) 2023 Renesas Electronics Corp. + */ + +#ifndef __ASM_DMA_NONCOHERENT_H +#define __ASM_DMA_NONCOHERENT_H + +#include + +/* + * struct riscv_cache_ops - Structure for CMO function pointers + * + * @clean: Function pointer for clean cache + * @inval: Function pointer for invalidate cache + * @flush: Function pointer for flushing the cache + */ +struct riscv_cache_ops { + void (*clean)(phys_addr_t paddr, unsigned long size); + void (*inval)(phys_addr_t paddr, unsigned long size); + void (*flush)(phys_addr_t paddr, unsigned long size); +}; + +extern struct riscv_cache_ops noncoherent_cache_ops; + +void riscv_noncoherent_register_cache_ops(const struct riscv_cache_ops *ops); + +#endif /* __ASM_DMA_NONCOHERENT_H */ diff --git a/arch/riscv/mm/dma-noncoherent.c b/arch/riscv/mm/dma-noncoherent.c index b9a9f57e02be..4cdaa879839a 100644 --- a/arch/riscv/mm/dma-noncoherent.c +++ b/arch/riscv/mm/dma-noncoherent.c @@ -9,13 +9,26 @@ #include #include #include +#include static bool noncoherent_supported; +struct riscv_cache_ops noncoherent_cache_ops = { + .clean = NULL, + .inval = NULL, + .flush = NULL, +}; + static inline void arch_dma_cache_wback(phys_addr_t paddr, size_t size) { void *vaddr = phys_to_virt(paddr); +#ifdef CONFIG_RISCV_NONSTANDARD_CACHE_OPS + if (unlikely(noncoherent_cache_ops.clean)) { + noncoherent_cache_ops.clean(paddr, size); + return; + } +#endif ALT_CMO_OP(clean, vaddr, size, riscv_cbom_block_size); } @@ -23,6 +36,13 @@ static inline void arch_dma_cache_inv(phys_addr_t paddr, size_t size) { void *vaddr = phys_to_virt(paddr); +#ifdef CONFIG_RISCV_NONSTANDARD_CACHE_OPS + if (unlikely(noncoherent_cache_ops.inval)) { + noncoherent_cache_ops.inval(paddr, size); + return; + } +#endif + ALT_CMO_OP(inval, vaddr, size, riscv_cbom_block_size); } @@ -30,6 +50,13 @@ static inline void arch_dma_cache_wback_inv(phys_addr_t paddr, size_t size) { void *vaddr = phys_to_virt(paddr); +#ifdef CONFIG_RISCV_NONSTANDARD_CACHE_OPS + if (unlikely(noncoherent_cache_ops.flush)) { + noncoherent_cache_ops.flush(paddr, size); + return; + } +#endif + ALT_CMO_OP(flush, vaddr, size, riscv_cbom_block_size); } @@ -50,6 +77,13 @@ void arch_dma_prep_coherent(struct page *page, size_t size) { void *flush_addr = page_address(page); +#ifdef CONFIG_RISCV_NONSTANDARD_CACHE_OPS + if (unlikely(noncoherent_cache_ops.flush)) { + noncoherent_cache_ops.flush(page_to_phys(page), size); + return; + } +#endif + ALT_CMO_OP(flush, flush_addr, size, riscv_cbom_block_size); } @@ -75,3 +109,12 @@ void riscv_noncoherent_supported(void) "Non-coherent DMA support enabled without a block size\n"); noncoherent_supported = true; } + +void riscv_noncoherent_register_cache_ops(const struct riscv_cache_ops *ops) +{ + if (!ops) + return; + + noncoherent_cache_ops = *ops; +} +EXPORT_SYMBOL_GPL(riscv_noncoherent_register_cache_ops); diff --git a/arch/riscv/mm/pmem.c b/arch/riscv/mm/pmem.c index 089df92ae876..fb481f5b930a 100644 --- a/arch/riscv/mm/pmem.c +++ b/arch/riscv/mm/pmem.c @@ -7,15 +7,28 @@ #include #include +#include void arch_wb_cache_pmem(void *addr, size_t size) { +#ifdef CONFIG_RISCV_NONSTANDARD_CACHE_OPS + if (unlikely(noncoherent_cache_ops.clean)) { + noncoherent_cache_ops.clean(virt_to_phys(addr), size); + return; + } +#endif ALT_CMO_OP(clean, addr, size, riscv_cbom_block_size); } EXPORT_SYMBOL_GPL(arch_wb_cache_pmem); void arch_invalidate_pmem(void *addr, size_t size) { +#ifdef CONFIG_RISCV_NONSTANDARD_CACHE_OPS + if (unlikely(noncoherent_cache_ops.inval)) { + noncoherent_cache_ops.inval(virt_to_phys(addr), size); + return; + } +#endif ALT_CMO_OP(inval, addr, size, riscv_cbom_block_size); } EXPORT_SYMBOL_GPL(arch_invalidate_pmem); From patchwork Wed Jun 14 10:47:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 107890 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1152472vqr; Wed, 14 Jun 2023 04:01:06 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5Sh5p1iAh6sV6e+N/UDa4YA1RF74+2o93aO4fwITjKcJJPL4SPZy/3bdQGyOzHV8eVd6MN X-Received: by 2002:a05:6e02:10f:b0:33c:5182:6cf1 with SMTP id t15-20020a056e02010f00b0033c51826cf1mr12871351ilm.27.1686740466080; Wed, 14 Jun 2023 04:01:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686740466; cv=none; d=google.com; s=arc-20160816; b=EIbQuewhAU9j1j6X5Drd1iXxdm/2h340EJKkwEn1wFjB5E3H1PAM2JZLXxVrr2R34K fwqjWi687DHU/ScogZb93/7DpkwB+3t7MY80/8I7fSFLTKqxr1pkhbu6E/4LGjzR0Azj /lJYcXQFO32rIK57fnK9tFIxzSiflDcvrpYmMgpPJzQmCvQdx6c8pJoVTMB69Df872nn cnwEh6jeULhzanm/vl3gi9lsGphdeeb5ZBtUbFMYulCVWv6IZGt2o29i+T79X7F9MATy EU3fGFX+2F5Ad2/KmTr8O9JpGVHu+qhLCG2WRjSVqDFP+9S2mmW31f2alI53uOX7tcFM i6Qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=tM8oQ5AlHX+UtLTwuEHmAQC8MFGQX+BK7/3h+w5idWQ=; b=sFO7pyoiSTGh/OrDdhq4d9lcdG8OwBk+fTz/Ji70sMebO0CE2xBKqf9+5xjXlyzp8w Xg+K4oB0sR/hGsMRCXVa79I4BFL34SVPEB0+sy5JSL/KwmecpYaQZaE9HWrfeYMX1tVG Uv2Yff2seADXMMWryt4R0aJPbSa+tmjELyU783GC6QyDf8/zCYKqFYXvNrJDrlB2aLic +AhrvyQS//NPzd8/C6UIhWZ+Ak3/4qZIm901oDe5ze5UOCBJ6gIL/bD/EkEugosLkUsz qM9/jl7Bn6zlJebGatu71assTLCitUY82R8ZaWwaQ/WMx72quai0yw+8Qkky1er+fpdD nj6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=L2mvdjB1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d10-20020a63734a000000b0053f23442f24si7749352pgn.502.2023.06.14.04.00.52; Wed, 14 Jun 2023 04:01:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=L2mvdjB1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243599AbjFNKsY (ORCPT + 99 others); Wed, 14 Jun 2023 06:48:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243391AbjFNKsM (ORCPT ); Wed, 14 Jun 2023 06:48:12 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16C05196; Wed, 14 Jun 2023 03:48:11 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-4f004cc54f4so8309405e87.3; Wed, 14 Jun 2023 03:48:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686739689; x=1689331689; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tM8oQ5AlHX+UtLTwuEHmAQC8MFGQX+BK7/3h+w5idWQ=; b=L2mvdjB12HTMe/Ko13qtOnLqgQSnFQnZ2adLuqHuT2Fg8AkxyrgAl1RDkxwu0YHZ7n BHR6aqhNpuLgf9lBdJjkyBEYSJAFseA8519zmBlGw5RGLGh66OpbHnpOEfl5boynmRY2 QvWbM+IWoVyWq2+5BzFNc3jEAfIbNKrq5mFHvQliB5F6jnh8ImG8KE+gcDjJV1aXt1VA EQUMtxVBiU9ANvF7cvoMEcpsM4Qfi+SZKPO3fRDE4owr86nNmcejA4TjO6jPCYoiAG8d iueoTjU9nHapbFyEHtc+zHXJVpeliWg/tokyf874LzrMFswgE5G0UbFig/qrnyJfOZU7 Khmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686739689; x=1689331689; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tM8oQ5AlHX+UtLTwuEHmAQC8MFGQX+BK7/3h+w5idWQ=; b=aQ0X6xRxGpAOSjPJ5yIinjWpDATliDYJhYp1g3Mntla5GK6m9hBzRX2Qn5jMT0Y9/T pSNzEiE2xyakVkZxmuJxlgGQIVDVEaYvTvv2aAwsuDsYfI7C7UtUQV+bWvaAlE8Q9rvu 2BjbX2SXBe+Avs06r0VXqSt4KyEOpazUGLigVF176Wt73nI2KAFX+reA2szwhGSBMcl7 ULoJ/yqj1Akz/bJoxzAqiWAENrC5zYQG7bMpDiJrOpD4sYis+kfwm+eWm/B7ze8NuQGQ 0wcYMuYRUf9kYt9FqYHFWUvsFJm1NSMdu1aHv6LD4RQgDazX9ThCMeakW0ws3U+Avz+Z 6SAA== X-Gm-Message-State: AC+VfDw/FUMMf82EsBf8ENgdCTk9dn1e5Da55Qh5SdkRw0RQrmi9M8ws i6ltj8B8IQcmT4q1H11Y1ZI= X-Received: by 2002:a19:661a:0:b0:4f7:6891:a511 with SMTP id a26-20020a19661a000000b004f76891a511mr794311lfc.40.1686739689115; Wed, 14 Jun 2023 03:48:09 -0700 (PDT) Received: from prasmi.home ([2a00:23c8:2501:c701:64d6:8737:b80d:a298]) by smtp.gmail.com with ESMTPSA id y10-20020a1c4b0a000000b003f5ffba9ae1sm17154904wma.24.2023.06.14.03.48.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:48:08 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Arnd Bergmann , Conor Dooley , Geert Uytterhoeven , Guo Ren , Andrew Jones , Paul Walmsley , Palmer Dabbelt , Albert Ou , Samuel Holland , linux-riscv@lists.infradead.org, Christoph Hellwig Cc: Rob Herring , Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Lad Prabhakar , Rob Herring Subject: [PATCH v9 4/6] dt-bindings: cache: andestech,ax45mp-cache: Add DT binding documentation for L2 cache controller Date: Wed, 14 Jun 2023 11:47:57 +0100 Message-Id: <20230614104759.228372-5-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768675570937440712?= X-GMAIL-MSGID: =?utf-8?q?1768675570937440712?= From: Lad Prabhakar Add DT binding documentation for L2 cache controller found on RZ/Five SoC. The Renesas RZ/Five microprocessor includes a RISC-V CPU Core (AX45MP Single) from Andes. The AX45MP core has an L2 cache controller, this patch describes the L2 cache block. Signed-off-by: Lad Prabhakar Reviewed-by: Rob Herring Reviewed-by: Conor Dooley --- v8 -> v9 * No Change v7 -> v8 * Updated commit header message v6 -> v7 * No Change v5 -> v6 * Included RB tag from Rob v4 -> v5 * Dropped L2 cache configuration properties * Dropped PMA configuration properties * Ordered the required list to match the properties list RFC v3 -> v4 * Dropped l2 cache configuration parameters * s/larger/large * Added minItems/maxItems for andestech,pma-regions --- .../cache/andestech,ax45mp-cache.yaml | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Documentation/devicetree/bindings/cache/andestech,ax45mp-cache.yaml diff --git a/Documentation/devicetree/bindings/cache/andestech,ax45mp-cache.yaml b/Documentation/devicetree/bindings/cache/andestech,ax45mp-cache.yaml new file mode 100644 index 000000000000..9ab5f0c435d4 --- /dev/null +++ b/Documentation/devicetree/bindings/cache/andestech,ax45mp-cache.yaml @@ -0,0 +1,81 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright (C) 2023 Renesas Electronics Corp. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/cache/andestech,ax45mp-cache.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Andestech AX45MP L2 Cache Controller + +maintainers: + - Lad Prabhakar + +description: + A level-2 cache (L2C) is used to improve the system performance by providing + a large amount of cache line entries and reasonable access delays. The L2C + is shared between cores, and a non-inclusive non-exclusive policy is used. + +select: + properties: + compatible: + contains: + enum: + - andestech,ax45mp-cache + + required: + - compatible + +properties: + compatible: + items: + - const: andestech,ax45mp-cache + - const: cache + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + cache-line-size: + const: 64 + + cache-level: + const: 2 + + cache-sets: + const: 1024 + + cache-size: + enum: [131072, 262144, 524288, 1048576, 2097152] + + cache-unified: true + + next-level-cache: true + +additionalProperties: false + +required: + - compatible + - reg + - interrupts + - cache-line-size + - cache-level + - cache-sets + - cache-size + - cache-unified + +examples: + - | + #include + + cache-controller@2010000 { + compatible = "andestech,ax45mp-cache", "cache"; + reg = <0x13400000 0x100000>; + interrupts = <508 IRQ_TYPE_LEVEL_HIGH>; + cache-line-size = <64>; + cache-level = <2>; + cache-sets = <1024>; + cache-size = <262144>; + cache-unified; + }; From patchwork Wed Jun 14 10:47:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 107889 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1152330vqr; Wed, 14 Jun 2023 04:00:56 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ66gXGeytFbA4T6aQSplo9WnsfIAwoYOXRytZvptbG+9KyT3ZlbOVY/ttu+oiRvIcF4xg81 X-Received: by 2002:a9d:6556:0:b0:6a7:c078:333c with SMTP id q22-20020a9d6556000000b006a7c078333cmr10981038otl.8.1686740455874; Wed, 14 Jun 2023 04:00:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686740455; cv=none; d=google.com; s=arc-20160816; b=Dt3vfSO+87IfWpykOZondLdUsEavGASqEDC4bizJCfHo1TpfC0PX/Yq2z4MfiZdOdz J3+/IWnaQmaTOB2PtsG2yOfeFjTdS8MwhMKUC8pXlhgeS7iOiCT1Q0dpn45boV5EJYzM Om/GDK9+LOhfGTyVtQR6HgYJk487OCFopUhTlLrVf5BpI187mpCemKXy+Jg2f+elLCTi zjMkxvDXUl3mYzgjYfQZNvRfT2609i84aoOxRSfj2almMFSLDFHScRDRDXQuwXCmHH4v WCyM3sQ7N4jQ/qLpTFGComBptZb19kmJA/HkaLtTT6mUNk1CNnTrGTXeeiZ8s8kfuwyu 9Tjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=pPOutq+8CWbrJU3SgNwlkuco/YMLb70czPF19YdjQ84=; b=OptVAehZGKUEKnIjJks/yBO/ZVHAof8MR7OE5iJYt9F7miHuvoLjGoYEqS3PksNxVo NjGZ5K82TpWbnbkvaBLEwL5ujzPJX+wwY3oULVlG2oeJX7kbU4tzkUg+m7dLkCX8baX8 QWDmcLGfMcxEZa525fBfg734xn+omLEPw0BXmWCTedsQXoIQZihJRisOCUkM3NQQaaro 2BgeSBGXz6wvwBVh1E9Jhsf0ZKix9G0VX4Z0eRSWPffs02zkGU3k3tnfD33QeJZ/FyEM WlBAQM7ojVH6NHVn+EsfUDqwjLFNlyE72OwWvrEeRq9Ds5QtSjvJMh963XwYz29GDEXh uCbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=PXefaV9A; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m30-20020a63711e000000b0053fb89f1e10si10712168pgc.501.2023.06.14.04.00.42; Wed, 14 Jun 2023 04:00:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=PXefaV9A; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243671AbjFNKsa (ORCPT + 99 others); Wed, 14 Jun 2023 06:48:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54010 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243433AbjFNKsO (ORCPT ); Wed, 14 Jun 2023 06:48:14 -0400 Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21B99E41; Wed, 14 Jun 2023 03:48:12 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-3f736e0c9b1so5624755e9.3; Wed, 14 Jun 2023 03:48:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686739690; x=1689331690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pPOutq+8CWbrJU3SgNwlkuco/YMLb70czPF19YdjQ84=; b=PXefaV9AIZoNXXdIp6G3C0693Iy2I99E5I89bqjI4BiJqSUzbYNfRTF0VUGkmNysRd 0MU/0yFQEsCQAeJ/xGOguW0vcbB+b2YR0Cc6UeG4BZ2oPiSJ64offwa7dt6dywKoevZc XGDfce7Rmx7SElHUpc3HqYYzj4aFUR2d9h7rFzTaPwfycNagfEJrz81yk3MdbG+sMz0U K6+luzbvqJ6oA4gtdimBc270xH9yDH4H6KH2o/qK6+ro3y+cXDZrBLgeY3rK3X9Icp5o ewds0QSrTrn0rvd3o6uE0FHH0BPcloqvTeZHDeBE9CdtFnYw2MPUi4b+V+LSlJaFhQD9 +Z7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686739690; x=1689331690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pPOutq+8CWbrJU3SgNwlkuco/YMLb70czPF19YdjQ84=; b=gfK4CO1G7IW8didHY0JEyGgR9hXSkC9h6KOAPQRIpOPMxUBK/Q/HSUgtCcOQKgbJz+ XE6XmlB1pEU3g64kSlpr7z9N4YFxWdMZkp8W+DqdIw3Pd4ouIJ5wU3i+JtBWcdNarGMo IsGOjIqLP/P1qEET61zqnLEHG2Wo8RVwlt3wTYsahohj78w6hlHKWy4Li6L0YnDvrTpc BR9EsFsCxrf2102V/3UUjdfkgheQDDVd/H5/nxOVjrGlMLRWqXpxBXhZR3okayUn0xJ4 PZX9kHBtLbW3SLwJpnY/xTT1k/6GittbcAl+h1rpkzKoR2HiLHLATXon1Ej3pyDk00MQ MfbQ== X-Gm-Message-State: AC+VfDwyjo+FfL2G4++AQpu+lsfMxqLB+OnGOC3cG8qSG87Zv/DBAaDa JFoIbFZ0WX1y4yiTyx+PU74= X-Received: by 2002:a7b:c047:0:b0:3f8:1a00:7dd1 with SMTP id u7-20020a7bc047000000b003f81a007dd1mr7445833wmc.27.1686739690314; Wed, 14 Jun 2023 03:48:10 -0700 (PDT) Received: from prasmi.home ([2a00:23c8:2501:c701:64d6:8737:b80d:a298]) by smtp.gmail.com with ESMTPSA id y10-20020a1c4b0a000000b003f5ffba9ae1sm17154904wma.24.2023.06.14.03.48.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:48:09 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Arnd Bergmann , Conor Dooley , Geert Uytterhoeven , Guo Ren , Andrew Jones , Paul Walmsley , Palmer Dabbelt , Albert Ou , Samuel Holland , linux-riscv@lists.infradead.org, Christoph Hellwig Cc: Rob Herring , Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Lad Prabhakar Subject: [PATCH v9 5/6] cache: Add L2 cache management for Andes AX45MP RISC-V core Date: Wed, 14 Jun 2023 11:47:58 +0100 Message-Id: <20230614104759.228372-6-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768675560106222614?= X-GMAIL-MSGID: =?utf-8?q?1768675560106222614?= From: Lad Prabhakar I/O Coherence Port (IOCP) provides an AXI interface for connecting external non-caching masters, such as DMA controllers. The accesses from IOCP are coherent with D-Caches and L2 Cache. IOCP is a specification option and is disabled on the Renesas RZ/Five SoC due to this reason IP blocks using DMA will fail. The Andes AX45MP core has a Programmable Physical Memory Attributes (PMA) block that allows dynamic adjustment of memory attributes in the runtime. It contains a configurable amount of PMA entries implemented as CSR registers to control the attributes of memory locations in interest. Below are the memory attributes supported: * Device, Non-bufferable * Device, bufferable * Memory, Non-cacheable, Non-bufferable * Memory, Non-cacheable, Bufferable * Memory, Write-back, No-allocate * Memory, Write-back, Read-allocate * Memory, Write-back, Write-allocate * Memory, Write-back, Read and Write-allocate More info about PMA (section 10.3): Link: http://www.andestech.com/wp-content/uploads/AX45MP-1C-Rev.-5.0.0-Datasheet.pdf As a workaround for SoCs with IOCP disabled CMO needs to be handled by software. Firstly OpenSBI configures the memory region as "Memory, Non-cacheable, Bufferable" and passes this region as a global shared dma pool as a DT node. With DMA_GLOBAL_POOL enabled all DMA allocations happen from this region and synchronization callbacks are implemented to synchronize when doing DMA transactions. Example PMA region passes as a DT node from OpenSBI: reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; pma_resv0@58000000 { compatible = "shared-dma-pool"; reg = <0x0 0x58000000 0x0 0x08000000>; no-map; linux,dma-default; }; }; Signed-off-by: Lad Prabhakar Reviewed-by: Conor Dooley --- v8 -> v9 * Dropped exporting CMO functions as we no more used ALTERNATIVE_X() macro * Now using the riscv_noncoherent_register_cache_ops() for registering CMO ops * Added RB tag from Conor v7 -> v8 * Dropped function pointer usage * Now exporting the functions for clean/inval/flush * Switched to using early_initcall instead of arch_initcall * Dropped entry for "include/cache" from MAINTAINERS * Dropped dependency of RISCV on AX45MP_L2_CACHE * Returning error in case of cache line mismatch * Renamed clean/inval/flush functions v6 -> v7 * Implemented flush callback * Dropped using riscv_dma_noncoherent_cmo_ops v5 -> v6 * Moved driver to cache folder * Switched to new API for CMO v4 -> v5 * Dropped code for configuring L2 cache * Dropped code for configuring PMA * Updated commit message * Added comments * Changed static branch enable/disable order RFC v3 -> v4 * Made use of runtime patching instead of compile time * Now just exposing single function ax45mp_no_iocp_cmo() for CMO handling * Added a check to make sure cache line size is always 64 bytes * Renamed folder rzf -> rzfive * Improved Kconfig description * Dropped L2 cache configuration * Dropped unnecessary casts * Fixed comments pointed by Geert. --- MAINTAINERS | 7 ++ drivers/Kconfig | 2 + drivers/Makefile | 1 + drivers/cache/Kconfig | 11 ++ drivers/cache/Makefile | 3 + drivers/cache/ax45mp_cache.c | 229 +++++++++++++++++++++++++++++++++++ 6 files changed, 253 insertions(+) create mode 100644 drivers/cache/Kconfig create mode 100644 drivers/cache/Makefile create mode 100644 drivers/cache/ax45mp_cache.c diff --git a/MAINTAINERS b/MAINTAINERS index 55ac73793856..899452038a5b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20073,6 +20073,13 @@ S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git F: drivers/staging/ +STANDALONE CACHE CONTROLLER DRIVERS +M: Conor Dooley +L: linux-riscv@lists.infradead.org +S: Maintained +T: git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/ +F: drivers/cache + STARFIRE/DURALAN NETWORK DRIVER M: Ion Badulescu S: Odd Fixes diff --git a/drivers/Kconfig b/drivers/Kconfig index 514ae6b24cb2..2ae1b6707c2c 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -15,6 +15,8 @@ source "drivers/base/Kconfig" source "drivers/bus/Kconfig" +source "drivers/cache/Kconfig" + source "drivers/connector/Kconfig" source "drivers/firmware/Kconfig" diff --git a/drivers/Makefile b/drivers/Makefile index 7241d80a7b29..23eb201fe18a 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -11,6 +11,7 @@ ifdef building_out_of_srctree MAKEFLAGS += --include-dir=$(srctree) endif +obj-y += cache/ obj-y += irqchip/ obj-y += bus/ diff --git a/drivers/cache/Kconfig b/drivers/cache/Kconfig new file mode 100644 index 000000000000..a57677f908f3 --- /dev/null +++ b/drivers/cache/Kconfig @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0 +menu "Cache Drivers" + +config AX45MP_L2_CACHE + bool "Andes Technology AX45MP L2 Cache controller" + depends on RISCV_DMA_NONCOHERENT + select RISCV_NONSTANDARD_CACHE_OPS + help + Support for the L2 cache controller on Andes Technology AX45MP platforms. + +endmenu diff --git a/drivers/cache/Makefile b/drivers/cache/Makefile new file mode 100644 index 000000000000..2012e7fb978d --- /dev/null +++ b/drivers/cache/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-$(CONFIG_AX45MP_L2_CACHE) += ax45mp_cache.o diff --git a/drivers/cache/ax45mp_cache.c b/drivers/cache/ax45mp_cache.c new file mode 100644 index 000000000000..df868872aabf --- /dev/null +++ b/drivers/cache/ax45mp_cache.c @@ -0,0 +1,229 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * non-coherent cache functions for Andes AX45MP + * + * Copyright (C) 2023 Renesas Electronics Corp. + */ + +#include +#include +#include +#include +#include + +#include + +/* L2 cache registers */ +#define AX45MP_L2C_REG_CTL_OFFSET 0x8 + +#define AX45MP_L2C_REG_C0_CMD_OFFSET 0x40 +#define AX45MP_L2C_REG_C0_ACC_OFFSET 0x48 +#define AX45MP_L2C_REG_STATUS_OFFSET 0x80 + +/* D-cache operation */ +#define AX45MP_CCTL_L1D_VA_INVAL 0 /* Invalidate an L1 cache entry */ +#define AX45MP_CCTL_L1D_VA_WB 1 /* Write-back an L1 cache entry */ + +/* L2 CCTL status */ +#define AX45MP_CCTL_L2_STATUS_IDLE 0 + +/* L2 CCTL status cores mask */ +#define AX45MP_CCTL_L2_STATUS_C0_MASK 0xf + +/* L2 cache operation */ +#define AX45MP_CCTL_L2_PA_INVAL 0x8 /* Invalidate an L2 cache entry */ +#define AX45MP_CCTL_L2_PA_WB 0x9 /* Write-back an L2 cache entry */ + +#define AX45MP_L2C_REG_PER_CORE_OFFSET 0x10 +#define AX45MP_CCTL_L2_STATUS_PER_CORE_OFFSET 4 + +#define AX45MP_L2C_REG_CN_CMD_OFFSET(n) \ + (AX45MP_L2C_REG_C0_CMD_OFFSET + ((n) * AX45MP_L2C_REG_PER_CORE_OFFSET)) +#define AX45MP_L2C_REG_CN_ACC_OFFSET(n) \ + (AX45MP_L2C_REG_C0_ACC_OFFSET + ((n) * AX45MP_L2C_REG_PER_CORE_OFFSET)) +#define AX45MP_CCTL_L2_STATUS_CN_MASK(n) \ + (AX45MP_CCTL_L2_STATUS_C0_MASK << ((n) * AX45MP_CCTL_L2_STATUS_PER_CORE_OFFSET)) + +#define AX45MP_CCTL_REG_UCCTLBEGINADDR_NUM 0x80b +#define AX45MP_CCTL_REG_UCCTLCOMMAND_NUM 0x80c + +#define AX45MP_CACHE_LINE_SIZE 64 + +struct ax45mp_priv { + void __iomem *l2c_base; + u32 ax45mp_cache_line_size; +}; + +static struct ax45mp_priv ax45mp_priv; + +/* L2 Cache operations */ +static inline uint32_t ax45mp_cpu_l2c_get_cctl_status(void) +{ + return readl(ax45mp_priv.l2c_base + AX45MP_L2C_REG_STATUS_OFFSET); +} + +static void ax45mp_cpu_cache_operation(unsigned long start, unsigned long end, + unsigned long line_size, unsigned int l1_op, + unsigned int l2_op) +{ + void __iomem *base = ax45mp_priv.l2c_base; + int mhartid = smp_processor_id(); + unsigned long pa; + + while (end > start) { + csr_write(AX45MP_CCTL_REG_UCCTLBEGINADDR_NUM, start); + csr_write(AX45MP_CCTL_REG_UCCTLCOMMAND_NUM, l1_op); + + pa = virt_to_phys((void *)start); + writel(pa, base + AX45MP_L2C_REG_CN_ACC_OFFSET(mhartid)); + writel(l2_op, base + AX45MP_L2C_REG_CN_CMD_OFFSET(mhartid)); + while ((ax45mp_cpu_l2c_get_cctl_status() & + AX45MP_CCTL_L2_STATUS_CN_MASK(mhartid)) != + AX45MP_CCTL_L2_STATUS_IDLE) + ; + + start += line_size; + } +} + +/* Write-back L1 and L2 cache entry */ +static inline void ax45mp_cpu_dcache_wb_range(unsigned long start, unsigned long end, + unsigned long line_size) +{ + ax45mp_cpu_cache_operation(start, end, line_size, + AX45MP_CCTL_L1D_VA_WB, + AX45MP_CCTL_L2_PA_WB); +} + +/* Invalidate the L1 and L2 cache entry */ +static inline void ax45mp_cpu_dcache_inval_range(unsigned long start, unsigned long end, + unsigned long line_size) +{ + ax45mp_cpu_cache_operation(start, end, line_size, + AX45MP_CCTL_L1D_VA_INVAL, + AX45MP_CCTL_L2_PA_INVAL); +} + +static void ax45mp_dma_cache_inv(phys_addr_t paddr, unsigned long size) +{ + unsigned long start = (unsigned long)phys_to_virt(paddr); + char cache_buf[2][AX45MP_CACHE_LINE_SIZE]; + unsigned long end = start + size; + unsigned long old_start = start; + unsigned long old_end = end; + unsigned long line_size; + unsigned long flags; + + if (unlikely(start == end)) + return; + + line_size = ax45mp_priv.ax45mp_cache_line_size; + + memset(&cache_buf, 0x0, sizeof(cache_buf)); + start = start & (~(line_size - 1)); + end = ((end + line_size - 1) & (~(line_size - 1))); + + local_irq_save(flags); + if (unlikely(start != old_start)) + memcpy(&cache_buf[0][0], (void *)start, line_size); + + if (unlikely(end != old_end)) + memcpy(&cache_buf[1][0], (void *)(old_end & (~(line_size - 1))), line_size); + + ax45mp_cpu_dcache_inval_range(start, end, line_size); + + if (unlikely(start != old_start)) + memcpy((void *)start, &cache_buf[0][0], (old_start & (line_size - 1))); + + local_irq_restore(flags); +} + +static void ax45mp_dma_cache_wback(phys_addr_t paddr, unsigned long size) +{ + unsigned long start = (unsigned long)phys_to_virt(paddr); + unsigned long end = start + size; + unsigned long line_size; + unsigned long flags; + + line_size = ax45mp_priv.ax45mp_cache_line_size; + start = start & (~(line_size - 1)); + local_irq_save(flags); + ax45mp_cpu_dcache_wb_range(start, end, line_size); + local_irq_restore(flags); +} + +static void ax45mp_dma_cache_wback_inv(phys_addr_t paddr, unsigned long size) +{ + ax45mp_dma_cache_wback(paddr, size); + ax45mp_dma_cache_inv(paddr, size); +} + +static int ax45mp_get_l2_line_size(struct device_node *np) +{ + int ret; + + ret = of_property_read_u32(np, "cache-line-size", &ax45mp_priv.ax45mp_cache_line_size); + if (ret) { + pr_err("Failed to get cache-line-size, defaulting to 64 bytes\n"); + return ret; + } + + if (ax45mp_priv.ax45mp_cache_line_size != AX45MP_CACHE_LINE_SIZE) { + pr_err("Expected cache-line-size to be 64 bytes (found:%u)\n", + ax45mp_priv.ax45mp_cache_line_size); + return -EINVAL; + } + + return 0; +} + +static const struct riscv_cache_ops ax45mp_cmo_ops = { + .clean = &ax45mp_dma_cache_wback, + .inval = &ax45mp_dma_cache_inv, + .flush = &ax45mp_dma_cache_wback_inv, +}; + +static const struct of_device_id ax45mp_cache_ids[] = { + { .compatible = "andestech,ax45mp-cache" }, + { /* sentinel */ } +}; + +static int __init ax45mp_cache_init(void) +{ + struct device_node *np; + struct resource res; + int ret; + + np = of_find_matching_node(NULL, ax45mp_cache_ids); + if (!of_device_is_available(np)) + return -ENODEV; + + ret = of_address_to_resource(np, 0, &res); + if (ret) + return ret; + + /* + * If IOCP is present on the Andes AX45MP core riscv_cbom_block_size + * will be 0 for sure, so we can definitely rely on it. If + * riscv_cbom_block_size = 0 we don't need to handle CMO using SW any + * more so we just return success here and only if its being set we + * continue further in the probe path. + */ + if (!riscv_cbom_block_size) + return 0; + + ax45mp_priv.l2c_base = ioremap(res.start, resource_size(&res)); + if (!ax45mp_priv.l2c_base) + return -ENOMEM; + + ret = ax45mp_get_l2_line_size(np); + if (ret) { + iounmap(ax45mp_priv.l2c_base); + return ret; + } + + riscv_noncoherent_register_cache_ops(&ax45mp_cmo_ops); + + return 0; +} +early_initcall(ax45mp_cache_init); From patchwork Wed Jun 14 10:47:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 107895 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1159971vqr; Wed, 14 Jun 2023 04:11:45 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7tjItuIBxpWivqogm5LctXLao1veb5nvpbv82mR8XwJj+YMTp8ZYLIUbzvchE/nnLFfHuk X-Received: by 2002:a05:6a00:815:b0:656:6d18:3d83 with SMTP id m21-20020a056a00081500b006566d183d83mr1579901pfk.7.1686741104993; Wed, 14 Jun 2023 04:11:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686741104; cv=none; d=google.com; s=arc-20160816; b=IAtsVR7MaYTu7iYRaff8D92w+MeNYYvducXQe5nzXrADdb27g4kvlTVBRDFIHsQ0mv o7YimWoBdQ3c+WP6jGl8rqOZ2N2Fasi/Yc3truG6SRNFjRix/+Byx7kliIZMOaZ0H2jX bW14sH4zAecwAHTNZ2Hbbfp6X9zPJCyBJ9EKACrLXLZLv51AYjHmhGBOTe6DyzHAygh4 R+v0rbudW7XzHSRt+KtZWZyt9Za8oT7P20D3M3L45zgY22d+2THdinwXAskEif5IZRPO Osr+D4mIDzZDrCcvQ18KnFIitZNkhnIHMaSc9PBv/dIzdbQZpdEUmOcTQ21TwowfRERH QEWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=JKG1x2TJZ8TijUzKSzDRuHBHShSw/jhXVj5kCAhPbSc=; b=Py2eYYheq7sAuPjLqog8aFddCckWg1PJ2iwerq2lnL+xHh+DXfGdq2dIsoC+DhpMuz nVbrYBUNQ0iOfMqHYwtI01GUBARP5yvA51s4l7pT7vIjhh65ddcmVrKn68LHQp1FYbFU 3d+h57ExZN9h+A1KCDjkw5s0oAS2888ft9V4XTdI+QBhYMMfZiPDCDf2wPmmYwVu3n3t vlhmbk4pOB8yJC6zLOjycdxTVd7SgqriExCJwY12OhfTLkunKAQj3RGQciK8RqDXL9Bq hvbXt9/gAmrktiO6VSJH/xL3fAFQHqI2fflckVmAXdLiqqrDUd8J38zRmZf+Au6W8qDo pN1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=EnC83bQM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c17-20020a637251000000b00543cc3151f9si11030007pgn.461.2023.06.14.04.11.31; Wed, 14 Jun 2023 04:11:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=EnC83bQM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243666AbjFNKs1 (ORCPT + 99 others); Wed, 14 Jun 2023 06:48:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54028 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243437AbjFNKsP (ORCPT ); Wed, 14 Jun 2023 06:48:15 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ABF6C1732; Wed, 14 Jun 2023 03:48:13 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-4f63ab1ac4aso8235754e87.0; Wed, 14 Jun 2023 03:48:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686739692; x=1689331692; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JKG1x2TJZ8TijUzKSzDRuHBHShSw/jhXVj5kCAhPbSc=; b=EnC83bQMIav9RSbuOTpryxDbTLpqndkyoZ4pJ8p72ijhFLkgPUQg/Re0cm3f1047ex ZkrOPFgTe2BuEqKYqNw0r0/+9h4Eif34hp6dianM1mAnpnSHsYZtnkF2dueBK/qH31v3 FF+MBP++VBA3D4haCge2to04ml7mvdMS6kzQ8RuMRLbeG1VlygbZucY0wDWa3yGqhoXC ZcgvOUJxZVmohztxfl6sIgslmne3EGvjPp4uSLycs3IRnsWE5FsAHLODgBqDctqLFH18 I4uDrKXkKgleWCmLfrku+sy3mQcsr3n1gwUUJ0qcdEctbtqMVTHHOoKsqisrvuTMWddx H1TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686739692; x=1689331692; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JKG1x2TJZ8TijUzKSzDRuHBHShSw/jhXVj5kCAhPbSc=; b=MtL+mQQ2f0hzS5l5E30xDRYPA9Lire/8/t4g+du6mBJRd75/KqRkaE1umLRRrvvRcO uwfHcMEO7mRawCAT7ZvEYx9sxf0uyzohMkOEQywHvBMLZ3EzkanidSvtEZ7Cxy2kakjO uutpEA2uKbWYtfuBk/Ij0VCMLNFusSgYBTLqX0XJ8IN1y8xh3LR8hJ77pPEVLyZ9535L GQZ+fGbioXkX/ezKKp9axT69nxIEl4KsiFdUFoL0OziddL/2lIcjJZ4CbEU2jujLSqfX Wzu3mnJnyJFqRwPF1Uubj2Z/lG0uvcmDb1Bz+J8b18FjaO6k2sceAl4zy4NJWL4P+hzc hmWA== X-Gm-Message-State: AC+VfDxk7GuQzq9O4ypEJO7zzYM9xSn9BIleB1u51S9WKKoARDLsASqw F2LWB13EEfEfNuIJxjIH7Dc= X-Received: by 2002:a05:6512:3121:b0:4f7:684f:8e98 with SMTP id p1-20020a056512312100b004f7684f8e98mr562465lfd.67.1686739691724; Wed, 14 Jun 2023 03:48:11 -0700 (PDT) Received: from prasmi.home ([2a00:23c8:2501:c701:64d6:8737:b80d:a298]) by smtp.gmail.com with ESMTPSA id y10-20020a1c4b0a000000b003f5ffba9ae1sm17154904wma.24.2023.06.14.03.48.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jun 2023 03:48:10 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Arnd Bergmann , Conor Dooley , Geert Uytterhoeven , Guo Ren , Andrew Jones , Paul Walmsley , Palmer Dabbelt , Albert Ou , Samuel Holland , linux-riscv@lists.infradead.org, Christoph Hellwig Cc: Rob Herring , Krzysztof Kozlowski , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Lad Prabhakar Subject: [PATCH v9 6/6] soc: renesas: Kconfig: Select the required configs for RZ/Five SoC Date: Wed, 14 Jun 2023 11:47:59 +0100 Message-Id: <20230614104759.228372-7-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20230614104759.228372-1-prabhakar.mahadev-lad.rj@bp.renesas.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768676241001683104?= X-GMAIL-MSGID: =?utf-8?q?1768676241001683104?= From: Lad Prabhakar Explicitly select the required Cache management and Errata configs required for the RZ/Five SoC. Signed-off-by: Lad Prabhakar Reviewed-by: Conor Dooley Reviewed-by: Geert Uytterhoeven Acked-by: Geert Uytterhoeven --- v8->v9 * No change v7->v8 * Included RB tag from Geert v6->v7 * Included RB tag from Conor v5->v6 * New patch --- drivers/soc/renesas/Kconfig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/soc/renesas/Kconfig b/drivers/soc/renesas/Kconfig index de31589ed054..67604f24973e 100644 --- a/drivers/soc/renesas/Kconfig +++ b/drivers/soc/renesas/Kconfig @@ -334,6 +334,10 @@ if RISCV config ARCH_R9A07G043 bool "RISC-V Platform support for RZ/Five" select ARCH_RZG2L + select AX45MP_L2_CACHE + select DMA_GLOBAL_POOL + select ERRATA_ANDES + select ERRATA_ANDES_CMO help This enables support for the Renesas RZ/Five SoC.