From owner-freebsd-mobile@FreeBSD.ORG Sun Nov 13 21:56:24 2011 Return-Path: Delivered-To: freebsd-mobile@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79A04106564A for ; Sun, 13 Nov 2011 21:56:24 +0000 (UTC) (envelope-from torfinn.ingolfsen@broadpark.no) Received: from eterpe-smout.broadpark.no (eterpe-smout.broadpark.no [80.202.8.16]) by mx1.freebsd.org (Postfix) with ESMTP id 33A3D8FC12 for ; Sun, 13 Nov 2011 21:56:24 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from terra-smin.broadpark.no ([80.202.8.13]) by eterpe-smout.broadpark.no (Sun Java(tm) System Messaging Server 7u3-15.01 64bit (built Feb 12 2010)) with ESMTP id <0LUM0075EA5XCI60@eterpe-smout.broadpark.no> for freebsd-mobile@freebsd.org; Sun, 13 Nov 2011 21:56:21 +0100 (CET) Received: from kg-v2.kg4.no ([84.48.120.32]) by terra-smin.broadpark.no (Sun Java(tm) System Messaging Server 7u3-15.01 64bit (built Feb 12 2010)) with SMTP id <0LUM00406A5XAVA0@terra-smin.broadpark.no> for freebsd-mobile@freebsd.org; Sun, 13 Nov 2011 21:56:21 +0100 (CET) Date: Sun, 13 Nov 2011 21:56:20 +0100 From: Torfinn Ingolfsen To: freebsd-mobile@freebsd.org Message-id: <20111113215620.61a12326.torfinn.ingolfsen@broadpark.no> X-Mailer: Sylpheed 3.1.2 (GTK+ 2.24.6; amd64-portbld-freebsd8.2) X-Face: "t9w2,-X@O^I`jVW\sonI3.,36KBLZE*AL[y9lL[PyFD*r_S:dIL9c[8Y>V42R0"!"yb_zN,f#%.[PYYNq; m"_0v; ~rUM2Yy!zmkh)3&U|u!=T(zyv,MHJv"nDH>OJ`t(@mil461d_B'Uo|'nMwlKe0Mv=kvV?Nh@>Hb<3s_z2jYgZhPb@?Wi^x1a~Hplz1.zH Subject: ThinkPad 380ED doesn't work with FreeBSD 8.2-release X-BeenThere: freebsd-mobile@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Mobile computing with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Nov 2011 21:56:24 -0000 Hi, I fired up an old workhorse today: the ThinkPad 380ED[1]. Unfortunately, it doesn't work properly with FreeBSD 8.2-release, it seems like a PCI bridge isn't detected, or detected incorrectly. Perhaps this is the reason why the PCI-PCMCIA bridge isn't getting a driver too? Output from dmesg: pci0: at device 1.0 (no driver attached) vgapci0: mem 0x8000000-0x83fffff irq 11 at device 3.0 on pci0 pci0: at device 19.0 (no driver attached) I tested with FreeBSD 7.4-release too, the same problem. dmesg output: pci0: at device 1.0 (no driver attached) vgapci0: mem 0x8000000-0x83fffff irq 11 at device 3.0 on pci0 pci0: at device 19.0 (no driver attached) Is this problem / failure something that is easy to fix? The machine works under FreeBSD 4.11-release, the relevant parts from dmesg looks like this: pcib0: on motherboard pci0: on pcib0 chip1: at device 1.0 on pci0 pci0: at 3.0 irq 11 pcic0: port 0x3e0-0x3e3 at device 19.0 on pci0 pcic0: Polling mode pccard0: on pcic0 pccard1: on pcic0 More info, full dmesg output (normal and verbose), etc at the FreeBSD page[2] for this machine. References: 1) http://sites.google.com/site/tingox/tp380ed 2) http://sites.google.com/site/tingox/tp380ed_freebsd -- Torfinn From owner-freebsd-mobile@FreeBSD.ORG Wed Nov 16 18:06:45 2011 Return-Path: Delivered-To: freebsd-mobile@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 12F341065670; Wed, 16 Nov 2011 18:06:45 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id 78CC28FC08; Wed, 16 Nov 2011 18:06:44 +0000 (UTC) Received: by vws11 with SMTP id 11so11154164vws.13 for ; Wed, 16 Nov 2011 10:06:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=WEoZC0/fIQhGbEZaeVB6mo6yqCRoloroHJ+JuSzLJ0Y=; b=aaFdOhfUUU5cDfFhWRBCr+7DgPe1vuFugusKAYMGTy+40RTP30QE/Yn7BbsnY8RVfy 9y14nwhba32cr0UgbeAp0lWUBc8vdLjUZjlToZ+PnYyGqDcGt5vgqSdD6phaBaWOtZ8F l/ZRWLh176nx9G8z4A8UsHzpF5dNDDp3C8Xk0= MIME-Version: 1.0 Received: by 10.52.34.78 with SMTP id x14mr45631521vdi.122.1321466803635; Wed, 16 Nov 2011 10:06:43 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.52.29.198 with HTTP; Wed, 16 Nov 2011 10:06:43 -0800 (PST) Date: Wed, 16 Nov 2011 10:06:43 -0800 X-Google-Sender-Auth: 2jcm0QdjKRlnHeEj9gu1iYFiUsk Message-ID: From: Adrian Chadd To: freebsd-wireless@freebsd.org, freebsd-mobile@freebsd.org Content-Type: multipart/mixed; boundary=20cf3079b74e69c3da04b1ddf704 Cc: Subject: [patch] updated reset handling X-BeenThere: freebsd-mobile@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Mobile computing with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Nov 2011 18:06:45 -0000 --20cf3079b74e69c3da04b1ddf704 Content-Type: text/plain; charset=ISO-8859-1 Hi, This patch introduces all the missing locking/serialisation to (hopefully) ensure the reset and channel change paths are handled correctly. This fixes all of the throughput issues that occur during an interface reset. I'm not going to push it into -HEAD until I've done a lot more testing (read: more than just one station and one access point.) I'd thus like to hear feedback from the 11n testers I have out there. Thanks, Adrian --20cf3079b74e69c3da04b1ddf704 Content-Type: application/octet-stream; name="freebsd-head-reset-noloss-5.diff" Content-Disposition: attachment; filename="freebsd-head-reset-noloss-5.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gv2n6yei0 ZGlmZiAtLWdpdCBhL3N5cy9kZXYvYXRoL2lmX2F0aC5jIGIvc3lzL2Rldi9hdGgvaWZfYXRoLmMK aW5kZXggYzM0ODVlNC4uYTg2NzFlNSAxMDA2NDQKLS0tIGEvc3lzL2Rldi9hdGgvaWZfYXRoLmMK KysrIGIvc3lzL2Rldi9hdGgvaWZfYXRoLmMKQEAgLTEzNTksMTYgKzEzNTksMzYgQEAgYXRoX2lu dHIodm9pZCAqYXJnKQogCUhBTF9JTlQgc3RhdHVzID0gMDsKIAl1aW50MzJfdCB0eHFzOwogCisJ LyoKKwkgKiBJZiB3ZSdyZSBpbnNpZGUgYSByZXNldCBwYXRoLCBqdXN0IHByaW50IGEgd2Fybmlu ZyBhbmQKKwkgKiBjbGVhciB0aGUgSVNSLiBUaGUgcmVzZXQgcm91dGluZSB3aWxsIGZpbmlzaCBp dCBmb3IgdXMuCisJICovCisJQVRIX1BDVV9MT0NLKHNjKTsKKwlpZiAoc2MtPnNjX2lucmVzZXRf Y250KSB7CisJCUhBTF9JTlQgc3RhdHVzOworCQlhdGhfaGFsX2dldGlzcihhaCwgJnN0YXR1cyk7 CS8qIGNsZWFyIElTUiAqLworCQlhdGhfaGFsX2ludHJzZXQoYWgsIDApOwkJLyogZGlzYWJsZSBm dXJ0aGVyIGludHIncyAqLworCQlEUFJJTlRGKHNjLCBBVEhfREVCVUdfQU5ZLAorCQkgICAgIiVz OiBpbiByZXNldCwgaWdub3Jpbmc6IHN0YXR1cz0weCV4XG4iLAorCQkgICAgX19mdW5jX18sIHN0 YXR1cyk7CisJCUFUSF9QQ1VfVU5MT0NLKHNjKTsKKwkJcmV0dXJuOworCX0KKwogCWlmIChzYy0+ c2NfaW52YWxpZCkgewogCQkvKgogCQkgKiBUaGUgaGFyZHdhcmUgaXMgbm90IHJlYWR5L3ByZXNl bnQsIGRvbid0IHRvdWNoIGFueXRoaW5nLgogCQkgKiBOb3RlIHRoaXMgY2FuIGhhcHBlbiBlYXJs eSBvbiBpZiB0aGUgSVJRIGlzIHNoYXJlZC4KIAkJICovCiAJCURQUklOVEYoc2MsIEFUSF9ERUJV R19BTlksICIlczogaW52YWxpZDsgaWdub3JlZFxuIiwgX19mdW5jX18pOworCQlBVEhfUENVX1VO TE9DSyhzYyk7CiAJCXJldHVybjsKIAl9Ci0JaWYgKCFhdGhfaGFsX2ludHJwZW5kKGFoKSkJCS8q IHNoYXJlZCBpcnEsIG5vdCBmb3IgdXMgKi8KKwlpZiAoIWF0aF9oYWxfaW50cnBlbmQoYWgpKSB7 CQkvKiBzaGFyZWQgaXJxLCBub3QgZm9yIHVzICovCisJCUFUSF9QQ1VfVU5MT0NLKHNjKTsKIAkJ cmV0dXJuOworCX0KKwogCWlmICgoaWZwLT5pZl9mbGFncyAmIElGRl9VUCkgPT0gMCB8fAogCSAg ICAoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpID09IDApIHsKIAkJSEFMX0lO VCBzdGF0dXM7CkBAIC0xMzc3LDggKzEzOTcsMTAgQEAgYXRoX2ludHIodm9pZCAqYXJnKQogCQkJ X19mdW5jX18sIGlmcC0+aWZfZmxhZ3MpOwogCQlhdGhfaGFsX2dldGlzcihhaCwgJnN0YXR1cyk7 CS8qIGNsZWFyIElTUiAqLwogCQlhdGhfaGFsX2ludHJzZXQoYWgsIDApOwkJLyogZGlzYWJsZSBm dXJ0aGVyIGludHIncyAqLworCQlBVEhfUENVX1VOTE9DSyhzYyk7CiAJCXJldHVybjsKIAl9CisK IAkvKgogCSAqIEZpZ3VyZSBvdXQgdGhlIHJlYXNvbihzKSBmb3IgdGhlIGludGVycnVwdC4gIE5v dGUKIAkgKiB0aGF0IHRoZSBoYWwgcmV0dXJucyBhIHBzZXVkby1JU1IgdGhhdCBtYXkgaW5jbHVk ZQpAQCAtMTQwMCw5ICsxNDIyLDIzIEBAIGF0aF9pbnRyKHZvaWQgKmFyZykKIAlzdGF0dXMgJj0g c2MtPnNjX2ltYXNrOwkJCS8qIGRpc2NhcmQgdW5hc2tlZCBmb3IgYml0cyAqLwogCiAJLyogU2hv cnQtY2lyY3VpdCB1bi1oYW5kbGVkIGludGVycnVwdHMgKi8KLQlpZiAoc3RhdHVzID09IDB4MCkK KwlpZiAoc3RhdHVzID09IDB4MCkgeworCQlBVEhfUENVX1VOTE9DSyhzYyk7CiAJCXJldHVybjsK Kwl9CiAKKwkvKgorCSAqIFRha2UgYSBub3RlIHRoYXQgd2UncmUgaW5zaWRlIHRoZSBpbnRlcnJ1 cHQgaGFuZGxlciwgc28KKwkgKiB0aGUgcmVzZXQgcm91dGluZXMga25vdyB0byB3YWl0LgorCSAq LworCXNjLT5zY19pbnRyX2NudCsrOworCUFUSF9QQ1VfVU5MT0NLKHNjKTsKKworCS8qCisJICog SGFuZGxlIHRoZSBpbnRlcnJ1cHQuIFdlIHdvbid0IHJ1biBjb25jdXJyZW50IHdpdGggdGhlIHJl c2V0CisJICogb3IgY2hhbm5lbCBjaGFuZ2Ugcm91dGluZXMgYXMgdGhleSdsbCB3YWl0IGZvciBz Y19pbnRyX2NudAorCSAqIHRvIGJlIDAgYmVmb3JlIGNvbnRpbnVpbmcuCisJICovCiAJaWYgKHN0 YXR1cyAmIEhBTF9JTlRfRkFUQUwpIHsKIAkJc2MtPnNjX3N0YXRzLmFzdF9oYXJkd2FyZSsrOwog CQlhdGhfaGFsX2ludHJzZXQoYWgsIDApOwkJLyogZGlzYWJsZSBpbnRyJ3MgdW50aWwgcmVzZXQg Ki8KQEAgLTE0NDMsNiArMTQ3OSw3IEBAIGF0aF9pbnRyKHZvaWQgKmFyZykKIAkJaWYgKHN0YXR1 cyAmIEhBTF9JTlRfUlhFT0wpIHsKIAkJCWludCBpbWFzazsKIAkJCUNUUjAoQVRIX0tUUl9FUlIs ICJhdGhfaW50cjogUlhFT0wiKTsKKwkJCUFUSF9QQ1VfTE9DSyhzYyk7CiAJCQkvKgogCQkJICog TkI6IHRoZSBoYXJkd2FyZSBzaG91bGQgcmUtcmVhZCB0aGUgbGluayB3aGVuCiAJCQkgKiAgICAg UlhFIGJpdCBpcyB3cml0dGVuLCBidXQgaXQgZG9lc24ndCB3b3JrIGF0CkBAIC0xNDU4LDcgKzE0 OTUsNiBAQCBhdGhfaW50cih2b2lkICphcmcpCiAJCQkgKiBieSBhIGNhbGwgdG8gYXRoX3Jlc2V0 KCkgc29tZWhvdywgdGhlCiAJCQkgKiBpbnRlcnJ1cHQgbWFzayB3aWxsIGJlIGNvcnJlY3RseSBy ZXByb2dyYW1tZWQuCiAJCQkgKi8KLQkJCUFUSF9MT0NLKHNjKTsKIAkJCWltYXNrID0gc2MtPnNj X2ltYXNrOwogCQkJaW1hc2sgJj0gfihIQUxfSU5UX1JYRU9MIHwgSEFMX0lOVF9SWE9STik7CiAJ CQlhdGhfaGFsX2ludHJzZXQoYWgsIGltYXNrKTsKQEAgLTE0NzYsMTMgKzE1MTIsMTMgQEAgYXRo X2ludHIodm9pZCAqYXJnKQogCQkJaWYgKCEgc2MtPnNjX2tpY2twY3UpCiAJCQkJc2MtPnNjX3J4 bGluayA9IE5VTEw7CiAJCQlzYy0+c2Nfa2lja3BjdSA9IDE7Ci0JCQlBVEhfVU5MT0NLKHNjKTsK IAkJCS8qCiAJCQkgKiBFbnF1ZXVlIGFuIFJYIHByb2MsIHRvIGhhbmRsZWQgd2hhdGV2ZXIKIAkJ CSAqIGlzIGluIHRoZSBSWCBxdWV1ZS4KIAkJCSAqIFRoaXMgd2lsbCB0aGVuIGtpY2sgdGhlIFBD VS4KIAkJCSAqLwogCQkJdGFza3F1ZXVlX2VucXVldWUoc2MtPnNjX3RxLCAmc2MtPnNjX3J4dGFz ayk7CisJCQlBVEhfUENVX1VOTE9DSyhzYyk7CiAJCX0KIAkJaWYgKHN0YXR1cyAmIEhBTF9JTlRf VFhVUk4pIHsKIAkJCXNjLT5zY19zdGF0cy5hc3RfdHh1cm4rKzsKQEAgLTE1MDAsMTIgKzE1MzYs MTIgQEAgYXRoX2ludHIodm9pZCAqYXJnKQogCQkJICogYW5kIGJsYW5rIHRoZW0uIFRoaXMgaXMg dGhlIG9ubHkgcGxhY2Ugd2Ugc2hvdWxkIGJlCiAJCQkgKiBkb2luZyB0aGlzLgogCQkJICovCi0J CQlBVEhfTE9DSyhzYyk7CisJCQlBVEhfUENVX0xPQ0soc2MpOwogCQkJdHhxcyA9IDB4ZmZmZmZm ZmY7CiAJCQlhdGhfaGFsX2dldHR4aW50cnR4cXMoc2MtPnNjX2FoLCAmdHhxcyk7CiAJCQlzYy0+ c2NfdHhxX2FjdGl2ZSB8PSB0eHFzOwotCQkJQVRIX1VOTE9DSyhzYyk7CiAJCQl0YXNrcXVldWVf ZW5xdWV1ZShzYy0+c2NfdHEsICZzYy0+c2NfdHh0YXNrKTsKKwkJCUFUSF9QQ1VfVU5MT0NLKHNj KTsKIAkJfQogCQlpZiAoc3RhdHVzICYgSEFMX0lOVF9CTUlTUykgewogCQkJc2MtPnNjX3N0YXRz LmFzdF9ibWlzcysrOwpAQCAtMTUxNyw2ICsxNTUzLDcgQEAgYXRoX2ludHIodm9pZCAqYXJnKQog CQkJc2MtPnNjX3N0YXRzLmFzdF90eF9jc3QrKzsKIAkJaWYgKHN0YXR1cyAmIEhBTF9JTlRfTUlC KSB7CiAJCQlzYy0+c2Nfc3RhdHMuYXN0X21pYisrOworCQkJQVRIX1BDVV9MT0NLKHNjKTsKIAkJ CS8qCiAJCQkgKiBEaXNhYmxlIGludGVycnVwdHMgdW50aWwgd2Ugc2VydmljZSB0aGUgTUlCCiAJ CQkgKiBpbnRlcnJ1cHQ7IG90aGVyd2lzZSBpdCB3aWxsIGNvbnRpbnVlIHRvIGZpcmUuCkBAIC0x NTMzLDEwICsxNTcwLDkgQEAgYXRoX2ludHIodm9pZCAqYXJnKQogCQkJICogUlhFT0wgYmVmb3Jl IHRoZSByeHByb2MgaGFzIGhhZCBhIGNoYW5jZQogCQkJICogdG8gcnVuLgogCQkJICovCi0JCQlB VEhfTE9DSyhzYyk7CiAJCQlpZiAoc2MtPnNjX2tpY2twY3UgPT0gMCkKIAkJCQlhdGhfaGFsX2lu dHJzZXQoYWgsIHNjLT5zY19pbWFzayk7Ci0JCQlBVEhfVU5MT0NLKHNjKTsKKwkJCUFUSF9QQ1Vf VU5MT0NLKHNjKTsKIAkJfQogCQlpZiAoc3RhdHVzICYgSEFMX0lOVF9SWE9STikgewogCQkJLyog TkI6IGhhbCBtYXJrcyBIQUxfSU5UX0ZBVEFMIHdoZW4gUlhPUk4gaXMgZmF0YWwgKi8KQEAgLTE1 NDQsNiArMTU4MCw5IEBAIGF0aF9pbnRyKHZvaWQgKmFyZykKIAkJCXNjLT5zY19zdGF0cy5hc3Rf cnhvcm4rKzsKIAkJfQogCX0KKwlBVEhfUENVX0xPQ0soc2MpOworCXNjLT5zY19pbnRyX2NudC0t OworCUFUSF9QQ1VfVU5MT0NLKHNjKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE4MTksNiArMTg1 OCw0NSBAQCBhdGhfc3RvcF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnApCiB9CiAKIHN0YXRpYyB2 b2lkCithdGhfdHhyeF9zdG9wKHN0cnVjdCBhdGhfc29mdGMgKnNjKQoreworCWludCBpID0gMTAw MDsKKworCUFUSF9VTkxPQ0tfQVNTRVJUKHNjKTsKKworCS8qIFN0b3AgYW55IG5ldyBUWC9SWCBm cm9tIG9jY3VyaW5nICovCisJdGFza3F1ZXVlX2Jsb2NrKHNjLT5zY190cSk7CisKKwlBVEhfUENV X0xPQ0soc2MpOworCisJLyoKKwkgKiBTbGVlcCB1bnRpbCBhbGwgdGhlIHBlbmRpbmcgb3BlcmF0 aW9ucyBoYXZlIGNvbXBsZXRlZC4KKwkgKgorCSAqIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhh dCByZXNldCBoYXMgYmVlbiBpbmNyZW1lbnRlZAorCSAqIG9yIHRoaXMgd29uJ3QgZXZlciBvY2N1 ci4KKwkgKi8KKwl3aGlsZSAoc2MtPnNjX3J4cHJvY19jbnQgfHwgc2MtPnNjX3R4cHJvY19jbnQg fHwKKwkgICAgc2MtPnNjX3R4c3RhcnRfY250IHx8IHNjLT5zY19pbnRyX2NudCkgeworCSAgICAJ aWYgKGkgPD0gMCkKKwkJCWJyZWFrOworCQltc2xlZXAoc2MsICZzYy0+c2NfbXR4LCAwLCAiYXRo X3R4cnhfc3RvcCIsIDEpOworCQlpLS07CisJfQorCUFUSF9QQ1VfVU5MT0NLKHNjKTsKKworCWlm IChpIDw9IDApCisJCWRldmljZV9wcmludGYoc2MtPnNjX2RldiwKKwkJICAgICIlczogZGlkbid0 IGZpbmlzaCBhZnRlciAxMDAwIGl0ZXJhdGlvbnNcbiIsIF9fZnVuY19fKTsKK30KKworc3RhdGlj IHZvaWQKK2F0aF90eHJ4X3N0YXJ0KHN0cnVjdCBhdGhfc29mdGMgKnNjKQoreworCisJdGFza3F1 ZXVlX3VuYmxvY2soc2MtPnNjX3RxKTsKK30KKworc3RhdGljIHZvaWQKIGF0aF9zdG9wKHN0cnVj dCBpZm5ldCAqaWZwKQogewogCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gaWZwLT5pZl9zb2Z0YzsK QEAgLTE4NDIsMTcgKzE5MjAsNTEgQEAgYXRoX3Jlc2V0KHN0cnVjdCBpZm5ldCAqaWZwLCBBVEhf UkVTRVRfVFlQRSByZXNldF90eXBlKQogCXN0cnVjdCBpZWVlODAyMTFjb20gKmljID0gaWZwLT5p Zl9sMmNvbTsKIAlzdHJ1Y3QgYXRoX2hhbCAqYWggPSBzYy0+c2NfYWg7CiAJSEFMX1NUQVRVUyBz dGF0dXM7CisJaW50IGk7CiAKIAlEUFJJTlRGKHNjLCBBVEhfREVCVUdfUkVTRVQsICIlczogY2Fs bGVkXG4iLCBfX2Z1bmNfXyk7CiAKKwkvKiBYWFggZW5zdXJlIEFUSF9MT0NLIGlzbid0IGhlbGQ7 IGF0aF9yeF9wcm9jIGNhbid0IGJlIGxvY2tlZCAqLworCUFUSF9QQ1VfVU5MT0NLX0FTU0VSVChz Yyk7CisJQVRIX1VOTE9DS19BU1NFUlQoc2MpOworCisJQVRIX1BDVV9MT0NLKHNjKTsKKwkvKiBY WFggaWYgd2UncmUgYWxyZWFkeSBpbnNpZGUgYSByZXNldCwgcHJpbnQgb3V0IGEgYmlnIHdhcm5p bmcgKi8KKwlpZiAoc2MtPnNjX2lucmVzZXRfY250ID4gMCkgeworCQlkZXZpY2VfcHJpbnRmKHNj LT5zY19kZXYsCisJCSAgICAiJXM6IGNvbmN1cnJlbnQgYXRoX3Jlc2V0KCkhIERhbmdlciFcbiIs CisJCSAgICBfX2Z1bmNfXyk7CisJfQorCXNjLT5zY19pbnJlc2V0X2NudCsrOwogCWF0aF9oYWxf aW50cnNldChhaCwgMCk7CQkvKiBkaXNhYmxlIGludGVycnVwdHMgKi8KKwlBVEhfUENVX1VOTE9D SyhzYyk7CisKKwkvKgorCSAqIFhYWCBzaG91bGQgbm93IHdhaXQgZm9yIHBlbmRpbmcgVFgvUlgg dG8gY29tcGxldGUKKwkgKiBhbmQgYmxvY2sgZnV0dXJlIG9uZXMgZnJvbSBvY2N1cmluZy4KKwkg Ki8KKwlhdGhfdHhyeF9zdG9wKHNjKTsKKwogCWF0aF9kcmFpbnR4cShzYywgcmVzZXRfdHlwZSk7 CS8qIHN0b3AgeG1pdCBzaWRlICovCisKIAkvKgotCSAqIFhYWCBEb24ndCBmbHVzaCBpZiBBVEhf UkVTRVRfTk9MT1NTO2J1dCB3ZSBoYXZlIHRvIGZpcnN0Ci0JICogWFhYIG5lZWQgdG8gZW5zdXJl IHRoaXMgZG9lc24ndCByYWNlIHdpdGggYW4gb3V0c3RhbmRpbmcKLQkgKiBYWFggdGFza3F1ZXVl IGNhbGwuCisJICogUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlJ3JlIGRvaW5nIGEgbm8tbG9zcyBm bHVzaCBvcgorCSAqIG5vdCwgc3RvcCB0aGUgUENVIGFuZCBoYW5kbGUgd2hhdCdzIGluIHRoZSBS WCBxdWV1ZS4KKwkgKiBUaGF0IHdheSBmcmFtZXMgYXJlbid0IGRyb3BwZWQgd2hpY2ggc2hvdWxk bid0IGJlLgogCSAqLwotCWF0aF9zdG9wcmVjdihzYyk7CQkvKiBzdG9wIHJlY3Ygc2lkZSAqLwor CWF0aF9oYWxfc3RvcHBjdXJlY3YoYWgpOworCWF0aF9oYWxfc2V0cnhmaWx0ZXIoYWgsIDApOwor CWF0aF9yeF9wcm9jKHNjLCAwKTsKKworCS8qCisJICogSWYgd2UncmUgbm90IGRvaW5nIGEgbm9s b3NzIHJlc2V0LCBub3cgY2FsbCBhdGhfc3RvcHJlY3YoKS4KKwkgKiBUaGlzIGZ1bGx5IHN0b3Bz IGFsbCBvZiB0aGUgUlggbWFjaGluZXJ5IGFuZCBmbHVzaGVzIHdoYXRldmVyCisJICogZnJhbWVz IGFyZSBpbiB0aGUgUlggcmluZyBidWZmZXIuIEhvcGVmdWxseSBhbGwgY29tcGxldGVkCisJICog ZnJhbWVzIGhhdmUgYmVlbiBoYW5kbGVkIGF0IHRoaXMgcG9pbnQuCisJICovCisJaWYgKHJlc2V0 X3R5cGUgIT0gQVRIX1JFU0VUX05PTE9TUykKKwkJYXRoX3N0b3ByZWN2KHNjKTsJCS8qIHN0b3Ag cmVjdiBzaWRlICovCisKIAlhdGhfc2V0dGtpcG1pYyhzYyk7CQkvKiBjb25maWd1cmUgVEtJUCBN SUMgaGFuZGxpbmcgKi8KIAkvKiBOQjogaW5kaWNhdGUgY2hhbm5lbCBjaGFuZ2Ugc28gd2UgZG8g YSBmdWxsIHJlc2V0ICovCiAJaWYgKCFhdGhfaGFsX3Jlc2V0KGFoLCBzYy0+c2Nfb3Btb2RlLCBp Yy0+aWNfY3VyY2hhbiwgQUhfVFJVRSwgJnN0YXR1cykpCkBAIC0xODc5LDggKzE5OTEsNTkgQEAg YXRoX3Jlc2V0KHN0cnVjdCBpZm5ldCAqaWZwLCBBVEhfUkVTRVRfVFlQRSByZXNldF90eXBlKQog I2VuZGlmCiAJCQlhdGhfYmVhY29uX2NvbmZpZyhzYywgTlVMTCk7CiAJfQorCisJLyoKKwkgKiBS ZWxlYXNlIHRoZSByZXNldCBsb2NrIGFuZCByZS1lbmFibGUgaW50ZXJydXB0cyBoZXJlLgorCSAq IElmIGFuIGludGVycnVwdCB3YXMgYmVpbmcgcHJvY2Vzc2VkIGluIGF0aF9pbnRyKCksCisJICog aXQgd291bGQgZGlzYWJsZSBpbnRlcnJ1cHRzIGF0IHRoaXMgcG9pbnQuIFNvIHdlIGhhdmUKKwkg KiB0byBhdG9taWNhbGx5IGVuYWJsZSBpbnRlcnJ1cHRzIGFuZCBkZWNyZW1lbnQgdGhlCisJICog cmVzZXQgY291bnRlciAtIHRoaXMgd2F5IGF0aF9pbnRyKCkgZG9lc24ndCBlbmQgdXAKKwkgKiBk aXNhYmxpbmcgaW50ZXJydXB0cyB3aXRob3V0IGEgY29ycmVzcG9uZGluZyBlbmFibGUKKwkgKiBp biB0aGUgcmVzdCBvciBjaGFubmVsIGNoYW5nZSBwYXRoLgorCSAqLworCUFUSF9QQ1VfTE9DSyhz Yyk7CisJc2MtPnNjX2lucmVzZXRfY250LS07CisJLyogWFhYIG9ubHkgZG8gdGhpcyBpZiBzY19p bnJlc2V0X2NudCA9PSAwPyAqLwogCWF0aF9oYWxfaW50cnNldChhaCwgc2MtPnNjX2ltYXNrKTsK KwlBVEhfUENVX1VOTE9DSyhzYyk7CiAKKwkvKgorCSAqIFRYIGFuZCBSWCBjYW4gYmUgc3RhcnRl ZCBoZXJlLiBJZiBpdCB3ZXJlIHN0YXJ0ZWQgd2l0aAorCSAqIHNjX2lucmVzZXRfY250ID4gMCwg dGhlIFRYIGFuZCBSWCBwYXRoIHdvdWxkIGFib3J0LgorCSAqIFRodXMgaWYgdGhpcyBpcyBhIG5l c3RlZCBjYWxsIHRocm91Z2ggdGhlIHJlc2V0IG9yCisJICogY2hhbm5lbCBjaGFuZ2UgY29kZSwg VFggY29tcGxldGlvbiB3aWxsIG9jY3VyIGJ1dAorCSAqIFJYIGNvbXBsZXRpb24gYW5kIGF0aF9z dGFydCAvIGF0aF90eF9zdGFydCB3aWxsIG5vdAorCSAqIHJ1bi4KKwkgKi8KKworCS8qIFJlc3Rh cnQgVFgvUlggYXMgbmVlZGVkICovCisJYXRoX3R4cnhfc3RhcnQoc2MpOworCisJLyogWFhYIFJl c3RhcnQgVFggY29tcGxldGlvbiBhbmQgcGVuZGluZyBUWCAqLworCWlmIChyZXNldF90eXBlID09 IEFUSF9SRVNFVF9OT0xPU1MpIHsKKwkJZm9yIChpID0gMDsgaSA8IEhBTF9OVU1fVFhfUVVFVUVT OyBpKyspIHsKKwkJCWlmIChBVEhfVFhRX1NFVFVQKHNjLCBpKSkgeworCQkJCUFUSF9UWFFfTE9D Sygmc2MtPnNjX3R4cVtpXSk7CisJCQkJYXRoX3R4cV9yZXN0YXJ0X2RtYShzYywgJnNjLT5zY190 eHFbaV0pOworCQkJCWF0aF90eHFfc2NoZWQoc2MsICZzYy0+c2NfdHhxW2ldKTsKKwkJCQlBVEhf VFhRX1VOTE9DSygmc2MtPnNjX3R4cVtpXSk7CisJCQl9CisJCX0KKwl9CisKKwkvKgorCSAqIFRo aXMgbWF5IGhhdmUgYmVlbiBzZXQgZHVyaW5nIGFuIGF0aF9zdGFydCgpIGNhbGwgd2hpY2gKKwkg KiBzZXQgdGhpcyBvbmNlIGl0IGRldGVjdGVkIGEgY29uY3VycmVudCBUWCB3YXMgZ29pbmcgb24u CisJICogU28sIGNsZWFyIGl0LgorCSAqLworCS8qIFhYWCBkbyB0aGlzIGluc2lkZSBvZiBJRl9M T0NLPyAqLworCWlmcC0+aWZfZHJ2X2ZsYWdzICY9IH5JRkZfRFJWX09BQ1RJVkU7CisKKwkvKiBI YW5kbGUgYW55IGZyYW1lcyBpbiB0aGUgVFggcXVldWUgKi8KKwkvKgorCSAqIFhYWCBzaG91bGQg dGhpcyBiZSBkb25lIGJ5IHRoZSBjYWxsZXIsIHJhdGhlciB0aGFuCisJICogYXRoX3Jlc2V0KCkg PworCSAqLwogCWF0aF9zdGFydChpZnApOwkJCS8qIHJlc3RhcnQgeG1pdCAqLwogCXJldHVybiAw OwogfQpAQCAtMjAxMSw2ICsyMTc0LDcgQEAgYXRoX2dldGJ1ZihzdHJ1Y3QgYXRoX3NvZnRjICpz YykKIAogCQlEUFJJTlRGKHNjLCBBVEhfREVCVUdfWE1JVCwgIiVzOiBzdG9wIHF1ZXVlXG4iLCBf X2Z1bmNfXyk7CiAJCXNjLT5zY19zdGF0cy5hc3RfdHhfcXN0b3ArKzsKKwkJLyogWFhYIGRvIHRo aXMgaW5zaWRlIG9mIElGX0xPQ0s/ICovCiAJCWlmcC0+aWZfZHJ2X2ZsYWdzIHw9IElGRl9EUlZf T0FDVElWRTsKIAl9CiAJQVRIX1RYQlVGX1VOTE9DSyhzYyk7CkBAIC0yMDI4LDYgKzIxOTIsMjAg QEAgYXRoX3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwKQogCiAJaWYgKChpZnAtPmlmX2Rydl9mbGFn cyAmIElGRl9EUlZfUlVOTklORykgPT0gMCB8fCBzYy0+c2NfaW52YWxpZCkKIAkJcmV0dXJuOwor CisJLyogWFhYIGlzIGl0IG9rIHRvIGhvbGQgdGhlIEFUSF9MT0NLIGhlcmU/ICovCisJQVRIX1BD VV9MT0NLKHNjKTsKKwlpZiAoc2MtPnNjX2lucmVzZXRfY250ID4gMCkgeworCQlkZXZpY2VfcHJp bnRmKHNjLT5zY19kZXYsCisJCSAgICAiJXM6IHNjX2lucmVzZXRfY250ID4gMDsgYmFpbGluZ1xu IiwgX19mdW5jX18pOworCQkvKiBYWFggZG8gdGhpcyBpbnNpZGUgb2YgSUZfTE9DSz8gKi8KKwkJ aWZwLT5pZl9kcnZfZmxhZ3MgfD0gSUZGX0RSVl9PQUNUSVZFOworCQlBVEhfUENVX1VOTE9DSyhz Yyk7CisJCXJldHVybjsKKwl9CisJc2MtPnNjX3R4c3RhcnRfY250Kys7CisJQVRIX1BDVV9VTkxP Q0soc2MpOworCiAJZm9yICg7OykgewogCQkvKgogCQkgKiBHcmFiIGEgVFggYnVmZmVyIGFuZCBh c3NvY2lhdGVkIHJlc291cmNlcy4KQEAgLTIxMTEsNiArMjI4OSwxMCBAQCBhdGhfc3RhcnQoc3Ry dWN0IGlmbmV0ICppZnApCiAKIAkJc2MtPnNjX3dkX3RpbWVyID0gNTsKIAl9CisKKwlBVEhfUENV X0xPQ0soc2MpOworCXNjLT5zY190eHN0YXJ0X2NudC0tOworCUFUSF9QQ1VfVU5MT0NLKHNjKTsK IH0KIAogc3RhdGljIGludApAQCAtMzY4OCw2ICszODcwLDE0IEBAIGF0aF9yeF90YXNrbGV0KHZv aWQgKmFyZywgaW50IG5wZW5kaW5nKQogCiAJQ1RSMShBVEhfS1RSX0lOVFIsICJhdGhfcnhfcHJv YzogcGVuZGluZz0lZCIsIG5wZW5kaW5nKTsKIAlEUFJJTlRGKHNjLCBBVEhfREVCVUdfUlhfUFJP QywgIiVzOiBwZW5kaW5nICV1XG4iLCBfX2Z1bmNfXywgbnBlbmRpbmcpOworCUFUSF9QQ1VfTE9D SyhzYyk7CisJaWYgKHNjLT5zY19pbnJlc2V0X2NudCA+IDApIHsKKwkJZGV2aWNlX3ByaW50Zihz Yy0+c2NfZGV2LAorCQkgICAgIiVzOiBzY19pbnJlc2V0X2NudCA+IDA7IHNraXBwaW5nXG4iLCBf X2Z1bmNfXyk7CisJCUFUSF9QQ1VfVU5MT0NLKHNjKTsKKwkJcmV0dXJuOworCX0KKwlBVEhfUENV X1VOTE9DSyhzYyk7CiAJYXRoX3J4X3Byb2Moc2MsIDEpOwogfQogCkBAIC0zNzExLDYgKzM5MDEs MTQgQEAgYXRoX3J4X3Byb2Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsIGludCByZXNjaGVkKQogCXVf aW50NjRfdCB0c2Y7CiAJaW50IG5wa3RzID0gMDsKIAorCS8qIFhYWCB3ZSBtdXN0IG5vdCBob2xk IHRoZSBBVEhfTE9DSyBoZXJlICovCisJQVRIX1VOTE9DS19BU1NFUlQoc2MpOworCUFUSF9QQ1Vf VU5MT0NLX0FTU0VSVChzYyk7CisKKwlBVEhfUENVX0xPQ0soc2MpOworCXNjLT5zY19yeHByb2Nf Y250Kys7CisJQVRIX1BDVV9VTkxPQ0soc2MpOworCiAJRFBSSU5URihzYywgQVRIX0RFQlVHX1JY X1BST0MsICIlczogY2FsbGVkXG4iLCBfX2Z1bmNfXyk7CiAJbmdvb2QgPSAwOwogCW5mID0gYXRo X2hhbF9nZXRjaGFubm9pc2UoYWgsIHNjLT5zY19jdXJjaGFuKTsKQEAgLTQwNTYsMjQgKzQyNTQs MjkgQEAgcnhfbmV4dDoKIAkgKiBuZWVkIHRvIGJlIGhhbmRsZWQsIGtpY2sgdGhlIFBDVSBpZiB0 aGVyZSdzCiAJICogYmVlbiBhbiBSWEVPTCBjb25kaXRpb24uCiAJICovCisJQVRIX1BDVV9MT0NL KHNjKTsKIAlpZiAocmVzY2hlZCAmJiBzYy0+c2Nfa2lja3BjdSkgewogCQlDVFIwKEFUSF9LVFJf RVJSLCAiYXRoX3J4X3Byb2M6IGtpY2twY3UiKTsKIAkJZGV2aWNlX3ByaW50ZihzYy0+c2NfZGV2 LCAiJXM6IGtpY2twY3U7IGhhbmRsZWQgJWQgcGFja2V0c1xuIiwKIAkJICAgIF9fZnVuY19fLCBu cGt0cyk7CiAKIAkJLyogWFhYIHJ4c2xpbms/ICovCisJCS8qCisJCSAqIFhYWCBjYW4gd2UgaG9s ZCB0aGUgUENVIGxvY2sgaGVyZT8KKwkJICogQXJlIHRoZXJlIGFueSBuZXQ4MDIxMSBidWZmZXIg Y2FsbHMgaW52b2x2ZWQ/CisJCSAqLwogCQliZiA9IFRBSUxRX0ZJUlNUKCZzYy0+c2NfcnhidWYp OwogCQlhdGhfaGFsX3B1dHJ4YnVmKGFoLCBiZi0+YmZfZGFkZHIpOwogCQlhdGhfaGFsX3J4ZW5h KGFoKTsJCS8qIGVuYWJsZSByZWN2IGRlc2NyaXB0b3JzICovCiAJCWF0aF9tb2RlX2luaXQoc2Mp OwkJLyogc2V0IGZpbHRlcnMsIGV0Yy4gKi8KIAkJYXRoX2hhbF9zdGFydHBjdXJlY3YoYWgpOwkv KiByZS1lbmFibGUgUENVL0RNQSBlbmdpbmUgKi8KIAotCQlBVEhfTE9DSyhzYyk7CiAJCWF0aF9o YWxfaW50cnNldChhaCwgc2MtPnNjX2ltYXNrKTsKIAkJc2MtPnNjX2tpY2twY3UgPSAwOwotCQlB VEhfVU5MT0NLKHNjKTsKIAl9CisJQVRIX1BDVV9VTkxPQ0soc2MpOwogCisJLyogWFhYIGNoZWNr IHRoaXMgaW5zaWRlIG9mIElGX0xPQ0s/ICovCiAJaWYgKHJlc2NoZWQgJiYgKGlmcC0+aWZfZHJ2 X2ZsYWdzICYgSUZGX0RSVl9PQUNUSVZFKSA9PSAwKSB7CiAjaWZkZWYgSUVFRTgwMjExX1NVUFBP UlRfU1VQRVJHCiAJCWllZWU4MDIxMV9mZl9hZ2VfYWxsKGljLCAxMDApOwpAQCAtNDA4Miw2ICs0 Mjg1LDEwIEBAIHJ4X25leHQ6CiAJCQlhdGhfc3RhcnQoaWZwKTsKIAl9CiAjdW5kZWYgUEEyREVT QworCisJQVRIX1BDVV9MT0NLKHNjKTsKKwlzYy0+c2Nfcnhwcm9jX2NudC0tOworCUFUSF9QQ1Vf VU5MT0NLKHNjKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQ1ODgsMjIgKzQ3OTUsMjggQEAgYXRo X3R4X3Byb2NfcTAodm9pZCAqYXJnLCBpbnQgbnBlbmRpbmcpCiAJc3RydWN0IGlmbmV0ICppZnAg PSBzYy0+c2NfaWZwOwogCXVpbnQzMl90IHR4cXM7CiAKLQlBVEhfTE9DSyhzYyk7CisJQVRIX1BD VV9MT0NLKHNjKTsKKwlzYy0+c2NfdHhwcm9jX2NudCsrOwogCXR4cXMgPSBzYy0+c2NfdHhxX2Fj dGl2ZTsKIAlzYy0+c2NfdHhxX2FjdGl2ZSAmPSB+dHhxczsKLQlBVEhfVU5MT0NLKHNjKTsKKwlB VEhfUENVX1VOTE9DSyhzYyk7CiAKIAlpZiAoVFhRQUNUSVZFKHR4cXMsIDApICYmIGF0aF90eF9w cm9jZXNzcShzYywgJnNjLT5zY190eHFbMF0sIDEpKQogCQkvKiBYWFggd2h5IGlzIGxhc3RyeCB1 cGRhdGVkIGluIHR4IGNvZGU/ICovCiAJCXNjLT5zY19sYXN0cnggPSBhdGhfaGFsX2dldHRzZjY0 KHNjLT5zY19haCk7CiAJaWYgKFRYUUFDVElWRSh0eHFzLCBzYy0+c2NfY2FicS0+YXhxX3FudW0p KQogCQlhdGhfdHhfcHJvY2Vzc3Eoc2MsIHNjLT5zY19jYWJxLCAxKTsKKwkvKiBYWFggY2hlY2sg dGhpcyBpbnNpZGUgb2YgSUZfTE9DSz8gKi8KIAlpZnAtPmlmX2Rydl9mbGFncyAmPSB+SUZGX0RS Vl9PQUNUSVZFOwogCXNjLT5zY193ZF90aW1lciA9IDA7CiAKIAlpZiAoc2MtPnNjX3NvZnRsZWQp CiAJCWF0aF9sZWRfZXZlbnQoc2MsIHNjLT5zY190eHJpeCk7CiAKKwlBVEhfUENVX0xPQ0soc2Mp OworCXNjLT5zY190eHByb2NfY250LS07CisJQVRIX1BDVV9VTkxPQ0soc2MpOworCiAJYXRoX3N0 YXJ0KGlmcCk7CiB9CiAKQEAgLTQ2MTksMTAgKzQ4MzIsMTEgQEAgYXRoX3R4X3Byb2NfcTAxMjMo dm9pZCAqYXJnLCBpbnQgbnBlbmRpbmcpCiAJaW50IG5hY2tlZDsKIAl1aW50MzJfdCB0eHFzOwog Ci0JQVRIX0xPQ0soc2MpOworCUFUSF9QQ1VfTE9DSyhzYyk7CisJc2MtPnNjX3R4cHJvY19jbnQr KzsKIAl0eHFzID0gc2MtPnNjX3R4cV9hY3RpdmU7CiAJc2MtPnNjX3R4cV9hY3RpdmUgJj0gfnR4 cXM7Ci0JQVRIX1VOTE9DSyhzYyk7CisJQVRIX1BDVV9VTkxPQ0soc2MpOwogCiAJLyoKIAkgKiBQ cm9jZXNzIGVhY2ggYWN0aXZlIHF1ZXVlLgpAQCAtNDY0MSwxMiArNDg1NSwxNyBAQCBhdGhfdHhf cHJvY19xMDEyMyh2b2lkICphcmcsIGludCBucGVuZGluZykKIAlpZiAobmFja2VkKQogCQlzYy0+ c2NfbGFzdHJ4ID0gYXRoX2hhbF9nZXR0c2Y2NChzYy0+c2NfYWgpOwogCisJLyogWFhYIGNoZWNr IHRoaXMgaW5zaWRlIG9mIElGX0xPQ0s/ICovCiAJaWZwLT5pZl9kcnZfZmxhZ3MgJj0gfklGRl9E UlZfT0FDVElWRTsKIAlzYy0+c2Nfd2RfdGltZXIgPSAwOwogCiAJaWYgKHNjLT5zY19zb2Z0bGVk KQogCQlhdGhfbGVkX2V2ZW50KHNjLCBzYy0+c2NfdHhyaXgpOwogCisJQVRIX1BDVV9MT0NLKHNj KTsKKwlzYy0+c2NfdHhwcm9jX2NudC0tOworCUFUSF9QQ1VfVU5MT0NLKHNjKTsKKwogCWF0aF9z dGFydChpZnApOwogfQogCkBAIC00NjYxLDEwICs0ODgwLDExIEBAIGF0aF90eF9wcm9jKHZvaWQg KmFyZywgaW50IG5wZW5kaW5nKQogCWludCBpLCBuYWNrZWQ7CiAJdWludDMyX3QgdHhxczsKIAot CUFUSF9MT0NLKHNjKTsKKwlBVEhfUENVX0xPQ0soc2MpOworCXNjLT5zY190eHByb2NfY250Kys7 CiAJdHhxcyA9IHNjLT5zY190eHFfYWN0aXZlOwogCXNjLT5zY190eHFfYWN0aXZlICY9IH50eHFz OwotCUFUSF9VTkxPQ0soc2MpOworCUFUSF9QQ1VfVU5MT0NLKHNjKTsKIAogCS8qCiAJICogUHJv Y2VzcyBlYWNoIGFjdGl2ZSBxdWV1ZS4KQEAgLTQ2NzYsMTIgKzQ4OTYsMTcgQEAgYXRoX3R4X3By b2Modm9pZCAqYXJnLCBpbnQgbnBlbmRpbmcpCiAJaWYgKG5hY2tlZCkKIAkJc2MtPnNjX2xhc3Ry eCA9IGF0aF9oYWxfZ2V0dHNmNjQoc2MtPnNjX2FoKTsKIAorCS8qIFhYWCBjaGVjayB0aGlzIGlu c2lkZSBvZiBJRl9MT0NLPyAqLwogCWlmcC0+aWZfZHJ2X2ZsYWdzICY9IH5JRkZfRFJWX09BQ1RJ VkU7CiAJc2MtPnNjX3dkX3RpbWVyID0gMDsKIAogCWlmIChzYy0+c2Nfc29mdGxlZCkKIAkJYXRo X2xlZF9ldmVudChzYywgc2MtPnNjX3R4cml4KTsKIAorCUFUSF9QQ1VfTE9DSyhzYyk7CisJc2Mt PnNjX3R4cHJvY19jbnQtLTsKKwlBVEhfUENVX1VOTE9DSyhzYyk7CisKIAlhdGhfc3RhcnQoaWZw KTsKIH0KICN1bmRlZglUWFFBQ1RJVkUKQEAgLTQ4NjMsOSArNTA4OCwxOCBAQCBhdGhfZHJhaW50 eHEoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIEFUSF9SRVNFVF9UWVBFIHJlc2V0X3R5cGUpCiAKIAko dm9pZCkgYXRoX3N0b3B0eGRtYShzYyk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgSEFMX05VTV9UWF9R VUVVRVM7IGkrKykKLQkJaWYgKEFUSF9UWFFfU0VUVVAoc2MsIGkpKQotCQkJYXRoX3R4X2RyYWlu dHhxKHNjLCAmc2MtPnNjX3R4cVtpXSk7CisJZm9yIChpID0gMDsgaSA8IEhBTF9OVU1fVFhfUVVF VUVTOyBpKyspIHsKKwkJLyoKKwkJICogWFhYIFRPRE86IHNob3VsZCB3ZSBqdXN0IGhhbmRsZSB0 aGUgY29tcGxldGVkIFRYIGZyYW1lcworCQkgKiBoZXJlLCB3aGV0aGVyIG9yIG5vdCB0aGUgcmVz ZXQgaXMgYSBmdWxsIG9uZSBvciBub3Q/CisJCSAqLworCQlpZiAoQVRIX1RYUV9TRVRVUChzYywg aSkpIHsKKwkJCWlmIChyZXNldF90eXBlID09IEFUSF9SRVNFVF9OT0xPU1MpCisJCQkJYXRoX3R4 X3Byb2Nlc3NxKHNjLCAmc2MtPnNjX3R4cVtpXSwgMCk7CisJCQllbHNlCisJCQkJYXRoX3R4X2Ry YWludHhxKHNjLCAmc2MtPnNjX3R4cVtpXSk7CisJCX0KKwl9CiAjaWZkZWYgQVRIX0RFQlVHCiAJ aWYgKHNjLT5zY19kZWJ1ZyAmIEFUSF9ERUJVR19SRVNFVCkgewogCQlzdHJ1Y3QgYXRoX2J1ZiAq YmYgPSBUQUlMUV9GSVJTVCgmc2MtPnNjX2JidWYpOwpAQCAtNDg3OSw2ICs1MTEzLDcgQEAgYXRo X2RyYWludHhxKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBBVEhfUkVTRVRfVFlQRSByZXNldF90eXBl KQogCQl9CiAJfQogI2VuZGlmIC8qIEFUSF9ERUJVRyAqLworCS8qIFhYWCBjaGVjayB0aGlzIGlu c2lkZSBvZiBJRl9MT0NLPyAqLwogCWlmcC0+aWZfZHJ2X2ZsYWdzICY9IH5JRkZfRFJWX09BQ1RJ VkU7CiAJc2MtPnNjX3dkX3RpbWVyID0gMDsKIH0KQEAgLTQ5ODQsNiArNTIxOSwyMiBAQCBhdGhf Y2hhbl9zZXQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAq Y2hhbikKIAlzdHJ1Y3QgaWZuZXQgKmlmcCA9IHNjLT5zY19pZnA7CiAJc3RydWN0IGllZWU4MDIx MWNvbSAqaWMgPSBpZnAtPmlmX2wyY29tOwogCXN0cnVjdCBhdGhfaGFsICphaCA9IHNjLT5zY19h aDsKKwlpbnQgcmV0ID0gMDsKKwlpbnQgZG9pbnRyID0gMDsKKworCS8qIFRyZWF0IHRoaXMgYXMg YW4gaW50ZXJmYWNlIHJlc2V0ICovCisJQVRIX1BDVV9MT0NLKHNjKTsKKwlpZiAoc2MtPnNjX2lu cmVzZXRfY250ID4gMCkKKwkJZGV2aWNlX3ByaW50ZihzYy0+c2NfZGV2LCAiJXM6IGRhbmdlciEg Y29uY3VycmVudCByZXNldCFcbiIsCisJCSAgICBfX2Z1bmNfXyk7CisJc2MtPnNjX2lucmVzZXRf Y250Kys7CisJaWYgKGNoYW4gIT0gc2MtPnNjX2N1cmNoYW4pIHsKKwkJZG9pbnRyID0gMTsKKwkJ LyogWFhYIG9ubHkgZG8gdGhpcyBpZiBpbnJlc2V0X2NudCBpcyAxPyAqLworCQlhdGhfaGFsX2lu dHJzZXQoYWgsIDApOworCX0KKwlBVEhfUENVX1VOTE9DSyhzYyk7CisJYXRoX3R4cnhfc3RvcChz Yyk7CiAKIAlEUFJJTlRGKHNjLCBBVEhfREVCVUdfUkVTRVQsICIlczogJXUgKCV1IE1IeiwgZmxh Z3MgMHgleClcbiIsCiAJICAgIF9fZnVuY19fLCBpZWVlODAyMTFfY2hhbjJpZWVlKGljLCBjaGFu KSwKQEAgLTQ5OTYsNyArNTI0Nyw5IEBAIGF0aF9jaGFuX3NldChzdHJ1Y3QgYXRoX3NvZnRjICpz Yywgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuKQogCQkgKiBoYXJkd2FyZSBhdCB0aGUg bmV3IGZyZXF1ZW5jeSwgYW5kIHRoZW4gcmUtZW5hYmxlCiAJCSAqIHRoZSByZWxldmFudCBiaXRz IG9mIHRoZSBoL3cuCiAJCSAqLworI2lmIDAKIAkJYXRoX2hhbF9pbnRyc2V0KGFoLCAwKTsJCS8q IGRpc2FibGUgaW50ZXJydXB0cyAqLworI2VuZGlmCiAJCWF0aF9kcmFpbnR4cShzYywgQVRIX1JF U0VUX0ZVTEwpOwkvKiBjbGVhciBwZW5kaW5nIHR4IGZyYW1lcyAqLwogCQlhdGhfc3RvcHJlY3Yo c2MpOwkJLyogdHVybiBvZmYgZnJhbWUgcmVjdiAqLwogCQlpZiAoIWF0aF9oYWxfcmVzZXQoYWgs IHNjLT5zY19vcG1vZGUsIGNoYW4sIEFIX1RSVUUsICZzdGF0dXMpKSB7CkBAIC01MDA0LDcgKzUy NTcsOCBAQCBhdGhfY2hhbl9zZXQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBpZWVlODAy MTFfY2hhbm5lbCAqY2hhbikKIAkJCSAgICAiY2hhbm5lbCAldSAoJXUgTUh6LCBmbGFncyAweCV4 KSwgaGFsIHN0YXR1cyAldVxuIiwKIAkJCSAgICBfX2Z1bmNfXywgaWVlZTgwMjExX2NoYW4yaWVl ZShpYywgY2hhbiksCiAJCQkgICAgY2hhbi0+aWNfZnJlcSwgY2hhbi0+aWNfZmxhZ3MsIHN0YXR1 cyk7Ci0JCQlyZXR1cm4gRUlPOworCQkJcmV0ID0gRUlPOworCQkJZ290byBmaW5pc2g7CiAJCX0K IAkJc2MtPnNjX2RpdmVyc2l0eSA9IGF0aF9oYWxfZ2V0ZGl2ZXJzaXR5KGFoKTsKIApAQCAtNTAx Nyw3ICs1MjcxLDggQEAgYXRoX2NoYW5fc2V0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qg aWVlZTgwMjExX2NoYW5uZWwgKmNoYW4pCiAJCWlmIChhdGhfc3RhcnRyZWN2KHNjKSAhPSAwKSB7 CiAJCQlpZl9wcmludGYoaWZwLCAiJXM6IHVuYWJsZSB0byByZXN0YXJ0IHJlY3YgbG9naWNcbiIs CiAJCQkgICAgX19mdW5jX18pOwotCQkJcmV0dXJuIEVJTzsKKwkJCXJldCA9IEVJTzsKKwkJCWdv dG8gZmluaXNoOwogCQl9CiAKIAkJLyoKQEAgLTUwMzksMTIgKzUyOTQsMjggQEAgYXRoX2NoYW5f c2V0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4p CiAJCQlhdGhfYmVhY29uX2NvbmZpZyhzYywgTlVMTCk7CiAJCX0KIAorI2lmIDAKIAkJLyoKIAkJ ICogUmUtZW5hYmxlIGludGVycnVwdHMuCiAJCSAqLwogCQlhdGhfaGFsX2ludHJzZXQoYWgsIHNj LT5zY19pbWFzayk7CisjZW5kaWYKIAl9Ci0JcmV0dXJuIDA7CisKK2ZpbmlzaDoKKwlBVEhfUENV X0xPQ0soc2MpOworCXNjLT5zY19pbnJlc2V0X2NudC0tOworCS8qIFhYWCBvbmx5IGRvIHRoaXMg aWYgc2NfaW5yZXNldF9jbnQgPT0gMD8gKi8KKwlpZiAoZG9pbnRyKQorCQlhdGhfaGFsX2ludHJz ZXQoYWgsIHNjLT5zY19pbWFzayk7CisJQVRIX1BDVV9VTkxPQ0soc2MpOworCisJLyogWFhYIGRv IHRoaXMgaW5zaWRlIG9mIElGX0xPQ0s/ICovCisJaWZwLT5pZl9kcnZfZmxhZ3MgJj0gfklGRl9E UlZfT0FDVElWRTsKKwlhdGhfdHhyeF9zdGFydChzYyk7CisJLyogWFhYIGF0aF9zdGFydD8gKi8K KworCXJldHVybiByZXQ7CiB9CiAKIC8qCkBAIC01MDg3LDcgKzUzNTgsMTggQEAgYXRoX2NhbGli cmF0ZSh2b2lkICphcmcpCiAJCQlEUFJJTlRGKHNjLCBBVEhfREVCVUdfQ0FMSUJSQVRFLAogCQkJ CSIlczogcmZnYWluIGNoYW5nZVxuIiwgX19mdW5jX18pOwogCQkJc2MtPnNjX3N0YXRzLmFzdF9w ZXJfcmZnYWluKys7CisJCQkvKgorCQkJICogRHJvcCBsb2NrIC0gd2UgY2FuJ3QgaG9sZCBpdCBh Y3Jvc3MgdGhlCisJCQkgKiBhdGhfcmVzZXQoKSBjYWxsLiBJbnN0ZWFkLCB3ZSdsbCBkcm9wCisJ CQkgKiBvdXQgaGVyZSwgZG8gYSByZXNldCwgdGhlbiByZXNjaGVkdWxlCisJCQkgKiB0aGUgY2Fs bG91dC4KKwkJCSAqLworCQkJY2FsbG91dF9yZXNldCgmc2MtPnNjX2NhbF9jaCwgMSwgYXRoX2Nh bGlicmF0ZSwgc2MpOworCQkJc2MtPnNjX3Jlc2V0Y2FsID0gMDsKKwkJCXNjLT5zY19kb3Jlc2V0 Y2FsID0gQUhfVFJVRTsKKwkJCUFUSF9VTkxPQ0soc2MpOwogCQkJYXRoX3Jlc2V0KGlmcCwgQVRI X1JFU0VUX05PTE9TUyk7CisJCQlyZXR1cm47CiAJCX0KIAkJLyoKIAkJICogSWYgdGhpcyBsb25n IGNhbCBpcyBhZnRlciBhbiBpZGxlIHBlcmlvZCwgdGhlbgpAQCAtNTc0Miw2ICs2MDI0LDcgQEAg c3RhdGljIHZvaWQKIGF0aF93YXRjaGRvZyh2b2lkICphcmcpCiB7CiAJc3RydWN0IGF0aF9zb2Z0 YyAqc2MgPSBhcmc7CisJaW50IGRvX3Jlc2V0ID0gMDsKIAogCWlmIChzYy0+c2Nfd2RfdGltZXIg IT0gMCAmJiAtLXNjLT5zY193ZF90aW1lciA9PSAwKSB7CiAJCXN0cnVjdCBpZm5ldCAqaWZwID0g c2MtPnNjX2lmcDsKQEAgLTU3NTMsMTAgKzYwMzYsMjAgQEAgYXRoX3dhdGNoZG9nKHZvaWQgKmFy ZykKIAkJCSAgICBoYW5ncyAmIDB4ZmYgPyAiYmIiIDogIm1hYyIsIGhhbmdzKTsKIAkJfSBlbHNl CiAJCQlpZl9wcmludGYoaWZwLCAiZGV2aWNlIHRpbWVvdXRcbiIpOwotCQlhdGhfcmVzZXQoaWZw LCBBVEhfUkVTRVRfTk9MT1NTKTsKKwkJZG9fcmVzZXQgPSAxOwogCQlpZnAtPmlmX29lcnJvcnMr KzsKIAkJc2MtPnNjX3N0YXRzLmFzdF93YXRjaGRvZysrOwogCX0KKworCS8qCisJICogV2UgY2Fu J3QgaG9sZCB0aGUgbG9jayBhY3Jvc3MgdGhlIGF0aF9yZXNldCgpIGNhbGwuCisJICovCisJaWYg KGRvX3Jlc2V0KSB7CisJCUFUSF9VTkxPQ0soc2MpOworCQlhdGhfcmVzZXQoc2MtPnNjX2lmcCwg QVRIX1JFU0VUX05PTE9TUyk7CisJCUFUSF9MT0NLKHNjKTsKKwl9CisKIAljYWxsb3V0X3NjaGVk dWxlKCZzYy0+c2Nfd2RfY2gsIGh6KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3lzL2Rldi9hdGgvaWZf YXRoX3R4LmMgYi9zeXMvZGV2L2F0aC9pZl9hdGhfdHguYwppbmRleCBiOGM0YzgwLi41NjI1YmYy IDEwMDY0NAotLS0gYS9zeXMvZGV2L2F0aC9pZl9hdGhfdHguYworKysgYi9zeXMvZGV2L2F0aC9p Zl9hdGhfdHguYwpAQCAtNDc3LDggKzQ3Nyw2IEBAIGF0aF90eF9oYW5kb2ZmX21jYXN0KHN0cnVj dCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLAogCXR4cS0+YXhxX2xpbmsgPSAm YmYtPmJmX2xhc3Rkcy0+ZHNfbGluazsKIH0KIAotCi0KIC8qCiAgKiBIYW5kLW9mZiBwYWNrZXQg dG8gYSBoYXJkd2FyZSBxdWV1ZS4KICAqLwpAQCAtNTAxLDYgKzQ5OSwzNiBAQCBhdGhfdHhfaGFu ZG9mZl9odyhzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSwgc3RydWN0 IGF0aF9idWYgKmJmKQogCUtBU1NFUlQodHhxLT5heHFfcW51bSAhPSBBVEhfVFhRX1NXUSwKIAkg ICAgICgiYXRoX3R4X2hhbmRvZmZfaHcgY2FsbGVkIGZvciBtY2FzdCBxdWV1ZSIpKTsKIAorI2lm IDAKKwkvKgorCSAqIFRoaXMgY2F1c2VzIGEgTE9SLiBGaW5kIG91dCB3aGVyZSB0aGUgUENVIGxv Y2sgaXMgYmVpbmcKKwkgKiBoZWxkIHdoaWxzdCB0aGUgVFhRIGxvY2sgaXMgZ3JhYmJlZCAtIHRo YXQgc2hvdWxkbid0CisJICogYmUgb2NjdXJpbmcuCisJICovCisJQVRIX1BDVV9MT0NLKHNjKTsK KwlpZiAoc2MtPnNjX2lucmVzZXRfY250KSB7CisJCUFUSF9QQ1VfVU5MT0NLKHNjKTsKKwkJRFBS SU5URihzYywgQVRIX0RFQlVHX1JFU0VULAorCQkgICAgIiVzOiBjYWxsZWQgd2l0aCBzY19pbl9y ZXNldCAhPSAwXG4iLAorCQkgICAgX19mdW5jX18pOworCQlEUFJJTlRGKHNjLCBBVEhfREVCVUdf WE1JVCwKKwkJICAgICIlczogcXVldWVkOiBUWERQWyV1XSA9ICVwICglcCkgZGVwdGggJWRcbiIs CisJCSAgICBfX2Z1bmNfXywgdHhxLT5heHFfcW51bSwKKwkJICAgIChjYWRkcl90KWJmLT5iZl9k YWRkciwgYmYtPmJmX2Rlc2MsCisJCSAgICB0eHEtPmF4cV9kZXB0aCk7CisJCUFUSF9UWFFfSU5T RVJUX1RBSUwodHhxLCBiZiwgYmZfbGlzdCk7CisJCWlmIChiZi0+YmZfc3RhdGUuYmZzX2FnZ3Ip CisJCQl0eHEtPmF4cV9hZ2dyX2RlcHRoKys7CisJCS8qCisJCSAqIFRoZXJlJ3Mgbm8gbmVlZCB0 byB1cGRhdGUgYXhxX2xpbms7IHRoZSBoYXJkd2FyZQorCQkgKiBpcyBpbiByZXNldCBhbmQgb25j ZSB0aGUgcmVzZXQgaXMgY29tcGxldGUsIGFueQorCQkgKiBub24tZW1wdHkgcXVldWVzIHdpbGwg c2ltcGx5IGhhdmUgRE1BIHJlc3RhcnRlZC4KKwkJICovCisJCXJldHVybjsKKwkJfQorCUFUSF9Q Q1VfVU5MT0NLKHNjKTsKKyNlbmRpZgorCiAJLyogRm9yIG5vdywgc28gbm90IHRvIGdlbmVyYXRl IHdoaXRlc3BhY2UgZGlmZnMgKi8KIAlpZiAoMSkgewogI2lmZGVmIElFRUU4MDIxMV9TVVBQT1JU X1RETUEKQEAgLTE2ODgsNiArMTcxNiwxNyBAQCBhdGhfcmF3X3htaXQoc3RydWN0IGllZWU4MDIx MV9ub2RlICpuaSwgc3RydWN0IG1idWYgKm0sCiAJc3RydWN0IGF0aF9idWYgKmJmOwogCWludCBl cnJvcjsKIAorCUFUSF9QQ1VfTE9DSyhzYyk7CisJaWYgKHNjLT5zY19pbnJlc2V0X2NudCA+IDAp IHsKKwkJZGV2aWNlX3ByaW50ZihzYy0+c2NfZGV2LCAiJXM6IHNjX2lucmVzZXRfY250ID4gMDsg YmFpbGluZ1xuIiwKKwkJICAgIF9fZnVuY19fKTsKKwkJZXJyb3IgPSBFSU87CisJCUFUSF9QQ1Vf VU5MT0NLKHNjKTsKKwkJZ290byBiYWQwOworCX0KKwlzYy0+c2NfdHhzdGFydF9jbnQrKzsKKwlB VEhfUENVX1VOTE9DSyhzYyk7CisKIAlpZiAoKGlmcC0+aWZfZHJ2X2ZsYWdzICYgSUZGX0RSVl9S VU5OSU5HKSA9PSAwIHx8IHNjLT5zY19pbnZhbGlkKSB7CiAJCURQUklOVEYoc2MsIEFUSF9ERUJV R19YTUlULCAiJXM6IGRpc2NhcmQgZnJhbWUsICVzIiwgX19mdW5jX18sCiAJCSAgICAoaWZwLT5p Zl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpID09IDAgPwpAQCAtMTczMCwxNSArMTc2OSwy NCBAQCBhdGhfcmF3X3htaXQoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwgc3RydWN0IG1idWYg Km0sCiAJaWZwLT5pZl9vcGFja2V0cysrOwogCXNjLT5zY19zdGF0cy5hc3RfdHhfcmF3Kys7CiAK KwlBVEhfUENVX0xPQ0soc2MpOworCXNjLT5zY190eHN0YXJ0X2NudC0tOworCUFUSF9QQ1VfVU5M T0NLKHNjKTsKKwogCXJldHVybiAwOwogYmFkMjoKIAlBVEhfVFhCVUZfTE9DSyhzYyk7CiAJVEFJ TFFfSU5TRVJUX0hFQUQoJnNjLT5zY190eGJ1ZiwgYmYsIGJmX2xpc3QpOwogCUFUSF9UWEJVRl9V TkxPQ0soc2MpOwogYmFkOgorCUFUSF9QQ1VfTE9DSyhzYyk7CisJc2MtPnNjX3R4c3RhcnRfY250 LS07CisJQVRIX1BDVV9VTkxPQ0soc2MpOworYmFkMDoKIAlpZnAtPmlmX29lcnJvcnMrKzsKIAlz Yy0+c2Nfc3RhdHMuYXN0X3R4X3Jhd19mYWlsKys7CiAJaWVlZTgwMjExX2ZyZWVfbm9kZShuaSk7 CisKIAlyZXR1cm4gZXJyb3I7CiB9CiAKZGlmZiAtLWdpdCBhL3N5cy9kZXYvYXRoL2lmX2F0aHZh ci5oIGIvc3lzL2Rldi9hdGgvaWZfYXRodmFyLmgKaW5kZXggMjE4MjlhNjIuLjMzMWJlYTQgMTAw NjQ0Ci0tLSBhL3N5cy9kZXYvYXRoL2lmX2F0aHZhci5oCisrKyBiL3N5cy9kZXYvYXRoL2lmX2F0 aHZhci5oCkBAIC00MjQsNiArNDI0LDcgQEAgc3RydWN0IGF0aF9zb2Z0YyB7CiAJdV9pbnQJCQlz Y190eGFudGVubmE7CS8qIHR4IGFudGVubmEgKGZpeGVkIG9yIGF1dG8pICovCiAKIAlIQUxfSU5U CQkJc2NfaW1hc2s7CS8qIGludGVycnVwdCBtYXNrIGNvcHkgKi8KKwogCS8qCiAJICogVGhlc2Ug YXJlIG1vZGlmaWVkIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhcyB3ZWxsIGFzCiAJICogdGhl IHRhc2sgcXVldWVzIGFuZCBvdGhlciBjb250ZXh0cy4gVGh1cyB0aGVzZSBtdXN0IGJlCkBAIC00 MzQsNiArNDM1LDEyIEBAIHN0cnVjdCBhdGhfc29mdGMgewogCSAqLwogCXVpbnQzMl90CQlzY190 eHFfYWN0aXZlOwkvKiBiaXRtYXAgb2YgYWN0aXZlIFRYUXMgKi8KIAl1aW50MzJfdAkJc2Nfa2lj a3BjdTsJLyogd2hldGhlciB0byBraWNrIHRoZSBQQ1UgKi8KKwl1aW50MzJfdAkJc2Nfcnhwcm9j X2NudDsJLyogSW4gUlggcHJvY2Vzc2luZyAqLworCXVpbnQzMl90CQlzY190eHByb2NfY250Owkv KiBJbiBUWCBwcm9jZXNzaW5nICovCisJdWludDMyX3QJCXNjX3R4c3RhcnRfY250OwkvKiBJbiBU WCBvdXRwdXQgKHJhdy9zdGFydCkgKi8KKwl1aW50MzJfdAkJc2NfaW5yZXNldF9jbnQ7CS8qIElu IGFjdGl2ZSByZXNldC9jaGFuY2hhbmdlICovCisJdWludDMyX3QJCXNjX3R4cnhfY250OwkvKiBy ZWZjb3VudCBvbiBzdG9wL3N0YXJ0J2luZyBUWCAqLworCXVpbnQzMl90CQlzY19pbnRyX2NudDsJ LyogcmVmY291bnQgb24gaW50ZXJydXB0IGhhbmRsaW5nICovCiAKIAl1X2ludAkJCXNjX2tleW1h eDsJLyogc2l6ZSBvZiBrZXkgY2FjaGUgKi8KIAl1X2ludDhfdAkJc2Nfa2V5bWFwW0FUSF9LRVlC WVRFU107Lyoga2V5IHVzZSBiaXQgbWFwICovCkBAIC01NTMsNiArNTYwLDcgQEAgc3RydWN0IGF0 aF9zb2Z0YyB7CiAjZGVmaW5lCUFUSF9MT0NLKF9zYykJCW10eF9sb2NrKCYoX3NjKS0+c2NfbXR4 KQogI2RlZmluZQlBVEhfVU5MT0NLKF9zYykJCW10eF91bmxvY2soJihfc2MpLT5zY19tdHgpCiAj ZGVmaW5lCUFUSF9MT0NLX0FTU0VSVChfc2MpCW10eF9hc3NlcnQoJihfc2MpLT5zY19tdHgsIE1B X09XTkVEKQorI2RlZmluZQlBVEhfVU5MT0NLX0FTU0VSVChfc2MpCW10eF9hc3NlcnQoJihfc2Mp LT5zY19tdHgsIE1BX05PVE9XTkVEKQogCiAvKgogICogVGhlIFBDVSBsb2NrIGlzIG5vbi1yZWN1 cnNpdmUgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgc3BpbmxvY2suCkBAIC01ODQsNiArNTky LDggQEAgc3RydWN0IGF0aF9zb2Z0YyB7CiAjZGVmaW5lCUFUSF9QQ1VfVU5MT0NLKF9zYykJCW10 eF91bmxvY2soJihfc2MpLT5zY19wY3VfbXR4KQogI2RlZmluZQlBVEhfUENVX0xPQ0tfQVNTRVJU KF9zYykJbXR4X2Fzc2VydCgmKF9zYyktPnNjX3BjdV9tdHgsCVwKIAkJTUFfT1dORUQpCisjZGVm aW5lCUFUSF9QQ1VfVU5MT0NLX0FTU0VSVChfc2MpCW10eF9hc3NlcnQoJihfc2MpLT5zY19wY3Vf bXR4LAlcCisJCU1BX05PVE9XTkVEKQogCiAjZGVmaW5lCUFUSF9UWFFfU0VUVVAoc2MsIGkpCSgo c2MpLT5zY190eHFzZXR1cCAmICgxPDxpKSkKIAo= --20cf3079b74e69c3da04b1ddf704--