From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: [PATCH v4 7/8] igd: move igd-passthrough-isa-bridge to igd.c too Date: Tue, 8 Mar 2016 15:27:26 +0100 Message-ID: <1457447247-4865-8-git-send-email-kraxel@redhat.com> References: <1457447247-4865-1-git-send-email-kraxel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1457447247-4865-1-git-send-email-kraxel@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: kevin.tian@intel.com, Alex Williamson , Stefano Stabellini Cc: igvt-g@ml01.01.org, xen-devel@lists.xensource.com, Eduardo Habkost , "Michael S. Tsirkin" , "open list:All patches CC here" , Gerd Hoffmann , Paolo Bonzini , Richard Henderson List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci0tLQogaHcv aTM4Ni9wY19waWl4LmMgfCAxMTMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBody9wY2ktaG9zdC9pZ2QuYyB8IDEwOCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwg MTA4IGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9pMzg2 L3BjX3BpaXguYyBiL2h3L2kzODYvcGNfcGlpeC5jCmluZGV4IDQwYzU4YTUuLjQzOTY0ZGMgMTAw NjQ0Ci0tLSBhL2h3L2kzODYvcGNfcGlpeC5jCisrKyBiL2h3L2kzODYvcGNfcGlpeC5jCkBAIC05 MTAsMTE5ICs5MTAsNiBAQCBzdGF0aWMgdm9pZCBwY19pNDQwZnhfMF8xMF9tYWNoaW5lX29wdGlv bnMoTWFjaGluZUNsYXNzICptKQogREVGSU5FX0k0NDBGWF9NQUNISU5FKHYwXzEwLCAicGMtMC4x MCIsIHBjX2NvbXBhdF8wXzEzLAogICAgICAgICAgICAgICAgICAgICAgIHBjX2k0NDBmeF8wXzEw X21hY2hpbmVfb3B0aW9ucyk7CiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICB1aW50MTZfdCBncHVf ZGV2aWNlX2lkOwotICAgIHVpbnQxNl90IHBjaF9kZXZpY2VfaWQ7Ci0gICAgdWludDhfdCBwY2hf cmV2aXNpb25faWQ7Ci19IElHRERldmljZUlESW5mbzsKLQotLyogSW4gcmVhbCB3b3JsZCBkaWZm ZXJlbnQgR1BVIHNob3VsZCBoYXZlIGRpZmZlcmVudCBQQ0guIEJ1dCBhY3R1YWxseQotICogdGhl IGRpZmZlcmVudCBQQ0ggRElEcyBsaWtlbHkgbWFwIHRvIGRpZmZlcmVudCBQQ0ggU0tVcy4gV2Ug ZG8gdGhlCi0gKiBzYW1lIHRoaW5nIGZvciB0aGUgR1BVLiBGb3IgUENILCB0aGUgZGlmZmVyZW50 IFNLVXMgYXJlIGdvaW5nIHRvIGJlCi0gKiBhbGwgdGhlIHNhbWUgc2lsaWNvbiBkZXNpZ24gYW5k IGltcGxlbWVudGF0aW9uLCBqdXN0IGRpZmZlcmVudAotICogZmVhdHVyZXMgdHVybiBvbiBhbmQg b2ZmIHdpdGggZnVzZXMuIFRoZSBTVyBpbnRlcmZhY2VzIHNob3VsZCBiZQotICogY29uc2lzdGVu dCBhY3Jvc3MgYWxsIFNLVXMgaW4gYSBnaXZlbiBmYW1pbHkgKGVnIExQVCkuIEJ1dCBqdXN0IHNh bWUKLSAqIGZlYXR1cmVzIG1heSBub3QgYmUgc3VwcG9ydGVkLgotICoKLSAqIE1vc3Qgb2YgdGhl c2UgZGlmZmVyZW50IFBDSCBmZWF0dXJlcyBwcm9iYWJseSBkb24ndCBtYXR0ZXIgdG8gdGhlCi0g KiBHZnggZHJpdmVyLCBidXQgb2J2aW91c2x5IGFueSBkaWZmZXJlbmNlIGluIGRpc3BsYXkgcG9y dCBjb25uZWN0aW9ucwotICogd2lsbCBzbyBpdCBzaG91bGQgYmUgZmluZSB3aXRoIGFueSBQQ0gg aW4gY2FzZSBvZiBwYXNzdGhyb3VnaC4KLSAqCi0gKiBTbyBjdXJyZW50bHkgdXNlIG9uZSBQQ0gg dmVyc2lvbiwgMHg4YzRlLCB0byBjb3ZlciBhbGwgSFNXKEhhc3dlbGwpCi0gKiBzY2VuYXJpb3Ms IDB4OWNjMyBmb3IgQkRXKEJyb2Fkd2VsbCkuCi0gKi8KLXN0YXRpYyBjb25zdCBJR0REZXZpY2VJ REluZm8gaWdkX2NvbWJvX2lkX2luZm9zW10gPSB7Ci0gICAgLyogSFNXIENsYXNzaWMgKi8KLSAg ICB7MHgwNDAyLCAweDhjNGUsIDB4MDR9LCAvKiBIU1dHVDFELCBIU1dEX3c3ICovCi0gICAgezB4 MDQwNiwgMHg4YzRlLCAweDA0fSwgLyogSFNXR1QxTSwgSFNXTV93NyAqLwotICAgIHsweDA0MTIs IDB4OGM0ZSwgMHgwNH0sIC8qIEhTV0dUMkQsIEhTV0RfdzcgKi8KLSAgICB7MHgwNDE2LCAweDhj NGUsIDB4MDR9LCAvKiBIU1dHVDJNLCBIU1dNX3c3ICovCi0gICAgezB4MDQxRSwgMHg4YzRlLCAw eDA0fSwgLyogSFNXR1QxNUQsIEhTV0RfdzcgKi8KLSAgICAvKiBIU1cgVUxUICovCi0gICAgezB4 MEEwNiwgMHg4YzRlLCAweDA0fSwgLyogSFNXR1QxVVQsIEhTV01fdzcgKi8KLSAgICB7MHgwQTE2 LCAweDhjNGUsIDB4MDR9LCAvKiBIU1dHVDJVVCwgSFNXTV93NyAqLwotICAgIHsweDBBMjYsIDB4 OGM0ZSwgMHgwNn0sIC8qIEhTV0dUM1VULCBIU1dNX3c3ICovCi0gICAgezB4MEEyRSwgMHg4YzRl LCAweDA0fSwgLyogSFNXR1QzVVQyOFcsIEhTV01fdzcgKi8KLSAgICB7MHgwQTFFLCAweDhjNGUs IDB4MDR9LCAvKiBIU1dHVDJVWCwgSFNXTV93NyAqLwotICAgIHsweDBBMEUsIDB4OGM0ZSwgMHgw NH0sIC8qIEhTV0dUMVVMWCwgSFNXTV93NyAqLwotICAgIC8qIEhTVyBDUlcgKi8KLSAgICB7MHgw RDI2LCAweDhjNGUsIDB4MDR9LCAvKiBIU1dHVDNDVywgSFNXTV93NyAqLwotICAgIHsweDBEMjIs IDB4OGM0ZSwgMHgwNH0sIC8qIEhTV0dUM0NXRFQsIEhTV0RfdzcgKi8KLSAgICAvKiBIU1cgU2Vy dmVyICovCi0gICAgezB4MDQxQSwgMHg4YzRlLCAweDA0fSwgLyogSFNXU1ZHVDIsIEhTV0Rfdzcg Ki8KLSAgICAvKiBIU1cgU1JWUiAqLwotICAgIHsweDA0MEEsIDB4OGM0ZSwgMHgwNH0sIC8qIEhT V1NWR1QxLCBIU1dEX3c3ICovCi0gICAgLyogQlNXICovCi0gICAgezB4MTYwNiwgMHg5Y2MzLCAw eDAzfSwgLyogQkRXVUxUR1QxLCBCRFdNX3c3ICovCi0gICAgezB4MTYxNiwgMHg5Y2MzLCAweDAz fSwgLyogQkRXVUxUR1QyLCBCRFdNX3c3ICovCi0gICAgezB4MTYyNiwgMHg5Y2MzLCAweDAzfSwg LyogQkRXVUxUR1QzLCBCRFdNX3c3ICovCi0gICAgezB4MTYwRSwgMHg5Y2MzLCAweDAzfSwgLyog QkRXVUxYR1QxLCBCRFdNX3c3ICovCi0gICAgezB4MTYxRSwgMHg5Y2MzLCAweDAzfSwgLyogQkRX VUxYR1QyLCBCRFdNX3c3ICovCi0gICAgezB4MTYwMiwgMHg5Y2MzLCAweDAzfSwgLyogQkRXSEFM T0dUMSwgQkRXTV93NyAqLwotICAgIHsweDE2MTIsIDB4OWNjMywgMHgwM30sIC8qIEJEV0hBTE9H VDIsIEJEV01fdzcgKi8KLSAgICB7MHgxNjIyLCAweDljYzMsIDB4MDN9LCAvKiBCRFdIQUxPR1Qz LCBCRFdNX3c3ICovCi0gICAgezB4MTYyQiwgMHg5Y2MzLCAweDAzfSwgLyogQkRXSEFMTzI4Vywg QkRXTV93NyAqLwotICAgIHsweDE2MkEsIDB4OWNjMywgMHgwM30sIC8qIEJEV0dUM1dSS1MsIEJE V01fdzcgKi8KLSAgICB7MHgxNjJELCAweDljYzMsIDB4MDN9LCAvKiBCRFdHVDNTUlZSLCBCRFdN X3c3ICovCi19OwotCi1zdGF0aWMgdm9pZCBpc2FfYnJpZGdlX2NsYXNzX2luaXQoT2JqZWN0Q2xh c3MgKmtsYXNzLCB2b2lkICpkYXRhKQotewotICAgIERldmljZUNsYXNzICpkYyA9IERFVklDRV9D TEFTUyhrbGFzcyk7Ci0gICAgUENJRGV2aWNlQ2xhc3MgKmsgPSBQQ0lfREVWSUNFX0NMQVNTKGts YXNzKTsKLQotICAgIGRjLT5kZXNjICAgICAgICA9ICJJU0EgYnJpZGdlIGZha2VkIHRvIHN1cHBv cnQgSUdEIFBUIjsKLSAgICBrLT52ZW5kb3JfaWQgICAgPSBQQ0lfVkVORE9SX0lEX0lOVEVMOwot ICAgIGstPmNsYXNzX2lkICAgICA9IFBDSV9DTEFTU19CUklER0VfSVNBOwotfTsKLQotc3RhdGlj IFR5cGVJbmZvIGlzYV9icmlkZ2VfaW5mbyA9IHsKLSAgICAubmFtZSAgICAgICAgICA9ICJpZ2Qt cGFzc3Rocm91Z2gtaXNhLWJyaWRnZSIsCi0gICAgLnBhcmVudCAgICAgICAgPSBUWVBFX1BDSV9E RVZJQ0UsCi0gICAgLmluc3RhbmNlX3NpemUgPSBzaXplb2YoUENJRGV2aWNlKSwKLSAgICAuY2xh c3NfaW5pdCA9IGlzYV9icmlkZ2VfY2xhc3NfaW5pdCwKLX07Ci0KLXN0YXRpYyB2b2lkIHB0X2dy YXBoaWNzX3JlZ2lzdGVyX3R5cGVzKHZvaWQpCi17Ci0gICAgdHlwZV9yZWdpc3Rlcl9zdGF0aWMo JmlzYV9icmlkZ2VfaW5mbyk7Ci19Ci10eXBlX2luaXQocHRfZ3JhcGhpY3NfcmVnaXN0ZXJfdHlw ZXMpCi0KLXZvaWQgaWdkX3Bhc3N0aHJvdWdoX2lzYV9icmlkZ2VfY3JlYXRlKFBDSUJ1cyAqYnVz LCB1aW50MTZfdCBncHVfZGV2X2lkKQotewotICAgIHN0cnVjdCBQQ0lEZXZpY2UgKmJyaWRnZV9k ZXY7Ci0gICAgaW50IGksIG51bTsKLSAgICB1aW50MTZfdCBwY2hfZGV2X2lkID0gMHhmZmZmOwot ICAgIHVpbnQ4X3QgcGNoX3Jldl9pZDsKLQotICAgIG51bSA9IEFSUkFZX1NJWkUoaWdkX2NvbWJv X2lkX2luZm9zKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKLSAgICAgICAgaWYg KGdwdV9kZXZfaWQgPT0gaWdkX2NvbWJvX2lkX2luZm9zW2ldLmdwdV9kZXZpY2VfaWQpIHsKLSAg ICAgICAgICAgIHBjaF9kZXZfaWQgPSBpZ2RfY29tYm9faWRfaW5mb3NbaV0ucGNoX2RldmljZV9p ZDsKLSAgICAgICAgICAgIHBjaF9yZXZfaWQgPSBpZ2RfY29tYm9faWRfaW5mb3NbaV0ucGNoX3Jl dmlzaW9uX2lkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHBjaF9kZXZfaWQgPT0gMHhm ZmZmKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvKiBDdXJyZW50bHkgSUdEIGRy aXZlcnMgYWx3YXlzIG5lZWQgdG8gYWNjZXNzIFBDSCBieSAxZi4wLiAqLwotICAgIGJyaWRnZV9k ZXYgPSBwY2lfY3JlYXRlX3NpbXBsZShidXMsIFBDSV9ERVZGTigweDFmLCAwKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImlnZC1wYXNzdGhyb3VnaC1pc2EtYnJpZGdlIik7 Ci0KLSAgICAvKgotICAgICAqIE5vdGUgdGhhdCB2ZW5kb3IgaWQgaXMgYWx3YXlzIFBDSV9WRU5E T1JfSURfSU5URUwuCi0gICAgICovCi0gICAgaWYgKCFicmlkZ2VfZGV2KSB7Ci0gICAgICAgIGZw cmludGYoc3RkZXJyLCAic2V0IGlnZC1wYXNzdGhyb3VnaC1pc2EtYnJpZGdlIGZhaWxlZCFcbiIp OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHBjaV9jb25maWdfc2V0X2RldmljZV9pZChi cmlkZ2VfZGV2LT5jb25maWcsIHBjaF9kZXZfaWQpOwotICAgIHBjaV9jb25maWdfc2V0X3Jldmlz aW9uKGJyaWRnZV9kZXYtPmNvbmZpZywgcGNoX3Jldl9pZCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGlz YXBjX21hY2hpbmVfb3B0aW9ucyhNYWNoaW5lQ2xhc3MgKm0pCiB7CiAgICAgUENNYWNoaW5lQ2xh c3MgKnBjbWMgPSBQQ19NQUNISU5FX0NMQVNTKG0pOwpkaWZmIC0tZ2l0IGEvaHcvcGNpLWhvc3Qv aWdkLmMgYi9ody9wY2ktaG9zdC9pZ2QuYwppbmRleCA1YzRhMDA4Li5lNzE4M2EzIDEwMDY0NAot LS0gYS9ody9wY2ktaG9zdC9pZ2QuYworKysgYi9ody9wY2ktaG9zdC9pZ2QuYwpAQCAtMTAwLDkg KzEwMCwxMTcgQEAgc3RhdGljIGNvbnN0IFR5cGVJbmZvIGlnZF9wYXNzdGhyb3VnaF9pNDQwZnhf aW5mbyA9IHsKICAgICAuY2xhc3Nfc2l6ZSAgICA9IHNpemVvZihJR0RQdEk0NDBmeENsYXNzKSwK IH07CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1aW50MTZfdCBncHVfZGV2aWNlX2lkOworICAg IHVpbnQxNl90IHBjaF9kZXZpY2VfaWQ7CisgICAgdWludDhfdCBwY2hfcmV2aXNpb25faWQ7Cit9 IElHRERldmljZUlESW5mbzsKKworLyogSW4gcmVhbCB3b3JsZCBkaWZmZXJlbnQgR1BVIHNob3Vs ZCBoYXZlIGRpZmZlcmVudCBQQ0guIEJ1dCBhY3R1YWxseQorICogdGhlIGRpZmZlcmVudCBQQ0gg RElEcyBsaWtlbHkgbWFwIHRvIGRpZmZlcmVudCBQQ0ggU0tVcy4gV2UgZG8gdGhlCisgKiBzYW1l IHRoaW5nIGZvciB0aGUgR1BVLiBGb3IgUENILCB0aGUgZGlmZmVyZW50IFNLVXMgYXJlIGdvaW5n IHRvIGJlCisgKiBhbGwgdGhlIHNhbWUgc2lsaWNvbiBkZXNpZ24gYW5kIGltcGxlbWVudGF0aW9u LCBqdXN0IGRpZmZlcmVudAorICogZmVhdHVyZXMgdHVybiBvbiBhbmQgb2ZmIHdpdGggZnVzZXMu IFRoZSBTVyBpbnRlcmZhY2VzIHNob3VsZCBiZQorICogY29uc2lzdGVudCBhY3Jvc3MgYWxsIFNL VXMgaW4gYSBnaXZlbiBmYW1pbHkgKGVnIExQVCkuIEJ1dCBqdXN0IHNhbWUKKyAqIGZlYXR1cmVz IG1heSBub3QgYmUgc3VwcG9ydGVkLgorICoKKyAqIE1vc3Qgb2YgdGhlc2UgZGlmZmVyZW50IFBD SCBmZWF0dXJlcyBwcm9iYWJseSBkb24ndCBtYXR0ZXIgdG8gdGhlCisgKiBHZnggZHJpdmVyLCBi dXQgb2J2aW91c2x5IGFueSBkaWZmZXJlbmNlIGluIGRpc3BsYXkgcG9ydCBjb25uZWN0aW9ucwor ICogd2lsbCBzbyBpdCBzaG91bGQgYmUgZmluZSB3aXRoIGFueSBQQ0ggaW4gY2FzZSBvZiBwYXNz dGhyb3VnaC4KKyAqCisgKiBTbyBjdXJyZW50bHkgdXNlIG9uZSBQQ0ggdmVyc2lvbiwgMHg4YzRl LCB0byBjb3ZlciBhbGwgSFNXKEhhc3dlbGwpCisgKiBzY2VuYXJpb3MsIDB4OWNjMyBmb3IgQkRX KEJyb2Fkd2VsbCkuCisgKi8KK3N0YXRpYyBjb25zdCBJR0REZXZpY2VJREluZm8gaWdkX2NvbWJv X2lkX2luZm9zW10gPSB7CisgICAgLyogSFNXIENsYXNzaWMgKi8KKyAgICB7MHgwNDAyLCAweDhj NGUsIDB4MDR9LCAvKiBIU1dHVDFELCBIU1dEX3c3ICovCisgICAgezB4MDQwNiwgMHg4YzRlLCAw eDA0fSwgLyogSFNXR1QxTSwgSFNXTV93NyAqLworICAgIHsweDA0MTIsIDB4OGM0ZSwgMHgwNH0s IC8qIEhTV0dUMkQsIEhTV0RfdzcgKi8KKyAgICB7MHgwNDE2LCAweDhjNGUsIDB4MDR9LCAvKiBI U1dHVDJNLCBIU1dNX3c3ICovCisgICAgezB4MDQxRSwgMHg4YzRlLCAweDA0fSwgLyogSFNXR1Qx NUQsIEhTV0RfdzcgKi8KKyAgICAvKiBIU1cgVUxUICovCisgICAgezB4MEEwNiwgMHg4YzRlLCAw eDA0fSwgLyogSFNXR1QxVVQsIEhTV01fdzcgKi8KKyAgICB7MHgwQTE2LCAweDhjNGUsIDB4MDR9 LCAvKiBIU1dHVDJVVCwgSFNXTV93NyAqLworICAgIHsweDBBMjYsIDB4OGM0ZSwgMHgwNn0sIC8q IEhTV0dUM1VULCBIU1dNX3c3ICovCisgICAgezB4MEEyRSwgMHg4YzRlLCAweDA0fSwgLyogSFNX R1QzVVQyOFcsIEhTV01fdzcgKi8KKyAgICB7MHgwQTFFLCAweDhjNGUsIDB4MDR9LCAvKiBIU1dH VDJVWCwgSFNXTV93NyAqLworICAgIHsweDBBMEUsIDB4OGM0ZSwgMHgwNH0sIC8qIEhTV0dUMVVM WCwgSFNXTV93NyAqLworICAgIC8qIEhTVyBDUlcgKi8KKyAgICB7MHgwRDI2LCAweDhjNGUsIDB4 MDR9LCAvKiBIU1dHVDNDVywgSFNXTV93NyAqLworICAgIHsweDBEMjIsIDB4OGM0ZSwgMHgwNH0s IC8qIEhTV0dUM0NXRFQsIEhTV0RfdzcgKi8KKyAgICAvKiBIU1cgU2VydmVyICovCisgICAgezB4 MDQxQSwgMHg4YzRlLCAweDA0fSwgLyogSFNXU1ZHVDIsIEhTV0RfdzcgKi8KKyAgICAvKiBIU1cg U1JWUiAqLworICAgIHsweDA0MEEsIDB4OGM0ZSwgMHgwNH0sIC8qIEhTV1NWR1QxLCBIU1dEX3c3 ICovCisgICAgLyogQlNXICovCisgICAgezB4MTYwNiwgMHg5Y2MzLCAweDAzfSwgLyogQkRXVUxU R1QxLCBCRFdNX3c3ICovCisgICAgezB4MTYxNiwgMHg5Y2MzLCAweDAzfSwgLyogQkRXVUxUR1Qy LCBCRFdNX3c3ICovCisgICAgezB4MTYyNiwgMHg5Y2MzLCAweDAzfSwgLyogQkRXVUxUR1QzLCBC RFdNX3c3ICovCisgICAgezB4MTYwRSwgMHg5Y2MzLCAweDAzfSwgLyogQkRXVUxYR1QxLCBCRFdN X3c3ICovCisgICAgezB4MTYxRSwgMHg5Y2MzLCAweDAzfSwgLyogQkRXVUxYR1QyLCBCRFdNX3c3 ICovCisgICAgezB4MTYwMiwgMHg5Y2MzLCAweDAzfSwgLyogQkRXSEFMT0dUMSwgQkRXTV93NyAq LworICAgIHsweDE2MTIsIDB4OWNjMywgMHgwM30sIC8qIEJEV0hBTE9HVDIsIEJEV01fdzcgKi8K KyAgICB7MHgxNjIyLCAweDljYzMsIDB4MDN9LCAvKiBCRFdIQUxPR1QzLCBCRFdNX3c3ICovCisg ICAgezB4MTYyQiwgMHg5Y2MzLCAweDAzfSwgLyogQkRXSEFMTzI4VywgQkRXTV93NyAqLworICAg IHsweDE2MkEsIDB4OWNjMywgMHgwM30sIC8qIEJEV0dUM1dSS1MsIEJEV01fdzcgKi8KKyAgICB7 MHgxNjJELCAweDljYzMsIDB4MDN9LCAvKiBCRFdHVDNTUlZSLCBCRFdNX3c3ICovCit9OworCitz dGF0aWMgdm9pZCBpc2FfYnJpZGdlX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lk ICpkYXRhKQoreworICAgIERldmljZUNsYXNzICpkYyA9IERFVklDRV9DTEFTUyhrbGFzcyk7Cisg ICAgUENJRGV2aWNlQ2xhc3MgKmsgPSBQQ0lfREVWSUNFX0NMQVNTKGtsYXNzKTsKKworICAgIGRj LT5kZXNjICAgICAgICA9ICJJU0EgYnJpZGdlIGZha2VkIHRvIHN1cHBvcnQgSUdEIFBUIjsKKyAg ICBrLT52ZW5kb3JfaWQgICAgPSBQQ0lfVkVORE9SX0lEX0lOVEVMOworICAgIGstPmNsYXNzX2lk ICAgICA9IFBDSV9DTEFTU19CUklER0VfSVNBOworfTsKKworc3RhdGljIFR5cGVJbmZvIGlnZF9w YXNzdGhyb3VnaF9pc2FfYnJpZGdlX2luZm8gPSB7CisgICAgLm5hbWUgICAgICAgICAgPSAiaWdk LXBhc3N0aHJvdWdoLWlzYS1icmlkZ2UiLAorICAgIC5wYXJlbnQgICAgICAgID0gVFlQRV9QQ0lf REVWSUNFLAorICAgIC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKFBDSURldmljZSksCisgICAgLmNs YXNzX2luaXQgPSBpc2FfYnJpZGdlX2NsYXNzX2luaXQsCit9OworCit2b2lkIGlnZF9wYXNzdGhy b3VnaF9pc2FfYnJpZGdlX2NyZWF0ZShQQ0lCdXMgKmJ1cywgdWludDE2X3QgZ3B1X2Rldl9pZCkK K3sKKyAgICBzdHJ1Y3QgUENJRGV2aWNlICpicmlkZ2VfZGV2OworICAgIGludCBpLCBudW07Cisg ICAgdWludDE2X3QgcGNoX2Rldl9pZCA9IDB4ZmZmZjsKKyAgICB1aW50OF90IHBjaF9yZXZfaWQ7 CisKKyAgICBudW0gPSBBUlJBWV9TSVpFKGlnZF9jb21ib19pZF9pbmZvcyk7CisgICAgZm9yIChp ID0gMDsgaSA8IG51bTsgaSsrKSB7CisgICAgICAgIGlmIChncHVfZGV2X2lkID09IGlnZF9jb21i b19pZF9pbmZvc1tpXS5ncHVfZGV2aWNlX2lkKSB7CisgICAgICAgICAgICBwY2hfZGV2X2lkID0g aWdkX2NvbWJvX2lkX2luZm9zW2ldLnBjaF9kZXZpY2VfaWQ7CisgICAgICAgICAgICBwY2hfcmV2 X2lkID0gaWdkX2NvbWJvX2lkX2luZm9zW2ldLnBjaF9yZXZpc2lvbl9pZDsKKyAgICAgICAgfQor ICAgIH0KKworICAgIGlmIChwY2hfZGV2X2lkID09IDB4ZmZmZikgeworICAgICAgICByZXR1cm47 CisgICAgfQorCisgICAgLyogQ3VycmVudGx5IElHRCBkcml2ZXJzIGFsd2F5cyBuZWVkIHRvIGFj Y2VzcyBQQ0ggYnkgMWYuMC4gKi8KKyAgICBicmlkZ2VfZGV2ID0gcGNpX2NyZWF0ZV9zaW1wbGUo YnVzLCBQQ0lfREVWRk4oMHgxZiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJpZ2QtcGFzc3Rocm91Z2gtaXNhLWJyaWRnZSIpOworCisgICAgLyoKKyAgICAgKiBOb3Rl IHRoYXQgdmVuZG9yIGlkIGlzIGFsd2F5cyBQQ0lfVkVORE9SX0lEX0lOVEVMLgorICAgICAqLwor ICAgIGlmICghYnJpZGdlX2RldikgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNldCBpZ2Qt cGFzc3Rocm91Z2gtaXNhLWJyaWRnZSBmYWlsZWQhXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAg IH0KKyAgICBwY2lfY29uZmlnX3NldF9kZXZpY2VfaWQoYnJpZGdlX2Rldi0+Y29uZmlnLCBwY2hf ZGV2X2lkKTsKKyAgICBwY2lfY29uZmlnX3NldF9yZXZpc2lvbihicmlkZ2VfZGV2LT5jb25maWcs IHBjaF9yZXZfaWQpOworfQorCiBzdGF0aWMgdm9pZCBpZ2RfcmVnaXN0ZXJfdHlwZXModm9pZCkK IHsKICAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmaWdkX3Bhc3N0aHJvdWdoX2k0NDBmeF9pbmZv KTsKKyAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmaWdkX3Bhc3N0aHJvdWdoX2lzYV9icmlkZ2Vf aW5mbyk7CiB9CiAKIHR5cGVfaW5pdChpZ2RfcmVnaXN0ZXJfdHlwZXMpCi0tIAoxLjguMy4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK