From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752502AbdC1P1o (ORCPT ); Tue, 28 Mar 2017 11:27:44 -0400 Received: from mail-bn3nam01on0055.outbound.protection.outlook.com ([104.47.33.55]:44640 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751466AbdC1P1k (ORCPT ); Tue, 28 Mar 2017 11:27:40 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=amd.com; Subject: Re: [PATCH 2/2] crypto: ccp - Mark driver as little-endian only To: Arnd Bergmann , "Hook, Gary" References: <20170328095814.3734615-1-arnd@arndb.de> <20170328095814.3734615-2-arnd@arndb.de> CC: "Lendacky, Thomas" , Herbert Xu , "David S. Miller" , "linux-crypto@vger.kernel.org" , "linux-kernel@vger.kernel.org" From: Gary R Hook Message-ID: <5747ae06-9641-613d-d8d0-dd9ce3f68af8@amd.com> Date: Tue, 28 Mar 2017 10:26:50 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR13CA0009.namprd13.prod.outlook.com (10.169.208.19) To SN1PR12MB0477.namprd12.prod.outlook.com (10.162.105.146) X-MS-Office365-Filtering-Correlation-Id: ad48fd9e-677f-4556-a344-08d475eee054 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423062)(201703031133068);SRVR:SN1PR12MB0477; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0477;3:BnXFOlvpBwD6wWaI9AgbU83iCub97kUJQhqaqiw8YNubTmrKtMXuIDc2AClHLTOqaikwNiUcu4pXjLsYWBhKKCMzHOgDWc7cBBsXgxcA9y9HQOadz9hntBpipEACgGVcZlnH3d8MC7XmfVf0xjpA0lzyrfSy4tefqHa4Fn5Hoz3l1zU7JpSXZ3expz8KFTPigW7ORyWa2c2e9JikKAVCyt3rtxLVl9gCuPd/9xe3msiJZLwB3QGiD8XEITROAokxGjTuhVHPNqDLcoFBhhmFD0pwY3BJNRQPiXJyFCI6M3IxGqroAbWccseRXjGW8eQxbgZns94vTZyLy4VL2ePO5dEKsxIAsAm2BBurTZuvF3A=;25:BqjVxZv2aDbDFrahggqx7yxyKcPEd5APRyuTqe+Cl1taGPodmdzTdrh9ruxOimIaOmV8GePowtM2coEH93Zzb/o8AfibxhlBx7A1/K87Jl0vJHF7g3BVVS2hyPv3p3rYDXoQrlgNSFd4Kg4QngWIgo84clIff1P//BPbWbTR0ycNtG9Rq+FXSxWQXK9+DR+UtQ8m/FYBtKXzLOLBbV9m0eECF0MyeMUpH4hczPAlA146wkZc8Uy3vljCltLLy6mRcMu1rog9NnHzxuVuxyr9kHeJ9DXESzPkgpVrNc+WqTjcXE4uJ6e5gV8kiSZr6ftv1Gevva2SsTDS1LHv0vYLG5jpnGUzENTb6T001gwVAvrVdMpk6z/pvZmLeUYU6yySyfeUIxOI2izVuAztSKypSsmQLRjprKjMPJUMkSf4KsinM33w/oFzqePhA6pgofMX9+OqAQEUBabQArooRazepg== X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0477;31:z83VoKIBw+tzcf3VxBG45q2765zmhCA5XcZ/jBytCFkJ4KyHiBBBP+ecV70p6UaEAMIzN5FJ2x3k0CpaS5CX8XandKzmJbcMyqaStFo9Uh9hs5wJZw4/WwJ3BEgXhlDGoKlZxvyNQ5Z6eeFWhjdXvl9rncDNZDQ2pGWkIA1bwHDknNZXy+SKmcY8LiqqxkihB4RM1Zi3pQoJdNQx0sOdrjrqv/FY61ow0IMi17j7yRlUhu4o+Qi4JfEeTxWilBhX;20:MwDwcjBh2dLN2Xw2b2lPE7J2T7f4n1uZTXXogT4FGIT2+Ww98HSKJmxXpwf+u/M6bVqLSgO6qnPXUjeMyK5lSgpEvpIzNOPKNGIOpqjydnxtaOSAQeOT6RUog/62s8u2SblBm7BUNI19i13He+UDbWOk+3Lma33KI+t5hssiEssZbPrvno+iWrF30o7NL7VgCrSBUtVQZUf4WPQ21H6cFEZ5XDikkUkQFhpPzT8lpVoYhwofMbr0ypygXDNWpOs/gq/z4zZ5BfDklLCcUfqhc8t3JSPnIcAv1da88d1NsQ2X7MQZeJOTmlqBZ3qvClV5DQjX7DSpa0eBu522OjubofiNJ0ETywvCd/DMSjj6/K9LDOSl9exXv6m8jfJCD3l4QlBpOXHOlVvregnrmJDRhpZqB/QFrJeGZjMnB4yg7MSjrs3Kg2X1F9z/RBQXptqvR/yFPbWVyJKacvi51pC380KjMagHWLRPuC28TCx//4cbq9AYXnEayzCBrZ3pHumu X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(148322886591682)(767451399110)(81227570615382)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040437)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(201703131423062)(201702281528062)(201703061421062)(201703061406062)(20161123562025)(20161123555025)(20161123558025)(20161123564025)(20161123560025)(6072148);SRVR:SN1PR12MB0477;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0477; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0477;4:tIX8PRGlpj3+jhzwXJgy23Oy75zY3O4/08ma3yzv0EbEpp2lFWwwUXLdyD3JmprfhToX/pXV4jqnd25rQggiJT0YTYl0dcqr199YWPsJRaJYEUHhNbmrgUvymZB2iR/iGNmuKuWWua2Ej3vxYIi5q9fl2c7cpDRgQtRTttvQue8NGe/SFay2YQGvBanPt2fwvU4YwCagMUSs8CZUP14gMTPiIrpfkfKYqfgjd1RJkqjREyNGbmVUAIqLYHCeuhFzrYJ5j4hLDLXhi940e0DNysC3gT1V2T4BAsbS617nILzc2EbVFX3C5/sjnHTYiJ/S+4dxPdlCU/cj3gnuEYjeECG8QFwrVKmMOfSPkwC9oq+UGcXfyCG512uN+uQ/SHuDYnxyzf9/lYAfUlKMLepUrpzyvA2i8l/PvfflPMhXWXTUQ8Ee2WuQDYT5fyEt8gydueTMH36ZeArFCydEk4c75bKuS6KzKVJDmYpl8Ned2tNiSaCAMegQk7kdCHOK/jjB2EkKqDc/+Eb61CPs7d6m6645g/igckBrByJnYaaCX6BgUQ5JsUG/iJhPiKwX86Hdnfk0RyG+b0+1l8s1H0i5cOt3A1gk8uIjoOvsFZUWvN2Mfxq0yAmtYUZ5QSrz9xJHn6ZBL060wImQbpHn13NjDC1mu7pHtwUbLbeEpMOojb2F+hOk2a1FfTYxgpQQyafaQgIDxkneejfovu0hLsfb1NZpFfdOtULAlRJsT8C6eO1KkAl9VRbyjnNo9IlECxy28cVDtedlBzdSEuX8ihYfbC/nyXns+KNChm97e/KbnddTV7VQ5m1pyXZOfc88EiA/vMl21D8Q09YRC9W3/6qwcp0NVwHongtNrCFcMM4COq6CGMlqEqUxs6xGCwKfU+dudmVeV2US0rq7cvtVXpJIfQ== X-Forefront-PRVS: 0260457E99 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(39410400002)(39850400002)(39400400002)(39840400002)(39860400002)(39450400003)(377454003)(24454002)(54906002)(47776003)(2906002)(50466002)(6486002)(77096006)(31696002)(65826007)(93886004)(23676002)(230700001)(53546009)(90366009)(6116002)(3846002)(65956001)(25786009)(65806001)(66066001)(83506001)(53936002)(42186005)(33646002)(64126003)(36756003)(4326008)(229853002)(38730400002)(50986999)(54356999)(76176999)(8676002)(81166006)(189998001)(6636002)(4001350100001)(7736002)(6666003)(5660300001)(6246003)(31686004)(2950100002)(305945005);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0477;H:[10.236.19.127];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwNDc3OzIzOndhMzNnZUtxNTh6TGkrcmdrRDVLSkdwNHNj?= =?utf-8?B?YkJNWi9HT0sxb05iMjVZZktpeDNwTGk2ZmpEQ2VMb3paSzliRERnWkxQYTZl?= =?utf-8?B?Ulh4L3BUNHU3RlpWK1M2Z2RFY2N0VlpTVURHV3ovbWkrS2xLTlBjUlVyWTM0?= =?utf-8?B?T0U4bDMxTTFuZmV0V0xuejZUZU9jMVpnWE44U0YwRUF4ME5SRHQvd1dVdGpQ?= =?utf-8?B?UEs3c2N2ZXY5QTdka1ZyL0phdFFpT1h1eXJzY1V0MEx0Q1UxNEdSMWJpMUxu?= =?utf-8?B?blBrQ0Q5SzhoakJ1c01kZ1JDVldXS2swN3Z0bkVFWGxhTEJ1SHE4bnRiV2xm?= =?utf-8?B?WUkxeitkRjFuWXRrSHdEMFlpYjBWTjMwN3ZWWWdKSXBJRTB0Z2N1VXd3NUZB?= =?utf-8?B?NUpZbG9wWFRWalJjTC9jT1hKTE5JaFJJdEhmNnQ2Qk5hTTR1dlIxZ2dkdkxW?= =?utf-8?B?ZnBRYlFTV2d4aThVRTNmcVBFVkJJcUE5b0p5ZFRlLzN2R2lRRlNJaXF5ZjNn?= =?utf-8?B?TUlZZ01iUjNUQVcydDFqMFY2YmNtbkVhS3U5aVQxT3FyL3h5MDhhekhFQWph?= =?utf-8?B?R094WC96MlMzSmRrZVRHbnlZWDIvM2tQT2ZnVUwvT0dpSXJQeEJCVis1dEJo?= =?utf-8?B?eFZCOWdDYnhaS0gyZnNIMU1aWGFIRU5VNUJwR0hROG1nSWJ5Y3Y5d1c5aEF2?= =?utf-8?B?M2NrbHlXTVV0amh2U2ZUT3I2d3ZaNWptbjhjaVpFRnlWU2piZmZScUlDM2Vs?= =?utf-8?B?c0V1WGVCQm9LckVpRXZKeW50VEFSV2xKVWw0d2pZdWZrQmwraUNJQ1pCVEhv?= =?utf-8?B?djdwSEV3cDZFSjREdDB5R3RkNUhNZnZKQTN6c2NlVHZWV2oxZUtabnZtZE9H?= =?utf-8?B?aFMxMEZwWHJZbHBWK1ZIL0xtY2hQRC9Vb2FLMVVlR09ibHdJY1ZHQy9pRlM4?= =?utf-8?B?UHZUN09oV3liWmZFOG1Ga05aa1p2RGgyM1E1d29TMmlpQlBucVZRKzMySUpj?= =?utf-8?B?dVFvekZhWHRweHdURWFoTkZLLzViZmw5cjRCVEdQc05seXA1WjVnZWFFRU9i?= =?utf-8?B?V0pCT1VZNnNuSWRqYWtSbmZXTE9CaHNJdXp6TkkwZ0hxTWVOa0VGU1dFN3NT?= =?utf-8?B?M1FGRVVvYWxjRVZQODZWV3h5cG8yYy9WUW1oNkgrUHZmajJaZUlBT083Ny9X?= =?utf-8?B?b3hqcVI5bkZUeXRNZU05cExUTzU0ekd6WUV5R0c0LzgrNE91U1p3aTNwMWdW?= =?utf-8?B?TnJtQ1BxSmIxTi80NXdOWVIyWjZRSER1cUR0azJBTFBBV1lJSml2Ykg3N0RC?= =?utf-8?B?Sk84YUhZZ3dBanR6YlBHZ2pWMDYyWTNjQ1VnUFBBaFVLdmxFZzAwWTZYcXVn?= =?utf-8?B?UWVCRWU1dTBXblpROHNzeS96YlpOcTdnK0N5L2F4TnFOdXNBLzY5V1E3VjZC?= =?utf-8?B?QTBQTHNmM1ZhcEJZZGI2QjhLblMxMW9BcVdWZ0dtUXN3Y0U1MmNDYXcrTzJV?= =?utf-8?B?VVU2RmE4dVNoVEhpb1JEVU1BUkFBYnNEbWNYTjNkZ2VnK1RMbU5YU3RIOXZu?= =?utf-8?B?S0M4LzZIL3B6OTUrUDNWcDVlWDBOUHFYUXh4Ujd4VzdpSnBJSFlzYng1b1kx?= =?utf-8?B?OGFIbUsyeXRaQm9NTmdOcnZabElTaFkrS3cvSm1hQnREWUJFaXhOR2g1bmdY?= =?utf-8?B?dkx6UEZUb3ZjSjUwMUpieDVkZFZDcm00UlhDWHZpSVhpY05VaisrNytUakhu?= =?utf-8?B?U2RtaXlIMThxMlZsOXI5Z3JFV3QrV1hScjBLcWsxMWQzWXVMUjBoUXdpWXY0?= =?utf-8?Q?ulHhH2pBc9dY8?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0477;6:4CNCDYdqNQYL7cQ9Oh0dUWzHkEpSVrx3JClnX/XGG5tCPfLxEnmm5XF5p8fGCWIT0BY7LSOYF3KUXGcvgFqUsnanDeCgGyr+E7ljeNODrNA4r+z81Q7eUeKsoD/ujw9ndXqWAd1ZWUtUGUZzX6B5fhlcdgeYo9FgehYoLyyemkxvpckyPZwGLaKHN/w197d65w01tkV6QAHNdOtJcO/Gb/0i5OiNRzz0IhN5eadFrmhKUwYUjR/5NizcxwtrxQeHQ8u0YcHxgB1f3UKICRgByqmnHcYYFeOSrE/wwNRf+Mey1iFiA9eNrA69dkpbv70il6JCvD+gmCaFN9Gfg/xKosxsNQvNcwugJhJck1NthyHoMXw5C2nZYeqMz6nXz3rVST2GR+1ieNc+LRoLOPO0C8dDjScJg/Qj6wxS8cTKma8=;5:JVlH99SAVR0OTLEI7RggasS8jZlY3XT1G2kZqJc0ObP/bxkev6TheMumvZy5WP+GAPAXo42AWPd/5taMOqsXeqYjGQwnMs7UoLiKuU86nAXs+u7PgWhSWbvQYIaDx6ER88r4FHdUEW4ESLHrapGBHQ==;24:12Id+PySErZI/qMyNV+GD/fuRvBDVsrNZMNg/JpM9MDNAyVb1H6xKq74cG+KyuNkiQMXeVM7RbkDllO/vjxpq5kfMmjICfXfNlHfrQlXxBQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0477;7:7rOX7Cc6SU5JGy9ixH+/bwpFghy+vv/t0Kw21sy4gjMgg/n5OgZqlYVahi98yjje8uBHa1/5IcbUghL9D/KXCT0U39QAYUB0mEJLbR7Hd2a+vCn+2VRAMKRD/gVdPJseBnWYHZE04459lETXgdlA2JMqZRq3QkQ7tQJYxuoQ58KZ0iwDAnUtxXN1uIbQbzeKKFGBJgte68YdS9ikhL/ndbPoVYJ3acCxKkQXUlH2EIVwpzCe16W0nxPdZCQoQ2wk1apTi/NBqqzy6SK59eZW86p6/vdz2fJ2OG9SD46vstV5sUYGrpqUDFAzbRO6LOh2Fbtg5V3vdikMkhfwaVFdwA==;20:dUHR/et/biu9RlwQT9w824e+oufm4lDh8kBTgrG4MavnUV/GZQqUGPYyhqW9BcOREwHYaKYBWLHrXXZPaZZJytcxC9ZxNiiGiq8NoOJM9suIP7V8h2V/dp9FHN5nzQr4DCqX9n0eBvRauOjmVsP/YlxQiAMeFZjQ/g5yQMVVan0qiLycC5XI5T+92zy+8zpdArplVsokA5Tx5bMbN2ljZ9/m4d7pRKcsyDz8z/kSaVDe0kz+YOUaJveafJ9dqHiU X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2017 15:26:58.3329 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0477 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/28/2017 09:59 AM, Arnd Bergmann wrote: > On Tue, Mar 28, 2017 at 4:08 PM, Gary R Hook wrote: > >>> In fact, the use of bit fields in hardware defined data structures is >>> not portable to start with, so until all these bit fields get replaced >>> by something else, the driver cannot work on big-endian machines, and >>> I'm adding an annotation here to prevent it from being selected. >> >> >> This is a driver that talks to hardware, a device which, AFAIK, has no >> plan to be implemented in a big endian flavor. I clearly need to be more >> diligent in building with various checkers enabled. I'd prefer my fix >> over your suggested refusal to compile, if that's okay. > > It's hard to predict the future. If this device ever makes it into an > ARM based chip, the chances are relatively high that someone > will eventually run a big-endian kernel on it. As long as it's guaranteed > to be x86-only, the risk of anyone running into the bug is close to > zero, but we normally still try to write device drivers in portable C > code to prevent it from getting copied incorrectly into another driver. Understood, and I had surmised as such. Totally agree. >>> The CCPv3 code seems to not suffer from this problem, only v5 uses >>> bitfields. >> >> >> Yes, I took a different approach when I wrote the code. IMO (arguably) >> more readable. Same result: words full of hardware-dependent bit patterns. >> >> Please help me understand what I could do better. > > The rule for portable drivers is that you must not use bitfields in > structures > that can be accessed by the hardware. I think you can do this in a more > readable way by removing the CCP5_CMD_* macros etc completely > and just accessing the members of the structure as __le32 words. > The main advantage for readability here is that you can grep for the > struct members and see where they are used without following the > macros. If it helps, you can also encapsulate the generation of the > word inside of an inline function, like: > Please see my follow-on patch. -- This is my day job. Follow me at: IG/Twitter/Facebook: @grhookphoto IG/Twitter/Facebook: @grhphotographer