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=-9.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 820A4C43603 for ; Wed, 11 Dec 2019 04:27:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4E8BE208C3 for ; Wed, 11 Dec 2019 04:27:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gTENeTiC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726874AbfLKE1L (ORCPT ); Tue, 10 Dec 2019 23:27:11 -0500 Received: from mail-pj1-f66.google.com ([209.85.216.66]:41037 "EHLO mail-pj1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726783AbfLKE1L (ORCPT ); Tue, 10 Dec 2019 23:27:11 -0500 Received: by mail-pj1-f66.google.com with SMTP id ca19so8395515pjb.8; Tue, 10 Dec 2019 20:27:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=s7ypUOuVnqBd5be1hKp8bDLVVBRRPeaRQV9mQbkGU3s=; b=gTENeTiCkWr99yApgh/4VAIyoKDT3J7JznhYgYA4yoRd3lIV7Jm+5BL8ZWoTvA7zRp z9pynE4SbT7H+qeti2O+huH/QLAOHUl79cPlwnOC8jDVV7lx8IoXTxHIGs3rhJvAAMQa Yc6x1Rvg1pAjEwIvVGdP7984KVM3/BVxsgQNuP6LZ7fkAqAkavw1uX8LJtV2j+Zp6Lb5 1awdDwCJI3o1m3td6EweC4s2Bl/AsVBEc+qxdVSUDqSpEWAbA3tf9WnGg8pegcAPS9R4 5PjvVVq/2M5E9jWv0ThPdLHenPImUhlT90qLM1HLA+JaSUhSUgxpC8QDPSSX8C4XEFZT Jocg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=s7ypUOuVnqBd5be1hKp8bDLVVBRRPeaRQV9mQbkGU3s=; b=mPi10sG4Z2nKcucE1v//XK+C/AaPOr2rjvYGNZ99xKs8r6gTYD1kmuvyKjcsN+bkoK G5JFoNafhr2puUkfl19yrliOCLPyfTZUiuvlEzKx9mbvQl/gv0BjYiih+qucnPAhvk9O 4TPOXMntQWYjRq+zVGTTUhWdaaMKgXpBbJfFKDbDq9BBfgdUJPAusYZGABjck1mcKa5f EgQ82OKMi9hDb/3C6kdTqwbWjeNO9Dff5QY8OTvIfVkmzy/CfjLzv97ItYsQcUbg2XaS xpzWgBGsY/a3YbR8n+7fnqZXTyuieOpIa8uyXbiTerG/okKdyIiuzlPgI9fl91hqEloI kHdA== X-Gm-Message-State: APjAAAUggu6AZpUTYUvdOzapGeWHQ3y52nCaEia+W8i+m6m9+wwm6Xqd nzQn8U5yTGT0XFFFPWob7N4= X-Google-Smtp-Source: APXvYqxmdkRJdHXU4kf3uFrsdx5z19XOW4pKdUEplSPaVl+4BRm2wt+R0nQkpS14IKgOpvMW5oYY+g== X-Received: by 2002:a17:90a:1955:: with SMTP id 21mr1200544pjh.105.1576038430640; Tue, 10 Dec 2019 20:27:10 -0800 (PST) Received: from localhost.localdomain ([12.176.148.120]) by smtp.gmail.com with ESMTPSA id r62sm692916pfc.89.2019.12.10.20.27.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Dec 2019 20:27:09 -0800 (PST) From: SeongJae Park X-Google-Original-From: SeongJae Park To: jgross@suse.com, axboe@kernel.dk, konrad.wilk@oracle.com, roger.pau@citrix.com Cc: SeongJae Park , pdurrant@amazon.com, sjpark@amazon.com, xen-devel@lists.xenproject.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 1/3] xenbus/backend: Add memory pressure handler callback Date: Wed, 11 Dec 2019 04:26:57 +0000 Message-Id: <20191211042657.6037-1-sjpark@amazon.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191211042428.5961-1-sjpark@amazon.de> References: <20191211042428.5961-1-sjpark@amazon.de> Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Granting pages consumes backend system memory. In systems configured with insufficient spare memory for those pages, it can cause a memory pressure situation. However, finding the optimal amount of the spare memory is challenging for large systems having dynamic resource utilization patterns. Also, such a static configuration might lack flexibility. To mitigate such problems, this commit adds a memory reclaim callback to 'xenbus_driver'. If a memory pressure is detected, 'xenbus' requests every backend driver to volunarily release its memory. Note that it would be able to improve the callback facility for more sophisticated handlings of general pressures. For example, it would be possible to monitor the memory consumption of each device and issue the release requests to only devices which causing the pressure. Also, the callback could be extended to handle not only memory, but general resources. Nevertheless, this version of the implementation defers such sophisticated goals as a future work. Reviewed-by: Juergen Gross Signed-off-by: SeongJae Park --- drivers/xen/xenbus/xenbus_probe_backend.c | 32 +++++++++++++++++++++++ include/xen/xenbus.h | 1 + 2 files changed, 33 insertions(+) diff --git a/drivers/xen/xenbus/xenbus_probe_backend.c b/drivers/xen/xenbus/xenbus_probe_backend.c index b0bed4faf44c..aedbe2198de5 100644 --- a/drivers/xen/xenbus/xenbus_probe_backend.c +++ b/drivers/xen/xenbus/xenbus_probe_backend.c @@ -248,6 +248,35 @@ static int backend_probe_and_watch(struct notifier_block *notifier, return NOTIFY_DONE; } +static int xenbus_backend_reclaim(struct device *dev, void *data) +{ + struct xenbus_driver *drv; + + if (!dev->driver) + return 0; + drv = to_xenbus_driver(dev->driver); + if (drv && drv->reclaim) + drv->reclaim(to_xenbus_device(dev)); + return 0; +} + +/* + * Returns 0 always because we are using shrinker to only detect memory + * pressure. + */ +static unsigned long xenbus_backend_shrink_count(struct shrinker *shrinker, + struct shrink_control *sc) +{ + bus_for_each_dev(&xenbus_backend.bus, NULL, NULL, + xenbus_backend_reclaim); + return 0; +} + +static struct shrinker xenbus_backend_shrinker = { + .count_objects = xenbus_backend_shrink_count, + .seeks = DEFAULT_SEEKS, +}; + static int __init xenbus_probe_backend_init(void) { static struct notifier_block xenstore_notifier = { @@ -264,6 +293,9 @@ static int __init xenbus_probe_backend_init(void) register_xenstore_notifier(&xenstore_notifier); + if (register_shrinker(&xenbus_backend_shrinker)) + pr_warn("shrinker registration failed\n"); + return 0; } subsys_initcall(xenbus_probe_backend_init); diff --git a/include/xen/xenbus.h b/include/xen/xenbus.h index 869c816d5f8c..196260017666 100644 --- a/include/xen/xenbus.h +++ b/include/xen/xenbus.h @@ -104,6 +104,7 @@ struct xenbus_driver { struct device_driver driver; int (*read_otherend_details)(struct xenbus_device *dev); int (*is_ready)(struct xenbus_device *dev); + void (*reclaim)(struct xenbus_device *dev); }; static inline struct xenbus_driver *to_xenbus_driver(struct device_driver *drv) -- 2.17.1 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=-9.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 8CEBFC43603 for ; Wed, 11 Dec 2019 04:27:24 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5D42F2073B for ; Wed, 11 Dec 2019 04:27:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gTENeTiC" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5D42F2073B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ietaj-0004w5-Ju; Wed, 11 Dec 2019 04:27:13 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ietai-0004vx-2I for xen-devel@lists.xenproject.org; Wed, 11 Dec 2019 04:27:12 +0000 X-Inumbo-ID: 7fe0f902-1bce-11ea-88e7-bc764e2007e4 Received: from mail-pj1-x1044.google.com (unknown [2607:f8b0:4864:20::1044]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 7fe0f902-1bce-11ea-88e7-bc764e2007e4; Wed, 11 Dec 2019 04:27:11 +0000 (UTC) Received: by mail-pj1-x1044.google.com with SMTP id v93so8400821pjb.6 for ; Tue, 10 Dec 2019 20:27:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=s7ypUOuVnqBd5be1hKp8bDLVVBRRPeaRQV9mQbkGU3s=; b=gTENeTiCkWr99yApgh/4VAIyoKDT3J7JznhYgYA4yoRd3lIV7Jm+5BL8ZWoTvA7zRp z9pynE4SbT7H+qeti2O+huH/QLAOHUl79cPlwnOC8jDVV7lx8IoXTxHIGs3rhJvAAMQa Yc6x1Rvg1pAjEwIvVGdP7984KVM3/BVxsgQNuP6LZ7fkAqAkavw1uX8LJtV2j+Zp6Lb5 1awdDwCJI3o1m3td6EweC4s2Bl/AsVBEc+qxdVSUDqSpEWAbA3tf9WnGg8pegcAPS9R4 5PjvVVq/2M5E9jWv0ThPdLHenPImUhlT90qLM1HLA+JaSUhSUgxpC8QDPSSX8C4XEFZT Jocg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=s7ypUOuVnqBd5be1hKp8bDLVVBRRPeaRQV9mQbkGU3s=; b=c/3ZEeDyqXO0ICD1dWe8be7IVNMHDdj7l7qyPnfEeXIWCcMHIqveGbQOOt9syDot1f sLJH/Ne6Shug8w7GOr/tqQhhat2P+2GyYzOpdpxfuqnu+RsEeGSykXI8tTiVFfmqnvfe EezsPopzFIMVNxrLD5rzmDReu5IbwUNBuAO71QotjGtT7cUm2F9n2HC5XDwvjGMKBBVC arziOCV4liAGMPOpClhlQ3waAuXeBDwfYnAOFPNnK0gNR4qaTwllZTEGNJVwqHxWWPmJ MH8Fx+3sNKz0Gk+TliSr1upRF0nhxRWN/e1c61tvC0ETwWiLLsZ0B1mtdasePnqqBp44 RHiQ== X-Gm-Message-State: APjAAAXnrXiQE+JdjSgsKgVu6ivuyWow7sOXnuoidrom54KCUzN3aVoh 4RVQMqR94O8bmOMPE2OJinY= X-Google-Smtp-Source: APXvYqxmdkRJdHXU4kf3uFrsdx5z19XOW4pKdUEplSPaVl+4BRm2wt+R0nQkpS14IKgOpvMW5oYY+g== X-Received: by 2002:a17:90a:1955:: with SMTP id 21mr1200544pjh.105.1576038430640; Tue, 10 Dec 2019 20:27:10 -0800 (PST) Received: from localhost.localdomain ([12.176.148.120]) by smtp.gmail.com with ESMTPSA id r62sm692916pfc.89.2019.12.10.20.27.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Dec 2019 20:27:09 -0800 (PST) From: SeongJae Park X-Google-Original-From: SeongJae Park To: jgross@suse.com, axboe@kernel.dk, konrad.wilk@oracle.com, roger.pau@citrix.com Date: Wed, 11 Dec 2019 04:26:57 +0000 Message-Id: <20191211042657.6037-1-sjpark@amazon.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191211042428.5961-1-sjpark@amazon.de> References: <20191211042428.5961-1-sjpark@amazon.de> Subject: [Xen-devel] [PATCH v6 1/3] xenbus/backend: Add memory pressure handler callback X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: sjpark@amazon.com, pdurrant@amazon.com, SeongJae Park , linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, xen-devel@lists.xenproject.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" R3JhbnRpbmcgcGFnZXMgY29uc3VtZXMgYmFja2VuZCBzeXN0ZW0gbWVtb3J5LiAgSW4gc3lzdGVt cyBjb25maWd1cmVkCndpdGggaW5zdWZmaWNpZW50IHNwYXJlIG1lbW9yeSBmb3IgdGhvc2UgcGFn ZXMsIGl0IGNhbiBjYXVzZSBhIG1lbW9yeQpwcmVzc3VyZSBzaXR1YXRpb24uICBIb3dldmVyLCBm aW5kaW5nIHRoZSBvcHRpbWFsIGFtb3VudCBvZiB0aGUgc3BhcmUKbWVtb3J5IGlzIGNoYWxsZW5n aW5nIGZvciBsYXJnZSBzeXN0ZW1zIGhhdmluZyBkeW5hbWljIHJlc291cmNlCnV0aWxpemF0aW9u IHBhdHRlcm5zLiAgQWxzbywgc3VjaCBhIHN0YXRpYyBjb25maWd1cmF0aW9uIG1pZ2h0IGxhY2sK ZmxleGliaWxpdHkuCgpUbyBtaXRpZ2F0ZSBzdWNoIHByb2JsZW1zLCB0aGlzIGNvbW1pdCBhZGRz IGEgbWVtb3J5IHJlY2xhaW0gY2FsbGJhY2sgdG8KJ3hlbmJ1c19kcml2ZXInLiAgSWYgYSBtZW1v cnkgcHJlc3N1cmUgaXMgZGV0ZWN0ZWQsICd4ZW5idXMnIHJlcXVlc3RzCmV2ZXJ5IGJhY2tlbmQg ZHJpdmVyIHRvIHZvbHVuYXJpbHkgcmVsZWFzZSBpdHMgbWVtb3J5LgoKTm90ZSB0aGF0IGl0IHdv dWxkIGJlIGFibGUgdG8gaW1wcm92ZSB0aGUgY2FsbGJhY2sgZmFjaWxpdHkgZm9yIG1vcmUKc29w aGlzdGljYXRlZCBoYW5kbGluZ3Mgb2YgZ2VuZXJhbCBwcmVzc3VyZXMuICBGb3IgZXhhbXBsZSwg aXQgd291bGQgYmUKcG9zc2libGUgdG8gbW9uaXRvciB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uIG9m IGVhY2ggZGV2aWNlIGFuZCBpc3N1ZSB0aGUKcmVsZWFzZSByZXF1ZXN0cyB0byBvbmx5IGRldmlj ZXMgd2hpY2ggY2F1c2luZyB0aGUgcHJlc3N1cmUuICBBbHNvLCB0aGUKY2FsbGJhY2sgY291bGQg YmUgZXh0ZW5kZWQgdG8gaGFuZGxlIG5vdCBvbmx5IG1lbW9yeSwgYnV0IGdlbmVyYWwKcmVzb3Vy Y2VzLiAgTmV2ZXJ0aGVsZXNzLCB0aGlzIHZlcnNpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uIGRl ZmVycyBzdWNoCnNvcGhpc3RpY2F0ZWQgZ29hbHMgYXMgYSBmdXR1cmUgd29yay4KClJldmlld2Vk LWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IFNlb25n SmFlIFBhcmsgPHNqcGFya0BhbWF6b24uZGU+Ci0tLQogZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1 c19wcm9iZV9iYWNrZW5kLmMgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS94 ZW4veGVuYnVzLmggICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAyIGZpbGVzIGNoYW5nZWQs IDMzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVz X3Byb2JlX2JhY2tlbmQuYyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVfYmFja2Vu ZC5jCmluZGV4IGIwYmVkNGZhZjQ0Yy4uYWVkYmUyMTk4ZGU1IDEwMDY0NAotLS0gYS9kcml2ZXJz L3hlbi94ZW5idXMveGVuYnVzX3Byb2JlX2JhY2tlbmQuYworKysgYi9kcml2ZXJzL3hlbi94ZW5i dXMveGVuYnVzX3Byb2JlX2JhY2tlbmQuYwpAQCAtMjQ4LDYgKzI0OCwzNSBAQCBzdGF0aWMgaW50 IGJhY2tlbmRfcHJvYmVfYW5kX3dhdGNoKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbm90aWZpZXIs CiAJcmV0dXJuIE5PVElGWV9ET05FOwogfQogCitzdGF0aWMgaW50IHhlbmJ1c19iYWNrZW5kX3Jl Y2xhaW0oc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQoreworCXN0cnVjdCB4ZW5idXNf ZHJpdmVyICpkcnY7CisKKwlpZiAoIWRldi0+ZHJpdmVyKQorCQlyZXR1cm4gMDsKKwlkcnYgPSB0 b194ZW5idXNfZHJpdmVyKGRldi0+ZHJpdmVyKTsKKwlpZiAoZHJ2ICYmIGRydi0+cmVjbGFpbSkK KwkJZHJ2LT5yZWNsYWltKHRvX3hlbmJ1c19kZXZpY2UoZGV2KSk7CisJcmV0dXJuIDA7Cit9CisK Ky8qCisgKiBSZXR1cm5zIDAgYWx3YXlzIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIHNocmlua2VyIHRv IG9ubHkgZGV0ZWN0IG1lbW9yeQorICogcHJlc3N1cmUuCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBs b25nIHhlbmJ1c19iYWNrZW5kX3Nocmlua19jb3VudChzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2Vy LAorCQkJCXN0cnVjdCBzaHJpbmtfY29udHJvbCAqc2MpCit7CisJYnVzX2Zvcl9lYWNoX2Rldigm eGVuYnVzX2JhY2tlbmQuYnVzLCBOVUxMLCBOVUxMLAorCQkJeGVuYnVzX2JhY2tlbmRfcmVjbGFp bSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2hyaW5rZXIgeGVuYnVzX2JhY2tl bmRfc2hyaW5rZXIgPSB7CisJLmNvdW50X29iamVjdHMgPSB4ZW5idXNfYmFja2VuZF9zaHJpbmtf Y291bnQsCisJLnNlZWtzID0gREVGQVVMVF9TRUVLUywKK307CisKIHN0YXRpYyBpbnQgX19pbml0 IHhlbmJ1c19wcm9iZV9iYWNrZW5kX2luaXQodm9pZCkKIHsKIAlzdGF0aWMgc3RydWN0IG5vdGlm aWVyX2Jsb2NrIHhlbnN0b3JlX25vdGlmaWVyID0gewpAQCAtMjY0LDYgKzI5Myw5IEBAIHN0YXRp YyBpbnQgX19pbml0IHhlbmJ1c19wcm9iZV9iYWNrZW5kX2luaXQodm9pZCkKIAogCXJlZ2lzdGVy X3hlbnN0b3JlX25vdGlmaWVyKCZ4ZW5zdG9yZV9ub3RpZmllcik7CiAKKwlpZiAocmVnaXN0ZXJf c2hyaW5rZXIoJnhlbmJ1c19iYWNrZW5kX3Nocmlua2VyKSkKKwkJcHJfd2Fybigic2hyaW5rZXIg cmVnaXN0cmF0aW9uIGZhaWxlZFxuIik7CisKIAlyZXR1cm4gMDsKIH0KIHN1YnN5c19pbml0Y2Fs bCh4ZW5idXNfcHJvYmVfYmFja2VuZF9pbml0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3hl bmJ1cy5oIGIvaW5jbHVkZS94ZW4veGVuYnVzLmgKaW5kZXggODY5YzgxNmQ1ZjhjLi4xOTYyNjAw MTc2NjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGVuL3hlbmJ1cy5oCisrKyBiL2luY2x1ZGUveGVu L3hlbmJ1cy5oCkBAIC0xMDQsNiArMTA0LDcgQEAgc3RydWN0IHhlbmJ1c19kcml2ZXIgewogCXN0 cnVjdCBkZXZpY2VfZHJpdmVyIGRyaXZlcjsKIAlpbnQgKCpyZWFkX290aGVyZW5kX2RldGFpbHMp KHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYpOwogCWludCAoKmlzX3JlYWR5KShzdHJ1Y3QgeGVu YnVzX2RldmljZSAqZGV2KTsKKwl2b2lkICgqcmVjbGFpbSkoc3RydWN0IHhlbmJ1c19kZXZpY2Ug KmRldik7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4ZW5idXNfZHJpdmVyICp0b194ZW5i dXNfZHJpdmVyKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCi0tIAoyLjE3LjEKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs