From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JrwcT-0007gJ-LZ for qemu-devel@nongnu.org; Fri, 02 May 2008 10:52:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JrwcO-0007Z7-Eh for qemu-devel@nongnu.org; Fri, 02 May 2008 10:52:17 -0400 Received: from [199.232.76.173] (port=36324 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JrwcO-0007Ys-2H for qemu-devel@nongnu.org; Fri, 02 May 2008 10:52:12 -0400 Received: from nf-out-0910.google.com ([64.233.182.187]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JrwcN-0000wV-AQ for qemu-devel@nongnu.org; Fri, 02 May 2008 10:52:12 -0400 Received: by nf-out-0910.google.com with SMTP id b2so624387nfb.12 for ; Fri, 02 May 2008 07:52:08 -0700 (PDT) Message-ID: Date: Fri, 2 May 2008 17:52:07 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] [PATCH] Re: phys_ram_base, direct access to guest memory In-Reply-To: <20080408184634.GA11492@volta.aurel32.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_7057_8651185.1209739927680" References: <18398.33922.132796.510683@mariner.uk.xensource.com> <47DEA908.4040907@qumranet.com> <18398.37844.354219.321675@mariner.uk.xensource.com> <18408.56889.160376.558448@mariner.uk.xensource.com> <20080408184634.GA11492@volta.aurel32.net> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_7057_8651185.1209739927680 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 4/8/08, Aurelien Jarno wrote: > On Tue, Mar 25, 2008 at 11:12:57AM +0000, Ian Jackson wrote: > > I wrote: > > > In the attached patch, I remove all the direct uses of phys_ram_base > > > from hw/pc.c, except for those presently needed to construct the > > > arguments to the vga init functions. > > > > Is there something wrong with my patch or the general approach ? > > > It simply doesn't work. After applying it, I get: > > > qemu: fatal: Trying to execute code outside RAM or ROM at 0x000a0000 I fixed the bug in the patch, cpu_physical_memory_write_rom must be used instead of cpu_physical_memory_write. I also made the same changes to Sparc32/64, they run fine. Does this version work for PC targets? ------=_Part_7057_8651185.1209739927680 Content-Type: plain/text; name=phys_mem_ij.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_ffqvw6o1 Content-Disposition: attachment; filename=phys_mem_ij.diff SW5kZXg6IHFlbXUvaHcvcGMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGMuYwkyMDA4 LTA0LTI5IDE2OjA3OjMyLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wYy5jCTIwMDgtMDUt MDEgMTk6Mjc6MjUuMDAwMDAwMDAwICswMDAwCkBAIC00NzksNyArNDc5LDcgQEAKICAgICBpbnQg c2V0dXBfc2l6ZSwga2VybmVsX3NpemUsIGluaXRyZF9zaXplLCBjbWRsaW5lX3NpemU7CiAgICAg dWludDMyX3QgaW5pdHJkX21heDsKICAgICB1aW50OF90IGhlYWRlclsxMDI0XTsKLSAgICB1aW50 OF90ICpyZWFsX2FkZHIsICpwcm90X2FkZHIsICpjbWRsaW5lX2FkZHIsICppbml0cmRfYWRkcjsK KyAgICB0YXJnZXRfcGh5c19hZGRyX3QgcmVhbF9hZGRyLCBwcm90X2FkZHIsIGNtZGxpbmVfYWRk ciwgaW5pdHJkX2FkZHI7CiAgICAgRklMRSAqZiwgKmZpOwogCiAgICAgLyogQWxpZ24gdG8gMTYg Ynl0ZXMgYXMgYSBwYXJhbm9pYSBtZWFzdXJlICovCkBAIC01MDUsMTkgKzUwNSwxOSBAQAogCiAg ICAgaWYgKHByb3RvY29sIDwgMHgyMDAgfHwgIShoZWFkZXJbMHgyMTFdICYgMHgwMSkpIHsKIAkv KiBMb3cga2VybmVsICovCi0JcmVhbF9hZGRyICAgID0gcGh5c19yYW1fYmFzZSArIDB4OTAwMDA7 Ci0JY21kbGluZV9hZGRyID0gcGh5c19yYW1fYmFzZSArIDB4OWEwMDAgLSBjbWRsaW5lX3NpemU7 Ci0JcHJvdF9hZGRyICAgID0gcGh5c19yYW1fYmFzZSArIDB4MTAwMDA7CisJcmVhbF9hZGRyICAg ID0gMHg5MDAwMDsKKwljbWRsaW5lX2FkZHIgPSAweDlhMDAwIC0gY21kbGluZV9zaXplOworCXBy b3RfYWRkciAgICA9IDB4MTAwMDA7CiAgICAgfSBlbHNlIGlmIChwcm90b2NvbCA8IDB4MjAyKSB7 CiAJLyogSGlnaCBidXQgYW5jaWVudCBrZXJuZWwgKi8KLQlyZWFsX2FkZHIgICAgPSBwaHlzX3Jh bV9iYXNlICsgMHg5MDAwMDsKLQljbWRsaW5lX2FkZHIgPSBwaHlzX3JhbV9iYXNlICsgMHg5YTAw MCAtIGNtZGxpbmVfc2l6ZTsKLQlwcm90X2FkZHIgICAgPSBwaHlzX3JhbV9iYXNlICsgMHgxMDAw MDA7CisJcmVhbF9hZGRyICAgID0gMHg5MDAwMDsKKwljbWRsaW5lX2FkZHIgPSAweDlhMDAwIC0g Y21kbGluZV9zaXplOworCXByb3RfYWRkciAgICA9IDB4MTAwMDAwOwogICAgIH0gZWxzZSB7CiAJ LyogSGlnaCBhbmQgcmVjZW50IGtlcm5lbCAqLwotCXJlYWxfYWRkciAgICA9IHBoeXNfcmFtX2Jh c2UgKyAweDEwMDAwOwotCWNtZGxpbmVfYWRkciA9IHBoeXNfcmFtX2Jhc2UgKyAweDIwMDAwOwot CXByb3RfYWRkciAgICA9IHBoeXNfcmFtX2Jhc2UgKyAweDEwMDAwMDsKKwlyZWFsX2FkZHIgICAg PSAweDEwMDAwOworCWNtZGxpbmVfYWRkciA9IDB4MjAwMDA7CisJcHJvdF9hZGRyICAgID0gMHgx MDAwMDA7CiAgICAgfQogCiAjaWYgMApAQCAtNTI1LDkgKzUyNSw5IEBACiAJICAgICJxZW11OiBy ZWFsX2FkZHIgICAgID0gJSN6eFxuIgogCSAgICAicWVtdTogY21kbGluZV9hZGRyICA9ICUjenhc biIKIAkgICAgInFlbXU6IHByb3RfYWRkciAgICAgPSAlI3p4XG4iLAotCSAgICByZWFsX2FkZHIt cGh5c19yYW1fYmFzZSwKLQkgICAgY21kbGluZV9hZGRyLXBoeXNfcmFtX2Jhc2UsCi0JICAgIHBy b3RfYWRkci1waHlzX3JhbV9iYXNlKTsKKwkgICAgcmVhbF9hZGRyLAorCSAgICBjbWRsaW5lX2Fk ZHIsCisJICAgIHByb3RfYWRkcik7CiAjZW5kaWYKIAogICAgIC8qIGhpZ2hlc3QgYWRkcmVzcyBm b3IgbG9hZGluZyB0aGUgaW5pdHJkICovCkBAIC01NDAsMTAgKzU0MCwxMCBAQAogCWluaXRyZF9t YXggPSByYW1fc2l6ZS1BQ1BJX0RBVEFfU0laRS0xOwogCiAgICAgLyoga2VybmVsIGNvbW1hbmQg bGluZSAqLwotICAgIHBzdHJjcHkoKGNoYXIqKWNtZGxpbmVfYWRkciwgNDA5Niwga2VybmVsX2Nt ZGxpbmUpOworICAgIHBzdHJjcHlfdGFyZ3BoeXMoY21kbGluZV9hZGRyLCA0MDk2LCBrZXJuZWxf Y21kbGluZSk7CiAKICAgICBpZiAocHJvdG9jb2wgPj0gMHgyMDIpIHsKLQlzdGxfcChoZWFkZXIr MHgyMjgsIGNtZGxpbmVfYWRkci1waHlzX3JhbV9iYXNlKTsKKwlzdGxfcChoZWFkZXIrMHgyMjgs IGNtZGxpbmVfYWRkcik7CiAgICAgfSBlbHNlIHsKIAlzdHdfcChoZWFkZXIrMHgyMCwgMHhBMzNG KTsKIAlzdHdfcChoZWFkZXIrMHgyMiwgY21kbGluZV9hZGRyLXJlYWxfYWRkcik7CkBAIC01Nzcs MjQgKzU3NywyNCBAQAogCX0KIAogCWluaXRyZF9zaXplID0gZ2V0X2ZpbGVfc2l6ZShmaSk7Ci0J aW5pdHJkX2FkZHIgPSBwaHlzX3JhbV9iYXNlICsgKChpbml0cmRfbWF4LWluaXRyZF9zaXplKSAm IH40MDk1KTsKKwlpbml0cmRfYWRkciA9ICgoaW5pdHJkX21heC1pbml0cmRfc2l6ZSkgJiB+NDA5 NSk7CiAKIAlmcHJpbnRmKHN0ZGVyciwgInFlbXU6IGxvYWRpbmcgaW5pdHJkICglI3ggYnl0ZXMp IGF0ICUjenhcbiIsCi0JCWluaXRyZF9zaXplLCBpbml0cmRfYWRkci1waHlzX3JhbV9iYXNlKTsK KwkJaW5pdHJkX3NpemUsIGluaXRyZF9hZGRyKTsKIAotCWlmIChmcmVhZChpbml0cmRfYWRkciwg MSwgaW5pdHJkX3NpemUsIGZpKSAhPSBpbml0cmRfc2l6ZSkgeworCWlmICghZnJlYWRfdGFyZ3Bo eXNfb2soaW5pdHJkX2FkZHIsIGluaXRyZF9zaXplLCBmaSkpIHsKIAkgICAgZnByaW50ZihzdGRl cnIsICJxZW11OiByZWFkIGVycm9yIG9uIGluaXRpYWwgcmFtIGRpc2sgJyVzJ1xuIiwKIAkJICAg IGluaXRyZF9maWxlbmFtZSk7CiAJICAgIGV4aXQoMSk7CiAJfQogCWZjbG9zZShmaSk7CiAKLQlz dGxfcChoZWFkZXIrMHgyMTgsIGluaXRyZF9hZGRyLXBoeXNfcmFtX2Jhc2UpOworCXN0bF9wKGhl YWRlcisweDIxOCwgaW5pdHJkX2FkZHIpOwogCXN0bF9wKGhlYWRlcisweDIxYywgaW5pdHJkX3Np emUpOwogICAgIH0KIAogICAgIC8qIHN0b3JlIHRoZSBmaW5hbGl6ZWQgaGVhZGVyIGFuZCBsb2Fk IHRoZSByZXN0IG9mIHRoZSBrZXJuZWwgKi8KLSAgICBtZW1jcHkocmVhbF9hZGRyLCBoZWFkZXIs IDEwMjQpOworICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfd3JpdGUocmVhbF9hZGRyLCBoZWFkZXIs IDEwMjQpOwogCiAgICAgc2V0dXBfc2l6ZSA9IGhlYWRlclsweDFmMV07CiAgICAgaWYgKHNldHVw X3NpemUgPT0gMCkKQEAgLTYwMyw4ICs2MDMsOCBAQAogICAgIHNldHVwX3NpemUgPSAoc2V0dXBf c2l6ZSsxKSo1MTI7CiAgICAga2VybmVsX3NpemUgLT0gc2V0dXBfc2l6ZTsJLyogU2l6ZSBvZiBw cm90ZWN0ZWQtbW9kZSBjb2RlICovCiAKLSAgICBpZiAoZnJlYWQocmVhbF9hZGRyKzEwMjQsIDEs IHNldHVwX3NpemUtMTAyNCwgZikgIT0gc2V0dXBfc2l6ZS0xMDI0IHx8Ci0JZnJlYWQocHJvdF9h ZGRyLCAxLCBrZXJuZWxfc2l6ZSwgZikgIT0ga2VybmVsX3NpemUpIHsKKyAgICBpZiAoIWZyZWFk X3RhcmdwaHlzX29rKHJlYWxfYWRkcisxMDI0LCBzZXR1cF9zaXplLTEwMjQsIGYpIHx8CisJIWZy ZWFkX3RhcmdwaHlzX29rKHByb3RfYWRkciwga2VybmVsX3NpemUsIGYpKSB7CiAJZnByaW50Zihz dGRlcnIsICJxZW11OiByZWFkIGVycm9yIG9uIGtlcm5lbCAnJXMnXG4iLAogCQlrZXJuZWxfZmls ZW5hbWUpOwogCWV4aXQoMSk7CkBAIC02MTIsNyArNjEyLDcgQEAKICAgICBmY2xvc2UoZik7CiAK ICAgICAvKiBnZW5lcmF0ZSBib290c2VjdG9yIHRvIHNldCB1cCB0aGUgaW5pdGlhbCByZWdpc3Rl ciBzdGF0ZSAqLwotICAgIHJlYWxfc2VnID0gKHJlYWxfYWRkci1waHlzX3JhbV9iYXNlKSA+PiA0 OworICAgIHJlYWxfc2VnID0gcmVhbF9hZGRyID4+IDQ7CiAgICAgc2VnWzBdID0gc2VnWzJdID0g c2VnWzNdID0gc2VnWzRdID0gc2VnWzRdID0gcmVhbF9zZWc7CiAgICAgc2VnWzFdID0gcmVhbF9z ZWcrMHgyMDsJLyogQ1MgKi8KICAgICBtZW1zZXQoZ3ByLCAwLCBzaXplb2YgZ3ByKTsKQEAgLTc2 OCw3ICs3NjgsNyBAQAogICAgICAgICBnb3RvIGJpb3NfZXJyb3I7CiAgICAgfQogICAgIGJpb3Nf b2Zmc2V0ID0gcWVtdV9yYW1fYWxsb2MoYmlvc19zaXplKTsKLSAgICByZXQgPSBsb2FkX2ltYWdl KGJ1ZiwgcGh5c19yYW1fYmFzZSArIGJpb3Nfb2Zmc2V0KTsKKyAgICByZXQgPSBsb2FkX2ltYWdl X3RhcmdwaHlzKGJ1ZiwgYmlvc19vZmZzZXQsIGJpb3Nfc2l6ZSk7CiAgICAgaWYgKHJldCAhPSBi aW9zX3NpemUpIHsKICAgICBiaW9zX2Vycm9yOgogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInFl bXU6IGNvdWxkIG5vdCBsb2FkIFBDIEJJT1MgJyVzJ1xuIiwgYnVmKTsKQEAgLTc4Niw3ICs3ODYs NyBAQAogICAgICAgICBnb3RvIHZnYV9iaW9zX2Vycm9yOwogICAgIHZnYV9iaW9zX29mZnNldCA9 IHFlbXVfcmFtX2FsbG9jKDY1NTM2KTsKIAotICAgIHJldCA9IGxvYWRfaW1hZ2UoYnVmLCBwaHlz X3JhbV9iYXNlICsgdmdhX2Jpb3Nfb2Zmc2V0KTsKKyAgICByZXQgPSBsb2FkX2ltYWdlX3Rhcmdw aHlzKGJ1ZiwgdmdhX2Jpb3Nfb2Zmc2V0LCB2Z2FfYmlvc19zaXplKTsKICAgICBpZiAocmV0ICE9 IHZnYV9iaW9zX3NpemUpIHsKICAgICB2Z2FfYmlvc19lcnJvcjoKICAgICAgICAgZnByaW50Zihz dGRlcnIsICJxZW11OiBjb3VsZCBub3QgbG9hZCBWR0EgQklPUyAnJXMnXG4iLCBidWYpOwpAQCAt ODIyLDcgKzgyMiw3IEBACiAgICAgICAgICAgICBpZiAoc2l6ZSA+ICgweDEwMDAwIC0gb2Zmc2V0 KSkKICAgICAgICAgICAgICAgICBnb3RvIG9wdGlvbl9yb21fZXJyb3I7CiAgICAgICAgICAgICBv cHRpb25fcm9tX29mZnNldCA9IHFlbXVfcmFtX2FsbG9jKHNpemUpOwotICAgICAgICAgICAgcmV0 ID0gbG9hZF9pbWFnZShvcHRpb25fcm9tW2ldLCBwaHlzX3JhbV9iYXNlICsgb3B0aW9uX3JvbV9v ZmZzZXQpOworICAgICAgICAgICAgcmV0ID0gbG9hZF9pbWFnZV90YXJncGh5cyhvcHRpb25fcm9t W2ldLCBvcHRpb25fcm9tX29mZnNldCwgc2l6ZSk7CiAgICAgICAgICAgICBpZiAocmV0ICE9IHNp emUpIHsKICAgICAgICAgICAgIG9wdGlvbl9yb21fZXJyb3I6CiAgICAgICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICJUb28gbWFueSBvcHRpb24gUk9NU1xuIik7CkluZGV4OiBxZW11L2xvYWRl ci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9sb2FkZXIuYwkyMDA4LTAzLTMwIDE4OjA3OjE4 LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9sb2FkZXIuYwkyMDA4LTA1LTAyIDE0OjAzOjQ1LjAw MDAwMDAwMCArMDAwMApAQCAtMzksNiArMzksNyBAQAogfQogCiAvKiByZXR1cm4gdGhlIHNpemUg b3IgLTEgaWYgZXJyb3IgKi8KKy8qIGRlcHJlY2F0ZWQsIGJlY2F1c2UgY2FsbGVyIGRvZXMgbm90 IHNwZWNpZnkgYnVmZmVyIHNpemUhICovCiBpbnQgbG9hZF9pbWFnZShjb25zdCBjaGFyICpmaWxl bmFtZSwgdWludDhfdCAqYWRkcikKIHsKICAgICBpbnQgZmQsIHNpemU7CkBAIC01NSw2ICs1Niw4 MyBAQAogICAgIHJldHVybiBzaXplOwogfQogCisvKiByZXR1cm4gdGhlIGFtb3VudCByZWFkLCBq dXN0IGxpa2UgZnJlYWQuICAwIG1heSBtZWFuIGVycm9yIG9yIGVvZiAqLworaW50IGZyZWFkX3Rh cmdwaHlzKHRhcmdldF9waHlzX2FkZHJfdCBkc3RfYWRkciwgc2l6ZV90IG5ieXRlcywgRklMRSAq ZikKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls0MDk2XTsKKyAgICB0YXJnZXRfcGh5c19hZGRy X3QgZHN0X2JlZ2luID0gZHN0X2FkZHI7CisgICAgc2l6ZV90IHdhbnQsIGRpZDsKKworICAgIHdo aWxlIChuYnl0ZXMpIHsKKwl3YW50ID0gbmJ5dGVzID4gc2l6ZW9mKGJ1ZikgPyBzaXplb2YoYnVm KSA6IG5ieXRlczsKKwlkaWQgPSBmcmVhZChidWYsIDEsIHdhbnQsIGYpOworCWlmIChkaWQgIT0g d2FudCkgYnJlYWs7CisKKwljcHVfcGh5c2ljYWxfbWVtb3J5X3dyaXRlX3JvbShkc3RfYWRkciwg YnVmLCBkaWQpOworCWRzdF9hZGRyICs9IGRpZDsKKwluYnl0ZXMgLT0gZGlkOworICAgIH0KKyAg ICByZXR1cm4gZHN0X2FkZHIgLSBkc3RfYmVnaW47Cit9CisKKy8qIHJldHVybnMgMCBvbiBlcnJv ciwgMSBpZiBvayAqLworaW50IGZyZWFkX3RhcmdwaHlzX29rKHRhcmdldF9waHlzX2FkZHJfdCBk c3RfYWRkciwgc2l6ZV90IG5ieXRlcywgRklMRSAqZikKK3sKKyAgICByZXR1cm4gZnJlYWRfdGFy Z3BoeXMoZHN0X2FkZHIsIG5ieXRlcywgZikgPT0gbmJ5dGVzOworfQorCisvKiByZWFkKCktbGlr ZSB2ZXJzaW9uICovCitpbnQgcmVhZF90YXJncGh5cyhpbnQgZmQsIHRhcmdldF9waHlzX2FkZHJf dCBkc3RfYWRkciwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls0MDk2 XTsKKyAgICB0YXJnZXRfcGh5c19hZGRyX3QgZHN0X2JlZ2luID0gZHN0X2FkZHI7CisgICAgc2l6 ZV90IHdhbnQsIGRpZDsKKworICAgIHdoaWxlIChuYnl0ZXMpIHsKKwl3YW50ID0gbmJ5dGVzID4g c2l6ZW9mKGJ1ZikgPyBzaXplb2YoYnVmKSA6IG5ieXRlczsKKwlkaWQgPSByZWFkKGZkLCBidWYs IHdhbnQpOworCWlmIChkaWQgIT0gd2FudCkgYnJlYWs7CisKKwljcHVfcGh5c2ljYWxfbWVtb3J5 X3dyaXRlX3JvbShkc3RfYWRkciwgYnVmLCBkaWQpOworCWRzdF9hZGRyICs9IGRpZDsKKwluYnl0 ZXMgLT0gZGlkOworICAgIH0KKyAgICByZXR1cm4gZHN0X2FkZHIgLSBkc3RfYmVnaW47Cit9CisK Ky8qIHJldHVybiB0aGUgc2l6ZSBvciAtMSBpZiBlcnJvciAqLworaW50IGxvYWRfaW1hZ2VfdGFy Z3BoeXMoY29uc3QgY2hhciAqZmlsZW5hbWUsCisJCQl0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwg aW50IG1heF9zeikKK3sKKyAgICBGSUxFICpmOworICAgIHNpemVfdCBnb3Q7CisKKyAgICBmID0g Zm9wZW4oZmlsZW5hbWUsICJyYiIpOworICAgIGlmICghZikgcmV0dXJuIC0xOworCisgICAgZ290 ID0gZnJlYWRfdGFyZ3BoeXMoYWRkciwgbWF4X3N6LCBmKTsKKyAgICBpZiAoZmVycm9yKGYpKSB7 IGZjbG9zZShmKTsgcmV0dXJuIC0xOyB9CisgICAgZmNsb3NlKGYpOworCisgICAgcmV0dXJuIGdv dDsKK30KKwordm9pZCBwc3RyY3B5X3RhcmdwaHlzKHRhcmdldF9waHlzX2FkZHJfdCBkZXN0LCBp bnQgYnVmX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc291cmNlKQor eworICAgIHN0YXRpYyBjb25zdCBjaGFyIG51bF9ieXRlOworICAgIGNvbnN0IGNoYXIgKm51bHA7 CisKKyAgICBpZiAoYnVmX3NpemUgPD0gMCkgcmV0dXJuOworICAgIG51bHAgPSBtZW1jaHIoc291 cmNlLCAwLCBidWZfc2l6ZSk7CisgICAgaWYgKG51bHApIHsKKwljcHVfcGh5c2ljYWxfbWVtb3J5 X3dyaXRlX3JvbShkZXN0LCBzb3VyY2UsIChudWxwIC0gc291cmNlKSArIDEpOworICAgIH0gZWxz ZSB7CisJY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZV9yb20oZGVzdCwgc291cmNlLCBidWZfc2l6 ZSAtIDEpOworCWNwdV9waHlzaWNhbF9tZW1vcnlfd3JpdGVfcm9tKGRlc3QsICZudWxfYnl0ZSwg MSk7CisgICAgfQorfQorCiAvKiBBLk9VVCBsb2FkZXIgKi8KIAogc3RydWN0IGV4ZWMKQEAgLTEw NSw3ICsxODMsNyBAQAogICAgICA6IChfTl9TRUdNRU5UX1JPVU5EIChfTl9UWFRFTkRBRERSKHgp KSkpCiAKIAotaW50IGxvYWRfYW91dChjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludDhfdCAqYWRk cikKK2ludCBsb2FkX2FvdXQoY29uc3QgY2hhciAqZmlsZW5hbWUsIHRhcmdldF9waHlzX2FkZHJf dCBhZGRyLCBpbnQgbWF4X3N6KQogewogICAgIGludCBmZCwgc2l6ZSwgcmV0OwogICAgIHN0cnVj dCBleGVjIGU7CkBAIC0xMjYsMTcgKzIwNCwyMSBAQAogICAgIGNhc2UgWk1BR0lDOgogICAgIGNh c2UgUU1BR0lDOgogICAgIGNhc2UgT01BR0lDOgorICAgICAgICBpZiAoZS5hX3RleHQgKyBlLmFf ZGF0YSA+IG1heF9zeikKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKIAlsc2VlayhmZCwgTl9UWFRP RkYoZSksIFNFRUtfU0VUKTsKLQlzaXplID0gcmVhZChmZCwgYWRkciwgZS5hX3RleHQgKyBlLmFf ZGF0YSk7CisJc2l6ZSA9IHJlYWRfdGFyZ3BoeXMoZmQsIGFkZHIsIGUuYV90ZXh0ICsgZS5hX2Rh dGEpOwogCWlmIChzaXplIDwgMCkKIAkgICAgZ290byBmYWlsOwogCWJyZWFrOwogICAgIGNhc2Ug Tk1BR0lDOgorICAgICAgICBpZiAoTl9EQVRBRERSKGUpICsgZS5hX2RhdGEgPiBtYXhfc3opCisg ICAgICAgICAgICBnb3RvIGZhaWw7CiAJbHNlZWsoZmQsIE5fVFhUT0ZGKGUpLCBTRUVLX1NFVCk7 Ci0Jc2l6ZSA9IHJlYWQoZmQsIGFkZHIsIGUuYV90ZXh0KTsKKwlzaXplID0gcmVhZF90YXJncGh5 cyhmZCwgYWRkciwgZS5hX3RleHQpOwogCWlmIChzaXplIDwgMCkKIAkgICAgZ290byBmYWlsOwot CXJldCA9IHJlYWQoZmQsIGFkZHIgKyBOX0RBVEFERFIoZSksIGUuYV9kYXRhKTsKKwlyZXQgPSBy ZWFkX3RhcmdwaHlzKGZkLCBhZGRyICsgTl9EQVRBRERSKGUpLCBlLmFfZGF0YSk7CiAJaWYgKHJl dCA8IDApCiAJICAgIGdvdG8gZmFpbDsKIAlzaXplICs9IHJldDsKSW5kZXg6IHFlbXUvc3lzZW11 LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3N5c2VtdS5oCTIwMDgtMDQtMjkgMTY6MDc6MzQu MDAwMDAwMDAwICswMDAwCisrKyBxZW11L3N5c2VtdS5oCTIwMDgtMDUtMDEgMTk6NDA6MDkuMDAw MDAwMDAwICswMDAwCkBAIC0xNTEsMTEgKzE1MSwxNyBAQAogI2lmZGVmIE5FRURfQ1BVX0gKIC8q IGxvYWRlci5jICovCiBpbnQgZ2V0X2ltYWdlX3NpemUoY29uc3QgY2hhciAqZmlsZW5hbWUpOwot aW50IGxvYWRfaW1hZ2UoY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnQ4X3QgKmFkZHIpOworaW50 IGxvYWRfaW1hZ2UoY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnQ4X3QgKmFkZHIpOyAvKiBkZXBy ZWNhdGVkICovCitpbnQgbG9hZF9pbWFnZV90YXJncGh5cyhjb25zdCBjaGFyICpmaWxlbmFtZSwg dGFyZ2V0X3BoeXNfYWRkcl90LCBpbnQgbWF4X3N6KTsKIGludCBsb2FkX2VsZihjb25zdCBjaGFy ICpmaWxlbmFtZSwgaW50NjRfdCB2aXJ0X3RvX3BoeXNfYWRkZW5kLAogICAgICAgICAgICAgIHVp bnQ2NF90ICpwZW50cnksIHVpbnQ2NF90ICpsb3dhZGRyLCB1aW50NjRfdCAqaGlnaGFkZHIpOwot aW50IGxvYWRfYW91dChjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludDhfdCAqYWRkcik7CitpbnQg bG9hZF9hb3V0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwg aW50IG1heF9zeik7CiBpbnQgbG9hZF91Ym9vdChjb25zdCBjaGFyICpmaWxlbmFtZSwgdGFyZ2V0 X3Vsb25nICplcCwgaW50ICppc19saW51eCk7CisKK2ludCBmcmVhZF90YXJncGh5cyh0YXJnZXRf cGh5c19hZGRyX3QgZHN0X2FkZHIsIHNpemVfdCBuYnl0ZXMsIEZJTEUgKmYpOworaW50IGZyZWFk X3RhcmdwaHlzX29rKHRhcmdldF9waHlzX2FkZHJfdCBkc3RfYWRkciwgc2l6ZV90IG5ieXRlcywg RklMRSAqZik7Cit2b2lkIHBzdHJjcHlfdGFyZ3BoeXModGFyZ2V0X3BoeXNfYWRkcl90IGRlc3Qs IGludCBidWZfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzb3VyY2Up OwogI2VuZGlmCiAKICNpZmRlZiBIQVNfQVVESU8KSW5kZXg6IHFlbXUvaHcvc3VuNG0uYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNG0uYwkyMDA4LTA1LTAxIDE5OjI5OjMzLjAwMDAw MDAwMCArMDAwMAorKysgcWVtdS9ody9zdW40bS5jCTIwMDgtMDUtMDIgMTQ6NDU6MzguMDAwMDAw MDAwICswMDAwCkBAIC0xODYsNyArMTg2LDcgQEAKICAgICBoZWFkZXItPmtlcm5lbF9pbWFnZSA9 IGNwdV90b19iZTY0KCh1aW50NjRfdClLRVJORUxfTE9BRF9BRERSKTsKICAgICBoZWFkZXItPmtl cm5lbF9zaXplID0gY3B1X3RvX2JlNjQoKHVpbnQ2NF90KWtlcm5lbF9zaXplKTsKICAgICBpZiAo Y21kbGluZSkgewotICAgICAgICBzdHJjcHkocGh5c19yYW1fYmFzZSArIENNRExJTkVfQUREUiwg Y21kbGluZSk7CisgICAgICAgIHBzdHJjcHlfdGFyZ3BoeXMoQ01ETElORV9BRERSLCBUQVJHRVRf UEFHRV9TSVpFLCBjbWRsaW5lKTsKICAgICAgICAgaGVhZGVyLT5jbWRsaW5lID0gY3B1X3RvX2Jl NjQoKHVpbnQ2NF90KUNNRExJTkVfQUREUik7CiAgICAgICAgIGhlYWRlci0+Y21kbGluZV9zaXpl ID0gY3B1X3RvX2JlNjQoKHVpbnQ2NF90KXN0cmxlbihjbWRsaW5lKSk7CiAgICAgfQpAQCAtMzIw LDcgKzMyMCw4IEBACiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHN1bjRtX2xvYWRfa2VybmVsKGNv bnN0IGNoYXIgKmtlcm5lbF9maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmtlcm5lbF9jbWRsaW5lLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5pdHJkX2ZpbGVuYW1lKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5pdHJkX2ZpbGVu YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFtX2FkZHJfdCBy YW1fc2l6ZSkKIHsKICAgICBpbnQgbGludXhfYm9vdDsKICAgICB1bnNpZ25lZCBpbnQgaTsKQEAg LTMzMyw5ICszMzQsMTEgQEAKICAgICAgICAga2VybmVsX3NpemUgPSBsb2FkX2VsZihrZXJuZWxf ZmlsZW5hbWUsIC0weGYwMDAwMDAwVUxMLCBOVUxMLCBOVUxMLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBpZiAoa2VybmVsX3NpemUgPCAwKQotICAgICAg ICAgICAga2VybmVsX3NpemUgPSBsb2FkX2FvdXQoa2VybmVsX2ZpbGVuYW1lLCBwaHlzX3JhbV9i YXNlICsgS0VSTkVMX0xPQURfQUREUik7CisgICAgICAgICAgICBrZXJuZWxfc2l6ZSA9IGxvYWRf YW91dChrZXJuZWxfZmlsZW5hbWUsIEtFUk5FTF9MT0FEX0FERFIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByYW1fc2l6ZSAtIEtFUk5FTF9MT0FEX0FERFIpOwogICAgICAg ICBpZiAoa2VybmVsX3NpemUgPCAwKQotICAgICAgICAgICAga2VybmVsX3NpemUgPSBsb2FkX2lt YWdlKGtlcm5lbF9maWxlbmFtZSwgcGh5c19yYW1fYmFzZSArIEtFUk5FTF9MT0FEX0FERFIpOwor ICAgICAgICAgICAga2VybmVsX3NpemUgPSBsb2FkX2ltYWdlX3RhcmdwaHlzKGtlcm5lbF9maWxl bmFtZSwgS0VSTkVMX0xPQURfQUREUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJhbV9zaXplIC0gS0VSTkVMX0xPQURfQUREUik7CiAgICAgICAgIGlmIChrZXJuZWxfc2l6 ZSA8IDApIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogY291bGQgbm90IGxv YWQga2VybmVsICclcydcbiIsCiAgICAgICAgICAgICAgICAgICAgIGtlcm5lbF9maWxlbmFtZSk7 CkBAIC0zNDUsNyArMzQ4LDkgQEAKICAgICAgICAgLyogbG9hZCBpbml0cmQgKi8KICAgICAgICAg aW5pdHJkX3NpemUgPSAwOwogICAgICAgICBpZiAoaW5pdHJkX2ZpbGVuYW1lKSB7Ci0gICAgICAg ICAgICBpbml0cmRfc2l6ZSA9IGxvYWRfaW1hZ2UoaW5pdHJkX2ZpbGVuYW1lLCBwaHlzX3JhbV9i YXNlICsgSU5JVFJEX0xPQURfQUREUik7CisgICAgICAgICAgICBpbml0cmRfc2l6ZSA9IGxvYWRf aW1hZ2VfdGFyZ3BoeXMoaW5pdHJkX2ZpbGVuYW1lLCBJTklUUkRfTE9BRF9BRERSLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFtX3NpemUgLSBJTklUUkRfTE9BRF9BRERS KTsKKwogICAgICAgICAgICAgaWYgKGluaXRyZF9zaXplIDwgMCkgewogICAgICAgICAgICAgICAg IGZwcmludGYoc3RkZXJyLCAicWVtdTogY291bGQgbm90IGxvYWQgaW5pdGlhbCByYW0gZGlzayAn JXMnXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgaW5pdHJkX2ZpbGVuYW1lKTsKQEAgLTM1 NCwxMCArMzU5LDkgQEAKICAgICAgICAgfQogICAgICAgICBpZiAoaW5pdHJkX3NpemUgPiAwKSB7 CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjQgKiBUQVJHRVRfUEFHRV9TSVpFOyBpICs9 IFRBUkdFVF9QQUdFX1NJWkUpIHsKLSAgICAgICAgICAgICAgICBpZiAobGRsX3JhdyhwaHlzX3Jh bV9iYXNlICsgS0VSTkVMX0xPQURfQUREUiArIGkpCi0gICAgICAgICAgICAgICAgICAgID09IDB4 NDg2NDcyNTMpIHsgLy8gSGRyUwotICAgICAgICAgICAgICAgICAgICBzdGxfcmF3KHBoeXNfcmFt X2Jhc2UgKyBLRVJORUxfTE9BRF9BRERSICsgaSArIDE2LCBJTklUUkRfTE9BRF9BRERSKTsKLSAg ICAgICAgICAgICAgICAgICAgc3RsX3JhdyhwaHlzX3JhbV9iYXNlICsgS0VSTkVMX0xPQURfQURE UiArIGkgKyAyMCwgaW5pdHJkX3NpemUpOworICAgICAgICAgICAgICAgIGlmIChsZGxfcGh5cyhL RVJORUxfTE9BRF9BRERSICsgaSkgPT0gMHg0ODY0NzI1MykgeyAvLyBIZHJTCisgICAgICAgICAg ICAgICAgICAgIHN0bF9waHlzKEtFUk5FTF9MT0FEX0FERFIgKyBpICsgMTYsIElOSVRSRF9MT0FE X0FERFIpOworICAgICAgICAgICAgICAgICAgICBzdGxfcGh5cyhLRVJORUxfTE9BRF9BRERSICsg aSArIDIwLCBpbml0cmRfc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQzNCw3ICs0MzgsNyBAQAogICAgIHNucHJp bnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcy8lcyIsIGJpb3NfZGlyLCBiaW9zX25hbWUpOwogICAg IHJldCA9IGxvYWRfZWxmKGJ1ZiwgaHdkZWYtPnNsYXZpb19iYXNlIC0gUFJPTV9WQUREUiwgTlVM TCwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKHJldCA8IDAgfHwgcmV0ID4gUFJPTV9TSVpFX01BWCkK LSAgICAgICAgcmV0ID0gbG9hZF9pbWFnZShidWYsIHBoeXNfcmFtX2Jhc2UgKyBwcm9tX29mZnNl dCk7CisgICAgICAgIHJldCA9IGxvYWRfaW1hZ2VfdGFyZ3BoeXMoYnVmLCBwcm9tX29mZnNldCwg UFJPTV9TSVpFX01BWCk7CiAgICAgaWYgKHJldCA8IDAgfHwgcmV0ID4gUFJPTV9TSVpFX01BWCkg ewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6IGNvdWxkIG5vdCBsb2FkIHByb20gJyVz J1xuIiwKICAgICAgICAgICAgICAgICBidWYpOwpAQCAtNDUxLDEwICs0NTUsMTIgQEAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3ZGVmLT5jbG9ja19pcnEpOwogCiAg ICAgaWYgKGh3ZGVmLT5pZHJlZ19iYXNlICE9ICh0YXJnZXRfcGh5c19hZGRyX3QpLTEpIHsKLSAg ICAgICAgc3RsX3JhdyhwaHlzX3JhbV9iYXNlICsgcHJvbV9vZmZzZXQsIDB4ZmU4MTAxMDMpOwor ICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgaWRyZWdfZGF0YSA9IDB4ZmU4MTAxMDM7CiAK ICAgICAgICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeShod2RlZi0+aWRyZWdfYmFzZSwg c2l6ZW9mKHVpbnQzMl90KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw cm9tX29mZnNldCB8IElPX01FTV9ST00pOworICAgICAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3dy aXRlX3JvbShod2RlZi0+aWRyZWdfYmFzZSwgKGNoYXIgKikmaWRyZWdfZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7CiAgICAgfQog CiAgICAgaW9tbXUgPSBpb21tdV9pbml0KGh3ZGVmLT5pb21tdV9iYXNlLCBod2RlZi0+aW9tbXVf dmVyc2lvbiwKQEAgLTUzNCw3ICs1NDAsNyBAQAogICAgICAgICBjc19pbml0KGh3ZGVmLT5jc19i YXNlLCBod2RlZi0+Y3NfaXJxLCBzbGF2aW9faW50Y3RsKTsKIAogICAgIGtlcm5lbF9zaXplID0g c3VuNG1fbG9hZF9rZXJuZWwoa2VybmVsX2ZpbGVuYW1lLCBrZXJuZWxfY21kbGluZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRyZF9maWxlbmFtZSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0cmRfZmlsZW5hbWUsIFJBTV9zaXplKTsK IAogICAgIG52cmFtX2luaXQobnZyYW0sICh1aW50OF90ICopJm5kX3RhYmxlWzBdLm1hY2FkZHIs IGtlcm5lbF9jbWRsaW5lLAogICAgICAgICAgICAgICAgYm9vdF9kZXZpY2UsIFJBTV9zaXplLCBr ZXJuZWxfc2l6ZSwgZ3JhcGhpY193aWR0aCwKQEAgLTYwMSw3ICs2MDcsNyBAQAogICAgIHNucHJp bnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcy8lcyIsIGJpb3NfZGlyLCBiaW9zX25hbWUpOwogICAg IHJldCA9IGxvYWRfZWxmKGJ1ZiwgaHdkZWYtPnNsYXZpb19iYXNlIC0gUFJPTV9WQUREUiwgTlVM TCwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKHJldCA8IDAgfHwgcmV0ID4gUFJPTV9TSVpFX01BWCkK LSAgICAgICAgcmV0ID0gbG9hZF9pbWFnZShidWYsIHBoeXNfcmFtX2Jhc2UgKyBwcm9tX29mZnNl dCk7CisgICAgICAgIHJldCA9IGxvYWRfaW1hZ2VfdGFyZ3BoeXMoYnVmLCBwcm9tX29mZnNldCwg UFJPTV9TSVpFX01BWCk7CiAgICAgaWYgKHJldCA8IDAgfHwgcmV0ID4gUFJPTV9TSVpFX01BWCkg ewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6IGNvdWxkIG5vdCBsb2FkIHByb20gJyVz J1xuIiwKICAgICAgICAgICAgICAgICBidWYpOwpAQCAtNjgzLDcgKzY4OSw3IEBACiAgICAgfQog CiAgICAga2VybmVsX3NpemUgPSBzdW40bV9sb2FkX2tlcm5lbChrZXJuZWxfZmlsZW5hbWUsIGtl cm5lbF9jbWRsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdHJk X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRyZF9m aWxlbmFtZSwgUkFNX3NpemUpOwogCiAgICAgbnZyYW1faW5pdChudnJhbSwgKHVpbnQ4X3QgKikm bmRfdGFibGVbMF0ubWFjYWRkciwga2VybmVsX2NtZGxpbmUsCiAgICAgICAgICAgICAgICBib290 X2RldmljZSwgUkFNX3NpemUsIGtlcm5lbF9zaXplLCBncmFwaGljX3dpZHRoLApAQCAtMTQxNSw3 ICsxNDIxLDcgQEAKICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMvJXMiLCBiaW9z X2RpciwgYmlvc19uYW1lKTsKICAgICByZXQgPSBsb2FkX2VsZihidWYsIGh3ZGVmLT5zbGF2aW9f YmFzZSAtIFBST01fVkFERFIsIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgIGlmIChyZXQgPCAwIHx8 IHJldCA+IFBST01fU0laRV9NQVgpCi0gICAgICAgIHJldCA9IGxvYWRfaW1hZ2UoYnVmLCBwaHlz X3JhbV9iYXNlICsgcHJvbV9vZmZzZXQpOworICAgICAgICByZXQgPSBsb2FkX2ltYWdlX3Rhcmdw aHlzKGJ1ZiwgcHJvbV9vZmZzZXQsIFBST01fU0laRV9NQVgpOwogICAgIGlmIChyZXQgPCAwIHx8 IHJldCA+IFBST01fU0laRV9NQVgpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBj b3VsZCBub3QgbG9hZCBwcm9tICclcydcbiIsCiAgICAgICAgICAgICAgICAgYnVmKTsKQEAgLTE0 ODUsNyArMTQ5MSw3IEBACiAgICAgfQogCiAgICAga2VybmVsX3NpemUgPSBzdW40bV9sb2FkX2tl cm5lbChrZXJuZWxfZmlsZW5hbWUsIGtlcm5lbF9jbWRsaW5lLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5pdHJkX2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluaXRyZF9maWxlbmFtZSwgUkFNX3NpemUpOwogCiAgICAgbnZyYW1f aW5pdChudnJhbSwgKHVpbnQ4X3QgKikmbmRfdGFibGVbMF0ubWFjYWRkciwga2VybmVsX2NtZGxp bmUsCiAgICAgICAgICAgICAgICBib290X2RldmljZSwgUkFNX3NpemUsIGtlcm5lbF9zaXplLCBn cmFwaGljX3dpZHRoLApJbmRleDogcWVtdS9ody9zdW40dS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy9ody9zdW40dS5jCTIwMDgtMDUtMDEgMTk6Mjk6MzUuMDAwMDAwMDAwICswMDAwCisrKyBx ZW11L2h3L3N1bjR1LmMJMjAwOC0wNS0wMiAxNDo0NTo1MC4wMDAwMDAwMDAgKzAwMDAKQEAgLTEx MSw3ICsxMTEsNyBAQAogICAgIGhlYWRlci0+a2VybmVsX2ltYWdlID0gY3B1X3RvX2JlNjQoKHVp bnQ2NF90KWtlcm5lbF9pbWFnZSk7CiAgICAgaGVhZGVyLT5rZXJuZWxfc2l6ZSA9IGNwdV90b19i ZTY0KCh1aW50NjRfdClrZXJuZWxfc2l6ZSk7CiAgICAgaWYgKGNtZGxpbmUpIHsKLSAgICAgICAg c3RyY3B5KHBoeXNfcmFtX2Jhc2UgKyBDTURMSU5FX0FERFIsIGNtZGxpbmUpOworICAgICAgICBw c3RyY3B5X3RhcmdwaHlzKENNRExJTkVfQUREUiwgVEFSR0VUX1BBR0VfU0laRSwgY21kbGluZSk7 CiAgICAgICAgIGhlYWRlci0+Y21kbGluZSA9IGNwdV90b19iZTY0KCh1aW50NjRfdClDTURMSU5F X0FERFIpOwogICAgICAgICBoZWFkZXItPmNtZGxpbmVfc2l6ZSA9IGNwdV90b19iZTY0KCh1aW50 NjRfdClzdHJsZW4oY21kbGluZSkpOwogICAgIH0KQEAgLTI5NCw5ICsyOTQsMTIgQEAKICAgICAg ICAgLyogWFhYOiBwdXQgY29ycmVjdCBvZmZzZXQgKi8KICAgICAgICAga2VybmVsX3NpemUgPSBs b2FkX2VsZihrZXJuZWxfZmlsZW5hbWUsIDAsIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgICAgICBp ZiAoa2VybmVsX3NpemUgPCAwKQotICAgICAgICAgICAga2VybmVsX3NpemUgPSBsb2FkX2FvdXQo a2VybmVsX2ZpbGVuYW1lLCBwaHlzX3JhbV9iYXNlICsgS0VSTkVMX0xPQURfQUREUik7CisgICAg ICAgICAgICBrZXJuZWxfc2l6ZSA9IGxvYWRfYW91dChrZXJuZWxfZmlsZW5hbWUsIEtFUk5FTF9M T0FEX0FERFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW1fc2l6ZSAt IEtFUk5FTF9MT0FEX0FERFIpOwogICAgICAgICBpZiAoa2VybmVsX3NpemUgPCAwKQotICAgICAg ICAgICAga2VybmVsX3NpemUgPSBsb2FkX2ltYWdlKGtlcm5lbF9maWxlbmFtZSwgcGh5c19yYW1f YmFzZSArIEtFUk5FTF9MT0FEX0FERFIpOworICAgICAgICAgICAga2VybmVsX3NpemUgPSBsb2Fk X2ltYWdlX3RhcmdwaHlzKGtlcm5lbF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBLRVJORUxfTE9BRF9BRERSLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbV9zaXplIC0gS0VSTkVMX0xPQURfQURE Uik7CiAgICAgICAgIGlmIChrZXJuZWxfc2l6ZSA8IDApIHsKICAgICAgICAgICAgIGZwcmludGYo c3RkZXJyLCAicWVtdTogY291bGQgbm90IGxvYWQga2VybmVsICclcydcbiIsCiAgICAgICAgICAg ICAgICAgICAgIGtlcm5lbF9maWxlbmFtZSk7CkBAIC0zMDUsNyArMzA4LDkgQEAKIAogICAgICAg ICAvKiBsb2FkIGluaXRyZCAqLwogICAgICAgICBpZiAoaW5pdHJkX2ZpbGVuYW1lKSB7Ci0gICAg ICAgICAgICBpbml0cmRfc2l6ZSA9IGxvYWRfaW1hZ2UoaW5pdHJkX2ZpbGVuYW1lLCBwaHlzX3Jh bV9iYXNlICsgSU5JVFJEX0xPQURfQUREUik7CisgICAgICAgICAgICBpbml0cmRfc2l6ZSA9IGxv YWRfaW1hZ2VfdGFyZ3BoeXMoaW5pdHJkX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElOSVRSRF9MT0FEX0FERFIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFtX3NpemUgLSBJTklUUkRfTE9BRF9B RERSKTsKICAgICAgICAgICAgIGlmIChpbml0cmRfc2l6ZSA8IDApIHsKICAgICAgICAgICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6IGNvdWxkIG5vdCBsb2FkIGluaXRpYWwgcmFtIGRpc2sg JyVzJ1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRyZF9maWxlbmFtZSk7CkBAIC0z MTMsMTEgKzMxOCwxMiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChp bml0cmRfc2l6ZSA+IDApIHsKKyAgICAgICAgICAgIHVpbnQzMl90IHRlbXA7CisKICAgICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCA2NCAqIFRBUkdFVF9QQUdFX1NJWkU7IGkgKz0gVEFSR0VUX1BB R0VfU0laRSkgewotICAgICAgICAgICAgICAgIGlmIChsZGxfcmF3KHBoeXNfcmFtX2Jhc2UgKyBL RVJORUxfTE9BRF9BRERSICsgaSkKLSAgICAgICAgICAgICAgICAgICAgPT0gMHg0ODY0NzI1Mykg eyAvLyBIZHJTCi0gICAgICAgICAgICAgICAgICAgIHN0bF9yYXcocGh5c19yYW1fYmFzZSArIEtF Uk5FTF9MT0FEX0FERFIgKyBpICsgMTYsIElOSVRSRF9MT0FEX0FERFIpOwotICAgICAgICAgICAg ICAgICAgICBzdGxfcmF3KHBoeXNfcmFtX2Jhc2UgKyBLRVJORUxfTE9BRF9BRERSICsgaSArIDIw LCBpbml0cmRfc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKGxkbF9waHlzKEtFUk5FTF9MT0FE X0FERFIgKyBpKSA9PSAweDQ4NjQ3MjUzKSB7IC8vIEhkclMKKyAgICAgICAgICAgICAgICAgICAg c3RsX3BoeXMoS0VSTkVMX0xPQURfQUREUiArIGkgKyAxNiwgSU5JVFJEX0xPQURfQUREUik7Cisg ICAgICAgICAgICAgICAgICAgIHN0bF9waHlzKEtFUk5FTF9MT0FEX0FERFIgKyBpICsgMjAsIGlu aXRyZF9zaXplKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgfQpJbmRleDogcWVtdS9lbGZfb3BzLmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVt dS5vcmlnL2VsZl9vcHMuaAkyMDA4LTA1LTAyIDEzOjUyOjEwLjAwMDAwMDAwMCArMDAwMAorKysg cWVtdS9lbGZfb3BzLmgJMjAwOC0wNS0wMiAxMzo1NToyOS4wMDAwMDAwMDAgKzAwMDAKQEAgLTE0 Nyw3ICsxNDcsNiBAQAogICAgIGludCBzaXplLCBpLCB0b3RhbF9zaXplOwogICAgIGVsZl93b3Jk IG1lbV9zaXplOwogICAgIHVpbnQ2NF90IGFkZHIsIGxvdyA9IDAsIGhpZ2ggPSAwOwotICAgIHVp bnQ4X3QgKmRhdGEgPSBOVUxMOwogCiAgICAgaWYgKHJlYWQoZmQsICZlaGRyLCBzaXplb2YoZWhk cikpICE9IHNpemVvZihlaGRyKSkKICAgICAgICAgZ290byBmYWlsOwpAQCAtMTgyLDI2ICsxODEs MTkgQEAKICAgICAgICAgcGggPSAmcGhkcltpXTsKICAgICAgICAgaWYgKHBoLT5wX3R5cGUgPT0g UFRfTE9BRCkgewogICAgICAgICAgICAgbWVtX3NpemUgPSBwaC0+cF9tZW1zejsKLSAgICAgICAg ICAgIC8qIFhYWDogYXZvaWQgYWxsb2NhdGluZyAqLwotICAgICAgICAgICAgZGF0YSA9IHFlbXVf bWFsbG9jeihtZW1fc2l6ZSk7CisgICAgICAgICAgICBhZGRyID0gcGgtPnBfdmFkZHIgKyB2aXJ0 X3RvX3BoeXNfYWRkZW5kOwogICAgICAgICAgICAgaWYgKHBoLT5wX2ZpbGVzeiA+IDApIHsKICAg ICAgICAgICAgICAgICBpZiAobHNlZWsoZmQsIHBoLT5wX29mZnNldCwgU0VFS19TRVQpIDwgMCkK ICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIGlmIChyZWFk KGZkLCBkYXRhLCBwaC0+cF9maWxlc3opICE9IHBoLT5wX2ZpbGVzeikKKyAgICAgICAgICAgICAg ICBpZiAocmVhZF90YXJncGh5cyhmZCwgYWRkciwgcGgtPnBfZmlsZXN6KSAhPSBwaC0+cF9maWxl c3opCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgIGFkZHIgPSBwaC0+cF92YWRkciArIHZpcnRfdG9fcGh5c19hZGRlbmQ7Ci0KLSAgICAg ICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfd3JpdGVfcm9tKGFkZHIsIGRhdGEsIG1lbV9zaXpl KTsKIAogICAgICAgICAgICAgdG90YWxfc2l6ZSArPSBtZW1fc2l6ZTsKICAgICAgICAgICAgIGlm ICghbG93IHx8IGFkZHIgPCBsb3cpCiAgICAgICAgICAgICAgICAgbG93ID0gYWRkcjsKICAgICAg ICAgICAgIGlmICghaGlnaCB8fCAoYWRkciArIG1lbV9zaXplKSA+IGhpZ2gpCiAgICAgICAgICAg ICAgICAgaGlnaCA9IGFkZHIgKyBtZW1fc2l6ZTsKLQotICAgICAgICAgICAgcWVtdV9mcmVlKGRh dGEpOwotICAgICAgICAgICAgZGF0YSA9IE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAgICAgcWVt dV9mcmVlKHBoZHIpOwpAQCAtMjExLDcgKzIwMyw2IEBACiAgICAgICAgICpoaWdoYWRkciA9ICh1 aW50NjRfdCkoZWxmX3N3b3JkKWhpZ2g7CiAgICAgcmV0dXJuIHRvdGFsX3NpemU7CiAgZmFpbDoK LSAgICBxZW11X2ZyZWUoZGF0YSk7CiAgICAgcWVtdV9mcmVlKHBoZHIpOwogICAgIHJldHVybiAt MTsKIH0K ------=_Part_7057_8651185.1209739927680--