From mboxrd@z Thu Jan 1 00:00:00 1970 From: Suravee Suthikulpanit Subject: [PATCH v2] AMD IOMMU: Support IOAPIC IDs larger than 128 Date: Mon, 5 Dec 2016 13:36:23 -0600 Message-ID: <1480966583-1644-1-git-send-email-suravee.suthikulpanit@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: boris.ostrovsky@oracle.com, Suravee Suthikulpanit , jbeulich@suse.com, sherry.hurwitz@amd.com List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5LCB0aGUgZHJpdmVyIHVzZXMgdGhlIEFQSUMgSUQgdG8gaW5kZXggaW50byB0aGUg aW9hcGljX3NiZGYgYXJyYXkuClRoZSBjdXJyZW50IE1BWF9JT19BUElDUyBpcyAxMjgsIHdoaWNo IGNhdXNlcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uCnRvIGZhaWwgb24gdGhlIHN5c3RlbSB3 aXRoIElPQVBJQyBJRCA+PSAxMjguCgpJbnN0ZWFkLCB0aGlzIHBhdGNoIGFkZHMgQVBJQyBJRCBp biB0aGUgc3RydWN0IGlvYXBpY19zYmRmLAp3aGljaCBpcyB1c2VkIHRvIG1hdGNoIHRoZSBlbnRy eSB3aGVuIHNlYXJjaGluZyB0aHJvdWdoIHRoZSBhcnJheS4KCkFsc28sIHRoaXMgcGF0Y2ggcmVt b3ZlcyB0aGUgdXNlIG9mIGlvYXBpY19jbWRsaW5lIGJpdC1tYXAsIHdoaWNoIGlzCnVzZWQgdG8g dHJhY2sgdGhlIGl2cnNfaW9hcGljIG9wdGlvbnMgdmlhIGNvbW1hbmQgbGluZS4KSW5zdGVhZCwg aXQgaW50cm9kdWNlcyB0aGUgY21kbGluZSBmbGFnIGluIHRoZSBzdHJ1Y3QgaW9hcGljX3NiZGYs CnRvIGlkZW50aWZ5IGlmIHRoZSBlbnRyeSBpcyBjcmVhdGVkIGR1cmluZyBpdnJzX2lvYXBpYyBj b21tYW5kLWxpbmUgcGFyc2luZy4KClNpZ25lZC1vZmYtYnk6IFN1cmF2ZWUgU3V0aGlrdWxwYW5p dCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+CkNjOiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUu Y29tPgotLS0KQ2hhbmdlcyBpbiBWMjoKICAgICogRml4IGxvZ2ljIGVycm9yIHBvaW50ZWQgb3V0 IGJ5IEphbiBpbiBwYXJzZV9pdnJzX2lvYXBpYygpLAogICAgICBwYXJzZV9pdmhkX2RldmljZV9z cGVjaWFsKCksIHBhcnNlX2l2cnNfdGFibGUoKSwgcGFyc2VfaXZyc190YWJsZSgpLgogICAgKiBV c2UgdW5zaWduZWQgaW50IGZvciBhcnJheSBpbmRleCB2YXJpYWJsZS4KICAgICogTWlub3IgY2xl YW4gdXBzLgoKIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9hY3BpLmMgICAgICB8 IDEwMiArKysrKysrKysrKysrKystLS0tLS0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YW1kL2lvbW11X2ludHIuYyAgICAgIHwgIDY0ICsrKysrKysrKysrKystLS0KIHhlbi9pbmNsdWRl L2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8uaCB8ICAgNiArKwogMyBmaWxlcyBjaGFu Z2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2FjcGkuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL2FtZC9pb21tdV9hY3BpLmMKaW5kZXggYjkyYzhhZC4uYWM5MDJhYyAxMDA2NDQKLS0t IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2FjcGkuYworKysgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfYWNwaS5jCkBAIC02MzMsMjYgKzYzMywzNyBAQCBz dGF0aWMgdTE2IF9faW5pdCBwYXJzZV9pdmhkX2RldmljZV9leHRlbmRlZF9yYW5nZSgKICAgICBy ZXR1cm4gZGV2X2xlbmd0aDsKIH0KIAotc3RhdGljIERFQ0xBUkVfQklUTUFQKGlvYXBpY19jbWRs aW5lLCBBUlJBWV9TSVpFKGlvYXBpY19zYmRmKSkgX19pbml0ZGF0YTsKLQogc3RhdGljIHZvaWQg X19pbml0IHBhcnNlX2l2cnNfaW9hcGljKGNoYXIgKnN0cikKIHsKICAgICBjb25zdCBjaGFyICpz ID0gc3RyOwogICAgIHVuc2lnbmVkIGxvbmcgaWQ7CiAgICAgdW5zaWduZWQgaW50IHNlZywgYnVz LCBkZXYsIGZ1bmM7CisgICAgdW5zaWduZWQgaW50IGlkeDsKIAogICAgIEFTU0VSVCgqcyA9PSAn WycpOwogICAgIGlkID0gc2ltcGxlX3N0cnRvdWwocyArIDEsICZzLCAwKTsKLSAgICBpZiAoIGlk ID49IEFSUkFZX1NJWkUoaW9hcGljX3NiZGYpIHx8ICpzICE9ICddJyB8fCAqKytzICE9ICc9JyAp CisgICAgaWYgKCAqcyAhPSAnXScgfHwgKisrcyAhPSAnPScgKQogICAgICAgICByZXR1cm47CiAK ICAgICBzID0gcGFyc2VfcGNpKHMgKyAxLCAmc2VnLCAmYnVzLCAmZGV2LCAmZnVuYyk7CiAgICAg aWYgKCAhcyB8fCAqcyApCiAgICAgICAgIHJldHVybjsKIAotICAgIGlvYXBpY19zYmRmW2lkXS5i ZGYgPSBQQ0lfQkRGKGJ1cywgZGV2LCBmdW5jKTsKLSAgICBpb2FwaWNfc2JkZltpZF0uc2VnID0g c2VnOwotICAgIF9fc2V0X2JpdChpZCwgaW9hcGljX2NtZGxpbmUpOworICAgIGlkeCA9IGlvYXBp Y19pZF90b19pbmRleChpZCk7CisgICAgaWYgKCBpZHggPT0gTUFYX0lPX0FQSUNTICkKKyAgICB7 CisgICAgICAgIGlkeCA9IGdldF9uZXh0X2lvYXBpY19zYmRmX2luZGV4KCk7CisgICAgICAgIGlm ICggaWR4ID09IE1BWF9JT19BUElDUyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhY RU5MT0dfRVJSICJFcnJvcjogJXM6IFRvbyBtYW55IElPIEFQSUNzLlxuIiwgX19mdW5jX18pOwor ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaW9hcGljX3NiZGZb aWR4XS5iZGYgPSBQQ0lfQkRGKGJ1cywgZGV2LCBmdW5jKTsKKyAgICBpb2FwaWNfc2JkZltpZHhd LnNlZyA9IHNlZzsKKyAgICBpb2FwaWNfc2JkZltpZHhdLmlkID0gaWQ7CisgICAgaW9hcGljX3Ni ZGZbaWR4XS5jbWRsaW5lID0gdHJ1ZTsKIH0KIGN1c3RvbV9wYXJhbSgiaXZyc19pb2FwaWNbIiwg cGFyc2VfaXZyc19pb2FwaWMpOwogCkBAIC02ODMsNyArNjk0LDcgQEAgc3RhdGljIHUxNiBfX2lu aXQgcGFyc2VfaXZoZF9kZXZpY2Vfc3BlY2lhbCgKICAgICB1MTYgaGVhZGVyX2xlbmd0aCwgdTE2 IGJsb2NrX2xlbmd0aCwgc3RydWN0IGFtZF9pb21tdSAqaW9tbXUpCiB7CiAgICAgdTE2IGRldl9s ZW5ndGgsIGJkZjsKLSAgICBpbnQgYXBpYzsKKyAgICB1bnNpZ25lZCBpbnQgYXBpYywgaWR4Owog CiAgICAgZGV2X2xlbmd0aCA9IHNpemVvZigqc3BlY2lhbCk7CiAgICAgaWYgKCBoZWFkZXJfbGVu Z3RoIDwgKGJsb2NrX2xlbmd0aCArIGRldl9sZW5ndGgpICkKQEAgLTcxNCwyMSArNzI1LDE5IEBA IHN0YXRpYyB1MTYgX19pbml0IHBhcnNlX2l2aGRfZGV2aWNlX3NwZWNpYWwoCiAgICAgICAgICAq IGNvbnNpc3RlbmN5IGhlcmUgLS0tIHdoZXRoZXIgZW50cnkncyBJT0FQSUMgSUQgaXMgdmFsaWQg YW5kCiAgICAgICAgICAqIHdoZXRoZXIgdGhlcmUgYXJlIGNvbmZsaWN0aW5nL2R1cGxpY2F0ZWQg ZW50cmllcy4KICAgICAgICAgICovCi0gICAgICAgIGFwaWMgPSBmaW5kX2ZpcnN0X2JpdChpb2Fw aWNfY21kbGluZSwgQVJSQVlfU0laRShpb2FwaWNfc2JkZikpOwotICAgICAgICB3aGlsZSAoIGFw aWMgPCBBUlJBWV9TSVpFKGlvYXBpY19zYmRmKSApCisgICAgICAgIGZvciAoIGlkeCA9IDA7IGlk eCA8IG5yX2lvYXBpY19zYmRmOyBpZHgrKyApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICgg aW9hcGljX3NiZGZbYXBpY10uYmRmID09IGJkZiAmJgotICAgICAgICAgICAgICAgICBpb2FwaWNf c2JkZlthcGljXS5zZWcgPT0gc2VnICkKKyAgICAgICAgICAgIGlmICggaW9hcGljX3NiZGZbaWR4 XS5iZGYgPT0gYmRmICYmCisgICAgICAgICAgICAgICAgIGlvYXBpY19zYmRmW2lkeF0uc2VnID09 IHNlZyAmJgorICAgICAgICAgICAgICAgICBpb2FwaWNfc2JkZltpZHhdLmNtZGxpbmUgKQogICAg ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYXBpYyA9IGZpbmRfbmV4dF9iaXQoaW9h cGljX2NtZGxpbmUsIEFSUkFZX1NJWkUoaW9hcGljX3NiZGYpLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXBpYyArIDEpOwogICAgICAgICB9Ci0gICAgICAgIGlmICggYXBpYyA8 IEFSUkFZX1NJWkUoaW9hcGljX3NiZGYpICkKKyAgICAgICAgaWYgKCBpZHggPCBucl9pb2FwaWNf c2JkZiApCiAgICAgICAgIHsKICAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSVZIRDogQ29t bWFuZCBsaW5lIG92ZXJyaWRlIHByZXNlbnQgZm9yIElPLUFQSUMgJSN4IgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIoSVZSUzogJSN4IGRldklEICUwNHg6JTAyeDolMDJ4LiV1KVxuIiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGljLCBzcGVjaWFsLT5oYW5kbGUsIHNlZywg UENJX0JVUyhiZGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9TTE9UKGJkZiks IFBDSV9GVU5DKGJkZikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvYXBpY19zYmRm W2lkeF0uaWQsIHNwZWNpYWwtPmhhbmRsZSwgc2VnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBDSV9CVVMoYmRmKSwgUENJX1NMT1QoYmRmKSwgUENJX0ZVTkMoYmRmKSk7CiAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC03MzcsMjAgKzc0NiwxNCBAQCBzdGF0aWMgdTE2 IF9faW5pdCBwYXJzZV9pdmhkX2RldmljZV9zcGVjaWFsKAogICAgICAgICAgICAgaWYgKCBJT19B UElDX0lEKGFwaWMpICE9IHNwZWNpYWwtPmhhbmRsZSApCiAgICAgICAgICAgICAgICAgY29udGlu dWU7CiAKLSAgICAgICAgICAgIGlmICggc3BlY2lhbC0+aGFuZGxlID49IEFSUkFZX1NJWkUoaW9h cGljX3NiZGYpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcmludGsoWEVOTE9H X0VSUiAiSVZIRCBFcnJvcjogSU8tQVBJQyAlI3ggZW50cnkgYmV5b25kIGJvdW5kc1xuIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbC0+aGFuZGxlKTsKLSAgICAgICAgICAgICAgICBy ZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCB0ZXN0X2JpdChzcGVj aWFsLT5oYW5kbGUsIGlvYXBpY19jbWRsaW5lKSApCisgICAgICAgICAgICBpZHggPSBpb2FwaWNf aWRfdG9faW5kZXgoc3BlY2lhbC0+aGFuZGxlKTsKKyAgICAgICAgICAgIGlmICggaWR4ICE9IE1B WF9JT19BUElDUyAmJiBpb2FwaWNfc2JkZltpZHhdLmNtZGxpbmUgKQogICAgICAgICAgICAgICAg IEFNRF9JT01NVV9ERUJVRygiSVZIRDogQ29tbWFuZCBsaW5lIG92ZXJyaWRlIHByZXNlbnQgZm9y IElPLUFQSUMgJSN4XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFs LT5oYW5kbGUpOwotICAgICAgICAgICAgZWxzZSBpZiAoIGlvYXBpY19zYmRmW3NwZWNpYWwtPmhh bmRsZV0ucGluXzJfaWR4ICkKKyAgICAgICAgICAgIGVsc2UgaWYgKCBpZHggIT0gTUFYX0lPX0FQ SUNTICYmIGlvYXBpY19zYmRmW2lkeF0ucGluXzJfaWR4ICkKICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICBpZiAoIGlvYXBpY19zYmRmW3NwZWNpYWwtPmhhbmRsZV0uYmRmID09IGJkZiAm JgotICAgICAgICAgICAgICAgICAgICAgaW9hcGljX3NiZGZbc3BlY2lhbC0+aGFuZGxlXS5zZWcg PT0gc2VnICkKKyAgICAgICAgICAgICAgICBpZiAoIGlvYXBpY19zYmRmW2lkeF0uYmRmID09IGJk ZiAmJgorICAgICAgICAgICAgICAgICAgICAgaW9hcGljX3NiZGZbaWR4XS5zZWcgPT0gc2VnICkK ICAgICAgICAgICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJVkhEIFdhcm5pbmc6IER1cGxp Y2F0ZSBJTy1BUElDICUjeCBlbnRyaWVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3BlY2lhbC0+aGFuZGxlKTsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC03NjMs MTkgKzc2NiwyNyBAQCBzdGF0aWMgdTE2IF9faW5pdCBwYXJzZV9pdmhkX2RldmljZV9zcGVjaWFs KAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIGlkeCA9IGdldF9uZXh0X2lvYXBpY19zYmRmX2luZGV4KCk7CisgICAgICAgICAg ICAgICAgaWYgKCBpZHggPT0gTUFYX0lPX0FQSUNTICkKKyAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJJVkhEIEVycm9yOiBUb28gbWFueSBJ TyBBUElDcy5cbiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg ICAgICB9CisKICAgICAgICAgICAgICAgICAvKiBzZXQgZGV2aWNlIGlkIG9mIGlvYXBpYyAqLwot ICAgICAgICAgICAgICAgIGlvYXBpY19zYmRmW3NwZWNpYWwtPmhhbmRsZV0uYmRmID0gYmRmOwot ICAgICAgICAgICAgICAgIGlvYXBpY19zYmRmW3NwZWNpYWwtPmhhbmRsZV0uc2VnID0gc2VnOwor ICAgICAgICAgICAgICAgIGlvYXBpY19zYmRmW2lkeF0uYmRmID0gYmRmOworICAgICAgICAgICAg ICAgIGlvYXBpY19zYmRmW2lkeF0uc2VnID0gc2VnOworICAgICAgICAgICAgICAgIGlvYXBpY19z YmRmW2lkeF0uaWQgPSBzcGVjaWFsLT5oYW5kbGU7CiAKLSAgICAgICAgICAgICAgICBpb2FwaWNf c2JkZltzcGVjaWFsLT5oYW5kbGVdLnBpbl8yX2lkeCA9IHhtYWxsb2NfYXJyYXkoCisgICAgICAg ICAgICAgICAgaW9hcGljX3NiZGZbaWR4XS5waW5fMl9pZHggPSB4bWFsbG9jX2FycmF5KAogICAg ICAgICAgICAgICAgICAgICB1MTYsIG5yX2lvYXBpY19lbnRyaWVzW2FwaWNdKTsKICAgICAgICAg ICAgICAgICBpZiAoIG5yX2lvYXBpY19lbnRyaWVzW2FwaWNdICYmCi0gICAgICAgICAgICAgICAg ICAgICAhaW9hcGljX3NiZGZbSU9fQVBJQ19JRChhcGljKV0ucGluXzJfaWR4ICkKKyAgICAgICAg ICAgICAgICAgICAgICFpb2FwaWNfc2JkZltpZHhdLnBpbl8yX2lkeCApCiAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiSVZIRCBFcnJvcjog T3V0IG9mIG1lbW9yeVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtZW1zZXQoaW9hcGljX3NiZGZbSU9fQVBJQ19J RChhcGljKV0ucGluXzJfaWR4LCAtMSwKKyAgICAgICAgICAgICAgICBtZW1zZXQoaW9hcGljX3Ni ZGZbaWR4XS5waW5fMl9pZHgsIC0xLAogICAgICAgICAgICAgICAgICAgICAgICBucl9pb2FwaWNf ZW50cmllc1thcGljXSAqCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqaW9hcGljX3Ni ZGYtPnBpbl8yX2lkeCkpOwogICAgICAgICAgICAgfQpAQCAtMTAyNSwxOCArMTAzNiwxMyBAQCBz dGF0aWMgaW50IF9faW5pdCBwYXJzZV9pdnJzX3RhYmxlKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRl ciAqdGFibGUpCiAgICAgLyogRWFjaCBJTy1BUElDIG11c3QgaGF2ZSBiZWVuIG1lbnRpb25lZCBp biB0aGUgdGFibGUuICovCiAgICAgZm9yICggYXBpYyA9IDA7ICFlcnJvciAmJiBpb21tdV9pbnRy ZW1hcCAmJiBhcGljIDwgbnJfaW9hcGljczsgKythcGljICkKICAgICB7Ci0gICAgICAgIGlmICgg IW5yX2lvYXBpY19lbnRyaWVzW2FwaWNdICkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg ICAgIGlmICggIWlvYXBpY19zYmRmW0lPX0FQSUNfSUQoYXBpYyldLnNlZyAmJgotICAgICAgICAg ICAgIC8qIFNCIElPLUFQSUMgaXMgYWx3YXlzIG9uIHRoaXMgZGV2aWNlIGluIEFNRCBzeXN0ZW1z LiAqLwotICAgICAgICAgICAgIGlvYXBpY19zYmRmW0lPX0FQSUNfSUQoYXBpYyldLmJkZiA9PSBQ Q0lfQkRGKDAsIDB4MTQsIDApICkKLSAgICAgICAgICAgIHNiX2lvYXBpYyA9IDE7CisgICAgICAg IHVuc2lnbmVkIGludCBpZHg7CiAKLSAgICAgICAgaWYgKCBpb2FwaWNfc2JkZltJT19BUElDX0lE KGFwaWMpXS5waW5fMl9pZHggKQorICAgICAgICBpZiAoICFucl9pb2FwaWNfZW50cmllc1thcGlj XSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoICF0ZXN0X2JpdChJT19B UElDX0lEKGFwaWMpLCBpb2FwaWNfY21kbGluZSkgKQorICAgICAgICBpZHggPSBpb2FwaWNfaWRf dG9faW5kZXgoSU9fQVBJQ19JRChhcGljKSk7CisgICAgICAgIGlmICggaWR4ID09IE1BWF9JT19B UElDUyApCiAgICAgICAgIHsKICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJJVkhEIEVy cm9yOiBubyBpbmZvcm1hdGlvbiBmb3IgSU8tQVBJQyAlI3hcbiIsCiAgICAgICAgICAgICAgICAg ICAgSU9fQVBJQ19JRChhcGljKSk7CkBAIC0xMDQ0LDEwICsxMDUwLDE4IEBAIHN0YXRpYyBpbnQg X19pbml0IHBhcnNlX2l2cnNfdGFibGUoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSkK ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOWElPOwogICAgICAgICB9CiAKLSAgICAgICAgaW9h cGljX3NiZGZbSU9fQVBJQ19JRChhcGljKV0ucGluXzJfaWR4ID0geG1hbGxvY19hcnJheSgKKyAg ICAgICAgaWYgKCAhaW9hcGljX3NiZGZbaWR4XS5zZWcgJiYKKyAgICAgICAgICAgICAvKiBTQiBJ Ty1BUElDIGlzIGFsd2F5cyBvbiB0aGlzIGRldmljZSBpbiBBTUQgc3lzdGVtcy4gKi8KKyAgICAg ICAgICAgICBpb2FwaWNfc2JkZltpZHhdLmJkZiA9PSBQQ0lfQkRGKDAsIDB4MTQsIDApICkKKyAg ICAgICAgICAgIHNiX2lvYXBpYyA9IDE7CisKKyAgICAgICAgaWYgKCBpb2FwaWNfc2JkZltpZHhd LnBpbl8yX2lkeCApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpb2FwaWNfc2Jk ZltpZHhdLnBpbl8yX2lkeCA9IHhtYWxsb2NfYXJyYXkoCiAgICAgICAgICAgICB1MTYsIG5yX2lv YXBpY19lbnRyaWVzW2FwaWNdKTsKLSAgICAgICAgaWYgKCBpb2FwaWNfc2JkZltJT19BUElDX0lE KGFwaWMpXS5waW5fMl9pZHggKQotICAgICAgICAgICAgbWVtc2V0KGlvYXBpY19zYmRmW0lPX0FQ SUNfSUQoYXBpYyldLnBpbl8yX2lkeCwgLTEsCisgICAgICAgIGlmICggaW9hcGljX3NiZGZbaWR4 XS5waW5fMl9pZHggKQorICAgICAgICAgICAgbWVtc2V0KGlvYXBpY19zYmRmW2lkeF0ucGluXzJf aWR4LCAtMSwKICAgICAgICAgICAgICAgICAgICBucl9pb2FwaWNfZW50cmllc1thcGljXSAqIHNp emVvZigqaW9hcGljX3NiZGYtPnBpbl8yX2lkeCkpOwogICAgICAgICBlbHNlCiAgICAgICAgIHsK ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbnRyLmMgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW50ci5jCmluZGV4IDBhOWYyMmYuLmM3 MDk5OGQgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbnRy LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2ludHIuYwpAQCAtMzIs OSArMzIsMzUgQEAgc3RydWN0IGhwZXRfc2JkZiBocGV0X3NiZGY7CiB2b2lkICpzaGFyZWRfaW50 cmVtYXBfdGFibGU7CiB1bnNpZ25lZCBsb25nICpzaGFyZWRfaW50cmVtYXBfaW51c2U7CiBzdGF0 aWMgREVGSU5FX1NQSU5MT0NLKHNoYXJlZF9pbnRyZW1hcF9sb2NrKTsKK3Vuc2lnbmVkIGludCBu cl9pb2FwaWNfc2JkZjsKIAogc3RhdGljIHZvaWQgZHVtcF9pbnRyZW1hcF90YWJsZXModW5zaWdu ZWQgY2hhciBrZXkpOwogCit1bnNpZ25lZCBpbnQgaW9hcGljX2lkX3RvX2luZGV4KHVuc2lnbmVk IGludCBhcGljX2lkKQoreworICAgIHVuc2lnbmVkIGludCBpZHg7CisKKyAgICBpZiAoICFucl9p b2FwaWNfc2JkZiApCisgICAgICAgIHJldHVybiBNQVhfSU9fQVBJQ1M7CisKKyAgICBmb3IgKCBp ZHggPSAwIDsgaWR4IDwgbnJfaW9hcGljX3NiZGY7IGlkeCsrICkKKyAgICAgICAgaWYgKCBpb2Fw aWNfc2JkZltpZHhdLmlkID09IGFwaWNfaWQgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICBp ZiAoIGlkeCA9PSBucl9pb2FwaWNfc2JkZiApCisgICAgICAgIHJldHVybiBNQVhfSU9fQVBJQ1M7 CisKKyAgICByZXR1cm4gaWR4OworfQorCit1bnNpZ25lZCBpbnQgX19pbml0IGdldF9uZXh0X2lv YXBpY19zYmRmX2luZGV4KHZvaWQpCit7CisgICAgaWYgKCBucl9pb2FwaWNfc2JkZiA8IE1BWF9J T19BUElDUyApCisgICAgICAgIHJldHVybiBucl9pb2FwaWNfc2JkZisrOworCisgICAgcmV0dXJu IE1BWF9JT19BUElDUzsKK30KKwogc3RhdGljIHNwaW5sb2NrX3QqIGdldF9pbnRyZW1hcF9sb2Nr KGludCBzZWcsIGludCByZXFfaWQpCiB7CiAgICAgcmV0dXJuIChhbWRfaW9tbXVfcGVyZGV2X2lu dHJlbWFwID8KQEAgLTIxOCwxMyArMjQ0LDE5IEBAIGludCBfX2luaXQgYW1kX2lvbW11X3NldHVw X2lvYXBpY19yZW1hcHBpbmcodm9pZCkKICAgICB7CiAgICAgICAgIGZvciAoIHBpbiA9IDA7IHBp biA8IG5yX2lvYXBpY19lbnRyaWVzW2FwaWNdOyBwaW4rKyApCiAgICAgICAgIHsKKyAgICAgICAg ICAgIHVuc2lnbmVkIGludCBpZHg7CisKICAgICAgICAgICAgIHJ0ZSA9IF9faW9hcGljX3JlYWRf ZW50cnkoYXBpYywgcGluLCAxKTsKICAgICAgICAgICAgIGlmICggcnRlLm1hc2sgPT0gMSApCiAg ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIGdldCBkZXZpY2UgaWQg b2YgaW9hcGljIGRldmljZXMgKi8KLSAgICAgICAgICAgIGJkZiA9IGlvYXBpY19zYmRmW0lPX0FQ SUNfSUQoYXBpYyldLmJkZjsKLSAgICAgICAgICAgIHNlZyA9IGlvYXBpY19zYmRmW0lPX0FQSUNf SUQoYXBpYyldLnNlZzsKKyAgICAgICAgICAgIGlkeCA9IGlvYXBpY19pZF90b19pbmRleChJT19B UElDX0lEKGFwaWMpKTsKKyAgICAgICAgICAgIGlmICggaWR4ID09IE1BWF9JT19BUElDUyApCisg ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgICAgIGJkZiA9IGlvYXBp Y19zYmRmW2lkeF0uYmRmOworICAgICAgICAgICAgc2VnID0gaW9hcGljX3NiZGZbaWR4XS5zZWc7 CiAgICAgICAgICAgICBpb21tdSA9IGZpbmRfaW9tbXVfZm9yX2RldmljZShzZWcsIGJkZik7CiAg ICAgICAgICAgICBpZiAoICFpb21tdSApCiAgICAgICAgICAgICB7CkBAIC0yNTAsNyArMjgyLDcg QEAgaW50IF9faW5pdCBhbWRfaW9tbXVfc2V0dXBfaW9hcGljX3JlbWFwcGluZyh2b2lkKQogICAg ICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShsb2NrLCBmbGFncyk7CiAKICAgICAgICAg ICAgIHNldF9ydGVfaW5kZXgoJnJ0ZSwgb2Zmc2V0KTsKLSAgICAgICAgICAgIGlvYXBpY19zYmRm W0lPX0FQSUNfSUQoYXBpYyldLnBpbl8yX2lkeFtwaW5dID0gb2Zmc2V0OworICAgICAgICAgICAg aW9hcGljX3NiZGZbaWR4XS5waW5fMl9pZHhbcGluXSA9IG9mZnNldDsKICAgICAgICAgICAgIF9f aW9hcGljX3dyaXRlX2VudHJ5KGFwaWMsIHBpbiwgMSwgcnRlKTsKIAogICAgICAgICAgICAgaWYg KCBpb21tdS0+ZW5hYmxlZCApCkBAIC0yNzcsNiArMzA5LDcgQEAgdm9pZCBhbWRfaW9tbXVfaW9h cGljX3VwZGF0ZV9pcmUoCiAgICAgdW5zaWduZWQgaW50IHBpbiA9IChyZWcgLSAweDEwKSAvIDI7 CiAgICAgaW50IHNhdmVkX21hc2ssIHNlZywgYmRmLCByYzsKICAgICBzdHJ1Y3QgYW1kX2lvbW11 ICppb21tdTsKKyAgICB1bnNpZ25lZCBpbnQgaWR4OwogCiAgICAgaWYgKCAhaW9tbXVfaW50cmVt YXAgKQogICAgIHsKQEAgLTI4NCw5ICszMTcsMTMgQEAgdm9pZCBhbWRfaW9tbXVfaW9hcGljX3Vw ZGF0ZV9pcmUoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZHggPSBpb2FwaWNfaWRf dG9faW5kZXgoSU9fQVBJQ19JRChhcGljKSk7CisgICAgaWYgKCBpZHggPT0gTUFYX0lPX0FQSUNT ICkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLyogZ2V0IGRldmljZSBpZCBvZiBpb2FwaWMgZGV2 aWNlcyAqLwotICAgIGJkZiA9IGlvYXBpY19zYmRmW0lPX0FQSUNfSUQoYXBpYyldLmJkZjsKLSAg ICBzZWcgPSBpb2FwaWNfc2JkZltJT19BUElDX0lEKGFwaWMpXS5zZWc7CisgICAgYmRmID0gaW9h cGljX3NiZGZbaWR4XS5iZGY7CisgICAgc2VnID0gaW9hcGljX3NiZGZbaWR4XS5zZWc7CiAgICAg aW9tbXUgPSBmaW5kX2lvbW11X2Zvcl9kZXZpY2Uoc2VnLCBiZGYpOwogICAgIGlmICggIWlvbW11 ICkKICAgICB7CkBAIC0zMTMsNyArMzUwLDcgQEAgdm9pZCBhbWRfaW9tbXVfaW9hcGljX3VwZGF0 ZV9pcmUoCiAgICAgfQogCiAgICAgaWYgKCBuZXdfcnRlLm1hc2sgJiYKLSAgICAgICAgIGlvYXBp Y19zYmRmW0lPX0FQSUNfSUQoYXBpYyldLnBpbl8yX2lkeFtwaW5dID49IElOVFJFTUFQX0VOVFJJ RVMgKQorICAgICAgICAgaW9hcGljX3NiZGZbaWR4XS5waW5fMl9pZHhbcGluXSA+PSBJTlRSRU1B UF9FTlRSSUVTICkKICAgICB7CiAgICAgICAgIEFTU0VSVChzYXZlZF9tYXNrKTsKICAgICAgICAg X19pb19hcGljX3dyaXRlKGFwaWMsIHJlZywgdmFsdWUpOwpAQCAtMzMwLDcgKzM2Nyw3IEBAIHZv aWQgYW1kX2lvbW11X2lvYXBpY191cGRhdGVfaXJlKAogICAgIC8qIFVwZGF0ZSBpbnRlcnJ1cHQg cmVtYXBwaW5nIGVudHJ5ICovCiAgICAgcmMgPSB1cGRhdGVfaW50cmVtYXBfZW50cnlfZnJvbV9p b2FwaWMoCiAgICAgICAgICAgICAgYmRmLCBpb21tdSwgJm5ld19ydGUsIHJlZyA9PSBydGVfbG8s Ci0gICAgICAgICAgICAgJmlvYXBpY19zYmRmW0lPX0FQSUNfSUQoYXBpYyldLnBpbl8yX2lkeFtw aW5dKTsKKyAgICAgICAgICAgICAmaW9hcGljX3NiZGZbaWR4XS5waW5fMl9pZHhbcGluXSk7CiAK ICAgICBfX2lvX2FwaWNfd3JpdGUoYXBpYywgcmVnLCAoKHUzMiAqKSZuZXdfcnRlKVtyZWcgIT0g cnRlX2xvXSk7CiAKQEAgLTM1NywxNCArMzk0LDIxIEBAIHZvaWQgYW1kX2lvbW11X2lvYXBpY191 cGRhdGVfaXJlKAogdW5zaWduZWQgaW50IGFtZF9pb21tdV9yZWFkX2lvYXBpY19mcm9tX2lyZSgK ICAgICB1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZykKIHsKKyAgICB1bnNpZ25l ZCBpbnQgaWR4OworICAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CiAgICAgdW5zaWduZWQgaW50IHZh bCA9IF9faW9fYXBpY19yZWFkKGFwaWMsIHJlZyk7CiAgICAgdW5zaWduZWQgaW50IHBpbiA9IChy ZWcgLSAweDEwKSAvIDI7Ci0gICAgdW5zaWduZWQgaW50IG9mZnNldCA9IGlvYXBpY19zYmRmW0lP X0FQSUNfSUQoYXBpYyldLnBpbl8yX2lkeFtwaW5dOworCisgICAgaWR4ID0gaW9hcGljX2lkX3Rv X2luZGV4KElPX0FQSUNfSUQoYXBpYykpOworICAgIGlmICggaWR4ID09IE1BWF9JT19BUElDUyAp CisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgb2Zmc2V0ID0gaW9hcGljX3NiZGZbaWR4 XS5waW5fMl9pZHhbcGluXTsKIAogICAgIGlmICggIShyZWcgJiAxKSAmJiBvZmZzZXQgPCBJTlRS RU1BUF9FTlRSSUVTICkKICAgICB7Ci0gICAgICAgIHUxNiBiZGYgPSBpb2FwaWNfc2JkZltJT19B UElDX0lEKGFwaWMpXS5iZGY7Ci0gICAgICAgIHUxNiBzZWcgPSBpb2FwaWNfc2JkZltJT19BUElD X0lEKGFwaWMpXS5zZWc7CisgICAgICAgIHUxNiBiZGYgPSBpb2FwaWNfc2JkZltpZHhdLmJkZjsK KyAgICAgICAgdTE2IHNlZyA9IGlvYXBpY19zYmRmW2lkeF0uc2VnOwogICAgICAgICB1MTYgcmVx X2lkID0gZ2V0X2ludHJlbWFwX3JlcXVlc3Rvcl9pZChzZWcsIGJkZik7CiAgICAgICAgIGNvbnN0 IHUzMiAqZW50cnkgPSBnZXRfaW50cmVtYXBfZW50cnkoc2VnLCByZXFfaWQsIG9mZnNldCk7CiAK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8u aCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8uaAppbmRleCA2 YzcwMmU4Li4xY2Y5YzNkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0v YW1kLWlvbW11LXByb3RvLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1p b21tdS1wcm90by5oCkBAIC0xMDMsOSArMTAzLDE1IEBAIGludCBhbWRfc2V0dXBfaHBldF9tc2ko c3RydWN0IG1zaV9kZXNjICptc2lfZGVzYyk7CiAKIGV4dGVybiBzdHJ1Y3QgaW9hcGljX3NiZGYg ewogICAgIHUxNiBiZGYsIHNlZzsKKyAgICB1OCBpZDsKKyAgICBib29sIGNtZGxpbmU7CiAgICAg dTE2ICpwaW5fMl9pZHg7CiB9IGlvYXBpY19zYmRmW01BWF9JT19BUElDU107CiAKK2V4dGVybiB1 bnNpZ25lZCBpbnQgbnJfaW9hcGljX3NiZGY7Cit1bnNpZ25lZCBpbnQgaW9hcGljX2lkX3RvX2lu ZGV4KHVuc2lnbmVkIGludCBhcGljX2lkKTsKK3Vuc2lnbmVkIGludCBnZXRfbmV4dF9pb2FwaWNf c2JkZl9pbmRleCh2b2lkKTsKKwogZXh0ZXJuIHN0cnVjdCBocGV0X3NiZGYgewogICAgIHUxNiBi ZGYsIHNlZywgaWQ7CiAgICAgZW51bSB7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=