Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Aug 2016 13:48:00 -0700
From:      "Lundberg, Johannes" <johannes@brilliantservice.co.jp>
To:        =?UTF-8?Q?Jan_Kokem=C3=BCller?= <jan.kokemueller@gmail.com>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: Wayland work status
Message-ID:  <CAASDrVm9XaMcMytkN4jjr23bC73fCjFjddbQmnH%2BRq=1e83nOw@mail.gmail.com>
In-Reply-To: <ff4191ac-a1a7-3b56-742e-045d8ac72cfd@gmail.com>
References:  <CAASDrVmDT=qEE7c5EU7nCntoipkP3CNfvEWCtRWVG_sF8rKiPg@mail.gmail.com> <1df3c73a-dab3-d688-c56a-ed7c4361a9bf@gmail.com> <CAASDrVkE3y0L-cRQV46Q890XZRB4Ma5nUNz0WDvgiG5nymdwpw@mail.gmail.com> <ff4191ac-a1a7-3b56-742e-045d8ac72cfd@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--94eb2c18f43c69faca0539e600da
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi

I followed the instructions for evdev enabled kernel here
https://github.com/wulf7/libudev-devd and it works fine!
I needed to update libinput to latest version since it was required by
xf86-input-libinput so I'm using latest version from
https://github.com/jiixyj/libinput.

As for the wsp driver I've simply added REL_HWHEEL to get x/y scrolling and
changed the back/forward events to x axis scrolling. See the attached
patch.  It's still really simple but adds a bit more functionality compared
to what is allowed by the old mouse protocol. Of course, if you want
advanced multi-touch gestures, it's need to be rewritten a lot. Although, I
don't know how many X apps actually support this so maybe it's a lot of
work for nothing...

I also needed to change the order of horizontal scroll wheel and buttons
with
xinput set-button-map 6  3 2 1 4 5 7 6 =E2=80=8B

=E2=80=8BI think wsp already puts out vertical scroll in opposite direction=
 by
default. =E2=80=8B

=E2=80=8BI'm using xfce4 as desktop environment.=E2=80=8B


On Fri, Aug 12, 2016 at 1:12 PM, Jan Kokem=C3=BCller <jan.kokemueller@gmail=
.com>
wrote:

> Hi,
>
> On 12.08.16 19:22, Lundberg, Johannes wrote:
>
>> =E2=80=8BWhere can I find xf86-input-libinput for FreeBSD? Will the orig=
inal
>> source build?
>>
>
> Yes, the original source (https://cgit.freedesktop.org/
> xorg/driver/xf86-input-libinput/) will build unmodified.
>
> I've copied libinput_drv.so to /usr/local/lib/xorg/modules/input/libinput=
_drv.so
> and installed "99-libinput.conf" into /usr/local/etc/X11/xorg.conf.d so
> that X will use libinput for the /dev/input/event* devices by default and
> not xf86-input-evdev or -synaptics.
>
> Libinput has pretty advanced multitouch scrolling and gesture support tha=
t
> relies on evdev multitouch packets (https://www.kernel.org/doc/Do
> cumentation/input/multi-touch-protocol.txt). Are you already sending
> these packets, or are you sending relative (EV_REL) packets? Looking at t=
he
> wmt driver in the wulf7/evdev branch sending EV_ABS packets does not seem
> too hard for USB based touchpads.
>
> It is probably easiest to boot Linux, dump all evdev packets from the
> touchpad with the libevdev-events tool from libevdev, and then try to
> emulate that output with the wsp driver.
>
> For testing smooth scrolling, gtk3-demo is pretty good; or recent version=
s
> of Firefox with the MOZ_USE_XINPUT2 environment variable set to 1.
>
> -Jan
>

--=20
=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-
=E7=A7=98=E5=AF=86=E4=BF=9D=E6=8C=81=E3=81=AB=E3=81=A4=E3=81=84=E3=81=A6=EF=
=BC=9A=E3=81=93=E3=81=AE=E9=9B=BB=E5=AD=90=E3=83=A1=E3=83=BC=E3=83=AB=E3=81=
=AF=E3=80=81=E5=90=8D=E5=AE=9B=E4=BA=BA=E3=81=AB=E9=80=81=E4=BF=A1=E3=81=97=
=E3=81=9F=E3=82=82=E3=81=AE=E3=81=A7=E3=81=82=E3=82=8A=E3=80=81=E7=A7=98=E5=
=8C=BF=E7=89=B9=E6=A8=A9=E3=81=AE=E5=AF=BE=E8=B1=A1=E3=81=A8=E3=81=AA=E3=82=
=8B=E6=83=85=E5=A0=B1=E3=82=92=E5=90=AB=E3=82=93=E3=81=A7=E3=81=84=E3=81=BE=
=E3=81=99=E3=80=82
=E3=82=82=E3=81=97=E3=80=81=E5=90=8D=E5=AE=9B=E4=BA=BA=E4=BB=A5=E5=A4=96=E3=
=81=AE=E6=96=B9=E3=81=8C=E5=8F=97=E4=BF=A1=E3=81=95=E3=82=8C=E3=81=9F=E5=A0=
=B4=E5=90=88=E3=80=81=E3=81=93=E3=81=AE=E3=83=A1=E3=83=BC=E3=83=AB=E3=81=AE=
=E7=A0=B4=E6=A3=84=E3=80=81=E3=81=8A=E3=82=88=E3=81=B3=E3=81=93=E3=81=AE=E3=
=83=A1=E3=83=BC=E3=83=AB=E3=81=AB=E9=96=A2=E3=81=99=E3=82=8B=E4=B8=80=E5=88=
=87=E3=81=AE=E9=96=8B=E7=A4=BA=E3=80=81
=E8=A4=87=E5=86=99=E3=80=81=E9=85=8D=E5=B8=83=E3=80=81=E3=81=9D=E3=81=AE=E4=
=BB=96=E3=81=AE=E5=88=A9=E7=94=A8=E3=80=81=E3=81=BE=E3=81=9F=E3=81=AF=E8=A8=
=98=E8=BC=89=E5=86=85=E5=AE=B9=E3=81=AB=E5=9F=BA=E3=81=A5=E3=81=8F=E3=81=84=
=E3=81=8B=E3=81=AA=E3=82=8B=E8=A1=8C=E5=8B=95=E3=82=82=E3=81=95=E3=82=8C=E3=
=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=8A=E9=A1=98=E3=81=84=E7=94=B3=E3=81=
=97=E4=B8=8A=E3=81=92=E3=81=BE=E3=81=99=E3=80=82
---
CONFIDENTIALITY NOTE: The information in this email is confidential
and intended solely for the addressee.
Disclosure, copying, distribution or any other action of use of this
email by person other than intended recipient, is prohibited.
If you are not the intended recipient and have received this email in
error, please destroy the original message.

--94eb2c18f43c69faca0539e600da
Content-Type: text/plain; charset=US-ASCII; name="wsp.c.diff"
Content-Disposition: attachment; filename="wsp.c.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_irs7ty5f0

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvdXNiL2lucHV0L3dzcC5jIGIvc3lzL2Rldi91c2IvaW5wdXQv
d3NwLmMKaW5kZXggNjk0ZTBkOS4uMjFjYzUxOCAxMDA2NDQKLS0tIGEvc3lzL2Rldi91c2IvaW5w
dXQvd3NwLmMKKysrIGIvc3lzL2Rldi91c2IvaW5wdXQvd3NwLmMKQEAgLTI3LDYgKzI3LDggQEAK
ICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKIAorI2luY2x1
ZGUgIm9wdF9ldmRldi5oIgorCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lz
L3N5c3RtLmg+CiAjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgpAQCAtNTQsNiArNTYsMTEgQEAgX19G
QlNESUQoIiRGcmVlQlNEJCIpOwogCiAjaW5jbHVkZSA8c3lzL21vdXNlLmg+CiAKKyNpZmRlZiBF
VkRFVgorI2luY2x1ZGUgPGRldi9ldmRldi9pbnB1dC5oPgorI2luY2x1ZGUgPGRldi9ldmRldi9l
dmRldi5oPgorI2VuZGlmCisKICNkZWZpbmUJV1NQX0RSSVZFUl9OQU1FICJ3c3AiCiAjZGVmaW5l
CVdTUF9CVUZGRVJfTUFYCTEwMjQKIApAQCAtODMsNiArOTAsNyBAQCBTWVNDVExfSU5UKF9od191
c2Jfd3NwLCBPSURfQVVUTywgZGVidWcsIENUTEZMQUdfUldUVU4sCiBzdGF0aWMgc3RydWN0IHdz
cF90dW5pbmcgewogCWludAlzY2FsZV9mYWN0b3I7CiAJaW50CXpfZmFjdG9yOworCWludAl0X2Zh
Y3RvcjsKIAlpbnQJcHJlc3N1cmVfdG91Y2hfdGhyZXNob2xkOwogCWludAlwcmVzc3VyZV91bnRv
dWNoX3RocmVzaG9sZDsKIAlpbnQJcHJlc3N1cmVfdGFwX3RocmVzaG9sZDsKQEAgLTkyLDYgKzEw
MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgd3NwX3R1bmluZyB7CiB7CiAJLnNjYWxlX2ZhY3RvciA9IDEy
LAogCS56X2ZhY3RvciA9IDUsCisJLnRfZmFjdG9yID0gNSwKIAkucHJlc3N1cmVfdG91Y2hfdGhy
ZXNob2xkID0gNTAsCiAJLnByZXNzdXJlX3VudG91Y2hfdGhyZXNob2xkID0gMTAsCiAJLnByZXNz
dXJlX3RhcF90aHJlc2hvbGQgPSAxMjAsCkBAIC0xMTMsNiArMTIyLDggQEAgU1lTQ1RMX0lOVChf
aHdfdXNiX3dzcCwgT0lEX0FVVE8sIHNjYWxlX2ZhY3RvciwgQ1RMRkxBR19SV1RVTiwKICAgICAm
d3NwX3R1bmluZy5zY2FsZV9mYWN0b3IsIDAsICJtb3ZlbWVudCBzY2FsZSBmYWN0b3IiKTsKIFNZ
U0NUTF9JTlQoX2h3X3VzYl93c3AsIE9JRF9BVVRPLCB6X2ZhY3RvciwgQ1RMRkxBR19SV1RVTiwK
ICAgICAmd3NwX3R1bmluZy56X2ZhY3RvciwgMCwgIlotYXhpcyBzY2FsZSBmYWN0b3IiKTsKK1NZ
U0NUTF9JTlQoX2h3X3VzYl93c3AsIE9JRF9BVVRPLCB0X2ZhY3RvciwgQ1RMRkxBR19SV1RVTiwK
KyAgICAmd3NwX3R1bmluZy50X2ZhY3RvciwgMCwgIlQtYXhpcyBzY2FsZSBmYWN0b3IiKTsKIFNZ
U0NUTF9JTlQoX2h3X3VzYl93c3AsIE9JRF9BVVRPLCBwcmVzc3VyZV90b3VjaF90aHJlc2hvbGQs
IENUTEZMQUdfUldUVU4sCiAgICAgJndzcF90dW5pbmcucHJlc3N1cmVfdG91Y2hfdGhyZXNob2xk
LCAwLCAidG91Y2ggcHJlc3N1cmUgdGhyZXNob2xkIik7CiBTWVNDVExfSU5UKF9od191c2Jfd3Nw
LCBPSURfQVVUTywgcHJlc3N1cmVfdW50b3VjaF90aHJlc2hvbGQsIENUTEZMQUdfUldUVU4sCkBA
IC01NDEsNyArNTUyLDEyIEBAIHN0cnVjdCB3c3Bfc29mdGMgewogCXVfaW50CXNjX3BvbGxyYXRl
OwogCW1vdXNlc3RhdHVzX3Qgc2Nfc3RhdHVzOwogCXVfaW50CXNjX3N0YXRlOworCXVfaW50CXNj
X2ZmbGFnczsKICNkZWZpbmUJV1NQX0VOQUJMRUQJICAgICAgIDB4MDEKKyNpZmRlZiBFVkRFVgor
CWludCBzY19ldmZsYWdzOworI2RlZmluZQlXU1BfRVZERVZfT1BFTkVECTEKKyNlbmRpZgogCiAJ
c3RydWN0IHRwX2ZpbmdlciAqaW5kZXhbTUFYX0ZJTkdFUlNdOwkvKiBmaW5nZXIgaW5kZXggZGF0
YSAqLwogCWludDE2X3QJcG9zX3hbTUFYX0ZJTkdFUlNdOwkvKiBwb3NpdGlvbiBhcnJheSAqLwpA
QCAtNTU5LDkgKzU3NSwxMiBAQCBzdHJ1Y3Qgd3NwX3NvZnRjIHsKIAlpbnQJZHpfY291bnQ7CiAj
ZGVmaW5lCVdTUF9EWl9NQVhfQ09VTlQJMzIKIAlpbnQJZHRfc3VtOwkJCS8qIFQtYXhpcyBjdW11
bGF0aXZlIG1vdmVtZW50ICovCisJaW50CWR0X2NvdW50OworI2RlZmluZQlXU1BfRFRfTUFYX0NP
VU5UCTMyCiAJaW50CXJkeDsJCQkvKiB4IGF4aXMgcmVtYWluZGVyIG9mIGRpdmlkZSBieSBzY2Fs
ZV9mYWN0b3IgKi8KIAlpbnQJcmR5OwkJCS8qIHkgYXhpcyByZW1haW5kZXIgb2YgZGl2aWRlIGJ5
IHNjYWxlX2ZhY3RvciAqLwogCWludAlyZHo7CQkJLyogeiBheGlzIHJlbWFpbmRlciBvZiBkaXZp
ZGUgYnkgc2NhbGVfZmFjdG9yICovCisJaW50CXJkdDsJCQkvKiB0IGF4aXMgcmVtYWluZGVyIG9m
IGRpdmlkZSBieSBzY2FsZV9mYWN0b3IgKi8KIAlpbnQJdHBfZGF0YWxlbjsKIAl1aW50OF90IG9f
bnRvdWNoOwkJLyogb2xkIHRvdWNoIGZpbmdlciBzdGF0dXMgKi8KIAl1aW50OF90CWZpbmdlcjsJ
CQkvKiAwIG9yIDEgKiwgY2hlY2sgd2hpY2ggZmluZ2VyIG1vdmluZyAqLwpAQCAtNTcyLDExICs1
OTEsMTUgQEAgc3RydWN0IHdzcF9zb2Z0YyB7CiAjZGVmaW5lCU1BWF9ESVNUQU5DRQkJMjUwMAkv
KiB0aGUgbWF4IGFsbG93ZWQgZGlzdGFuY2UgKi8KIAl1aW50OF90CWlidG47CQkJLyogYnV0dG9u
IHN0YXR1cyBpbiB0YXBwaW5nICovCiAJdWludDhfdAludGFwczsJCQkvKiBmaW5nZXIgc3RhdHVz
IGluIHRhcHBpbmcgKi8KLQl1aW50OF90CXNjcl9tb2RlOwkJLyogc2Nyb2xsIHN0YXR1cyBpbiBt
b3ZlbWVudCAqLwotI2RlZmluZQlXU1BfU0NSX05PTkUJCTAKLSNkZWZpbmUJV1NQX1NDUl9WRVIJ
CTEKLSNkZWZpbmUJV1NQX1NDUl9IT1IJCTIKKwl1aW50OF90CXNjcm9sbF9tb2RlOwkJLyogc2Ny
b2xsIHN0YXR1cyBpbiBtb3ZlbWVudCAqLworI2RlZmluZQlXU1BfU0NST0xMX05PTkUJCTAKKyNk
ZWZpbmUJV1NQX1NDUk9MTF9WRVIJCTEKKyNkZWZpbmUJV1NQX1NDUk9MTF9IT1IJCTIKIAl1aW50
OF90IHRwX2RhdGFbV1NQX0JVRkZFUl9NQVhdIF9fYWxpZ25lZCg0KTsJCS8qIHRyYWNrcGFkIHRy
YW5zZmVycmVkIGRhdGEgKi8KKworI2lmZGVmIEVWREVWCisJc3RydWN0IGV2ZGV2X2RldiAqc2Nf
ZXZkZXY7CisjZW5kaWYKIH07CiAKIC8qCkBAIC01ODgsNiArNjExLDE0IEBAIHN0YXRpYyB1c2Jf
Zmlmb19vcGVuX3Qgd3NwX29wZW47CiBzdGF0aWMgdXNiX2ZpZm9fY2xvc2VfdCB3c3BfY2xvc2U7
CiBzdGF0aWMgdXNiX2ZpZm9faW9jdGxfdCB3c3BfaW9jdGw7CiAKK3N0YXRpYyB2b2lkIHdzcF9z
dGFydF9yeChzdHJ1Y3Qgd3NwX3NvZnRjICpzYyk7CitzdGF0aWMgdm9pZCB3c3Bfc3RvcF9yeChz
dHJ1Y3Qgd3NwX3NvZnRjICpzYyk7CisKKyNpZmRlZiBFVkRFVgorc3RhdGljIGV2ZGV2X29wZW5f
dCB3c3BfZXZfb3BlbjsKK3N0YXRpYyBldmRldl9jbG9zZV90IHdzcF9ldl9jbG9zZTsKKyNlbmRp
ZgorCiBzdGF0aWMgc3RydWN0IHVzYl9maWZvX21ldGhvZHMgd3NwX2ZpZm9fbWV0aG9kcyA9IHsK
IAkuZl9vcGVuID0gJndzcF9vcGVuLAogCS5mX2Nsb3NlID0gJndzcF9jbG9zZSwKQEAgLTU5Nywx
MyArNjI4LDIwIEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX2ZpZm9fbWV0aG9kcyB3c3BfZmlmb19tZXRo
b2RzID0gewogCS5iYXNlbmFtZVswXSA9IFdTUF9EUklWRVJfTkFNRSwKIH07CiAKKyNpZmRlZiBF
VkRFVgorc3RhdGljIHN0cnVjdCBldmRldl9tZXRob2RzIHdzcF9ldmRldl9tZXRob2RzID0gewor
CS5ldl9vcGVuID0gJndzcF9ldl9vcGVuLAorCS5ldl9jbG9zZSA9ICZ3c3BfZXZfY2xvc2UsCit9
OworI2VuZGlmCisKIC8qIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgc2h1dGRvd24gKi8KIHN0
YXRpYyBpbnQgd3NwX2VuYWJsZShzdHJ1Y3Qgd3NwX3NvZnRjICpzYyk7CiBzdGF0aWMgdm9pZCB3
c3BfZGlzYWJsZShzdHJ1Y3Qgd3NwX3NvZnRjICpzYyk7CiAKIC8qIHVwZGF0aW5nIGZpZm8gKi8K
IHN0YXRpYyB2b2lkIHdzcF9yZXNldF9idWYoc3RydWN0IHdzcF9zb2Z0YyAqc2MpOwotc3RhdGlj
IHZvaWQgd3NwX2FkZF90b19xdWV1ZShzdHJ1Y3Qgd3NwX3NvZnRjICosIGludCwgaW50LCBpbnQs
IHVpbnQzMl90KTsKK3N0YXRpYyB2b2lkIHdzcF9hZGRfdG9fcXVldWUoc3RydWN0IHdzcF9zb2Z0
YyAqLCBpbnQsIGludCwgaW50LCBpbnQsIHVpbnQzMl90KTsKIAogLyogRGV2aWNlIG1ldGhvZHMu
ICovCiBzdGF0aWMgZGV2aWNlX3Byb2JlX3Qgd3NwX3Byb2JlOwpAQCAtNzk5LDcgKzgzNywyOSBA
QCB3c3BfYXR0YWNoKGRldmljZV90IGRldikKIAlzYy0+c2NfbW9kZS5zeW5jbWFza1sxXSA9IE1P
VVNFX01TQ19TWU5DOwogCiAJc2MtPnNjX3RvdWNoID0gV1NQX1VOVE9VQ0g7Ci0Jc2MtPnNjcl9t
b2RlID0gV1NQX1NDUl9OT05FOworCXNjLT5zY3JvbGxfbW9kZSA9IFdTUF9TQ1JPTExfTk9ORTsK
KworI2lmZGVmIEVWREVWCisJc2MtPnNjX2V2ZGV2ID0gZXZkZXZfYWxsb2MoKTsKKwlldmRldl9z
ZXRfbmFtZShzYy0+c2NfZXZkZXYsIGRldmljZV9nZXRfZGVzYyhkZXYpKTsKKwlldmRldl9zZXRf
c2VyaWFsKHNjLT5zY19ldmRldiwgIjAiKTsKKwlldmRldl9zZXRfbWV0aG9kcyhzYy0+c2NfZXZk
ZXYsIHNjLCAmd3NwX2V2ZGV2X21ldGhvZHMpOworCWV2ZGV2X3N1cHBvcnRfcHJvcChzYy0+c2Nf
ZXZkZXYsIElOUFVUX1BST1BfUE9JTlRFUik7CisJZXZkZXZfc3VwcG9ydF9ldmVudChzYy0+c2Nf
ZXZkZXYsIEVWX1NZTik7CisJZXZkZXZfc3VwcG9ydF9ldmVudChzYy0+c2NfZXZkZXYsIEVWX1JF
TCk7CisJZXZkZXZfc3VwcG9ydF9ldmVudChzYy0+c2NfZXZkZXYsIEVWX0tFWSk7CisJZXZkZXZf
c3VwcG9ydF9yZWwoc2MtPnNjX2V2ZGV2LCBSRUxfWCk7CisJZXZkZXZfc3VwcG9ydF9yZWwoc2Mt
PnNjX2V2ZGV2LCBSRUxfWSk7CisJZXZkZXZfc3VwcG9ydF9yZWwoc2MtPnNjX2V2ZGV2LCBSRUxf
V0hFRUwpOworCWV2ZGV2X3N1cHBvcnRfcmVsKHNjLT5zY19ldmRldiwgUkVMX0hXSEVFTCk7CisK
Kwlmb3IoaW50IGkgPSAwOyBpIDwgc2MtPnNjX2h3LmJ1dHRvbnM7IGkrKykKKwkJZXZkZXZfc3Vw
cG9ydF9rZXkoc2MtPnNjX2V2ZGV2LCBCVE5fTU9VU0UgKyBpKTsKKworCWVyciA9IGV2ZGV2X3Jl
Z2lzdGVyKGRldiwgc2MtPnNjX2V2ZGV2KTsKKwlpZiAoZXJyKQorCQlnb3RvIGRldGFjaDsKKyNl
bmRpZgogCiAJcmV0dXJuICgwKTsKIApAQCAtODIyLDYgKzg4MiwxMSBAQCB3c3BfZGV0YWNoKGRl
dmljZV90IGRldikKIAogCXVzYl9maWZvX2RldGFjaCgmc2MtPnNjX2ZpZm8pOwogCisjaWZkZWYg
RVZERVYKKwlldmRldl91bnJlZ2lzdGVyKGRldiwgc2MtPnNjX2V2ZGV2KTsKKwlldmRldl9mcmVl
KHNjLT5zY19ldmRldik7CisjZW5kaWYKKwogCXVzYmRfdHJhbnNmZXJfdW5zZXR1cChzYy0+c2Nf
eGZlciwgV1NQX05fVFJBTlNGRVIpOwogCiAJbXR4X2Rlc3Ryb3koJnNjLT5zY19tdXRleCk7CkBA
IC04NDIsMTAgKzkwNywxMiBAQCB3c3BfaW50cl9jYWxsYmFjayhzdHJ1Y3QgdXNiX3hmZXIgKnhm
ZXIsIHVzYl9lcnJvcl90IGVycm9yKQogCWludCBpYnQgPSAwOwkJCS8qIGJ1dHRvbiBzdGF0dXMg
Ki8KIAlpbnQgZHggPSAwOwogCWludCBkeSA9IDA7Ci0JaW50IGR6ID0gMDsKKwlpbnQgZHogPSAw
OwkKKwlpbnQgZHQgPSAwOwogCWludCByZHggPSAwOwogCWludCByZHkgPSAwOwogCWludCByZHog
PSAwOworCWludCByZHQgPSAwOwogCWludCBsZW47CiAJaW50IGk7CiAKQEAgLTg1NCw2ICs5MjEs
OSBAQCB3c3BfaW50cl9jYWxsYmFjayhzdHJ1Y3QgdXNiX3hmZXIgKnhmZXIsIHVzYl9lcnJvcl90
IGVycm9yKQogCWlmIChzYy0+ZHpfY291bnQgPT0gMCkKIAkJc2MtPmR6X2NvdW50ID0gV1NQX0Ra
X01BWF9DT1VOVDsKIAorCWlmIChzYy0+ZHRfY291bnQgPT0gMCkKKwkJc2MtPmR0X2NvdW50ID0g
V1NQX0RUX01BWF9DT1VOVDsKKwogCXVzYmRfeGZlcl9zdGF0dXMoeGZlciwgJmxlbiwgTlVMTCwg
TlVMTCwgTlVMTCk7CiAKIAlzd2l0Y2ggKFVTQl9HRVRfU1RBVEUoeGZlcikpIHsKQEAgLTk2Nyw3
ICsxMDM3LDcgQEAgd3NwX2ludHJfY2FsbGJhY2soc3RydWN0IHVzYl94ZmVyICp4ZmVyLCB1c2Jf
ZXJyb3JfdCBlcnJvcikKIAkJCQlzd2l0Y2ggKHNjLT5udGFwcykgewogCQkJCWNhc2UgMToKIAkJ
CQkJaWYgKCEocGFyYW1zLT5jYXBzICYgSEFTX0lOVEVHUkFURURfQlVUVE9OKSkgewotCQkJCQkJ
d3NwX2FkZF90b19xdWV1ZShzYywgMCwgMCwgMCwgTU9VU0VfQlVUVE9OMURPV04pOworCQkJCQkJ
d3NwX2FkZF90b19xdWV1ZShzYywgMCwgMCwgMCwgMCwgTU9VU0VfQlVUVE9OMURPV04pOwogCQkJ
CQkJRFBSSU5URk4oV1NQX0xMRVZFTF9JTkZPLCAiTEVGVCBDTElDSyFcbiIpOwogCQkJCQl9CiAJ
CQkJCWJyZWFrOwpAQCAtOTc2LDIxICsxMDQ2LDIzIEBAIHdzcF9pbnRyX2NhbGxiYWNrKHN0cnVj
dCB1c2JfeGZlciAqeGZlciwgdXNiX2Vycm9yX3QgZXJyb3IpCiAJCQkJCSAgICBzYy0+ZHhfc3Vt
LCBzYy0+ZHlfc3VtKTsKIAkJCQkJaWYgKHNjLT5kaXN0YW5jZSA8IE1BWF9ESVNUQU5DRSAmJiBh
YnMoc2MtPmR4X3N1bSkgPCA1ICYmCiAJCQkJCSAgICBhYnMoc2MtPmR5X3N1bSkgPCA1KSB7Ci0J
CQkJCQl3c3BfYWRkX3RvX3F1ZXVlKHNjLCAwLCAwLCAwLCBNT1VTRV9CVVRUT04zRE9XTik7CisJ
CQkJCQl3c3BfYWRkX3RvX3F1ZXVlKHNjLCAwLCAwLCAwLCAwLCBNT1VTRV9CVVRUT04zRE9XTik7
CiAJCQkJCQlEUFJJTlRGTihXU1BfTExFVkVMX0lORk8sICJSSUdIVCBDTElDSyFcbiIpOwogCQkJ
CQl9CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgMzoKLQkJCQkJd3NwX2FkZF90b19xdWV1ZShzYywg
MCwgMCwgMCwgTU9VU0VfQlVUVE9OMkRPV04pOworCQkJCQl3c3BfYWRkX3RvX3F1ZXVlKHNjLCAw
LCAwLCAwLCAwLCBNT1VTRV9CVVRUT04yRE9XTik7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6
CiAJCQkJCS8qIHdlIGRvbid0IGhhbmRsZSB0YXBzIG9mIG1vcmUgdGhhbiB0aHJlZSBmaW5nZXJz
ICovCiAJCQkJCWJyZWFrOwogCQkJCX0KLQkJCQl3c3BfYWRkX3RvX3F1ZXVlKHNjLCAwLCAwLCAw
LCAwKTsJLyogYnV0dG9uIHJlbGVhc2UgKi8KKwkJCQl3c3BfYWRkX3RvX3F1ZXVlKHNjLCAwLCAw
LCAwLCAwLCAwKTsJLyogYnV0dG9uIHJlbGVhc2UgKi8KIAkJCX0KKworI2lmIDAgLy8gUmVwbGFj
ZSBiYWNrL2ZvcndhcmQgd2l0aCBob3Jpem9udGFsIHNjcm9sbAogCQkJaWYgKChzYy0+ZHRfc3Vt
IC8gdHVuLnNjcl9ob3JfdGhyZXNob2xkKSAhPSAwICYmCi0JCQkgICAgc2MtPm50YXBzID09IDIg
JiYgc2MtPnNjcl9tb2RlID09IFdTUF9TQ1JfSE9SKSB7CisJCQkgICAgc2MtPm50YXBzID09IDIg
JiYgc2MtPnNjcm9sbF9tb2RlID09IFdTUF9TQ1JPTExfSE9SKSB7CiAKIAkJCQkvKgogCQkJCSAq
IHRyYW5zbGF0ZSBULWF4aXMgaW50byBidXR0b24gcHJlc3NlcwpAQCAtMTAwMSwyMCArMTA3Mywy
MyBAQCB3c3BfaW50cl9jYWxsYmFjayhzdHJ1Y3QgdXNiX3hmZXIgKnhmZXIsIHVzYl9lcnJvcl90
IGVycm9yKQogCQkJCWVsc2UgaWYgKHNjLT5kdF9zdW0gPCAwKQogCQkJCQl3c3BfYWRkX3RvX3F1
ZXVlKHNjLCAwLCAwLCAwLCAxVUwgPDwgNCk7CiAJCQl9CisjZW5kaWYKIAkJCXNjLT5kel9jb3Vu
dCA9IFdTUF9EWl9NQVhfQ09VTlQ7Ci0JCQlzYy0+ZHpfc3VtID0gMDsKKwkJCXNjLT5kdF9jb3Vu
dCA9IFdTUF9EVF9NQVhfQ09VTlQ7CiAJCQlzYy0+aW50cl9jb3VudCA9IDA7CiAJCQlzYy0+aWJ0
biA9IDA7CiAJCQlzYy0+bnRhcHMgPSAwOwogCQkJc2MtPmZpbmdlciA9IDA7CiAJCQlzYy0+ZGlz
dGFuY2UgPSAwOwotCQkJc2MtPmR0X3N1bSA9IDA7CiAJCQlzYy0+ZHhfc3VtID0gMDsKIAkJCXNj
LT5keV9zdW0gPSAwOworCQkJc2MtPmR6X3N1bSA9IDA7CisJCQlzYy0+ZHRfc3VtID0gMDsKIAkJ
CXNjLT5yZHggPSAwOwogCQkJc2MtPnJkeSA9IDA7CiAJCQlzYy0+cmR6ID0gMDsKLQkJCXNjLT5z
Y3JfbW9kZSA9IFdTUF9TQ1JfTk9ORTsKKwkJCXNjLT5yZHQgPSAwOworCQkJc2MtPnNjcm9sbF9t
b2RlID0gV1NQX1NDUk9MTF9OT05FOwogCQl9IGVsc2UgaWYgKHNjLT5pbmRleFswXS0+dG91Y2hf
bWFqb3IgPj0gdHVuLnByZXNzdXJlX3RvdWNoX3RocmVzaG9sZCAmJgogCQkgICAgc2MtPnNjX3Rv
dWNoID09IFdTUF9VTlRPVUNIKSB7CS8qIGlnbm9yZSBmaXJzdCB0b3VjaCAqLwogCQkJc2MtPnNj
X3RvdWNoID0gV1NQX0ZJUlNUX1RPVUNIOwpAQCAtMTA3OSw2ICsxMTU0LDcgQEAgd3NwX2ludHJf
Y2FsbGJhY2soc3RydWN0IHVzYl94ZmVyICp4ZmVyLCB1c2JfZXJyb3JfdCBlcnJvcikKIAkJCQkJ
RFBSSU5URk4oV1NQX0xMRVZFTF9JTkZPLCAiZHg9JTVkLCBkeT0lNWQsIG1vdj0lNWRcbiIsCiAJ
CQkJCSAgICBkeCwgZHksIHNjLT5maW5nZXIpOwogCQkJCX0KKwkJCQkKIAkJCQlpZiAoc2MtPmR6
X2NvdW50LS0pIHsKIAkJCQkJcmR6ID0gKGR5ICsgc2MtPnJkeikgJSB0dW4uc2NhbGVfZmFjdG9y
OwogCQkJCQlzYy0+ZHpfc3VtIC09IChkeSArIHNjLT5yZHopIC8gdHVuLnNjYWxlX2ZhY3RvcjsK
QEAgLTEwODYsNiArMTE2MiwxNCBAQCB3c3BfaW50cl9jYWxsYmFjayhzdHJ1Y3QgdXNiX3hmZXIg
KnhmZXIsIHVzYl9lcnJvcl90IGVycm9yKQogCQkJCX0KIAkJCQlpZiAoKHNjLT5kel9zdW0gLyB0
dW4uel9mYWN0b3IpICE9IDApCiAJCQkJCXNjLT5kel9jb3VudCA9IDA7CisKKwkJCQlpZiAoc2Mt
PmR0X2NvdW50LS0pIHsKKwkJCQkJcmR0ID0gKGR4ICsgc2MtPnJkdCkgJSB0dW4uc2NhbGVfZmFj
dG9yOworCQkJCQlzYy0+ZHRfc3VtICs9IChkeCArIHNjLT5yZHQpIC8gdHVuLnNjYWxlX2ZhY3Rv
cjsKKwkJCQkJc2MtPnJkdCA9IHJkdDsKKwkJCQl9CisJCQkJaWYgKChzYy0+ZHRfc3VtIC8gdHVu
LnRfZmFjdG9yKSAhPSAwKQorCQkJCQlzYy0+ZHRfY291bnQgPSAwOwogCQkJfQogCQkJcmR4ID0g
KGR4ICsgc2MtPnJkeCkgJSB0dW4uc2NhbGVfZmFjdG9yOwogCQkJZHggPSAoZHggKyBzYy0+cmR4
KSAvIHR1bi5zY2FsZV9mYWN0b3I7CkBAIC0xMDk5LDQ1ICsxMTgzLDQ5IEBAIHdzcF9pbnRyX2Nh
bGxiYWNrKHN0cnVjdCB1c2JfeGZlciAqeGZlciwgdXNiX2Vycm9yX3QgZXJyb3IpCiAJCQlzYy0+
ZHlfc3VtICs9IGR5OwogCiAJCQlpZiAobnRvdWNoID09IDIgJiYgc2MtPnNjX3N0YXR1cy5idXR0
b24gPT0gMCkgewotCQkJCWlmIChzYy0+c2NyX21vZGUgPT0gV1NQX1NDUl9OT05FICYmCisKKwkJ
CQlpZiAoc2MtPnNjcm9sbF9tb2RlID09IFdTUF9TQ1JPTExfTk9ORSAmJgogCQkJCSAgICBhYnMo
c2MtPmR4X3N1bSkgKyBhYnMoc2MtPmR5X3N1bSkgPiB0dW4uc2NyX2hvcl90aHJlc2hvbGQpCi0J
CQkJCXNjLT5zY3JfbW9kZSA9IGFicyhzYy0+ZHhfc3VtKSA+Ci0JCQkJCSAgICBhYnMoc2MtPmR5
X3N1bSkgKiAyID8gV1NQX1NDUl9IT1IgOiBXU1BfU0NSX1ZFUjsKLQkJCQlEUFJJTlRGTihXU1Bf
TExFVkVMX0lORk8sICJzY3JfbW9kZT0lNWQsIGNvdW50PSVkLCBkeF9zdW09JWQsIGR5X3N1bT0l
ZFxuIiwKLQkJCQkgICAgc2MtPnNjcl9tb2RlLCBzYy0+aW50cl9jb3VudCwgc2MtPmR4X3N1bSwg
c2MtPmR5X3N1bSk7Ci0JCQkJaWYgKHNjLT5zY3JfbW9kZSA9PSBXU1BfU0NSX0hPUikKLQkJCQkJ
c2MtPmR0X3N1bSArPSBkeDsKLQkJCQllbHNlCi0JCQkJCXNjLT5kdF9zdW0gPSAwOworCQkJCQlz
Yy0+c2Nyb2xsX21vZGUgPSBhYnMoc2MtPmR4X3N1bSkgPgorCQkJCQkJYWJzKHNjLT5keV9zdW0p
ICogMiA/IFdTUF9TQ1JPTExfSE9SIDogV1NQX1NDUk9MTF9WRVI7CisKKwkJCQlEUFJJTlRGTihX
U1BfTExFVkVMX0lORk8sICJzY3JvbGxfbW9kZT0lNWQsIGNvdW50PSVkLCBkeF9zdW09JWQsIGR5
X3N1bT0lZFxuIiwKKwkJCQkgICAgc2MtPnNjcm9sbF9tb2RlLCBzYy0+aW50cl9jb3VudCwgc2Mt
PmR4X3N1bSwgc2MtPmR5X3N1bSk7CiAKIAkJCQlkeCA9IGR5ID0gMDsKLQkJCQlpZiAoc2MtPmR6
X2NvdW50ID09IDApCisJCQkJaWYgKHNjLT5kel9jb3VudCA9PSAwKSB7CiAJCQkJCWR6ID0gc2Mt
PmR6X3N1bSAvIHR1bi56X2ZhY3RvcjsKLQkJCQlpZiAoc2MtPnNjcl9tb2RlID09IFdTUF9TQ1Jf
SE9SIHx8IAotCQkJCSAgICBhYnMoc2MtPnBvc194WzBdIC0gc2MtPnBvc194WzFdKSA+IE1BWF9E
SVNUQU5DRSB8fAotCQkJCSAgICBhYnMoc2MtPnBvc195WzBdIC0gc2MtPnBvc195WzFdKSA+IE1B
WF9ESVNUQU5DRSkKLQkJCQkJZHogPSAwOworCQkJCX0KKwkJCQlpZiAoc2MtPmR0X2NvdW50ID09
IDApIHsKKwkJCQkJZHQgPSBzYy0+ZHRfc3VtIC8gdHVuLnRfZmFjdG9yOworCQkJCX0KIAkJCX0K
IAkJCWlmIChudG91Y2ggPT0gMykKLQkJCQlkeCA9IGR5ID0gZHogPSAwOworCQkJCWR4ID0gZHkg
PSBkeiA9IGR0ID0gMDsKIAkJCWlmIChzYy0+aW50cl9jb3VudCA8IFdTUF9UQVBfTUFYX0NPVU5U
ICYmCi0JCQkgICAgYWJzKGR4KSA8IDMgJiYgYWJzKGR5KSA8IDMgJiYgYWJzKGR6KSA8IDMpCi0J
CQkJZHggPSBkeSA9IGR6ID0gMDsKKwkJCSAgICBhYnMoZHgpIDwgMyAmJiBhYnMoZHkpIDwgMyAm
JiBhYnMoZHopIDwgMyAmJiBhYnMoZHQpIDwgMykKKwkJCQlkeCA9IGR5ID0gZHogPSBkdCA9IDA7
CiAJCQllbHNlCiAJCQkJc2MtPmludHJfY291bnQgPSBXU1BfVEFQX01BWF9DT1VOVDsKLQkJCWlm
IChkeCB8fCBkeSB8fCBkeikKKwkJCWlmIChkeCB8fCBkeSB8fCBkeiB8fCBkdCkKIAkJCQlzYy0+
c2Nfc3RhdHVzLmZsYWdzIHw9IE1PVVNFX1BPU0NIQU5HRUQ7Ci0JCQlEUFJJTlRGTihXU1BfTExF
VkVMX0lORk8sICJkeD0lNWQsIGR5PSU1ZCwgZHo9JTVkLCBzY190b3VjaD0leCwgYnRuPSV4XG4i
LAotCQkJICAgIGR4LCBkeSwgZHosIHNjLT5zY190b3VjaCwgc2MtPnNjX3N0YXR1cy5idXR0b24p
OworCQkJRFBSSU5URk4oV1NQX0xMRVZFTF9JTkZPLCAiZHg9JTVkLCBkeT0lNWQsIGR6PSU1ZCwg
ZHQ9JTVkLHNjX3RvdWNoPSV4LCBidG49JXhcbiIsCisJCQkJCSBkeCwgZHksIGR6LCBkdCwgc2Mt
PnNjX3RvdWNoLCBzYy0+c2Nfc3RhdHVzLmJ1dHRvbik7CiAJCQlzYy0+c2Nfc3RhdHVzLmR4ICs9
IGR4OwogCQkJc2MtPnNjX3N0YXR1cy5keSArPSBkeTsKIAkJCXNjLT5zY19zdGF0dXMuZHogKz0g
ZHo7CisJCQkvKiBObyBzdXBwb3J0IGZvciBkdCB0aGlzICh5ZXQpICovCisJCQkvKiBzYy0+c2Nf
c3RhdHVzLmR0ICs9IGR0OyAqLwogCi0JCQl3c3BfYWRkX3RvX3F1ZXVlKHNjLCBkeCwgLWR5LCBk
eiwgc2MtPnNjX3N0YXR1cy5idXR0b24pOworCQkJd3NwX2FkZF90b19xdWV1ZShzYywgZHgsIC1k
eSwgZHosIGR0LCBzYy0+c2Nfc3RhdHVzLmJ1dHRvbik7CiAJCQlpZiAoc2MtPmR6X2NvdW50ID09
IDApIHsKIAkJCQlzYy0+ZHpfc3VtID0gMDsKIAkJCQlzYy0+cmR6ID0gMDsKIAkJCX0KKwkJCWlm
IChzYy0+ZHRfY291bnQgPT0gMCkgeworCQkJCXNjLT5kdF9zdW0gPSAwOworCQkJCXNjLT5yZHQg
PSAwOworCQkJfQogCiAJCX0KIAkJc2MtPnByZV9wb3NfeCA9IHNjLT5wb3NfeFswXTsKQEAgLTEx
NTIsMTQgKzEyNDAsMTcgQEAgd3NwX2ludHJfY2FsbGJhY2soc3RydWN0IHVzYl94ZmVyICp4ZmVy
LCB1c2JfZXJyb3JfdCBlcnJvcikKIAljYXNlIFVTQl9TVF9TRVRVUDoKIHRyX3NldHVwOgogCQkv
KiBjaGVjayBpZiB3ZSBjYW4gcHV0IG1vcmUgZGF0YSBpbnRvIHRoZSBGSUZPICovCi0JCWlmICh1
c2JfZmlmb19wdXRfYnl0ZXNfbWF4KAotCQkgICAgc2MtPnNjX2ZpZm8uZnBbVVNCX0ZJRk9fUlhd
KSAhPSAwKSB7Ci0JCQl1c2JkX3hmZXJfc2V0X2ZyYW1lX2xlbih4ZmVyLCAwLAotCQkJICAgIHNj
LT50cF9kYXRhbGVuKTsKLQkJCXVzYmRfdHJhbnNmZXJfc3VibWl0KHhmZXIpOworCQlpZiAodXNi
X2ZpZm9fcHV0X2J5dGVzX21heChzYy0+c2NfZmlmby5mcFtVU0JfRklGT19SWF0pID09IDApIHsK
KyNpZmRlZiBFVkRFVgorCQkJaWYgKHNjLT5zY19ldmZsYWdzID09IDApCisJCQkJYnJlYWs7Cisj
ZWxzZQorCQkJYnJlYWs7CisjZW5kaWYKIAkJfQorCQl1c2JkX3hmZXJfc2V0X2ZyYW1lX2xlbih4
ZmVyLCAwLCBzYy0+dHBfZGF0YWxlbik7CisJCXVzYmRfdHJhbnNmZXJfc3VibWl0KHhmZXIpOwog
CQlicmVhazsKLQogCWRlZmF1bHQ6CQkJLyogRXJyb3IgKi8KIAkJaWYgKGVycm9yICE9IFVTQl9F
UlJfQ0FOQ0VMTEVEKSB7CiAJCQkvKiB0cnkgY2xlYXIgc3RhbGwgZmlyc3QgKi8KQEAgLTExNzIs
NyArMTI2Myw3IEBAIHRyX3NldHVwOgogCiBzdGF0aWMgdm9pZAogd3NwX2FkZF90b19xdWV1ZShz
dHJ1Y3Qgd3NwX3NvZnRjICpzYywgaW50IGR4LCBpbnQgZHksIGludCBkeiwKLSAgICB1aW50MzJf
dCBidXR0b25zX2luKQorCQkJCSBpbnQgZHQsIHVpbnQzMl90IGJ1dHRvbnNfaW4pCiB7CiAJdWlu
dDMyX3QgYnV0dG9uc19vdXQ7CiAJdWludDhfdCBidWZbOF07CkBAIC0xMTgzLDYgKzEyNzQsOCBA
QCB3c3BfYWRkX3RvX3F1ZXVlKHN0cnVjdCB3c3Bfc29mdGMgKnNjLCBpbnQgZHgsIGludCBkeSwg
aW50IGR6LAogCWR5ID0gaW1heChkeSwgLTI1Nik7CiAJZHogPSBpbWluKGR6LCAxMjYpOwogCWR6
ID0gaW1heChkeiwgLTEyOCk7CisJZHQgPSBpbWluKGR0LCAxMjYpOworCWR0ID0gaW1heChkdCwg
LTEyOCk7CiAKIAlidXR0b25zX291dCA9IE1PVVNFX01TQ19CVVRUT05TOwogCWlmIChidXR0b25z
X2luICYgTU9VU0VfQlVUVE9OMURPV04pCkBAIC0xMjA3LDcgKzEzMDAsNjMgQEAgd3NwX2FkZF90
b19xdWV1ZShzdHJ1Y3Qgd3NwX3NvZnRjICpzYywgaW50IGR4LCBpbnQgZHksIGludCBkeiwKIAl9
CiAJdXNiX2ZpZm9fcHV0X2RhdGFfbGluZWFyKHNjLT5zY19maWZvLmZwW1VTQl9GSUZPX1JYXSwg
YnVmLAogCSAgICBzYy0+c2NfbW9kZS5wYWNrZXRzaXplLCAxKTsKKworI2lmZGVmIEVWREVWCisJ
LyogUHVzaCBldmRldiBldmVudCAqLworCWlmIChkeCAhPSAwIHx8IGR5ICE9IDApIHsKKwkJZXZk
ZXZfcHVzaF9ldmVudChzYy0+c2NfZXZkZXYsIEVWX1JFTCwgUkVMX1gsIGR4KTsKKwkJZXZkZXZf
cHVzaF9ldmVudChzYy0+c2NfZXZkZXYsIEVWX1JFTCwgUkVMX1ksIC1keSk7CisJfQorCWlmIChk
eiAhPSAwKQorCQlldmRldl9wdXNoX2V2ZW50KHNjLT5zY19ldmRldiwgRVZfUkVMLCBSRUxfV0hF
RUwsIC1keik7CisJaWYgKGR0ICE9IDApIHsKKwkJZXZkZXZfcHVzaF9ldmVudChzYy0+c2NfZXZk
ZXYsIEVWX1JFTCwgUkVMX0hXSEVFTCwgZHQpOworCX0KKwlldmRldl9wdXNoX21vdXNlX2J0bihz
Yy0+c2NfZXZkZXYsCisJCQkJCQkgKGJ1dHRvbnNfaW4gJiB+TU9VU0VfU1REQlVUVE9OUykgfAor
CQkJCQkJIChidXR0b25zX2luICYgKDEgPDwgMikgPyBNT1VTRV9CVVRUT04xRE9XTiA6IDApIHwK
KwkJCQkJCSAoYnV0dG9uc19pbiAmICgxIDw8IDEpID8gTU9VU0VfQlVUVE9OMkRPV04gOiAwKSB8
CisJCQkJCQkgKGJ1dHRvbnNfaW4gJiAoMSA8PCAwKSA/IE1PVVNFX0JVVFRPTjNET1dOIDogMCkp
OworCWV2ZGV2X3N5bmMoc2MtPnNjX2V2ZGV2KTsKKyNlbmRpZgorCit9CisKKyNpZmRlZiBFVkRF
Vgorc3RhdGljIGludAord3NwX2V2X29wZW4oc3RydWN0IGV2ZGV2X2RldiAqZXZkZXYsIHZvaWQg
KmV2X3NvZnRjKQoreworCXN0cnVjdCB3c3Bfc29mdGMgKnNjID0gKHN0cnVjdCB3c3Bfc29mdGMg
Killdl9zb2Z0YzsKKworCW10eF9sb2NrKCZzYy0+c2NfbXV0ZXgpOworCisJc2MtPnNjX2V2Zmxh
Z3MgPSBXU1BfRVZERVZfT1BFTkVEOworCisJaWYgKHNjLT5zY19mZmxhZ3MgPT0gMCkgeworCQkv
KiB3c3BfcmVzZXQoc2MpOyAqLworCQl3c3Bfc3RhcnRfcngoc2MpOworCX0KKworCW10eF91bmxv
Y2soJnNjLT5zY19tdXRleCk7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgdm9pZAord3Nw
X2V2X2Nsb3NlKHN0cnVjdCBldmRldl9kZXYgKmV2ZGV2LCB2b2lkICpldl9zb2Z0YykKK3sKKwlz
dHJ1Y3Qgd3NwX3NvZnRjICpzYyA9IChzdHJ1Y3Qgd3NwX3NvZnRjICopZXZfc29mdGM7CisKKwlt
dHhfbG9jaygmc2MtPnNjX211dGV4KTsKKworCXNjLT5zY19ldmZsYWdzID0gMDsKKworCWlmIChz
Yy0+c2NfZmZsYWdzID09IDApCisJCXdzcF9zdG9wX3J4KHNjKTsKKworCW10eF91bmxvY2soJnNj
LT5zY19tdXRleCk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQKIHdzcF9yZXNldF9idWYoc3Ry
dWN0IHdzcF9zb2Z0YyAqc2MpCkBAIC0xMjE3LDkgKzEzNjYsOCBAQCB3c3BfcmVzZXRfYnVmKHN0
cnVjdCB3c3Bfc29mdGMgKnNjKQogfQogCiBzdGF0aWMgdm9pZAotd3NwX3N0YXJ0X3JlYWQoc3Ry
dWN0IHVzYl9maWZvICpmaWZvKQord3NwX3N0YXJ0X3J4KHN0cnVjdCB3c3Bfc29mdGMgKnNjKQog
ewotCXN0cnVjdCB3c3Bfc29mdGMgKnNjID0gdXNiX2ZpZm9fc29mdGMoZmlmbyk7CiAJaW50IHJh
dGU7CiAKIAkvKiBDaGVjayBpZiB3ZSBzaG91bGQgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9sbGlu
ZyBpbnRlcnZhbCAqLwpAQCAtMTI0MCwxMyArMTM4OCwyNSBAQCB3c3Bfc3RhcnRfcmVhZChzdHJ1
Y3QgdXNiX2ZpZm8gKmZpZm8pCiB9CiAKIHN0YXRpYyB2b2lkCi13c3Bfc3RvcF9yZWFkKHN0cnVj
dCB1c2JfZmlmbyAqZmlmbykKK3dzcF9zdGFydF9yZWFkKHN0cnVjdCB1c2JfZmlmbyAqZmlmbykK
IHsKIAlzdHJ1Y3Qgd3NwX3NvZnRjICpzYyA9IHVzYl9maWZvX3NvZnRjKGZpZm8pOworCXdzcF9z
dGFydF9yeChzYyk7Cit9CiAKK3N0YXRpYyB2b2lkCit3c3Bfc3RvcF9yeChzdHJ1Y3Qgd3NwX3Nv
ZnRjICpzYykKK3sKIAl1c2JkX3RyYW5zZmVyX3N0b3Aoc2MtPnNjX3hmZXJbV1NQX0lOVFJfRFRd
KTsKIH0KIAorc3RhdGljIHZvaWQKK3dzcF9zdG9wX3JlYWQoc3RydWN0IHVzYl9maWZvICpmaWZv
KQoreworCXN0cnVjdCB3c3Bfc29mdGMgKnNjID0gdXNiX2ZpZm9fc29mdGMoZmlmbyk7CisJd3Nw
X3N0b3Bfcngoc2MpOworfQorCiAKIHN0YXRpYyBpbnQKIHdzcF9vcGVuKHN0cnVjdCB1c2JfZmlm
byAqZmlmbywgaW50IGZmbGFncykKQEAgLTEyNTUsNiArMTQxNSw3IEBAIHdzcF9vcGVuKHN0cnVj
dCB1c2JfZmlmbyAqZmlmbywgaW50IGZmbGFncykKIAogCWlmIChmZmxhZ3MgJiBGUkVBRCkgewog
CQlzdHJ1Y3Qgd3NwX3NvZnRjICpzYyA9IHVzYl9maWZvX3NvZnRjKGZpZm8pOworCQlzYy0+c2Nf
ZmZsYWdzID0gZmZsYWdzOwogCQlpbnQgcmM7CiAKIAkJaWYgKHNjLT5zY19zdGF0ZSAmIFdTUF9F
TkFCTEVEKQo=
--94eb2c18f43c69faca0539e600da--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAASDrVm9XaMcMytkN4jjr23bC73fCjFjddbQmnH%2BRq=1e83nOw>