NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/42314: IC Plus IP100x PHY support
The following reply was made to PR kern/42314; it has been noted by GNATS.
From: Andrius V <vezhlys%gmail.com@localhost>
To: msaitoh%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost,
tharada%oucrc.org@localhost, gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Sat, 28 Sep 2019 23:29:02 +0300
--00000000000081a60e0593a2dbc1
Content-Type: text/plain; charset="UTF-8"
Hi,
Attaching my final (I guess) patch which addresses most issues from
the initial one (auto doesn't need special code, stge part uncommented
by moving struct to stgereg header file, i386/amd64 kernel configs
updated) and is based on more recent current branch (OUI was renamed
and updated in current already), plus some updates with man pages to
be build properly. I believe it should be in parity with OpenBSD
driver now but I have only one board for testing. Temporarily created
a branch in github as well:
https://github.com/vezhlys/netbsd-src/tree/ipgphy. The problem that
setting 1000BaseTX specifically won't work is present, but it is the
same in Open/FreeBSD as well (autonegiotation needs to be used to get
1GBit speed). Hope, the patch should be relatively easy to adjust and
apply, if it's OK and there's a plan to do it.
Regards,
Andrius V
On Tue, Sep 24, 2019 at 1:55 AM Andrius V <vezhlys%gmail.com@localhost> wrote:
>
> The following reply was made to PR kern/42314; it has been noted by GNATS.
>
> From: Andrius V <vezhlys%gmail.com@localhost>
> To: kern-bug-people%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost, tharada%oucrc.org@localhost,
> msaitoh%netbsd.org@localhost, gnats-bugs%netbsd.org@localhost, gnats-admin%netbsd.org@localhost
> Cc:
> Subject: Re: kern/42314: IC Plus IP100x PHY support
> Date: Tue, 24 Sep 2019 01:50:49 +0300
>
> It seems like to avoid attaching auto manually, only the removal of
> sc->mii_capabilities &= ~BMSR_ANEG; line is needed in ipgphy_match (I
> copied it from rgephy but this code was specific to that phy only):
>
> static void
> ipgphy_attach(device_t parent, device_t self, void *aux)
> {
> struct mii_softc *sc = device_private(self);
> struct mii_attach_args *ma = aux;
> struct mii_data *mii = ma->mii_data;
> const struct mii_phydesc *mpd;
>
> mpd = mii_phy_match(ma, ipgphys);
> aprint_naive(": Media interface\n");
> aprint_normal(": %s, rev. %d\n", mpd->mpd_name, MII_REV(ma->mii_id2));
>
> sc->mii_dev = self;
> sc->mii_inst = mii->mii_instance;
> sc->mii_phy = ma->mii_phyno;
> sc->mii_mpd_oui = MII_OUI(ma->mii_id1, ma->mii_id2);
> sc->mii_mpd_model = MII_MODEL(ma->mii_id2);
> sc->mii_mpd_rev = MII_REV(ma->mii_id2);
> sc->mii_funcs = &ipgphy_funcs;
> sc->mii_pdata = mii;
> sc->mii_flags = ma->mii_flags;
>
> sc->mii_flags |= MIIF_NOISOLATE;
> sc->mii_anegticks = MII_ANEGTICKS_GIGE;
>
> PHY_RESET(sc);
>
> PHY_READ(sc, MII_BMSR, &sc->mii_capabilities);
> sc->mii_capabilities &= ma->mii_capmask;
>
> if (sc->mii_capabilities & BMSR_EXTSTAT)
> PHY_READ(sc, MII_EXTSR, &sc->mii_extcapabilities);
>
> mii_phy_add_media(sc);
> aprint_normal("\n");
>
> }
>
> On Sun, Sep 8, 2019 at 12:00 AM Andrius V <vezhlys%gmail.com@localhost> wrote:
> >
> > The following reply was made to PR kern/42314; it has been noted by GNATS.
> >
> > From: Andrius V <vezhlys%gmail.com@localhost>
> > To: gnats-bugs%netbsd.org@localhost
> > Cc: kern-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
> > Subject: Re: kern/42314: IC Plus IP100x PHY support
> > Date: Sat, 7 Sep 2019 23:57:04 +0300
> >
> > --000000000000efb2d20591fccc25
> > Content-Type: text/plain; charset="UTF-8"
> >
> > Hi,
> >
> > Since, I have VIA EPIA-M900 motherboard with VT6130 Ethernet
> > controller and IP1001 phy, I made an effort to port OpenBSD driver,
> > and I prepared initial but not complete patch for PHY support (which
> > is almost a copy of OpenBSD driver with mainly small changes to cater
> > NetBSD specifics). Issues described below (first two I believe are
> > blocking from committing it to NetBSD yet and I need a help to resolve
> > if possible):
> >
> > * For some reason direct port fails to work with autonegotation
> > (if_media match fails, there is no auto option available). As a
> > workaround I copied the code below from rgephy.c to add it manually
> > and it worked for me:
> >
> > #define ADD(m, c) ifmedia_add(&mii->mii_media, (m), (c), NULL)
> > #define PRINT(n) aprint_normal("%s%s", sep, (n)); sep = ", "
> >
> > ADD(IFM_MAKEWORD(IFM_ETHER, IFM_AUTO, 0, sc->mii_inst), MII_NMEDIA);
> > sep =", ";
> > PRINT("auto");
> >
> > I believe it is a hack in this case, since OpenBSD seemingly doesn't
> > need it but for some reason direct port looses auto option in NetBSD.
> > Maybe somebody have idea, why it happened?
> > * Commented out the code with stge revision check in ipgphy_reset
> > (which calls also commented ipgphy_load_dspcode). I guess to implement
> > that I would need to change if_stge driver to move struct into a
> > header file or find another way to get sc_rev. Can someone help me out
> > with that?
> > * I change config for amd64 GENERIC only. I quite certain, it can be
> > added at least to i386, though OpenBSD defined it in most ports.
> > * Same as OpenBSD, manual setting to 1000baseT will fail,
> > autonegotation must be used to get Gigabit Ethernet speed.
> > * OUI in NetBSD is recognized as 0x0009c3, not as 0x0090c3 like it is
> > defined in Open/FreeBSD. Changed it in miidevs.
> >
> > Attached the patch below (regen is still needed for miidevs).
> >
> > With provided changes, vge successfully auto negotiated for 1Gbit
> > speed (which wasn't the case with general phy):
> > vge0: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> > capabilities=3f00<IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx>
> > capabilities=3f00<UDP4CSUM_Rx,UDP4CSUM_Tx>
> > enabled=0
> > ec_capabilities=7<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
> > ec_enabled=2<VLAN_HWTAGGING>
> > address: xx:xx:xx:xx:xx:xx
> > media: Ethernet autoselect (1000baseT
> > full-duplex,flowcontrol,master,rxpause,txpause)
> > status: active
> > inet 192.168.1.18/24 broadcast 192.168.1.255 flags 0x0
> > inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x
> >
> > from dmesg:
> > ipgphy0 at vge0 phy 22: IP1001 10/100/1000 PHY, rev. 025
> > 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
> >
> > P.S. Not sure if original submitter did provide a patch as well but
> > his link is down currently.
> >
> > Regards,
> > Andrius V
> >
> > On Sat, Nov 14, 2009 at 12:00 AM <tharada%oucrc.org@localhost> wrote:
> > >
> > > >Number: 42314
> > > >Category: kern
> > > >Synopsis: IC Plus IP100x PHY support
> > > >Confidential: no
> > > >Severity: non-critical
> > > >Priority: low
> > > >Responsible: kern-bug-people
> > > >State: open
> > > >Class: sw-bug
> > > >Submitter-Id: net
> > > >Arrival-Date: Fri Nov 13 22:00:00 +0000 2009
> > > >Originator: Tomokazu HARADA
> > > >Release: 5.99.22
> > > >Organization:
> > > >Environment:
> > > NetBSD xjazz 5.99.22 NetBSD 5.99.22 (GENERIC) #1: Sat Nov 14 06:05:25 JST 2009 root@xjazz:/usr/obj/sys/arch/i386/compile/GENERIC i386
> > >
> > > >Description:
> > > IC Plus IP1000A/IP1001 10/100/1000 PHY support
> > > (from OpenBSD ipgphy)
> > >
> > > vge0 at pci2 dev 0 function 0: VIA VT612X Gigabit Ethernet (rev. 0x82)
> > > vge0: interrupting at ioapic0 pin 16
> > > vge0: Ethernet address: 00:02:2a:e6:d7:ad
> > > ipgphy0 at vge0 phy 22: IP1001 10/100/1000 PHY, rev. 0
> > > ipgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
> > >
> > > This is a VIA VT6130 PCIe GbE, the phy is integrated on.
> > >
> > > >How-To-Repeat:
> > > N/A
> > > >Fix:
> > > http://tharada.oucrc.org/ipgphy/
> > >
> >
> > --000000000000efb2d20591fccc25
> > Content-Type: text/x-patch; charset="US-ASCII"; name="test.patch"
> > Content-Disposition: attachment; filename="test.patch"
> > Content-Transfer-Encoding: base64
> > Content-ID: <f_k09zxctb0>
> > X-Attachment-Id: f_k09zxctb0
> >
> > QURERUQgICAgc2hhcmUvbWFuL21hbjQvaXBncGh5LjQKSW5kZXg6IHNoYXJlL21hbi9tYW40L2lw
> > Z3BoeS40Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> > PT09PT09PT09PT09PT09PQotLS0gc2hhcmUvbWFuL21hbjQvaXBncGh5LjQKKysrIHNoYXJlL21h
> > bi9tYW40L2lwZ3BoeS40CkBAIC0wLDAgKzEsMzggQEAKKy5cIgkkT3BlbkJTRDogaXBncGh5LjQs
> > diAxLjUgMjAwOS8wOC8wOCAxNzoxMjo0MCBuYWRkeSBFeHAgJAorLlwiCisuXCIJJE5ldEJTRDog
> > aXBncGh5LjQkCisuXCIKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDYgQnJhZCBTbWl0aCA8YnJhZEBv
> > cGVuYnNkLm9yZz4KKy5cIgorLlwiIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFu
> > ZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorLlwiIHB1cnBvc2Ugd2l0aCBvciB3
> > aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKKy5c
> > IiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBh
> > bGwgY29waWVzLgorLlwiCisuXCIgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5E
> > IFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCisuXCIgV0lUSCBSRUdBUkQgVE8g
> > VEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRgorLlwiIE1F
> > UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBC
> > RSBMSUFCTEUgRk9SCisuXCIgQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNF
> > UVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUworLlwiIFdIQVRTT0VWRVIgUkVTVUxUSU5H
> > IEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTgorLlwiIEFD
> > VElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFS
> > SVNJTkcgT1VUIE9GCisuXCIgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9S
> > TUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKy5cIgorLkRkICRNZG9jZGF0ZTogQXVndXN0IDggMjAw
> > OSAkCisuRHQgSVBHUEhZIDQKKy5PcworLlNoIE5BTUUKKy5ObSBpcGdwaHkKKy5OZCBJQyBQbHVz
> > IElQMTAwMEEvSVAxMDAxIDEwLzEwMC9HaWdhYml0IEV0aGVybmV0IFBIWQorLlNoIFNZTk9QU0lT
> > CisuQ2QgImlwZ3BoeSogYXQgbWlpPyIKKy5TaCBERVNDUklQVElPTgorVGhlCisuTm0KK2RyaXZl
> > ciBzdXBwb3J0cyB0aGUgSUMgUGx1cyBJUDEwMDBBL0lQMTAwMSAxMC8xMDAvR2lnYWJpdCBFdGhl
> > cm5ldCBQSFkKK2ludGVyZmFjZS4KKy5TaCBTRUUgQUxTTworLlhyIGlmbWVkaWEgNCAsCisuWHIg
> > aW50cm8gNCAsCisuWHIgbWlpIDQgLAorLlhyIHN0Z2UgNCwKKy5YciB2Z2UgNCwKKy5YciBpZmNv
> > bmZpZyA4CgpJbmRleDogc3lzL2FyY2gvYW1kNjQvY29uZi9HRU5FUklDCj09PT09PT09PT09PT09
> > PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
> > c3lzL2FyY2gvYW1kNjQvY29uZi9HRU5FUklDCisrKyBzeXMvYXJjaC9hbWQ2NC9jb25mL0dFTkVS
> > SUMKQEAgLTg3MSwxMCArODcxLDExIEBACiBpZ3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwg
> > SUdQMDFFMTAwMAogaWhwaHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgyNTc3IFBIWXMKIGlr
> > cGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU2MyBQSFlzCiBpbnBoeSoJYXQgbWlpPyBw
> > aHkgPwkJCSMgSW50ZWwgODI1NTUgUEhZcwogaW9waHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVs
> > IDgyNTUzIFBIWXMKK2lwZ3BoeSogYXQgbWlpPyBwaHkgPwkJCSMgSUMgUExVUyBJUDEwMDBBL0lQ
> > MTAwMSBQSFlzCiBseHRwaHkqIGF0IG1paT8gcGh5ID8JCQkjIExldmVsIE9uZSBMWFQtOTcwIFBI
> > WXMKIG1ha3BoeSogYXQgbWlpPyBwaHkgPwkJCSMgTWFydmVsbCBTZW1pY29uZHVjdG9yIDg4RTEw
> > MDAgUEhZcwogbnNwaHkqCWF0IG1paT8gcGh5ID8JCQkjIE5TODM4NDAgUEhZcwogbnNwaHl0ZXIq
> > IGF0IG1paT8gcGh5ID8gCQkjIE5TODM4NDMgUEhZcwogcG5hcGh5KiBhdCBtaWk/IHBoeSA/CQkJ
> > IyBnZW5lcmljIEhvbWVQTkEgUEhZcwoKSW5kZXg6IHN5cy9kZXYvREVWTkFNRVMKPT09PT09PT09
> > PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> > Ci0tLSBzeXMvZGV2L0RFVk5BTUVTCisrKyBzeXMvZGV2L0RFVk5BTUVTCkBAIC02NTcsMTAgKzY1
> > NywxMSBAQAogaW9wbAkJCU1JCiBpb3BzcAkJCU1JCiBpcGFxYnVzCQkJaHBjYXJtCiBpcGFxbGNk
> > CQkJaHBjYXJtCiBpcGFxcGNpYwkJaHBjYXJtCitpcGdwaHkJCQlNSQogaXBtaQkJCWFtZDY0CiBp
> > cG1pCQkJaTM4NgogaXBtaQkJCXhlbgogaXB3CQkJTUkKIGlyZGFzaXIJCQlNSQkJQXR0cmlidXRl
> > CgpJbmRleDogc3lzL2Rldi9taWkvZmlsZXMubWlpCj09PT09PT09PT09PT09PT09PT09PT09PT09
> > PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9taWkv
> > ZmlsZXMubWlpCisrKyBzeXMvZGV2L21paS9maWxlcy5taWkKQEAgLTk3LDEwICs5NywxNCBAQAog
> > CiBkZXZpY2UJaWtwaHk6IG1paV9waHkKIGF0dGFjaAlpa3BoeSBhdCBtaWkKIGZpbGUJZGV2L21p
> > aS9pa3BoeS5jCQkJCWlrcGh5CiAKK2RldmljZQlpcGdwaHk6IG1paV9waHkKK2F0dGFjaAlpcGdw
> > aHkgYXQgbWlpCitmaWxlCWRldi9taWkvaXBncGh5LmMJCQlpcGdwaHkKKwogZGV2aWNlCXNxcGh5
> > OiBtaWlfcGh5CiBhdHRhY2gJc3FwaHkgYXQgbWlpCiBmaWxlCWRldi9taWkvc3FwaHkuYwkJCQlz
> > cXBoeQogCiBkZXZpY2UJdHFwaHk6IG1paV9waHkKCkFEREVEICAgIHN5cy9kZXYvbWlpL2lwZ3Bo
> > eS5jCkluZGV4OiBzeXMvZGV2L21paS9pcGdwaHkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09
> > PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvbWlp
> > L2lwZ3BoeS5jCisrKyBzeXMvZGV2L21paS9pcGdwaHkuYwpAQCAtMCwwICsxLDQyMyBAQAorLyoJ
> > JE9wZW5CU0Q6IGlwZ3BoeS5jLHYgMS4xOSAyMDE1LzA3LzE5IDA2OjI4OjEyIHl1byBFeHAgJAkq
> > LworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgUHl1biBZb25nSHllb24gPHlvbmdhcmlA
> > RnJlZUJTRC5vcmc+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
> > aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
> > ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
> > ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
> > ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSB1bm1v
> > ZGlmaWVkLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucywgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
> > IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
> > ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
> > Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
> > dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
> > aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig
> > QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
> > IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
> > RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
> > VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
> > VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElS
> > RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
> > IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
> > VUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
> > T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
> > TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisg
> > KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
> > QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
> > VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
> > CisgKi8KKworLyoKKyAqIERyaXZlciBmb3IgdGhlIElDIFBsdXMgSVAxMDAwQS9JUDEwMDEgMTAv
> > MTAwLzEwMDAgUEhZLgorICovCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisKKyNpbmNsdWRlIDxz
> > eXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMva2VybmVs
> > Lmg+CisjaW5jbHVkZSA8c3lzL2RldmljZS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNp
> > bmNsdWRlIDxzeXMvZXJybm8uaD4KKworI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5l
> > dC9pZl9tZWRpYS5oPgorCisjaW5jbHVkZSA8ZGV2L21paS9taWkuaD4KKyNpbmNsdWRlIDxkZXYv
> > bWlpL21paXZhci5oPgorI2luY2x1ZGUgPGRldi9taWkvbWlpZGV2cy5oPgorCisjaW5jbHVkZSA8
> > ZGV2L21paS9pcGdwaHlyZWcuaD4KKworI2luY2x1ZGUgPGRldi9wY2kvaWZfc3RnZXJlZy5oPgor
> > CitzdGF0aWMgaW50IGlwZ3BoeV9tYXRjaChkZXZpY2VfdCwgY2ZkYXRhX3QsIHZvaWQgKik7Citz
> > dGF0aWMgdm9pZCBpcGdwaHlfYXR0YWNoKGRldmljZV90LCBkZXZpY2VfdCwgdm9pZCAqKTsKKwor
> > Q0ZBVFRBQ0hfREVDTF9ORVcoaXBncGh5LCBzaXplb2Yoc3RydWN0IG1paV9zb2Z0YyksCisgICAg
> > aXBncGh5X21hdGNoLCBpcGdwaHlfYXR0YWNoLCBtaWlfcGh5X2RldGFjaCwgbWlpX3BoeV9hY3Rp
> > dmF0ZSk7CisKK3N0YXRpYyBpbnQJaXBncGh5X3NlcnZpY2Uoc3RydWN0IG1paV9zb2Z0YyAqLCBz
> > dHJ1Y3QgbWlpX2RhdGEgKiwgaW50KTsKK3N0YXRpYyB2b2lkCWlwZ3BoeV9zdGF0dXMoc3RydWN0
> > IG1paV9zb2Z0YyAqKTsKK3N0YXRpYyBpbnQJaXBncGh5X21paV9waHlfYXV0byhzdHJ1Y3QgbWlp
> > X3NvZnRjICopOworLy9zdGF0aWMgdm9pZAlpcGdwaHlfbG9hZF9kc3Bjb2RlKHN0cnVjdCBtaWlf
> > c29mdGMgKik7CitzdGF0aWMgdm9pZAlpcGdwaHlfcmVzZXQoc3RydWN0IG1paV9zb2Z0YyAqKTsK
> > Kworc3RhdGljIGNvbnN0IHN0cnVjdCBtaWlfcGh5X2Z1bmNzIGlwZ3BoeV9mdW5jcyA9IHsKKwlp
> > cGdwaHlfc2VydmljZSwgaXBncGh5X3N0YXR1cywgaXBncGh5X3Jlc2V0LAorfTsKKworc3RhdGlj
> > IGNvbnN0IHN0cnVjdCBtaWlfcGh5ZGVzYyBpcGdwaHlzW10gPSB7CisJTUlJX1BIWV9ERVNDKElD
> > UExVUywgSVAxMDAwQSksCisJTUlJX1BIWV9ERVNDKElDUExVUywgSVAxMDAxKSwKKwlNSUlfUEhZ
> > X0VORCwKK307CisKK3N0YXRpYyBpbnQKK2lwZ3BoeV9tYXRjaChkZXZpY2VfdCBwYXJlbnQsIGNm
> > ZGF0YV90IG1hdGNoLCB2b2lkICphdXgpCit7CisJc3RydWN0IG1paV9hdHRhY2hfYXJncyAqbWEg
> > PSBhdXg7CisKKwlpZiAobWlpX3BoeV9tYXRjaChtYSwgaXBncGh5cykgIT0gTlVMTCkgeworCQly
> > ZXR1cm4gMTA7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraXBncGh5X2F0dGFj
> > aChkZXZpY2VfdCBwYXJlbnQsIGRldmljZV90IHNlbGYsIHZvaWQgKmF1eCkKK3sKKwlzdHJ1Y3Qg
> > bWlpX3NvZnRjICpzYyA9IGRldmljZV9wcml2YXRlKHNlbGYpOworCXN0cnVjdCBtaWlfYXR0YWNo
> > X2FyZ3MgKm1hID0gYXV4OworCXN0cnVjdCBtaWlfZGF0YSAqbWlpID0gbWEtPm1paV9kYXRhOwor
> > CWNvbnN0IHN0cnVjdCBtaWlfcGh5ZGVzYyAqbXBkOworCWNvbnN0IGNoYXIgKnNlcCA9ICIiOwor
> > CisJbXBkID0gbWlpX3BoeV9tYXRjaChtYSwgaXBncGh5cyk7CisJYXByaW50X25haXZlKCI6IE1l
> > ZGlhIGludGVyZmFjZVxuIik7CisJYXByaW50X25vcm1hbCgiOiAlcywgcmV2LiAlZFxuIiwgbXBk
> > LT5tcGRfbmFtZSwgTUlJX1JFVihtYS0+bWlpX2lkMikpOworCisJc2MtPm1paV9kZXYgPSBzZWxm
> > OworCXNjLT5taWlfaW5zdCA9IG1paS0+bWlpX2luc3RhbmNlOworCXNjLT5taWlfcGh5ID0gbWEt
> > Pm1paV9waHlubzsKKwlzYy0+bWlpX21wZF9vdWkgPSBNSUlfT1VJKG1hLT5taWlfaWQxLCBtYS0+
> > bWlpX2lkMik7CisJc2MtPm1paV9tcGRfbW9kZWwgPSBNSUlfTU9ERUwobWEtPm1paV9pZDIpOwor
> > CXNjLT5taWlfbXBkX3JldiA9IE1JSV9SRVYobWEtPm1paV9pZDIpOworCXNjLT5taWlfZnVuY3Mg
> > PSAmaXBncGh5X2Z1bmNzOworCXNjLT5taWlfcGRhdGEgPSBtaWk7CisJc2MtPm1paV9mbGFncyA9
> > IG1hLT5taWlfZmxhZ3M7CisKKwlzYy0+bWlpX2ZsYWdzIHw9IE1JSUZfTk9JU09MQVRFOworCXNj
> > LT5taWlfYW5lZ3RpY2tzID0gTUlJX0FORUdUSUNLU19HSUdFOworCisJUEhZX1JFU0VUKHNjKTsK
> > KworCVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJnNjLT5taWlfY2FwYWJpbGl0aWVzKTsKKwlzYy0+
> > bWlpX2NhcGFiaWxpdGllcyAmPSBtYS0+bWlpX2NhcG1hc2s7CisJc2MtPm1paV9jYXBhYmlsaXRp
> > ZXMgJj0gfkJNU1JfQU5FRzsKKwlpZiAoc2MtPm1paV9jYXBhYmlsaXRpZXMgJiBCTVNSX0VYVFNU
> > QVQpCisJCVBIWV9SRUFEKHNjLCBNSUlfRVhUU1IsICZzYy0+bWlpX2V4dGNhcGFiaWxpdGllcyk7
> > CisgCisJbWlpX3BoeV9hZGRfbWVkaWEoc2MpOworCQorI2RlZmluZQlBREQobSwgYykJaWZtZWRp
> > YV9hZGQoJm1paS0+bWlpX21lZGlhLCAobSksIChjKSwgTlVMTCkKKyNkZWZpbmUJUFJJTlQobikJ
> > YXByaW50X25vcm1hbCgiJXMlcyIsIHNlcCwgKG4pKTsgc2VwID0gIiwgIgorCQorCUFERChJRk1f
> > TUFLRVdPUkQoSUZNX0VUSEVSLCBJRk1fQVVUTywgMCwgc2MtPm1paV9pbnN0KSwgTUlJX05NRURJ
> > QSk7CisJc2VwID0iLCAiOworCVBSSU5UKCJhdXRvIik7CisKKwlhcHJpbnRfbm9ybWFsKCJcbiIp
> > OworfQorCitzdGF0aWMgaW50CitpcGdwaHlfc2VydmljZShzdHJ1Y3QgbWlpX3NvZnRjICpzYywg
> > c3RydWN0IG1paV9kYXRhICptaWksIGludCBjbWQpCit7CisJc3RydWN0IGlmbWVkaWFfZW50cnkg
> > KmlmZSA9IG1paS0+bWlpX21lZGlhLmlmbV9jdXI7CisJdWludDE2X3QgZ2lnLCByZWcsIHNwZWVk
> > OworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIE1JSV9QT0xMU1RBVDoKKwkJLyoKKwkJICogSWYg
> > d2UncmUgbm90IHBvbGxpbmcgb3VyIFBIWSBpbnN0YW5jZSwganVzdCByZXR1cm4uCisJCSAqLwor
> > CQlpZiAoSUZNX0lOU1QoaWZlLT5pZm1fbWVkaWEpICE9IHNjLT5taWlfaW5zdCkKKwkJCXJldHVy
> > biAwOworCQlicmVhazsKKworCWNhc2UgTUlJX01FRElBQ0hHOgorCQkvKgorCQkgKiBJZiB0aGUg
> > bWVkaWEgaW5kaWNhdGVzIGEgZGlmZmVyZW50IFBIWSBpbnN0YW5jZSwKKwkJICogaXNvbGF0ZSBv
> > dXJzZWx2ZXMuCisJCSAqLworCQlpZiAoSUZNX0lOU1QoaWZlLT5pZm1fbWVkaWEpICE9IHNjLT5t
> > aWlfaW5zdCkgeworCQkJUEhZX1JFQUQoc2MsIE1JSV9CTUNSLCAmcmVnKTsKKwkJCVBIWV9XUklU
> > RShzYywgTUlJX0JNQ1IsIHJlZyB8IEJNQ1JfSVNPKTsKKwkJCXJldHVybiAwOworCQl9CisKKwkJ
> > LyoKKwkJICogSWYgdGhlIGludGVyZmFjZSBpcyBub3QgdXAsIGRvbid0IGRvIGFueXRoaW5nLgor
> > CQkgKi8KKwkJaWYgKChtaWktPm1paV9pZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSA9PSAwKQorCQkJ
> > YnJlYWs7CisKKwkJUEhZX1JFU0VUKHNjKTsKKworCQlzd2l0Y2ggKElGTV9TVUJUWVBFKGlmZS0+
> > aWZtX21lZGlhKSkgeworCQljYXNlIElGTV9BVVRPOgorCQkJKHZvaWQpaXBncGh5X21paV9waHlf
> > YXV0byhzYyk7CisJCQlnb3RvIGRvbmU7CisJCQlicmVhazsKKworCQljYXNlIElGTV8xMDAwX1Q6
> > CisJCQkvKgorCQkJICogWFhYCisJCQkgKiBNYW51YWwgMTAwMGJhc2VUIHNldHRpbmcgZG9lc24n
> > dCBzZWVtIHRvIHdvcmsuCisJCQkgKi8KKwkJCXNwZWVkID0gQk1DUl9TMTAwMDsKKwkJCWJyZWFr
> > OworCisJCWNhc2UgSUZNXzEwMF9UWDoKKwkJCXNwZWVkID0gQk1DUl9TMTAwOworCQkJYnJlYWs7
> > CisKKwkJY2FzZSBJRk1fMTBfVDoKKwkJCXNwZWVkID0gQk1DUl9TMTA7CisJCQlicmVhazsKKwor
> > CQlkZWZhdWx0OgorCQkJcmV0dXJuIEVJTlZBTDsKKwkJfQorCisJCWlmICgoKGlmZS0+aWZtX21l
> > ZGlhICYgSUZNX0dNQVNLKSAmIElGTV9GRFgpICE9IDApIHsKKwkJCXNwZWVkIHw9IEJNQ1JfRkRY
> > OworCQkJZ2lnID0gR1RDUl9BRFZfMTAwMFRGRFg7CisJCX0gZWxzZQorCQkJZ2lnID0gR1RDUl9B
> > RFZfMTAwMFRIRFg7CisKKwkJUEhZX1dSSVRFKHNjLCBNSUlfMTAwVDJDUiwgMCk7CisJCVBIWV9X
> > UklURShzYywgTUlJX0JNQ1IsIHNwZWVkKTsKKworCQlpZiAoSUZNX1NVQlRZUEUoaWZlLT5pZm1f
> > bWVkaWEpICE9IElGTV8xMDAwX1QpCisJCQlicmVhazsKKworCQlQSFlfV1JJVEUoc2MsIE1JSV8x
> > MDBUMkNSLCBnaWcpOworCQlQSFlfV1JJVEUoc2MsIE1JSV9CTUNSLCBzcGVlZCk7CisKKwkJaWYg
> > KG1paS0+bWlpX21lZGlhLmlmbV9tZWRpYSAmIElGTV9FVEhfTUFTVEVSKQorCQkJZ2lnIHw9IEdU
> > Q1JfTUFOX01TIHwgR1RDUl9BRFZfTVM7CisKKwkJUEhZX1dSSVRFKHNjLCBNSUlfMTAwVDJDUiwg
> > Z2lnKTsKKworZG9uZToKKwkJYnJlYWs7CisKKwljYXNlIE1JSV9USUNLOgorCQkvKgorCQkgKiBJ
> > ZiB3ZSdyZSBub3QgY3VycmVudGx5IHNlbGVjdGVkLCBqdXN0IHJldHVybi4KKwkJICovCisJCWlm
> > IChJRk1fSU5TVChpZmUtPmlmbV9tZWRpYSkgIT0gc2MtPm1paV9pbnN0KQorCQkJcmV0dXJuIDA7
> > CisKKwkJLyoKKwkJICogSXMgdGhlIGludGVyZmFjZSBldmVuIHVwPworCQkgKi8KKwkJaWYgKCht
> > aWktPm1paV9pZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSA9PSAwKQorCQkJcmV0dXJuIDA7CisKKwkJ
> > LyoKKwkJICogT25seSB1c2VkIGZvciBhdXRvbmVnb3RpYXRpb24uCisJCSAqLworCQlpZiAoSUZN
> > X1NVQlRZUEUoaWZlLT5pZm1fbWVkaWEpICE9IElGTV9BVVRPKSB7CisJCQlzYy0+bWlpX3RpY2tz
> > ID0gMDsKKwkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJICogQ2hlY2sgdG8gc2VlIGlmIHdlIGhh
> > dmUgbGluay4gIElmIHdlIGRvLCB3ZSBkb24ndAorCQkgKiBuZWVkIHRvIHJlc3RhcnQgdGhlIGF1
> > dG9uZWdvdGlhdGlvbiBwcm9jZXNzLiAgUmVhZAorCQkgKiB0aGUgQk1TUiB0d2ljZSBpbiBjYXNl
> > IGl0J3MgbGF0Y2hlZC4KKwkJICovCisJCVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJnJlZyk7CisJ
> > CVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJnJlZyk7CisJCWlmIChyZWcgJiBCTVNSX0xJTkspIHsK
> > KwkJCS8qCisJCQkgKiBSZXNldCBhdXRvbmVnb3RpYXRpb24gdGltZXIgdG8gMCBpbiBjYXNlIHRo
> > ZSBsaW5rCisJCQkgKiBnb2VzIGRvd24gaW4gdGhlIG5leHQgdGljay4KKwkJCSAqLworCQkJc2Mt
> > Pm1paV90aWNrcyA9IDA7CisJCQkvKiBTZWUgYWJvdmUuICovCisJCQlicmVhazsKKwkJfQorCisJ
> > CS8qIEFubm91bmNlIGxpbmsgbG9zcyByaWdodCBhZnRlciBpdCBoYXBwZW5zICovCisJCWlmIChz
> > Yy0+bWlpX3RpY2tzKysgPT0gMCkKKwkJCWJyZWFrOworCisJCS8qCisJCSAqIE9ubHkgcmV0cnkg
> > YXV0b25lZ290aWF0aW9uIGV2ZXJ5IG1paV9hbmVndGlja3Mgc2Vjb25kcy4KKwkJICovCisJCWlm
> > IChzYy0+bWlpX3RpY2tzIDw9IHNjLT5taWlfYW5lZ3RpY2tzKQorCQkJYnJlYWs7CisKKwkJc2Mt
> > Pm1paV90aWNrcyA9IDA7CisJCWlwZ3BoeV9taWlfcGh5X2F1dG8oc2MpOworCQlicmVhazsKKwl9
> > CisKKwkvKiBVcGRhdGUgdGhlIG1lZGlhIHN0YXR1cy4gKi8KKwlpcGdwaHlfc3RhdHVzKHNjKTsK
> > KworCS8qIENhbGxiYWNrIGlmIHNvbWV0aGluZyBjaGFuZ2VkLiAqLworCW1paV9waHlfdXBkYXRl
> > KHNjLCBjbWQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraXBncGh5X3N0YXR1cyhz
> > dHJ1Y3QgbWlpX3NvZnRjICpzYykKK3sKKwlzdHJ1Y3QgbWlpX2RhdGEgKm1paSA9IHNjLT5taWlf
> > cGRhdGE7CisJc3RydWN0IGlmbWVkaWFfZW50cnkgKmlmZSA9IG1paS0+bWlpX21lZGlhLmlmbV9j
> > dXI7CisJdWludDE2X3QgYm1zciwgYm1jciwgc3RhdCwgZ3RzcjsKKworCW1paS0+bWlpX21lZGlh
> > X3N0YXR1cyA9IElGTV9BVkFMSUQ7CisJbWlpLT5taWlfbWVkaWFfYWN0aXZlID0gSUZNX0VUSEVS
> > OworCisJUEhZX1JFQUQoc2MsIE1JSV9CTVNSLCAmYm1zcik7CisJUEhZX1JFQUQoc2MsIE1JSV9C
> > TVNSLCAmYm1zcik7CisJaWYgKGJtc3IgJiBCTVNSX0xJTkspIAorCQltaWktPm1paV9tZWRpYV9z
> > dGF0dXMgfD0gSUZNX0FDVElWRTsKKworCVBIWV9SRUFEKHNjLCBNSUlfQk1DUiwgJmJtY3IpOwor
> > CWlmIChibWNyICYgQk1DUl9MT09QKQorCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX0xP
> > T1A7CisKKwlpZiAoYm1jciAmIEJNQ1JfQVVUT0VOKSB7CisJCWlmICgoYm1zciAmIEJNU1JfQUNP
> > TVApID09IDApIHsKKwkJCS8qIEVyZywgc3RpbGwgdHJ5aW5nLCBJIGd1ZXNzLi4uICovCisJCQlt
> > aWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX05PTkU7CisJCQlyZXR1cm47CisJCX0KKworCQlp
> > ZiAoc2MtPm1paV9tcGRfbW9kZWwgPT0gTUlJX01PREVMX0lDUExVU19JUDEwMDEpIHsKKwkJCVBI
> > WV9SRUFEKHNjLCBJUEdQSFlfTFNSLCAmc3RhdCk7CisJCQlzd2l0Y2ggKHN0YXQgJiBJUEdQSFlf
> > TFNSX1NQRUVEX01BU0spIHsKKwkJCWNhc2UgSVBHUEhZX0xTUl9TUEVFRF8xMDoKKwkJCQltaWkt
> > Pm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNXzEwX1Q7CisJCQkJYnJlYWs7CisJCQljYXNlIElQR1BI
> > WV9MU1JfU1BFRURfMTAwOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fMTAwX1RY
> > OworCQkJCWJyZWFrOworCQkJY2FzZSBJUEdQSFlfTFNSX1NQRUVEXzEwMDA6CisJCQkJbWlpLT5t
> > aWlfbWVkaWFfYWN0aXZlIHw9IElGTV8xMDAwX1Q7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgkJ
> > CQkKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX05PTkU7CisJCQkJcmV0dXJuOwor
> > CQkJfQorCisJCQlpZiAoc3RhdCAmIElQR1BIWV9MU1JfRlVMTF9EVVBMRVgpCisJCQkJbWlpLT5t
> > aWlfbWVkaWFfYWN0aXZlIHw9IElGTV9GRFg7CisJCQllbHNlCisJCQkJbWlpLT5taWlfbWVkaWFf
> > YWN0aXZlIHw9IElGTV9IRFg7CisJCX0gZWxzZSB7CisJCQlQSFlfUkVBRChzYywgU1RHRV9QaHlD
> > dHJsLCAmc3RhdCk7CisJCQlzd2l0Y2ggKFBDX0xpbmtTcGVlZChzdGF0KSkgeworCQkJY2FzZSBQ
> > Q19MaW5rU3BlZWRfRG93bjoKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX05PTkU7
> > CisJCQkJcmV0dXJuOworCQkJY2FzZSBQQ19MaW5rU3BlZWRfMTA6CisJCQkJbWlpLT5taWlfbWVk
> > aWFfYWN0aXZlIHw9IElGTV8xMF9UOworCQkJCWJyZWFrOworCQkJY2FzZSBQQ19MaW5rU3BlZWRf
> > MTAwOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fMTAwX1RYOworCQkJCWJyZWFr
> > OworCQkJY2FzZSBQQ19MaW5rU3BlZWRfMTAwMDoKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUg
> > fD0gSUZNXzEwMDBfVDsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJbWlpLT5taWlfbWVk
> > aWFfYWN0aXZlIHw9IElGTV9OT05FOworCQkJCXJldHVybjsKKwkJCX0KKworCQkJaWYgKHN0YXQg
> > JiBQQ19QaHlEdXBsZXhTdGF0dXMpCisJCQkJbWlpLT5taWlfbWVkaWFfYWN0aXZlIHw9IElGTV9G
> > RFg7CisJCQllbHNlCisJCQkJbWlpLT5taWlfbWVkaWFfYWN0aXZlIHw9IElGTV9IRFg7CisJCX0K
> > KworCQlpZiAobWlpLT5taWlfbWVkaWFfYWN0aXZlICYgSUZNX0ZEWCkKKwkJCW1paS0+bWlpX21l
> > ZGlhX2FjdGl2ZSB8PSBtaWlfcGh5X2Zsb3dzdGF0dXMoc2MpOworCisJCWlmIChJRk1fU1VCVFlQ
> > RShtaWktPm1paV9tZWRpYV9hY3RpdmUpID09IElGTV8xMDAwX1QpIHsKKwkJCVBIWV9SRUFEKHNj
> > LCBNSUlfMTAwVDJTUiwgJmd0c3IpOworCQkJaWYgKGd0c3IgJiBHVFNSX01TX1JFUykKKwkJCQlt
> > aWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX0VUSF9NQVNURVI7CisJCX0KKwl9IGVsc2UKKwkJ
> > bWlpLT5taWlfbWVkaWFfYWN0aXZlID0gaWZlLT5pZm1fbWVkaWE7Cit9CisKK3N0YXRpYyBpbnQK
> > K2lwZ3BoeV9taWlfcGh5X2F1dG8oc3RydWN0IG1paV9zb2Z0YyAqc2MpCit7CisJdWludDE2X3Qg
> > cmVnID0gMDsKKworCWlmIChzYy0+bWlpX21wZF9tb2RlbCA9PSBNSUlfTU9ERUxfSUNQTFVTX0lQ
> > MTAwMSkgeworCQlQSFlfUkVBRChzYywgTUlJX0FOQVIsICZyZWcpOworCQlyZWcgJj0gfihBTkFS
> > X1BBVVNFX1NZTSB8IEFOQVJfUEFVU0VfQVNZTSk7CisJCXJlZyB8PSBBTkFSX05QOworCX0KKwor
> > CXJlZyB8PSBBTkFSXzEwIHwgQU5BUl8xMF9GRCB8IEFOQVJfVFggfCBBTkFSX1RYX0ZEOworCisJ
> > aWYgKHNjLT5taWlfZmxhZ3MgJiBNSUlGX0RPUEFVU0UpCisJCXJlZyB8PSBBTkFSX1BBVVNFX1NZ
> > TSB8IEFOQVJfUEFVU0VfQVNZTTsKKworCVBIWV9XUklURShzYywgTUlJX0FOQVIsIHJlZyB8IEFO
> > QVJfQ1NNQSk7CisKKwlyZWcgPSBHVENSX0FEVl8xMDAwVEZEWCB8IEdUQ1JfQURWXzEwMDBUSERY
> > OworCWlmIChzYy0+bWlpX21wZF9tb2RlbCAhPSBNSUlfTU9ERUxfSUNQTFVTX0lQMTAwMSkKKwkJ
> > cmVnIHw9IEdUQ1JfQURWX01TOworCVBIWV9XUklURShzYywgTUlJXzEwMFQyQ1IsIHJlZyk7CisK
> > KwlQSFlfV1JJVEUoc2MsIE1JSV9CTUNSLCBCTUNSX0ZEWCB8IEJNQ1JfQVVUT0VOIHwgQk1DUl9T
> > VEFSVE5FRyk7CisKKwlyZXR1cm4gRUpVU1RSRVRVUk47Cit9CisKKy8qc3RhdGljIHZvaWQKK2lw
> > Z3BoeV9sb2FkX2RzcGNvZGUoc3RydWN0IG1paV9zb2Z0YyAqc2MpCit7CisJUEhZX1dSSVRFKHNj
> > LCAzMSwgMHgwMDAxKTsKKwlQSFlfV1JJVEUoc2MsIDI3LCAweDAxZTApOworCVBIWV9XUklURShz
> > YywgMzEsIDB4MDAwMik7CisJUEhZX1dSSVRFKHNjLCAyNywgMHhlYjhlKTsKKwlQSFlfV1JJVEUo
> > c2MsIDMxLCAweDAwMDApOworCVBIWV9XUklURShzYywgMzAsIDB4MDA1ZSk7CisJUEhZX1dSSVRF
> > KHNjLCA5LCAweDA3MDApOworCisJREVMQVkoNTApOworfSovCisKK3N0YXRpYyB2b2lkCitpcGdw
> > aHlfcmVzZXQoc3RydWN0IG1paV9zb2Z0YyAqc2MpCit7CisJLy9zdHJ1Y3QgaWZuZXQgKmlmcCA9
> > IHNjLT5taWlfcGRhdGEtPm1paV9pZnA7CisJdWludDE2X3QgcmVnOworCisJbWlpX3BoeV9yZXNl
> > dChzYyk7CisKKwkvKiBjbGVhciBhdXRvbmVnL2Z1bGwtZHVwbGV4IGFzIHdlIGRvbid0IHdhbnQg
> > aXQgYWZ0ZXIgcmVzZXQgKi8KKwlQSFlfUkVBRChzYywgTUlJX0JNQ1IsICZyZWcpOworCXJlZyAm
> > PSB+KEJNQ1JfQVVUT0VOIHwgQk1DUl9GRFgpOworCVBIWV9XUklURShzYywgTUlJX0JNQ1IsIHJl
> > Zyk7CisKKwkvKmlmIChzYy0+bWlpX21wZF9tb2RlbCA9PSBNSUlfTU9ERUxfSUNQTFVTX0lQMTAw
> > MEEgJiYKKwkgICAgc3RyY21wKGlmcC0+aWZfeG5hbWUsICJzdGdlIikgPT0gMCkgeworCQlzdHJ1
> > Y3Qgc3RnZV9zb2Z0YyAqc3RnZV9zYyA9IGlmcC0+aWZfc29mdGM7CisJCWlmIChzdGdlX3NjLT5z
> > Y19yZXYgPj0gMHg0MCAmJiBzdGdlX3NjLT5zY19yZXYgPD0gMHg0ZSkKKwkJCWlwZ3BoeV9sb2Fk
> > X2RzcGNvZGUoc2MpOworCX0qLworfQoKQURERUQgICAgc3lzL2Rldi9taWkvaXBncGh5cmVnLmgK
> > SW5kZXg6IHN5cy9kZXYvbWlpL2lwZ3BoeXJlZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
> > PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9taWkv
> > aXBncGh5cmVnLmgKKysrIHN5cy9kZXYvbWlpL2lwZ3BoeXJlZy5oCkBAIC0wLDAgKzEsODMgQEAK
> > Ky8qCSRPcGVuQlNEOiBpcGdwaHlyZWcuaCx2IDEuMyAyMDE1LzA3LzE5IDA2OjI4OjEyIHl1byBF
> > eHAgJAkqLworCisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgUHl1biBZb25nSHllb24KKyAq
> > IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgICAgCisgKiBSZWRpc3RyaWJ1dGlv
> > biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
> > IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
> > Y29uZGl0aW9ucworICogYXJlIG1ldDogICAgICAgICAgICAgCisgKiAxLiBSZWRpc3RyaWJ1dGlv
> > bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
> > bm90aWNlIHVubW9kaWZpZWQsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGZvbGxv
> > d2luZworICogICAgZGlzY2xhaW1lci4gIAorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
> > eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
> > dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
> > aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
> > aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
> > WSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
> > U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
> > VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
> > IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
> > VCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkg
> > RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
> > RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
> > Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
> > LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVS
> > IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
> > Q1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
> > UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
> > UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
> > SCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX0RFVl9NSUlfSVBHUEhZUkVHX0hfCisjZGVm
> > aW5lIF9ERVZfTUlJX0lQR1BIWVJFR19IXworCisvKgorICogUmVnaXN0ZXJzIGZvciB0aGUgSUMg
> > UGx1cyBJUEdBIGludGVybmFsIFBIWS4KKyAqLworCisvKiBQSFkgc3BlY2lmaWMgY29udHJvbCAm
> > IHN0YXR1cyByZWdpc3Rlci4gSVAxMDAxIG9ubHkuICovCisjZGVmaW5lIElQR1BIWV9TQ1NSCQkJ
> > MHgxMAorI2RlZmluZSBJUEdQSFlfU0NTUl9SWFBIQVNFX1NFTAkweDAwMDEKKyNkZWZpbmUgSVBH
> > UEhZX1NDU1JfVFhQSEFTRV9TRUwJMHgwMDAyCisjZGVmaW5lIElQR1BIWV9TQ1NSX1JFUEVBVE9S
> > X01PREUJMHgwMDA0CisjZGVmaW5lIElQR1BIWV9TQ1NSX1JFU0VSVkVEMV9ERUYJMHgwMDA4Cisj
> > ZGVmaW5lIElQR1BIWV9TQ1NSX1JYQ0xLX0RSVl9NQVNLCTB4MDA2MAorI2RlZmluZSBJUEdQSFlf
> > U0NTUl9SWENMS19EUlZfREVGCTB4MDA0MAorI2RlZmluZSBJUEdQSFlfU0NTUl9SWERfRFJWX01B
> > U0sJMHgwMTgwCisjZGVmaW5lIElQR1BIWV9TQ1NSX1JYRF9EUlZfREVGCTB4MDEwMAorI2RlZmlu
> > ZSBJUEdQSFlfU0NTUl9KQUJCRVJfRU5CCTB4MDIwMAorI2RlZmluZSBJUEdQSFlfU0NTUl9IRUFS
> > VF9CRUFUX0VOQgkweDA0MDAKKyNkZWZpbmUgSVBHUEhZX1NDU1JfRE9XTlNISUZUX0VOQgkweDA4
> > MDAKKyNkZWZpbmUgSVBHUEhZX1NDU1JfUkVTRVJWRUQyX0RFRgkweDEwMDAKKyNkZWZpbmUgSVBH
> > UEhZX1NDU1JfTEVEX0RSVl80TUEJMHgwMDAwCisjZGVmaW5lIElQR1BIWV9TQ1NSX0xFRF9EUlZf
> > OE1BCTB4MjAwMAorI2RlZmluZSBJUEdQSFlfU0NTUl9MRURfTU9ERV9NQVNLCTB4QzAwMAorI2Rl
> > ZmluZSBJUEdQSFlfU0NTUl9MRURfTU9ERV9ERUYJMHgwMDAwCisKKy8qIFBIWSBsaW5rIHN0YXR1
> > cyByZWdpc3Rlci4gSVAxMDAxIG9ubHkuICovCisjZGVmaW5lIElQR1BIWV9MU1IJCQkweDExCisj
> > ZGVmaW5lIElQR1BIWV9MU1JfSkFCQkVSX0RFVAkweDAyMDAKKyNkZWZpbmUgSVBHUEhZX0xTUl9B
> > UFNfU0xFRVAJCTB4MDQwMAorI2RlZmluZSBJUEdQSFlfTFNSX01ESVgJCTB4MDgwMAorI2RlZmlu
> > ZSBJUEdQSFlfTFNSX0ZVTExfRFVQTEVYCTB4MTAwMAorI2RlZmluZSBJUEdQSFlfTFNSX1NQRUVE
> > XzEwCQkweDAwMDAKKyNkZWZpbmUgSVBHUEhZX0xTUl9TUEVFRF8xMDAJCTB4MjAwMAorI2RlZmlu
> > ZSBJUEdQSFlfTFNSX1NQRUVEXzEwMDAJMHg0MDAwCisjZGVmaW5lIElQR1BIWV9MU1JfU1BFRURf
> > TUFTSwkweDYwMDAKKyNkZWZpbmUgSVBHUEhZX0xTUl9MSU5LVVAJCTB4ODAwMAorCisvKiBQSFkg
> > c3BlY2lmaWMgY29udHJvbCByZWdpc3RlciAyLiBJUDEwMDEgb25seS4gKi8KKyNkZWZpbmUgSVBH
> > UEhZX1NDUgorI2RlZmluZSBJUEdQSFlfU0NSX1NFV19SQVRFX01BU0sJMHgwMDAzCisjZGVmaW5l
> > IElQR1BIWV9TQ1JfU0VXX1JBVEVfREVGCTB4MDAwMworI2RlZmluZSBJUEdQSFlfU0NSX0FVVE9f
> > WE9WRVIJMHgwMDA0CisjZGVmaW5lIElQR1BIWV9TQ1JfU1BFRURfMTBfMTAwX0VOQgkweDAwNDAK
> > KyNkZWZpbmUgSVBHUEhZX1NDUl9GSUZPX0xBVEVOQ1lfMgkweDAwMDAKKyNkZWZpbmUgSVBHUEhZ
> > X1NDUl9GSUZPX0xBVEVOQ1lfMwkweDAwODAKKyNkZWZpbmUgSVBHUEhZX1NDUl9GSUZPX0xBVEVO
> > Q1lfNAkweDAxMDAKKyNkZWZpbmUgSVBHUEhZX1NDUl9GSUZPX0xBVEVOQ1lfNQkweDAxODAKKyNk
> > ZWZpbmUgSVBHUEhZX1NDUl9NRElYX0VOQgkJMHgwMjAwCisjZGVmaW5lIElQR1BIWV9TQ1JfUkVT
> > RVJWRURfREVGCTB4MDQwMAorI2RlZmluZSBJUEdQSFlfU0NSX0FQU19PTgkJMHgwODAwCisKKyNl
> > bmRpZiAvKiBfREVWX01JSV9JUEdQSFlSRUdfSF8gKi8KCkluZGV4OiBzeXMvZGV2L21paS9taWlk
> > ZXZzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> > PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9taWkvbWlpZGV2cworKysgc3lzL2Rldi9taWkvbWlp
> > ZGV2cwpAQCAtNzQsMTEgKzc0LDExIEBACiBvdWkgTUFSVkVMTAkJCTB4MDA1MDQzCU1hcnZlbGwg
> > U2VtaWNvbmR1Y3Rvcgogb3VpIFFVQUxTRU1JCQkJMHgwMDYwNTEJUXVhbGl0eSBTZW1pY29uZHVj
> > dG9yCiBvdWkgQU1MT0dJQwkJCTB4MDA2MDUxCUFtbG9naWMKIG91aSBEQVZJQ09NCQkJMHgwMDYw
> > NmUJRGF2aWNvbSBTZW1pY29uZHVjdG9yCiBvdWkgU01TQwkJCTB4MDA4MDBmCVNNU0MKLW91aSBJ
> > Q1BMVVMJCQkweDAwOTBjMwlJQyBQbHVzIENvcnAuCitvdWkgSUNQTFVTCQkJMHgwMDA5YzMJSUMg
> > UGx1cyBDb3JwLgogb3VpIFNFRVEJCQkweDAwYTA3ZAlTZWVxCiBvdWkgSUNTCQkJCTB4MDBhMGJl
> > CUludGVncmF0ZWQgQ2lyY3VpdCBTeXN0ZW1zCiBvdWkgSU5URUwJCQkweDAwYWEwMAlJbnRlbAog
> > b3VpIFRTQwkJCQkweDAwYzAzOQlUREsgU2VtaWNvbmR1Y3Rvcgogb3VpIE1ZU09OCQkJMHgwMGMw
> > YjQJTXlzb24gVGVjaG5vbG9neQoK
> > --000000000000efb2d20591fccc25--
> >
>
--00000000000081a60e0593a2dbc1
Content-Type: text/x-patch; charset="US-ASCII"; name="ipgphy_patch.diff"
Content-Disposition: attachment; filename="ipgphy_patch.diff"
Content-Transfer-Encoding: base64
Content-ID: <f_k13zkkzh0>
X-Attachment-Id: f_k13zkkzh0
ZGlmZiAtLWdpdCBhL2Rpc3RyaWIvc2V0cy9saXN0cy9tYW4vbWkgYi9kaXN0cmliL3NldHMvbGlz
dHMvbWFuL21pCmluZGV4IGNiZjEyM2Y1OTkzLi4zYzQzMTliZmRlNCAxMDA2NDQKLS0tIGEvZGlz
dHJpYi9zZXRzL2xpc3RzL21hbi9taQorKysgYi9kaXN0cmliL3NldHMvbGlzdHMvbWFuL21pCkBA
IC0xMzM2LDYgKzEzMzYsNyBAQAogLi91c3Ivc2hhcmUvbWFuL2NhdDQvaXA2LjAJCQltYW4tc3lz
LWNhdG1hbgkJLmNhdAogLi91c3Ivc2hhcmUvbWFuL2NhdDQvaXBmLjAJCQltYW4taXBmLWNhdG1h
bgkJaXBmaWx0ZXIsLmNhdAogLi91c3Ivc2hhcmUvbWFuL2NhdDQvaXBmaWx0ZXIuMAkJCW1hbi1p
cGYtY2F0bWFuCQlpcGZpbHRlciwuY2F0CisuL3Vzci9zaGFyZS9tYW4vY2F0NC9pcGdwaHkuMAkJ
CW1hbi1zeXMtY2F0bWFuCQkuY2F0CiAuL3Vzci9zaGFyZS9tYW4vY2F0NC9pcGlwLjAJCQltYW4t
b2Jzb2xldGUJCW9ic29sZXRlCiAuL3Vzci9zaGFyZS9tYW4vY2F0NC9pcGtkYi4wCQkJbWFuLW9i
c29sZXRlCQlvYnNvbGV0ZQogLi91c3Ivc2hhcmUvbWFuL2NhdDQvaXBsLjAJCQltYW4taXBmLWNh
dG1hbgkJaXBmaWx0ZXIsLmNhdApAQCAtNDQ3Nyw2ICs0NDc4LDcgQEAKIC4vdXNyL3NoYXJlL21h
bi9odG1sNC9pcDYuaHRtbAkJCW1hbi1zeXMtaHRtbG1hbgkJaHRtbAogLi91c3Ivc2hhcmUvbWFu
L2h0bWw0L2lwZi5odG1sCQkJbWFuLWlwZi1odG1sbWFuCQlpcGZpbHRlcixodG1sCiAuL3Vzci9z
aGFyZS9tYW4vaHRtbDQvaXBmaWx0ZXIuaHRtbAkJbWFuLWlwZi1odG1sbWFuCQlpcGZpbHRlcixo
dG1sCisuL3Vzci9zaGFyZS9tYW4vaHRtbDQvaXBncGh5Lmh0bWwJCW1hbi1zeXMtaHRtbG1hbgkJ
aHRtbAogLi91c3Ivc2hhcmUvbWFuL2h0bWw0L2lwa2RiLmh0bWwJCW1hbi1vYnNvbGV0ZQkJb2Jz
b2xldGUKIC4vdXNyL3NoYXJlL21hbi9odG1sNC9pcGwuaHRtbAkJCW1hbi1pcGYtaHRtbG1hbgkJ
aXBmaWx0ZXIsaHRtbAogLi91c3Ivc2hhcmUvbWFuL2h0bWw0L2lwbWkuaHRtbAkJCW1hbi1zeXMt
aHRtbG1hbgkJaHRtbApAQCAtNzQ1NCw2ICs3NDU2LDcgQEAKIC4vdXNyL3NoYXJlL21hbi9tYW40
L2lwNi40CQkJbWFuLXN5cy1tYW4JCS5tYW4KIC4vdXNyL3NoYXJlL21hbi9tYW40L2lwZi40CQkJ
bWFuLXN5cy1tYW4JCWlwZmlsdGVyLC5tYW4KIC4vdXNyL3NoYXJlL21hbi9tYW40L2lwZmlsdGVy
LjQJCQltYW4tc3lzLW1hbgkJaXBmaWx0ZXIsLm1hbgorLi91c3Ivc2hhcmUvbWFuL21hbjQvaXBn
cGh5LjQJCQltYW4tc3lzLW1hbgkJLm1hbgogLi91c3Ivc2hhcmUvbWFuL21hbjQvaXBpcC40CQkJ
bWFuLW9ic29sZXRlCQlvYnNvbGV0ZQogLi91c3Ivc2hhcmUvbWFuL21hbjQvaXBrZGIuNAkJCW1h
bi1vYnNvbGV0ZQkJb2Jzb2xldGUKIC4vdXNyL3NoYXJlL21hbi9tYW40L2lwbC40CQkJbWFuLXN5
cy1tYW4JCWlwZmlsdGVyLC5tYW4KZGlmZiAtLWdpdCBhL3NoYXJlL21hbi9tYW40L01ha2VmaWxl
IGIvc2hhcmUvbWFuL21hbjQvTWFrZWZpbGUKaW5kZXggNGRjNjg2OGE4OWIuLjIyN2M0OWNkM2Mx
IDEwMDY0NAotLS0gYS9zaGFyZS9tYW4vbWFuNC9NYWtlZmlsZQorKysgYi9zaGFyZS9tYW4vbWFu
NC9NYWtlZmlsZQpAQCAtMzIsNyArMzIsNyBAQCBNQU49CWFhYy40IGFjOTcuNCBhY2FyZGlkZS40
IGFjZXJpZGUuNCBhY3BoeS40IFwKIAlpYm1jZC40IGlibWhhd2suNCBpY2hzbWIuNCBpY21wLjQg
aWNwLjQgaWNzcGh5LjQgaWVlLjQgaWVlZTgwMjExLjQgXAogCWlmbWVkaWEuNCBpZ21hZmIuNCBp
Z3BoeS40IGlnc2ZiLjQgaWhhLjQgaWhpZGV2LjQgaWhwaHkuNCBpaWMuNCBpbXMuNCBcCiAJaW5l
dC40IGlrcGh5LjQgaW5waHkuNCBpbnRlcnNpbDcxNzAuNCBpbnRyby40IFwKLQlpb2FzaWMuNCBp
b2F0LjQgaW9wLjQgaW9waHkuNCBpb3BzcC40IGlwLjQgaXBtaS40IGlwdy40IFwKKwlpb2FzaWMu
NCBpb2F0LjQgaW9wLjQgaW9waHkuNCBpb3BzcC40IGlwLjQgaXBncGh5LjQgaXBtaS40IGlwdy40
IFwKIAlpcm1jZS40IGlzcC40IGlzbXQuNCBpc3YuNCBpdGVzaW8uNCBpdGVpZGUuNCBpd2kuNCBp
d20uNCBpd24uNCBpeGcuNCBcCiAJaXhwaWRlLjQgaXh2LjQgXAogCWptZS40IGptaWRlLjQgam95
LjQgXApkaWZmIC0tZ2l0IGEvc2hhcmUvbWFuL21hbjQvaXBncGh5LjQgYi9zaGFyZS9tYW4vbWFu
NC9pcGdwaHkuNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzFhZTJl
Y2JmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9zaGFyZS9tYW4vbWFuNC9pcGdwaHkuNApAQCAtMCww
ICsxLDM0IEBACisuXCIJJE9wZW5CU0Q6IGlwZ3BoeS40LHYgMS41IDIwMDkvMDgvMDggMTc6MTI6
NDAgbmFkZHkgRXhwICQKKy5cIgorLlwiIENvcHlyaWdodCAoYykgMjAwNiBCcmFkIFNtaXRoIDxi
cmFkQG9wZW5ic2Qub3JnPgorLlwiCisuXCIgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlm
eSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisuXCIgcHVycG9zZSB3aXRo
IG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92
ZQorLlwiIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFy
IGluIGFsbCBjb3BpZXMuCisuXCIKKy5cIiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMKKy5cIiBXSVRIIFJFR0FS
RCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCisu
XCIgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU
SE9SIEJFIExJQUJMRSBGT1IKKy5cIiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCisuXCIgV0hBVFNPRVZFUiBSRVNV
TFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCisu
XCIgQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElP
TiwgQVJJU0lORyBPVVQgT0YKKy5cIiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQ
RVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorLlwiCisuRGQgJE1kb2NkYXRlOiBBdWd1c3Qg
OCAyMDA5ICQKKy5EdCBJUEdQSFkgNAorLk9zCisuU2ggTkFNRQorLk5tIGlwZ3BoeQorLk5kIElD
IFBsdXMgSVAxMDAwQS9JUDEwMDEgMTAvMTAwL0dpZ2FiaXQgRXRoZXJuZXQgUEhZCisuU2ggU1lO
T1BTSVMKKy5DZCAiaXBncGh5KiBhdCBtaWk/IgorLlNoIERFU0NSSVBUSU9OCitUaGUKKy5ObQor
ZHJpdmVyIHN1cHBvcnRzIHRoZSBJQyBQbHVzIElQMTAwMEEvSVAxMDAxIDEwLzEwMC9HaWdhYml0
IEV0aGVybmV0IFBIWQoraW50ZXJmYWNlLgorLlNoIFNFRSBBTFNPCisuWHIgaWZtZWRpYSA0ICwK
Ky5YciBpbnRybyA0ICwKKy5YciBtaWkgNCAsCisuWHIgaWZjb25maWcgOApkaWZmIC0tZ2l0IGEv
c2hhcmUvbWFuL21hbjQvbWlpLjQgYi9zaGFyZS9tYW4vbWFuNC9taWkuNAppbmRleCA3MzRhODVh
YWQyOC4uMjliMjlhZjFkMTIgMTAwNjQ0Ci0tLSBhL3NoYXJlL21hbi9tYW40L21paS40CisrKyBi
L3NoYXJlL21hbi9tYW40L21paS40CkBAIC00OSw2ICs0OSw3IEBACiAuQ2QgImlrcGh5KiAgICBh
dCBtaWk/IHBoeSA/CQkjIEludGVsIDgyNTYzIFBIWXMiCiAuQ2QgImlucGh5KiAgICBhdCBtaWk/
IHBoeSA/CQkjIEludGVsIDgyNTU1IFBIWXMiCiAuQ2QgImlvcGh5KiAgICBhdCBtaWk/IHBoeSA/
CQkjIEludGVsIDgyNTUzIFBIWXMiCisuQ2QgImlwZ3BoeSogICBhdCBtaWk/IHBoeSA/CQkjIElD
IFBMVVMgSVAxMDAwQS9JUDEwMDEgUEhZcyIKIC5DZCAibHh0cGh5KiAgIGF0IG1paT8gcGh5ID8J
CSMgTGV2ZWwgT25lIExYVC05NzAgUEhZcyIKIC5DZCAibWFrcGh5KiAgIGF0IG1paT8gcGh5ID8J
CSMgTWFydmVsIDg4RTEwMDAgR2lnLUUgUEhZcyIKIC5DZCAibWljcGh5KiAgIGF0IG1paT8gcGh5
ID8JCSMgTWljcmVsIEtTWjkwMjEgR2lnLUUgUEhZcyIKZGlmZiAtLWdpdCBhL3NoYXJlL21hbi9t
YW40L3ZnZS40IGIvc2hhcmUvbWFuL21hbjQvdmdlLjQKaW5kZXggNjJiYjMxOTM5MTIuLjI2Mzhj
ODBjOWNmIDEwMDY0NAotLS0gYS9zaGFyZS9tYW4vbWFuNC92Z2UuNAorKysgYi9zaGFyZS9tYW4v
bWFuNC92Z2UuNApAQCAtMTgwLDYgKzE4MCw3IEBAIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gKGNh
YmxlKS4gRHJpdmVyIHJlc2V0cyB0aGUgZGV2aWNlLgogLlNoIFNFRSBBTFNPCiAuWHIgYXJwIDQg
LAogLlhyIGNpcGh5IDQgLAorLlhyIGlwZ3BoeSA0ICwKIC5YciBtaWkgNCAsCiAuWHIgbmV0aW50
cm8gNCAsCiAuWHIgdWtwaHkgNCAsCmRpZmYgLS1naXQgYS9zeXMvYXJjaC9hbWQ2NC9jb25mL0FM
TCBiL3N5cy9hcmNoL2FtZDY0L2NvbmYvQUxMCmluZGV4IGUzMzI5MzllNTZhLi42MTAxYTZlZGI4
MiAxMDA2NDQKLS0tIGEvc3lzL2FyY2gvYW1kNjQvY29uZi9BTEwKKysrIGIvc3lzL2FyY2gvYW1k
NjQvY29uZi9BTEwKQEAgLTExMDQsNiArMTEwNCw3IEBAIGlocGh5KglhdCBtaWk/IHBoeSA/CQkJ
IyBJbnRlbCA4MjU3NyBQSFlzCiBpa3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwgODI1NjMg
UEhZcwogaW5waHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgyNTU1IFBIWXMKIGlvcGh5Kglh
dCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU1MyBQSFlzCitpcGdwaHkqCWF0IG1paT8gcGh5ID8J
CQkjIElDIFBMVVMgSVAxMDAwQS9JUDEwMDEgUEhZcwogbHh0cGh5KiBhdCBtaWk/IHBoeSA/CQkJ
IyBMZXZlbCBPbmUgTFhULTk3MCBQSFlzCiBtYWtwaHkqIGF0IG1paT8gcGh5ID8JCQkjIE1hcnZl
bGwgU2VtaWNvbmR1Y3RvciA4OEUxMDAwIFBIWXMKIG5zcGh5KglhdCBtaWk/IHBoeSA/CQkJIyBO
UzgzODQwIFBIWXMKZGlmZiAtLWdpdCBhL3N5cy9hcmNoL2FtZDY0L2NvbmYvR0VORVJJQyBiL3N5
cy9hcmNoL2FtZDY0L2NvbmYvR0VORVJJQwppbmRleCBmZmIzNjUzNWQyYy4uNDQwMmEwZGYxMGMg
MTAwNjQ0Ci0tLSBhL3N5cy9hcmNoL2FtZDY0L2NvbmYvR0VORVJJQworKysgYi9zeXMvYXJjaC9h
bWQ2NC9jb25mL0dFTkVSSUMKQEAgLTg3Myw2ICs4NzMsNyBAQCBpaHBoeSoJYXQgbWlpPyBwaHkg
PwkJCSMgSW50ZWwgODI1NzcgUEhZcwogaWtwaHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgy
NTYzIFBIWXMKIGlucGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU1NSBQSFlzCiBpb3Bo
eSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwgODI1NTMgUEhZcworaXBncGh5KglhdCBtaWk/IHBo
eSA/CQkJIyBJQyBQTFVTIElQMTAwMEEvSVAxMDAxIFBIWXMKIGx4dHBoeSogYXQgbWlpPyBwaHkg
PwkJCSMgTGV2ZWwgT25lIExYVC05NzAgUEhZcwogbWFrcGh5KiBhdCBtaWk/IHBoeSA/CQkJIyBN
YXJ2ZWxsIFNlbWljb25kdWN0b3IgODhFMTAwMCBQSFlzCiBuc3BoeSoJYXQgbWlpPyBwaHkgPwkJ
CSMgTlM4Mzg0MCBQSFlzCmRpZmYgLS1naXQgYS9zeXMvYXJjaC9pMzg2L2NvbmYvQUxMIGIvc3lz
L2FyY2gvaTM4Ni9jb25mL0FMTAppbmRleCAxMGEwZWE2ODI5My4uNzUzYTkwM2IyZTggMTAwNjQ0
Ci0tLSBhL3N5cy9hcmNoL2kzODYvY29uZi9BTEwKKysrIGIvc3lzL2FyY2gvaTM4Ni9jb25mL0FM
TApAQCAtMTIwOSw2ICsxMjA5LDcgQEAgaWhwaHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgy
NTc3IFBIWXMKIGlrcGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU2MyBQSFlzCiBpbnBo
eSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwgODI1NTUgUEhZcwogaW9waHkqCWF0IG1paT8gcGh5
ID8JCQkjIEludGVsIDgyNTUzIFBIWXMKK2lwZ3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgSUMgUExV
UyBJUDEwMDBBL0lQMTAwMSBQSFlzCiBseHRwaHkqIGF0IG1paT8gcGh5ID8JCQkjIExldmVsIE9u
ZSBMWFQtOTcwIFBIWXMKIG1ha3BoeSogYXQgbWlpPyBwaHkgPwkJCSMgTWFydmVsbCBTZW1pY29u
ZHVjdG9yIDg4RTEwMDAgUEhZcwogbnNwaHkqCWF0IG1paT8gcGh5ID8JCQkjIE5TODM4NDAgUEhZ
cwpkaWZmIC0tZ2l0IGEvc3lzL2FyY2gvaTM4Ni9jb25mL0dFTkVSSUMgYi9zeXMvYXJjaC9pMzg2
L2NvbmYvR0VORVJJQwppbmRleCBmNmE1YjMzMjRiNC4uZTg2NzhlMTA4NGYgMTAwNjQ0Ci0tLSBh
L3N5cy9hcmNoL2kzODYvY29uZi9HRU5FUklDCisrKyBiL3N5cy9hcmNoL2kzODYvY29uZi9HRU5F
UklDCkBAIC0xMTIwLDYgKzExMjAsNyBAQCBpaHBoeSoJYXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwg
ODI1NzcgUEhZcwogaWtwaHkqCWF0IG1paT8gcGh5ID8JCQkjIEludGVsIDgyNTYzIFBIWXMKIGlu
cGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCA4MjU1NSBQSFlzCiBpb3BoeSoJYXQgbWlpPyBw
aHkgPwkJCSMgSW50ZWwgODI1NTMgUEhZcworaXBncGh5KglhdCBtaWk/IHBoeSA/CQkJIyBJQyBQ
TFVTIElQMTAwMEEvSVAxMDAxIFBIWXMKIGx4dHBoeSogYXQgbWlpPyBwaHkgPwkJCSMgTGV2ZWwg
T25lIExYVC05NzAgUEhZcwogbWFrcGh5KiBhdCBtaWk/IHBoeSA/CQkJIyBNYXJ2ZWxsIFNlbWlj
b25kdWN0b3IgODhFMTAwMCBQSFlzCiBuc3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgTlM4Mzg0MCBQ
SFlzCmRpZmYgLS1naXQgYS9zeXMvZGV2L0RFVk5BTUVTIGIvc3lzL2Rldi9ERVZOQU1FUwppbmRl
eCAzNDY4OWYyZjc4NC4uOTg0NzlmYjA0MTEgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYvREVWTkFNRVMK
KysrIGIvc3lzL2Rldi9ERVZOQU1FUwpAQCAtNjU5LDYgKzY1OSw3IEBAIGlvcHNwCQkJTUkKIGlw
YXFidXMJCQlocGNhcm0KIGlwYXFsY2QJCQlocGNhcm0KIGlwYXFwY2ljCQlocGNhcm0KK2lwZ3Bo
eQkJCU1JCiBpcG1pCQkJYW1kNjQKIGlwbWkJCQlpMzg2CiBpcG1pCQkJeGVuCmRpZmYgLS1naXQg
YS9zeXMvZGV2L21paS9maWxlcy5taWkgYi9zeXMvZGV2L21paS9maWxlcy5taWkKaW5kZXggYTMx
YjQzYWU4NmEuLmMyODRiZDdlOTQzIDEwMDY0NAotLS0gYS9zeXMvZGV2L21paS9maWxlcy5taWkK
KysrIGIvc3lzL2Rldi9taWkvZmlsZXMubWlpCkBAIC05OSw2ICs5OSwxMCBAQCBkZXZpY2UJaWtw
aHk6IG1paV9waHkKIGF0dGFjaAlpa3BoeSBhdCBtaWkKIGZpbGUJZGV2L21paS9pa3BoeS5jCQkJ
CWlrcGh5CiAKK2RldmljZQlpcGdwaHk6IG1paV9waHkKK2F0dGFjaAlpcGdwaHkgYXQgbWlpCitm
aWxlCWRldi9taWkvaXBncGh5LmMJCQlpcGdwaHkKKwogZGV2aWNlCXNxcGh5OiBtaWlfcGh5CiBh
dHRhY2gJc3FwaHkgYXQgbWlpCiBmaWxlCWRldi9taWkvc3FwaHkuYwkJCQlzcXBoeQpkaWZmIC0t
Z2l0IGEvc3lzL2Rldi9taWkvaXBncGh5LmMgYi9zeXMvZGV2L21paS9pcGdwaHkuYwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWFmZDJkY2FjODAKLS0tIC9kZXYvbnVs
bAorKysgYi9zeXMvZGV2L21paS9pcGdwaHkuYwpAQCAtMCwwICsxLDQxNSBAQAorLyoJJE9wZW5C
U0Q6IGlwZ3BoeS5jLHYgMS4xOSAyMDE1LzA3LzE5IDA2OjI4OjEyIHl1byBFeHAgJAkqLworCisv
Ki0KKyAqIENvcHlyaWdodCAoYykgMjAwNiwgUHl1biBZb25nSHllb24gPHlvbmdhcmlARnJlZUJT
RC5vcmc+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSB1bm1vZGlmaWVk
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucywgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKi8K
KworLyoKKyAqIERyaXZlciBmb3IgdGhlIElDIFBsdXMgSVAxMDAwQS9JUDEwMDEgMTAvMTAwLzEw
MDAgUEhZLgorICovCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CitfX0tFUk5FTF9SQ1NJRCgwLCAi
JE5ldEJTRDogaXBncGh5LmMsdiAxLjU1IDIwMTkvMDYvMDUgMTc6NTA6MDYgdmV6aGx5cyBFeHAg
JCIpOworCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+Cisj
aW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4KKyNpbmNsdWRl
IDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL2Vycm5vLmg+CisKKyNpbmNsdWRlIDxuZXQv
aWYuaD4KKyNpbmNsdWRlIDxuZXQvaWZfbWVkaWEuaD4KKworI2luY2x1ZGUgPGRldi9taWkvbWlp
Lmg+CisjaW5jbHVkZSA8ZGV2L21paS9taWl2YXIuaD4KKyNpbmNsdWRlIDxkZXYvbWlpL21paWRl
dnMuaD4KKworI2luY2x1ZGUgPGRldi9taWkvaXBncGh5cmVnLmg+CisKKyNpbmNsdWRlIDxkZXYv
cGNpL2lmX3N0Z2VyZWcuaD4KKworc3RhdGljIGludCBpcGdwaHlfbWF0Y2goZGV2aWNlX3QsIGNm
ZGF0YV90LCB2b2lkICopOworc3RhdGljIHZvaWQgaXBncGh5X2F0dGFjaChkZXZpY2VfdCwgZGV2
aWNlX3QsIHZvaWQgKik7CisKK0NGQVRUQUNIX0RFQ0xfTkVXKGlwZ3BoeSwgc2l6ZW9mKHN0cnVj
dCBtaWlfc29mdGMpLAorICAgIGlwZ3BoeV9tYXRjaCwgaXBncGh5X2F0dGFjaCwgbWlpX3BoeV9k
ZXRhY2gsIG1paV9waHlfYWN0aXZhdGUpOworCitzdGF0aWMgaW50CWlwZ3BoeV9zZXJ2aWNlKHN0
cnVjdCBtaWlfc29mdGMgKiwgc3RydWN0IG1paV9kYXRhICosIGludCk7CitzdGF0aWMgdm9pZAlp
cGdwaHlfc3RhdHVzKHN0cnVjdCBtaWlfc29mdGMgKik7CitzdGF0aWMgaW50CWlwZ3BoeV9taWlf
cGh5X2F1dG8oc3RydWN0IG1paV9zb2Z0YyAqKTsKK3N0YXRpYyB2b2lkCWlwZ3BoeV9sb2FkX2Rz
cGNvZGUoc3RydWN0IG1paV9zb2Z0YyAqKTsKK3N0YXRpYyB2b2lkCWlwZ3BoeV9yZXNldChzdHJ1
Y3QgbWlpX3NvZnRjICopOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1paV9waHlfZnVuY3MgaXBn
cGh5X2Z1bmNzID0geworCWlwZ3BoeV9zZXJ2aWNlLCBpcGdwaHlfc3RhdHVzLCBpcGdwaHlfcmVz
ZXQsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1paV9waHlkZXNjIGlwZ3BoeXNbXSA9IHsK
KwlNSUlfUEhZX0RFU0MoeHhJQ1BMVVMsIElQMTAwMEEpLAorCU1JSV9QSFlfREVTQyh4eElDUExV
UywgSVAxMDAxKSwKKwlNSUlfUEhZX0VORCwKK307CisKK3N0YXRpYyBpbnQKK2lwZ3BoeV9tYXRj
aChkZXZpY2VfdCBwYXJlbnQsIGNmZGF0YV90IG1hdGNoLCB2b2lkICphdXgpCit7CisJc3RydWN0
IG1paV9hdHRhY2hfYXJncyAqbWEgPSBhdXg7CisKKwlpZiAobWlpX3BoeV9tYXRjaChtYSwgaXBn
cGh5cykgIT0gTlVMTCkgeworCQlyZXR1cm4gMTA7CisJfQorCXJldHVybiAwOworfQorCitzdGF0
aWMgdm9pZAoraXBncGh5X2F0dGFjaChkZXZpY2VfdCBwYXJlbnQsIGRldmljZV90IHNlbGYsIHZv
aWQgKmF1eCkKK3sKKwlzdHJ1Y3QgbWlpX3NvZnRjICpzYyA9IGRldmljZV9wcml2YXRlKHNlbGYp
OworCXN0cnVjdCBtaWlfYXR0YWNoX2FyZ3MgKm1hID0gYXV4OworCXN0cnVjdCBtaWlfZGF0YSAq
bWlpID0gbWEtPm1paV9kYXRhOworCWNvbnN0IHN0cnVjdCBtaWlfcGh5ZGVzYyAqbXBkOworCisJ
bXBkID0gbWlpX3BoeV9tYXRjaChtYSwgaXBncGh5cyk7CisJYXByaW50X25haXZlKCI6IE1lZGlh
IGludGVyZmFjZVxuIik7CisJYXByaW50X25vcm1hbCgiOiAlcywgcmV2LiAlZFxuIiwgbXBkLT5t
cGRfbmFtZSwgTUlJX1JFVihtYS0+bWlpX2lkMikpOworCisJc2MtPm1paV9kZXYgPSBzZWxmOwor
CXNjLT5taWlfaW5zdCA9IG1paS0+bWlpX2luc3RhbmNlOworCXNjLT5taWlfcGh5ID0gbWEtPm1p
aV9waHlubzsKKwlzYy0+bWlpX21wZF9vdWkgPSBNSUlfT1VJKG1hLT5taWlfaWQxLCBtYS0+bWlp
X2lkMik7CisJc2MtPm1paV9tcGRfbW9kZWwgPSBNSUlfTU9ERUwobWEtPm1paV9pZDIpOworCXNj
LT5taWlfbXBkX3JldiA9IE1JSV9SRVYobWEtPm1paV9pZDIpOworCXNjLT5taWlfZnVuY3MgPSAm
aXBncGh5X2Z1bmNzOworCXNjLT5taWlfcGRhdGEgPSBtaWk7CisJc2MtPm1paV9mbGFncyA9IG1h
LT5taWlfZmxhZ3M7CisKKwlzYy0+bWlpX2ZsYWdzIHw9IE1JSUZfTk9JU09MQVRFOworCXNjLT5t
aWlfYW5lZ3RpY2tzID0gTUlJX0FORUdUSUNLU19HSUdFOworCisJUEhZX1JFU0VUKHNjKTsKKwor
CVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJnNjLT5taWlfY2FwYWJpbGl0aWVzKTsKKwlzYy0+bWlp
X2NhcGFiaWxpdGllcyAmPSBtYS0+bWlpX2NhcG1hc2s7CisJLy9zYy0+bWlpX2NhcGFiaWxpdGll
cyAmPSB+Qk1TUl9BTkVHOworCWlmIChzYy0+bWlpX2NhcGFiaWxpdGllcyAmIEJNU1JfRVhUU1RB
VCkKKwkJUEhZX1JFQUQoc2MsIE1JSV9FWFRTUiwgJnNjLT5taWlfZXh0Y2FwYWJpbGl0aWVzKTsK
KyAKKwltaWlfcGh5X2FkZF9tZWRpYShzYyk7CisJYXByaW50X25vcm1hbCgiXG4iKTsKK30KKwor
c3RhdGljIGludAoraXBncGh5X3NlcnZpY2Uoc3RydWN0IG1paV9zb2Z0YyAqc2MsIHN0cnVjdCBt
aWlfZGF0YSAqbWlpLCBpbnQgY21kKQoreworCXN0cnVjdCBpZm1lZGlhX2VudHJ5ICppZmUgPSBt
aWktPm1paV9tZWRpYS5pZm1fY3VyOworCXVpbnQxNl90IGdpZywgcmVnLCBzcGVlZDsKKworCXN3
aXRjaCAoY21kKSB7CisJY2FzZSBNSUlfUE9MTFNUQVQ6CisJCS8qCisJCSAqIElmIHdlJ3JlIG5v
dCBwb2xsaW5nIG91ciBQSFkgaW5zdGFuY2UsIGp1c3QgcmV0dXJuLgorCQkgKi8KKwkJaWYgKElG
TV9JTlNUKGlmZS0+aWZtX21lZGlhKSAhPSBzYy0+bWlpX2luc3QpCisJCQlyZXR1cm4gMDsKKwkJ
YnJlYWs7CisKKwljYXNlIE1JSV9NRURJQUNIRzoKKwkJLyoKKwkJICogSWYgdGhlIG1lZGlhIGlu
ZGljYXRlcyBhIGRpZmZlcmVudCBQSFkgaW5zdGFuY2UsCisJCSAqIGlzb2xhdGUgb3Vyc2VsdmVz
LgorCQkgKi8KKwkJaWYgKElGTV9JTlNUKGlmZS0+aWZtX21lZGlhKSAhPSBzYy0+bWlpX2luc3Qp
IHsKKwkJCVBIWV9SRUFEKHNjLCBNSUlfQk1DUiwgJnJlZyk7CisJCQlQSFlfV1JJVEUoc2MsIE1J
SV9CTUNSLCByZWcgfCBCTUNSX0lTTyk7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJCS8qCisJCSAq
IElmIHRoZSBpbnRlcmZhY2UgaXMgbm90IHVwLCBkb24ndCBkbyBhbnl0aGluZy4KKwkJICovCisJ
CWlmICgobWlpLT5taWlfaWZwLT5pZl9mbGFncyAmIElGRl9VUCkgPT0gMCkKKwkJCWJyZWFrOwor
CisJCVBIWV9SRVNFVChzYyk7CisKKwkJc3dpdGNoIChJRk1fU1VCVFlQRShpZmUtPmlmbV9tZWRp
YSkpIHsKKwkJY2FzZSBJRk1fQVVUTzoKKwkJCSh2b2lkKWlwZ3BoeV9taWlfcGh5X2F1dG8oc2Mp
OworCQkJZ290byBkb25lOworCQkJYnJlYWs7CisKKwkJY2FzZSBJRk1fMTAwMF9UOgorCQkJLyoK
KwkJCSAqIFhYWAorCQkJICogTWFudWFsIDEwMDBiYXNlVCBzZXR0aW5nIGRvZXNuJ3Qgc2VlbSB0
byB3b3JrLgorCQkJICovCisJCQlzcGVlZCA9IEJNQ1JfUzEwMDA7CisJCQlicmVhazsKKworCQlj
YXNlIElGTV8xMDBfVFg6CisJCQlzcGVlZCA9IEJNQ1JfUzEwMDsKKwkJCWJyZWFrOworCisJCWNh
c2UgSUZNXzEwX1Q6CisJCQlzcGVlZCA9IEJNQ1JfUzEwOworCQkJYnJlYWs7CisKKwkJZGVmYXVs
dDoKKwkJCXJldHVybiBFSU5WQUw7CisJCX0KKworCQlpZiAoKChpZmUtPmlmbV9tZWRpYSAmIElG
TV9HTUFTSykgJiBJRk1fRkRYKSAhPSAwKSB7CisJCQlzcGVlZCB8PSBCTUNSX0ZEWDsKKwkJCWdp
ZyA9IEdUQ1JfQURWXzEwMDBURkRYOworCQl9IGVsc2UKKwkJCWdpZyA9IEdUQ1JfQURWXzEwMDBU
SERYOworCisJCVBIWV9XUklURShzYywgTUlJXzEwMFQyQ1IsIDApOworCQlQSFlfV1JJVEUoc2Ms
IE1JSV9CTUNSLCBzcGVlZCk7CisKKwkJaWYgKElGTV9TVUJUWVBFKGlmZS0+aWZtX21lZGlhKSAh
PSBJRk1fMTAwMF9UKQorCQkJYnJlYWs7CisKKwkJUEhZX1dSSVRFKHNjLCBNSUlfMTAwVDJDUiwg
Z2lnKTsKKwkJUEhZX1dSSVRFKHNjLCBNSUlfQk1DUiwgc3BlZWQpOworCisJCWlmIChtaWktPm1p
aV9tZWRpYS5pZm1fbWVkaWEgJiBJRk1fRVRIX01BU1RFUikKKwkJCWdpZyB8PSBHVENSX01BTl9N
UyB8IEdUQ1JfQURWX01TOworCisJCVBIWV9XUklURShzYywgTUlJXzEwMFQyQ1IsIGdpZyk7CisK
K2RvbmU6CisJCWJyZWFrOworCisJY2FzZSBNSUlfVElDSzoKKwkJLyoKKwkJICogSWYgd2UncmUg
bm90IGN1cnJlbnRseSBzZWxlY3RlZCwganVzdCByZXR1cm4uCisJCSAqLworCQlpZiAoSUZNX0lO
U1QoaWZlLT5pZm1fbWVkaWEpICE9IHNjLT5taWlfaW5zdCkKKwkJCXJldHVybiAwOworCisJCS8q
CisJCSAqIElzIHRoZSBpbnRlcmZhY2UgZXZlbiB1cD8KKwkJICovCisJCWlmICgobWlpLT5taWlf
aWZwLT5pZl9mbGFncyAmIElGRl9VUCkgPT0gMCkKKwkJCXJldHVybiAwOworCisJCS8qCisJCSAq
IE9ubHkgdXNlZCBmb3IgYXV0b25lZ290aWF0aW9uLgorCQkgKi8KKwkJaWYgKElGTV9TVUJUWVBF
KGlmZS0+aWZtX21lZGlhKSAhPSBJRk1fQVVUTykgeworCQkJc2MtPm1paV90aWNrcyA9IDA7CisJ
CQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGxpbmsu
ICBJZiB3ZSBkbywgd2UgZG9uJ3QKKwkJICogbmVlZCB0byByZXN0YXJ0IHRoZSBhdXRvbmVnb3Rp
YXRpb24gcHJvY2Vzcy4gIFJlYWQKKwkJICogdGhlIEJNU1IgdHdpY2UgaW4gY2FzZSBpdCdzIGxh
dGNoZWQuCisJCSAqLworCQlQSFlfUkVBRChzYywgTUlJX0JNU1IsICZyZWcpOworCQlQSFlfUkVB
RChzYywgTUlJX0JNU1IsICZyZWcpOworCQlpZiAocmVnICYgQk1TUl9MSU5LKSB7CisJCQkvKgor
CQkJICogUmVzZXQgYXV0b25lZ290aWF0aW9uIHRpbWVyIHRvIDAgaW4gY2FzZSB0aGUgbGluawor
CQkJICogZ29lcyBkb3duIGluIHRoZSBuZXh0IHRpY2suCisJCQkgKi8KKwkJCXNjLT5taWlfdGlj
a3MgPSAwOworCQkJLyogU2VlIGFib3ZlLiAqLworCQkJYnJlYWs7CisJCX0KKworCQkvKiBBbm5v
dW5jZSBsaW5rIGxvc3MgcmlnaHQgYWZ0ZXIgaXQgaGFwcGVucyAqLworCQlpZiAoc2MtPm1paV90
aWNrcysrID09IDApCisJCQlicmVhazsKKworCQkvKgorCQkgKiBPbmx5IHJldHJ5IGF1dG9uZWdv
dGlhdGlvbiBldmVyeSBtaWlfYW5lZ3RpY2tzIHNlY29uZHMuCisJCSAqLworCQlpZiAoc2MtPm1p
aV90aWNrcyA8PSBzYy0+bWlpX2FuZWd0aWNrcykKKwkJCWJyZWFrOworCisJCXNjLT5taWlfdGlj
a3MgPSAwOworCQlpcGdwaHlfbWlpX3BoeV9hdXRvKHNjKTsKKwkJYnJlYWs7CisJfQorCisJLyog
VXBkYXRlIHRoZSBtZWRpYSBzdGF0dXMuICovCisJaXBncGh5X3N0YXR1cyhzYyk7CisKKwkvKiBD
YWxsYmFjayBpZiBzb21ldGhpbmcgY2hhbmdlZC4gKi8KKwltaWlfcGh5X3VwZGF0ZShzYywgY21k
KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2lwZ3BoeV9zdGF0dXMoc3RydWN0IG1p
aV9zb2Z0YyAqc2MpCit7CisJc3RydWN0IG1paV9kYXRhICptaWkgPSBzYy0+bWlpX3BkYXRhOwor
CXN0cnVjdCBpZm1lZGlhX2VudHJ5ICppZmUgPSBtaWktPm1paV9tZWRpYS5pZm1fY3VyOworCXVp
bnQxNl90IGJtc3IsIGJtY3IsIHN0YXQsIGd0c3I7CisKKwltaWktPm1paV9tZWRpYV9zdGF0dXMg
PSBJRk1fQVZBTElEOworCW1paS0+bWlpX21lZGlhX2FjdGl2ZSA9IElGTV9FVEhFUjsKKworCVBI
WV9SRUFEKHNjLCBNSUlfQk1TUiwgJmJtc3IpOworCVBIWV9SRUFEKHNjLCBNSUlfQk1TUiwgJmJt
c3IpOworCWlmIChibXNyICYgQk1TUl9MSU5LKSAKKwkJbWlpLT5taWlfbWVkaWFfc3RhdHVzIHw9
IElGTV9BQ1RJVkU7CisKKwlQSFlfUkVBRChzYywgTUlJX0JNQ1IsICZibWNyKTsKKwlpZiAoYm1j
ciAmIEJNQ1JfTE9PUCkKKwkJbWlpLT5taWlfbWVkaWFfYWN0aXZlIHw9IElGTV9MT09QOworCisJ
aWYgKGJtY3IgJiBCTUNSX0FVVE9FTikgeworCQlpZiAoKGJtc3IgJiBCTVNSX0FDT01QKSA9PSAw
KSB7CisJCQkvKiBFcmcsIHN0aWxsIHRyeWluZywgSSBndWVzcy4uLiAqLworCQkJbWlpLT5taWlf
bWVkaWFfYWN0aXZlIHw9IElGTV9OT05FOworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKHNjLT5t
aWlfbXBkX21vZGVsID09IE1JSV9NT0RFTF94eElDUExVU19JUDEwMDEpIHsKKwkJCVBIWV9SRUFE
KHNjLCBJUEdQSFlfTFNSLCAmc3RhdCk7CisJCQlzd2l0Y2ggKHN0YXQgJiBJUEdQSFlfTFNSX1NQ
RUVEX01BU0spIHsKKwkJCWNhc2UgSVBHUEhZX0xTUl9TUEVFRF8xMDoKKwkJCQltaWktPm1paV9t
ZWRpYV9hY3RpdmUgfD0gSUZNXzEwX1Q7CisJCQkJYnJlYWs7CisJCQljYXNlIElQR1BIWV9MU1Jf
U1BFRURfMTAwOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fMTAwX1RYOworCQkJ
CWJyZWFrOworCQkJY2FzZSBJUEdQSFlfTFNSX1NQRUVEXzEwMDA6CisJCQkJbWlpLT5taWlfbWVk
aWFfYWN0aXZlIHw9IElGTV8xMDAwX1Q7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCW1p
aS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fTk9ORTsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJ
CWlmIChzdGF0ICYgSVBHUEhZX0xTUl9GVUxMX0RVUExFWCkKKwkJCQltaWktPm1paV9tZWRpYV9h
Y3RpdmUgfD0gSUZNX0ZEWDsKKwkJCWVsc2UKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0g
SUZNX0hEWDsKKwkJfSBlbHNlIHsKKwkJCVBIWV9SRUFEKHNjLCBTVEdFX1BoeUN0cmwsICZzdGF0
KTsKKwkJCXN3aXRjaCAoUENfTGlua1NwZWVkKHN0YXQpKSB7CisJCQljYXNlIFBDX0xpbmtTcGVl
ZF9Eb3duOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fTk9ORTsKKwkJCQlyZXR1
cm47CisJCQljYXNlIFBDX0xpbmtTcGVlZF8xMDoKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUg
fD0gSUZNXzEwX1Q7CisJCQkJYnJlYWs7CisJCQljYXNlIFBDX0xpbmtTcGVlZF8xMDA6CisJCQkJ
bWlpLT5taWlfbWVkaWFfYWN0aXZlIHw9IElGTV8xMDBfVFg7CisJCQkJYnJlYWs7CisJCQljYXNl
IFBDX0xpbmtTcGVlZF8xMDAwOgorCQkJCW1paS0+bWlpX21lZGlhX2FjdGl2ZSB8PSBJRk1fMTAw
MF9UOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUg
fD0gSUZNX05PTkU7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQlpZiAoc3RhdCAmIFBDX1BoeUR1
cGxleFN0YXR1cykKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX0ZEWDsKKwkJCWVs
c2UKKwkJCQltaWktPm1paV9tZWRpYV9hY3RpdmUgfD0gSUZNX0hEWDsKKwkJfQorCisJCWlmICht
aWktPm1paV9tZWRpYV9hY3RpdmUgJiBJRk1fRkRYKQorCQkJbWlpLT5taWlfbWVkaWFfYWN0aXZl
IHw9IG1paV9waHlfZmxvd3N0YXR1cyhzYyk7CisKKwkJaWYgKElGTV9TVUJUWVBFKG1paS0+bWlp
X21lZGlhX2FjdGl2ZSkgPT0gSUZNXzEwMDBfVCkgeworCQkJUEhZX1JFQUQoc2MsIE1JSV8xMDBU
MlNSLCAmZ3Rzcik7CisJCQlpZiAoZ3RzciAmIEdUU1JfTVNfUkVTKQorCQkJCW1paS0+bWlpX21l
ZGlhX2FjdGl2ZSB8PSBJRk1fRVRIX01BU1RFUjsKKwkJfQorCX0gZWxzZQorCQltaWktPm1paV9t
ZWRpYV9hY3RpdmUgPSBpZmUtPmlmbV9tZWRpYTsKK30KKworc3RhdGljIGludAoraXBncGh5X21p
aV9waHlfYXV0byhzdHJ1Y3QgbWlpX3NvZnRjICpzYykKK3sKKwl1aW50MTZfdCByZWcgPSAwOwor
CisJaWYgKHNjLT5taWlfbXBkX21vZGVsID09IE1JSV9NT0RFTF94eElDUExVU19JUDEwMDEpIHsK
KwkJUEhZX1JFQUQoc2MsIE1JSV9BTkFSLCAmcmVnKTsKKwkJcmVnICY9IH4oQU5BUl9QQVVTRV9T
WU0gfCBBTkFSX1BBVVNFX0FTWU0pOworCQlyZWcgfD0gQU5BUl9OUDsKKwl9CisKKwlyZWcgfD0g
QU5BUl8xMCB8IEFOQVJfMTBfRkQgfCBBTkFSX1RYIHwgQU5BUl9UWF9GRDsKKworCWlmIChzYy0+
bWlpX2ZsYWdzICYgTUlJRl9ET1BBVVNFKQorCQlyZWcgfD0gQU5BUl9QQVVTRV9TWU0gfCBBTkFS
X1BBVVNFX0FTWU07CisKKwlQSFlfV1JJVEUoc2MsIE1JSV9BTkFSLCByZWcgfCBBTkFSX0NTTUEp
OworCisJcmVnID0gR1RDUl9BRFZfMTAwMFRGRFggfCBHVENSX0FEVl8xMDAwVEhEWDsKKwlpZiAo
c2MtPm1paV9tcGRfbW9kZWwgIT0gTUlJX01PREVMX3h4SUNQTFVTX0lQMTAwMSkKKwkJcmVnIHw9
IEdUQ1JfQURWX01TOworCVBIWV9XUklURShzYywgTUlJXzEwMFQyQ1IsIHJlZyk7CisKKwlQSFlf
V1JJVEUoc2MsIE1JSV9CTUNSLCBCTUNSX0ZEWCB8IEJNQ1JfQVVUT0VOIHwgQk1DUl9TVEFSVE5F
Ryk7CisKKwlyZXR1cm4gRUpVU1RSRVRVUk47Cit9CisKK3N0YXRpYyB2b2lkCitpcGdwaHlfbG9h
ZF9kc3Bjb2RlKHN0cnVjdCBtaWlfc29mdGMgKnNjKQoreworCVBIWV9XUklURShzYywgMzEsIDB4
MDAwMSk7CisJUEhZX1dSSVRFKHNjLCAyNywgMHgwMWUwKTsKKwlQSFlfV1JJVEUoc2MsIDMxLCAw
eDAwMDIpOworCVBIWV9XUklURShzYywgMjcsIDB4ZWI4ZSk7CisJUEhZX1dSSVRFKHNjLCAzMSwg
MHgwMDAwKTsKKwlQSFlfV1JJVEUoc2MsIDMwLCAweDAwNWUpOworCVBIWV9XUklURShzYywgOSwg
MHgwNzAwKTsKKworCURFTEFZKDUwKTsKK30KKworc3RhdGljIHZvaWQKK2lwZ3BoeV9yZXNldChz
dHJ1Y3QgbWlpX3NvZnRjICpzYykKK3sKKwlzdHJ1Y3QgaWZuZXQgKmlmcCA9IHNjLT5taWlfcGRh
dGEtPm1paV9pZnA7CisJdWludDE2X3QgcmVnOworCisJbWlpX3BoeV9yZXNldChzYyk7CisKKwkv
KiBjbGVhciBhdXRvbmVnL2Z1bGwtZHVwbGV4IGFzIHdlIGRvbid0IHdhbnQgaXQgYWZ0ZXIgcmVz
ZXQgKi8KKwlQSFlfUkVBRChzYywgTUlJX0JNQ1IsICZyZWcpOworCXJlZyAmPSB+KEJNQ1JfQVVU
T0VOIHwgQk1DUl9GRFgpOworCVBIWV9XUklURShzYywgTUlJX0JNQ1IsIHJlZyk7CisKKwlpZiAo
c2MtPm1paV9tcGRfbW9kZWwgPT0gTUlJX01PREVMX3h4SUNQTFVTX0lQMTAwMEEgJiYKKwkgICAg
c3RyY21wKGlmcC0+aWZfeG5hbWUsICJzdGdlIikgPT0gMCkgeworCQlzdHJ1Y3Qgc3RnZV9zb2Z0
YyAqc3RnZV9zYyA9IGlmcC0+aWZfc29mdGM7CisJCWlmIChzdGdlX3NjLT5zY19yZXYgPj0gMHg0
MCAmJiBzdGdlX3NjLT5zY19yZXYgPD0gMHg0ZSkKKwkJCWlwZ3BoeV9sb2FkX2RzcGNvZGUoc2Mp
OworCX0KK30KZGlmZiAtLWdpdCBhL3N5cy9kZXYvbWlpL2lwZ3BoeXJlZy5oIGIvc3lzL2Rldi9t
aWkvaXBncGh5cmVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNl
ZjE0NWYzNmFkCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2Rldi9taWkvaXBncGh5cmVnLmgKQEAg
LTAsMCArMSw4MyBAQAorLyoJJE9wZW5CU0Q6IGlwZ3BoeXJlZy5oLHYgMS4zIDIwMTUvMDcvMTkg
MDY6Mjg6MTIgeXVvIEV4cCAkCSovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA2LCBQeXVu
IFlvbmdIeWVvbgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAgICAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OiAgICAgICAgICAgICAKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UgdW5tb2RpZmllZCwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMs
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLiAgCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRlZiBfREVWX01JSV9JUEdQ
SFlSRUdfSF8KKyNkZWZpbmUgX0RFVl9NSUlfSVBHUEhZUkVHX0hfCisKKy8qCisgKiBSZWdpc3Rl
cnMgZm9yIHRoZSBJQyBQbHVzIElQR0EgaW50ZXJuYWwgUEhZLgorICovCisKKy8qIFBIWSBzcGVj
aWZpYyBjb250cm9sICYgc3RhdHVzIHJlZ2lzdGVyLiBJUDEwMDEgb25seS4gKi8KKyNkZWZpbmUg
SVBHUEhZX1NDU1IJCQkweDEwCisjZGVmaW5lIElQR1BIWV9TQ1NSX1JYUEhBU0VfU0VMCTB4MDAw
MQorI2RlZmluZSBJUEdQSFlfU0NTUl9UWFBIQVNFX1NFTAkweDAwMDIKKyNkZWZpbmUgSVBHUEhZ
X1NDU1JfUkVQRUFUT1JfTU9ERQkweDAwMDQKKyNkZWZpbmUgSVBHUEhZX1NDU1JfUkVTRVJWRUQx
X0RFRgkweDAwMDgKKyNkZWZpbmUgSVBHUEhZX1NDU1JfUlhDTEtfRFJWX01BU0sJMHgwMDYwCisj
ZGVmaW5lIElQR1BIWV9TQ1NSX1JYQ0xLX0RSVl9ERUYJMHgwMDQwCisjZGVmaW5lIElQR1BIWV9T
Q1NSX1JYRF9EUlZfTUFTSwkweDAxODAKKyNkZWZpbmUgSVBHUEhZX1NDU1JfUlhEX0RSVl9ERUYJ
MHgwMTAwCisjZGVmaW5lIElQR1BIWV9TQ1NSX0pBQkJFUl9FTkIJMHgwMjAwCisjZGVmaW5lIElQ
R1BIWV9TQ1NSX0hFQVJUX0JFQVRfRU5CCTB4MDQwMAorI2RlZmluZSBJUEdQSFlfU0NTUl9ET1dO
U0hJRlRfRU5CCTB4MDgwMAorI2RlZmluZSBJUEdQSFlfU0NTUl9SRVNFUlZFRDJfREVGCTB4MTAw
MAorI2RlZmluZSBJUEdQSFlfU0NTUl9MRURfRFJWXzRNQQkweDAwMDAKKyNkZWZpbmUgSVBHUEhZ
X1NDU1JfTEVEX0RSVl84TUEJMHgyMDAwCisjZGVmaW5lIElQR1BIWV9TQ1NSX0xFRF9NT0RFX01B
U0sJMHhDMDAwCisjZGVmaW5lIElQR1BIWV9TQ1NSX0xFRF9NT0RFX0RFRgkweDAwMDAKKworLyog
UEhZIGxpbmsgc3RhdHVzIHJlZ2lzdGVyLiBJUDEwMDEgb25seS4gKi8KKyNkZWZpbmUgSVBHUEhZ
X0xTUgkJCTB4MTEKKyNkZWZpbmUgSVBHUEhZX0xTUl9KQUJCRVJfREVUCTB4MDIwMAorI2RlZmlu
ZSBJUEdQSFlfTFNSX0FQU19TTEVFUAkJMHgwNDAwCisjZGVmaW5lIElQR1BIWV9MU1JfTURJWAkJ
MHgwODAwCisjZGVmaW5lIElQR1BIWV9MU1JfRlVMTF9EVVBMRVgJMHgxMDAwCisjZGVmaW5lIElQ
R1BIWV9MU1JfU1BFRURfMTAJCTB4MDAwMAorI2RlZmluZSBJUEdQSFlfTFNSX1NQRUVEXzEwMAkJ
MHgyMDAwCisjZGVmaW5lIElQR1BIWV9MU1JfU1BFRURfMTAwMAkweDQwMDAKKyNkZWZpbmUgSVBH
UEhZX0xTUl9TUEVFRF9NQVNLCTB4NjAwMAorI2RlZmluZSBJUEdQSFlfTFNSX0xJTktVUAkJMHg4
MDAwCisKKy8qIFBIWSBzcGVjaWZpYyBjb250cm9sIHJlZ2lzdGVyIDIuIElQMTAwMSBvbmx5LiAq
LworI2RlZmluZSBJUEdQSFlfU0NSCisjZGVmaW5lIElQR1BIWV9TQ1JfU0VXX1JBVEVfTUFTSwkw
eDAwMDMKKyNkZWZpbmUgSVBHUEhZX1NDUl9TRVdfUkFURV9ERUYJMHgwMDAzCisjZGVmaW5lIElQ
R1BIWV9TQ1JfQVVUT19YT1ZFUgkweDAwMDQKKyNkZWZpbmUgSVBHUEhZX1NDUl9TUEVFRF8xMF8x
MDBfRU5CCTB4MDA0MAorI2RlZmluZSBJUEdQSFlfU0NSX0ZJRk9fTEFURU5DWV8yCTB4MDAwMAor
I2RlZmluZSBJUEdQSFlfU0NSX0ZJRk9fTEFURU5DWV8zCTB4MDA4MAorI2RlZmluZSBJUEdQSFlf
U0NSX0ZJRk9fTEFURU5DWV80CTB4MDEwMAorI2RlZmluZSBJUEdQSFlfU0NSX0ZJRk9fTEFURU5D
WV81CTB4MDE4MAorI2RlZmluZSBJUEdQSFlfU0NSX01ESVhfRU5CCQkweDAyMDAKKyNkZWZpbmUg
SVBHUEhZX1NDUl9SRVNFUlZFRF9ERUYJMHgwNDAwCisjZGVmaW5lIElQR1BIWV9TQ1JfQVBTX09O
CQkweDA4MDAKKworI2VuZGlmIC8qIF9ERVZfTUlJX0lQR1BIWVJFR19IXyAqLwpkaWZmIC0tZ2l0
IGEvc3lzL2Rldi9wY2kvaWZfc3RnZS5jIGIvc3lzL2Rldi9wY2kvaWZfc3RnZS5jCmluZGV4IDdj
N2RmY2YzZjZkLi5hNjM1M2MyODdlMyAxMDA2NDQKLS0tIGEvc3lzL2Rldi9wY2kvaWZfc3RnZS5j
CisrKyBiL3N5cy9kZXYvcGNpL2lmX3N0Z2UuYwpAQCAtNzYsMTM1ICs3NiwxMCBAQCBfX0tFUk5F
TF9SQ1NJRCgwLCAiJE5ldEJTRDogaWZfc3RnZS5jLHYgMS43MCAyMDE5LzA3LzA5IDA4OjQ2OjU5
IG1zYWl0b2ggRXhwICQiKQogI2RlZmluZQlTVEdFX1ZMQU5fVU5UQUcJCQkxCiAvKiAjZGVmaW5l
CVNUR0VfVkxBTl9DRkkJCTEgKi8KIAotLyoKLSAqIFRyYW5zbWl0IGRlc2NyaXB0b3IgbGlzdCBz
aXplLgotICovCi0jZGVmaW5lCVNUR0VfTlRYREVTQwkJMjU2Ci0jZGVmaW5lCVNUR0VfTlRYREVT
Q19NQVNLCShTVEdFX05UWERFU0MgLSAxKQotI2RlZmluZQlTVEdFX05FWFRUWCh4KQkJKCgoeCkg
KyAxKSAmIFNUR0VfTlRYREVTQ19NQVNLKQotCi0vKgotICogUmVjZWl2ZSBkZXNjcmlwdG9yIGxp
c3Qgc2l6ZS4KLSAqLwotI2RlZmluZQlTVEdFX05SWERFU0MJCTI1NgotI2RlZmluZQlTVEdFX05S
WERFU0NfTUFTSwkoU1RHRV9OUlhERVNDIC0gMSkKLSNkZWZpbmUJU1RHRV9ORVhUUlgoeCkJCSgo
KHgpICsgMSkgJiBTVEdFX05SWERFU0NfTUFTSykKLQotLyoKLSAqIE9ubHkgaW50ZXJydXB0IGV2
ZXJ5IE4gZnJhbWVzLiAgTXVzdCBiZSBhIHBvd2VyLW9mLXR3by4KLSAqLwotI2RlZmluZQlTVEdF
X1RYSU5UUl9TUEFDSU5HCTE2Ci0jZGVmaW5lCVNUR0VfVFhJTlRSX1NQQUNJTkdfTUFTSyAoU1RH
RV9UWElOVFJfU1BBQ0lORyAtIDEpCi0KLS8qCi0gKiBDb250cm9sIHN0cnVjdHVyZXMgYXJlIERN
QSdkIHRvIHRoZSBUQzkwMjEgY2hpcC4gIFdlIGFsbG9jYXRlIHRoZW0gaW4KLSAqIGEgc2luZ2xl
IGNsdW1wIHRoYXQgbWFwcyB0byBhIHNpbmdsZSBETUEgc2VnbWVudCB0byBtYWtlIHNldmVyYWwg
dGhpbmdzCi0gKiBlYXNpZXIuCi0gKi8KLXN0cnVjdCBzdGdlX2NvbnRyb2xfZGF0YSB7Ci0JLyoK
LQkgKiBUaGUgdHJhbnNtaXQgZGVzY3JpcHRvcnMuCi0JICovCi0Jc3RydWN0IHN0Z2VfdGZkIHNj
ZF90eGRlc2NzW1NUR0VfTlRYREVTQ107Ci0KLQkvKgotCSAqIFRoZSByZWNlaXZlIGRlc2NyaXB0
b3JzLgotCSAqLwotCXN0cnVjdCBzdGdlX3JmZCBzY2RfcnhkZXNjc1tTVEdFX05SWERFU0NdOwot
fTsKLQogI2RlZmluZQlTVEdFX0NET0ZGKHgpCW9mZnNldG9mKHN0cnVjdCBzdGdlX2NvbnRyb2xf
ZGF0YSwgeCkKICNkZWZpbmUJU1RHRV9DRFRYT0ZGKHgpCVNUR0VfQ0RPRkYoc2NkX3R4ZGVzY3Nb
KHgpXSkKICNkZWZpbmUJU1RHRV9DRFJYT0ZGKHgpCVNUR0VfQ0RPRkYoc2NkX3J4ZGVzY3NbKHgp
XSkKIAotLyoKLSAqIFNvZnR3YXJlIHN0YXRlIGZvciB0cmFuc21pdCBhbmQgcmVjZWl2ZSBqb2Jz
LgotICovCi1zdHJ1Y3Qgc3RnZV9kZXNjc29mdCB7Ci0Jc3RydWN0IG1idWYgKmRzX21idWY7CQkv
KiBoZWFkIG9mIG91ciBtYnVmIGNoYWluICovCi0JYnVzX2RtYW1hcF90IGRzX2RtYW1hcDsJCS8q
IG91ciBETUEgbWFwICovCi19OwotCi0vKgotICogU29mdHdhcmUgc3RhdGUgcGVyIGRldmljZS4K
LSAqLwotc3RydWN0IHN0Z2Vfc29mdGMgewotCWRldmljZV90IHNjX2RldjsJCS8qIGdlbmVyaWMg
ZGV2aWNlIGluZm9ybWF0aW9uICovCi0JYnVzX3NwYWNlX3RhZ190IHNjX3N0OwkJLyogYnVzIHNw
YWNlIHRhZyAqLwotCWJ1c19zcGFjZV9oYW5kbGVfdCBzY19zaDsJLyogYnVzIHNwYWNlIGhhbmRs
ZSAqLwotCWJ1c19kbWFfdGFnX3Qgc2NfZG1hdDsJCS8qIGJ1cyBETUEgdGFnICovCi0Jc3RydWN0
IGV0aGVyY29tIHNjX2V0aGVyY29tOwkvKiBldGhlcm5ldCBjb21tb24gZGF0YSAqLwotCWludCBz
Y19yZXY7CQkJLyogc2lsaWNvbiByZXZpc2lvbiAqLwotCi0Jdm9pZCAqc2NfaWg7CQkJLyogaW50
ZXJydXB0IGNvb2tpZSAqLwotCi0Jc3RydWN0IG1paV9kYXRhIHNjX21paTsJCS8qIE1JSS9tZWRp
YSBpbmZvcm1hdGlvbiAqLwotCi0JY2FsbG91dF90IHNjX3RpY2tfY2g7CQkvKiB0aWNrIGNhbGxv
dXQgKi8KLQotCWJ1c19kbWFtYXBfdCBzY19jZGRtYW1hcDsJLyogY29udHJvbCBkYXRhIERNQSBt
YXAgKi8KLSNkZWZpbmUJc2NfY2RkbWEJc2NfY2RkbWFtYXAtPmRtX3NlZ3NbMF0uZHNfYWRkcgot
Ci0JLyoKLQkgKiBTb2Z0d2FyZSBzdGF0ZSBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZGVzY3Jp
cHRvcnMuCi0JICovCi0Jc3RydWN0IHN0Z2VfZGVzY3NvZnQgc2NfdHhzb2Z0W1NUR0VfTlRYREVT
Q107Ci0Jc3RydWN0IHN0Z2VfZGVzY3NvZnQgc2Nfcnhzb2Z0W1NUR0VfTlJYREVTQ107Ci0KLQkv
KgotCSAqIENvbnRyb2wgZGF0YSBzdHJ1Y3R1cmVzLgotCSAqLwotCXN0cnVjdCBzdGdlX2NvbnRy
b2xfZGF0YSAqc2NfY29udHJvbF9kYXRhOwotI2RlZmluZQlzY190eGRlc2NzCXNjX2NvbnRyb2xf
ZGF0YS0+c2NkX3R4ZGVzY3MKLSNkZWZpbmUJc2NfcnhkZXNjcwlzY19jb250cm9sX2RhdGEtPnNj
ZF9yeGRlc2NzCi0KLSNpZmRlZiBTVEdFX0VWRU5UX0NPVU5URVJTCi0JLyoKLQkgKiBFdmVudCBj
b3VudGVycy4KLQkgKi8KLQlzdHJ1Y3QgZXZjbnQgc2NfZXZfdHhzdGFsbDsJLyogVHggc3RhbGxl
ZCAqLwotCXN0cnVjdCBldmNudCBzY19ldl90eGRtYWludHI7CS8qIFR4IERNQSBpbnRlcnJ1cHRz
ICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4aW5kaW50cjsJLyogVHggSW5kaWNhdGUgaW50ZXJy
dXB0cyAqLwotCXN0cnVjdCBldmNudCBzY19ldl9yeGludHI7CS8qIFJ4IGludGVycnVwdHMgKi8K
LQotCXN0cnVjdCBldmNudCBzY19ldl90eHNlZzE7CS8qIFR4IHBhY2tldHMgdy8gMSBzZWdtZW50
ICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnMjsJLyogVHggcGFja2V0cyB3LyAyIHNlZ21l
bnRzICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnMzsJLyogVHggcGFja2V0cyB3LyAzIHNl
Z21lbnRzICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnNDsJLyogVHggcGFja2V0cyB3LyA0
IHNlZ21lbnRzICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnNTsJLyogVHggcGFja2V0cyB3
LyA1IHNlZ21lbnRzICovCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnbW9yZTsJLyogVHggcGFj
a2V0cyB3LyBtb3JlIHRoYW4gNSBzZWdtZW50cyAqLwotCXN0cnVjdCBldmNudCBzY19ldl90eGNv
cHk7CS8qIFR4IHBhY2tldHMgdGhhdCB3ZSBoYWQgdG8gY29weSAqLwotCi0Jc3RydWN0IGV2Y250
IHNjX2V2X3J4aXBzdW07CS8qIElQIGNoZWNrc3VtcyBjaGVja2VkIGluLWJvdW5kICovCi0Jc3Ry
dWN0IGV2Y250IHNjX2V2X3J4dGNwc3VtOwkvKiBUQ1AgY2hlY2tzdW1zIGNoZWNrZWQgaW4tYm91
bmQgKi8KLQlzdHJ1Y3QgZXZjbnQgc2NfZXZfcnh1ZHBzdW07CS8qIFVEUCBjaGVja3N1bXMgY2hl
Y2tlZCBpbi1ib3VuZCAqLwotCi0Jc3RydWN0IGV2Y250IHNjX2V2X3R4aXBzdW07CS8qIElQIGNo
ZWNrc3VtcyBjb21wLiBvdXQtYm91bmQgKi8KLQlzdHJ1Y3QgZXZjbnQgc2NfZXZfdHh0Y3BzdW07
CS8qIFRDUCBjaGVja3N1bXMgY29tcC4gb3V0LWJvdW5kICovCi0Jc3RydWN0IGV2Y250IHNjX2V2
X3R4dWRwc3VtOwkvKiBVRFAgY2hlY2tzdW1zIGNvbXAuIG91dC1ib3VuZCAqLwotI2VuZGlmIC8q
IFNUR0VfRVZFTlRfQ09VTlRFUlMgKi8KLQotCWludAlzY190eHBlbmRpbmc7CQkvKiBudW1iZXIg
b2YgVHggcmVxdWVzdHMgcGVuZGluZyAqLwotCWludAlzY190eGRpcnR5OwkJLyogZmlyc3QgZGly
dHkgVHggZGVzY3JpcHRvciAqLwotCWludAlzY190eGxhc3Q7CQkvKiBsYXN0IHVzZWQgVHggZGVz
Y3JpcHRvciAqLwotCi0JaW50CXNjX3J4cHRyOwkJLyogbmV4dCByZWFkeSBSeCBkZXNjcmlwdG9y
L2Rlc2Nzb2Z0ICovCi0JaW50CXNjX3J4ZGlzY2FyZDsKLQlpbnQJc2NfcnhsZW47Ci0Jc3RydWN0
IG1idWYgKnNjX3J4aGVhZDsKLQlzdHJ1Y3QgbWJ1ZiAqc2Nfcnh0YWlsOwotCXN0cnVjdCBtYnVm
ICoqc2Nfcnh0YWlscDsKLQotCWludAlzY190eHRocmVzaDsJCS8qIFR4IHRocmVzaG9sZCAqLwot
CXVpbnQzMl90IHNjX3VzZWZpYmVyOjE7CQkvKiBpZiB3ZSdyZSBmaWJlciAqLwotCXVpbnQzMl90
IHNjX3N0Z2UxMDIzOjE7CQkvKiBhcmUgd2UgYSAxMDIzICovCi0JdWludDMyX3Qgc2NfRE1BQ3Ry
bDsJCS8qIHByb3RvdHlwZSBETUFDdHJsIHJlZ2lzdGVyICovCi0JdWludDMyX3Qgc2NfTUFDQ3Ry
bDsJCS8qIHByb3RvdHlwZSBNYWNDdHJsIHJlZ2lzdGVyICovCi0JdWludDE2X3Qgc2NfSW50RW5h
YmxlOwkJLyogcHJvdG90eXBlIEludEVuYWJsZSByZWdpc3RlciAqLwotCXVpbnQxNl90IHNjX1Jl
Y2VpdmVNb2RlOwkvKiBwcm90b3R5cGUgUmVjZWl2ZU1vZGUgcmVnaXN0ZXIgKi8KLQl1aW50OF90
IHNjX1BoeUN0cmw7CQkvKiBwcm90b3R5cGUgUGh5Q3RybCByZWdpc3RlciAqLwotfTsKLQogI2Rl
ZmluZQlTVEdFX1JYQ0hBSU5fUkVTRVQoc2MpCQkJCQkJXAogZG8gewkJCQkJCQkJCVwKIAkoc2Mp
LT5zY19yeHRhaWxwID0gJihzYyktPnNjX3J4aGVhZDsJCQkJXApkaWZmIC0tZ2l0IGEvc3lzL2Rl
di9wY2kvaWZfc3RnZXJlZy5oIGIvc3lzL2Rldi9wY2kvaWZfc3RnZXJlZy5oCmluZGV4IGFiYjNj
YjJkOTBjLi5hY2UwOTM1NmI5OCAxMDA2NDQKLS0tIGEvc3lzL2Rldi9wY2kvaWZfc3RnZXJlZy5o
CisrKyBiL3N5cy9kZXYvcGNpL2lmX3N0Z2VyZWcuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpZm5k
ZWYgX0RFVl9QQ0lfSUZfU1RHRVJFR19IXwogI2RlZmluZQlfREVWX1BDSV9JRl9TVEdFUkVHX0hf
CiAKKworI2luY2x1ZGUgPG5ldC9pZl9ldGhlci5oPgorI2luY2x1ZGUgPHN5cy9idXMuaD4KKwog
LyoKICAqIFJlZ2lzdGVyIGRlc2NyaXB0aW9uIGZvciB0aGUgU3VuZGFuY2UgVGVjaC4gVEM5MDIx
IDEwLzEwMC8xMDAwCiAgKiBFdGhlcm5ldCBjb250cm9sbGVyLgpAQCAtNDQ5LDQgKzQ1MywxMjkg
QEAgc3RydWN0IHN0Z2VfcmZkIHsKIAogI2RlZmluZQlTVEdFX0V0aGVyU3RhdHNQa3RzMTAyNHRv
MTUxOE9jdGV0cwkJMHgxNTAKIAorLyoKKyAqIFRyYW5zbWl0IGRlc2NyaXB0b3IgbGlzdCBzaXpl
LgorICovCisjZGVmaW5lCVNUR0VfTlRYREVTQwkJMjU2CisjZGVmaW5lCVNUR0VfTlRYREVTQ19N
QVNLCShTVEdFX05UWERFU0MgLSAxKQorI2RlZmluZQlTVEdFX05FWFRUWCh4KQkJKCgoeCkgKyAx
KSAmIFNUR0VfTlRYREVTQ19NQVNLKQorCisvKgorICogUmVjZWl2ZSBkZXNjcmlwdG9yIGxpc3Qg
c2l6ZS4KKyAqLworI2RlZmluZQlTVEdFX05SWERFU0MJCTI1NgorI2RlZmluZQlTVEdFX05SWERF
U0NfTUFTSwkoU1RHRV9OUlhERVNDIC0gMSkKKyNkZWZpbmUJU1RHRV9ORVhUUlgoeCkJCSgoKHgp
ICsgMSkgJiBTVEdFX05SWERFU0NfTUFTSykKKworLyoKKyAqIE9ubHkgaW50ZXJydXB0IGV2ZXJ5
IE4gZnJhbWVzLiAgTXVzdCBiZSBhIHBvd2VyLW9mLXR3by4KKyAqLworI2RlZmluZQlTVEdFX1RY
SU5UUl9TUEFDSU5HCTE2CisjZGVmaW5lCVNUR0VfVFhJTlRSX1NQQUNJTkdfTUFTSyAoU1RHRV9U
WElOVFJfU1BBQ0lORyAtIDEpCisKKy8qCisgKiBDb250cm9sIHN0cnVjdHVyZXMgYXJlIERNQSdk
IHRvIHRoZSBUQzkwMjEgY2hpcC4gIFdlIGFsbG9jYXRlIHRoZW0gaW4KKyAqIGEgc2luZ2xlIGNs
dW1wIHRoYXQgbWFwcyB0byBhIHNpbmdsZSBETUEgc2VnbWVudCB0byBtYWtlIHNldmVyYWwgdGhp
bmdzCisgKiBlYXNpZXIuCisgKi8KK3N0cnVjdCBzdGdlX2NvbnRyb2xfZGF0YSB7CisJLyoKKwkg
KiBUaGUgdHJhbnNtaXQgZGVzY3JpcHRvcnMuCisJICovCisJc3RydWN0IHN0Z2VfdGZkIHNjZF90
eGRlc2NzW1NUR0VfTlRYREVTQ107CisKKwkvKgorCSAqIFRoZSByZWNlaXZlIGRlc2NyaXB0b3Jz
LgorCSAqLworCXN0cnVjdCBzdGdlX3JmZCBzY2RfcnhkZXNjc1tTVEdFX05SWERFU0NdOworfTsK
KworLyoKKyAqIFNvZnR3YXJlIHN0YXRlIGZvciB0cmFuc21pdCBhbmQgcmVjZWl2ZSBqb2JzLgor
ICovCitzdHJ1Y3Qgc3RnZV9kZXNjc29mdCB7CisJc3RydWN0IG1idWYgKmRzX21idWY7CQkvKiBo
ZWFkIG9mIG91ciBtYnVmIGNoYWluICovCisJYnVzX2RtYW1hcF90IGRzX2RtYW1hcDsJCS8qIG91
ciBETUEgbWFwICovCit9OworCisvKgorICogU29mdHdhcmUgc3RhdGUgcGVyIGRldmljZS4KKyAq
Lworc3RydWN0IHN0Z2Vfc29mdGMgeworCWRldmljZV90IHNjX2RldjsJCS8qIGdlbmVyaWMgZGV2
aWNlIGluZm9ybWF0aW9uICovCisJYnVzX3NwYWNlX3RhZ190IHNjX3N0OwkJLyogYnVzIHNwYWNl
IHRhZyAqLworCWJ1c19zcGFjZV9oYW5kbGVfdCBzY19zaDsJLyogYnVzIHNwYWNlIGhhbmRsZSAq
LworCWJ1c19kbWFfdGFnX3Qgc2NfZG1hdDsJCS8qIGJ1cyBETUEgdGFnICovCisJc3RydWN0IGV0
aGVyY29tIHNjX2V0aGVyY29tOwkvKiBldGhlcm5ldCBjb21tb24gZGF0YSAqLworCWludCBzY19y
ZXY7CQkJLyogc2lsaWNvbiByZXZpc2lvbiAqLworCisJdm9pZCAqc2NfaWg7CQkJLyogaW50ZXJy
dXB0IGNvb2tpZSAqLworCisJc3RydWN0IG1paV9kYXRhIHNjX21paTsJCS8qIE1JSS9tZWRpYSBp
bmZvcm1hdGlvbiAqLworCisJY2FsbG91dF90IHNjX3RpY2tfY2g7CQkvKiB0aWNrIGNhbGxvdXQg
Ki8KKworCWJ1c19kbWFtYXBfdCBzY19jZGRtYW1hcDsJLyogY29udHJvbCBkYXRhIERNQSBtYXAg
Ki8KKyNkZWZpbmUJc2NfY2RkbWEJc2NfY2RkbWFtYXAtPmRtX3NlZ3NbMF0uZHNfYWRkcgorCisJ
LyoKKwkgKiBTb2Z0d2FyZSBzdGF0ZSBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZGVzY3JpcHRv
cnMuCisJICovCisJc3RydWN0IHN0Z2VfZGVzY3NvZnQgc2NfdHhzb2Z0W1NUR0VfTlRYREVTQ107
CisJc3RydWN0IHN0Z2VfZGVzY3NvZnQgc2Nfcnhzb2Z0W1NUR0VfTlJYREVTQ107CisKKwkvKgor
CSAqIENvbnRyb2wgZGF0YSBzdHJ1Y3R1cmVzLgorCSAqLworCXN0cnVjdCBzdGdlX2NvbnRyb2xf
ZGF0YSAqc2NfY29udHJvbF9kYXRhOworI2RlZmluZQlzY190eGRlc2NzCXNjX2NvbnRyb2xfZGF0
YS0+c2NkX3R4ZGVzY3MKKyNkZWZpbmUJc2NfcnhkZXNjcwlzY19jb250cm9sX2RhdGEtPnNjZF9y
eGRlc2NzCisKKyNpZmRlZiBTVEdFX0VWRU5UX0NPVU5URVJTCisJLyoKKwkgKiBFdmVudCBjb3Vu
dGVycy4KKwkgKi8KKwlzdHJ1Y3QgZXZjbnQgc2NfZXZfdHhzdGFsbDsJLyogVHggc3RhbGxlZCAq
LworCXN0cnVjdCBldmNudCBzY19ldl90eGRtYWludHI7CS8qIFR4IERNQSBpbnRlcnJ1cHRzICov
CisJc3RydWN0IGV2Y250IHNjX2V2X3R4aW5kaW50cjsJLyogVHggSW5kaWNhdGUgaW50ZXJydXB0
cyAqLworCXN0cnVjdCBldmNudCBzY19ldl9yeGludHI7CS8qIFJ4IGludGVycnVwdHMgKi8KKwor
CXN0cnVjdCBldmNudCBzY19ldl90eHNlZzE7CS8qIFR4IHBhY2tldHMgdy8gMSBzZWdtZW50ICov
CisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnMjsJLyogVHggcGFja2V0cyB3LyAyIHNlZ21lbnRz
ICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnMzsJLyogVHggcGFja2V0cyB3LyAzIHNlZ21l
bnRzICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnNDsJLyogVHggcGFja2V0cyB3LyA0IHNl
Z21lbnRzICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnNTsJLyogVHggcGFja2V0cyB3LyA1
IHNlZ21lbnRzICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4c2VnbW9yZTsJLyogVHggcGFja2V0
cyB3LyBtb3JlIHRoYW4gNSBzZWdtZW50cyAqLworCXN0cnVjdCBldmNudCBzY19ldl90eGNvcHk7
CS8qIFR4IHBhY2tldHMgdGhhdCB3ZSBoYWQgdG8gY29weSAqLworCisJc3RydWN0IGV2Y250IHNj
X2V2X3J4aXBzdW07CS8qIElQIGNoZWNrc3VtcyBjaGVja2VkIGluLWJvdW5kICovCisJc3RydWN0
IGV2Y250IHNjX2V2X3J4dGNwc3VtOwkvKiBUQ1AgY2hlY2tzdW1zIGNoZWNrZWQgaW4tYm91bmQg
Ki8KKwlzdHJ1Y3QgZXZjbnQgc2NfZXZfcnh1ZHBzdW07CS8qIFVEUCBjaGVja3N1bXMgY2hlY2tl
ZCBpbi1ib3VuZCAqLworCisJc3RydWN0IGV2Y250IHNjX2V2X3R4aXBzdW07CS8qIElQIGNoZWNr
c3VtcyBjb21wLiBvdXQtYm91bmQgKi8KKwlzdHJ1Y3QgZXZjbnQgc2NfZXZfdHh0Y3BzdW07CS8q
IFRDUCBjaGVja3N1bXMgY29tcC4gb3V0LWJvdW5kICovCisJc3RydWN0IGV2Y250IHNjX2V2X3R4
dWRwc3VtOwkvKiBVRFAgY2hlY2tzdW1zIGNvbXAuIG91dC1ib3VuZCAqLworI2VuZGlmIC8qIFNU
R0VfRVZFTlRfQ09VTlRFUlMgKi8KKworCWludAlzY190eHBlbmRpbmc7CQkvKiBudW1iZXIgb2Yg
VHggcmVxdWVzdHMgcGVuZGluZyAqLworCWludAlzY190eGRpcnR5OwkJLyogZmlyc3QgZGlydHkg
VHggZGVzY3JpcHRvciAqLworCWludAlzY190eGxhc3Q7CQkvKiBsYXN0IHVzZWQgVHggZGVzY3Jp
cHRvciAqLworCisJaW50CXNjX3J4cHRyOwkJLyogbmV4dCByZWFkeSBSeCBkZXNjcmlwdG9yL2Rl
c2Nzb2Z0ICovCisJaW50CXNjX3J4ZGlzY2FyZDsKKwlpbnQJc2NfcnhsZW47CisJc3RydWN0IG1i
dWYgKnNjX3J4aGVhZDsKKwlzdHJ1Y3QgbWJ1ZiAqc2Nfcnh0YWlsOworCXN0cnVjdCBtYnVmICoq
c2Nfcnh0YWlscDsKKworCWludAlzY190eHRocmVzaDsJCS8qIFR4IHRocmVzaG9sZCAqLworCXVp
bnQzMl90IHNjX3VzZWZpYmVyOjE7CQkvKiBpZiB3ZSdyZSBmaWJlciAqLworCXVpbnQzMl90IHNj
X3N0Z2UxMDIzOjE7CQkvKiBhcmUgd2UgYSAxMDIzICovCisJdWludDMyX3Qgc2NfRE1BQ3RybDsJ
CS8qIHByb3RvdHlwZSBETUFDdHJsIHJlZ2lzdGVyICovCisJdWludDMyX3Qgc2NfTUFDQ3RybDsJ
CS8qIHByb3RvdHlwZSBNYWNDdHJsIHJlZ2lzdGVyICovCisJdWludDE2X3Qgc2NfSW50RW5hYmxl
OwkJLyogcHJvdG90eXBlIEludEVuYWJsZSByZWdpc3RlciAqLworCXVpbnQxNl90IHNjX1JlY2Vp
dmVNb2RlOwkvKiBwcm90b3R5cGUgUmVjZWl2ZU1vZGUgcmVnaXN0ZXIgKi8KKwl1aW50OF90IHNj
X1BoeUN0cmw7CQkvKiBwcm90b3R5cGUgUGh5Q3RybCByZWdpc3RlciAqLworfTsKKwogI2VuZGlm
IC8qIF9ERVZfUENJX0lGX1NUR0VSRUdfSF8gKi8K
--00000000000081a60e0593a2dbc1--
Home |
Main Index |
Thread Index |
Old Index