Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754073Ab2EBFHx (ORCPT ); Wed, 2 May 2012 01:07:53 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:32843 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751936Ab2EBFHv (ORCPT ); Wed, 2 May 2012 01:07:51 -0400 MIME-Version: 1.0 In-Reply-To: References: <1332135781-13695-1-git-send-email-yinghai@kernel.org> <1332135781-13695-5-git-send-email-yinghai@kernel.org> Date: Tue, 1 May 2012 22:07:50 -0700 X-Google-Sender-Auth: YP_OpQplOfk4yopZQuwWishxCnA Message-ID: Subject: Re: [PATCH -v11 04/30] PCI: Add busn_res into struct pci_bus. From: Yinghai Lu To: Bjorn Helgaas Cc: Jesse Barnes , Benjamin Herrenschmidt , Tony Luck , David Miller , x86 , Dominik Brodowski , Andrew Morton , Linus Torvalds , Greg Kroah-Hartman , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org Content-Type: multipart/mixed; boundary=047d7b10d2453d14de04bf06ab0f Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 50510 Lines: 691 --047d7b10d2453d14de04bf06ab0f Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Tue, May 1, 2012 at 12:28 PM, Yinghai Lu wrote: > On Tue, May 1, 2012 at 8:40 AM, Bjorn Helgaas wrote= : >>>> bridge's Subordinate Bus Number in config space =3D=3D bus->subordinat= e =3D=3D >>>> bus->busn_res.end (correct me if I'm wrong). =A0I don't like the >>>> redundancy in this case. >>> >>> there are about 70 bus->subordinate reference and 40 bus->secondary ref= erence. >>> >>> could try to update them in following patch set. >> >> If you're proposing this: >> =A01. add bus->busn_res >> =A02. remove bus->subordinate and bus->secondary >> I fully support that, and I'd like to merge both pieces at the same >> time (different patches is fine; I just want to make sure both pieces >> actually happen). > > yes. Can you consider applying =A0"removing bus->subordinate" patch set > to be applied after: > for-pci-busn-alloc > for-pci-root-bus-hotplug > for-pci-for-each-res-addon > for-pci-res-alloc > > otherwise there would be some extra rebase work for last three patch set. spent several hours today to have attached patch that will remove pci_bus secondary/subordinate. and tested with my setups with remove/scan test case. looks ok. need to apply it after for-pci-busn-alloc for-pci-root-bus-hotplug. Please check if i miss anything. Thanks Yinghai --047d7b10d2453d14de04bf06ab0f Content-Type: application/octet-stream; name="kill_bus_subordinate_x.patch" Content-Disposition: attachment; filename="kill_bus_subordinate_x.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h1pxbjyz0 U3ViamVjdDogW1BBVENIXSBQQ0k6IFJlbW92ZSBzZWNvbmRhcnkvc3Vib3JkaW5hdGUgaW4gcGNp X2J1cwoKV2UgYWxyZWFkeSBoYXZlIGJ1c25fcmVzIGluIHBjaV9idXMsIHNvIHJlbW92ZSB0aGUg ZHVwbGljYXRlZApzZWNvbmRhcnkvc3Vib3JkaW5hdGUuCgpTaWduZWQtb2ZmLWJ5OiBZaW5naGFp IEx1IDx5aW5naGFpQGtlcm5lbC5vcmc+CgotLS0KIGFyY2gvYWxwaGEva2VybmVsL3BjaS5jICAg ICAgICAgICAgICAgICAgICB8ICAgIDIgCiBhcmNoL2FybS9rZXJuZWwvYmlvczMyLmMgICAgICAg ICAgICAgICAgICAgfCAgICAyIAogYXJjaC9pYTY0L3BjaS9wY2kuYyAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMiAKIGFyY2gvbWljcm9ibGF6ZS9wY2kvcGNpLWNvbW1vbi5jICAgICAgICAg ICB8ICAgIDMgLQogYXJjaC9taXBzL3BjaS9wY2kuYyAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMiAKIGFyY2gvcG93ZXJwYy9rZXJuZWwvcGNpLWNvbW1vbi5jICAgICAgICAgICB8ICAgIDkg Ky0tCiBhcmNoL3Bvd2VycGMva2VybmVsL3BjaV82NC5jICAgICAgICAgICAgICAgfCAgICAyIAog YXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfb2Zfc2Nhbi5jICAgICAgICAgIHwgICAgMiAKIGFyY2gv cG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wY2ktaW9kYS5jICB8ICAgIDggKy0KIGFyY2gvcG93 ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wY2lfZGxwYXIuYyB8ICAgIDIgCiBhcmNoL3NoL2RyaXZl cnMvcGNpL3BjaS5jICAgICAgICAgICAgICAgICAgfCAgICAyIAogYXJjaC9zcGFyYy9rZXJuZWwv cGNpLmMgICAgICAgICAgICAgICAgICAgIHwgICAgNCAtCiBhcmNoL3RpbGUva2VybmVsL3BjaS5j ICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsrLQogYXJjaC94ODYvcGNpL2FjcGkuYyAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiAKIGFyY2gveHRlbnNhL2tlcm5lbC9wY2kuYyAgICAg ICAgICAgICAgICAgICB8ICAgIDIgCiBkcml2ZXJzL2lvbW11L2ludGVsLWlvbW11LmMgICAgICAg ICAgICAgICAgfCAgICAyIAogZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMgICAg ICAgIHwgICAgNCAtCiBkcml2ZXJzL3BhcmlzYy9kaW5vLmMgICAgICAgICAgICAgICAgICAgICAg fCAgIDEzICsrLS0KIGRyaXZlcnMvcGFyaXNjL2lvc2FwaWMuYyAgICAgICAgICAgICAgICAgICB8 ICAgIDIgCiBkcml2ZXJzL3BhcmlzYy9sYmFfcGNpLmMgICAgICAgICAgICAgICAgICAgfCAgIDIz ICsrKystLS0tCiBkcml2ZXJzL3BjaS9ob3RwbHVnLXBjaS5jICAgICAgICAgICAgICAgICAgfCAg ICAyIAogZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYyAgICAgICAgIHwgICAgOCAr LQogZHJpdmVycy9wY2kvaG90cGx1Zy9zaHBjaHBfc3lzZnMuYyAgICAgICAgIHwgICAgNiArLQog ZHJpdmVycy9wY2kvaW92LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAtCiBkcml2 ZXJzL3BjaS9wY2kuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyIAogZHJpdmVycy9w Y2kvcHJvYmUuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4MyArKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMgICAgICAgICAgICAgICAgICAg IHwgICAyMiArKystLS0tCiBkcml2ZXJzL3BjbWNpYS9jYXJkYnVzLmMgICAgICAgICAgICAgICAg ICAgfCAgICAyIAogZHJpdmVycy9wY21jaWEveWVudGFfc29ja2V0LmMgICAgICAgICAgICAgIHwg ICAgNCAtCiBpbmNsdWRlL2xpbnV4L3BjaS5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAy IAogMzAgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDEyMCBkZWxldGlvbnMoLSkK CkluZGV4OiBsaW51eC0yLjYvYXJjaC9hbHBoYS9rZXJuZWwvcGNpLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGludXgtMi42Lm9yaWcvYXJjaC9hbHBoYS9rZXJuZWwvcGNpLmMKKysrIGxpbnV4LTIuNi9hcmNo L2FscGhhL2tlcm5lbC9wY2kuYwpAQCAtMzU5LDcgKzM1OSw3IEBAIGNvbW1vbl9pbml0X3BjaSh2 b2lkKQogCQkJCQlob3NlLCAmcmVzb3VyY2VzKTsKIAkJaG9zZS0+YnVzID0gYnVzOwogCQlob3Nl LT5uZWVkX2RvbWFpbl9pbmZvID0gbmVlZF9kb21haW5faW5mbzsKLQkJbmV4dF9idXNubyA9IGJ1 cy0+c3Vib3JkaW5hdGUgKyAxOworCQluZXh0X2J1c25vID0gYnVzLT5idXNuX3Jlcy5lbmQgKyAx OwogCQkvKiBEb24ndCBhbGxvdyA4LWJpdCBidXMgbnVtYmVyIG92ZXJmbG93IGluc2lkZSB0aGUg aG9zZSAtCiAJCSAgIHJlc2VydmUgc29tZSBzcGFjZSBmb3IgYnJpZGdlcy4gKi8gCiAJCWlmIChu ZXh0X2J1c25vID4gMjI0KSB7CkluZGV4OiBsaW51eC0yLjYvYXJjaC9hcm0va2VybmVsL2Jpb3Mz Mi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gvYXJtL2tlcm5lbC9iaW9zMzIu YworKysgbGludXgtMi42L2FyY2gvYXJtL2tlcm5lbC9iaW9zMzIuYwpAQCAtNDQ1LDcgKzQ0NSw3 IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwY2liaW9zX2luaXRfaHcoc3RydWMKIAkJCWlmICghc3lz LT5idXMpCiAJCQkJcGFuaWMoIlBDSTogdW5hYmxlIHRvIHNjYW4gYnVzISIpOwogCi0JCQlidXNu ciA9IHN5cy0+YnVzLT5zdWJvcmRpbmF0ZSArIDE7CisJCQlidXNuciA9IHN5cy0+YnVzLT5idXNu X3Jlcy5lbmQgKyAxOwogCiAJCQlsaXN0X2FkZCgmc3lzLT5ub2RlLCAmaHctPmJ1c2VzKTsKIAkJ fSBlbHNlIHsKSW5kZXg6IGxpbnV4LTIuNi9hcmNoL2lhNjQvcGNpL3BjaS5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gvaWE2NC9wY2kvcGNpLmMKKysrIGxpbnV4LTIuNi9hcmNo L2lhNjQvcGNpL3BjaS5jCkBAIC0zODYsNyArMzg2LDcgQEAgcGNpX2FjcGlfc2Nhbl9yb290KHN0 cnVjdCBhY3BpX3BjaV9yb290CiAJCXJldHVybiBOVUxMOwogCX0KIAotCXBidXMtPnN1Ym9yZGlu YXRlID0gcGNpX3NjYW5fY2hpbGRfYnVzKHBidXMpOworCXBjaV9zY2FuX2NoaWxkX2J1cyhwYnVz KTsKIAlyZXR1cm4gcGJ1czsKIAogb3V0MzoKSW5kZXg6IGxpbnV4LTIuNi9hcmNoL21pY3JvYmxh emUvcGNpL3BjaS1jb21tb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9hcmNoL21p Y3JvYmxhemUvcGNpL3BjaS1jb21tb24uYworKysgbGludXgtMi42L2FyY2gvbWljcm9ibGF6ZS9w Y2kvcGNpLWNvbW1vbi5jCkBAIC0xNTA1LDEwICsxNTA1LDkgQEAgc3RhdGljIHZvaWQgX19kZXZp bml0IHBjaWJpb3Nfc2Nhbl9waGIocwogCQlwY2lfZnJlZV9yZXNvdXJjZV9saXN0KCZyZXNvdXJj ZXMpOwogCQlyZXR1cm47CiAJfQotCWJ1cy0+c2Vjb25kYXJ5ID0gaG9zZS0+Zmlyc3RfYnVzbm87 CiAJaG9zZS0+YnVzID0gYnVzOwogCi0JaG9zZS0+bGFzdF9idXNubyA9IGJ1cy0+c3Vib3JkaW5h dGU7CisJaG9zZS0+bGFzdF9idXNubyA9IGJ1cy0+YnVzbl9yZXMuZW5kOwogfQogCiBzdGF0aWMg aW50IF9faW5pdCBwY2liaW9zX2luaXQodm9pZCkKSW5kZXg6IGxpbnV4LTIuNi9hcmNoL21pcHMv cGNpL3BjaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gvbWlwcy9wY2kvcGNp LmMKKysrIGxpbnV4LTIuNi9hcmNoL21pcHMvcGNpL3BjaS5jCkBAIC0xMDEsNyArMTAxLDcgQEAg c3RhdGljIHZvaWQgX19kZXZpbml0IHBjaWJpb3Nfc2NhbmJ1cyhzdAogCW5lZWRfZG9tYWluX2lu Zm8gPSBuZWVkX2RvbWFpbl9pbmZvIHx8IGhvc2UtPmluZGV4OwogCWhvc2UtPm5lZWRfZG9tYWlu X2luZm8gPSBuZWVkX2RvbWFpbl9pbmZvOwogCWlmIChidXMpIHsKLQkJbmV4dF9idXNubyA9IGJ1 cy0+c3Vib3JkaW5hdGUgKyAxOworCQluZXh0X2J1c25vID0gYnVzLT5idXNuX3Jlcy5lbmQgKyAx OwogCQkvKiBEb24ndCBhbGxvdyA4LWJpdCBidXMgbnVtYmVyIG92ZXJmbG93IGluc2lkZSB0aGUg aG9zZSAtCiAJCSAgIHJlc2VydmUgc29tZSBzcGFjZSBmb3IgYnJpZGdlcy4gKi8KIAkJaWYgKG5l eHRfYnVzbm8gPiAyMjQpIHsKSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3Bvd2VycGMva2VybmVsL3Bj aS1jb21tb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9hcmNoL3Bvd2VycGMva2Vy bmVsL3BjaS1jb21tb24uYworKysgbGludXgtMi42L2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpLWNv bW1vbi5jCkBAIC0xNjUxLDcgKzE2NTEsNiBAQCB2b2lkIF9fZGV2aW5pdCBwY2liaW9zX3NjYW5f cGhiKHN0cnVjdCBwCiAJCXBjaV9mcmVlX3Jlc291cmNlX2xpc3QoJnJlc291cmNlcyk7CiAJCXJl dHVybjsKIAl9Ci0JYnVzLT5zZWNvbmRhcnkgPSBob3NlLT5maXJzdF9idXNubzsKIAlob3NlLT5i dXMgPSBidXM7CiAKIAkvKiBHZXQgcHJvYmUgbW9kZSBhbmQgcGVyZm9ybSBzY2FuICovCkBAIC0x NjU5LDE1ICsxNjU4LDEzIEBAIHZvaWQgX19kZXZpbml0IHBjaWJpb3Nfc2Nhbl9waGIoc3RydWN0 IHAKIAlpZiAobm9kZSAmJiBwcGNfbWQucGNpX3Byb2JlX21vZGUpCiAJCW1vZGUgPSBwcGNfbWQu cGNpX3Byb2JlX21vZGUoYnVzKTsKIAlwcl9kZWJ1ZygiICAgIHByb2JlIG1vZGU6ICVkXG4iLCBt b2RlKTsKLQlpZiAobW9kZSA9PSBQQ0lfUFJPQkVfREVWVFJFRSkgewotCQlidXMtPnN1Ym9yZGlu YXRlID0gaG9zZS0+bGFzdF9idXNubzsKKwlpZiAobW9kZSA9PSBQQ0lfUFJPQkVfREVWVFJFRSkK IAkJb2Zfc2Nhbl9idXMobm9kZSwgYnVzKTsKLQl9CiAKIAlpZiAobW9kZSA9PSBQQ0lfUFJPQkVf Tk9STUFMKSB7CiAJCXBjaV9idXNfdXBkYXRlX2J1c25fcmVzX2VuZChidXMsIDI1NSk7Ci0JCWhv c2UtPmxhc3RfYnVzbm8gPSBidXMtPnN1Ym9yZGluYXRlID0gcGNpX3NjYW5fY2hpbGRfYnVzKGJ1 cyk7Ci0JCXBjaV9idXNfdXBkYXRlX2J1c25fcmVzX2VuZChidXMsIGJ1cy0+c3Vib3JkaW5hdGUp OworCQlob3NlLT5sYXN0X2J1c25vID0gcGNpX3NjYW5fY2hpbGRfYnVzKGJ1cyk7CisJCXBjaV9i dXNfdXBkYXRlX2J1c25fcmVzX2VuZChidXMsIGhvc2UtPmxhc3RfYnVzbm8pOwogCX0KIAogCS8q IFBsYXRmb3JtIGdldHMgYSBjaGFuY2UgdG8gZG8gc29tZSBnbG9iYWwgZml4dXBzIGJlZm9yZQpJ bmRleDogbGludXgtMi42L2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpXzY0LmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gbGludXgtMi42Lm9yaWcvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfNjQuYworKysgbGludXgt Mi42L2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpXzY0LmMKQEAgLTIzNiw3ICsyMzYsNyBAQCBsb25n IHN5c19wY2ljb25maWdfaW9iYXNlKGxvbmcgd2hpY2gsIHVuCiAKIAlmb3IgKGxuID0gcGNpX3Jv b3RfYnVzZXMubmV4dDsgbG4gIT0gJnBjaV9yb290X2J1c2VzOyBsbiA9IGxuLT5uZXh0KSB7CiAJ CWJ1cyA9IHBjaV9idXNfYihsbik7Ci0JCWlmIChpbl9idXMgPj0gYnVzLT5udW1iZXIgJiYgaW5f YnVzIDw9IGJ1cy0+c3Vib3JkaW5hdGUpCisJCWlmIChpbl9idXMgPj0gYnVzLT5udW1iZXIgJiYg aW5fYnVzIDw9IGJ1cy0+YnVzbl9yZXMuZW5kKQogCQkJYnJlYWs7CiAJCWJ1cyA9IE5VTEw7CiAJ fQpJbmRleDogbGludXgtMi42L2FyY2gvcG93ZXJwYy9rZXJuZWwvcGNpX29mX3NjYW4uYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9hcmNoL3Bvd2VycGMva2VybmVsL3BjaV9vZl9zY2Fu LmMKKysrIGxpbnV4LTIuNi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaV9vZl9zY2FuLmMKQEAgLTI0 MCw3ICsyNDAsNyBAQCB2b2lkIF9fZGV2aW5pdCBvZl9zY2FuX3BjaV9icmlkZ2Uoc3RydWN0CiAJ fQogCiAJYnVzLT5wcmltYXJ5ID0gZGV2LT5idXMtPm51bWJlcjsKLQlidXMtPnN1Ym9yZGluYXRl ID0gYnVzcmFuZ2VbMV07CisJcGNpX2J1c19pbnNlcnRfYnVzbl9yZXMoYnVzLCBidXNyYW5nZVsw XSwgYnVzcmFuZ2VbMV0pOwogCWJ1cy0+YnJpZGdlX2N0bCA9IDA7CiAKIAkvKiBwYXJzZSByYW5n ZXMgcHJvcGVydHkgKi8KSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bv d2VybnYvcGNpLWlvZGEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9hcmNoL3Bvd2Vy cGMvcGxhdGZvcm1zL3Bvd2VybnYvcGNpLWlvZGEuYworKysgbGludXgtMi42L2FyY2gvcG93ZXJw Yy9wbGF0Zm9ybXMvcG93ZXJudi9wY2ktaW9kYS5jCkBAIC01ODksNyArNTg5LDcgQEAgc3RhdGlj IGludCBfX2RldmluaXQgcG52X2lvZGFfY29uZmlndXJlXwogCQlkY29tcCA9IE9QQUxfSUdOT1JF X1JJRF9ERVZJQ0VfTlVNQkVSOwogCQlmY29tcCA9IE9QQUxfSUdOT1JFX1JJRF9GVU5DVElPTl9O VU1CRVI7CiAJCXBhcmVudCA9IHBlLT5wYnVzLT5zZWxmOwotCQljb3VudCA9IHBlLT5wYnVzLT5z dWJvcmRpbmF0ZSAtIHBlLT5wYnVzLT5zZWNvbmRhcnkgKyAxOworCQljb3VudCA9IHBlLT5wYnVz LT5idXNuX3Jlcy5lbmQgLSBwZS0+cGJ1cy0+YnVzbl9yZXMuc3RhcnQgKyAxOwogCQlzd2l0Y2go Y291bnQpIHsKIAkJY2FzZSAgMTogYmNvbXAgPSBPcGFsUGNpQnVzQWxsOwkJYnJlYWs7CiAJCWNh c2UgIDI6IGJjb21wID0gT3BhbFBjaUJ1czdCaXRzOwlicmVhazsKQEAgLTgxNiwxMSArODE2LDEx IEBAIHN0YXRpYyB2b2lkIF9fZGV2aW5pdCBwbnZfaW9kYV9zZXR1cF9idXMKIAlwZS0+cGRldiA9 IE5VTEw7CiAJcGUtPnRjZTMyX3NlZyA9IC0xOwogCXBlLT5tdmVfbnVtYmVyID0gLTE7Ci0JcGUt PnJpZCA9IGJ1cy0+c2Vjb25kYXJ5IDw8IDg7CisJcGUtPnJpZCA9IGJ1cy0+YnVzbl9yZXMuc3Rh cnQgPDwgODsKIAlwZS0+ZG1hX3dlaWdodCA9IDA7CiAKLQlwZV9pbmZvKHBlLCAiU2Vjb25kYXJ5 IGJ1c3NlcyAlZC4uJWQgYXNzb2NpYXRlZCB3aXRoIFBFXG4iLAotCQlidXMtPnNlY29uZGFyeSwg YnVzLT5zdWJvcmRpbmF0ZSk7CisJcGVfaW5mbyhwZSwgIlNlY29uZGFyeSBidXNzZXMgJXBSIGFz c29jaWF0ZWQgd2l0aCBQRVxuIiwKKwkJJmJ1cy0+YnVzbl9yZXMpOwogCiAJaWYgKHBudl9pb2Rh X2NvbmZpZ3VyZV9wZShwaGIsIHBlKSkgewogCQkvKiBYWFggV2hhdCBkbyB3ZSBkbyBoZXJlID8g Ki8KSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcGNpX2Rs cGFyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvYXJjaC9wb3dlcnBjL3BsYXRmb3Jt cy9wc2VyaWVzL3BjaV9kbHBhci5jCisrKyBsaW51eC0yLjYvYXJjaC9wb3dlcnBjL3BsYXRmb3Jt cy9wc2VyaWVzL3BjaV9kbHBhci5jCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBwY2liaW9zX2Fk ZF9wY2lfZGV2aWNlcyhzdHJ1Y3QgcGNpXwogCQlpZiAoIW51bSkKIAkJCXJldHVybjsKIAkJcGNp Ymlvc19zZXR1cF9idXNfZGV2aWNlcyhidXMpOwotCQltYXggPSBidXMtPnNlY29uZGFyeTsKKwkJ bWF4ID0gYnVzLT5idXNuX3Jlcy5zdGFydDsKIAkJZm9yIChwYXNzPTA7IHBhc3MgPCAyOyBwYXNz KyspCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJmJ1cy0+ZGV2aWNlcywgYnVzX2xpc3Qp IHsKIAkJCWlmIChkZXYtPmhkcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9CUklER0UgfHwKSW5k ZXg6IGxpbnV4LTIuNi9hcmNoL3NoL2RyaXZlcnMvcGNpL3BjaS5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp bnV4LTIuNi5vcmlnL2FyY2gvc2gvZHJpdmVycy9wY2kvcGNpLmMKKysrIGxpbnV4LTIuNi9hcmNo L3NoL2RyaXZlcnMvcGNpL3BjaS5jCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyB2b2lkIF9fZGV2 aW5pdCBwY2liaW9zX3NjYW5idXMoc3QKIAluZWVkX2RvbWFpbl9pbmZvID0gbmVlZF9kb21haW5f aW5mbyB8fCBob3NlLT5pbmRleDsKIAlob3NlLT5uZWVkX2RvbWFpbl9pbmZvID0gbmVlZF9kb21h aW5faW5mbzsKIAlpZiAoYnVzKSB7Ci0JCW5leHRfYnVzbm8gPSBidXMtPnN1Ym9yZGluYXRlICsg MTsKKwkJbmV4dF9idXNubyA9IGJ1cy0+YnVzbl9yZXMuZW5kICsgMTsKIAkJLyogRG9uJ3QgYWxs b3cgOC1iaXQgYnVzIG51bWJlciBvdmVyZmxvdyBpbnNpZGUgdGhlIGhvc2UgLQogCQkgICByZXNl cnZlIHNvbWUgc3BhY2UgZm9yIGJyaWRnZXMuICovCiAJCWlmIChuZXh0X2J1c25vID4gMjI0KSB7 CkluZGV4OiBsaW51eC0yLjYvYXJjaC9zcGFyYy9rZXJuZWwvcGNpLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGludXgtMi42Lm9yaWcvYXJjaC9zcGFyYy9rZXJuZWwvcGNpLmMKKysrIGxpbnV4LTIuNi9hcmNo L3NwYXJjL2tlcm5lbC9wY2kuYwpAQCAtNTM1LDcgKzUzNSw3IEBAIHN0YXRpYyB2b2lkIF9fZGV2 aW5pdCBvZl9zY2FuX3BjaV9icmlkZ2UKIAl9CiAKIAlidXMtPnByaW1hcnkgPSBkZXYtPmJ1cy0+ bnVtYmVyOwotCWJ1cy0+c3Vib3JkaW5hdGUgPSBidXNyYW5nZVsxXTsKKwlwY2lfYnVzX2luc2Vy dF9idXNuX3JlcyhidXMsIGJ1c3JhbmdlWzBdLCBidXNyYW5nZVsxXSk7CiAJYnVzLT5icmlkZ2Vf Y3RsID0gMDsKIAogCS8qIHBhcnNlIHJhbmdlcyBwcm9wZXJ0eSwgb3IgY29vayBvbmUgdXAgYnkg aGFuZCBmb3IgU2ltYmEgKi8KQEAgLTY5Nyw4ICs2OTcsNiBAQCBzdHJ1Y3QgcGNpX2J1cyAqIF9f ZGV2aW5pdCBwY2lfc2Nhbl9vbmVfCiAJCXBjaV9mcmVlX3Jlc291cmNlX2xpc3QoJnJlc291cmNl cyk7CiAJCXJldHVybiBOVUxMOwogCX0KLQlidXMtPnNlY29uZGFyeSA9IHBibS0+cGNpX2ZpcnN0 X2J1c25vOwotCWJ1cy0+c3Vib3JkaW5hdGUgPSBwYm0tPnBjaV9sYXN0X2J1c25vOwogCiAJcGNp X29mX3NjYW5fYnVzKHBibSwgbm9kZSwgYnVzKTsKIAlwY2lfYnVzX2FkZF9kZXZpY2VzKGJ1cyk7 CkluZGV4OiBsaW51eC0yLjYvYXJjaC90aWxlL2tlcm5lbC9wY2kuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs aW51eC0yLjYub3JpZy9hcmNoL3RpbGUva2VybmVsL3BjaS5jCisrKyBsaW51eC0yLjYvYXJjaC90 aWxlL2tlcm5lbC9wY2kuYwpAQCAtMzEwLDYgKzMxMCw3IEBAIGludCBfX2luaXQgcGNpYmlvc19p bml0KHZvaWQpCiAJCWlmIChwY2lfc2Nhbl9mbGFnc1tpXSA9PSAwICYmIGNvbnRyb2xsZXJzW2ld Lm9wcyAhPSBOVUxMKSB7CiAJCQlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSAm Y29udHJvbGxlcnNbaV07CiAJCQlzdHJ1Y3QgcGNpX2J1cyAqYnVzOworCQkJTElTVF9IRUFEKHJl c291cmNlcyk7CiAKIAkJCWlmICh0aWxlX2luaXRfaXJxcyhpLCBjb250cm9sbGVyKSkgewogCQkJ CXByX2VycigiUENJOiBDb3VsZCBub3QgaW5pdGlhbGl6ZSBJUlFzXG4iKTsKQEAgLTMyNyw5ICsz MjgsMTEgQEAgaW50IF9faW5pdCBwY2liaW9zX2luaXQodm9pZCkKIAkJCSAqIFRoaXMgaXMgaW5s aW5lZCBpbiBsaW51eC9wY2kuaCBhbmQgY2FsbHMgaW50bwogCQkJICogcGNpX3NjYW5fYnVzX3Bh cmVudGVkKCkgaW4gcHJvYmUuYy4KIAkJCSAqLwotCQkJYnVzID0gcGNpX3NjYW5fYnVzKDAsIGNv bnRyb2xsZXItPm9wcywgY29udHJvbGxlcik7CisJCQlwY2lfYWRkX3Jlc291cmNlKCZyZXNvdXJj ZXMsICZpb3BvcnRfcmVzb3VyY2UpOworCQkJcGNpX2FkZF9yZXNvdXJjZSgmcmVzb3VyY2VzLCAm aW9tZW1fcmVzb3VyY2UpOworCQkJYnVzID0gcGNpX3NjYW5fcm9vdF9idXMoTlVMTCwgMCwgY29u dHJvbGxlci0+b3BzLCBjb250cm9sbGVyLCAmcmVzb3VyY2VzKTsKIAkJCWNvbnRyb2xsZXItPnJv b3RfYnVzID0gYnVzOwotCQkJY29udHJvbGxlci0+bGFzdF9idXNubyA9IGJ1cy0+c3Vib3JkaW5h dGU7CisJCQljb250cm9sbGVyLT5sYXN0X2J1c25vID0gYnVzLT5idXNuX3Jlcy5lbmQ7CiAJCX0K IAl9CiAKQEAgLTM2Niw3ICszNjksNyBAQCBpbnQgX19pbml0IHBjaWJpb3NfaW5pdCh2b2lkKQog CQkJCSAqLwogCQkJCWlmICgoZGV2LT5jbGFzcyA+PiA4KSA9PSBQQ0lfQ0xBU1NfQlJJREdFX1BD SSAmJgogCQkJCQkoUENJX1NMT1QoZGV2LT5kZXZmbikgPT0gMCkpIHsKLQkJCQkJbmV4dF9idXMg PSBkZXYtPnN1Ym9yZGluYXRlOworCQkJCQluZXh0X2J1cyA9IGRldi0+YnVzbl9yZXMuZW5kOwog CQkJCQljb250cm9sbGVyc1tpXS5tZW1fcmVzb3VyY2VzWzBdID0KIAkJCQkJCSpuZXh0X2J1cy0+ cmVzb3VyY2VbMF07CiAJCQkJCWNvbnRyb2xsZXJzW2ldLm1lbV9yZXNvdXJjZXNbMV0gPQpJbmRl eDogbGludXgtMi42L2FyY2gveDg2L3BjaS9hY3BpLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42 Lm9yaWcvYXJjaC94ODYvcGNpL2FjcGkuYworKysgbGludXgtMi42L2FyY2gveDg2L3BjaS9hY3Bp LmMKQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdHJ1Y3QgcGNpX2J1cyAqIF9fZGV2aW5pdCBwY2lfYWNw aV9zY2FuCiAJCWJ1cyA9IHBjaV9jcmVhdGVfcm9vdF9idXMoTlVMTCwgYnVzbnVtLCAmcGNpX3Jv b3Rfb3BzLCBzZCwKIAkJCQkJICAmcmVzb3VyY2VzKTsKIAkJaWYgKGJ1cykgewotCQkJYnVzLT5z dWJvcmRpbmF0ZSA9IHBjaV9zY2FuX2NoaWxkX2J1cyhidXMpOworCQkJcGNpX3NjYW5fY2hpbGRf YnVzKGJ1cyk7CiAJCQlwY2lfc2V0X2hvc3RfYnJpZGdlX3JlbGVhc2UoCiAJCQkJdG9fcGNpX2hv c3RfYnJpZGdlKGJ1cy0+YnJpZGdlKSwKIAkJCQlyZWxlYXNlX3BjaV9yb290X2luZm8sIGluZm8p OwpJbmRleDogbGludXgtMi42L2FyY2gveHRlbnNhL2tlcm5lbC9wY2kuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBsaW51eC0yLjYub3JpZy9hcmNoL3h0ZW5zYS9rZXJuZWwvcGNpLmMKKysrIGxpbnV4LTIuNi9h cmNoL3h0ZW5zYS9rZXJuZWwvcGNpLmMKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgaW50IF9f aW5pdCBwY2liaW9zX2luaXQodm9pZCkKIAkJYnVzID0gcGNpX3NjYW5fcm9vdF9idXMoTlVMTCwg cGNpX2N0cmwtPmZpcnN0X2J1c25vLAogCQkJCQlwY2lfY3RybC0+b3BzLCBwY2lfY3RybCwgJnJl c291cmNlcyk7CiAJCXBjaV9jdHJsLT5idXMgPSBidXM7Ci0JCXBjaV9jdHJsLT5sYXN0X2J1c25v ID0gYnVzLT5zdWJvcmRpbmF0ZTsKKwkJcGNpX2N0cmwtPmxhc3RfYnVzbm8gPSBidXMtPmJ1c25f cmVzLmVuZDsKIAkJaWYgKG5leHRfYnVzbm8gPD0gcGNpX2N0cmwtPmxhc3RfYnVzbm8pCiAJCQlu ZXh0X2J1c25vID0gcGNpX2N0cmwtPmxhc3RfYnVzbm8rMTsKIAl9CkluZGV4OiBsaW51eC0yLjYv ZHJpdmVycy9pb21tdS9pbnRlbC1pb21tdS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmln L2RyaXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYworKysgbGludXgtMi42L2RyaXZlcnMvaW9tbXUv aW50ZWwtaW9tbXUuYwpAQCAtNjYwLDcgKzY2MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfaW9t bXUgKmRldmljZV90b19pb20KIAkJCWlmIChkcmhkLT5kZXZpY2VzW2ldICYmCiAJCQkgICAgZHJo ZC0+ZGV2aWNlc1tpXS0+c3Vib3JkaW5hdGUgJiYKIAkJCSAgICBkcmhkLT5kZXZpY2VzW2ldLT5z dWJvcmRpbmF0ZS0+bnVtYmVyIDw9IGJ1cyAmJgotCQkJICAgIGRyaGQtPmRldmljZXNbaV0tPnN1 Ym9yZGluYXRlLT5zdWJvcmRpbmF0ZSA+PSBidXMpCisJCQkgICAgZHJoZC0+ZGV2aWNlc1tpXS0+ c3Vib3JkaW5hdGUtPmJ1c25fcmVzLmVuZCA+PSBidXMpCiAJCQkJcmV0dXJuIGRyaGQtPmlvbW11 OwogCQl9CiAKSW5kZXg6IGxpbnV4LTIuNi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90 ZzMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9kcml2ZXJzL25ldC9ldGhlcm5ldC9i cm9hZGNvbS90ZzMuYworKysgbGludXgtMi42L2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29t L3RnMy5jCkBAIC0xNDE5Niw3ICsxNDE5Niw3IEBAIHN0YXRpYyBpbnQgX19kZXZpbml0IHRnM19n ZXRfaW52YXJpYW50cygKIAkJCWlmIChicmlkZ2UtPnN1Ym9yZGluYXRlICYmCiAJCQkgICAgKGJy aWRnZS0+c3Vib3JkaW5hdGUtPm51bWJlciA8PQogCQkJICAgICB0cC0+cGRldi0+YnVzLT5udW1i ZXIpICYmCi0JCQkgICAgKGJyaWRnZS0+c3Vib3JkaW5hdGUtPnN1Ym9yZGluYXRlID49CisJCQkg ICAgKGJyaWRnZS0+c3Vib3JkaW5hdGUtPmJ1c25fcmVzLmVuZCA+PQogCQkJICAgICB0cC0+cGRl di0+YnVzLT5udW1iZXIpKSB7CiAJCQkJdGczX2ZsYWdfc2V0KHRwLCA1NzAxX0RNQV9CVUcpOwog CQkJCXBjaV9kZXZfcHV0KGJyaWRnZSk7CkBAIC0xNDIyNCw3ICsxNDIyNCw3IEBAIHN0YXRpYyBp bnQgX19kZXZpbml0IHRnM19nZXRfaW52YXJpYW50cygKIAkJCWlmIChicmlkZ2UgJiYgYnJpZGdl LT5zdWJvcmRpbmF0ZSAmJgogCQkJICAgIChicmlkZ2UtPnN1Ym9yZGluYXRlLT5udW1iZXIgPD0K IAkJCSAgICAgdHAtPnBkZXYtPmJ1cy0+bnVtYmVyKSAmJgotCQkJICAgIChicmlkZ2UtPnN1Ym9y ZGluYXRlLT5zdWJvcmRpbmF0ZSA+PQorCQkJICAgIChicmlkZ2UtPnN1Ym9yZGluYXRlLT5idXNu X3Jlcy5lbmQgPj0KIAkJCSAgICAgdHAtPnBkZXYtPmJ1cy0+bnVtYmVyKSkgewogCQkJCXRnM19m bGFnX3NldCh0cCwgNDBCSVRfRE1BX0JVRyk7CiAJCQkJcGNpX2Rldl9wdXQoYnJpZGdlKTsKSW5k ZXg6IGxpbnV4LTIuNi9kcml2ZXJzL3BhcmlzYy9kaW5vLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgt Mi42Lm9yaWcvZHJpdmVycy9wYXJpc2MvZGluby5jCisrKyBsaW51eC0yLjYvZHJpdmVycy9wYXJp c2MvZGluby5jCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIGludCBkaW5vX2NmZ19yZWFkKHN0 cnVjdCBwY2lfYnVzCiAJCWludCBzaXplLCB1MzIgKnZhbCkKIHsKIAlzdHJ1Y3QgZGlub19kZXZp Y2UgKmQgPSBESU5PX0RFVihwYXJpc2Nfd2Fsa190cmVlKGJ1cy0+YnJpZGdlKSk7Ci0JdTMyIGxv Y2FsX2J1cyA9IChidXMtPnBhcmVudCA9PSBOVUxMKSA/IDAgOiBidXMtPnNlY29uZGFyeTsKKwl1 MzIgbG9jYWxfYnVzID0gKGJ1cy0+cGFyZW50ID09IE5VTEwpID8gMCA6IGJ1cy0+YnVzbl9yZXMu c3RhcnQ7CiAJdTMyIHYgPSBESU5PX0NGR19UT0sobG9jYWxfYnVzLCBkZXZmbiwgd2hlcmUgJiB+ Myk7CiAJdm9pZCBfX2lvbWVtICpiYXNlX2FkZHIgPSBkLT5oYmEuYmFzZV9hZGRyOwogCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CkBAIC0yMDksNyArMjA5LDcgQEAgc3RhdGljIGludCBkaW5vX2NmZ193 cml0ZShzdHJ1Y3QgcGNpX2J1cwogCWludCBzaXplLCB1MzIgdmFsKQogewogCXN0cnVjdCBkaW5v X2RldmljZSAqZCA9IERJTk9fREVWKHBhcmlzY193YWxrX3RyZWUoYnVzLT5icmlkZ2UpKTsKLQl1 MzIgbG9jYWxfYnVzID0gKGJ1cy0+cGFyZW50ID09IE5VTEwpID8gMCA6IGJ1cy0+c2Vjb25kYXJ5 OworCXUzMiBsb2NhbF9idXMgPSAoYnVzLT5wYXJlbnQgPT0gTlVMTCkgPyAwIDogYnVzLT5idXNu X3Jlcy5zdGFydDsKIAl1MzIgdiA9IERJTk9fQ0ZHX1RPSyhsb2NhbF9idXMsIGRldmZuLCB3aGVy ZSAmIH4zKTsKIAl2b2lkIF9faW9tZW0gKmJhc2VfYWRkciA9IGQtPmhiYS5iYXNlX2FkZHI7CiAJ dW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTU1NCw3ICs1NTQsNyBAQCBkaW5vX2ZpeHVwX2J1cyhz dHJ1Y3QgcGNpX2J1cyAqYnVzKQogICAgICAgICBzdHJ1Y3QgZGlub19kZXZpY2UgKmRpbm9fZGV2 ID0gRElOT19ERVYocGFyaXNjX3dhbGtfdHJlZShidXMtPmJyaWRnZSkpOwogCiAJREJHKEtFUk5f V0FSTklORyAiJXMoMHglcCkgYnVzICVkIHBsYXRmb3JtX2RhdGEgMHglcFxuIiwKLQkgICAgX19m dW5jX18sIGJ1cywgYnVzLT5zZWNvbmRhcnksCisJICAgIF9fZnVuY19fLCBidXMsIGJ1cy0+YnVz bl9yZXMuc3RhcnQsCiAJICAgIGJ1cy0+YnJpZGdlLT5wbGF0Zm9ybV9kYXRhKTsKIAogCS8qIEZp cm13YXJlIGRvZXNuJ3Qgc2V0IHVwIGNhcmQtbW9kZSBkaW5vLCBzbyB3ZSBoYXZlIHRvICovCkBA IC04OTgsNiArODk4LDcgQEAgc3RhdGljIGludCBfX2luaXQgZGlub19wcm9iZShzdHJ1Y3QgcGFy aQogCUxJU1RfSEVBRChyZXNvdXJjZXMpOwogCXN0cnVjdCBwY2lfYnVzICpidXM7CiAJdW5zaWdu ZWQgbG9uZyBocGEgPSBkZXYtPmhwYS5zdGFydDsKKwlpbnQgbWF4OwogCiAJbmFtZSA9ICJEaW5v IjsKIAlpZiAoaXNfY2FyZF9kaW5vKCZkZXYtPmlkKSkgewpAQCAtMTAwMiwxMyArMTAwMywxMyBA QCBzdGF0aWMgaW50IF9faW5pdCBkaW5vX3Byb2JlKHN0cnVjdCBwYXJpCiAJCXJldHVybiAwOwog CX0KIAotCXBjaV9idXNfdXBkYXRlX2J1c25fcmVzX2VuZChidXMsIGJ1cy0+c3Vib3JkaW5hdGUp OwotCWJ1cy0+c3Vib3JkaW5hdGUgPSBwY2lfc2Nhbl9jaGlsZF9idXMoYnVzKTsKKwltYXggPSBw Y2lfc2Nhbl9jaGlsZF9idXMoYnVzKTsKKwlwY2lfYnVzX3VwZGF0ZV9idXNuX3Jlc19lbmQoYnVz LCBtYXgpOwogCiAJLyogVGhpcyBjb2RlICpkZXBlbmRzKiBvbiBzY2FubmluZyBiZWluZyBzaW5n bGUgdGhyZWFkZWQKIAkgKiBpZiBpdCBpc24ndCwgdGhpcyBnbG9iYWwgYnVzIG51bWJlciBjb3Vu dCB3aWxsIGZhaWwKIAkgKi8KLQlkaW5vX2N1cnJlbnRfYnVzID0gYnVzLT5zdWJvcmRpbmF0ZSAr IDE7CisJZGlub19jdXJyZW50X2J1cyA9IG1heCArIDE7CiAJcGNpX2J1c19hc3NpZ25fcmVzb3Vy Y2VzKGJ1cyk7CiAJcGNpX2J1c19hZGRfZGV2aWNlcyhidXMpOwogCXJldHVybiAwOwpJbmRleDog bGludXgtMi42L2RyaXZlcnMvcGFyaXNjL2lvc2FwaWMuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0y LjYub3JpZy9kcml2ZXJzL3BhcmlzYy9pb3NhcGljLmMKKysrIGxpbnV4LTIuNi9kcml2ZXJzL3Bh cmlzYy9pb3NhcGljLmMKQEAgLTUzMiw3ICs1MzIsNyBAQCBpb3NhcGljX3hsYXRlX3BpbihzdHJ1 Y3QgaW9zYXBpY19pbmZvICppCiAJCWludHJfc2xvdCA9IFBDSV9TTE9UKHBjaWRldi0+ZGV2Zm4p OwogCX0KIAlEQkdfSVJUKCJpb3NhcGljX3hsYXRlX3BpbjogIGJ1cyAlZCBzbG90ICVkIHBpbiAl ZFxuIiwKLQkJCQlwY2lkZXYtPmJ1cy0+c2Vjb25kYXJ5LCBpbnRyX3Nsb3QsIGludHJfcGluKTsK KwkJCXBjaWRldi0+YnVzLT5idXNuX3Jlcy5zdGFydCwgaW50cl9zbG90LCBpbnRyX3Bpbik7CiAK IAlyZXR1cm4gaXJ0X2ZpbmRfaXJxbGluZShpc2ksIGludHJfc2xvdCwgaW50cl9waW4pOwogfQpJ bmRleDogbGludXgtMi42L2RyaXZlcnMvcGFyaXNjL2xiYV9wY2kuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs aW51eC0yLjYub3JpZy9kcml2ZXJzL3BhcmlzYy9sYmFfcGNpLmMKKysrIGxpbnV4LTIuNi9kcml2 ZXJzL3BhcmlzYy9sYmFfcGNpLmMKQEAgLTE4OSw4ICsxODksOCBAQCBsYmFfZHVtcF9yZXMoc3Ry dWN0IHJlc291cmNlICpyLCBpbnQgZCkKIAogc3RhdGljIGludCBsYmFfZGV2aWNlX3ByZXNlbnQo dTggYnVzLCB1OCBkZm4sIHN0cnVjdCBsYmFfZGV2aWNlICpkKQogewotCXU4IGZpcnN0X2J1cyA9 IGQtPmhiYS5oYmFfYnVzLT5zZWNvbmRhcnk7Ci0JdTggbGFzdF9zdWJfYnVzID0gZC0+aGJhLmhi YV9idXMtPnN1Ym9yZGluYXRlOworCXU4IGZpcnN0X2J1cyA9IGQtPmhiYS5oYmFfYnVzLT5idXNu X3Jlcy5zdGFydDsKKwl1OCBsYXN0X3N1Yl9idXMgPSBkLT5oYmEuaGJhX2J1cy0+YnVzbl9yZXMu ZW5kOwogCiAJaWYgKChidXMgPCBmaXJzdF9idXMpIHx8CiAJICAgIChidXMgPiBsYXN0X3N1Yl9i dXMpIHx8CkBAIC0zNjQsNyArMzY0LDcgQEAgbGJhX3JkX2NmZyhzdHJ1Y3QgbGJhX2RldmljZSAq ZCwgdTMyIHRvawogc3RhdGljIGludCBlbHJveV9jZmdfcmVhZChzdHJ1Y3QgcGNpX2J1cyAqYnVz LCB1bnNpZ25lZCBpbnQgZGV2Zm4sIGludCBwb3MsIGludCBzaXplLCB1MzIgKmRhdGEpCiB7CiAJ c3RydWN0IGxiYV9kZXZpY2UgKmQgPSBMQkFfREVWKHBhcmlzY193YWxrX3RyZWUoYnVzLT5icmlk Z2UpKTsKLQl1MzIgbG9jYWxfYnVzID0gKGJ1cy0+cGFyZW50ID09IE5VTEwpID8gMCA6IGJ1cy0+ c2Vjb25kYXJ5OworCXUzMiBsb2NhbF9idXMgPSAoYnVzLT5wYXJlbnQgPT0gTlVMTCkgPyAwIDog YnVzLT5idXNuX3Jlcy5zdGFydDsKIAl1MzIgdG9rID0gTEJBX0NGR19UT0sobG9jYWxfYnVzLCBk ZXZmbik7CiAJdm9pZCBfX2lvbWVtICpkYXRhX3JlZyA9IGQtPmhiYS5iYXNlX2FkZHIgKyBMQkFf UENJX0NGR19EQVRBOwogCkBAIC0zODAsNyArMzgwLDcgQEAgc3RhdGljIGludCBlbHJveV9jZmdf cmVhZChzdHJ1Y3QgcGNpX2J1cwogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAoTEJBX1NLSVBfUFJP QkUoZCkgJiYgIWxiYV9kZXZpY2VfcHJlc2VudChidXMtPnNlY29uZGFyeSwgZGV2Zm4sIGQpKSB7 CisJaWYgKExCQV9TS0lQX1BST0JFKGQpICYmICFsYmFfZGV2aWNlX3ByZXNlbnQoYnVzLT5idXNu X3Jlcy5zdGFydCwgZGV2Zm4sIGQpKSB7CiAJCURCR19DRkcoIiVzKCV4KyUyeCkgLT4gLTEgKGIp XG4iLCBfX2Z1bmNfXywgdG9rLCBwb3MpOwogCQkvKiBlaXRoZXIgZG9uJ3Qgd2FudCB0byBsb29r IG9yIGtub3cgZGV2aWNlIGlzbid0IHByZXNlbnQuICovCiAJCSpkYXRhID0gfjBVOwpAQCAtNDMx LDcgKzQzMSw3IEBAIGxiYV93cl9jZmcoc3RydWN0IGxiYV9kZXZpY2UgKmQsIHUzMiB0b2sKIHN0 YXRpYyBpbnQgZWxyb3lfY2ZnX3dyaXRlKHN0cnVjdCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGlu dCBkZXZmbiwgaW50IHBvcywgaW50IHNpemUsIHUzMiBkYXRhKQogewogCXN0cnVjdCBsYmFfZGV2 aWNlICpkID0gTEJBX0RFVihwYXJpc2Nfd2Fsa190cmVlKGJ1cy0+YnJpZGdlKSk7Ci0JdTMyIGxv Y2FsX2J1cyA9IChidXMtPnBhcmVudCA9PSBOVUxMKSA/IDAgOiBidXMtPnNlY29uZGFyeTsKKwl1 MzIgbG9jYWxfYnVzID0gKGJ1cy0+cGFyZW50ID09IE5VTEwpID8gMCA6IGJ1cy0+YnVzbl9yZXMu c3RhcnQ7CiAJdTMyIHRvayA9IExCQV9DRkdfVE9LKGxvY2FsX2J1cyxkZXZmbik7CiAKIAlpZiAo KHBvcyA+IDI1NSkgfHwgKGRldmZuID4gMjU1KSkKQEAgLTQ0NCw3ICs0NDQsNyBAQCBzdGF0aWMg aW50IGVscm95X2NmZ193cml0ZShzdHJ1Y3QgcGNpX2J1CiAJCXJldHVybiAwOwogCX0KIAotCWlm IChMQkFfU0tJUF9QUk9CRShkKSAmJiAoIWxiYV9kZXZpY2VfcHJlc2VudChidXMtPnNlY29uZGFy eSwgZGV2Zm4sIGQpKSkgeworCWlmIChMQkFfU0tJUF9QUk9CRShkKSAmJiAoIWxiYV9kZXZpY2Vf cHJlc2VudChidXMtPmJ1c25fcmVzLnN0YXJ0LCBkZXZmbiwgZCkpKSB7CiAJCURCR19DRkcoIiVz KCV4KyUyeCkgPSAweCV4IChiKVxuIiwgX19mdW5jX18sIHRvaywgcG9zLGRhdGEpOwogCQlyZXR1 cm4gMTsgLyogTmV3IFdvcmthcm91bmQgKi8KIAl9CkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGlj IHN0cnVjdCBwY2lfb3BzIGVscm95X2NmZ19vcHMgPSB7CiBzdGF0aWMgaW50IG1lcmN1cnlfY2Zn X3JlYWQoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50IGRldmZuLCBpbnQgcG9zLCBp bnQgc2l6ZSwgdTMyICpkYXRhKQogewogCXN0cnVjdCBsYmFfZGV2aWNlICpkID0gTEJBX0RFVihw YXJpc2Nfd2Fsa190cmVlKGJ1cy0+YnJpZGdlKSk7Ci0JdTMyIGxvY2FsX2J1cyA9IChidXMtPnBh cmVudCA9PSBOVUxMKSA/IDAgOiBidXMtPnNlY29uZGFyeTsKKwl1MzIgbG9jYWxfYnVzID0gKGJ1 cy0+cGFyZW50ID09IE5VTEwpID8gMCA6IGJ1cy0+YnVzbl9yZXMuc3RhcnQ7CiAJdTMyIHRvayA9 IExCQV9DRkdfVE9LKGxvY2FsX2J1cywgZGV2Zm4pOwogCXZvaWQgX19pb21lbSAqZGF0YV9yZWcg PSBkLT5oYmEuYmFzZV9hZGRyICsgTEJBX1BDSV9DRkdfREFUQTsKIApAQCAtNTE0LDcgKzUxNCw3 IEBAIHN0YXRpYyBpbnQgbWVyY3VyeV9jZmdfd3JpdGUoc3RydWN0IHBjaV8KIHsKIAlzdHJ1Y3Qg bGJhX2RldmljZSAqZCA9IExCQV9ERVYocGFyaXNjX3dhbGtfdHJlZShidXMtPmJyaWRnZSkpOwog CXZvaWQgX19pb21lbSAqZGF0YV9yZWcgPSBkLT5oYmEuYmFzZV9hZGRyICsgTEJBX1BDSV9DRkdf REFUQTsKLQl1MzIgbG9jYWxfYnVzID0gKGJ1cy0+cGFyZW50ID09IE5VTEwpID8gMCA6IGJ1cy0+ c2Vjb25kYXJ5OworCXUzMiBsb2NhbF9idXMgPSAoYnVzLT5wYXJlbnQgPT0gTlVMTCkgPyAwIDog YnVzLT5idXNuX3Jlcy5zdGFydDsKIAl1MzIgdG9rID0gTEJBX0NGR19UT0sobG9jYWxfYnVzLGRl dmZuKTsKIAogCWlmICgocG9zID4gMjU1KSB8fCAoZGV2Zm4gPiAyNTUpKQpAQCAtNjM2LDcgKzYz Niw3IEBAIGxiYV9maXh1cF9idXMoc3RydWN0IHBjaV9idXMgKmJ1cykKIAlzdHJ1Y3QgbGJhX2Rl dmljZSAqbGRldiA9IExCQV9ERVYocGFyaXNjX3dhbGtfdHJlZShidXMtPmJyaWRnZSkpOwogCiAJ REJHKCJsYmFfZml4dXBfYnVzKDB4JXApIGJ1cyAlZCBwbGF0Zm9ybV9kYXRhIDB4JXBcbiIsCi0J CWJ1cywgYnVzLT5zZWNvbmRhcnksIGJ1cy0+YnJpZGdlLT5wbGF0Zm9ybV9kYXRhKTsKKwkJYnVz LCAoaW50KWJ1cy0+YnVzbl9yZXMuc3RhcnQsIGJ1cy0+YnJpZGdlLT5wbGF0Zm9ybV9kYXRhKTsK IAogCS8qCiAJKiogUHJvcGVybHkgU2V0dXAgTU1JTyByZXNvdXJjZXMgZm9yIHRoaXMgYnVzLgpA QCAtMTM2Niw2ICsxMzY2LDcgQEAgbGJhX2RyaXZlcl9wcm9iZShzdHJ1Y3QgcGFyaXNjX2Rldmlj ZSAqZAogCXZvaWQgKnRtcF9vYmo7CiAJY2hhciAqdmVyc2lvbjsKIAl2b2lkIF9faW9tZW0gKmFk ZHIgPSBpb3JlbWFwX25vY2FjaGUoZGV2LT5ocGEuc3RhcnQsIDQwOTYpOworCWludCBtYXg7CiAK IAkvKiBSZWFkIEhXIFJldiBGaXJzdCAqLwogCWZ1bmNfY2xhc3MgPSBSRUFEX1JFRzMyKGFkZHIg KyBMQkFfRkNMQVNTKTsKQEAgLTE1MTQsNyArMTUxNSw3IEBAIGxiYV9kcml2ZXJfcHJvYmUoc3Ry dWN0IHBhcmlzY19kZXZpY2UgKmQKIAkJcmV0dXJuIDA7CiAJfQogCi0JbGJhX2J1cy0+c3Vib3Jk aW5hdGUgPSBwY2lfc2Nhbl9jaGlsZF9idXMobGJhX2J1cyk7CisJbWF4ID0gcGNpX3NjYW5fY2hp bGRfYnVzKGxiYV9idXMpOwogCiAJLyogVGhpcyBpcyBpbiBsaWV1IG9mIGNhbGxpbmcgcGNpX2Fz c2lnbl91bmFzc2lnbmVkX3Jlc291cmNlcygpICovCiAJaWYgKGlzX3BkY19wYXQoKSkgewpAQCAt MTU0NCw3ICsxNTQ1LDcgQEAgbGJhX2RyaXZlcl9wcm9iZShzdHJ1Y3QgcGFyaXNjX2RldmljZSAq ZAogCQlsYmFfZGV2LT5mbGFncyB8PSBMQkFfRkxBR19TS0lQX1BST0JFOwogCX0KIAotCWxiYV9u ZXh0X2J1cyA9IGxiYV9idXMtPnN1Ym9yZGluYXRlICsgMTsKKwlsYmFfbmV4dF9idXMgPSBtYXgg KyAxOwogCXBjaV9idXNfYWRkX2RldmljZXMobGJhX2J1cyk7CiAKIAkvKiBXaGV3ISBGaW5hbGx5 IGRvbmUhIFRlbGwgc2VydmljZXMgd2UgZ290IHRoaXMgb25lIGNvdmVyZWQuICovCkluZGV4OiBs aW51eC0yLjYvZHJpdmVycy9wY2kvaG90cGx1Zy1wY2kuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0y LjYub3JpZy9kcml2ZXJzL3BjaS9ob3RwbHVnLXBjaS5jCisrKyBsaW51eC0yLjYvZHJpdmVycy9w Y2kvaG90cGx1Zy1wY2kuYwpAQCAtNyw3ICs3LDcgQEAKIGludCBfX3JlZiBwY2lfaHBfYWRkX2Jy aWRnZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogewogCXN0cnVjdCBwY2lfYnVzICpwYXJlbnQgPSBk ZXYtPmJ1czsKLQlpbnQgcGFzcywgYnVzbnIgPSBwYXJlbnQtPnNlY29uZGFyeTsKKwlpbnQgcGFz cywgYnVzbnIgPSBwYXJlbnQtPmJ1c25fcmVzLnN0YXJ0OwogCiAJZm9yIChwYXNzID0gMDsgcGFz cyA8IDI7IHBhc3MrKykKIAkJYnVzbnIgPSBwY2lfc2Nhbl9icmlkZ2UocGFyZW50LCBkZXYsIGJ1 c25yLCBwYXNzKTsKSW5kZXg6IGxpbnV4LTIuNi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBf Z2x1ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2RyaXZlcnMvcGNpL2hvdHBsdWcv YWNwaXBocF9nbHVlLmMKKysrIGxpbnV4LTIuNi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBf Z2x1ZS5jCkBAIC0xMDAsMTEgKzEwMCwxMSBAQCBzdGF0aWMgaW50IHBvc3RfZG9ja19maXh1cHMo c3RydWN0IG5vdGlmCiAJCQlQQ0lfUFJJTUFSWV9CVVMsCiAJCQkmYnVzZXMpOwogCi0JaWYgKCgo YnVzZXMgPj4gOCkgJiAweGZmKSAhPSBidXMtPnNlY29uZGFyeSkgeworCWlmICgoKGJ1c2VzID4+ IDgpICYgMHhmZikgIT0gYnVzLT5idXNuX3Jlcy5zdGFydCkgewogCQlidXNlcyA9IChidXNlcyAm IDB4ZmYwMDAwMDApCiAJCQl8ICgodW5zaWduZWQgaW50KShidXMtPnByaW1hcnkpICAgICA8PCAg MCkKLQkJCXwgKCh1bnNpZ25lZCBpbnQpKGJ1cy0+c2Vjb25kYXJ5KSAgIDw8ICA4KQotCQkJfCAo KHVuc2lnbmVkIGludCkoYnVzLT5zdWJvcmRpbmF0ZSkgPDwgMTYpOworCQkJfCAoKHVuc2lnbmVk IGludCkoYnVzLT5idXNuX3Jlcy5zdGFydCkgICA8PCAgOCkKKwkJCXwgKCh1bnNpZ25lZCBpbnQp KGJ1cy0+YnVzbl9yZXMuZW5kKSA8PCAxNik7CiAJCXBjaV93cml0ZV9jb25maWdfZHdvcmQoYnVz LT5zZWxmLCBQQ0lfUFJJTUFSWV9CVVMsIGJ1c2VzKTsKIAl9CiAJcmV0dXJuIE5PVElGWV9PSzsK QEAgLTYyOCw3ICs2MjgsNyBAQCBzdGF0aWMgdW5zaWduZWQgY2hhciBhY3BpcGhwX21heF9idXNu cihzCiAJICogYnVzLT5zdWJvcmRpbmF0ZSB2YWx1ZSBiZWNhdXNlIGl0IGNvdWxkIGhhdmUKIAkg KiBwYWRkaW5nIGluIGl0LgogCSAqLwotCW1heCA9IGJ1cy0+c2Vjb25kYXJ5OworCW1heCA9IGJ1 cy0+YnVzbl9yZXMuc3RhcnQ7CiAKIAlsaXN0X2Zvcl9lYWNoKHRtcCwgJmJ1cy0+Y2hpbGRyZW4p IHsKIAkJbiA9IHBjaV9idXNfbWF4X2J1c25yKHBjaV9idXNfYih0bXApKTsKSW5kZXg6IGxpbnV4 LTIuNi9kcml2ZXJzL3BjaS9ob3RwbHVnL3NocGNocF9zeXNmcy5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp bnV4LTIuNi5vcmlnL2RyaXZlcnMvcGNpL2hvdHBsdWcvc2hwY2hwX3N5c2ZzLmMKKysrIGxpbnV4 LTIuNi9kcml2ZXJzL3BjaS9ob3RwbHVnL3NocGNocF9zeXNmcy5jCkBAIC03MywxMyArNzMsMTMg QEAgc3RhdGljIHNzaXplX3Qgc2hvd19jdHJsIChzdHJ1Y3QgZGV2aWNlCiAJCX0KIAl9CiAJb3V0 ICs9IHNwcmludGYob3V0LCAiRnJlZSByZXNvdXJjZXM6IGJ1cyBudW1iZXJzXG4iKTsKLQlmb3Ig KGJ1c25yID0gYnVzLT5zZWNvbmRhcnk7IGJ1c25yIDw9IGJ1cy0+c3Vib3JkaW5hdGU7IGJ1c25y KyspIHsKKwlmb3IgKGJ1c25yID0gYnVzLT5idXNuX3Jlcy5zdGFydDsgYnVzbnIgPD0gYnVzLT5i dXNuX3Jlcy5lbmQ7IGJ1c25yKyspIHsKIAkJaWYgKCFwY2lfZmluZF9idXMocGNpX2RvbWFpbl9u cihidXMpLCBidXNucikpCiAJCQlicmVhazsKIAl9Ci0JaWYgKGJ1c25yIDwgYnVzLT5zdWJvcmRp bmF0ZSkKKwlpZiAoYnVzbnIgPCBidXMtPmJ1c25fcmVzLmVuZCkKIAkJb3V0ICs9IHNwcmludGYo b3V0LCAic3RhcnQgPSAlOC44eCwgbGVuZ3RoID0gJTguOHhcbiIsCi0JCQkJYnVzbnIsIChidXMt PnN1Ym9yZGluYXRlIC0gYnVzbnIpKTsKKwkJCQlidXNuciwgKGludCkoYnVzLT5idXNuX3Jlcy5l bmQgLSBidXNucikpOwogCiAJcmV0dXJuIG91dCAtIGJ1ZjsKIH0KSW5kZXg6IGxpbnV4LTIuNi9k cml2ZXJzL3BjaS9pb3YuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9kcml2ZXJzL3Bj aS9pb3YuYworKysgbGludXgtMi42L2RyaXZlcnMvcGNpL2lvdi5jCkBAIC00Nyw3ICs0Nyw3IEBA IHN0YXRpYyBzdHJ1Y3QgcGNpX2J1cyAqdmlydGZuX2FkZF9idXMoc3QKIAlpZiAoIWNoaWxkKQog CQlyZXR1cm4gTlVMTDsKIAotCWNoaWxkLT5zdWJvcmRpbmF0ZSA9IGJ1c25yOworCXBjaV9idXNf aW5zZXJ0X2J1c25fcmVzKGNoaWxkLCBidXNuciwgYnVzbnIpOwogCWNoaWxkLT5kZXYucGFyZW50 ID0gYnVzLT5icmlkZ2U7CiAJcmMgPSBwY2lfYnVzX2FkZF9jaGlsZChjaGlsZCk7CiAJaWYgKHJj KSB7CkBAIC0zMjcsNyArMzI3LDcgQEAgc3RhdGljIGludCBzcmlvdl9lbmFibGUoc3RydWN0IHBj aV9kZXYgKgogCWlvdi0+b2Zmc2V0ID0gb2Zmc2V0OwogCWlvdi0+c3RyaWRlID0gc3RyaWRlOwog Ci0JaWYgKHZpcnRmbl9idXMoZGV2LCBucl92aXJ0Zm4gLSAxKSA+IGRldi0+YnVzLT5zdWJvcmRp bmF0ZSkgeworCWlmICh2aXJ0Zm5fYnVzKGRldiwgbnJfdmlydGZuIC0gMSkgPiBkZXYtPmJ1cy0+ YnVzbl9yZXMuZW5kKSB7CiAJCWRldl9lcnIoJmRldi0+ZGV2LCAiU1ItSU9WOiBidXMgbnVtYmVy IG91dCBvZiByYW5nZVxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KSW5kZXg6IGxpbnV4LTIu Ni9kcml2ZXJzL3BjaS9wY2kuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9kcml2ZXJz L3BjaS9wY2kuYworKysgbGludXgtMi42L2RyaXZlcnMvcGNpL3BjaS5jCkBAIC0xMDksNyArMTA5 LDcgQEAgdW5zaWduZWQgY2hhciBwY2lfYnVzX21heF9idXNucihzdHJ1Y3QgcAogCXN0cnVjdCBs aXN0X2hlYWQgKnRtcDsKIAl1bnNpZ25lZCBjaGFyIG1heCwgbjsKIAotCW1heCA9IGJ1cy0+c3Vi b3JkaW5hdGU7CisJbWF4ID0gYnVzLT5idXNuX3Jlcy5lbmQ7CiAJbGlzdF9mb3JfZWFjaCh0bXAs ICZidXMtPmNoaWxkcmVuKSB7CiAJCW4gPSBwY2lfYnVzX21heF9idXNucihwY2lfYnVzX2IodG1w KSk7CiAJCWlmKG4gPiBtYXgpCkluZGV4OiBsaW51eC0yLjYvZHJpdmVycy9wY2kvcHJvYmUuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9kcml2ZXJzL3BjaS9wcm9iZS5jCisrKyBsaW51 eC0yLjYvZHJpdmVycy9wY2kvcHJvYmUuYwpAQCAtMzg4LDggKzM4OCw3IEBAIHZvaWQgX19kZXZp bml0IHBjaV9yZWFkX2JyaWRnZV9iYXNlcyhzdHIKIAlpZiAocGNpX2lzX3Jvb3RfYnVzKGNoaWxk KSkJLyogSXQncyBhIGhvc3QgYnVzLCBub3RoaW5nIHRvIHJlYWQgKi8KIAkJcmV0dXJuOwogCi0J ZGV2X2luZm8oJmRldi0+ZGV2LCAiUENJIGJyaWRnZSB0byBbYnVzICUwMngtJTAyeF0lc1xuIiwK LQkJIGNoaWxkLT5zZWNvbmRhcnksIGNoaWxkLT5zdWJvcmRpbmF0ZSwKKwlkZXZfaW5mbygmZGV2 LT5kZXYsICJQQ0kgYnJpZGdlIHRvICVwUiVzXG4iLCAmY2hpbGQtPmJ1c25fcmVzLAogCQkgZGV2 LT50cmFuc3BhcmVudCA/ICIgKHN1YnRyYWN0aXZlIGRlY29kZSkiIDogIiIpOwogCiAJcGNpX2J1 c19yZW1vdmVfcmVzb3VyY2VzKGNoaWxkKTsKQEAgLTYwNiw5ICs2MDUsOCBAQCBzdGF0aWMgc3Ry dWN0IHBjaV9idXMgKnBjaV9hbGxvY19jaGlsZF9iCiAJICogU2V0IHVwIHRoZSBwcmltYXJ5LCBz ZWNvbmRhcnkgYW5kIHN1Ym9yZGluYXRlCiAJICogYnVzIG51bWJlcnMuCiAJICovCi0JY2hpbGQt Pm51bWJlciA9IGNoaWxkLT5zZWNvbmRhcnkgPSBidXNucjsKLQljaGlsZC0+cHJpbWFyeSA9IHBh cmVudC0+c2Vjb25kYXJ5OwotCWNoaWxkLT5zdWJvcmRpbmF0ZSA9IDB4ZmY7CisJY2hpbGQtPm51 bWJlciA9IGJ1c25yOworCWNoaWxkLT5wcmltYXJ5ID0gcGFyZW50LT5idXNuX3Jlcy5zdGFydDsK IAogCWlmICghYnJpZGdlKQogCQlyZXR1cm4gY2hpbGQ7CkBAIC02NjgsOSArNjY2LDggQEAgc3Rh dGljIHZvaWQgX19kZXZpbml0IHBjaV9idXNfdXBkYXRlX3RvcAogCQlyZXMgPSAmcGFyZW50LT5i dXNuX3JlczsKIAkJaWYgKHJlcyA9PSBwYXJlbnRfcmVzKQogCQkJYnJlYWs7Ci0JCXBhcmVudC0+ c3Vib3JkaW5hdGUgKz0gc2l6ZTsKIAkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKHBhcmVudC0+c2Vs ZiwgUENJX1NVQk9SRElOQVRFX0JVUywKLQkJCQkJIHBhcmVudC0+c3Vib3JkaW5hdGUpOworCQkJ CQkgcGFyZW50LT5idXNuX3Jlcy5lbmQpOwogCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwYXJl bnQtPmRldiwKIAkJCQkiYnVzbl9yZXM6ICVzICUwMmx4IHRvICVwUlxuIiwKIAkJCQkoc2l6ZSA+ IDApID8gImV4dGVuZGVkIiA6ICJzaHJ1bmsiLApAQCAtODMyLDEyICs4MjksMTIgQEAgaW50IF9f ZGV2aW5pdCBwY2lfc2Nhbl9icmlkZ2Uoc3RydWN0IHBjaQogCQkgKiB0byBzZWUgaWYgdGhlIG5l dyBzZXR0aW5nIGdvb2QuCiAJCSAqLwogCQlpZiAocHJpbWFyeSAhPSBjaGlsZC0+cHJpbWFyeSB8 fAotCQkgICAgc2Vjb25kYXJ5ICE9IGNoaWxkLT5zZWNvbmRhcnkgfHwKLQkJICAgIHN1Ym9yZGlu YXRlICE9IGNoaWxkLT5zdWJvcmRpbmF0ZSkgeworCQkgICAgc2Vjb25kYXJ5ICE9IGNoaWxkLT5i dXNuX3Jlcy5zdGFydCB8fAorCQkgICAgc3Vib3JkaW5hdGUgIT0gY2hpbGQtPmJ1c25fcmVzLmVu ZCkgewogCQkJZGV2X2luZm8oJmRldi0+ZGV2LAogCQkJCSJzb21lb25lIGNoYW5nZWQgYnVzIHJl Z2lzdGVyIGZyb20gcHJpOiUwMngsIHNlYzolMDJ4LCBzdWI6JTAyeCB0byBwcmk6JTAyeCwgc2Vj OiUwMngsIHN1YjolMDJ4XG4iLAotCQkJCWNoaWxkLT5wcmltYXJ5LCBjaGlsZC0+c2Vjb25kYXJ5 LAotCQkJCWNoaWxkLT5zdWJvcmRpbmF0ZSwKKwkJCQljaGlsZC0+cHJpbWFyeSwgKGludCljaGls ZC0+YnVzbl9yZXMuc3RhcnQsCisJCQkJKGludCljaGlsZC0+YnVzbl9yZXMuZW5kLAogCQkJCXBy aW1hcnksIHNlY29uZGFyeSwgc3Vib3JkaW5hdGUpOwogCQkJaWYgKCFsaXN0X2VtcHR5KCZkZXYt PnN1Ym9yZGluYXRlLT5kZXZpY2VzKSkgewogCQkJCXUzMiBvbGRfYnVzZXM7CkBAIC04NTIsOCAr ODQ5LDggQEAgaW50IF9fZGV2aW5pdCBwY2lfc2Nhbl9icmlkZ2Uoc3RydWN0IHBjaQogCQkJCSAq LwogCQkJCW9sZF9idXNlcyA9IChidXNlcyAmIDB4ZmYwMDAwMDApCiAJCQkJICAgfCAoKHVuc2ln bmVkIGludCkoY2hpbGQtPnByaW1hcnkpICAgICA8PCAgMCkKLQkJCQkgICB8ICgodW5zaWduZWQg aW50KShjaGlsZC0+c2Vjb25kYXJ5KSAgIDw8ICA4KQotCQkJCSAgIHwgKCh1bnNpZ25lZCBpbnQp KGNoaWxkLT5zdWJvcmRpbmF0ZSkgPDwgMTYpOworCQkJCSAgIHwgKCh1bnNpZ25lZCBpbnQpKGNo aWxkLT5idXNuX3Jlcy5zdGFydCkgICA8PCAgOCkKKwkJCQkgICB8ICgodW5zaWduZWQgaW50KShj aGlsZC0+YnVzbl9yZXMuZW5kKSA8PCAxNik7CiAJCQkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChk ZXYsIFBDSV9QUklNQVJZX0JVUywKIAkJCQkJCQkgb2xkX2J1c2VzKTsKIAkJCQlwY2lfc3RvcF9h bmRfcmVtb3ZlX2JlaGluZF9icmlkZ2UoZGV2KTsKQEAgLTkwMSw3ICs4OTgsNiBAQCBpbnQgX19k ZXZpbml0IHBjaV9zY2FuX2JyaWRnZShzdHJ1Y3QgcGNpCiAJCQlpZiAoIWNoaWxkKQogCQkJCWdv dG8gb3V0OwogCQkJY2hpbGQtPnByaW1hcnkgPSBwcmltYXJ5OwotCQkJY2hpbGQtPnN1Ym9yZGlu YXRlID0gc3Vib3JkaW5hdGU7CiAJCQljaGlsZC0+YnJpZGdlX2N0bCA9IGJjdGw7CiAKIAkJCXBj aV9idXNfaW5zZXJ0X2J1c25fcmVzKGNoaWxkLCBzZWNvbmRhcnksIHN1Ym9yZGluYXRlKTsKQEAg LTkxMCw4ICs5MDYsOCBAQCBpbnQgX19kZXZpbml0IHBjaV9zY2FuX2JyaWRnZShzdHJ1Y3QgcGNp CiAJCWNtYXggPSBfX3BjaV9zY2FuX2NoaWxkX2J1cyhjaGlsZCwgcGFzcyk7CiAJCWlmIChjbWF4 ID4gbWF4KQogCQkJbWF4ID0gY21heDsKLQkJaWYgKGNoaWxkLT5zdWJvcmRpbmF0ZSA+IG1heCkK LQkJCW1heCA9IGNoaWxkLT5zdWJvcmRpbmF0ZTsKKwkJaWYgKGNoaWxkLT5idXNuX3Jlcy5lbmQg PiBtYXgpCisJCQltYXggPSBjaGlsZC0+YnVzbl9yZXMuZW5kOwogCX0gZWxzZSB7CiAJCS8qCiAJ CSAqIFdlIG5lZWQgdG8gYXNzaWduIGEgbnVtYmVyIHRvIHRoaXMgYnVzIHdoaWNoIHdlIGFsd2F5 cwpAQCAtOTY1LDE1ICs5NjEsMTQgQEAgaW50IF9fZGV2aW5pdCBwY2lfc2Nhbl9icmlkZ2Uoc3Ry dWN0IHBjaQogCQlpZiAoIWNoaWxkKQogCQkJZ290byBvdXQ7CiAKLQkJY2hpbGQtPnN1Ym9yZGlu YXRlID0gYnVzbl9yZXMuZW5kOwogCQlwY2lfYnVzX3JlcGxhY2VfYnVzbl9yZXMoY2hpbGQsICZi dXNuX3Jlcyk7CiAKIAkJYnVzZXMgPSAoYnVzZXMgJiAweGZmMDAwMDAwKQogCQkgICAgICB8ICgo dW5zaWduZWQgaW50KShjaGlsZC0+cHJpbWFyeSkgICAgIDw8ICAwKQotCQkgICAgICB8ICgodW5z aWduZWQgaW50KShjaGlsZC0+c2Vjb25kYXJ5KSAgIDw8ICA4KQotCQkgICAgICB8ICgodW5zaWdu ZWQgaW50KShjaGlsZC0+c3Vib3JkaW5hdGUpIDw8IDE2KTsKKwkJICAgICAgfCAoKHVuc2lnbmVk IGludCkoY2hpbGQtPmJ1c25fcmVzLnN0YXJ0KSAgIDw8ICA4KQorCQkgICAgICB8ICgodW5zaWdu ZWQgaW50KShjaGlsZC0+YnVzbl9yZXMuZW5kKSA8PCAxNik7CiAKLQkJbWF4ID0gY2hpbGQtPnN1 Ym9yZGluYXRlOworCQltYXggPSBjaGlsZC0+YnVzbl9yZXMuZW5kOwogCiAJCS8qCiAJCSAqIHll bnRhLmMgZm9yY2VzIGEgc2Vjb25kYXJ5IGxhdGVuY3kgdGltZXIgb2YgMTc2LgpAQCAtOTk2LDEz ICs5OTEsMTIgQEAgaW50IF9fZGV2aW5pdCBwY2lfc2Nhbl9icmlkZ2Uoc3RydWN0IHBjaQogCQkv KgogCQkgKiBTZXQgdGhlIHN1Ym9yZGluYXRlIGJ1cyBudW1iZXIgdG8gaXRzIHJlYWwgdmFsdWUu CiAJCSAqLwotCQlpZiAoZGV2LT5pc19ob3RwbHVnX2JyaWRnZSAmJiBjaGlsZC0+c3Vib3JkaW5h dGUgPiBtYXggJiYKLQkJICAgIChtYXggLSBjaGlsZC0+c2Vjb25kYXJ5KSA8IEhPVFBMVUdfQlJJ REdFX1JFU0VSVkVfQlVTTlIpCi0JCQltYXggPSBtaW5fdChpbnQsIGNoaWxkLT5zZWNvbmRhcnkg KworCQlpZiAoZGV2LT5pc19ob3RwbHVnX2JyaWRnZSAmJiBjaGlsZC0+YnVzbl9yZXMuZW5kID4g bWF4ICYmCisJCSAgICAobWF4IC0gY2hpbGQtPmJ1c25fcmVzLnN0YXJ0KSA8IEhPVFBMVUdfQlJJ REdFX1JFU0VSVkVfQlVTTlIpCisJCQltYXggPSBtaW5fdChpbnQsIGNoaWxkLT5idXNuX3Jlcy5z dGFydCArCiAJCQkJCSBIT1RQTFVHX0JSSURHRV9SRVNFUlZFX0JVU05SLAotCQkJCSAgICBjaGls ZC0+c3Vib3JkaW5hdGUpOwotCQlzaHJpbmtfc2l6ZSA9IGNoaWxkLT5zdWJvcmRpbmF0ZSAtIG1h eDsKLQkJY2hpbGQtPnN1Ym9yZGluYXRlID0gbWF4OworCQkJCSAgICBjaGlsZC0+YnVzbl9yZXMu ZW5kKTsKKwkJc2hyaW5rX3NpemUgPSAoaW50KWNoaWxkLT5idXNuX3Jlcy5lbmQgLSBtYXg7CiAJ CXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIFBDSV9TVUJPUkRJTkFURV9CVVMsIG1heCk7CiAJ CXBjaV9idXNfdXBkYXRlX2J1c25fcmVzX2VuZChjaGlsZCwgbWF4KTsKIApAQCAtMTAyMywxOSAr MTAxNywxOSBAQCBpbnQgX19kZXZpbml0IHBjaV9zY2FuX2JyaWRnZShzdHJ1Y3QgcGNpCiAKIAkv KiBIYXMgb25seSB0cmlnZ2VyZWQgb24gQ2FyZEJ1cywgZml4dXAgaXMgaW4geWVudGFfc29ja2V0 ICovCiAJd2hpbGUgKGJ1cy0+cGFyZW50KSB7Ci0JCWlmICgoY2hpbGQtPnN1Ym9yZGluYXRlID4g YnVzLT5zdWJvcmRpbmF0ZSkgfHwKLQkJICAgIChjaGlsZC0+bnVtYmVyID4gYnVzLT5zdWJvcmRp bmF0ZSkgfHwKKwkJaWYgKChjaGlsZC0+YnVzbl9yZXMuZW5kID4gYnVzLT5idXNuX3Jlcy5lbmQp IHx8CisJCSAgICAoY2hpbGQtPm51bWJlciA+IGJ1cy0+YnVzbl9yZXMuZW5kKSB8fAogCQkgICAg KGNoaWxkLT5udW1iZXIgPCBidXMtPm51bWJlcikgfHwKLQkJICAgIChjaGlsZC0+c3Vib3JkaW5h dGUgPCBidXMtPm51bWJlcikpIHsKLQkJCWRldl9pbmZvKCZjaGlsZC0+ZGV2LCAiW2J1cyAlMDJ4 LSUwMnhdICVzICIKLQkJCQkiaGlkZGVuIGJlaGluZCVzIGJyaWRnZSAlcyBbYnVzICUwMngtJTAy eF1cbiIsCi0JCQkJY2hpbGQtPm51bWJlciwgY2hpbGQtPnN1Ym9yZGluYXRlLAotCQkJCShidXMt Pm51bWJlciA+IGNoaWxkLT5zdWJvcmRpbmF0ZSAmJgotCQkJCSBidXMtPnN1Ym9yZGluYXRlIDwg Y2hpbGQtPm51bWJlcikgPworCQkgICAgKGNoaWxkLT5idXNuX3Jlcy5lbmQgPCBidXMtPm51bWJl cikpIHsKKwkJCWRldl9pbmZvKCZjaGlsZC0+ZGV2LCAiJXBSICVzICIKKwkJCQkiaGlkZGVuIGJl aGluZCVzIGJyaWRnZSAlcyAlcFJcbiIsCisJCQkJJmNoaWxkLT5idXNuX3JlcywKKwkJCQkoYnVz LT5udW1iZXIgPiBjaGlsZC0+YnVzbl9yZXMuZW5kICYmCisJCQkJIGJ1cy0+YnVzbl9yZXMuZW5k IDwgY2hpbGQtPm51bWJlcikgPwogCQkJCQkid2hvbGx5IiA6ICJwYXJ0aWFsbHkiLAogCQkJCWJ1 cy0+c2VsZi0+dHJhbnNwYXJlbnQgPyAiIHRyYW5zcGFyZW50IiA6ICIiLAogCQkJCWRldl9uYW1l KCZidXMtPmRldiksCi0JCQkJYnVzLT5udW1iZXIsIGJ1cy0+c3Vib3JkaW5hdGUpOworCQkJCSZi dXMtPmJ1c25fcmVzKTsKIAkJfQogCQlidXMgPSBidXMtPnBhcmVudDsKIAl9CkBAIC0xNzM2LDcg KzE3MzAsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwY2llX2J1c19jb25maWd1cmVfc2V0CiBzdGF0 aWMgdW5zaWduZWQgaW50IF9fZGV2aW5pdCBfX3BjaV9zY2FuX2NoaWxkX2J1cyhzdHJ1Y3QgcGNp X2J1cyAqYnVzLAogCQkJCQkJIGludCBwYXNzKQogewotCXVuc2lnbmVkIGludCBkZXZmbiwgbWF4 ID0gYnVzLT5zZWNvbmRhcnk7CisJdW5zaWduZWQgaW50IGRldmZuLCBtYXggPSBidXMtPmJ1c25f cmVzLnN0YXJ0OwogCXN0cnVjdCBwY2lfZGV2ICpkZXY7CiAKIAlkZXZfZGJnKCZidXMtPmRldiwg InNjYW5uaW5nIGJ1cyBwYXNzICVkXG4iLCBwYXNzKTsKQEAgLTE4NDUsNyArMTgzOSw3IEBAIHN0 cnVjdCBwY2lfYnVzICpwY2lfY3JlYXRlX3Jvb3RfYnVzKHN0cnUKIAkvKiBDcmVhdGUgbGVnYWN5 X2lvIGFuZCBsZWdhY3lfbWVtIGZpbGVzIGZvciB0aGlzIGJ1cyAqLwogCXBjaV9jcmVhdGVfbGVn YWN5X2ZpbGVzKGIpOwogCi0JYi0+bnVtYmVyID0gYi0+c2Vjb25kYXJ5ID0gYnVzOworCWItPm51 bWJlciA9IGJ1czsKIAogCWlmIChwYXJlbnQpCiAJCWRldl9pbmZvKHBhcmVudCwgIlBDSSBob3N0 IGJyaWRnZSB0byBidXMgJXNcbiIsIGRldl9uYW1lKCZiLT5kZXYpKTsKQEAgLTE4NTcsOSArMTg1 MSwxMSBAQCBzdHJ1Y3QgcGNpX2J1cyAqcGNpX2NyZWF0ZV9yb290X2J1cyhzdHJ1CiAJCWxpc3Rf bW92ZV90YWlsKCZ3aW5kb3ctPmxpc3QsICZicmlkZ2UtPndpbmRvd3MpOwogCQlyZXMgPSB3aW5k b3ctPnJlczsKIAkJb2Zmc2V0ID0gd2luZG93LT5vZmZzZXQ7Ci0JCWlmIChyZXMtPmZsYWdzICYg SU9SRVNPVVJDRV9CVVMpCisJCWlmIChyZXMtPmZsYWdzICYgSU9SRVNPVVJDRV9CVVMpIHsKKwkJ CWlmIChidXMgIT0gcmVzLT5zdGFydCkKKwkJCQlyZXMtPnN0YXJ0ID0gYnVzOwogCQkJcGNpX2J1 c19pbnNlcnRfYnVzbl9yZXMoYiwgcmVzLT5zdGFydCwgcmVzLT5lbmQpOwotCQllbHNlCisJCX0g ZWxzZQogCQkJcGNpX2J1c19hZGRfcmVzb3VyY2UoYiwgcmVzLCAwKTsKIAkJaWYgKG9mZnNldCkg ewogCQkJaWYgKHJlc291cmNlX3R5cGUocmVzKSA9PSBJT1JFU09VUkNFX0lPKQpAQCAtMTk0Nyw2 ICsxOTQzLDcgQEAgc3RydWN0IHBjaV9idXMgKiBfX2RldmluaXQgcGNpX3NjYW5fcm9vdAogCXN0 cnVjdCBwY2lfaG9zdF9icmlkZ2Vfd2luZG93ICp3aW5kb3csICpuOwogCXN0cnVjdCByZXNvdXJj ZSAqcmVzOwogCWJvb2wgZm91bmQ7CisJaW50IG1heDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZSh3aW5kb3csIG4sIHJlc291cmNlcywgbGlzdCkgewogCQlyZXMgPSB3aW5kb3ctPnJlczsK QEAgLTE5NjcsMTAgKzE5NjQsMTAgQEAgc3RydWN0IHBjaV9idXMgKiBfX2RldmluaXQgcGNpX3Nj YW5fcm9vdAogCQlwY2lfYnVzX2luc2VydF9idXNuX3JlcyhiLCBidXMsIDI1NSk7CiAJfQogCi0J Yi0+c3Vib3JkaW5hdGUgPSBwY2lfc2Nhbl9jaGlsZF9idXMoYik7CisJbWF4ID0gcGNpX3NjYW5f Y2hpbGRfYnVzKGIpOwogCiAJaWYgKCFmb3VuZCkKLQkJcGNpX2J1c191cGRhdGVfYnVzbl9yZXNf ZW5kKGIsIGItPnN1Ym9yZGluYXRlKTsKKwkJcGNpX2J1c191cGRhdGVfYnVzbl9yZXNfZW5kKGIs IG1heCk7CiAKIAlwY2lfYnVzX2FkZF9kZXZpY2VzKGIpOwogCXJldHVybiBiOwpAQCAtMTk4OSw3 ICsxOTg2LDcgQEAgc3RydWN0IHBjaV9idXMgKiBfX2RldmluaXQgcGNpX3NjYW5fYnVzXwogCXBj aV9hZGRfcmVzb3VyY2UoJnJlc291cmNlcywgJmJ1c25fcmVzb3VyY2UpOwogCWIgPSBwY2lfY3Jl YXRlX3Jvb3RfYnVzKHBhcmVudCwgYnVzLCBvcHMsIHN5c2RhdGEsICZyZXNvdXJjZXMpOwogCWlm IChiKQotCQliLT5zdWJvcmRpbmF0ZSA9IHBjaV9zY2FuX2NoaWxkX2J1cyhiKTsKKwkJcGNpX3Nj YW5fY2hpbGRfYnVzKGIpOwogCWVsc2UKIAkJcGNpX2ZyZWVfcmVzb3VyY2VfbGlzdCgmcmVzb3Vy Y2VzKTsKIAlyZXR1cm4gYjsKQEAgLTIwMDcsNyArMjAwNCw3IEBAIHN0cnVjdCBwY2lfYnVzICog X19kZXZpbml0IHBjaV9zY2FuX2J1cygKIAlwY2lfYWRkX3Jlc291cmNlKCZyZXNvdXJjZXMsICZi dXNuX3Jlc291cmNlKTsKIAliID0gcGNpX2NyZWF0ZV9yb290X2J1cyhOVUxMLCBidXMsIG9wcywg c3lzZGF0YSwgJnJlc291cmNlcyk7CiAJaWYgKGIpIHsKLQkJYi0+c3Vib3JkaW5hdGUgPSBwY2lf c2Nhbl9jaGlsZF9idXMoYik7CisJCXBjaV9zY2FuX2NoaWxkX2J1cyhiKTsKIAkJcGNpX2J1c19h ZGRfZGV2aWNlcyhiKTsKIAl9IGVsc2UgewogCQlwY2lfZnJlZV9yZXNvdXJjZV9saXN0KCZyZXNv dXJjZXMpOwpJbmRleDogbGludXgtMi42L2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jCisrKyBsaW51eC0y LjYvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKQEAgLTQwNCw4ICs0MDQsNyBAQCB2b2lkIHBjaV9z ZXR1cF9jYXJkYnVzKHN0cnVjdCBwY2lfYnVzICpiCiAJc3RydWN0IHJlc291cmNlICpyZXM7CiAJ c3RydWN0IHBjaV9idXNfcmVnaW9uIHJlZ2lvbjsKIAotCWRldl9pbmZvKCZicmlkZ2UtPmRldiwg IkNhcmRCdXMgYnJpZGdlIHRvIFtidXMgJTAyeC0lMDJ4XVxuIiwKLQkJIGJ1cy0+c2Vjb25kYXJ5 LCBidXMtPnN1Ym9yZGluYXRlKTsKKwlkZXZfaW5mbygmYnJpZGdlLT5kZXYsICJDYXJkQnVzIGJy aWRnZSB0byAlcFJcbiIsICZidXMtPmJ1c25fcmVzKTsKIAogCXJlcyA9IGJ1cy0+cmVzb3VyY2Vb MF07CiAJcGNpYmlvc19yZXNvdXJjZV90b19idXMoYnJpZGdlLCAmcmVnaW9uLCByZXMpOwpAQCAt NTUzLDggKzU1Miw3IEBAIHN0YXRpYyB2b2lkIF9fcGNpX3NldHVwX2JyaWRnZShzdHJ1Y3QgcGMK IHsKIAlzdHJ1Y3QgcGNpX2RldiAqYnJpZGdlID0gYnVzLT5zZWxmOwogCi0JZGV2X2luZm8oJmJy aWRnZS0+ZGV2LCAiUENJIGJyaWRnZSB0byBbYnVzICUwMngtJTAyeF1cbiIsCi0JCSBidXMtPnNl Y29uZGFyeSwgYnVzLT5zdWJvcmRpbmF0ZSk7CisJZGV2X2luZm8oJmJyaWRnZS0+ZGV2LCAiUENJ IGJyaWRnZSB0byAlcFJcbiIsICZidXMtPmJ1c25fcmVzKTsKIAogCWlmICh0eXBlICYgSU9SRVNP VVJDRV9JTykKIAkJcGNpX3NldHVwX2JyaWRnZV9pbyhidXMpOwpAQCAtNzQ1LDggKzc0Myw4IEBA IHN0YXRpYyB2b2lkIHBidXNfc2l6ZV9pbyhzdHJ1Y3QgcGNpX2J1cwogCWlmICghc2l6ZTAgJiYg IXNpemUxKSB7CiAJCWlmIChiX3Jlcy0+c3RhcnQgfHwgYl9yZXMtPmVuZCkKIAkJCWRldl9pbmZv KCZidXMtPnNlbGYtPmRldiwgImRpc2FibGluZyBicmlkZ2Ugd2luZG93ICIKLQkJCQkgIiVwUiB0 byBbYnVzICUwMngtJTAyeF0gKHVudXNlZClcbiIsIGJfcmVzLAotCQkJCSBidXMtPnNlY29uZGFy eSwgYnVzLT5zdWJvcmRpbmF0ZSk7CisJCQkJICIlcFIgdG8gJXBSICh1bnVzZWQpXG4iLCBiX3Jl cywKKwkJCQkgJmJ1cy0+YnVzbl9yZXMpOwogCQliX3Jlcy0+ZmxhZ3MgPSAwOwogCQlyZXR1cm47 CiAJfQpAQCAtNzU3LDggKzc1NSw4IEBAIHN0YXRpYyB2b2lkIHBidXNfc2l6ZV9pbyhzdHJ1Y3Qg cGNpX2J1cwogCWlmIChzaXplMSA+IHNpemUwICYmIHJlYWxsb2NfaGVhZCkgewogCQlhZGRfdG9f bGlzdChyZWFsbG9jX2hlYWQsIGJ1cy0+c2VsZiwgYl9yZXMsIHNpemUxLXNpemUwLCA0MDk2KTsK IAkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmYnVzLT5zZWxmLT5kZXYsICJicmlkZ2Ugd2luZG93 ICIKLQkJCQkgIiVwUiB0byBbYnVzICUwMngtJTAyeF0gYWRkX3NpemUgJWx4XG4iLCBiX3JlcywK LQkJCQkgYnVzLT5zZWNvbmRhcnksIGJ1cy0+c3Vib3JkaW5hdGUsIHNpemUxLXNpemUwKTsKKwkJ CQkgIiVwUiB0byAlcFIgYWRkX3NpemUgJWx4XG4iLCBiX3JlcywKKwkJCQkgJmJ1cy0+YnVzbl9y ZXMsIHNpemUxLXNpemUwKTsKIAl9CiB9CiAKQEAgLTg2Myw4ICs4NjEsOCBAQCBzdGF0aWMgaW50 IHBidXNfc2l6ZV9tZW0oc3RydWN0IHBjaV9idXMKIAlpZiAoIXNpemUwICYmICFzaXplMSkgewog CQlpZiAoYl9yZXMtPnN0YXJ0IHx8IGJfcmVzLT5lbmQpCiAJCQlkZXZfaW5mbygmYnVzLT5zZWxm LT5kZXYsICJkaXNhYmxpbmcgYnJpZGdlIHdpbmRvdyAiCi0JCQkJICIlcFIgdG8gW2J1cyAlMDJ4 LSUwMnhdICh1bnVzZWQpXG4iLCBiX3JlcywKLQkJCQkgYnVzLT5zZWNvbmRhcnksIGJ1cy0+c3Vi b3JkaW5hdGUpOworCQkJCSAiJXBSIHRvICVwUiAodW51c2VkKVxuIiwgYl9yZXMsCisJCQkJICZi dXMtPmJ1c25fcmVzKTsKIAkJYl9yZXMtPmZsYWdzID0gMDsKIAkJcmV0dXJuIDE7CiAJfQpAQCAt ODc0LDggKzg3Miw4IEBAIHN0YXRpYyBpbnQgcGJ1c19zaXplX21lbShzdHJ1Y3QgcGNpX2J1cwog CWlmIChzaXplMSA+IHNpemUwICYmIHJlYWxsb2NfaGVhZCkgewogCQlhZGRfdG9fbGlzdChyZWFs bG9jX2hlYWQsIGJ1cy0+c2VsZiwgYl9yZXMsIHNpemUxLXNpemUwLCBtaW5fYWxpZ24pOwogCQlk ZXZfcHJpbnRrKEtFUk5fREVCVUcsICZidXMtPnNlbGYtPmRldiwgImJyaWRnZSB3aW5kb3cgIgot CQkJCSAiJXBSIHRvIFtidXMgJTAyeC0lMDJ4XSBhZGRfc2l6ZSAlbGx4XG4iLCBiX3JlcywKLQkJ CQkgYnVzLT5zZWNvbmRhcnksIGJ1cy0+c3Vib3JkaW5hdGUsICh1bnNpZ25lZCBsb25nIGxvbmcp c2l6ZTEtc2l6ZTApOworCQkJCSAiJXBSIHRvICVwUiBhZGRfc2l6ZSAlbGx4XG4iLCBiX3JlcywK KwkJCQkgJmJ1cy0+YnVzbl9yZXMsICh1bnNpZ25lZCBsb25nIGxvbmcpc2l6ZTEtc2l6ZTApOwog CX0KIAlyZXR1cm4gMTsKIH0KSW5kZXg6IGxpbnV4LTIuNi9kcml2ZXJzL3BjbWNpYS9jYXJkYnVz LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvZHJpdmVycy9wY21jaWEvY2FyZGJ1cy5j CisrKyBsaW51eC0yLjYvZHJpdmVycy9wY21jaWEvY2FyZGJ1cy5jCkBAIC03Myw3ICs3Myw3IEBA IGludCBfX3JlZiBjYl9hbGxvYyhzdHJ1Y3QgcGNtY2lhX3NvY2tldAogCXMtPmZ1bmN0aW9ucyA9 IHBjaV9zY2FuX3Nsb3QoYnVzLCBQQ0lfREVWRk4oMCwgMCkpOwogCXBjaV9maXh1cF9jYXJkYnVz KGJ1cyk7CiAKLQltYXggPSBidXMtPnNlY29uZGFyeTsKKwltYXggPSBidXMtPmJ1c25fcmVzLnN0 YXJ0OwogCWZvciAocGFzcyA9IDA7IHBhc3MgPCAyOyBwYXNzKyspCiAJCWxpc3RfZm9yX2VhY2hf ZW50cnkoZGV2LCAmYnVzLT5kZXZpY2VzLCBidXNfbGlzdCkKIAkJCWlmIChkZXYtPmhkcl90eXBl ID09IFBDSV9IRUFERVJfVFlQRV9CUklER0UgfHwKSW5kZXg6IGxpbnV4LTIuNi9kcml2ZXJzL3Bj bWNpYS95ZW50YV9zb2NrZXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9kcml2ZXJz L3BjbWNpYS95ZW50YV9zb2NrZXQuYworKysgbGludXgtMi42L2RyaXZlcnMvcGNtY2lhL3llbnRh X3NvY2tldC5jCkBAIC0xMDQ4LDggKzEwNDgsOCBAQCBzdGF0aWMgdm9pZCB5ZW50YV9jb25maWdf aW5pdChzdHJ1Y3QgeWVuCiAJY29uZmlnX3dyaXRlYihzb2NrZXQsIFBDSV9MQVRFTkNZX1RJTUVS LCAxNjgpOwogCWNvbmZpZ193cml0ZWwoc29ja2V0LCBQQ0lfUFJJTUFSWV9CVVMsCiAJCSgxNzYg PDwgMjQpIHwJCQkgICAvKiBzZWMuIGxhdGVuY3kgdGltZXIgKi8KLQkJKGRldi0+c3Vib3JkaW5h dGUtPnN1Ym9yZGluYXRlIDw8IDE2KSB8IC8qIHN1Ym9yZGluYXRlIGJ1cyAqLwotCQkoZGV2LT5z dWJvcmRpbmF0ZS0+c2Vjb25kYXJ5IDw8IDgpIHwgIC8qIHNlY29uZGFyeSBidXMgKi8KKwkJKCh1 bnNpZ25lZCBpbnQpZGV2LT5zdWJvcmRpbmF0ZS0+YnVzbl9yZXMuZW5kIDw8IDE2KSB8IC8qIHN1 Ym9yZGluYXRlIGJ1cyAqLworCQkoKHVuc2lnbmVkIGludClkZXYtPnN1Ym9yZGluYXRlLT5idXNu X3Jlcy5zdGFydCA8PCA4KSB8ICAvKiBzZWNvbmRhcnkgYnVzICovCiAJCWRldi0+c3Vib3JkaW5h dGUtPnByaW1hcnkpOwkJICAgLyogcHJpbWFyeSBidXMgKi8KIAogCS8qCkluZGV4OiBsaW51eC0y LjYvaW5jbHVkZS9saW51eC9wY2kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9pbmNs dWRlL2xpbnV4L3BjaS5oCisrKyBsaW51eC0yLjYvaW5jbHVkZS9saW51eC9wY2kuaApAQCAtNDI5 LDggKzQyOSw2IEBAIHN0cnVjdCBwY2lfYnVzIHsKIAogCXVuc2lnbmVkIGNoYXIJbnVtYmVyOwkJ LyogYnVzIG51bWJlciAqLwogCXVuc2lnbmVkIGNoYXIJcHJpbWFyeTsJLyogbnVtYmVyIG9mIHBy aW1hcnkgYnJpZGdlICovCi0JdW5zaWduZWQgY2hhcglzZWNvbmRhcnk7CS8qIG51bWJlciBvZiBz ZWNvbmRhcnkgYnJpZGdlICovCi0JdW5zaWduZWQgY2hhcglzdWJvcmRpbmF0ZTsJLyogbWF4IG51 bWJlciBvZiBzdWJvcmRpbmF0ZSBidXNlcyAqLwogCXVuc2lnbmVkIGNoYXIJbWF4X2J1c19zcGVl ZDsJLyogZW51bSBwY2lfYnVzX3NwZWVkICovCiAJdW5zaWduZWQgY2hhcgljdXJfYnVzX3NwZWVk OwkvKiBlbnVtIHBjaV9idXNfc3BlZWQgKi8KIAo= --047d7b10d2453d14de04bf06ab0f-- -- 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/