From patchwork Thu Mar 29 01:31:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ran Wang X-Patchwork-Id: 10314461 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id BFF09602D6 for ; Thu, 29 Mar 2018 04:56:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AFAA32A1AC for ; Thu, 29 Mar 2018 04:56:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A41542A1AE; Thu, 29 Mar 2018 04:56:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,DKIM_VALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id ED9EC2A1AC for ; Thu, 29 Mar 2018 04:56:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=eN/779VZ89qehyP+8AmxqsVESyS3EPHuypMt3lXHgTU=; b=Abut6Lt6mRRQIB eVewWHxEHGQrNSQv1JHpBQfOWuxin5XDlLQ5XHnq4GMxf8cCg1TIlu+iG4eINnK26ojloSp4VG48W V289pYVL18cyXC0B6uEA/PXX/vCDO9UAhEILBa0aqdhR5JvKQXFDd8Rf7beGGLZWtt/DWvVVFCz1B wL82+LeO6aS1+ZV+mD3MSm9CjY5qc2jTAD/HEGRSO5d24Qlc/QmFWva0WV7l+a9pudk+q14nLuHIF 2h9QyWmqZR9rIjXQe0SqrGPHg32b66fewe5vpeyJf187FdCrjMriEPYQOhU0ACly3VX6eTioMe9jb eIjxUChH4ev65veZz9Kg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1f1Pc8-0002B7-1Z; Thu, 29 Mar 2018 04:56:40 +0000 Received: from mail-cys01nam02on060e.outbound.protection.outlook.com ([2a01:111:f400:fe45::60e] helo=NAM02-CY1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1f1PbU-0001fz-8p for linux-arm-kernel@lists.infradead.org; Thu, 29 Mar 2018 04:56:02 +0000 Received: from MWHPR03CA0015.namprd03.prod.outlook.com (2603:10b6:300:117::25) by DM5PR03MB3116.namprd03.prod.outlook.com (2603:10b6:4:3c::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.631.10; Thu, 29 Mar 2018 04:55:45 +0000 Received: from BL2FFO11FD014.protection.gbl (2a01:111:f400:7c09::113) by MWHPR03CA0015.outlook.office365.com (2603:10b6:300:117::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.631.10 via Frontend Transport; Thu, 29 Mar 2018 04:55:45 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; lists.infradead.org; dkim=none (message not signed) header.d=none;lists.infradead.org; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD014.mail.protection.outlook.com (10.173.160.222) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.527.18 via Frontend Transport; Thu, 29 Mar 2018 04:55:44 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w2T1qg6Y021983; Wed, 28 Mar 2018 18:53:01 -0700 From: Ran Wang To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Rob Herring , Mark Rutland , Scott Wood , Kumar Gala , Li Yang Subject: [PATCH 3/5] powerpc/cache: add cache flush operation for various e500 Date: Thu, 29 Mar 2018 09:31:41 +0800 Message-ID: <20180329013143.22527-3-ran.wang_1@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180329013143.22527-1-ran.wang_1@nxp.com> References: <20180329013143.22527-1-ran.wang_1@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131667729451434598; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:CAL; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(7966004)(39860400002)(396003)(346002)(376002)(39380400002)(2980300002)(1110001)(1109001)(339900001)(199004)(189003)(59450400001)(2616005)(1076002)(48376002)(2906002)(50466002)(508600001)(76176011)(51416003)(4326008)(97736004)(486005)(126002)(476003)(486005)(446003)(11346002)(26826003)(85426001)(86362001)(6636002)(5660300001)(6666003)(53936002)(47776003)(336012)(26005)(106466001)(77096007)(104016004)(54906003)(105606002)(356003)(305945005)(16586007)(36756003)(81156014)(81166006)(68736007)(110136005)(8676002)(316002)(8936002)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB3116; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD014; 1:GP5zkvVZqq/R+dETFSLpPMfE4aNg7zepoRMLSA6puQCtRVaXePHQWsFG8G9DJT1DY2Y91HNYrqnuKOwSDBA7O0N0pZZG9/L7z2One5U+KgUq0HputMVUfDl54uNf8gSW MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1a649f74-8014-447e-c266-08d5953154cc X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(5600026)(4604075)(2017052603328); SRVR:DM5PR03MB3116; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3116; 3:phiSfPuSg1bLoxh4CaF5If2X+PUltJ+WvMdw0xEXJXj23mbAiO3LFT0R3r6LPHcPq+XVj4FgTxsJ4GmGWky6tq2tUl+UOTu/L5QAju7VcdF4OxsSM86Da8mJwTT7NxTTwJiGlLO2LuGjU72BHgQ+/816QdDZECB2uH9EghQvs3Fg1M25ztf6DrAaRvsM1MbdV2Tfu95UhqQAg5srNIW+FZlFZImckbvtT3zxV0QrO5k/0Mx1jLe+S/fORJkpZ75BQO3K2C7Mro0kDXq6hu0Y+zBpWImxN0Kn+9hIhISu8H74rxdzVbqizhWNjFpkhOrwer009fdFlvdkI9qPplLxHLLq0Qqfrl1IM9HQ8IdCm3Q=; 25:WDLc5KLpEd5pzfqA+r/1G7tv105lSgNFNR8mec/VuUGzpEY0aOGpNfFzc+EOjjIOT1/4YKvfOaV4ZA9tRcgtGuhrYkSPWl8fT9NTkbWUdn9ZQcUXm9mPlRc9Eh+TOjZ2MCx1nyj0sh8i/9PtHohr6mAMYFFM0XBSew9lCvXOADTYuQu9RpFxD9UHP6uqUkTw8coUSGVjkWYUqivssnuo0oBFwn+b82YY1yQ3UIRISpUDEl2mSgAHae0dwjQ0RuicZ7p/hYt5C9vMfyo1iQqFJEYn+wPNMztnGC87uIwmNwh6l9YvgAJu3weQ6I14o36swZ4E/vCgVVWvdCya2hr5/w== X-MS-TrafficTypeDiagnostic: DM5PR03MB3116: X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3116; 31:C9YwmcBEUevUDvIRIvjbIxxF2f5JbaI9lpImGyjTVdjrnO2/H7ZXo82wJ+QwNkEcuUXU6qZbRkjnBavMAziEJpi7xw3F8GLY9+3ApZh1F3+o6xDtg87R85Fmd2K+8DayG+pXdifRvmQyoLIdx2sTtU4CguK7UMXWuS2YotEwjNuBHmIYGfBI0DSqmuOXDiK7mgzVMPw9qwlblay4uA0rBzBYoqus1zm1npqbHWvzYRk=; 4:2s5/wFfa6o4cpJ3LSMCw92eUStmCkYrBiXGt8RWeYp1doMqa7iHQ+MJNF0p51xcR0v6sKWh0KuiLsAilH5eRxpJJWs89tl8WAQPfATwUuAniM/FCy3vZBefewMpN3SaDHe4GQZHjnTDlaBeyRC/u/ULo5cUKZd0NI0CzVGV2LoelTgVXOgHav0nkzrlcv4UMTIyDaeTK1wUXeWKwPUwvn6NrMU0UqtD6l+ucevHSmfj7DAVSbHop4jES5WEovOsRz5JPRnT7w3sP6xrHbpTD/X4MA6xPKTjYq7dpRG5kCqrx1quUBqcZenGaviIjT63p+Dm3DF8N+LfPgtUrM/hthGX0sbju9mLGl6FixLw9cYZZxwb337Rfc+ClMlaCbfjq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(101931422205132)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231221)(944501327)(52105095)(6055026)(6096035)(20161123556025)(20161123561025)(20161123559100)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(20161123565025)(20161123563025)(201708071742011); SRVR:DM5PR03MB3116; BCL:0; PCL:0; RULEID:(400006); SRVR:DM5PR03MB3116; X-Forefront-PRVS: 0626C21B10 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB3116; 23:Pw47bK+UqCAQEMiJK279KH+F2PiYlAsoowanzYtzh?= =?us-ascii?Q?MFxaH7DPicoRfOlP5AYnMc6LUPVQERrmLN5jzIDeynfYK/U9BVPA66q/VlV1?= =?us-ascii?Q?ranz6pQAK4OY+ZS+8eY3CIo0JLI9k3h3jn5CDHmjXkiWyaK2VMQfazgN2ueh?= =?us-ascii?Q?ol85mW/qZBqU8TEu8q+NP7kSa+eMmGZojqkoiPNB1yt3JMRyjGvP6ELS2CW9?= =?us-ascii?Q?ASm7YmnKCHWlpga+VJ3wMIiQQmLlqQ0ehBsdqTAa1rEmcXAZni31itLw1qzA?= =?us-ascii?Q?SR4EQiKqqhKzSXqqXaeVbSaqxf7Bp0ysLdD97g2gAQzoY01Ay+zgJRcUeqLg?= =?us-ascii?Q?W2AXpI9W69ZRt1jD1Ocu7Nf6v7uFF8hLWvbY6bKOjQn+oPlE1BBJxnxGy10k?= =?us-ascii?Q?j+gVjC2gDqZf2qfSmHjsXzohas4u4OO7fj+Ov+WRgiVRo0E2FMo3Z3kFs3vK?= =?us-ascii?Q?6+oA73QRWyqGMvthxbspFm5lYSqzlSUK+nOEwBSCNXU5F9rlR1hvzF5J3oIS?= =?us-ascii?Q?dh41PPztHY4ftOIAtIwmV3fpui/jKWkKkay0D8Xun1cQL9+YV3PmcPDG2TcU?= =?us-ascii?Q?SRYjNjRAaySH9hAoGo+YRaetmzQhHCbTbdm9wOUMLOYFRMWUPC00lCCtqFoi?= =?us-ascii?Q?wRwgbsZVFv/aNrdAq/4tgh6aprI6DfV45nK1qSqNrix8cY6IyFUccx+wpoVG?= =?us-ascii?Q?sgYFokpeq0pVEbpR3NqA+HELVgVEbHx3dULS/KYOSMoL/nyIQsWqGts54jAJ?= =?us-ascii?Q?CPaizFz+AMgX9gFy31UTiwSblHSQh1OxkAkQBTLJxkldPCGFRriIdUGJTKfP?= =?us-ascii?Q?WPFtw+qU2qHGomtb9rfE5pc0wyTgS4JFSsqYDkJHI2Al8Px07ug/c08McCCc?= =?us-ascii?Q?ecXW9V+FkvHt6CdbmEi0BUdDE8oGH4kiqDv32dlrXq7KDv7q7lWJr424arsT?= =?us-ascii?Q?xySMSPZub8GN0yvspmSYG6D4DeeFr4j9YXKZZIswJ767Z5fEqHWhDlHVpOjA?= =?us-ascii?Q?t7AVf3HTbmPDBnJgqybrB7nzNx9eJUarRLJaF8S+Q48kxUk/qtI15PQEP0nu?= =?us-ascii?Q?EcPnx7tWnejQc12DM6Oo3R6DnuYLiaatDzixmHXbD0jBkf7wRbxtDQcjmxhW?= =?us-ascii?Q?dzm8xVwwiTwuLTwo4k434wJ0O1lNa1Si8o6DH8Un9pNz2FzlB/e+gcBirt10?= =?us-ascii?Q?a7+VPw0jLZm0Uo+VEaD1OUK6RVbbL0BQ3Ox/CFvdLu2wc7KQ0jceMvEURLSL?= =?us-ascii?Q?1K/gNeTQgJCvBsGO6NeM0LhFQxgYuz4d+g6Jmfi?= X-Microsoft-Antispam-Message-Info: 3rrEtb4/CrPGACLhHKoDUHRcZv024cZkSV/vRkAFHvk3Si+GFIyhhvumEC6nD5Fjjyv4GVMw6r+zfepxsAWCxrNYLiTbleF9X4V8gw/l1QF+8+0IYG5wusVLhr62lflRdPHOCPx/6W8WHUdxfsHmK9Va72gp867Nl5VBfglyMzlr0+iXBv6CQ82o5gKIaS+S X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3116; 6:N6gNFDwORM19SDHOggYZ+yxxT9gOXj9/OLf2HAP6VxJlcjEIE+nU/fxOyWoj7sPTktHXlZmx5KI/cGYqynYct1Soh/UX6wFUdf8E1xlhNOlr/B90ScFQKiAZAK5HZzuqIyb18lWQrJbtVdafe5sj+cMcLtsRSgfPUfycez9NF/7Jj+DP83RX8/lKmCKaWEqvOcQgngHB/UhQjqGcmWeIqNBqaP1NNfF13AhlgD/kXpLr5kAzKNTOtKnjGd0fcrl5H181ajUm2IDZ+HyWskFfB6wHmEuBCyg+SRNJ9OmKGCF3cJw7RDaJ5qPNOi1E2+0iLyQUTQwSHfh5nF46qnuC5wJbbj0ycZB0NKl87GgLTr9Tm07DCIsjHRmI29oIW6VqGQhsWb6RoSBqhsJyfubkOfjAmXGkdb/FsqOYFoj+d6foEDmgaiBw1Sr436R1Mnp45vH0ErDTehpSdtNoVTtCLw==; 5:s5wBjG8J27h96EWWiL8t00Wwu05PPFIA0DJmUz6RBF2tza2ddmy+fw8m+XSnvOIuebDJyXpk6BskxZgkOgzWjBU04ckvsHdU0l9GihgfRLHk/eEQdCN4VxUgvXDjOxwr6od/8r724uR+lply8Umd+5XK+QrvsESOP/qnCySkYwg=; 24:v4ErJnwxyny6vDiw/Tguw3flPOqVbqScREsyTbQkcF7js+urTTX2hSfu3Mypg74OI28zgJPlxY3qfN800gwKo9PnEVvIu47L3SfcPcDGpks= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3116; 7:56TzCFnZ0FIYkkbJRwJNBYq0R4vzULpe6Ogi39UTzYtWcKkPj7Z9TZDvQIRazI0zAb46WUaSXj6cgrGSwj2XJ/gcIoUCbF6/T/B12xtODjKgdHPyOYTPtlYAHvG0h1WiHPPn6eEZ6XZOkEt6GEdz25bmDoHTP0vMPxBg5vqemiOkqJSHISTi4P6ULwna0bijjIlNYjKy07KthYJz9Zp58Zcm+JV821cuNhKjLYtS3cl5ZkBYKqMjGlnTtdFNBmMD X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2018 04:55:44.6130 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1a649f74-8014-447e-c266-08d5953154cc X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB3116 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180328_215600_341782_9841BA11 X-CRM114-Status: GOOD ( 13.57 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Zhao Chenhui , linux-kernel@vger.kernel.org, Ran Wang , linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Various e500 core have different cache architecture, so they need different cache flush operations. Therefore, add a callback function cpu_flush_caches to the struct cpu_spec. The cache flush operation for the specific kind of e500 is selected at init time. The callback function will flush all caches in the current cpu. Signed-off-by: Chenhui Zhao Reviewed-by: Yang Li Reviewed-by: Jose Rivera Signed-off-by: Ran Wang --- arch/powerpc/include/asm/cputable.h | 12 ++++ arch/powerpc/kernel/asm-offsets.c | 3 + arch/powerpc/kernel/cpu_setup_fsl_booke.S | 81 +++++++++++++++++++++++++++++ arch/powerpc/kernel/cputable.c | 4 ++ 4 files changed, 100 insertions(+), 0 deletions(-) diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h index a2c5c95..364e6cf 100644 --- a/arch/powerpc/include/asm/cputable.h +++ b/arch/powerpc/include/asm/cputable.h @@ -44,6 +44,14 @@ enum powerpc_pmc_type { extern int machine_check_e500(struct pt_regs *regs); extern int machine_check_e200(struct pt_regs *regs); extern int machine_check_47x(struct pt_regs *regs); + +#if defined(CONFIG_E500) || defined(CONFIG_PPC_E500MC) +extern void __flush_caches_e500v2(void); +extern void __flush_caches_e500mc(void); +extern void __flush_caches_e5500(void); +extern void __flush_caches_e6500(void); +#endif + int machine_check_8xx(struct pt_regs *regs); extern void cpu_down_flush_e500v2(void); @@ -70,6 +78,10 @@ struct cpu_spec { /* flush caches inside the current cpu */ void (*cpu_down_flush)(void); +#if defined(CONFIG_E500) || defined(CONFIG_PPC_E500MC) + /* flush caches of the cpu which is running the function */ + void (*cpu_flush_caches)(void); +#endif /* number of performance monitor counters */ unsigned int num_pmcs; enum powerpc_pmc_type pmc_type; diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index ea5eb91..cb4b869 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c @@ -351,6 +351,9 @@ int main(void) OFFSET(CPU_SPEC_FEATURES, cpu_spec, cpu_features); OFFSET(CPU_SPEC_SETUP, cpu_spec, cpu_setup); OFFSET(CPU_SPEC_RESTORE, cpu_spec, cpu_restore); +#if defined(CONFIG_E500) || defined(CONFIG_PPC_E500MC) + OFFSET(CPU_FLUSH_CACHES, cpu_spec, cpu_flush_caches); +#endif OFFSET(pbe_address, pbe, address); OFFSET(pbe_orig_address, pbe, orig_address); diff --git a/arch/powerpc/kernel/cpu_setup_fsl_booke.S b/arch/powerpc/kernel/cpu_setup_fsl_booke.S index 462aed9..e94eb41 100644 --- a/arch/powerpc/kernel/cpu_setup_fsl_booke.S +++ b/arch/powerpc/kernel/cpu_setup_fsl_booke.S @@ -345,3 +345,84 @@ _GLOBAL(cpu_down_flush_e5500) /* L1 Data Cache of e6500 contains no modified data, no flush is required */ _GLOBAL(cpu_down_flush_e6500) blr + +_GLOBAL(__flush_caches_e500v2) + mflr r0 + bl flush_dcache_L1 + mtlr r0 + blr + +_GLOBAL(__flush_caches_e500mc) +_GLOBAL(__flush_caches_e5500) + mflr r0 + bl flush_dcache_L1 + bl flush_backside_L2_cache + mtlr r0 + blr + +/* L1 Data Cache of e6500 contains no modified data, no flush is required */ +_GLOBAL(__flush_caches_e6500) + blr + + /* r3 = virtual address of L2 controller, WIMG = 01xx */ +_GLOBAL(flush_disable_L2) + /* It's a write-through cache, so only invalidation is needed. */ + mbar + isync + lwz r4, 0(r3) + li r5, 1 + rlwimi r4, r5, 30, 0xc0000000 + stw r4, 0(r3) + + /* Wait for the invalidate to finish */ +1: lwz r4, 0(r3) + andis. r4, r4, 0x4000 + bne 1b + mbar + + blr + + /* r3 = virtual address of L2 controller, WIMG = 01xx */ +_GLOBAL(invalidate_enable_L2) + mbar + isync + lwz r4, 0(r3) + li r5, 3 + rlwimi r4, r5, 30, 0xc0000000 + stw r4, 0(r3) + + /* Wait for the invalidate to finish */ +1: lwz r4, 0(r3) + andis. r4, r4, 0x4000 + bne 1b + mbar + + blr + +/* Flush L1 d-cache, invalidate and disable d-cache and i-cache */ +_GLOBAL(__flush_disable_L1) + mflr r10 + bl flush_dcache_L1 /* Flush L1 d-cache */ + mtlr r10 + + mfspr r4, SPRN_L1CSR0 /* Invalidate and disable d-cache */ + li r5, 2 + rlwimi r4, r5, 0, 3 + + msync + isync + mtspr SPRN_L1CSR0, r4 + isync + +1: mfspr r4, SPRN_L1CSR0 /* Wait for the invalidate to finish */ + andi. r4, r4, 2 + bne 1b + + mfspr r4, SPRN_L1CSR1 /* Invalidate and disable i-cache */ + li r5, 2 + rlwimi r4, r5, 0, 3 + + mtspr SPRN_L1CSR1, r4 + isync + + blr diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index c40a9fc..eec3ca7 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c @@ -2100,6 +2100,7 @@ .machine_check = machine_check_e500, .platform = "ppc8548", .cpu_down_flush = cpu_down_flush_e500v2, + .cpu_flush_caches = __flush_caches_e500v2, }, #else { /* e500mc */ @@ -2120,6 +2121,7 @@ .machine_check = machine_check_e500mc, .platform = "ppce500mc", .cpu_down_flush = cpu_down_flush_e500mc, + .cpu_flush_caches = __flush_caches_e500mc, }, #endif /* CONFIG_PPC_E500MC */ #endif /* CONFIG_PPC32 */ @@ -2145,6 +2147,7 @@ .machine_check = machine_check_e500mc, .platform = "ppce5500", .cpu_down_flush = cpu_down_flush_e5500, + .cpu_flush_caches = __flush_caches_e5500, }, { /* e6500 */ .pvr_mask = 0xffff0000, @@ -2168,6 +2171,7 @@ .machine_check = machine_check_e500mc, .platform = "ppce6500", .cpu_down_flush = cpu_down_flush_e6500, + .cpu_flush_caches = __flush_caches_e6500, }, #endif /* CONFIG_PPC_E500MC */ #ifdef CONFIG_PPC32