From owner-freebsd-net@freebsd.org Wed Sep 18 02:44:57 2019 Return-Path: Delivered-To: freebsd-net@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 193FAEED31 for ; Wed, 18 Sep 2019 02:44:57 +0000 (UTC) (envelope-from vm.finance2@gmail.com) Received: from mail-io1-xd44.google.com (mail-io1-xd44.google.com [IPv6:2607:f8b0:4864:20::d44]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46Y48831WVz3FCG for ; Wed, 18 Sep 2019 02:44:56 +0000 (UTC) (envelope-from vm.finance2@gmail.com) Received: by mail-io1-xd44.google.com with SMTP id d17so12486031ios.13 for ; Tue, 17 Sep 2019 19:44:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=4r4NHdVQVdiystY6bjia2LP2HXfkyiQKmU5sX+opVt8=; b=Jftc/sdI+v5c2qAeXd45gTIj6lsJtaCOmOxO+2AwThtAjsKOiEIZClzH8d1B0zEgUT NI4tjWPj6/HA9MrykS7sqbGx7aAeeXs7F0azztVDFJ4+ZGgC103Jde2HRYn5vF/NzXmS oPrcZKYgPw/iNETBat/4N5jbV7TAYogrvEsik2rXKxIk/AA8IlBKTiN+gBDbvUTxBwnx qks4i/L/xcKS2PW7kwFCIyEXtgGtD+dyQVdYFMWPgMVH0hdEAEFrKfKPA2dWUAWwkHgR vsSRCOZmYd1ZYggiH/Da3i7HtIDIADXg4PjSsshOz9m+ixw5a2QDhmw8fJq8RC1/S00D OWdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=4r4NHdVQVdiystY6bjia2LP2HXfkyiQKmU5sX+opVt8=; b=BL0YwUMSeQbEDTYT791RvGfN+HRjWjDbMgDQGj3wdLKaExrZZQ5awbLDiwbYLsBD4q FmmSMmnkk91FIjxOaJ3RWBTNNUdiJHZZbBtsFGkufyohLZaMbNo09UU+/l6dGHyJfg/C VmVj6I5vdojMBHQFTbtlrg85YIefJnV7ARIdX6yZrSVLNdwijJqJt/3DWogpOyMZXhCo uRhLoY1HC/GmCKFCtZAbr7SjH9XWfdff6Qj15seNOatV0JNW3x1bF2qkDnRDE64cXwp9 tqBKbopjy++PAAxCNa+MWl8mXtq06msxZr9Y5lp8/Ch6O0wi2+uhFEvyBHuz8ykIzIQw LAyQ== X-Gm-Message-State: APjAAAUYW7fy2EqrCm6XdsMfVKT87bV3xop9vnh+KCbyaFb0L3kQ+UCF Ye0NFsDVs+2zSd8AHiIQFnNq6SNKl4v2j1lPkZVHPjf/ X-Google-Smtp-Source: APXvYqx8S2bPaq0yzvsBF0M51JqAWBXJXunvRy6b50ABtHvExpZ9RWMIB2goASx49GC08+BcCXHjnDmqmLxKEk1M0Fo= X-Received: by 2002:a5e:da0a:: with SMTP id x10mr2769951ioj.286.1568774224715; Tue, 17 Sep 2019 19:37:04 -0700 (PDT) MIME-Version: 1.0 References: <201909091232.x89CWl4b047025@donotpassgo.dyslexicfish.net> <27AD43DA-3237-490A-B3A6-C1792F9674E5@netflix.com> <5B630235-ABC7-4122-9082-F59BCCCDE14A@netflix.com> In-Reply-To: From: vm finance Date: Tue, 17 Sep 2019 23:36:50 +0000 Message-ID: Subject: Re: BBR patches? To: Randall Stewart Cc: Jamie Landeg-Jones , Ryan Stone , freebsd-net Content-Type: multipart/mixed; boundary="00000000000065de770592cab622" X-Rspamd-Queue-Id: 46Y48831WVz3FCG X-Spamd-Bar: ++++++++++ Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=Jftc/sdI; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of vmfinance2@gmail.com designates 2607:f8b0:4864:20::d44 as permitted sender) smtp.mailfrom=vmfinance2@gmail.com X-Spamd-Result: default: False [10.49 / 15.00]; GREYLIST(0.00)[pass,body]; R_SPF_ALLOW(0.00)[+ip6:2607:f8b0:4000::/36]; FREEMAIL_FROM(0.00)[gmail.com]; HAS_ATTACHMENT(0.00)[]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(0.00)[gmail.com,none]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:+,3:~,4:~]; SUBJECT_ENDS_QUESTION(1.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; TAGGED_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0]; ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; MIME_GOOD(-0.10)[multipart/mixed,multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-net@freebsd.org]; NEURAL_SPAM_MEDIUM(1.00)[0.996,0]; BAD_REP_POLICIES(0.10)[]; IP_SCORE_FREEMAIL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_SPAM_LONG(1.00)[0.998,0]; RCVD_IN_DNSWL_NONE(0.00)[4.4.d.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; URIBL_BLACK(7.50)[osboxes.org.multi.uribl.com]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; IP_SCORE(0.00)[ip: (2.29), ipnet: 2607:f8b0::/32(-2.69), asn: 15169(-2.23), country: US(-0.05)] X-Spam: Yes X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Sep 2019 02:44:57 -0000 --00000000000065de770592cab622 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable My Kernel config is attached here. Thanks! On Wed, Sep 18, 2019 at 2:26 AM vm finance wrote: > Hi Randall, > > Could you please provide a pointer to the latest patch. I had applied the > one you published Sep-10. > > Following is what I have done: > 1. Picked FreeBSD 12.0 RELEASE VM from osboxes.org > 2. Got VM up under VMPlayer on x86 laptop > 3. Checked out latest codebase from freebsd repo: > svn co svn://svn.freebsd.org/base/head /usr/src* > cd /usr/src; > make buildworld buildkernel > [this is where make fails when patch is applied] > > I could try to build with your latest patch - please send me a pointer. > > Thanks for your help! > > > On Tue, Sep 17, 2019 at 1:33 PM Randall Stewart wrote: > >> Looking at your make file log I can=E2=80=99t really tell what you are d= oing. >> >> Its not the BBR or Rack code that is blowing up=E2=80=A6 >> >> Are you cross compiling? >> >> I have done the old fashioned kernel make >> >> i.e. >> >> cd src/sys/amd64/config >> config headvm >> cd ../compile/headvm >> >> make cleandepend ; make depend; make -j3 >> >> I have done >> >> cd src >> make buildkernel KERNCONF=3Dheadvm >> >> And even >> >> make buildkernel KERNCONF=3DGENERIC >> >> to make sure that the build works without bbr. >> >> I attach my headvm config.. >> >> What exactly are you building and how? kernel config too please? >> >> R >> >> >> >> >> > On Sep 17, 2019, at 1:11 PM, Randall Stewart wrote: >> > >> > looking >> > >> > I was at 352408.. let me update and try it >> > >> > R >> > >> >> On Sep 17, 2019, at 1:10 PM, Randall Stewart wrote: >> >> >> >> Hmm >> >> >> >> Did you get the patch I updated too this am? >> >> >> >> I have built it both with and without the bbr stack and had no issue.= . >> there was >> >> an issue with KTLS before the update though. >> >> >> >> I don=E2=80=99t recognize what you have below there though=E2=80=A6 >> >> >> >> R >> >> >> >>> On Sep 17, 2019, at 11:47 AM, vm finance >> wrote: >> >>> >> >>> Got it - thank you! >> >>> >> >>> btw, I tried to build the patch but its giving an error. Following i= s >> SVN info + make error mesg. >> >>> >> >>> Please let me know what am I missing here? >> >>> >> >>> Thanks! >> >>> >> >>> #svnlite revision >> >>> Path: . >> >>> Working Copy Root Path: /usr/src >> >>> URL: svn://svn.freebsd.org/base/head >> >>> Relative URL: ^/head >> >>> Repository Root: svn://svn.freebsd.org/base >> >>> Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f >> >>> Revision: 352436 >> >>> Node Kind: directory >> >>> Schedule: normal >> >>> Last Changed Author: jah >> >>> Last Changed Rev: 352434 >> >>> Last Changed Date: 2019-09-17 03:39:31 +0000 (Tue, 17 Sep 2019) >> >>> >> >>> root@osboxes:/usr/src # >> >>> >> >>> -------------------------------------------- snip >> ---------------------------- >> >>> >> >>> ad_elf64_obj.llo reloc_elf64.llo disk.llo part.llo vdisk.llo >> dev_net.llo bcache.llo interp_simple.llo zfs_cmd.llo >> >>> rm -f .depend .depend.* GPATH GRTAGS GSYMS GTAGS >> >>> =3D=3D=3D> sys (cleandir) >> >>> rm -f export_syms machine x86 tcp_bbr.ko tcp_bbr.kld bbr.o >> sack_filter.o rack_bbr_common.o opt_inet.h opt_inet6.h opt_ipsec.h >> opt_tcpdebug.h opt_kern_tls.h >> >>> rm: x86: is a directory >> >>> *** Error code 1 >> >>> >> >>> Stop. >> >>> make[3]: stopped in /usr/src/sys >> >>> *** Error code 1 >> >>> >> >>> Stop. >> >>> make[2]: stopped in /usr/src >> >>> *** Error code 1 >> >>> >> >>> Stop. >> >>> make[1]: stopped in /usr/src >> >>> *** Error code 1 >> >>> >> >>> Stop. >> >>> make: stopped in /usr/src >> >>> >> >>> >> >>> On Tue, Sep 17, 2019 at 6:41 PM vm finance >> wrote: >> >>> Got it - thank you! >> >>> >> >>> btw, I tried to build the patch but its giving an error. Following i= s >> SVN info + make error mesg. >> >>> I have also attached the entire build log...snippet is below >> >>> >> >>> Please let me know what am I missing here? >> >>> >> >>> Thanks! >> >>> >> >>> #svnlite revision >> >>> Path: . >> >>> Working Copy Root Path: /usr/src >> >>> URL: svn://svn.freebsd.org/base/head >> >>> Relative URL: ^/head >> >>> Repository Root: svn://svn.freebsd.org/base >> >>> Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f >> >>> Revision: 352436 >> >>> Node Kind: directory >> >>> Schedule: normal >> >>> Last Changed Author: jah >> >>> Last Changed Rev: 352434 >> >>> Last Changed Date: 2019-09-17 03:39:31 +0000 (Tue, 17 Sep 2019) >> >>> >> >>> root@osboxes:/usr/src # >> >>> >> >>> -------------------------------------------- snip >> ---------------------------- >> >>> >> >>> ad_elf64_obj.llo reloc_elf64.llo disk.llo part.llo vdisk.llo >> dev_net.llo bcache.llo interp_simple.llo zfs_cmd.llo >> >>> rm -f .depend .depend.* GPATH GRTAGS GSYMS GTAGS >> >>> =3D=3D=3D> sys (cleandir) >> >>> rm -f export_syms machine x86 tcp_bbr.ko tcp_bbr.kld bbr.o >> sack_filter.o rack_bbr_common.o opt_inet.h opt_inet6.h opt_ipsec.h >> opt_tcpdebug.h opt_kern_tls.h >> >>> rm: x86: is a directory >> >>> *** Error code 1 >> >>> >> >>> Stop. >> >>> make[3]: stopped in /usr/src/sys >> >>> *** Error code 1 >> >>> >> >>> Stop. >> >>> make[2]: stopped in /usr/src >> >>> *** Error code 1 >> >>> >> >>> Stop. >> >>> make[1]: stopped in /usr/src >> >>> *** Error code 1 >> >>> >> >>> Stop. >> >>> make: stopped in /usr/src >> >>> >> >>> >> >>> On Tue, Sep 17, 2019 at 6:27 PM Randall Stewart >> wrote: >> >>> Pacing is provided by tcp_hpts.c. The current linux patches do not >> have >> >>> to have fq.. they built an alternate means of doing pacing into bbr. >> >>> >> >>> In either case our testing has shown that our pacing is more accurat= e >> than >> >>> either fq or the internal pacer :) >> >>> >> >>> R >> >>> >> >>>> On Sep 17, 2019, at 11:05 AM, vm finance >> wrote: >> >>>> >> >>>> Thanks Randall. >> >>>> I was able to apply the patch - now rebuilding the kernel. Would >> update on how it goes. >> >>>> >> >>>> BTW, is there any description on how lack of tc_fq under FreeBSD is >> compensated here? >> >>>> The original BBR patches on Linux show that as a must-have? Is that >> functionality implemented via tcp_ratelimit.[ch]? >> >>>> >> >>>> Any pointers to existing presentations/discussions highly >> appreciated? >> >>>> >> >>>> Thanks a lot. >> >>>> >> >>>> On Tue, Sep 17, 2019 at 5:39 AM Randall Stewart >> wrote: >> >>>> You should be able to compile it against the current head. I >> re-doing that now (had an >> >>>> issue with my machine and had to roll it back to a backup). >> >>>> >> >>>> When I put the patch up on Sept 10th it complied with and without >> BBR on whatever >> >>>> was that rev.. >> >>>> >> >>>> Looking in the commit logs that would have been around 352191 >> >>>> >> >>>> Hope that helps >> >>>> >> >>>> R >> >>>> >> >>>>> On Sep 17, 2019, at 3:32 AM, vm finance >> wrote: >> >>>>> >> >>>>> Hi Randall, >> >>>>> >> >>>>> Thanks for releasing BBR patch: >> >>>>> https://reviews.freebsd.org/D21582#change-xcAWBif3E9Jq >> >>>>> >> >>>>> Could you please let me know what SVN/GIT label tag this is based >> on? I would like to patch and experiment with it. I couldn't find this i= nfo >> in the released patch. >> >>>>> >> >>>>> Thanks a lot! >> >>>>> >> >>>>> On Tue, Sep 10, 2019 at 10:26 AM Ryan Stone >> wrote: >> >>>>> rrs@ has just posted the BBR patch to phabricator: >> >>>>> >> >>>>> https://reviews.freebsd.org/D21582 >> >>>> >> >>>> ------ >> >>>> Randall Stewart >> >>>> rrs@netflix.com >> >>>> >> >>>> >> >>>> >> >>> >> >>> ------ >> >>> Randall Stewart >> >>> rrs@netflix.com >> >>> >> >>> >> >>> >> >> >> >> ------ >> >> Randall Stewart >> >> rrs@netflix.com >> >> >> >> >> >> >> > >> > ------ >> > Randall Stewart >> > rrs@netflix.com >> > >> > >> > >> >> ------ >> Randall Stewart >> rrs@netflix.com >> >> >> >> --00000000000065de770592cab622 Content-Type: application/octet-stream; name=MYKERNEL Content-Disposition: attachment; filename=MYKERNEL Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k0oh840h0 IwojIEdFTkVSSUMgLS0gR2VuZXJpYyBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIGZvciBGcmVl QlNEL2FtZDY0CiMKIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGZpbGUsIHBsZWFzZSBy ZWFkIHRoZSBjb25maWcoNSkgbWFudWFsIHBhZ2UsCiMgYW5kL29yIHRoZSBoYW5kYm9vayBzZWN0 aW9uIG9uIEtlcm5lbCBDb25maWd1cmF0aW9uIEZpbGVzOgojCiMgICAgaHR0cHM6Ly93d3cuRnJl ZUJTRC5vcmcvZG9jL2VuX1VTLklTTzg4NTktMS9ib29rcy9oYW5kYm9vay9rZXJuZWxjb25maWct Y29uZmlnLmh0bWwKIwojIFRoZSBoYW5kYm9vayBpcyBhbHNvIGF2YWlsYWJsZSBsb2NhbGx5IGlu IC91c3Ivc2hhcmUvZG9jL2hhbmRib29rCiMgaWYgeW91J3ZlIGluc3RhbGxlZCB0aGUgZG9jIGRp c3RyaWJ1dGlvbiwgb3RoZXJ3aXNlIGFsd2F5cyBzZWUgdGhlCiMgRnJlZUJTRCBXb3JsZCBXaWRl IFdlYiBzZXJ2ZXIgKGh0dHBzOi8vd3d3LkZyZWVCU0Qub3JnLykgZm9yIHRoZQojIGxhdGVzdCBp bmZvcm1hdGlvbi4KIwojIEFuIGV4aGF1c3RpdmUgbGlzdCBvZiBvcHRpb25zIGFuZCBtb3JlIGRl dGFpbGVkIGV4cGxhbmF0aW9ucyBvZiB0aGUKIyBkZXZpY2UgbGluZXMgaXMgYWxzbyBwcmVzZW50 IGluIHRoZSAuLi8uLi9jb25mL05PVEVTIGFuZCBOT1RFUyBmaWxlcy4KIyBJZiB5b3UgYXJlIGlu IGRvdWJ0IGFzIHRvIHRoZSBwdXJwb3NlIG9yIG5lY2Vzc2l0eSBvZiBhIGxpbmUsIGNoZWNrIGZp cnN0CiMgaW4gTk9URVMuCiMKIyAkRnJlZUJTRDogaGVhZC9zeXMvYW1kNjQvY29uZi9HRU5FUklD IDM0OTI1MyAyMDE5LTA2LTIxIDAwOjE2OjMwWiBjZW0gJAoKY3B1CQlIQU1NRVIKaWRlbnQJCUdF TkVSSUMKCm1ha2VvcHRpb25zCURFQlVHPS1nCQkjIEJ1aWxkIGtlcm5lbCB3aXRoIGdkYigxKSBk ZWJ1ZyBzeW1ib2xzCm1ha2VvcHRpb25zCVdJVEhfQ1RGPTEJCSMgUnVuIGN0ZmNvbnZlcnQoMSkg Zm9yIERUcmFjZSBzdXBwb3J0CgpvcHRpb25zIAlTQ0hFRF9VTEUJCSMgVUxFIHNjaGVkdWxlcgpv cHRpb25zIAlOVU1BCQkJIyBOb24tVW5pZm9ybSBNZW1vcnkgQXJjaGl0ZWN0dXJlIHN1cHBvcnQK b3B0aW9ucyAJUFJFRU1QVElPTgkJIyBFbmFibGUga2VybmVsIHRocmVhZCBwcmVlbXB0aW9uCm9w dGlvbnMgCVZJTUFHRQkJCSMgU3Vic3lzdGVtIHZpcnR1YWxpemF0aW9uLCBlLmcuIFZORVQKb3B0 aW9ucyAJSU5FVAkJCSMgSW50ZXJORVR3b3JraW5nCm9wdGlvbnMgCUlORVQ2CQkJIyBJUHY2IGNv bW11bmljYXRpb25zIHByb3RvY29scwpvcHRpb25zIAlJUFNFQ19TVVBQT1JUCQkjIEFsbG93IGts ZGxvYWQgb2YgaXBzZWMgYW5kIHRjcG1kNQpvcHRpb25zIAlUQ1BfT0ZGTE9BRAkJIyBUQ1Agb2Zm bG9hZApvcHRpb25zIAlUQ1BfQkxBQ0tCT1gJCSMgRW5oYW5jZWQgVENQIGV2ZW50IGxvZ2dpbmcK b3B0aW9ucyAJVENQX0hIT09LCQkjIGhob29rKDkpIGZyYW1ld29yayBmb3IgVENQCm9wdGlvbnMJ CVRDUF9SRkM3NDEzCQkjIFRDUCBGYXN0IE9wZW4Kb3B0aW9ucyAJU0NUUAkJCSMgU3RyZWFtIENv bnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sCm9wdGlvbnMgCUZGUwkJCSMgQmVya2VsZXkgRmFz dCBGaWxlc3lzdGVtCm9wdGlvbnMgCVNPRlRVUERBVEVTCQkjIEVuYWJsZSBGRlMgc29mdCB1cGRh dGVzIHN1cHBvcnQKb3B0aW9ucyAJVUZTX0FDTAkJCSMgU3VwcG9ydCBmb3IgYWNjZXNzIGNvbnRy b2wgbGlzdHMKb3B0aW9ucyAJVUZTX0RJUkhBU0gJCSMgSW1wcm92ZSBwZXJmb3JtYW5jZSBvbiBi aWcgZGlyZWN0b3JpZXMKb3B0aW9ucyAJVUZTX0dKT1VSTkFMCQkjIEVuYWJsZSBnam91cm5hbC1i YXNlZCBVRlMgam91cm5hbGluZwpvcHRpb25zIAlRVU9UQQkJCSMgRW5hYmxlIGRpc2sgcXVvdGFz IGZvciBVRlMKb3B0aW9ucyAJTURfUk9PVAkJCSMgTUQgaXMgYSBwb3RlbnRpYWwgcm9vdCBkZXZp Y2UKb3B0aW9ucyAJTkZTQ0wJCQkjIE5ldHdvcmsgRmlsZXN5c3RlbSBDbGllbnQKb3B0aW9ucyAJ TkZTRAkJCSMgTmV0d29yayBGaWxlc3lzdGVtIFNlcnZlcgpvcHRpb25zIAlORlNMT0NLRAkJIyBO ZXR3b3JrIExvY2sgTWFuYWdlcgpvcHRpb25zIAlORlNfUk9PVAkJIyBORlMgdXNhYmxlIGFzIC8s IHJlcXVpcmVzIE5GU0NMCm9wdGlvbnMgCU1TRE9TRlMJCQkjIE1TRE9TIEZpbGVzeXN0ZW0Kb3B0 aW9ucyAJQ0Q5NjYwCQkJIyBJU08gOTY2MCBGaWxlc3lzdGVtCm9wdGlvbnMgCVBST0NGUwkJCSMg UHJvY2VzcyBmaWxlc3lzdGVtIChyZXF1aXJlcyBQU0VVRE9GUykKb3B0aW9ucyAJUFNFVURPRlMJ CSMgUHNldWRvLWZpbGVzeXN0ZW0gZnJhbWV3b3JrCm9wdGlvbnMgCUdFT01fUkFJRAkJIyBTb2Z0 IFJBSUQgZnVuY3Rpb25hbGl0eS4Kb3B0aW9ucyAJR0VPTV9MQUJFTAkJIyBQcm92aWRlcyBsYWJl bGl6YXRpb24Kb3B0aW9ucyAJRUZJUlQJCQkjIEVGSSBSdW50aW1lIFNlcnZpY2VzIHN1cHBvcnQK b3B0aW9ucyAJQ09NUEFUX0ZSRUVCU0QzMgkjIENvbXBhdGlibGUgd2l0aCBpMzg2IGJpbmFyaWVz Cm9wdGlvbnMgCUNPTVBBVF9GUkVFQlNENAkJIyBDb21wYXRpYmxlIHdpdGggRnJlZUJTRDQKb3B0 aW9ucyAJQ09NUEFUX0ZSRUVCU0Q1CQkjIENvbXBhdGlibGUgd2l0aCBGcmVlQlNENQpvcHRpb25z IAlDT01QQVRfRlJFRUJTRDYJCSMgQ29tcGF0aWJsZSB3aXRoIEZyZWVCU0Q2Cm9wdGlvbnMgCUNP TVBBVF9GUkVFQlNENwkJIyBDb21wYXRpYmxlIHdpdGggRnJlZUJTRDcKb3B0aW9ucyAJQ09NUEFU X0ZSRUVCU0Q5CQkjIENvbXBhdGlibGUgd2l0aCBGcmVlQlNEOQpvcHRpb25zIAlDT01QQVRfRlJF RUJTRDEwCSMgQ29tcGF0aWJsZSB3aXRoIEZyZWVCU0QxMApvcHRpb25zIAlDT01QQVRfRlJFRUJT RDExCSMgQ29tcGF0aWJsZSB3aXRoIEZyZWVCU0QxMQpvcHRpb25zIAlDT01QQVRfRlJFRUJTRDEy CSMgQ29tcGF0aWJsZSB3aXRoIEZyZWVCU0QxMgpvcHRpb25zIAlTQ1NJX0RFTEFZPTUwMDAJCSMg RGVsYXkgKGluIG1zKSBiZWZvcmUgcHJvYmluZyBTQ1NJCm9wdGlvbnMgCUtUUkFDRQkJCSMga3Ry YWNlKDEpIHN1cHBvcnQKb3B0aW9ucyAJU1RBQ0sJCQkjIHN0YWNrKDkpIHN1cHBvcnQKb3B0aW9u cyAJU1lTVlNITQkJCSMgU1lTVi1zdHlsZSBzaGFyZWQgbWVtb3J5Cm9wdGlvbnMgCVNZU1ZNU0cJ CQkjIFNZU1Ytc3R5bGUgbWVzc2FnZSBxdWV1ZXMKb3B0aW9ucyAJU1lTVlNFTQkJCSMgU1lTVi1z dHlsZSBzZW1hcGhvcmVzCm9wdGlvbnMgCV9LUE9TSVhfUFJJT1JJVFlfU0NIRURVTElORyAjIFBP U0lYIFAxMDAzXzFCIHJlYWwtdGltZSBleHRlbnNpb25zCm9wdGlvbnMgCVBSSU5URl9CVUZSX1NJ WkU9MTI4CSMgUHJldmVudCBwcmludGYgb3V0cHV0IGJlaW5nIGludGVyc3BlcnNlZC4Kb3B0aW9u cyAJS0JEX0lOU1RBTExfQ0RFVgkjIGluc3RhbGwgYSBDREVWIGVudHJ5IGluIC9kZXYKb3B0aW9u cyAJSFdQTUNfSE9PS1MJCSMgTmVjZXNzYXJ5IGtlcm5lbCBob29rcyBmb3IgaHdwbWMoNCkKb3B0 aW9ucyAJQVVESVQJCQkjIFNlY3VyaXR5IGV2ZW50IGF1ZGl0aW5nCm9wdGlvbnMgCUNBUEFCSUxJ VFlfTU9ERQkJIyBDYXBzaWN1bSBjYXBhYmlsaXR5IG1vZGUKb3B0aW9ucyAJQ0FQQUJJTElUSUVT CQkjIENhcHNpY3VtIGNhcGFiaWxpdGllcwpvcHRpb25zIAlNQUMJCQkjIFRydXN0ZWRCU0QgTUFD IEZyYW1ld29yawpvcHRpb25zIAlLRFRSQUNFX0ZSQU1FCQkjIEVuc3VyZSBmcmFtZXMgYXJlIGNv bXBpbGVkIGluCm9wdGlvbnMgCUtEVFJBQ0VfSE9PS1MJCSMgS2VybmVsIERUcmFjZSBob29rcwpv cHRpb25zIAlEREJfQ1RGCQkJIyBLZXJuZWwgRUxGIGxpbmtlciBsb2FkcyBDVEYgZGF0YQpvcHRp b25zIAlJTkNMVURFX0NPTkZJR19GSUxFCSMgSW5jbHVkZSB0aGlzIGZpbGUgaW4ga2VybmVsCm9w dGlvbnMgCVJBQ0NUCQkJIyBSZXNvdXJjZSBhY2NvdW50aW5nIGZyYW1ld29yawpvcHRpb25zIAlS QUNDVF9ERUZBVUxUX1RPX0RJU0FCTEVEICMgU2V0IGtlcm4ucmFjY3QuZW5hYmxlPTAgYnkgZGVm YXVsdApvcHRpb25zIAlSQ1RMCQkJIyBSZXNvdXJjZSBsaW1pdHMKCiMgRGVidWdnaW5nIHN1cHBv cnQuICBBbHdheXMgbmVlZCB0aGlzOgpvcHRpb25zIAlLREIJCQkjIEVuYWJsZSBrZXJuZWwgZGVi dWdnZXIgc3VwcG9ydC4Kb3B0aW9ucyAJS0RCX1RSQUNFCQkjIFByaW50IGEgc3RhY2sgdHJhY2Ug Zm9yIGEgcGFuaWMuCiMgRm9yIGZ1bGwgZGVidWdnZXIgc3VwcG9ydCB1c2UgKHR1cm4gb2ZmIGlu IHN0YWJsZSBicmFuY2gpOgpvcHRpb25zIAlCVUZfVFJBQ0tJTkcJCSMgVHJhY2sgYnVmZmVyIGhp c3RvcnkKb3B0aW9ucyAJRERCCQkJIyBTdXBwb3J0IEREQi4Kb3B0aW9ucyAJRlVMTF9CVUZfVFJB Q0tJTkcJIyBUcmFjayBtb3JlIGJ1ZmZlciBoaXN0b3J5Cm9wdGlvbnMgCUdEQgkJCSMgU3VwcG9y dCByZW1vdGUgR0RCLgpvcHRpb25zIAlERUFETEtSRVMJCSMgRW5hYmxlIHRoZSBkZWFkbG9jayBy ZXNvbHZlcgpvcHRpb25zIAlJTlZBUklBTlRTCQkjIEVuYWJsZSBjYWxscyBvZiBleHRyYSBzYW5p dHkgY2hlY2tpbmcKb3B0aW9ucyAJSU5WQVJJQU5UX1NVUFBPUlQJIyBFeHRyYSBzYW5pdHkgY2hl Y2tzIG9mIGludGVybmFsIHN0cnVjdHVyZXMsIHJlcXVpcmVkIGJ5IElOVkFSSUFOVFMKb3B0aW9u cyAJV0lUTkVTUwkJCSMgRW5hYmxlIGNoZWNrcyB0byBkZXRlY3QgZGVhZGxvY2tzIGFuZCBjeWNs ZXMKb3B0aW9ucyAJV0lUTkVTU19TS0lQU1BJTgkjIERvbid0IHJ1biB3aXRuZXNzIG9uIHNwaW5s b2NrcyBmb3Igc3BlZWQKb3B0aW9ucyAJTUFMTE9DX0RFQlVHX01BWFpPTkVTPTgJIyBTZXBhcmF0 ZSBtYWxsb2MoOSkgem9uZXMKb3B0aW9ucyAJVkVSQk9TRV9TWVNJTklUPTAJIyBTdXBwb3J0IGRl YnVnLnZlcmJvc2Vfc3lzaW5pdCwgb2ZmIGJ5IGRlZmF1bHQKCiMgS2VybmVsIFNhbml0aXplcnMK I29wdGlvbnMgCUNPVkVSQUdFCQkjIEdlbmVyaWMga2VybmVsIGNvdmVyYWdlLiBVc2VkIGJ5IEtD T1YKI29wdGlvbnMgCUtDT1YJCQkjIEtlcm5lbCBDb3ZlcmFnZSBTYW5pdGl6ZXIKIyBXYXJuaW5n OiBLVUJTQU4gY2FuIHJlc3VsdCBpbiBhIGtlcm5lbCB0b28gbGFyZ2UgZm9yIGxvYWRlciB0byBs b2FkCiNvcHRpb25zIAlLVUJTQU4JCQkjIEtlcm5lbCBVbmRlZmluZWQgQmVoYXZpb3IgU2FuaXRp emVyCgojIEtlcm5lbCBkdW1wIGZlYXR1cmVzLgpvcHRpb25zIAlFS0NECQkJIyBTdXBwb3J0IGZv ciBlbmNyeXB0ZWQga2VybmVsIGR1bXBzCm9wdGlvbnMgCUdaSU8JCQkjIGd6aXAtY29tcHJlc3Nl ZCBrZXJuZWwgYW5kIHVzZXIgZHVtcHMKb3B0aW9ucyAJWlNURElPCQkJIyB6c3RkLWNvbXByZXNz ZWQga2VybmVsIGFuZCB1c2VyIGR1bXBzCm9wdGlvbnMgCU5FVERVTVAJCQkjIG5ldGR1bXAoNCkg Y2xpZW50IHN1cHBvcnQKCiMgTWFrZSBhbiBTTVAtY2FwYWJsZSBrZXJuZWwgYnkgZGVmYXVsdApv cHRpb25zIAlTTVAJCQkjIFN5bW1ldHJpYyBNdWx0aVByb2Nlc3NvciBLZXJuZWwKb3B0aW9ucyAJ RUFSTFlfQVBfU1RBUlRVUAoKIyBDUFUgZnJlcXVlbmN5IGNvbnRyb2wKZGV2aWNlCQljcHVmcmVx CgojIEJ1cyBzdXBwb3J0LgpkZXZpY2UJCWFjcGkKb3B0aW9ucyAJQUNQSV9ETUFSCmRldmljZQkJ cGNpCm9wdGlvbnMgCVBDSV9IUAkJCSMgUENJLUV4cHJlc3MgbmF0aXZlIEhvdFBsdWcKb3B0aW9u cwkJUENJX0lPVgkJCSMgUENJIFNSLUlPViBzdXBwb3J0CgojIEZsb3BweSBkcml2ZXMKZGV2aWNl CQlmZGMKCiMgQVRBIGNvbnRyb2xsZXJzCmRldmljZQkJYWhjaQkJCSMgQUhDSS1jb21wYXRpYmxl IFNBVEEgY29udHJvbGxlcnMKZGV2aWNlCQlhdGEJCQkjIExlZ2FjeSBBVEEvU0FUQSBjb250cm9s bGVycwpkZXZpY2UJCW12cwkJCSMgTWFydmVsbCA4OFNYNTBYWC84OFNYNjBYWC84OFNYNzBYWC9T b0MgU0FUQQpkZXZpY2UJCXNpaXMJCQkjIFNpbGljb25JbWFnZSBTaUkzMTI0L1NpSTMxMzIvU2lJ MzUzMSBTQVRBCgojIFNDU0kgQ29udHJvbGxlcnMKZGV2aWNlCQlhaGMJCQkjIEFIQTI5NDAgYW5k IG9uYm9hcmQgQUlDN3h4eCBkZXZpY2VzCmRldmljZQkJYWhkCQkJIyBBSEEzOTMyMC8yOTMyMCBh bmQgb25ib2FyZCBBSUM3OXh4IGRldmljZXMKZGV2aWNlCQllc3AJCQkjIEFNRCBBbTUzQzk3NCAo VGVrcmFtIERDLTM5MChUKSkKZGV2aWNlCQlocHRpb3AJCQkjIEhpZ2hwb2ludCBSb2NrZXRSYWlk IDN4eHggc2VyaWVzCmRldmljZQkJaXNwCQkJIyBRbG9naWMgZmFtaWx5CiNkZXZpY2UJCWlzcGZ3 CQkJIyBGaXJtd2FyZSBmb3IgUUxvZ2ljIEhCQXMtIG5vcm1hbGx5IGEgbW9kdWxlCmRldmljZQkJ bXB0CQkJIyBMU0ktTG9naWMgTVBULUZ1c2lvbgpkZXZpY2UJCW1wcwkJCSMgTFNJLUxvZ2ljIE1Q VC1GdXNpb24gMgpkZXZpY2UJCW1wcgkJCSMgTFNJLUxvZ2ljIE1QVC1GdXNpb24gMwpkZXZpY2UJ CXN5bQkJCSMgTkNSL1N5bWJpb3MgTG9naWMKZGV2aWNlCQl0cm0JCQkjIFRla3JhbSBEQzM5NVUv VVcvRiBEQzMxNVUgYWRhcHRlcnMKZGV2aWNlCQlpc2NpCQkJIyBJbnRlbCBDNjAwIFNBUyBjb250 cm9sbGVyCmRldmljZQkJb2NzX2ZjCQkJIyBFbXVsZXggRkMgYWRhcHRlcnMKCiMgQVRBL1NDU0kg cGVyaXBoZXJhbHMKZGV2aWNlCQlzY2J1cwkJCSMgU0NTSSBidXMgKHJlcXVpcmVkIGZvciBBVEEv U0NTSSkKZGV2aWNlCQljaAkJCSMgU0NTSSBtZWRpYSBjaGFuZ2VycwpkZXZpY2UJCWRhCQkJIyBE aXJlY3QgQWNjZXNzIChkaXNrcykKZGV2aWNlCQlzYQkJCSMgU2VxdWVudGlhbCBBY2Nlc3MgKHRh cGUgZXRjKQpkZXZpY2UJCWNkCQkJIyBDRApkZXZpY2UJCXBhc3MJCQkjIFBhc3N0aHJvdWdoIGRl dmljZSAoZGlyZWN0IEFUQS9TQ1NJIGFjY2VzcykKZGV2aWNlCQlzZXMJCQkjIEVuY2xvc3VyZSBT ZXJ2aWNlcyAoU0VTIGFuZCBTQUYtVEUpCiNkZXZpY2UJCWN0bAkJCSMgQ0FNIFRhcmdldCBMYXll cgoKIyBSQUlEIGNvbnRyb2xsZXJzIGludGVyZmFjZWQgdG8gdGhlIFNDU0kgc3Vic3lzdGVtCmRl dmljZQkJYW1yCQkJIyBBTUkgTWVnYVJBSUQKZGV2aWNlCQlhcmNtc3IJCQkjIEFyZWNhIFNBVEEg SUkgUkFJRApkZXZpY2UJCWNpc3MJCQkjIENvbXBhcSBTbWFydCBSQUlEIDUqCmRldmljZQkJaHB0 bXYJCQkjIEhpZ2hwb2ludCBSb2NrZXRSQUlEIDE4MngKZGV2aWNlCQlocHRucgkJCSMgSGlnaHBv aW50IERDNzI4MCwgUjc1MApkZXZpY2UJCWhwdHJyCQkJIyBIaWdocG9pbnQgUm9ja2V0UkFJRCAx N3h4LCAyMnh4LCAyM3h4LCAyNXh4CmRldmljZQkJaHB0Mjd4eAkJCSMgSGlnaHBvaW50IFJvY2tl dFJBSUQgMjd4eApkZXZpY2UJCWlpcgkJCSMgSW50ZWwgSW50ZWdyYXRlZCBSQUlECmRldmljZQkJ aXBzCQkJIyBJQk0gKEFkYXB0ZWMpIFNlcnZlUkFJRApkZXZpY2UJCW1seQkJCSMgTXlsZXggQWNj ZWxlUkFJRC9lWHRyZW1lUkFJRApkZXZpY2UJCXR3YQkJCSMgM3dhcmUgOTAwMCBzZXJpZXMgUEFU QS9TQVRBIFJBSUQKZGV2aWNlCQlzbWFydHBxaQkJIyBNaWNyb3NlbWkgc21hcnRwcWkgZHJpdmVy CmRldmljZQkJdHdzCQkJIyBMU0kgM3dhcmUgOTc1MCBTQVRBK1NBUyA2R2IvcyBSQUlEIGNvbnRy b2xsZXIKCiMgUkFJRCBjb250cm9sbGVycwpkZXZpY2UJCWFhYwkJCSMgQWRhcHRlYyBGU0EgUkFJ RApkZXZpY2UJCWFhY3AJCQkjIFNDU0kgcGFzc3Rocm91Z2ggZm9yIGFhYyAocmVxdWlyZXMgQ0FN KQpkZXZpY2UJCWFhY3JhaWQJCQkjIEFkYXB0ZWMgYnkgUE1DIFJBSUQKZGV2aWNlCQlpZGEJCQkj IENvbXBhcSBTbWFydCBSQUlECmRldmljZQkJbWZpCQkJIyBMU0kgTWVnYVJBSUQgU0FTCmRldmlj ZQkJbWx4CQkJIyBNeWxleCBEQUM5NjAgZmFtaWx5CmRldmljZQkJbXJzYXMJCQkjIExTSS9BdmFn byBNZWdhUkFJRCBTQVMvU0FUQSwgNkdiL3MgYW5kIDEyR2IvcwpkZXZpY2UJCXBtc3BjdgkJCSMg UE1DLVNpZXJyYSBTQVMvU0FUQSBDb250cm9sbGVyIGRyaXZlcgojWFhYIHBvaW50ZXIvaW50IHdh cm5pbmdzCiNkZXZpY2UJCXBzdAkJCSMgUHJvbWlzZSBTdXBlcnRyYWsgU1g2MDAwCmRldmljZQkJ dHdlCQkJIyAzd2FyZSBBVEEgUkFJRAoKIyBOVk0gRXhwcmVzcyAoTlZNZSkgc3VwcG9ydApkZXZp Y2UJCW52bWUJCQkjIGJhc2UgTlZNZSBkcml2ZXIKZGV2aWNlCQludmQJCQkjIGV4cG9zZSBOVk1l IG5hbWVzcGFjZXMgYXMgZGlza3MsIGRlcGVuZHMgb24gbnZtZQoKIyBhdGtiZGMwIGNvbnRyb2xz IGJvdGggdGhlIGtleWJvYXJkIGFuZCB0aGUgUFMvMiBtb3VzZQpkZXZpY2UJCWF0a2JkYwkJCSMg QVQga2V5Ym9hcmQgY29udHJvbGxlcgpkZXZpY2UJCWF0a2JkCQkJIyBBVCBrZXlib2FyZApkZXZp Y2UJCXBzbQkJCSMgUFMvMiBtb3VzZQoKZGV2aWNlCQlrYmRtdXgJCQkjIGtleWJvYXJkIG11bHRp cGxleGVyCgpkZXZpY2UJCXZnYQkJCSMgVkdBIHZpZGVvIGNhcmQgZHJpdmVyCm9wdGlvbnMgCVZF U0EJCQkjIEFkZCBzdXBwb3J0IGZvciBWRVNBIEJJT1MgRXh0ZW5zaW9ucyAoVkJFKQoKZGV2aWNl CQlzcGxhc2gJCQkjIFNwbGFzaCBzY3JlZW4gYW5kIHNjcmVlbiBzYXZlciBzdXBwb3J0CgojIHN5 c2NvbnMgaXMgdGhlIGRlZmF1bHQgY29uc29sZSBkcml2ZXIsIHJlc2VtYmxpbmcgYW4gU0NPIGNv bnNvbGUKZGV2aWNlCQlzYwpvcHRpb25zIAlTQ19QSVhFTF9NT0RFCQkjIGFkZCBzdXBwb3J0IGZv ciB0aGUgcmFzdGVyIHRleHQgbW9kZQoKIyB2dCBpcyB0aGUgbmV3IHZpZGVvIGNvbnNvbGUgZHJp dmVyCmRldmljZQkJdnQKZGV2aWNlCQl2dF92Z2EKZGV2aWNlCQl2dF9lZmlmYgoKZGV2aWNlCQlh Z3AJCQkjIHN1cHBvcnQgc2V2ZXJhbCBBR1AgY2hpcHNldHMKCiMgUENDQVJEIChQQ01DSUEpIHN1 cHBvcnQKIyBQQ01DSUEgYW5kIGNhcmRidXMgYnJpZGdlIHN1cHBvcnQKZGV2aWNlCQljYmIJCQkj IGNhcmRidXMgKHllbnRhKSBicmlkZ2UKZGV2aWNlCQlwY2NhcmQJCQkjIFBDIENhcmQgKDE2LWJp dCkgYnVzCmRldmljZQkJY2FyZGJ1cwkJCSMgQ2FyZEJ1cyAoMzItYml0KSBidXMKCiMgU2VyaWFs IChDT00pIHBvcnRzCmRldmljZQkJdWFydAkJCSMgR2VuZXJpYyBVQVJUIGRyaXZlcgoKIyBQYXJh bGxlbCBwb3J0CmRldmljZQkJcHBjCmRldmljZQkJcHBidXMJCQkjIFBhcmFsbGVsIHBvcnQgYnVz IChyZXF1aXJlZCkKZGV2aWNlCQlscHQJCQkjIFByaW50ZXIKZGV2aWNlCQlwcGkJCQkjIFBhcmFs bGVsIHBvcnQgaW50ZXJmYWNlIGRldmljZQojZGV2aWNlCQl2cG8JCQkjIFJlcXVpcmVzIHNjYnVz IGFuZCBkYQoKZGV2aWNlCQlwdWMJCQkjIE11bHRpIEkvTyBjYXJkcyBhbmQgbXVsdGktY2hhbm5l bCBVQVJUcwoKIyBQQ0kvUENJLVgvUENJZSBFdGhlcm5ldCBOSUNzIHRoYXQgdXNlIGlmbGliIGlu ZnJhc3RydWN0dXJlCmRldmljZQkJaWZsaWIKZGV2aWNlCQllbQkJCSMgSW50ZWwgUFJPLzEwMDAg R2lnYWJpdCBFdGhlcm5ldCBGYW1pbHkKZGV2aWNlCQlpeAkJCSMgSW50ZWwgUFJPLzEwR2JFIFBD SUUgUEYgRXRoZXJuZXQKZGV2aWNlCQlpeHYJCQkjIEludGVsIFBSTy8xMEdiRSBQQ0lFIFZGIEV0 aGVybmV0CmRldmljZQkJaXhsCQkJIyBJbnRlbCA3MDAgU2VyaWVzIFBoeXNpY2FsIEZ1bmN0aW9u CmRldmljZQkJaWF2ZgkJCSMgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbgpkZXZpY2UJ CXZteAkJCSMgVk13YXJlIFZNWE5FVDMgRXRoZXJuZXQKCiMgUENJIEV0aGVybmV0IE5JQ3MuCmRl dmljZQkJYnhlCQkJIyBCcm9hZGNvbSBOZXRYdHJlbWUgSUkgQkNNNTc3MVgvQkNNNTc4WFggMTBH YkUKZGV2aWNlCQlsZQkJCSMgQU1EIEFtNzkwMCBMQU5DRSBhbmQgQW03OUM5eHggUENuZXQKZGV2 aWNlCQl0aQkJCSMgQWx0ZW9uIE5ldHdvcmtzIFRpZ29uIEkvSUkgZ2lnYWJpdCBFdGhlcm5ldAoK IyBQQ0kgRXRoZXJuZXQgTklDcyB0aGF0IHVzZSB0aGUgY29tbW9uIE1JSSBidXMgY29udHJvbGxl ciBjb2RlLgojIE5PVEU6IEJlIHN1cmUgdG8ga2VlcCB0aGUgJ2RldmljZSBtaWlidXMnIGxpbmUg aW4gb3JkZXIgdG8gdXNlIHRoZXNlIE5JQ3MhCmRldmljZQkJbWlpYnVzCQkJIyBNSUkgYnVzIHN1 cHBvcnQKZGV2aWNlCQlhZQkJCSMgQXR0YW5zaWMvQXRoZXJvcyBMMiBGYXN0RXRoZXJuZXQKZGV2 aWNlCQlhZ2UJCQkjIEF0dGFuc2ljL0F0aGVyb3MgTDEgR2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJ CWFsYwkJCSMgQXRoZXJvcyBBUjgxMzEvQVI4MTMyIEV0aGVybmV0CmRldmljZQkJYWxlCQkJIyBB dGhlcm9zIEFSODEyMS9BUjgxMTMvQVI4MTE0IEV0aGVybmV0CmRldmljZQkJYmNlCQkJIyBCcm9h ZGNvbSBCQ001NzA2L0JDTTU3MDggR2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJCWJmZQkJCSMgQnJv YWRjb20gQkNNNDQweCAxMC8xMDAgRXRoZXJuZXQKZGV2aWNlCQliZ2UJCQkjIEJyb2FkY29tIEJD TTU3MHh4IEdpZ2FiaXQgRXRoZXJuZXQKZGV2aWNlCQljYXMJCQkjIFN1biBDYXNzaW5pL0Nhc3Np bmkrIGFuZCBOUyBEUDgzMDY1IFNhdHVybgpkZXZpY2UJCWRjCQkJIyBERUMvSW50ZWwgMjExNDMg YW5kIHZhcmlvdXMgd29ya2FsaWtlcwpkZXZpY2UJCWV0CQkJIyBBZ2VyZSBFVDEzMTAgMTAvMTAw L0dpZ2FiaXQgRXRoZXJuZXQKZGV2aWNlCQlmeHAJCQkjIEludGVsIEV0aGVyRXhwcmVzcyBQUk8v MTAwQiAoODI1NTcsIDgyNTU4KQpkZXZpY2UJCWdlbQkJCSMgU3VuIEdFTS9TdW4gRVJJL0FwcGxl IEdNQUMKZGV2aWNlCQlobWUJCQkjIFN1biBITUUgKEhhcHB5IE1lYWwgRXRoZXJuZXQpCmRldmlj ZQkJam1lCQkJIyBKTWljcm9uIEpNQzI1MCBHaWdhYml0L0pNQzI2MCBGYXN0IEV0aGVybmV0CmRl dmljZQkJbGdlCQkJIyBMZXZlbCAxIExYVDEwMDEgZ2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJCW1z awkJCSMgTWFydmVsbC9TeXNLb25uZWN0IFl1a29uIElJIEdpZ2FiaXQgRXRoZXJuZXQKZGV2aWNl CQluZmUJCQkjIG5WaWRpYSBuRm9yY2UgTUNQIG9uLWJvYXJkIEV0aGVybmV0CmRldmljZQkJbmdl CQkJIyBOYXRTZW1pIERQODM4MjAgZ2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJCXJlCQkJIyBSZWFs VGVrIDgxMzlDKy84MTY5LzgxNjlTLzgxMTBTCmRldmljZQkJcmwJCQkjIFJlYWxUZWsgODEyOS84 MTM5CmRldmljZQkJc2dlCQkJIyBTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBTaVMxOTAvMTkx CmRldmljZQkJc2lzCQkJIyBTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBTaVMgOTAwL1NpUyA3 MDE2CmRldmljZQkJc2sJCQkjIFN5c0tvbm5lY3QgU0stOTg0eCAmIFNLLTk4MnggZ2lnYWJpdCBF dGhlcm5ldApkZXZpY2UJCXN0ZQkJCSMgU3VuZGFuY2UgU1QyMDEgKEQtTGluayBERkUtNTUwVFgp CmRldmljZQkJc3RnZQkJCSMgU3VuZGFuY2UvVGFtYXJhY2sgVEM5MDIxIGdpZ2FiaXQgRXRoZXJu ZXQKZGV2aWNlCQl2Z2UJCQkjIFZJQSBWVDYxMnggZ2lnYWJpdCBFdGhlcm5ldApkZXZpY2UJCXZy CQkJIyBWSUEgUmhpbmUsIFJoaW5lIElJCmRldmljZQkJeGwJCQkjIDNDb20gM2M5MHggKGBgQm9v bWVyYW5nJycsIGBgQ3ljbG9uZScnKQoKIyBXaXJlbGVzcyBOSUMgY2FyZHMKZGV2aWNlCQl3bGFu CQkJIyA4MDIuMTEgc3VwcG9ydApvcHRpb25zIAlJRUVFODAyMTFfREVCVUcJCSMgZW5hYmxlIGRl YnVnIG1zZ3MKb3B0aW9ucyAJSUVFRTgwMjExX1NVUFBPUlRfTUVTSAkjIGVuYWJsZSA4MDIuMTFz IGRyYWZ0IHN1cHBvcnQKZGV2aWNlCQl3bGFuX3dlcAkJIyA4MDIuMTEgV0VQIHN1cHBvcnQKZGV2 aWNlCQl3bGFuX2NjbXAJCSMgODAyLjExIENDTVAgc3VwcG9ydApkZXZpY2UJCXdsYW5fdGtpcAkJ IyA4MDIuMTEgVEtJUCBzdXBwb3J0CmRldmljZQkJd2xhbl9hbXJyCQkjIEFNUlIgdHJhbnNtaXQg cmF0ZSBjb250cm9sIGFsZ29yaXRobQpkZXZpY2UJCWFuCQkJIyBBaXJvbmV0IDQ1MDAvNDgwMCA4 MDIuMTEgd2lyZWxlc3MgTklDcy4KZGV2aWNlCQlhdGgJCQkjIEF0aGVyb3MgTklDcwpkZXZpY2UJ CWF0aF9wY2kJCQkjIEF0aGVyb3MgcGNpL2NhcmRidXMgZ2x1ZQpkZXZpY2UJCWF0aF9oYWwJCQkj IHBjaS9jYXJkYnVzIGNoaXAgc3VwcG9ydApvcHRpb25zIAlBSF9BUjU0MTZfSU5URVJSVVBUX01J VElHQVRJT04gIyBBUjU0MTYgaW50ZXJydXB0IG1pdGlnYXRpb24Kb3B0aW9ucyAJQVRIX0VOQUJM RV8xMU4JCSMgRW5hYmxlIDgwMi4xMW4gc3VwcG9ydCBmb3IgQVI1NDE2IGFuZCBsYXRlcgpkZXZp Y2UJCWF0aF9yYXRlX3NhbXBsZQkJIyBTYW1wbGVSYXRlIHR4IHJhdGUgY29udHJvbCBmb3IgYXRo CiNkZXZpY2UJCWJ3aQkJCSMgQnJvYWRjb20gQkNNNDMweC9CQ000MzF4IHdpcmVsZXNzIE5JQ3Mu CiNkZXZpY2UJCWJ3bgkJCSMgQnJvYWRjb20gQkNNNDN4eCB3aXJlbGVzcyBOSUNzLgpkZXZpY2UJ CWlwdwkJCSMgSW50ZWwgMjEwMCB3aXJlbGVzcyBOSUNzLgpkZXZpY2UJCWl3aQkJCSMgSW50ZWwg MjIwMEJHLzIyMjVCRy8yOTE1QUJHIHdpcmVsZXNzIE5JQ3MuCmRldmljZQkJaXduCQkJIyBJbnRl bCA0OTY1LzEwMDAvNTAwMC82MDAwIHdpcmVsZXNzIE5JQ3MuCmRldmljZQkJbWFsbwkJCSMgTWFy dmVsbCBMaWJlcnRhcyB3aXJlbGVzcyBOSUNzLgpkZXZpY2UJCW13bAkJCSMgTWFydmVsbCA4OFc4 MzYzIDgwMi4xMW4gd2lyZWxlc3MgTklDcy4KZGV2aWNlCQlyYWwJCQkjIFJhbGluayBUZWNobm9s b2d5IFJUMjUwMCB3aXJlbGVzcyBOSUNzLgpkZXZpY2UJCXdpCQkJIyBXYXZlTEFOL0ludGVyc2ls L1N5bWJvbCA4MDIuMTEgd2lyZWxlc3MgTklDcy4KZGV2aWNlCQl3cGkJCQkjIEludGVsIDM5NDVB Qkcgd2lyZWxlc3MgTklDcy4KCiMgUHNldWRvIGRldmljZXMuCmRldmljZQkJY3J5cHRvCQkJIyBj b3JlIGNyeXB0byBzdXBwb3J0CmRldmljZQkJbG9vcAkJCSMgTmV0d29yayBsb29wYmFjawpkZXZp Y2UJCXBhZGxvY2tfcm5nCQkjIFZJQSBQYWRsb2NrIFJORwpkZXZpY2UJCXJkcmFuZF9ybmcJCSMg SW50ZWwgQnVsbCBNb3VudGFpbiBSTkcKZGV2aWNlCQlldGhlcgkJCSMgRXRoZXJuZXQgc3VwcG9y dApkZXZpY2UJCXZsYW4JCQkjIDgwMi4xUSBWTEFOIHN1cHBvcnQKZGV2aWNlCQl0dW50YXAJCQkj IFBhY2tldCB0dW5uZWwuCmRldmljZQkJbWQJCQkjIE1lbW9yeSAiZGlza3MiCmRldmljZQkJZ2lm CQkJIyBJUHY2IGFuZCBJUHY0IHR1bm5lbGluZwpkZXZpY2UJCWZpcm13YXJlCQkjIGZpcm13YXJl IGFzc2lzdCBtb2R1bGUKCiMgVGhlIGBicGYnIGRldmljZSBlbmFibGVzIHRoZSBCZXJrZWxleSBQ YWNrZXQgRmlsdGVyLgojIEJlIGF3YXJlIG9mIHRoZSBhZG1pbmlzdHJhdGl2ZSBjb25zZXF1ZW5j ZXMgb2YgZW5hYmxpbmcgdGhpcyEKIyBOb3RlIHRoYXQgJ2JwZicgaXMgcmVxdWlyZWQgZm9yIERI Q1AuCmRldmljZQkJYnBmCQkJIyBCZXJrZWxleSBwYWNrZXQgZmlsdGVyCgojIFVTQiBzdXBwb3J0 Cm9wdGlvbnMgCVVTQl9ERUJVRwkJIyBlbmFibGUgZGVidWcgbXNncwpkZXZpY2UJCXVoY2kJCQkj IFVIQ0kgUENJLT5VU0IgaW50ZXJmYWNlCmRldmljZQkJb2hjaQkJCSMgT0hDSSBQQ0ktPlVTQiBp bnRlcmZhY2UKZGV2aWNlCQllaGNpCQkJIyBFSENJIFBDSS0+VVNCIGludGVyZmFjZSAoVVNCIDIu MCkKZGV2aWNlCQl4aGNpCQkJIyBYSENJIFBDSS0+VVNCIGludGVyZmFjZSAoVVNCIDMuMCkKZGV2 aWNlCQl1c2IJCQkjIFVTQiBCdXMgKHJlcXVpcmVkKQpkZXZpY2UJCXVrYmQJCQkjIEtleWJvYXJk CmRldmljZQkJdW1hc3MJCQkjIERpc2tzL01hc3Mgc3RvcmFnZSAtIFJlcXVpcmVzIHNjYnVzIGFu ZCBkYQoKIyBTb3VuZCBzdXBwb3J0CmRldmljZQkJc291bmQJCQkjIEdlbmVyaWMgc291bmQgZHJp dmVyIChyZXF1aXJlZCkKZGV2aWNlCQlzbmRfY21pCQkJIyBDTWVkaWEgQ01JODMzOC9DTUk4NzM4 CmRldmljZQkJc25kX2NzYQkJCSMgQ3J5c3RhbCBTZW1pY29uZHVjdG9yIENTNDYxeC80Mjh4CmRl dmljZQkJc25kX2VtdTEwa3gJCSMgQ3JlYXRpdmUgU291bmRCbGFzdGVyIExpdmUhIGFuZCBBdWRp Z3kKZGV2aWNlCQlzbmRfZXMxMzd4CQkjIEVuc29uaXEgQXVkaW9QQ0kgRVMxMzd4CmRldmljZQkJ c25kX2hkYQkJCSMgSW50ZWwgSGlnaCBEZWZpbml0aW9uIEF1ZGlvCmRldmljZQkJc25kX2ljaAkJ CSMgSW50ZWwsIE5WaWRpYSBhbmQgb3RoZXIgSUNIIEFDJzk3IEF1ZGlvCmRldmljZQkJc25kX3Zp YTgyMzMJCSMgVklBIFZUODIzM3ggQXVkaW8KCiMgTU1DL1NECmRldmljZQkJbW1jCQkJIyBNTUMv U0QgYnVzCmRldmljZQkJbW1jc2QJCQkjIE1NQy9TRCBtZW1vcnkgY2FyZApkZXZpY2UJCXNkaGNp CQkJIyBHZW5lcmljIFBDSSBTRCBIb3N0IENvbnRyb2xsZXIKCiMgVmlydElPIHN1cHBvcnQKZGV2 aWNlCQl2aXJ0aW8JCQkjIEdlbmVyaWMgVmlydElPIGJ1cyAocmVxdWlyZWQpCmRldmljZQkJdmly dGlvX3BjaQkJIyBWaXJ0SU8gUENJIGRldmljZQpkZXZpY2UJCXZ0bmV0CQkJIyBWaXJ0SU8gRXRo ZXJuZXQgZGV2aWNlCmRldmljZQkJdmlydGlvX2JsawkJIyBWaXJ0SU8gQmxvY2sgZGV2aWNlCmRl dmljZQkJdmlydGlvX3Njc2kJCSMgVmlydElPIFNDU0kgZGV2aWNlCmRldmljZQkJdmlydGlvX2Jh bGxvb24JCSMgVmlydElPIE1lbW9yeSBCYWxsb29uIGRldmljZQoKIyBIeXBlclYgZHJpdmVycyBh bmQgZW5oYW5jZW1lbnQgc3VwcG9ydApkZXZpY2UJCWh5cGVydgkJCSMgSHlwZXJWIGRyaXZlcnMg CgojIFhlbiBIVk0gR3Vlc3QgT3B0aW1pemF0aW9ucwojIE5PVEU6IFhFTkhWTSBkZXBlbmRzIG9u IHhlbnBjaS4gIFRoZXkgbXVzdCBiZSBhZGRlZCBvciByZW1vdmVkIHRvZ2V0aGVyLgpvcHRpb25z IAlYRU5IVk0JCQkjIFhlbiBIVk0ga2VybmVsIGluZnJhc3RydWN0dXJlCmRldmljZQkJeGVucGNp CQkJIyBYZW4gSFZNIEh5cGVydmlzb3Igc2VydmljZXMgZHJpdmVyCgojIE5ldG1hcCBwcm92aWRl cyBkaXJlY3QgYWNjZXNzIHRvIFRYL1JYIHJpbmdzIG9uIHN1cHBvcnRlZCBOSUNzCmRldmljZQkJ bmV0bWFwCQkJIyBuZXRtYXAoNCkgc3VwcG9ydAoKIyBldmRldiBpbnRlcmZhY2UKb3B0aW9ucyAJ RVZERVZfU1VQUE9SVAkJIyBldmRldiBzdXBwb3J0IGluIGxlZ2FjeSBkcml2ZXJzCmRldmljZQkJ ZXZkZXYJCQkjIGlucHV0IGV2ZW50IGRldmljZSBzdXBwb3J0CmRldmljZQkJdWlucHV0CQkJIyBp bnN0YWxsIC9kZXYvdWlucHV0IGNkZXYK --00000000000065de770592cab622--