Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261309AbVAMCCf (ORCPT ); Wed, 12 Jan 2005 21:02:35 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261405AbVAMCCG (ORCPT ); Wed, 12 Jan 2005 21:02:06 -0500 Received: from fmr19.intel.com ([134.134.136.18]:56991 "EHLO orsfmr004.jf.intel.com") by vger.kernel.org with ESMTP id S261309AbVAMBrR (ORCPT ); Wed, 12 Jan 2005 20:47:17 -0500 Date: Thu, 13 Jan 2005 17:46:34 -0800 (PST) From: Radheka Godse X-X-Sender: radheka@localhost.localdomain To: bonding-devel@lists.sourceforge.net, fubar@us.ibm.com, ctindel@users.sourceforge.net cc: linux-kernel@vger.kernel.org Subject: [Bonding-devel] [PATCH] Support to configure multiple bonds with different module params Message-ID: ReplyTo: "Radheka Godse" MIME-Version: 1.0 Content-Type: MULTIPART/Mixed; boundary="8323328-492798474-1105662337=:18693" Content-ID: Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 79032 Lines: 1312 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-492798474-1105662337=:18693 Content-Type: TEXT/PLAIN; format=flowed; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Content-ID: The attached patches add support to the channel bonding module for configuring multiple bonds at load time. This eliminates the need to reload the module for each new differently-configured?bond. A maximum of 16 bonds is supported. This patch has been peer reviewed by our Linux software engineering team, and the fix has been verified by our test labs. Summary of changes made from 2.6.1 to 2.7.0?: ?o?Removed?most global variables. ?o Use module_param_array() to define/set defaults for module params ?o Added new module param arp_ip_count to specify how many ?? ip targets in the arp_ip_target array belong to each bond. ? ?If arp_ip_count is not specified, to preserve backward ? ?compatibility all arp targets go to the first bond.? ?o Modified bonding_init() to use sub-functions to: ?? ?? - parse and separate arp parameters ??? ? - fill insmod parameters - sanitize (and enforce defaults if needed) on parameters ????? - create and configure bond with specified parameters ?o Updated bonding.txt documentation and added examples to configure ?? bonds with different parameters. o Also this patch has initial plumbing work to prepare for adding ? sysfs interface in future (i.e. next set of patches). Status: Tested on 2.6.11-rc1 Signed-off-by: Radheka Godse radheka.godse@intel.com Note: bond-patch-2.7.0-bonding.txt must be applied last! --8323328-492798474-1105662337=:18693 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="bond-patch-2.7.0" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: bond-patch-2.7.0 Content-Disposition: attachment; filename="bond-patch-2.7.0" ZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNi4xMS1yYzF2YW5pbGxh L2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZGluZy5oIGxpbnV4LTIuNi4xMS1y YzEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kaW5nLmgNCi0tLSBsaW51eC0y LjYuMTEtcmMxdmFuaWxsYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRpbmcu aAkyMDA1LTAxLTEzIDEyOjQwOjEwLjAwMDAwMDAwMCAtMDgwMA0KKysrIGxp bnV4LTIuNi4xMS1yYzEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kaW5nLmgJ MjAwNS0wMS0xMyAxNjozNjozNi4wMDAwMDAwMDAgLTA4MDANCkBAIC0yNSw2 ICsyNSwxMCBAQA0KICAqDQogICogMjAwMy8xMi8wMSAtIFNobXVsaWsgSGVu IDxzaG11bGlrLmhlbiBhdCBpbnRlbCBkb3QgY29tPg0KICAqCS0gQ29kZSBj bGVhbnVwIGFuZCBzdHlsZSBjaGFuZ2VzDQorICoNCisgKiAyMDA1LzAxLzEy IC0gUmFkaGVrYSBHb2RzZSA8cmFkaGVrYS5nb2RzZSBhdCBpbnRlbCBkb3Qg Y29tPg0KKyAqCS0gQm9uZGluZyB2ZXJzaW9uIDIuNyBjaGFuZ2VzIHRvIHN1 cHBvcnQgY29uZmlndXJhdGlvbg0KKyAqICAgICAgICBvZiBtdWx0aXBsZSBi b25kcyBhdCBsb2FkIHRpbWUuDQogICovDQogDQogI2lmbmRlZiBfTElOVVhf Qk9ORElOR19IDQpAQCAtMzMsMTkgKzM3LDIyIEBADQogI2luY2x1ZGUgPGxp bnV4L3RpbWVyLmg+DQogI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4NCiAj aW5jbHVkZSA8bGludXgvaWZfYm9uZGluZy5oPg0KKyNpbmNsdWRlIDxsaW51 eC9rb2JqZWN0Lmg+DQogI2luY2x1ZGUgImJvbmRfM2FkLmgiDQogI2luY2x1 ZGUgImJvbmRfYWxiLmgiDQogDQotI2RlZmluZSBEUlZfVkVSU0lPTgkiMi42 LjEiDQotI2RlZmluZSBEUlZfUkVMREFURQkiT2N0b2JlciAyOSwgMjAwNCIN CisjZGVmaW5lIERSVl9WRVJTSU9OCSIyLjcuMCINCisjZGVmaW5lIERSVl9S RUxEQVRFCSJKYW51YXJ5IDEyIDIwMDUiDQogI2RlZmluZSBEUlZfTkFNRQki Ym9uZGluZyINCiAjZGVmaW5lIERSVl9ERVNDUklQVElPTgkiRXRoZXJuZXQg Q2hhbm5lbCBCb25kaW5nIERyaXZlciINCisjZGVmaW5lIEJPTkRfREVGQVVM VF9NSU5fQk9ORFMgIDENCiANCi0jZGVmaW5lIEJPTkRfTUFYX0FSUF9UQVJH RVRTCTE2DQorI2RlZmluZSBCT05EX01BWF9BUlBfVEFSR0VUUyA2NCAvKiBG b3IgYWxsIGJvbmQgZGV2aWNlcyAqLw0KKyNkZWZpbmUgQk9ORF9NQVhfREVW X1RBUkdFVFMgMTYgLyogcGVyIGJvbmQgZGV2aWNlICovDQogDQogI2lmZGVm IEJPTkRJTkdfREVCVUcNCiAjZGVmaW5lIGRwcmludGsoZm10LCBhcmdzLi4u KSBcDQotCXByaW50ayhLRVJOX0RFQlVHICAgICBcDQorCXByaW50ayhLRVJO X0VSUiAgICAgXA0KIAkgICAgICAgRFJWX05BTUUgIjogJXMoKSAlZDogIiBm bXQsIF9fRlVOQ1RJT05fXywgX19MSU5FX18gLCAjIyBhcmdzICkNCiAjZWxz ZQ0KICNkZWZpbmUgZHByaW50ayhmbXQsIGFyZ3MuLi4pDQpAQCAtMTQ0LDcg KzE1MSw3IEBADQogCWludCBkb3duZGVsYXk7DQogCWludCBsYWNwX2Zhc3Q7 DQogCWNoYXIgcHJpbWFyeVtJRk5BTVNJWl07DQotCXUzMiBhcnBfdGFyZ2V0 c1tCT05EX01BWF9BUlBfVEFSR0VUU107DQorCXUzMiBhcnBfdGFyZ2V0c1tC T05EX01BWF9ERVZfVEFSR0VUU107DQogfTsNCiANCiBzdHJ1Y3Qgdmxhbl9l bnRyeSB7DQpAQCAtMTUzLDcgKzE2MCw3IEBADQogfTsNCiANCiBzdHJ1Y3Qg c2xhdmUgew0KLQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OyAvKiBmaXJzdCAt IHVzZWZ1bGwgZm9yIHBhbmljIGRlYnVnICovDQorCXN0cnVjdCBuZXRfZGV2 aWNlICpkZXY7IC8qIGZpcnN0IC0gdXNlZnVsIGZvciBwYW5pYyBkZWJ1ZyAq Lw0KIAlzdHJ1Y3Qgc2xhdmUgKm5leHQ7DQogCXN0cnVjdCBzbGF2ZSAqcHJl djsNCiAJczE2ICAgIGRlbGF5Ow0KQEAgLTE3OSw3ICsxODYsNyBAQA0KICAq ICAgIGJlZm9yZWhhbmQuDQogICovDQogc3RydWN0IGJvbmRpbmcgew0KLQlz dHJ1Y3QgICBuZXRfZGV2aWNlICpkZXY7IC8qIGZpcnN0IC0gdXNlZnVsbCBm b3IgcGFuaWMgZGVidWcgKi8NCisJc3RydWN0ICAgbmV0X2RldmljZSAqZGV2 OyAvKiBmaXJzdCAtIHVzZWZ1bCBmb3IgcGFuaWMgZGVidWcgKi8NCiAJc3Ry dWN0ICAgc2xhdmUgKmZpcnN0X3NsYXZlOw0KIAlzdHJ1Y3QgICBzbGF2ZSAq Y3Vycl9hY3RpdmVfc2xhdmU7DQogCXN0cnVjdCAgIHNsYXZlICpjdXJyZW50 X2FycF9zbGF2ZTsNCkBAIC0yMDMsNiArMjEwLDggQEANCiAJc3RydWN0ICAg Ym9uZF9wYXJhbXMgcGFyYW1zOw0KIAlzdHJ1Y3QgICBsaXN0X2hlYWQgdmxh bl9saXN0Ow0KIAlzdHJ1Y3QgICB2bGFuX2dyb3VwICp2bGdycDsNCisJdTMy CSBteV9pcDsNCisgICAgICAgIHN0cnVjdCAgIGtvYmplY3Qga29iajsNCiB9 Ow0KIA0KIC8qKg0KQEAgLTI0Nyw2ICsyNTYsMTQgQEANCiANCiBzdHJ1Y3Qg dmxhbl9lbnRyeSAqYm9uZF9uZXh0X3ZsYW4oc3RydWN0IGJvbmRpbmcgKmJv bmQsIHN0cnVjdCB2bGFuX2VudHJ5ICpjdXJyKTsNCiBpbnQgYm9uZF9kZXZf cXVldWVfeG1pdChzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IHNrX2J1 ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2Rldik7DQotDQor aW50IGJvbmRfY3JlYXRlKGNoYXIgKm5hbWUsIHN0cnVjdCBib25kX3BhcmFt cyAqcGFyYW1zLCBzdHJ1Y3QgYm9uZGluZyAqKm5ld2JvbmQpOw0KK3ZvaWQg Ym9uZF9kZWluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KTsNCitp bnQgYm9uZF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwg c3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2Rldiwgc3RydWN0IHNsYXZlICoq dmFzc2FsKTsNCitpbnQgYm9uZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNl ICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2Rldik7DQor aW50IGJvbmRfc2V0aHdhZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rl diwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2Rldik7DQordm9pZCBib25k X21paV9tb25pdG9yKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldik7DQor dm9pZCBib25kX2xvYWRiYWxhbmNlX2FycF9tb24oc3RydWN0IG5ldF9kZXZp Y2UgKmJvbmRfZGV2KTsNCit2b2lkIGJvbmRfYWN0aXZlYmFja3VwX2FycF9t b24oc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2KTsNCitjb25zdCBjaGFy ICpib25kX21vZGVfbmFtZShpbnQgbW9kZSk7DQogI2VuZGlmIC8qIF9MSU5V WF9CT05ESU5HX0ggKi8NCiANCmRpZmYgLXVyTiAtWCBkb250ZGlmZiBsaW51 eC0yLjYuMTEtcmMxdmFuaWxsYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRf bWFpbi5jIGxpbnV4LTIuNi4xMS1yYzEvZHJpdmVycy9uZXQvYm9uZGluZy9i b25kX21haW4uYw0KLS0tIGxpbnV4LTIuNi4xMS1yYzF2YW5pbGxhL2RyaXZl cnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMJMjAwNS0wMS0xMyAxMjo0MDox MS4wMDAwMDAwMDAgLTA4MDANCisrKyBsaW51eC0yLjYuMTEtcmMxL2RyaXZl cnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMJMjAwNS0wMS0xMyAxNzowNjo0 Mi4wMDAwMDAwMDAgLTA4MDANCkBAIC00NzUsNiArNDc1LDMzIEBADQogICog ICAgICAgIFNvbHV0aW9uIGlzIHRvIG1vdmUgY2FsbCB0byBkZXZfcmVtb3Zl X3BhY2sgb3V0c2lkZSBvZiB0aGUNCiAgKiAgICAgICAgc3BpbmxvY2suDQog ICogICAgICAgIFNldCB2ZXJzaW9uIHRvIDIuNi4xLg0KKyAqIDIwMDQvMTIv MTQgLSBNaXRjaCBXaWxsaWFtcyA8bWl0Y2guYS53aWxsaWFtcyBhdCBpbnRl bCBkb3QgY29tPg0KKyAqICAgICAgLSBTcGxpdCBvdXQgYm9uZCBjcmVhdGlv biBjb2RlIHRvIGFsbG93IGZvciBmdXR1cmUgYWRkaXRpb24gb2YNCisgKiAg ICAgICAgc3lzZnMgaW50ZXJmYWNlLg0KKyAqICAgICAgLSBBZGRlZCBleHRy YSBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gYm9uZF9lbnNsYXZlIHRvIHJldHVy biBhDQorICogICAgICAgIGEgcG9pbnRlciB0byB0aGUgbmV3IHNsYXZlLiAg VGhpcyB3aWxsIGJlIHVzZWQgYnkgZnV0dXJlDQorICogICAgICAgIHN5c2Zz IGZ1bmN0aW9uYWxpdHkuDQorICogICAgICAtIFJlbW92ZWQgc3RhdGljIGRl Y2xhcmF0aW9uIG9uIHNvbWUgZnVuY3Rpb25zIGFuZCBkYXRhIGl0ZW1zLg0K KyAqICAgICAgU2V0IHZlcnNpb24gdG8gMi42LjMNCisgKiAyMDA1LzAxLzEy IC0gUmFkaGVrYSBHb2RzZSA8cmFkaGVrYS5nb2RzZSBhdCBpbnRlbCBkb3Qg Y29tPiANCisgKgktIEFkZGVkIHN1cHBvcnQgdG8gY29uZmlndXJlIG1vZHVs ZSBwYXJhbXMgZm9yIG11bHRpcGxlIGJvbmRzIGF0DQorICogICAgICAgIGxv YWQgdGltZS4gQSBtYXhpbXVtIG9mIDE2IGJvbmRzIGlzIHN1cHBvcnRlZC4N CisgKiAJICBUaGlzIGVsaW1pbmF0ZXMgbW9zdCBnbG9iYWwgdmFyaWFibGVz IGFuZCB0aGUgbmVlZCB0byByZWxvYWQNCisgKiAgICAgICAgdGhlIGJvbmRp bmcgbW9kdWxlIG11bHRpcGxlIHRpbWVzLiANCisgKiAgICAgICAgQ2hhbmdl cyBNYWRlOg0KKyAqCSAgbyBVc2UgbW9kdWxlX3BhcmFtX2FycmF5KCkgdG8g ZGVmaW5lL3NldCBkZWZhdWx0cyBmb3IgbW9kdWxlIHBhcmFtcw0KKyAqICAg ICAgICBvIEFkZGVkIG5ldyBtb2R1bGUgcGFyYW0gYXJwX2lwX2NvdW50IHRv IHNwZWNpZnkgaG93IG1hbnkgDQorICogICAgICAgICAgaXAgdGFyZ2V0cyBp biB0aGUgYXJwX2lwX3RhcmdldCBhcnJheSBiZWxvbmcgdG8gZWFjaCBib25k Lg0KKyAqICAgICAgICAgIElmIGFycF9pcF9jb3VudCBpcyBub3Qgc3BlY2lm aWVkLCB0byBwcmVzZXJ2ZSBiYWNrd2FyZCANCisgKiAgICAgICAgICBjb21w YXRpYmlsaXR5IGFsbCBhcnAgdGFyZ2V0cyBnbyB0byB0aGUgZmlyc3QgYm9u ZC4gIA0KKyAqCSAgbyBNb2RpZmllZCBib25kaW5nX2luaXQoKSB0byB1c2Ug c3ViLWZ1bmN0aW9ucyB0bzoNCisgKgkJLSAgcGFyc2UgYW5kIHNlcGFyYXRl IGFycCBwYXJhbWV0ZXJzDQorICogICAgICAgIAktICBmaWxsIGluc21vZCBw YXJhbWV0ZXJzDQorICoJCS0gIHNhbml0aXplIChhbmQgZW5mb3JjZSBkZWZh dWx0cyBpZiBuZWVkZWQpIG9uIHBhcmFtZXRlcnMNCisgKgkJLSAgY3JlYXRl IGFuZCBjb25maWd1cmUgYm9uZCB3aXRoIHNwZWNpZmllZCBwYXJhbWV0ZXJz DQorICogCSAgbyBVcGRhdGVkIGJvbmRpbmcudHh0IGRvY3VtZXRhdGlvbiBh bmQgYWRkZWQgZXhhbXBsZXMgdG8gY29uZmlndXJlDQorICogICAgICAgICAg Ym9uZHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycy4NCisgKiAgICAgIFNl dCB2ZXJzaW9uIHRvIDIuNw0KICAqDQogICovDQogDQpAQCAtNTI4LDU2ICs1 NTUsNjUgQEANCiAvKiBtb25pdG9yIGFsbCBsaW5rcyB0aGF0IG9mdGVuIChp biBtaWxsaXNlY29uZHMpLiA8PTAgZGlzYWJsZXMgbW9uaXRvcmluZyAqLw0K ICNkZWZpbmUgQk9ORF9MSU5LX01PTl9JTlRFUlYJMA0KICNkZWZpbmUgQk9O RF9MSU5LX0FSUF9JTlRFUlYJMA0KKyNkZWZpbmUgQk9ORF9ERUZBVUxUX01B WF9CT05EUyAgMQ0KKyNkZWZpbmUgQk9ORF9ERUZfVVNFX0NBUlJJRVIJMQ0K KyNkZWZpbmUgQk9ORF9ERUZfQVJQX1RBUkdFVFMJMA0KKyNkZWZpbmUgQk9O RF9ERUZfQVJQX0NPVU5UCTANCisjZGVmaW5lIEJPTkRfREVGX0RFTEFZCQkw DQorI2RlZmluZSBCT05EX01BWF9VTklUUwkJMTUgLyogTWF4IG51bSBvZiBi b25kcyAoMTYpIHRoYXQgY2FuIGdldA0KKwkJCQkgICAgKiBtb2R1bGUgcGFy YW1zLiANCisJCQkJICAgICovDQorDQorI2RlZmluZSBCT05EX1BBUkFNX0lO SVQoREVGX1ZBTCkgeyBbMCAuLi4gQk9ORF9NQVhfVU5JVFNdID0gREVGX1ZB TCB9DQorDQorI2RlZmluZSBCT05EX1BBUkFNX05VTShYLCBTLCBEKSBcDQor c3RhdGljIGludCBfX2luaXRkYXRhIFhbQk9ORF9NQVhfVU5JVFMgKyAxXSA9 IEJPTkRfUEFSQU1fSU5JVChEKTsgXA0KKwlzdGF0aWMgaW50IG51bV8jI1g7 IFwNCisJbW9kdWxlX3BhcmFtX2FycmF5KFgsIGludCwgJm51bV8jI1gsIDAp OyBcDQorCU1PRFVMRV9QQVJNX0RFU0MoWCwgUyk7DQorDQorI2RlZmluZSBC T05EX1BBUkFNX1NUUihYLCBTLCBEKSBcDQorICAgICAgICBzdGF0aWMgY2hh ciBfX2luaXRkYXRhICpYW0JPTkRfTUFYX1VOSVRTICsxXSA9IEJPTkRfUEFS QU1fSU5JVChEKTsgXA0KKwlzdGF0aWMgaW50IG51bV8jI1g7IFwNCisJbW9k dWxlX3BhcmFtX2FycmF5KFgsIGNoYXJwLCAmbnVtXyMjWCwgMCk7IFwNCisJ TU9EVUxFX1BBUk1fREVTQyhYLCBTKTsNCisNCisNCisvKiBwZXIgZWFjaCBi b25kICovDQorQk9ORF9QQVJBTV9OVU0obWlpbW9uLCAiTGluayBjaGVjayBp bnRlcnZhbCBpbiBtaWxsaXNlY29uZHMiLCBCT05EX0xJTktfTU9OX0lOVEVS Vik7DQorQk9ORF9QQVJBTV9OVU0odXBkZWxheSwgIkRlbGF5IGJlZm9yZSBj b25zaWRlcmluZyBsaW5rIHVwLCBpbiBtaWxsaXNlY29uZHMiLCBCT05EX0RF Rl9ERUxBWSk7DQorQk9ORF9QQVJBTV9OVU0oZG93bmRlbGF5LCAiRGVsYXkg YmVmb3JlIGNvbnNpZGVyaW5nIGxpbmsgZG93biwgaW4gbWlsbGlzZWNvbmRz IiwgQk9ORF9ERUZfREVMQVkpOw0KK0JPTkRfUEFSQU1fTlVNKHVzZV9jYXJy aWVyLCAiVXNlIG5ldGlmX2NhcnJpZXJfb2sgaW4gbWlpbW9uIiwgQk9ORF9E RUZfVVNFX0NBUlJJRVIpOw0KK0JPTkRfUEFSQU1fTlVNKGFycF9pbnRlcnZh bCwgImFycCBjaGVjayBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMiLCBCT05E X0RFRl9BUlBfVEFSR0VUUyk7DQorQk9ORF9QQVJBTV9OVU0oYXJwX2lwX2Nv dW50LCAiTnVtYmVyIG9mIGFycCBpcCB0YXJnZXRzIGZvciBhIGRldmljZSIs IEJPTkRfREVGX0FSUF9DT1VOVCk7DQorQk9ORF9QQVJBTV9TVFIobW9kZSwg Ik1vZGUgb2Ygb3BlcmF0aW9uIiwgTlVMTCk7DQorQk9ORF9QQVJBTV9TVFIo cHJpbWFyeSwgIlByaW1hcnkgbmV0d29yayBkZXZpY2UgdG8gdXNlIiwgTlVM TCk7DQorQk9ORF9QQVJBTV9TVFIobGFjcF9yYXRlLCAiTEFDUERVIHR4IHJh dGUgdG8gcmVxdWVzdCBmcm9tIDgwMi4zYWQgcGFydG5lciIsIE5VTEwpOw0K Kw0KKy8qIFNoYXJlZCBhbW9uZyBhbGwgYm9uZHMgKi8NCisNCitzdGF0aWMg Y2hhciBfX2luaXRkYXRhICphcnBfaXBfdGFyZ2V0W0JPTkRfTUFYX0FSUF9U QVJHRVRTXSA9IHsgTlVMTCwgfTsNCitzdGF0aWMgaW50IG51bV9hcnBfaXBf dGFyZ2V0OyANCittb2R1bGVfcGFyYW1fYXJyYXkoYXJwX2lwX3RhcmdldCwg Y2hhcnAsICZudW1fYXJwX2lwX3RhcmdldCwgMCk7IA0KK01PRFVMRV9QQVJN X0RFU0MoYXJwX2lwX3RhcmdldCwgImFycCB0YXJnZXRzIGluIG4ubi5uLm4g Zm9ybSIpOw0KIA0KLXN0YXRpYyBpbnQgbWF4X2JvbmRzCT0gQk9ORF9ERUZB VUxUX01BWF9CT05EUzsNCi1zdGF0aWMgaW50IG1paW1vbgk9IEJPTkRfTElO S19NT05fSU5URVJWOw0KLXN0YXRpYyBpbnQgdXBkZWxheQk9IDA7DQotc3Rh dGljIGludCBkb3duZGVsYXkJPSAwOw0KLXN0YXRpYyBpbnQgdXNlX2NhcnJp ZXIJPSAxOw0KLXN0YXRpYyBjaGFyICptb2RlCT0gTlVMTDsNCi1zdGF0aWMg Y2hhciAqcHJpbWFyeQk9IE5VTEw7DQotc3RhdGljIGNoYXIgKmxhY3BfcmF0 ZQk9IE5VTEw7DQotc3RhdGljIGludCBhcnBfaW50ZXJ2YWwgPSBCT05EX0xJ TktfQVJQX0lOVEVSVjsNCi1zdGF0aWMgY2hhciAqYXJwX2lwX3RhcmdldFtC T05EX01BWF9BUlBfVEFSR0VUU10gPSB7IE5VTEwsIH07DQotDQotbW9kdWxl X3BhcmFtKG1heF9ib25kcywgaW50LCAwKTsNCisvKiBTaW5nbGUgdmFsdWUg Ki8NCitzdGF0aWMgaW50IF9faW5pdGRhdGEgbWF4X2JvbmRzID0gQk9ORF9E RUZBVUxUX01BWF9CT05EUzsNCittb2R1bGVfcGFyYW0obWF4X2JvbmRzLCBp bnQsIDA0NDQpOyANCiBNT0RVTEVfUEFSTV9ERVNDKG1heF9ib25kcywgIk1h eCBudW1iZXIgb2YgYm9uZGVkIGRldmljZXMiKTsNCi1tb2R1bGVfcGFyYW0o bWlpbW9uLCBpbnQsIDApOw0KLU1PRFVMRV9QQVJNX0RFU0MobWlpbW9uLCAi TGluayBjaGVjayBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMiKTsNCi1tb2R1 bGVfcGFyYW0odXBkZWxheSwgaW50LCAwKTsNCi1NT0RVTEVfUEFSTV9ERVND KHVwZGVsYXksICJEZWxheSBiZWZvcmUgY29uc2lkZXJpbmcgbGluayB1cCwg aW4gbWlsbGlzZWNvbmRzIik7DQotbW9kdWxlX3BhcmFtKGRvd25kZWxheSwg aW50LCAwKTsNCi1NT0RVTEVfUEFSTV9ERVNDKGRvd25kZWxheSwgIkRlbGF5 IGJlZm9yZSBjb25zaWRlcmluZyBsaW5rIGRvd24sIGluIG1pbGxpc2Vjb25k cyIpOw0KLW1vZHVsZV9wYXJhbSh1c2VfY2FycmllciwgaW50LCAwKTsNCi1N T0RVTEVfUEFSTV9ERVNDKHVzZV9jYXJyaWVyLCAiVXNlIG5ldGlmX2NhcnJp ZXJfb2sgKHZzIE1JSSBpb2N0bHMpIGluIG1paW1vbjsgMCBmb3Igb2ZmLCAx IGZvciBvbiAoZGVmYXVsdCkiKTsNCi1tb2R1bGVfcGFyYW0obW9kZSwgY2hh cnAsIDApOw0KLU1PRFVMRV9QQVJNX0RFU0MobW9kZSwgIk1vZGUgb2Ygb3Bl cmF0aW9uIDogMCBmb3Igcm91bmQgcm9iaW4sIDEgZm9yIGFjdGl2ZS1iYWNr dXAsIDIgZm9yIHhvciIpOw0KLW1vZHVsZV9wYXJhbShwcmltYXJ5LCBjaGFy cCwgMCk7DQotTU9EVUxFX1BBUk1fREVTQyhwcmltYXJ5LCAiUHJpbWFyeSBu ZXR3b3JrIGRldmljZSB0byB1c2UiKTsNCi1tb2R1bGVfcGFyYW0obGFjcF9y YXRlLCBjaGFycCwgMCk7DQotTU9EVUxFX1BBUk1fREVTQyhsYWNwX3JhdGUs ICJMQUNQRFUgdHggcmF0ZSB0byByZXF1ZXN0IGZyb20gODAyLjNhZCBwYXJ0 bmVyIChzbG93L2Zhc3QpIik7DQotbW9kdWxlX3BhcmFtKGFycF9pbnRlcnZh bCwgaW50LCAwKTsNCi1NT0RVTEVfUEFSTV9ERVNDKGFycF9pbnRlcnZhbCwg ImFycCBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMiKTsNCi1tb2R1bGVfcGFy YW1fYXJyYXkoYXJwX2lwX3RhcmdldCwgY2hhcnAsIE5VTEwsIDApOw0KLU1P RFVMRV9QQVJNX0RFU0MoYXJwX2lwX3RhcmdldCwgImFycCB0YXJnZXRzIGlu IG4ubi5uLm4gZm9ybSIpOw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gR2xvYmFsIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8NCiANCiBzdGF0aWMgY29uc3QgY2hhciAqdmVyc2lvbiA9 DQogCURSVl9ERVNDUklQVElPTiAiOiB2IiBEUlZfVkVSU0lPTiAiICgiIERS Vl9SRUxEQVRFICIpXG4iOw0KIA0KLXN0YXRpYyBMSVNUX0hFQUQoYm9uZF9k ZXZfbGlzdCk7DQorTElTVF9IRUFEKGJvbmRfZGV2X2xpc3QpOw0KIA0KICNp ZmRlZiBDT05GSUdfUFJPQ19GUw0KIHN0YXRpYyBzdHJ1Y3QgcHJvY19kaXJf ZW50cnkgKmJvbmRfcHJvY19kaXIgPSBOVUxMOw0KICNlbmRpZg0KIA0KLXN0 YXRpYyB1MzIgYXJwX3RhcmdldFtCT05EX01BWF9BUlBfVEFSR0VUU10gPSB7 IDAsIH0gOw0KLXN0YXRpYyBpbnQgYXJwX2lwX2NvdW50CT0gMDsNCi1zdGF0 aWMgdTMyIG15X2lwCT0gMDsNCi1zdGF0aWMgaW50IGJvbmRfbW9kZQk9IEJP TkRfTU9ERV9ST1VORFJPQklOOw0KLXN0YXRpYyBpbnQgbGFjcF9mYXN0CT0g MDsNCi1zdGF0aWMgaW50IGFwcF9hYmlfdmVyCT0gMDsNCitzdGF0aWMgaW50 IGFwcF9hYmlfdmVyCT0gMjsNCiBzdGF0aWMgaW50IG9yaWdfYXBwX2FiaV92 ZXIgPSAtMTsgLyogVGhpcyBpcyB1c2VkIHRvIHNhdmUgdGhlIGZpcnN0IEFC SSB2ZXJzaW9uDQogCQkJCSAgICogd2UgcmVjZWl2ZSBmcm9tIHRoZSBhcHBs aWNhdGlvbi4gT25jZSBzZXQsDQogCQkJCSAgICogaXQgd29uJ3QgYmUgY2hh bmdlZCwgYW5kIHRoZSBtb2R1bGUgd2lsbA0KQEAgLTYxMSwxMCArNjQ3LDEx IEBADQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGb3J3YXJkIGRl Y2xhcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0K IHN0YXRpYyBpbmxpbmUgdm9pZCBib25kX3NldF9tb2RlX29wcyhzdHJ1Y3Qg bmV0X2RldmljZSAqYm9uZF9kZXYsIGludCBtb2RlKTsNCitzdGF0aWMgaW50 IGJvbmRfY2hlY2tfcGFyYW1zKHN0cnVjdCBib25kX3BhcmFtcyAqcGFyYW1z LCBpbnQgZm9yY2UpOw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSBHZW5lcmFsIHJvdXRpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8NCiANCi1zdGF0aWMgY29uc3QgY2hhciAqYm9uZF9tb2RlX25h bWUoaW50IG1vZGUpDQorY29uc3QgY2hhciAqYm9uZF9tb2RlX25hbWUoaW50 IG1vZGUpDQogew0KIAlzd2l0Y2ggKG1vZGUpIHsNCiAJY2FzZSBCT05EX01P REVfUk9VTkRST0JJTiA6DQpAQCAtMTU3OCw3ICsxNjE1LDcgQEANCiANCiAv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSU9DVEwgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQotc3RhdGlj IGludCBib25kX3NldGh3YWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9k ZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpzbGF2ZV9kZXYpDQoraW50IGJvbmRf c2V0aHdhZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rldiwgc3RydWN0 IG5ldF9kZXZpY2UgKnNsYXZlX2RldikNCiB7DQogCWRwcmludGsoImJvbmRf ZGV2PSVwXG4iLCBib25kX2Rldik7DQogCWRwcmludGsoInNsYXZlX2Rldj0l cFxuIiwgc2xhdmVfZGV2KTsNCkBAIC0xNTg4LDcgKzE2MjUsNyBAQA0KIH0N CiANCiAvKiBlbnNsYXZlIGRldmljZSA8c2xhdmU+IHRvIGJvbmQgZGV2aWNl IDxtYXN0ZXI+ICovDQotc3RhdGljIGludCBib25kX2Vuc2xhdmUoc3RydWN0 IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xh dmVfZGV2KQ0KK2ludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2Ug KmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2LCBzdHJ1 Y3Qgc2xhdmUgKip2YXNzYWwpDQogew0KIAlzdHJ1Y3QgYm9uZGluZyAqYm9u ZCA9IGJvbmRfZGV2LT5wcml2Ow0KIAlzdHJ1Y3Qgc2xhdmUgKm5ld19zbGF2 ZSA9IE5VTEw7DQpAQCAtMTk3OSw2ICsyMDE2LDggQEANCiAJICAgICAgIG5l d19zbGF2ZS0+bGluayAhPSBCT05EX0xJTktfRE9XTiA/ICJuIHVwIiA6ICIg ZG93biIpOw0KIA0KIAkvKiBlbnNsYXZlIGlzIHN1Y2Nlc3NmdWwgKi8NCisg ICAgICAgIGlmICh2YXNzYWwpDQorICAgICAgICAgICAgKnZhc3NhbD1uZXdf c2xhdmU7DQogCXJldHVybiAwOw0KIA0KIC8qIFVuZG8gc3RhZ2VzIG9uIGVy cm9yICovDQpAQCAtMjAxMyw3ICsyMDUyLDcgQEANCiAgKiAgIGZvciBCb25k ZWQgY29ubmVjdGlvbnM6DQogICogICAgIFRoZSBmaXJzdCB1cCBpbnRlcmZh Y2Ugc2hvdWxkIGJlIGxlZnQgb24gYW5kIGFsbCBvdGhlcnMgZG93bmVkLg0K ICAqLw0KLXN0YXRpYyBpbnQgYm9uZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2 aWNlICpib25kX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldikN CitpbnQgYm9uZF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2Rl diwgc3RydWN0IG5ldF9kZXZpY2UgKnNsYXZlX2RldikNCiB7DQogCXN0cnVj dCBib25kaW5nICpib25kID0gYm9uZF9kZXYtPnByaXY7DQogCXN0cnVjdCBz bGF2ZSAqc2xhdmUsICpvbGRjdXJyZW50Ow0KQEAgLTIxMTMsNiArMjE1Miw3 IEBADQogCX0NCiANCiAJaWYgKGJvbmQtPnNsYXZlX2NudCA9PSAwKSB7DQor ICAgICAgICAgICAgZHByaW50aygibGFzdCBzbGF2ZSByZW1vdmVkXG4iKTsN CiAJCS8qIGlmIHRoZSBsYXN0IHNsYXZlIHdhcyByZW1vdmVkLCB6ZXJvIHRo ZSBtYWMgYWRkcmVzcw0KIAkJICogb2YgdGhlIG1hc3RlciBzbyBpdCB3aWxs IGJlIHNldCBieSB0aGUgYXBwbGljYXRpb24NCiAJCSAqIHRvIHRoZSBtYWMg YWRkcmVzcyBvZiB0aGUgZmlyc3Qgc2xhdmUNCkBAIC0yNDYyLDcgKzI1MDIs NyBAQA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTW9u aXRvcmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAN CiAvKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCByZWd1bGFybHkgdG8gbW9u aXRvciBlYWNoIHNsYXZlJ3MgbGluay4gKi8NCi1zdGF0aWMgdm9pZCBib25k X21paV9tb25pdG9yKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldikNCit2 b2lkIGJvbmRfbWlpX21vbml0b3Ioc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRf ZGV2KQ0KIHsNCiAJc3RydWN0IGJvbmRpbmcgKmJvbmQgPSBib25kX2Rldi0+ cHJpdjsNCiAJc3RydWN0IHNsYXZlICpzbGF2ZSwgKm9sZGN1cnJlbnQ7DQpA QCAtMjcwOCw5ICsyNzQ4LDkgQEANCiAJaW50IGk7DQogCXUzMiAqdGFyZ2V0 cyA9IGJvbmQtPnBhcmFtcy5hcnBfdGFyZ2V0czsNCiANCi0JZm9yIChpID0g MDsgKGkgPCBCT05EX01BWF9BUlBfVEFSR0VUUykgJiYgdGFyZ2V0c1tpXTsg aSsrKSB7DQorCWZvciAoaSA9IDA7IChpIDwgQk9ORF9NQVhfREVWX1RBUkdF VFMpICYmIHRhcmdldHNbaV07IGkrKykgew0KIAkJYXJwX3NlbmQoQVJQT1Bf UkVRVUVTVCwgRVRIX1BfQVJQLCB0YXJnZXRzW2ldLCBzbGF2ZS0+ZGV2LA0K LQkJCSBteV9pcCwgTlVMTCwgc2xhdmUtPmRldi0+ZGV2X2FkZHIsDQorCQkJ IGJvbmQtPm15X2lwLCBOVUxMLCBzbGF2ZS0+ZGV2LT5kZXZfYWRkciwNCiAJ CQkgTlVMTCk7DQogCX0NCiB9DQpAQCAtMjcyMiw3ICsyNzYyLDcgQEANCiAg KiBhcnAgaXMgdHJhbnNtaXR0ZWQgdG8gZ2VuZXJhdGUgdHJhZmZpYy4gc2Vl IGFjdGl2ZWJhY2t1cF9hcnBfbW9uaXRvciBmb3INCiAgKiBhcnAgbW9uaXRv cmluZyBpbiBhY3RpdmUgYmFja3VwIG1vZGUuDQogICovDQotc3RhdGljIHZv aWQgYm9uZF9sb2FkYmFsYW5jZV9hcnBfbW9uKHN0cnVjdCBuZXRfZGV2aWNl ICpib25kX2RldikNCit2b2lkIGJvbmRfbG9hZGJhbGFuY2VfYXJwX21vbihz dHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYpDQogew0KIAlzdHJ1Y3QgYm9u ZGluZyAqYm9uZCA9IGJvbmRfZGV2LT5wcml2Ow0KIAlzdHJ1Y3Qgc2xhdmUg KnNsYXZlLCAqb2xkY3VycmVudDsNCkBAIC0yNzkwLDcgKzI4MzAsNyBAQA0K IAkJCSAqLw0KIAkJCWlmICgoKGppZmZpZXMgLSBzbGF2ZS0+ZGV2LT50cmFu c19zdGFydCkgPj0gKDIqZGVsdGFfaW5fdGlja3MpKSB8fA0KIAkJCSAgICAo KChqaWZmaWVzIC0gc2xhdmUtPmRldi0+bGFzdF9yeCkgPj0gKDIqZGVsdGFf aW5fdGlja3MpKSAmJg0KLQkJCSAgICAgbXlfaXApKSB7DQorCQkJICAgICBi b25kLT5teV9pcCkpIHsNCiANCiAJCQkJc2xhdmUtPmxpbmsgID0gQk9ORF9M SU5LX0RPV047DQogCQkJCXNsYXZlLT5zdGF0ZSA9IEJPTkRfU1RBVEVfQkFD S1VQOw0KQEAgLTI4NjAsNyArMjkwMCw3IEBADQogICogbWF5IGhhdmUgcmVj ZWl2ZWQuDQogICogc2VlIGxvYWRiYWxhbmNlX2FycF9tb25pdG9yIGZvciBh cnAgbW9uaXRvcmluZyBpbiBsb2FkIGJhbGFuY2luZyBtb2RlDQogICovDQot c3RhdGljIHZvaWQgYm9uZF9hY3RpdmViYWNrdXBfYXJwX21vbihzdHJ1Y3Qg bmV0X2RldmljZSAqYm9uZF9kZXYpDQordm9pZCBib25kX2FjdGl2ZWJhY2t1 cF9hcnBfbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldikNCiB7DQog CXN0cnVjdCBib25kaW5nICpib25kID0gYm9uZF9kZXYtPnByaXY7DQogCXN0 cnVjdCBzbGF2ZSAqc2xhdmU7DQpAQCAtMjkyOSw3ICsyOTY5LDcgQEANCiAJ CQlpZiAoKHNsYXZlICE9IGJvbmQtPmN1cnJfYWN0aXZlX3NsYXZlKSAmJg0K IAkJCSAgICAoIWJvbmQtPmN1cnJlbnRfYXJwX3NsYXZlKSAmJg0KIAkJCSAg ICAoKChqaWZmaWVzIC0gc2xhdmUtPmRldi0+bGFzdF9yeCkgPj0gMypkZWx0 YV9pbl90aWNrcykgJiYNCi0JCQkgICAgIG15X2lwKSkgew0KKwkJCSAgICAg Ym9uZC0+bXlfaXApKSB7DQogCQkJCS8qIGEgYmFja3VwIHNsYXZlIGhhcyBn b25lIGRvd247IHRocmVlIHRpbWVzDQogCQkJCSAqIHRoZSBkZWx0YSBhbGxv d3MgdGhlIGN1cnJlbnQgc2xhdmUgdG8gYmUNCiAJCQkJICogdGFrZW4gb3V0 IGJlZm9yZSB0aGUgYmFja3VwIHNsYXZlLg0KQEAgLTI5NzYsNyArMzAxNiw3 IEBADQogCQkgKi8NCiAJCWlmICgoKChqaWZmaWVzIC0gc2xhdmUtPmRldi0+ dHJhbnNfc3RhcnQpID49ICgyKmRlbHRhX2luX3RpY2tzKSkgfHwNCiAJCSAg ICAgKCgoamlmZmllcyAtIHNsYXZlLT5kZXYtPmxhc3RfcngpID49ICgyKmRl bHRhX2luX3RpY2tzKSkgJiYNCi0JCSAgICAgIG15X2lwKSkgJiYNCisJCSAg ICAgIGJvbmQtPm15X2lwKSkgJiYNCiAJCSAgICAoKGppZmZpZXMgLSBzbGF2 ZS0+amlmZmllcykgPj0gMipkZWx0YV9pbl90aWNrcykpIHsNCiANCiAJCQlz bGF2ZS0+bGluayAgPSBCT05EX0xJTktfRE9XTjsNCkBAIC0zMDI4LDcgKzMw NjgsNyBAQA0KIAkJLyogdGhlIGN1cnJlbnQgc2xhdmUgbXVzdCB0eCBhbiBh cnAgdG8gZW5zdXJlIGJhY2t1cCBzbGF2ZXMNCiAJCSAqIHJ4IHRyYWZmaWMN CiAJCSAqLw0KLQkJaWYgKHNsYXZlICYmIG15X2lwKSB7DQorCQlpZiAoc2xh dmUgJiYgYm9uZC0+bXlfaXApIHsNCiAJCQlib25kX2FycF9zZW5kX2FsbChi b25kLCBzbGF2ZSk7DQogCQl9DQogCX0NCkBAIC0zMTQ2LDYgKzMxODYsOCBA QA0KIHsNCiAJc3RydWN0IGJvbmRpbmcgKmJvbmQgPSBzZXEtPnByaXZhdGU7 DQogCXN0cnVjdCBzbGF2ZSAqY3VycjsNCisgICAgICAgIGludCBpOw0KKwl1 MzIgdGFyZ2V0Ow0KIA0KIAlyZWFkX2xvY2soJmJvbmQtPmN1cnJfc2xhdmVf bG9jayk7DQogCWN1cnIgPSBib25kLT5jdXJyX2FjdGl2ZV9zbGF2ZTsNCkBA IC0zMTcwLDYgKzMyMTIsMjQgQEANCiAJc2VxX3ByaW50ZihzZXEsICJEb3du IERlbGF5IChtcyk6ICVkXG4iLA0KIAkJICAgYm9uZC0+cGFyYW1zLmRvd25k ZWxheSAqIGJvbmQtPnBhcmFtcy5taWltb24pOw0KIA0KKyAgICAgICANCisg ICAgICAgIC8vIEFSUCBpbmZvcm1hdGlvbg0KKyAgICAgICAgaWYoYm9uZC0+ cGFyYW1zLmFycF9pbnRlcnZhbCA+IDApDQorCXsNCisJCXNlcV9wcmludGYo c2VxLCAiQVJQIFBvbGxpbmcgSW50ZXJ2YWwgKG1zKTogJWRcbiIsIGJvbmQt PnBhcmFtcy5hcnBfaW50ZXJ2YWwpOw0KKwkNCisJCXNlcV9wcmludGYoc2Vx LCAiQVJQIElQIHRhcmdldC9zIChuLm4ubi5uIGZvcm0pOiIpOw0KKwkJZm9y IChpID0gMDsgKGkgPCBCT05EX01BWF9ERVZfVEFSR0VUUykgJiYgYm9uZC0+ cGFyYW1zLmFycF90YXJnZXRzW2ldIDtpKyspIHsNCisJCQl0YXJnZXQgPSBu dG9obChib25kLT5wYXJhbXMuYXJwX3RhcmdldHNbaV0pOw0KKwkJCXNlcV9w cmludGYoc2VxLCAiICVkLiVkLiVkLiVkIiwgSElQUVVBRCh0YXJnZXQpKTsN CisNCisJCQlpZigoaSsxIDwgQk9ORF9NQVhfREVWX1RBUkdFVFMpICYmIGJv bmQtPnBhcmFtcy5hcnBfdGFyZ2V0c1tpKzFdKSANCisJCQkJc2VxX3ByaW50 ZihzZXEsICIsIik7DQorCQkJZWxzZQ0KKwkJCQlzZXFfcHJpbnRmKHNlcSwg IlxuIik7DQorCQl9DQorCX0NCisNCiAJaWYgKGJvbmQtPnBhcmFtcy5tb2Rl ID09IEJPTkRfTU9ERV84MDIzQUQpIHsNCiAJCXN0cnVjdCBhZF9pbmZvIGFk X2luZm87DQogDQpAQCAtMzMxNSw3ICszMzc1LDcgQEANCiAvKiBDcmVhdGUg dGhlIGJvbmRpbmcgZGlyZWN0b3J5IHVuZGVyIC9wcm9jL25ldCwgaWYgZG9l c24ndCBleGlzdCB5ZXQuDQogICogQ2FsbGVyIG11c3QgaG9sZCBydG5sX2xv Y2suDQogICovDQotc3RhdGljIHZvaWQgYm9uZF9jcmVhdGVfcHJvY19kaXIo dm9pZCkNCitzdGF0aWMgaW50IGJvbmRfY3JlYXRlX3Byb2NfZGlyKHZvaWQp DQogew0KIAlpbnQgbGVuID0gc3RybGVuKERSVl9OQU1FKTsNCiANCkBAIC0z MzM2LDcgKzMzOTYsMTQgQEANCiAJCQkJIjogV2FybmluZzogY2Fubm90IGNy ZWF0ZSAvcHJvYy9uZXQvJXNcbiIsDQogCQkJCURSVl9OQU1FKTsNCiAJCX0N CisJfSBlbHNlIHsNCisJCXByaW50ayhLRVJOX0VSUiBEUlZfTkFNRQ0KKwkJ ICAgICAgICI6IEVycm9yOiBjYW5ub3QgbG9hZCBtdWx0aXBsZSBtb2R1bGUg aW5zdGFuY2VzXG4iKTsNCisNCisJCXJldHVybiAtRUVYSVNUOw0KIAl9DQor DQorCXJldHVybiAwOw0KIH0NCiANCiAvKiBEZXN0cm95IHRoZSBib25kaW5n IGRpcmVjdG9yeSB1bmRlciAvcHJvYy9uZXQsIGlmIGVtcHR5Lg0KQEAgLTM2 ODIsOCArMzc0OSw4IEBADQogCWludCBwcmV2X2FiaV92ZXIgPSBvcmlnX2Fw cF9hYmlfdmVyOw0KIAlpbnQgcmVzID0gMDsNCiANCi0JZHByaW50aygiYm9u ZF9pb2N0bDogbWFzdGVyPSVzLCBjbWQ9JWRcbiIsDQotCQlib25kX2Rldi0+ bmFtZSwgY21kKTsNCisvLwlkcHJpbnRrKCJib25kX2lvY3RsOiBtYXN0ZXI9 JXMsIGNtZD0lZFxuIiwNCisvLwkJYm9uZF9kZXYtPm5hbWUsIGNtZCk7DQog DQogCXN3aXRjaCAoY21kKSB7DQogCWNhc2UgU0lPQ0VUSFRPT0w6DQpAQCAt Mzc4NSw3ICszODUyLDcgQEANCiAJCXN3aXRjaCAoY21kKSB7DQogCQljYXNl IEJPTkRfRU5TTEFWRV9PTEQ6DQogCQljYXNlIFNJT0NCT05ERU5TTEFWRToN Ci0JCQlyZXMgPSBib25kX2Vuc2xhdmUoYm9uZF9kZXYsIHNsYXZlX2Rldik7 DQorCQkJcmVzID0gYm9uZF9lbnNsYXZlKGJvbmRfZGV2LCBzbGF2ZV9kZXYs IE5VTEwpOw0KIAkJCWJyZWFrOw0KIAkJY2FzZSBCT05EX1JFTEVBU0VfT0xE Og0KIAkJY2FzZSBTSU9DQk9ORFJFTEVBU0U6DQpAQCAtMzkxNSw2ICszOTgy LDkgQEANCiAJCQkgKiBpcyBwcm9iYWJseSBub3QgYSBnb29kIGlkZWEuDQog CQkJICovDQogCQkJZHByaW50aygiZXJyICVkICVzXG4iLCByZXMsIHNsYXZl LT5kZXYtPm5hbWUpOw0KKwkJCXByaW50ayhLRVJOX0VSUiBEUlZfTkFNRQ0K KwkJCSAgICAgICAiOiBFcnJvcjogZmFpbGVkIHRvIGNoYW5nZSBzbGF2ZSAl cydzIG10dSB0byAiDQorCQkJICAgICAgICIlZFxuIiwgc2xhdmUtPmRldi0+ bmFtZSwgbmV3X210dSk7DQogCQkJZ290byB1bndpbmQ7DQogCQl9DQogCX0N CkBAIC00MDgwLDEzICs0MTUwLDEzIEBADQogDQogCS8qIGlmIHdlIGFyZSBz ZW5kaW5nIGFycCBwYWNrZXRzLCB0cnkgdG8gYXQgbGVhc3QNCiAJICAgaWRl bnRpZnkgb3VyIG93biBpcCBhZGRyZXNzICovDQotCWlmIChib25kLT5wYXJh bXMuYXJwX2ludGVydmFsICYmICFteV9pcCAmJg0KKwlpZiAoYm9uZC0+cGFy YW1zLmFycF9pbnRlcnZhbCAmJiAhYm9uZC0+bXlfaXAgJiYNCiAJCShza2It PnByb3RvY29sID09IF9fY29uc3RhbnRfaHRvbnMoRVRIX1BfQVJQKSkpIHsN CiAJCWNoYXIgKnRoZV9pcCA9IChjaGFyICopc2tiLT5kYXRhICsNCiAJCQkJ c2l6ZW9mKHN0cnVjdCBldGhoZHIpICsNCiAJCQkJc2l6ZW9mKHN0cnVjdCBh cnBoZHIpICsNCiAJCQkJRVRIX0FMRU47DQotCQltZW1jcHkoJm15X2lwLCB0 aGVfaXAsIDQpOw0KKwkJbWVtY3B5KCZib25kLT5teV9pcCwgdGhlX2lwLCA0 KTsNCiAJfQ0KIA0KIAlyZWFkX2xvY2soJmJvbmQtPmxvY2spOw0KQEAgLTQy NjIsMTIgKzQzMzIsMTAgQEANCiAgKiBEb2VzIG5vdCBhbGxvY2F0ZSBidXQg Y3JlYXRlcyBhIC9wcm9jIGVudHJ5Lg0KICAqIEFsbG93ZWQgdG8gZmFpbC4N CiAgKi8NCi1zdGF0aWMgaW50IF9faW5pdCBib25kX2luaXQoc3RydWN0IG5l dF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKnBhcmFt cykNCitzdGF0aWMgaW50IGJvbmRfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAq Ym9uZF9kZXYsIHN0cnVjdCBib25kX3BhcmFtcyAqcGFyYW1zKQ0KIHsNCi0J c3RydWN0IGJvbmRpbmcgKmJvbmQgPSBib25kX2Rldi0+cHJpdjsNCi0NCi0J ZHByaW50aygiQmVnaW4gYm9uZF9pbml0IGZvciAlc1xuIiwgYm9uZF9kZXYt Pm5hbWUpOw0KLQ0KKwlzdHJ1Y3QgYm9uZGluZyAqYm9uZDsNCisgICAgICAg IGJvbmQgPSBib25kX2Rldi0+cHJpdjsNCiAJLyogaW5pdGlhbGl6ZSByd2xv Y2tzICovDQogCXJ3bG9ja19pbml0KCZib25kLT5sb2NrKTsNCiAJcndsb2Nr X2luaXQoJmJvbmQtPmN1cnJfc2xhdmVfbG9jayk7DQpAQCAtNDMzMSw3ICs0 Mzk5LDcgQEANCiAvKiBEZS1pbml0aWFsaXplIGRldmljZSBzcGVjaWZpYyBk YXRhLg0KICAqIENhbGxlciBtdXN0IGhvbGQgcnRubF9sb2NrLg0KICAqLw0K LXN0YXRpYyBpbmxpbmUgdm9pZCBib25kX2RlaW5pdChzdHJ1Y3QgbmV0X2Rl dmljZSAqYm9uZF9kZXYpDQordm9pZCBib25kX2RlaW5pdChzdHJ1Y3QgbmV0 X2RldmljZSAqYm9uZF9kZXYpDQogew0KIAlzdHJ1Y3QgYm9uZGluZyAqYm9u ZCA9IGJvbmRfZGV2LT5wcml2Ow0KIA0KQEAgLTQzNDIsNiArNDQxMCw1MyBA QA0KICNlbmRpZg0KIH0NCiANCisvKiBDcmVhdGUgYSBuZXcgYm9uZCBkZXZp Y2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHBhcmFtcy4NCisgKiBDYWxsZXIgbXVz dCBob2xkIHJ0bmxfbG9jaygpLg0KKyAqLw0KK2ludCBib25kX2NyZWF0ZShj aGFyICpuYW1lLCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKnBhcmFtcywgc3RydWN0 IGJvbmRpbmcgKipuZXdib25kKQ0KK3sNCisJCXN0cnVjdCBuZXRfZGV2aWNl ICpib25kX2RldjsNCisgICAgaW50IHJlczsNCisNCisgICAgYm9uZF9kZXYg PSBhbGxvY19uZXRkZXYoc2l6ZW9mKHN0cnVjdCBib25kaW5nKSwgbmFtZSwg ZXRoZXJfc2V0dXApOw0KKwkJaWYgKCFib25kX2Rldikgew0KKyAgICAgICAg cHJpbnRrKEtFUk5fRVJSICJlZWshIGNhbid0IGFsbG9jIG5ldGRldiFcbiIp Ow0KKyAgICAgICAgcmV0dXJuIC1FTk9NRU07DQorCQl9DQorDQorCQkvKiBi b25kX2luaXQoKSBtdXN0IGJlIGNhbGxlZCBhZnRlciBkZXZfYWxsb2NfbmFt ZSgpIChmb3IgdGhlDQorCQkgKiAvcHJvYyBmaWxlcyksIGJ1dCBiZWZvcmUg cmVnaXN0ZXJfbmV0ZGV2aWNlKCksIGJlY2F1c2Ugd2UNCisJCSAqIG5lZWQg dG8gc2V0IGZ1bmN0aW9uIHBvaW50ZXJzLg0KKwkJICovDQorICAgIA0KKyAg ICByZXMgPSBib25kX2luaXQoYm9uZF9kZXYsIHBhcmFtcyk7DQorCQlpZiAo cmVzIDwgMCkgew0KKwkJCWZyZWVfbmV0ZGV2KGJvbmRfZGV2KTsNCisgICAg ICAgICAgcmV0dXJuIHJlczsNCisJCX0NCisNCisJCVNFVF9NT0RVTEVfT1dO RVIoYm9uZF9kZXYpOw0KKw0KKwkJcmVzID0gcmVnaXN0ZXJfbmV0ZGV2aWNl KGJvbmRfZGV2KTsNCisJCWlmIChyZXMgPCAwKSB7DQorCQkJYm9uZF9kZWlu aXQoYm9uZF9kZXYpOw0KKwkJCWZyZWVfbmV0ZGV2KGJvbmRfZGV2KTsNCisg ICAgICAgICAgcmV0dXJuIHJlczsNCisJCX0NCisgICAgaWYgKG5ld2JvbmQp ICpuZXdib25kID0gYm9uZF9kZXYtPnByaXY7DQorICAgIHJldHVybiByZXM7 DQorfQ0KKw0KKw0KKy8qIERlc3Ryb3kgYSBib25kIGRldmljZS4NCisgKiBD YWxsZXIgbXVzdCBob2xkIHJ0bmxfbG9jaygpLg0KKyAqLw0KK3N0YXRpYyBp bmxpbmUgdm9pZCBib25kX2Rlc3Ryb3lfZGV2KHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYpDQorew0KKwl1bnJlZ2lzdGVyX25ldGRldmljZShkZXYpOw0KKwli b25kX2RlaW5pdChkZXYpOw0KK30NCisNCiAvKiBVbnJlZ2lzdGVyIGFuZCBm cmVlIGFsbCBib25kIGRldmljZXMuDQogICogQ2FsbGVyIG11c3QgaG9sZCBy dG5sX2xvY2suDQogICovDQpAQCAtNDM0OSwxMiArNDQ2NCwxMSBAQA0KIHsN CiAJc3RydWN0IGJvbmRpbmcgKmJvbmQsICpueHQ7DQogDQotCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShib25kLCBueHQsICZib25kX2Rldl9saXN0LCBi b25kX2xpc3QpIHsNCi0JCXN0cnVjdCBuZXRfZGV2aWNlICpib25kX2RldiA9 IGJvbmQtPmRldjsNCi0NCi0JCXVucmVnaXN0ZXJfbmV0ZGV2aWNlKGJvbmRf ZGV2KTsNCi0JCWJvbmRfZGVpbml0KGJvbmRfZGV2KTsNCi0JfQ0KKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYm9uZCwgbnh0LCAmYm9uZF9kZXZfbGlz dCwgYm9uZF9saXN0KSANCisJew0KKwkJLy9wcmludGsoS0VSTl9FUlIiRnJl ZWluZyBib25kICVzXG4iLCBib25kLT5kZXYtPm5hbWUpOw0KKwkJYm9uZF9k ZXN0cm95X2Rldihib25kLT5kZXYpOw0KKyAgICAgICAgfQ0KIA0KICNpZmRl ZiBDT05GSUdfUFJPQ19GUw0KIAlib25kX2Rlc3Ryb3lfcHJvY19kaXIoKTsN CkBAIC00MzYzLDExICs0NDc3LDE1NiBAQA0KIA0KIC8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBNb2R1bGUgaW5pdGlhbGl6YXRpb24gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCisvKioNCisgKiBib25kX2lzX3Zh bGlkX2lwX3RhcmdldCAtIGNoZWNrIHZhbGlkaXR5IG9mIGlwIHRhcmdldA0K KyAqIA0KKyAqIEFuIGlwIHRhcmdldCBpcyBpbiB0aGUgZm9ybWF0IG9mIGRk ZC5kZGQuZGRkLmRkZA0KKyAqIHdoZXJlIGVhY2ggJ2RkZCcgZ3JvdXAgaXMg MS0zIGRpZ2l0cyBsb25nLCBiZXR3ZWVuDQorICogMCBhbmQgMjU1LCBhbmQg Z3JvdXBzIGFyZSBzZXBhcmF0ZWQgYnkgYSAnLicNCisgKi8NCitzdGF0aWMg aW50IGJvbmRfaXNfdmFsaWRfaXBfdGFyZ2V0KGNoYXIgKmlwX2FkZHIpDQor ew0KKwlpbnQgZ3JvdXBzID0gMCwgZGlnaXRzOw0KKwl1bnNpZ25lZCBsb25n IHZhbDsNCisJY2hhciAqcG9zID0gaXBfYWRkciwgYnVmZls0XTsNCisNCisJ ZG8gew0KKwkJZGlnaXRzID0gMDsNCisJCW1lbXNldChidWZmLCAwLCA0KTsN CisNCisJCXdoaWxlICgqcG9zICYmICgqcG9zICE9ICcuJykpIHsNCisJCQlp ZiAoIWlzZGlnaXQoKnBvcykpIHsNCisJCQkJZHByaW50aygiTm90IGEgZGln aXQgKCVjKVxuIiwgKnBvcyk7DQorCQkJCXJldHVybiAtRUlOVkFMOw0KKwkJ CX0NCisNCisJCQlidWZmW2RpZ2l0cysrXSA9ICpwb3MrKzsNCisNCisJCQlp ZiAoZGlnaXRzID4gMykgew0KKwkJCQlkcHJpbnRrKCJUb28gbWFueSBkaWdp dHMgKCVkKVxuIiwgZGlnaXRzKTsNCisJCQkJcmV0dXJuIC1FSU5WQUw7DQor CQkJfQ0KKwkJfQ0KKw0KKwkJaWYgKGRpZ2l0cyA9PSAwKSB7DQorCQkJZHBy aW50aygiZGlnaXRzIGlzIDBcbiIpOw0KKwkJCXJldHVybiAtRUlOVkFMOw0K KwkJfQ0KKw0KKwkJdmFsID0gc2ltcGxlX3N0cnRvdWwoYnVmZiwgTlVMTCwg MTApOw0KKwkJaWYgKHZhbCA+IDI1NSkgew0KKwkJCWRwcmludGsoInZhbCBv dXQgb2YgcmFuZ2UgKCVkKVxuIiwgdmFsKTsNCisJCQlyZXR1cm4gLUVJTlZB TDsNCisJCX0NCisNCisJCWdyb3VwcysrOw0KKwkJaWYgKGdyb3VwcyA+IDQp IHsNCisJCQlkcHJpbnRrKCJUb28gbWFueSBncm91cHMgKCVkKVxuIiwgZ3Jv dXBzKTsNCisJCQlyZXR1cm4gLUVJTlZBTDsNCisJCX0NCisJfSB3aGlsZSAo KnBvcysrKTsNCisNCisJaWYgKGdyb3VwcyAhPSA0KSB7DQorCQlkcHJpbnRr KCJOb3QgZW5vdWdoIGdyb3VwcyAoJWQpXG4iLCBncm91cHMpOw0KKwkJcmV0 dXJuIC1FSU5WQUw7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8q Kg0KKyAqIGJvbmRfY2hlY2tfYXJwX21vbl9wYXJhbXMgLSBjaGVjayBhcnAg bW9uaXRvcmluZyBwYXJhbXMuDQorICogDQorICogVGhpcyBhIHNwZWNpYWwg Y2FzZSBzaW5jZSB0aGUgYXJwX2lwX3RhcmdldCBwYXJhbSBpcyBhbHJlYWR5 DQorICogaW4gYXJyYXkgZm9ybWF0IGFuZCBjb3VsZCBub3QgYmUgZXh0ZW5k ZWQgdG8gYSAyIGRpbWVudGlvbmFsDQorICogYXJyYXkuIEEgc2VwYXJhdGUg bW9kdWxlIHBhcmFtLCBhcnBfaXBfY291bnQsIHdhcyBhZGRlZCB0bw0KKyAq IGRldGVybWluZSBob3cgbWFueSBhcnAgdGFyZ2V0cyBmcm9tIHRoZSBhcnBf aXBfdGFyZ2V0IGFycmF5DQorICogYmVsb25nIHRvIGVhY2ggYm9uZCBkZXZp Y2UuIFRoaXMgZnVuY3Rpb24gY2hlY2tzOg0KKyAqIA0KKyAqIDEpIGFycF9p bnRlcnZhbCBhbmQgYXJwX2lwX2NvdW50IG9mIGVhY2ggYm9uZCBhcmUgaW4g cmFuZ2UuDQorICogMikgYWxsIGFycF9pcF90YXJnZXRzIGFyZSBsZWdhbC4N CisgKiAzKSB0b3RhbCBhbW91bnQgb2YgYXJwX2lwX2NvdW50IG1hdGNoZXMg dGhlIGFtb3VudCBvZg0KKyAqICAgIGFycF9pcF90YXJnZXRzLg0KKyAqIA0K KyAqIElmIGFycF9pcF9jb3VudCBpcyBub3Qgc3BlY2lmaWVkIGZvciBhbnkg Ym9uZCwgYWxsIGFycF9pcF90YXJnZXRzDQorICogZ28gdG8gdGhlIGZpcnN0 IGJvbmQgdG8gcHJlc2VydmUgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4NCisg Ki8NCitzdGF0aWMgaW50IGJvbmRfY2hlY2tfYXJwX3BhcmFtcyh2b2lkKQ0K K3sNCisJaW50IGk7DQorCWludCBhcnBfY250X3NldCA9IDA7DQorCWludCB0 b3RhbF9hcnBfY250ID0gMDsNCisJaW50IHRvdGFsX2FycF90Z3QgPSAwOw0K Kw0KKwlmb3IgKGkgPSAwOyBpIDwgQk9ORF9NQVhfVU5JVFM7IGkrKykgew0K KwkJaWYgKChhcnBfaXBfY291bnRbaV0gPCAwKSB8fA0KKwkJICAgIChhcnBf aXBfY291bnRbaV0gPiBCT05EX01BWF9ERVZfVEFSR0VUUykpIHsNCisJCQlw cmludGsoS0VSTl9FUlIgRFJWX05BTUUNCisJCQkJIjogRXJyb3I6IGFycF9p cF9jb3VudCBtb2R1bGUgcGFyYW1ldGVyICglZCkgIg0KKwkJCQkiYXQgcG9z aXRpb24gJWQgaXMgbm90IGluIHJhbmdlIDAtJWRcbiIsDQorCQkJCWFycF9p cF9jb3VudFtpXSwgaSwgQk9ORF9NQVhfREVWX1RBUkdFVFMpOw0KKwkJCXJl dHVybiAtRUlOVkFMOw0KKwkJfQ0KKw0KKwkJaWYgKGFycF9pcF9jb3VudFtp XSkgew0KKwkJCWFycF9jbnRfc2V0Kys7DQorCQkJdG90YWxfYXJwX2NudCAr PSBhcnBfaXBfY291bnRbaV07DQorCQl9DQorCX0NCisNCisJZm9yIChpID0g MDsgKGkgPCBCT05EX01BWF9BUlBfVEFSR0VUUykgJiYgYXJwX2lwX3Rhcmdl dFtpXTsgaSsrKSB7DQorCQlpZiAoYm9uZF9pc192YWxpZF9pcF90YXJnZXQo YXJwX2lwX3RhcmdldFtpXSk9PSAwKSB7DQorCQkJdG90YWxfYXJwX3RndCsr Ow0KKwkJfSBlbHNlIHsNCisJCQlwcmludGsoS0VSTl9FUlIgRFJWX05BTUUN CisJCQkJIjogRXJyb3I6IElsbGVnYWwgYXJwX2lwX3RhcmdldFslZF0gJXNc biIsIGksDQorCQkJCShhcnBfaXBfdGFyZ2V0W2ldID8gYXJwX2lwX3Rhcmdl dFtpXSA6Ik5VTEwiKSk7DQorCQkJcmV0dXJuIC1FSU5WQUw7DQorCQl9DQor CX0NCisNCisJaWYgKCFhcnBfY250X3NldCAmJiB0b3RhbF9hcnBfdGd0KSB7 DQorCQlhcnBfaXBfY291bnRbMF0gPSBtaW4odG90YWxfYXJwX3RndCwgQk9O RF9NQVhfREVWX1RBUkdFVFMpOw0KKwkJcHJpbnRrKEtFUk5fV0FSTklORyBE UlZfTkFNRQ0KKwkJICAgICAgICI6IFdhcm5pbmc6IG5vIGFycF9pcF9jb3Vu dCBzcGVjaWZpZWQsICINCisJCSAgICAgICAiZ2l2aW5nICVkIGFycCB0YXJn ZXRzIHRvIGZpcnN0IGJvbmQgZGV2aWNlXG4iLA0KKwkJICAgICAgIGFycF9p cF9jb3VudFswXSk7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlpZiAodG90 YWxfYXJwX2NudCAhPSB0b3RhbF9hcnBfdGd0KSB7DQorCQlwcmludGsoS0VS Tl9FUlIgRFJWX05BTUUNCisJCSAgICAgICAiOiBFcnJvcjogVG90YWwgYW1v dW50IG9mIGFycCBpcCB0YXJnZXRzICglZCkgZG9lcyAiDQorCQkgICAgICAg Im5vdCBtYXRjaCB0aGUgc3VtIG9mIGFycCBpcCBjb3VudCAoJWQpXG4iLA0K KwkJICAgICAgIHRvdGFsX2FycF90Z3QsIHRvdGFsX2FycF9jbnQpOw0KKwkJ cmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0K Ky8qDQorICogZ2l2ZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIHBhcmFtcw0K KyAqLw0KK3N0YXRpYyBpbmxpbmUgdm9pZCBib25kX3NldF9kZWZfcGFyYW1z KHN0cnVjdCBib25kX3BhcmFtcyAqcGFyYW1zKQ0KK3sNCisJcGFyYW1zLT5t b2RlCQk9IEJPTkRfTU9ERV9ST1VORFJPQklOOw0KKwlwYXJhbXMtPm1paW1v bgkJPSBCT05EX0xJTktfTU9OX0lOVEVSVjsNCisJcGFyYW1zLT5hcnBfaW50 ZXJ2YWwJPSBCT05EX0xJTktfQVJQX0lOVEVSVjsNCisJcGFyYW1zLT51c2Vf Y2Fycmllcgk9IEJPTkRfREVGX1VTRV9DQVJSSUVSOw0KKwlwYXJhbXMtPnVw ZGVsYXkJCT0gQk9ORF9ERUZfREVMQVk7DQorCXBhcmFtcy0+ZG93bmRlbGF5 CT0gQk9ORF9ERUZfREVMQVk7DQorCXBhcmFtcy0+bGFjcF9mYXN0CT0gQk9O RF8zQURfTEFDUF9TTE9XOw0KKwlwYXJhbXMtPnByaW1hcnlbMF0JPSAnXDAn Ow0KKw0KKwltZW1zZXQocGFyYW1zLT5hcnBfdGFyZ2V0cywgMCwgc2l6ZW9m KHBhcmFtcy0+YXJwX3RhcmdldHMpKTsNCit9DQorDQogLyoNCiAgKiBDb252 ZXJ0IHN0cmluZyBpbnB1dCBtb2R1bGUgcGFybXMuICBBY2NlcHQgZWl0aGVy IHRoZQ0KICAqIG51bWJlciBvZiB0aGUgbW9kZSBvciBpdHMgc3RyaW5nIG5h bWUuDQogICovDQotc3RhdGljIGlubGluZSBpbnQgYm9uZF9wYXJzZV9wYXJt KGNoYXIgKm1vZGVfYXJnLCBzdHJ1Y3QgYm9uZF9wYXJtX3RibCAqdGJsKQ0K K3N0YXRpYyBpbmxpbmUgaW50IGJvbmRfcGFyc2VfcGFybShjb25zdCBjaGFy ICptb2RlX2FyZywgc3RydWN0IGJvbmRfcGFybV90YmwgKnRibCkNCiB7DQog CWludCBpOw0KIA0KQEAgLTQzODMsMTE2ICs0NjQyLDI0MCBAQA0KIAlyZXR1 cm4gLTE7DQogfQ0KIA0KLXN0YXRpYyBpbnQgYm9uZF9jaGVja19wYXJhbXMo c3RydWN0IGJvbmRfcGFyYW1zICpwYXJhbXMpDQorLyoNCisgKiBmaWxsIHZh bHVlcyBmb3IgYWxsIHBhcmFtcyBmcm9tIGdsb2JhbCB2YXJzLg0KKyAqLw0K K3N0YXRpYyB2b2lkIGJvbmRfZmlsbF9pbnNtb2RfcGFyYW1zKHN0cnVjdCBi b25kX3BhcmFtcyAqcGFyYW1zLCBpbnQgcG9zaXRpb24pDQogew0KLQkvKg0K LQkgKiBDb252ZXJ0IHN0cmluZyBwYXJhbWV0ZXJzLg0KLQkgKi8NCi0JaWYg KG1vZGUpIHsNCi0JCWJvbmRfbW9kZSA9IGJvbmRfcGFyc2VfcGFybShtb2Rl LCBib25kX21vZGVfdGJsKTsNCi0JCWlmIChib25kX21vZGUgPT0gLTEpIHsN Ci0JCQlwcmludGsoS0VSTl9FUlIgRFJWX05BTUUNCi0JCQkgICAgICAgIjog RXJyb3I6IEludmFsaWQgYm9uZGluZyBtb2RlIFwiJXNcIlxuIiwNCi0JCQkg ICAgICAgbW9kZSA9PSBOVUxMID8gIk5VTEwiIDogbW9kZSk7DQotCQkJcmV0 dXJuIC1FSU5WQUw7DQotCQl9DQorCWludCBpLCBqLCBzdGFydCwgZW5kOw0K KwlzdGF0aWMgaW50IGFycF9pcF9vZmZzZXQgPSAwOw0KKw0KKwlib25kX3Nl dF9kZWZfcGFyYW1zKHBhcmFtcyk7DQorDQorCWlmIChwb3NpdGlvbiA+IEJP TkRfTUFYX1VOSVRTKSB7DQorCQlyZXR1cm47DQogCX0NCisgICAgICAgIA0K KyAgICAgICAgLy8gc2V0IGlucHV0IHZhbHVlcyANCisJaWYobWlpbW9uW3Bv c2l0aW9uXSAhPSBCT05EX0xJTktfTU9OX0lOVEVSVikNCisgICAgICAgIHsN CisJICAgICAgICBwYXJhbXMtPm1paW1vbiA9IG1paW1vbltwb3NpdGlvbl07 DQorICAgICAgICB9DQorICAgICAgICANCisgICAgICAgIGlmKHVzZV9jYXJy aWVyW3Bvc2l0aW9uXSAhPSBCT05EX0RFRl9VU0VfQ0FSUklFUikNCisJICAg ICAgICBwYXJhbXMtPnVzZV9jYXJyaWVyID0gdXNlX2NhcnJpZXJbcG9zaXRp b25dOw0KKyAgICAgICAgaWYodXBkZWxheVtwb3NpdGlvbl0gIT0gQk9ORF9E RUZfREVMQVkpDQorCSAgICAgICAgcGFyYW1zLT51cGRlbGF5ID0gdXBkZWxh eVtwb3NpdGlvbl07DQorICAgICAgICBpZihkb3duZGVsYXlbcG9zaXRpb25d ICE9IEJPTkRfREVGX0RFTEFZKQ0KKwkgICAgICAgIHBhcmFtcy0+ZG93bmRl bGF5ID0gZG93bmRlbGF5W3Bvc2l0aW9uXTsNCisNCisgICAgICAgIA0KKwlp ZiAobW9kZVtwb3NpdGlvbl0gJiYgKihtb2RlW3Bvc2l0aW9uXSkpIHsNCisJ CXBhcmFtcy0+bW9kZSA9IGJvbmRfcGFyc2VfcGFybShtb2RlW3Bvc2l0aW9u XSwgYm9uZF9tb2RlX3RibCk7DQorCX0NCisNCisJaWYgKGxhY3BfcmF0ZVtw b3NpdGlvbl0gJiYgKihsYWNwX3JhdGVbcG9zaXRpb25dKSkgew0KKwkJcGFy YW1zLT5sYWNwX2Zhc3QgPSBib25kX3BhcnNlX3Bhcm0obGFjcF9yYXRlW3Bv c2l0aW9uXSwNCisJCQkJCQkgICAgYm9uZF9sYWNwX3RibCk7DQogDQotCWlm IChsYWNwX3JhdGUpIHsNCi0JCWlmIChib25kX21vZGUgIT0gQk9ORF9NT0RF XzgwMjNBRCkgew0KKwkJaWYgKHBhcmFtcy0+bW9kZSAhPSBCT05EX01PREVf ODAyM0FEKSB7DQogCQkJcHJpbnRrKEtFUk5fSU5GTyBEUlZfTkFNRQ0KIAkJ CSAgICAgICAiOiBsYWNwX3JhdGUgcGFyYW0gaXMgaXJyZWxldmFudCBpbiBt b2RlICVzXG4iLA0KLQkJCSAgICAgICBib25kX21vZGVfbmFtZShib25kX21v ZGUpKTsNCi0JCX0gZWxzZSB7DQotCQkJbGFjcF9mYXN0ID0gYm9uZF9wYXJz ZV9wYXJtKGxhY3BfcmF0ZSwgYm9uZF9sYWNwX3RibCk7DQotCQkJaWYgKGxh Y3BfZmFzdCA9PSAtMSkgew0KLQkJCQlwcmludGsoS0VSTl9FUlIgRFJWX05B TUUNCi0JCQkJICAgICAgICI6IEVycm9yOiBJbnZhbGlkIGxhY3AgcmF0ZSBc IiVzXCJcbiIsDQotCQkJCSAgICAgICBsYWNwX3JhdGUgPT0gTlVMTCA/ICJO VUxMIiA6IGxhY3BfcmF0ZSk7DQotCQkJCXJldHVybiAtRUlOVkFMOw0KLQkJ CX0NCisJCQkgICAgICAgYm9uZF9tb2RlX25hbWUocGFyYW1zLT5tb2RlKSk7 DQorCQkJLy8gcmVzZXQgdG8gZGVmYXVsdA0KKwkJCXBhcmFtcy0+bGFjcF9m YXN0ID0gQk9ORF8zQURfTEFDUF9TTE9XOw0KKwkJfSANCisJfQ0KKw0KKwlp ZiAocHJpbWFyeVtwb3NpdGlvbl0gJiYgKihwcmltYXJ5W3Bvc2l0aW9uXSkp IHsNCisJCXN0cm5jcHkocGFyYW1zLT5wcmltYXJ5LCBwcmltYXJ5W3Bvc2l0 aW9uXSwgSUZOQU1TSVopOw0KKwkJcGFyYW1zLT5wcmltYXJ5W0lGTkFNU0la IC0gMV0gPSAwOw0KKwl9DQorDQorCQ0KKwlpZihhcnBfaW50ZXJ2YWxbcG9z aXRpb25dICE9IEJPTkRfTElOS19BUlBfSU5URVJWKQ0KKwl7DQorCQlpZiAo cGFyYW1zLT5tb2RlID09IEJPTkRfTU9ERV84MDIzQUQgfHwNCisJCQlwYXJh bXMtPm1vZGUgPT0gQk9ORF9NT0RFX1RMQiB8fCANCisJCQlwYXJhbXMtPm1v ZGUgPT0gQk9ORF9NT0RFX0FMQiApIHsNCisJCQlwcmludGsoS0VSTl9JTkZP IERSVl9OQU1FDQorCQkJCSI6IGFycF9pbnRlcnZhbCBpcyBpcnJlbGV2YW50 IGFuZCB3aWxsIGJlIGRpc2FibGVkIGluIG1vZGUgJXNcbiIsDQorCQkJCWJv bmRfbW9kZV9uYW1lKHBhcmFtcy0+bW9kZSkpOw0KKwkJCS8vIHJlc2V0IHRv IGRlZmF1bHQNCisJCQlwYXJhbXMtPmFycF9pbnRlcnZhbCA9IEJPTkRfTElO S19BUlBfSU5URVJWOyAJDQorCQl9DQorCQllbHNlIHsNCisJICAgICAgICAJ cGFyYW1zLT5hcnBfaW50ZXJ2YWwgPSBhcnBfaW50ZXJ2YWxbcG9zaXRpb25d Ow0KIAkJfQ0KIAl9DQorCQ0KKwkvKg0KKwkgKiBDb252ZXJ0IGFycCB0YXJn ZXQgcGFyYW1ldGVycy4NCisJICovDQorCW1lbXNldChwYXJhbXMtPmFycF90 YXJnZXRzLCAwLCBzaXplb2YocGFyYW1zLT5hcnBfdGFyZ2V0cykpOw0KIA0K LQlpZiAobWF4X2JvbmRzIDwgMSB8fCBtYXhfYm9uZHMgPiBJTlRfTUFYKSB7 DQotCQlwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FDQotCQkgICAgICAg IjogV2FybmluZzogbWF4X2JvbmRzICglZCkgbm90IGluIHJhbmdlICVkLSVk LCBzbyBpdCAiDQotCQkgICAgICAgIndhcyByZXNldCB0byBCT05EX0RFRkFV TFRfTUFYX0JPTkRTICglZCkiLA0KLQkJICAgICAgIG1heF9ib25kcywgMSwg SU5UX01BWCwgQk9ORF9ERUZBVUxUX01BWF9CT05EUyk7DQotCQltYXhfYm9u ZHMgPSBCT05EX0RFRkFVTFRfTUFYX0JPTkRTOw0KKwlzdGFydCA9IGFycF9p cF9vZmZzZXQ7DQorCWFycF9pcF9vZmZzZXQgKz0gYXJwX2lwX2NvdW50W3Bv c2l0aW9uXTsNCisJZW5kID0gYXJwX2lwX29mZnNldDsNCisgICAgICAgIA0K Kwlmb3IgKGo9MCwgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyssaisrKXsNCisJ CXBhcmFtcy0+YXJwX3RhcmdldHNbal0gPSBpbl9hdG9uKGFycF9pcF90YXJn ZXRbaV0pOw0KKw0KKwl9DQorfQ0KKw0KKy8qKg0KKyAqIGJvbmRfY2hlY2tf cGFyYW1zIC0gcGVyZm9ybSBzYW5pdHkgY2hlY2tzIG9uIHBhcmFtcy4NCisg KiANCisgKiBJZiBAZm9yY2UgaXMgc2V0LCBhbmQgdGhlcmUgaXMgYSByZWFz b25hYmxlIGRlZmF1bHQgdmFsdWUsDQorICogcGFyYW1zIGNhbiBiZSByZXNl dC4gT3RoZXJ3aXNlIGZhaWwgdGhlIGluc21vZCBvcGVyYXRpb24uDQorICov DQorc3RhdGljIGludCBib25kX2NoZWNrX3BhcmFtcyhzdHJ1Y3QgYm9uZF9w YXJhbXMgKnBhcmFtcywgaW50IGZvcmNlKQ0KK3sNCisJaWYgKChwYXJhbXMt Pm1vZGUgPCAwKSB8fA0KKwkgICAgKHBhcmFtcy0+bW9kZSA+PSBCT05EX01P REVfTUFYKSkgew0KKwkJCXByaW50ayhLRVJOX0VSUiBEUlZfTkFNRQ0KKwkJ CSI6IEVycm9yOiBJbnZhbGlkIGJvbmRpbmcgbW9kZVxuIik7DQorCQkJcmV0 dXJuIC1FSU5WQUw7DQorCX0NCisNCisNCisJaWYgKChwYXJhbXMtPmxhY3Bf ZmFzdCA8IDApIHx8IA0KKwkgICAgKHBhcmFtcy0+bGFjcF9mYXN0ID49IEJP TkRfM0FEX0xBQ1BfTUFYKSkgew0KKwkJcHJpbnRrKEtFUk5fRVJSIERSVl9O QU1FDQorCQkgICAgICAgIjogRXJyb3I6IEludmFsaWQgbGFjcCByYXRlIFxu Iik7DQorCQlyZXR1cm4gLUVJTlZBTDsNCiAJfQ0KIA0KLQlpZiAobWlpbW9u IDwgMCkgew0KKwlpZiAocGFyYW1zLT5taWltb24gPCAwKSB7DQogCQlwcmlu dGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FDQogCQkgICAgICAgIjogV2Fybmlu ZzogbWlpbW9uIG1vZHVsZSBwYXJhbWV0ZXIgKCVkKSwgIg0KLQkJICAgICAg ICJub3QgaW4gcmFuZ2UgMC0lZCwgc28gaXQgd2FzIHJlc2V0IHRvICVkXG4i LA0KLQkJICAgICAgIG1paW1vbiwgSU5UX01BWCwgQk9ORF9MSU5LX01PTl9J TlRFUlYpOw0KLQkJbWlpbW9uID0gQk9ORF9MSU5LX01PTl9JTlRFUlY7DQor CQkJIm11c3QgYmUgcG9zaXRpdmVcbiIsDQorCQkgICAgICAgcGFyYW1zLT5t aWltb24pOw0KKwkJaWYgKGZvcmNlKSB7DQorCQkJcHJpbnRrKEtFUk5fV0FS TklORyBEUlZfTkFNRQ0KKwkJCSAgICAgICAiOiByZXNldHRpbmcgbWlpbW9u IHRvICVkXG4iLA0KKwkJCSAgICAgICBCT05EX0xJTktfTU9OX0lOVEVSVik7 DQorCQkJcGFyYW1zLT5taWltb24gPSBCT05EX0xJTktfTU9OX0lOVEVSVjsN CisJCX0gZWxzZSB7DQorCQkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0KIAl9 DQogDQotCWlmICh1cGRlbGF5IDwgMCkgew0KKwlpZiAocGFyYW1zLT51cGRl bGF5IDwgMCkgew0KIAkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQ0K IAkJICAgICAgICI6IFdhcm5pbmc6IHVwZGVsYXkgbW9kdWxlIHBhcmFtZXRl ciAoJWQpLCAiDQotCQkgICAgICAgIm5vdCBpbiByYW5nZSAwLSVkLCBzbyBp dCB3YXMgcmVzZXQgdG8gMFxuIiwNCi0JCSAgICAgICB1cGRlbGF5LCBJTlRf TUFYKTsNCi0JCXVwZGVsYXkgPSAwOw0KKwkJCSJtdXN0IGJlIHBvc2l0aXZl XG4iLA0KKwkJICAgICAgIHBhcmFtcy0+dXBkZWxheSk7DQorCQlpZiAoZm9y Y2UpIHsNCisJCXByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUUNCisJCQkg ICAgICAgIjogcmVzZXR0aW5nIHVwZGVsYXkgdG8gJWRcbiIsDQorCQkJICAg ICAgIEJPTkRfREVGX0RFTEFZKTsNCisJCQlwYXJhbXMtPnVwZGVsYXkgPSBC T05EX0RFRl9ERUxBWTsNCisJCX0gZWxzZSB7DQorCQkJcmV0dXJuIC1FSU5W QUw7DQorCQl9DQogCX0NCiANCi0JaWYgKGRvd25kZWxheSA8IDApIHsNCisJ aWYgKHBhcmFtcy0+ZG93bmRlbGF5IDwgMCkgew0KIAkJcHJpbnRrKEtFUk5f V0FSTklORyBEUlZfTkFNRQ0KIAkJICAgICAgICI6IFdhcm5pbmc6IGRvd25k ZWxheSBtb2R1bGUgcGFyYW1ldGVyICglZCksICINCi0JCSAgICAgICAibm90 IGluIHJhbmdlIDAtJWQsIHNvIGl0IHdhcyByZXNldCB0byAwXG4iLA0KLQkJ ICAgICAgIGRvd25kZWxheSwgSU5UX01BWCk7DQotCQlkb3duZGVsYXkgPSAw Ow0KKwkJCSJtdXN0IGJlIHBvc2l0aXZlXG4iLA0KKwkJICAgICAgIHBhcmFt cy0+ZG93bmRlbGF5KTsNCisJCWlmIChmb3JjZSkgew0KKwkJCXByaW50ayhL RVJOX1dBUk5JTkcgRFJWX05BTUUNCisJCQkgICAgICAgIjogcmVzZXR0aW5n IGRvd25kZWxheSB0byAlZFxuIiwNCisJCQkgICAgICAgQk9ORF9ERUZfREVM QVkpOw0KKwkJCXBhcmFtcy0+ZG93bmRlbGF5ID0gQk9ORF9ERUZfREVMQVk7 DQorCQl9IGVsc2Ugew0KKwkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0KKwl9 DQorDQorCWlmIChwYXJhbXMtPmFycF9pbnRlcnZhbCA8IDApIHsNCisJCXBy aW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUUNCisJCSAgICAgICAiOiBXYXJu aW5nOiBhcnBfaW50ZXJ2YWwgbW9kdWxlIHBhcmFtZXRlciAoJWQpLCAiDQor CQkJIm11c3QgYmUgcG9zaXRpdmVcbiIsDQorCQkgICAgICAgcGFyYW1zLT5h cnBfaW50ZXJ2YWwpOw0KKwkJaWYgKGZvcmNlKSB7DQorCQlwcmludGsoS0VS Tl9XQVJOSU5HIERSVl9OQU1FDQorCQkJICAgICAgICI6IHJlc2V0dGluZyBh cnBfaW50ZXJ2YWwgdG8gJWRcbiIsDQorCQkJICAgICAgIEJPTkRfTElOS19B UlBfSU5URVJWKTsNCisJCQlwYXJhbXMtPmFycF9pbnRlcnZhbCA9IEJPTkRf TElOS19BUlBfSU5URVJWOw0KKwkJfSBlbHNlIHsNCisJCQlyZXR1cm4gLUVJ TlZBTDsNCisJCX0NCiAJfQ0KIA0KLQlpZiAoKHVzZV9jYXJyaWVyICE9IDAp ICYmICh1c2VfY2FycmllciAhPSAxKSkgew0KKwlpZiAoKHBhcmFtcy0+dXNl X2NhcnJpZXIgIT0gMCkgJiYgKHBhcmFtcy0+dXNlX2NhcnJpZXIgIT0gMSkp IHsNCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUUNCiAJCSAgICAg ICAiOiBXYXJuaW5nOiB1c2VfY2FycmllciBtb2R1bGUgcGFyYW1ldGVyICgl ZCksICINCiAJCSAgICAgICAibm90IG9mIHZhbGlkIHZhbHVlICgwLzEpLCBz byBpdCB3YXMgc2V0IHRvIDFcbiIsDQotCQkgICAgICAgdXNlX2NhcnJpZXIp Ow0KLQkJdXNlX2NhcnJpZXIgPSAxOw0KKwkJICAgICAgIHBhcmFtcy0+dXNl X2NhcnJpZXIpOw0KKwkJaWYgKGZvcmNlKSB7DQorCQkJcHJpbnRrKEtFUk5f V0FSTklORyBEUlZfTkFNRQ0KKwkJCSAgICAgICAiOiByZXNldHRpbmcgdXNl X2NhcnJpZXIgdG8gJWRcbiIsDQorCQkJICAgICAgIEJPTkRfREVGX1VTRV9D QVJSSUVSKTsNCisJCQlwYXJhbXMtPnVzZV9jYXJyaWVyID0gQk9ORF9ERUZf VVNFX0NBUlJJRVI7DQorCQl9IGVsc2Ugew0KKwkJCXJldHVybiAtRUlOVkFM Ow0KKwkJfQ0KIAl9DQogDQogCS8qIHJlc2V0IHZhbHVlcyBmb3IgODAyLjNh ZCAqLw0KLQlpZiAoYm9uZF9tb2RlID09IEJPTkRfTU9ERV84MDIzQUQpIHsN Ci0JCWlmICghbWlpbW9uKSB7DQorCWlmIChwYXJhbXMtPm1vZGUgPT0gQk9O RF9NT0RFXzgwMjNBRCkgew0KKwkJaWYgKCFwYXJhbXMtPm1paW1vbikgew0K IAkJCXByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUUNCiAJCQkgICAgICAg IjogV2FybmluZzogbWlpbW9uIG11c3QgYmUgc3BlY2lmaWVkLCAiDQogCQkJ ICAgICAgICJvdGhlcndpc2UgYm9uZGluZyB3aWxsIG5vdCBkZXRlY3QgbGlu ayAiDQogCQkJICAgICAgICJmYWlsdXJlLCBzcGVlZCBhbmQgZHVwbGV4IHdo aWNoIGFyZSAiDQogCQkJICAgICAgICJlc3NlbnRpYWwgZm9yIDgwMi4zYWQg b3BlcmF0aW9uXG4iKTsNCi0JCQlwcmludGsoS0VSTl9XQVJOSU5HICJGb3Jj aW5nIG1paW1vbiB0byAxMDBtc2VjXG4iKTsNCi0JCQltaWltb24gPSAxMDA7 DQorCQkJaWYgKGZvcmNlKSB7DQorCQkJCXByaW50ayhLRVJOX1dBUk5JTkcg RFJWX05BTUUNCisJCQkJICAgICAgICI6IGZvcmNpbmcgbWlpbW9uIHRvIDEw MG1zZWNcbiIpOw0KKwkJCQlwYXJhbXMtPm1paW1vbiA9IDEwMDsNCisJCQl9 IGVsc2Ugew0KKwkJCQlyZXR1cm4gLUVJTlZBTDsNCisJCQl9DQogCQl9DQog CX0NCiANCiAJLyogcmVzZXQgdmFsdWVzIGZvciBUTEIvQUxCICovDQotCWlm ICgoYm9uZF9tb2RlID09IEJPTkRfTU9ERV9UTEIpIHx8DQotCSAgICAoYm9u ZF9tb2RlID09IEJPTkRfTU9ERV9BTEIpKSB7DQotCQlpZiAoIW1paW1vbikg ew0KKwlpZiAoKHBhcmFtcy0+bW9kZSA9PSBCT05EX01PREVfVExCKSB8fA0K KwkgICAgKHBhcmFtcy0+bW9kZSA9PSBCT05EX01PREVfQUxCKSkgew0KKwkJ aWYgKCFwYXJhbXMtPm1paW1vbikgew0KIAkJCXByaW50ayhLRVJOX1dBUk5J TkcgRFJWX05BTUUNCiAJCQkgICAgICAgIjogV2FybmluZzogbWlpbW9uIG11 c3QgYmUgc3BlY2lmaWVkLCAiDQogCQkJICAgICAgICJvdGhlcndpc2UgYm9u ZGluZyB3aWxsIG5vdCBkZXRlY3QgbGluayAiDQogCQkJICAgICAgICJmYWls dXJlIGFuZCBsaW5rIHNwZWVkIHdoaWNoIGFyZSBlc3NlbnRpYWwgIg0KIAkJ CSAgICAgICAiZm9yIFRMQi9BTEIgbG9hZCBiYWxhbmNpbmdcbiIpOw0KLQkJ CXByaW50ayhLRVJOX1dBUk5JTkcgIkZvcmNpbmcgbWlpbW9uIHRvIDEwMG1z ZWNcbiIpOw0KLQkJCW1paW1vbiA9IDEwMDsNCisJCQlpZiAoZm9yY2UpIHsN CisJCQkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQ0KKwkJCQkgICAg ICAgIjogZm9yY2luZyBtaWltb24gdG8gMTAwbXNlY1xuIik7DQorCQkJCXBh cmFtcy0+bWlpbW9uID0gMTAwOw0KKwkJCX0gZWxzZSB7DQorCQkJCXJldHVy biAtRUlOVkFMOw0KKwkJCX0NCiAJCX0NCiAJfQ0KIA0KLQlpZiAoYm9uZF9t b2RlID09IEJPTkRfTU9ERV9BTEIpIHsNCi0JCXByaW50ayhLRVJOX05PVElD RSBEUlZfTkFNRQ0KLQkJICAgICAgICI6IEluIEFMQiBtb2RlIHlvdSBtaWdo dCBleHBlcmllbmNlIGNsaWVudCAiDQotCQkgICAgICAgImRpc2Nvbm5lY3Rp b25zIHVwb24gcmVjb25uZWN0aW9uIG9mIGEgbGluayBpZiB0aGUgIg0KLQkJ ICAgICAgICJib25kaW5nIG1vZHVsZSB1cGRlbGF5IHBhcmFtZXRlciAoJWQg bXNlYykgaXMgIg0KLQkJICAgICAgICJpbmNvbXBhdGlibGUgd2l0aCB0aGUg Zm9yd2FyZGluZyBkZWxheSB0aW1lIG9mIHRoZSAiDQotCQkgICAgICAgInN3 aXRjaFxuIiwNCi0JCSAgICAgICB1cGRlbGF5KTsNCisJaWYgKHBhcmFtcy0+ YXJwX2ludGVydmFsICYmICFwYXJhbXMtPmFycF90YXJnZXRzWzBdKSB7DQor CQkvKiBkb24ndCBhbGxvdyBhcnBpbmcgaWYgbm8gYXJwX2lwX3RhcmdldCBn aXZlbi4uLiAqLw0KKwkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQ0K KwkJICAgICAgICI6IFdhcm5pbmc6IGFycF9pbnRlcnZhbCBtb2R1bGUgcGFy YW1ldGVyICglZCkgIg0KKwkJICAgICAgICJzcGVjaWZpZWQgd2l0aG91dCBw cm92aWRpbmcgYXJwIGlwIHRhcmdldHNcbiIsDQorCQkgICAgICAgcGFyYW1z LT5hcnBfaW50ZXJ2YWwpOw0KKwkJaWYgKGZvcmNlKSB7DQorCQkJcHJpbnRr KEtFUk5fV0FSTklORyBEUlZfTkFNRQ0KKwkJCSAgICAgICAiOiBkaXNhYmxp bmcgQVJQIG1vbml0b3JpbmdcbiIpOw0KKwkJCXBhcmFtcy0+YXJwX2ludGVy dmFsID0gMDsNCisJCX0gZWxzZSB7DQorCQkJcmV0dXJuIC1FSU5WQUw7DQor CQl9DQogCX0NCiANCi0JaWYgKCFtaWltb24pIHsNCi0JCWlmICh1cGRlbGF5 IHx8IGRvd25kZWxheSkgew0KKyAgICAgICAgaWYgKCFwYXJhbXMtPm1paW1v bikgew0KKwkJaWYgKHBhcmFtcy0+dXBkZWxheSB8fCBwYXJhbXMtPmRvd25k ZWxheSkgew0KIAkJCS8qIGp1c3Qgd2FybiB0aGUgdXNlciB0aGUgdXAvZG93 biBkZWxheSB3aWxsIGhhdmUNCiAJCQkgKiBubyBlZmZlY3Qgc2luY2UgbWlp bW9uIGlzIHplcm8uLi4NCiAJCQkgKi8NCkBAIC00NTAxLDkwICs0ODg0LDU5 IEBADQogCQkJICAgICAgICJhbmQgdXBkZWxheSAoJWQpIG9yIGRvd25kZWxh eSAoJWQpIG1vZHVsZSAiDQogCQkJICAgICAgICJwYXJhbWV0ZXIgaXMgc2V0 OyB1cGRlbGF5IGFuZCBkb3duZGVsYXkgaGF2ZSAiDQogCQkJICAgICAgICJu byBlZmZlY3QgdW5sZXNzIG1paW1vbiBpcyBzZXRcbiIsDQotCQkJICAgICAg IHVwZGVsYXksIGRvd25kZWxheSk7DQorCQkJICAgICAgIHBhcmFtcy0+dXBk ZWxheSwgcGFyYW1zLT5kb3duZGVsYXkpOw0KKw0KKwkJCXBhcmFtcy0+dXBk ZWxheSA9IDA7DQorCQkJcGFyYW1zLT5kb3duZGVsYXkgPSAwOw0KIAkJfQ0K IAl9IGVsc2Ugew0KIAkJLyogZG9uJ3QgYWxsb3cgYXJwIG1vbml0b3Jpbmcg Ki8NCi0JCWlmIChhcnBfaW50ZXJ2YWwpIHsNCisJCWlmIChwYXJhbXMtPmFy cF9pbnRlcnZhbCkgew0KIAkJCXByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05B TUUNCiAJCQkgICAgICAgIjogV2FybmluZzogbWlpbW9uICglZCkgYW5kIGFy cF9pbnRlcnZhbCAoJWQpICINCiAJCQkgICAgICAgImNhbid0IGJlIHVzZWQg c2ltdWx0YW5lb3VzbHksIGRpc2FibGluZyBBUlAgIg0KIAkJCSAgICAgICAi bW9uaXRvcmluZ1xuIiwNCi0JCQkgICAgICAgbWlpbW9uLCBhcnBfaW50ZXJ2 YWwpOw0KLQkJCWFycF9pbnRlcnZhbCA9IDA7DQorCQkJICAgICAgIHBhcmFt cy0+bWlpbW9uLCBwYXJhbXMtPmFycF9pbnRlcnZhbCk7DQorCQkJaWYgKGZv cmNlKSB7DQorCQkJCXByaW50ayhLRVJOX1dBUk5JTkcgRFJWX05BTUUNCisJ CQkJICAgICAgICI6IGRpc2FibGluZyBBUlAgbW9uaXRvcmluZ1xuIik7DQor CQkJCXBhcmFtcy0+YXJwX2ludGVydmFsID0gMDsNCisJCQl9IGVsc2Ugew0K KwkJCQlyZXR1cm4gLUVJTlZBTDsNCisJCQl9DQogCQl9DQogDQotCQlpZiAo KHVwZGVsYXkgJSBtaWltb24pICE9IDApIHsNCisJCWlmICgocGFyYW1zLT51 cGRlbGF5ICUgcGFyYW1zLT5taWltb24pICE9IDApIHsNCiAJCQlwcmludGso S0VSTl9XQVJOSU5HIERSVl9OQU1FDQogCQkJICAgICAgICI6IFdhcm5pbmc6 IHVwZGVsYXkgKCVkKSBpcyBub3QgYSBtdWx0aXBsZSAiDQogCQkJICAgICAg ICJvZiBtaWltb24gKCVkKSwgdXBkZWxheSByb3VuZGVkIHRvICVkIG1zXG4i LA0KLQkJCSAgICAgICB1cGRlbGF5LCBtaWltb24sICh1cGRlbGF5IC8gbWlp bW9uKSAqIG1paW1vbik7DQorCQkJICAgICAgIHBhcmFtcy0+dXBkZWxheSwg cGFyYW1zLT5taWltb24sDQorCQkJICAgICAgIChwYXJhbXMtPnVwZGVsYXkg LyBwYXJhbXMtPm1paW1vbikgKg0KKwkJCSAgICAgICAgcGFyYW1zLT5taWlt b24pOw0KIAkJfQ0KIA0KLQkJdXBkZWxheSAvPSBtaWltb247DQorCQlwYXJh bXMtPnVwZGVsYXkgLz0gcGFyYW1zLT5taWltb247DQogDQotCQlpZiAoKGRv d25kZWxheSAlIG1paW1vbikgIT0gMCkgew0KKwkJaWYgKChwYXJhbXMtPmRv d25kZWxheSAlIHBhcmFtcy0+bWlpbW9uKSAhPSAwKSB7DQogCQkJcHJpbnRr KEtFUk5fV0FSTklORyBEUlZfTkFNRQ0KIAkJCSAgICAgICAiOiBXYXJuaW5n OiBkb3duZGVsYXkgKCVkKSBpcyBub3QgYSBtdWx0aXBsZSAiDQogCQkJICAg ICAgICJvZiBtaWltb24gKCVkKSwgZG93bmRlbGF5IHJvdW5kZWQgdG8gJWQg bXNcbiIsDQotCQkJICAgICAgIGRvd25kZWxheSwgbWlpbW9uLA0KLQkJCSAg ICAgICAoZG93bmRlbGF5IC8gbWlpbW9uKSAqIG1paW1vbik7DQotCQl9DQot DQotCQlkb3duZGVsYXkgLz0gbWlpbW9uOw0KKwkJCSAgICAgICBwYXJhbXMt PmRvd25kZWxheSwgcGFyYW1zLT5taWltb24sDQorCQkJICAgICAgIChwYXJh bXMtPmRvd25kZWxheSAvIHBhcmFtcy0+bWlpbW9uKSAqDQorCQkJCXBhcmFt cy0+bWlpbW9uKTsNCiAJfQ0KIA0KLQlpZiAoYXJwX2ludGVydmFsIDwgMCkg ew0KLQkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQ0KLQkJICAgICAg ICI6IFdhcm5pbmc6IGFycF9pbnRlcnZhbCBtb2R1bGUgcGFyYW1ldGVyICgl ZCkgIg0KLQkJICAgICAgICIsIG5vdCBpbiByYW5nZSAwLSVkLCBzbyBpdCB3 YXMgcmVzZXQgdG8gJWRcbiIsDQotCQkgICAgICAgYXJwX2ludGVydmFsLCBJ TlRfTUFYLCBCT05EX0xJTktfQVJQX0lOVEVSVik7DQotCQlhcnBfaW50ZXJ2 YWwgPSBCT05EX0xJTktfQVJQX0lOVEVSVjsNCisJCXBhcmFtcy0+ZG93bmRl bGF5IC89IHBhcmFtcy0+bWlpbW9uOw0KIAl9DQogDQotCWZvciAoYXJwX2lw X2NvdW50ID0gMDsNCi0JICAgICAoYXJwX2lwX2NvdW50IDwgQk9ORF9NQVhf QVJQX1RBUkdFVFMpICYmIGFycF9pcF90YXJnZXRbYXJwX2lwX2NvdW50XTsN Ci0JICAgICBhcnBfaXBfY291bnQrKykgew0KLQkJLyogbm90IGNvbXBsZXRl IGNoZWNrLCBidXQgc2hvdWxkIGJlIGdvb2QgZW5vdWdoIHRvDQotCQkgICBj YXRjaCBtaXN0YWtlcyAqLw0KLQkJaWYgKCFpc2RpZ2l0KGFycF9pcF90YXJn ZXRbYXJwX2lwX2NvdW50XVswXSkpIHsNCi0JCQlwcmludGsoS0VSTl9XQVJO SU5HIERSVl9OQU1FDQotCQkJICAgICAgICI6IFdhcm5pbmc6IGJhZCBhcnBf aXBfdGFyZ2V0IG1vZHVsZSBwYXJhbWV0ZXIgIg0KLQkJCSAgICAgICAiKCVz KSwgQVJQIG1vbml0b3Jpbmcgd2lsbCBub3QgYmUgcGVyZm9ybWVkXG4iLA0K LQkJCSAgICAgICBhcnBfaXBfdGFyZ2V0W2FycF9pcF9jb3VudF0pOw0KLQkJ CWFycF9pbnRlcnZhbCA9IDA7DQotCQl9IGVsc2Ugew0KLQkJCXUzMiBpcCA9 IGluX2F0b24oYXJwX2lwX3RhcmdldFthcnBfaXBfY291bnRdKTsNCi0JCQlh cnBfdGFyZ2V0W2FycF9pcF9jb3VudF0gPSBpcDsNCi0JCX0NCi0JfQ0KLQ0K LQlpZiAoYXJwX2ludGVydmFsICYmICFhcnBfaXBfY291bnQpIHsNCi0JCS8q IGRvbid0IGFsbG93IGFycGluZyBpZiBubyBhcnBfaXBfdGFyZ2V0IGdpdmVu Li4uICovDQotCQlwcmludGsoS0VSTl9XQVJOSU5HIERSVl9OQU1FDQotCQkg ICAgICAgIjogV2FybmluZzogYXJwX2ludGVydmFsIG1vZHVsZSBwYXJhbWV0 ZXIgKCVkKSAiDQotCQkgICAgICAgInNwZWNpZmllZCB3aXRob3V0IHByb3Zp ZGluZyBhbiBhcnBfaXBfdGFyZ2V0ICINCi0JCSAgICAgICAicGFyYW1ldGVy LCBhcnBfaW50ZXJ2YWwgd2FzIHJlc2V0IHRvIDBcbiIsDQotCQkgICAgICAg YXJwX2ludGVydmFsKTsNCi0JCWFycF9pbnRlcnZhbCA9IDA7DQotCX0NCi0N Ci0JaWYgKG1paW1vbikgew0KKwlpZiAocGFyYW1zLT5taWltb24pIHsNCiAJ CXByaW50ayhLRVJOX0lORk8gRFJWX05BTUUNCiAJCSAgICAgICAiOiBNSUkg bGluayBtb25pdG9yaW5nIHNldCB0byAlZCBtc1xuIiwNCi0JCSAgICAgICBt aWltb24pOw0KLQl9IGVsc2UgaWYgKGFycF9pbnRlcnZhbCkgew0KLQkJaW50 IGk7DQotDQorCQkgICAgICAgcGFyYW1zLT5taWltb24pOw0KKwl9IGVsc2Ug aWYgKHBhcmFtcy0+YXJwX2ludGVydmFsKSB7DQogCQlwcmludGsoS0VSTl9J TkZPIERSVl9OQU1FDQotCQkgICAgICAgIjogQVJQIG1vbml0b3Jpbmcgc2V0 IHRvICVkIG1zIHdpdGggJWQgdGFyZ2V0KHMpOiIsDQotCQkgICAgICAgYXJw X2ludGVydmFsLCBhcnBfaXBfY291bnQpOw0KLQ0KLQkJZm9yIChpID0gMDsg aSA8IGFycF9pcF9jb3VudDsgaSsrKQ0KLQkJCXByaW50ayAoIiAlcyIsIGFy cF9pcF90YXJnZXRbaV0pOw0KLQ0KLQkJcHJpbnRrKCJcbiIpOw0KLQ0KKwkJ ICAgICAgICI6IEFSUCBtb25pdG9yaW5nIHNldCB0byAlZCBtc1xuIiwNCisJ CSAgICAgICBwYXJhbXMtPmFycF9pbnRlcnZhbCk7DQogCX0gZWxzZSB7DQog CQkvKiBtaWltb24gYW5kIGFycF9pbnRlcnZhbCBub3Qgc2V0LCB3ZSBuZWVk IG9uZSBzbyB0aGluZ3MNCiAJCSAqIHdvcmsgYXMgZXhwZWN0ZWQsIHNlZSBi b25kaW5nLnR4dCBmb3IgZGV0YWlscw0KQEAgLTQ1OTIsMTEzICs0OTQ0LDEx NyBAQA0KIAkJcHJpbnRrKEtFUk5fV0FSTklORyBEUlZfTkFNRQ0KIAkJICAg ICAgICI6IFdhcm5pbmc6IGVpdGhlciBtaWltb24gb3IgYXJwX2ludGVydmFs IGFuZCAiDQogCQkgICAgICAgImFycF9pcF90YXJnZXQgbW9kdWxlIHBhcmFt ZXRlcnMgbXVzdCBiZSBzcGVjaWZpZWQsICINCi0JCSAgICAgICAib3RoZXJ3 aXNlIGJvbmRpbmcgd2lsbCBub3QgZGV0ZWN0IGxpbmsgZmFpbHVyZXMhIHNl ZSAiDQorCQkgICAgICAgIm90aGVyd2lzZSBib25kaW5nIHdpbGwgbm90IGRl dGVjdCBsaW5rIGZhaWx1cmVzISBTZWUgIg0KIAkJICAgICAgICJib25kaW5n LnR4dCBmb3IgZGV0YWlscy5cbiIpOw0KIAl9DQogDQotCWlmIChwcmltYXJ5 ICYmICFVU0VTX1BSSU1BUlkoYm9uZF9tb2RlKSkgew0KKwlpZiAoKHBhcmFt cy0+cHJpbWFyeVswXSAhPSAnXDAnKSAmJiAhVVNFU19QUklNQVJZKHBhcmFt cy0+bW9kZSkpIHsNCiAJCS8qIGN1cnJlbnRseSwgdXNpbmcgYSBwcmltYXJ5 IG9ubHkgbWFrZXMgc2Vuc2UNCiAJCSAqIGluIGFjdGl2ZSBiYWNrdXAsIFRM QiBvciBBTEIgbW9kZXMNCiAJCSAqLw0KIAkJcHJpbnRrKEtFUk5fV0FSTklO RyBEUlZfTkFNRQ0KIAkJICAgICAgICI6IFdhcm5pbmc6ICVzIHByaW1hcnkg ZGV2aWNlIHNwZWNpZmllZCBidXQgaGFzIG5vICINCiAJCSAgICAgICAiZWZm ZWN0IGluICVzIG1vZGVcbiIsDQotCQkgICAgICAgcHJpbWFyeSwgYm9uZF9t b2RlX25hbWUoYm9uZF9tb2RlKSk7DQotCQlwcmltYXJ5ID0gTlVMTDsNCisJ CSAgICAgICBwYXJhbXMtPnByaW1hcnksIGJvbmRfbW9kZV9uYW1lKHBhcmFt cy0+bW9kZSkpOw0KKwkJaWYgKGZvcmNlKSB7DQorCQkJcHJpbnRrKEtFUk5f V0FSTklORyBEUlZfTkFNRQ0KKwkJCSAgICAgICAiOiBjbGVhcmluZyBwcmlt YXJ5IHBhcmFtXG4iKTsNCisJCQlwYXJhbXMtPnByaW1hcnlbMF0gPSAnXDAn Ow0KKwkJfSBlbHNlIHsNCisJCQlyZXR1cm4gLUVJTlZBTDsNCisJCX0NCiAJ fQ0KIA0KLQkvKiBmaWxsIHBhcmFtcyBzdHJ1Y3Qgd2l0aCB0aGUgcHJvcGVy IHZhbHVlcyAqLw0KLQlwYXJhbXMtPm1vZGUgPSBib25kX21vZGU7DQotCXBh cmFtcy0+bWlpbW9uID0gbWlpbW9uOw0KLQlwYXJhbXMtPmFycF9pbnRlcnZh bCA9IGFycF9pbnRlcnZhbDsNCi0JcGFyYW1zLT51cGRlbGF5ID0gdXBkZWxh eTsNCi0JcGFyYW1zLT5kb3duZGVsYXkgPSBkb3duZGVsYXk7DQotCXBhcmFt cy0+dXNlX2NhcnJpZXIgPSB1c2VfY2FycmllcjsNCi0JcGFyYW1zLT5sYWNw X2Zhc3QgPSBsYWNwX2Zhc3Q7DQotCXBhcmFtcy0+cHJpbWFyeVswXSA9IDA7 DQotDQotCWlmIChwcmltYXJ5KSB7DQotCQlzdHJuY3B5KHBhcmFtcy0+cHJp bWFyeSwgcHJpbWFyeSwgSUZOQU1TSVopOw0KLQkJcGFyYW1zLT5wcmltYXJ5 W0lGTkFNU0laIC0gMV0gPSAwOw0KKwlpZiAoIXBhcmFtcy0+YXJwX2ludGVy dmFsICYmIHBhcmFtcy0+YXJwX3RhcmdldHNbMF0pIHsNCisJCXByaW50ayhL RVJOX1dBUk5JTkcgRFJWX05BTUUNCisJCSAgICAgICAiOiBXYXJuaW5nOiBh cnBfaXBfdGFyZ2V0cyBzcGVjaWZpZWQgd2l0aCAiDQorCQkgICAgICAgImFy cF9pbnRlcnZhbCBkaXNhYmxlZCwgc28gaXQgaGFzIG5vIGVmZmVjdFxuIik7 DQorCQltZW1zZXQocGFyYW1zLT5hcnBfdGFyZ2V0cywgMCwgc2l6ZW9mKHBh cmFtcy0+YXJwX3RhcmdldHMpKTsNCiAJfQ0KIA0KLQltZW1jcHkocGFyYW1z LT5hcnBfdGFyZ2V0cywgYXJwX3RhcmdldCwgc2l6ZW9mKGFycF90YXJnZXQp KTsNCisgICAgICAgIGlmIChwYXJhbXMtPm1vZGUgPT0gQk9ORF9NT0RFX0FM Qikgew0KKwkJcHJpbnRrKEtFUk5fTk9USUNFIERSVl9OQU1FDQorCQkgICAg ICAgIjogSW4gQUxCIG1vZGUgeW91IG1pZ2h0IGV4cGVyaWVuY2UgY2xpZW50 ICINCisJCSAgICAgICAiZGlzY29ubmVjdGlvbnMgdXBvbiByZWNvbm5lY3Rp b24gb2YgYSBsaW5rIGlmIHRoZSAiDQorCQkgICAgICAgImJvbmRpbmcgbW9k dWxlIHVwZGVsYXkgcGFyYW1ldGVyICglZCBtc2VjKSBpcyAiDQorCQkgICAg ICAgImluY29tcGF0aWJsZSB3aXRoIHRoZSBmb3J3YXJkaW5nIGRlbGF5IHRp bWUgb2YgdGhlICINCisJCSAgICAgICAic3dpdGNoXG4iLA0KKwkJICAgICAg IHBhcmFtcy0+dXBkZWxheSAqIHBhcmFtcy0+bWlpbW9uKTsNCisJfQ0KIA0K IAlyZXR1cm4gMDsNCiB9DQogDQogc3RhdGljIGludCBfX2luaXQgYm9uZGlu Z19pbml0KHZvaWQpDQogew0KLQlzdHJ1Y3QgYm9uZF9wYXJhbXMgcGFyYW1z Ow0KIAlpbnQgaTsNCi0JaW50IHJlczsNCisJaW50IHJlcyA9IDA7DQorICAg ICAgICBjaGFyIG5ld19ib25kX25hbWVbOF07ICAvLyBFbm91Z2ggcm9vbSBm b3IgOTk5IGJvbmRzIGF0IGluaXQuDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBTaG91bGQgYmUgZW5vdWdoLi4uDQogDQogCXByaW50 ayhLRVJOX0lORk8gIiVzIiwgdmVyc2lvbik7DQorCQ0KKwlpZiAobWF4X2Jv bmRzIDwgQk9ORF9ERUZBVUxUX01BWF9CT05EUyB8fCBtYXhfYm9uZHMgPiAo Qk9ORF9NQVhfVU5JVFMrMSkpIHsNCisJCXByaW50ayhLRVJOX1dBUk5JTkcg RFJWX05BTUUNCisJCSAgICAgICAiOiBXYXJuaW5nOiBtYXhfYm9uZHMgKCVk KSBub3QgaW4gcmFuZ2UgJWQtJWQsIHNvIGl0ICINCisJCSAgICAgICAid2Fz IHJlc2V0IHRvICglZClcbiIsDQorCQkgICAgICAgbWF4X2JvbmRzLCBCT05E X0RFRkFVTFRfTUFYX0JPTkRTLChCT05EX01BWF9VTklUUysxKSwgQk9ORF9E RUZBVUxUX01BWF9CT05EUyk7DQorCQltYXhfYm9uZHMgPSBCT05EX0RFRkFV TFRfTUFYX0JPTkRTOw0KKwl9DQogDQotCXJlcyA9IGJvbmRfY2hlY2tfcGFy YW1zKCZwYXJhbXMpOw0KLQlpZiAocmVzKSB7DQorCXJlcyA9IGJvbmRfY2hl Y2tfYXJwX3BhcmFtcygpOw0KKwlpZiAocmVzIDwgMCkgew0KIAkJcmV0dXJu IHJlczsNCiAJfQ0KIA0KIAlydG5sX2xvY2soKTsNCiANCiAjaWZkZWYgQ09O RklHX1BST0NfRlMNCi0JYm9uZF9jcmVhdGVfcHJvY19kaXIoKTsNCisJcmVz ID0gYm9uZF9jcmVhdGVfcHJvY19kaXIoKTsNCisJaWYgKHJlcyA8IDApIHsN CisJCXJ0bmxfdW5sb2NrKCk7DQorCQlyZXR1cm4gcmVzOw0KKwl9DQogI2Vu ZGlmDQogDQogCWZvciAoaSA9IDA7IGkgPCBtYXhfYm9uZHM7IGkrKykgew0K LQkJc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2Ow0KLQ0KLQkJYm9uZF9k ZXYgPSBhbGxvY19uZXRkZXYoc2l6ZW9mKHN0cnVjdCBib25kaW5nKSwgIiIs IGV0aGVyX3NldHVwKTsNCi0JCWlmICghYm9uZF9kZXYpIHsNCi0JCQlyZXMg PSAtRU5PTUVNOw0KLQkJCWdvdG8gb3V0X2VycjsNCi0JCX0NCi0NCi0JCXJl cyA9IGRldl9hbGxvY19uYW1lKGJvbmRfZGV2LCAiYm9uZCVkIik7DQotCQlp ZiAocmVzIDwgMCkgew0KLQkJCWZyZWVfbmV0ZGV2KGJvbmRfZGV2KTsNCi0J CQlnb3RvIG91dF9lcnI7DQotCQl9DQorCQlzdHJ1Y3QgYm9uZF9wYXJhbXMg cGFyYW1zOw0KKyAgICAgICAgICAgICAgICBzcHJpbnRmKG5ld19ib25kX25h bWUsICJib25kJWQiLGkpOyAgDQorICAgICAgICAgICAgICAgDQorCQlib25k X2ZpbGxfaW5zbW9kX3BhcmFtcygmcGFyYW1zLCBpKTsNCiANCi0JCS8qIGJv bmRfaW5pdCgpIG11c3QgYmUgY2FsbGVkIGFmdGVyIGRldl9hbGxvY19uYW1l KCkgKGZvciB0aGUNCi0JCSAqIC9wcm9jIGZpbGVzKSwgYnV0IGJlZm9yZSBy ZWdpc3Rlcl9uZXRkZXZpY2UoKSwgYmVjYXVzZSB3ZQ0KLQkJICogbmVlZCB0 byBzZXQgZnVuY3Rpb24gcG9pbnRlcnMuDQotCQkgKi8NCi0JCXJlcyA9IGJv bmRfaW5pdChib25kX2RldiwgJnBhcmFtcyk7DQorCQlyZXMgPSBib25kX2No ZWNrX3BhcmFtcygmcGFyYW1zLCAxKTsNCiAJCWlmIChyZXMgPCAwKSB7DQot CQkJZnJlZV9uZXRkZXYoYm9uZF9kZXYpOw0KLQkJCWdvdG8gb3V0X2VycjsN CisJCQlnb3RvIGVycjsNCiAJCX0NCiANCi0JCVNFVF9NT0RVTEVfT1dORVIo Ym9uZF9kZXYpOw0KLQ0KLQkJcmVzID0gcmVnaXN0ZXJfbmV0ZGV2aWNlKGJv bmRfZGV2KTsNCisJCXJlcyA9IGJvbmRfY3JlYXRlKG5ld19ib25kX25hbWUs JnBhcmFtcywgTlVMTCk7DQogCQlpZiAocmVzIDwgMCkgew0KLQkJCWJvbmRf ZGVpbml0KGJvbmRfZGV2KTsNCi0JCQlmcmVlX25ldGRldihib25kX2Rldik7 DQotCQkJZ290byBvdXRfZXJyOw0KKwkJCWdvdG8gZXJyOw0KIAkJfQ0KIAl9 DQogDQogCXJ0bmxfdW5sb2NrKCk7DQorDQogCXJlZ2lzdGVyX25ldGRldmlj ZV9ub3RpZmllcigmYm9uZF9uZXRkZXZfbm90aWZpZXIpOw0KIA0KIAlyZXR1 cm4gMDsNCiANCi1vdXRfZXJyOg0KLQkvKiBmcmVlIGFuZCB1bnJlZ2lzdGVy IGFsbCBib25kcyB0aGF0IHdlcmUgc3VjY2Vzc2Z1bGx5IGFkZGVkICovDQor ZXJyOg0KKwkvKiBmcmVlIGFuZCB1bnJlZ2lzdGVyIGFsbCBib25kcyB0aGF0 IHdlcmUNCisJICogc3VjY2Vzc2Z1bGx5IGFkZGVkLg0KKwkgKi8NCisJcnRu bF91bmxvY2soKTsgICAvKiBub3RlOiB0aGlzIGhhcyB0byBiZSBkb25lIHRv IGNvbXBsZXRlDQorCQkJICAqIG5ldF9kZXYgcmVnaXN0ZXJhdGlvbiAqLw0K KwlydG5sX2xvY2soKTsgICANCiAJYm9uZF9mcmVlX2FsbCgpOw0KLQ0KLQly dG5sX3VubG9jaygpOw0KLQ0KKwlydG5sX3VubG9jaygpOyAgIA0KIAlyZXR1 cm4gcmVzOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBfX2V4aXQgYm9uZGluZ19l eGl0KHZvaWQpDQogew0KIAl1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmll cigmYm9uZF9uZXRkZXZfbm90aWZpZXIpOw0KLQ0KIAlydG5sX2xvY2soKTsN CiAJYm9uZF9mcmVlX2FsbCgpOw0KIAlydG5sX3VubG9jaygpOw0KZGlmZiAt dXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNi4xMS1yYzF2YW5pbGxhL2luY2x1 ZGUvbGludXgvaWZfYm9uZGluZy5oIGxpbnV4LTIuNi4xMS1yYzEvaW5jbHVk ZS9saW51eC9pZl9ib25kaW5nLmgNCi0tLSBsaW51eC0yLjYuMTEtcmMxdmFu aWxsYS9pbmNsdWRlL2xpbnV4L2lmX2JvbmRpbmcuaAkyMDA1LTAxLTEzIDEy OjM5OjU0LjAwMDAwMDAwMCAtMDgwMA0KKysrIGxpbnV4LTIuNi4xMS1yYzEv aW5jbHVkZS9saW51eC9pZl9ib25kaW5nLmgJMjAwNS0wMS0xMyAxMjo0Mjoy Ni4wMDAwMDAwMDAgLTA4MDANCkBAIC02MCwxMyArNjAsMTcgQEANCiANCiAj ZGVmaW5lIEJPTkRfQ0hFQ0tfTUlJX1NUQVRVUwkoU0lPQ0dNSUlQSFkpDQog DQotI2RlZmluZSBCT05EX01PREVfUk9VTkRST0JJTgkwDQotI2RlZmluZSBC T05EX01PREVfQUNUSVZFQkFDS1VQCTENCi0jZGVmaW5lIEJPTkRfTU9ERV9Y T1IJCTINCi0jZGVmaW5lIEJPTkRfTU9ERV9CUk9BRENBU1QJMw0KLSNkZWZp bmUgQk9ORF9NT0RFXzgwMjNBRCAgICAgICAgNA0KLSNkZWZpbmUgQk9ORF9N T0RFX1RMQiAgICAgICAgICAgNQ0KLSNkZWZpbmUgQk9ORF9NT0RFX0FMQgkJ NiAvKiBUTEIgKyBSTEIgKHJlY2VpdmUgbG9hZCBiYWxhbmNpbmcpICovDQor ZW51bSB7DQorCUJPTkRfTU9ERV9ST1VORFJPQklOCT0gMCwNCisJQk9ORF9N T0RFX0FDVElWRUJBQ0tVUAk9IDEsDQorCUJPTkRfTU9ERV9YT1IJCT0gMiwN CisJQk9ORF9NT0RFX0JST0FEQ0FTVAk9IDMsDQorCUJPTkRfTU9ERV84MDIz QUQgICAgICAgID0gNCwNCisJQk9ORF9NT0RFX1RMQiAgICAgICAgICAgPSA1 LA0KKwlCT05EX01PREVfQUxCCQk9IDYsIC8qIFRMQiArIFJMQiAocmVjZWl2 ZSBsb2FkIGJhbGFuY2luZykgKi8NCisNCisJQk9ORF9NT0RFX01BWCAvKiBt dXN0IGJlIGxhc3QgZW50cnkgKi8NCit9Ow0KIA0KIC8qIGVhY2ggc2xhdmUn cyBsaW5rIGhhcyA0IHN0YXRlcyAqLw0KICNkZWZpbmUgQk9ORF9MSU5LX1VQ ICAgIDAgICAgICAgICAgIC8qIGxpbmsgaXMgdXAgYW5kIHJ1bm5pbmcgKi8N CkBAIC03OCw3ICs4MiwxMyBAQA0KICNkZWZpbmUgQk9ORF9TVEFURV9BQ1RJ VkUgICAgICAgMCAgIC8qIGxpbmsgaXMgYWN0aXZlICovDQogI2RlZmluZSBC T05EX1NUQVRFX0JBQ0tVUCAgICAgICAxICAgLyogbGluayBpcyBiYWNrdXAg Ki8NCiANCi0jZGVmaW5lIEJPTkRfREVGQVVMVF9NQVhfQk9ORFMgIDEgICAv KiBEZWZhdWx0IG1heGltdW0gbnVtYmVyIG9mIGRldmljZXMgdG8gc3VwcG9y dCAqLw0KKy8vI2RlZmluZSBCT05EX0RFRkFVTFRfTUFYX0JPTkRTICAxICAg LyogRGVmYXVsdCBtYXhpbXVtIG51bWJlciBvZiBkZXZpY2VzIHRvIHN1cHBv cnQgKi8NCitlbnVtIHsNCisJQk9ORF8zQURfTEFDUF9TTE9XICA9IDAsDQor CUJPTkRfM0FEX0xBQ1BfRkFTVCAgPSAxLA0KKw0KKwlCT05EXzNBRF9MQUNQ X01BWCAvKiBtdXN0IGJlIGxhc3QgZW50cnkgKi8NCit9Ow0KIA0KIHR5cGVk ZWYgc3RydWN0IGlmYm9uZCB7DQogCV9fczMyIGJvbmRfbW9kZTsNCg== --8323328-492798474-1105662337=:18693 Content-Type: TEXT/plain; charset=US-ASCII; name="bond-patch-2.7.0-bonding.txt" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: bond-patch-2.7.0-bonding.txt Content-Disposition: attachment; filename="bond-patch-2.7.0-bonding.txt" ZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNi4xMS1yYzEvRG9jdW1l bnRhdGlvbi9uZXR3b3JraW5nL2JvbmRpbmcudHh0IGxpbnV4LTIuNi4xMS1y YzFnb2xkL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9ib25kaW5nLnR4dA0K LS0tIGxpbnV4LTIuNi4xMS1yYzEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5n L2JvbmRpbmcudHh0CTIwMDQtMTItMjQgMTM6MzQ6MjkuMDAwMDAwMDAwIC0w ODAwDQorKysgbGludXgtMi42LjExLXJjMWdvbGQvRG9jdW1lbnRhdGlvbi9u ZXR3b3JraW5nL2JvbmRpbmcudHh0CTIwMDUtMDEtMTMgMTQ6MTU6NTYuMDAw MDAwMDAwIC0wODAwDQpAQCAtNDEsMjEgKzQxLDE3IEBADQogDQogMSkgQnVp bGQga2VybmVsIHdpdGggdGhlIGJvbmRpbmcgZHJpdmVyDQogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotRm9yIHRoZSBsYXRl c3QgdmVyc2lvbiBvZiB0aGUgYm9uZGluZyBkcml2ZXIsIHVzZSBrZXJuZWwg Mi40LjEyIG9yIGFib3ZlDQotKG90aGVyd2lzZSB5b3Ugd2lsbCBuZWVkIHRv IGFwcGx5IGEgcGF0Y2gpLg0KLQ0KIENvbmZpZ3VyZSBrZXJuZWwgd2l0aCBg bWFrZSBtZW51Y29uZmlnL3hjb25maWcvY29uZmlnJywgYW5kIHNlbGVjdCAi Qm9uZGluZw0KIGRyaXZlciBzdXBwb3J0IiBpbiB0aGUgIk5ldHdvcmsgZGV2 aWNlIHN1cHBvcnQiIHNlY3Rpb24uIEl0IGlzIHJlY29tbWVuZGVkDQotdG8g Y29uZmlndXJlIHRoZSBkcml2ZXIgYXMgbW9kdWxlIHNpbmNlIGl0IGlzIGN1 cnJlbnRseSB0aGUgb25seSB3YXkgdG8NCi1wYXNzIHBhcmFtZXRlcnMgdG8g dGhlIGRyaXZlciBhbmQgY29uZmlndXJlIG1vcmUgdGhhbiBvbmUgYm9uZGlu ZyBkZXZpY2UuDQordG8gY29uZmlndXJlIHRoZSBkcml2ZXIgYXMgbW9kdWxl Lg0KIA0KIEJ1aWxkIGFuZCBpbnN0YWxsIHRoZSBuZXcga2VybmVsIGFuZCBt b2R1bGVzLg0KIA0KIDIpIEdldCBhbmQgaW5zdGFsbCB0aGUgdXNlcnNwYWNl IHRvb2xzDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCi1UaGlzIHZlcnNpb24gb2YgdGhlIGJvbmRpbmcgZHJpdmVyIHJlcXVp cmVzIHVwZGF0ZWQgaWZlbnNsYXZlIHByb2dyYW0uIFRoZQ0KK1RoaXMgdmVy c2lvbiBvZiB0aGUgYm9uZGluZyBkcml2ZXIgcmVxdWlyZXMgYW4gdXBkYXRl ZCBpZmVuc2xhdmUgcHJvZ3JhbS4gVGhlDQogb3JpZ2luYWwgb25lIGZyb20g ZXh0cmVtZS1saW51eCBhbmQgYmVvd3VsZiB3aWxsIG5vdCB3b3JrLiBLZXJu ZWxzIDIuNC4xMg0KLWFuZCBhYm92ZSBpbmNsdWRlIHRoZSB1cGRhdGVkIHZl cnNpb24gb2YgaWZlbnNsYXZlLmMgaW4NCithbmQgYWJvdmUgaW5jbHVkZSB0 aGUgdXBkYXRlZCB2ZXJzaW9uIG9mIGlmZW5zbGF2ZS5jIGluIA0KIERvY3Vt ZW50YXRpb24vbmV0d29ya2luZyBkaXJlY3RvcnkuIEZvciBvbGRlciBrZXJu ZWxzLCBwbGVhc2UgZm9sbG93IHRoZQ0KIGxpbmtzIGF0IHRoZSBlbmQgb2Yg dGhpcyBmaWxlLg0KIA0KQEAgLTE5NSw5ICsxOTEsOSBAQA0KIGlzIHJlY29t bWVuZGVkICJ0YWlsIC1mIC92YXIvbG9nL21lc3NhZ2VzIiBiZSBydW4gaW4g YSBzZXBhcmF0ZSB3aW5kb3cgdG8NCiB3YXRjaCBmb3IgYm9uZGluZyBkcml2 ZXIgZXJyb3IgbWVzc2FnZXMuDQogDQotSXQgaXMgY3JpdGljYWwgdGhhdCBl aXRoZXIgdGhlIG1paW1vbiBvciBhcnBfaW50ZXJ2YWwgYW5kIGFycF9pcF90 YXJnZXQNCi1wYXJhbWV0ZXJzIGJlIHNwZWNpZmllZCwgb3RoZXJ3aXNlIHNl cmlvdXMgbmV0d29yayBkZWdyYWRhdGlvbiB3aWxsIG9jY3VyDQotZHVyaW5n IGxpbmsgZmFpbHVyZXMuDQorSXQgaXMgY3JpdGljYWwgdGhhdCBlaXRoZXIg dGhlIG1paW1vbiBvciBhcnBfaW50ZXJ2YWwgYW5kIGFycF9pcF9jb3VudCwg DQorYXJwX2lwX3RhcmdldCBwYXJhbWV0ZXJzIGJlIHNwZWNpZmllZCBmb3Ig ZWFjaCBib25kIGludGVyZmFjZSwgb3RoZXJ3aXNlIA0KK3NlcmlvdXMgbmV0 d29yayBkZWdyYWRhdGlvbiB3aWxsIG9jY3VyIGR1cmluZyBsaW5rIGZhaWx1 cmVzLg0KIA0KIGFycF9pbnRlcnZhbA0KIA0KQEAgLTIwNiwxOSArMjAyLDMw IEBADQogICAgICAgICBzd2l0Y2ggc2hvdWxkIGJlIGNvbmZpZ3VyZWQgaW4g YSBtb2RlIHRoYXQgZXZlbmx5IGRpc3RyaWJ1dGVzIHBhY2tldHMNCiAgICAg ICAgIGFjcm9zcyBhbGwgbGlua3MgLSBzdWNoIGFzIHJvdW5kLXJvYmluLiBJ ZiB0aGUgc3dpdGNoIGlzIGNvbmZpZ3VyZWQgdG8NCiAgICAgICAgIGRpc3Ry aWJ1dGUgdGhlIHBhY2tldHMgaW4gYW4gWE9SIGZhc2hpb24sIGFsbCByZXBs aWVzIGZyb20gdGhlIEFSUA0KLSAgICAgICAgdGFyZ2V0cyB3aWxsIGJlIHJl Y2VpdmVkIG9uIHRoZSBzYW1lIGxpbmsgd2hpY2ggY291bGQgY2F1c2UgdGhl IG90aGVyDQorICAgICAgICB0YXJnZXRzIHdpbGwgYmUgcmVjZWl2ZWQgb24g dGhlIHNhbWUgbGluaywgd2hpY2ggY291bGQgY2F1c2UgdGhlIG90aGVyDQog ICAgICAgICB0ZWFtIG1lbWJlcnMgdG8gZmFpbC4gQVJQIG1vbml0b3Jpbmcg c2hvdWxkIG5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uDQogICAgICAgICB3 aXRoIG1paW1vbi4gQSB2YWx1ZSBvZiAwIGRpc2FibGVzIEFSUCBtb25pdG9y aW5nLiBUaGUgZGVmYXVsdCB2YWx1ZQ0KLSAgICAgICAgaXMgMC4NCisgICAg ICAgIGlzIDAuIFNpbmNlIE1JSSBtb25pdG9yaW5nIGlzIHByZWZlcnJlZCBv dmVyIEFSUCBtb25pdG9yaW5nIGluIA0KKyAgICAgICAgODAyLjNhZCg0KSwg VExCKDUpIGFuZCBBTEIoNikgbW9kZXMgaWYgc3BlY2lmaWVkIGFycF9pbnRl cnZhbCB3aWxsIGJlIA0KKyAgICAgICAgZGlzYWJsZWQgaW4gdGhlc2UgbW9k ZXMuDQogDQogYXJwX2lwX3RhcmdldA0KIA0KLQlTcGVjaWZpZXMgdGhlIGlw IGFkZHJlc3NlcyB0byB1c2Ugd2hlbiBhcnBfaW50ZXJ2YWwgaXMgPiAwLiBU aGVzZQ0KKwlTcGVjaWZpZXMgdGhlIElQIGFkZHJlc3NlcyB0byB1c2Ugd2hl biBhcnBfaW50ZXJ2YWwgaXMgPiAwLiBUaGVzZQ0KIAlhcmUgdGhlIHRhcmdl dHMgb2YgdGhlIEFSUCByZXF1ZXN0IHNlbnQgdG8gZGV0ZXJtaW5lIHRoZSBo ZWFsdGggb2YNCiAJdGhlIGxpbmsgdG8gdGhlIHRhcmdldHMuIFNwZWNpZnkg dGhlc2UgdmFsdWVzIGluIGRkZC5kZGQuZGRkLmRkZA0KLQlmb3JtYXQuIE11 bHRpcGxlIGlwIGFkcmVzc2VzIG11c3QgYmUgc2VwZXJhdGVkIGJ5IGEgY29t bWEuIEF0IGxlYXN0DQotCW9uZSBpcCBhZGRyZXNzIG5lZWRzIHRvIGJlIGdp dmVuIGZvciBBUlAgbW9uaXRvcmluZyB0byB3b3JrLiBUaGUNCi0JbWF4aW11 bSBudW1iZXIgb2YgdGFyZ2V0cyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaXMg c2V0IGF0IDE2Lg0KKwlmb3JtYXQuIE11bHRpcGxlIElQIGFkZHJlc3NlcyBt dXN0IGJlIHNlcGFyYXRlZCBieSBhIGNvbW1hLiBBdCBsZWFzdA0KKwlvbmUg SVAgYWRkcmVzcyBuZWVkcyB0byBiZSBnaXZlbiBmb3IgQVJQIG1vbml0b3Jp bmcgdG8gd29yay4gVGhlDQorCW1heGltdW0gbnVtYmVyIG9mIHRhcmdldHMg dGhhdCBjYW4gYmUgc3BlY2lmaWVkIGlzIHNldCBhdCA2NCBmb3IgYWxsDQor ICAgICAgICBib25kIGRldmljZXMgYW5kIDE2IGZvciBlYWNoIGJvbmQgZGV2 aWNlLiANCisNCithcnBfaXBfY291bnQNCisgICAgICAgIA0KKyAgICAgICAg RGV0ZXJtaW5lcyBob3cgbWFueSBhcnAgaXAgdGFyZ2V0cyBzcGVjaWZpZWQg aW4gdGhlIGFycF9pcF90YXJnZXQgDQorICAgICAgICBsaXN0IGFib3ZlIGJl bG9uZyB0byBlYWNoIGJvbmQgZGV2aWNlIHdoZW4gc2V2ZXJhbCBib25kaW5n IGludGVyZmFjZXMgDQorICAgICAgICBhcmUgYmVpbmcgY3JlYXRlZC4gSWYg YXJwX2lwX2NvdW50IGlzIG5vdCBzcGVjaWZpZWQgZm9yIGFueSBib25kIGRl dmljZSwgDQorICAgICAgICBhbGwgYXJwX2lwX3RhcmdldHMgZ28gdG8gdGhl IGZpcnN0IGRldmljZSB0byBwcmVzZXJ2ZSBiYWNrd2FyZCANCisJY29tcGF0 aWJpbGl0eS4gQm9uZGluZyB2ZXJzaW9uIDIuNyBhbmQgYWJvdmUgc3VwcG9y dCB0aGlzIHBhcmFtZXRlci4NCiANCiBkb3duZGVsYXkNCiANCkBAIC0yNDYs MTAgKzI1MywxMiBAQA0KIA0KIG1paW1vbg0KIA0KLSAgICAgICAgU3BlY2lm aWVzIHRoZSBmcmVxdWVuY3kgaW4gbWlsbGktc2Vjb25kcyB0aGF0IE1JSSBs aW5rIG1vbml0b3JpbmcNCisJU3BlY2lmaWVzIHRoZSBmcmVxdWVuY3kgaW4g bWlsbGktc2Vjb25kcyB0aGF0IE1JSSBsaW5rIG1vbml0b3JpbmcNCiAgICAg ICAgIHdpbGwgb2NjdXIuIEEgdmFsdWUgb2YgemVybyBkaXNhYmxlcyBNSUkg bGluayBtb25pdG9yaW5nLiBBIHZhbHVlDQogICAgICAgICBvZiAxMDAgaXMg YSBnb29kIHN0YXJ0aW5nIHBvaW50LiBTZWUgSGlnaCBBdmFpbGFiaWxpdHkg c2VjdGlvbiBmb3INCi0gICAgICAgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24u IFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAuDQorICAgICAgICBhZGRpdGlvbmFs IGluZm9ybWF0aW9uLiBJZiBub3Qgc3BlY2lmaWVkIE1JSSBsaW5rIG1vbml0 b3JpbmcgaXMNCisJZW5hYmxlZCB0byAxMDAgbXMgaW4gODAyLjNhZCg0KSwg VExCKDUpIGFuZCBBTEIoNikgbW9kZXMuIEZvciBhbGwNCisgICAgICAgIG90 aGVyIG1vZGVzIHRoZSBkZWZhdWx0IGlzIDAuDQogDQogbW9kZQ0KIA0KQEAg LTMzNyw3ICszNDYsNyBAQA0KIAkJcmVxdWVzdCBpcyBicm9hZGNhc3RlZCBp dCB1c2VzIHRoZSBodyBhZGRyZXNzIG9mIHRoZQ0KIAkJYm9uZC4gSGVuY2Us IGNsaWVudHMgbGVhcm4gdGhlIGh3IGFkZHJlc3Mgb2YgdGhlIGJvbmQgYW5k DQogCQl0aGUgYmFsYW5jaW5nIG9mIHJlY2VpdmUgdHJhZmZpYyBjb2xsYXBz ZXMgdG8gdGhlIGN1cnJlbnQNCi0JCXNhbHZlLiBUaGlzIGlzIGhhbmRsZWQg Ynkgc2VuZGluZyB1cGRhdGVzIChBUlAgUmVwbGllcykgdG8NCisJCXNsYXZl LiBUaGlzIGlzIGhhbmRsZWQgYnkgc2VuZGluZyB1cGRhdGVzIChBUlAgUmVw bGllcykgdG8NCiAJCWFsbCB0aGUgY2xpZW50cyB3aXRoIHRoZWlyIGFzc2ln bmVkIGh3IGFkZHJlc3Mgc3VjaCB0aGF0DQogCQl0aGUgdHJhZmZpYyBpcyBy ZWRpc3RyaWJ1dGVkLiBSZWNlaXZlIHRyYWZmaWMgaXMgYWxzbw0KIAkJcmVk aXN0cmlidXRlZCB3aGVuIGEgbmV3IHNsYXZlIGlzIGFkZGVkIHRvIHRoZSBi b25kIGFuZA0KQEAgLTM0Nyw3ICszNTYsNyBAQA0KIA0KIAkJV2hlbiBhIGxp bmsgaXMgcmVjb25uZWN0ZWQgb3IgYSBuZXcgc2xhdmUgam9pbnMgdGhlIGJv bmQNCiAJCXRoZSByZWNlaXZlIHRyYWZmaWMgaXMgcmVkaXN0cmlidXRlZCBh bW9uZyBhbGwgYWN0aXZlDQotCQlzbGF2ZXMgaW4gdGhlIGJvbmQgYnkgaW50 aWF0aW5nIEFSUCBSZXBsaWVzIHdpdGggdGhlDQorCQlzbGF2ZXMgaW4gdGhl IGJvbmQgYnkgaW5pdGlhdGluZyBBUlAgUmVwbGllcyB3aXRoIHRoZQ0KIAkJ c2VsZWN0ZWQgbWFjIGFkZHJlc3MgdG8gZWFjaCBvZiB0aGUgY2xpZW50cy4g VGhlIHVwZGVsYXkNCiAJCW1vZGVwcm9iZSBwYXJhbWV0ZXIgbXVzdCBiZSBz ZXQgdG8gYSB2YWx1ZSBlcXVhbCBvciBncmVhdGVyDQogCQl0aGFuIHRoZSBz d2l0Y2gncyBmb3J3YXJkaW5nIGRlbGF5IHNvIHRoYXQgdGhlIEFSUCBSZXBs aWVzDQpAQCAtMzc4LDcgKzM4Nyw3IEBADQogICAgICAgICAxMDBNYnBzLiBJ ZiB0aGUgMTAwME1icHMgc2xhdmUgZmFpbHMgYW5kIGlzIGxhdGVyIHJlc3Rv cmVkLCBpdCBtYXkNCiAgICAgICAgIGJlIHByZWZlcnJlZCB0aGUgZmFzdGVy IHNsYXZlIGdyYWNlZnVsbHkgYmVjb21lIHRoZSBhY3RpdmUgc2xhdmUgLQ0K ICAgICAgICAgd2l0aG91dCBkZWxpYmVyYXRlbHkgZmFpbGluZyB0aGUgMTAw TWJwcyBzbGF2ZS4gU3BlY2lmeWluZyBhDQotICAgICAgICBwcmltYXJ5IGlz IG9ubHkgdmFsaWQgaW4gYWN0aXZlLWJhY2t1cCBtb2RlLg0KKyAgICAgICAg cHJpbWFyeSBpcyBvbmx5IHZhbGlkIGluIGFjdGl2ZS1iYWNrdXAsIEFMQiBh bmQgVExCIG1vZGUuDQogDQogdXBkZWxheQ0KIA0KQEAgLTQxMSwyMyArNDIw LDUwIEBADQogQ29uZmlndXJpbmcgTXVsdGlwbGUgQm9uZHMNCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KIA0KLUlmIHNldmVyYWwgYm9uZGluZyBp bnRlcmZhY2VzIGFyZSByZXF1aXJlZCwgZWl0aGVyIHNwZWNpZnkgdGhlIG1h eF9ib25kcw0KLXBhcmFtZXRlciAoZGVzY3JpYmVkIGFib3ZlKSwgb3IgbG9h ZCB0aGUgZHJpdmVyIG11bHRpcGxlIHRpbWVzLiAgVXNpbmcNCi10aGUgbWF4 X2JvbmRzIHBhcmFtZXRlciBpcyBsZXNzIGNvbXBsaWNhdGVkLCBidXQgaGFz IHRoZSBsaW1pdGF0aW9uIHRoYXQNCi1hbGwgYm9uZGluZyBpbnN0YW5jZXMg Y3JlYXRlZCB3aWxsIGhhdmUgdGhlIHNhbWUgb3B0aW9ucy4gIExvYWRpbmcg dGhlDQotZHJpdmVyIG11bHRpcGxlIHRpbWVzIGFsbG93cyBlYWNoIGluc3Rh bmNlIG9mIHRoZSBkcml2ZXIgdG8gaGF2ZSBkaWZmZXJpbmcNCi1vcHRpb25z Lg0KK0lmIHNldmVyYWwgYm9uZGluZyBpbnRlcmZhY2VzIGFyZSByZXF1aXJl ZCwgc3BlY2lmeSB0aGUgbWF4X2JvbmRzDQorcGFyYW1ldGVyIChkZXNjcmli ZWQgYWJvdmUuIEJvbmRpbmcgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IG9w dGlvbnMgDQorY2FuIGJlIGNyZWF0ZWQgYnkgc3BlY2lmaXlpbmcgcmVxdWly ZWQgb3B0aW9ucyBvbiB0aGUgY29tbWFuZCBsaW5lIA0KKyhzZWUgZXhhbXBs ZXMgYmVsb3cpLiANCiANCiBGb3IgZXhhbXBsZSwgdG8gY29uZmlndXJlIHR3 byBib25kaW5nIGludGVyZmFjZXMsIG9uZSB3aXRoIG1paSBsaW5rDQogbW9u aXRvcmluZyBwZXJmb3JtZWQgZXZlcnkgMTAwIG1pbGxpc2Vjb25kcywgYW5k IG9uZSB3aXRoIEFSUCBsaW5rDQotbW9uaXRvcmluZyBwZXJmb3JtZWQgZXZl cnkgMjAwIG1pbGxpc2Vjb25kcywgdGhlIC9ldGMvY29uZi5tb2R1bGVzIHNo b3VsZA0KLXJlc2VtYmxlIHRoZSBmb2xsb3dpbmc6DQorbW9uaXRvcmluZyBw ZXJmb3JtZWQgZXZlcnkgMjAwIG1pbGxpc2Vjb25kcywgdGhlIC9ldGMvbW9k cHJvYmUuY29uZiANCitzaG91bGQgcmVzZW1ibGUgdGhlIGZvbGxvd2luZzoN CisNCithbGlhcyBib25kMCBib25kaW5nDQorYWxpYXMgYm9uZDEgYm9uZGlu Zw0KKw0KK29wdGlvbnMgYm9uZGluZyBtYXhfYm9uZHM9MiBtaWltb249MTAw LDAgXA0KKwlhcnBfaW50ZXJ2YWw9MCwyMDAgYXJwX2lwX3RhcmdldD0xMC4w LjAuMSBhcnBfaXBfY291bnQ9MCwxDQogDQorQW5vdGhlciBleGFtcGxlLCB0 aGF0IHVzZXMgYWxtb3N0IGFsbCBvZiB0aGUgbW9kdWxlIHBhcmFtZXRlcnM6 ICANCiBhbGlhcyBib25kMCBib25kaW5nDQogYWxpYXMgYm9uZDEgYm9uZGlu Zw0KK2FsaWFzIGJvbmQyIGJvbmRpbmcNCithbGlhcyBib25kMyBib25kaW5n DQorYWxpYXMgYm9uZDQgYm9uZGluZw0KK2FsaWFzIGJvbmQ1IGJvbmRpbmcN CithbGlhcyBib25kNiBib25kaW5nDQorDQorb3B0aW9ucyBib25kaW5nIG1h eF9ib25kcz03IG1vZGU9MCwxLDIsMyw0LDUsNiBsYWNwX3JhdGU9MCwwLDAs MCwxLDAsMCBcDQorCW1paW1vbj0wLDAsMCwwLDEwMCwyMDAsMzAwIGFycF9p bnRlcnZhbD0xMDAsMjAwLDMwMCw0MDAgXA0KKyAgICAgICAgYXJwX2lwX3Rh cmdldD0xMC4wLjAuMSwxMC4wLjAuMiwxMC4wLjAuMywxMC4wLjAuNCBcDQor ICAgICAgICBhcnBfaXBfY291bnQ9MSwxLDEsMSwwLDAsMCB1cGRlbGF5PTAs MCwwLDAsMCwxMDAwLDIxMDAgXA0KKyAgICAgICAgZG93bmRlbGF5PTAsMCww LDAsMCwxMDAwLDIxMDAgXA0KKyAgICAgICAgcHJpbWFyeT1ub25lLGV0aDIs bm9uZSxub25lLG5vbmUsZXRoMTAsZXRoMTINCisNCitIZXJlJ3Mgd2hhdCB5 b3UnbGwgZ2V0IG91dCBvZiB0aGUgZXhhbXBsZSBhYm92ZToNCitib25kMDog YmFsYW5jZS1yciAoMCkgbW9kZSB3aXRoIGFycF9pbnRlcnZhbD0xMDAgYW5k IGFycF9pcF90YXJnZXQ9MTAuMC4wLjENCitib25kMTogYWN0aXZlLWJhY2t1 cCAoMSkgbW9kZSB3aXRoIGFycF9pbnRlcnZhbD0yMDAsIGFycF9pcF90YXJn ZXQ9MTAuMC4wLjIsDQorYW5kIGV0aDIgYXMgcHJpbWFyeQ0KK2JvbmQyOiBi YWxhbmNlLXhvciAoMikgbW9kZSB3aXRoIGFycF9pbnRlcnZhbD0zMDAgYW5k IGFycF9pcF90YXJnZXQ9MTAuMC4wLjMNCitib25kMzogYnJvYWRjYXN0ICgz KSBtb2RlIHdpdGggYXJwX2ludGVydmFsPTQwMCBhbmQgYXJwX2lwX3Rhcmdl dD0xMC4wLjAuNA0KK2JvbmQ0OiA4MDIuM2FkICg0KSBtb2RlIHdpdGggbGFj cF9yYXRlPTEgKGZhc3QpIGFuZCBtaWltb249MTAwDQorYm9uZDU6IGJhbGFu Y2UtdGxiICg1KSBtb2RlIHdpdGggbWlpbW9uPTIwMCwgdXBkZWxheT0xMDAw LCBkb3duZGVsYXk9MTAwMCwgDQorYW5kIGV0aDEwIGFzIHByaW1hcnkNCiti b25kNjogYmFsYW5jZS1hbGIgKDYpIG1vZGUgd2l0aCBtaWltb249MzAwLCB1 cGRlbGF5PTIxMDAsIGRvd25kZWxheT0yMTAwLCANCithbmQgZXRoMTIgYXMg cHJpbWFyeQ0KIA0KLW9wdGlvbnMgYm9uZDAgbWlpbW9uPTEwMA0KLW9wdGlv bnMgYm9uZDEgLW8gYm9uZGluZzEgYXJwX2ludGVydmFsPTIwMCBhcnBfaXBf dGFyZ2V0PTEwLjAuMC4xDQogDQogQ29uZmlndXJpbmcgTXVsdGlwbGUgQVJQ IFRhcmdldHMNCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K QEAgLTQzOCwxNyArNDc0LDM1IEBADQogbWFraW5nIGl0IHVucmVzcG9uc2l2 ZSB0byBBUlAgcmVxdWVzdHMuIEhhdmluZyBhbiBhZGRpdGlvbmFsIHRhcmdl dCAob3INCiBzZXZlcmFsKSBpbmNyZWFzZXMgdGhlIHJlbGlhYmlsaXR5IG9m IHRoZSBBUlAgbW9uaXRvcmluZy4NCiANCi1NdWx0aXBsZSBBUlAgdGFyZ2V0 cyBtdXN0IGJlIHNlcGVyYXRlZCBieSBjb21tYXMgYXMgZm9sbG93czoNCitN dWx0aXBsZSBBUlAgdGFyZ2V0cyBtdXN0IGJlIHNlcGFyYXRlZCBieSBjb21t YXMgYXMgZm9sbG93czoNCisNCisjIGV4YW1wbGUgb3B0aW9ucyBmb3IgQVJQ IG1vbml0b3JpbmcgYSBzaW5nbGUgYm9uZCB3aXRoIHRocmVlIHRhcmdldHMN CithbGlhcyBib25kMCBib25kaW5nDQorb3B0aW9ucyBib25kaW5nIGFycF9p bnRlcnZhbD02MCBcDQorYXJwX2lwX3RhcmdldD0xOTIuMTY4LjAuMSwxOTIu MTY4LjAuMywxOTIuMTY4LjAuOQ0KIA0KLSMgZXhhbXBsZSBvcHRpb25zIGZv ciBBUlAgbW9uaXRvcmluZyB3aXRoIHRocmVlIHRhcmdldHMNCitJZiBjb25m aWd1cmluZyBtdWx0aXBsZSBBUlAgdGFyZ2V0cyBmb3IgbXVsdGlwbGUgYm9u ZHMsIHVzZSBhcnBfaXBfY291bnQgDQordG8gc3BlY2lmeSBob3cgbWFueSBh cnAgdGFyZ2V0cyBmcm9tIHRoZSBhcnBfaXBfdGFyZ2V0IGxpc3QgYmVsb25n IHRvIGVhY2gNCitib25kIGRldmljZS4gSWYgYXJwX2lwX2NvdW50IGlzIG5v dCBzcGVjaWZpZWQgZm9yIGFueSBib25kLCBhbGwgDQorYXJwX2lwX3Rhcmdl dHMgZ28gdG8gdGhlIGZpcnN0IGJvbmQgdG8gcHJlc2VydmUgYmFja3dhcmQg Y29tcGF0aWJpbGl0eS4NCisgICANCisjIGV4YW1wbGUgb3B0aW9ucyBmb3Ig QVJQIG1vbml0b3JpbmcgbXVsdGlwbGUgYm9uZHMgd2l0aCBtdWx0aXBsZSBh cnAgdGFyZ2V0cw0KIGFsaWFzIGJvbmQwIGJvbmRpbmcNCi1vcHRpb25zIGJv bmQwIGFycF9pbnRlcnZhbD02MCBhcnBfaXBfdGFyZ2V0PTE5Mi4xNjguMC4x LDE5Mi4xNjguMC4zLDE5Mi4xNjguMC45DQorYWxpYXMgYm9uZDEgYm9uZGlu Zw0KKw0KK29wdGlvbnMgYm9uZGluZyBtYXhfYm9uZHM9MiBhcnBfaW50ZXJ2 YWw9NjAsMjAwIFwNCithcnBfaXBfY291bnQ9MSwyIGFycF9pcF90YXJnZXQ9 MTkyLjE2OC4wLjEsMTkyLjE2OC4wLjMsMTkyLjE2OC4wLjkNCisNCisjIElu IGFib3ZlIGV4YW1wbGUsIA0KKyMgYm9uZDAgaXMgY29uZmlndXJlZCB3aXRo IGFycCBpbnRlcnZhbCA2MCBhbmQgb25lIGFycCB0YXJnZXQ6IDE5Mi4xNjgu MC4xICAgIA0KKyMgYm9uZDEgaXMgY29uZmlndXJlZCB3aXRoIGFycCBpbnRl cnZhbCAyMDAgYW5kIHRoZSByZW1haW5pbmcgdHdvIGFycCB0YXJnZXRzDQog DQogRm9yIGp1c3QgYSBzaW5nbGUgdGFyZ2V0IHRoZSBvcHRpb25zIHdvdWxk IHJlc2VtYmxlOg0KIA0KLSMgZXhhbXBsZSBvcHRpb25zIGZvciBBUlAgbW9u aXRvcmluZyB3aXRoIG9uZSB0YXJnZXQNCisjIGV4YW1wbGUgb3B0aW9ucyBm b3IgQVJQIG1vbml0b3JpbmcgYSBzaW5nbGUgYm9uZCB3aXRoIG9uZSB0YXJn ZXQNCiBhbGlhcyBib25kMCBib25kaW5nDQotb3B0aW9ucyBib25kMCBhcnBf aW50ZXJ2YWw9NjAgYXJwX2lwX3RhcmdldD0xOTIuMTY4LjAuMTAwDQorb3B0 aW9ucyBib25kaW5nIGFycF9pbnRlcnZhbD02MCBhcnBfaXBfdGFyZ2V0PTE5 Mi4xNjguMC4xMDANCisNCiANCiBQb3RlbnRpYWwgUHJvYmxlbXMgV2hlbiBV c2luZyBBUlAgTW9uaXRvcg0KID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpAQCAtNTgwLDcgKzYzNCw4IEBADQogDQogMy4g IEhvdyBtYW55IGJvbmRpbmcgZGV2aWNlcyBjYW4gSSBoYXZlPw0KIA0KLQlU aGVyZSBpcyBubyBsaW1pdC4NCisJVXAgdG8gMTYgbWF4IGJvbmQgZGV2aWNl cyBjYW4gYmUgY3JlYXRlZCBhbmQgY29uZmlndXJlZCANCisgICAgICAgIGJ5 IHNwZWNpZnlpbmcgY29tbWFuZGxpbmUgb3B0aW9ucyB0byBtb2Rwcm9iZS4g DQogDQogNC4gIEhvdyBtYW55IHNsYXZlcyBjYW4gYSBib25kaW5nIGRldmlj ZSBoYXZlPw0KIA0KQEAgLTYzMSw3ICs2ODYsNyBAQA0KIAkgIHVuaXRzLg0K IAkqIExpbnV4IGJvbmRpbmcsIG9mIGNvdXJzZSAhDQogDQotCUluIDgwMi4z YWQgbW9kZSwgaXQgd29ya3Mgd2l0aCB3aXRoIHN5c3RlbXMgdGhhdCBzdXBw b3J0IElFRUUgODAyLjNhZA0KKwlJbiA4MDIuM2FkIG1vZGUsIGl0IHdvcmtz IHdpdGggc3lzdGVtcyB0aGF0IHN1cHBvcnQgSUVFRSA4MDIuM2FkDQogCUR5 bmFtaWMgTGluayBBZ2dyZWdhdGlvbjoNCiANCiAJKiBFeHRyZW1lIG5ldHdv cmtzIFN1bW1pdCA3aSAobG9vayBmb3IgbGluay1hZ2dyZWdhdGlvbikuDQpA QCAtNjQ5LDcgKzcwNCw3IEBADQogCUlmIG5vdCBleHBsaWNpdGx5IGNvbmZp Z3VyZWQgd2l0aCBpZmNvbmZpZywgdGhlIE1BQyBhZGRyZXNzIG9mIHRoZQ0K IAlib25kaW5nIGRldmljZSBpcyB0YWtlbiBmcm9tIGl0cyBmaXJzdCBzbGF2 ZSBkZXZpY2UuIFRoaXMgTUFDIGFkZHJlc3MNCiAJaXMgdGhlbiBwYXNzZWQg dG8gYWxsIGZvbGxvd2luZyBzbGF2ZXMgYW5kIHJlbWFpbnMgcGVyc2lzdGVu dCAoZXZlbiBpZg0KLQl0aGUgdGhlIGZpcnN0IHNsYXZlIGlzIHJlbW92ZWQp IHVudGlsIHRoZSBib25kaW5nIGRldmljZSBpcyBicm91Z2h0DQorCXRoZSBm aXJzdCBzbGF2ZSBpcyByZW1vdmVkKSB1bnRpbCB0aGUgYm9uZGluZyBkZXZp Y2UgaXMgYnJvdWdodA0KIAlkb3duIG9yIHJlY29uZmlndXJlZC4NCiANCiAJ SWYgeW91IHdpc2ggdG8gY2hhbmdlIHRoZSBNQUMgYWRkcmVzcywgeW91IGNh biBzZXQgaXQgd2l0aCBpZmNvbmZpZzoNCkBAIC03MjMsNyArNzc4LDcgQEAN CiBJT0NUTCAoRVRIVE9PTF9HTElOSyBjb21tYW5kKSBvciBieSBjaGVja2lu ZyB0aGUgTUlJIHN0YXR1cyByZWdpc3RlcnMuIFRoZQ0KIGNoZWNrIGludGVy dmFsIGlzIHNwZWNpZmllZCBieSB0aGUgbW9kdWxlIGFyZ3VtZW50ICJtaWlt b24iIChNSUkgbW9uaXRvcmluZykuDQogSXQgdGFrZXMgYW4gaW50ZWdlciB0 aGF0IHJlcHJlc2VudHMgdGhlIGNoZWNraW5nIHRpbWUgaW4gbWlsbGlzZWNv bmRzLiBJdA0KLXNob3VsZCBub3QgY29tZSB0byBjbG9zZSB0byAoMTAwMC9I WikgKDEwIG1pbGxpLXNlY29uZHMgb24gaTM4NikgYmVjYXVzZSBpdA0KK3No b3VsZCBub3QgY29tZSB0b28gY2xvc2UgdG8gKDEwMDAvSFopICgxMCBtaWxs aS1zZWNvbmRzIG9uIGkzODYpIGJlY2F1c2UgaXQNCiBtYXkgdGhlbiByZWR1 Y2UgdGhlIHN5c3RlbSBpbnRlcmFjdGl2aXR5LiBBIHZhbHVlIG9mIDEwMCBz ZWVtcyB0byBiZSBhIGdvb2QNCiBzdGFydGluZyBwb2ludC4gSXQgbWVhbnMg dGhhdCBhIGRlYWQgbGluayB3aWxsIGJlIGRldGVjdGVkIGF0IG1vc3QgMTAw DQogbWlsbGktc2Vjb25kcyBhZnRlciBpdCBnb2VzIGRvd24uDQpAQCAtOTMy LDEwICs5ODcsMTEgQEANCiB0aG9zZSBJRHMgdG8gdGFnIHNlbGYgZ2VuZXJh dGVkIHBhY2tldHMuDQogDQogRm9yIHNpbXBsaWNpdHkgcmVhc29ucywgYW5k IHRvIHN1cHBvcnQgdGhlIHVzZSBvZiBhZGFwdGVycyB0aGF0IGNhbiBkbyBW TEFODQotaGFyZHdhcmUgYWNjZWxlcmF0aW9uIG9mZmxvZGluZywgdGhlIGJv bmRpbmcgaW50ZXJmYWNlIGRlY2xhcmVzIGl0c2VsZiBhcw0KLWZ1bGx5IGhh cmR3YXJlIG9mZmxvYWluZyBjYXBhYmxlLCBpdCBnZXRzIHRoZSBhZGRfdmlk L2tpbGxfdmlkIG5vdGlmaWNhdGlvbnMNCitoYXJkd2FyZSBhY2NlbGVyYXRp b24gb2ZmbG9hZGluZywgdGhlIGJvbmRpbmcgaW50ZXJmYWNlIGRlY2xhcmVz IGl0c2VsZiBhcw0KK2Z1bGx5IGhhcmR3YXJlIG9mZmxvYWRpbmcgY2FwYWJs ZSwgaXQgZ2V0cyB0aGUgYWRkX3ZpZC9raWxsX3ZpZCBub3RpZmljYXRpb25z DQogdG8gZ2F0aGVyIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24sIGFuZCBp dCBwcm9wYWdhdGVzIHRob3NlIGFjdGlvbnMgdG8gdGhlDQogc2xhdmVzLg0K Kw0KIEluIGNhc2Ugb2YgbWl4ZWQgYWRhcHRlciB0eXBlcywgaGFyZHdhcmUg YWNjZWxlcmF0ZWQgdGFnZ2VkIHBhY2tldHMgdGhhdCBzaG91bGQNCiBnbyB0 aHJvdWdoIGFuIGFkYXB0ZXIgdGhhdCBpcyBub3Qgb2ZmbG9hZGluZyBjYXBh YmxlIGFyZSAidW4tYWNjZWxlcmF0ZWQiIGJ5IHRoZQ0KIGJvbmRpbmcgZHJp dmVyIHNvIHRoZSBWTEFOIHRhZyBzaXRzIGluIHRoZSByZWd1bGFyIGxvY2F0 aW9uLg0K --8323328-492798474-1105662337=:18693-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/