From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: MIME-Version: 1.0 In-Reply-To: References: <20120903165831.29aed72c.izumi.taku@jp.fujitsu.com> <20120903170602.375b00cc.izumi.taku@jp.fujitsu.com> Date: Thu, 13 Sep 2012 15:44:24 -0700 Message-ID: Subject: Re: [PATCH v2 4/6] ACPI, PCI: add acpi_pci_roots protection From: Yinghai Lu To: Bjorn Helgaas Cc: Taku Izumi , linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, kaneshige.kenji@jp.fujitsu.com, jiang.liu@huawei.com Content-Type: multipart/mixed; boundary=bcaec555517a98bb0504c99d0cb6 Sender: linux-acpi-owner@vger.kernel.org List-ID: --bcaec555517a98bb0504c99d0cb6 Content-Type: text/plain; charset=ISO-8859-1 On Thu, Sep 13, 2012 at 2:17 PM, Yinghai Lu wrote: > On Thu, Sep 13, 2012 at 12:39 PM, Bjorn Helgaas wrote: >> If I understand you correctly, you're agreeing that if we change the >> .add()/.remove() interfaces, there is no need for RCU here. Correct >> me if I'm wrong. > > yes. > > just passing acpi_pci_root point or acpi_device pointer. related change. 1. update pci_root_hp split patch to *p2p* for some function, so will make add_bridge to take acpi_pci_root point. 2. remove one find_acpi_pci_root calling. 3. update the interface... now in acpiphp_glue.c::register_slot still have one calling left.... pdev = pbus->self; if (pdev && pci_is_pcie(pdev)) { tmp = acpi_find_root_bridge_handle(pdev); if (tmp) { struct acpi_pci_root *root = acpi_pci_find_root(tmp); if (root && (root->osc_control_set & OSC_PCI_EXPRESS_NATIVE_HP_CONTROL)) { dev_printk(KERN_DEBUG, &pdev->dev, "is already used by pciehp\n"); return AE_OK; } } } maybe could put acpi_pci_root *root in into every acpiphp_bridge. ? Thanks Yinghai --bcaec555517a98bb0504c99d0cb6 Content-Type: application/octet-stream; name="pci_root_acpiphp_split.patch" Content-Disposition: attachment; filename="pci_root_acpiphp_split.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h72frt6x0 U3ViamVjdDogW1BBVENIXSBQQ0ksIGFjcGlwaHA6IFNlcGFyYXRlIG91dCBob3QtYWRkIHN1cHBv cnQgb2YgcGNpIGhvc3QgYnJpZGdlCgpJdCBjYXVzZXMgY29uZnVzaW9uLgoKV2UgbWF5IG9ubHkg bmVlZCBhY3BpIGhwIGZvciBwY2kgaG9zdCBicmlkZ2UuCgpTcGxpdCBob3N0IGJyaWRnZSBob3Qt YWRkIHN1cHBvcnQgdG8gcGNpX3Jvb3RfaHAsIGFuZCBrZWVwIGFjcGlwaHAgc2ltcGxlLgoKQWxz byByZW1vdmUgbm90IHVzZWQgcmVzX2xvY2sgaW4gdGhlIHN0cnVjdC4KCi12MjogcHV0IGJhY2sg cGNpX3Jvb3RfaHAgY2hhbmdlIGluIG9uZSBwYXRjaAotdjM6IGFkZCBwY2liaW9zX3Jlc291cmNl X3N1cnZleV9idXMoKSBjYWxsaW5nCi12NDogcmVtb3ZlIG5vdCBuZWVkZWQgY29kZSB3aXRoIHJl bW92ZV9icmlkZ2UKLXY1OiBwdXQgYmFjayBzdXBwb3J0IGZvciBhY3BpcGhwIHN1cHBvcnQgZm9y IHNsb3RzIGp1c3Qgb24gcm9vdCBidXMuCi12NjogY2hhbmdlIHNvbWUgZnVuY3Rpb25zIHRvICpf cDJwXyogdG8gbWFrZSBpdCBtb3JlIGNsZWFuLgoKU2lnbmVkLW9mZi1ieTogWWluZ2hhaSBMdSA8 eWluZ2hhaUBrZXJuZWwub3JnPgoKLS0tCiBkcml2ZXJzL2FjcGkvTWFrZWZpbGUgICAgICAgICAg ICAgIHwgICAgMSAKIGRyaXZlcnMvYWNwaS9wY2lfcm9vdF9ocC5jICAgICAgICAgfCAgMjM4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvcGNpL2hvdHBsdWcv YWNwaXBocF9nbHVlLmMgfCAgIDU5ICsrLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyNTQgaW5z ZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpJbmRleDogbGludXgtMi42L2RyaXZlcnMvcGNp L2hvdHBsdWcvYWNwaXBocF9nbHVlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvZHJp dmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYworKysgbGludXgtMi42L2RyaXZlcnMvcGNp L2hvdHBsdWcvYWNwaXBocF9nbHVlLmMKQEAgLTUyMSwxMCArNTIxLDEzIEBAIHN0YXRpYyB2b2lk IGNsZWFudXBfYnJpZGdlKHN0cnVjdCBhY3BpcGgKIAlhY3BpX3N0YXR1cyBzdGF0dXM7CiAJYWNw aV9oYW5kbGUgaGFuZGxlID0gYnJpZGdlLT5oYW5kbGU7CiAKLQlzdGF0dXMgPSBhY3BpX3JlbW92 ZV9ub3RpZnlfaGFuZGxlcihoYW5kbGUsIEFDUElfU1lTVEVNX05PVElGWSwKKwlpZiAoYnJpZGdl LT50eXBlICE9IEJSSURHRV9UWVBFX0hPU1QpIHsKKwkJc3RhdHVzID0gYWNwaV9yZW1vdmVfbm90 aWZ5X2hhbmRsZXIoaGFuZGxlLAorCQkJCQkgICAgQUNQSV9TWVNURU1fTk9USUZZLAogCQkJCQkg ICAgaGFuZGxlX2hvdHBsdWdfZXZlbnRfYnJpZGdlKTsKLQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1 cykpCi0JCWVycigiZmFpbGVkIHRvIHJlbW92ZSBub3RpZnkgaGFuZGxlclxuIik7CisJCWlmIChB Q1BJX0ZBSUxVUkUoc3RhdHVzKSkKKwkJCWVycigiZmFpbGVkIHRvIHJlbW92ZSBub3RpZnkgaGFu ZGxlclxuIik7CisJfQogCiAJaWYgKChicmlkZ2UtPnR5cGUgIT0gQlJJREdFX1RZUEVfSE9TVCkg JiYKIAkgICAgKChicmlkZ2UtPmZsYWdzICYgQlJJREdFX0hBU19FSjApICYmIGJyaWRnZS0+ZnVu YykpIHsKQEAgLTYwNyw5ICs2MTAsNiBAQCBzdGF0aWMgdm9pZCByZW1vdmVfYnJpZGdlKGFjcGlf aGFuZGxlIGhhCiAJYnJpZGdlID0gYWNwaXBocF9oYW5kbGVfdG9fYnJpZGdlKGhhbmRsZSk7CiAJ aWYgKGJyaWRnZSkKIAkJY2xlYW51cF9icmlkZ2UoYnJpZGdlKTsKLQllbHNlCi0JCWFjcGlfcmVt b3ZlX25vdGlmeV9oYW5kbGVyKGhhbmRsZSwgQUNQSV9TWVNURU1fTk9USUZZLAotCQkJCQkgICBo YW5kbGVfaG90cGx1Z19ldmVudF9icmlkZ2UpOwogfQogCiBzdGF0aWMgaW50IHBvd2VyX29uX3Ns b3Qoc3RydWN0IGFjcGlwaHBfc2xvdCAqc2xvdCkKQEAgLTExMTAsMTggKzExMTAsMTIgQEAgc3Rh dGljIHZvaWQgYWNwaXBocF9zYW5pdGl6ZV9idXMoc3RydWN0CiB9CiAKIC8qIFByb2dyYW0gcmVz b3VyY2VzIGluIG5ld2x5IGluc2VydGVkIGJyaWRnZSAqLwotc3RhdGljIGludCBhY3BpcGhwX2Nv bmZpZ3VyZV9icmlkZ2UgKGFjcGlfaGFuZGxlIGhhbmRsZSkKK3N0YXRpYyBpbnQgYWNwaXBocF9j b25maWd1cmVfcDJwX2JyaWRnZShhY3BpX2hhbmRsZSBoYW5kbGUpCiB7Ci0Jc3RydWN0IHBjaV9i dXMgKmJ1czsKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGFjcGlfZ2V0X3BjaV9kZXYoaGFuZGxl KTsKKwlzdHJ1Y3QgcGNpX2J1cyAqYnVzID0gcGRldi0+c3Vib3JkaW5hdGU7CiAKLQlpZiAoYWNw aV9pc19yb290X2JyaWRnZShoYW5kbGUpKSB7Ci0JCXN0cnVjdCBhY3BpX3BjaV9yb290ICpyb290 ID0gYWNwaV9wY2lfZmluZF9yb290KGhhbmRsZSk7Ci0JCWJ1cyA9IHJvb3QtPmJ1czsKLQl9IGVs c2UgewotCQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGFjcGlfZ2V0X3BjaV9kZXYoaGFuZGxlKTsK LQkJYnVzID0gcGRldi0+c3Vib3JkaW5hdGU7Ci0JCXBjaV9kZXZfcHV0KHBkZXYpOwotCX0KKwlw Y2lfZGV2X3B1dChwZGV2KTsKIAogCXBjaV9idXNfc2l6ZV9icmlkZ2VzKGJ1cyk7CiAJcGNpX2J1 c19hc3NpZ25fcmVzb3VyY2VzKGJ1cyk7CkBAIC0xMTMxLDcgKzExMjUsNyBAQCBzdGF0aWMgaW50 IGFjcGlwaHBfY29uZmlndXJlX2JyaWRnZSAoYWNwCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2 b2lkIGhhbmRsZV9icmlkZ2VfaW5zZXJ0aW9uKGFjcGlfaGFuZGxlIGhhbmRsZSwgdTMyIHR5cGUp CitzdGF0aWMgdm9pZCBoYW5kbGVfcDJwX2JyaWRnZV9pbnNlcnRpb24oYWNwaV9oYW5kbGUgaGFu ZGxlLCB1MzIgdHlwZSkKIHsKIAlzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSwgKnBkZXZpY2U7 CiAJYWNwaV9oYW5kbGUgcGhhbmRsZTsKQEAgLTExNTEsOSArMTE0NSw5IEBAIHN0YXRpYyB2b2lk IGhhbmRsZV9icmlkZ2VfaW5zZXJ0aW9uKGFjcGkKIAkJZXJyKCJjYW5ub3QgYWRkIGJyaWRnZSB0 byBhY3BpIGxpc3RcbiIpOwogCQlyZXR1cm47CiAJfQotCWlmICghYWNwaXBocF9jb25maWd1cmVf YnJpZGdlKGhhbmRsZSkgJiYKKwlpZiAoIWFjcGlwaHBfY29uZmlndXJlX3AycF9icmlkZ2UoaGFu ZGxlKSAmJgogCQkhYWNwaV9idXNfc3RhcnQoZGV2aWNlKSkKLQkJYWRkX2JyaWRnZShoYW5kbGUp OworCQlhZGRfcDJwX2JyaWRnZShoYW5kbGUpOwogCWVsc2UKIAkJZXJyKCJjYW5ub3QgY29uZmln dXJlIGFuZCBzdGFydCBicmlkZ2VcbiIpOwogCkBAIC0xMjM5LDcgKzEyMzMsNyBAQCBzdGF0aWMg dm9pZCBfaGFuZGxlX2hvdHBsdWdfZXZlbnRfYnJpZGdlCiAKIAlpZiAoYWNwaV9idXNfZ2V0X2Rl dmljZShoYW5kbGUsICZkZXZpY2UpKSB7CiAJCS8qIFRoaXMgYnJpZGdlIG11c3QgaGF2ZSBqdXN0 IGJlZW4gcGh5c2ljYWxseSBpbnNlcnRlZCAqLwotCQloYW5kbGVfYnJpZGdlX2luc2VydGlvbiho YW5kbGUsIHR5cGUpOworCQloYW5kbGVfcDJwX2JyaWRnZV9pbnNlcnRpb24oaGFuZGxlLCB0eXBl KTsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC0xNDE2LDIxICsxNDEwLDYgQEAgc3RhdGljIHZvaWQg aGFuZGxlX2hvdHBsdWdfZXZlbnRfZnVuYyhhYwogCQkJICAgICAgX2hhbmRsZV9ob3RwbHVnX2V2 ZW50X2Z1bmMpOwogfQogCi1zdGF0aWMgYWNwaV9zdGF0dXMKLWZpbmRfcm9vdF9icmlkZ2VzKGFj cGlfaGFuZGxlIGhhbmRsZSwgdTMyIGx2bCwgdm9pZCAqY29udGV4dCwgdm9pZCAqKnJ2KQotewot CWludCAqY291bnQgPSAoaW50ICopY29udGV4dDsKLQotCWlmICghYWNwaV9pc19yb290X2JyaWRn ZShoYW5kbGUpKQotCQlyZXR1cm4gQUVfT0s7Ci0KLQkoKmNvdW50KSsrOwotCWFjcGlfaW5zdGFs bF9ub3RpZnlfaGFuZGxlcihoYW5kbGUsIEFDUElfU1lTVEVNX05PVElGWSwKLQkJCQkgICAgaGFu ZGxlX2hvdHBsdWdfZXZlbnRfYnJpZGdlLCBOVUxMKTsKLQotCXJldHVybiBBRV9PSyA7Ci19Ci0K IHN0YXRpYyBzdHJ1Y3QgYWNwaV9wY2lfZHJpdmVyIGFjcGlfcGNpX2hwX2RyaXZlciA9IHsKIAku YWRkID0JCWFkZF9icmlkZ2UsCiAJLnJlbW92ZSA9CXJlbW92ZV9icmlkZ2UsCkBAIC0xNDQxLDE1 ICsxNDIwLDcgQEAgc3RhdGljIHN0cnVjdCBhY3BpX3BjaV9kcml2ZXIgYWNwaV9wY2lfaAogICov CiBpbnQgX19pbml0IGFjcGlwaHBfZ2x1ZV9pbml0KHZvaWQpCiB7Ci0JaW50IG51bSA9IDA7Ci0K LQlhY3BpX3dhbGtfbmFtZXNwYWNlKEFDUElfVFlQRV9ERVZJQ0UsIEFDUElfUk9PVF9PQkpFQ1Qs Ci0JCQlBQ1BJX1VJTlQzMl9NQVgsIGZpbmRfcm9vdF9icmlkZ2VzLCBOVUxMLCAmbnVtLCBOVUxM KTsKLQotCWlmIChudW0gPD0gMCkKLQkJcmV0dXJuIC0xOwotCWVsc2UKLQkJYWNwaV9wY2lfcmVn aXN0ZXJfZHJpdmVyKCZhY3BpX3BjaV9ocF9kcml2ZXIpOworCWFjcGlfcGNpX3JlZ2lzdGVyX2Ry aXZlcigmYWNwaV9wY2lfaHBfZHJpdmVyKTsKIAogCXJldHVybiAwOwogfQpJbmRleDogbGludXgt Mi42L2RyaXZlcnMvYWNwaS9wY2lfcm9vdF9ocC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAor KysgbGludXgtMi42L2RyaXZlcnMvYWNwaS9wY2lfcm9vdF9ocC5jCkBAIC0wLDAgKzEsMjM4IEBA CisvKgorICogU2VwYXJhdGVkIGZyb20gZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUu YworICoJb25seSBzdXBwb3J0IHJvb3QgYnJpZGdlCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2lu aXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKworI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cisj aW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KKworc3RhdGlj IExJU1RfSEVBRChhY3BpX3Jvb3RfYnJpZGdlX2xpc3QpOworc3RydWN0IGFjcGlfcm9vdF9icmlk Z2UgeworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwlhY3BpX2hhbmRsZSBoYW5kbGU7CisJdTMy IGZsYWdzOworfTsKKworLyogYnJpZGdlIGZsYWdzICovCisjZGVmaW5lIFJPT1RfQlJJREdFX0hB U19FSjAJKDB4MDAwMDAwMDIpCisjZGVmaW5lIFJPT1RfQlJJREdFX0hBU19QUzMJKDB4MDAwMDAw ODApCisKKyNkZWZpbmUgQUNQSV9TVEFfRlVOQ1RJT05JTkcJKDB4MDAwMDAwMDgpCisKK3N0YXRp YyBzdHJ1Y3QgYWNwaV9yb290X2JyaWRnZSAqYWNwaV9yb290X2hhbmRsZV90b19icmlkZ2UoYWNw aV9oYW5kbGUgaGFuZGxlKQoreworCXN0cnVjdCBhY3BpX3Jvb3RfYnJpZGdlICpicmlkZ2U7CisK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJyaWRnZSwgJmFjcGlfcm9vdF9icmlkZ2VfbGlzdCwgbGlz dCkKKwkJaWYgKGJyaWRnZS0+aGFuZGxlID09IGhhbmRsZSkKKwkJCXJldHVybiBicmlkZ2U7CisK KwlyZXR1cm4gTlVMTDsKK30KKworLyogYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgaG9zdCBicmlk Z2UgZGF0YSBzdHJ1Y3R1cmUgKi8KK3N0YXRpYyB2b2lkIGFkZF9hY3BpX3Jvb3RfYnJpZGdlKGFj cGlfaGFuZGxlIGhhbmRsZSkKK3sKKwlzdHJ1Y3QgYWNwaV9yb290X2JyaWRnZSAqYnJpZGdlOwor CWFjcGlfaGFuZGxlIGR1bW15X2hhbmRsZTsKKwlhY3BpX3N0YXR1cyBzdGF0dXM7CisKKwkvKiBp ZiB0aGUgYnJpZGdlIGRvZXNuJ3QgaGF2ZSBfU1RBLCB3ZSBhc3N1bWUgaXQgaXMgYWx3YXlzIHRo ZXJlICovCisJc3RhdHVzID0gYWNwaV9nZXRfaGFuZGxlKGhhbmRsZSwgIl9TVEEiLCAmZHVtbXlf aGFuZGxlKTsKKwlpZiAoQUNQSV9TVUNDRVNTKHN0YXR1cykpIHsKKwkJdW5zaWduZWQgbG9uZyBs b25nIHRtcDsKKworCQlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX2ludGVnZXIoaGFuZGxlLCAiX1NU QSIsIE5VTEwsICZ0bXApOworCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJCXByaW50 ayhLRVJOX0RFQlVHICIlczogX1NUQSBldmFsdWF0aW9uIGZhaWx1cmVcbiIsCisJCQkJCQkgX19m dW5jX18pOworCQkJcmV0dXJuOworCQl9CisJCWlmICgodG1wICYgQUNQSV9TVEFfRlVOQ1RJT05J TkcpID09IDApCisJCQkvKiBkb24ndCByZWdpc3RlciB0aGlzIG9iamVjdCAqLworCQkJcmV0dXJu OworCX0KKworCWJyaWRnZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhY3BpX3Jvb3RfYnJpZGdl KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFicmlkZ2UpCisJCXJldHVybjsKKworCWJyaWRnZS0+aGFu ZGxlID0gaGFuZGxlOworCisJaWYgKEFDUElfU1VDQ0VTUyhhY3BpX2dldF9oYW5kbGUoaGFuZGxl LCAiX0VKMCIsICZkdW1teV9oYW5kbGUpKSkKKwkJYnJpZGdlLT5mbGFncyB8PSBST09UX0JSSURH RV9IQVNfRUowOworCWlmIChBQ1BJX1NVQ0NFU1MoYWNwaV9nZXRfaGFuZGxlKGhhbmRsZSwgIl9Q UzMiLCAmZHVtbXlfaGFuZGxlKSkpCisJCWJyaWRnZS0+ZmxhZ3MgfD0gUk9PVF9CUklER0VfSEFT X1BTMzsKKworCWxpc3RfYWRkKCZicmlkZ2UtPmxpc3QsICZhY3BpX3Jvb3RfYnJpZGdlX2xpc3Qp OworfQorCitzdHJ1Y3QgYWNwaV9yb290X2hwX3dvcmsgeworCXN0cnVjdCB3b3JrX3N0cnVjdCB3 b3JrOworCWFjcGlfaGFuZGxlIGhhbmRsZTsKKwl1MzIgdHlwZTsKKwl2b2lkICpjb250ZXh0Owor fTsKKworc3RhdGljIHZvaWQgYWxsb2NfYWNwaV9yb290X2hwX3dvcmsoYWNwaV9oYW5kbGUgaGFu ZGxlLCB1MzIgdHlwZSwKKwkJCQkJdm9pZCAqY29udGV4dCwKKwkJCQkJdm9pZCAoKmZ1bmMpKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykpCit7CisJc3RydWN0IGFjcGlfcm9vdF9ocF93b3JrICpo cF93b3JrOworCWludCByZXQ7CisKKwlocF93b3JrID0ga21hbGxvYyhzaXplb2YoKmhwX3dvcmsp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWhwX3dvcmspCisJCXJldHVybjsKKworCWhwX3dvcmstPmhh bmRsZSA9IGhhbmRsZTsKKwlocF93b3JrLT50eXBlID0gdHlwZTsKKwlocF93b3JrLT5jb250ZXh0 ID0gY29udGV4dDsKKworCUlOSVRfV09SSygmaHBfd29yay0+d29yaywgZnVuYyk7CisJcmV0ID0g cXVldWVfd29yayhrYWNwaV9ob3RwbHVnX3dxLCAmaHBfd29yay0+d29yayk7CisJaWYgKCFyZXQp CisJCWtmcmVlKGhwX3dvcmspOworfQorCisvKiBQcm9ncmFtIHJlc291cmNlcyBpbiBuZXdseSBp bnNlcnRlZCBicmlkZ2UgKi8KK3N0YXRpYyB2b2lkIGFjcGlfcm9vdF9jb25maWd1cmVfYnJpZGdl KGFjcGlfaGFuZGxlIGhhbmRsZSkKK3sKKwlzdHJ1Y3QgYWNwaV9wY2lfcm9vdCAqcm9vdCA9IGFj cGlfcGNpX2ZpbmRfcm9vdChoYW5kbGUpOworCisJcGNpYmlvc19yZXNvdXJjZV9zdXJ2ZXlfYnVz KHJvb3QtPmJ1cyk7CisJcGNpX2Fzc2lnbl91bmFzc2lnbmVkX2J1c19yZXNvdXJjZXMocm9vdC0+ YnVzKTsKK30KKworc3RhdGljIHZvaWQgaGFuZGxlX3Jvb3RfYnJpZGdlX2luc2VydGlvbihhY3Bp X2hhbmRsZSBoYW5kbGUpCit7CisJc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UsICpwZGV2aWNl OworCWFjcGlfaGFuZGxlIHBoYW5kbGU7CisJaW50IHJldF92YWw7CisKKwlhY3BpX2dldF9wYXJl bnQoaGFuZGxlLCAmcGhhbmRsZSk7CisJaWYgKGFjcGlfYnVzX2dldF9kZXZpY2UocGhhbmRsZSwg JnBkZXZpY2UpKSB7CisJCXByaW50ayhLRVJOX0RFQlVHICJubyBwYXJlbnQgZGV2aWNlLCBhc3N1 bWluZyBOVUxMXG4iKTsKKwkJcGRldmljZSA9IE5VTEw7CisJfQorCWlmICghYWNwaV9idXNfZ2V0 X2RldmljZShoYW5kbGUsICZkZXZpY2UpKSB7CisJCS8qIGNoZWNrIGlmICBwY2kgcm9vdF9idXMg aXMgcmVtb3ZlZCAqLworCQlzdHJ1Y3QgYWNwaV9wY2lfcm9vdCAqcm9vdCA9IGFjcGlfZHJpdmVy X2RhdGEoZGV2aWNlKTsKKwkJaWYgKHBjaV9maW5kX2J1cyhyb290LT5zZWdtZW50LCByb290LT5z ZWNvbmRhcnkuc3RhcnQpKQorCQkJcmV0dXJuOworCisJCXByaW50ayhLRVJOX0RFQlVHICJidXMg ZXhpc3RzLi4uIHRyaW1cbiIpOworCQkvKiB0aGlzIHNob3VsZG4ndCBiZSBpbiBoZXJlLCBzbyBy ZW1vdmUKKwkJICogdGhlIGJ1cyB0aGVuIHJlLWFkZCBpdC4uLgorCQkgKi8KKwkJcmV0X3ZhbCA9 IGFjcGlfYnVzX3RyaW0oZGV2aWNlLCAxKTsKKwkJcHJpbnRrKEtFUk5fREVCVUcgImFjcGlfYnVz X3RyaW0gcmV0dXJuICV4XG4iLCByZXRfdmFsKTsKKwl9CisJaWYgKGFjcGlfYnVzX2FkZCgmZGV2 aWNlLCBwZGV2aWNlLCBoYW5kbGUsIEFDUElfQlVTX1RZUEVfREVWSUNFKSkgeworCQlwcmludGso S0VSTl9FUlIgImNhbm5vdCBhZGQgYnJpZGdlIHRvIGFjcGkgbGlzdFxuIik7CisJCXJldHVybjsK Kwl9CisJYWNwaV9yb290X2NvbmZpZ3VyZV9icmlkZ2UoaGFuZGxlKTsKKwlpZiAoYWNwaV9idXNf c3RhcnQoZGV2aWNlKSkKKwkJcHJpbnRrKEtFUk5fRVJSICJjYW5ub3Qgc3RhcnQgYnJpZGdlXG4i KTsKK30KKworc3RhdGljIHZvaWQgX2hhbmRsZV9ob3RwbHVnX2V2ZW50X3Jvb3Qoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBhY3BpX3Jvb3RfYnJpZGdlICpicmlkZ2U7CisJ Y2hhciBvYmpuYW1lWzY0XTsKKwlzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmZmVyID0geyAubGVuZ3Ro ID0gc2l6ZW9mKG9iam5hbWUpLAorCQkJCSAgICAgIC5wb2ludGVyID0gb2JqbmFtZSB9OworCXN0 cnVjdCBhY3BpX3Jvb3RfaHBfd29yayAqaHBfd29yazsKKwlhY3BpX2hhbmRsZSBoYW5kbGU7CisJ dTMyIHR5cGU7CisKKwlocF93b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBhY3BpX3Jv b3RfaHBfd29yaywgd29yayk7CisJaGFuZGxlID0gaHBfd29yay0+aGFuZGxlOworCXR5cGUgPSBo cF93b3JrLT50eXBlOworCisJYnJpZGdlID0gYWNwaV9yb290X2hhbmRsZV90b19icmlkZ2UoaGFu ZGxlKTsKKworCWFjcGlfZ2V0X25hbWUoaGFuZGxlLCBBQ1BJX0ZVTExfUEFUSE5BTUUsICZidWZm ZXIpOworCisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBBQ1BJX05PVElGWV9CVVNfQ0hFQ0s6CisJ CS8qIGJ1cyBlbnVtZXJhdGUgKi8KKwkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBCdXMgY2hlY2sg bm90aWZ5IG9uICVzXG4iLCBfX2Z1bmNfXywKKwkJCQkgb2JqbmFtZSk7CisJCWlmICghYnJpZGdl KSB7CisJCQloYW5kbGVfcm9vdF9icmlkZ2VfaW5zZXJ0aW9uKGhhbmRsZSk7CisJCQlhZGRfYWNw aV9yb290X2JyaWRnZShoYW5kbGUpOworCQl9CisKKwkJYnJlYWs7CisKKwljYXNlIEFDUElfTk9U SUZZX0RFVklDRV9DSEVDSzoKKwkJLyogZGV2aWNlIGNoZWNrICovCisJCXByaW50ayhLRVJOX0RF QlVHICIlczogRGV2aWNlIGNoZWNrIG5vdGlmeSBvbiAlc1xuIiwgX19mdW5jX18sCisJCQkJIG9i am5hbWUpOworCQlpZiAoIWJyaWRnZSkgeworCQkJaGFuZGxlX3Jvb3RfYnJpZGdlX2luc2VydGlv bihoYW5kbGUpOworCQkJYWRkX2FjcGlfcm9vdF9icmlkZ2UoaGFuZGxlKTsKKwkJfQorCQlicmVh azsKKworCWRlZmF1bHQ6CisJCXByaW50ayhLRVJOX1dBUk5JTkcgIm5vdGlmeV9oYW5kbGVyOiB1 bmtub3duIGV2ZW50IHR5cGUgMHgleCBmb3IgJXNcbiIsCisJCQkJIHR5cGUsIG9iam5hbWUpOwor CQlicmVhazsKKwl9CisKKwlrZnJlZShocF93b3JrKTsgLyogYWxsb2NhdGVkIGluIGhhbmRsZV9o b3RwbHVnX2V2ZW50X2JyaWRnZSAqLworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVfaG90cGx1Z19l dmVudF9yb290KGFjcGlfaGFuZGxlIGhhbmRsZSwgdTMyIHR5cGUsCisJCQkJCXZvaWQgKmNvbnRl eHQpCit7CisJYWxsb2NfYWNwaV9yb290X2hwX3dvcmsoaGFuZGxlLCB0eXBlLCBjb250ZXh0LAor CQkJCV9oYW5kbGVfaG90cGx1Z19ldmVudF9yb290KTsKK30KKworc3RhdGljIGFjcGlfc3RhdHVz IF9faW5pdAorZmluZF9yb290X2JyaWRnZXMoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgbHZsLCB2 b2lkICpjb250ZXh0LCB2b2lkICoqcnYpCit7CisJY2hhciBvYmpuYW1lWzY0XTsKKwlzdHJ1Y3Qg YWNwaV9idWZmZXIgYnVmZmVyID0geyAubGVuZ3RoID0gc2l6ZW9mKG9iam5hbWUpLAorCQkJCSAg ICAgIC5wb2ludGVyID0gb2JqbmFtZSB9OworCWludCAqY291bnQgPSAoaW50ICopY29udGV4dDsK KworCWlmICghYWNwaV9pc19yb290X2JyaWRnZShoYW5kbGUpKQorCQlyZXR1cm4gQUVfT0s7CisK KwkoKmNvdW50KSsrOworCisJYWNwaV9nZXRfbmFtZShoYW5kbGUsIEFDUElfRlVMTF9QQVRITkFN RSwgJmJ1ZmZlcik7CisKKwlhY3BpX2luc3RhbGxfbm90aWZ5X2hhbmRsZXIoaGFuZGxlLCBBQ1BJ X1NZU1RFTV9OT1RJRlksCisJCQkJaGFuZGxlX2hvdHBsdWdfZXZlbnRfcm9vdCwgTlVMTCk7CisJ cHJpbnRrKEtFUk5fREVCVUcgImFjcGkgcm9vdDogJXMgbm90aWZ5IGhhbmRsZXIgaW5zdGFsbGVk XG4iLCBvYmpuYW1lKTsKKworCWFkZF9hY3BpX3Jvb3RfYnJpZGdlKGhhbmRsZSk7CisKKwlyZXR1 cm4gQUVfT0s7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IGFjcGlfcGNpX3Jvb3RfaHBfaW5pdCh2 b2lkKQoreworCWludCBudW0gPSAwOworCisJYWNwaV93YWxrX25hbWVzcGFjZShBQ1BJX1RZUEVf REVWSUNFLCBBQ1BJX1JPT1RfT0JKRUNULAorCQlBQ1BJX1VJTlQzMl9NQVgsIGZpbmRfcm9vdF9i cmlkZ2VzLCBOVUxMLCAmbnVtLCBOVUxMKTsKKworCXByaW50ayhLRVJOX0RFQlVHICJGb3VuZCAl ZCBhY3BpIHJvb3QgZGV2aWNlc1xuIiwgbnVtKTsKKworCXJldHVybiAwOworfQorCitzdWJzeXNf aW5pdGNhbGwoYWNwaV9wY2lfcm9vdF9ocF9pbml0KTsKSW5kZXg6IGxpbnV4LTIuNi9kcml2ZXJz L2FjcGkvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvZHJpdmVycy9hY3Bp L01ha2VmaWxlCisrKyBsaW51eC0yLjYvZHJpdmVycy9hY3BpL01ha2VmaWxlCkBAIC0zNiw2ICsz Niw3IEBAIGFjcGkteQkJCQkrPSBwcm9jZXNzb3JfY29yZS5vCiBhY3BpLXkJCQkJKz0gZWMubwog YWNwaS0kKENPTkZJR19BQ1BJX0RPQ0spCSs9IGRvY2subwogYWNwaS15CQkJCSs9IHBjaV9yb290 Lm8gcGNpX2xpbmsubyBwY2lfaXJxLm8gcGNpX2JpbmQubworYWNwaS0kKENPTkZJR19IT1RQTFVH KQkJKz0gcGNpX3Jvb3RfaHAubwogYWNwaS15CQkJCSs9IHBvd2VyLm8KIGFjcGkteQkJCQkrPSBl dmVudC5vCiBhY3BpLXkJCQkJKz0gc3lzZnMubwo= --bcaec555517a98bb0504c99d0cb6 Content-Type: application/octet-stream; name="pci_root_hp_6.patch" Content-Disposition: attachment; filename="pci_root_hp_6.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h72fsfe21 U3ViamVjdDogW1BBVENIXSBQQ0ksIEFDUEk6IFBhc3MgZGV2aWNlIGluc3RlYWQgb2YgaGFuZGxl IHdoZW4gY29uZmlnIHJvb3QgYnJpZGdlCgpTbyB3ZSBjYW4gYXZvaWQgb25lIGNhbGxpbmcgb2Yg YWNwaV9wY2lfZmluZF9yb290KCkuCgpTaWduZWQtb2ZmLWJ5OiBZaW5naGFpIEx1IDx5aW5naGFp QGtlcm5lbC5vcmc+CgotLS0KIGRyaXZlcnMvYWNwaS9wY2lfcm9vdF9ocC5jIHwgICAgNiArKyst LS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpJbmRl eDogbGludXgtMi42L2RyaXZlcnMvYWNwaS9wY2lfcm9vdF9ocC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp bnV4LTIuNi5vcmlnL2RyaXZlcnMvYWNwaS9wY2lfcm9vdF9ocC5jCisrKyBsaW51eC0yLjYvZHJp dmVycy9hY3BpL3BjaV9yb290X2hwLmMKQEAgLTEwMiw5ICsxMDIsOSBAQCBzdGF0aWMgdm9pZCBh bGxvY19hY3BpX3Jvb3RfaHBfd29yayhhY3BpCiB9CiAKIC8qIFByb2dyYW0gcmVzb3VyY2VzIGlu IG5ld2x5IGluc2VydGVkIGJyaWRnZSAqLwotc3RhdGljIHZvaWQgYWNwaV9yb290X2NvbmZpZ3Vy ZV9icmlkZ2UoYWNwaV9oYW5kbGUgaGFuZGxlKQorc3RhdGljIHZvaWQgYWNwaV9yb290X2NvbmZp Z3VyZV9icmlkZ2Uoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCiB7Ci0Jc3RydWN0IGFjcGlf cGNpX3Jvb3QgKnJvb3QgPSBhY3BpX3BjaV9maW5kX3Jvb3QoaGFuZGxlKTsKKwlzdHJ1Y3QgYWNw aV9wY2lfcm9vdCAqcm9vdCA9IGFjcGlfZHJpdmVyX2RhdGEoZGV2aWNlKTsKIAogCXBjaWJpb3Nf cmVzb3VyY2Vfc3VydmV5X2J1cyhyb290LT5idXMpOwogCXBjaV9hc3NpZ25fdW5hc3NpZ25lZF9i dXNfcmVzb3VyY2VzKHJvb3QtPmJ1cyk7CkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHZvaWQg aGFuZGxlX3Jvb3RfYnJpZGdlX2luc2VydGlvbgogCQlwcmludGsoS0VSTl9FUlIgImNhbm5vdCBh ZGQgYnJpZGdlIHRvIGFjcGkgbGlzdFxuIik7CiAJCXJldHVybjsKIAl9Ci0JYWNwaV9yb290X2Nv bmZpZ3VyZV9icmlkZ2UoaGFuZGxlKTsKKwlhY3BpX3Jvb3RfY29uZmlndXJlX2JyaWRnZShkZXZp Y2UpOwogCWlmIChhY3BpX2J1c19zdGFydChkZXZpY2UpKQogCQlwcmludGsoS0VSTl9FUlIgImNh bm5vdCBzdGFydCBicmlkZ2VcbiIpOwogfQo= --bcaec555517a98bb0504c99d0cb6 Content-Type: application/octet-stream; name="update_acpi_pci_driver_add_remove.patch" Content-Disposition: attachment; filename="update_acpi_pci_driver_add_remove.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h72ft0vp2 U3ViamVjdDogW1BBVENIXSBQQ0ksIGFjcGk6IFVwZGF0ZSBhY3BpX3BjaV9kcml2ZXIgYWRkL3Jl bW92ZSBpbnRlcmZhY2UKClRvIHRha2UgYWNwaV9wY2lfcm9vdCBwb2ludGVyIGluc3RlYWQsIHNv IGxhdGVyIGNhbGxlciB3aWxsIG5vdCBuZWVkIHRvCgpjaGVjayB0aGUgYXBjaV9wY2lfcm9vdCBs aXN0IHRvIGZpbmQgaXQuCgpTdWdnZXN0ZWQtYnk6IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdv b2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFlpbmdoYWkgTHUgPHlpbmdoYWlAa2VybmVsLm9yZz4K Ci0tLQogZHJpdmVycy9hY3BpL3BjaV9yb290LmMgICAgICAgICAgICB8ICAgIDQgKystLQogZHJp dmVycy9hY3BpL3BjaV9zbG90LmMgICAgICAgICAgICB8ICAgMTIgKysrKysrKy0tLS0tCiBkcml2 ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBfZ2x1ZS5jIHwgICAxMiArKysrKysrLS0tLS0KIGluY2x1 ZGUvbGludXgvYWNwaS5oICAgICAgICAgICAgICAgfCAgICA0ICsrLS0KIDQgZmlsZXMgY2hhbmdl ZCwgMTggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpJbmRleDogbGludXgtMi42L2Ry aXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42 Lm9yaWcvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYworKysgbGludXgtMi42L2Ry aXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMKQEAgLTM4MiwxMCArMzgyLDEwIEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBjb25maWdfcDJwX2JyaWRnZV9mbGEKIAogCiAvKiBhbGxvY2F0ZSBh bmQgaW5pdGlhbGl6ZSBob3N0IGJyaWRnZSBkYXRhIHN0cnVjdHVyZSAqLwotc3RhdGljIHZvaWQg YWRkX2hvc3RfYnJpZGdlKGFjcGlfaGFuZGxlICpoYW5kbGUpCitzdGF0aWMgdm9pZCBhZGRfaG9z dF9icmlkZ2Uoc3RydWN0IGFjcGlfcGNpX3Jvb3QgKnJvb3QpCiB7CisgICAgICAgIGFjcGlfaGFu ZGxlIGhhbmRsZSA9IHJvb3QtPmRldmljZS0+aGFuZGxlOwogCXN0cnVjdCBhY3BpcGhwX2JyaWRn ZSAqYnJpZGdlOwotCXN0cnVjdCBhY3BpX3BjaV9yb290ICpyb290ID0gYWNwaV9wY2lfZmluZF9y b290KGhhbmRsZSk7CiAKIAlicmlkZ2UgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYWNwaXBocF9i cmlkZ2UpLCBHRlBfS0VSTkVMKTsKIAlpZiAoYnJpZGdlID09IE5VTEwpCkBAIC00NjgsOCArNDY4 LDkgQEAgZmluZF9wMnBfYnJpZGdlKGFjcGlfaGFuZGxlIGhhbmRsZSwgdTMyCiAKIAogLyogZmlu ZCBob3QtcGx1Z2dhYmxlIHNsb3RzLCBhbmQgdGhlbiBmaW5kIFAyUCBicmlkZ2UgKi8KLXN0YXRp YyBpbnQgYWRkX2JyaWRnZShhY3BpX2hhbmRsZSBoYW5kbGUpCitzdGF0aWMgaW50IGFkZF9icmlk Z2Uoc3RydWN0IGFjcGlfcGNpX3Jvb3QgKnJvb3QpCiB7CisJYWNwaV9oYW5kbGUgaGFuZGxlID0g cm9vdC0+ZGV2aWNlLT5oYW5kbGU7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCXVuc2lnbmVkIGxv bmcgbG9uZyB0bXA7CiAJYWNwaV9oYW5kbGUgZHVtbXlfaGFuZGxlOwpAQCAtNDkwLDcgKzQ5MSw3 IEBAIHN0YXRpYyBpbnQgYWRkX2JyaWRnZShhY3BpX2hhbmRsZSBoYW5kbGUKIAkvKiBjaGVjayBp ZiB0aGlzIGJyaWRnZSBoYXMgZWplY3RhYmxlIHNsb3RzICovCiAJaWYgKGRldGVjdF9lamVjdGFi bGVfc2xvdHMoaGFuZGxlKSA+IDApIHsKIAkJZGJnKCJmb3VuZCBQQ0kgaG9zdC1idXMgYnJpZGdl IHdpdGggaG90LXBsdWdnYWJsZSBzbG90c1xuIik7Ci0JCWFkZF9ob3N0X2JyaWRnZShoYW5kbGUp OworCQlhZGRfaG9zdF9icmlkZ2Uocm9vdCk7CiAJfQogCiAJLyogc2VhcmNoIFAyUCBicmlkZ2Vz IHVuZGVyIHRoaXMgaG9zdCBicmlkZ2UgKi8KQEAgLTU5MSw4ICs1OTIsOSBAQCBjbGVhbnVwX3Ay cF9icmlkZ2UoYWNwaV9oYW5kbGUgaGFuZGxlLCB1CiAJcmV0dXJuIEFFX09LOwogfQogCi1zdGF0 aWMgdm9pZCByZW1vdmVfYnJpZGdlKGFjcGlfaGFuZGxlIGhhbmRsZSkKK3N0YXRpYyB2b2lkIHJl bW92ZV9icmlkZ2Uoc3RydWN0IGFjcGlfcGNpX3Jvb3QgKnJvb3QpCiB7CisJYWNwaV9oYW5kbGUg aGFuZGxlID0gcm9vdC0+ZGV2aWNlLT5oYW5kbGU7CiAJc3RydWN0IGFjcGlwaHBfYnJpZGdlICpi cmlkZ2U7CiAKIAkvKiBjbGVhbnVwIHAycCBicmlkZ2VzIHVuZGVyIHRoaXMgaG9zdCBicmlkZ2UK SW5kZXg6IGxpbnV4LTIuNi9pbmNsdWRlL2xpbnV4L2FjcGkuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51 eC0yLjYub3JpZy9pbmNsdWRlL2xpbnV4L2FjcGkuaAorKysgbGludXgtMi42L2luY2x1ZGUvbGlu dXgvYWNwaS5oCkBAIC0xMzksOCArMTM5LDggQEAgdm9pZCBhY3BpX3BjaV9pcnFfZGlzYWJsZSAo c3RydWN0IHBjaV9kZQogCiBzdHJ1Y3QgYWNwaV9wY2lfZHJpdmVyIHsKIAlzdHJ1Y3QgYWNwaV9w Y2lfZHJpdmVyICpuZXh0OwotCWludCAoKmFkZCkoYWNwaV9oYW5kbGUgaGFuZGxlKTsKLQl2b2lk ICgqcmVtb3ZlKShhY3BpX2hhbmRsZSBoYW5kbGUpOworCWludCAoKmFkZCkoc3RydWN0IGFjcGlf cGNpX3Jvb3QgKnJvb3QpOworCXZvaWQgKCpyZW1vdmUpKHN0cnVjdCBhY3BpX3BjaV9yb290ICpy b290KTsKIH07CiAKIGludCBhY3BpX3BjaV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IGFjcGlfcGNp X2RyaXZlciAqZHJpdmVyKTsKSW5kZXg6IGxpbnV4LTIuNi9kcml2ZXJzL2FjcGkvcGNpX3Nsb3Qu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYub3JpZy9kcml2ZXJzL2FjcGkvcGNpX3Nsb3QuYwor KysgbGludXgtMi42L2RyaXZlcnMvYWNwaS9wY2lfc2xvdC5jCkBAIC02Nyw4ICs2Nyw4IEBAIHN0 cnVjdCBhY3BpX3BjaV9zbG90IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CQkvKiBub2RlIGlu IHRoZSBsaXN0IG9mIHNsb3RzICovCiB9OwogCi1zdGF0aWMgaW50IGFjcGlfcGNpX3Nsb3RfYWRk KGFjcGlfaGFuZGxlIGhhbmRsZSk7Ci1zdGF0aWMgdm9pZCBhY3BpX3BjaV9zbG90X3JlbW92ZShh Y3BpX2hhbmRsZSBoYW5kbGUpOworc3RhdGljIGludCBhY3BpX3BjaV9zbG90X2FkZChzdHJ1Y3Qg YWNwaV9wY2lfcm9vdCAqcm9vdCk7CitzdGF0aWMgdm9pZCBhY3BpX3BjaV9zbG90X3JlbW92ZShz dHJ1Y3QgYWNwaV9wY2lfcm9vdCAqcm9vdCk7CiAKIHN0YXRpYyBMSVNUX0hFQUQoc2xvdF9saXN0 KTsKIHN0YXRpYyBERUZJTkVfTVVURVgoc2xvdF9saXN0X2xvY2spOwpAQCAtMjk1LDExICsyOTUs MTEgQEAgd2Fsa19yb290X2JyaWRnZShhY3BpX2hhbmRsZSBoYW5kbGUsIGFjcAogICogQGhhbmRs ZTogcG9pbnRzIHRvIGFuIGFjcGlfcGNpX3Jvb3QKICAqLwogc3RhdGljIGludAotYWNwaV9wY2lf c2xvdF9hZGQoYWNwaV9oYW5kbGUgaGFuZGxlKQorYWNwaV9wY2lfc2xvdF9hZGQoc3RydWN0IGFj cGlfcGNpX3Jvb3QgKnJvb3QpCiB7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwogCi0Jc3RhdHVzID0g d2Fsa19yb290X2JyaWRnZShoYW5kbGUsIHJlZ2lzdGVyX3Nsb3QpOworCXN0YXR1cyA9IHdhbGtf cm9vdF9icmlkZ2Uocm9vdC0+ZGV2aWNlLT5oYW5kbGUsIHJlZ2lzdGVyX3Nsb3QpOwogCWlmIChB Q1BJX0ZBSUxVUkUoc3RhdHVzKSkKIAkJZXJyKCIlczogcmVnaXN0ZXJfc2xvdCBmYWlsdXJlIC0g JWRcbiIsIF9fZnVuY19fLCBzdGF0dXMpOwogCkBAIC0zMTEsMTIgKzMxMSwxNCBAQCBhY3BpX3Bj aV9zbG90X2FkZChhY3BpX2hhbmRsZSBoYW5kbGUpCiAgKiBAaGFuZGxlOiBwb2ludHMgdG8gYW4g YWNwaV9wY2lfcm9vdAogICovCiBzdGF0aWMgdm9pZAotYWNwaV9wY2lfc2xvdF9yZW1vdmUoYWNw aV9oYW5kbGUgaGFuZGxlKQorYWNwaV9wY2lfc2xvdF9yZW1vdmUoc3RydWN0IGFjcGlfcGNpX3Jv b3QgKnJvb3QpCiB7CiAJc3RydWN0IGFjcGlfcGNpX3Nsb3QgKnNsb3QsICp0bXA7CiAJc3RydWN0 IHBjaV9idXMgKnBidXM7CisJYWNwaV9oYW5kbGUgaGFuZGxlOwogCiAJbXV0ZXhfbG9jaygmc2xv dF9saXN0X2xvY2spOworCWhhbmRsZSA9IHJvb3QtPmRldmljZS0+aGFuZGxlOwogCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShzbG90LCB0bXAsICZzbG90X2xpc3QsIGxpc3QpIHsKIAkJaWYgKHNs b3QtPnJvb3RfaGFuZGxlID09IGhhbmRsZSkgewogCQkJbGlzdF9kZWwoJnNsb3QtPmxpc3QpOwpJ bmRleDogbGludXgtMi42L2RyaXZlcnMvYWNwaS9wY2lfcm9vdC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp bnV4LTIuNi5vcmlnL2RyaXZlcnMvYWNwaS9wY2lfcm9vdC5jCisrKyBsaW51eC0yLjYvZHJpdmVy cy9hY3BpL3BjaV9yb290LmMKQEAgLTkwLDcgKzkwLDcgQEAgaW50IGFjcGlfcGNpX3JlZ2lzdGVy X2RyaXZlcihzdHJ1Y3QgYWNwaQogCQlyZXR1cm4gMDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnko cm9vdCwgJmFjcGlfcGNpX3Jvb3RzLCBub2RlKSB7Ci0JCWRyaXZlci0+YWRkKHJvb3QtPmRldmlj ZS0+aGFuZGxlKTsKKwkJZHJpdmVyLT5hZGQocm9vdCk7CiAJCW4rKzsKIAl9CiAKQEAgLTExNiw3 ICsxMTYsNyBAQCB2b2lkIGFjcGlfcGNpX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBhCiAJCXJl dHVybjsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkocm9vdCwgJmFjcGlfcGNpX3Jvb3RzLCBub2Rl KQotCQlkcml2ZXItPnJlbW92ZShyb290LT5kZXZpY2UtPmhhbmRsZSk7CisJCWRyaXZlci0+cmVt b3ZlKHJvb3QpOwogfQogCiBFWFBPUlRfU1lNQk9MKGFjcGlfcGNpX3VucmVnaXN0ZXJfZHJpdmVy KTsK --bcaec555517a98bb0504c99d0cb6--