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,USER_AGENT_GIT 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 30FB9C2D0C5 for ; Tue, 10 Dec 2019 08:06:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EF4852077B for ; Tue, 10 Dec 2019 08:06:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lPza1JEH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726391AbfLJIGq (ORCPT ); Tue, 10 Dec 2019 03:06:46 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:38215 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726974AbfLJIGp (ORCPT ); Tue, 10 Dec 2019 03:06:45 -0500 Received: by mail-wr1-f67.google.com with SMTP id y17so18893374wrh.5; Tue, 10 Dec 2019 00:06:44 -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=QwGsEms4piE9a2DBjMxlpqS/fTzaKgAUBvTe2FzVG7A=; b=lPza1JEHlTNKLzFDCDRnVo7HF92gkuhkIa1h7FjUOXfSbg8cJNbwj22lMhzGmLWQM9 EuWz/6RijlKpCghZcVe3rWIOXVZ+A9aqVJpF6BsEL2ih8fTyYXlYEfgwFVcxcG+UZh0b In2tw6g7OqQrdDqrIU2uDeX8GfA7NdmDamY7upGqhCceTUDRnF0kmdlKLR3NJx75Co12 CMcB9hXFxUxJer4fTd1qBw5yf9v4G/6MTQPWhgB+sRzuVRo/hUuVXnquQbiWhxJixdCw 1ambSMWkD03j7VE0keCQ0T8J0Bl0P7Q38teIHMQNLfq/p+ufiRsQ8xEwzGBeKIMMBmRP bhMg== 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=QwGsEms4piE9a2DBjMxlpqS/fTzaKgAUBvTe2FzVG7A=; b=WJou7sMHGbjW+91tCbnsA7ddzFBa/0TmMhEvNFeHkkSLZV0delqg5eNJ3lq8IyPF1l WfAG7i9XfD8p/yazG38UHWmjGhNP+pBxb4ppqWnOHly5uhNbny28BcQS/2YofXDKgD3B vETP4BFp3g08XQtsTQ1dG9GnY3UC27Qcrg9b/NfWz4a09UOAzRsQ78i+8rgTDpeV/Opo 5RA+pwXY8gYrWazwC92W5H4r1eSPTvL7pjNNGw/gjPAEnHUwTr1zbgjOSJKhbnAQBgGO 2k1XvSA3gD1K4K/xXvDhq2TeRpvCzVCPVqp7ye1TVoA6NCFizGPYCnn4f4si6WmlSv4X /RVw== X-Gm-Message-State: APjAAAVLVuZjdb/JzJ7Fuwa7dPdpKCds8pWTwBeQzM+2jF09MO+h1wbV mp2/3j4MosZANOqkWKy7mA0= X-Google-Smtp-Source: APXvYqyeW1Ot1SkJg8uOlMtOudbd9EEcZEGOP8qLc0yzxcBnOs2OKqXQe5RAMyAarTVhuIvkXVwDXw== X-Received: by 2002:adf:e812:: with SMTP id o18mr1543550wrm.127.1575965204034; Tue, 10 Dec 2019 00:06:44 -0800 (PST) Received: from localhost.localdomain (x2f7fae7.dyn.telefonica.de. [2.247.250.231]) by smtp.gmail.com with ESMTPSA id a16sm2342587wrt.37.2019.12.10.00.06.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Dec 2019 00:06:43 -0800 (PST) From: SeongJae Park X-Google-Original-From: SeongJae Park To: sjpark@amazon.com Cc: axboe@kernel.dk, konrad.wilk@oracle.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, pdurrant@amazon.com, roger.pau@citrix.com, sj38.park@gmail.com, xen-devel@lists.xenproject.org, SeongJae Park Subject: [PATCH v5 1/2] xenbus/backend: Add memory pressure handler callback Date: Tue, 10 Dec 2019 08:06:27 +0000 Message-Id: <20191210080628.5264-2-sjpark@amazon.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191210080628.5264-1-sjpark@amazon.de> References: <20191210080628.5264-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 a flexibility. To mitigate such problems, this commit adds a memory reclaim callback to 'xenbus_driver'. Using this facility, 'xenbus' would be able to monitor a memory pressure and request specific devices of specific backend drivers which causing the given pressure to voluntarily release its memory. That said, this commit simply requests every callback registered driver to release its memory for every domain, rather than issueing the requests to the drivers and the domain in charge. Such things will be done in a futur. Also, this commit focuses on memory only. However, it would be ablt to be extended for general resources. Signed-off-by: SeongJae Park --- drivers/xen/xenbus/xenbus_probe_backend.c | 31 +++++++++++++++++++++++ include/xen/xenbus.h | 1 + 2 files changed, 32 insertions(+) diff --git a/drivers/xen/xenbus/xenbus_probe_backend.c b/drivers/xen/xenbus/xenbus_probe_backend.c index b0bed4faf44c..5a5ba29e39df 100644 --- a/drivers/xen/xenbus/xenbus_probe_backend.c +++ b/drivers/xen/xenbus/xenbus_probe_backend.c @@ -248,6 +248,34 @@ 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 -ENOENT; + 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 +292,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..cdb075e4182f 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); + unsigned (*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,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 C77C4C43603 for ; Tue, 10 Dec 2019 08:06:59 +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 9B6E92073B for ; Tue, 10 Dec 2019 08:06:59 +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="lPza1JEH" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9B6E92073B 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 1ieaXi-0002Qj-Fx; Tue, 10 Dec 2019 08:06:50 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ieaXh-0002QV-Ai for xen-devel@lists.xenproject.org; Tue, 10 Dec 2019 08:06:49 +0000 X-Inumbo-ID: 016881da-1b24-11ea-a914-bc764e2007e4 Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 016881da-1b24-11ea-a914-bc764e2007e4; Tue, 10 Dec 2019 08:06:44 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id c14so18874842wrn.7 for ; Tue, 10 Dec 2019 00:06:44 -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=QwGsEms4piE9a2DBjMxlpqS/fTzaKgAUBvTe2FzVG7A=; b=lPza1JEHlTNKLzFDCDRnVo7HF92gkuhkIa1h7FjUOXfSbg8cJNbwj22lMhzGmLWQM9 EuWz/6RijlKpCghZcVe3rWIOXVZ+A9aqVJpF6BsEL2ih8fTyYXlYEfgwFVcxcG+UZh0b In2tw6g7OqQrdDqrIU2uDeX8GfA7NdmDamY7upGqhCceTUDRnF0kmdlKLR3NJx75Co12 CMcB9hXFxUxJer4fTd1qBw5yf9v4G/6MTQPWhgB+sRzuVRo/hUuVXnquQbiWhxJixdCw 1ambSMWkD03j7VE0keCQ0T8J0Bl0P7Q38teIHMQNLfq/p+ufiRsQ8xEwzGBeKIMMBmRP bhMg== 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=QwGsEms4piE9a2DBjMxlpqS/fTzaKgAUBvTe2FzVG7A=; b=FJamT2937Rz3dIy1JDdJAbzBq1kIvz2nMYb8JRvKBg8SjQN+F8Uo42Y3LF+dJD8R61 sPhzcEy4+/k4sq/ONvvg7I0Rl10yLwGVP46yQb/7Yz6PhGOhCT33vo95333dGnzR2Rc5 TNcqZk5WGcATnnDCEWeB3l2eyT8bbxewfmE8sDQV+25SCKMrUczvUYqxL5kBLsele04i LKI+3Lxc8qORNCViRg7Y1iiLWo109OClKplLAxttAmuWTzCwI/HEfDjy9DkQntL8WC5J D4NfPfbHykzMfJDtJkO3Z/IOYs7BIHmKOlTMhx/R2LPvPG9UHOj4NIW6ZX+9QwiVyven 2Teg== X-Gm-Message-State: APjAAAUArQhDXYIpw45CjDReVeasAk+TSaii9oldhwF8gME2btJDbz08 AmiMpkpGPJ7TJCLm+aJYF5g= X-Google-Smtp-Source: APXvYqyeW1Ot1SkJg8uOlMtOudbd9EEcZEGOP8qLc0yzxcBnOs2OKqXQe5RAMyAarTVhuIvkXVwDXw== X-Received: by 2002:adf:e812:: with SMTP id o18mr1543550wrm.127.1575965204034; Tue, 10 Dec 2019 00:06:44 -0800 (PST) Received: from localhost.localdomain (x2f7fae7.dyn.telefonica.de. [2.247.250.231]) by smtp.gmail.com with ESMTPSA id a16sm2342587wrt.37.2019.12.10.00.06.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Dec 2019 00:06:43 -0800 (PST) From: SeongJae Park X-Google-Original-From: SeongJae Park To: sjpark@amazon.com Date: Tue, 10 Dec 2019 08:06:27 +0000 Message-Id: <20191210080628.5264-2-sjpark@amazon.de> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191210080628.5264-1-sjpark@amazon.de> References: <20191210080628.5264-1-sjpark@amazon.de> Subject: [Xen-devel] [PATCH v5 1/2] 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: axboe@kernel.dk, sj38.park@gmail.com, konrad.wilk@oracle.com, pdurrant@amazon.com, SeongJae Park , linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, xen-devel@lists.xenproject.org, roger.pau@citrix.com 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 IHBhdHRlcm5zLiAgQWxzbywgc3VjaCBhIHN0YXRpYyBjb25maWd1cmF0aW9uIG1pZ2h0IGxhY2sg YQpmbGV4aWJpbGl0eS4KClRvIG1pdGlnYXRlIHN1Y2ggcHJvYmxlbXMsIHRoaXMgY29tbWl0IGFk ZHMgYSBtZW1vcnkgcmVjbGFpbSBjYWxsYmFjayB0bwoneGVuYnVzX2RyaXZlcicuICBVc2luZyB0 aGlzIGZhY2lsaXR5LCAneGVuYnVzJyB3b3VsZCBiZSBhYmxlIHRvIG1vbml0b3IKYSBtZW1vcnkg cHJlc3N1cmUgYW5kIHJlcXVlc3Qgc3BlY2lmaWMgZGV2aWNlcyBvZiBzcGVjaWZpYyBiYWNrZW5k CmRyaXZlcnMgd2hpY2ggY2F1c2luZyB0aGUgZ2l2ZW4gcHJlc3N1cmUgdG8gdm9sdW50YXJpbHkg cmVsZWFzZSBpdHMKbWVtb3J5LgoKVGhhdCBzYWlkLCB0aGlzIGNvbW1pdCBzaW1wbHkgcmVxdWVz dHMgZXZlcnkgY2FsbGJhY2sgcmVnaXN0ZXJlZCBkcml2ZXIKdG8gcmVsZWFzZSBpdHMgbWVtb3J5 IGZvciBldmVyeSBkb21haW4sIHJhdGhlciB0aGFuIGlzc3VlaW5nIHRoZQpyZXF1ZXN0cyB0byB0 aGUgZHJpdmVycyBhbmQgdGhlIGRvbWFpbiBpbiBjaGFyZ2UuICBTdWNoIHRoaW5ncyB3aWxsIGJl CmRvbmUgaW4gYSBmdXR1ci4gIEFsc28sIHRoaXMgY29tbWl0IGZvY3VzZXMgb24gbWVtb3J5IG9u bHkuICBIb3dldmVyLCBpdAp3b3VsZCBiZSBhYmx0IHRvIGJlIGV4dGVuZGVkIGZvciBnZW5lcmFs IHJlc291cmNlcy4KClNpZ25lZC1vZmYtYnk6IFNlb25nSmFlIFBhcmsgPHNqcGFya0BhbWF6b24u ZGU+Ci0tLQogZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19wcm9iZV9iYWNrZW5kLmMgfCAzMSAr KysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS94ZW4veGVuYnVzLmggICAgICAgICAgICAg ICAgICAgICAgfCAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlX2JhY2tlbmQuYyBiL2RyaXZl cnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVfYmFja2VuZC5jCmluZGV4IGIwYmVkNGZhZjQ0Yy4u NWE1YmEyOWUzOWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2Jl X2JhY2tlbmQuYworKysgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlX2JhY2tlbmQu YwpAQCAtMjQ4LDYgKzI0OCwzNCBAQCBzdGF0aWMgaW50IGJhY2tlbmRfcHJvYmVfYW5kX3dhdGNo KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbm90aWZpZXIsCiAJcmV0dXJuIE5PVElGWV9ET05FOwog fQogCitzdGF0aWMgaW50IHhlbmJ1c19iYWNrZW5kX3JlY2xhaW0oc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkICpkYXRhKQoreworCXN0cnVjdCB4ZW5idXNfZHJpdmVyICpkcnY7CisJaWYgKCFkZXYt PmRyaXZlcikKKwkJcmV0dXJuIC1FTk9FTlQ7CisJZHJ2ID0gdG9feGVuYnVzX2RyaXZlcihkZXYt PmRyaXZlcik7CisJaWYgKGRydiAmJiBkcnYtPnJlY2xhaW0pCisJCWRydi0+cmVjbGFpbSh0b194 ZW5idXNfZGV2aWNlKGRldikpOworCXJldHVybiAwOworfQorCisvKgorICogUmV0dXJucyAwIGFs d2F5cyBiZWNhdXNlIHdlIGFyZSB1c2luZyBzaHJpbmtlciB0byBvbmx5IGRldGVjdCBtZW1vcnkK KyAqIHByZXNzdXJlLgorICovCitzdGF0aWMgdW5zaWduZWQgbG9uZyB4ZW5idXNfYmFja2VuZF9z aHJpbmtfY291bnQoc3RydWN0IHNocmlua2VyICpzaHJpbmtlciwKKwkJCQlzdHJ1Y3Qgc2hyaW5r X2NvbnRyb2wgKnNjKQoreworCWJ1c19mb3JfZWFjaF9kZXYoJnhlbmJ1c19iYWNrZW5kLmJ1cywg TlVMTCwgTlVMTCwKKwkJCXhlbmJ1c19iYWNrZW5kX3JlY2xhaW0pOworCXJldHVybiAwOworfQor CitzdGF0aWMgc3RydWN0IHNocmlua2VyIHhlbmJ1c19iYWNrZW5kX3Nocmlua2VyID0geworCS5j b3VudF9vYmplY3RzID0geGVuYnVzX2JhY2tlbmRfc2hyaW5rX2NvdW50LAorCS5zZWVrcyA9IERF RkFVTFRfU0VFS1MsCit9OworCiBzdGF0aWMgaW50IF9faW5pdCB4ZW5idXNfcHJvYmVfYmFja2Vu ZF9pbml0KHZvaWQpCiB7CiAJc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB4ZW5zdG9yZV9u b3RpZmllciA9IHsKQEAgLTI2NCw2ICsyOTIsOSBAQCBzdGF0aWMgaW50IF9faW5pdCB4ZW5idXNf cHJvYmVfYmFja2VuZF9pbml0KHZvaWQpCiAKIAlyZWdpc3Rlcl94ZW5zdG9yZV9ub3RpZmllcigm eGVuc3RvcmVfbm90aWZpZXIpOwogCisJaWYgKHJlZ2lzdGVyX3Nocmlua2VyKCZ4ZW5idXNfYmFj a2VuZF9zaHJpbmtlcikpCisJCXByX3dhcm4oInNocmlua2VyIHJlZ2lzdHJhdGlvbiBmYWlsZWRc biIpOworCiAJcmV0dXJuIDA7CiB9CiBzdWJzeXNfaW5pdGNhbGwoeGVuYnVzX3Byb2JlX2JhY2tl bmRfaW5pdCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi94ZW5idXMuaCBiL2luY2x1ZGUveGVu L3hlbmJ1cy5oCmluZGV4IDg2OWM4MTZkNWY4Yy4uY2RiMDc1ZTQxODJmIDEwMDY0NAotLS0gYS9p bmNsdWRlL3hlbi94ZW5idXMuaAorKysgYi9pbmNsdWRlL3hlbi94ZW5idXMuaApAQCAtMTA0LDYg KzEwNCw3IEBAIHN0cnVjdCB4ZW5idXNfZHJpdmVyIHsKIAlzdHJ1Y3QgZGV2aWNlX2RyaXZlciBk cml2ZXI7CiAJaW50ICgqcmVhZF9vdGhlcmVuZF9kZXRhaWxzKShzdHJ1Y3QgeGVuYnVzX2Rldmlj ZSAqZGV2KTsKIAlpbnQgKCppc19yZWFkeSkoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldik7CisJ dW5zaWduZWQgKCpyZWNsYWltKShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KTsKIH07CiAKIHN0 YXRpYyBpbmxpbmUgc3RydWN0IHhlbmJ1c19kcml2ZXIgKnRvX3hlbmJ1c19kcml2ZXIoc3RydWN0 IGRldmljZV9kcml2ZXIgKmRydikKLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=