From owner-freebsd-acpi@FreeBSD.ORG Sun Jul 22 21:50:47 2012 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7D001106566C for ; Sun, 22 Jul 2012 21:50:47 +0000 (UTC) (envelope-from zbrdge@gmail.com) Received: from mail-lb0-f182.google.com (mail-lb0-f182.google.com [209.85.217.182]) by mx1.freebsd.org (Postfix) with ESMTP id 9F9948FC19 for ; Sun, 22 Jul 2012 21:50:46 +0000 (UTC) Received: by lbon10 with SMTP id n10so8952132lbo.13 for ; Sun, 22 Jul 2012 14:50:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=eohixAIuhcnA3JW/gRyYme93lYFyg3WICmX2wozOkk8=; b=cdwJgZNnvF+Uiq2AP49gAbJAr1ihgzQvk6JQutu03r1pXMEMJ+Vl1TiHC1YkUq0T31 RUXcbw3QvJmmajjRcz6Md+qGyQT5O7vJVo4OkuX+X5j21J7nAza0PSfaSOsAQAu8BNLF Ct17e2cTMBGBofLh/6pIjDQKCdWNGUmnvPTvBeuWblcwAyB8TuPNONu3pfbvefbvEcCB DFWrRTyZ1fZBQ/zsQwntu9UvF1AjPfvyAh6fKSB8OMNHcm82BGthMQkqxeuonMqgS7U3 E4gCZ4+OaR881dYa+uhm+DgqgqbK9vaj12q6gyb7uZ3HpcSixmRkS4xoa1cLtlcyK774 RVLA== MIME-Version: 1.0 Received: by 10.112.49.68 with SMTP id s4mr6604193lbn.27.1342993845403; Sun, 22 Jul 2012 14:50:45 -0700 (PDT) Received: by 10.112.47.230 with HTTP; Sun, 22 Jul 2012 14:50:45 -0700 (PDT) In-Reply-To: References: <201207021729413382845@gmail.com> <4FF2599B.6050409@gmail.com> <201207031411248300207@gmail.com> <1341437029.4017.5.camel@localhost> <2012072016090861869410@gmail.com> Date: Sun, 22 Jul 2012 14:50:45 -0700 Message-ID: From: Zack Breckenridge To: =?UTF-8?B?5LmU5qWa?= Content-Type: multipart/mixed; boundary=90e6ba308ef21743bd04c5721fd9 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-acpi Subject: Re: Re: Resume failed after Suspend on Thinkpad x201i X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jul 2012 21:50:47 -0000 --90e6ba308ef21743bd04c5721fd9 Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: quoted-printable Oops, there was an error with the attachment. Here's a second try. - Zack On Sun, Jul 22, 2012 at 2:45 PM, Zack Breckenridge wrote= : > Attached is the kernel configuration file I used to build my kernel > without VESA. > > I went through the same process as you: setting suspend bounce, etc., and > looking at the dmesg output. Again, I also looked at the witness output > from my Intel driver when resuming X -- and I noticed that it simply wasn= 't > able to reach the GPU. > > So I think it is some sort of bus error on resume and is related to our > different BIOSes. Since it worked for me, probably some int 10 call in VE= SA > was causing the error. In your case - not being able to issue commands to > an ATA device could also be a bus issue, caused by NOT calling the proper > INT 10 setup functions on resume. > > I'm going to build a debug kernel today and see if I can start tracking > the problem to it's root. > > - Zack > > On Sun, Jul 22, 2012 at 4:36 AM, =C7=C7=B3=FE wrot= e: > >> 2012/7/20 Zack Breckenridge : >> > If you look at the line: >> > >> > >> >> Jul 20 16:07:00 x201i kernel: vga0: calling BIOS POST >> > >> > in your dmesg output, and then grep through the source, you'll find >> this is >> > actually being printed >> > from "src/sys/dev/fb/vesa.c" . >> > >> > I had a similar problem. After syncing with FreeBSD 10-CURRENT and >> compiling >> > a kernel without >> > VESA support, I was able to get graphics to work on resume, but only >> when >> > running X. >> > >> > I don't think you actually have to sync with CURRENT though -- I think >> you >> > just need to compile without >> > VESA. I synced with CURRENT to get the newer Intel GMA driver and KMS >> > subsystem. Also, looking at >> > the Witness output from the Intel driver, it looks like the graphics >> card >> > simply isn't accessible after >> > this function in vesa.c is called, which means it probably causes the >> same >> > problem with your nvidia driver >> > as well. >> > >> > I believe this problem is related to the "x86bios_init_regs" function, >> > though I haven't had time to debug >> > it yet. Also, I'm running amd64. >> > >> > Try it out... >> > >> > - Zack >> > >> > On Fri, Jul 20, 2012 at 1:09 AM, =C7=C7=B3=FE/HonestQiao >> wrote: >> >> >> >> >On Sat, Jul 7, 2012 at 10:40 AM, Brandon Gooch >> >> > wrote: >> >> >> On Wed, Jul 4, 2012 at 4:23 PM, mbsd wrote: >> >> >>> On Tue, 2012-07-03 at 14:11 +0800, =C7=C7=B3=FE/HonestQiao wrote: >> >> >> [SNIP] >> >> >>>> >> >> >>>> In All the test, the screen is light and black, system is hangup= , >> >> >>>> nothing can be done. >> >> >>>> The only thing can be done, is push power button, to force it >> >> >>>> shutdown. >> >> >>> >> >> >>> Which graphic card have you used? If you have had nvidia, it's >> normal, >> >> >>> I've had the same problem "the screen is light and black". >> >> >> >> >> >> Can both of you show the output of `devinfo -v` from your systems? >> >> >> >> >> >> I was able to solve my suspend/resume issue with my nvidia-equippe= d >> >> >> notebook by forcing the module load ordering of vgapm in >> >> >> sys/isa/vga_isa.c: >> >> >> >> >> >> Index: sys/isa/vga_isa.c >> >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> >> >> --- sys/isa/vga_isa.c (revision 237779) >> >> >> +++ sys/isa/vga_isa.c (working copy) >> >> >> @@ -379,4 +379,4 @@ >> >> >> 0 >> >> >> }; >> >> >> >> >> >> -DRIVER_MODULE(vgapm, vgapci, vgapm_driver, vgapm_devclass, 0, 0); >> >> >> +DRIVER_MODULE(vgapm, vgapci, vgapm_driver, vgapm_devclass, 0, >> >> >> SI_ORDER_ANY); >> >> >> >> >> >> >> >> >> The system requires however that I load the nvidia module in >> >> >> /boot/loader.conf (as opposed to loading it after system is up and >> >> >> running). >> >> >> >> >> >> -Brandon >> >> > >> >> >Oops, the patch above should instead be: >> >> > >> >> >Index: sys/isa/vga_isa.c >> >> >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> >> >--- sys/isa/vga_isa.c (revision 238266) >> >> >+++ sys/isa/vga_isa.c (working copy) >> >> >@@ -379,4 +379,4 @@ >> >> > 0 >> >> > }; >> >> > >> >> >-DRIVER_MODULE(vgapm, vgapci, vgapm_driver, vgapm_devclass, 0, 0); >> >> >+DRIVER_MODULE_ORDERED(vgapm, vgapci, vgapm_driver, vgapm_devclass, >> >> >NULL, NULL, SI_ORDER_ANY); >> >> > >> >> >I made the edit for the diff on a clean tree, but I'm actually >> >> >building from another :) >> >> > >> >> >The above is correct. However, I'm still not sure this pertains to >> >> >your Intel video problem. >> >> > >> >> >-Brandon >> >> >> >> Yesterday, I upgrade my freebsd to FreeBSD 9.1-PRERELEASE. >> >> This method did not work. >> >> >> >> And command 'shutdown -p now' can shutdown the system, >> >> but the Screen is black and light, and Battery LED is light. >> >> This command can't power off. >> >> >> >> Whethe in: >> >> sysctl -w hw.acpi.reset_video=3D0 >> >> sysctl -w hw.pci.do_power_suspend=3D1 >> >> sysctl -w hw.pci.do_power_resume=3D1 >> >> Or in: >> >> sysctl -w hw.acpi.reset_video=3D0 >> >> sysctl -w hw.pci.do_power_suspend=3D1 >> >> sysctl -w hw.pci.do_power_resume=3D1 >> >> >> >> I can execute acpiconf -s 3, but can't resume the screen which is bla= ck >> >> and light. >> >> >> >> Log for command 'acpiconf -s 3': >> >> >> >> Jul 20 16:06:53 x201i acpi: suspend at 20120720 16:06:53 >> >> Jul 20 16:06:56 x201i kernel: acpi_timer0: switching timecounter, >> TSC-low >> >> -> ACPI-safe >> >> Jul 20 16:06:56 x201i kernel: (ada0:ahcich0:0:0:0): spin-down >> >> Jul 20 16:07:00 x201i kernel: acpi_lid0: wake_prep enabled for >> \_SB_.LID_ >> >> (S3) >> >> Jul 20 16:07:00 x201i kernel: acpi_button0: wake_prep enabled for >> >> \_SB_.SLPB (S3) >> >> Jul 20 16:07:00 x201i kernel: uhub0: at usbus0, port 1, addr 1 >> >> (disconnected) >> >> Jul 20 16:07:00 x201i kernel: ugen0.2: at usbus0 >> >> (disconnected) >> >> Jul 20 16:07:00 x201i kernel: uhub2: at uhub0, port 1, addr 2 >> >> (disconnected) >> >> Jul 20 16:07:00 x201i kernel: pci0:0:28:0: Transition from D0 to D3 >> >> Jul 20 16:07:00 x201i kernel: pci0:0:28:3: Transition from D0 to D3 >> >> Jul 20 16:07:00 x201i kernel: wlan0: link state changed to DOWN >> >> Jul 20 16:07:00 x201i kernel: pci0:2:0:0: Transition from D0 to D3 >> >> Jul 20 16:07:00 x201i kernel: pci0:0:28:4: Transition from D0 to D3 >> >> Jul 20 16:07:00 x201i kernel: uhub1: at usbus1, port 1, addr 1 >> >> (disconnected) >> >> Jul 20 16:07:00 x201i kernel: ugen1.2: at usbus1 >> >> (disconnected) >> >> Jul 20 16:07:00 x201i kernel: uhub3: at uhub1, port 1, addr 2 >> >> (disconnected) >> >> Jul 20 16:07:00 x201i kernel: vga0: saving 4804 bytes of video state >> >> Jul 20 16:07:00 x201i kernel: vga0: saving color palette >> >> Jul 20 16:07:00 x201i kernel: pci0: failed to set ACPI power state D2 >> on >> >> \_SB_.PCI0.EXP1: AE_BAD_PARAMETER >> >> Jul 20 16:07:00 x201i kernel: pci0: failed to set ACPI power state D2 >> on >> >> \_SB_.PCI0.EXP4: AE_BAD_PARAMETER >> >> Jul 20 16:07:00 x201i kernel: pci0: failed to set ACPI power state D2 >> on >> >> \_SB_.PCI0.EXP5: AE_BAD_PARAMETER >> >> Jul 20 16:07:00 x201i kernel: acpi_lid0: wake_prep enabled for >> \_SB_.LID_ >> >> (S3) >> >> Jul 20 16:07:00 x201i kernel: acpi_button0: wake_prep enabled for >> >> \_SB_.SLPB (S3) >> >> Jul 20 16:07:00 x201i kernel: pci255: set ACPI power state D0 on >> >> \_SB_.UNCR.SAD_ >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.VID_ >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.IGBE >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.EHC2 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.HDEF >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.EXP1 >> >> Jul 20 16:07:00 x201i kernel: pci0:0:28:0: Transition from D3 to D0 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.EXP4 >> >> Jul 20 16:07:00 x201i kernel: pci0:0:28:3: Transition from D3 to D0 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.EXP5 >> >> Jul 20 16:07:00 x201i kernel: pci0:0:28:4: Transition from D3 to D0 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.EHC1 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.PCI1 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.LPC_ >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.SAT1 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.EXP1 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.EXP4 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.EXP5 >> >> Jul 20 16:07:00 x201i kernel: pci0:2:0:0: Transition from D3 to D0 >> >> Jul 20 16:07:00 x201i kernel: pci0: set ACPI power state D0 on >> >> \_SB_.PCI0.PCI1 >> >> Jul 20 16:07:00 x201i kernel: vga0: calling BIOS POST >> >> Jul 20 16:07:00 x201i kernel: ahcich0: AHCI reset... >> >> Jul 20 16:07:00 x201i kernel: ahcich0: SATA connect time=3D100us >> >> status=3D00000123 >> >> Jul 20 16:07:00 x201i kernel: ahcich0: AHCI reset: device found >> >> Jul 20 16:07:00 x201i kernel: ahcich1: AHCI reset... >> >> Jul 20 16:07:00 x201i kernel: ahcich1: SATA connect timeout >> time=3D10000us >> >> status=3D00000000 >> >> Jul 20 16:07:00 x201i kernel: ahcich1: AHCI reset: device not found >> >> Jul 20 16:07:00 x201i kernel: ahcich4: AHCI reset... >> >> Jul 20 16:07:00 x201i kernel: ahcich4: SATA connect timeout >> time=3D10000us >> >> status=3D00000000 >> >> Jul 20 16:07:00 x201i kernel: ahcich4: AHCI reset: device not found >> >> Jul 20 16:07:00 x201i kernel: ahcich5: AHCI reset... >> >> Jul 20 16:07:00 x201i kernel: ahcich5: SATA connect timeout >> time=3D10000us >> >> status=3D00000000 >> >> Jul 20 16:07:00 x201i kernel: ahcich5: AHCI reset: device not found >> >> Jul 20 16:07:00 x201i kernel: atkbd: the current kbd controller comma= nd >> >> byte 0047 >> >> Jul 20 16:07:00 x201i kernel: atkbd: keyboard ID 0x54ab (2) >> >> Jul 20 16:07:00 x201i kernel: kbdc: RESET_KBD return code:00fa >> >> Jul 20 16:07:00 x201i kernel: kbdc: RESET_KBD status:00aa >> >> Jul 20 16:07:00 x201i kernel: kbdc: TEST_AUX_PORT status:0000 >> >> Jul 20 16:07:00 x201i kernel: kbdc: RESET_AUX return code:00fa >> >> Jul 20 16:07:00 x201i kernel: kbdc: RESET_AUX status:00aa >> >> Jul 20 16:07:00 x201i kernel: kbdc: RESET_AUX ID:0000 >> >> Jul 20 16:07:00 x201i kernel: battery0: battery initialization start >> >> Jul 20 16:07:00 x201i kernel: ahcich0: AHCI reset: device ready after >> >> 100ms >> >> Jul 20 16:07:00 x201i kernel: battery0: battery initialization done, >> tried >> >> 1 times >> >> Jul 20 16:07:00 x201i kernel: (ada0:ahcich0:0:0:0): resume >> >> Jul 20 16:07:00 x201i kernel: acpi_timer0: restoring timecounter, >> >> ACPI-safe -> TSC-low >> >> Jul 20 16:07:00 x201i kernel: uhub0: > rev >> >> 2.00/1.00, addr 1> on usbus1 >> >> Jul 20 16:07:00 x201i kernel: uhub1: > rev >> >> 2.00/1.00, addr 1> on usbus0 >> >> Jul 20 16:07:00 x201i kernel: wlan0: link state changed to UP >> >> Jul 20 16:07:00 x201i kernel: uhub0: 3 ports with 3 removable, self >> >> powered >> >> Jul 20 16:07:00 x201i kernel: uhub1: 3 ports with 3 removable, self >> >> powered >> >> Jul 20 16:06:57 x201i wpa_supplicant[525]: CTRL-EVENT-DISCONNECTED >> >> bssid=3Dc0:c5:20:1b:59:aa reason=3D0 >> >> Jul 20 16:06:57 x201i wpa_supplicant[525]: Failed to initiate AP scan= . >> >> Jul 20 16:06:59 x201i acpi: resumed at 20120720 16:06:59 >> >> Jul 20 16:06:59 x201i wpa_supplicant[525]: Trying to associate with >> >> c0:c5:20:1b:69:8a (SSID=3D'LITB-AP' freq=3D2417 MHz) >> >> Jul 20 16:07:00 x201i wpa_supplicant[525]: Associated with >> >> c0:c5:20:1b:69:8a >> >> Jul 20 16:07:00 x201i wpa_supplicant[525]: WPA: Key negotiation >> completed >> >> with c0:c5:20:1b:69:8a [PTK=3DCCMP GTK=3DCCMP] >> >> Jul 20 16:07:00 x201i wpa_supplicant[525]: CTRL-EVENT-CONNECTED - >> >> Connection to c0:c5:20:1b:69:8a completed (reauth) [id=3D0 id_str=3D] >> >> Jul 20 16:07:00 x201i dhclient: New IP Address (wlan0): 192.168.61.18= 4 >> >> Jul 20 16:07:00 x201i dhclient: New Subnet Mask (wlan0): 255.255.255.= 0 >> >> Jul 20 16:07:00 x201i dhclient: New Broadcast Address (wlan0): >> >> 192.168.61.255 >> >> Jul 20 16:07:00 x201i dhclient: New Routers (wlan0): 192.168.61.1 >> >> Jul 20 16:07:01 x201i kernel: ugen1.2: at usbus1 >> >> Jul 20 16:07:01 x201i kernel: uhub2: > class >> >> 9/0, rev 2.00/0.00, addr 2> on usbus1 >> >> Jul 20 16:07:01 x201i kernel: ugen0.2: at usbus0 >> >> Jul 20 16:07:01 x201i kernel: uhub3: > class >> >> 9/0, rev 2.00/0.00, addr 2> on usbus0 >> >> Jul 20 16:07:02 x201i kernel: uhub3: 6 ports with 6 removable, self >> >> powered >> >> Jul 20 16:07:02 x201i kernel: uhub2: 8 ports with 8 removable, self >> >> powered >> >> >> >> _______________________________________________ >> >> freebsd-acpi@freebsd.org mailing list >> >> http://lists.freebsd.org/mailman/listinfo/freebsd-acpi >> >> To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@freebsd.or= g >> " >> >> >> > >> >> Today , I build my kernel disabled vesa. >> Now , there has so many error messages in dmesg: >> Jul 22 16:42:18 x201i kernel: ACPI Error: No object attached to node >> 0xfffffe00029a6780 (20110527/exresnte-139) >> Jul 22 16:42:18 x201i kernel: ACPI Error: Method execution failed >> [\_SB_.PCI0.LPC_.EC__.BAT0._HID] (Node 0xfffffe00029a6780), >> AE_AML_NO_OPERAND (20110527/uteval-113) >> >> >> >> When I test acpiconf -s 3, it's hangup: >> #sysctl debug.acpi.suspend_bounce=3D1 >> #acpiconf -s 3 >> ahcich0: AHCI reset: device not ready after 31000ms (tfd =3D 00000080) >> ahcich0: Timeout on slot 12 port 0 >> ...... >> achich0: AHCI reset ... >> ahcich0: SATA connect time=3D100us status=3D0000123 >> ahcich0: AHCI reset: device found >> (aprobe0:ahchih0:0:0:0): ATA_IDENTIFY. ACB: ec 00 00 00 00 40 00 00 00 0= 0 >> 00 00 >> (aprobe0:ahchih0:0:0:0): CAM status: command timeout >> (aprobe0:ahchih0:0:0:0): Error 5, Retry was blocked >> >> reboot by push power button: >> #sysctl debug.acpi.suspend_bounce=3D0 >> #acpiconf -s 3 >> It's will suspend, and sleep LED will light. >> But can't resume. No button can resume it. >> > > --90e6ba308ef21743bd04c5721fd9 Content-Type: application/octet-stream; name=NOVESA Content-Disposition: attachment; filename=NOVESA Content-Transfer-Encoding: base64 X-Attachment-Id: f_h4ynu0kd0 IwojIEdFTkVSSUMgLS0gR2VuZXJpYyBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIGZvciBGcmVl QlNEL2FtZDY0CiMKIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGZpbGUsIHBsZWFzZSBy ZWFkIHRoZSBjb25maWcoNSkgbWFudWFsIHBhZ2UsCiMgYW5kL29yIHRoZSBoYW5kYm9vayBzZWN0 aW9uIG9uIEtlcm5lbCBDb25maWd1cmF0aW9uIEZpbGVzOgojCiMgICAgaHR0cDovL3d3dy5GcmVl QlNELm9yZy9kb2MvZW5fVVMuSVNPODg1OS0xL2Jvb2tzL2hhbmRib29rL2tlcm5lbGNvbmZpZy1j b25maWcuaHRtbAojCiMgVGhlIGhhbmRib29rIGlzIGFsc28gYXZhaWxhYmxlIGxvY2FsbHkgaW4g L3Vzci9zaGFyZS9kb2MvaGFuZGJvb2sKIyBpZiB5b3UndmUgaW5zdGFsbGVkIHRoZSBkb2MgZGlz dHJpYnV0aW9uLCBvdGhlcndpc2UgYWx3YXlzIHNlZSB0aGUKIyBGcmVlQlNEIFdvcmxkIFdpZGUg V2ViIHNlcnZlciAoaHR0cDovL3d3dy5GcmVlQlNELm9yZy8pIGZvciB0aGUKIyBsYXRlc3QgaW5m b3JtYXRpb24uCiMKIyBBbiBleGhhdXN0aXZlIGxpc3Qgb2Ygb3B0aW9ucyBhbmQgbW9yZSBkZXRh aWxlZCBleHBsYW5hdGlvbnMgb2YgdGhlCiMgZGV2aWNlIGxpbmVzIGlzIGFsc28gcHJlc2VudCBp biB0aGUgLi4vLi4vY29uZi9OT1RFUyBhbmQgTk9URVMgZmlsZXMuCiMgSWYgeW91IGFyZSBpbiBk b3VidCBhcyB0byB0aGUgcHVycG9zZSBvciBuZWNlc3NpdHkgb2YgYSBsaW5lLCBjaGVjayBmaXJz dAojIGluIE5PVEVTLgojCiMgJEZyZWVCU0Q6IHNyYy9zeXMvYW1kNjQvY29uZi9HRU5FUklDLHYg MS41OTEgMjAxMi8wNi8xOSAwNzozNDoxMyBucCBFeHAgJAoKY3B1CQlIQU1NRVIKaWRlbnQJCU5P VkVTQQoKbWFrZW9wdGlvbnMJREVCVUc9LWcJCSMgQnVpbGQga2VybmVsIHdpdGggZ2RiKDEpIGRl YnVnIHN5bWJvbHMKbWFrZW9wdGlvbnMJV0lUSF9DVEY9MQkJIyBSdW4gY3RmY29udmVydCgxKSBm b3IgRFRyYWNlIHN1cHBvcnQKCm9wdGlvbnMgCVNDSEVEX1VMRQkJIyBVTEUgc2NoZWR1bGVyCm9w dGlvbnMgCVBSRUVNUFRJT04JCSMgRW5hYmxlIGtlcm5lbCB0aHJlYWQgcHJlZW1wdGlvbgpvcHRp b25zIAlJTkVUCQkJIyBJbnRlck5FVHdvcmtpbmcKb3B0aW9ucyAJSU5FVDYJCQkjIElQdjYgY29t bXVuaWNhdGlvbnMgcHJvdG9jb2xzCm9wdGlvbnMgCVRDUF9PRkZMT0FECQkjIFRDUCBvZmZsb2Fk Cm9wdGlvbnMgCVNDVFAJCQkjIFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbApv cHRpb25zIAlGRlMJCQkjIEJlcmtlbGV5IEZhc3QgRmlsZXN5c3RlbQpvcHRpb25zIAlTT0ZUVVBE QVRFUwkJIyBFbmFibGUgRkZTIHNvZnQgdXBkYXRlcyBzdXBwb3J0Cm9wdGlvbnMgCVVGU19BQ0wJ CQkjIFN1cHBvcnQgZm9yIGFjY2VzcyBjb250cm9sIGxpc3RzCm9wdGlvbnMgCVVGU19ESVJIQVNI CQkjIEltcHJvdmUgcGVyZm9ybWFuY2Ugb24gYmlnIGRpcmVjdG9yaWVzCm9wdGlvbnMgCVVGU19H Sk9VUk5BTAkJIyBFbmFibGUgZ2pvdXJuYWwtYmFzZWQgVUZTIGpvdXJuYWxpbmcKb3B0aW9ucyAJ TURfUk9PVAkJCSMgTUQgaXMgYSBwb3RlbnRpYWwgcm9vdCBkZXZpY2UKb3B0aW9ucyAJTkZTQ0wJ CQkjIE5ldyBOZXR3b3JrIEZpbGVzeXN0ZW0gQ2xpZW50Cm9wdGlvbnMgCU5GU0QJCQkjIE5ldyBO ZXR3b3JrIEZpbGVzeXN0ZW0gU2VydmVyCm9wdGlvbnMgCU5GU0xPQ0tECQkjIE5ldHdvcmsgTG9j ayBNYW5hZ2VyCm9wdGlvbnMgCU5GU19ST09UCQkjIE5GUyB1c2FibGUgYXMgLywgcmVxdWlyZXMg TkZTQ0wKb3B0aW9ucyAJTVNET1NGUwkJCSMgTVNET1MgRmlsZXN5c3RlbQpvcHRpb25zIAlDRDk2 NjAJCQkjIElTTyA5NjYwIEZpbGVzeXN0ZW0Kb3B0aW9ucyAJUFJPQ0ZTCQkJIyBQcm9jZXNzIGZp bGVzeXN0ZW0gKHJlcXVpcmVzIFBTRVVET0ZTKQpvcHRpb25zIAlQU0VVRE9GUwkJIyBQc2V1ZG8t ZmlsZXN5c3RlbSBmcmFtZXdvcmsKb3B0aW9ucyAJR0VPTV9QQVJUX0dQVAkJIyBHVUlEIFBhcnRp dGlvbiBUYWJsZXMuCm9wdGlvbnMgCUdFT01fUkFJRAkJIyBTb2Z0IFJBSUQgZnVuY3Rpb25hbGl0 eS4Kb3B0aW9ucyAJR0VPTV9MQUJFTAkJIyBQcm92aWRlcyBsYWJlbGl6YXRpb24Kb3B0aW9ucyAJ Q09NUEFUX0ZSRUVCU0QzMgkjIENvbXBhdGlibGUgd2l0aCBpMzg2IGJpbmFyaWVzCm9wdGlvbnMg CUNPTVBBVF9GUkVFQlNENAkJIyBDb21wYXRpYmxlIHdpdGggRnJlZUJTRDQKb3B0aW9ucyAJQ09N UEFUX0ZSRUVCU0Q1CQkjIENvbXBhdGlibGUgd2l0aCBGcmVlQlNENQpvcHRpb25zIAlDT01QQVRf RlJFRUJTRDYJCSMgQ29tcGF0aWJsZSB3aXRoIEZyZWVCU0Q2Cm9wdGlvbnMgCUNPTVBBVF9GUkVF QlNENwkJIyBDb21wYXRpYmxlIHdpdGggRnJlZUJTRDcKb3B0aW9ucyAJU0NTSV9ERUxBWT01MDAw CQkjIERlbGF5IChpbiBtcykgYmVmb3JlIHByb2JpbmcgU0NTSQpvcHRpb25zIAlLVFJBQ0UJCQkj IGt0cmFjZSgxKSBzdXBwb3J0Cm9wdGlvbnMgCVNUQUNLCQkJIyBzdGFjayg5KSBzdXBwb3J0Cm9w dGlvbnMgCVNZU1ZTSE0JCQkjIFNZU1Ytc3R5bGUgc2hhcmVkIG1lbW9yeQpvcHRpb25zIAlTWVNW TVNHCQkJIyBTWVNWLXN0eWxlIG1lc3NhZ2UgcXVldWVzCm9wdGlvbnMgCVNZU1ZTRU0JCQkjIFNZ U1Ytc3R5bGUgc2VtYXBob3JlcwpvcHRpb25zIAlfS1BPU0lYX1BSSU9SSVRZX1NDSEVEVUxJTkcg IyBQT1NJWCBQMTAwM18xQiByZWFsLXRpbWUgZXh0ZW5zaW9ucwpvcHRpb25zIAlQUklOVEZfQlVG Ul9TSVpFPTEyOAkjIFByZXZlbnQgcHJpbnRmIG91dHB1dCBiZWluZyBpbnRlcnNwZXJzZWQuCm9w dGlvbnMgCUtCRF9JTlNUQUxMX0NERVYJIyBpbnN0YWxsIGEgQ0RFViBlbnRyeSBpbiAvZGV2Cm9w dGlvbnMgCUhXUE1DX0hPT0tTCQkjIE5lY2Vzc2FyeSBrZXJuZWwgaG9va3MgZm9yIGh3cG1jKDQp Cm9wdGlvbnMgCUFVRElUCQkJIyBTZWN1cml0eSBldmVudCBhdWRpdGluZwpvcHRpb25zIAlDQVBB QklMSVRZX01PREUJCSMgQ2Fwc2ljdW0gY2FwYWJpbGl0eSBtb2RlCm9wdGlvbnMgCUNBUEFCSUxJ VElFUwkJIyBDYXBzaWN1bSBjYXBhYmlsaXRpZXMKb3B0aW9ucyAJTUFDCQkJIyBUcnVzdGVkQlNE IE1BQyBGcmFtZXdvcmsKb3B0aW9ucyAJS0RUUkFDRV9GUkFNRQkJIyBFbnN1cmUgZnJhbWVzIGFy ZSBjb21waWxlZCBpbgpvcHRpb25zIAlLRFRSQUNFX0hPT0tTCQkjIEtlcm5lbCBEVHJhY2UgaG9v a3MKb3B0aW9ucyAJRERCX0NURgkJCSMgS2VybmVsIEVMRiBsaW5rZXIgbG9hZHMgQ1RGIGRhdGEK b3B0aW9ucyAJSU5DTFVERV9DT05GSUdfRklMRSAgICAgIyBJbmNsdWRlIHRoaXMgZmlsZSBpbiBr ZXJuZWwKCiMgRGVidWdnaW5nIHN1cHBvcnQuICBBbHdheXMgbmVlZCB0aGlzOgpvcHRpb25zIAlL REIJCQkjIEVuYWJsZSBrZXJuZWwgZGVidWdnZXIgc3VwcG9ydC4KIyBGb3IgbWluaW11bSBkZWJ1 Z2dlciBzdXBwb3J0IChzdGFibGUgYnJhbmNoKSB1c2U6CiNvcHRpb25zIAlLREJfVFJBQ0UJCSMg UHJpbnQgYSBzdGFjayB0cmFjZSBmb3IgYSBwYW5pYy4KIyBGb3IgZnVsbCBkZWJ1Z2dlciBzdXBw b3J0IHVzZSB0aGlzIGluc3RlYWQ6Cm9wdGlvbnMgCUREQgkJCSMgU3VwcG9ydCBEREIuCm9wdGlv bnMgCUdEQgkJCSMgU3VwcG9ydCByZW1vdGUgR0RCLgpvcHRpb25zIAlERUFETEtSRVMJCSMgRW5h YmxlIHRoZSBkZWFkbG9jayByZXNvbHZlcgpvcHRpb25zIAlJTlZBUklBTlRTCQkjIEVuYWJsZSBj YWxscyBvZiBleHRyYSBzYW5pdHkgY2hlY2tpbmcKb3B0aW9ucyAJSU5WQVJJQU5UX1NVUFBPUlQJ IyBFeHRyYSBzYW5pdHkgY2hlY2tzIG9mIGludGVybmFsIHN0cnVjdHVyZXMsIHJlcXVpcmVkIGJ5 IElOVkFSSUFOVFMKb3B0aW9ucyAJV0lUTkVTUwkJCSMgRW5hYmxlIGNoZWNrcyB0byBkZXRlY3Qg ZGVhZGxvY2tzIGFuZCBjeWNsZXMKb3B0aW9ucyAJV0lUTkVTU19TS0lQU1BJTgkjIERvbid0IHJ1 biB3aXRuZXNzIG9uIHNwaW5sb2NrcyBmb3Igc3BlZWQKb3B0aW9ucyAJTUFMTE9DX0RFQlVHX01B WFpPTkVTPTgJIyBTZXBhcmF0ZSBtYWxsb2MoOSkgem9uZXMKCiMgTWFrZSBhbiBTTVAtY2FwYWJs ZSBrZXJuZWwgYnkgZGVmYXVsdApvcHRpb25zIAlTTVAJCQkjIFN5bW1ldHJpYyBNdWx0aVByb2Nl c3NvciBLZXJuZWwKCiMgQ1BVIGZyZXF1ZW5jeSBjb250cm9sCmRldmljZQkJY3B1ZnJlcQoKIyBC dXMgc3VwcG9ydC4KZGV2aWNlCQlhY3BpCmRldmljZQkJcGNpCgojIEZsb3BweSBkcml2ZXMKZGV2 aWNlCQlmZGMKCiMgQVRBIGNvbnRyb2xsZXJzCmRldmljZQkJYWhjaQkJIyBBSENJLWNvbXBhdGli bGUgU0FUQSBjb250cm9sbGVycwpkZXZpY2UJCWF0YQkJIyBMZWdhY3kgQVRBL1NBVEEgY29udHJv bGxlcnMKb3B0aW9ucyAJQVRBX0NBTQkJIyBIYW5kbGUgbGVnYWN5IGNvbnRyb2xsZXJzIHdpdGgg Q0FNCm9wdGlvbnMgCUFUQV9TVEFUSUNfSUQJIyBTdGF0aWMgZGV2aWNlIG51bWJlcmluZwpkZXZp Y2UJCW12cwkJIyBNYXJ2ZWxsIDg4U1g1MFhYLzg4U1g2MFhYLzg4U1g3MFhYL1NvQyBTQVRBCmRl dmljZQkJc2lpcwkJIyBTaWxpY29uSW1hZ2UgU2lJMzEyNC9TaUkzMTMyL1NpSTM1MzEgU0FUQQoK IyBTQ1NJIENvbnRyb2xsZXJzCmRldmljZQkJYWhjCQkjIEFIQTI5NDAgYW5kIG9uYm9hcmQgQUlD N3h4eCBkZXZpY2VzCm9wdGlvbnMgCUFIQ19SRUdfUFJFVFRZX1BSSU5UCSMgUHJpbnQgcmVnaXN0 ZXIgYml0ZmllbGRzIGluIGRlYnVnCgkJCQkJIyBvdXRwdXQuICBBZGRzIH4xMjhrIHRvIGRyaXZl ci4KZGV2aWNlCQlhaGQJCSMgQUhBMzkzMjAvMjkzMjAgYW5kIG9uYm9hcmQgQUlDNzl4eCBkZXZp Y2VzCm9wdGlvbnMgCUFIRF9SRUdfUFJFVFRZX1BSSU5UCSMgUHJpbnQgcmVnaXN0ZXIgYml0Zmll bGRzIGluIGRlYnVnCgkJCQkJIyBvdXRwdXQuICBBZGRzIH4yMTVrIHRvIGRyaXZlci4KZGV2aWNl CQllc3AJCSMgQU1EIEFtNTNDOTc0IChUZWtyYW0gREMtMzkwKFQpKQpkZXZpY2UJCWhwdGlvcAkJ IyBIaWdocG9pbnQgUm9ja2V0UmFpZCAzeHh4IHNlcmllcwpkZXZpY2UJCWlzcAkJIyBRbG9naWMg ZmFtaWx5CiNkZXZpY2UJCWlzcGZ3CQkjIEZpcm13YXJlIGZvciBRTG9naWMgSEJBcy0gbm9ybWFs bHkgYSBtb2R1bGUKZGV2aWNlCQltcHQJCSMgTFNJLUxvZ2ljIE1QVC1GdXNpb24KZGV2aWNlCQlt cHMJCSMgTFNJLUxvZ2ljIE1QVC1GdXNpb24gMgojZGV2aWNlCQluY3IJCSMgTkNSL1N5bWJpb3Mg TG9naWMKZGV2aWNlCQlzeW0JCSMgTkNSL1N5bWJpb3MgTG9naWMgKG5ld2VyIGNoaXBzZXRzICsg dGhvc2Ugb2YgYG5jcicpCmRldmljZQkJdHJtCQkjIFRla3JhbSBEQzM5NVUvVVcvRiBEQzMxNVUg YWRhcHRlcnMKCmRldmljZQkJYWR2CQkjIEFkdmFuc3lzIFNDU0kgYWRhcHRlcnMKZGV2aWNlCQlh ZHcJCSMgQWR2YW5zeXMgd2lkZSBTQ1NJIGFkYXB0ZXJzCmRldmljZQkJYWljCQkjIEFkYXB0ZWMg MTVbMDEyXXggU0NTSSBhZGFwdGVycywgQUlDLTZbMjNdNjAuCmRldmljZQkJYnQJCSMgQnVzbG9n aWMvTXlsZXggTXVsdGlNYXN0ZXIgU0NTSSBhZGFwdGVycwpkZXZpY2UJCWlzY2kJCSMgSW50ZWwg QzYwMCBTQVMgY29udHJvbGxlcgoKIyBBVEEvU0NTSSBwZXJpcGhlcmFscwpkZXZpY2UJCXNjYnVz CQkjIFNDU0kgYnVzIChyZXF1aXJlZCBmb3IgQVRBL1NDU0kpCmRldmljZQkJY2gJCSMgU0NTSSBt ZWRpYSBjaGFuZ2VycwpkZXZpY2UJCWRhCQkjIERpcmVjdCBBY2Nlc3MgKGRpc2tzKQpkZXZpY2UJ CXNhCQkjIFNlcXVlbnRpYWwgQWNjZXNzICh0YXBlIGV0YykKZGV2aWNlCQljZAkJIyBDRApkZXZp Y2UJCXBhc3MJCSMgUGFzc3Rocm91Z2ggZGV2aWNlIChkaXJlY3QgQVRBL1NDU0kgYWNjZXNzKQpk ZXZpY2UJCXNlcwkJIyBFbmNsb3N1cmUgU2VydmljZXMgKFNFUyBhbmQgU0FGLVRFKQpkZXZpY2UJ CWN0bAkJIyBDQU0gVGFyZ2V0IExheWVyCgojIFJBSUQgY29udHJvbGxlcnMgaW50ZXJmYWNlZCB0 byB0aGUgU0NTSSBzdWJzeXN0ZW0KZGV2aWNlCQlhbXIJCSMgQU1JIE1lZ2FSQUlECmRldmljZQkJ YXJjbXNyCQkjIEFyZWNhIFNBVEEgSUkgUkFJRAojWFhYIGl0IGlzIG5vdCA2NC1iaXQgY2xlYW4s IC1zY290dGwKI2RldmljZQkJYXNyCQkjIERQVCBTbWFydFJBSUQgViwgVkkgYW5kIEFkYXB0ZWMg U0NTSSBSQUlECmRldmljZQkJY2lzcwkJIyBDb21wYXEgU21hcnQgUkFJRCA1KgpkZXZpY2UJCWRw dAkJIyBEUFQgU21hcnRjYWNoZSBJSUksIElWIC0gU2VlIE5PVEVTIGZvciBvcHRpb25zCmRldmlj ZQkJaHB0bXYJCSMgSGlnaHBvaW50IFJvY2tldFJBSUQgMTgyeApkZXZpY2UJCWhwdHJyCQkjIEhp Z2hwb2ludCBSb2NrZXRSQUlEIDE3eHgsIDIyeHgsIDIzeHgsIDI1eHgKZGV2aWNlCQlpaXIJCSMg SW50ZWwgSW50ZWdyYXRlZCBSQUlECmRldmljZQkJaXBzCQkjIElCTSAoQWRhcHRlYykgU2VydmVS QUlECmRldmljZQkJbWx5CQkjIE15bGV4IEFjY2VsZVJBSUQvZVh0cmVtZVJBSUQKZGV2aWNlCQl0 d2EJCSMgM3dhcmUgOTAwMCBzZXJpZXMgUEFUQS9TQVRBIFJBSUQKCiMgUkFJRCBjb250cm9sbGVy cwpkZXZpY2UJCWFhYwkJIyBBZGFwdGVjIEZTQSBSQUlECmRldmljZQkJYWFjcAkJIyBTQ1NJIHBh c3N0aHJvdWdoIGZvciBhYWMgKHJlcXVpcmVzIENBTSkKZGV2aWNlCQlpZGEJCSMgQ29tcGFxIFNt YXJ0IFJBSUQKZGV2aWNlCQltZmkJCSMgTFNJIE1lZ2FSQUlEIFNBUwpkZXZpY2UJCW1seAkJIyBN eWxleCBEQUM5NjAgZmFtaWx5CiNYWFggcG9pbnRlci9pbnQgd2FybmluZ3MKI2RldmljZQkJcHN0 CQkjIFByb21pc2UgU3VwZXJ0cmFrIFNYNjAwMApkZXZpY2UJCXR3ZQkJIyAzd2FyZSBBVEEgUkFJ RApkZXZpY2UJCXR3cwkJIyBMU0kgM3dhcmUgOTc1MCBTQVRBK1NBUyA2R2IvcyBSQUlEIGNvbnRy b2xsZXIKCiMgYXRrYmRjMCBjb250cm9scyBib3RoIHRoZSBrZXlib2FyZCBhbmQgdGhlIFBTLzIg bW91c2UKZGV2aWNlCQlhdGtiZGMJCSMgQVQga2V5Ym9hcmQgY29udHJvbGxlcgpkZXZpY2UJCWF0 a2JkCQkjIEFUIGtleWJvYXJkCmRldmljZQkJcHNtCQkjIFBTLzIgbW91c2UKCmRldmljZQkJa2Jk bXV4CQkjIGtleWJvYXJkIG11bHRpcGxleGVyCgpkZXZpY2UJCXZnYQkJIyBWR0EgdmlkZW8gY2Fy ZCBkcml2ZXIKI29wdGlvbnMgCVZFU0EJCSMgQWRkIHN1cHBvcnQgZm9yIFZFU0EgQklPUyBFeHRl bnNpb25zIChWQkUpCgpkZXZpY2UJCXNwbGFzaAkJIyBTcGxhc2ggc2NyZWVuIGFuZCBzY3JlZW4g c2F2ZXIgc3VwcG9ydAoKIyBzeXNjb25zIGlzIHRoZSBkZWZhdWx0IGNvbnNvbGUgZHJpdmVyLCBy ZXNlbWJsaW5nIGFuIFNDTyBjb25zb2xlCmRldmljZQkJc2MKb3B0aW9ucyAJU0NfUElYRUxfTU9E RQkjIGFkZCBzdXBwb3J0IGZvciB0aGUgcmFzdGVyIHRleHQgbW9kZQoKZGV2aWNlCQlhZ3AJCSMg c3VwcG9ydCBzZXZlcmFsIEFHUCBjaGlwc2V0cwoKIyBQQ0NBUkQgKFBDTUNJQSkgc3VwcG9ydAoj IFBDTUNJQSBhbmQgY2FyZGJ1cyBicmlkZ2Ugc3VwcG9ydApkZXZpY2UJCWNiYgkJIyBjYXJkYnVz ICh5ZW50YSkgYnJpZGdlCmRldmljZQkJcGNjYXJkCQkjIFBDIENhcmQgKDE2LWJpdCkgYnVzCmRl dmljZQkJY2FyZGJ1cwkJIyBDYXJkQnVzICgzMi1iaXQpIGJ1cwoKIyBTZXJpYWwgKENPTSkgcG9y dHMKZGV2aWNlCQl1YXJ0CQkjIEdlbmVyaWMgVUFSVCBkcml2ZXIKCiMgUGFyYWxsZWwgcG9ydApk ZXZpY2UJCXBwYwpkZXZpY2UJCXBwYnVzCQkjIFBhcmFsbGVsIHBvcnQgYnVzIChyZXF1aXJlZCkK ZGV2aWNlCQlscHQJCSMgUHJpbnRlcgpkZXZpY2UJCXBsaXAJCSMgVENQL0lQIG92ZXIgcGFyYWxs ZWwKZGV2aWNlCQlwcGkJCSMgUGFyYWxsZWwgcG9ydCBpbnRlcmZhY2UgZGV2aWNlCiNkZXZpY2UJ CXZwbwkJIyBSZXF1aXJlcyBzY2J1cyBhbmQgZGEKCmRldmljZQkJcHVjCQkjIE11bHRpIEkvTyBj YXJkcyBhbmQgbXVsdGktY2hhbm5lbCBVQVJUcwoKIyBQQ0kgRXRoZXJuZXQgTklDcy4KZGV2aWNl CQlieGUJCSMgQnJvYWRjb20gQkNNNTc3MTAvQkNNNTc3MTEvQkNNNTc3MTFFIDEwR2IgRXRoZXJu ZXQKZGV2aWNlCQlkZQkJIyBERUMvSW50ZWwgREMyMXg0eCAoYGBUdWxpcCcnKQpkZXZpY2UJCWVt CQkjIEludGVsIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgRmFtaWx5CmRldmljZQkJaWdiCQkj IEludGVsIFBSTy8xMDAwIFBDSUUgU2VydmVyIEdpZ2FiaXQgRmFtaWx5CmRldmljZQkJaXhnYmUJ CSMgSW50ZWwgUFJPLzEwR2JFIFBDSUUgRXRoZXJuZXQgRmFtaWx5CmRldmljZQkJbGUJCSMgQU1E IEFtNzkwMCBMQU5DRSBhbmQgQW03OUM5eHggUENuZXQKZGV2aWNlCQl0aQkJIyBBbHRlb24gTmV0 d29ya3MgVGlnb24gSS9JSSBnaWdhYml0IEV0aGVybmV0CmRldmljZQkJdHhwCQkjIDNDb20gM2NS OTkwIChgYFR5cGhvb24nJykKZGV2aWNlCQl2eAkJIyAzQ29tIDNjNTkwLCAzYzU5NSAoYGBWb3J0 ZXgnJykKCiMgUENJIEV0aGVybmV0IE5JQ3MgdGhhdCB1c2UgdGhlIGNvbW1vbiBNSUkgYnVzIGNv bnRyb2xsZXIgY29kZS4KIyBOT1RFOiBCZSBzdXJlIHRvIGtlZXAgdGhlICdkZXZpY2UgbWlpYnVz JyBsaW5lIGluIG9yZGVyIHRvIHVzZSB0aGVzZSBOSUNzIQpkZXZpY2UJCW1paWJ1cwkJIyBNSUkg YnVzIHN1cHBvcnQKZGV2aWNlCQlhZQkJIyBBdHRhbnNpYy9BdGhlcm9zIEwyIEZhc3RFdGhlcm5l dApkZXZpY2UJCWFnZQkJIyBBdHRhbnNpYy9BdGhlcm9zIEwxIEdpZ2FiaXQgRXRoZXJuZXQKZGV2 aWNlCQlhbGMJCSMgQXRoZXJvcyBBUjgxMzEvQVI4MTMyIEV0aGVybmV0CmRldmljZQkJYWxlCQkj IEF0aGVyb3MgQVI4MTIxL0FSODExMy9BUjgxMTQgRXRoZXJuZXQKZGV2aWNlCQliY2UJCSMgQnJv YWRjb20gQkNNNTcwNi9CQ001NzA4IEdpZ2FiaXQgRXRoZXJuZXQKZGV2aWNlCQliZmUJCSMgQnJv YWRjb20gQkNNNDQweCAxMC8xMDAgRXRoZXJuZXQKZGV2aWNlCQliZ2UJCSMgQnJvYWRjb20gQkNN NTcweHggR2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJCWNhcwkJIyBTdW4gQ2Fzc2luaS9DYXNzaW5p KyBhbmQgTlMgRFA4MzA2NSBTYXR1cm4KZGV2aWNlCQlkYwkJIyBERUMvSW50ZWwgMjExNDMgYW5k IHZhcmlvdXMgd29ya2FsaWtlcwpkZXZpY2UJCWV0CQkjIEFnZXJlIEVUMTMxMCAxMC8xMDAvR2ln YWJpdCBFdGhlcm5ldApkZXZpY2UJCWZ4cAkJIyBJbnRlbCBFdGhlckV4cHJlc3MgUFJPLzEwMEIg KDgyNTU3LCA4MjU1OCkKZGV2aWNlCQlnZW0JCSMgU3VuIEdFTS9TdW4gRVJJL0FwcGxlIEdNQUMK ZGV2aWNlCQlobWUJCSMgU3VuIEhNRSAoSGFwcHkgTWVhbCBFdGhlcm5ldCkKZGV2aWNlCQlqbWUJ CSMgSk1pY3JvbiBKTUMyNTAgR2lnYWJpdC9KTUMyNjAgRmFzdCBFdGhlcm5ldApkZXZpY2UJCWxn ZQkJIyBMZXZlbCAxIExYVDEwMDEgZ2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJCW1zawkJIyBNYXJ2 ZWxsL1N5c0tvbm5lY3QgWXVrb24gSUkgR2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJCW5mZQkJIyBu VmlkaWEgbkZvcmNlIE1DUCBvbi1ib2FyZCBFdGhlcm5ldApkZXZpY2UJCW5nZQkJIyBOYXRTZW1p IERQODM4MjAgZ2lnYWJpdCBFdGhlcm5ldAojZGV2aWNlCQludmUJCSMgblZpZGlhIG5Gb3JjZSBN Q1Agb24tYm9hcmQgRXRoZXJuZXQgTmV0d29ya2luZwpkZXZpY2UJCXBjbgkJIyBBTUQgQW03OUM5 N3ggUENJIDEwLzEwMCAocHJlY2VkZW5jZSBvdmVyICdsZScpCmRldmljZQkJcmUJCSMgUmVhbFRl ayA4MTM5QysvODE2OS84MTY5Uy84MTEwUwpkZXZpY2UJCXJsCQkjIFJlYWxUZWsgODEyOS84MTM5 CmRldmljZQkJc2YJCSMgQWRhcHRlYyBBSUMtNjkxNSAoYGBTdGFyZmlyZScnKQpkZXZpY2UJCXNn ZQkJIyBTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBTaVMxOTAvMTkxCmRldmljZQkJc2lzCQkj IFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIFNpUyA5MDAvU2lTIDcwMTYKZGV2aWNlCQlzawkJ IyBTeXNLb25uZWN0IFNLLTk4NHggJiBTSy05ODJ4IGdpZ2FiaXQgRXRoZXJuZXQKZGV2aWNlCQlz dGUJCSMgU3VuZGFuY2UgU1QyMDEgKEQtTGluayBERkUtNTUwVFgpCmRldmljZQkJc3RnZQkJIyBT dW5kYW5jZS9UYW1hcmFjayBUQzkwMjEgZ2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJCXRsCQkjIFRl eGFzIEluc3RydW1lbnRzIFRodW5kZXJMQU4KZGV2aWNlCQl0eAkJIyBTTUMgRXRoZXJQb3dlciBJ SSAoODNjMTcwIGBgRVBJQycnKQpkZXZpY2UJCXZnZQkJIyBWSUEgVlQ2MTJ4IGdpZ2FiaXQgRXRo ZXJuZXQKZGV2aWNlCQl2cgkJIyBWSUEgUmhpbmUsIFJoaW5lIElJCmRldmljZQkJd2IJCSMgV2lu Ym9uZCBXODlDODQwRgpkZXZpY2UJCXhsCQkjIDNDb20gM2M5MHggKGBgQm9vbWVyYW5nJycsIGBg Q3ljbG9uZScnKQoKIyBJU0EgRXRoZXJuZXQgTklDcy4gIHBjY2FyZCBOSUNzIGluY2x1ZGVkLgpk ZXZpY2UJCWNzCQkjIENyeXN0YWwgU2VtaWNvbmR1Y3RvciBDUzg5eDAgTklDCiMgJ2RldmljZSBl ZCcgcmVxdWlyZXMgJ2RldmljZSBtaWlidXMnCmRldmljZQkJZWQJCSMgTkVbMTJdMDAwLCBTTUMg VWx0cmEsIDNjNTAzLCBEUzgzOTAgY2FyZHMKZGV2aWNlCQlleAkJIyBJbnRlbCBFdGhlckV4cHJl c3MgUHJvLzEwIGFuZCBQcm8vMTArCmRldmljZQkJZXAJCSMgRXRoZXJsaW5rIElJSSBiYXNlZCBj YXJkcwpkZXZpY2UJCWZlCQkjIEZ1aml0c3UgTUI4Njk2eCBiYXNlZCBjYXJkcwpkZXZpY2UJCXNu CQkjIFNNQydzIDkwMDAgc2VyaWVzIG9mIEV0aGVybmV0IGNoaXBzCmRldmljZQkJeGUJCSMgWGly Y29tIHBjY2FyZCBFdGhlcm5ldAoKIyBXaXJlbGVzcyBOSUMgY2FyZHMKZGV2aWNlCQl3bGFuCQkj IDgwMi4xMSBzdXBwb3J0Cm9wdGlvbnMgCUlFRUU4MDIxMV9ERUJVRwkjIGVuYWJsZSBkZWJ1ZyBt c2dzCm9wdGlvbnMgCUlFRUU4MDIxMV9BTVBEVV9BR0UgIyBhZ2UgZnJhbWVzIGluIEFNUERVIHJl b3JkZXIgcSdzCm9wdGlvbnMgCUlFRUU4MDIxMV9TVVBQT1JUX01FU0gJIyBlbmFibGUgODAyLjEx cyBkcmFmdCBzdXBwb3J0CmRldmljZQkJd2xhbl93ZXAJIyA4MDIuMTEgV0VQIHN1cHBvcnQKZGV2 aWNlCQl3bGFuX2NjbXAJIyA4MDIuMTEgQ0NNUCBzdXBwb3J0CmRldmljZQkJd2xhbl90a2lwCSMg ODAyLjExIFRLSVAgc3VwcG9ydApkZXZpY2UJCXdsYW5fYW1ycgkjIEFNUlIgdHJhbnNtaXQgcmF0 ZSBjb250cm9sIGFsZ29yaXRobQpkZXZpY2UJCWFuCQkjIEFpcm9uZXQgNDUwMC80ODAwIDgwMi4x MSB3aXJlbGVzcyBOSUNzLgpkZXZpY2UJCWF0aAkJIyBBdGhlcm9zIE5JQydzCmRldmljZQkJYXRo X3BjaQkJIyBBdGhlcm9zIHBjaS9jYXJkYnVzIGdsdWUKZGV2aWNlCQlhdGhfaGFsCQkjIHBjaS9j YXJkYnVzIGNoaXAgc3VwcG9ydApvcHRpb25zIAlBSF9TVVBQT1JUX0FSNTQxNgkjIGVuYWJsZSBB UjU0MTYgdHgvcnggZGVzY3JpcHRvcnMKb3B0aW9ucyAJQUhfQVI1NDE2X0lOVEVSUlVQVF9NSVRJ R0FUSU9OCSMgQVI1NDE2IGludGVycnVwdCBtaXRpZ2F0aW9uCm9wdGlvbnMgCUFUSF9FTkFCTEVf MTFOCSMgRW5hYmxlIDgwMi4xMW4gc3VwcG9ydCBmb3IgQVI1NDE2IGFuZCBsYXRlcgpkZXZpY2UJ CWF0aF9yYXRlX3NhbXBsZQkjIFNhbXBsZVJhdGUgdHggcmF0ZSBjb250cm9sIGZvciBhdGgKI2Rl dmljZQkJYndpCQkjIEJyb2FkY29tIEJDTTQzMHgvQkNNNDMxeCB3aXJlbGVzcyBOSUNzLgojZGV2 aWNlCQlid24JCSMgQnJvYWRjb20gQkNNNDN4eCB3aXJlbGVzcyBOSUNzLgpkZXZpY2UJCWlwdwkJ IyBJbnRlbCAyMTAwIHdpcmVsZXNzIE5JQ3MuCmRldmljZQkJaXdpCQkjIEludGVsIDIyMDBCRy8y MjI1QkcvMjkxNUFCRyB3aXJlbGVzcyBOSUNzLgpkZXZpY2UJCWl3bgkJIyBJbnRlbCA0OTY1LzEw MDAvNTAwMC82MDAwIHdpcmVsZXNzIE5JQ3MuCmRldmljZQkJbWFsbwkJIyBNYXJ2ZWxsIExpYmVy dGFzIHdpcmVsZXNzIE5JQ3MuCmRldmljZQkJbXdsCQkjIE1hcnZlbGwgODhXODM2MyA4MDIuMTFu IHdpcmVsZXNzIE5JQ3MuCmRldmljZQkJcmFsCQkjIFJhbGluayBUZWNobm9sb2d5IFJUMjUwMCB3 aXJlbGVzcyBOSUNzLgpkZXZpY2UJCXdpCQkjIFdhdmVMQU4vSW50ZXJzaWwvU3ltYm9sIDgwMi4x MSB3aXJlbGVzcyBOSUNzLgpkZXZpY2UJCXdwaQkJIyBJbnRlbCAzOTQ1QUJHIHdpcmVsZXNzIE5J Q3MuCgojIFBzZXVkbyBkZXZpY2VzLgpkZXZpY2UJCWxvb3AJCSMgTmV0d29yayBsb29wYmFjawpk ZXZpY2UJCXJhbmRvbQkJIyBFbnRyb3B5IGRldmljZQpkZXZpY2UJCWV0aGVyCQkjIEV0aGVybmV0 IHN1cHBvcnQKZGV2aWNlCQl2bGFuCQkjIDgwMi4xUSBWTEFOIHN1cHBvcnQKZGV2aWNlCQl0dW4J CSMgUGFja2V0IHR1bm5lbC4KZGV2aWNlCQltZAkJIyBNZW1vcnkgImRpc2tzIgpkZXZpY2UJCWdp ZgkJIyBJUHY2IGFuZCBJUHY0IHR1bm5lbGluZwpkZXZpY2UJCWZhaXRoCQkjIElQdjYtdG8tSVB2 NCByZWxheWluZyAodHJhbnNsYXRpb24pCmRldmljZQkJZmlybXdhcmUJIyBmaXJtd2FyZSBhc3Np c3QgbW9kdWxlCgojIFRoZSBgYnBmJyBkZXZpY2UgZW5hYmxlcyB0aGUgQmVya2VsZXkgUGFja2V0 IEZpbHRlci4KIyBCZSBhd2FyZSBvZiB0aGUgYWRtaW5pc3RyYXRpdmUgY29uc2VxdWVuY2VzIG9m IGVuYWJsaW5nIHRoaXMhCiMgTm90ZSB0aGF0ICdicGYnIGlzIHJlcXVpcmVkIGZvciBESENQLgpk ZXZpY2UJCWJwZgkJIyBCZXJrZWxleSBwYWNrZXQgZmlsdGVyCgojIFVTQiBzdXBwb3J0Cm9wdGlv bnMgCVVTQl9ERUJVRwkjIGVuYWJsZSBkZWJ1ZyBtc2dzCmRldmljZQkJdWhjaQkJIyBVSENJIFBD SS0+VVNCIGludGVyZmFjZQpkZXZpY2UJCW9oY2kJCSMgT0hDSSBQQ0ktPlVTQiBpbnRlcmZhY2UK ZGV2aWNlCQllaGNpCQkjIEVIQ0kgUENJLT5VU0IgaW50ZXJmYWNlIChVU0IgMi4wKQpkZXZpY2UJ CXhoY2kJCSMgWEhDSSBQQ0ktPlVTQiBpbnRlcmZhY2UgKFVTQiAzLjApCmRldmljZQkJdXNiCQkj IFVTQiBCdXMgKHJlcXVpcmVkKQpkZXZpY2UJCXVrYmQJCSMgS2V5Ym9hcmQKZGV2aWNlCQl1bWFz cwkJIyBEaXNrcy9NYXNzIHN0b3JhZ2UgLSBSZXF1aXJlcyBzY2J1cyBhbmQgZGEKCiMgRmlyZVdp cmUgc3VwcG9ydApkZXZpY2UJCWZpcmV3aXJlCSMgRmlyZVdpcmUgYnVzIGNvZGUKIyBzYnAoNCkg d29ya3MgZm9yIHNvbWUgc3lzdGVtcyBidXQgY2F1c2VzIGJvb3QgZmFpbHVyZSBvbiBvdGhlcnMK I2RldmljZQkJc2JwCQkjIFNDU0kgb3ZlciBGaXJlV2lyZSAoUmVxdWlyZXMgc2NidXMgYW5kIGRh KQpkZXZpY2UJCWZ3ZQkJIyBFdGhlcm5ldCBvdmVyIEZpcmVXaXJlIChub24tc3RhbmRhcmQhKQpk ZXZpY2UJCWZ3aXAJCSMgSVAgb3ZlciBGaXJlV2lyZSAoUkZDIDI3MzQsMzE0NikKZGV2aWNlCQlk Y29ucwkJIyBEdW1iIGNvbnNvbGUgZHJpdmVyCmRldmljZQkJZGNvbnNfY3JvbQkjIENvbmZpZ3Vy YXRpb24gUk9NIGZvciBkY29ucwoKIyBTb3VuZCBzdXBwb3J0CmRldmljZQkJc291bmQJCSMgR2Vu ZXJpYyBzb3VuZCBkcml2ZXIgKHJlcXVpcmVkKQpkZXZpY2UJCXNuZF9jbWkJCSMgQ01lZGlhIENN STgzMzgvQ01JODczOApkZXZpY2UJCXNuZF9jc2EJCSMgQ3J5c3RhbCBTZW1pY29uZHVjdG9yIENT NDYxeC80Mjh4CmRldmljZQkJc25kX2VtdTEwa3gJIyBDcmVhdGl2ZSBTb3VuZEJsYXN0ZXIgTGl2 ZSEgYW5kIEF1ZGlneQpkZXZpY2UJCXNuZF9lczEzN3gJIyBFbnNvbmlxIEF1ZGlvUENJIEVTMTM3 eApkZXZpY2UJCXNuZF9oZGEJCSMgSW50ZWwgSGlnaCBEZWZpbml0aW9uIEF1ZGlvCmRldmljZQkJ c25kX2ljaAkJIyBJbnRlbCwgTlZpZGlhIGFuZCBvdGhlciBJQ0ggQUMnOTcgQXVkaW8KZGV2aWNl CQlzbmRfdmlhODIzMwkjIFZJQSBWVDgyMzN4IEF1ZGlvCgojIE1NQy9TRApkZXZpY2UJCW1tYwkJ IyBNTUMvU0QgYnVzCmRldmljZQkJbW1jc2QJCSMgTU1DL1NEIG1lbW9yeSBjYXJkCmRldmljZQkJ c2RoY2kJCSMgR2VuZXJpYyBQQ0kgU0QgSG9zdCBDb250cm9sbGVyCg== --90e6ba308ef21743bd04c5721fd9--