From patchwork Fri Nov 10 06:02:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar Kushwaha X-Patchwork-Id: 836619 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3yY8cJ62jBz9sRg for ; Fri, 10 Nov 2017 17:04:00 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 77945C21D7E; Fri, 10 Nov 2017 06:03:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id CFDE1C21C57; Fri, 10 Nov 2017 06:03:46 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 57ABFC21C2F; Fri, 10 Nov 2017 06:03:44 +0000 (UTC) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0070.outbound.protection.outlook.com [104.47.38.70]) by lists.denx.de (Postfix) with ESMTPS id BAA20C21C29 for ; Fri, 10 Nov 2017 06:03:42 +0000 (UTC) Received: from CY4PR03CA0090.namprd03.prod.outlook.com (10.171.242.159) by BN6PR03MB2691.namprd03.prod.outlook.com (10.173.144.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.197.13; Fri, 10 Nov 2017 06:03:41 +0000 Received: from BL2FFO11FD033.protection.gbl (2a01:111:f400:7c09::165) by CY4PR03CA0090.outlook.office365.com (2603:10b6:910:4d::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.218.12 via Frontend Transport; Fri, 10 Nov 2017 06:03:40 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; 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 BL2FFO11FD033.mail.protection.outlook.com (10.173.161.129) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.178.5 via Frontend Transport; Fri, 10 Nov 2017 06:03:39 +0000 Received: from VirtualBox.ap.freescale.net (B32579-16.ap.freescale.net [10.232.40.241]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vAA63b5M006451; Thu, 9 Nov 2017 23:03:37 -0700 From: Prabhakar Kushwaha To: Date: Fri, 10 Nov 2017 11:32:52 +0530 Message-ID: <1510293772-6473-1-git-send-email-prabhakar.kushwaha@nxp.com> X-Mailer: git-send-email 2.7.4 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131547674201177273; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39860400002)(376002)(346002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(8656006)(2906002)(47776003)(86362001)(50226002)(68736007)(48376002)(50466002)(33646002)(8676002)(5003940100001)(305945005)(104016004)(81156014)(81166006)(6916009)(50986999)(356003)(36756003)(8936002)(2351001)(53936002)(106466001)(4326008)(16586007)(316002)(5660300001)(189998001)(54906003)(97736004)(85426001)(6666003)(498600001)(105606002)(77096006); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR03MB2691; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD033; 1:B1Z4140AnwbgUg9Toh99oPiXyaTSf6Vs6VPAHi3EkO1bm5oGFdlqlLgC++WkZiH7e33lAbAC5TfVUcAvT/oqzl8uq9saTmtwUdceO1rAzFVQv6/8twuDZQu/uNSwj4ds MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1f47e589-6bff-4d91-79f7-08d52800ca3c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4628075)(201703131517081)(2017052603258); SRVR:BN6PR03MB2691; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2691; 3:qtNDPYtlk8DocWf8utPhYlEdEdoEu4fpByBTwgYoxpkYG6rCiujSA68zAiHV3JbA6O67EyFERcD/7Vj29o3qS/LWmbQop8BahoZmA41y/gJ10Xt/w+hnI39P5yY+VD/zRsA+tr0CVdg+EECNCcX6ZytCJLKfTBIAB2c31RuNIxDQehZ0rPxX8sIvraZalAcALHWWOrSmkniGJTv5UKHYx9wlOBNpj+LYtQJufF6JNOJTf3tPN+mOX0vgVH5duECDBQx51thX559Qtc3roAPPuND4lkAcT0sDLgoK5iITUrk+fIfIH6aZTU1oT/Kdnbf8n595HOS3eKj5MqaClJXRpNqaDp7Cmw2eEDLYtOAvw68=; 25:WgDE/CZOIz2DN/4Qd6caCXxBspol6wJNNJar/HvHO7oROZXEjLRvojDl7ApzQrnlcJfi21m8LswPn68SFafN55kK3j/okCU3nP822cFdGGklp/SURezH2w16sDNRbpxDtAH3IlZVFVL5GDqXMhFtDHyS8xbyAAdi+PUqqIYRFs0bEx7iijA4GtNOyf/Kx7Pyt8tpZWhEbeXkm0XpXHA56D9h9JReV889SkjWzSDC5WQiPrMNLNkygajCAkr/ykOKTP14MpdUGVBzlj5TOuX3u88CdI1YfwBpuY7o9Yrvj+IB+mUp2AWIjbcn4pbJIvxOPALhykbNOvGqGsDscQ7W1w== X-MS-TrafficTypeDiagnostic: BN6PR03MB2691: X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2691; 31:H8q5VqjQ6syeNfJdGAR3Xi9sEY+sQO/tSsjeAlsDdVSLasrEj5rfLNRPdPuVv0xbtvkJdrTpDvbutcExkSMq2mNrFk2YSafUum0pIYkWV7b05vghPbTT72c7hrcf+N4mGTBONfHoD4s6cxUFQpMx4f0sFASjjvCszlPF51aHquCgwshPwRuW/OeA3LLTEwCYgGNlB6i/O5MeRmi9VTgReN9IVI2TpS/Sox9jbRuU7gE=; 4:y3BbHYLy5nkgEAZNGWdXkSnm4uHWhp/wr1FyyHvoPwwwbypjgtyZuTh/sB/ra0LrscICLqzdOf968Oq7OuXRZCn38xh93bIiSG73aGDuaaRJnCy79OoEfld2lQPGYGoD0h00HB0CCiudQ2xJ/OvM7EhqYiLTwLLvFjj2bdOZDjZdh3roZ6uwDZzq6PmvnjFcP9DjcV6jVvjV2al2uzghwmhIFc0x90ch1A0f997S6Ses4QcTcGZVuQv336vBQbNDA8rvOVKxytYgIFKxRBnE+h70/11JQGQ4KBEG0cbZnUFYQMkJ66MC/mwux3/bgI2M X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(3002001)(93006095)(93001095)(3231021)(10201501046)(6055026)(6096035)(20161123559100)(20161123556025)(20161123565025)(20161123561025)(20161123563025)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR03MB2691; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR03MB2691; X-Forefront-PRVS: 0487C0DB7E X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR03MB2691; 23:RBdbyHpEdBxS30QNwptVFFOI0fyUOTgLetm2zXhqM?= kc+iGnBjvuvGvi9/De/gKc+WbBwJQKqhPAw2dCWjnnyAwQqcYlkcWY1QyxAKYmaA8zay0WKzRXuhBcKatBHclVJRapgBG9Y9XXzXXtQxLTChOZ3DLSPgNN7BxIN3dHUgK/L1vrdukf/VyriaO7Lu1F4N3+AZR3/J8Nsajw89Yp5G08VxQm82M5PeY3MMoSRZp7x4fzVZNff/0hDgrd3hZvtrxT+CrcmyL4GegvCCwOuuV1ik8y7cwN1AWYt9S4TyTNlETDZrHvhrZGeAKSvfiRwY1/H113zYA+QimYuOulRgne/B0kHkRRh+Pf1aETISIRjBisouQJEJTJIuLgR6T45FZnA0yThSwCjzw2oBsfpy2xhMMkJdJ1YIkN9bG4U/U1fhN8sUAOs7MboQlyaZoB91MCKJxbeZTEDZIXIUUvPbHUIkwhXbguphRVOOn4jbbt0JRL86FnP993yXLaaIbrUQN9Ev/pHQV8P3seIxtnmRcfYc3ESlWczQecAqQNwmRfksjyGayd9/EY91PqCznpx+8DyKmq7xxO8p0CZu+Ljsrd6qlWNNDVIQSJM0klVHjEwRGBFpeuNGE0L2F0EPYjBXCA4+n4lpWKP/OitQx9heQ30IZVzIAtvVvU/A+zigBBEZGVscOyUMm8hPty2F1744Sh/Kob6KscuEH535p/PrUch1EGx33+K4aJtskS6hpOMai5Ai020PcePU+gOpoq9/q/W+TySrZEoqQc+87oOqgk13camza8AjwrMxMit8DeumytQrgd82cGINWxtbO6a9cS7meinPikl2of9z/XkwPiiOra0Kk4t7o6DJms7omHymIc3UFy6jfzgkgjsQmn2IdQXgbyMm5ci/ySYXTCYgmRNt+6Gjnr34nRMInUgYZuiMCGU/O7Dkm0JMdGkeACYwjQV2pTJunqtM8SaZEOMNnQOYbR7KcEWmuXI5pVBqQPvStXH7fiO4k/tsAgxBQPqw7jOsfL5ud5hi2vtfNkV07UBaDLsX5fkmrFslbecSNxgc9CN+mGsGThWWLbqQBjFo1S/5VFfT80iCoRLeyTaSqD617mrkjyWb9IUHgm6tHg= X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2691; 6:zd6eb67VNrTvAF+t12byM54Kn2LPlYqBRQoq/pYJRqb4qKZdsakNoMgyg9Wd7JeZsEiu+5NNzV8MCOVamY4T3ROC5bBhXvLhURSfTKeE2jtnTCtt2+oVGi09rkiY1yVfAkcDFq5wmH+wYLgct3kOUo1yHOy46pIsmYwIhy+W8MXZxT1/RTaMAicbBncIVWbsQUs5agWkKx0x4ON+pEF1tdsmCGospTmzhScgsO9Mfat/EW4iYeBmB9OIXjV0WIZGDshDtKn1EnzY8KoIj/kMHrfllrWvjFda+rEVpc6BRScKDTITa3E2K70mkn83ODCgGixjtlBFCB93xnF0+kl366uB/hHnSscbsImpFaEeo14=; 5:QxlLO8txD2hPP/ilVllMHbRxRIMOkiDiBCXjk5b8nAUUzyo/8hilwyvjlXHfUhQIOCiFHId0xVMSPftTXHwoyawLfmMip4l42rQLYoS+aGfpoIlavnTie1NmUaZS6RjHHoEZ3x/XC+NOz6L6ScM0f7YD+b7jw2Jstg3ao3bo3PQ=; 24:8i0CxafDfKv6uGPH2Nk63OJnv206Oi9ohZL59rNw03+m+fzVkkdjoelrRwTSjA1nf+b9mG6xbcep+2kDzIK7lyEkYQdxpyH9kC97+xZzioo=; 7:ZfLN/TLtbh5vkjGUSLSsSiJDUyUL6unjGZ6U2q72R/exuLDb5/7BePJjb/dPmLU2km0/qnm14cu0VoHcv1ZFejcf9qSsSZTYXhwF3FTTOsAoFRn4ldKKZx1dHJ9+4lXk+dLo2qbkDUnvykr+tm+VcYNvDFhmPCmqsuIZtiO8iPlCmgYyQ14aEAED/LTdTbFsfLcRkBZIsrywxicqtdt0q5UQb/Nntbb9px7wy6lLI1lRcoGaW5jJH6Dk6/ZsS5t4 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2017 06:03:39.9305 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1f47e589-6bff-4d91-79f7-08d52800ca3c 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: BN6PR03MB2691 Subject: [U-Boot] [PATCH][v2] armv8: fsl-layerscape: Add support of disabling core prefetch X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Instruction prefetch feature is by default enabled during core release. This patch add support of disabling instruction prefetch by setting core mask in PPA. Here each core mask bit represents a core and prefetch is disabled at the time of core release. Signed-off-by: Prabhakar Kushwaha --- Changes for v2: Updated README arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 38 ++++++++++++++++++++++ .../armv8/fsl-layerscape/doc/README.core_prefetch | 20 ++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 arch/arm/cpu/armv8/fsl-layerscape/doc/README.core_prefetch diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c index ab5d76e..d082629 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c @@ -29,6 +29,7 @@ #include #endif #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -494,6 +495,41 @@ static inline int check_psci(void) return 0; } +static void config_core_prefetch(void) +{ + char *buf = NULL; + char buffer[HWCONFIG_BUFFER_SIZE]; + const char *prefetch_arg = NULL; + size_t arglen; + unsigned int mask; + struct pt_regs regs; + + if (env_get_f("hwconfig", buffer, sizeof(buffer)) > 0) + buf = buffer; + + prefetch_arg = hwconfig_subarg_f("core_prefetch", "disable", + &arglen, buf); + + if (prefetch_arg) { + mask = simple_strtoul(prefetch_arg, NULL, 0) & 0xff; + if (mask & 0x1) { + printf("Core0 prefetch can't be disabled\n"); + return; + } + +#define SIP_PREFETCH_DISABLE_64 0xC200FF13 + regs.regs[0] = SIP_PREFETCH_DISABLE_64; + regs.regs[1] = mask; + smc_call(®s); + + if (regs.regs[0]) + printf("Prefetch disable config failed for mask "); + else + printf("Prefetch disable config passed for mask "); + printf("0x%x\n", mask); + } +} + int arch_early_init_r(void) { #ifdef CONFIG_SYS_FSL_ERRATUM_A009635 @@ -521,6 +557,8 @@ int arch_early_init_r(void) fsl_rgmii_init(); #endif + config_core_prefetch(); + #ifdef CONFIG_SYS_HAS_SERDES fsl_serdes_init(); #endif diff --git a/arch/arm/cpu/armv8/fsl-layerscape/doc/README.core_prefetch b/arch/arm/cpu/armv8/fsl-layerscape/doc/README.core_prefetch new file mode 100644 index 0000000..85cf6ab --- /dev/null +++ b/arch/arm/cpu/armv8/fsl-layerscape/doc/README.core_prefetch @@ -0,0 +1,20 @@ +Core instruction prefetch disable +--------------------------------- +To disable instruction prefetch of core; hwconfig needs to be updated. +for e.g. +setenv hwconfig 'fsl_ddr:bank_intlv=auto;core_prefetch:disable=0x02' + +Here 0x02 can be replaced with any valid value except Mask[0] bit. It +represents 64 bit mask. The 64-bit Mask has one bit for each core. +Mask[0] = core0 +Mask[1] = core1 +Mask[2] = core2 +etc +If the bit is set ('b1) in the mask, then prefetch is disabled for +that core when it is released from reset. + +core0 prefetch should not be disabled i.e. Mask[0] should never be set. +Setting Mask[0] may lead to undefined behavior. + +Once disabled, prefetch remains disabled until the next reset. +There is no function to re-enable prefetch.