NetBSD Problem Report #42314
From www@NetBSD.org Fri Nov 13 21:57:17 2009
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
by www.NetBSD.org (Postfix) with ESMTP id 402D863B8CD
for <gnats-bugs@gnats.netbsd.org>; Fri, 13 Nov 2009 21:57:17 +0000 (UTC)
Message-Id: <20091113215716.E73E963B844@www.NetBSD.org>
Date: Fri, 13 Nov 2009 21:57:16 +0000 (UTC)
From: tharada@oucrc.org
Reply-To: tharada@oucrc.org
To: gnats-bugs@NetBSD.org
Subject: IC Plus IP100x PHY support
X-Send-Pr-Version: www-1.0
>Number: 42314
>Category: kern
>Synopsis: IC Plus IP100x PHY support
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: msaitoh
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Nov 13 22:00:00 +0000 2009
>Closed-Date: Thu Nov 28 04:48:10 +0000 2019
>Last-Modified: Thu Nov 28 04:48:10 +0000 2019
>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/
>Release-Note:
>Audit-Trail:
From: Andrius V <vezhlys@gmail.com>
To: gnats-bugs@netbsd.org
Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
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> 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--
Responsible-Changed-From-To: kern-bug-people->msaitoh
Responsible-Changed-By: msaitoh@NetBSD.org
Responsible-Changed-When: Mon, 09 Sep 2019 07:51:31 +0000
Responsible-Changed-Why:
mine.
From: Andrius V <vezhlys@gmail.com>
To: kern-bug-people@netbsd.org, netbsd-bugs@netbsd.org, tharada@oucrc.org,
msaitoh@netbsd.org, gnats-bugs@netbsd.org, gnats-admin@netbsd.org
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> wrote:
>
> The following reply was made to PR kern/42314; it has been noted by GNATS.
>
> From: Andrius V <vezhlys@gmail.com>
> To: gnats-bugs@netbsd.org
> Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
> 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> 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--
>
From: Andrius V <vezhlys@gmail.com>
To: msaitoh@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,
tharada@oucrc.org, gnats-bugs@netbsd.org
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> wrote:
>
> The following reply was made to PR kern/42314; it has been noted by GNATS.
>
> From: Andrius V <vezhlys@gmail.com>
> To: kern-bug-people@netbsd.org, netbsd-bugs@netbsd.org, tharada@oucrc.org,
> msaitoh@netbsd.org, gnats-bugs@netbsd.org, gnats-admin@netbsd.org
> 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> wrote:
> >
> > The following reply was made to PR kern/42314; it has been noted by GNATS.
> >
> > From: Andrius V <vezhlys@gmail.com>
> > To: gnats-bugs@netbsd.org
> > Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
> > 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> 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--
From: Masanobu SAITOH <msaitoh@execsw.org>
To: Andrius V <vezhlys@gmail.com>, msaitoh@netbsd.org,
gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, tharada@oucrc.org,
gnats-bugs@netbsd.org
Cc: msaitoh@execsw.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Tue, 8 Oct 2019 10:50:33 +0900
On 2019/09/29 5:29, Andrius V wrote:
> 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.
It's merged!
> 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.
Additional patch are also welcomed.
Thanks.
> Regards,
> Andrius V
--
-----------------------------------------------
SAITOH Masanobu (msaitoh@execsw.org
msaitoh@netbsd.org)
From: Andrius V <vezhlys@gmail.com>
To: Masanobu SAITOH <msaitoh@execsw.org>
Cc: msaitoh@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,
tharada@oucrc.org, gnats-bugs@netbsd.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Tue, 8 Oct 2019 18:38:36 +0300
Hi,
> It's merged!
Thank you! Tested, working as expected.
> Additional patch are also welcomed.
Sure, if I will have something.
Regards,
Andrius V
From: Masanobu SAITOH <msaitoh@execsw.org>
To: Andrius V <vezhlys@gmail.com>
Cc: msaitoh@execsw.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tharada@oucrc.org, gnats-bugs@netbsd.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Thu, 14 Nov 2019 18:09:20 +0900
On 2019/10/09 0:38, Andrius V wrote:
> Hi,
>
>> It's merged!
>
> Thank you! Tested, working as expected.
>
>> Additional patch are also welcomed.
>
> Sure, if I will have something.
>
> Regards,
> Andrius V
Could you test with the latest ipgphy.c(rev. 1.4)?
Also please show me the output of the dmesg (both MAC and PHY).
Thanks in advance.
--
-----------------------------------------------
SAITOH Masanobu (msaitoh@execsw.org
msaitoh@netbsd.org)
From: Andrius V <vezhlys@gmail.com>
To: gnats-bugs@netbsd.org
Cc: msaitoh@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,
tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Thu, 14 Nov 2019 11:48:40 +0200
Hi,
Sure, will do sometime today, once the changes will be synced with
fossil/git repos.
On Thu, Nov 14, 2019 at 11:10 AM Masanobu SAITOH <msaitoh@execsw.org> wrote:
>
> The following reply was made to PR kern/42314; it has been noted by GNATS.
>
> From: Masanobu SAITOH <msaitoh@execsw.org>
> To: Andrius V <vezhlys@gmail.com>
> Cc: msaitoh@execsw.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
> netbsd-bugs@netbsd.org, tharada@oucrc.org, gnats-bugs@netbsd.org
> Subject: Re: kern/42314: IC Plus IP100x PHY support
> Date: Thu, 14 Nov 2019 18:09:20 +0900
>
> On 2019/10/09 0:38, Andrius V wrote:
> > Hi,
> >
> >> It's merged!
> >
> > Thank you! Tested, working as expected.
> >
> >> Additional patch are also welcomed.
> >
> > Sure, if I will have something.
> >
> > Regards,
> > Andrius V
>
> Could you test with the latest ipgphy.c(rev. 1.4)?
>
> Also please show me the output of the dmesg (both MAC and PHY).
>
> Thanks in advance.
>
> --
> -----------------------------------------------
> SAITOH Masanobu (msaitoh@execsw.org
> msaitoh@netbsd.org)
>
From: Andrius V <vezhlys@gmail.com>
To: gnats-bugs@netbsd.org
Cc: msaitoh@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,
tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Thu, 14 Nov 2019 19:42:07 +0200
Hi,
Tested, didn't notice any regressions, auto-negotiation configures
1000baseT full-duplex as expected (doesn't matter if on boot or using
"ifconfig vge0 media auto" manually). Setting media type explicitly to
1000baseT selects 100baseTX though (which is an improvement, since it
was completely failing with the original code). From dmesg:
[ 1.050249] vge0 at pci4 dev 0 function 0: VIA VT612X Gigabit
Ethernet (rev. 0x82)
[ 1.050249] vge0: interrupting at ioapic1 pin 12
[ 1.050249] vge0: Ethernet address xx:xx:xx:xx:xx:xx
[ 1.050249] ipgphy0 at vge0 phy 22: IP1001 10/100/1000 PHY, rev. 0
[ 1.050249] 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
1000baseT, 1000baseT-FDX, auto
ifconfig vge0 (auto)
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.10/24 broadcast 192.168.1.255 flags 0x0
inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x1
ifconfig vge0 (1000baseT):
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 1000baseT (100baseTX
full-duplex,flowcontrol,rxpause,txpause)
status: active
inet 192.168.1.10/24 broadcast 192.168.1.255 flags 0x0
inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x1
Regards,
Andrius V
On Thu, Nov 14, 2019 at 11:48 AM Andrius V <vezhlys@gmail.com> wrote:
>
> Hi,
>
> Sure, will do sometime today, once the changes will be synced with
> fossil/git repos.
>
> On Thu, Nov 14, 2019 at 11:10 AM Masanobu SAITOH <msaitoh@execsw.org> wrote:
> >
> > The following reply was made to PR kern/42314; it has been noted by GNATS.
> >
> > From: Masanobu SAITOH <msaitoh@execsw.org>
> > To: Andrius V <vezhlys@gmail.com>
> > Cc: msaitoh@execsw.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
> > netbsd-bugs@netbsd.org, tharada@oucrc.org, gnats-bugs@netbsd.org
> > Subject: Re: kern/42314: IC Plus IP100x PHY support
> > Date: Thu, 14 Nov 2019 18:09:20 +0900
> >
> > On 2019/10/09 0:38, Andrius V wrote:
> > > Hi,
> > >
> > >> It's merged!
> > >
> > > Thank you! Tested, working as expected.
> > >
> > >> Additional patch are also welcomed.
> > >
> > > Sure, if I will have something.
> > >
> > > Regards,
> > > Andrius V
> >
> > Could you test with the latest ipgphy.c(rev. 1.4)?
> >
> > Also please show me the output of the dmesg (both MAC and PHY).
> >
> > Thanks in advance.
> >
> > --
> > -----------------------------------------------
> > SAITOH Masanobu (msaitoh@execsw.org
> > msaitoh@netbsd.org)
> >
From: SAITOH Masanobu <msaitoh@execsw.org>
To: Andrius V <vezhlys@gmail.com>, gnats-bugs@netbsd.org
Cc: msaitoh@execsw.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Mon, 18 Nov 2019 23:46:24 +0900
On 2019/11/15 2:42, Andrius V wrote:
> Hi,
>
> Tested, didn't notice any regressions, auto-negotiation configures
> 1000baseT full-duplex as expected (doesn't matter if on boot or using
> "ifconfig vge0 media auto" manually). Setting media type explicitly to
> 1000baseT selects 100baseTX though (which is an improvement, since it
> was completely failing with the original code).
On my machine, forcing 1000baseT-FDX usually got a link as it is, but
sometimes got a link as 100baseTX-FDX. I suspect it depend on your
cable and/or the link partner. Some PHYs include IP1000A and IP1001
have a feature called downshift. If the PHY detect it can't link 1000baseT,
it downgrade to 100baseT. It can be disabled by clearing IPGPHY_SCSR_DOWNSHIFT_ENB
bit.
> From dmesg:
>
> [ 1.050249] vge0 at pci4 dev 0 function 0: VIA VT612X Gigabit
> Ethernet (rev. 0x82)
> [ 1.050249] vge0: interrupting at ioapic1 pin 12
> [ 1.050249] vge0: Ethernet address xx:xx:xx:xx:xx:xx
> [ 1.050249] ipgphy0 at vge0 phy 22: IP1001 10/100/1000 PHY, rev. 0
> [ 1.050249] 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
> 1000baseT, 1000baseT-FDX, auto
I have the same one (I have both stge+IP1000A and vge+IP1001).
> ifconfig vge0 (auto)
> 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.10/24 broadcast 192.168.1.255 flags 0x0
> inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x1
> ifconfig vge0 (1000baseT):
> 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 1000baseT (100baseTX
> full-duplex,flowcontrol,rxpause,txpause)
> status: active
It seems you set "ifconfig vge0 media 1000baseT" and the resulted link
is 100baseT. It would be good to try ifconfig vge0 media "1000baseT-FDX"
On my environment:
> # ifconfig vge0
> 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: 00:02:2a:e0:4b:a9
> media: Ethernet 1000baseT full-duplex (1000baseT full-duplex,flowcontrol,rxpause,txpause)
> status: active
Thanks.
> inet 192.168.1.10/24 broadcast 192.168.1.255 flags 0x0
> inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x1
>
> Regards,
> Andrius V
>
>
> On Thu, Nov 14, 2019 at 11:48 AM Andrius V <vezhlys@gmail.com> wrote:
>>
>> Hi,
>>
>> Sure, will do sometime today, once the changes will be synced with
>> fossil/git repos.
>>
>> On Thu, Nov 14, 2019 at 11:10 AM Masanobu SAITOH <msaitoh@execsw.org> wrote:
>>>
>>> The following reply was made to PR kern/42314; it has been noted by GNATS.
>>>
>>> From: Masanobu SAITOH <msaitoh@execsw.org>
>>> To: Andrius V <vezhlys@gmail.com>
>>> Cc: msaitoh@execsw.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
>>> netbsd-bugs@netbsd.org, tharada@oucrc.org, gnats-bugs@netbsd.org
>>> Subject: Re: kern/42314: IC Plus IP100x PHY support
>>> Date: Thu, 14 Nov 2019 18:09:20 +0900
>>>
>>> On 2019/10/09 0:38, Andrius V wrote:
>>> > Hi,
>>> >
>>> >> It's merged!
>>> >
>>> > Thank you! Tested, working as expected.
>>> >
>>> >> Additional patch are also welcomed.
>>> >
>>> > Sure, if I will have something.
>>> >
>>> > Regards,
>>> > Andrius V
>>>
>>> Could you test with the latest ipgphy.c(rev. 1.4)?
>>>
>>> Also please show me the output of the dmesg (both MAC and PHY).
>>>
>>> Thanks in advance.
>>>
>>> --
>>> -----------------------------------------------
>>> SAITOH Masanobu (msaitoh@execsw.org
>>> msaitoh@netbsd.org)
>>>
--
-----------------------------------------------
SAITOH Masanobu (msaitoh@execsw.org
msaitoh@netbsd.org)
From: SAITOH Masanobu <msaitoh@execsw.org>
To: Andrius V <vezhlys@gmail.com>, gnats-bugs@netbsd.org
Cc: msaitoh@execsw.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Tue, 19 Nov 2019 00:04:49 +0900
On 2019/11/18 23:46, SAITOH Masanobu wrote:
> On 2019/11/15 2:42, Andrius V wrote:
>> Hi,
>>
>> Tested, didn't notice any regressions, auto-negotiation configures
>> 1000baseT full-duplex as expected (doesn't matter if on boot or using
>> "ifconfig vge0 media auto" manually). Setting media type explicitly to
>> 1000baseT selects 100baseTX though (which is an improvement, since it
>> was completely failing with the original code).
>
> On my machine, forcing 1000baseT-FDX usually got a link as it is, but
> sometimes got a link as 100baseTX-FDX. I suspect it depend on your
> cable and/or the link partner. Some PHYs include IP1000A and IP1001
> have a feature called downshift. If the PHY detect it can't link 1000baseT,
> it downgrade to 100baseT. It can be disabled by clearing IPGPHY_SCSR_DOWNSHIFT_ENB
> bit.
>
>> From dmesg:
>>
>> [ 1.050249] vge0 at pci4 dev 0 function 0: VIA VT612X Gigabit
>> Ethernet (rev. 0x82)
>> [ 1.050249] vge0: interrupting at ioapic1 pin 12
>> [ 1.050249] vge0: Ethernet address xx:xx:xx:xx:xx:xx
>> [ 1.050249] ipgphy0 at vge0 phy 22: IP1001 10/100/1000 PHY, rev. 0
>> [ 1.050249] 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
>> 1000baseT, 1000baseT-FDX, auto
>
> I have the same one (I have both stge+IP1000A and vge+IP1001).
>
>> ifconfig vge0 (auto)
>> 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.10/24 broadcast 192.168.1.255 flags 0x0
>> inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x1
>> ifconfig vge0 (1000baseT):
>> 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 1000baseT (100baseTX
>> full-duplex,flowcontrol,rxpause,txpause)
>> status: active
>
> It seems you set "ifconfig vge0 media 1000baseT" and the resulted link
> is 100baseT. It would be good to try ifconfig vge0 media "1000baseT-FDX"
>
> On my environment:
>> # ifconfig vge0
>> 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: 00:02:2a:e0:4b:a9
>> media: Ethernet 1000baseT full-duplex (1000baseT full-duplex,flowcontrol,rxpause,txpause)
>> status: active
Even though the link was established as 1000baseTX-FDX,
vge0 got watchdog timeout as:
> vge0: soft reset timed outvge0: watchdog timeout
and repeat linkdown -> linkup -> watchdog. I suspect some addition
might be required into if_vge.c. stge0 doesn't have such problem.
> Thanks.
>
>> inet 192.168.1.10/24 broadcast 192.168.1.255 flags 0x0
>> inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x1
>>
>> Regards,
>> Andrius V
>>
>>
>> On Thu, Nov 14, 2019 at 11:48 AM Andrius V <vezhlys@gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> Sure, will do sometime today, once the changes will be synced with
>>> fossil/git repos.
>>>
>>> On Thu, Nov 14, 2019 at 11:10 AM Masanobu SAITOH <msaitoh@execsw.org> wrote:
>>>>
>>>> The following reply was made to PR kern/42314; it has been noted by GNATS.
>>>>
>>>> From: Masanobu SAITOH <msaitoh@execsw.org>
>>>> To: Andrius V <vezhlys@gmail.com>
>>>> Cc: msaitoh@execsw.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
>>>> netbsd-bugs@netbsd.org, tharada@oucrc.org, gnats-bugs@netbsd.org
>>>> Subject: Re: kern/42314: IC Plus IP100x PHY support
>>>> Date: Thu, 14 Nov 2019 18:09:20 +0900
>>>>
>>>> On 2019/10/09 0:38, Andrius V wrote:
>>>> > Hi,
>>>> >
>>>> >> It's merged!
>>>> >
>>>> > Thank you! Tested, working as expected.
>>>> >
>>>> >> Additional patch are also welcomed.
>>>> >
>>>> > Sure, if I will have something.
>>>> >
>>>> > Regards,
>>>> > Andrius V
>>>>
>>>> Could you test with the latest ipgphy.c(rev. 1.4)?
>>>>
>>>> Also please show me the output of the dmesg (both MAC and PHY).
>>>>
>>>> Thanks in advance.
>>>>
>>>> --
>>>> -----------------------------------------------
>>>> SAITOH Masanobu (msaitoh@execsw.org
>>>> msaitoh@netbsd.org)
>>>>
>
>
--
-----------------------------------------------
SAITOH Masanobu (msaitoh@execsw.org
msaitoh@netbsd.org)
From: Andrius V <vezhlys@gmail.com>
To: SAITOH Masanobu <msaitoh@execsw.org>
Cc: gnats-bugs@netbsd.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Mon, 18 Nov 2019 21:23:20 +0200
Hi,
Yes, setting 1000baseT-FDX ends up in watchdog timeout for me too.
On Mon, Nov 18, 2019 at 5:04 PM SAITOH Masanobu <msaitoh@execsw.org> wrote:
>
> On 2019/11/18 23:46, SAITOH Masanobu wrote:
> > On 2019/11/15 2:42, Andrius V wrote:
> >> Hi,
> >>
> >> Tested, didn't notice any regressions, auto-negotiation configures
> >> 1000baseT full-duplex as expected (doesn't matter if on boot or using
> >> "ifconfig vge0 media auto" manually). Setting media type explicitly to
> >> 1000baseT selects 100baseTX though (which is an improvement, since it
> >> was completely failing with the original code).
> >
> > On my machine, forcing 1000baseT-FDX usually got a link as it is, but
> > sometimes got a link as 100baseTX-FDX. I suspect it depend on your
> > cable and/or the link partner. Some PHYs include IP1000A and IP1001
> > have a feature called downshift. If the PHY detect it can't link 1000baseT,
> > it downgrade to 100baseT. It can be disabled by clearing IPGPHY_SCSR_DOWNSHIFT_ENB
> > bit.
> >
> >> From dmesg:
> >>
> >> [ 1.050249] vge0 at pci4 dev 0 function 0: VIA VT612X Gigabit
> >> Ethernet (rev. 0x82)
> >> [ 1.050249] vge0: interrupting at ioapic1 pin 12
> >> [ 1.050249] vge0: Ethernet address xx:xx:xx:xx:xx:xx
> >> [ 1.050249] ipgphy0 at vge0 phy 22: IP1001 10/100/1000 PHY, rev. 0
> >> [ 1.050249] 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
> >> 1000baseT, 1000baseT-FDX, auto
> >
> > I have the same one (I have both stge+IP1000A and vge+IP1001).
> >
> >> ifconfig vge0 (auto)
> >> 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.10/24 broadcast 192.168.1.255 flags 0x0
> >> inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x1
> >> ifconfig vge0 (1000baseT):
> >> 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 1000baseT (100baseTX
> >> full-duplex,flowcontrol,rxpause,txpause)
> >> status: active
> >
> > It seems you set "ifconfig vge0 media 1000baseT" and the resulted link
> > is 100baseT. It would be good to try ifconfig vge0 media "1000baseT-FDX"
> >
> > On my environment:
> >> # ifconfig vge0
> >> 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: 00:02:2a:e0:4b:a9
> >> media: Ethernet 1000baseT full-duplex (1000baseT full-duplex,flowcontrol,rxpause,txpause)
> >> status: active
>
> Even though the link was established as 1000baseTX-FDX,
> vge0 got watchdog timeout as:
> > vge0: soft reset timed outvge0: watchdog timeout
>
> and repeat linkdown -> linkup -> watchdog. I suspect some addition
> might be required into if_vge.c. stge0 doesn't have such problem.
>
>
> > Thanks.
> >
> >> inet 192.168.1.10/24 broadcast 192.168.1.255 flags 0x0
> >> inet6 fe80::8c9e:c8a0:eb4b:731f%vge0/64 flags 0x0 scopeid 0x1
> >>
> >> Regards,
> >> Andrius V
> >>
> >>
> >> On Thu, Nov 14, 2019 at 11:48 AM Andrius V <vezhlys@gmail.com> wrote:
> >>>
> >>> Hi,
> >>>
> >>> Sure, will do sometime today, once the changes will be synced with
> >>> fossil/git repos.
> >>>
> >>> On Thu, Nov 14, 2019 at 11:10 AM Masanobu SAITOH <msaitoh@execsw.org> wrote:
> >>>>
> >>>> The following reply was made to PR kern/42314; it has been noted by GNATS.
> >>>>
> >>>> From: Masanobu SAITOH <msaitoh@execsw.org>
> >>>> To: Andrius V <vezhlys@gmail.com>
> >>>> Cc: msaitoh@execsw.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
> >>>> netbsd-bugs@netbsd.org, tharada@oucrc.org, gnats-bugs@netbsd.org
> >>>> Subject: Re: kern/42314: IC Plus IP100x PHY support
> >>>> Date: Thu, 14 Nov 2019 18:09:20 +0900
> >>>>
> >>>> On 2019/10/09 0:38, Andrius V wrote:
> >>>> > Hi,
> >>>> >
> >>>> >> It's merged!
> >>>> >
> >>>> > Thank you! Tested, working as expected.
> >>>> >
> >>>> >> Additional patch are also welcomed.
> >>>> >
> >>>> > Sure, if I will have something.
> >>>> >
> >>>> > Regards,
> >>>> > Andrius V
> >>>>
> >>>> Could you test with the latest ipgphy.c(rev. 1.4)?
> >>>>
> >>>> Also please show me the output of the dmesg (both MAC and PHY).
> >>>>
> >>>> Thanks in advance.
> >>>>
> >>>> --
> >>>> -----------------------------------------------
> >>>> SAITOH Masanobu (msaitoh@execsw.org
> >>>> msaitoh@netbsd.org)
> >>>>
> >
> >
>
>
> --
> -----------------------------------------------
> SAITOH Masanobu (msaitoh@execsw.org
> msaitoh@netbsd.org)
From: Masanobu SAITOH <msaitoh@execsw.org>
To: Andrius V <vezhlys@gmail.com>
Cc: msaitoh@execsw.org, gnats-bugs@netbsd.org, msaitoh@netbsd.org,
gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Tue, 19 Nov 2019 18:55:52 +0900
On 2019/11/19 4:23, Andrius V wrote:
> Hi,
>
> Yes, setting 1000baseT-FDX ends up in watchdog timeout for me too.
Please try if_vge.c rev. 1.75.
--
-----------------------------------------------
SAITOH Masanobu (msaitoh@execsw.org
msaitoh@netbsd.org)
From: Andrius V <vezhlys@gmail.com>
To: Masanobu SAITOH <msaitoh@execsw.org>
Cc: gnats-bugs@netbsd.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Wed, 20 Nov 2019 08:25:19 +0200
Hi,
With the latest code ifconfig selects media correctly and I don't see
watchdog timeout messages but dhcpcd still fails to get IP address
properly though (assigns 169.254.161.13/16) and network is not working
because of that. Same happens with 1000baseT-FDX and 1000baseT now
(for 1000baseT it is a regression since previous commit). Reselecting
auto or lower media types (100baseT, 10baseT) works correctly and dhcp
reassigns proper the IP address.
On Tue, Nov 19, 2019 at 11:55 AM Masanobu SAITOH <msaitoh@execsw.org> wrote:
>
> On 2019/11/19 4:23, Andrius V wrote:
> > Hi,
> >
> > Yes, setting 1000baseT-FDX ends up in watchdog timeout for me too.
>
> Please try if_vge.c rev. 1.75.
>
> --
> -----------------------------------------------
> SAITOH Masanobu (msaitoh@execsw.org
> msaitoh@netbsd.org)
From: SAITOH Masanobu <msaitoh@execsw.org>
To: Andrius V <vezhlys@gmail.com>
Cc: msaitoh@execsw.org, gnats-bugs@netbsd.org, msaitoh@netbsd.org,
gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Thu, 21 Nov 2019 00:14:35 +0900
On 2019/11/20 15:25, Andrius V wrote:
> Hi,
>
> With the latest code ifconfig selects media correctly and I don't see
> watchdog timeout messages but dhcpcd still fails to get IP address
> properly though (assigns 169.254.161.13/16) and network is not working
> because of that. Same happens with 1000baseT-FDX and 1000baseT now
> (for 1000baseT it is a regression since previous commit). Reselecting
> auto or lower media types (100baseT, 10baseT) works correctly and dhcp
> reassigns proper the IP address.
Could you test the following diff?
- Set duplex correctly when user setting is not IFM_AUTO.
- When the link is up, set VGE_DIAGCTL not from user media setting but from
the current active link status.
Index: if_vge.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/if_vge.c,v
retrieving revision 1.76
diff -u -p -r1.76 if_vge.c
--- if_vge.c 19 Nov 2019 09:54:07 -0000 1.76
+++ if_vge.c 20 Nov 2019 15:08:28 -0000
@@ -1928,33 +1928,34 @@ vge_miibus_statchg(struct ifnet *ifp)
* always implied, so we turn on the forced mode bit but leave
* the FDX bit cleared.
*/
-
dctl = CSR_READ_1(sc, VGE_DIAGCTL);
- switch (IFM_SUBTYPE(ife->ifm_media)) {
- case IFM_AUTO:
+ if (IFM_SUBTYPE(ife->ifm_media) == IFM_AUTO) {
dctl &= ~VGE_DIAGCTL_MACFORCE;
dctl &= ~VGE_DIAGCTL_FDXFORCE;
- break;
- case IFM_1000_T:
- dctl |= VGE_DIAGCTL_MACFORCE;
- dctl &= ~VGE_DIAGCTL_FDXFORCE;
- dctl |= VGE_DIAGCTL_GMII;
- break;
- case IFM_100_TX:
- case IFM_10_T:
+ } else {
+ u_int ifmword;
+
+ /* If the link is up, use the current active media. */
+ if ((mii->mii_media_status & IFM_ACTIVE) != 0)
+ ifmword = mii->mii_media_active;
+ else
+ ifmword = ife->ifm_media;
+
dctl |= VGE_DIAGCTL_MACFORCE;
- dctl &= ~VGE_DIAGCTL_GMII;
- if ((ife->ifm_media & IFM_FDX) != 0)
+ if ((ifmword & IFM_FDX) != 0)
dctl |= VGE_DIAGCTL_FDXFORCE;
else
dctl &= ~VGE_DIAGCTL_FDXFORCE;
- break;
- default:
- printf("%s: unknown media type: %x\n",
- device_xname(sc->sc_dev),
- IFM_SUBTYPE(ife->ifm_media));
- break;
+
+ if (IFM_SUBTYPE(ifmword) == IFM_1000_T) {
+ /*
+ * It means the user setting is not auto and it's
+ * 1000baseT-FDX or 1000baseT.
+ */
+ dctl |= VGE_DIAGCTL_GMII;
+ } else
+ dctl &= ~VGE_DIAGCTL_GMII;
}
CSR_WRITE_1(sc, VGE_DIAGCTL, dctl);
-----------
The same diff is at:
http://www.netbsd.org/~msaitoh/vge-20191120-0.dif
Thanks in advance.
--
-----------------------------------------------
SAITOH Masanobu (msaitoh@execsw.org
msaitoh@netbsd.org)
From: Andrius V <vezhlys@gmail.com>
To: SAITOH Masanobu <msaitoh@execsw.org>
Cc: gnats-bugs@netbsd.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Wed, 20 Nov 2019 21:45:23 +0200
Tested, this patch works well. Changing media type works in all cases
now. Thanks.
On Wed, Nov 20, 2019 at 5:14 PM SAITOH Masanobu <msaitoh@execsw.org> wrote:
>
> On 2019/11/20 15:25, Andrius V wrote:
> > Hi,
> >
> > With the latest code ifconfig selects media correctly and I don't see
> > watchdog timeout messages but dhcpcd still fails to get IP address
> > properly though (assigns 169.254.161.13/16) and network is not working
> > because of that. Same happens with 1000baseT-FDX and 1000baseT now
> > (for 1000baseT it is a regression since previous commit). Reselecting
> > auto or lower media types (100baseT, 10baseT) works correctly and dhcp
> > reassigns proper the IP address.
>
> Could you test the following diff?
> - Set duplex correctly when user setting is not IFM_AUTO.
> - When the link is up, set VGE_DIAGCTL not from user media setting but from
> the current active link status.
>
> Index: if_vge.c
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/pci/if_vge.c,v
> retrieving revision 1.76
> diff -u -p -r1.76 if_vge.c
> --- if_vge.c 19 Nov 2019 09:54:07 -0000 1.76
> +++ if_vge.c 20 Nov 2019 15:08:28 -0000
> @@ -1928,33 +1928,34 @@ vge_miibus_statchg(struct ifnet *ifp)
> * always implied, so we turn on the forced mode bit but leave
> * the FDX bit cleared.
> */
> -
> dctl = CSR_READ_1(sc, VGE_DIAGCTL);
>
> - switch (IFM_SUBTYPE(ife->ifm_media)) {
> - case IFM_AUTO:
> + if (IFM_SUBTYPE(ife->ifm_media) == IFM_AUTO) {
> dctl &= ~VGE_DIAGCTL_MACFORCE;
> dctl &= ~VGE_DIAGCTL_FDXFORCE;
> - break;
> - case IFM_1000_T:
> - dctl |= VGE_DIAGCTL_MACFORCE;
> - dctl &= ~VGE_DIAGCTL_FDXFORCE;
> - dctl |= VGE_DIAGCTL_GMII;
> - break;
> - case IFM_100_TX:
> - case IFM_10_T:
> + } else {
> + u_int ifmword;
> +
> + /* If the link is up, use the current active media. */
> + if ((mii->mii_media_status & IFM_ACTIVE) != 0)
> + ifmword = mii->mii_media_active;
> + else
> + ifmword = ife->ifm_media;
> +
> dctl |= VGE_DIAGCTL_MACFORCE;
> - dctl &= ~VGE_DIAGCTL_GMII;
> - if ((ife->ifm_media & IFM_FDX) != 0)
> + if ((ifmword & IFM_FDX) != 0)
> dctl |= VGE_DIAGCTL_FDXFORCE;
> else
> dctl &= ~VGE_DIAGCTL_FDXFORCE;
> - break;
> - default:
> - printf("%s: unknown media type: %x\n",
> - device_xname(sc->sc_dev),
> - IFM_SUBTYPE(ife->ifm_media));
> - break;
> +
> + if (IFM_SUBTYPE(ifmword) == IFM_1000_T) {
> + /*
> + * It means the user setting is not auto and it's
> + * 1000baseT-FDX or 1000baseT.
> + */
> + dctl |= VGE_DIAGCTL_GMII;
> + } else
> + dctl &= ~VGE_DIAGCTL_GMII;
> }
>
> CSR_WRITE_1(sc, VGE_DIAGCTL, dctl);
> -----------
>
>
>
> The same diff is at:
>
> http://www.netbsd.org/~msaitoh/vge-20191120-0.dif
>
> Thanks in advance.
>
> --
> -----------------------------------------------
> SAITOH Masanobu (msaitoh@execsw.org
> msaitoh@netbsd.org)
From: Andrius V <vezhlys@gmail.com>
To: Masanobu SAITOH <msaitoh@execsw.org>
Cc: gnats-bugs@netbsd.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Wed, 20 Nov 2019 22:46:40 +0200
--000000000000809c8c0597cd473a
Content-Type: text/plain; charset="UTF-8"
Btw, ipgphy.c and ipgphyreg.h doesn't have NetBSD header comment. Probably
should be added too?
On Wed, Nov 20, 2019, 21:45 Andrius V <vezhlys@gmail.com> wrote:
> Tested, this patch works well. Changing media type works in all cases
> now. Thanks.
>
> On Wed, Nov 20, 2019 at 5:14 PM SAITOH Masanobu <msaitoh@execsw.org>
> wrote:
> >
> > On 2019/11/20 15:25, Andrius V wrote:
> > > Hi,
> > >
> > > With the latest code ifconfig selects media correctly and I don't see
> > > watchdog timeout messages but dhcpcd still fails to get IP address
> > > properly though (assigns 169.254.161.13/16) and network is not working
> > > because of that. Same happens with 1000baseT-FDX and 1000baseT now
> > > (for 1000baseT it is a regression since previous commit). Reselecting
> > > auto or lower media types (100baseT, 10baseT) works correctly and dhcp
> > > reassigns proper the IP address.
> >
> > Could you test the following diff?
> > - Set duplex correctly when user setting is not IFM_AUTO.
> > - When the link is up, set VGE_DIAGCTL not from user media setting but
> from
> > the current active link status.
> >
> > Index: if_vge.c
> > ===================================================================
> > RCS file: /cvsroot/src/sys/dev/pci/if_vge.c,v
> > retrieving revision 1.76
> > diff -u -p -r1.76 if_vge.c
> > --- if_vge.c 19 Nov 2019 09:54:07 -0000 1.76
> > +++ if_vge.c 20 Nov 2019 15:08:28 -0000
> > @@ -1928,33 +1928,34 @@ vge_miibus_statchg(struct ifnet *ifp)
> > * always implied, so we turn on the forced mode bit but leave
> > * the FDX bit cleared.
> > */
> > -
> > dctl = CSR_READ_1(sc, VGE_DIAGCTL);
> >
> > - switch (IFM_SUBTYPE(ife->ifm_media)) {
> > - case IFM_AUTO:
> > + if (IFM_SUBTYPE(ife->ifm_media) == IFM_AUTO) {
> > dctl &= ~VGE_DIAGCTL_MACFORCE;
> > dctl &= ~VGE_DIAGCTL_FDXFORCE;
> > - break;
> > - case IFM_1000_T:
> > - dctl |= VGE_DIAGCTL_MACFORCE;
> > - dctl &= ~VGE_DIAGCTL_FDXFORCE;
> > - dctl |= VGE_DIAGCTL_GMII;
> > - break;
> > - case IFM_100_TX:
> > - case IFM_10_T:
> > + } else {
> > + u_int ifmword;
> > +
> > + /* If the link is up, use the current active media. */
> > + if ((mii->mii_media_status & IFM_ACTIVE) != 0)
> > + ifmword = mii->mii_media_active;
> > + else
> > + ifmword = ife->ifm_media;
> > +
> > dctl |= VGE_DIAGCTL_MACFORCE;
> > - dctl &= ~VGE_DIAGCTL_GMII;
> > - if ((ife->ifm_media & IFM_FDX) != 0)
> > + if ((ifmword & IFM_FDX) != 0)
> > dctl |= VGE_DIAGCTL_FDXFORCE;
> > else
> > dctl &= ~VGE_DIAGCTL_FDXFORCE;
> > - break;
> > - default:
> > - printf("%s: unknown media type: %x\n",
> > - device_xname(sc->sc_dev),
> > - IFM_SUBTYPE(ife->ifm_media));
> > - break;
> > +
> > + if (IFM_SUBTYPE(ifmword) == IFM_1000_T) {
> > + /*
> > + * It means the user setting is not auto and it's
> > + * 1000baseT-FDX or 1000baseT.
> > + */
> > + dctl |= VGE_DIAGCTL_GMII;
> > + } else
> > + dctl &= ~VGE_DIAGCTL_GMII;
> > }
> >
> > CSR_WRITE_1(sc, VGE_DIAGCTL, dctl);
> > -----------
> >
> >
> >
> > The same diff is at:
> >
> > http://www.netbsd.org/~msaitoh/vge-20191120-0.dif
> >
> > Thanks in advance.
> >
> > --
> > -----------------------------------------------
> > SAITOH Masanobu (msaitoh@execsw.org
> > msaitoh@netbsd.org)
>
--000000000000809c8c0597cd473a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto">Btw, ipgphy.c and ipgphyreg.h doesn't have NetBSD hea=
der comment. Probably should be added too?</div><br><div class=3D"gmail_quo=
te"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Nov 20, 2019, 21:45 Andri=
us V <<a href=3D"mailto:vezhlys@gmail.com">vezhlys@gmail.com</a>> wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;b=
order-left:1px #ccc solid;padding-left:1ex">Tested, this patch works well. =
Changing media type works in all cases<br>
now. Thanks.<br>
<br>
On Wed, Nov 20, 2019 at 5:14 PM SAITOH Masanobu <<a href=3D"mailto:msait=
oh@execsw.org" target=3D"_blank" rel=3D"noreferrer">msaitoh@execsw.org</a>&=
gt; wrote:<br>
><br>
> On 2019/11/20 15:25, Andrius V wrote:<br>
> > Hi,<br>
> ><br>
> > With the latest code ifconfig selects media correctly and I don&#=
39;t see<br>
> > watchdog timeout messages but dhcpcd still fails to get IP addres=
s<br>
> > properly though (assigns <a href=3D"http://169.254.161.13/16" rel=
=3D"noreferrer noreferrer" target=3D"_blank">169.254.161.13/16</a>) and net=
work is not working<br>
> > because of that. Same happens with 1000baseT-FDX and 1000baseT no=
w<br>
> > (for 1000baseT it is a regression since previous commit). Reselec=
ting<br>
> > auto or lower media types (100baseT, 10baseT) works correctly and=
dhcp<br>
> > reassigns proper the IP address.<br>
><br>
> Could you test the following diff?<br>
> - Set duplex correctly when user setting is not IFM_AUTO.<br>
> - When the link is up, set VGE_DIAGCTL not from user media setting but=
from<br>
>=C2=A0 =C2=A0the current active link status.<br>
><br>
> Index: if_vge.c<br>
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
> RCS file: /cvsroot/src/sys/dev/pci/if_vge.c,v<br>
> retrieving revision 1.76<br>
> diff -u -p -r1.76 if_vge.c<br>
> --- if_vge.c=C2=A0 =C2=A0 19 Nov 2019 09:54:07 -0000=C2=A0 =C2=A0 =C2=
=A0 1.76<br>
> +++ if_vge.c=C2=A0 =C2=A0 20 Nov 2019 15:08:28 -0000<br>
> @@ -1928,33 +1928,34 @@ vge_miibus_statchg(struct ifnet *ifp)<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * always implied, so we turn on the =
forced mode bit but leave<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * the FDX bit cleared.<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 */<br>
> -<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dctl =3D CSR_READ_1(sc, VGE_DIAGCTL);=
<br>
><br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0switch (IFM_SUBTYPE(ife->ifm_media)) {<=
br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0case IFM_AUTO:<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0if (IFM_SUBTYPE(ife->ifm_media) =3D=3D =
IFM_AUTO) {<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dctl &=
;=3D ~VGE_DIAGCTL_MACFORCE;<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dctl &=
;=3D ~VGE_DIAGCTL_FDXFORCE;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0case IFM_1000_T:<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dctl |=3D VGE_=
DIAGCTL_MACFORCE;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dctl &=3D =
~VGE_DIAGCTL_FDXFORCE;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dctl |=3D VGE_=
DIAGCTL_GMII;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0case IFM_100_TX:<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0case IFM_10_T:<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0u_int ifmword;=
<br>
> +<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* If the link=
is up, use the current active media. */<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((mii->m=
ii_media_status & IFM_ACTIVE) !=3D 0)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0ifmword =3D mii->mii_media_active;<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0ifmword =3D ife->ifm_media;<br>
> +<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dctl |=3D=
VGE_DIAGCTL_MACFORCE;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dctl &=3D =
~VGE_DIAGCTL_GMII;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((ife->i=
fm_media & IFM_FDX) !=3D 0)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((ifmword &=
amp; IFM_FDX) !=3D 0)<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0dctl |=3D VGE_DIAGCTL_FDXFORCE;<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0dctl &=3D ~VGE_DIAGCTL_FDXFORCE;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0default:<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0printf("%=
s: unknown media type: %x\n",<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
device_xname(sc->sc_dev),<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
IFM_SUBTYPE(ife->ifm_media));<br>
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>
> +<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (IFM_SUBTYP=
E(ifmword) =3D=3D IFM_1000_T) {<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0/*<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 * It means the user setting is not auto and it's<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 * 1000baseT-FDX or 1000baseT.<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 */<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0dctl |=3D VGE_DIAGCTL_GMII;<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} else<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0dctl &=3D ~VGE_DIAGCTL_GMII;<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>
><br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CSR_WRITE_1(sc, VGE_DIAGCTL, dctl);<b=
r>
> -----------<br>
><br>
><br>
><br>
> The same diff is at:<br>
><br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<a href=3D"http://www.netbsd.org/~msa=
itoh/vge-20191120-0.dif" rel=3D"noreferrer noreferrer" target=3D"_blank">ht=
tp://www.netbsd.org/~msaitoh/vge-20191120-0.dif</a><br>
><br>
> Thanks in advance.<br>
><br>
> --<br>
> -----------------------------------------------<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0SAITOH Ma=
sanobu (<a href=3D"mailto:msaitoh@execsw.org" target=3D"_blank" rel=3D"nore=
ferrer">msaitoh@execsw.org</a><br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <a href=3D"mailto:msaitoh@=
netbsd.org" target=3D"_blank" rel=3D"noreferrer">msaitoh@netbsd.org</a>)<br=
>
</blockquote></div>
--000000000000809c8c0597cd473a--
From: Masanobu SAITOH <msaitoh@execsw.org>
To: Andrius V <vezhlys@gmail.com>
Cc: msaitoh@execsw.org, gnats-bugs@netbsd.org, msaitoh@netbsd.org,
gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Thu, 21 Nov 2019 13:37:14 +0900
On 2019/11/21 5:46, Andrius V wrote:
> Btw, ipgphy.c and ipgphyreg.h doesn't have NetBSD header comment. Probably should be added too?
Done.
> On Wed, Nov 20, 2019, 21:45 Andrius V <vezhlys@gmail.com <mailto:vezhlys@gmail.com>> wrote:
>
> Tested, this patch works well. Changing media type works in all cases
> now. Thanks.
Done.
Thank you for your cooperation!
--
-----------------------------------------------
SAITOH Masanobu (msaitoh@execsw.org
msaitoh@netbsd.org)
From: Andrius V <vezhlys@gmail.com>
To: Masanobu SAITOH <msaitoh@execsw.org>
Cc: gnats-bugs@netbsd.org, msaitoh@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, tharada@oucrc.org
Subject: Re: kern/42314: IC Plus IP100x PHY support
Date: Thu, 28 Nov 2019 01:41:34 +0200
Hi,
Should you close the ticket? It is still in open state. Thank you for
pull up to netbsd-9!
On Thu, Nov 21, 2019 at 6:37 AM Masanobu SAITOH <msaitoh@execsw.org> wrote:
>
> On 2019/11/21 5:46, Andrius V wrote:
> > Btw, ipgphy.c and ipgphyreg.h doesn't have NetBSD header comment. Probably should be added too?
>
> Done.
>
> > On Wed, Nov 20, 2019, 21:45 Andrius V <vezhlys@gmail.com <mailto:vezhlys@gmail.com>> wrote:
> >
> > Tested, this patch works well. Changing media type works in all cases
> > now. Thanks.
>
> Done.
>
> Thank you for your cooperation!
>
> --
> -----------------------------------------------
> SAITOH Masanobu (msaitoh@execsw.org
> msaitoh@netbsd.org)
State-Changed-From-To: open->closed
State-Changed-By: msaitoh@NetBSD.org
State-Changed-When: Thu, 28 Nov 2019 04:48:10 +0000
State-Changed-Why:
NetBSD 9.0 supports ipgphy(4).
Thanks.
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.45 2018/12/21 14:23:33 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.