Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752710AbdFUJlG (ORCPT ); Wed, 21 Jun 2017 05:41:06 -0400 Received: from mail-ve1eur01on0122.outbound.protection.outlook.com ([104.47.1.122]:50460 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752580AbdFUJlD (ORCPT ); Wed, 21 Jun 2017 05:41:03 -0400 Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=axentia.se; Subject: Re: [PATCH 01/11] drm/fb-helper: do a generic fb_setcmap helper in terms of crtc .gamma_set To: linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Philippe Cornu , =?UTF-8?Q?Christian_K=c3=b6nig?= , Yannick Fertre , Gerd Hoffmann , Daniel Vetter , Alex Deucher , Dave Airlie , virtualization@lists.linux-foundation.org, Vincent Abriou , Ben Skeggs References: <1497986735-14418-1-git-send-email-peda@axentia.se> <1497986735-14418-2-git-send-email-peda@axentia.se> <20170621073804.akyg4rxvoavjjt2v@phenom.ffwll.local> From: Peter Rosin Organization: Axentia Technologies AB Message-ID: Date: Wed, 21 Jun 2017 11:40:52 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20170621073804.akyg4rxvoavjjt2v@phenom.ffwll.local> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [81.224.171.159] X-ClientProxiedBy: HE1P191CA0005.EURP191.PROD.OUTLOOK.COM (2603:10a6:3:cf::15) To VI1PR0202MB2560.eurprd02.prod.outlook.com (2603:10a6:801:6::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5ee1be11-572e-4901-0728-08d4b8899fe0 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075);SRVR:VI1PR0202MB2560; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0202MB2560;3:RP/2umNQtxWXy7UvvoqrNCJW9gMz2MqUAaC/Ml5QrKxRpEST2LMKR+JRoDtjlRsndKMeYRKE/irKjYNhnfJsoaGrHyW0BSoj9VrcIdvcr/SWrMhDucU6ixvtM+pCBxd3YfTp2iGBPzaC8uF0t/R1k3e0k/r6iuzrVYt8L7iDiRC65VliydhX4LacqglEnKBjmAinN+64ttxBeIi8a9UFg6eGKfYLjc3bmPLilbiUSlt1UhfbmEOGxoUeDN8PUrtJY5O/zkK7H4Nv64FifYJomeyKskVd57lyDzyxnfjVC+gh5CXMDUTPPtw9+5RHqtU7;25:5Y3qgSRciQnmeuVHPDZ2jg2X1MFPG9/jvdzf7LVwXAKflrmmjM1TCaEm6hmCT/ef8kdK099SLzYXcVUnlIL6Fqg9vLN2jJ+n/pgYzSg7+TTkYbhuqOb8RGhOYOf1HkRONkzGjajTo+mcgg7H76Cto+soYyev07sBJwTGXJXk/lmvgq5yKH9fCMsvQ6ltIB4NuD8WYL/7VaNFAPVpcKqJxSLFMR/OHOV/rzEenAWdTXrWR++H3Jn3q5/9CmAIhtoo41uBENmFDJlJl2+Zr02yYQyqEjHG4hBYV71+6eBSdRAfPkaQuI3fLvbXPjBnCp2rK7JlA6fAvEAXsW6FjkbFTdl9UthoulADZ2Is5XVzEvMD+drH3LBt4TJYN1YjC125vpYi6yQtTqzXIzobmdyRBGfTsgzwX6OI0HWyvvJsLFYVm738HMk7iBZeKg/Ra4LALkvr3IzOf4ZxzU8IhzwzlCPubYzxADxnXAPeUT4bOME= X-MS-TrafficTypeDiagnostic: VI1PR0202MB2560: X-Microsoft-Exchange-Diagnostics: 1;VI1PR0202MB2560;31:AA/uHGVUdz/dLHTMwQ9jvu2c6rUrgMHMqlSH/DM38ytr8s0MCTkqqpc/QPRJIikqQp/xfVoRINi4rdZiP7M4YS2BwrzOgYrKWlNTOR2ED5U0GK7E+HJdXwrnNP+QlJsyx1lXQTDZNrX2tDoOLXiKIXEGLq672sZWNeeoO9x7pALob6DrZZOgUSizUDYgchgfAx74blRFpTTEMhpFJZThgCzZ8Tz00H0lVUT72SyvplSOJ8PIBa2rrEKaHIK8EvLQbQgps0eB516cdOJ+hCgEIA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(217544274631240); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123558100)(20161123555025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(2016111802025)(6072148)(6043046)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR0202MB2560;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR0202MB2560; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjAyMDJNQjI1NjA7NDozRHZIUE0rcnFuQkxWZ1QwZU1icEVrYzh3?= =?utf-8?B?cnZHdlhZekRaVFFvcnhabys5bDFiUkpMUXlsbWlkeFhsdlJvcWcwbEtDNmEy?= =?utf-8?B?U0NuSHFSTS9NMUE5K1VjUE4wVklGYU1Qd2pqeERUVWNqV05wQ3Y4MXZKZ0lF?= =?utf-8?B?Q3JMelhyYURZMHhROEF5UUlYV2dyaG9SMk1qVXZBRE42aUEwTVg1ajgrU3ZK?= =?utf-8?B?Ykp6a2pzck1jaDBFSXlRQlpoUG9kVnlqeVd5S3V0OWwxeHl2RFRlZkppN2Fw?= =?utf-8?B?RHU0VGtvWXRqL3piK1E1K1FLVzRDOUpEdnpkNFFuQXhUZDUwakltMGRLV3JH?= =?utf-8?B?dFVxNWFJbGdRakNPMTZoR21KMExRZEJxaTdyV0NsTDcwdU1uYU1nRW13TWd5?= =?utf-8?B?amx4Zmc1Q21ySmNkUHVaZFc3YWtlRVpYdHhmM0J3UDh6a0xQYWdlODd4MjFO?= =?utf-8?B?QlBSSGRCV2NQU2tYUlRTNUlBRC9mOUVBVEYrcDI5bFBzQW9Ncm5BUVUxWmNP?= =?utf-8?B?NFA0NE9GWk1vZTFHV0hReTZ1NnVJS3BaYWdJc1V1dERFL1JVNTlNNVFZNWR6?= =?utf-8?B?NHZqa3QxZUkzUTN3SzJIVEhvNDllUzRmVnpsbWtPbHo2THowRktjMkJkT1ZR?= =?utf-8?B?QW1WVm5qV3FGSWdGTlJqS2dpMFN1OUhHOUVaVzNPMThRdFIwa1BhWFlnRExh?= =?utf-8?B?WTRpc2dyVEVzYkZQWm54a3J5bFRLbmNGMWtxRTVyTWd0Zk9BajQ0RlFiY0Js?= =?utf-8?B?M0RoVmxINUFEOTNET0tJR3dubk9ZdG96OWw5bTFwVTJaTXFUT3phTlZTS3pZ?= =?utf-8?B?QTBLSWcvQXNEVmRGa0N2bVQ3TXdacmxYYWc3WnlWL0NVWEFrQzgxSldnOXBn?= =?utf-8?B?a21OQ1d6aEk1QTlUYVJQc1BEU1Q0S0VSYlczYnRUejM0S0d5bWMxRnpQZ3RV?= =?utf-8?B?YzJ3Rk9iTjJvVEJ3NjlOWUtiaDU3TFFuNTM3d1hNeklCa1ZZdW90WEx6OXBV?= =?utf-8?B?bGgrQXZaZFhZeE9pTlVSYmxwVGNYVjZ4SVlySGRUVGtyUm9kTW0yMVQxbzcx?= =?utf-8?B?Ky9EK1BrQkNPeGFVY251MUh2M0x5bTlnVHFJZ0xtNk1XQVdUaXlYc3BhdElw?= =?utf-8?B?WER4N1NOd3hJQVMyK2FlV1VDcHBvcWdERzNXekVpU3RtMkdTZFFKdjZ2OVRh?= =?utf-8?B?Q0cxSXdWb3ZjTEtNRHR4YjJWUVpLZXZHaWlseUxkelg1bVhmV3VIWGdoOVFL?= =?utf-8?B?K2ErN2JwRFZMWlMwUTdqNlB2aDVUQzk5MklHYk96MEtwTjVtNzA3RkNCWFYz?= =?utf-8?B?MndsL3BMcU80S3JKOTZIaU5lQnU4VTNzTnpqREFFR0F1aGFlRlk2ZGREdDkx?= =?utf-8?B?aFA0SVBIK1l0UkVWVldLUEl2aytXQWdsMmZKOFBOSE9ZMmhmYWI4YThnN2lx?= =?utf-8?B?SEVjZ1FweFRRZW5uVkhyVk9BUDhFQ3I3cTNHRk94VVNlTlI2NWd0ZFNLME1n?= =?utf-8?B?MGRCMDN6TE9DTDlISE5LdUdkdUhKTXc2SlFvVEZrd3FOZlNMc3I1d2lrVkRl?= =?utf-8?B?K1lkdCtMVkVuaHRidXU2QmRWbWtJR2pyL0d0bE1BNVp1K2h3dExNV2prUjVD?= =?utf-8?B?L0RtbC9VVlowaDMxK2VwTU5DcjhrZUt5MGZPRFAweTlsUDRTWGdRRUtRa0Qy?= =?utf-8?Q?YYvj+j7TShPUXzzvk64=3D?= X-Forefront-PRVS: 0345CFD558 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39830400002)(39410400002)(39400400002)(39450400003)(24454002)(377424004)(53936002)(8666007)(74482002)(6306002)(189998001)(6246003)(33646002)(4001350100001)(31686004)(76176999)(38730400002)(42186005)(6116002)(3846002)(6486002)(50466002)(966005)(54356999)(50986999)(77096006)(2870700001)(305945005)(2906002)(7416002)(83506001)(117156002)(25786009)(3260700006)(65826007)(478600001)(5660300001)(23676002)(6666003)(64126003)(2950100002)(7736002)(65956001)(81166006)(8676002)(31696002)(65806001)(86362001)(53546010)(66066001)(229853002)(36756003)(47776003)(41533002)(142923001)(921003)(1121003)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0202MB2560;H:[192.168.0.125];FPR:;SPF:None;MLV:nov;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjAyMDJNQjI1NjA7MjM6Yi85dWxuaTBPNVExdjEyWi9HSHFJWWJh?= =?utf-8?B?a2JLY0FtTi9lN2NUTDJaRys0NlZ1M0dqMzFGRDBYZDN0eTFLN0Y0anNMZVhE?= =?utf-8?B?RlJUOE54bHBUejZIM0prKzF5ckJzS1V2RFExaDhLb2MxSUxFQVJyZnBDUlU0?= =?utf-8?B?R284Ujl1bmdneUNPWW9LQUdEVnl2NzgyeTBISmd2QURYTThZVmYzL3RUM2ZL?= =?utf-8?B?OU1pQTRhSHp3YkFpR0VYMGZEL2cwUm9EZWJEYVdhWWx3b3c2d2NsV1M3QUtx?= =?utf-8?B?WnYvZGZTNVRMUVBaUVUwOHh1ZjNudmdsV043ZCtJY0ZJbUxJMDBld3k2ZGRB?= =?utf-8?B?Wkhxd01GY2RGQmdVc0pzK3BOcGd2ZEYwd1UwajM5dERtMEtjMm9JL3pRcm55?= =?utf-8?B?dDFsQmdTa21PYUF6Q0h1YnE4dnM3UzVwR1JyK3ZxeERaZWZyTmozUmwybGww?= =?utf-8?B?Z0ZwY0EyVzNXMEV6RzZiLzhPc1U1a2xKZEZ6NlBlVlMwckNwSDdlTll0MHZa?= =?utf-8?B?RURSb2tRQjFmL3RDZ2pqKzZObkxrWE1vSTVib2hxY2ZZZEsyYXpxWnN2VVd3?= =?utf-8?B?VlAxa0FNMzFGQ3lwTWY5R0hrVU80MG5vNlBxUE5Rb0FNUTErMXBqdTNIYXpp?= =?utf-8?B?Q0grVGY2aHlPZFd4ckYvQlBteVM4TGo0alloRVdWVFhjUXJWRUEwY3M0enhD?= =?utf-8?B?OXVKY1ZibXFPWEJ0MHcydTlBOXlYZERvc0s0RzdTVEtpVjFNanp1MGwrZEZh?= =?utf-8?B?RFZBZWZaUnlJaitDRmVWWnpyV0JLdm1obytqY0NZemN6QWJ2SGtLdXczS2Y5?= =?utf-8?B?bWtudkpLMHZpZGw5d0tJUU0wbS9SYlo5aGs0dnpiNXdaL2dsS2NqVStNazdz?= =?utf-8?B?NUxIRHZvcmVMNndjQjA2ZFVLK1o2bEN1aU4xMVRWRmRwbG1HNTh6VTNad2JZ?= =?utf-8?B?QWNaZkNtM0NGWEdja05jWWphNjlXWjAzQ0FFUUJwUUZYMjZtWUxGZnV0MUlM?= =?utf-8?B?V0RtVE85UjRHcmFYeWxOYkc1MVhmRXdteHdKdzQrY3JFczIvTTdabEVFenM2?= =?utf-8?B?bTFEYy8xbnBuQzhVaXVBcFRWYndTOEE1SkhpZE5EVHY2WnliTzJVZ2lWenhp?= =?utf-8?B?VTU0V0N2c21FRFhhR0poNjBsc0lDdW1MdWR1bVpDUEJ0elVIQXVYbFZnWXRE?= =?utf-8?B?VTd1M2c3VFgrSFRNT2M1aVB6RHJ5dXh6c2NMUjlPSk1VUkhIeTZsNzhyODBT?= =?utf-8?B?NnRqMW5WMWdpbEdZZFNMRm8wdXVRRVVEQnFMT2k2WXRka0U2a0RKQkJkd21k?= =?utf-8?B?akVJMXo4VDNhWjRaMUcrYTkwSFk0QWh5U083WEJlSnZ3ZVpzVnVJbGErNXhZ?= =?utf-8?B?Wm9STXIveWd3ckg3SWpaYnMrUVB1OGVGcWEwbDJwUmc5UjByNEdGWGptaHFN?= =?utf-8?B?dXl3VnJGS2RMZHVHbk5pSlNBYllXejE1enQxZVp4VllSVm1rWFo3WG5Kbm4y?= =?utf-8?B?cjF1dEUwYVFUL3plcGk3dWk1d1BSQ0ROeStDdUNpNGhwMVl3dGt4RWVnYnJy?= =?utf-8?B?bXB5djY3NCtFZFFaRjdXMncxNjFzQXpmTitiZTZRcjVPbWJrdHlySGJCbGdR?= =?utf-8?B?a3hNN1RYU255U3NYTlNXUWl5UDl0eDh5ZVBFcXYwWnBGdHduby9HdlQyMDl1?= =?utf-8?B?Y1JzN05jUGxLMkk5YXo2aWpFY2J4K0hiZ2lkd2FvOE1NVUx1ZWNqYXpnYmpH?= =?utf-8?B?elJRYnRZQzA2bC93bjl4NW93RVc0T3B4Nnl4dXhDWllDd1d2MC9OMTliQXAx?= =?utf-8?B?WGorVFVpRTAraS9VNjZYWUM0RU54WVVVTXA0ZWpoekpUU3ZweU95Z0xQOFlI?= =?utf-8?B?cjVqcW51bHZkQ3kyRkRjdjAzOEZPdWhKQjFsb2Y4TFgwbDNibkZEU1pwdmNv?= =?utf-8?B?c0J1WE5pdDhaeXRscnp1R0JSRi9tYVgvQXBCcDFLTWRpK2FMS25OTFp5c2R1?= =?utf-8?Q?sx5c8wvR?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjAyMDJNQjI1NjA7NjpzYVMzSGRsZFd3TEtEazJxaXNVL1QyOUJT?= =?utf-8?B?VkZsdnJ3cUMyYkIzd2M1YjN5czBIYysxelFPTzlsdkl4SFlnbXFSa3IyR0ZS?= =?utf-8?B?QVZlcFlKWHhLdWs5YXJkeHNscjY4bG9ubGo3WFluY2czZkw5bFhKR1krQkNV?= =?utf-8?B?WmlBMkxDUGpVSXlpODh3NUN5SjRlS3BwZEZCTHpLS1FHOEtzMnpNclA1KzFj?= =?utf-8?B?SnNmVU5VK01JY3JqK2RhMnJEbTd4eWdlL3Zwd1JOdWhFZVBtZ1pFTG51QVdI?= =?utf-8?B?QVdZdEwyRjQ2MFVnRTNHTE50YVBrWU4yeTFLTjVZd0dqYUVNVjhkOWUwMjU5?= =?utf-8?B?dlRwRU84Z3lYNmNsemVnUUJDNGdQdklIL2NCTW1oL3dIaCtlNzVlV0hzaE43?= =?utf-8?B?Zm1RLy9HWEh5RjNaRk9VNjN6UEVHTGVoMlF1NzMzQXg1K1FRTHU5emNzWlV2?= =?utf-8?B?WTJESzlEVHU2Q1dtSmU5dUlkZnoyV0p5WDRIbGNINjRaN3paR2w3RnlmZkVZ?= =?utf-8?B?MFRwdnZKbmtXUXFZVWY3Rk5IZUF5Tm5nR0JEWW5EN2VDUzExNFNCRmRsR043?= =?utf-8?B?RThkSWxKNVA1Z3I3Wk5ZTnRKTm1yT25DdmpTQWtUSTlLbDZQWFdtalorb2dy?= =?utf-8?B?SUNwMnZCQ3J2Z21xZ2JRaUFHMXk0VWJtWFJiSnhmUzR2UUlWVVJWYjVvMWt1?= =?utf-8?B?NFMrQ3haNkp4cCtjT3JkV3JpKzZiMWxNeWFjZklsZ2haaDRaZ0Y2T3hXVmd1?= =?utf-8?B?Y1gzQ1UyTElTTll4ZHNvcnFjNCtMdi92MXZhYVhObnJQdE9UK0xTaUtqTUJp?= =?utf-8?B?dFNHbEF2WS9PcXg1RTVXNVFJMHhTa25HMU1NWTY4UEg4OEM0S09XTFl6Lzh1?= =?utf-8?B?NlJCdnlMV2d3RVh2TFMwbnF0VGg2NmxEY1dYTXpxNGRDYkRxN3kyeDdXNXph?= =?utf-8?B?NGVzMEt6bEYwWktNYTZSVVJmZ1FzLzExZ0JxWkZRQXJYcmluU1MzM294dlJz?= =?utf-8?B?NWdBMUZtL3RyNGtEbVNoeUJnSWJSdUhPb0dIM1A1NGNoWmxwRlVGOThleHZT?= =?utf-8?B?SlAvb2tKNkhlRzFITHZqOVFERTJHNCs1d3BTM1E4a3ZuYXVyZ2x0Um1mNzVS?= =?utf-8?B?WklZeVhRUlQ1UmZCd2FUQ2xCYTB3S0JwWXdDQ1M3alNnUDB2UHBQYzc0QkFk?= =?utf-8?B?a1BYWU9SbkpKdm02N2lhSmN2Q0crdndyOWZyeEdIbmZreUVacTd6NmFtZFpM?= =?utf-8?B?Q1NGVTVjVWxqN05vaXFrRzJnVDF5V0VXWXVNWkR1QnZyMzhOWDZqbDloT05C?= =?utf-8?Q?dOHcyRPU39jCR5o6t+gAuBYRxSiZw+arE=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0202MB2560;5:QF3aJQHZkqyiNbGkd/JWrYKyAKAcn63nJgxPUjd8NYE2oU8Eo+s1J8T3aCy/Hrji7IX/k0Y7dVsM/nWjlm/M7WPXolAda0oHaT/ZwlvFJFWFZCaWZtkyGFN6pXda+7mJYoFUZmMcN98r4jKfGp+icUHTNKbZYyygX1gQ9q/JwlM04irBMXwF7zhgkMM620zDi9oZSxdXvFTuk9IFsAXM/Q3TEPM7PTpeC22Fhtqdtqs0GuTNcou2aRcIfIo/jPpmsFbAZHt/yQzVzlAQaU74aa5FHBXeJaQpkAGu1/3tsi6zT4UwRSfdp6FzSj439cLkwHbPoHr8+BvdISVLFA1pJ2p39uzmYhDomr/mb8DI5YrSM5zOb3019itz+DwJz8P61pnLzy1/AG9Dex/gSA7qiLdrnXOOjlLo3LCpLTmIjI1+zRgU5i4lXiSerk6yI2UQzC4HvCAHAgY49twFbO59zPPIyBAjVTFaC89PfaHZQSTjwGnK+GdXXboFfh8DnVr8;24:QeP6H1Ys5Elu+WQwSZPf1wFchG/mvRce0VimjjClrk6Ondjd4loB9wQ8lO3TKsPvSfUPS+HSyoSkC/p4qapIahFpItaPl8RSwpKTyhIwhQU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0202MB2560;7:kZlpJyNFGqc7KFxMM0gyg2SiNSDNV5bbET1g4RYDfo4k3h3uMCQ5+VA3q2JRrOaQw2VAHSwh0bsQv+8mcqRlLITdnQLCmAJl+IT81NQxUBGklurmmf8H9NSvOt9IKwzFJAHy5OnEnpFoY5AxJ60PS6YtAzG6gdwThmj1l7OxSVuVj6Dm1BwiDzBnYICULdzANSjil35Qi5Ol1ru1hzHwWg9fPrw9PkBBp067JVgAC/iozsYjpZomMKCWlJnOPgAgJ6/dXBkYQQSshZ/GvodWTiLiNnoV8QYKsJxA7acaDf/S44mw7TPgD9HawOn3pZpp1JS66oP6JLkuCWfdYkWJBzLTih3PMJ1v1VZhBzbQlez3Z+/gbEtfAPUmu3g66PkRxGCppGBmSmMd35tJjKC28PZrK+gcfMj0QLX5HXc7FUyORJE2DLdp2L7CFW5u6HohjuZjxn6IW1wdHSVlD7KqASK2T6OyMNk2htdXUczJdC66u8AoM2fwchQC4lNkUkTWzkY4SpqQ9b8xkDKYkfMs3Wv8r27WRboM/BtgN1WX0gvgfYdDCmf1c16lAb2PMU0XYIr6lc0L3zp1qYstgNhFtjiqXzkLpc7Qx+TG1R3VpOKbQZ4acj15I/EPSAex4KdLQGp7rBEyGeILlM9+QhUCoPpKLeH9Qwg+e/nygyuxG/yPFB7SdoduPSobgfnFkpRTKZQCc8BkL2duJQ4GVHxAfOAF9wuufnDcZQ+ZDTC15kXYZOAIC/d82JoApI9AYdJ0GmGZcLttJs5sK8Jjg4JekQTBXcU0j4fZhK06qE8jREM= X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2017 09:40:57.6473 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0202MB2560 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 7872 Lines: 243 On 2017-06-21 09:38, Daniel Vetter wrote: > On Tue, Jun 20, 2017 at 09:25:25PM +0200, Peter Rosin wrote: >> This makes the redundant fb helpers .load_lut, .gamma_set and .gamma_get >> totally obsolete. >> >> I think the gamma_store can end up invalid on error. But the way I read >> it, that can happen in drm_mode_gamma_set_ioctl as well, so why should >> this pesky legacy fbdev stuff be any better? >> >> drm_fb_helper_save_lut_atomic justs saves the gamma lut for later. However, >> it saves it to the gamma_store which should already be up to date with what >> .gamma_get would return and is thus a nop. So, zap it. > > Removing drm_fb_helper_save_lut_atomic should be a separate patch I > think. Then 3 patches would be needed, first some hybrid thing that does it the old way, but also stores the lut in .gamma_store, then the split-out that removes drm_fb_helper_save_lut_atomic, then whatever is needed to get to the desired code. I can certainly do that, but do you want me to? I.e., the statement that drm_fb_helper_save_lut_atomic is a nop is only true when (part of) the other patch is also considered. >> Signed-off-by: Peter Rosin > >> --- >> drivers/gpu/drm/drm_fb_helper.c | 131 ++++++++++++---------------------------- >> 1 file changed, 40 insertions(+), 91 deletions(-) >> >> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c >> index 574af01..cc2d55d 100644 >> --- a/drivers/gpu/drm/drm_fb_helper.c >> +++ b/drivers/gpu/drm/drm_fb_helper.c >> @@ -229,22 +229,6 @@ int drm_fb_helper_remove_one_connector(struct drm_fb_helper *fb_helper, >> } >> EXPORT_SYMBOL(drm_fb_helper_remove_one_connector); >> >> -static void drm_fb_helper_save_lut_atomic(struct drm_crtc *crtc, struct drm_fb_helper *helper) >> -{ >> - uint16_t *r_base, *g_base, *b_base; >> - int i; >> - >> - if (helper->funcs->gamma_get == NULL) >> - return; >> - >> - r_base = crtc->gamma_store; >> - g_base = r_base + crtc->gamma_size; >> - b_base = g_base + crtc->gamma_size; >> - >> - for (i = 0; i < crtc->gamma_size; i++) >> - helper->funcs->gamma_get(crtc, &r_base[i], &g_base[i], &b_base[i], i); >> -} >> - >> static void drm_fb_helper_restore_lut_atomic(struct drm_crtc *crtc) >> { >> uint16_t *r_base, *g_base, *b_base; >> @@ -285,7 +269,6 @@ int drm_fb_helper_debug_enter(struct fb_info *info) >> if (drm_drv_uses_atomic_modeset(mode_set->crtc->dev)) >> continue; >> >> - drm_fb_helper_save_lut_atomic(mode_set->crtc, helper); >> funcs->mode_set_base_atomic(mode_set->crtc, >> mode_set->fb, >> mode_set->x, >> @@ -1167,50 +1150,6 @@ void drm_fb_helper_set_suspend_unlocked(struct drm_fb_helper *fb_helper, >> } >> EXPORT_SYMBOL(drm_fb_helper_set_suspend_unlocked); >> >> -static int setcolreg(struct drm_crtc *crtc, u16 red, u16 green, >> - u16 blue, u16 regno, struct fb_info *info) >> -{ >> - struct drm_fb_helper *fb_helper = info->par; >> - struct drm_framebuffer *fb = fb_helper->fb; >> - >> - if (info->fix.visual == FB_VISUAL_TRUECOLOR) { > > This case here seems gone, and it was also the pièce de résistance when I > tried tackling fbdev lut support. As far as I understand this stuff we do > not support FB_VISUAL_TRUECOLOR palette, and all that bitshifting here is > pointless. But I'm honestly not really clear. Oops, sorry, I simply missed that, I'll have a closer look... > I think removing this case should also be a separate patch, and I'd very > much prefer that someone with some fbdev-clue would ack it. > >> - u32 *palette; >> - u32 value; >> - /* place color in psuedopalette */ >> - if (regno > 16) >> - return -EINVAL; >> - palette = (u32 *)info->pseudo_palette; >> - red >>= (16 - info->var.red.length); >> - green >>= (16 - info->var.green.length); >> - blue >>= (16 - info->var.blue.length); >> - value = (red << info->var.red.offset) | >> - (green << info->var.green.offset) | >> - (blue << info->var.blue.offset); >> - if (info->var.transp.length > 0) { >> - u32 mask = (1 << info->var.transp.length) - 1; >> - >> - mask <<= info->var.transp.offset; >> - value |= mask; >> - } >> - palette[regno] = value; >> - return 0; >> - } >> - >> - /* >> - * The driver really shouldn't advertise pseudo/directcolor >> - * visuals if it can't deal with the palette. >> - */ >> - if (WARN_ON(!fb_helper->funcs->gamma_set || >> - !fb_helper->funcs->gamma_get)) >> - return -EINVAL; >> - >> - WARN_ON(fb->format->cpp[0] != 1); >> - >> - fb_helper->funcs->gamma_set(crtc, red, green, blue, regno); >> - >> - return 0; >> -} >> - >> /** >> * drm_fb_helper_setcmap - implementation for &fb_ops.fb_setcmap >> * @cmap: cmap to set >> @@ -1220,51 +1159,61 @@ int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info) >> { >> struct drm_fb_helper *fb_helper = info->par; >> struct drm_device *dev = fb_helper->dev; >> - const struct drm_crtc_helper_funcs *crtc_funcs; >> - u16 *red, *green, *blue, *transp; >> + struct drm_modeset_acquire_ctx ctx; >> struct drm_crtc *crtc; >> - int i, j, rc = 0; >> - int start; >> + u16 *r, *g, *b; >> + int i, ret; >> >> if (oops_in_progress) >> return -EBUSY; >> >> - drm_modeset_lock_all(dev); >> + if (cmap->start + cmap->len < cmap->start) >> + return -EINVAL; >> + >> + drm_modeset_acquire_init(&ctx, 0); >> +retry: >> + ret = drm_modeset_lock_all_ctx(dev, &ctx); >> + if (ret) >> + goto out; >> if (!drm_fb_helper_is_bound(fb_helper)) { >> - drm_modeset_unlock_all(dev); >> - return -EBUSY; >> + ret = -EBUSY; >> + goto out; >> } >> >> for (i = 0; i < fb_helper->crtc_count; i++) { >> crtc = fb_helper->crtc_info[i].mode_set.crtc; >> - crtc_funcs = crtc->helper_private; >> - >> - red = cmap->red; >> - green = cmap->green; >> - blue = cmap->blue; >> - transp = cmap->transp; >> - start = cmap->start; >> + if (!crtc->funcs->gamma_set || !crtc->gamma_size) { >> + ret = -EINVAL; >> + goto out; >> + } >> >> - for (j = 0; j < cmap->len; j++) { >> - u16 hred, hgreen, hblue, htransp = 0xffff; >> + if (cmap->start + cmap->len > crtc->gamma_size) { >> + ret = -EINVAL; >> + goto out; >> + } >> >> - hred = *red++; >> - hgreen = *green++; >> - hblue = *blue++; >> + r = crtc->gamma_store; >> + g = r + crtc->gamma_size; >> + b = g + crtc->gamma_size; >> >> - if (transp) >> - htransp = *transp++; >> + memcpy(r + cmap->start, cmap->red, cmap->len * sizeof(u16)); >> + memcpy(g + cmap->start, cmap->green, cmap->len * sizeof(u16)); >> + memcpy(b + cmap->start, cmap->blue, cmap->len * sizeof(u16)); >> >> - rc = setcolreg(crtc, hred, hgreen, hblue, start++, info); >> - if (rc) >> - goto out; >> - } >> - if (crtc_funcs->load_lut) >> - crtc_funcs->load_lut(crtc); >> + ret = crtc->funcs->gamma_set(crtc, r, g, b, >> + crtc->gamma_size, &ctx); >> + if (ret) >> + break; >> } >> - out: >> - drm_modeset_unlock_all(dev); >> - return rc; >> +out: >> + if (ret == -EDEADLK) { >> + drm_modeset_backoff(&ctx); >> + goto retry; >> + } >> + drm_modeset_drop_locks(&ctx); >> + drm_modeset_acquire_fini(&ctx); >> + >> + return ret; > > It's a pre-existing bug, but should we also try to restore the fbdev lut > in drm_fb_helper_restore_fbdev_mode_unlocked()? Would be yet another bug, > but might be relevant for your use-case. Just try to run both an fbdev > application and some kms-native thing, and then SIGKILL the native kms > app. > > But since pre-existing not really required, and probably too much effort. Good thing too, because I don't really know my way around this code... Cheers, peda > Thanks, Daniel > >> } >> EXPORT_SYMBOL(drm_fb_helper_setcmap); >> >> -- >> 2.1.4 >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel >