From owner-freebsd-current@freebsd.org Fri Aug 12 20:48:17 2016 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3F7C2BB7FC4 for ; Fri, 12 Aug 2016 20:48:17 +0000 (UTC) (envelope-from johannes@brilliantservice.co.jp) Received: from mail-ua0-x22a.google.com (mail-ua0-x22a.google.com [IPv6:2607:f8b0:400c:c08::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EC2BA1939 for ; Fri, 12 Aug 2016 20:48:16 +0000 (UTC) (envelope-from johannes@brilliantservice.co.jp) Received: by mail-ua0-x22a.google.com with SMTP id n59so60100324uan.2 for ; Fri, 12 Aug 2016 13:48:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brilliantservice-co-jp.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=xGbpvR5d8q/HoWITbbQHdkKvgGCkv+njltTTkq5PeUo=; b=IRqFzNZ8JC9WPfudrRbdwYzmc9ikxYT3F3cH17mqTYUeZWenVnsB5yFAucK8EK8FAW pzfUy5qsWyMKLexP7dGXOcDn5Hnt4U653uqlNeb54n8U033AE1eReI9gDYItUaGQVNUT HHZxb1JNBsdhMVy4QOhgmsE2RGpwB0ZOljuWToN16k3GOXWnfOQGOAwYAEbXMMkgbTyu /7ZO5UbAEw+2xRNOS4uOlC47tvZRoSgkumqHMZJYcBLge6u0hZgh8DoHlCuEUc1Tzk3d 9+txMW3v1UaKKNnuStjNaoM3fsxTUHZ72wlNMFId9qEa09+fgnR5R3SnKIRn68nXDjgx CXbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=xGbpvR5d8q/HoWITbbQHdkKvgGCkv+njltTTkq5PeUo=; b=g0jcFWmFA0JsgdLeMWkqZFjUwfqmJYhu4sH97TuyWTRCEHOsbAfhXbrTCD08IGhC+Y ZIyHvMpkmcC2tLx41be/3SA/Pw+xCjeOlO7KGpU16vuOEOffdGjFLDjsl7dSLt9Pw5pQ trGY1s4UVrh4A0NI9NcUvXTiXf4nT8Vf7y41LfmwCfGYLS+bIhbCT9AeXGUqkWfAHTYW tS/u1M6xu2rCAVJMfh3IjudUw1G3MqweqnFVe1ISBDFgKquefNXUMdft8OvdRkNwSGBo AXCBanoSevkmYzdIg+4/+LDaaKtWiYjYd+wIXypITOpTDryh7NO7nwIKnc+bCEWWs7M4 2GFQ== X-Gm-Message-State: AEkoouvwtQpxC42J1IZpncRMN7kCsxcg6DagXDYzaBFCew1tX9jrINxn0U0w7tPcDPE0VJnIEjHhBTa35AbreEBa+i71DDc8aBzXcan+wnmy4cSf0i35vsRdKMHFYJY+Hcxk6njG8+bAFG1TqLUvBXkpw+8= X-Received: by 10.176.81.2 with SMTP id e2mr8565139uaa.122.1471034895744; Fri, 12 Aug 2016 13:48:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.176.7.33 with HTTP; Fri, 12 Aug 2016 13:48:00 -0700 (PDT) In-Reply-To: References: <1df3c73a-dab3-d688-c56a-ed7c4361a9bf@gmail.com> From: "Lundberg, Johannes" Date: Fri, 12 Aug 2016 13:48:00 -0700 Message-ID: Subject: Re: Wayland work status To: =?UTF-8?Q?Jan_Kokem=C3=BCller?= Cc: FreeBSD Current Content-Type: multipart/mixed; boundary=94eb2c18f43c69faca0539e600da X-Content-Filtered-By: Mailman/MimeDel 2.1.22 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Aug 2016 20:48:17 -0000 --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 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--