From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ezequiel Garcia Subject: Re: [PATCH v8 4/5] media: rkvdec: Add the rkvdec driver Date: Wed, 08 Apr 2020 11:04:10 -0300 Message-ID: References: <20200403221345.16702-1-ezequiel@collabora.com> <20200403221345.16702-5-ezequiel@collabora.com> <5c417620e1baeed7ec4ac750ab481366df2aa590.camel@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane-mx.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Nicolas Dufresne Cc: Heiko Stuebner , Alexandre Courbot , Jonas Karlman , Linux Kernel Mailing List , Tomasz Figa , Hans Verkuil , "open list:ARM/Rockchip SoC..." , Boris Brezillon , Jeffrey Kardatzke , kernel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org, DVB_Linux_Media List-Id: linux-rockchip.vger.kernel.org T24gVHVlLCAyMDIwLTA0LTA3IGF0IDE1OjM2IC0wNDAwLCBOaWNvbGFzIER1ZnJlc25lIHdyb3Rl Ogo+IExlIG1hcmRpIDA3IGF2cmlsIDIwMjAgw6AgMTE6MzUgLTAzMDAsIEV6ZXF1aWVsIEdhcmNp YSBhIMOpY3JpdCA6Cj4gPiBPbiBNb24sIDIwMjAtMDQtMDYgYXQgMTY6MjcgLTA0MDAsIE5pY29s YXMgRHVmcmVzbmUgd3JvdGU6Cj4gPiA+IExlIHZlbi4gMyBhdnIuIDIwMjAgw6AgMTg6MTQsIEV6 ZXF1aWVsIEdhcmNpYSA8ZXplcXVpZWxAY29sbGFib3JhLmNvbT4gYSDDqWNyaXQgOgo+ID4gPiA+ IEZyb206IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+Cj4g PiA+ID4gCj4gPiA+ID4gVGhlIHJvY2tjaGlwIHZkZWMgYmxvY2sgaXMgYSBzdGF0ZWxlc3MgZGVj b2RlciB0aGF0J3MgYWJsZSB0byBkZWNvZGUKPiA+ID4gPiBIMjY0LCBIRVZDIGFuZCBWUDkgY29u dGVudC4gVGhpcyBjb21taXQgYWRkcyB0aGUgY29yZSBpbmZyYXN0cnVjdHVyZQo+ID4gPiA+IGFu ZCB0aGUgSDI2NCBiYWNrZW5kLiBTdXBwb3J0IGZvciBWUDkgYW5kIEhFVlMgd2lsbCBiZSBhZGRl ZCBsYXRlciBvbi4KPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBCb3JpcyBCcmV6aWxs b24gPGJvcmlzLmJyZXppbGxvbkBjb2xsYWJvcmEuY29tPgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6 IEV6ZXF1aWVsIEdhcmNpYSA8ZXplcXVpZWxAY29sbGFib3JhLmNvbT4KPiA+ID4gCj4gPiA+IFNv cnJ5IGZvciB0aGUgbGF0ZSBmZWVkYmFjayAoZ290IGEgY29tbWVudCBsb3dlcikgLi4uCj4gPiA+ IAo+ID4gPiBUZXN0ZWQtYnk6IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29s bGFib3JhLmNvbT4KPiA+ID4gCj4gPiAKPiA+IE5pY2UsIHRoYW5rIHlvdS4KPiA+IAo+ID4gPiA+ IC0tCj4gPiA+ID4gdjg6Cj4gPiA+ID4gKiBGaXgga2ZyZWUgYW5kIHN0eWxlIGNoYW5nZXMsIGFz IHN1Z2dlc3RlZCBieSBBbmRyaXkuCj4gPiA+ID4gdjc6Cj4gPiA+ID4gKiBodmVya3VpbC1jaXNj b0B4czRhbGwubmw6IHJlcGxhY2VkIFZGTF9UWVBFX0dSQUJCRVIgYnkgX1ZJREVPCj4gPiA+ID4g KiBVc2UgbWFjcm9zIGFuZCBBUlJBWV9TSVpFIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVycywKPiA+ ID4gPiAgIGFzIHN1Z2dlc3RlZCBieSBNYXVyby4KPiA+ID4gPiAqIFJlbmFtZWQgTV9OIG1hY3Jv LCBzdWdnZXN0ZWQgYnkgTWF1cm8uCj4gPiA+ID4gKiBVc2UgdjRsMl9tMm1fYnVmX2RvbmVfYW5k X2pvYl9maW5pc2guCj4gPiA+ID4gKiBTZXQgYnVmZmVycycgemVyb3RoIHBsYW5lIHBheWxvYWQg aW4gLmJ1Zl9wcmVwYXJlCj4gPiA+ID4gKiBSZWZhY3RvciB0cnkvc19mbXQgZm9yIHNwZWMgY29t cGxpYW5jZS4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgNyArCj4gPiA+ID4gIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9L Y29uZmlnICAgICAgICAgICAgICB8ICAgIDIgKwo+ID4gPiA+ICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvTWFrZWZpbGUgICAgICAgICAgICAgfCAgICAxICsKPiA+ID4gPiAgZHJpdmVycy9zdGFnaW5n L21lZGlhL3JrdmRlYy9LY29uZmlnICAgICAgIHwgICAxNSArCj4gPiA+ID4gIGRyaXZlcnMvc3Rh Z2luZy9tZWRpYS9ya3ZkZWMvTWFrZWZpbGUgICAgICB8ICAgIDMgKwo+ID4gPiA+ICBkcml2ZXJz L3N0YWdpbmcvbWVkaWEvcmt2ZGVjL1RPRE8gICAgICAgICAgfCAgIDExICsKPiA+ID4gPiAgZHJp dmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYy9ya3ZkZWMtaDI2NC5jIHwgMTE1NiArKysrKysrKysr KysrKysrKysrKwo+ID4gPiA+ICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjL3JrdmRlYy1y ZWdzLmggfCAgMjIzICsrKysKPiA+ID4gPiAgZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYy9y a3ZkZWMuYyAgICAgIHwgMTEwMyArKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gIGRyaXZlcnMv c3RhZ2luZy9tZWRpYS9ya3ZkZWMvcmt2ZGVjLmggICAgICB8ICAxMjEgKysKPiA+ID4gPiAgMTAg ZmlsZXMgY2hhbmdlZCwgMjY0MiBpbnNlcnRpb25zKCspCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvcmt2ZGVjL0tjb25maWcKPiA+ID4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvTWFrZWZpbGUKPiA+ID4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvVE9ETwo+ ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL3JrdmRlYy9y a3ZkZWMtaDI2NC5jCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcv bWVkaWEvcmt2ZGVjL3JrdmRlYy1yZWdzLmgKPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvcmt2ZGVjLmMKPiA+ID4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvcmt2ZGVjLmgKPiA+ID4gPiAKPiA+ IFsuLl0KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHNldF9wc19maWVsZCh1MzIgKmJ1 Ziwgc3RydWN0IHJrdmRlY19wc19maWVsZCBmaWVsZCwgdTMyIHZhbHVlKQo+ID4gPiA+ICt7Cj4g PiA+ID4gKyAgICAgICB1OCBiaXQgPSBmaWVsZC5vZmZzZXQgJSAzMiwgd29yZCA9IGZpZWxkLm9m ZnNldCAvIDMyOwo+ID4gPiA+ICsgICAgICAgdTY0IG1hc2sgPSBHRU5NQVNLX1VMTChiaXQgKyBm aWVsZC5sZW4gLSAxLCBiaXQpOwo+ID4gPiA+ICsgICAgICAgdTY0IHZhbCA9ICgodTY0KXZhbHVl IDw8IGJpdCkgJiBtYXNrOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIGJ1Zlt3b3JkXSAmPSB+ bWFzazsKPiA+ID4gPiArICAgICAgIGJ1Zlt3b3JkXSB8PSB2YWw7Cj4gPiA+ID4gKyAgICAgICBp ZiAoYml0ICsgZmllbGQubGVuID4gMzIpIHsKPiA+ID4gPiArICAgICAgICAgICAgICAgYnVmW3dv cmQgKyAxXSAmPSB+KG1hc2sgPj4gMzIpOwo+ID4gPiA+ICsgICAgICAgICAgICAgICBidWZbd29y ZCArIDFdIHw9IHZhbCA+PiAzMjsKPiA+ID4gPiArICAgICAgIH0KPiA+ID4gPiArfQo+ID4gPiA+ ICsKPiA+ID4gPiArc3RhdGljIHZvaWQgYXNzZW1ibGVfaHdfcHBzKHN0cnVjdCBya3ZkZWNfY3R4 ICpjdHgsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBya3ZkZWNf aDI2NF9ydW4gKnJ1bikKPiA+ID4gPiArewo+ID4gPiA+ICsgICAgICAgc3RydWN0IHJrdmRlY19o MjY0X2N0eCAqaDI2NF9jdHggPSBjdHgtPnByaXY7Cj4gPiA+ID4gKyAgICAgICBjb25zdCBzdHJ1 Y3QgdjRsMl9jdHJsX2gyNjRfc3BzICpzcHMgPSBydW4tPnNwczsKPiA+ID4gPiArICAgICAgIGNv bnN0IHN0cnVjdCB2NGwyX2N0cmxfaDI2NF9wcHMgKnBwcyA9IHJ1bi0+cHBzOwo+ID4gPiA+ICsg ICAgICAgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oMjY0X2RlY29kZV9wYXJhbXMgKmRlY19wYXJh bXMgPSBydW4tPmRlY29kZV9wYXJhbXM7Cj4gPiA+ID4gKyAgICAgICBjb25zdCBzdHJ1Y3QgdjRs Ml9oMjY0X2RwYl9lbnRyeSAqZHBiID0gZGVjX3BhcmFtcy0+ZHBiOwo+ID4gPiA+ICsgICAgICAg c3RydWN0IHJrdmRlY19oMjY0X3ByaXZfdGJsICpwcml2X3RibCA9IGgyNjRfY3R4LT5wcml2X3Ri bC5jcHU7Cj4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qgcmt2ZGVjX3Nwc19wcHNfcGFja2V0ICpod19w czsKPiA+ID4gPiArICAgICAgIGRtYV9hZGRyX3Qgc2NhbGluZ19saXN0X2FkZHJlc3M7Cj4gPiA+ ID4gKyAgICAgICB1MzIgc2NhbGluZ19kaXN0YW5jZTsKPiA+ID4gPiArICAgICAgIHUzMiBpOwo+ ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIC8qCj4gPiA+ID4gKyAgICAgICAgKiBIVyByZWFkIHRo ZSBTUFMvUFBTIGluZm9ybWF0aW9uIGZyb20gUFBTIHBhY2tldCBpbmRleCBieSBQUFMgaWQuCj4g PiA+ID4gKyAgICAgICAgKiBvZmZzZXQgZnJvbSB0aGUgYmFzZSBjYW4gYmUgY2FsY3VsYXRlZCBi eSBQUFNfaWQgKiAzMiAoc2l6ZSBwZXIgUFBTCj4gPiA+ID4gKyAgICAgICAgKiBwYWNrZXQgdW5p dCkuIHNvIHRoZSBkcml2ZXIgY29weSBTUFMvUFBTIGluZm9ybWF0aW9uIHRvIHRoZSBleGFjdCBQ UFMKPiA+ID4gPiArICAgICAgICAqIHBhY2tldCB1bml0IGZvciBIVyBhY2Nlc3NpbmcuCj4gPiA+ ID4gKyAgICAgICAgKi8KPiA+ID4gPiArICAgICAgIGh3X3BzID0gJnByaXZfdGJsLT5wYXJhbV9z ZXRbcHBzLT5waWNfcGFyYW1ldGVyX3NldF9pZF07Cj4gPiA+ID4gKyAgICAgICBtZW1zZXQoaHdf cHMsIDAsIHNpemVvZigqaHdfcHMpKTsKPiA+ID4gPiArCj4gPiA+ID4gKyNkZWZpbmUgV1JJVEVf UFBTKHZhbHVlLCBmaWVsZCkgc2V0X3BzX2ZpZWxkKGh3X3BzLT5pbmZvLCBmaWVsZCwgdmFsdWUp Cj4gPiA+ID4gKyAgICAgICAvKiB3cml0ZSBzcHMgKi8KPiA+ID4gPiArICAgICAgIFdSSVRFX1BQ UygweGYsIFNFUV9QQVJBTUVURVJfU0VUX0lEKTsKPiA+ID4gPiArICAgICAgIFdSSVRFX1BQUygw eGZmLCBQUk9GSUxFX0lEQyk7Cj4gPiA+ID4gKyAgICAgICBXUklURV9QUFMoMSwgQ09OU1RSQUlO VF9TRVQzX0ZMQUcpOwo+ID4gPiAKPiA+ID4gQXQgZmlyc3QgSSBmb3VuZCB0aGF0IHBhcnQgcmF0 aGVyIGludGVyZXN0aW5nLCBidXQgSSBzZWUgdGhpcwo+ID4gPiBoYXJkY29kaW5nIG1hdGNoZXMg d2hhdCBSb2NrY2hpcCBkby4KPiA+ID4gCj4gPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9yb2NrY2hp cC1saW51eC9tcHAvYmxvYi9yZWxlYXNlL21wcC9oYWwvcmtkZWMvaDI2NGQvaGFsX2gyNjRkX3Jr dl9yZWcuYyNMMjY2Cj4gPiA+IAo+ID4gPiA+ICsgICAgICAgV1JJVEVfUFBTKHNwcy0+Y2hyb21h X2Zvcm1hdF9pZGMsIENIUk9NQV9GT1JNQVRfSURDKTsKPiA+ID4gCj4gPiA+IEJ1dCBoZXJlJ3Mg aXQncyBub3Qgc28gZ3JlYXQuIFRoaXMgZHJpdmVyIGRvZXMgbm90IGltcGxlbWVudCBhbnkga2lu ZAo+ID4gPiBvZiB2YWxpZGF0aW9uLiBJbiBmYWN0LCBpZiBJIHBhc3MgMwo+ID4gPiBoZXJlICAo WUNiQ3IgNDo0OjQpIGl0IHdpbGwgYWNjZXB0IGl0LCBhbmQga2luZCBvZiBkZWNvZGUgc29tZSBm cmFtZXMsCj4gPiA+IGJ1dCBldmVudHVhbGx5IHdpdGggY3Jhc2ggYW5kCj4gPiA+IHJlYm9vdCBp cyBuZWVkZWQuIFdlIHNob3VsZCAoYXMgZGVmaW5lZCBpbiB0aGUgU3RhdGVsc3MgQ09ERUMgc3Bl YykKPiA+ID4gdmFsaWRhdGUgdGhlIFNQUyBhbmQgcmVmdXNlIGlmCj4gPiA+IGFuIHVuc3VwcG9y dGVkIHByb2ZpbGUgaWRjLCBjaHJvbWEgaWRjLCBsdW1hL2Nocm9tYSBkZXB0aCBvciBjb2RlZAo+ ID4gPiBzaXplIGlzIHJlcXVlc3RlZC4KPiA+IAo+ID4gUGVyaGFwcyB3ZSBjb3VsZCB2YWxpZGF0 ZSB0aGF0IGF0IHJlcXVlc3RfdmFsaWRhdGUgdGltZSwKPiA+IG9yIG1heWJlIG9wcy50cnlfY3Ry bCBpcyBiZXR0ZXIuCj4gPiAKPiA+IDwvdGhpbmtpbmdfb3V0X2xvdWQ+Cj4gPiAKPiA+ID4gVmFs aWRhdGluZyB0aGUKPiA+ID4gU19GTVQgaXMgbm90IHN1ZmZpY2llbnQgYXMgb25lIGNhbiB0cmlj ayB0aGUgZHJpdmVyIGluIGFsbG9jYXRpbmcKPiA+ID4gYnVmZmVycyB0aGF0IGFyZSB0b28gc21h bGwuCj4gPiA+IAo+ID4gCj4gPiBJIGFtIG5vdCBzdXJlIEkgZm9sbG93IHlvdTogaG93IGRvIHlv dSB0aGluayB0aGUgZHJpdmVyCj4gPiBjYW4gYmUgdHJpY2tlZCBsaWtlIHRoaXM/Cj4gCj4gV2hh dCBJIHNlZSBpcyB0aGF0IHRoZXJlIGlzIG5vIGNyb3NzIHZhbGlkYXRpb24gYmV0d2VlbiB0aGUg U1BTCj4gcmVnaXN0ZXIgY29uZmlndXJhdGlvbiBhbmQgdGhlIGZyYW1lIGFsbG9jYXRpb25zIGRv bmUgdGhyb3VnaCBTX0ZNVC4gU28KPiBpZiBJIGNoZWF0IGluIFNfRk1ULCBhbmQgdGhlbiBwYXNz IGFuIFNQUyB0aGF0IGlzIGxhcmdlciB0aGVuCj4gYW5ub3VuY2VkLCB0aGUgSFcgY291bGQgcG90 ZW50aWFsbHkgb3ZlcnJ1biBidWZmZXJzLiBUaGF0IGVudGlyZWx5Cj4gZGVwZW5kcyBvbiBob3cg bXVjaCByb2J1c3RuZXNzIHRoZXJlIGlzIGluIHRoZSBIVyBpbXBsZW1lbnRhdGlvbiBpc2VsZgo+ IChhbmQgaWYgd2UgaGF2ZSBhIHJlZ2lzdGVyIHRvIHBhc3MgdGhlIGJ1ZmZlciBzaXplKS4KPiAK PiBUaGlzIGlzIG9mIGNvdXJzZSBhIGd1dCBmZWVsaW5nLCBJIGhhdmVuJ3QgZm91bmQgdGltZSB0 byB0ZXN0IHRoaXMgeWV0LAo+IGJ1dCBpdCBjYW1lIHRvIG15IG1pbmQgYWZ0ZXIgSSBub3RpY2Ug dGhhdCBwYXNzaW5nIGEgNDo0OjQgY2hvbWFfaWRjCj4gc3RyZWFtIGNhdXNlcyBkcml2ZXIgZmFp bHVyZSAobm8gdmlzaWJsZSBtZW1vcnkgY29ycnVwdGlvbiBvciBvdmVycnVuCj4gdGhvdWdoLCB0 aGUgZHJpdmVyIGp1c3Qgc3RvcHMgd29ya2luZykuIFNvIHRoZSByZXN1bHRpbmcgaXNzdWVzIG1p Z2h0Cj4gbm90IGJlIHRoYXQgYmFkLCBidXQgeW91IGVuZHVwIGxvb3NpbmcgdGhlIGRlY29kZXIu Cj4gCgpOb3RlIHRoYXQgdGhpcyBkcml2ZXIgKGFzIHdlbGwgYXMgSGFudHJvKSBwcm9ncmFtcyB0 aGUgaGFyZHdhcmUKdXNpbmcgdGhlIG5lZ290aWF0ZWQgcmVzb2x1dGlvbiwgYW5kIGlnbm9yZXMg d2hhdCB0aGUgU1BTIHNheXMKYWJvdXQgaXQuCgpJdCBzaG91bGRuJ3QgYmUgcG9zc2libGUgdG8g dHJpY2sgdGhlIGRyaXZlciB0aGlzIHdheS4KCk9UT0gsIGJvdGggZHJpdmVycyBzaG91bGQgaGF2 ZSBhZGRpdGlvbmFsIGNoZWNrcyBmb3Igb3RoZXIgU1BTCmZpZWxkcyBzdWNoIGFzIGNocm9tYV9m b3JtYXRfaWRjIGFuZCBsdW1hX2JpdF9kZXB0aCwgYXMgeW91CnBvaW50ZWQgb3V0LgoKSSdsbCBh ZGQgdGhpcyB0byBteSBUT0RPIGxpc3QuIEkgdGhpbmsgaXQncyBkb2FibGUgYXMgZm9sbG93LXVw CnBhdGNoZXMuCgpUaGFuaywKRXplcXVpZWwKCj4gPiA+IFdoYXQgSSBzdXNwZWN0IGlzIHRoYXQg d2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhpcyBIVywgYXMgaXQgc2VlbXMKPiA+ID4gdG8g YmUgYSBiaXQgaGFsZiBiYWNrZWQsIHdoaWNoCj4gPiA+IG1lYW5zIGl0IG1pZ2h0IGJlIHN1cHBv cnRpbmcgbW9yZSBmZWF0dXJlcyB0aGVuIHN1cHBvcnRlZCBieSB0aGUgVFJNCj4gPiA+IG9yIHJl ZmVyZW5jZSBjb2RlLCBhbmQgd2UKPiA+ID4gbXVzdCBkaXNhYmxlIHRoaXMgd2l0aCBzb2Z0d2Fy ZS4KPiA+ID4gCj4gPiA+IChwLnMuIEkgY2FuIHByb3ZpZGUgYSBzdHJlYW0gdG8gcmVwcm9kdWNl IHRoZSA0OjQ6NCBkcml2ZXIgZmFpbHVyZSkKPiA+ID4gCj4gPiAKPiA+IFRoYW5rcywKPiA+IEV6 ZXF1aWVsCj4gPiAKPiAKPiAKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1yb2NrY2hpcAo= 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=-8.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY autolearn=unavailable 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 7A1B8C2BA2B for ; Wed, 8 Apr 2020 14:04:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4D7372051A for ; Wed, 8 Apr 2020 14:04:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727929AbgDHOE2 (ORCPT ); Wed, 8 Apr 2020 10:04:28 -0400 Received: from bhuna.collabora.co.uk ([46.235.227.227]:53758 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727226AbgDHOE2 (ORCPT ); Wed, 8 Apr 2020 10:04:28 -0400 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: ezequiel) with ESMTPSA id 9024929117E Message-ID: Subject: Re: [PATCH v8 4/5] media: rkvdec: Add the rkvdec driver From: Ezequiel Garcia To: Nicolas Dufresne Cc: DVB_Linux_Media , "open list:ARM/Rockchip SoC..." , Linux Kernel Mailing List , Tomasz Figa , kernel@collabora.com, Jonas Karlman , Heiko Stuebner , Hans Verkuil , Alexandre Courbot , Jeffrey Kardatzke , Boris Brezillon Date: Wed, 08 Apr 2020 11:04:10 -0300 In-Reply-To: References: <20200403221345.16702-1-ezequiel@collabora.com> <20200403221345.16702-5-ezequiel@collabora.com> <5c417620e1baeed7ec4ac750ab481366df2aa590.camel@collabora.com> Organization: Collabora Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.36.0-1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org On Tue, 2020-04-07 at 15:36 -0400, Nicolas Dufresne wrote: > Le mardi 07 avril 2020 à 11:35 -0300, Ezequiel Garcia a écrit : > > On Mon, 2020-04-06 at 16:27 -0400, Nicolas Dufresne wrote: > > > Le ven. 3 avr. 2020 à 18:14, Ezequiel Garcia a écrit : > > > > From: Boris Brezillon > > > > > > > > The rockchip vdec block is a stateless decoder that's able to decode > > > > H264, HEVC and VP9 content. This commit adds the core infrastructure > > > > and the H264 backend. Support for VP9 and HEVS will be added later on. > > > > > > > > Signed-off-by: Boris Brezillon > > > > Signed-off-by: Ezequiel Garcia > > > > > > Sorry for the late feedback (got a comment lower) ... > > > > > > Tested-by: Nicolas Dufresne > > > > > > > Nice, thank you. > > > > > > -- > > > > v8: > > > > * Fix kfree and style changes, as suggested by Andriy. > > > > v7: > > > > * hverkuil-cisco@xs4all.nl: replaced VFL_TYPE_GRABBER by _VIDEO > > > > * Use macros and ARRAY_SIZE instead of magic numbers, > > > > as suggested by Mauro. > > > > * Renamed M_N macro, suggested by Mauro. > > > > * Use v4l2_m2m_buf_done_and_job_finish. > > > > * Set buffers' zeroth plane payload in .buf_prepare > > > > * Refactor try/s_fmt for spec compliance. > > > > --- > > > > MAINTAINERS | 7 + > > > > drivers/staging/media/Kconfig | 2 + > > > > drivers/staging/media/Makefile | 1 + > > > > drivers/staging/media/rkvdec/Kconfig | 15 + > > > > drivers/staging/media/rkvdec/Makefile | 3 + > > > > drivers/staging/media/rkvdec/TODO | 11 + > > > > drivers/staging/media/rkvdec/rkvdec-h264.c | 1156 ++++++++++++++++++++ > > > > drivers/staging/media/rkvdec/rkvdec-regs.h | 223 ++++ > > > > drivers/staging/media/rkvdec/rkvdec.c | 1103 +++++++++++++++++++ > > > > drivers/staging/media/rkvdec/rkvdec.h | 121 ++ > > > > 10 files changed, 2642 insertions(+) > > > > create mode 100644 drivers/staging/media/rkvdec/Kconfig > > > > create mode 100644 drivers/staging/media/rkvdec/Makefile > > > > create mode 100644 drivers/staging/media/rkvdec/TODO > > > > create mode 100644 drivers/staging/media/rkvdec/rkvdec-h264.c > > > > create mode 100644 drivers/staging/media/rkvdec/rkvdec-regs.h > > > > create mode 100644 drivers/staging/media/rkvdec/rkvdec.c > > > > create mode 100644 drivers/staging/media/rkvdec/rkvdec.h > > > > > > [..] > > > > + > > > > +static void set_ps_field(u32 *buf, struct rkvdec_ps_field field, u32 value) > > > > +{ > > > > + u8 bit = field.offset % 32, word = field.offset / 32; > > > > + u64 mask = GENMASK_ULL(bit + field.len - 1, bit); > > > > + u64 val = ((u64)value << bit) & mask; > > > > + > > > > + buf[word] &= ~mask; > > > > + buf[word] |= val; > > > > + if (bit + field.len > 32) { > > > > + buf[word + 1] &= ~(mask >> 32); > > > > + buf[word + 1] |= val >> 32; > > > > + } > > > > +} > > > > + > > > > +static void assemble_hw_pps(struct rkvdec_ctx *ctx, > > > > + struct rkvdec_h264_run *run) > > > > +{ > > > > + struct rkvdec_h264_ctx *h264_ctx = ctx->priv; > > > > + const struct v4l2_ctrl_h264_sps *sps = run->sps; > > > > + const struct v4l2_ctrl_h264_pps *pps = run->pps; > > > > + const struct v4l2_ctrl_h264_decode_params *dec_params = run->decode_params; > > > > + const struct v4l2_h264_dpb_entry *dpb = dec_params->dpb; > > > > + struct rkvdec_h264_priv_tbl *priv_tbl = h264_ctx->priv_tbl.cpu; > > > > + struct rkvdec_sps_pps_packet *hw_ps; > > > > + dma_addr_t scaling_list_address; > > > > + u32 scaling_distance; > > > > + u32 i; > > > > + > > > > + /* > > > > + * HW read the SPS/PPS information from PPS packet index by PPS id. > > > > + * offset from the base can be calculated by PPS_id * 32 (size per PPS > > > > + * packet unit). so the driver copy SPS/PPS information to the exact PPS > > > > + * packet unit for HW accessing. > > > > + */ > > > > + hw_ps = &priv_tbl->param_set[pps->pic_parameter_set_id]; > > > > + memset(hw_ps, 0, sizeof(*hw_ps)); > > > > + > > > > +#define WRITE_PPS(value, field) set_ps_field(hw_ps->info, field, value) > > > > + /* write sps */ > > > > + WRITE_PPS(0xf, SEQ_PARAMETER_SET_ID); > > > > + WRITE_PPS(0xff, PROFILE_IDC); > > > > + WRITE_PPS(1, CONSTRAINT_SET3_FLAG); > > > > > > At first I found that part rather interesting, but I see this > > > hardcoding matches what Rockchip do. > > > > > > https://github.com/rockchip-linux/mpp/blob/release/mpp/hal/rkdec/h264d/hal_h264d_rkv_reg.c#L266 > > > > > > > + WRITE_PPS(sps->chroma_format_idc, CHROMA_FORMAT_IDC); > > > > > > But here's it's not so great. This driver does not implement any kind > > > of validation. In fact, if I pass 3 > > > here (YCbCr 4:4:4) it will accept it, and kind of decode some frames, > > > but eventually with crash and > > > reboot is needed. We should (as defined in the Statelss CODEC spec) > > > validate the SPS and refuse if > > > an unsupported profile idc, chroma idc, luma/chroma depth or coded > > > size is requested. > > > > Perhaps we could validate that at request_validate time, > > or maybe ops.try_ctrl is better. > > > > > > > > > Validating the > > > S_FMT is not sufficient as one can trick the driver in allocating > > > buffers that are too small. > > > > > > > I am not sure I follow you: how do you think the driver > > can be tricked like this? > > What I see is that there is no cross validation between the SPS > register configuration and the frame allocations done through S_FMT. So > if I cheat in S_FMT, and then pass an SPS that is larger then > announced, the HW could potentially overrun buffers. That entirely > depends on how much robustness there is in the HW implementation iself > (and if we have a register to pass the buffer size). > > This is of course a gut feeling, I haven't found time to test this yet, > but it came to my mind after I notice that passing a 4:4:4 choma_idc > stream causes driver failure (no visible memory corruption or overrun > though, the driver just stops working). So the resulting issues might > not be that bad, but you endup loosing the decoder. > Note that this driver (as well as Hantro) programs the hardware using the negotiated resolution, and ignores what the SPS says about it. It shouldn't be possible to trick the driver this way. OTOH, both drivers should have additional checks for other SPS fields such as chroma_format_idc and luma_bit_depth, as you pointed out. I'll add this to my TODO list. I think it's doable as follow-up patches. Thank, Ezequiel > > > What I suspect is that we need to be careful with this HW, as it seems > > > to be a bit half backed, which > > > means it might be supporting more features then supported by the TRM > > > or reference code, and we > > > must disable this with software. > > > > > > (p.s. I can provide a stream to reproduce the 4:4:4 driver failure) > > > > > > > Thanks, > > Ezequiel > > > >