From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 1/5] drm: Add DRM support for tiny LCD displays Date: Fri, 18 Mar 2016 18:47:33 +0100 Message-ID: <20160318174733.GI14170@phenom.ffwll.local> References: <1458135259-31050-1-git-send-email-noralf@tronnes.org> <1458135259-31050-2-git-send-email-noralf@tronnes.org> <20160316151123.GP14170@phenom.ffwll.local> <56EB26FB.3030402@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x232.google.com (mail-wm0-x232.google.com [IPv6:2a00:1450:400c:c09::232]) by gabe.freedesktop.org (Postfix) with ESMTPS id 375BF6EC28 for ; Fri, 18 Mar 2016 17:46:46 +0000 (UTC) Received: by mail-wm0-x232.google.com with SMTP id l124so39796000wmf.1 for ; Fri, 18 Mar 2016 10:46:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <56EB26FB.3030402@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: thomas.petazzoni@free-electrons.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBNYXIgMTcsIDIwMTYgYXQgMTA6NTE6NTVQTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IERlbiAxNi4wMy4yMDE2IDE2OjExLCBza3JldiBEYW5pZWwgVmV0dGVyOgo+ ID5PbiBXZWQsIE1hciAxNiwgMjAxNiBhdCAwMjozNDoxNVBNICswMTAwLCBOb3JhbGYgVHLDuG5u ZXMgd3JvdGU6Cj4gPj50aW55ZHJtIHByb3ZpZGVzIGEgdmVyeSBzaW1wbGlmaWVkIHZpZXcgb2Yg RFJNIGZvciBkaXNwbGF5cyB0aGF0IGhhcwo+ID4+b25ib2FyZCB2aWRlbyBtZW1vcnkgYW5kIGlz IGNvbm5lY3RlZCB0aHJvdWdoIGEgc2xvdyBidXMgbGlrZSBTUEkvSTJDLgo+ID4+Cj4gPj5TaWdu ZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiA+WWF5LCBp dCBmaW5hbGx5IGhhcHBlbnMhIEkgYWxyZWFkeSBtYWRlIGEgY29tbWVudCBvbiB0aGUgY292ZXIg bGV0dGVyCj4gPmFib3V0IHRoZSBmYmRldiBzdHVmZiwgSSB0aGluayB0aGF0J3MgdGhlIGJpZ2dl c3QgcGFydCB0byBzcGxpdCBvdXQgZnJvbQo+ID50aW55ZHJtIGhlcmUuIEknbSBub3QgZW50aXJl bHkgc3VyZSBhIGRldGFpbGVkIGNvZGUgcmV2aWV3IG1ha2VzIHNlbnNlCj4gPmJlZm9yZSB0aGF0 IHBhcnQgaXMgZG9uZSAoYW5kIGhleSB3ZSBjYW4gc3RhcnQgbWVyZ2luZyBhbHJlYWR5KSwgc28g anVzdCBhCj4gPmhpZ2ggbGV2ZWwgcmV2aWV3IGZvciBub3c6Cj4gPgo+ID5UaGUgYmlnIHN0b3J5 IGluIGttcy9kcm0gaW4gdGhlIHBhc3QgeWVhcnMgaXMgdGhhdCB3ZSd2ZSByZWplY3RpbmcKPiA+ YW55dGhpbmcgdGhhdCByZW1vdGVseSBsb29rcyBsaWtlIGEgbWlkbGF5ZXIuIEluc3RlYWQgdGhl IHByZWZlcnJlZCBkZXNpZ24KPiA+cGF0dGVybiBpcyBhIGxpYnJhcnkgb2YgaGVscGVyIGZ1bmN0 aW9ucyB0byBpbXBsZW1lbnQgdXNlZnVsIGRlZmF1bHQKPiA+YmVoYXZpb3VyLCBvciBzb21ldGlt ZXMganVzdCBidWlsZGluZyBibG9ja3MgZm9yIHVzZWZ1bCBkZWZhdWx0IGJlaGF2aW91ci4KPiA+ QW5kIHRoZW4gYnVpbGQgdXAgcmVhbCBkcml2ZXJzIHVzaW5nIHRoZXNlIHBpZWNlcy4gVGhlIGJl bmVmaXQgb2YgdGhhdCBpcwo+ID50d28tZm9sZDoKPiA+LSBlYXNpZXIgdG8gc2hhcmUgY29kZSB3 aXRoIG90aGVyIGRyaXZlcnMgdGhhdCBvbmx5IG5lZWQgcGFydCBvZiB0aGUKPiA+ICAgYmVoYXZp b3VyIChlLmcuIGZiZGV2IGRlZmVycmVkIGlvIHN1cHBvcnQpLgo+ID4tIGVhc2llciB0byBhZGFw dCB0byBzcGVjaWFsIGh3IHRoYXQgbmVlZHMgZXhjZXB0aW9ucyBzaW5jZSB3b3JzdCBjYXNlIHlv dQo+ID4gICBjYW4ganVzdCBjb3B5cGFzdGUgYW4gZW50aXJlIGhvb2suIE9yIGltcGxlbWVudCB0 aGUgc3BlY2lhbCBjYXNlIGFuZAo+ID4gICBjYWxsIHRoZSBkZWZhdWx0IGhlbHBlciBmb3IgdGhl IG5vcm1hbCBjYXNlcy4KPiA+Cj4gPmx3biBoYXMgYSBnb29kIGFydGljbGUgb24gdGhpcyBwYXR0 ZXJuOgo+ID4KPiA+aHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzMzNjI2Mi8KPiAKPiBJIHdhcyBh ZnJhaWQgeW91IHdvdWxkIHNheSAibWlkbGF5ZXIiIDotKQo+IAo+IEhvdyBhYm91dCBjcmVhdGlu ZyBtYWNyb3MgbGlrZSBTSU1QTEVfREVWX1BNX09QUyBhbmQgZnJpZW5kcyB0byBzaW1wbGlmeQo+ IHRoZSBkcm1fZHJpdmVyIGJvaWxlcnBsYXRlIGFuZCB1c2UgdGhhdCBpbiB0aGUgZHJpdmVycz8K PiAKPiAjZGVmaW5lIFNFVF9EUk1fRFJJVkVSX0dFTV9DTUFfT1BTIFwKPiAgICAgLmdlbV9mcmVl X29iamVjdCAgICA9IGRybV9nZW1fY21hX2ZyZWVfb2JqZWN0LCBcCj4gICAgIC5nZW1fdm1fb3Bz ICAgICAgICA9ICZkcm1fZ2VtX2NtYV92bV9vcHMsIFwKPiAgICAgLnByaW1lX2hhbmRsZV90b19m ZCAgICA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLCBcCj4gICAgIC5wcmltZV9mZF90b19o YW5kbGUgICAgPSBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hhbmRsZSwgXAo+ICAgICAuZ2VtX3ByaW1l X2ltcG9ydCAgICA9IGRybV9nZW1fcHJpbWVfaW1wb3J0LCBcCj4gICAgIC5nZW1fcHJpbWVfZXhw b3J0ICAgID0gZHJtX2dlbV9wcmltZV9leHBvcnQsIFwKPiAgICAgLmdlbV9wcmltZV9nZXRfc2df dGFibGUgICAgPSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsIFwKPiAgICAgLmdlbV9w cmltZV9pbXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2dfdGFibGUs IFwKPiAgICAgLmdlbV9wcmltZV92bWFwICAgICAgICA9IGRybV9nZW1fY21hX3ByaW1lX3ZtYXAs IFwKPiAgICAgLmdlbV9wcmltZV92dW5tYXAgICAgPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAs IFwKPiAgICAgLmdlbV9wcmltZV9tbWFwICAgICAgICA9IGRybV9nZW1fY21hX3ByaW1lX21tYXAs IFwKPiAgICAgLmR1bWJfY3JlYXRlICAgICAgICA9IGRybV9nZW1fY21hX2R1bWJfY3JlYXRlLCBc Cj4gICAgIC5kdW1iX21hcF9vZmZzZXQgICAgPSBkcm1fZ2VtX2NtYV9kdW1iX21hcF9vZmZzZXQs IFwKPiAgICAgLmR1bWJfZGVzdHJveSAgICAgICAgPSBkcm1fZ2VtX2R1bWJfZGVzdHJveSwKPiAK PiAjZGVmaW5lIFRJTllEUk1fRFJNX0RSSVZFUihuYW1lX3N0cnVjdCwgbmFtZV9zdHIsIGRlc2Nf c3RyLCBkYXRlX3N0cikgXAo+IHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBuYW1lX3N0cnVjdCA9 IHsgXAo+ICAgICAuZHJpdmVyX2ZlYXR1cmVzICAgID0gRFJJVkVSX0dFTSB8IERSSVZFUl9NT0RF U0VUIHwgRFJJVkVSX1BSSU1FIFwKPiAgICAgICAgICAgICAgICAgfCBEUklWRVJfQVRPTUlDLCBc Cj4gICAgIC5sb2FkICAgICAgICAgICAgPSB0aW55ZHJtX2xvYWQsIFwKPiAgICAgLnVubG9hZCAg ICAgICAgICAgID0gdGlueWRybV91bmxvYWQsIFwKPiAgICAgLmxhc3RjbG9zZSAgICAgICAgPSB0 aW55ZHJtX2xhc3RjbG9zZSwgXAo+ICAgICBTRVRfRFJNX0RSSVZFUl9HRU1fQ01BX09QUyBcCj4g ICAgIC5mb3BzICAgICAgICAgICAgPSAmdGlueWRybV9mb3BzLCBcCj4gICAgIC5uYW1lICAgICAg ICAgICAgPSBuYW1lX3N0ciwgXAo+ICAgICAuZGVzYyAgICAgICAgICAgID0gZGVzY19zdHIsIFwK PiAgICAgLmRhdGUgICAgICAgICAgICA9IGRhdGVfc3RyLCBcCj4gICAgIC5tYWpvciAgICAgICAg ICAgID0gMSwgXAo+ICAgICAubWlub3IgICAgICAgICAgICA9IDAsIFwKPiB9CgpMb29rcyBsaWtl IGEgcHJldHR5IHN3ZWV0IGlkZWEuIE1heWJlIGV2ZW4gc3BsaXQgaXQgdXAgaW50byBHRU1fUFJJ TUVfT1BTCmFuZCBzaW1pbGFyIHN1Yi1ncm91cHMsIHdoaWNoIHlvdSBjb3VsZCByb2xsIG91dCBp bnRvIGxvdHMgb2YgZHJpdmVycy4KCj4gCj4gTm93IHRoZSBkcml2ZXIgY2FuIGRvIHRoaXM6Cj4g VElOWURSTV9EUk1fRFJJVkVSKGFkYWZydWl0X3RmdCwgImFkYWZydWl0LXRmdCIsIEFkYWZydWl0 IFRGVCIsICIyMDE2MDMxNyIpOwo+IAo+IEluIGFkZGl0aW9uIHRvIHRoYXQsIHRoZSB0aW55ZHJt IHNwZWNpZmljIHBhcnRzIHRoYXQgbWFrZSB1cAo+IHRpbnlkcm1fbG9hZC91bmxvYWQgY2FuIGJl IGV4cG9ydGVkIGlmIHNvbWVvbmUgd2FudHMgaXQgc2xpZ2h0bHkgZGlmZmVyZW50LgoKSnVzdCBm cm9tIHlvdXIgc2tldGNoIGhlcmUgdGhpcyBzb3VuZHMgbmlmdHkuCgo+ID5JbiB0aGUgY2FzZSBv ZiB0aW55ZHJtIEkgdGhpbmsgdGhhdCBtZWFucyB3ZSBzaG91bGQgaGF2ZSBhIGJ1bmNoIG9mIG5l dwo+ID5kcm0gaGVscGVycywgb3IgZXh0ZW5zaW9ucyBmb3IgZXhpc3Rpbmcgb25lczoKPiA+LSBm YmRldiBkZWZlcnJlZCBpbyBzdXBwb3J0IHVzaW5nIC0+ZGlydHlmYiBpbiBkcm1fZmJfaGVscGVy LmMuCj4gCj4gQXJlIHlvdSB0aGlua2luZyBzb21ldGhpbmcgbGlrZSB0aGlzPwo+IAo+IHN0cnVj dCBkcm1fZmJfaGVscGVyX2Z1bmNzIHsKPiAgICAgaW50ICgqZGlydHlmYikoc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2NsaXBfcmVj dCAqY2xpcCk7CgpXZSBhbHJlYWR5IGhhdmUgYSBkaXJ0eV9mYiBmdW5jdGlvbiBpbgpkZXYtPm1v ZGVfY29uZmlnLT5mdW5jcy0+ZGlydHlfZmIoKS4gVGhpcyBpcyB0aGUgb2ZmaWNpYWwgaW50ZXJm YWNlIG5hdGl2ZQpkcm0va21zIHVzZXJzcGFjZSBpcyBzdXBwb3NlZCB0byB1c2UgdG8gZmx1c2gg ZnJvbnRidWZmZXIgcmVuZGVyaW5nLiBUaGUKeGZyZWU4Ni12aWRlby1tb2Rlc2V0dGluZyBkcml2 ZXIgdXNlcyBpdC4KCj4gfTsKPiAKPiBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciB7Cj4gICAgIHNwaW5s b2NrX3QgZGlydHlfbG9jazsKPiAgICAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmRpcnR5X2NsaXA7 Cj4gfTsKClllYWgsIHRoaXMgcGFydCBpcyBuZWVkZWQgZm9yIHRoZSBkZWxheWVkIHdvcmsgZm9y IHRoZSBmYmRldiBoZWxwZXIuCnN0cnVjdCB3b3JrIGRpcnR5X2ZiX3dvcms7IGlzIG1pc3Npbmcu Cgo+IFNob3VsZCBJIGV4dGVuZCBkcm1fZmJfaGVscGVyX3N5c18qIG9yIG1ha2UgaXQgZXhwbGlj aXQgd2l0aAo+IGRybV9mYl9oZWxwZXJfc3lzXypfZGVmZXJyZWQgZnVuY3Rpb25zPwoKSW1vIGV4 dGVuZCB0aGUgZXhpc3RpbmcgaGVscGVycywgYWRkaW5nIGRlZmVycmVkIGlvIGlzIHBhcnQgb2Yg dGhlIHJlYXNvbnMKd2UgYWRkZWQgdGhlbS4gSnVzdCBhZGQgYSBjaGVjayBmb3IgbW9kZV9jb25m aWctPmZ1bmNzLT5kaXJ0eV9mYiB0bwpzaG9ydC1jaXJjdWl0IGFsbCB0aGUgZGVmZXJyZWQgaW8g Zmx1c2hpbmcgaWYgdGhlIGRyaXZlciBkb2Vzbid0IG5lZWQgaXQuCgpTYW1lIGZvciBzZXR0aW5n IHVwIGRlZmVycmVkIGlvIGZiZGV2IGRyaXZlciBmbGFncyAtIGp1c3QgY2hlY2sgd2hldGhlcgot PmRpcnR5X2ZiIGlzIHRoZXJlLCBhbmQgb25seSBpZiB0aGF0IGlzIHNldCBmaWxsIGluIGlub2Yt PmZiZGVmaW8uCgo+ICNpZmRlZiBDT05GSUdfRkJfREVGRVJSRURfSU8KPiAvKiBXaWxsIGp1c3Qg cmV0dXJuIGlmIGluZm8tPmZiZGVmaW8gaXMgbm90IHNldCAqLwo+IHZvaWQgZHJtX2ZiX2hlbHBl cl9zeXNfZGVmZXJyZWQoc3RydWN0IGZiX2luZm8gKmluZm8sIHUzMiB4LCB1MzIgeSwKPiAgICAg ICAgICAgICAgICAgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KTsKPiAjZWxzZQo+IHN0YXRpYyBpbmxp bmUgdm9pZCBkcm1fZmJfaGVscGVyX3N5c19kZWZlcnJlZChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywg dTMyIHgsCj4gdTMyIHksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgd2lkdGgsIHUz MiBoZWlnaHQpCj4geyB9Cj4gI2VuZGlmCj4gCj4gdm9pZCBkcm1fZmJfaGVscGVyX3N5c19pbWFn ZWJsaXQoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGZiX2ltYWdlICppbWFnZSkKPiB7Cj4gICAgICAgICBzeXNfaW1h Z2VibGl0KGluZm8sIGltYWdlKTsKPiAgICAgZHJtX2ZiX2hlbHBlcl9zeXNfZGVmZXJyZWQoaW5m bywgaW1hZ2UtPmR4LCBpbWFnZS0+ZHksIGltYWdlLT53aWR0aCwKPiAgICAgICAgICAgICAgICAg ICAgaW1hZ2UtPmhlaWdodCk7Cj4gfQo+IAo+IE9SCj4gCj4gdm9pZCBkcm1fZmJfaGVscGVyX3N5 c19pbWFnZWJsaXRfZGVmZXJyZWQoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZiX2ltYWdlICppbWFn ZSkKPiB7Cj4gICAgIGRybV9mYl9oZWxwZXJfc3lzX2ltYWdlYmxpdChpbmZvLCBpbWFnZSk7Cj4g ICAgIGRybV9mYl9oZWxwZXJfc3lzX2RlZmVycmVkKGluZm8sIGltYWdlLT5keCwgaW1hZ2UtPmR5 LCBpbWFnZS0+d2lkdGgsCj4gICAgICAgICAgICAgICAgICAgIGltYWdlLT5oZWlnaHQpOwo+IH0K PiAKPiAKPiBJbml0aWFsbHkgSSB1c2VkIGRybV9mYl9jbWFfaGVscGVyLmMgd2l0aCBzb21lIGFk ZGVkIGRlZmVycmVkIGNvZGUuCj4gVGhpcyB3b3JrZWQgZmluZSBmb3IgZmJjb24sIGJ1dCB0aGUg ZGVmZXJyZWQgbW1hcCBwYXJ0IGRpZG4ndCB3b3JrIHdlbGwuCj4gRm9yIGluc3RhbmNlIHdoZW4g dXNpbmcgZmJ0ZXN0LCBJIGdvdCBzaG9ydCByYW5kb20gaG9yaXpvbnRhbCBsaW5lcyBvbiB0aGUK PiBkaXNwbGF5IHRoYXQgZGlkbid0IGNvbnRhaW4gdGhlIGxhdGVzdCBwaXhlbHMuIEkgaGFkIHRv IHdyaXRlIHNldmVyYWwgdGltZXMKPiB0byAvZGV2L2ZiMSB0byB0cmlnZ2VyIGEgZGlzcGxheSB1 cGRhdGUgdG8gZ2V0IGFsbCB0aGUgcHJldmlvdXMgcGl4ZWxzIHRvIGdvCj4gYXdheSBhbmQgZ2V0 IHRoZSBjdXJyZW50IGltYWdlLiBNYXliZSBpdCdzIHNvbWUgY2FjaGluZyBpc3N1ZSwgSSBkb24n dCBrbm93Lgo+IFRoZSBSYXNwYmVycnkgUGkgZG9lc24ndCBzdXBwb3J0IDE2LWJpdCBTUEksIHNv IHRpbnlkcm0gZG9lcyBhIGJ5dGUgc3dhcCB0bwo+IGEgbmV3IGJ1ZmZlciBiZWZvcmUgc2VuZGlu ZyBpdCB1c2luZyA4LWJpdC4KPiBNYXliZSBJIG5lZWQgdG8gY2FsbCBzb21lIGtpbmQgb2YgRE1B IHN5bmMgZnVuY3Rpb24/Cgpkcm1fZmJfY21hX2hlbHBlciBpcyBmb3IgY3JlYXRpbmcgZHJtX2Zy YW1lYnVmZmVyIGJhY2tlZCBieSBjbWEgYWxsb2NhdG9yCm9iamVjdHMuIEhvdyB5b3UgY3JlYXRl IGRybV9mcmFtZWJ1ZmZlciBpcyBvcnRob2dvbmFsIHRvIHdoZXRoZXIgeW91IGhhdmUKYSAtPmRp cnR5X2ZiIGhvb2sgKGFuZCBoZW5jZSBuZWVkZWQgZGVmaW8gc3VwcG9ydCBpbiBmYmRldikgb3Ig bm90LiBFLmcuCm1heWJlIHNvbWUgU1BJIGRldmljZSBoYXMgYSBkbWEgZW5naW5lLCBhbmQgaGVu Y2UgeW91IHdhbnQgdG8gYWxsb2NhdGUKZHJtX2ZyYW1lYnVmZmVyIHVzaW5nIGNtYS4gT24gb3Ro ZXJzIHdpdGggYW4gaTJjIGJ1cyB5b3Ugd2FudCB0byBqdXN0CmFsbG9jYXRlIGtlcm5lbCBtZW1v cnksIHNpbmNlIHRoZSBjcHUgd2lsbCBjb3B5IHRoZSBkYXRhIGFueXdheS4KClRoYXQncyB3aHkg SSB0aGluayB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHNwbGl0IGlzIHN0aWxsIG1haW50YWlu ZWQuCgo+IFRoZSBkdW1iIGJ1ZmZlciB1c2VzIGRybV9nZW1fY21hX2R1bWJfY3JlYXRlKCkgd2hp Y2ggaXMgYmFja2VkIGJ5IGNtYSwgYW5kCj4gdGhhdCB3b3JrcyBqdXN0IGZpbmUgKEkgaGF2ZSBv bmx5IHRlc3RlZCB3aXRoIERhdmlkIEhlcnJtYW5uJ3MgbW9kZXNldFsxXSkuCj4gQSBzaW1pbGFy IGJ5dGUgc3dhcHBpbmcgaGFwcGVucyBoZXJlLgo+IAo+IEkgYWxzbyBoYWQgdG8gZG8gdGhpcyBm b3IgdGhlIGRlZmVycmVkIGlvIHRvIHdvcms6Cj4gCj4gaW5mby0+Zml4LnNtZW1fc3RhcnQgPSBf X3BhKGluZm8tPnNjcmVlbl9iYXNlKTsKPiAKPiBkcm1fZmJfY21hX2hlbHBlciBhc3NpZ25zIHRo ZSBkbWEgYWRkcmVzcyB0byBzbWVtX3N0YXJ0LCBidXQgYXQgbGVhc3Qgb24KPiB0aGUgUmFzcGJl cnJ5IFBpIHRoaXMgYnVzIGFkZHJlc3MgY2FuJ3QgYmUgdXNlZCBieSBkZWZlcnJlZF9pbwo+IChm Yl9kZWZlcnJlZF9pb19mYXVsdCgpKS4gQW5kIHRoZSBBUk0gdmVyc2lvbiBvZiBfX3BhIHN0YXRl cyB0aGF0IGl0Cj4gc2hvdWxkbid0IGJlIHVzZWQgYnkgZHJpdmVycywgc28gd2hlbiBteSB2bWFs bG9jIHZlcnNpb24gd29ya2VkLCBJIHdlbnQKPiB3aXRoIHRoYXQuIEJ1dCBJIHNlZSB0aGF0IHRo ZXJlJ3MgYSB2aXJ0X3RvX3BoeXMoKSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QKPiBoYXZlIHRoYXQg c3RhdGVtZW50IGFib3V0IG5vdCBiZWluZyB1c2VkIGJ5IGRyaXZlcnMsIHNvIG1heWJlIHRoaXMg aXNuJ3QKPiBhIHNob3cgc3RvcHBlciBhZnRlciBhbGw/Cj4gCj4gQW55IHRob3VnaHRzIG9uIHRo aXMgcHJvYmxlbT8gSSB3b3VsZCByYXRoZXIgaGF2ZSBhIGNtYSBiYWNrZWQgZmJkZXYKPiBmcmFt ZWJ1ZmZlciBzaW5jZSB0aGF0IHdvdWxkIGdpdmUgbWUgdGhlIHNhbWUgdHlwZSBvZiBtZW1vcnkg Ym90aCBmb3IKPiBmYmRldiBhbmQgRFJNLgoKSG0sIHRiaCBJIGhhdmUgbm8gY2xlYXIgaWRlYSB3 aG8gZmJkZXYgZmIgbWVtb3J5IG1hcHBpbmcgd29ya2luZ3MuIFRoZQphYm92ZSBjb21tZW50cyBh cmUgbW9yZSBmcm9tIGEgcG92IG9mIGEgbmF0aXZlIGttcyB1c2Vyc3BhY2UgY2xpZW50LiBXaXRo CmZiZGV2IGFzIGEgY2xlYW4gaGVscGVyIHNpdHRpbmcgZW50aXJlbHkgb24gdG9wIG9mIG9mIGtt cyBpbnRlcmZhY2VzLCB3aXRoCm5vIG5lZWQgdG8gdmlvbGF0ZSB0aGUgbGF5ZXJpbmcgZm9yIG1t YXAgc3VwcG9ydC4gVGhlcmUncyBzb21lIG90aGVyCnRocmVhZCBnb2luZyBvbiAoZm9yIHRoZSBh cmMgZHJpdmVyIG9yIHdoYXRldmVyIGl0IHdhcyBjYWxsZWQpIHdpdGggdGhlCmV4YWN0IHNhbWUg cHJvYmxlbS4gTWlnaHQgYmUgZ29vZCBpZiB5b3UgY2hhdCBkaXJlY3RseSB3aXRoIEFsZXhleSBC cm9ka2luCmFib3V0IHRoaXMgdG9waWMuCgpJdCB3b3VsZCBiZSByZWFsbHkgYXdlc29tZSBpZiB3 ZSBjb3VsZCBtYWtlIHRoaXMgSnVzdCBXb3JrLgoKPiBJIGNhbiBob3dldmVyIGxpdmUgd2l0aCBh IHZtYWxsb2MgYnVmZmVyLCBiZWNhdXNlIHRoZSBTUEkgc3Vic3lzdGVtIHVzZXMKPiB0aGUgRE1B IHN0cmVhbWluZyBBUEkgYW5kIHN1cHBvcnRzIHZtYWxsb2MgYnVmZmVycyAoc3BpX21hcF9idWYo KSkuCj4gVGhlIHZhc3QgbWFqb3JpdHkgb2YgdGhlc2UgZGlzcGxheXMgYXJlIGNvbm5lY3RlZCB0 aHJvdWdoIFNQSS4KPiBBbHNvIHRoZSBkbWEgYWRkcmVzcyBhdCB0aGUgaGVhZCBvZiB0aGUgYnVm ZmVyIGlzbid0IG11Y2ggdXNlIHRvIG1lIHNpbmNlCj4gYWxtb3N0IGFsbCBvZiB0aGVzZSBkaXNw bGF5IGNvbnRyb2xsZXJzIHN1cHBvcnRzIHBhcnRpYWwgdXBkYXRlcywgc28gSQo+IGNhbid0IHVz ZSBpdCBtdWNoIGFueXdheSAocGFydGlhbCB1cGRhdGVzIGlzbid0IGltcGxlbWVudGVkIGluIHRo ZSBjdXJyZW50Cj4gY29kZSB5ZXQpLgo+IAo+IFsxXSBodHRwczovL2dpdGh1Yi5jb20vZHZkaHJt L2RvY3MvYmxvYi9tYXN0ZXIvZHJtLWhvd3RvL21vZGVzZXQuYwoKQWgsIEkgdGhvdWdodCB5b3Un dmUgdXNlZCB2bWFsbG9jIGJlY2F1c2UgeW91ciBidXNlcyBuZWVkIGNwdSBhY2Nlc3MKYW55d2F5 IGFuZCBjYW4ndCBkbWEuIEkgdGhpbmsgd2UgcmVhbGx5IG5lZWQgdG8gbG9vayBpbnRvIG1ha2lu ZyB0aGUgZmJkZXYKaGVscGVycyB3b3JrIGJldHRlciAtIGRvZXMgZmJkZXYgYWxsb3cgdXMgdG8g aW1wbGVtZW50IGEgc3BlY2lhbCBtbWFwCmhhbmRsZXI/IFdlIGNvdWxkIHRoZW4gd3JpdGUgb25l IHNwZWNpZmljIHRvIGNtYSBidWZmZXJzIHRvIGhhbmRsZSB0aGlzLCBJCnRoaW5rIHRoYXQncyBh bHNvIEFsZXhleSdzIHBsYW4gbm93LgoKPiA+LSBIZWxwZXIgdG8gZ2VuZXJhdGUgYSBzaW1wbGUg ZGlzcGxheSBwaXBlbGluZSB3aXRoIDEgcGxhbmUsIDEgY3J0YywgMQo+ID4gICBlbmNvZGVyIHBv aW50aW5nIGF0IGEgc3BlY2lmaWMgZHJtX2Nvbm5lY3Rvci4gVGhlcmUncyBsb3RzIG9mIG90aGVy Cj4gPiAgIHNpbXBsZSBodyB0aGF0IGNvdWxkIHVzZSB0aGlzLiBNYXliZSBjcmVhdGUgYSBuZXcK PiA+ICAgZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMgZm9yIHRoaXMuCj4gPi0gQSBoZWxwZXIgdG8g Y3JlYXRlIGEgc2ltcGxlIGRybV9jb25uZWN0b3IgZnJvbSBhIGRybV9wYW5lbCAodGhlCj4gPiAg IGdldF9tb2RlcyBob29rcyB5b3UgaGF2ZSBoZXJlKSwgbWF5YmUgYWxzbyBpbiBkcm1fc2ltcGxl X2ttc19oZWxwZXIuYy4KPiAKPiBIb3cgYWJvdXQgdGhpczoKPiAKPiBzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqZHJtX3NpbXBsZV9rbXNfY3JlYXRlX3BhbmVsX2Nvbm5lY3RvcihzdHJ1Y3QKPiBkcm1f ZGV2aWNlICpkZXYsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X3BhbmVsICpwYW5lbCk7Cj4gCj4gaW50IGRybV9zaW1wbGVfa21zX2NyZWF0ZV9waXBlbGluZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9o ZWxwZXJfZnVuY3MgKnBsYW5lX2hlbHBlcl9mdW5jcywKPiAgICAgICAgIGNvbnN0IHVpbnQzMl90 ICpwbGFuZV9mb3JtYXRzLCB1bnNpZ25lZCBpbnQgZm9ybWF0X2NvdW50LAo+ICAgICAgICAgY29u c3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqY3J0Y19oZWxwZXJfZnVuY3MsCj4gICAg ICAgICBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzICplbmNvZGVyX2hlbHBl cl9mdW5jcywKPiAgICAgICAgIGludCBlbmNvZGVyX3R5cGUsIHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IpOwo+IAo+IE9yIHdpdGggRFJNX01PREVfRU5DT0RFUl9OT05FOgo+IAo+IGlu dCBkcm1fc2ltcGxlX2ttc19jcmVhdGVfcGlwZWxpbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpwbGFuZV9oZWxw ZXJfZnVuY3MsCj4gICAgICAgICBjb25zdCB1aW50MzJfdCAqcGxhbmVfZm9ybWF0cywgdW5zaWdu ZWQgaW50IGZvcm1hdF9jb3VudCwKPiAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxw ZXJfZnVuY3MgKmNydGNfaGVscGVyX2Z1bmNzLAo+ICAgICAgICAgc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3Rvcik7CgpNeSBpZGVhIHdhcyB0byBnbyBldmVuIG1vcmUgcmFkaWNhbCBhbmQg bnVrZSBhbGwgdGhlIGNydGMvcGxhbmUvZW5jb2RlcgpzdHVmZiBhbmQgYWxsIHRoZSB2ZnVuY3Mg ZW50aXJlbHk6CgpzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgewoJc3RydWN0IGRybV9j cnRjIGNydGM7CglzdHJ1Y3QgZHJtX3BsYW5lIHBsYW5lOwoKCS8qIG1heWJlIGZ1dHVyZSB2ZXJz aW9ucyB3aWxsIHdhbnQgdG8gYWxsb3cgY29ubmVjdGluZyB0bwoJICogZHJtX2JyaWRnZSwgYnV0 IGRybV9lbmNvZGVyIGFscmVhZHkgc3VwcG9ydHMgdGhpcy4gKi8KCXN0cnVjdCBkcm1fZW5jb2Rl ciBlbmNvZGVyOwoJCglzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3MgKmZ1bmNz OwoKCS8qIGhlcmUgYSBwb2ludGVyLCBzaW5jZSB3ZSB3YW50IGZsZXhpYmlsaXR5IHRvIGludGVn cmF0ZSB3aXRoCgkgKiBwYW5lbHMgYW5kIHdoYXRldmVyLiAqLwoJc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcjsKCgkvKiBhbnl0aGluZyBlbHNlIHNpbXBsZSBzdXBwb3J0IG5lZWRzICov Cn07CgpzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3MgewoJdm9pZCAoKmVuYWJs ZSkoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLCBzdHJ1Y3QKCQkgICAgICAg c3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKCXZvaWQgKCpkaXNhYmxlKShzdHJ1 Y3QgZHJtX3NpbXBsZV9rbXNfY3JlYXRlX3BpcGVsaW5lICpwaXBlKTsKCgkvKiB0aGlzIHdvdWxk IGJlIGEgY29tYmluYXRpb24gb2YgZGlydHlfZmIgKyBhdG9taWNfcGxhbmVfdXBkYXRlICovCgl2 b2lkICgqcGxhbmVfdXBkYXRlKShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUs IAoJCQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKCQkgIAoJLyog bWF5YmUgbW9yZT8gSSB0aGluayB0aGlzIHNob3VsZCBiZSBlbm91Z2guICovCn0KCk5vdCBlbnRp cmVseSBzdXJlIGFib3V0IHRoZSBhY3R1YWwgaW50ZXJmYWNlLCBidXQgdGhhdCdzIHRoZSByb3Vn aCBpZGVhLgpTaG91bGQgYmUgcHJldHR5IHF1aWNrIHRvIGltcGxlbWVudCB1c2luZyB0aGUgYXRv bWljIGhlbHBlcnMgd2UgaGF2ZQphbHJlYWR5LgoKVGhlbiB3ZSdkIGp1c3QgaGF2ZQpkcm1fc2lt cGxlX2Rpc3BsYXlfcGlwZV9pbml0KHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlw ZSwKCQkJICAgICBzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3MgKmZ1bmNzLAoJ CQkgICAgIHN0cnVjdCBkcm1fY29ubm5lY3RvciAqY29ubmVjdG9yKTsKClNpbXBsZSBkcml2ZXJz IGNvdWxkIHRoZW4gZW1iZWQgdGhlaXIgc3RydWN0IGludG8gd2hhdGV2ZXIgdGhleSBhbHJlYWR5 CmhhdmUgKG1heWJlIHJpZ2h0IGludG8gdGhlaXIgb3ZlcmFsbCBkZXZfcHJpdiwgdG9nZXRoZXIg d2l0aCB0aGUgc2luZ2xlCmRybV9jb25uZWN0b3IpLiBTaW1wbGUgc3VwcG9ydCB3b3VsZCBwcm92 aWRlIGhvb2tzIGZvciBhbGwgdGhlIG90aGVyCnRoaW5ncyBuZWVkZWQsIGltcGxlbWVudGVkIHVz aW5nIHRoZSBzdXBlci1zaW1wbGUgaG9va3MgYWJvdmUuCgpOb3RlOiBUaGUgYWJvdmUgaXMganVz dCB0eXBlZCBvdXQgd2l0aG91dCBldmVuIGxvb2tpbmcgYXQgdGhlIGRldGFpbHMgb2YKeW91ciBj dXJyZW50IHRpbnlkcm0gZHJpdmVyLiBTbyBtb3N0IGxpa2VseSBuZWVkcyB0byBiZSBhZGp1c3Rl ZC4gQnV0IHRoZQpnb2FsIHdvdWxkIGJlIHRvIG1ha2UgdGhpbmdzIF9yZWFsbHlfIHNpbXBsZS4g T25seSBmbGV4aWJpbGl0eSBJJ2QgbGVhdmUKaW50YWN0IGlzIGRybV9jb25uZWN0b3IsIGNyZWF0 ZWQgYnkgdGhlIGRyaXZlciBkaXJlY3RseS4gQW5kIG1heWJlIHRoZQpvcHRpb24gdG8gc3BlY2lm eSBhIGRybV9icmlkZ2UgY2hhaW4uIEJ1dCB3ZSBjYW4gYWRkIGEgbmV3Cl9pbml0X3dpdGhfYnJp ZGdlIGZvciB0aGF0LgoKQ2hlZXJzLCBEYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=