From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Ortiz Subject: [PATCH v5 11/24] hw: acpi: Export and generalize the PCI host AML API Date: Mon, 5 Nov 2018 02:40:34 +0100 Message-ID: <20181105014047.26447-12-sameo@linux.intel.com> References: <20181105014047.26447-1-sameo@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gJTuY-0003sC-Ig for xen-devel@lists.xenproject.org; Mon, 05 Nov 2018 01:42:38 +0000 In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: Yang Zhong , Peter Maydell , Stefano Stabellini , Eduardo Habkost , Rob Bradford , "Michael S. Tsirkin" , Shannon Zhao , Igor Mammedov , qemu-arm@nongnu.org, Marcel Apfelbaum , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org, Richard Henderson List-Id: xen-devel@lists.xenproject.org RnJvbTogWWFuZyBaaG9uZyA8eWFuZy56aG9uZ0BpbnRlbC5jb20+CgpUaGUgQU1MIGJ1aWxkIHJv dXRpbmVzIGZvciB0aGUgUENJIGhvc3QgYnJpZGdlIGFuZCB0aGUgY29ycmVzcG9uZGluZwpEU0RU IGFkZGl0aW9uIGFyZSBuZWl0aGVyIHg4NiBub3IgUEMgbWFjaGluZSB0eXBlIHNwZWNpZmljLgpX ZSBjYW4gbW92ZSB0aGVtIHRvIHRoZSBhcmNoaXRlY3R1cmUgYWdub3N0aWMgaHcvYWNwaSBmb2xk ZXIsIGFuZCBieQpjYXJyeWluZyBhbGwgdGhlIG5lZWRlZCBpbmZvcm1hdGlvbiB0aHJvdWdoIGEg bmV3IEFjcGlQY2lCdXMgc3RydWN0dXJlLAp3ZSBjYW4gbWFrZSB0aGVtIFBDIG1hY2hpbmUgdHlw ZSBpbmRlcGVuZGVudC4KClNpZ25lZC1vZmYtYnk6IFlhbmcgWmhvbmcgPHlhbmcuemhvbmdAaW50 ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBSb2IgQnJhZGZvcmQgPHJvYmVydC5icmFkZm9yZEBpbnRl bC5jb20+ClNpZ25lZC1vZmYtYnk6IFNhbXVlbCBPcnRpeiA8c2FtZW9AbGludXguaW50ZWwuY29t PgotLS0KIGluY2x1ZGUvaHcvYWNwaS9hbWwtYnVpbGQuaCB8ICAgOCArKwogaHcvYWNwaS9hbWwt YnVpbGQuYyAgICAgICAgIHwgMTU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogaHcvaTM4Ni9hY3BpLWJ1aWxkLmMgICAgICAgIHwgMTE1ICsrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE3MyBpbnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody9hY3BpL2FtbC1idWlsZC5oIGIvaW5jbHVkZS9o dy9hY3BpL2FtbC1idWlsZC5oCmluZGV4IGZkZTI3ODViOWEuLjE4NjFlMzdlYmYgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvaHcvYWNwaS9hbWwtYnVpbGQuaAorKysgYi9pbmNsdWRlL2h3L2FjcGkvYW1s LWJ1aWxkLmgKQEAgLTIyOSw2ICsyMjksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgQWNwaU1jZmdJbmZv IHsKICAgICB1aW50MzJfdCBtY2ZnX3NpemU7CiB9IEFjcGlNY2ZnSW5mbzsKIAordHlwZWRlZiBz dHJ1Y3QgQWNwaVBjaUJ1cyB7CisgICAgUENJQnVzICpwY2lfYnVzOworICAgIFJhbmdlICpwY2lf aG9sZTsKKyAgICBSYW5nZSAqcGNpX2hvbGU2NDsKK30gQWNwaVBjaUJ1czsKKwogdHlwZWRlZiBz dHJ1Y3QgQ3JzUmFuZ2VFbnRyeSB7CiAgICAgdWludDY0X3QgYmFzZTsKICAgICB1aW50NjRfdCBs aW1pdDsKQEAgLTQxMSw2ICs0MTcsOCBAQCBBbWwgKmJ1aWxkX29zY19tZXRob2QodWludDMyX3Qg dmFsdWUpOwogdm9pZCBidWlsZF9tY2ZnKEdBcnJheSAqdGFibGVfZGF0YSwgQklPU0xpbmtlciAq bGlua2VyLCBBY3BpTWNmZ0luZm8gKmluZm8pOwogQW1sICpidWlsZF9nc2lfbGlua19kZXYoY29u c3QgY2hhciAqbmFtZSwgdWludDhfdCB1aWQsIHVpbnQ4X3QgZ3NpKTsKIEFtbCAqYnVpbGRfcHJ0 KGJvb2wgaXNfcGNpMF9wcnQpOwordm9pZCBhY3BpX2RzZHRfYWRkX3BjaV9idXMoQW1sICpkc2R0 LCBBY3BpUGNpQnVzICpwY2lfaG9zdCk7CitBbWwgKmJ1aWxkX3BjaV9ob3N0X2JyaWRnZShBbWwg KnRhYmxlLCBBY3BpUGNpQnVzICpwY2lfaG9zdCk7CiB2b2lkIGNyc19yYW5nZV9zZXRfaW5pdChD cnNSYW5nZVNldCAqcmFuZ2Vfc2V0KTsKIEFtbCAqYnVpbGRfY3JzKFBDSUhvc3RTdGF0ZSAqaG9z dCwgQ3JzUmFuZ2VTZXQgKnJhbmdlX3NldCk7CiB2b2lkIGNyc19yZXBsYWNlX3dpdGhfZnJlZV9y YW5nZXMoR1B0ckFycmF5ICpyYW5nZXMsCmRpZmYgLS1naXQgYS9ody9hY3BpL2FtbC1idWlsZC5j IGIvaHcvYWNwaS9hbWwtYnVpbGQuYwppbmRleCBiOGUzMmYxNWY3Li44NjllZDcwZGIzIDEwMDY0 NAotLS0gYS9ody9hY3BpL2FtbC1idWlsZC5jCisrKyBiL2h3L2FjcGkvYW1sLWJ1aWxkLmMKQEAg LTI5LDYgKzI5LDE5IEBACiAjaW5jbHVkZSAiaHcvcGNpL3BjaV9idXMuaCIKICNpbmNsdWRlICJx ZW11L3JhbmdlLmgiCiAjaW5jbHVkZSAiaHcvcGNpL3BjaV9icmlkZ2UuaCIKKyNpbmNsdWRlICJo dy9pMzg2L3BjLmgiCisjaW5jbHVkZSAic3lzZW11L3RwbS5oIgorI2luY2x1ZGUgImh3L2FjcGkv dHBtLmgiCisKKyNkZWZpbmUgUENJX0hPU1RfQlJJREdFX0NPTkZJR19BRERSICAgICAgICAweGNm OAorI2RlZmluZSBQQ0lfSE9TVF9CUklER0VfSU9fMF9NSU5fQUREUiAgICAgIDB4MDAwMAorI2Rl ZmluZSBQQ0lfSE9TVF9CUklER0VfSU9fMF9NQVhfQUREUiAgICAgIDB4MGNmNworI2RlZmluZSBQ Q0lfSE9TVF9CUklER0VfSU9fMV9NSU5fQUREUiAgICAgIDB4MGQwMAorI2RlZmluZSBQQ0lfSE9T VF9CUklER0VfSU9fMV9NQVhfQUREUiAgICAgIDB4ZmZmZgorI2RlZmluZSBQQ0lfVkdBX01FTV9C QVNFX0FERFIgICAgICAgICAgICAgIDB4MDAwYTAwMDAKKyNkZWZpbmUgUENJX1ZHQV9NRU1fTUFY X0FERFIgICAgICAgICAgICAgICAweDAwMGJmZmZmCisjZGVmaW5lIElPXzBfTEVOICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHhjZjgKKyNkZWZpbmUgVkdBX01FTV9MRU4gICAgICAgICAgICAg ICAgICAgICAgICAweDIwMDAwCiAKIHN0YXRpYyBHQXJyYXkgKmJ1aWxkX2FsbG9jX2FycmF5KHZv aWQpCiB7CkBAIC0yMTQyLDYgKzIxNTUsMTUwIEBAIEFtbCAqYnVpbGRfcHJ0KGJvb2wgaXNfcGNp MF9wcnQpCiAgICAgcmV0dXJuIG1ldGhvZDsKIH0KIAorQW1sICpidWlsZF9wY2lfaG9zdF9icmlk Z2UoQW1sICp0YWJsZSwgQWNwaVBjaUJ1cyAqcGNpX2hvc3QpCit7CisgICAgQ3JzUmFuZ2VFbnRy eSAqZW50cnk7CisgICAgQW1sICpzY29wZSwgKmRldiwgKmNyczsKKyAgICBDcnNSYW5nZVNldCBj cnNfcmFuZ2Vfc2V0OworICAgIFJhbmdlICpwY2lfaG9sZSA9IE5VTEw7CisgICAgUmFuZ2UgKnBj aV9ob2xlNjQgPSBOVUxMOworICAgIFBDSUJ1cyAqYnVzID0gTlVMTDsKKyAgICBpbnQgcm9vdF9i dXNfbGltaXQgPSAweEZGOworICAgIGludCBpOworCisgICAgYnVzID0gcGNpX2hvc3QtPnBjaV9i dXM7CisgICAgYXNzZXJ0KGJ1cyk7CisgICAgcGNpX2hvbGUgPSBwY2lfaG9zdC0+cGNpX2hvbGU7 CisgICAgcGNpX2hvbGU2NCA9IHBjaV9ob3N0LT5wY2lfaG9sZTY0OworCisgICAgY3JzX3Jhbmdl X3NldF9pbml0KCZjcnNfcmFuZ2Vfc2V0KTsKKyAgICBRTElTVF9GT1JFQUNIKGJ1cywgJmJ1cy0+ Y2hpbGQsIHNpYmxpbmcpIHsKKyAgICAgICAgdWludDhfdCBidXNfbnVtID0gcGNpX2J1c19udW0o YnVzKTsKKyAgICAgICAgdWludDhfdCBudW1hX25vZGUgPSBwY2lfYnVzX251bWFfbm9kZShidXMp OworCisgICAgICAgIC8qIGxvb2sgb25seSBmb3IgZXhwYW5kZXIgcm9vdCBidXNlcyAqLworICAg ICAgICBpZiAoIXBjaV9idXNfaXNfcm9vdChidXMpKSB7CisgICAgICAgICAgICBjb250aW51ZTsK KyAgICAgICAgfQorCisgICAgICAgIGlmIChidXNfbnVtIDwgcm9vdF9idXNfbGltaXQpIHsKKyAg ICAgICAgICAgIHJvb3RfYnVzX2xpbWl0ID0gYnVzX251bSAtIDE7CisgICAgICAgIH0KKworICAg ICAgICBzY29wZSA9IGFtbF9zY29wZSgiXFxfU0IiKTsKKyAgICAgICAgZGV2ID0gYW1sX2Rldmlj ZSgiUEMlLjAyWCIsIGJ1c19udW0pOworICAgICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVf ZGVjbCgiX1VJRCIsIGFtbF9pbnQoYnVzX251bSkpKTsKKyAgICAgICAgYW1sX2FwcGVuZChkZXYs IGFtbF9uYW1lX2RlY2woIl9ISUQiLCBhbWxfZWlzYWlkKCJQTlAwQTAzIikpKTsKKyAgICAgICAg YW1sX2FwcGVuZChkZXYsIGFtbF9uYW1lX2RlY2woIl9CQk4iLCBhbWxfaW50KGJ1c19udW0pKSk7 CisgICAgICAgIGlmIChwY2lfYnVzX2lzX2V4cHJlc3MoYnVzKSkgeworICAgICAgICAgICAgYW1s X2FwcGVuZChkZXYsIGFtbF9uYW1lX2RlY2woIlNVUFAiLCBhbWxfaW50KDApKSk7CisgICAgICAg ICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgiQ1RSTCIsIGFtbF9pbnQoMCkpKTsK KyAgICAgICAgICAgIGFtbF9hcHBlbmQoZGV2LCBidWlsZF9vc2NfbWV0aG9kKDB4MUYpKTsKKyAg ICAgICAgfQorICAgICAgICBpZiAobnVtYV9ub2RlICE9IE5VTUFfTk9ERV9VTkFTU0lHTkVEKSB7 CisgICAgICAgICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgiX1BYTSIsIGFtbF9p bnQobnVtYV9ub2RlKSkpOworICAgICAgICB9CisKKyAgICAgICAgYW1sX2FwcGVuZChkZXYsIGJ1 aWxkX3BydChmYWxzZSkpOworICAgICAgICBjcnMgPSBidWlsZF9jcnMoUENJX0hPU1RfQlJJREdF KEJVUyhidXMpLT5wYXJlbnQpLCAmY3JzX3JhbmdlX3NldCk7CisgICAgICAgIGFtbF9hcHBlbmQo ZGV2LCBhbWxfbmFtZV9kZWNsKCJfQ1JTIiwgY3JzKSk7CisgICAgICAgIGFtbF9hcHBlbmQoc2Nv cGUsIGRldik7CisgICAgICAgIGFtbF9hcHBlbmQodGFibGUsIHNjb3BlKTsKKyAgICB9CisgICAg c2NvcGUgPSBhbWxfc2NvcGUoIlxcX1NCLlBDSTAiKTsKKyAgICAvKiBidWlsZCBQQ0kwLl9DUlMg Ki8KKyAgICBjcnMgPSBhbWxfcmVzb3VyY2VfdGVtcGxhdGUoKTsKKyAgICAvKiBzZXQgdGhlIHBj aWUgYnVzIG51bSAqLworICAgIGFtbF9hcHBlbmQoY3JzLAorICAgICAgICBhbWxfd29yZF9idXNf bnVtYmVyKEFNTF9NSU5fRklYRUQsIEFNTF9NQVhfRklYRUQsIEFNTF9QT1NfREVDT0RFLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMCwgMHgwLCByb290X2J1c19saW1pdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAsIHJvb3RfYnVzX2xpbWl0ICsgMSkpOwor ICAgIGFtbF9hcHBlbmQoY3JzLCBhbWxfaW8oQU1MX0RFQ09ERTE2LCBQQ0lfSE9TVF9CUklER0Vf Q09ORklHX0FERFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfSE9TVF9CUklER0Vf Q09ORklHX0FERFIsIDB4MDEsIDB4MDgpKTsKKyAgICAvKiBzZXQgdGhlIGlvIHJlZ2lvbiAwIGlu IHBjaSBob3N0IGJyaWRnZSAqLworICAgIGFtbF9hcHBlbmQoY3JzLAorICAgICAgICBhbWxfd29y ZF9pbyhBTUxfTUlOX0ZJWEVELCBBTUxfTUFYX0ZJWEVELAorICAgICAgICAgICAgICAgICAgICBB TUxfUE9TX0RFQ09ERSwgQU1MX0VOVElSRV9SQU5HRSwKKyAgICAgICAgICAgICAgICAgICAgMHgw MDAwLCBQQ0lfSE9TVF9CUklER0VfSU9fMF9NSU5fQUREUiwKKyAgICAgICAgICAgICAgICAgICAg UENJX0hPU1RfQlJJREdFX0lPXzBfTUFYX0FERFIsIDB4MDAwMCwgSU9fMF9MRU4pKTsKKworICAg IC8qIHNldCB0aGUgaW8gcmVnaW9uIDEgaW4gcGNpIGhvc3QgYnJpZGdlICovCisgICAgY3JzX3Jl cGxhY2Vfd2l0aF9mcmVlX3JhbmdlcyhjcnNfcmFuZ2Vfc2V0LmlvX3JhbmdlcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9IT1NUX0JSSURHRV9JT18xX01JTl9BRERSLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0hPU1RfQlJJREdFX0lPXzFfTUFY X0FERFIpOworICAgIGZvciAoaSA9IDA7IGkgPCBjcnNfcmFuZ2Vfc2V0LmlvX3Jhbmdlcy0+bGVu OyBpKyspIHsKKyAgICAgICAgZW50cnkgPSBnX3B0cl9hcnJheV9pbmRleChjcnNfcmFuZ2Vfc2V0 LmlvX3JhbmdlcywgaSk7CisgICAgICAgIGFtbF9hcHBlbmQoY3JzLAorICAgICAgICAgICAgYW1s X3dvcmRfaW8oQU1MX01JTl9GSVhFRCwgQU1MX01BWF9GSVhFRCwKKyAgICAgICAgICAgICAgICAg ICAgICAgIEFNTF9QT1NfREVDT0RFLCBBTUxfRU5USVJFX1JBTkdFLAorICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMDAwLCBlbnRyeS0+YmFzZSwgZW50cnktPmxpbWl0LAorICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMDAwLCBlbnRyeS0+bGltaXQgLSBlbnRyeS0+YmFzZSArIDEpKTsKKyAg ICB9CisKKyAgICAvKiBzZXQgdGhlIHZnYSBtZW0gcmVnaW9uKDApIGluIHBjaSBob3N0IGJyaWRn ZSAqLworICAgIGFtbF9hcHBlbmQoY3JzLAorICAgICAgICBhbWxfZHdvcmRfbWVtb3J5KEFNTF9Q T1NfREVDT0RFLCBBTUxfTUlOX0ZJWEVELCBBTUxfTUFYX0ZJWEVELAorICAgICAgICAgICAgICAg ICAgICAgICAgIEFNTF9DQUNIRUFCTEUsIEFNTF9SRUFEX1dSSVRFLAorICAgICAgICAgICAgICAg ICAgICAgICAgIDAsIFBDSV9WR0FfTUVNX0JBU0VfQUREUiwgUENJX1ZHQV9NRU1fTUFYX0FERFIs CisgICAgICAgICAgICAgICAgICAgICAgICAgMCwgVkdBX01FTV9MRU4pKTsKKworICAgIC8qIHNl dCB0aGUgbWVtIHJlZ2lvbiAxIGluIHBjaSBob3N0IGJyaWRnZSAqLworICAgIGNyc19yZXBsYWNl X3dpdGhfZnJlZV9yYW5nZXMoY3JzX3JhbmdlX3NldC5tZW1fcmFuZ2VzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfbG9iKHBjaV9ob2xlKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJhbmdlX3VwYihwY2lfaG9sZSkpOworICAgIGZvciAoaSA9IDA7 IGkgPCBjcnNfcmFuZ2Vfc2V0Lm1lbV9yYW5nZXMtPmxlbjsgaSsrKSB7CisgICAgICAgIGVudHJ5 ID0gZ19wdHJfYXJyYXlfaW5kZXgoY3JzX3JhbmdlX3NldC5tZW1fcmFuZ2VzLCBpKTsKKyAgICAg ICAgYW1sX2FwcGVuZChjcnMsCisgICAgICAgICAgICBhbWxfZHdvcmRfbWVtb3J5KEFNTF9QT1Nf REVDT0RFLCBBTUxfTUlOX0ZJWEVELCBBTUxfTUFYX0ZJWEVELAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBTUxfTk9OX0NBQ0hFQUJMRSwgQU1MX1JFQURfV1JJVEUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDAsIGVudHJ5LT5iYXNlLCBlbnRyeS0+bGltaXQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDAsIGVudHJ5LT5saW1pdCAtIGVudHJ5LT5iYXNlICsgMSkp OworICAgIH0KKworICAgIC8qIHNldCB0aGUgbWVtIHJlZ2lvbiAyIGluIHBjaSBob3N0IGJyaWRn ZSAqLworICAgIGlmICghcmFuZ2VfaXNfZW1wdHkocGNpX2hvbGU2NCkpIHsKKyAgICAgICAgY3Jz X3JlcGxhY2Vfd2l0aF9mcmVlX3JhbmdlcyhjcnNfcmFuZ2Vfc2V0Lm1lbV82NGJpdF9yYW5nZXMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfbG9iKHBjaV9ob2xl NjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX3VwYihwY2lf aG9sZTY0KSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjcnNfcmFuZ2Vfc2V0Lm1lbV82NGJp dF9yYW5nZXMtPmxlbjsgaSsrKSB7CisgICAgICAgICAgICBlbnRyeSA9IGdfcHRyX2FycmF5X2lu ZGV4KGNyc19yYW5nZV9zZXQubWVtXzY0Yml0X3JhbmdlcywgaSk7CisgICAgICAgICAgICBhbWxf YXBwZW5kKGNycywKKyAgICAgICAgICAgICAgICAgICAgICAgYW1sX3F3b3JkX21lbW9yeShBTUxf UE9TX0RFQ09ERSwgQU1MX01JTl9GSVhFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBTUxfTUFYX0ZJWEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFNTF9DQUNIRUFCTEUsIEFNTF9SRUFEX1dSSVRFLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGVudHJ5LT5iYXNlLCBlbnRyeS0+bGltaXQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZW50cnktPmxpbWl0IC0g ZW50cnktPmJhc2UgKyAxKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoVFBNX0lTX1RJ Uyh0cG1fZmluZCgpKSkgeworICAgICAgICBhbWxfYXBwZW5kKGNycywgYW1sX21lbW9yeTMyX2Zp eGVkKFRQTV9USVNfQUREUl9CQVNFLAorICAgICAgICAgICAgICAgICAgIFRQTV9USVNfQUREUl9T SVpFLCBBTUxfUkVBRF9XUklURSkpOworICAgIH0KKworICAgIGFtbF9hcHBlbmQoc2NvcGUsIGFt bF9uYW1lX2RlY2woIl9DUlMiLCBjcnMpKTsKKyAgICBjcnNfcmFuZ2Vfc2V0X2ZyZWUoJmNyc19y YW5nZV9zZXQpOworICAgIHJldHVybiBzY29wZTsKK30KKwordm9pZCBhY3BpX2RzZHRfYWRkX3Bj aV9idXMoQW1sICpkc2R0LCBBY3BpUGNpQnVzICpwY2lfaG9zdCkKK3sKKyAgICBBbWwgKmRldiwg KnBjaV9zY29wZTsKKworICAgIGRldiA9IGFtbF9kZXZpY2UoIlxcX1NCLlBDSTAiKTsKKyAgICBh bWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgiX0hJRCIsIGFtbF9laXNhaWQoIlBOUDBBMDgi KSkpOworICAgIGFtbF9hcHBlbmQoZGV2LCBhbWxfbmFtZV9kZWNsKCJfQ0lEIiwgYW1sX2Vpc2Fp ZCgiUE5QMEEwMyIpKSk7CisgICAgYW1sX2FwcGVuZChkZXYsIGFtbF9uYW1lX2RlY2woIl9BRFIi LCBhbWxfaW50KDApKSk7CisgICAgYW1sX2FwcGVuZChkZXYsIGFtbF9uYW1lX2RlY2woIl9VSUQi LCBhbWxfaW50KDEpKSk7CisgICAgYW1sX2FwcGVuZChkZXYsIGFtbF9uYW1lX2RlY2woIlNVUFAi LCBhbWxfaW50KDApKSk7CisgICAgYW1sX2FwcGVuZChkZXYsIGFtbF9uYW1lX2RlY2woIkNUUkwi LCBhbWxfaW50KDApKSk7CisgICAgYW1sX2FwcGVuZChkZXYsIGJ1aWxkX29zY19tZXRob2QoMHgx RikpOworICAgIGFtbF9hcHBlbmQoZHNkdCwgZGV2KTsKKworICAgIHBjaV9zY29wZSA9IGJ1aWxk X3BjaV9ob3N0X2JyaWRnZShkc2R0LCBwY2lfaG9zdCk7CisgICAgYW1sX2FwcGVuZChkc2R0LCBw Y2lfc2NvcGUpOworfQorCiAvKiBCdWlsZCByc2R0IHRhYmxlICovCiB2b2lkCiBidWlsZF9yc2R0 KEdBcnJheSAqdGFibGVfZGF0YSwgQklPU0xpbmtlciAqbGlua2VyLCBHQXJyYXkgKnRhYmxlX29m ZnNldHMsCmRpZmYgLS1naXQgYS9ody9pMzg2L2FjcGktYnVpbGQuYyBiL2h3L2kzODYvYWNwaS1i dWlsZC5jCmluZGV4IGE1ZjVmODM1MDAuLjE0ZTI2MjRkMTQgMTAwNjQ0Ci0tLSBhL2h3L2kzODYv YWNwaS1idWlsZC5jCisrKyBiL2h3L2kzODYvYWNwaS1idWlsZC5jCkBAIC0xMjUzLDE2ICsxMjUz LDExIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3BpaXg0X3BjaV9ob3RwbHVnKEFtbCAqdGFibGUpCiBz dGF0aWMgdm9pZAogYnVpbGRfZHNkdChHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5rZXIgKmxp bmtlciwKICAgICAgICAgICAgQWNwaVBtSW5mbyAqcG0sIEFjcGlNaXNjSW5mbyAqbWlzYywKLSAg ICAgICAgICAgUmFuZ2UgKnBjaV9ob2xlLCBSYW5nZSAqcGNpX2hvbGU2NCwKKyAgICAgICAgICAg QWNwaVBjaUJ1cyAqcGNpX2hvc3QsCiAgICAgICAgICAgIE1hY2hpbmVTdGF0ZSAqbWFjaGluZSwg QWNwaUNvbmZpZ3VyYXRpb24gKmFjcGlfY29uZikKIHsKLSAgICBDcnNSYW5nZUVudHJ5ICplbnRy eTsKICAgICBBbWwgKmRzZHQsICpzYl9zY29wZSwgKnNjb3BlLCAqZGV2LCAqbWV0aG9kLCAqZmll bGQsICpwa2csICpjcnM7Ci0gICAgQ3JzUmFuZ2VTZXQgY3JzX3JhbmdlX3NldDsKICAgICB1aW50 MzJfdCBucl9tZW0gPSBtYWNoaW5lLT5yYW1fc2xvdHM7Ci0gICAgaW50IHJvb3RfYnVzX2xpbWl0 ID0gMHhGRjsKLSAgICBQQ0lCdXMgKmJ1cyA9IE5VTEw7Ci0gICAgaW50IGk7CiAKICAgICBkc2R0 ID0gaW5pdF9hbWxfYWxsb2NhdG9yKCk7CiAKQEAgLTEzMzcsMTA0ICsxMzMyLDcgQEAgYnVpbGRf ZHNkdChHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5rZXIgKmxpbmtlciwKICAgICB9CiAgICAg YW1sX2FwcGVuZChkc2R0LCBzY29wZSk7CiAKLSAgICBjcnNfcmFuZ2Vfc2V0X2luaXQoJmNyc19y YW5nZV9zZXQpOwotICAgIGJ1cyA9IFBDX01BQ0hJTkUobWFjaGluZSktPmJ1czsKLSAgICBpZiAo YnVzKSB7Ci0gICAgICAgIFFMSVNUX0ZPUkVBQ0goYnVzLCAmYnVzLT5jaGlsZCwgc2libGluZykg ewotICAgICAgICAgICAgdWludDhfdCBidXNfbnVtID0gcGNpX2J1c19udW0oYnVzKTsKLSAgICAg ICAgICAgIHVpbnQ4X3QgbnVtYV9ub2RlID0gcGNpX2J1c19udW1hX25vZGUoYnVzKTsKLQotICAg ICAgICAgICAgLyogbG9vayBvbmx5IGZvciBleHBhbmRlciByb290IGJ1c2VzICovCi0gICAgICAg ICAgICBpZiAoIXBjaV9idXNfaXNfcm9vdChidXMpKSB7Ci0gICAgICAgICAgICAgICAgY29udGlu dWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChidXNfbnVtIDwgcm9vdF9idXNf bGltaXQpIHsKLSAgICAgICAgICAgICAgICByb290X2J1c19saW1pdCA9IGJ1c19udW0gLSAxOwot ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzY29wZSA9IGFtbF9zY29wZSgiXFxfU0IiKTsK LSAgICAgICAgICAgIGRldiA9IGFtbF9kZXZpY2UoIlBDJS4wMlgiLCBidXNfbnVtKTsKLSAgICAg ICAgICAgIGFtbF9hcHBlbmQoZGV2LCBhbWxfbmFtZV9kZWNsKCJfVUlEIiwgYW1sX2ludChidXNf bnVtKSkpOwotICAgICAgICAgICAgYW1sX2FwcGVuZChkZXYsIGFtbF9uYW1lX2RlY2woIl9ISUQi LCBhbWxfZWlzYWlkKCJQTlAwQTAzIikpKTsKLSAgICAgICAgICAgIGFtbF9hcHBlbmQoZGV2LCBh bWxfbmFtZV9kZWNsKCJfQkJOIiwgYW1sX2ludChidXNfbnVtKSkpOwotICAgICAgICAgICAgaWYg KHBjaV9idXNfaXNfZXhwcmVzcyhidXMpKSB7Ci0gICAgICAgICAgICAgICAgYW1sX2FwcGVuZChk ZXYsIGJ1aWxkX29zY19tZXRob2QoQUNQSV9PU0NfQ1RSTF9QQ0lfQUxMKSk7Ci0gICAgICAgICAg ICB9Ci0KLSAgICAgICAgICAgIGlmIChudW1hX25vZGUgIT0gTlVNQV9OT0RFX1VOQVNTSUdORUQp IHsKLSAgICAgICAgICAgICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgiX1BYTSIs IGFtbF9pbnQobnVtYV9ub2RlKSkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhbWxf YXBwZW5kKGRldiwgYnVpbGRfcHJ0KGZhbHNlKSk7Ci0gICAgICAgICAgICBjcnMgPSBidWlsZF9j cnMoUENJX0hPU1RfQlJJREdFKEJVUyhidXMpLT5wYXJlbnQpLCAmY3JzX3JhbmdlX3NldCk7Ci0g ICAgICAgICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgiX0NSUyIsIGNycykpOwot ICAgICAgICAgICAgYW1sX2FwcGVuZChzY29wZSwgZGV2KTsKLSAgICAgICAgICAgIGFtbF9hcHBl bmQoZHNkdCwgc2NvcGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2NvcGUgPSBhbWxfc2Nv cGUoIlxcX1NCLlBDSTAiKTsKLSAgICAvKiBidWlsZCBQQ0kwLl9DUlMgKi8KLSAgICBjcnMgPSBh bWxfcmVzb3VyY2VfdGVtcGxhdGUoKTsKLSAgICBhbWxfYXBwZW5kKGNycywKLSAgICAgICAgYW1s X3dvcmRfYnVzX251bWJlcihBTUxfTUlOX0ZJWEVELCBBTUxfTUFYX0ZJWEVELCBBTUxfUE9TX0RF Q09ERSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAsIDB4MCwgcm9vdF9idXNf bGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwLCByb290X2J1c19saW1p dCArIDEpKTsKLSAgICBhbWxfYXBwZW5kKGNycywgYW1sX2lvKEFNTF9ERUNPREUxNiwgMHgwQ0Y4 LCAweDBDRjgsIDB4MDEsIDB4MDgpKTsKLQotICAgIGFtbF9hcHBlbmQoY3JzLAotICAgICAgICBh bWxfd29yZF9pbyhBTUxfTUlOX0ZJWEVELCBBTUxfTUFYX0ZJWEVELAotICAgICAgICAgICAgICAg ICAgICBBTUxfUE9TX0RFQ09ERSwgQU1MX0VOVElSRV9SQU5HRSwKLSAgICAgICAgICAgICAgICAg ICAgMHgwMDAwLCAweDAwMDAsIDB4MENGNywgMHgwMDAwLCAweDBDRjgpKTsKLQotICAgIGNyc19y ZXBsYWNlX3dpdGhfZnJlZV9yYW5nZXMoY3JzX3JhbmdlX3NldC5pb19yYW5nZXMsIDB4MEQwMCwg MHhGRkZGKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgY3JzX3JhbmdlX3NldC5pb19yYW5nZXMtPmxl bjsgaSsrKSB7Ci0gICAgICAgIGVudHJ5ID0gZ19wdHJfYXJyYXlfaW5kZXgoY3JzX3JhbmdlX3Nl dC5pb19yYW5nZXMsIGkpOwotICAgICAgICBhbWxfYXBwZW5kKGNycywKLSAgICAgICAgICAgIGFt bF93b3JkX2lvKEFNTF9NSU5fRklYRUQsIEFNTF9NQVhfRklYRUQsCi0gICAgICAgICAgICAgICAg ICAgICAgICBBTUxfUE9TX0RFQ09ERSwgQU1MX0VOVElSRV9SQU5HRSwKLSAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDAwMCwgZW50cnktPmJhc2UsIGVudHJ5LT5saW1pdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDAwMCwgZW50cnktPmxpbWl0IC0gZW50cnktPmJhc2UgKyAxKSk7Ci0g ICAgfQotCi0gICAgYW1sX2FwcGVuZChjcnMsCi0gICAgICAgIGFtbF9kd29yZF9tZW1vcnkoQU1M X1BPU19ERUNPREUsIEFNTF9NSU5fRklYRUQsIEFNTF9NQVhfRklYRUQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgQU1MX0NBQ0hFQUJMRSwgQU1MX1JFQURfV1JJVEUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgMCwgMHgwMDBBMDAwMCwgMHgwMDBCRkZGRiwgMCwgMHgwMDAyMDAwMCkpOwot Ci0gICAgY3JzX3JlcGxhY2Vfd2l0aF9mcmVlX3JhbmdlcyhjcnNfcmFuZ2Vfc2V0Lm1lbV9yYW5n ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9sb2IocGNpX2hvbGUp LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfdXBiKHBjaV9ob2xlKSk7 Ci0gICAgZm9yIChpID0gMDsgaSA8IGNyc19yYW5nZV9zZXQubWVtX3Jhbmdlcy0+bGVuOyBpKysp IHsKLSAgICAgICAgZW50cnkgPSBnX3B0cl9hcnJheV9pbmRleChjcnNfcmFuZ2Vfc2V0Lm1lbV9y YW5nZXMsIGkpOwotICAgICAgICBhbWxfYXBwZW5kKGNycywKLSAgICAgICAgICAgIGFtbF9kd29y ZF9tZW1vcnkoQU1MX1BPU19ERUNPREUsIEFNTF9NSU5fRklYRUQsIEFNTF9NQVhfRklYRUQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNTF9OT05fQ0FDSEVBQkxFLCBBTUxfUkVBRF9X UklURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZW50cnktPmJhc2UsIGVudHJ5 LT5saW1pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZW50cnktPmxpbWl0IC0g ZW50cnktPmJhc2UgKyAxKSk7Ci0gICAgfQotCi0gICAgaWYgKCFyYW5nZV9pc19lbXB0eShwY2lf aG9sZTY0KSkgewotICAgICAgICBjcnNfcmVwbGFjZV93aXRoX2ZyZWVfcmFuZ2VzKGNyc19yYW5n ZV9zZXQubWVtXzY0Yml0X3JhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByYW5nZV9sb2IocGNpX2hvbGU2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmFuZ2VfdXBiKHBjaV9ob2xlNjQpKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8 IGNyc19yYW5nZV9zZXQubWVtXzY0Yml0X3Jhbmdlcy0+bGVuOyBpKyspIHsKLSAgICAgICAgICAg IGVudHJ5ID0gZ19wdHJfYXJyYXlfaW5kZXgoY3JzX3JhbmdlX3NldC5tZW1fNjRiaXRfcmFuZ2Vz LCBpKTsKLSAgICAgICAgICAgIGFtbF9hcHBlbmQoY3JzLAotICAgICAgICAgICAgICAgICAgICAg ICBhbWxfcXdvcmRfbWVtb3J5KEFNTF9QT1NfREVDT0RFLCBBTUxfTUlOX0ZJWEVELAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNTF9NQVhfRklYRUQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU1MX0NBQ0hFQUJMRSwgQU1MX1JFQURf V1JJVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZW50cnkt PmJhc2UsIGVudHJ5LT5saW1pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwLCBlbnRyeS0+bGltaXQgLSBlbnRyeS0+YmFzZSArIDEpKTsKLSAgICAgICAgfQotICAg IH0KLQotICAgIGlmIChUUE1fSVNfVElTKHRwbV9maW5kKCkpKSB7Ci0gICAgICAgIGFtbF9hcHBl bmQoY3JzLCBhbWxfbWVtb3J5MzJfZml4ZWQoVFBNX1RJU19BRERSX0JBU0UsCi0gICAgICAgICAg ICAgICAgICAgVFBNX1RJU19BRERSX1NJWkUsIEFNTF9SRUFEX1dSSVRFKSk7Ci0gICAgfQotICAg IGFtbF9hcHBlbmQoc2NvcGUsIGFtbF9uYW1lX2RlY2woIl9DUlMiLCBjcnMpKTsKKyAgICBzY29w ZSA9IGJ1aWxkX3BjaV9ob3N0X2JyaWRnZShkc2R0LCBwY2lfaG9zdCk7CiAKICAgICAvKiByZXNl cnZlIEdQRTAgYmxvY2sgcmVzb3VyY2VzICovCiAgICAgZGV2ID0gYW1sX2RldmljZSgiR1BFMCIp OwpAQCAtMTQ1NCw4ICsxMzUyLDYgQEAgYnVpbGRfZHNkdChHQXJyYXkgKnRhYmxlX2RhdGEsIEJJ T1NMaW5rZXIgKmxpbmtlciwKICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgiX0NS UyIsIGNycykpOwogICAgIGFtbF9hcHBlbmQoc2NvcGUsIGRldik7CiAKLSAgICBjcnNfcmFuZ2Vf c2V0X2ZyZWUoJmNyc19yYW5nZV9zZXQpOwotCiAgICAgLyogcmVzZXJ2ZSBQQ0lIUCByZXNvdXJj ZXMgKi8KICAgICBpZiAocG0tPnBjaWhwX2lvX2xlbikgewogICAgICAgICBkZXYgPSBhbWxfZGV2 aWNlKCJQSFBSIik7CkBAIC0yMDEyLDYgKzE5MDgsMTEgQEAgdm9pZCBhY3BpX2J1aWxkKEFjcGlC dWlsZFRhYmxlcyAqdGFibGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NCAvKiBF bnN1cmUgRkFDUyBpcyBhbGlnbmVkICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm YWxzZSAvKiBoaWdoIG1lbW9yeSAqLyk7CiAKKyAgICBBY3BpUGNpQnVzIHBjaV9ob3N0ID0gewor ICAgICAgICAucGNpX2J1cyAgICA9IFBDX01BQ0hJTkUobWFjaGluZSktPmJ1cywKKyAgICAgICAg LnBjaV9ob2xlICAgPSAmcGNpX2hvbGUsCisgICAgICAgIC5wY2lfaG9sZTY0ID0gJnBjaV9ob2xl NjQsCisgICAgfTsKICAgICAvKgogICAgICAqIEZBQ1MgaXMgcG9pbnRlZCB0byBieSBGQURULgog ICAgICAqIFdlIHBsYWNlIGl0IGZpcnN0IHNpbmNlIGl0J3MgdGhlIG9ubHkgdGFibGUgdGhhdCBo YXMgYWxpZ25tZW50CkBAIC0yMDIzLDcgKzE5MjQsNyBAQCB2b2lkIGFjcGlfYnVpbGQoQWNwaUJ1 aWxkVGFibGVzICp0YWJsZXMsCiAgICAgLyogRFNEVCBpcyBwb2ludGVkIHRvIGJ5IEZBRFQgKi8K ICAgICBkc2R0ID0gdGFibGVzX2Jsb2ItPmxlbjsKICAgICBidWlsZF9kc2R0KHRhYmxlc19ibG9i LCB0YWJsZXMtPmxpbmtlciwgJnBtLCAmbWlzYywKLSAgICAgICAgICAgICAgICZwY2lfaG9sZSwg JnBjaV9ob2xlNjQsIG1hY2hpbmUsIGFjcGlfY29uZik7CisgICAgICAgICAgICAgICAmcGNpX2hv c3QsIG1hY2hpbmUsIGFjcGlfY29uZik7CiAKICAgICAvKiBDb3VudCB0aGUgc2l6ZSBvZiB0aGUg RFNEVCBhbmQgU1NEVCwgd2Ugd2lsbCBuZWVkIGl0IGZvciBsZWdhY3kKICAgICAgKiBzaXppbmcg b2YgQUNQSSB0YWJsZXMuCi0tIAoyLjE5LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs