From patchwork Fri Jan 22 10:42:55 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ruchika Gupta X-Patchwork-Id: 571680 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id A26001402D9 for ; Sat, 23 Jan 2016 00:03:15 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 9D2344BD53; Fri, 22 Jan 2016 14:03:08 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DGzaHkUdPeHl; Fri, 22 Jan 2016 14:03:08 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2F1104BD68; Fri, 22 Jan 2016 14:03:07 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 50A6A4BFC7 for ; Fri, 22 Jan 2016 12:18:18 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b967zi8QD6Li for ; Fri, 22 Jan 2016 12:18:18 +0100 (CET) X-Greylist: delayed 1961 seconds by postgrey-1.34 at theia; Fri, 22 Jan 2016 12:18:06 CET X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0089.outbound.protection.outlook.com [207.46.100.89]) by theia.denx.de (Postfix) with ESMTPS id D7D2F4BFC1 for ; Fri, 22 Jan 2016 12:18:01 +0100 (CET) Received: from BLUPR03CA012.namprd03.prod.outlook.com (10.255.124.29) by BLUPR03MB360.namprd03.prod.outlook.com (10.141.75.155) with Microsoft SMTP Server (TLS) id 15.1.365.19; Fri, 22 Jan 2016 10:45:18 +0000 Received: from BN1BFFO11FD040.protection.gbl (10.255.124.4) by BLUPR03CA012.outlook.office365.com (10.255.124.29) with Microsoft SMTP Server (TLS) id 15.1.390.13 via Frontend Transport; Fri, 22 Jan 2016 10:45:17 +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=none 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 BN1BFFO11FD040.mail.protection.outlook.com (10.58.144.103) with Microsoft SMTP Server (TLS) id 15.1.355.15 via Frontend Transport; Fri, 22 Jan 2016 10:45:18 +0000 Received: from perf-idc04.ap.freescale.net (perf-idc04.ap.freescale.net [10.232.14.49]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u0MAjEHX031033; Fri, 22 Jan 2016 03:45:15 -0700 From: Ruchika Gupta To: , , Date: Fri, 22 Jan 2016 16:12:55 +0530 Message-ID: <1453459375-18606-1-git-send-email-ruchika.gupta@nxp.com> X-Mailer: git-send-email 1.8.1.4 X-EOPAttributedMessage: 0 X-Matching-Connectors: 130979331186412185; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD040; 1:LrWsHu4dNGdsW+vh1AxKDA8C9CsMJfewI6p8VdusItoZFw7m9r+HhUjqUjNB2iHH3iXkCM8C/p5/lqrFMp4XyBuu3mGrr/pAPZ+opNGsP9J/PIiHPooLLBIfXlBYQwaIepzIQykWV7nwm/tmVAUlFSfEmNijpi+LPyJM21nYVk+Le1XTxJs5VPDQbpMTMnq8oBMFPnOJVfQefi4yftPHDpBRGbZ7eMFCMcf73Nyrub1UPWf6mgkMV9CoqSVkRJw/qV8MS0qTiiJFfH28cyNSia44Jetx89VzA7w97GQDNGRiVPP1gji3og+DjHAU7NGUiWmH6d3OIbgIzmbgr10beCCodXoR1Gqqenx75iGh4x57pW79CxaIfvVrq3AZ3aTMohIsrzB/Zp3PHBGnWp+tE7JPIMFPHZAJAGAPtl4EROf8l5OFwMVQvA01S6Vk7zfpEIn3/CbcdiWrPnxVCNjVv06BWp5ezWfUwovOQkhDgLeGkoun4+pFbb4D1yXyHk8+PyzwCQ38DQPKkhzWd8B8pUS0tziEHzjr8fKBCHbxZ+JuLAD/pyKuHI6y8slfPI+xWOR4O32gTAVfE0z8AHfDTe7MIT4mHxhjoj3FZotlb6U/jmwaQV6d4JHiMd0jeD9W X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(85426001)(6806005)(2906002)(586003)(19580395003)(4326007)(5003940100001)(5008740100001)(81156007)(104016004)(2201001)(5001960100002)(36756003)(5001770100001)(1096002)(106466001)(50226001)(19580405001)(77096005)(87936001)(97736004)(47776003)(33646002)(1220700001)(48376002)(105606002)(189998001)(229853001)(92566002)(86362001)(50466002)(50986999)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR03MB360; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 2318c241-9ae3-4822-ca99-08d323191ebf X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB360; 2:Y456WHt3LvB9x31QDb8vANmxFTYr7zKDm84d8G+Mmet+/ASsZczfeA7gkNOdyGn6fofdICw8ASMkCC9RKZUBKQtP1+sypVX/fipqgMNeUWKC375NSmbttgn78Z0usroilQWI0muP74DCFd00F2PvCi0vsprwSsrmxVrHrmuoyXYIsAwUd5hPCcIKbUULWLyu; 3:kjaqjenj+8ZyCCUTscmqLDPeAMBJmshv/WxIqPPjrNvWrOZeeGqMUkl3BeUCIOKB+H3HJa1p7hZs1hdF+O/pA2HqZyN5G18PqDhl8NXfsZVwtR97UMDwVURdNGyOIVSK/wkAAXgKuG29RI861E7TqdXhRCUEye3mGdL3pbc3rAipW4+5drARsVrtY5Y8hd5HfcVFLaCfQNCOJcmiCYagFPP/nnNFDyP9Ttx08BD3UWI=; 25:1G5Um/aCS0vD+8FPmxWZhAd6+9tmhhgvl9vyBp2cHx0EHhcBD+1d2XHB9Q1RO1x/PE6DIM113B9qQ0Xe0BlhI3MKrxcASELwjQD13LskoGDvT6mshQpC4djvAhMbUf/ttrwXS+932vBWju+Hr3abaUk0EqrIilhQF4C7dyyOzOyYpP9ayjr/hVIFnPcEP241iHpWv2dLyG8Lxn++EvoTGghQJ0D1hf9SbLcaZg9sX2lCzdLNAIKG1uC03X2Cm0ra X-Exchange-Antispam-Report-Test: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BLUPR03MB360; UriScan:(185117386973197)(101931422205132); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13015025)(520078)(13024025)(13018025)(13017025)(13023025)(8121501046)(5005006)(3002001)(10201501046); SRVR:BLUPR03MB360; BCL:0; PCL:0; RULEID:(400006); SRVR:BLUPR03MB360; X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB360; 4:JJ0r25TJ37qKzSAJvWBTU0gmBuOoTCaYf6IKM34aDwdn1ZDLuX2kwwv43uwQfpuncluFJreM+XHhNpKTvxzjXkgC7k2SPx792e+3H+tLEuQdY7dJQRV/LgQaGOhZsKJ9FqmcoJQ6YMRIXTkkZfF/nntheJYE8xZI9W34xAeHag+IcA0pgPdMJ1/o+fQLxX7Tn+XIVC4N4NWkxKDF6DAELtFMRzPcKCG/sKwnTFnnKqNNA24Cey+gPYM3+QpVtL1scs6Hp95y7xMARgJFC7WcMnXTB657EuUpNe6UxaCU5A1NuJzZihIUqvx1L4nSDxg4ygvajmya8ZK8GIA4arXli5j2Fn2SSFeawgGKBXR0bizwssluCuhWMckeVbbEZ5a8IBxv14ze1flybJPIRWi8eC8M3H0clveQKrCowSrzgaSSbtpUfLmJ3v25tGvRW+7Rmb0y/yC5BB0CnyyhawFLpmOcvBB0eS6DGfsFHBdcmwko/zbKddh5bQPGlbU6NjGxpcvPMgaUIBKAtUHo/7QKzEPgQRMhB1KXsnk+ZgPkrLRmgwTVr5hJnAHTmqhALkga X-Forefront-PRVS: 08296C9B35 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR03MB360; 23:kwR3CLJfLpN8j1aOs8uGZAwJnyinotmCGvw6Dnejvc?= =?us-ascii?Q?NA7xcremBQEJMbcp3YqyeP4G1Fl4x8gnqJqH1ygcMZyu9Qfbgua7RfRn26JX?= =?us-ascii?Q?82Gn5xKx9mRUMrCqk+62AKn4v2LKAXT4NVyLtBRS3bx90GvmPaWQKeBOKPQk?= =?us-ascii?Q?KaqBX9vKJRVmogykz5qwKJxaAd65qh+4A++mFvmWGZS581EnYZicgLNdWMPm?= =?us-ascii?Q?FWBpRw7V32OBzmLOGfRJs13f/tyKwRuWmhy3p2r4WLwcyQ9QHB+6LSRLVKkL?= =?us-ascii?Q?DvM0ayzYUmb+46Xm0eaRdo7nBAI1N73lsoA3iDQW/Y9//0BUrtwIRuIT1uc4?= =?us-ascii?Q?aZBlgwuhWWpAnPo+CruZXz7P35Nf44KfKECWDgWhnQ0To1Aa1QB//VXKnYq+?= =?us-ascii?Q?2RM4vyLMDEiq8d3L+qp3vNzABVmdTg4vFAqPTkhlRb/GfhBaVFqZW/w/pyjd?= =?us-ascii?Q?q3j0/GXywQhcqXisrZczAvjAgcP19NZGy7KTNvAnTqqB6VaUBz5W49jAQEwZ?= =?us-ascii?Q?uwgiOgJMN1/uHrg29Zwvn3anpnC+EukjLEvUShP29BGKajN9Vx5ZukErLuoa?= =?us-ascii?Q?bmnGcS6uDEN5EpblGzeWpzpm+dW2oNRXQhi2ratejiL22LGGpyAa7rjNN7V8?= =?us-ascii?Q?xWX8/w50Y72zby98LLGbvhsTD3oOjeOCAVrfv/wt31jicqtdA2k38qJehuVq?= =?us-ascii?Q?OP85MpUThTQj7ZIUiJOuz9DUN5qn3cuiZtgXbS1gAvMuxh9pi9IobOlFvJNX?= =?us-ascii?Q?arvm34HnGVaIVGGiAO2JbrLFNRCyqWbvG9PVngv9h/uphjSpQ/R5ldJJT0cZ?= =?us-ascii?Q?c2OXEyglAc89b7+QQWbHMWwjBH4SLPtXiS08REPMlyEtVfeE5kgitKcMTkNn?= =?us-ascii?Q?a42qihN4Vg7weKYZMrbw8FMjEQW21RsmylgiflhROUInYsttjk8zkF09DxWB?= =?us-ascii?Q?cMA8cDsFlF9dorK9U3Bi0aueFQjQevDpe40T7DKpQSXiRW28LLDjEbbowvqD?= =?us-ascii?Q?Cd9e+DZN2tOJg6RKp9VhYEXbCkyJNDTg4XKiizPDD45YsfXVMRRULS6KnKz2?= =?us-ascii?Q?oR3zc=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB360; 5:8Pcxv2SKBdk+/1Ahu7EqG7ggaKdmnWNYRGyrE2kdc19DGRL2HOvEN8B0z4rqHu6JBipPbjBI7uf8ES81yc0d8Kov6UNW7g6zXqDj1zncCnwgCrsH/AOPfQAZOELbTuBrB3eJ51beJuUiqXUgTF7T6FTm7h9asEFnhF0u4JPGsA0=; 24:V/CpVmMkNahMZAzQr+tqfllP0KxBR/aCIccNeR+8XjO4h0zr70Dq5P2F7eXULL3FYv2meXh59jqQil/MctGGSZ5YdIYZWtoSKxRA75Sjdhk= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2016 10:45:18.4696 (UTC) 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: BLUPR03MB360 X-Mailman-Approved-At: Fri, 22 Jan 2016 14:03:00 +0100 Cc: Saksham Jain , Ruchika Gupta , Ruchika Gupta Subject: [U-Boot] [PATCH] drivers/crypto/fsl : Allocate output ring with size aligned to CACHELNE SIZE X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" From: Ruchika Gupta The output ring needs to be invalidated before enqueuing the job to SEC. While allocation of space to output ring, it should be taken care that the size is cacheline size aligned inorder to prevent invalidating valid data. The patch also correct the method of aligning end of structs while flushing caches Since start = align(start_of_struct), it is incorrect to assign end = align(start + struct_size). It should instead be, end = align(start_of_struct + struct_size). Signed-off-by: Saksham Jain Signed-off-by: Ruchika Gupta --- drivers/crypto/fsl/jr.c | 28 ++++++++++++++++------------ drivers/crypto/fsl/jr.h | 2 ++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/fsl/jr.c b/drivers/crypto/fsl/jr.c index b553e3c..4566ec3 100644 --- a/drivers/crypto/fsl/jr.c +++ b/drivers/crypto/fsl/jr.c @@ -95,14 +95,16 @@ static int jr_init(void) JR_SIZE * sizeof(dma_addr_t)); if (!jr.input_ring) return -1; + + jr.op_size = roundup(JR_SIZE * sizeof(struct op_ring), + ARCH_DMA_MINALIGN); jr.output_ring = - (struct op_ring *)memalign(ARCH_DMA_MINALIGN, - JR_SIZE * sizeof(struct op_ring)); + (struct op_ring *)memalign(ARCH_DMA_MINALIGN, jr.op_size); if (!jr.output_ring) return -1; memset(jr.input_ring, 0, JR_SIZE * sizeof(dma_addr_t)); - memset(jr.output_ring, 0, JR_SIZE * sizeof(struct op_ring)); + memset(jr.output_ring, 0, jr.op_size); start_jr0(); @@ -190,8 +192,8 @@ static int jr_enqueue(uint32_t *desc_addr, unsigned long start = (unsigned long)&jr.info[head] & ~(ARCH_DMA_MINALIGN - 1); - unsigned long end = ALIGN(start + sizeof(struct jr_info), - ARCH_DMA_MINALIGN); + unsigned long end = ALIGN((unsigned long)&jr.info[head] + + sizeof(struct jr_info), ARCH_DMA_MINALIGN); flush_dcache_range(start, end); #ifdef CONFIG_PHYS_64BIT @@ -216,11 +218,19 @@ static int jr_enqueue(uint32_t *desc_addr, #endif /* ifdef CONFIG_PHYS_64BIT */ start = (unsigned long)&jr.input_ring[head] & ~(ARCH_DMA_MINALIGN - 1); - end = ALIGN(start + sizeof(phys_addr_t), ARCH_DMA_MINALIGN); + end = ALIGN((unsigned long)&jr.input_ring[head] + + sizeof(dma_addr_t), ARCH_DMA_MINALIGN); flush_dcache_range(start, end); jr.head = (head + 1) & (jr.size - 1); + /* Invalidate output ring */ + start = (unsigned long)jr.output_ring & + ~(ARCH_DMA_MINALIGN - 1); + end = ALIGN((unsigned long)jr.output_ring + jr.op_size, + ARCH_DMA_MINALIGN); + invalidate_dcache_range(start, end); + sec_out32(®s->irja, 1); return 0; @@ -241,12 +251,6 @@ static int jr_dequeue(void) #endif while (sec_in32(®s->orsf) && CIRC_CNT(jr.head, jr.tail, jr.size)) { - unsigned long start = (unsigned long)jr.output_ring & - ~(ARCH_DMA_MINALIGN - 1); - unsigned long end = ALIGN(start + - sizeof(struct op_ring)*JR_SIZE, - ARCH_DMA_MINALIGN); - invalidate_dcache_range(start, end); found = 0; diff --git a/drivers/crypto/fsl/jr.h b/drivers/crypto/fsl/jr.h index 5899696..545d964 100644 --- a/drivers/crypto/fsl/jr.h +++ b/drivers/crypto/fsl/jr.h @@ -72,6 +72,8 @@ struct jobring { int write_idx; /* Size of the rings. */ int size; + /* Op ring size aligned to cache line size */ + int op_size; /* The ip and output rings have to be accessed by SEC. So the * pointers will ahve to point to the housekeeping region provided * by SEC