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: 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--
 >
 


Home | Main Index | Thread Index | Old Index