From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from perceval.ideasonboard.com ([213.167.242.64]:48840 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727010AbeG3XvK (ORCPT ); Mon, 30 Jul 2018 19:51:10 -0400 From: Laurent Pinchart To: Souptick Joarder Cc: liviu.dudau@arm.com, brian.starkey@arm.com, malidp@foss.arm.com, airlied@linux.ie, gustavo@padovan.org, maarten.lankhorst@linux.intel.com, seanpaul@chromium.org, ajitn.linux@gmail.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume() Date: Tue, 31 Jul 2018 01:14:43 +0300 Message-ID: <3328858.Mu96AcVENO@avalon> In-Reply-To: <20180730190137.GA25420@jordon-HP-15-Notebook-PC> References: <20180730190137.GA25420@jordon-HP-15-Notebook-PC> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: Hi Souptick, Thank you for the patch. On Monday, 30 July 2018 22:01:37 EEST Souptick Joarder wrote: > convert drm_atomic_helper_suspend/resume() to use > drm_mode_config_helper_suspend/resume(). > > With this conversion, drm_fbdev_cma_set_suspend_unlocked() > will left with no consumer. So this function can be removed. > > Signed-off-by: Souptick Joarder > Signed-off-by: Ajit Negi > --- > drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------ > drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------ > drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++------------------- > include/drm/drm_fb_cma_helper.h | 2 -- > 4 files changed, 4 insertions(+), 63 deletions(-) > > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c > b/drivers/gpu/drm/arm/hdlcd_drv.c index feaa8bc..4e617e0 100644 > --- a/drivers/gpu/drm/arm/hdlcd_drv.c > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c > @@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device *pdev) > static int __maybe_unused hdlcd_pm_suspend(struct device *dev) > { > struct drm_device *drm = dev_get_drvdata(dev); > - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL; > > - if (!hdlcd) > - return 0; > - > - drm_kms_helper_poll_disable(drm); > - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1); > - > - hdlcd->state = drm_atomic_helper_suspend(drm); > - if (IS_ERR(hdlcd->state)) { > - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0); > - drm_kms_helper_poll_enable(drm); > - return PTR_ERR(hdlcd->state); > - } > - > - return 0; > + return drm_mode_config_helper_suspend(drm); > } > > static int __maybe_unused hdlcd_pm_resume(struct device *dev) > { > struct drm_device *drm = dev_get_drvdata(dev); > - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL; > - > - if (!hdlcd) > - return 0; > > - drm_atomic_helper_resume(drm, hdlcd->state); > - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0); > - drm_kms_helper_poll_enable(drm); > - > - return 0; > + return drm_mode_config_helper_resume(drm); > } > > static SIMPLE_DEV_PM_OPS(hdlcd_pm_ops, hdlcd_pm_suspend, hdlcd_pm_resume); > diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c > b/drivers/gpu/drm/drm_fb_cma_helper.c index 186d00a..f604a84 100644 > --- a/drivers/gpu/drm/drm_fb_cma_helper.c > +++ b/drivers/gpu/drm/drm_fb_cma_helper.c > @@ -529,21 +529,3 @@ void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma > *fbdev_cma, bool state) drm_fb_helper_set_suspend(&fbdev_cma->fb_helper, > state); > } > EXPORT_SYMBOL(drm_fbdev_cma_set_suspend); > - > -/** > - * drm_fbdev_cma_set_suspend_unlocked - wrapper around > - * drm_fb_helper_set_suspend_unlocked > - * @fbdev_cma: The drm_fbdev_cma struct, may be NULL > - * @state: desired state, zero to resume, non-zero to suspend > - * > - * Calls drm_fb_helper_set_suspend, which is a wrapper around > - * fb_set_suspend implemented by fbdev core. > - */ > -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma, > - bool state) > -{ > - if (fbdev_cma) > - drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper, > - state); > -} > -EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked); > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c > b/drivers/gpu/drm/rcar-du/rcar_du_drv.c index 02aee6c..288220f 100644 > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c > @@ -357,32 +357,15 @@ static void rcar_du_lastclose(struct drm_device *dev) > static int rcar_du_pm_suspend(struct device *dev) > { > struct rcar_du_device *rcdu = dev_get_drvdata(dev); > - struct drm_atomic_state *state; > > - drm_kms_helper_poll_disable(rcdu->ddev); > - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, true); > - > - state = drm_atomic_helper_suspend(rcdu->ddev); > - if (IS_ERR(state)) { > - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false); > - drm_kms_helper_poll_enable(rcdu->ddev); > - return PTR_ERR(state); > - } > - > - rcdu->suspend_state = state; If you further remove the suspend_state field from the rcar_du_device structure, you'll get my Reviewed-by: Laurent Pinchart > - > - return 0; > + return drm_mode_config_helper_suspend(rcdu->ddev); > } > > static int rcar_du_pm_resume(struct device *dev) > { > struct rcar_du_device *rcdu = dev_get_drvdata(dev); > > - drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state); > - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false); > - drm_kms_helper_poll_enable(rcdu->ddev); > - > - return 0; > + return drm_mode_config_helper_resume(rcdu->ddev); > } > #endif > > diff --git a/include/drm/drm_fb_cma_helper.h > b/include/drm/drm_fb_cma_helper.h index d532f88a..15c4569 100644 > --- a/include/drm/drm_fb_cma_helper.h > +++ b/include/drm/drm_fb_cma_helper.h > @@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device > *dev, void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma); > void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma); void > drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state); > -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma, > - bool state); > > struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer > *fb, unsigned int plane); -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume() Date: Tue, 31 Jul 2018 01:14:43 +0300 Message-ID: <3328858.Mu96AcVENO@avalon> References: <20180730190137.GA25420@jordon-HP-15-Notebook-PC> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A8DB6E039 for ; Mon, 30 Jul 2018 22:14:06 +0000 (UTC) In-Reply-To: <20180730190137.GA25420@jordon-HP-15-Notebook-PC> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Souptick Joarder Cc: ajitn.linux@gmail.com, airlied@linux.ie, liviu.dudau@arm.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, malidp@foss.arm.com List-Id: dri-devel@lists.freedesktop.org SGkgU291cHRpY2ssCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIE1vbmRheSwgMzAgSnVs eSAyMDE4IDIyOjAxOjM3IEVFU1QgU291cHRpY2sgSm9hcmRlciB3cm90ZToKPiBjb252ZXJ0IGRy bV9hdG9taWNfaGVscGVyX3N1c3BlbmQvcmVzdW1lKCkgdG8gdXNlCj4gZHJtX21vZGVfY29uZmln X2hlbHBlcl9zdXNwZW5kL3Jlc3VtZSgpLgo+IAo+IFdpdGggdGhpcyBjb252ZXJzaW9uLCBkcm1f ZmJkZXZfY21hX3NldF9zdXNwZW5kX3VubG9ja2VkKCkKPiB3aWxsIGxlZnQgd2l0aCBubyBjb25z dW1lci4gU28gdGhpcyBmdW5jdGlvbiBjYW4gYmUgcmVtb3ZlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBTb3VwdGljayBKb2FyZGVyIDxqcmRyLmxpbnV4QGdtYWlsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5 OiBBaml0IE5lZ2kgPGFqaXRuLmxpbnV4QGdtYWlsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2FybS9oZGxjZF9kcnYuYyAgICAgICB8IDI2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jICAgfCAxOCAtLS0tLS0tLS0t LS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9kcnYuYyB8IDIxICsr LS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBpbmNsdWRlL2RybS9kcm1fZmJfY21hX2hlbHBlci5oICAg ICAgIHwgIDIgLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYzIGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2hkbGNkX2Rydi5j Cj4gYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2hkbGNkX2Rydi5jIGluZGV4IGZlYWE4YmMuLjRlNjE3 ZTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9oZGxjZF9kcnYuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hcm0vaGRsY2RfZHJ2LmMKPiBAQCAtNDI3LDM3ICs0MjcsMTUgQEAg c3RhdGljIGludCBoZGxjZF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAg c3RhdGljIGludCBfX21heWJlX3VudXNlZCBoZGxjZF9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2Ug KmRldikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOwo+IC0Jc3RydWN0IGhkbGNkX2RybV9wcml2YXRlICpoZGxjZCA9IGRybSA/IGRybS0+ZGV2 X3ByaXZhdGUgOiBOVUxMOwo+IAo+IC0JaWYgKCFoZGxjZCkKPiAtCQlyZXR1cm4gMDsKPiAtCj4g LQlkcm1fa21zX2hlbHBlcl9wb2xsX2Rpc2FibGUoZHJtKTsKPiAtCWRybV9mYmRldl9jbWFfc2V0 X3N1c3BlbmRfdW5sb2NrZWQoaGRsY2QtPmZiZGV2LCAxKTsKPiAtCj4gLQloZGxjZC0+c3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9zdXNwZW5kKGRybSk7Cj4gLQlpZiAoSVNfRVJSKGhkbGNkLT5z dGF0ZSkpIHsKPiAtCQlkcm1fZmJkZXZfY21hX3NldF9zdXNwZW5kX3VubG9ja2VkKGhkbGNkLT5m YmRldiwgMCk7Cj4gLQkJZHJtX2ttc19oZWxwZXJfcG9sbF9lbmFibGUoZHJtKTsKPiAtCQlyZXR1 cm4gUFRSX0VSUihoZGxjZC0+c3RhdGUpOwo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+ICsJcmV0 dXJuIGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfc3VzcGVuZChkcm0pOwo+ICB9Cj4gCj4gIHN0YXRp YyBpbnQgX19tYXliZV91bnVzZWQgaGRsY2RfcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikK PiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ IC0Jc3RydWN0IGhkbGNkX2RybV9wcml2YXRlICpoZGxjZCA9IGRybSA/IGRybS0+ZGV2X3ByaXZh dGUgOiBOVUxMOwo+IC0KPiAtCWlmICghaGRsY2QpCj4gLQkJcmV0dXJuIDA7Cj4gCj4gLQlkcm1f YXRvbWljX2hlbHBlcl9yZXN1bWUoZHJtLCBoZGxjZC0+c3RhdGUpOwo+IC0JZHJtX2ZiZGV2X2Nt YV9zZXRfc3VzcGVuZF91bmxvY2tlZChoZGxjZC0+ZmJkZXYsIDApOwo+IC0JZHJtX2ttc19oZWxw ZXJfcG9sbF9lbmFibGUoZHJtKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiBkcm1fbW9k ZV9jb25maWdfaGVscGVyX3Jlc3VtZShkcm0pOwo+ICB9Cj4gCj4gIHN0YXRpYyBTSU1QTEVfREVW X1BNX09QUyhoZGxjZF9wbV9vcHMsIGhkbGNkX3BtX3N1c3BlbmQsIGhkbGNkX3BtX3Jlc3VtZSk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jCj4gYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuYyBpbmRleCAxODZkMDBhLi5mNjA0YTg0 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKPiBAQCAtNTI5LDIxICs1Mjks MyBAQCB2b2lkIGRybV9mYmRldl9jbWFfc2V0X3N1c3BlbmQoc3RydWN0IGRybV9mYmRldl9jbWEK PiAqZmJkZXZfY21hLCBib29sIHN0YXRlKSBkcm1fZmJfaGVscGVyX3NldF9zdXNwZW5kKCZmYmRl dl9jbWEtPmZiX2hlbHBlciwKPiBzdGF0ZSk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZmJk ZXZfY21hX3NldF9zdXNwZW5kKTsKPiAtCj4gLS8qKgo+IC0gKiBkcm1fZmJkZXZfY21hX3NldF9z dXNwZW5kX3VubG9ja2VkIC0gd3JhcHBlciBhcm91bmQKPiAtICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRybV9mYl9oZWxwZXJfc2V0X3N1c3BlbmRfdW5sb2NrZWQKPiAt ICogQGZiZGV2X2NtYTogVGhlIGRybV9mYmRldl9jbWEgc3RydWN0LCBtYXkgYmUgTlVMTAo+IC0g KiBAc3RhdGU6IGRlc2lyZWQgc3RhdGUsIHplcm8gdG8gcmVzdW1lLCBub24temVybyB0byBzdXNw ZW5kCj4gLSAqCj4gLSAqIENhbGxzIGRybV9mYl9oZWxwZXJfc2V0X3N1c3BlbmQsIHdoaWNoIGlz IGEgd3JhcHBlciBhcm91bmQKPiAtICogZmJfc2V0X3N1c3BlbmQgaW1wbGVtZW50ZWQgYnkgZmJk ZXYgY29yZS4KPiAtICovCj4gLXZvaWQgZHJtX2ZiZGV2X2NtYV9zZXRfc3VzcGVuZF91bmxvY2tl ZChzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZmJkZXZfY21hLAo+IC0JCQkJCWJvb2wgc3RhdGUpCj4g LXsKPiAtCWlmIChmYmRldl9jbWEpCj4gLQkJZHJtX2ZiX2hlbHBlcl9zZXRfc3VzcGVuZF91bmxv Y2tlZCgmZmJkZXZfY21hLT5mYl9oZWxwZXIsCj4gLQkJCQkJCSAgIHN0YXRlKTsKPiAtfQo+IC1F WFBPUlRfU1lNQk9MKGRybV9mYmRldl9jbWFfc2V0X3N1c3BlbmRfdW5sb2NrZWQpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2Rydi5jCj4gYi9kcml2ZXJz L2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2Rydi5jIGluZGV4IDAyYWVlNmMuLjI4ODIyMGYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9kcnYuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfZHJ2LmMKPiBAQCAtMzU3LDMyICszNTcs MTUgQEAgc3RhdGljIHZvaWQgcmNhcl9kdV9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgc3RhdGljIGludCByY2FyX2R1X3BtX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+ ICB7Cj4gIAlzdHJ1Y3QgcmNhcl9kdV9kZXZpY2UgKnJjZHUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKPiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiAKPiAtCWRybV9rbXNfaGVs cGVyX3BvbGxfZGlzYWJsZShyY2R1LT5kZGV2KTsKPiAtCWRybV9mYmRldl9jbWFfc2V0X3N1c3Bl bmRfdW5sb2NrZWQocmNkdS0+ZmJkZXYsIHRydWUpOwo+IC0KPiAtCXN0YXRlID0gZHJtX2F0b21p Y19oZWxwZXJfc3VzcGVuZChyY2R1LT5kZGV2KTsKPiAtCWlmIChJU19FUlIoc3RhdGUpKSB7Cj4g LQkJZHJtX2ZiZGV2X2NtYV9zZXRfc3VzcGVuZF91bmxvY2tlZChyY2R1LT5mYmRldiwgZmFsc2Up Owo+IC0JCWRybV9rbXNfaGVscGVyX3BvbGxfZW5hYmxlKHJjZHUtPmRkZXYpOwo+IC0JCXJldHVy biBQVFJfRVJSKHN0YXRlKTsKPiAtCX0KPiAtCj4gLQlyY2R1LT5zdXNwZW5kX3N0YXRlID0gc3Rh dGU7CgpJZiB5b3UgZnVydGhlciByZW1vdmUgdGhlIHN1c3BlbmRfc3RhdGUgZmllbGQgZnJvbSB0 aGUgcmNhcl9kdV9kZXZpY2UgCnN0cnVjdHVyZSwgeW91J2xsIGdldCBteQoKUmV2aWV3ZWQtYnk6 IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KCj4g LQo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gZHJtX21vZGVfY29uZmlnX2hlbHBlcl9zdXNwZW5k KHJjZHUtPmRkZXYpOwo+ICB9Cj4gCj4gIHN0YXRpYyBpbnQgcmNhcl9kdV9wbV9yZXN1bWUoc3Ry dWN0IGRldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgcmNhcl9kdV9kZXZpY2UgKnJjZHUgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiAKPiAtCWRybV9hdG9taWNfaGVscGVyX3Jlc3VtZShyY2R1 LT5kZGV2LCByY2R1LT5zdXNwZW5kX3N0YXRlKTsKPiAtCWRybV9mYmRldl9jbWFfc2V0X3N1c3Bl bmRfdW5sb2NrZWQocmNkdS0+ZmJkZXYsIGZhbHNlKTsKPiAtCWRybV9rbXNfaGVscGVyX3BvbGxf ZW5hYmxlKHJjZHUtPmRkZXYpOwo+IC0KPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGRybV9tb2Rl X2NvbmZpZ19oZWxwZXJfcmVzdW1lKHJjZHUtPmRkZXYpOwo+ICB9Cj4gICNlbmRpZgo+IAo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZmJfY21hX2hlbHBlci5oCj4gYi9pbmNsdWRlL2Ry bS9kcm1fZmJfY21hX2hlbHBlci5oIGluZGV4IGQ1MzJmODhhLi4xNWM0NTY5IDEwMDY0NAo+IC0t LSBhL2luY2x1ZGUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmgKPiArKysgYi9pbmNsdWRlL2RybS9k cm1fZmJfY21hX2hlbHBlci5oCj4gQEAgLTMzLDggKzMzLDYgQEAgc3RydWN0IGRybV9mYmRldl9j bWEgKmRybV9mYmRldl9jbWFfaW5pdChzdHJ1Y3QgZHJtX2RldmljZQo+ICpkZXYsIHZvaWQgZHJt X2ZiZGV2X2NtYV9yZXN0b3JlX21vZGUoc3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2X2NtYSk7 Cj4gdm9pZCBkcm1fZmJkZXZfY21hX2hvdHBsdWdfZXZlbnQoc3RydWN0IGRybV9mYmRldl9jbWEg KmZiZGV2X2NtYSk7IHZvaWQKPiBkcm1fZmJkZXZfY21hX3NldF9zdXNwZW5kKHN0cnVjdCBkcm1f ZmJkZXZfY21hICpmYmRldl9jbWEsIGJvb2wgc3RhdGUpOwo+IC12b2lkIGRybV9mYmRldl9jbWFf c2V0X3N1c3BlbmRfdW5sb2NrZWQoc3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2X2NtYSwKPiAt CQkJCQlib29sIHN0YXRlKTsKPiAKPiAgc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqZHJtX2Zi X2NtYV9nZXRfZ2VtX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyCj4gKmZiLCB1bnNpZ25lZCBp bnQgcGxhbmUpOwoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0CgoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=