From owner-freebsd-questions@FreeBSD.ORG Fri Sep 5 00:20:44 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C878116A4BF for ; Fri, 5 Sep 2003 00:20:44 -0700 (PDT) Received: from usti.fccps.cz (usti.fccps.cz [194.108.74.250]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4511D43FF2 for ; Fri, 5 Sep 2003 00:20:36 -0700 (PDT) (envelope-from rysanek@fccps.cz) Received: from usti.fccps.cz (usti.fccps.cz [127.0.0.1]) by usti.fccps.cz (8.12.8/8.12.8) with ESMTP id h857KPxS015033; Fri, 5 Sep 2003 09:20:25 +0200 From: rysanek@fccps.cz Received: from localhost (frr@localhost) by usti.fccps.cz (8.12.8/8.12.8/Submit) with ESMTP id h857KNVK015030; Fri, 5 Sep 2003 09:20:24 +0200 X-Authentication-Warning: usti.fccps.cz: frr owned process doing -bs Date: Fri, 5 Sep 2003 09:20:23 +0200 (CEST) X-X-Sender: To: Scott Long Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1260086421-1062746423=:13033" X-Content-Filtered-By: Mailman/MimeDel 2.1.1 cc: questions@freebsd.org cc: Buki Subject: FreeBSD 4.8, ASR2120, SMP, degraded RAID1/mirror => storage failure X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Sep 2003 07:20:44 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --8323328-1260086421-1062746423=:13033 Content-Type: TEXT/PLAIN; charset=US-ASCII Dear Mr. Long, firstly, let me thank you for maintaining the Adaptec RAID drivers. I've got a problem with the Adaptec 2120S in FreeBSD 4.8-RELEASE and I haven't found any notes about that in the mailing lists. In SMP mode, upon a RAID array degradation event (a disk is ripped out), the system locks up almost entirely, stuck at disk operations. The same happens upon boot with a rebuilding/degraded array - building from scratch or rebuilding after a disk failure, or even just running off a single disk while the other one is dead (no rebuild going on in the background). The problem doesn't occur in UP mode (when options SMP and APIC_IO are off) - that way the host system works happily just as if there was nothing wrong with the array (except for a few **Monitor** warnings and the LEDs going disco). The problem also doesn't occur as long as the RAID is "optimal". The problem was only observed and tested in a configuration with two disks in a mirror (one or two logical "containers" on them), no hot spare. My system configuration is: 2x Intel P4 Xeon @ 2.4 GHz, 533MHz FSB 1 GB RAM (dual-channel, 2x 512 MB DIMM DDR266, ECC, REG) ServerWorks GC-LE chipset, PCI-X 64bit@133MHz 2x3 SCA backplane with two GEM318 SAF-TE processors On one channel, there are two pieces of Seagate ST336607LC (36 GB) (+ 2x onboard BCM570x GbETH, 2x onboard AIC7902, onboard ATI RageXL PCI 8MB, etc) The array on the AAC controller is the only disk drive in the system -> the machine is booting from it. To the best of my knowledge, the mechanical and electrical parts of the U320 system are fine - they've been working for me in Linux and with other SCSI controllers just fine, after all the dual-channel onboard U320 HBA works just fine, too. Attached is a tarball with debugging logs. There are three directories, containing three different combinations of debug options (see below items A to C). Each directory contains six log files: a boot from a clean array, a disk failure (somewhat improperly simulated by ripping the SCA enclosure out), and a boot from a degraded volume - all of that for a UP and SMP kernel. 3*2=6. I've tried the following different debugging options and levels: A) full CAM debug and AAC_DEBUG=2 B) AAC_DEBUG=2 C) AAC_DEBUG=4 (after I found in the sources that L4 exists) With A), everything worked as described above. Just the CAM debugging messages probably cluttered the kernel ring buffer to the extent that some of the AAC_DEBUG and generic messages are missing in the log, such as those announcing the detection of /dev/aacd0 and /dev/aacd1 (the two RAID volumes/containers) With B), upon runtime disk failure, the fault occured even in UP configuration! -- while UP kernels without debugging continued to operate, and even the UP kernel as per B) continued to run fine after reboot, on the failed array. With C), __SMP__: the machine behaved as expected (dead) upon runtime disk failure, but consistently managed to boot with the degraded array while it was not rebuilding (=anomaly) - then it crashed when I logged in and told it to `reboot`. When I plugged the disk drive back and the array started rebuilding, the SMP kernel consistently failed to boot. __UP__: the machine was consistently failing miserably upon array degradation (=anomaly). It did boot fine consistently with a degraded array (not rebuilding). It failed at boot consistently with a rebuilding array. So it seems that the serial logging / debugging stuff modifies timing, and hence the behavior with debugging on is different. Reminds me of the Heisenbergian uncertainty. Still, without debugging, the consistent pattern is: UP = boots fine from a clean array, survives array degradation and boots from a degraded array. SMP = boots fine from a clean array, does not survive array degradation and fails to boot from a degraded array. While I was trying to find a typical healthy "SCSI request/response" pattern in the logs, it seemed to me that quite often some of the debugging messages were missing, and some were clearly cut in half or so - perhaps I should check my RS232 cabling? Though I really think that my cabling is all right... >From the debug listings it would seem that the AAC driver on the host PC gets a zero-padded FIB from the controller, and then an endless row of interrupts. This happens immediately after a disk failure or after driver initialization upon boot. The following is a piece of pseudo-code for your reference, based on /usr/src/sys/dev/aac.c. The aac_host_command() forms the body of a kthread that gets started upon adapter initialization. Note the line with "!!!": aac_host_command() { while(true) { tsleep(); for (;;) { // check for enqueued FIBs aac_dequeue_fib(AAC_HOST_NORM_CMD_QUEUE); if (found one) { // process it } else { break; // go to sleep again } } } } aac_dequeue_fib() { if (ci != pi) // consumer/producer indices { // there are some FIBs in the queue // !!! at the same time, the FIB is zero-padded !!! } else return(ENOENT); } Another symptom is that, upon array degradation, the controller seems to reset the RAID-private SCSI bus (I hope that's what the **Monitor** message says). The trouble is that both the aac_host_command() wakeup with the zero-padded FIB and the monitor messages appear in asynchronous context (in a separate kthread or in an interrupt) and I'm not as skilled as to say which previous action of the driver is the immediate cause. More on the behavior of the disk LEDs: These LEDs on my server case are controlled by the SCA/SAF-TE chip (GEM318). - When the array is degraded but operating normally, the dead disk's LED is dark and the live disk's led flashes green, indicating normal storage transfers. - When a degraded array is rebuilding, the two disk LEDs dance in shades of green to orange (both the green and red pads flashing). - When the whole controller or the RAID-private SCSI channel is being reset, both the two LEDs shine a steady red. - When the machine fails at boot with a rebuilding array, the LEDs often turn red for a few seconds (reset?) and then one of them remains red and the other one starts dancing green/orange... and the reset may come back a few times before the machine locks up entirely or the BSD manages to do an auto-reboot. Or the LED's just stay red and the machine hangs. - When the machine boots and runs fine (i.e., with a UP kernel under normal conditions), the disk LED's never go red, except for a cold reset of the whole PC. When the array is rebuilding, the LED's keep dancing merrily between green and orange throughout the boot process. I guess this would indicate that it's not just the BSD driver getting messed up - the controller probably also gets seriously confused. Is that a chicken-vs.-egg style puzzle? As a side note: it seems interesting to me that, regardless of whethere debugging and SMP is on or off in any particular combination, the kernel always rushes through to "Waiting 15 seconds for the SCSI devices to settle" and _immediately_ reports the RAID containers. Only then it waits those fifteen seconds before proceeding to detect the regular SCSI devices. Attached is my kernel config file and a listing of `lspci -lv` I can't think of anything else to tell you at the moment. Ask me if you need further help - perhaps I can modify the debugging flags and try again, add some more instrumentation hooks here and there to focus on particular points in the code etc. Any ideas are welcome. Sorry about wasting your time by sending such an eloquent explanation. Thanks for the great job that you're doing. Frank Rysanek --8323328-1260086421-1062746423=:13033 Content-Type: TEXT/plain; name="lspci.txt" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="lspci.txt" Y2hpcDBAcGNpMDowOjA6CWNsYXNzPTB4MDYwMDAwIGNhcmQ9MHgwMDAwMDAw MCBjaGlwPTB4MDAxNDExNjYgcmV2PTB4MzEgaGRyPTB4MDANCiAgICB2ZW5k b3IgICA9ICdSZWxpYW5jZSBDb21wdXRlciBDb3JwLi9TZXJ2ZXJXb3JrcycN CiAgICBkZXZpY2UgICA9ICdDTkIyMC1IRSBIb3N0IEJyaWRnZScNCiAgICBj bGFzcyAgICA9IGJyaWRnZQ0KICAgIHN1YmNsYXNzID0gSE9TVC1QQ0kNCmNo aXAxQHBjaTA6MDoxOgljbGFzcz0weDA2MDAwMCBjYXJkPTB4MDAwMDAwMDAg Y2hpcD0weDAwMTQxMTY2IHJldj0weDAwIGhkcj0weDAwDQogICAgdmVuZG9y ICAgPSAnUmVsaWFuY2UgQ29tcHV0ZXIgQ29ycC4vU2VydmVyV29ya3MnDQog ICAgZGV2aWNlICAgPSAnQ05CMjAtSEUgSG9zdCBCcmlkZ2UnDQogICAgY2xh c3MgICAgPSBicmlkZ2UNCiAgICBzdWJjbGFzcyA9IEhPU1QtUENJDQpjaGlw MkBwY2kwOjA6MjoJY2xhc3M9MHgwNjAwMDAgY2FyZD0weDAwMDAwMDAwIGNo aXA9MHgwMDE1MTE2NiByZXY9MHgwMCBoZHI9MHgwMA0KICAgIHZlbmRvciAg ID0gJ1JlbGlhbmNlIENvbXB1dGVyIENvcnAuL1NlcnZlcldvcmtzJw0KICAg IGRldmljZSAgID0gJ0NNSUMtR0MgSG9zdGJyaWRnZSBhbmQgTUNIJw0KICAg IGNsYXNzICAgID0gYnJpZGdlDQogICAgc3ViY2xhc3MgPSBIT1NULVBDSQ0K bm9uZTBAcGNpMDoyOjA6CWNsYXNzPTB4MDMwMDAwIGNhcmQ9MHg4MDA0MTAw MiBjaGlwPTB4NDc1MjEwMDIgcmV2PTB4MjcgaGRyPTB4MDANCiAgICB2ZW5k b3IgICA9ICdBVEkgVGVjaG5vbG9naWVzJw0KICAgIGRldmljZSAgID0gJ1Jh Z2UgWEwgUENJJw0KICAgIGNsYXNzICAgID0gZGlzcGxheQ0KICAgIHN1YmNs YXNzID0gVkdBDQppc2FiMEBwY2kwOjE1OjA6CWNsYXNzPTB4MDYwMTAwIGNh cmQ9MHgwMjAxMTE2NiBjaGlwPTB4MDIwMTExNjYgcmV2PTB4OTMgaGRyPTB4 MDANCiAgICB2ZW5kb3IgICA9ICdSZWxpYW5jZSBDb21wdXRlciBDb3JwLi9T ZXJ2ZXJXb3JrcycNCiAgICBkZXZpY2UgICA9ICdDU0I1IFBDSSB0byBJU0Eg QnJpZGdlJw0KICAgIGNsYXNzICAgID0gYnJpZGdlDQogICAgc3ViY2xhc3Mg PSBQQ0ktSVNBDQphdGFwY2kwQHBjaTA6MTU6MToJY2xhc3M9MHgwMTAxOGEg Y2FyZD0weDAyMTIxMTY2IGNoaXA9MHgwMjEyMTE2NiByZXY9MHg5MyBoZHI9 MHgwMA0KICAgIHZlbmRvciAgID0gJ1JlbGlhbmNlIENvbXB1dGVyIENvcnAu L1NlcnZlcldvcmtzJw0KICAgIGRldmljZSAgID0gJ0NTQjUgUENJIEVJREUg Q29udHJvbGxlcicNCiAgICBjbGFzcyAgICA9IG1hc3Mgc3RvcmFnZQ0KICAg IHN1YmNsYXNzID0gQVRBDQpvaGNpMEBwY2kwOjE1OjI6CWNsYXNzPTB4MGMw MzEwIGNhcmQ9MHgwMjIwMTE2NiBjaGlwPTB4MDIyMDExNjYgcmV2PTB4MDUg aGRyPTB4MDANCiAgICB2ZW5kb3IgICA9ICdSZWxpYW5jZSBDb21wdXRlciBD b3JwLi9TZXJ2ZXJXb3JrcycNCiAgICBkZXZpY2UgICA9ICdPU0I0IE9wZW5I Q0kgQ29tcGxpYW50IFVTQiBDb250cm9sbGVyJw0KICAgIGNsYXNzICAgID0g c2VyaWFsIGJ1cw0KICAgIHN1YmNsYXNzID0gVVNCDQpjaGlwM0BwY2kwOjE1 OjM6CWNsYXNzPTB4MDYwMDAwIGNhcmQ9MHgwMjMwMTE2NiBjaGlwPTB4MDIy NTExNjYgcmV2PTB4MDAgaGRyPTB4MDANCiAgICB2ZW5kb3IgICA9ICdSZWxp YW5jZSBDb21wdXRlciBDb3JwLi9TZXJ2ZXJXb3JrcycNCiAgICBkZXZpY2Ug ICA9ICdDU0I1IFBDSSBCcmlkZ2UnDQogICAgY2xhc3MgICAgPSBicmlkZ2UN CiAgICBzdWJjbGFzcyA9IEhPU1QtUENJDQpjaGlwNEBwY2kwOjE3OjA6CWNs YXNzPTB4MDYwMDAwIGNhcmQ9MHgwMDAwMDAwMCBjaGlwPTB4MDEwMTExNjYg cmV2PTB4MDMgaGRyPTB4MDANCiAgICB2ZW5kb3IgICA9ICdSZWxpYW5jZSBD b21wdXRlciBDb3JwLi9TZXJ2ZXJXb3JrcycNCiAgICBkZXZpY2UgICA9ICdD SU9CLVgyJw0KICAgIGNsYXNzICAgID0gYnJpZGdlDQogICAgc3ViY2xhc3Mg PSBIT1NULVBDSQ0KY2hpcDVAcGNpMDoxNzoyOgljbGFzcz0weDA2MDAwMCBj YXJkPTB4MDAwMDAwMDAgY2hpcD0weDAxMDExMTY2IHJldj0weDAzIGhkcj0w eDAwDQogICAgdmVuZG9yICAgPSAnUmVsaWFuY2UgQ29tcHV0ZXIgQ29ycC4v U2VydmVyV29ya3MnDQogICAgZGV2aWNlICAgPSAnQ0lPQi1YMicNCiAgICBj bGFzcyAgICA9IGJyaWRnZQ0KICAgIHN1YmNsYXNzID0gSE9TVC1QQ0kNCmFh YzBAcGNpMzo0OjA6CWNsYXNzPTB4MDEwNDAwIGNhcmQ9MHgwMjg2OTAwNSBj aGlwPTB4MDI4NTkwMDUgcmV2PTB4MDEgaGRyPTB4MDANCiAgICB2ZW5kb3Ig ICA9ICdBZGFwdGVjJw0KICAgIGRldmljZSAgID0gJ0FBQy1SQUlEIFJBSUQg Q29udHJvbGxlcicNCiAgICBjbGFzcyAgICA9IG1hc3Mgc3RvcmFnZQ0KICAg IHN1YmNsYXNzID0gUkFJRA0KYmdlMEBwY2k0OjI6MDoJY2xhc3M9MHgwMjAw MDAgY2FyZD0weDAwMDgxNGU0IGNoaXA9MHgxNjQ1MTRlNCByZXY9MHgxNSBo ZHI9MHgwMA0KICAgIHZlbmRvciAgID0gJ0Jyb2FkY29tIENvcnBvcmF0aW9u Jw0KICAgIGRldmljZSAgID0gJ0JDTTU3MDEgTmV0WHRyZW1lIEdpZ2FiaXQg RXRoZXJuZXQnDQogICAgY2xhc3MgICAgPSBuZXR3b3JrDQogICAgc3ViY2xh c3MgPSBldGhlcm5ldA0KYmdlMUBwY2k0OjM6MDoJY2xhc3M9MHgwMjAwMDAg Y2FyZD0weDAwMDgxNGU0IGNoaXA9MHgxNjQ1MTRlNCByZXY9MHgxNSBoZHI9 MHgwMA0KICAgIHZlbmRvciAgID0gJ0Jyb2FkY29tIENvcnBvcmF0aW9uJw0K ICAgIGRldmljZSAgID0gJ0JDTTU3MDEgTmV0WHRyZW1lIEdpZ2FiaXQgRXRo ZXJuZXQnDQogICAgY2xhc3MgICAgPSBuZXR3b3JrDQogICAgc3ViY2xhc3Mg PSBldGhlcm5ldA0KYWhkMEBwY2k0OjQ6MDoJY2xhc3M9MHgwMTAwMDAgY2Fy ZD0weDAwNWU5MDA1IGNoaXA9MHg4MDFkOTAwNSByZXY9MHgxMCBoZHI9MHgw MA0KICAgIHZlbmRvciAgID0gJ0FkYXB0ZWMnDQogICAgY2xhc3MgICAgPSBt YXNzIHN0b3JhZ2UNCiAgICBzdWJjbGFzcyA9IFNDU0kNCmFoZDFAcGNpNDo0 OjE6CWNsYXNzPTB4MDEwMDAwIGNhcmQ9MHgwMDVlOTAwNSBjaGlwPTB4ODAx ZDkwMDUgcmV2PTB4MTAgaGRyPTB4MDANCiAgICB2ZW5kb3IgICA9ICdBZGFw dGVjJw0KICAgIGNsYXNzICAgID0gbWFzcyBzdG9yYWdlDQogICAgc3ViY2xh c3MgPSBTQ1NJDQo= --8323328-1260086421-1062746423=:13033 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="kernel.conf.FCC" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="kernel.conf.FCC" Iw0KIyBHRU5FUklDIC0tIEdlbmVyaWMga2VybmVsIGNvbmZpZ3VyYXRpb24g ZmlsZSBmb3IgRnJlZUJTRC9pMzg2DQojDQojIEZvciBtb3JlIGluZm9ybWF0 aW9uIG9uIHRoaXMgZmlsZSwgcGxlYXNlIHJlYWQgdGhlIGhhbmRib29rIHNl Y3Rpb24gb24NCiMgS2VybmVsIENvbmZpZ3VyYXRpb24gRmlsZXM6DQojDQoj ICAgIGh0dHA6Ly93d3cuRnJlZUJTRC5vcmcvZG9jL2VuX1VTLklTTzg4NTkt MS9ib29rcy9oYW5kYm9vay9rZXJuZWxjb25maWctY29uZmlnLmh0bWwNCiMN CiMgVGhlIGhhbmRib29rIGlzIGFsc28gYXZhaWxhYmxlIGxvY2FsbHkgaW4g L3Vzci9zaGFyZS9kb2MvaGFuZGJvb2sNCiMgaWYgeW91J3ZlIGluc3RhbGxl ZCB0aGUgZG9jIGRpc3RyaWJ1dGlvbiwgb3RoZXJ3aXNlIGFsd2F5cyBzZWUg dGhlDQojIEZyZWVCU0QgV29ybGQgV2lkZSBXZWIgc2VydmVyIChodHRwOi8v d3d3LkZyZWVCU0Qub3JnLykgZm9yIHRoZQ0KIyBsYXRlc3QgaW5mb3JtYXRp b24uDQojDQojIEFuIGV4aGF1c3RpdmUgbGlzdCBvZiBvcHRpb25zIGFuZCBt b3JlIGRldGFpbGVkIGV4cGxhbmF0aW9ucyBvZiB0aGUNCiMgZGV2aWNlIGxp bmVzIGlzIGFsc28gcHJlc2VudCBpbiB0aGUgLi9MSU5UIGNvbmZpZ3VyYXRp b24gZmlsZS4gSWYgeW91IGFyZQ0KIyBpbiBkb3VidCBhcyB0byB0aGUgcHVy cG9zZSBvciBuZWNlc3NpdHkgb2YgYSBsaW5lLCBjaGVjayBmaXJzdCBpbiBM SU5ULg0KIw0KIyAkRnJlZUJTRDogc3JjL3N5cy9pMzg2L2NvbmYvR0VORVJJ Qyx2IDEuMjQ2LjIuNTEuMi4yIDIwMDMvMDMvMjUgMjM6MzU6MTUgamhiIEV4 cCAkDQoNCm1hY2hpbmUJCWkzODYNCiNjcHUJCUkzODZfQ1BVDQojY3B1CQlJ NDg2X0NQVQ0KI2NwdQkJSTU4Nl9DUFUNCmNwdQkJSTY4Nl9DUFUNCmlkZW50 CQlHRU5FUklDDQptYXh1c2VycwkwDQoNCiNtYWtlb3B0aW9ucwlERUJVRz0t ZwkJI0J1aWxkIGtlcm5lbCB3aXRoIGdkYigxKSBkZWJ1ZyBzeW1ib2xzDQoN Cm9wdGlvbnMgCU1BVEhfRU1VTEFURQkJI1N1cHBvcnQgZm9yIHg4NyBlbXVs YXRpb24NCm9wdGlvbnMgCUlORVQJCQkjSW50ZXJORVR3b3JraW5nDQojb3B0 aW9ucyAJSU5FVDYJCQkjSVB2NiBjb21tdW5pY2F0aW9ucyBwcm90b2NvbHMN Cm9wdGlvbnMgCUZGUwkJCSNCZXJrZWxleSBGYXN0IEZpbGVzeXN0ZW0NCm9w dGlvbnMgCUZGU19ST09UCQkjRkZTIHVzYWJsZSBhcyByb290IGRldmljZSBb a2VlcCB0aGlzIV0NCm9wdGlvbnMgCVNPRlRVUERBVEVTCQkjRW5hYmxlIEZG UyBzb2Z0IHVwZGF0ZXMgc3VwcG9ydA0Kb3B0aW9ucyAJVUZTX0RJUkhBU0gJ CSNJbXByb3ZlIHBlcmZvcm1hbmNlIG9uIGJpZyBkaXJlY3Rvcmllcw0Kb3B0 aW9ucyAJTUZTCQkJI01lbW9yeSBGaWxlc3lzdGVtDQpvcHRpb25zIAlNRF9S T09UCQkJI01EIGlzIGEgcG90ZW50aWFsIHJvb3QgZGV2aWNlDQpvcHRpb25z IAlORlMJCQkjTmV0d29yayBGaWxlc3lzdGVtDQpvcHRpb25zIAlORlNfUk9P VAkJI05GUyB1c2FibGUgYXMgcm9vdCBkZXZpY2UsIE5GUyByZXF1aXJlZA0K b3B0aW9ucyAJTVNET1NGUwkJCSNNU0RPUyBGaWxlc3lzdGVtDQpvcHRpb25z IAlDRDk2NjAJCQkjSVNPIDk2NjAgRmlsZXN5c3RlbQ0Kb3B0aW9ucyAJQ0Q5 NjYwX1JPT1QJCSNDRC1ST00gdXNhYmxlIGFzIHJvb3QsIENEOTY2MCByZXF1 aXJlZA0Kb3B0aW9ucyAJUFJPQ0ZTCQkJI1Byb2Nlc3MgZmlsZXN5c3RlbQ0K b3B0aW9ucyAJQ09NUEFUXzQzCQkjQ29tcGF0aWJsZSB3aXRoIEJTRCA0LjMg W0tFRVAgVEhJUyFdDQpvcHRpb25zIAlTQ1NJX0RFTEFZPTE1MDAwCSNEZWxh eSAoaW4gbXMpIGJlZm9yZSBwcm9iaW5nIFNDU0kNCm9wdGlvbnMgCVVDT05T T0xFCQkjQWxsb3cgdXNlcnMgdG8gZ3JhYiB0aGUgY29uc29sZQ0Kb3B0aW9u cyAJVVNFUkNPTkZJRwkJI2Jvb3QgLWMgZWRpdG9yDQpvcHRpb25zIAlWSVNV QUxfVVNFUkNPTkZJRwkjdmlzdWFsIGJvb3QgLWMgZWRpdG9yDQpvcHRpb25z IAlLVFJBQ0UJCQkja3RyYWNlKDEpIHN1cHBvcnQNCm9wdGlvbnMgCVNZU1ZT SE0JCQkjU1lTVi1zdHlsZSBzaGFyZWQgbWVtb3J5DQpvcHRpb25zIAlTWVNW TVNHCQkJI1NZU1Ytc3R5bGUgbWVzc2FnZSBxdWV1ZXMNCm9wdGlvbnMgCVNZ U1ZTRU0JCQkjU1lTVi1zdHlsZSBzZW1hcGhvcmVzDQpvcHRpb25zIAlQMTAw M18xQgkJI1Bvc2l4IFAxMDAzXzFCIHJlYWwtdGltZSBleHRlbnNpb25zDQpv cHRpb25zIAlfS1BPU0lYX1BSSU9SSVRZX1NDSEVEVUxJTkcNCm9wdGlvbnMg CUlDTVBfQkFORExJTQkJI1JhdGUgbGltaXQgYmFkIHJlcGxpZXMNCm9wdGlv bnMgCUtCRF9JTlNUQUxMX0NERVYJIyBpbnN0YWxsIGEgQ0RFViBlbnRyeSBp biAvZGV2DQpvcHRpb25zIAlBSENfUkVHX1BSRVRUWV9QUklOVAkjIFByaW50 IHJlZ2lzdGVyIGJpdGZpZWxkcyBpbiBkZWJ1Zw0KCQkJCQkjIG91dHB1dC4g IEFkZHMgfjEyOGsgdG8gZHJpdmVyLg0Kb3B0aW9ucyAJQUhEX1JFR19QUkVU VFlfUFJJTlQJIyBQcmludCByZWdpc3RlciBiaXRmaWVsZHMgaW4gZGVidWcg DQoJCQkJCSMgb3V0cHV0LiAgQWRkcyB+MjE1ayB0byBkcml2ZXIuDQoNCiMg VG8gbWFrZSBhbiBTTVAga2VybmVsLCB0aGUgbmV4dCB0d28gYXJlIG5lZWRl ZA0Kb3B0aW9ucyAJU01QCQkJIyBTeW1tZXRyaWMgTXVsdGlQcm9jZXNzb3Ig S2VybmVsDQpvcHRpb25zIAlBUElDX0lPCQkJIyBTeW1tZXRyaWMgKEFQSUMp IEkvTw0KDQojIFRvIHN1cHBvcnQgSHlwZXJUaHJlYWRpbmcsIEhUVCBpcyBu ZWVkZWQgaW4gYWRkaXRpb24gdG8gU01QIGFuZCBBUElDX0lPDQpvcHRpb25z IAlIVFQJCQkjIEh5cGVyVGhyZWFkaW5nIFRlY2hub2xvZ3kNCg0KZGV2aWNl CQlpc2ENCiNkZXZpY2UJCWVpc2ENCmRldmljZQkJcGNpDQoNCiMgRmxvcHB5 IGRyaXZlcw0KZGV2aWNlCQlmZGMwCWF0IGlzYT8gcG9ydCBJT19GRDEgaXJx IDYgZHJxIDINCmRldmljZQkJZmQwCWF0IGZkYzAgZHJpdmUgMA0KZGV2aWNl CQlmZDEJYXQgZmRjMCBkcml2ZSAxDQojDQojIElmIHlvdSBoYXZlIGEgVG9z aGliYSBMaWJyZXR0byB3aXRoIGl0cyBZLUUgRGF0YSBQQ01DSUEgZmxvcHB5 LA0KIyBkb24ndCB1c2UgdGhlIGFib3ZlIGxpbmUgZm9yIGZkYzAgYnV0IHRo ZSBmb2xsb3dpbmcgb25lOg0KI2RldmljZQkJZmRjMA0KDQojIEFUQSBhbmQg QVRBUEkgZGV2aWNlcw0KZGV2aWNlCQlhdGEwCWF0IGlzYT8gcG9ydCBJT19X RDEgaXJxIDE0DQpkZXZpY2UJCWF0YTEJYXQgaXNhPyBwb3J0IElPX1dEMiBp cnEgMTUNCmRldmljZQkJYXRhDQpkZXZpY2UJCWF0YWRpc2sJCQkjIEFUQSBk aXNrIGRyaXZlcw0KZGV2aWNlCQlhdGFwaWNkCQkJIyBBVEFQSSBDRFJPTSBk cml2ZXMNCmRldmljZQkJYXRhcGlmZAkJCSMgQVRBUEkgZmxvcHB5IGRyaXZl cw0KZGV2aWNlCQlhdGFwaXN0CQkJIyBBVEFQSSB0YXBlIGRyaXZlcw0Kb3B0 aW9ucyAJQVRBX1NUQVRJQ19JRAkJI1N0YXRpYyBkZXZpY2UgbnVtYmVyaW5n DQoNCiMgU0NTSSBDb250cm9sbGVycw0KI2RldmljZQkJYWhiCQkjIEVJU0Eg QUhBMTc0MiBmYW1pbHkNCiNkZXZpY2UJCWFoYwkJIyBBSEEyOTQwIGFuZCBv bmJvYXJkIEFJQzd4eHggZGV2aWNlcw0KZGV2aWNlCQlhaGQJCSMgQUhBMzkz MjAvMjkzMjAgYW5kIG9uYm9hcmQgQUlDNzl4eCBkZXZpY2VzDQojZGV2aWNl CQlhbWQJCSMgQU1EIDUzQzk3NCAoVGVrcmFtIERDLTM5MChUKSkNCiNkZXZp Y2UJCWlzcAkJIyBRbG9naWMgZmFtaWx5DQojZGV2aWNlCQltcHQJCSMgTFNJ LUxvZ2ljIE1QVC9GdXNpb24NCiNkZXZpY2UJCW5jcgkJIyBOQ1IvU3ltYmlv cyBMb2dpYw0KI2RldmljZQkJc3ltCQkjIE5DUi9TeW1iaW9zIExvZ2ljIChu ZXdlciBjaGlwc2V0cykNCiNvcHRpb25zIAlTWU1fU0VUVVBfTFBfUFJPQkVf TUFQPTB4NDANCgkJCQkjIEFsbG93IG5jciB0byBhdHRhY2ggbGVnYWN5IE5D UiBkZXZpY2VzIHdoZW4gDQoJCQkJIyBib3RoIHN5bSBhbmQgbmNyIGFyZSBj b25maWd1cmVkDQoNCiNkZXZpY2UJCWFkdjAJYXQgaXNhPw0KI2RldmljZQkJ YWR3DQojZGV2aWNlCQlidDAJYXQgaXNhPw0KI2RldmljZQkJYWhhMAlhdCBp c2E/DQojZGV2aWNlCQlhaWMwCWF0IGlzYT8NCg0KI2RldmljZQkJbmN2CQkj IE5DUiA1M0M1MDANCiNkZXZpY2UJCW5zcAkJIyBXb3JrYml0IE5pbmphIFND U0ktMw0KI2RldmljZQkJc3RnCQkjIFRNQyAxOEMzMC8xOEM1MA0KDQojIFND U0kgcGVyaXBoZXJhbHMNCmRldmljZQkJc2NidXMJCSMgU0NTSSBidXMgKHJl cXVpcmVkKQ0KZGV2aWNlCQlkYQkJIyBEaXJlY3QgQWNjZXNzIChkaXNrcykN CmRldmljZQkJc2EJCSMgU2VxdWVudGlhbCBBY2Nlc3MgKHRhcGUgZXRjKQ0K ZGV2aWNlCQljZAkJIyBDRA0KZGV2aWNlCQlwYXNzCQkjIFBhc3N0aHJvdWdo IGRldmljZSAoZGlyZWN0IFNDU0kgYWNjZXNzKQ0KDQojIFJBSUQgY29udHJv bGxlcnMgaW50ZXJmYWNlZCB0byB0aGUgU0NTSSBzdWJzeXN0ZW0NCiNkZXZp Y2UJCWFzcgkJIyBEUFQgU21hcnRSQUlEIFYsIFZJIGFuZCBBZGFwdGVjIFND U0kgUkFJRA0KI2RldmljZQkJZHB0CQkjIERQVCBTbWFydGNhY2hlIC0gU2Vl IExJTlQgZm9yIG9wdGlvbnMhDQojZGV2aWNlCQlpaXIJCSMgSW50ZWwgSW50 ZWdyYXRlZCBSQUlEDQojZGV2aWNlCQltbHkJCSMgTXlsZXggQWNjZWxlUkFJ RC9lWHRyZW1lUkFJRA0KI2RldmljZQkJY2lzcwkJIyBDb21wYXEgU21hcnRS QUlEIDUqIHNlcmllcw0KDQojIFJBSUQgY29udHJvbGxlcnMNCmRldmljZQkJ YWFjCQkjIEFkYXB0ZWMgRlNBIFJBSUQsIERlbGwgUEVSQzIvUEVSQzMNCiNv cHRpb25zIAlBQUNfREVCVUc9NA0KI2RldmljZQkJYWFjcAkJIyBTQ1NJIHBh c3N0aHJvdWdoIGZvciBhYWMgKHJlcXVpcmVzIENBTSkNCiNkZXZpY2UJCWlk YQkJIyBDb21wYXEgU21hcnQgUkFJRA0KI2RldmljZQkJYW1yCQkjIEFNSSBN ZWdhUkFJRA0KI2RldmljZQkJbWx4CQkjIE15bGV4IERBQzk2MCBmYW1pbHkN CiNkZXZpY2UJCXR3ZQkJIyAzd2FyZSBFc2NhbGFkZQ0KDQojb3B0aW9ucyAJ Q0FNREVCVUcNCiNvcHRpb25zIAlDQU1fREVCVUdfQlVTPS0xDQojb3B0aW9u cyAJQ0FNX0RFQlVHX1RBUkdFVD0tMQ0KI29wdGlvbnMgCUNBTV9ERUJVR19M VU49LTENCiNvcHRpb25zIAlDQU1fREVCVUdfRkxBR1M9IkNBTV9ERUJVR19J TkZPfENBTV9ERUJVR19UUkFDRXxDQU1fREVCVUdfU1VCVFJBQ0V8Q0FNX0RF QlVHX0NEQnxDQU1fREVCVUdfWFBUfENBTV9ERUJVR19QRVJJUEgiDQoNCiMg YXRrYmRjMCBjb250cm9scyBib3RoIHRoZSBrZXlib2FyZCBhbmQgdGhlIFBT LzIgbW91c2UNCmRldmljZQkJYXRrYmRjMAlhdCBpc2E/IHBvcnQgSU9fS0JE DQpkZXZpY2UJCWF0a2JkMAlhdCBhdGtiZGM/IGlycSAxIGZsYWdzIDB4MQ0K ZGV2aWNlCQlwc20wCWF0IGF0a2JkYz8gaXJxIDEyDQoNCmRldmljZQkJdmdh MAlhdCBpc2E/DQoNCiMgc3BsYXNoIHNjcmVlbi9zY3JlZW4gc2F2ZXINCnBz ZXVkby1kZXZpY2UJc3BsYXNoDQoNCiMgc3lzY29ucyBpcyB0aGUgZGVmYXVs dCBjb25zb2xlIGRyaXZlciwgcmVzZW1ibGluZyBhbiBTQ08gY29uc29sZQ0K ZGV2aWNlCQlzYzAJYXQgaXNhPyBmbGFncyAweDEwMA0KDQojIEVuYWJsZSB0 aGlzIGFuZCBQQ1ZUX0ZSRUVCU0QgZm9yIHBjdnQgdnQyMjAgY29tcGF0aWJs ZSBjb25zb2xlIGRyaXZlcg0KI2RldmljZQkJdnQwCWF0IGlzYT8NCiNvcHRp b25zIAlYU0VSVkVSCQkJIyBzdXBwb3J0IGZvciBYIHNlcnZlciBvbiBhIHZ0 IGNvbnNvbGUNCiNvcHRpb25zIAlGQVRfQ1VSU09SCQkjIHN0YXJ0IHdpdGgg YmxvY2sgY3Vyc29yDQojIElmIHlvdSBoYXZlIGEgVGhpbmtQQUQsIHVuY29t bWVudCB0aGlzIGFsb25nIHdpdGggdGhlIHJlc3Qgb2YgdGhlIFBDVlQgbGlu ZXMNCiNvcHRpb25zIAlQQ1ZUX1NDQU5TRVQ9MgkJIyBJQk0ga2V5Ym9hcmRz IGFyZSBub24tc3RkDQoNCmRldmljZQkJYWdwCQkjIHN1cHBvcnQgc2V2ZXJh bCBBR1AgY2hpcHNldHMNCg0KIyBGbG9hdGluZyBwb2ludCBzdXBwb3J0IC0g ZG8gbm90IGRpc2FibGUuDQpkZXZpY2UJCW5weDAJYXQgbmV4dXM/IHBvcnQg SU9fTlBYIGlycSAxMw0KDQojIFBvd2VyIG1hbmFnZW1lbnQgc3VwcG9ydCAo c2VlIExJTlQgZm9yIG1vcmUgb3B0aW9ucykNCmRldmljZQkJYXBtMAlhdCBu ZXh1cz8gZGlzYWJsZSBmbGFncyAweDIwICMgQWR2YW5jZWQgUG93ZXIgTWFu YWdlbWVudA0KDQojIFBDQ0FSRCAoUENNQ0lBKSBzdXBwb3J0DQojZGV2aWNl CQljYXJkDQojZGV2aWNlCQlwY2ljMAlhdCBpc2E/IGlycSAwIHBvcnQgMHgz ZTAgaW9tZW0gMHhkMDAwMA0KI2RldmljZQkJcGNpYzEJYXQgaXNhPyBpcnEg MCBwb3J0IDB4M2UyIGlvbWVtIDB4ZDQwMDAgZGlzYWJsZQ0KDQojIFNlcmlh bCAoQ09NKSBwb3J0cw0KZGV2aWNlCQlzaW8wCWF0IGlzYT8gcG9ydCBJT19D T00xIGZsYWdzIDB4MzAgaXJxIDQNCmRldmljZQkJc2lvMQlhdCBpc2E/IHBv cnQgSU9fQ09NMiBpcnEgMw0KZGV2aWNlCQlzaW8yCWF0IGlzYT8gZGlzYWJs ZSBwb3J0IElPX0NPTTMgaXJxIDUNCmRldmljZQkJc2lvMwlhdCBpc2E/IGRp c2FibGUgcG9ydCBJT19DT000IGlycSA5DQoNCm9wdGlvbnMgQ09OU1BFRUQ9 MTE1MjAwDQoNCiMgUGFyYWxsZWwgcG9ydA0KZGV2aWNlCQlwcGMwCWF0IGlz YT8gaXJxIDcNCmRldmljZQkJcHBidXMJCSMgUGFyYWxsZWwgcG9ydCBidXMg KHJlcXVpcmVkKQ0KZGV2aWNlCQlscHQJCSMgUHJpbnRlcg0KI2RldmljZQkJ cGxpcAkJIyBUQ1AvSVAgb3ZlciBwYXJhbGxlbA0KI2RldmljZQkJcHBpCQkj IFBhcmFsbGVsIHBvcnQgaW50ZXJmYWNlIGRldmljZQ0KI2RldmljZQkJdnBv CQkjIFJlcXVpcmVzIHNjYnVzIGFuZCBkYQ0KDQoNCiMgUENJIEV0aGVybmV0 IE5JQ3MuDQojZGV2aWNlCQlkZQkJIyBERUMvSW50ZWwgREMyMXg0eCAoYGBU dWxpcCcnKQ0KI2RldmljZQkJZW0JCSMgSW50ZWwgUFJPLzEwMDAgYWRhcHRl ciBHaWdhYml0IEV0aGVybmV0IENhcmQgKGBgV2lzZW1hbicnKQ0KI2Rldmlj ZQkJdHhwCQkjIDNDb20gM2NSOTkwIChgYFR5cGhvb24nJykNCiNkZXZpY2UJ CXZ4CQkjIDNDb20gM2M1OTAsIDNjNTk1IChgYFZvcnRleCcnKQ0KDQojIFBD SSBFdGhlcm5ldCBOSUNzIHRoYXQgdXNlIHRoZSBjb21tb24gTUlJIGJ1cyBj b250cm9sbGVyIGNvZGUuDQojIE5PVEU6IEJlIHN1cmUgdG8ga2VlcCB0aGUg J2RldmljZSBtaWlidXMnIGxpbmUgaW4gb3JkZXIgdG8gdXNlIHRoZXNlIE5J Q3MhDQpkZXZpY2UJCW1paWJ1cwkJIyBNSUkgYnVzIHN1cHBvcnQNCiNkZXZp Y2UJCWRjCQkjIERFQy9JbnRlbCAyMTE0MyBhbmQgdmFyaW91cyB3b3JrYWxp a2VzDQojZGV2aWNlCQlmeHAJCSMgSW50ZWwgRXRoZXJFeHByZXNzIFBSTy8x MDBCICg4MjU1NywgODI1NTgpDQojZGV2aWNlCQlwY24JCSMgQU1EIEFtNzlD OTd4IFBDSSAxMC8xMDAgTklDcw0KI2RldmljZQkJcmwJCSMgUmVhbFRlayA4 MTI5LzgxMzkNCiNkZXZpY2UJCXNmCQkjIEFkYXB0ZWMgQUlDLTY5MTUgKGBg U3RhcmZpcmUnJykNCiNkZXZpY2UJCXNpcwkJIyBTaWxpY29uIEludGVncmF0 ZWQgU3lzdGVtcyBTaVMgOTAwL1NpUyA3MDE2DQojZGV2aWNlCQlzdGUJCSMg U3VuZGFuY2UgU1QyMDEgKEQtTGluayBERkUtNTUwVFgpDQojZGV2aWNlCQl0 bAkJIyBUZXhhcyBJbnN0cnVtZW50cyBUaHVuZGVyTEFODQojZGV2aWNlCQl0 eAkJIyBTTUMgRXRoZXJQb3dlciBJSSAoODNjMTcwIGBgRVBJQycnKQ0KI2Rl dmljZQkJdnIJCSMgVklBIFJoaW5lLCBSaGluZSBJSQ0KI2RldmljZQkJd2IJ CSMgV2luYm9uZCBXODlDODQwRg0KI2RldmljZQkJeGwJCSMgM0NvbSAzYzkw eCAoYGBCb29tZXJhbmcnJywgYGBDeWNsb25lJycpDQpkZXZpY2UJCWJnZQkJ IyBCcm9hZGNvbSBCQ001NzB4IChgYFRpZ29uIElJSScnKQ0KDQojIElTQSBF dGhlcm5ldCBOSUNzLg0KIyAnZGV2aWNlIGVkJyByZXF1aXJlcyAnZGV2aWNl IG1paWJ1cycNCiNkZXZpY2UJCWVkMAlhdCBpc2E/IGRpc2FibGUgcG9ydCAw eDI4MCBpcnEgMTAgaW9tZW0gMHhkODAwMA0KI2RldmljZQkJZXgNCiNkZXZp Y2UJCWVwDQojZGV2aWNlCQlmZTAJYXQgaXNhPyBkaXNhYmxlIHBvcnQgMHgz MDANCiMgWGlyY29tIEV0aGVybmV0DQojZGV2aWNlCQl4ZQ0KIyBQUklTTSBJ IElFRUUgODAyLjExYiB3aXJlbGVzcyBOSUMuDQojZGV2aWNlCQlhd2kNCiMg V2F2ZUxBTi9JRUVFIDgwMi4xMSB3aXJlbGVzcyBOSUNzLiBOb3RlOiB0aGUg V2F2ZUxBTi9JRUVFIHJlYWxseQ0KIyBleGlzdHMgb25seSBhcyBhIFBDTUNJ QSBkZXZpY2UsIHNvIHRoZXJlIGlzIG5vIElTQSBhdHRhY2htZW50IG5lZWRl ZA0KIyBhbmQgcmVzb3VyY2VzIHdpbGwgYWx3YXlzIGJlIGR5bmFtaWNhbGx5 IGFzc2lnbmVkIGJ5IHRoZSBwY2NhcmQgY29kZS4NCiNkZXZpY2UJCXdpDQoj IEFpcm9uZXQgNDUwMC80ODAwIDgwMi4xMSB3aXJlbGVzcyBOSUNzLiBOb3Rl OiB0aGUgZGVjbGFyYXRpb24gYmVsb3cgd2lsbA0KIyB3b3JrIGZvciBQQ01D SUEgYW5kIFBDSSBjYXJkcywgYXMgd2VsbCBhcyBJU0EgY2FyZHMgc2V0IHRv IElTQSBQblANCiMgbW9kZSAodGhlIGZhY3RvcnkgZGVmYXVsdCkuIElmIHlv dSBzZXQgdGhlIHN3aXRjaGVzIG9uIHlvdXIgSVNBDQojIGNhcmQgZm9yIGEg bWFudWFsbHkgY2hvc2VuIEkvTyBhZGRyZXNzIGFuZCBJUlEsIHlvdSBtdXN0 IHNwZWNpZnkNCiMgdGhvc2UgcGFyYW1ldGVycyBoZXJlLg0KI2RldmljZQkJ YW4NCiMgVGhlIHByb2JlIG9yZGVyIG9mIHRoZXNlIGlzIHByZXNlbnRseSBk ZXRlcm1pbmVkIGJ5IGkzODYvaXNhL2lzYV9jb21wYXQuYy4NCiNkZXZpY2UJ CWllMAlhdCBpc2E/IGRpc2FibGUgcG9ydCAweDMwMCBpcnEgMTAgaW9tZW0g MHhkMDAwMA0KI2RldmljZQkJbGUwCWF0IGlzYT8gZGlzYWJsZSBwb3J0IDB4 MzAwIGlycSA1IGlvbWVtIDB4ZDAwMDANCiNkZXZpY2UJCWxuYzAJYXQgaXNh PyBkaXNhYmxlIHBvcnQgMHgyODAgaXJxIDEwIGRycSAwDQojZGV2aWNlCQlj czAJYXQgaXNhPyBkaXNhYmxlIHBvcnQgMHgzMDANCiNkZXZpY2UJCXNuMAlh dCBpc2E/IGRpc2FibGUgcG9ydCAweDMwMCBpcnEgMTANCg0KIyBQc2V1ZG8g ZGV2aWNlcyAtIHRoZSBudW1iZXIgaW5kaWNhdGVzIGhvdyBtYW55IHVuaXRz IHRvIGFsbG9jYXRlLg0KcHNldWRvLWRldmljZQlsb29wCQkjIE5ldHdvcmsg bG9vcGJhY2sNCnBzZXVkby1kZXZpY2UJZXRoZXIJCSMgRXRoZXJuZXQgc3Vw cG9ydA0KcHNldWRvLWRldmljZQlzbAkxCSMgS2VybmVsIFNMSVANCnBzZXVk by1kZXZpY2UJcHBwCTEJIyBLZXJuZWwgUFBQDQpwc2V1ZG8tZGV2aWNlCXR1 bgkJIyBQYWNrZXQgdHVubmVsLg0KcHNldWRvLWRldmljZQlwdHkJCSMgUHNl dWRvLXR0eXMgKHRlbG5ldCBldGMpDQpwc2V1ZG8tZGV2aWNlCW1kCQkjIE1l bW9yeSAiZGlza3MiDQpwc2V1ZG8tZGV2aWNlCWdpZgkJIyBJUHY2IGFuZCBJ UHY0IHR1bm5lbGluZw0KcHNldWRvLWRldmljZQlmYWl0aAkxCSMgSVB2Ni10 by1JUHY0IHJlbGF5aW5nICh0cmFuc2xhdGlvbikNCg0KIyBUaGUgYGJwZicg cHNldWRvLWRldmljZSBlbmFibGVzIHRoZSBCZXJrZWxleSBQYWNrZXQgRmls dGVyLg0KIyBCZSBhd2FyZSBvZiB0aGUgYWRtaW5pc3RyYXRpdmUgY29uc2Vx dWVuY2VzIG9mIGVuYWJsaW5nIHRoaXMhDQpwc2V1ZG8tZGV2aWNlCWJwZgkJ I0JlcmtlbGV5IHBhY2tldCBmaWx0ZXINCg0KIyBVU0Igc3VwcG9ydA0KZGV2 aWNlCQl1aGNpCQkjIFVIQ0kgUENJLT5VU0IgaW50ZXJmYWNlDQpkZXZpY2UJ CW9oY2kJCSMgT0hDSSBQQ0ktPlVTQiBpbnRlcmZhY2UNCmRldmljZQkJdXNi CQkjIFVTQiBCdXMgKHJlcXVpcmVkKQ0KZGV2aWNlCQl1Z2VuCQkjIEdlbmVy aWMNCmRldmljZQkJdWhpZAkJIyAiSHVtYW4gSW50ZXJmYWNlIERldmljZXMi DQpkZXZpY2UJCXVrYmQJCSMgS2V5Ym9hcmQNCmRldmljZQkJdWxwdAkJIyBQ cmludGVyDQpkZXZpY2UJCXVtYXNzCQkjIERpc2tzL01hc3Mgc3RvcmFnZSAt IFJlcXVpcmVzIHNjYnVzIGFuZCBkYQ0KZGV2aWNlCQl1bXMJCSMgTW91c2UN CiNkZXZpY2UJCXVzY2FubmVyCSMgU2Nhbm5lcnMNCiNkZXZpY2UJCXVyaW8J CSMgRGlhbW9uZCBSaW8gTVAzIFBsYXllcg0KIyBVU0IgRXRoZXJuZXQsIHJl cXVpcmVzIG1paQ0KI2RldmljZQkJYXVlCQkjIEFETXRlayBVU0IgZXRoZXJu ZXQNCiNkZXZpY2UJCWN1ZQkJIyBDQVRDIFVTQiBldGhlcm5ldA0KI2Rldmlj ZQkJa3VlCQkjIEthd2FzYWtpIExTSSBVU0IgZXRoZXJuZXQNCg== --8323328-1260086421-1062746423=:13033--