From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC PATCH] drm/atomic: add ASYNC_UPDATE flag to the Atomic IOCTL. Date: Thu, 28 Jun 2018 16:35:14 +0300 Message-ID: <20180628133514.GK20518@intel.com> References: <20180627212506.24061-1-enric.balletbo@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id D66D16ED90 for ; Thu, 28 Jun 2018 13:35:19 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180627212506.24061-1-enric.balletbo@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Enric Balletbo i Serra Cc: dnicoara@chromium.org, =?iso-8859-1?Q?St=E9phane?= Marchesin , Sean Paul , alexandros.frantzis@collabora.com, David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tomasz Figa , Gustavo Padovan , kernel@collabora.com List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKdW4gMjcsIDIwMTggYXQgMTE6MjU6MDZQTSArMDIwMCwgRW5yaWMgQmFsbGV0Ym8g aSBTZXJyYSB3cm90ZToKPiBGcm9tOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBj b2xsYWJvcmEuY29tPgo+IAo+IFRoaXMgZmxhZyB0ZWxscyBjb3JlIHRvIGp1bXAgYWhlYWQgdGhl IHF1ZXVlZCB1cGRhdGUgaWYgdGhlIGNvbmRpdGlvbnMKPiBpbiBkcm1fYXRvbWljX2FzeW5jX2No ZWNrKCkgYXJlIG1ldC4gVGhhdCBtZWFucyB3ZSBhcmUgb25seSBhYmxlIHRvIGRvIGFuCj4gYXN5 bmMgdXBkYXRlIGlmIG5vIG1vZGVzZXQgaXMgcGVuZGluZyBhbmQgdXBkYXRlIGZvciB0aGUgc2Ft ZSBwbGFuZSBpcwo+IG5vdCBxdWV1ZWQuCj4gCj4gSXQgdXNlcyB0aGUgYWxyZWFkeSBpbiBwbGFj ZSBpbmZyYXN0cnVjdHVyZSBmb3IgYXN5bmMgdXBkYXRlcy4KCkkgc3RpbGwgZGlzbGlrZSB0aGUg bmFtZS4gT24gSW50ZWwgaHcgImFzeW5jIGZsaXAiIG1lYW5zICJmbGlwCmFzYXAgYW5kIHRlYXIi LiBXaGVyZWFzIHRoZSBsZWdjYXkgY3Vyc29yIHRoaW5nIGk5MTUgaGFzIGlzIGEgbm9ybWFsCnN5 bmMgZmxpcC4gInVudGhyb3R0bGVkIiBvciBzb21ldGhpbmcgbGlrZSB0aGF0IHdvdWxkIGJlIGxl c3MgY29uZnVzaW5nLgoKQXMgZmFyIGFzIGludHJvZHVjaW5nIHRoaXMgZmxhZywgYXQgbGVhc3Qg aTkxNSB0b3RhbGx5IGxhY2tzIGEKbWVjaGFuaXNtIGZvciBkZWZlcnJpbmcgdGhlIGJ1ZmZlciB1 bnBpbm5pbmcgYWZ0ZXIgdGhlIHZibGFuay4gSGVuY2UKdGhpcyBjYW4ndCBiZSB1c2VkIGJ5IGk5 MTUgY3VycmVudGx5LiBJIHRoaW5rIHRoZSBvbmx5IHJlYXNvbiB3ZSBnZXQKYXdheSB3aXRoIHRo ZSBjdXJzb3IgaGFjayBpcyB0aGF0IHdlIHVuYmluZCB0aGUgdm1hIGxhemlseSBhbmQgaXQncwp1 bmxpa2VseSB0aGF0IHRoZSBzbWFsbCBjdXJzb3Igdm1hIGlzIGdvaW5nIHRvIGdldCBrbm9ja2Vk IG91dCBiZWZvcmUKdGhlIG5leHQgdmJsYW5rLiBGb3IgbGFyZ2VyIGJ1ZmZlcnMgdGhhdCByaXNr IGdyb3dzLiBXZSB3b3VsZCBwcm9iYWJseQp3YW50IGEgc3RyZXNzIHRlc3QgdGhhdCBzbWFzaGVz IHRoZSBndHQgaGFyZCB3aGlsZSBkb2luZyAiYXN5bmMKdXBkYXRlcyIgdG8gY2F0Y2ggdGhpcy4K ClRoZXJlJ3MgYWxzbyB0aGUgcXVlc3Rpb24gb2YgaG93IG91dCBmZW5jZXMgd29yayB3aXRoIHRo ZSBhc3luYwp1cGRhdGVzLiBJIHNlZSB0aGF0IHlvdSBkaXNhbGxvdyBzdWNoIGFuIHVwZGF0ZSBp ZiB0aGVyZSdzIGEgcHJldmlvdXMKc3luYyB1cGRhdGUgc3RpbGwgcGVuZGluZy4gVGhhdCBzaW1w bGlmaWVzIHRoaW5ncyBhIGxpdHRsZSBiaXQgSQpzdXBwb3NlLiBCdXQgc3RpbGwgeW91IHdvdWxk IG5lZWQgdG8gdHJhY2sgdGhlIGZlbmNlcyBwZXItcGxhbmUgYW5kCnNpZ25hbCB0aGUgb2xkIGZl bmNlIG9uZXMgYXMgc29vbiBhcyB0aGUgbmV3IHVwZGF0ZSBvdmVycmlkZXMgdGhlCnBlbmRpbmcg dXBkYXRlLiBBbmQgaWYgeW91IHdhbnQgdG8gYWxsb3cgbXVsdGlwbGUgcGxhbmVzIGluIG9uZSBh c3luYwp1cGRhdGUgdGhlbiBJIHRoaW5rIHRoZSB1YXBpIHdvdWxkIG5lZWQgdG8gYmUgY2hhbmdl ZCB0byBoYXZlCnBlci1wbGFuZSBmZW5jZXMgYXMgd2VsbCBiZWNhdXNlIHN1YnNlcXVlbnQgdXBk YXRlcyBjb3VsZCBvdmVycmlkZSAKb25seSBhIHBhcnQgb2YgYSBwcmV2aW91cyB1cGRhdGUuCgo+ IEl0IGlzIHVzZWZ1bCBmb3IgY3Vyc29yIHVwZGF0ZXMgYW5kIGFzeW5jIFBhZ2VGbGlwcyBvdmVy IHRoZSBhdG9taWMKPiBpb2N0bCwgb3RoZXJ3aXNlIGluIHNvbWUgY2FzZXMgdXBkYXRlcyBtYXkg YmUgZGVsYXllZCB0byB0aGUgcG9pbnQgdGhlCj4gdXNlciB3aWxsIG5vdGljZSBpdC4KPiAKPiBE Uk1fTU9ERV9BVE9NSUNfQVNZTkNfVVBEQVRFIHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIEF0b21p YyBJT0NUTCB0byB1c2UKPiB0aGlzIGZlYXR1cmUuCj4gCj4gU2lnbmVkLW9mZi1ieTogR3VzdGF2 byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvbT4KPiBTaWduZWQtb2ZmLWJ5 OiBFbnJpYyBCYWxsZXRibyBpIFNlcnJhIDxlbnJpYy5iYWxsZXRib0Bjb2xsYWJvcmEuY29tPgo+ IC0tLQo+IEhpLAo+IAo+IFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBpbnRyb2R1Y2UgdGhlIG5ldyBB U1lOQ19VUERBVEUgZmxhZyBmb3IgYXRvbWljCj4gb3BlcmF0aW9ucywgc2VlIHRoZSBjb21taXQg bWVzc2FnZSBmb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgo+IAo+IFRvIHRlc3QgdGhp cyBwYXRjaCB3ZSBoYXZlIGNyZWF0ZWQgYW4gSUdUIHRlc3QgdGhhdCB3ZSBwbGFuIHRvIHNlbmQg dG8KPiB0aGUgTUwgYnV0IGFsc28gd2FzIHRlc3RlZCB1c2luZyBhIHNtYWxsIHByb2dyYW0gdGhh dCBleGVyY2lzZXMgdGhlIHVBUEkKPiBmb3IgZWFzeSBzYW5pdHkgdGVzdGluZy4gVGhlIHByb2dy YW0gY3JlYXRlZCBieSBBbGV4YW5kcm9zIGNhbiBiZSBmb3VuZCBoZXJlCj4gWzJdLiBUbyB0ZXN0 LCBqdXN0IGJ1aWxkIHRoZSBwcm9ncmFtIGFuZCB1c2UgdGhlIC0tYXRvbWljIGZsYWcgdG8gdXNl IHRoZQo+IGN1cnNvciBwbGFuZSBpbiBub3JtYWwgKGJsb2NraW5nIG1vZGUpLCBhbmQgLS1hdG9t aWMtYXN5bmMgdG8gdXNlIHRoZSBjdXJzb3IKPiBwbGFuZSB3aXRoIHRoZSBBU1lOQ19VUERBVEUg ZmxhZy5FLmcuCj4gCj4gICBkcm1fY3Vyc29yIC0tYXRvbWljCj4gCj4gb3IKPiAKPiAgIGRybV9j dXJzb3IgLS1hdG9taWMtYXN5bmMKPiAKPiBUaGUgdGVzdCB3b3JrZWQgb24gYSBTYW1zdW5nIENo cm9tZWJvb2sgUGx1cyBvbiB0b3Agb2YgbWFpbmxpbmUgcGx1cwo+IHRoZSBwYXRjaCB0byB1cGRh dGUgY3Vyc29ycyBhc3luY2hyb25vdXNseSB0aHJvdWdoIGF0b21pYyBmb3IgdGhlCj4gZHJtL3Jv Y2tjaGlwIGRyaXZlciBbM10uCj4gCj4gQWxleGFuZHJvcyBhbHNvIGRpZCBhIHByb29mLW9mLWNv bmNlcHQgdG8gdXNlIHRoaXMgZmxhZyBhbmQgZHJhdyBjdXJzb3JzCj4gdXNpbmcgYXRvbWljIGlm IHBvc3NpYmxlIG9uIG96b25lIFsxXS4KPiAKPiBCZXN0IHJlZ2FyZHMsCj4gIEVucmljCj4gCj4g WzFdIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9jaHJvbWl1bS9z cmMvKy8xMDkyNzExCj4gWzJdIGh0dHBzOi8vZ2l0bGFiLmNvbGxhYm9yYS5jb20vYWxmL2RybS1j dXJzb3IKPiBbM10gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDQ5MjY5My8K PiAKPiAKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgfCA2ICsrKysrKwo+ ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8IDkgKysrKysrLS0tCj4gIGlu Y2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCAgICAgICAgIHwgNCArKystCj4gIDMgZmlsZXMgY2hh bmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj LmMKPiBpbmRleCBjODI1Yzc2ZWRjMWQuLjE1Yjc5OWY0Njk4MiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWMuYwo+IEBAIC04MCw2ICs4MCw3IEBAIGRybV9hdG9taWNfc3RhdGVfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkgKiBzZXR0 aW5nIHRoaXMgYXBwcm9wcmlhdGVseT8KPiAgCSAqLwo+ICAJc3RhdGUtPmFsbG93X21vZGVzZXQg PSB0cnVlOwo+ICsJc3RhdGUtPmFzeW5jX3VwZGF0ZSA9IHRydWU7Cj4gIAo+ICAJc3RhdGUtPmNy dGNzID0ga2NhbGxvYyhkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjLAo+ICAJCQkgICAgICAgc2l6 ZW9mKCpzdGF0ZS0+Y3J0Y3MpLCBHRlBfS0VSTkVMKTsKPiBAQCAtMjMyMCw2ICsyMzIxLDEwIEBA IGludCBkcm1fbW9kZV9hdG9taWNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJ KGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQpKQo+ICAJCXJldHVybiAtRUlO VkFMOwo+ICAKPiArCWlmICgoYXJnLT5mbGFncyAmIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RF U0VUKSAmJgo+ICsJCQkoYXJnLT5mbGFncyAmIERSTV9NT0RFX0FUT01JQ19BU1lOQ19VUERBVEUp KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiAgCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgm Y3R4LCBEUk1fTU9ERVNFVF9BQ1FVSVJFX0lOVEVSUlVQVElCTEUpOwo+ICAKPiAgCXN0YXRlID0g ZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwo+IEBAIC0yMzI4LDYgKzIzMzMsNyBAQCBpbnQg ZHJtX21vZGVfYXRvbWljX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJc3Rh dGUtPmFjcXVpcmVfY3R4ID0gJmN0eDsKPiAgCXN0YXRlLT5hbGxvd19tb2Rlc2V0ID0gISEoYXJn LT5mbGFncyAmIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VUKTsKPiArCXN0YXRlLT5hc3lu Y191cGRhdGUgPSAhIShhcmctPmZsYWdzICYgRFJNX01PREVfQVRPTUlDX0FTWU5DX1VQREFURSk7 Cj4gIAo+ICByZXRyeToKPiAgCXBsYW5lX21hc2sgPSAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jCj4gaW5kZXggYzM1NjU0NTkxYzEyLi5hZWIwNTIzZDNiY2YgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IEBAIC04OTEsNyArODkxLDcgQEAgaW50IGRybV9h dG9taWNfaGVscGVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlpZiAocmV0KQo+ ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKHN0YXRlLT5sZWdhY3lfY3Vyc29yX3VwZGF0ZSkK PiArCWlmIChzdGF0ZS0+YXN5bmNfdXBkYXRlIHx8IHN0YXRlLT5sZWdhY3lfY3Vyc29yX3VwZGF0 ZSkKPiAgCQlzdGF0ZS0+YXN5bmNfdXBkYXRlID0gIWRybV9hdG9taWNfaGVscGVyX2FzeW5jX2No ZWNrKGRldiwgc3RhdGUpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gQEAgLTE1MjYsMTMgKzE1MjYs MTYgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX2FzeW5jX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAlpZiAobmV3X3BsYW5lX3N0YXRlLT5mZW5jZSkKPiAgCQlyZXR1cm4gLUVJTlZB TDsKPiAgCj4gKwkvKiBPbmx5IGRvIGFuIGFzeW5jIHVwZGF0ZSBpZiB0aGVyZSBpcyBhIHBlbmRp bmcgY29tbWl0LiAqLwo+ICsJaWYgKCFvbGRfcGxhbmVfc3RhdGUtPmNvbW1pdCkKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCj4gIAkvKgo+ICAJICogRG9uJ3QgZG8gYW4gYXN5bmMgdXBkYXRlIGlm IHRoZXJlIGlzIGFuIG91dHN0YW5kaW5nIGNvbW1pdCBtb2RpZnlpbmcKPiAgCSAqIHRoZSBwbGFu ZS4gIFRoaXMgcHJldmVudHMgb3VyIGFzeW5jIHVwZGF0ZSdzIGNoYW5nZXMgZnJvbSBnZXR0aW5n Cj4gIAkgKiBvdmVycmlkZGVuIGJ5IGEgcHJldmlvdXMgc3luY2hyb25vdXMgdXBkYXRlJ3Mgc3Rh dGUuCj4gIAkgKi8KPiAtCWlmIChvbGRfcGxhbmVfc3RhdGUtPmNvbW1pdCAmJgo+IC0JICAgICF0 cnlfd2FpdF9mb3JfY29tcGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT5jb21taXQtPmh3X2RvbmUp KQo+ICsJaWYgKCF0cnlfd2FpdF9mb3JfY29tcGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT5jb21t aXQtPmh3X2RvbmUpKQo+ICAJCXJldHVybiAtRUJVU1k7Cj4gIAo+ICAJcmV0dXJuIGZ1bmNzLT5h dG9taWNfYXN5bmNfY2hlY2socGxhbmUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUu aAo+IGluZGV4IDUwYmNmNDIxNGZmOS4uNzcyZTg0ZjBlZGViIDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUu aAo+IEBAIC03MTgsMTMgKzcxOCwxNSBAQCBzdHJ1Y3QgZHJtX21vZGVfZGVzdHJveV9kdW1iIHsK PiAgI2RlZmluZSBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIDB4MDEwMAo+ICAjZGVmaW5lIERS TV9NT0RFX0FUT01JQ19OT05CTE9DSyAgMHgwMjAwCj4gICNkZWZpbmUgRFJNX01PREVfQVRPTUlD X0FMTE9XX01PREVTRVQgMHgwNDAwCj4gKyNkZWZpbmUgRFJNX01PREVfQVRPTUlDX0FTWU5DX1VQ REFURSAgMHgwODAwCj4gIAo+ICAjZGVmaW5lIERSTV9NT0RFX0FUT01JQ19GTEFHUyAoXAo+ICAJ CURSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCB8XAo+ICAJCURSTV9NT0RFX1BBR0VfRkxJUF9BU1lO QyB8XAo+ICAJCURSTV9NT0RFX0FUT01JQ19URVNUX09OTFkgfFwKPiAgCQlEUk1fTU9ERV9BVE9N SUNfTk9OQkxPQ0sgfFwKPiAtCQlEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCkKPiArCQlE Uk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCB8XAo+ICsJCURSTV9NT0RFX0FUT01JQ19BU1lO Q19VUERBVEUpCj4gIAo+ICBzdHJ1Y3QgZHJtX21vZGVfYXRvbWljIHsKPiAgCV9fdTMyIGZsYWdz Owo+IC0tIAo+IDIuMTguMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DAC7EC43144 for ; Thu, 28 Jun 2018 13:35:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 896C427458 for ; Thu, 28 Jun 2018 13:35:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 896C427458 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965967AbeF1NfU (ORCPT ); Thu, 28 Jun 2018 09:35:20 -0400 Received: from mga04.intel.com ([192.55.52.120]:3430 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753771AbeF1NfT (ORCPT ); Thu, 28 Jun 2018 09:35:19 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jun 2018 06:35:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,283,1526367600"; d="scan'208";a="51217755" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by fmsmga008.fm.intel.com with SMTP; 28 Jun 2018 06:35:15 -0700 Received: by stinkbox (sSMTP sendmail emulation); Thu, 28 Jun 2018 16:35:14 +0300 Date: Thu, 28 Jun 2018 16:35:14 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Enric Balletbo i Serra Cc: David Airlie , dnicoara@chromium.org, =?iso-8859-1?Q?St=E9phane?= Marchesin , Sean Paul , alexandros.frantzis@collabora.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tomasz Figa , Gustavo Padovan , kernel@collabora.com Subject: Re: [RFC PATCH] drm/atomic: add ASYNC_UPDATE flag to the Atomic IOCTL. Message-ID: <20180628133514.GK20518@intel.com> References: <20180627212506.24061-1-enric.balletbo@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180627212506.24061-1-enric.balletbo@collabora.com> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jun 27, 2018 at 11:25:06PM +0200, Enric Balletbo i Serra wrote: > From: Gustavo Padovan > > This flag tells core to jump ahead the queued update if the conditions > in drm_atomic_async_check() are met. That means we are only able to do an > async update if no modeset is pending and update for the same plane is > not queued. > > It uses the already in place infrastructure for async updates. I still dislike the name. On Intel hw "async flip" means "flip asap and tear". Whereas the legcay cursor thing i915 has is a normal sync flip. "unthrottled" or something like that would be less confusing. As far as introducing this flag, at least i915 totally lacks a mechanism for deferring the buffer unpinning after the vblank. Hence this can't be used by i915 currently. I think the only reason we get away with the cursor hack is that we unbind the vma lazily and it's unlikely that the small cursor vma is going to get knocked out before the next vblank. For larger buffers that risk grows. We would probably want a stress test that smashes the gtt hard while doing "async updates" to catch this. There's also the question of how out fences work with the async updates. I see that you disallow such an update if there's a previous sync update still pending. That simplifies things a little bit I suppose. But still you would need to track the fences per-plane and signal the old fence ones as soon as the new update overrides the pending update. And if you want to allow multiple planes in one async update then I think the uapi would need to be changed to have per-plane fences as well because subsequent updates could override only a part of a previous update. > It is useful for cursor updates and async PageFlips over the atomic > ioctl, otherwise in some cases updates may be delayed to the point the > user will notice it. > > DRM_MODE_ATOMIC_ASYNC_UPDATE should be passed to the Atomic IOCTL to use > this feature. > > Signed-off-by: Gustavo Padovan > Signed-off-by: Enric Balletbo i Serra > --- > Hi, > > This is an attempt to introduce the new ASYNC_UPDATE flag for atomic > operations, see the commit message for a more detailed description. > > To test this patch we have created an IGT test that we plan to send to > the ML but also was tested using a small program that exercises the uAPI > for easy sanity testing. The program created by Alexandros can be found here > [2]. To test, just build the program and use the --atomic flag to use the > cursor plane in normal (blocking mode), and --atomic-async to use the cursor > plane with the ASYNC_UPDATE flag.E.g. > > drm_cursor --atomic > > or > > drm_cursor --atomic-async > > The test worked on a Samsung Chromebook Plus on top of mainline plus > the patch to update cursors asynchronously through atomic for the > drm/rockchip driver [3]. > > Alexandros also did a proof-of-concept to use this flag and draw cursors > using atomic if possible on ozone [1]. > > Best regards, > Enric > > [1] https://chromium-review.googlesource.com/c/chromium/src/+/1092711 > [2] https://gitlab.collabora.com/alf/drm-cursor > [3] https://patchwork.kernel.org/patch/10492693/ > > > drivers/gpu/drm/drm_atomic.c | 6 ++++++ > drivers/gpu/drm/drm_atomic_helper.c | 9 ++++++--- > include/uapi/drm/drm_mode.h | 4 +++- > 3 files changed, 15 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index c825c76edc1d..15b799f46982 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -80,6 +80,7 @@ drm_atomic_state_init(struct drm_device *dev, struct drm_atomic_state *state) > * setting this appropriately? > */ > state->allow_modeset = true; > + state->async_update = true; > > state->crtcs = kcalloc(dev->mode_config.num_crtc, > sizeof(*state->crtcs), GFP_KERNEL); > @@ -2320,6 +2321,10 @@ int drm_mode_atomic_ioctl(struct drm_device *dev, > (arg->flags & DRM_MODE_PAGE_FLIP_EVENT)) > return -EINVAL; > > + if ((arg->flags & DRM_MODE_ATOMIC_ALLOW_MODESET) && > + (arg->flags & DRM_MODE_ATOMIC_ASYNC_UPDATE)) > + return -EINVAL; > + > drm_modeset_acquire_init(&ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE); > > state = drm_atomic_state_alloc(dev); > @@ -2328,6 +2333,7 @@ int drm_mode_atomic_ioctl(struct drm_device *dev, > > state->acquire_ctx = &ctx; > state->allow_modeset = !!(arg->flags & DRM_MODE_ATOMIC_ALLOW_MODESET); > + state->async_update = !!(arg->flags & DRM_MODE_ATOMIC_ASYNC_UPDATE); > > retry: > plane_mask = 0; > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index c35654591c12..aeb0523d3bcf 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -891,7 +891,7 @@ int drm_atomic_helper_check(struct drm_device *dev, > if (ret) > return ret; > > - if (state->legacy_cursor_update) > + if (state->async_update || state->legacy_cursor_update) > state->async_update = !drm_atomic_helper_async_check(dev, state); > > return ret; > @@ -1526,13 +1526,16 @@ int drm_atomic_helper_async_check(struct drm_device *dev, > if (new_plane_state->fence) > return -EINVAL; > > + /* Only do an async update if there is a pending commit. */ > + if (!old_plane_state->commit) > + return -EINVAL; > + > /* > * Don't do an async update if there is an outstanding commit modifying > * the plane. This prevents our async update's changes from getting > * overridden by a previous synchronous update's state. > */ > - if (old_plane_state->commit && > - !try_wait_for_completion(&old_plane_state->commit->hw_done)) > + if (!try_wait_for_completion(&old_plane_state->commit->hw_done)) > return -EBUSY; > > return funcs->atomic_async_check(plane, new_plane_state); > diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h > index 50bcf4214ff9..772e84f0edeb 100644 > --- a/include/uapi/drm/drm_mode.h > +++ b/include/uapi/drm/drm_mode.h > @@ -718,13 +718,15 @@ struct drm_mode_destroy_dumb { > #define DRM_MODE_ATOMIC_TEST_ONLY 0x0100 > #define DRM_MODE_ATOMIC_NONBLOCK 0x0200 > #define DRM_MODE_ATOMIC_ALLOW_MODESET 0x0400 > +#define DRM_MODE_ATOMIC_ASYNC_UPDATE 0x0800 > > #define DRM_MODE_ATOMIC_FLAGS (\ > DRM_MODE_PAGE_FLIP_EVENT |\ > DRM_MODE_PAGE_FLIP_ASYNC |\ > DRM_MODE_ATOMIC_TEST_ONLY |\ > DRM_MODE_ATOMIC_NONBLOCK |\ > - DRM_MODE_ATOMIC_ALLOW_MODESET) > + DRM_MODE_ATOMIC_ALLOW_MODESET |\ > + DRM_MODE_ATOMIC_ASYNC_UPDATE) > > struct drm_mode_atomic { > __u32 flags; > -- > 2.18.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Ville Syrjälä Intel