From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752823AbdEDNTX (ORCPT ); Thu, 4 May 2017 09:19:23 -0400 Received: from mail-by2nam03on0065.outbound.protection.outlook.com ([104.47.42.65]:63408 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751217AbdEDNTQ (ORCPT ); Thu, 4 May 2017 09:19:16 -0400 Authentication-Results: lists.freedesktop.org; dkim=none (message not signed) header.d=none;lists.freedesktop.org; dmarc=none action=none header.from=amd.com; Subject: Re: [RFC] drm/amd/amdgpu: get rid of else branch To: Nikola Pajkovsky References: <6ce3044b-9473-94eb-e54c-e8e856f1c88f@amd.com> <87efw47pah.fsf@suse.cz> CC: , Alex Deucher , David Airlie , , From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <6b631d8f-73de-5a3d-7cf8-a7bb3565e71a@amd.com> Date: Thu, 4 May 2017 15:19:01 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <87efw47pah.fsf@suse.cz> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [84.60.4.68] X-ClientProxiedBy: VI1PR08CA0020.eurprd08.prod.outlook.com (10.164.95.30) To DM5PR12MB1305.namprd12.prod.outlook.com (10.168.237.148) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 39d02331-b659-4dd1-b0c8-08d492f02952 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:DM5PR12MB1305; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1305;3:lHtNpVUZ8ynLBUtaJNJTOHdKKMdrTlIOH6AbkFMhjyCe6jaia0li4BaGuP7/5CkI1xT3y7A6S+AkzrI8DHP8UH8TpcI+D6dMAId/ZYUYV4ZzmqYRiV+PRF7rYGr9ZDHD2k8EK+iafeFNo29e43weaY6xs3shhJWfZt0RnPaBiyU6YvEHNY1yhCoMFqnWUKrpQNfhvbkBlXWiWqxV6a7RoQ/XxuCybqMQwJmx3nZDfPEub0akcRRuCETsIlEdxLnE/m+9cZ2Z5mD7MBI9SxnaV45trt8YnoCOO3+PKHh9zmBI5ANdkyr7jlyZdbpNAe+5UqXQCplF/QuKJ+UvyIa91nIBo9SqFV3UPYrX4mcTjMU=;25:Tfrz8D61mXkOI1aH3maM2WBDCjEZRAyMMBSSNjEzRJWa4QljdWRoWJ3urZV3KRsS5sWt+1gyD+1Atw/zNVFJq0EpcGs9kkl+58CSyDpctWa5yuWiXRYt0vR6DcTpcYbWQvJbLAK16kWbyy7l8QFxc3qAwKGYUDGdzfQPOlwtMBZ6tLFiCgcB3Re874CgLBjewxwJ00eeuF4RWjRoETuRNMYPGsNC8joPWfJQNEFofihCKfCpimURrmOsnJfcg/eUmNAOFuJ1wyXliUQ6gQXJtAKKkMh8Sf0AlEmhZkMdvnm42+JqCgV2EzeGwj787p8WwfJHjaFGSxnN3koRWLqTMkC0RJo2td/Yp/sWUT8qoGcjooD1bKlNJDC0ZIa6G0lfHqMpcLSrsJSqrAhmhjDehClsLVxY+DezNQB2R1zxMUhrASLRwW0xvJyBIYp2mQqC X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1305;31:bTfelHWlHp8Qv3wNoOFPm7RBLZWm5gLAMfBHigdm8/H6jJiFwY9w0Ht0b22f+TPK/naJC9bVt62lCAQrorVs2w2YcqHnpp6o5o8PKMNLpBCpfkNqKVL5/MdKrxukwL1QW48ujFpIwAIBxhaAybHWTIPjCkW6SbyGosqtZyxDZt8s4K+rIBM7WA9xBXGluHUiPXvl4ikcXgfE45t0lu30DhiAA0a6hjoL/XxgPlnAE+Y=;20:zZRaR0ft/v5J5CnKLjUpKmGh2Oy8QZqjXKAeGDNnbYFakNDVfH293Aiq+Anc6fv9h5VmpxIUpiA7mRQhK6gZTJwgvzcsSwab1B/xlHNE6scMdmU8+sg1R/4Ga6uYgOJCgR5o7PxbPeaDuZtxGZ4McBDL6MPSWWrtnaUjZnML0axQ5uj3j4rD6Q8TyhJN7/O3X2N+yq9aXO+L4hEUgKgE3tjWqjSXBoz2P6fV7eH4lROfsPbNfuoyD3Oo2SVhS+KNugRHTIR1MPbHU8S9BKh6ED7ZqGsrkLX4UkEYBV1xX2BiKhZHByGDt32FRRhT0IBgFk1K4yp2qOxZ4s8wLmFPSjWoiDrdlAT810kPEQlAPZQZjP2odzYEN+s/Jcy9JcXnvpTXIBSdMa2vbtbfZGScC3+zJpgCR9J+7BOuYngVj2RoGpAaI1KM8yCm4ZoJJGHkrwpgnt5RpaSSe58kqjnxyMDs0EAnV5J35Tt3G5svwfVgfDb0a5dhOqF0Dpff9Lp/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041248)(20161123555025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(6072148);SRVR:DM5PR12MB1305;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1305; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1305;4:dFPXut3RtL0s7G5jeZtt6RXZX9b29zo/D8Ic1mpRMmIALr4ejJGxkNxT/3ZiUbSdSlpPk9v8+Pn4300apmFqvROrDbA8weO7jBv5Ga/vvFquvjRDn6ck8nmF4ZW1aQt6HrtIyz4NdbqND0lRiL28hWlLjoj8vlry63H7z6+Yd8+GF0iDCgGp7YlBahEpWDrc3aMHt28Ykb7p3guypBZ/biSbTnuRZdzdnJKuNdShnayym/bTsGHttyopgEevCgfnM1n+/d+ToB2uVRY0b99chtJv/SQkHrdwaKUatdc830GomsaAwNYwHgaEYYQIcivZaQqE/mNDeFYgaH+IxPcDGX6xZPDOVbhxcNKAdQVhSmOfDlmiuYXicdZLCxPCDKV3VycMn/j8utfA6yvCTKgVzgSPUv5LSUls/T69tnxn8yUnDzLEp67LHKk7k0AO+quxhJqqRbuhS+IqWNnopzW6vGUUQ4ikxJzQqUbCtt37oajRobGZR4gntjFftdrPp2jWHPsA5xkcGthxgpHKnjoQRvRerqZhF+tGtKjtEkoWFl7sPlscQ+peBS/GAeTh0RXh9nu+DoQqO4Ecast5+u5PZNtR4cwxDZJIZV0I2vPGhOdvGK0uRr+oZHUM1OqmUBcCM7vW6R/P0utEwYNApgPMbi0h8bUzS/yeaA+TJ7qrgmznpIkcTOPbGpVhTcloalwmRXCP9bfzi0JLlgiZ04EPEp+5/I6FgZcumkWcsYY0HcoAVAH/PtL9M79kpuTg0GUvoFGgRwwxoZfLJRV6SQ3H5jPJ+cNrITF7RIg87JCzvMYkFlaHLHwD/5XyMIrxr55JAP3dULFqePVJvpv95DSj/w== X-Forefront-PRVS: 02973C87BC X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(979002)(6009001)(6049001)(39850400002)(39400400002)(39410400002)(39450400003)(39840400002)(39860400002)(51914003)(25786009)(117156002)(478600001)(5660300001)(54356999)(76176999)(50986999)(4326008)(65826007)(23676002)(229853002)(2870700001)(8676002)(31686004)(42186005)(305945005)(6916009)(7736002)(2950100002)(6666003)(86362001)(31696002)(33646002)(2906002)(6246003)(110136004)(53936002)(3846002)(6116002)(83506001)(47776003)(6486002)(77096006)(90366009)(65806001)(66066001)(65956001)(81166006)(54906002)(4001350100001)(64126003)(50466002)(36756003)(189998001)(38730400002)(26583001)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1305;H:[192.168.2.104];FPR:;SPF:None;MLV:ovrnspm;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxMzA1OzIzOjZFQkkxM0VBcHFGOWFTZXAvcmRUbFdVb0dM?= =?utf-8?B?VDJBYXJ2bE9oQ3I0Y0xMN2tidU9Nc2F1YXRwZ3psRlVrcVNnN2ZnTlNvK0Ji?= =?utf-8?B?TlZFMnF2YS9KTFYrb2hhU0M1ZkVkVGRlZ05HaDh6Z1lWc0REY3BzSXdpa2Vw?= =?utf-8?B?VC9IbUpBZURzMkhaMWVqM1RLY05HUUtzTWp6RDlSMXBUNU1EaXVFSnUxZGdm?= =?utf-8?B?MlNiYzdlYUFoZzZtTkRPSE04MGlFRndKZ1VJSTg3bEc4YXY2NnRIOURGRVBB?= =?utf-8?B?d2w4L0hnRHRxSWVnNUFFWnJ4UVJnYjQwbGZFSlNyQnNRcjVxMndIMjZCMDY1?= =?utf-8?B?Zzh5YWxqdFN1WVVwTmdQN1dxY2wzQWRtenRJbXJIUVZLRkhXaU00M2VJTXJK?= =?utf-8?B?Mkp0QjNpRFZlZEo0YTdlWHI1MTA2TStlMVdpbURLcVd5UkNyWmR6Q0c1Ukl1?= =?utf-8?B?L1M2M3UvbGdncnpweDFXUjlmcXNnVitOdzBQeE5Ea1MxWnFsWG5xc3Urb3Qw?= =?utf-8?B?eDQ2SVVuMmVPMVlKa3Z5d0JDQUZsT092aHRwZEo0Mkg3SVl6eHdpb2NQSmRM?= =?utf-8?B?TnR3UGFxVms3dDV2QlYzZmw3Wi9qQWZzRGtvWlNXM290UjlVUDhzeUdyd3gr?= =?utf-8?B?OGszcG1qTVEvZVRhY1lNNE1QeHRuVVc5N1NrYWVIUjJjei9SV1g5OU4yUzcy?= =?utf-8?B?U3VQblYydHEyVlZlSHJybWRWRGU3d3Npb2tuTWE0VDU2YWd4eFc1allWbnB3?= =?utf-8?B?V1ZERlFTRm5NZGt1K0FhRWo0bnRBaDc5Sms2bThrWFNacnNQN2p6T2F6L3pK?= =?utf-8?B?b0h4aUFlaWVxT0ViT1E5Z2c1U2J1c1VSV3ZoZDg0Wk5xdjFjM2h3UzErdWgv?= =?utf-8?B?Q00rZWZvY1pRdnNLRndBdTBoOGRId2VaVGtYV04xb2FvVUJKcE1YSzhpSVpa?= =?utf-8?B?RzhKOFRpd2liaUhWbkV6MWpwTXZRYy9hL2Z1KzJhaGg2TVlrVkw3SjBsMDFk?= =?utf-8?B?Nnl1WmhYYVZNN1JnbFpGdmt4MUJaUGs2UDNCb002d21nWEV4MzJKRksreHlJ?= =?utf-8?B?QkZnVkU1aU1BMmJweHB0c2M0RzB6NWR4aFlxOWNKK3Ewejd5VmhQZ0FOUldl?= =?utf-8?B?UVYwVEZ4MUNTeVBSckpqMitvNUtPRmdPWG1pNkxyVzVvNGs4NXJ1aFhEdFcw?= =?utf-8?B?b0dTbVFFMmpXcktrVE5jdWN3NDJhL3VzUG5JclZGM283bnFXVHNqV3dZaWVM?= =?utf-8?B?eURLeHJUTERFNG1sUVZyZE9zc3VER1paQUYzVW92UjduajVaLzJaZFYrUjM2?= =?utf-8?B?Umk0K29mV2xQWFpIcmVZUjdwTmVXenB2bWhnQnFkNnEwSFQyVkdqVkY3MEtH?= =?utf-8?B?QVZqRVZBVlRjREEvaFZXR2RQOGk1S1VYSENmQ1ZVTzN2THFMOU93cmorcWJx?= =?utf-8?B?M2xVRnFBZkgzaDJBZHJLV0pTQTRhL2V6T1BpRUo3Vno4UlFQbW4yRm9mc2wy?= =?utf-8?B?UVIyZVRxdDR2TDdLNEpDaFVJZ0g2cjIxNXB6djE2VkFuUjc1bHd4WFR2SXQv?= =?utf-8?B?TkgzT0M0bkJiMEhReGttaUVST2lFREdkL2Q2c3loZlZxOEJxWEhaMU9KMkFx?= =?utf-8?B?bnFMZElkVE9zZ1NoeDh1TldIV2R3THVzSUpaYzBCQmJSRGlnTlVhdVRVeXcw?= =?utf-8?B?Q2pVemNnMkhiaVdVRVZtU05jUXBKVElKVjJPSjg4TWUxVHhveXJ0SHdIZjBQ?= =?utf-8?B?NEl6OUlONTNzcGc2SW5PS2VzaEo2TlBHd25MamFYQ1R5cG12L3NxbW55NU9V?= =?utf-8?B?NmlzL3lFUzMvUGY1WFZFM3UrMlh6UU9NUUg1U0JKYmFOTDNJY2NDdWVvWXRQ?= =?utf-8?B?Wm5CYi91YnMrV3FqcVpMMVptY01rdXRxR3VBWDRtR2pnWWRGTHhNWUx2aWg0?= =?utf-8?B?eUxoMUJsVldXZWRlTFNwa3pHZUhMQUN5Wlp4ZWo5UkdRMVY5MXZ3V2toSWZz?= =?utf-8?B?OWdOVTR0ZW5SdU8zRFVGcDFwdjR4djA4SzhHQT09?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1305;6:tF9+Q5IuKkBT2+8aQODR6R7yr4hE1D2bSQJQsvmimKOShwWpxPuDYZkibzvlOXZa3a/98Z71LwZYM7uDULPXGt4NBwRIKbXuFXsE2FssPjx2tr07XvMbX6s4WjexdQn47OeOsC5u0AsdCgdpu4v2NpF/QtBzW356ly9UpdwPzMY+D4Xkgcirx6Vt+1B6wxH3BzJOwEmuGviJn8PvY7pHNum+/YEIVKeKahyK8U2qN8iJPEbBxpOCS/qR+NmOwMNdS4hOh1lG9RJ6LiVSXQK8B92sJaHKTdzCm1PeY9/FUHXQcM9ar7SXxSiPOrOOPeGswWsmbtKQY6ozPEr7y98RUbvRdtz/SPttczwKD1P4taIUX6w3JjOVy+hWr8FouXnHBbImY9i929tTdqsNrPZF/O0fxteis+gjKnIwZu8UfwdNuSpdKOoCyppaj3qONxvrj6G+DSpLwvkrRg5TyetWG5ArARazkNdSPaoXBAcr9K8o1vbmQKZicxYMjV/0qiSshB9gPVZgl+KyPdGOt+AVZx1WTQQgCJ/4X7AAjsFADj8=;5:xz+8M4WoQPHrvAxKAODKLvBBRgvCb0fTnOAlKKUpSWJdD0w9lXFXJwMhlu4+prqnkr49enXSKk+/0Er5swIdXZg+ldBOnZ2aOsf4kwXJVN+DzvAOM+8O/bHu242vDqWiPT7J/clCKIxFFdkyegcW/Q==;24:BB7CysvI/Zmz7L62K6zp2Ad+e6KnWXWWh+Zfl684f5DvhWqIQBM38vc0H30O/3HNG1jjNuqMzzI9jSSG6+3ACENvNKYsTGGm4SBXkrgicHA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1305;7:jmPifVQHgCuNp6W7bfLYKoONDRVM0Da8OP6AXZQPKUQyRTnxNPlJs+jJkYwi0GRP6kZEe22Mt+CVjOQhILRH5zoU99yonTzyW6o/NOQlewML62w8zjYj5vBWlHH4fMYfMOa5DAc4ZeXFEukAk2XcoFDejA+AqKUdJv9GT+OF3R+fxhEE7jt+3Dfq7jEqxAVpWNOoawXl2vSkXs82gAnH46fQ8za4fgbneLhdlXIe6UQTYzapQp8+j4XUXLEzI/B8Nl+R1HDFPQrpW5d+HCFhA/NS7XWLcZRWt2kxtx0NO0uB5tOM5Ks6FNaMCcw5TVOTc3t8lrLugrO68jLTBDHhsA==;20:OJhECcGHreA24VJ0bH2BApaCd1cZlJJGJ80uR3GTQ/bOtq0gcNFKVncxcfXICvL2YF5/rIQSDLcWU1mNIDlfiVjEkMin+vghqQdCKd8oLwkDKeoRqBYX90Obt/g5dIXsU3XdTitTAVVt7pzrftfYrED25i2uyfvtwZQfWLqUmhWHALSUO7/Tk+9zwt0TvMa24pFzYNEqi5U0ZHgL/htSS6We02MQywBbfotM3DH3TtWUI8fzx0XKHF1YMJ/sczkW X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2017 13:19:13.5292 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1305 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 04.05.2017 um 14:57 schrieb Nikola Pajkovsky: > Christian König writes: > >> Am 27.04.2017 um 18:17 schrieb Nikola Pajkovsky: >>> This is super simple elimination of else branch and I should >>> probably even use unlikely in >>> >>> if (ring->count_dw < count_dw) { >>> >>> However, amdgpu_ring_write() has similar if condition, but does not >>> return after DRM_ERROR and it looks suspicious. On error, we still >>> adding v to ring and keeping count_dw-- below zero. >>> >>> if (ring->count_dw <= 0) >>> DRM_ERROR("amdgpu: writing more dwords to the ring than expected!\n"); >>> ring->ring[ring->wptr++] = v; >>> ring->wptr &= ring->ptr_mask; >>> ring->count_dw--; >>> >>> I can obviously be totaly wrong. Hmm? >> That's just choosing the lesser evil. >> >> When we write more DW to the ring than expected it is possible (but >> not likely) that we override stuff on the ring buffer which is still >> executed by the command processor leading to a possible CP crash. >> >> But when we completely drop the write the commands in the ring buffer >> will certainly be invalid and so the CP will certainly crash sooner or >> later. > Instead of choosing the lesser evil, is there good way to design ring > buffer right way? It is designed the right way. See this only happens when a developer increases the number of dw written, but forgets to reserve ring buffer space before starting the write. When the function recognizes that something is wrong it is to late to actually reserve more space, so the only option left is printing a message for the dev to fix the code. >> Please add the unlikely() as well and then send out the patch with a >> signed-of-by line and I will be happy to push it into our upstream >> branch. > Proper patch has been sent. Seen and reviewed, thanks for the help. Christian.