Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932669AbXBEX4O (ORCPT ); Mon, 5 Feb 2007 18:56:14 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932968AbXBEX4O (ORCPT ); Mon, 5 Feb 2007 18:56:14 -0500 Received: from web26909.mail.ukl.yahoo.com ([217.146.176.98]:22470 "HELO web26909.mail.ukl.yahoo.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S932669AbXBEX4M (ORCPT ); Mon, 5 Feb 2007 18:56:12 -0500 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.fr; h=X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Message-ID; b=dMrWsa4qyhIAyFBt0TmkQfDHHywhI0wa6JUR2URY3TqCh7nR6Nve/QRvCT2VHrbt+eCs/4SuxO/KTR1EwAfjFKQpqC6VG1jAgHtEM8pusheZz0EBbcri+caBWwFItz2Eh/EtWCtjUyk/wux19EeO2PcfbProYfEBRZR9E+bW3+E=; X-YMail-OSG: cixk1RsVM1ko5LqMhPIMOyy22uXPC2ycNUD9cl04.iGl1DNLVhiGC3.n5Sv5QONKTnrV_xmJvcPrvWAw3i0uKZ73CwO5NASgmB3zfbR0dJdln_2gBttKVDG7t4HdNAuP5ubJqdlFbJaBg7QpxCARkQ0qm7g5GxLXmhTVa77h6KhfoqLPbB3pBMkH_g-- X-Mailer: YahooMailRC/368.3 YahooMailWebService/0.6.132.7 Date: Mon, 5 Feb 2007 23:56:10 +0000 (GMT) From: Etienne Lorrain Subject: [PATCH] Compressed ia32 ELF file generation for loading by Gujin 1/3 To: linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-591523851-1170719770=:27613" Message-ID: <522909.27613.qm@web26909.mail.ukl.yahoo.com> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 43464 Lines: 708 --0-591523851-1170719770=:27613 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hello,=0A=0A The Gujin bootloader (now at version 1.8) can natively load= =0Acompressed ELF files, and these three patches enable to generate=0Athis = "linux-2.6.20.kgz" file format.=0A Just as a remainder, to generate a bzIma= ge file, those steps=0Aare needed:=0A1- Compile the core kernel and link it= into the ELF file vmlinux=0A at the top of the directory. Also compile and= link modules.=0A2- Create a binary image of the kernel memory.=0A3- Compre= ss this binary image with GZIP.=0A4- Assemble and link in an independant fi= le the bootsector, the=0A setup and the real-mode code (in assembler) to st= art and gather=0A BIOS information.=0A5- Compile the protected mode code to= decompress the kernel,=0A and re-adjust relocation defined at step 1 after= decompression.=0A6- Get the binary image for real-mode and protected-mode = parts=0A7- Mix the 3 parts in the same file named bzImage.=0A=0A The previo= us version of Gujin were loading Linux kernel as after=0Astep 3, the new on= e is basically able to load after step 1.=0A The ELF image is still better = stripped of its debugging information=0A(to reduce time to load from disk) = and compressed by GZIP to be able=0Ato check its CRC32.=0A The BIOS informa= tion gathering did not evolve that much since the=0Afirst version of this p= atch - still written in C and included in=0Athe initial link at load addres= s 0 (no conflict with linux code at=0Aaddress 0xC0000000).=0AThe standard c= omment field of the GZIP is still used to describe this=0Akernel (processor= , license...) but no more needs address references=0Abecause all needed inf= ormation (address to load, address and size of=0Athe real-mode code to gath= er information from the BIOS) is taken from=0Athe ELF program header table = (if real-mode code is not found it is=0Aalso searched in the section table)= .=0A=0A Gujin real-mode C BIOS gathering code is automatically removed by= =0Athe "objdump" at step 2 when generating a bzImage, so there is no=0Aneed= to disable anything to continue using Lilo/Grub/Syslinux...=0A=0A The firs= t two patch contains the interesting parts, that is files=0Arealmode.[ch] t= o gather the BIOS informations, a small modification=0Ato the command line = (treating the first words as the pathname and=0Akernel name if present) whi= ch help Gujin autodetect the root=0Apartition, the linker modifications (th= ere is a single link with=0AGujin kernel file "/boot/linux-2.6.20.kgz") and= the Makefile=0Amodifications.=0A The third patch just adds two files as in= dependant commands,=0Agzcopy.c to view/edit/modify Gzip files (BSD like lic= ensed) and =0Agzparam.c to display a single line used as the GZIP comment,= =0Ato forbid to load ia64 kernels on ia32 and this kind of=0Arestrictions.= =0A=0A For me, these patchs are ready to be included in the kernel,=0Abut I= am ready for (or even waiting) any interesting discussion=0Aabout them.=0A= I most like the simplicity of the generation system / load=0Aprocess after= the patch, just execute:=0A make /boot/linux-2.6.20.kgz=0A(recompile the = modules if you have some) and reboot...=0A More info about Gujin at:=0Ahttp= ://gujin.org=0A=0A Have fun,=0A Etienne.=0A=0A=0A=0A=0A=0A=09=0A=0A=09=0A= =09=09=0A__________________________________________________________________= _________ =0AD=E9couvrez une nouvelle fa=E7on d'obtenir des r=E9ponses =E0 = toutes vos questions ! =0AProfitez des connaissances, des opinions et des e= xp=E9riences des internautes sur Yahoo! Questions/R=E9ponses =0Ahttp://fr.a= nswers.yahoo.com --0-591523851-1170719770=:27613 Content-Type: application/octet-stream; name="=?utf-8?q?gujin-patch-2.6.20-1?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?q?gujin-patch-2.6.20-1?=" ZGlmZiAtdXByTiAtWCBsaW51eC0yLjYuMjAvRG9jdW1lbnRhdGlvbi9kb250 ZGlmZiBsaW51eC0yLjYuMjAvYXJjaC9pMzg2L0tjb25maWcgbGludXgtMi42 LjIwLWd1amluL2FyY2gvaTM4Ni9LY29uZmlnCi0tLSBsaW51eC0yLjYuMjAv YXJjaC9pMzg2L0tjb25maWcJMjAwNy0wMi0wNCAxODo0NDo1NC4wMDAwMDAw MDAgKzAwMDAKKysrIGxpbnV4LTIuNi4yMC1ndWppbi9hcmNoL2kzODYvS2Nv bmZpZwkyMDA3LTAyLTA1IDIxOjI3OjAxLjAwMDAwMDAwMCArMDAwMApAQCAt ODE2LDYgKzgxNiwxMiBAQCBjb25maWcgUEhZU0lDQUxfU1RBUlQKIAkgIHZt bGludXggZm9yIGR1bXAgY2FwdHVyZS4gVGhpcyBvcHRpb24gc2hvdWxkIGdv IGF3YXkgZG93biB0aGUKIAkgIGxpbmUuCiAKKwkgIFlvdSBjYW4gYWxzbyBj aGFuZ2UgdGhpcyBwaHlzaWNhbCBhZGRyZXNzIHdoZW4gdXNpbmcgdGhlIEd1 amluCisJICBib290bG9hZGVyIChzZWUgaHR0cDovL2d1amluLm9yZyksIGZv ciBpbnN0YW5jZSB0byBtYXhpbWl6ZSB0aGUKKwkgIGZyZWUgSVNBIERNQS1h YmxlIG1lbW9yeSBvciBydW4gdGhlIGtlcm5lbCBhdCBhIGh1Z2UgVExCIGJv dW5kYXJ5LAorCSAgc2V0IGl0IHRvIDB4MTAwMDAwMCAobG9hZCBhbmQgcnVu IHRoZSBrZXJuZWwgYXQgMTYgTWJ5dGVzKS4KKwkgIEd1amluICh2MS40IGFu ZCBsYXRlcikgZG9lcyBub3QgaW1wb3NlIGFueSBsaW1pdCBvbiB0aGlzIGFk ZHJlc3MuCisKIAkgIERvbid0IGNoYW5nZSB0aGlzIHVubGVzcyB5b3Uga25v dyB3aGF0IHlvdSBhcmUgZG9pbmcuCiAKIGNvbmZpZyBSRUxPQ0FUQUJMRQpk aWZmIC11cHJOIC1YIGxpbnV4LTIuNi4yMC9Eb2N1bWVudGF0aW9uL2RvbnRk aWZmIGxpbnV4LTIuNi4yMC9hcmNoL2kzODYva2VybmVsL01ha2VmaWxlIGxp bnV4LTIuNi4yMC1ndWppbi9hcmNoL2kzODYva2VybmVsL01ha2VmaWxlCi0t LSBsaW51eC0yLjYuMjAvYXJjaC9pMzg2L2tlcm5lbC9NYWtlZmlsZQkyMDA3 LTAyLTA0IDE4OjQ0OjU0LjAwMDAwMDAwMCArMDAwMAorKysgbGludXgtMi42 LjIwLWd1amluL2FyY2gvaTM4Ni9rZXJuZWwvTWFrZWZpbGUJMjAwNy0wMi0w NSAyMToyNzowMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTcsNyArNyw4IEBAIGV4 dHJhLXkgOj0gaGVhZC5vIGluaXRfdGFzay5vIHZtbGludXgubGQKIG9iai15 CTo9IHByb2Nlc3MubyBzaWduYWwubyBlbnRyeS5vIHRyYXBzLm8gaXJxLm8g XAogCQlwdHJhY2UubyB0aW1lLm8gaW9wb3J0Lm8gbGR0Lm8gc2V0dXAubyBp ODI1OS5vIHN5c19pMzg2Lm8gXAogCQlwY2ktZG1hLm8gaTM4Nl9rc3ltcy5v IGkzODcubyBib290ZmxhZy5vIGU4MjAub1wKLQkJcXVpcmtzLm8gaTgyMzcu byB0b3BvbG9neS5vIGFsdGVybmF0aXZlLm8gaTgyNTMubyB0c2MubworCQlx dWlya3MubyBpODIzNy5vIHRvcG9sb2d5Lm8gYWx0ZXJuYXRpdmUubyBpODI1 My5vIHRzYy5vIFwKKwkJcmVhbG1vZGUubwogCiBvYmotJChDT05GSUdfU1RB Q0tUUkFDRSkJKz0gc3RhY2t0cmFjZS5vCiBvYmoteQkJCQkrPSBjcHUvCmRp ZmYgLXVwck4gLVggbGludXgtMi42LjIwL0RvY3VtZW50YXRpb24vZG9udGRp ZmYgbGludXgtMi42LjIwL2FyY2gvaTM4Ni9rZXJuZWwvc2V0dXAuYyBsaW51 eC0yLjYuMjAtZ3VqaW4vYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jCi0tLSBs aW51eC0yLjYuMjAvYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jCTIwMDctMDIt MDQgMTg6NDQ6NTQuMDAwMDAwMDAwICswMDAwCisrKyBsaW51eC0yLjYuMjAt Z3VqaW4vYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jCTIwMDctMDItMDUgMjE6 Mjc6MDEuMDAwMDAwMDAwICswMDAwCkBAIC01NzksNiArNTc5LDE5IEBAIHZv aWQgX19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcCkKIAlzdHJs Y3B5KGNvbW1hbmRfbGluZSwgc2F2ZWRfY29tbWFuZF9saW5lLCBDT01NQU5E X0xJTkVfU0laRSk7CiAJKmNtZGxpbmVfcCA9IGNvbW1hbmRfbGluZTsKIAor CS8qCisJICogSWYgdGhlIGNvbW1hbmQgbGluZSBiZWdpbiB3aXRoICcvJywg aXQgaXMgdGhlIGZpbGVuYW1lIG9mIHRoZQorCSAqIGtlcm5lbCBmaWxlIC0g bGlrZSBhIHNoZWxsIGNvbW1hbmQgbGluZS4gVGhhdCBjYW4gYmUgdXNlZCB0 bworCSAqIGRlZHVjZSB3aGVyZSByb290IHdhcyBsb2NhdGVkIHdoZW4gdGhl IGtlcm5lbCB3YXMgY29tcGlsZWQsCisJICogaW5zaWRlIGEgZGlyZWN0b3J5 IG9mIHJvb3QgbmFtZWQgL2Jvb3QsIGluc2lkZSBhIHNtYWxsIHBhcnRpdGlv bgorCSAqIG1vdW50ZWQgb24gYSBkaXJlY3Rvcnkgb2Ygcm9vdCBuYW1lZCAv Ym9vdCBvciBpbiB0aGUgcm9vdAorCSAqIGRpcmVjdG9yeSBpdHNlbGYuCisJ ICovCisJaWYgKCoqY21kbGluZV9wID09ICcvJykKKwkJd2hpbGUgKCoqY21k bGluZV9wICE9ICcgJyAmJiAqKmNtZGxpbmVfcCAhPSAnXHQnCisJCQkmJiAq KmNtZGxpbmVfcCAhPSAnXG4nICYmICoqY21kbGluZV9wICE9ICdcMCcpCisJ CQkrKypjbWRsaW5lX3A7CisgCiAJbWF4X2xvd19wZm4gPSBzZXR1cF9tZW1v cnkoKTsKIAogCS8qCmRpZmYgLXVwck4gLVggbGludXgtMi42LjIwL0RvY3Vt ZW50YXRpb24vZG9udGRpZmYgbGludXgtMi42LjIwL2FyY2gvaTM4Ni9rZXJu ZWwvdm1saW51eC5sZHMuUyBsaW51eC0yLjYuMjAtZ3VqaW4vYXJjaC9pMzg2 L2tlcm5lbC92bWxpbnV4Lmxkcy5TCi0tLSBsaW51eC0yLjYuMjAvYXJjaC9p Mzg2L2tlcm5lbC92bWxpbnV4Lmxkcy5TCTIwMDctMDItMDQgMTg6NDQ6NTQu MDAwMDAwMDAwICswMDAwCisrKyBsaW51eC0yLjYuMjAtZ3VqaW4vYXJjaC9p Mzg2L2tlcm5lbC92bWxpbnV4Lmxkcy5TCTIwMDctMDItMDUgMjE6Mjc6MDEu MDAwMDAwMDAwICswMDAwCkBAIC0yNSwxNiArMjUsNDggQEAKIE9VVFBVVF9G T1JNQVQoImVsZjMyLWkzODYiLCAiZWxmMzItaTM4NiIsICJlbGYzMi1pMzg2 IikKIE9VVFBVVF9BUkNIKGkzODYpCiBFTlRSWShwaHlzX3N0YXJ0dXBfMzIp CitFWFRFUk4oX19FUlJPUikgICAvKiBGb3JjZSBhIGxpbmsgZXJyb3IgaWYg ZnVuY3Rpb24gX19FUlJPUigpIGlzIGV2ZXIgY2FsbGVkICovCitOT0NST1NT UkVGUygucmVhbG1vZGUgLnRleHQpCitOT0NST1NTUkVGUygucmVhbG1vZGUg LmRhdGEpCitOT0NST1NTUkVGUygucmVhbG1vZGUgLnJvZGF0YSkKIGppZmZp ZXMgPSBqaWZmaWVzXzY0OwogX3Byb3h5X3BkYSA9IDA7CiAKIFBIRFJTIHsK LQl0ZXh0IFBUX0xPQUQgRkxBR1MoNSk7CS8qIFJfRSAqLwotCWRhdGEgUFRf TE9BRCBGTEFHUyg3KTsJLyogUldFICovCi0Jbm90ZSBQVF9OT1RFIEZMQUdT KDQpOwkvKiBSX18gKi8KKwl0ZXh0ICAgUFRfTE9BRCBGTEFHUyg1KTsJLyog Ul9FICovCisJZGF0YSAgIFBUX0xPQUQgRkxBR1MoNyk7CS8qIFJXRSAqLwor CW5vdGUgICBQVF9OT1RFIEZMQUdTKDQpOwkvKiBSX18gKi8KKwl0ZXh0MTYg UFRfTE9BRCBGTEFHUyg1KTsJLyogUl9FICovCiB9CiBTRUNUSU9OUwogewor ICAvKiByZWFsbW9kZSBCSU9TIChpbml0aWFsaXNhdGlvbiBvbmx5KSBib290 IGNvZGUvZGF0YSBhcmVhLgorICAgKiBIZXJlLCBzZWdtZW50IC5jb2RlMTYg aXMgcmVsb2NhdGFibGUgYnV0IC5kYXRhMTYgaXMgbm90LgorICAgKiBUbyBz ZWUgdGhlIGFzc2VtYmxlciBvZiBjb21waWxlZCBmaWxlIHJlYWxtb2RlLmM6 CisgICAqICAgb2JqZHVtcCAtRCAtbSBpODA4NiBhcmNoL2kzODYva2VybmVs L3JlYWxtb2RlLm8KKyAgICogICBvYmpkdW1wIC1kIC0tc2VjdGlvbj0ucmVh bG1vZGUgLW0gaTgwODYgdm1saW51eAorICAgKi8KKyAgLyogRklYTUU6IHJl bW92ZSBzcGFjZS1zcGFjZS10YWIgYXQgYmVnaW5uaW5nIG9mIGxpbmVzIGlu IHRoaXMgZmlsZSwgdXNlIHZpISAqLworICAucmVhbG1vZGUgMCA6IEFUIChB RERSKC5ic3MpICsgU0laRU9GKC5ic3MpIC0gTE9BRF9PRkZTRVQpIHsKKwkq KC5pbml0LnRleHQxNikKKwkuID0gQUxJR04oMTYpOworCV9zZGF0YTE2ID0g LjsKKwkqKC5yb2RhdGExNiogLmRhdGExNiAuYnNzMTYpCisJLiA9IEFMSUdO KDE2KTsKKwlfZWRhdGExNiA9IC47IC8qIG1heGltdW0gMHgxMDAwIGkuZS4g NCBLYiBsaW1pdCAqLworCSooLnRleHQxNikKKwkuID0gQUxJR04oMTYpOwor CV9lbmQxNiA9IC47CisJLyogS2VlcCBhIDE2IGJ5dGVzIHNpZ25hdHVyZSBi bG9jayBhdCBlbmQgb2YgZmlsZTogKi8KKwlMT05HKDApCisJTE9ORyhTSVpF T0YgKC5yZWFsbW9kZSkpCisJTE9ORyhBRERSICgucmVhbG1vZGUpKQorCUJZ VEUoMHg0MikgLyogJ0InICovCisJQllURSgweDQ5KSAvKiAnSScgKi8KKwlC WVRFKDB4NEYpIC8qICdPJyAqLworCUJZVEUoMHg1MykgLyogJ1MnICovCisg IH0gOnRleHQxNiA9IDB4OTA5MAorCiAgIC4gPSBMT0FEX09GRlNFVCArIExP QURfUEhZU0lDQUxfQUREUjsKICAgcGh5c19zdGFydHVwXzMyID0gc3RhcnR1 cF8zMiAtIExPQURfT0ZGU0VUOwogICAvKiByZWFkLW9ubHkgKi8KZGlmZiAt dXByTiAtWCBsaW51eC0yLjYuMjAvRG9jdW1lbnRhdGlvbi9kb250ZGlmZiBs aW51eC0yLjYuMjAvYXJjaC9pMzg2L01ha2VmaWxlIGxpbnV4LTIuNi4yMC1n dWppbi9hcmNoL2kzODYvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi4yMC9hcmNo L2kzODYvTWFrZWZpbGUJMjAwNy0wMi0wNCAxODo0NDo1NC4wMDAwMDAwMDAg KzAwMDAKKysrIGxpbnV4LTIuNi4yMC1ndWppbi9hcmNoL2kzODYvTWFrZWZp bGUJMjAwNy0wMi0wNSAyMToyNzowMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTI1 LDcgKzI1LDcgQEAgQ0MgICAgICAgICAgICAgIDo9ICQoQ0MpIC1tMzIKIGVu ZGlmCiAKIExERkxBR1MJCTo9IC1tIGVsZl9pMzg2Ci1PQkpDT1BZRkxBR1MJ Oj0gLU8gYmluYXJ5IC1SIC5ub3RlIC1SIC5jb21tZW50IC1TCitPQkpDT1BZ RkxBR1MJOj0gLU8gYmluYXJ5IC1SIC5ub3RlIC1SIC5jb21tZW50IC1SIC5y ZWFsbW9kZSAtUwogaWZkZWYgQ09ORklHX1JFTE9DQVRBQkxFCiBMREZMQUdT X3ZtbGludXggOj0gLS1lbWl0LXJlbG9jcwogZW5kaWYKZGlmZiAtdXByTiAt WCBsaW51eC0yLjYuMjAvRG9jdW1lbnRhdGlvbi9kb250ZGlmZiBsaW51eC0y LjYuMjAvaW5jbHVkZS9hc20taTM4Ni9yZWFsbW9kZS5oIGxpbnV4LTIuNi4y MC1ndWppbi9pbmNsdWRlL2FzbS1pMzg2L3JlYWxtb2RlLmgKLS0tIGxpbnV4 LTIuNi4yMC9pbmNsdWRlL2FzbS1pMzg2L3JlYWxtb2RlLmgJMTk3MC0wMS0w MSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi4yMC1n dWppbi9pbmNsdWRlL2FzbS1pMzg2L3JlYWxtb2RlLmgJMjAwNy0wMi0wNSAy MToyNzowMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTAsMCArMSw1MzEgQEAKKy8q CisgKiAgVGhpcyBmaWxlICJyZWFsbW9kZS5oIiBpcyBsaWNlbnNlZCB3aXRo IHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIExpbnV4CisgKiBrZXJuZWw7IGFu eXdheSB0aGUgbWFwcGluZyBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgcHJvZHVj ZWQgaXMgb3duZWQKKyAqIGJ5IExpbnV4IGtlcm5lbCBjb3B5cmlnaHQgb3du ZXIocykgLSBmb3IgYSBsb25nIHRpbWUuCisgKiAgTW9yZSBpbmZvcm1hdGlv biBpbiB0aGUgInJlYWxtb2RlLmMiIGZpbGUuCisgKgorICogIEZpcnN0IHZl cnNpb24gaGFzIGJlZW4gd3JpdHRlbiBieSBFdGllbm5lIExvcnJhaW4gaW4g RGVjZW1iZXIgMjAwNC4KKyAqLworCisvKiB0cnkgcmVhbGx5IGhhcmQgdG8g ZmlndXJlIG91dCB0aGUgcm9vdCBmaWxlc3lzdGVtIHdoZW4gbm90IGdpdmVu CisgICBvbiBjb21tYW5kIGxpbmUsIHVzZXMgR3VqaW4gZGF0YSBzdHJ1Y3R1 cmVzIChHUEwga2VybmVsKSAqLworI2RlZmluZSBST09UX0VYVEVOU0lWRV9T RUFSQ0gKKworLyogMTYgYml0cyBzZWdtZW50IGluIE1TQiwgMTYgYml0cyBv ZmZzZXQgaW4gTFNCOiAqLwordHlwZWRlZiB1bnNpZ25lZCBmYXJwdHI7CisK KyNkZWZpbmUgb2Zmc2V0b2YodHlwZSwgZmllbGQpCSgodW5zaWduZWQpKCYo KCh0eXBlICopMCktPmZpZWxkKSkpCisKKy8qCisgKiBUaGlzIHNoYWxsIGFs d2F5cyBiZSBvcHRpbWlzZWQgYXdheSBiZWNhdXNlIHRoZSB0ZXN0IGhhcyB0 byBiZSBmYWxzZSwKKyAqIGl0IHNoYWxsIHByb2R1Y2UgYW4gZXJyb3IgaW4g dGhlIGJ1aWxkIHByb2Nlc3MuCisgKiBDb3JyZXNwb25kaW5nIGxpbmUgdG8g dGhlIGxpbmtlciBmaWxlICd2bWxpbnV4Lmxkcyc6IEVYVEVSTihfX0VSUk9S KQorICovCit2b2lkIF9fRVJST1Iodm9pZCk7CisKKy8qKgorICoqIE1hcHBp bmcgb2YgdGhlIHRvdGFsIHN0cnVjdHVyZSBleGNoYW5nZWQgaW4gYmV0d2Vl biB0aGUgQklPUworICoqIGJvb3QgY29kZSAoaW4gcmVhbCBtb2RlKSBhbmQg dGhlIExpbnV4IGtlcm5lbCAoaW4gcHJvdGVjdGVkIG1vZGUpOgorICoqCisg KiogU29tZSBvZiB0aG9zZSBzdHJ1Y3R1cmVzIGhhdmUgdG8gYmUgcHV0IGJh Y2sgaW4gdGhlaXIgY29ycmVzcG9uZGluZworICoqIGZpbGUgLSB0aGV5IGFy ZSBoZXJlIHVudGlsIHRoZSBiaWcgY2xlYW5pbmcgcHJvY2VzcyBiZWdpbi4u LgorICoqLworc3RydWN0IHNjcmVlbl9pbmZvIHsJLyogc3RvbGVuXldja2Vj a291dCBmcm9tIGxpbnV4L2luY2x1ZGUvbGludXgvdHR5LmggKi8KKwl1bnNp Z25lZCBjaGFyIG9yaWdfeDsKKwl1bnNpZ25lZCBjaGFyIG9yaWdfeTsKKwl1 bnNpZ25lZCBzaG9ydCBFWFRfTUVNX0s7CS8qIGdlbmVyYWwgaW5mbyAqLwor CXVuc2lnbmVkIGNoYXIgdW5kZWZpbmVkOworCXVuc2lnbmVkIGNoYXIgb3Jp Z192aWRlb19wYWdlOworCXVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19tb2Rl OworCXVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19jb2xzOworCXVuc2lnbmVk IHNob3J0IHVudXNlZDI7CisJdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19l Z2FfYng7CisJdW5zaWduZWQgc2hvcnQgdW51c2VkMzsKKwl1bnNpZ25lZCBj aGFyIG9yaWdfdmlkZW9fbGluZXM7CisJdW5zaWduZWQgY2hhciBvcmlnX3Zp ZGVvX2lzVkdBOworCXVuc2lnbmVkIHNob3J0IG9yaWdfZm9udF9oZWlnaHQ7 CisJLyogVkVTQSBncmFwaGljIG1vZGUgLS0gbGluZWFyIGZyYW1lIGJ1ZmZl ciAqLworCXVuc2lnbmVkIHNob3J0IGxmYl93aWR0aDsKKwl1bnNpZ25lZCBz aG9ydCBsZmJfaGVpZ2h0OworCXVuc2lnbmVkIHNob3J0IGxmYl9kZXB0aDsK Kwl1bnNpZ25lZCBsZmJfYmFzZTsKKwl1bnNpZ25lZCBsZmJfc2l6ZTsKKwl1 bnNpZ25lZCBzaG9ydCBDTF9NQUdJQzsJLyogMHhBMzNGLCBnZW5lcmFsIGlu Zm8gKi8KKwl1bnNpZ25lZCBzaG9ydCBDTF9PRkZTRVQ7CS8qIGdlbmVyYWwg aW5mbyAqLworCXVuc2lnbmVkIHNob3J0IGxmYl9saW5lbGVuZ3RoOworCXN0 cnVjdCB2ZXNhX2NvbG9yX2xheW91dF9zdHIgeworCQlzdHJ1Y3QgeworCQkJ dW5zaWduZWQgY2hhciBNYXNrU2l6ZTsKKwkJCXVuc2lnbmVkIGNoYXIgRmll bGRQb3NpdGlvbjsKKwkJfSAgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIFJl ZCwgR3JlZW4sIEJsdWUsIFJzdmQ7CisJfSBfX2F0dHJpYnV0ZV9fICgocGFj a2VkKSkgbGF5b3V0OworCXVuc2lnbmVkIHNob3J0IHZlc2FwbV9zZWc7CisJ dW5zaWduZWQgc2hvcnQgdmVzYXBtX29mZjsKKwl1bnNpZ25lZCBzaG9ydCBs ZmJfcGFnZXM7CisJc3RydWN0IHZlc2FfbW9kZV9hdHRyaWJ1dGVfc3RyIHsK KwkJLyogVkVTQTogKi8KKwkJdW5zaWduZWQgc2hvcnQgbW9kZV9zdXBwb3J0 ZWQJCTogMTsJLyogZS5nLiBlbm91Z2h0IFJBTSBmb3IgaXQgKi8KKwkJdW5z aWduZWQgc2hvcnQgb3B0aW9uYWxfaW5mb19hdmFpbGFibGUJOiAxOworCQl1 bnNpZ25lZCBzaG9ydCBCSU9TX291dHB1dF9zdXBwb3J0ZWQJOiAxOworCQl1 bnNpZ25lZCBzaG9ydCBjb2xvcl9tb2RlCQk6IDE7CS8qIGVsc2UgbW9ub2No cm9tZSAqLworCQl1bnNpZ25lZCBzaG9ydCBncmFwaGljX21vZGUJCTogMTsJ LyogZWxzZSB0ZXh0IG1vZGUgKi8KKwkJLyogVkJFIDIuMDogKi8KKwkJdW5z aWduZWQgc2hvcnQgbW9kZV9ub3RfVkdBX2NvbXBhdGlibGUJOiAxOworCQl1 bnNpZ25lZCBzaG9ydCBub19WR0FfY29tcGF0aWJsZV93aW5kb3cJOiAxOwor CQl1bnNpZ25lZCBzaG9ydCBsaW5lYXJfZnJhbWVidWZmZXJfc3VwcG9ydGVk CTogMTsKKwkJdW5zaWduZWQgc2hvcnQgcmVzZXJ2ZWQJCQk6IDg7CisJfSBf X2F0dHJpYnV0ZV9fICgocGFja2VkKSkgdmVzYV9hdHRyaWI7CisJc3RydWN0 IHZlc2FfY2FwYWJpbGl0aWVzX3N0ciB7CisJCXVuc2lnbmVkCURBQzhiaXRf cHJlc2VudAkJOiAxOworCQl1bnNpZ25lZAlub25WR0Fjb250cm9sbGVyCTog MTsKKwkJdW5zaWduZWQJREFDX25lZWRzX3Byb2dyYW1tZWRfd2hpbGVfYmxh bmtpbmcJOiAxOworCQl1bnNpZ25lZAlWQkVfQUZfZXh0ZW5zaW9uCTogMTsK KwkJdW5zaWduZWQJaGFyZHdhcmVfbW91c2VfY3Vyc29yCTogMTsKKwkJdW5z aWduZWQJaGFyZHdhcmVfY2xpcHBpbmcJOiAxOworCQl1bnNpZ25lZAl0cmFu c3BhcmVudF9iaXRibHQJOiAxOworCQl1bnNpZ25lZAlyZXNlcnZlZAkJOiAy NTsKKwl9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBjYXBhYmlsaXRpZXM7 CisJLyogMHgzYSAtLSAweDNmIHJlc2VydmVkIGZvciBmdXR1cmUgZXhwYW5z aW9uICovCisJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2XTsKK30gX19hdHRy aWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgYXBtX2Jpb3NfaW5mbyB7 CisJdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsKKwl1bnNpZ25lZCBzaG9ydCBj c2VnOworCXVuc2lnbmVkIG9mZnNldDsKKwl1bnNpZ25lZCBzaG9ydCBjc2Vn XzE2OworCXVuc2lnbmVkIHNob3J0IGRzZWc7CisJdW5zaWduZWQgc2hvcnQg ZmxhZ3M7CisJdW5zaWduZWQgc2hvcnQgY3NlZ19sZW47CisJdW5zaWduZWQg c2hvcnQgdW51c2VkOwkvKiBjc2VnXzE2X2xlbiAqLworCXVuc2lnbmVkIHNo b3J0IGRzZWdfbGVuOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisK Ky8qIFNlZSBwcm9iZV9jbW9zX2Zvcl9kcml2ZXMoKSBpbiBsaW51eC9kcml2 ZXJzL2lkZS9pZGUtZ2VvbWV0cnkuYyAqLworLyogcmFyZWx5IHVzZWQsIGFs c28gY2hlY2sgZm9yIENNT1MgYWRkcmVzcyAweDEyIChpbnQgMHg0MSwgMHg0 NikgKi8KK3VuaW9uIGRyaXZlX2luZm8geworCXN0cnVjdCBGRFBUX3N0ciB7 CisJCXVuc2lnbmVkIHNob3J0IHBoeV9jeWw7CisJCXVuc2lnbmVkIGNoYXIg cGh5X2hlYWQ7CisJCXVuc2lnbmVkIHNob3J0IHN0YXJ0X3JlZHVjZWRfd3Jp dGVfY3VycmVudF9jeWw7CS8qIFBDIFhUIG9ubHkgKi8KKwkJdW5zaWduZWQg c2hvcnQgc3RhcnRfd3JpdGVfcHJlY29tcF9jeWw7CisJCXVuc2lnbmVkIGNo YXIgbWF4X0VDQ19idXJzdF9sZW5ndGg7CQkvKiBQQyBYVCBvbmx5ICovCisJ CXVuaW9uIGRyaXZlX2N0bF9ieXRlX3UgeworCQkJc3RydWN0IHsKKwkJCQl1 bnNpZ25lZCBjaGFyIGRyaXZlX3N0ZXBfc3BlZWQ6MzsKKwkJCQl1bnNpZ25l ZCBjaGFyIHVudXNlZDozOworCQkJCXVuc2lnbmVkIGNoYXIgZGlzYWJsZV9l Y2NfcmV0cnk6MTsKKwkJCQl1bnNpZ25lZCBjaGFyIGRpc2FibGVfYWNjZXNz X3JldHJ5OjE7CisJCQl9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB4dDsK KwkJCXN0cnVjdCB7CisJCQkJdW5zaWduZWQgY2hhciB1bnVzZWQ6MTsKKwkJ CQl1bnNpZ25lZCBjaGFyIGRpc2FibGVfaXJxOjE7CS8qIDAgKi8KKwkJCQl1 bnNpZ25lZCBjaGFyIG5vX3Jlc2V0OjE7CS8qIDAgKi8KKwkJCQl1bnNpZ25l ZCBjaGFyIG1vcmVfdGhhbl84X2hlYWRzOjE7CisJCQkJdW5zaWduZWQgY2hh ciBhbHdheXNfMDoxOworCQkJCXVuc2lnbmVkIGNoYXIgbWFudWZfZGVmZWN0 X21hcF9vbl9tYXhjeWw6MTsJLyogQVQgKyAqLworCQkJCXVuc2lnbmVkIGNo YXIgZGlzYWJsZV9lY2NfcmV0cnk6MTsKKwkJCQl1bnNpZ25lZCBjaGFyIGRp c2FibGVfYWNjZXNzX3JldHJ5OjE7CisJCQl9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSBhdDsKKwkJCXVuc2lnbmVkIGNoYXIgYWxsOworCQl9IGRyaXZl X2N0bF9ieXRlOworCQl1bnNpZ25lZCBjaGFyIHN0YW5kYXJkX3RpbWVvdXQ7 CQkvKiBQQyBYVCBvbmx5ICovCisJCXVuc2lnbmVkIGNoYXIgZm9ybWF0aW5n X3RpbWVvdXQ7CS8qIFBDIFhUIG9ubHkgKi8KKwkJdW5zaWduZWQgY2hhciBj aGVja19kcml2ZV90aW1lb3V0OwkvKiBQQyBYVCBvbmx5ICovCisJCXVuc2ln bmVkIHNob3J0IGxhbmRpbmdfem9uZV9jeWxpbmRlcjsJLyogUEMgQVQrICov CisJCXVuc2lnbmVkIGNoYXIgcGh5X3NlY3Q7CQkJLyogUEMgQVQrICovCisJ CXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQ7CisJfSBfX2F0dHJpYnV0ZV9fICgo cGFja2VkKSkgZmRwdDsKKwkvKiBGb3IgdHJhbnNsYXRpbmcgQklPU2VzOiAq LworCXN0cnVjdCBFRFBUX3N0ciB7CisJCXVuc2lnbmVkIHNob3J0IGxvZ19j eWw7CQkJLyogbWF4IDEwMjQgKi8KKwkJdW5zaWduZWQgY2hhciBsb2dfaGVh ZDsJCQkvKiBtYXggMjU2ICovCisJCXVuc2lnbmVkIGNoYXIgc2lnbmF0dXJl XzB4QTA7CisJCXVuc2lnbmVkIGNoYXIgcGh5X3NlY3Q7CisJCXVuc2lnbmVk IHNob3J0IHN0YXJ0X3dyaXRlX3ByZWNvbXBfY3lsOwkvKiBvYnNvbGV0ZSAq LworCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkOworCQl1bmlvbiBkcml2ZV9j dGxfYnl0ZV91IGRyaXZlX2N0bF9ieXRlOworCQl1bnNpZ25lZCBzaG9ydCBw aHlfY3lsOwkJCS8qIG1heCA2NTUzNiAqLworCQl1bnNpZ25lZCBjaGFyIHBo eV9oZWFkOwkJCS8qIG1heCAxNiAqLworCQl1bnNpZ25lZCBzaG9ydCBsYW5k aW5nX3pvbmVfY3lsaW5kZXI7CS8qIG9ic29sZXRlICovCisJCXVuc2lnbmVk IGNoYXIgbG9nX3NlY3Q7CQkJLyogbWF4IDYzICovCisJCXVuc2lnbmVkIGNo YXIgY2hlY2tzdW07CisJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgZWRw dDsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3Qgc3lz X2Rlc2NfdGFibGVfaW5mbyB7CisJdW5zaWduZWQgc2hvcnQgbGVuZ3RoOwor CXVuc2lnbmVkIGNoYXIgdGFibGVbMTRdOworfSBfX2F0dHJpYnV0ZV9fICgo cGFja2VkKSk7CisKK3N0cnVjdCBpbl9vdXRfaW5mbyB7CisJdW5zaWduZWQg Y2hhciBzZXR1cF9zZWN0czsJCS8qIGRlZmF1bHQgNCAqLworCXN0cnVjdCB7 CisJCXVuc2lnbmVkIHNob3J0IHJlYWRfb25seToxOworCQl1bnNpZ25lZCBz aG9ydCB1bnVzZWQ6MTU7CisJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkg cm9vdF9mbGFnczsKKwl1bnNpZ25lZCBrZXJuZWxfY29tcHJlc3NlZF9zaXpl OwkvKiAxNiBieXRlcyB1bml0LCByb3VuZGVkIHVwOyBzaW5jZSAyLjA0ICov CisJc3RydWN0IHsKKwkJdW5zaWduZWQgc2hvcnQgc2l6ZToxMTsKKwkJdW5z aWduZWQgc2hvcnQgdW51c2VkOjM7CisJCXVuc2lnbmVkIHNob3J0IGxvYWQ6 MTsJCS8qIHNlcGFyYXRlIGRpc2sgKi8KKwkJdW5zaWduZWQgc2hvcnQgcHJv bXB0OjE7CisJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgcmFtZGlzazsJ LyogUkFNRElTSywgZGVmYXVsdCAwICovCisJdW5zaWduZWQgc2hvcnQgdmlk X21vZGU7CS8qIFN0b3JlIG1vZGUgZm9yIHVzZSBpbiBhY3BpX3dha2V1cC5T ICovCisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJdW5zaWduZWQgY2hhciBt aW5vcl9yb290OwkvKiBST09UX0RFViAqLworCQkJdW5zaWduZWQgY2hhciBt YWpvcl9yb290OwkvKiBST09UX0RFViAqLworCQl9IF9fYXR0cmlidXRlX18g KChwYWNrZWQpKSBmaWVsZHM7CisJCXVuc2lnbmVkIHNob3J0IG1pbm9yX21h am9yOworCX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHJvb3Q7CisJdW5z aWduZWQgY2hhciBBVVhfREVWSUNFX0lORk87CQkvKiBpZ25vcmVkICovCisJ dW5zaWduZWQgY2hhciBqbXBfdHJhbXBvbGluZVszXTsKKwl1bmlvbiB7CisJ CXVuc2lnbmVkIGNoYXIgYnl0ZXNbNF07CQkvKiAiSGRyUyIgKi8KKwkJdW5z aWduZWQgbG9uZ3dvcmQ7CisJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkg aGVhZGVyX3NpZ25hdHVyZTsKKwl1bnNpZ25lZCBzaG9ydCBoZWFkZXJfdmVy c2lvbl9udW1iZXI7CS8qIDB4MDIwMiAqLworCXVuc2lnbmVkIHNob3J0IHJl YWxtb2RlX3N3dGNoWzJdOwkvKiBob29rIHRvIHBsdWcgaW4gYSBBMjAtb3Bl biBmdW5jICovCisJdW5zaWduZWQgc2hvcnQgc3RhcnRfc3lzX3NlZzsJCS8q IFNZU1NFRyAqLworCXVuc2lnbmVkIHNob3J0IGtlcm5lbF92ZXJzaW9uOwkJ LyogY2hhciBwb2ludGVyICovCisJc3RydWN0IGxvYWRlcl90IHsKKwkJZW51 bSB7IExJTE8gPSAwLCBMb2FkbGluLCBib290c2VjdCwKKwkJCVNZU0xJTlVY LCBFVEhFUkJPT1QsIEVMSUxPLCBVTktOT1dOLAorCQkJR1JVQiwgVUJPT1Qs IFhFTiwgR1VKSU4KKwkJfSB0eXBlOjQ7CisJCXVuc2lnbmVkIGNoYXIgdmVy c2lvbjo0OworCX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHR5cGVfb2Zf bG9hZGVyOworCXN0cnVjdCB7CisJCXVuc2lnbmVkIGNoYXIgTE9BREVEX0hJ R0g6MTsKKwkJdW5zaWduZWQgY2hhciB1bnVzZWQ6NjsKKwkJdW5zaWduZWQg Y2hhciBDQU5fVVNFX0hFQVA6MTsJLyogaGVhcF9lbmRfcHRyIGlzIHNldCAq LworCX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGxvYWRmbGFnczsKKwl1 bnNpZ25lZCBzaG9ydCBzZXR1cF9tb3ZlX3NpemU7CQkvKiAweDgwMDAgKi8K Kwl1bnNpZ25lZCBjb2RlMzJfc3RhcnQ7CisJdW5zaWduZWQgcmFtZGlza19p bWFnZTsKKwl1bnNpZ25lZCByYW1kaXNrX3NpemU7CQkJLyogaW4gYnl0ZXMg Ki8KKwl1bnNpZ25lZCBzaG9ydCBib290c2VjdF9rbHVkZ2VbMl07CisJdW5z aWduZWQgc2hvcnQgaGVhcF9lbmRfcHRyOwkvKiBtb2RlbGlzdCsxMDI0LCB2 ZXJzaW9uID49IDB4MDIwMSAqLworCXVuc2lnbmVkIHNob3J0IHBhZDE7CisJ dW5zaWduZWQgY21kX2xpbmVfcHRyOwkJLyogZGVmYXVsdCAweDkwODAwLCB2 ZXJzaW9uID49IDB4MDIwMiAqLworCXVuc2lnbmVkIHJhbWRpc2tfbWF4OwkJ LyogUHJvdG9jb2wgMi4wMywgS2VybmVsIDIuNC4xOC1wcmUxICovCisJdW5z aWduZWQgY2hhciAgZnJlZVs5Nl07ICAgIC8qIGluY2x1ZGVzICJ0cmFtcG9s aW5lIiAqLzsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1 Y3QgZTgyMG1hcF9pbmZvIHsKKwlsb25nIGxvbmcgYWRkcjsJCS8qIHN0YXJ0 IG9mIG1lbW9yeSBzZWdtZW50ICovCisJbG9uZyBsb25nIHNpemU7CQkvKiBz aXplIG9mIG1lbW9yeSBzZWdtZW50ICovCisJbG9uZyB0eXBlOwkJLyogdHlw ZSBvZiBtZW1vcnkgc2VnbWVudCAqLworfSBfX2F0dHJpYnV0ZV9fICgocGFj a2VkKSk7CisKK3N0cnVjdCBlZGRfZGV2aWNlX3BhcmFtcyB7CisJdW5zaWdu ZWQgc2hvcnQgbGVuZ3RoOworCXVuc2lnbmVkIHNob3J0IGluZm9fZmxhZ3M7 CisJdW5zaWduZWQgbnVtX2RlZmF1bHRfY3lsaW5kZXJzOworCXVuc2lnbmVk IG51bV9kZWZhdWx0X2hlYWRzOworCXVuc2lnbmVkIHNlY3RvcnNfcGVyX3Ry YWNrOworCXVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXJfb2Zfc2VjdG9yczsK Kwl1bnNpZ25lZCBzaG9ydCBieXRlc19wZXJfc2VjdG9yOworCXVuc2lnbmVk IGRwdGVfcHRyOwkvKiAweEZGRkZGRkZGIGZvciBvdXIgcHVycG9zZXMgKi8K Kwl1bnNpZ25lZCBzaG9ydCBrZXk7CS8qID0gMHhCRUREICovCisJdW5zaWdu ZWQgY2hhciBkZXZpY2VfcGF0aF9pbmZvX2xlbmd0aDsJLyogPSA0NCAqLwor CXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQyOworCXVuc2lnbmVkIHNob3J0IHJl c2VydmVkMzsKKwl1bnNpZ25lZCBjaGFyIGhvc3RfYnVzX3R5cGVbNF07CisJ dW5zaWduZWQgY2hhciBpbnRlcmZhY2VfdHlwZVs4XTsKKwl1bmlvbiB7CisJ CXN0cnVjdCB7CisJCQl1bnNpZ25lZCBzaG9ydCBiYXNlX2FkZHJlc3M7CisJ CQl1bnNpZ25lZCBzaG9ydCByZXNlcnZlZDE7CisJCQl1bnNpZ25lZCByZXNl cnZlZDI7CisJCX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGlzYTsKKwkJ c3RydWN0IHsKKwkJCXVuc2lnbmVkIGNoYXIgYnVzOworCQkJdW5zaWduZWQg Y2hhciBzbG90OworCQkJdW5zaWduZWQgY2hhciBmdW5jdGlvbjsKKwkJCXVu c2lnbmVkIGNoYXIgY2hhbm5lbDsKKwkJCXVuc2lnbmVkIHJlc2VydmVkOwor CQl9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBwY2k7CisJCS8qIHBjaXgg aXMgc2FtZSBhcyBwY2kgKi8KKwkJc3RydWN0IHsKKwkJCXVuc2lnbmVkIGxv bmcgbG9uZyByZXNlcnZlZDsKKwkJfSBfX2F0dHJpYnV0ZV9fICgocGFja2Vk KSkgaWJuZDsKKwkJc3RydWN0IHsKKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyBy ZXNlcnZlZDsKKwkJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgeHByczsK KwkJc3RydWN0IHsKKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyByZXNlcnZlZDsK KwkJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgaHRwdDsKKwkJc3RydWN0 IHsKKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyByZXNlcnZlZDsKKwkJfSBfX2F0 dHJpYnV0ZV9fICgocGFja2VkKSkgdW5rbm93bjsKKwl9IGludGVyZmFjZV9w YXRoOworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCXVuc2lnbmVkIGNoYXIg ZGV2aWNlOworCQkJdW5zaWduZWQgY2hhciByZXNlcnZlZDE7CisJCQl1bnNp Z25lZCBzaG9ydCByZXNlcnZlZDI7CisJCQl1bnNpZ25lZCByZXNlcnZlZDM7 CisJCQl1bnNpZ25lZCBsb25nIGxvbmcgcmVzZXJ2ZWQ0OworCQl9IF9fYXR0 cmlidXRlX18gKChwYWNrZWQpKSBhdGE7CisJCXN0cnVjdCB7CisJCQl1bnNp Z25lZCBjaGFyIGRldmljZTsKKwkJCXVuc2lnbmVkIGNoYXIgbHVuOworCQkJ dW5zaWduZWQgY2hhciByZXNlcnZlZDE7CisJCQl1bnNpZ25lZCBjaGFyIHJl c2VydmVkMjsKKwkJCXVuc2lnbmVkIHJlc2VydmVkMzsKKwkJCXVuc2lnbmVk IGxvbmcgbG9uZyByZXNlcnZlZDQ7CisJCX0gX19hdHRyaWJ1dGVfXyAoKHBh Y2tlZCkpIGF0YXBpOworCQlzdHJ1Y3QgeworCQkJdW5zaWduZWQgc2hvcnQg aWQ7CisJCQl1bnNpZ25lZCBsb25nIGxvbmcgbHVuOworCQkJdW5zaWduZWQg c2hvcnQgcmVzZXJ2ZWQxOworCQkJdW5zaWduZWQgcmVzZXJ2ZWQyOworCQl9 IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBzY3NpOworCQlzdHJ1Y3Qgewor CQkJdW5zaWduZWQgbG9uZyBsb25nIHNlcmlhbF9udW1iZXI7CisJCQl1bnNp Z25lZCBsb25nIGxvbmcgcmVzZXJ2ZWQ7CisJCX0gX19hdHRyaWJ1dGVfXyAo KHBhY2tlZCkpIHVzYjsKKwkJc3RydWN0IHsKKwkJCXVuc2lnbmVkIGxvbmcg bG9uZyBldWk7CisJCQl1bnNpZ25lZCBsb25nIGxvbmcgcmVzZXJ2ZWQ7CisJ CX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGkxMzk0OworCQlzdHJ1Y3Qg eworCQkJdW5zaWduZWQgbG9uZyBsb25nIHd3aWQ7CisJCQl1bnNpZ25lZCBs b25nIGxvbmcgbHVuOworCQl9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBm aWJyZTsKKwkJc3RydWN0IHsKKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyBpZGVu dGl0eV90YWc7CisJCQl1bnNpZ25lZCBsb25nIGxvbmcgcmVzZXJ2ZWQ7CisJ CX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGkybzsKKwkJc3RydWN0IHsK KwkJCXVuc2lnbmVkIGFycmF5X251bWJlcjsKKwkJCXVuc2lnbmVkIHJlc2Vy dmVkMTsKKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyByZXNlcnZlZDI7CisJCX0g X19hdHRyaWJ1dGUoKHBhY2tlZCkpIHJhaWQ7CisJCXN0cnVjdCB7CisJCQl1 bnNpZ25lZCBjaGFyIGRldmljZTsKKwkJCXVuc2lnbmVkIGNoYXIgcmVzZXJ2 ZWQxOworCQkJdW5zaWduZWQgc2hvcnQgcmVzZXJ2ZWQyOworCQkJdW5zaWdu ZWQgcmVzZXJ2ZWQzOworCQkJdW5zaWduZWQgbG9uZyBsb25nIHJlc2VydmVk NDsKKwkJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgc2F0YTsKKwkJc3Ry dWN0IHsKKwkJCXVuc2lnbmVkIGxvbmcgbG9uZyByZXNlcnZlZDE7CisJCQl1 bnNpZ25lZCBsb25nIGxvbmcgcmVzZXJ2ZWQyOworCQl9IF9fYXR0cmlidXRl X18gKChwYWNrZWQpKSB1bmtub3duOworCX0gZGV2aWNlX3BhdGg7CisJdW5z aWduZWQgY2hhciByZXNlcnZlZDQ7CisJdW5zaWduZWQgY2hhciBjaGVja3N1 bTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgZWRk X2luZm8geworCXVuc2lnbmVkIGNoYXIgZGV2aWNlOworCXVuc2lnbmVkIGNo YXIgdmVyc2lvbjsKKwl1bnNpZ25lZCBzaG9ydCBpbnRlcmZhY2Vfc3VwcG9y dDsKKwl1bnNpZ25lZCBzaG9ydCBtYXhfY3lsOworCXVuc2lnbmVkIGNoYXIg bWF4X2hlYWQ7CisJdW5zaWduZWQgY2hhciBtYXhfc2VjdDsKKwlzdHJ1Y3Qg ZWRkX2RldmljZV9wYXJhbXMgcGFyYW1zOworfSBfX2F0dHJpYnV0ZV9fICgo cGFja2VkKSk7CisKK3R5cGVkZWYgc3RydWN0IHsKKwl1bnNpZ25lZCBjaGFy IHBhZGRpbmdbOF07CisJc3RydWN0IHsKKwkJdW5zaWduZWQgc2hvcnQgcGFk ZGluZzoxOwkvKiBtYXBwaW5nIHJpZ2h0ID8gKi8KKwkJdW5zaWduZWQgc2hv cnQgZmlyc3RfbGV0dGVyOjU7CisJCXVuc2lnbmVkIHNob3J0IHNlY29uZF9s ZXR0ZXI6NTsKKwkJdW5zaWduZWQgc2hvcnQgdGhpcmRfbGV0dGVyOjU7CisJ fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgbWFudWZhY3R1cmVyX2lkOwor CXVuc2lnbmVkIHNob3J0IG1vbml0b3JfbW9kZWw7CisJdW5zaWduZWQgc2Vy aWFsX251bWJlcjsKKwl1bnNpZ25lZCBjaGFyIG1hbnVmYWN0dXJlX3dlZWs7 CisJdW5zaWduZWQgY2hhciBtYW51ZmFjdHVyZV95ZWFyOwkJLyogYmFzZTog MTk5MCAqLworCXVuc2lnbmVkIGNoYXIgdmVyc2lvbjsKKwl1bnNpZ25lZCBj aGFyIHJldmlzaW9uOworCXVuc2lnbmVkIGNoYXIgdmlkZW9faW5wdXRfdHlw ZTsJCS8qIGJpdGZpZWxkICovCisJdW5zaWduZWQgY2hhciBtYXhfaG9yaXpv bnRhbF9zaXplX2NtOworCXVuc2lnbmVkIGNoYXIgbWF4X3ZlcnRpY2FsX3Np emVfY207CisJdW5zaWduZWQgY2hhciBnYW1tYV9mYWN0b3I7CS8qIGdhbW1h ID0gMS4wICsgZ2FtbWFfZmFjdG9yLzEwMCAqLworCXN0cnVjdCB7CisJCXVu c2lnbmVkIGNoYXIgdW51c2VkOjM7CisJCXVuc2lnbmVkIGNoYXIgUkJHY29s b3I6MTsKKwkJdW5zaWduZWQgY2hhciB1bnVzZWQyOjE7CisJCXVuc2lnbmVk IGNoYXIgYWN0aXZlX29mZl9zdXBwb3J0ZWQ6MTsKKwkJdW5zaWduZWQgY2hh ciBzdXNwZW5kX3N1cHBvcnRlZDoxOworCQl1bnNpZ25lZCBjaGFyIHN0YW5k Ynlfc3VwcG9ydGVkOjE7CisJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkg RFBNUzsKKwl1bnNpZ25lZCBjaGFyIGNocm9tYV9ncmVlbl9hbmRfcmVkOwor CXVuc2lnbmVkIGNoYXIgY2hyb21hX3doaXRlX2FuZF9ibHVlOworCXVuc2ln bmVkIGNoYXIgY2hyb21hX3JlZF9ZOworCXVuc2lnbmVkIGNoYXIgY2hyb21h X3JlZF9YOworCXVuc2lnbmVkIGNoYXIgY2hyb21hX2dyZWVuX1k7CisJdW5z aWduZWQgY2hhciBjaHJvbWFfZ3JlZW5fWDsKKwl1bnNpZ25lZCBjaGFyIGNo cm9tYV9ibHVlX1k7CisJdW5zaWduZWQgY2hhciBjaHJvbWFfYmx1ZV9YOwor CXVuc2lnbmVkIGNoYXIgY2hyb21hX3doaXRlX1k7CisJdW5zaWduZWQgY2hh ciBjaHJvbWFfd2hpdGVfWDsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBzaG9y dCBfNzIwXzQwMF83MEh6OjE7CisJCXVuc2lnbmVkIHNob3J0IF83MjBfNDAw Xzg4SHo6MTsKKwkJdW5zaWduZWQgc2hvcnQgXzY0MF80ODBfNjBIejoxOwor CQl1bnNpZ25lZCBzaG9ydCBfNjQwXzQ4MF82N0h6OjE7CisJCXVuc2lnbmVk IHNob3J0IF82NDBfNDgwXzcySHo6MTsKKwkJdW5zaWduZWQgc2hvcnQgXzY0 MF80ODBfNzVIejoxOworCQl1bnNpZ25lZCBzaG9ydCBfODAwXzYwMF81Nkh6 OjE7CisJCXVuc2lnbmVkIHNob3J0IF84MDBfNjAwXzYwSHo6MTsKKworCQl1 bnNpZ25lZCBzaG9ydCBfODAwXzYwMF83Mkh6OjE7CisJCXVuc2lnbmVkIHNo b3J0IF84MDBfNjAwXzc1SHo6MTsKKwkJdW5zaWduZWQgc2hvcnQgXzgzMl82 MjRfNzVIejoxOworCQl1bnNpZ25lZCBzaG9ydCBfMTAyNF83NjhfaTg3SHo6 MTsKKwkJdW5zaWduZWQgc2hvcnQgXzEwMjRfNzY4XzYwSHo6MTsKKwkJdW5z aWduZWQgc2hvcnQgXzEwMjRfNzY4XzcwSHo6MTsKKwkJdW5zaWduZWQgc2hv cnQgXzEwMjRfNzY4Xzc1SHo6MTsKKwkJdW5zaWduZWQgc2hvcnQgXzEyODBf MTAyNF83NUh6OjE7CisJfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgZXN0 YWJsaXNoZWRfdGltbWluZzsKKwl1bnNpZ25lZCBjaGFyIG1hbnVmYWN0dXJl cl90aW1taW5nOworCXN0cnVjdCB7CisJCXVuc2lnbmVkIHNob3J0IHJlc29s dXRpb246ODsgIC8qIFggcmVzb2x1dGlvbiA9IChmaWVsZCszMSkqOCAqLwor CQl1bnNpZ25lZCBzaG9ydCB2ZXJ0aWNhbF9yZWZyZXNoX2ZyZXE6NjsJLyog YWRkIDYwSHogKi8KKwkJdW5zaWduZWQgc2hvcnQgYXNwZWN0X3JhdGlvOjI7 CQkvKiAwMTogMC43NSAqLworCX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkp IHN0YW5kYXJkX3RpbW1pbmdbOF07CisJdW5pb24geworCQlzdHJ1Y3Qgewor CQkJdW5zaWduZWQgc2hvcnQgd29yZG1hcmtlcl8wOworCQkJdW5zaWduZWQg Y2hhciBieXRlbWFya2VyXzA7CisJCQllbnVtIHsgc2VyaWFsX251bWJlciA9 IDB4RkYsCisJCQkJdmVuZG9yX25hbWUgPSAweEZFLAorCQkJCXZlcnRpY2Fs X2hvcml6b250YWxfZnJlcXVlbmN5X3JhbmdlID0gMHhGRCwKKwkJCQltb2Rl bF9uYW1lID0gMHhGQworLyogUkIgSW50ZXJydXB0IExpc3Qgc2F5IHRoYXQg YnV0IEkgcmVhZCBzb21ldGhpbmcgZWxzZS4uLgkqLworLyogICAgICAgICAg ICAgIH0gc3RyX3R5cGUgOiA4OwkJCQkJKi8KKy8qICAgICAgICAgIGNoYXIg ICAgICAgICAgICAgICAgc3RyaW5nWzE0XTsJCSovCisJCQl9IHN0cl90eXBl OjE2OworCQkJY2hhciBzdHJpbmdbMTNdOworCQl9IF9fYXR0cmlidXRlX18g KChwYWNrZWQpKSBzdHJpbmdzOworCQlzdHJ1Y3QgeworCQkJdW5zaWduZWQg Y2hhciBob3Jpem9udGFsX2ZyZXFfS2h6OwkvKiAhPSAwICovCisJCQl1bnNp Z25lZCBjaGFyIHZlcnRpY2FsX2ZyZXFfSHo7CQkvKiAhPSAwICovCisJCQl1 bnNpZ25lZCBjaGFyIGhvcml6b250YWxfYWN0aXZlX3RpbWVfcGl4OyAvKiAh PSAwICovCisJCQl1bnNpZ25lZCBjaGFyIGhvcml6b250YWxfYmxhbmtpbmdf dGltZV9waXg7CisJCQl1bnNpZ25lZCBjaGFyIGhvcml6b250YWxfYWN0aXZl Ml90aW1lOworCQkJdW5zaWduZWQgY2hhciB2ZXJ0aWNhbF9hY3RpdmVfdGlt ZV9saW5lOworCQkJdW5zaWduZWQgY2hhciB2ZXJ0aWNhbF9ibGFua2luZ190 aW1lX2xpbmU7CisJCQl1bnNpZ25lZCBjaGFyIHZlcnRpY2FsX2FjdGl2ZV90 aW1lMjsKKwkJCXVuc2lnbmVkIGNoYXIgaG9yaXpvbnRhbF9zeW5jX29mZnNl dDsKKwkJCXVuc2lnbmVkIGNoYXIgaG9yaXpvbnRhbF9zeW5jX3B1bHNld2lk dGhfcGl4OworCQkJdW5zaWduZWQgY2hhciB2ZXJ0aWNhbF9zeW5jX3B1bHNl d2lkdGg7CisJCQl1bnNpZ25lZCBjaGFyIGhvcml6b250YWxfdmVydGljYWxf c3luY19vZmZzZXQyOworCQkJdW5zaWduZWQgY2hhciBob3Jpem9udGFsX2lt YWdlX3NpemVfbW07CisJCQl1bnNpZ25lZCBjaGFyIHZlcnRpY2FsX2ltYWdl X3NpemVfbW07CisJCQl1bnNpZ25lZCBjaGFyIGhvcml6b250YWxfaW1hZ2Vf c2l6ZV8yOworCQkJdW5zaWduZWQgY2hhciBob3Jpem9udGFsX2JvcmRlcl9w aXg7CisJCQl1bnNpZ25lZCBjaGFyIHZlcnRpY2FsX2JvcmRlcl9waXg7CisJ CQlzdHJ1Y3QgeworCQkJCXVuc2lnbmVkIGNoYXIgdW51c2VkOjE7CisJCQkJ dW5zaWduZWQgY2hhciBob3Jpem9udGFsX3N5bmNfcG9sOjE7CisJCQkJdW5z aWduZWQgY2hhciB2ZXJ0aWNhbF9zeW5jX3BvbDoxOworCQkJCXVuc2lnbmVk IGNoYXIgc3luY190eXBlOjI7CisJCQkJZW51bSB7IG5vX3NvdW5kLCBzdGVy ZW9fcmlnaHQsCisJCQkJCXN0ZXJlb19sZWZ0LCB1bmRlZmluZWQKKwkJCQl9 IHNvdW5kOjI7CisJCQkJdW5zaWduZWQgY2hhciBpbnRlcmxhY2VkOjE7CisJ CQl9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBkaXNwbGF5X3Q7CisJCX0g X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHRpbW1pbmdzOworCX0gX19hdHRy aWJ1dGVfXyAoKHBhY2tlZCkpIGRldGFpbGVkX3RpbW1pbmdbNF07CisJdW5z aWduZWQgY2hhciB1bnVzZWQ7CisJdW5zaWduZWQgY2hhciBjaGVja3N1bTsK K30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIFZCRV9FRElEX3Q7CisKK3N0 cnVjdCBYODZTcGVlZFN0ZXBTbWlfcyB7CisJdW5zaWduZWQgZGF0YTEsIGRh dGEyLCBkYXRhMywgZGF0YTQ7Cit9OworCitzdHJ1Y3QgRUZJX3MgeyAvKiBz dGlsbCBub3QgaW5pdGlhbGlzZWQgaW4gR3VqaW4tMS4yISAqLworCXVuc2ln bmVkIHN5c3RlbV90YWJsZV9wb2ludGVyOworCXVuc2lnbmVkIG1lbW9yeV9k ZXNjcmlwdG9yX3NpemU7CisJdW5zaWduZWQgbWVtb3J5X2Rlc2NyaXB0b3Jf dmVyc2lvbjsKKwl1bnNpZ25lZCBtZW1vcnlfZGVzY3JpcHRvcl9tYXBfcG9p bnRlcjsKKwl1bnNpZ25lZCBtZW1vcnlfZGVzY3JpcHRvcl9tYXBfc2l6ZTsK K307CisKKy8qCisgKiBUaGUgY29tcGxldGUgdmVyc2lvbiAtIGFuZCBpdHMg b2Zmc2V0IHRlc3RlcjoKKyAqLworc3RydWN0IGxpbnV4X3BhcmFtIHsKKwlz dHJ1Y3Qgc2NyZWVuX2luZm8gc2NyZWVuX2luZm87CisJc3RydWN0IGFwbV9i aW9zX2luZm8gYXBtX2Jpb3NfaW5mbzsKKwl1bnNpZ25lZCBjaGFyIGZyZWUx WzEyXTsKKwlzdHJ1Y3QgWDg2U3BlZWRTdGVwU21pX3MgWDg2U3BlZWRTdGVw U21pOworCXVuc2lnbmVkIGNoYXIgZnJlZTJbMTZdOworCXVuaW9uIGRyaXZl X2luZm8gZHJpdmUxLCBkcml2ZTI7CisJc3RydWN0IHN5c19kZXNjX3RhYmxl X2luZm8gc3lzX2Rlc2NfdGFibGU7CisJdW5zaWduZWQgY2hhciBmcmVlM1sx NDRdOworCVZCRV9FRElEX3QgZWRpZF9kYXRhOworCXVuc2lnbmVkIHVudXNl ZDsKKwlzdHJ1Y3QgRUZJX3MgRUZJOworCXVuc2lnbmVkIGNoYXIgZnJlZTRb OF07CisJdW5zaWduZWQgQUxUX01FTV9LOworCXVuc2lnbmVkIGNoYXIgZnJl ZTVbNF07CisJdW5zaWduZWQgY2hhciBuYl9FODIwX2VudHJpZXM7CisJdW5z aWduZWQgY2hhciBuYl9FRERfZW50cmllczsKKwl1bnNpZ25lZCBjaGFyIG5i X01CUlNJR19lbnRyaWVzOworCXVuc2lnbmVkIGNoYXIgZnJlZTZbNl07CisJ LyogNTEyIGJ5dGVzIGJvb3RzZWN0b3IgbGltaXQgKi8KKwkvKiAiaW5fb3V0 IiBpcyBtb3N0bHkgaW5pdCdlZCBpbiB2bWxpbnV6IGZpbGU6ICovCisJc3Ry dWN0IGluX291dF9pbmZvIGluX291dDsKKwl1bnNpZ25lZCBNQlJTSUdbMTZd OworCXN0cnVjdCBlODIwbWFwX2luZm8gZTgyMG1hcFs2NF07CS8qIDIwIGJ5 dGVzIGVhY2ggKi8KKwl1bnNpZ25lZCBjaGFyIGZyZWU4WzQ4XTsKKwl1bnNp Z25lZCBjaGFyIGNvbW1hbmRfbGluZVsxMDI0XTsKKwl1bnNpZ25lZCBjaGFy IGZyZWU5WzI1Nl07CisJc3RydWN0IGVkZF9pbmZvIGVkZFs2XTsKKwl1bnNp Z25lZCBjaGFyIGZyZWUxMFsyNzZdOworfSBfX2F0dHJpYnV0ZV9fICgocGFj a2VkKSk7CisKK2V4dGVybiBpbmxpbmUgdm9pZCB0ZXN0X2xpbnV4X3BhcmFt X3N0cnVjdCh2b2lkKQoreworCWlmIChvZmZzZXRvZihzdHJ1Y3QgbGludXhf cGFyYW0sIHNjcmVlbl9pbmZvLkVYVF9NRU1fSykgIT0gMHgwMikKKwkJIF9f RVJST1IoKTsKKwlpZiAob2Zmc2V0b2Yoc3RydWN0IGxpbnV4X3BhcmFtLCBh cG1fYmlvc19pbmZvKSAhPSAweDQwKQorCQkgX19FUlJPUigpOworCWlmIChv ZmZzZXRvZihzdHJ1Y3QgbGludXhfcGFyYW0sIFg4NlNwZWVkU3RlcFNtaSkg IT0gOTYpCisJCSBfX0VSUk9SKCk7CisJaWYgKG9mZnNldG9mKHN0cnVjdCBs aW51eF9wYXJhbSwgZHJpdmUxKSAhPSAweDgwKQorCQkgX19FUlJPUigpOwor CWlmIChvZmZzZXRvZihzdHJ1Y3QgbGludXhfcGFyYW0sIGRyaXZlMikgIT0g MHg4MCArIDE2KQorCQkgX19FUlJPUigpOworCWlmIChvZmZzZXRvZihzdHJ1 Y3QgbGludXhfcGFyYW0sIHN5c19kZXNjX3RhYmxlKSAhPSAweEEwKQorCQkg X19FUlJPUigpOworCWlmIChvZmZzZXRvZihzdHJ1Y3QgbGludXhfcGFyYW0s IGVkaWRfZGF0YSkgIT0gMHgxNDApCisJCV9fRVJST1IoKTsKKwlpZiAob2Zm c2V0b2Yoc3RydWN0IGxpbnV4X3BhcmFtLCBBTFRfTUVNX0spICE9IDB4MUUw KQorCQkgX19FUlJPUigpOworCWlmIChvZmZzZXRvZihzdHJ1Y3QgbGludXhf cGFyYW0sIG5iX0U4MjBfZW50cmllcykgIT0gMHgxRTgpCisJCSBfX0VSUk9S KCk7CisJaWYgKG9mZnNldG9mKHN0cnVjdCBsaW51eF9wYXJhbSwgbmJfRURE X2VudHJpZXMpICE9IDB4MUU5KQorCQkgX19FUlJPUigpOworCWlmIChvZmZz ZXRvZihzdHJ1Y3QgbGludXhfcGFyYW0sIGluX291dC5zZXR1cF9zZWN0cykg IT0gMHgxRjEpCisJCSBfX0VSUk9SKCk7CisJaWYgKG9mZnNldG9mKHN0cnVj dCBsaW51eF9wYXJhbSwgaW5fb3V0LnJvb3RfZmxhZ3MpICE9IDB4MUYyKQor CQkgX19FUlJPUigpOworCWlmIChvZmZzZXRvZihzdHJ1Y3QgbGludXhfcGFy YW0sIGluX291dC5rZXJuZWxfY29tcHJlc3NlZF9zaXplKSAhPSAweDFGNCkK KwkJIF9fRVJST1IoKTsKKwlpZiAob2Zmc2V0b2Yoc3RydWN0IGxpbnV4X3Bh cmFtLCBpbl9vdXQuaGVhZGVyX3ZlcnNpb25fbnVtYmVyKSAhPSAweDIwNikK KwkJIF9fRVJST1IoKTsKKwlpZiAob2Zmc2V0b2Yoc3RydWN0IGxpbnV4X3Bh cmFtLCBpbl9vdXQuY29kZTMyX3N0YXJ0KSAhPSAweDIxNCkKKwkJIF9fRVJS T1IoKTsKKwlpZiAob2Zmc2V0b2Yoc3RydWN0IGxpbnV4X3BhcmFtLCBpbl9v dXQuaGVhcF9lbmRfcHRyKSAhPSAweDIyNCkKKwkJIF9fRVJST1IoKTsKKwlp ZiAob2Zmc2V0b2Yoc3RydWN0IGxpbnV4X3BhcmFtLCBNQlJTSUcpICE9IDB4 MjkwKQorCQkgX19FUlJPUigpOworCWlmIChvZmZzZXRvZihzdHJ1Y3QgbGlu dXhfcGFyYW0sIGU4MjBtYXApICE9IDB4MkQwKQorCQkgX19FUlJPUigpOwor CWlmIChvZmZzZXRvZihzdHJ1Y3QgbGludXhfcGFyYW0sIGNvbW1hbmRfbGlu ZSkgIT0gMHg4MDApCisJCSBfX0VSUk9SKCk7CisJaWYgKG9mZnNldG9mKHN0 cnVjdCBsaW51eF9wYXJhbSwgZWRkKSAhPSAweGQwMCkKKwkJIF9fRVJST1Io KTsKK30KKwpkaWZmIC11cHJOIC1YIGxpbnV4LTIuNi4yMC9Eb2N1bWVudGF0 aW9uL2RvbnRkaWZmIGxpbnV4LTIuNi4yMC9NYWtlZmlsZSBsaW51eC0yLjYu MjAtZ3VqaW4vTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi4yMC9NYWtlZmlsZQky MDA3LTAyLTA0IDE4OjQ0OjU0LjAwMDAwMDAwMCArMDAwMAorKysgbGludXgt Mi42LjIwLWd1amluL01ha2VmaWxlCTIwMDctMDItMDUgMjE6Mjc6MDEuMDAw MDAwMDAwICswMDAwCkBAIC0yODksNiArMjg5LDcgQEAgU1RSSVAJCT0gJChD Uk9TU19DT01QSUxFKXN0cmlwCiBPQkpDT1BZCQk9ICQoQ1JPU1NfQ09NUElM RSlvYmpjb3B5CiBPQkpEVU1QCQk9ICQoQ1JPU1NfQ09NUElMRSlvYmpkdW1w CiBBV0sJCT0gYXdrCitHWklQCQk9IGd6aXAKIEdFTktTWU1TCT0gc2NyaXB0 cy9nZW5rc3ltcy9nZW5rc3ltcwogREVQTU9ECQk9IC9zYmluL2RlcG1vZAog S0FMTFNZTVMJPSBzY3JpcHRzL2thbGxzeW1zCkBAIC0zMDIsNyArMzAzLDIy IEBAIEFGTEFHU19NT0RVTEUgICA9ICQoTU9ERkxBR1MpCiBMREZMQUdTX01P RFVMRSAgPSAtcgogQ0ZMQUdTX0tFUk5FTAk9CiBBRkxBR1NfS0VSTkVMCT0K K0daSVBGTEFHUwk9CiAKKyMgUGFtYXJldGVycyB0byBhZGQgdG8gdGhlIEda SVAgY29tbWVudCBvZiB0aGUgJS5rZ3ogdGFyZ2V0OgorTElOVVhfUEFSQU0g PSBybworaWZkZWYgUk9PVAorIyBST09UIGlzIHByZXNlbnQgb24gY29tbWFu ZCBsaW5lIG9yIGluIGVudmlyb25tZW50ICh1bnVzdWFsIGNhc2UpLAorIyBk byBub3QgYXV0b2RldGVjdCBpdCBhdCBib290IHRpbWU6CitpZmVxICgkKFJP T1QpLGF1dG8pCisjIENvbW1hbmQgbGluZSBpcyBsaWtlICJtYWtlIC9ib290 L2xpbnV4LTIuNi4xOS5rZ3ogUk9PVD1hdXRvIiwKKyMgZ2V0IHZhbHVlIGZy b20gL3Byb2MvY21kbGluZSAod2hpY2ggY2FuIGJlIG1vcmUgdGhhbiBvbmUg bGluZSk6CitMSU5VWF9ST09UID0gYHNlZCAnL3Jvb3Q9L3MvLipcKHJvb3Q9 W18vLmEtejAtOUEtWl0qXCkuKi9cMS8nIC9wcm9jL2NtZGxpbmVgCitlbHNl CisjIENvbW1hbmQgbGluZSBpcyBsaWtlICJtYWtlIC9ib290L2xpbnV4LTIu Ni4xOS5rZ3ogUk9PVD0vZGV2L3NkYTYiCitMSU5VWF9ST09UID0gInJvb3Q9 JChST09UKSIKK2VuZGlmCitlbmRpZgogCiAjIFVzZSBMSU5VWElOQ0xVREUg d2hlbiB5b3UgbXVzdCByZWZlcmVuY2UgdGhlIGluY2x1ZGUvIGRpcmVjdG9y eS4KICMgTmVlZGVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgTz0gb3B0 aW9uCkBAIC03MzQsNyArNzUwLDcgQEAgZGVidWdfa2FsbHN5bXM6IC50bXBf bWFwJChsYXN0X2thbGxzeW1zKQogCiBlbmRpZiAjIGlmZGVmIENPTkZJR19L QUxMU1lNUwogCi0jIHZtbGludXggaW1hZ2UgLSBpbmNsdWRpbmcgdXBkYXRl ZCBrZXJuZWwgc3ltYm9scworIyB2bWxpbnV4IEVMRiBpbWFnZSAtIGluY2x1 ZGluZyB1cGRhdGVkIGtlcm5lbCBzeW1ib2xzCiB2bWxpbnV4OiAkKHZtbGlu dXgtbGRzKSAkKHZtbGludXgtaW5pdCkgJCh2bWxpbnV4LW1haW4pICQoa2Fs bHN5bXMubykgRk9SQ0UKIGlmZGVmIENPTkZJR19IRUFERVJTX0NIRUNLCiAJ JChRKSQoTUFLRSkgLWYgJChzcmN0cmVlKS9NYWtlZmlsZSBoZWFkZXJzX2No ZWNrCkBAIC03NDMsNiArNzU5LDYyIEBAIGVuZGlmCiAJJChRKSQoTUFLRSkg LWYgJChzcmN0cmVlKS9zY3JpcHRzL01ha2VmaWxlLm1vZHBvc3QgJEAKIAkk KFEpcm0gLWYgLm9sZF92ZXJzaW9uCiAKKyMgdm1saW51eCBFTEYgc3RyaXBw ZWQgaW1hZ2UKKyMgTm90IGFic29sdXRlbHkgbmVlZGVkLCBqdXN0IHRvIHJl ZHVjZSB0aGUgc2l6ZSBsb2FkZWQgYnkgdGhlIGJvb3Rsb2FkZXIKK3F1aWV0 X2NtZF9zdHJpcCA9IE9CSkNPUFkgJEAKKyAgICAgIGNtZF9zdHJpcCA9ICQo T0JKQ09QWSkgLS1zdHJpcC1hbGwgJDwgJEAKK3ZtbGludXguZWxmOiB2bWxp bnV4IEZPUkNFCisJJChjYWxsIGlmX2NoYW5nZWQsc3RyaXApCisKKyMgY29t cHJlc3NlZCB2bWxpbnV4IEVMRiBpbWFnZQorcXVpZXRfY21kX2d6aXAgPSBH WklQICAgICRACisgICAgICBjbWRfZ3ppcCA9ICQoR1pJUCkgJChHWklQRkxB R1MpICQ8IC1jID4gJEAKK3ZtbGludXguZWxmLmd6OiB2bWxpbnV4LmVsZiBG T1JDRQorCSQoY2FsbCBpZl9jaGFuZ2VkLGd6aXApCisKKyMgSWYgeW91IGhh dmUgYSBtb2RpZmllZCBHUEwga2VybmVsIGJ1dCBhcmUgbm90IHJlZGlzdHJp YnV0aW5nCisjIGFueXRoaW5nLCB1c2UgdGhlIHR3byBsaW5lcyBhcyBnemNv cHkgcGFyYW1ldGVyOgorIyAgICAgLWMgIlRoaXMgc29mdHdhcmUgaXMgbm90 IHVzZWQgb3V0c2lkZSB0aGUgY29weXJpZ2h0IG93bmVyIGNvbXBhbnkuIiBc CisjICAgICAtYWwgIkNvcHlyaWdodCBvd25lcjogIiAiPG9mZmljaWFsIG5h bWUgb2Ygb3duZXIgb2YgdGhlIHBhdGNoPiIKKyMgR3VqaW4gYWxzbyBhY2Nl cHQgb25lIG9yIG1vcmUgIkNvcHlyaWdodCBvd25lcjogIiBsaW5lIGZvciBH UEwgZmlsZXMsCisjIHRha2UgY2FyZSBvZiB0aGUgc3BhY2UgYWZ0ZXIgdGhl IHNlbWljb2xvbi4KKyMgICAgRm9yIGluc3RhbmNlOiAtYWw9IkNvcHlyaWdo dCBvd25lcjogTGludXMgVG9ydmFsZHMiIFwKKyMgIEtlZXAgdGhlIGxpY2Vu c2UgZmlyc3QsIHRoZW4gQ29weXJpZ2h0L3NvdXJjZSBsb2NhdGlvbiBsaW5l KHMpLAorIyB0aGUgZm9sbG93aW5nIGxpbmUgaXMgY29waWVkIHRvIHRoZSBM aW51eCBwYXJhbWV0ZXIgbGluZSBieSB0aGUgKHByb3ZpZGVkKQorIyBsaW51 eF9zZXRfcGFyYW1zIGZ1bmN0aW9uLCBzbyB0aGUgKHByb3ZpZGVkKSBmdW5j dGlvbiBtYXkgb3IgbWF5IG5vdCBhbHNvCisjIGluY2x1ZGUgbGFzdCBsaW5l IChpLmUuIEd1amluIHBhcmFtZXRlcnMpIGFzIGtlcm5lbCBwYXJhbWV0ZXJz LgorIyAgTm90ZSB0aGF0IHRoZSBjb21tYW5kIGxpbmUgZ2l2ZW4gdG8gTElO VVggc2hhbGwgbm90IGJlIGVtcHR5LAorIyBrZWVwIGF0IGxlYXN0IG9uZSBz cGFjZSBpbiB0aGUgIi1hbD0iIG9mICQoTElOVVhfUk9PVCkuCisjIFVTQUdF IGd6Y29weSAiLWFzPSIgY2hlY2svYWRkIGEgc3BhY2UsICItYWw9IiBjaGVj ay9hZGQgYSBuZXdsaW5lCisjIGluIGJldHdlZW4gdGhlIGN1cnJlbnQgYW5k IHRoZSBhcHBlbmRlZCBjb21tZW50LgorcXVpZXRfY21kX3BhcmFtcyA9IFBB UkFNUyAgJEAKKyAgICAgIGNtZF9wYXJhbXMgPSAgc2NyaXB0cy9nemNvcHkg LWYgJDwgJEAgLW49JEAgXAorICAgIC1jPSJUaGlzIHNvZnR3YXJlIGlzIGRp c3RyaWJ1dGVkIHVuZGVyIHRoZSBHUEwgbGljZW5zZS4iIFwKKyAgICAtYWw9 Ikl0cyBzb3VyY2UgY29kZSBpcyBhdDogaHR0cDovL3d3dy5rZXJuZWwub3Jn IiBcCisgICAgLWFsPSIkKExJTlVYX1JPT1QpICIgLWFzPSIkKExJTlVYX1BB UkFNKSIgXAorICAgIC1hbD0iYHNjcmlwdHMvZ3pwYXJhbWAiIFwKKyAgICAg ICYmIGVjaG8gIiIgXAorICAgICAgJiYgZWNobyAiICBgc2NyaXB0cy9nemNv cHkgLW4wICRAYCBoYXMgYmVlbiByZWJ1aWx0IHdpdGggcGFyYW1ldGVyczoi IFwKKyAgICAgICYmIGVjaG8gImBzY3JpcHRzL2d6Y29weSAtYzAgJEBgIgor CisjIEd1amluIG5hdGl2ZSBib290YWJsZSBmaWxlOiBqdXN0IHR5cGUgIm1h a2UgL2Jvb3QvbGludXgtMi42LjIwLmtneiIKKyMgdG8gZ2V0IGV2ZXJ5dGhp bmcgKGJ1dCBtb2R1bGVzICYgaW5pdHJkICYgaW5pdHJhbWZzKSBkb25lLgor JS5rZ3ogOiB2bWxpbnV4LmVsZi5neiBzY3JpcHRzL2d6cGFyYW0gc2NyaXB0 cy9nemNvcHkgRk9SQ0UKKwkkKGNhbGwgY21kLHBhcmFtcykKKworIyBVdGls aXR5IHRvIGRpc3BsYXkgdGhlIGtlcm5lbCBjb21waWxlIHRpbWUgcGFyYW1l dGVycworcXVpZXRfY21kX2d6cGFyYW0gPSBIT1NUQ0MgICRACisgICAgICBj bWRfZ3pwYXJhbSA9ICQoSE9TVENDKSAkKEhPU1RDRkxBR1MpIC1XbCwiLXUg X19FUlJPUiIgLW8gJEAgJDwKKyAgICAgICMgTmVlZCB0byByZWJ1aWxkIHRo aXMgaWYgImluY2x1ZGUvbGludXgvYXV0b2NvbmYuaCIgY2hhbmdlZDoKK3Nj cmlwdHMvZ3pwYXJhbTogc2NyaXB0cy9nenBhcmFtLmMgdm1saW51eCBGT1JD RQorCSQoY2FsbCBjbWQsZ3pwYXJhbSkKKworIyBNYXliZSBtb3ZlIGJ1aWxk aW5nIHRoaXMgdXRpbGl0eSBzb21ld2hlcmUgZWxzZT8KK3F1aWV0X2NtZF9n emNvcHkgPSBIT1NUQ0MgICRACisgICAgICBjbWRfZ3pjb3B5ID0gJChIT1NU Q0MpICQoSE9TVENGTEFHUykgLXMgLW8gJEAgJDwKK3NjcmlwdHMvZ3pjb3B5 OiBzY3JpcHRzL2d6Y29weS5jCisJJChjYWxsIGNtZCxnemNvcHkpCisKICMg VGhlIGFjdHVhbCBvYmplY3RzIGFyZSBnZW5lcmF0ZWQgd2hlbiBkZXNjZW5k aW5nLCAKICMgbWFrZSBzdXJlIG5vIGltcGxpY2l0IHJ1bGUga2lja3MgaW4K ICQoc29ydCAkKHZtbGludXgtaW5pdCkgJCh2bWxpbnV4LW1haW4pKSAkKHZt bGludXgtbGRzKTogJCh2bWxpbnV4LWRpcnMpIDsKQEAgLTEwMjEsNiArMTA5 Myw3IEBAIGVuZGlmICMgQ09ORklHX01PRFVMRVMKICMgRGlyZWN0b3JpZXMg JiBmaWxlcyByZW1vdmVkIHdpdGggJ21ha2UgY2xlYW4nCiBDTEVBTl9ESVJT ICArPSAkKE1PRFZFUkRJUikKIENMRUFOX0ZJTEVTICs9CXZtbGludXggU3lz dGVtLm1hcCBcCisgICAgICAgICAgICAgICAgdm1saW51eC5lbGYgdm1saW51 eC5lbGYuZ3ogc2NyaXB0cy9nenBhcmFtIHNjcmlwdHMvZ3pjb3B5IFwKICAg ICAgICAgICAgICAgICAudG1wX2thbGxzeW1zKiAudG1wX3ZlcnNpb24gLnRt cF92bWxpbnV4KiAudG1wX1N5c3RlbS5tYXAKIAogIyBEaXJlY3RvcmllcyAm IGZpbGVzIHJlbW92ZWQgd2l0aCAnbWFrZSBtcnByb3BlcicKQEAgLTExMDYs NiArMTE3OSw5IEBAIGhlbHA6CiAJQGVjaG8gICdPdGhlciBnZW5lcmljIHRh cmdldHM6JwogCUBlY2hvICAnICBhbGwJCSAgLSBCdWlsZCBhbGwgdGFyZ2V0 cyBtYXJrZWQgd2l0aCBbKl0nCiAJQGVjaG8gICcqIHZtbGludXgJICAtIEJ1 aWxkIHRoZSBiYXJlIGtlcm5lbCcKKwlAZWNobyAgIiAgL2Jvb3QvbGludXgt JChLRVJORUxSRUxFQVNFKS5rZ3ogLSBjcmVhdGUgYSBib290IGtlcm5lbCBm b3IgdGhlIEd1amluIGJvb3Rsb2FkZXIiCisJQGVjaG8gICcgIC9ib290L2xp bnV4LmtneiBST09UPS9kZXYvaGRhMSAgIC0gZG8gbm90IGF1dG9kZXRlY3Qg cm9vdCBmaWxlc3lzdGVtIGF0IGJvb3QgdGltZScKKwlAZWNobyAgJyAgL2Jv b3QvbGludXgua2d6IFJPT1Q9YXV0byAgICAgICAgLSByb290IGZpbGVzeXN0 ZW0gZnJvbSBjdXJyZW50IC9wcm9jL2NtZGxpbmUnCiAJQGVjaG8gICcqIG1v ZHVsZXMJICAtIEJ1aWxkIGFsbCBtb2R1bGVzJwogCUBlY2hvICAnICBtb2R1 bGVzX2luc3RhbGwgLSBJbnN0YWxsIGFsbCBtb2R1bGVzIHRvIElOU1RBTExf TU9EX1BBVEggKGRlZmF1bHQ6IC8pJwogCUBlY2hvICAnICBkaXIvICAgICAg ICAgICAgLSBCdWlsZCBhbGwgZmlsZXMgaW4gZGlyIGFuZCBiZWxvdycKZGlm ZiAtdXByTiAtWCBsaW51eC0yLjYuMjAvRG9jdW1lbnRhdGlvbi9kb250ZGlm ZiBsaW51eC0yLjYuMjAvRG9jdW1lbnRhdGlvbi9kb250ZGlmZiBsaW51eC0y LjYuMjAtZ3VqaW4vRG9jdW1lbnRhdGlvbi9kb250ZGlmZgotLS0gbGludXgt Mi42LjIwL0RvY3VtZW50YXRpb24vZG9udGRpZmYJMjAwNy0wMi0wNCAxODo0 NDo1NC4wMDAwMDAwMDAgKzAwMDAKKysrIGxpbnV4LTIuNi4yMC1ndWppbi9E b2N1bWVudGF0aW9uL2RvbnRkaWZmCTIwMDctMDItMDUgMjM6NDM6MDcuMDAw MDAwMDAwICswMDAwCkBAIC05Miw2ICs5Miw4IEBAIGdlbl9jcmMzMnRhYmxl CiBnZW5faW5pdF9jcGlvCiBnZW5rc3ltcwogZ2VudGJsCitnemNvcHkKK2d6 cGFyYW0KIGlrY29uZmlnLmgqCiBpbml0cmFtZnNfbGlzdAoga2FsbHN5bXMK QEAgLTEzOCw2ICsxNDAsOCBAQCB0cml4X2Jvb3QuaAogdXRzcmVsZWFzZS5o KgogdmVyc2lvbi5oKgogdm1saW51eAordm1saW51eC5lbGYKK3ZtbGludXgu ZWxmLmd6CiB2bWxpbnV4LSoKIHZtbGludXgubGRzCiB2c3lzY2FsbC5sZHMK --0-591523851-1170719770=:27613-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/