From owner-freebsd-xen@FreeBSD.ORG Sun Dec 18 01:07:28 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6774D106566B for ; Sun, 18 Dec 2011 01:07:28 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout3.yahoo.com (mrout3.yahoo.com [216.145.54.173]) by mx1.freebsd.org (Postfix) with ESMTP id 4C22A8FC12 for ; Sun, 18 Dec 2011 01:07:28 +0000 (UTC) Received: from [127.0.0.1] (proxy6.corp.yahoo.com [216.145.48.19]) by mrout3.yahoo.com (8.14.4/8.14.4/y.out) with ESMTP id pBI0ulaw051362; Sat, 17 Dec 2011 16:56:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yahoo-inc.com; s=cobra; t=1324169808; bh=xpis0bH1I+QierV3uLNOQPErmutuBrUugC1yoEyfp7A=; h=Subject:From:To:Cc:In-Reply-To:References:Content-Type:Date: Message-ID:Mime-Version:Content-Transfer-Encoding; b=uMGLgA3INqTtfynlOfJ1FVM43bwQuyNuSeIv7YbMuhQvhQaAlb3jOGJIbsQJ7nug+ QdlTEcEdYnj1J4+8rS9W5+2S5/kQ7cKtuoklg0dh7QgrI9axFxbU9SvCdesNH9buBn PMI5OdcsAEbFXKK5YABvyBKnvB6t8TWRM5pKdwwk= From: Sean Bruno To: Alan Cox In-Reply-To: <4EEB9CCE.6090701@rice.edu> References: <4EEB9CCE.6090701@rice.edu> Content-Type: text/plain; charset="UTF-8" Date: Sat, 17 Dec 2011 16:56:46 -0800 Message-ID: <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Cc: Alan Cox , "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Dec 2011 01:07:28 -0000 On Fri, 2011-12-16 at 11:32 -0800, Alan Cox wrote: > Is anyone here actively working on fixing problems with SMP support > under PV i386? While doing some other maintenance on the > vm_page_alloc() callers in the source tree, I happened to take a look at > cpu_initialize_context() in mp_machdep.c. This function is involved in > bringing up the 2nd, 3rd, etc. CPUs on an SMP system. I spotted a > couple obvious errors. First, the size parameter given to kmem_*() > functions is expected to be in terms of bytes and not pages. Second, I > believe that PV i386 requires PAE to be used. If so, there are out of > range accesses to the array m[]. > > Index: i386/xen/mp_machdep.c > =================================================================== > --- i386/xen/mp_machdep.c (revision 228561) > +++ i386/xen/mp_machdep.c (working copy) > @@ -810,7 +810,7 @@ cpu_initialize_context(unsigned int cpu) > { > /* vcpu_guest_context_t is too large to allocate on the stack. > * Hence we allocate statically and protect it with a lock */ > - vm_page_t m[4]; > + vm_page_t m[NPGPTD + 2]; > static vcpu_guest_context_t ctxt; > vm_offset_t boot_stack; > vm_offset_t newPTD; > @@ -831,8 +831,8 @@ cpu_initialize_context(unsigned int cpu) > pmap_zero_page(m[i]); > > } > - boot_stack = kmem_alloc_nofault(kernel_map, 1); > - newPTD = kmem_alloc_nofault(kernel_map, NPGPTD); > + boot_stack = kmem_alloc_nofault(kernel_map, PAGE_SIZE); > + newPTD = kmem_alloc_nofault(kernel_map, NPGPTD * PAGE_SIZE); > ma[0] = VM_PAGE_TO_MACH(m[0])|PG_V; > > #ifdef PAE > @@ -854,7 +854,7 @@ cpu_initialize_context(unsigned int cpu) > nkpt*sizeof(vm_paddr_t)); > > pmap_qremove(newPTD, 4); > - kmem_free(kernel_map, newPTD, 4); > + kmem_free(kernel_map, newPTD, 4 * PAGE_SIZE); > /* > * map actual idle stack to boot_stack > */ This seems happy on our ref9 VMs. I don't suppose this means I can go above 768M of Ram now? [root@xen1 sbruno]# /usr/sbin/xm create -c ref9-xen32 Using config file "/etc/xen/ref9-xen32". Started domain ref9-xen32 (id=106) WARNING: loader(8) metadata is missing! GDB: no debug ports present KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2011 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 9.0-PRERELEASE #0: Sat Dec 17 16:13:02 PST 2011 sbruno@ref9-xen32.freebsd.org:/dumpster/scratch/sbruno-scratch/9/sys/i386/compile/XEN i386 WARNING: WITNESS option enabled, expect reduced performance. Xen reported: 2493.756 MHz processor. Timecounter "ixen" frequency 1953125 Hz quality 0 CPU: Intel(R) Xeon(R) CPU L5420 @ 2.50GHz (2493.76-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x10676 Family = 6 Model = 17 Stepping = 6 Features=0xbfe3fbff Features2=0xce3bd AMD Features=0x20100000 AMD Features2=0x1 real memory = 805306368 (768 MB) avail memory = 776830976 (740 MB) [XEN] IPI cpu=0 irq=128 vector=RESCHEDULE_VECTOR (0) [XEN] IPI cpu=0 irq=129 vector=CALL_FUNCTION_VECTOR (1) [XEN] xen_rtc_probe: probing Hypervisor RTC clock rtc0: on motherboard [XEN] xen_rtc_attach: attaching Hypervisor RTC clock xenstore0: on motherboard xc0: on motherboard Event timer "ixen" quality 600 Timecounters tick every 10.000 msec xenbusb_front0: on xenstore0 [XEN] hypervisor wallclock nudged; nudging TOD. xn0: at device/vif/0 on xenbusb_front0 xn0: Ethernet address: 00:16:3e:00:00:03 xenbusb_back0: on xenstore0 xctrl0: on xenstore0 xn0: backend features: feature-sg feature-gso-tcp4 xbd0: 10240MB at device/vbd/768 on xenbusb_front0 xbd0: attaching as ad0 Timecounter "TSC" frequency 2493756000 Hz quality 800 WARNING: WITNESS option enabled, expect reduced performance. Trying to mount root from ufs:/dev/ad0p2 []... rtc0: [XEN] xen_rtc_gettime rtc0: [XEN] xen_rtc_gettime: wallclock 1313550543 sec; 871707442 nsec rtc0: [XEN] xen_rtc_gettime: uptime 10619933 sec; 620343100 nsec rtc0: [XEN] xen_rtc_gettime: TOD 1324170477 sec; 492050542 nsec Setting hostuuid: 1c127834-ab5a-c2e4-7b24-5ea29d364d9d. Setting hostid: 0xdea9fbfd. Entropy harvesting: interrupts ethernet point_to_point kickstart. Starting file system checks: /dev/ad0p2: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/ad0p2: clean, 1874771 free (883 frags, 234236 blocks, 0.0% fragmentation) Mounting local file systems:. Setting hostname: ref9-xen32.freebsd.org. xn0: link state changed to DOWN xn0: link state changed to UP Starting Network: lo0 xn0. lo0: flags=8049 metric 0 mtu 16384 options=3 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet 127.0.0.1 netmask 0xff000000 nd6 options=21 xn0: flags=8843 metric 0 mtu 1500 options=503 ether 00:16:3e:00:00:03 nd6 options=29 media: Ethernet manual status: active Starting devd. DHCPDISCOVER on xn0 to 255.255.255.255 port 67 interval 4 DHCPOFFER from 69.147.83.62 DHCPREQUEST on xn0 to 255.255.255.255 port 67 DHCPACK from 69.147.83.62 bound to 69.147.83.99 -- renewal in 900 seconds. add net ::ffff:0.0.0.0: gateway ::1 add net ::0.0.0.0: gateway ::1 add net fe80::: gateway ::1 add net ff02::: gateway ::1 Waiting 30s for the default route interface: ............................. Mounting NFS file systems:. ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout Creating and/or trimming log files. Starting syslogd. No core dumps found. Setting date via ntp. rtc0: [XEN] xen_rtc_settime 17 Dec 16:55:16 ntpdate[703]: step time server 69.147.83.54 offset -29601.428874 sec NFS access cache time=60 Setting NIS domain: freebsd. Starting rpcbind. Starting ypbind. Clearing /tmp (X related). Updating motd:. Starting ntpd. Starting sshd. Starting cron. Starting background file system checks in 60 seconds. Sat Dec 17 16:55:17 PST 2011 FreeBSD/i386 (ref9-xen32.freebsd.org) (xc0) login: From owner-freebsd-xen@FreeBSD.ORG Sun Dec 18 02:13:50 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EA09106564A for ; Sun, 18 Dec 2011 02:13:50 +0000 (UTC) (envelope-from bounces+73574-ef5a-xen=freebsd.org@sendgrid.me) Received: from o2.shared.sendgrid.net (o2.shared.sendgrid.net [74.63.235.152]) by mx1.freebsd.org (Postfix) with SMTP id 048998FC13 for ; Sun, 18 Dec 2011 02:13:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.info; h= message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type:content-transfer-encoding; s=smtpapi; bh=MeW2ZAr+Jma6PoRzbu2H3YIz2P8=; b=aUEaRR9VwFOe4MBZIbInd54WIEW4 FPjJQZIWDl0tai0Sd/VHKlY8Wq9jX7hjLzhjdTHmwq6GlD6AkTsnGVB830kpHGmP LSgHCFBuAmIYs5ObA71+cgrukbLjZan+zSc2ZMVmNtFXx7FIdYAFXSJXBl4RW3Jp CljbMwre8ZRRR78= Received: by 10.8.49.96 with SMTP id mf44.8384.4EED49B97 Sat, 17 Dec 2011 20:02:33 -0600 (CST) Received: from mail.tarsnap.com (unknown [10.9.180.5]) by mi12 (SG) with ESMTP id 4eed49b9.3188.16f1aaf for ; Sat, 17 Dec 2011 20:02:33 -0600 (CST) Received: (qmail 11297 invoked from network); 18 Dec 2011 02:02:05 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by mail.tarsnap.com with ESMTP; 18 Dec 2011 02:02:05 -0000 Received: (qmail 51685 invoked from network); 18 Dec 2011 02:01:38 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by clamshell.daemonology.net with SMTP; 18 Dec 2011 02:01:38 -0000 Message-ID: <4EED4982.3080208@freebsd.org> Date: Sat, 17 Dec 2011 18:01:38 -0800 From: Colin Percival User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:8.0) Gecko/20111112 Thunderbird/8.0 MIME-Version: 1.0 To: Sean Bruno References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> In-Reply-To: <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> X-Enigmail-Version: undefined Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Sendgrid-EID: HYUZykSZ9jYPqvLIDxmiHLTFoapJS5N/uhO1I8ZuJQ/rqmS1MDvx/fvLn+RwkQbB9bf/ABn9aHR+/SwZ37cNUY9f414qMDXR1G+p7pQvhbBBZ52dSGjnq0jtRcpAHXfcc7bj9tbSdGJyhHHz/rSGNw== Cc: "xen@freebsd.org" , Alan Cox Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Dec 2011 02:13:50 -0000 On 12/17/11 16:56, Sean Bruno wrote: > This seems happy on our ref9 VMs. I don't suppose this means I can go > above 768M of Ram now? Can't hurt to try... whatever the problem is with our code and large amounts of RAM, the fact that it's an insta-panic during paging setup suggests that it's something at a similar level of fail. -- Colin Percival Security Officer, FreeBSD | freebsd.org | The power to serve Founder / author, Tarsnap | tarsnap.com | Online backups for the truly paranoid From owner-freebsd-xen@FreeBSD.ORG Sun Dec 18 19:14:43 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E8BF71065672 for ; Sun, 18 Dec 2011 19:14:43 +0000 (UTC) (envelope-from alc@rice.edu) Received: from mh4.mail.rice.edu (mh4.mail.rice.edu [128.42.199.11]) by mx1.freebsd.org (Postfix) with ESMTP id B24098FC0C for ; Sun, 18 Dec 2011 19:14:42 +0000 (UTC) Received: from mh4.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh4.mail.rice.edu (Postfix) with ESMTP id 35418291B71; Sun, 18 Dec 2011 13:14:42 -0600 (CST) Received: from mh4.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh4.mail.rice.edu (Postfix) with ESMTP id 1E3052975CD; Sun, 18 Dec 2011 13:14:42 -0600 (CST) X-Virus-Scanned: by amavis-2.6.4 at mh4.mail.rice.edu, auth channel Received: from mh4.mail.rice.edu ([127.0.0.1]) by mh4.mail.rice.edu (mh4.mail.rice.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id l7Hv7b6Fi68a; Sun, 18 Dec 2011 13:14:42 -0600 (CST) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) (Authenticated sender: alc) by mh4.mail.rice.edu (Postfix) with ESMTPSA id 72EC6291B71; Sun, 18 Dec 2011 13:14:41 -0600 (CST) Message-ID: <4EEE3B9F.2000104@rice.edu> Date: Sun, 18 Dec 2011 13:14:39 -0600 From: Alan Cox User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:8.0) Gecko/20111113 Thunderbird/8.0 MIME-Version: 1.0 To: Sean Bruno References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> In-Reply-To: <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Alan Cox , "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Dec 2011 19:14:44 -0000 On 12/17/2011 18:56, Sean Bruno wrote: > On Fri, 2011-12-16 at 11:32 -0800, Alan Cox wrote: >> Is anyone here actively working on fixing problems with SMP support >> under PV i386? While doing some other maintenance on the >> vm_page_alloc() callers in the source tree, I happened to take a look at >> cpu_initialize_context() in mp_machdep.c. This function is involved in >> bringing up the 2nd, 3rd, etc. CPUs on an SMP system. I spotted a >> couple obvious errors. First, the size parameter given to kmem_*() >> functions is expected to be in terms of bytes and not pages. Second, I >> believe that PV i386 requires PAE to be used. If so, there are out of >> range accesses to the array m[]. >> >> Index: i386/xen/mp_machdep.c >> =================================================================== >> --- i386/xen/mp_machdep.c (revision 228561) >> +++ i386/xen/mp_machdep.c (working copy) >> @@ -810,7 +810,7 @@ cpu_initialize_context(unsigned int cpu) >> { >> /* vcpu_guest_context_t is too large to allocate on the stack. >> * Hence we allocate statically and protect it with a lock */ >> - vm_page_t m[4]; >> + vm_page_t m[NPGPTD + 2]; >> static vcpu_guest_context_t ctxt; >> vm_offset_t boot_stack; >> vm_offset_t newPTD; >> @@ -831,8 +831,8 @@ cpu_initialize_context(unsigned int cpu) >> pmap_zero_page(m[i]); >> >> } >> - boot_stack = kmem_alloc_nofault(kernel_map, 1); >> - newPTD = kmem_alloc_nofault(kernel_map, NPGPTD); >> + boot_stack = kmem_alloc_nofault(kernel_map, PAGE_SIZE); >> + newPTD = kmem_alloc_nofault(kernel_map, NPGPTD * PAGE_SIZE); >> ma[0] = VM_PAGE_TO_MACH(m[0])|PG_V; >> >> #ifdef PAE >> @@ -854,7 +854,7 @@ cpu_initialize_context(unsigned int cpu) >> nkpt*sizeof(vm_paddr_t)); >> >> pmap_qremove(newPTD, 4); >> - kmem_free(kernel_map, newPTD, 4); >> + kmem_free(kernel_map, newPTD, 4 * PAGE_SIZE); >> /* >> * map actual idle stack to boot_stack >> */ > > This seems happy on our ref9 VMs. I don't suppose this means I can go > above 768M of Ram now? It's not clear to me that this test actually exercised the function that I changed, which is only executed when you spin up a 2nd, 3rd, etc. processor, and it runs only on those processors. Am I missing something? Alan > > [root@xen1 sbruno]# /usr/sbin/xm create -c ref9-xen32 > Using config file "/etc/xen/ref9-xen32". > Started domain ref9-xen32 (id=106) > WARNING: loader(8) metadata is missing! > GDB: no debug ports present > KDB: debugger backends: ddb > KDB: current backend: ddb > Copyright (c) 1992-2011 The FreeBSD Project. > Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 > The Regents of the University of California. All rights > reserved. > FreeBSD is a registered trademark of The FreeBSD Foundation. > FreeBSD 9.0-PRERELEASE #0: Sat Dec 17 16:13:02 PST 2011 > > sbruno@ref9-xen32.freebsd.org:/dumpster/scratch/sbruno-scratch/9/sys/i386/compile/XEN i386 > WARNING: WITNESS option enabled, expect reduced performance. > Xen reported: 2493.756 MHz processor. > Timecounter "ixen" frequency 1953125 Hz quality 0 > CPU: Intel(R) Xeon(R) CPU L5420 @ 2.50GHz (2493.76-MHz > 686-class CPU) > Origin = "GenuineIntel" Id = 0x10676 Family = 6 Model = 17 > Stepping = 6 > > Features=0xbfe3fbff > > Features2=0xce3bd > AMD Features=0x20100000 > AMD Features2=0x1 > real memory = 805306368 (768 MB) > avail memory = 776830976 (740 MB) > [XEN] IPI cpu=0 irq=128 vector=RESCHEDULE_VECTOR (0) > [XEN] IPI cpu=0 irq=129 vector=CALL_FUNCTION_VECTOR (1) > [XEN] xen_rtc_probe: probing Hypervisor RTC clock > rtc0: on motherboard > [XEN] xen_rtc_attach: attaching Hypervisor RTC clock > xenstore0: on motherboard > xc0: on motherboard > Event timer "ixen" quality 600 > Timecounters tick every 10.000 msec > xenbusb_front0: on xenstore0 > [XEN] hypervisor wallclock nudged; nudging TOD. > xn0: at device/vif/0 on xenbusb_front0 > xn0: Ethernet address: 00:16:3e:00:00:03 > xenbusb_back0: on xenstore0 > xctrl0: on xenstore0 > xn0: backend features: feature-sg feature-gso-tcp4 > xbd0: 10240MB at device/vbd/768 on xenbusb_front0 > xbd0: attaching as ad0 > Timecounter "TSC" frequency 2493756000 Hz quality 800 > WARNING: WITNESS option enabled, expect reduced performance. > Trying to mount root from ufs:/dev/ad0p2 []... > rtc0: [XEN] xen_rtc_gettime > rtc0: [XEN] xen_rtc_gettime: wallclock 1313550543 sec; 871707442 nsec > rtc0: [XEN] xen_rtc_gettime: uptime 10619933 sec; 620343100 nsec > rtc0: [XEN] xen_rtc_gettime: TOD 1324170477 sec; 492050542 nsec > Setting hostuuid: 1c127834-ab5a-c2e4-7b24-5ea29d364d9d. > Setting hostid: 0xdea9fbfd. > Entropy harvesting: interrupts ethernet point_to_point kickstart. > Starting file system checks: > /dev/ad0p2: FILE SYSTEM CLEAN; SKIPPING CHECKS > /dev/ad0p2: clean, 1874771 free (883 frags, 234236 blocks, 0.0% > fragmentation) > Mounting local file systems:. > Setting hostname: ref9-xen32.freebsd.org. > xn0: link state changed to DOWN > xn0: link state changed to UP > Starting Network: lo0 xn0. > lo0: flags=8049 metric 0 mtu 16384 > options=3 > inet6 ::1 prefixlen 128 > inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 > inet 127.0.0.1 netmask 0xff000000 > nd6 options=21 > xn0: flags=8843 metric 0 mtu > 1500 > options=503 > ether 00:16:3e:00:00:03 > nd6 options=29 > media: Ethernet manual > status: active > Starting devd. > DHCPDISCOVER on xn0 to 255.255.255.255 port 67 interval 4 > DHCPOFFER from 69.147.83.62 > DHCPREQUEST on xn0 to 255.255.255.255 port 67 > DHCPACK from 69.147.83.62 > bound to 69.147.83.99 -- renewal in 900 seconds. > add net ::ffff:0.0.0.0: gateway ::1 > add net ::0.0.0.0: gateway ::1 > add net fe80::: gateway ::1 > add net ff02::: gateway ::1 > Waiting 30s for the default route > interface: ............................. > Mounting NFS file systems:. > ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib > a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout > Creating and/or trimming log files. > Starting syslogd. > No core dumps found. > Setting date via ntp. > rtc0: [XEN] xen_rtc_settime > 17 Dec 16:55:16 ntpdate[703]: step time server 69.147.83.54 offset > -29601.428874 sec > NFS access cache time=60 > Setting NIS domain: freebsd. > Starting rpcbind. > Starting ypbind. > Clearing /tmp (X related). > Updating motd:. > Starting ntpd. > Starting sshd. > Starting cron. > Starting background file system checks in 60 seconds. > > Sat Dec 17 16:55:17 PST 2011 > > FreeBSD/i386 (ref9-xen32.freebsd.org) (xc0) > > login: > > > > From owner-freebsd-xen@FreeBSD.ORG Mon Dec 19 11:07:20 2011 Return-Path: Delivered-To: freebsd-xen@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8DE87106566B for ; Mon, 19 Dec 2011 11:07:20 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 7B52B8FC15 for ; Mon, 19 Dec 2011 11:07:20 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id pBJB7KVf011149 for ; Mon, 19 Dec 2011 11:07:20 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id pBJB7Jx5011147 for freebsd-xen@FreeBSD.org; Mon, 19 Dec 2011 11:07:19 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 19 Dec 2011 11:07:19 GMT Message-Id: <201112191107.pBJB7Jx5011147@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-xen@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-xen@FreeBSD.org X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Dec 2011 11:07:20 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o kern/161318 xen [xen] sysinstall crashes with floating point exception o kern/155468 xen [xen] Xen PV i386 multi-kernel CPU system is not worki o kern/155353 xen [xen] [patch] put "nudging TOD" message under boot_ver o kern/154833 xen [xen]: xen 4.0 - DomU freebsd8.2RC3 i386, XEN kernel. o kern/154473 xen [xen] xen 4.0 - DomU freebsd8.1 i386, XEN kernel. Not o kern/154472 xen [xen] xen 4.0 - DomU freebsd8.1 i386 xen kernel reboot o kern/154428 xen [xen] xn0 network interface and PF - Massive performan o kern/153789 xen [xen] [regression] FreeBSD 8.2-RC1 crashes under Solar o kern/153674 xen [xen] i386/XEN idle thread shows wrong percentages o kern/153672 xen [xen] [panic] i386/XEN panics under heavy fork load o kern/153620 xen [xen] Xen guest system clock drifts in AWS EC2 (FreeBS o kern/153477 xen [xen] XEN pmap code abuses vm page queue lock o kern/153150 xen [xen] xen/ec2: disable checksum offloading on interfac o kern/152228 xen [xen] [panic] Xen/PV panic with machdep.idle_mwait=1 o kern/144629 xen [xen] FreeBSD 8-RELEASE XEN pvm networking doesn't wor o kern/143398 xen [xen] FreeBSD 8-RELEASE XEN pvm networking doesn't wor o kern/143340 xen [xen] FreeBSD 8-RELEASE XEN pvm networking doesn't wor f kern/143069 xen [xen] [panic] Xen Kernel Panic - Memory modified after f kern/135667 xen ufs filesystem corruption on XEN DomU system f kern/135421 xen [xen] FreeBSD Xen PVM DomU network failure - netfronc. f kern/135178 xen [xen] Xen domU outgoing data transfer stall when TSO i p kern/135069 xen [xen] FreeBSD-current/Xen SMP doesn't function at all f i386/124516 xen [xen] FreeBSD-CURRENT Xen Kernel Segfaults when config o kern/118734 xen [xen] FreeBSD 6.3-RC1 and FreeBSD 7.0-BETA 4 fail to b 24 problems total. From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 00:09:38 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EFFF1065679; Tue, 20 Dec 2011 00:09:38 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout1-b.corp.bf1.yahoo.com (mrout1-b.corp.bf1.yahoo.com [98.139.253.104]) by mx1.freebsd.org (Postfix) with ESMTP id 30A388FC15; Tue, 20 Dec 2011 00:09:37 +0000 (UTC) Received: from [127.0.0.1] (proxy6.corp.yahoo.com [216.145.48.19]) by mrout1-b.corp.bf1.yahoo.com (8.14.4/8.14.4/y.out) with ESMTP id pBK09MWR086718; Mon, 19 Dec 2011 16:09:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yahoo-inc.com; s=cobra; t=1324339764; bh=dOdzDojVqPiYATIaV3gZ0crFkZPgXYDWCNW/sfT2ENo=; h=Subject:From:To:Cc:In-Reply-To:References:Content-Type:Date: Message-ID:Mime-Version:Content-Transfer-Encoding; b=ESvIbX5mSJJzbXVvPVTMx2os/Mos/IWENmcnIE1a0hi/t7t3E3fSxKbZOZDFSDbn6 UmOVi+fihfatUXElD069QyoYB/GwwVssJ6LLPPc8IG7Mujo3uTodVGXGejXwM6R1rw paojihLXtICN3JxlVqBfTG1WR+SSEGa1jtVbYOZ0= From: Sean Bruno To: Colin Percival In-Reply-To: <4EED4982.3080208@freebsd.org> References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> Content-Type: text/plain; charset="UTF-8" Date: Mon, 19 Dec 2011 16:09:22 -0800 Message-ID: <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" , Alan Cox Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 00:09:38 -0000 On Sat, 2011-12-17 at 18:01 -0800, Colin Percival wrote: > On 12/17/11 16:56, Sean Bruno wrote: > > This seems happy on our ref9 VMs. I don't suppose this means I can go > > above 768M of Ram now? > > Can't hurt to try... whatever the problem is with our code and large > amounts of RAM, the fact that it's an insta-panic during paging setup > suggests that it's something at a similar level of fail. > Nope, insta panic ... early though. 768M works, 1024M panics. [root@xen1 sbruno]# /usr/sbin/xm create -c ref9-xen32 Using config file "/etc/xen/ref9-xen32". Started domain ref9-xen32 (id=109) WARNING: loader(8) metadata is missing! GDB: no debug ports present KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2011 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 9.0-PRERELEASE #0: Sat Dec 17 16:13:02 PST 2011 sbruno@ref9-xen32.freebsd.org:/dumpster/scratch/sbruno-scratch/9/sys/i386/compile/XEN i386 WARNING: WITNESS option enabled, expect reduced performance. panic: pmap_init: page table page is out of range cpuid = 0 KDB: enter: panic [ thread pid 0 tid 0 ] Stopped at 0xc0181d7a: movl $0,0xc0478174 From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 09:02:55 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 818CF106564A; Tue, 20 Dec 2011 09:02:55 +0000 (UTC) (envelope-from alc@rice.edu) Received: from mh2.mail.rice.edu (mh2.mail.rice.edu [128.42.201.21]) by mx1.freebsd.org (Postfix) with ESMTP id 231938FC08; Tue, 20 Dec 2011 09:02:55 +0000 (UTC) Received: from mh2.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh2.mail.rice.edu (Postfix) with ESMTP id 987CB291F19; Tue, 20 Dec 2011 03:02:54 -0600 (CST) Received: from mh2.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh2.mail.rice.edu (Postfix) with ESMTP id 85138297607; Tue, 20 Dec 2011 03:02:54 -0600 (CST) X-Virus-Scanned: by amavis-2.6.4 at mh2.mail.rice.edu, auth channel Received: from mh2.mail.rice.edu ([127.0.0.1]) by mh2.mail.rice.edu (mh2.mail.rice.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id qd3Q-C479OIv; Tue, 20 Dec 2011 03:02:54 -0600 (CST) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) (Authenticated sender: alc) by mh2.mail.rice.edu (Postfix) with ESMTPSA id D6955291F19; Tue, 20 Dec 2011 03:02:53 -0600 (CST) Message-ID: <4EF04F3C.9010309@rice.edu> Date: Tue, 20 Dec 2011 03:02:52 -0600 From: Alan Cox User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:8.0) Gecko/20111113 Thunderbird/8.0 MIME-Version: 1.0 To: Sean Bruno References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> In-Reply-To: <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> Content-Type: multipart/mixed; boundary="------------070407040800020809060200" Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 09:02:55 -0000 This is a multi-part message in MIME format. --------------070407040800020809060200 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12/19/2011 18:09, Sean Bruno wrote: > On Sat, 2011-12-17 at 18:01 -0800, Colin Percival wrote: >> On 12/17/11 16:56, Sean Bruno wrote: >>> This seems happy on our ref9 VMs. I don't suppose this means I can go >>> above 768M of Ram now? >> Can't hurt to try... whatever the problem is with our code and large >> amounts of RAM, the fact that it's an insta-panic during paging setup >> suggests that it's something at a similar level of fail. >> > Nope, insta panic ... early though. 768M works, 1024M panics. > > > > [root@xen1 sbruno]# /usr/sbin/xm create -c ref9-xen32 > Using config file "/etc/xen/ref9-xen32". > Started domain ref9-xen32 (id=109) > WARNING: loader(8) metadata is missing! > GDB: no debug ports present > KDB: debugger backends: ddb > KDB: current backend: ddb > Copyright (c) 1992-2011 The FreeBSD Project. > Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 > The Regents of the University of California. All rights > reserved. > FreeBSD is a registered trademark of The FreeBSD Foundation. > FreeBSD 9.0-PRERELEASE #0: Sat Dec 17 16:13:02 PST 2011 > > sbruno@ref9-xen32.freebsd.org:/dumpster/scratch/sbruno-scratch/9/sys/i386/compile/XEN i386 > WARNING: WITNESS option enabled, expect reduced performance. > panic: pmap_init: page table page is out of range > cpuid = 0 > KDB: enter: panic > [ thread pid 0 tid 0 ] > Stopped at 0xc0181d7a: movl $0,0xc0478174 > > > The code that panics shouldn't even exist in the Xen pmap. Try the attached patch. Alan --------------070407040800020809060200 Content-Type: text/plain; name="xen-pmap.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="xen-pmap.c" SW5kZXg6IHZtL3ZtX21hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHZtL3ZtX21hcC5jCShyZXZp c2lvbiAyMjg1NzApCisrKyB2bS92bV9tYXAuYwkod29ya2luZyBjb3B5KQpAQCAtNzgsNiAr NzgsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8c3lzL3JhY2N0Lmg+ CiAjaW5jbHVkZSA8c3lzL3Jlc291cmNldmFyLmg+CiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4K KyNpbmNsdWRlIDxzeXMvc2J1Zi5oPgkvKiBGb3Igc3lzY3RsX2tlcm5lbF9tYXAoKSAqLwog I2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KICNpbmNsdWRlIDxzeXMvc3lzZW50Lmg+CiAjaW5j bHVkZSA8c3lzL3NobS5oPgpAQCAtMzg5MCw2ICszODkxLDY1IEBAIHZtX21hcF9sb29rdXBf ZG9uZSh2bV9tYXBfdCBtYXAsIHZtX21hcF9lbnRyeV90IGVuCiAJdm1fbWFwX3VubG9ja19y ZWFkKG1hcCk7CiB9CiAKK3N0YXRpYyBpbnQgc3lzY3RsX2tlcm5lbF9tYXAoU1lTQ1RMX0hB TkRMRVJfQVJHUyk7CitTWVNDVExfT0lEKF92bSwgT0lEX0FVVE8sIGtlcm5lbF9tYXAsIENU TFRZUEVfU1RSSU5HIHwgQ1RMRkxBR19SRCwKKyAgICBOVUxMLCAwLCBzeXNjdGxfa2VybmVs X21hcCwgIkEiLCAiS2VybmVsIE1hcCBJbmZvIik7CisKK3N0YXRpYyBpbnQKK3N5c2N0bF9r ZXJuZWxfbWFwKFNZU0NUTF9IQU5ETEVSX0FSR1MpCit7CisJc3RydWN0IHNidWYgc2J1ZjsK Kwl2bV9tYXBfZW50cnlfdCBlbnRyeTsKKwl2bV9vZmZzZXRfdCB2YTsKKwl2bV9wYWRkcl90 IGxvY2tlZF9wYTsKKwl2bV9wYWdlX3QgbTsKKwljaGFyICpjYnVmOworCWNvbnN0IGludCBj YnVmc2l6ZSA9IGtlcm5lbF9tYXAtPm5lbnRyaWVzICogODE7CisJaW50IGVycm9yLCB4LCB5 OworCisJY2J1ZiA9IG1hbGxvYyhjYnVmc2l6ZSwgTV9URU1QLCBNX1dBSVRPSyB8IE1fWkVS Tyk7CisJc2J1Zl9uZXcoJnNidWYsIGNidWYsIGNidWZzaXplLCBTQlVGX0ZJWEVETEVOKTsK Kwlmb3IgKGVudHJ5ID0ga2VybmVsX21hcC0+aGVhZGVyLm5leHQ7IGVudHJ5ICE9ICZrZXJu ZWxfbWFwLT5oZWFkZXI7CisgICAgICAgICAgICBlbnRyeSA9IGVudHJ5LT5uZXh0KSB7CisJ CXggPSB5ID0gMDsKKwkJaWYgKChlbnRyeS0+ZWZsYWdzICYgTUFQX0VOVFJZX0lTX1NVQl9N QVApID09IDApCisJCWZvciAodmEgPSBlbnRyeS0+c3RhcnQ7IHZhIDwgZW50cnktPmVuZDsg dmEgPSAKKyNpZmRlZiBfX2FtZDY0X18KKwkJICAgIHJvdW5kXzJtcGFnZSh2YSArIDEpCisj ZWxzZQorCQkgICAgcm91bmRfNG1wYWdlKHZhICsgMSkKKyNlbmRpZgorCQkgICAgKSB7CisJ CQlpZiAodmEgPT0KKyNpZmRlZiBfX2FtZDY0X18KKwkJCSAgICB0cnVuY18ybXBhZ2UodmEp CisjZWxzZQorCQkJICAgIHRydW5jXzRtcGFnZSh2YSkKKyNlbmRpZgorCQkJICAgICkgewor CQkJCWxvY2tlZF9wYSA9IDA7CisJCQkJeCsrOworCQkJCWlmIChwbWFwX21pbmNvcmUoa2Vy bmVsX3BtYXAsIHZhLCAmbG9ja2VkX3BhKSAmCisJCQkJICAgIE1JTkNPUkVfU1VQRVIpCisJ CQkJCXkrKzsKKwkJCQlpZiAobG9ja2VkX3BhICE9IDApIHsKKwkJCQkJbSA9IFBIWVNfVE9f Vk1fUEFHRShsb2NrZWRfcGEpOworCQkJCQl2bV9wYWdlX3VubG9jayhtKTsKKwkJCQl9CisJ CQl9CisJCX0KKwkJc2J1Zl9wcmludGYoJnNidWYsICJcbnN0YXJ0PSVwLCBlbmQ9JXAsICVz PSVwICglZC8lZCkiLAorICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWVudHJ5LT5zdGFy dCwgKHZvaWQgKillbnRyeS0+ZW5kLAorICAgICAgICAgICAgICAgICAgICAoZW50cnktPmVm bGFncyAmIE1BUF9FTlRSWV9JU19TVUJfTUFQKSA/ICJzdWJtYXAiIDogIm9iamVjdCIsCisg ICAgICAgICAgICAgICAgICAgIGVudHJ5LT5vYmplY3Qudm1fb2JqZWN0LCB4LCB5KTsKKwl9 CisJc2J1Zl9maW5pc2goJnNidWYpOworCWVycm9yID0gU1lTQ1RMX09VVChyZXEsIHNidWZf ZGF0YSgmc2J1ZiksIHNidWZfbGVuKCZzYnVmKSk7CisJc2J1Zl9kZWxldGUoJnNidWYpOwor CWZyZWUoY2J1ZiwgTV9URU1QKTsKKwlyZXR1cm4gKGVycm9yKTsKK30KKwogI2luY2x1ZGUg Im9wdF9kZGIuaCIKICNpZmRlZiBEREIKICNpbmNsdWRlIDxzeXMva2VybmVsLmg+CkluZGV4 OiB2bS92bV9vYmplY3QuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB2bS92bV9vYmplY3QuYwkocmV2 aXNpb24gMjI4NTcwKQorKysgdm0vdm1fb2JqZWN0LmMJKHdvcmtpbmcgY29weSkKQEAgLTEz MDgsNiArMTMwOCwxNCBAQCByZXRyeToKIAkJCVZNX09CSkVDVF9MT0NLKG5ld19vYmplY3Qp OwogCQkJZ290byByZXRyeTsKIAkJfQorI2lmIDAKKyNpZiBWTV9OUkVTRVJWTEVWRUwgPiAw CisJCS8qCisJCSAqIFJlbmFtZSB0aGUgcmVzZXJ2YXRpb24uCisJCSAqLworCQl2bV9yZXNl cnZfcmVuYW1lKG0sIG5ld19vYmplY3QsIG9yaWdfb2JqZWN0LCBvZmZpZHhzdGFydCk7Cisj ZW5kaWYKKyNlbmRpZgogCQl2bV9wYWdlX2xvY2sobSk7CiAJCXZtX3BhZ2VfcmVuYW1lKG0s IG5ld19vYmplY3QsIGlkeCk7CiAJCXZtX3BhZ2VfdW5sb2NrKG0pOwpJbmRleDogaTM4Ni94 ZW4vbXBfbWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGkzODYveGVuL21wX21hY2hkZXAu YwkocmV2aXNpb24gMjI4NTcwKQorKysgaTM4Ni94ZW4vbXBfbWFjaGRlcC5jCSh3b3JraW5n IGNvcHkpCkBAIC04MTAsNyArODEwLDcgQEAgY3B1X2luaXRpYWxpemVfY29udGV4dCh1bnNp Z25lZCBpbnQgY3B1KQogewogCS8qIHZjcHVfZ3Vlc3RfY29udGV4dF90IGlzIHRvbyBsYXJn ZSB0byBhbGxvY2F0ZSBvbiB0aGUgc3RhY2suCiAJICogSGVuY2Ugd2UgYWxsb2NhdGUgc3Rh dGljYWxseSBhbmQgcHJvdGVjdCBpdCB3aXRoIGEgbG9jayAqLwotCXZtX3BhZ2VfdCBtWzRd OworCXZtX3BhZ2VfdCBtW05QR1BURCArIDJdOwogCXN0YXRpYyB2Y3B1X2d1ZXN0X2NvbnRl eHRfdCBjdHh0OwogCXZtX29mZnNldF90IGJvb3Rfc3RhY2s7CiAJdm1fb2Zmc2V0X3QgbmV3 UFREOwpAQCAtODMxLDggKzgzMSw4IEBAIGNwdV9pbml0aWFsaXplX2NvbnRleHQodW5zaWdu ZWQgaW50IGNwdSkKIAkJcG1hcF96ZXJvX3BhZ2UobVtpXSk7CiAKIAl9Ci0JYm9vdF9zdGFj ayA9IGttZW1fYWxsb2Nfbm9mYXVsdChrZXJuZWxfbWFwLCAxKTsKLQluZXdQVEQgPSBrbWVt X2FsbG9jX25vZmF1bHQoa2VybmVsX21hcCwgTlBHUFREKTsKKwlib290X3N0YWNrID0ga21l bV9hbGxvY19ub2ZhdWx0KGtlcm5lbF9tYXAsIFBBR0VfU0laRSk7CisJbmV3UFREID0ga21l bV9hbGxvY19ub2ZhdWx0KGtlcm5lbF9tYXAsIE5QR1BURCAqIFBBR0VfU0laRSk7CiAJbWFb MF0gPSBWTV9QQUdFX1RPX01BQ0gobVswXSl8UEdfVjsKIAogI2lmZGVmIFBBRQkKQEAgLTg1 NCw3ICs4NTQsNyBAQCBjcHVfaW5pdGlhbGl6ZV9jb250ZXh0KHVuc2lnbmVkIGludCBjcHUp CiAJICAgIG5rcHQqc2l6ZW9mKHZtX3BhZGRyX3QpKTsKIAogCXBtYXBfcXJlbW92ZShuZXdQ VEQsIDQpOwotCWttZW1fZnJlZShrZXJuZWxfbWFwLCBuZXdQVEQsIDQpOworCWttZW1fZnJl ZShrZXJuZWxfbWFwLCBuZXdQVEQsIDQgKiBQQUdFX1NJWkUpOwogCS8qCiAJICogbWFwIGFj dHVhbCBpZGxlIHN0YWNrIHRvIGJvb3Rfc3RhY2sKIAkgKi8KSW5kZXg6IGkzODYveGVuL3Bt YXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBpMzg2L3hlbi9wbWFwLmMJKHJldmlzaW9uIDIyODU3 MCkKKysrIGkzODYveGVuL3BtYXAuYwkod29ya2luZyBjb3B5KQpAQCAtMTg0LDkgKzE4NCw2 IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNkZWZpbmUgUFZfU1RBVCh4KQlkbyB7IH0g d2hpbGUgKDApCiAjZW5kaWYKIAotI2RlZmluZQlwYV9pbmRleChwYSkJKChwYSkgPj4gUERS U0hJRlQpCi0jZGVmaW5lCXBhX3RvX3B2aChwYSkJKCZwdl90YWJsZVtwYV9pbmRleChwYSld KQotCiAvKgogICogR2V0IFBERXMgYW5kIFBURXMgZm9yIHVzZXIva2VybmVsIGFkZHJlc3Mg c3BhY2UKICAqLwpAQCAtMjMwLDcgKzIyNyw2IEBAIHN0YXRpYyBpbnQgcGF0X3dvcmtzOwkJ CS8qIElzIHBhZ2UgYXR0cmlidXRlIHRhYmxlCiAgKiBEYXRhIGZvciB0aGUgcHYgZW50cnkg YWxsb2NhdGlvbiBtZWNoYW5pc20KICAqLwogc3RhdGljIGludCBwdl9lbnRyeV9jb3VudCA9 IDAsIHB2X2VudHJ5X21heCA9IDAsIHB2X2VudHJ5X2hpZ2hfd2F0ZXIgPSAwOwotc3RhdGlj IHN0cnVjdCBtZF9wYWdlICpwdl90YWJsZTsKIHN0YXRpYyBpbnQgc2hwZ3BlcnByb2MgPSBQ TUFQX1NIUEdQRVJQUk9DOwogCiBzdHJ1Y3QgcHZfY2h1bmsgKnB2X2NodW5rYmFzZTsJCS8q IEtWQSBibG9jayBmb3IgcHZfY2h1bmtzICovCkBAIC02MzYsMjQgKzYzMiw4IEBAIHBtYXBf cHRlbGlzdF9pbml0KHZtX29mZnNldF90ICpoZWFkLCB2b2lkICpiYXNlLCBpCiB2b2lkCiBw bWFwX2luaXQodm9pZCkKIHsKLQl2bV9wYWdlX3QgbXB0ZTsKLQl2bV9zaXplX3QgczsKLQlp bnQgaSwgcHZfbnBnOwogCiAJLyoKLQkgKiBJbml0aWFsaXplIHRoZSB2bSBwYWdlIGFycmF5 IGVudHJpZXMgZm9yIHRoZSBrZXJuZWwgcG1hcCdzCi0JICogcGFnZSB0YWJsZSBwYWdlcy4K LQkgKi8gCi0JZm9yIChpID0gMDsgaSA8IG5rcHQ7IGkrKykgewotCQltcHRlID0gUEhZU19U T19WTV9QQUdFKHhwbWFwX210b3AoUFREW2kgKyBLUFRESV0gJiBQR19GUkFNRSkpOwotCQlL QVNTRVJUKG1wdGUgPj0gdm1fcGFnZV9hcnJheSAmJgotCQkgICAgbXB0ZSA8ICZ2bV9wYWdl X2FycmF5W3ZtX3BhZ2VfYXJyYXlfc2l6ZV0sCi0JCSAgICAoInBtYXBfaW5pdDogcGFnZSB0 YWJsZSBwYWdlIGlzIG91dCBvZiByYW5nZSIpKTsKLQkJbXB0ZS0+cGluZGV4ID0gaSArIEtQ VERJOwotCQltcHRlLT5waHlzX2FkZHIgPSB4cG1hcF9tdG9wKFBURFtpICsgS1BUREldICYg UEdfRlJBTUUpOwotCX0KLQotICAgICAgICAvKgogCSAqIEluaXRpYWxpemUgdGhlIGFkZHJl c3Mgc3BhY2UgKHpvbmUpIGZvciB0aGUgcHYgZW50cmllcy4gIFNldCBhCiAJICogaGlnaCB3 YXRlciBtYXJrIHNvIHRoYXQgdGhlIHN5c3RlbSBjYW4gcmVjb3ZlciBmcm9tIGV4Y2Vzc2l2 ZQogCSAqIG51bWJlcnMgb2YgcHYgZW50cmllcy4KQEAgLTY2NCwyNiArNjQ0LDYgQEAgcG1h cF9pbml0KHZvaWQpCiAJcHZfZW50cnlfbWF4ID0gcm91bmR1cChwdl9lbnRyeV9tYXgsIF9O UENQVik7CiAJcHZfZW50cnlfaGlnaF93YXRlciA9IDkgKiAocHZfZW50cnlfbWF4IC8gMTAp OwogCi0JLyoKLQkgKiBBcmUgbGFyZ2UgcGFnZSBtYXBwaW5ncyBlbmFibGVkPwotCSAqLwot CVRVTkFCTEVfSU5UX0ZFVENIKCJ2bS5wbWFwLnBnX3BzX2VuYWJsZWQiLCAmcGdfcHNfZW5h YmxlZCk7Ci0KLQkvKgotCSAqIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgcHYgaGVhZCB0 YWJsZSBmb3Igc3VwZXJwYWdlcy4KLQkgKi8KLQlmb3IgKGkgPSAwOyBwaHlzX2F2YWlsW2kg KyAxXTsgaSArPSAyKTsKLQlwdl9ucGcgPSByb3VuZF80bXBhZ2UocGh5c19hdmFpbFsoaSAt IDIpICsgMV0pIC8gTkJQRFI7Ci0KLQkvKgotCSAqIEFsbG9jYXRlIG1lbW9yeSBmb3IgdGhl IHB2IGhlYWQgdGFibGUgZm9yIHN1cGVycGFnZXMuCi0JICovCi0JcyA9ICh2bV9zaXplX3Qp KHB2X25wZyAqIHNpemVvZihzdHJ1Y3QgbWRfcGFnZSkpOwotCXMgPSByb3VuZF9wYWdlKHMp OwotCXB2X3RhYmxlID0gKHN0cnVjdCBtZF9wYWdlICopa21lbV9hbGxvYyhrZXJuZWxfbWFw LCBzKTsKLQlmb3IgKGkgPSAwOyBpIDwgcHZfbnBnOyBpKyspCi0JCVRBSUxRX0lOSVQoJnB2 X3RhYmxlW2ldLnB2X2xpc3QpOwotCiAJcHZfbWF4Y2h1bmtzID0gTUFYKHB2X2VudHJ5X21h eCAvIF9OUENQViwgbWF4cHJvYyk7CiAJcHZfY2h1bmtiYXNlID0gKHN0cnVjdCBwdl9jaHVu ayAqKWttZW1fYWxsb2Nfbm9mYXVsdChrZXJuZWxfbWFwLAogCSAgICBQQUdFX1NJWkUgKiBw dl9tYXhjaHVua3MpOwpAQCAtMzQ0OCwyMSArMzQwOCwxNSBAQCBwbWFwX3BhZ2Vfd2lyZWRf bWFwcGluZ3Modm1fcGFnZV90IG0pCiB9CiAKIC8qCi0gKiBSZXR1cm5zIFRSVUUgaWYgdGhl IGdpdmVuIHBhZ2UgaXMgbWFwcGVkIGluZGl2aWR1YWxseSBvciBhcyBwYXJ0IG9mCi0gKiBh IDRtcGFnZS4gIE90aGVyd2lzZSwgcmV0dXJucyBGQUxTRS4KKyAqIFJldHVybnMgVFJVRSBp ZiB0aGUgZ2l2ZW4gcGFnZSBpcyBtYXBwZWQuICBPdGhlcndpc2UsIHJldHVybnMgRkFMU0Uu CiAgKi8KIGJvb2xlYW5fdAogcG1hcF9wYWdlX2lzX21hcHBlZCh2bV9wYWdlX3QgbSkKIHsK LQlib29sZWFuX3QgcnY7CiAKIAlpZiAoKG0tPm9mbGFncyAmIFZQT19VTk1BTkFHRUQpICE9 IDApCiAJCXJldHVybiAoRkFMU0UpOwotCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKLQlydiA9 ICFUQUlMUV9FTVBUWSgmbS0+bWQucHZfbGlzdCkgfHwKLQkgICAgIVRBSUxRX0VNUFRZKCZw YV90b19wdmgoVk1fUEFHRV9UT19QSFlTKG0pKS0+cHZfbGlzdCk7Ci0Jdm1fcGFnZV91bmxv Y2tfcXVldWVzKCk7Ci0JcmV0dXJuIChydik7CisJcmV0dXJuICghVEFJTFFfRU1QVFkoJm0t Pm1kLnB2X2xpc3QpKTsKIH0KIAogLyoK --------------070407040800020809060200-- From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 13:28:25 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3A072106566B; Tue, 20 Dec 2011 13:28:25 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout1-b.corp.bf1.yahoo.com (mrout1-b.corp.bf1.yahoo.com [98.139.253.104]) by mx1.freebsd.org (Postfix) with ESMTP id 0FF918FC13; Tue, 20 Dec 2011 13:28:24 +0000 (UTC) Received: from [127.0.0.1] (proxy7.corp.yahoo.com [216.145.48.98]) by mrout1-b.corp.bf1.yahoo.com (8.14.4/8.14.4/y.out) with ESMTP id pBKDS5VJ055819; Tue, 20 Dec 2011 05:28:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yahoo-inc.com; s=cobra; t=1324387686; bh=Wov5zuCVdL2FQOaxHoQGYC1Uspwtk2hMk1CgQa3VX70=; h=Subject:From:To:Cc:In-Reply-To:References:Content-Type:Date: Message-ID:Mime-Version:Content-Transfer-Encoding; b=rScAEh6a1hnNRhu/+Jj0y41kdf20nFRgFRCI5FETFfEn1J5+m3yIoyHojJBlpwh4K hExx1HKqC4QBZGrr4e8LLqjNupkuDIck7I931IcNIECRxebIBOb/+LA3IS0RC0Utm5 ytYKpejoXxtiXykeeMrmnoGjxvxHLmriVU8A2Yf0= From: Sean Bruno To: Alan Cox In-Reply-To: <4EF04F3C.9010309@rice.edu> References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> Content-Type: text/plain; charset="UTF-8" Date: Tue, 20 Dec 2011 05:28:05 -0800 Message-ID: <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 13:28:25 -0000 > > > > The code that panics shouldn't even exist in the Xen pmap. Try the > attached patch. > > Alan > Indeed .... how on earth did we ever use this stuff? :-) Tested to 2G on ref9-xen32.f.o .... should I go any higher? Sean [root@xen1 sbruno]# xm create -c ref9-xen32 Using config file "/etc/xen/ref9-xen32". Started domain ref9-xen32 (id=113) WARNING: loader(8) metadata is missing! GDB: no debug ports present KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2011 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 9.0-PRERELEASE #1: Tue Dec 20 04:59:58 PST 2011 sbruno@ref9-xen32.freebsd.org:/dumpster/scratch/sbruno-scratch/9/sys/i386/compile/XEN i386 WARNING: WITNESS option enabled, expect reduced performance. Xen reported: 2493.750 MHz processor. Timecounter "ixen" frequency 1953125 Hz quality 0 CPU: Intel(R) Xeon(R) CPU L5420 @ 2.50GHz (2493.75-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x10676 Family = 6 Model = 17 Stepping = 6 Features=0xbfe3fbff Features2=0xce3bd AMD Features=0x20100000 AMD Features2=0x1 real memory = 2147483648 (2048 MB) avail memory = 2092331008 (1995 MB) [XEN] IPI cpu=0 irq=128 vector=RESCHEDULE_VECTOR (0) [XEN] IPI cpu=0 irq=129 vector=CALL_FUNCTION_VECTOR (1) [XEN] xen_rtc_probe: probing Hypervisor RTC clock rtc0: on motherboard [XEN] xen_rtc_attach: attaching Hypervisor RTC clock xenstore0: on motherboard xc0: on motherboard Event timer "ixen" quality 600 Timecounters tick every 10.000 msec xenbusb_front0: on xenstore0 [XEN] hypervisor wallclock nudged; nudging TOD. xn0: at device/vif/0 on xenbusb_front0 xn0: Ethernet address: 00:16:3e:00:00:03 xenbusb_back0: on xenstore0 xctrl0: on xenstore0 xn0: backend features: feature-sg feature-gso-tcp4 xbd0: 10240MB at device/vbd/768 on xenbusb_front0 xbd0: attaching as ad0 Timecounter "TSC" frequency 2493750000 Hz quality 800 WARNING: WITNESS option enabled, expect reduced performance. Trying to mount root from ufs:/dev/ad0p2 []... rtc0: [XEN] xen_rtc_gettime rtc0: [XEN] xen_rtc_gettime: wallclock 1313550543 sec; 871707442 nsec rtc0: [XEN] xen_rtc_gettime: uptime 10837322 sec; 93904105 nsec rtc0: [XEN] xen_rtc_gettime: TOD 1324387865 sec; 965611547 nsec Setting hostuuid: 1c127834-ab5a-c2e4-7b24-5ea29d364d9d. Setting hostid: 0xdea9fbfd. Entropy harvesting: interrupts ethernet point_to_point kickstart. Starting file system checks: /dev/ad0p2: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/ad0p2: clean, 1874750 free (878 frags, 234234 blocks, 0.0% fragmentation) Mounting local file systems:. Setting hostname: ref9-xen32.freebsd.org. xn0: link state changed to DOWN xn0: link state changed to UP Starting Network: lo0 xn0. lo0: flags=8049 metric 0 mtu 16384 options=3 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet 127.0.0.1 netmask 0xff000000 nd6 options=21 xn0: flags=8843 metric 0 mtu 1500 options=503 ether 00:16:3e:00:00:03 nd6 options=29 media: Ethernet manual status: active Starting devd. DHCPREQUEST on xn0 to 255.255.255.255 port 67 DHCPACK from 69.147.83.62 bound to 69.147.83.99 -- renewal in 900 seconds. add net ::ffff:0.0.0.0: gateway ::1 add net ::0.0.0.0: gateway ::1 add net fe80::: gateway ::1 add net ff02::: gateway ::1 Waiting 30s for the default route interface: ............................. Mounting NFS file systems:. ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout Creating and/or trimming log files. Starting syslogd. No core dumps found. Setting date via ntp. rtc0: [XEN] xen_rtc_settime 20 Dec 05:18:03 ntpdate[689]: step time server 69.147.83.54 offset -29618.895999 sec NFS access cache time=60 Setting NIS domain: freebsd. Starting rpcbind. Starting ypbind. Clearing /tmp (X related). Updating motd:. Starting ntpd. Starting sshd. Starting cron. Starting background file system checks in 60 seconds. Tue Dec 20 05:18:04 PST 2011 FreeBSD/i386 (ref9-xen32.freebsd.org) (xc0) login: From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 18:50:02 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F1AA106564A; Tue, 20 Dec 2011 18:50:02 +0000 (UTC) (envelope-from alc@rice.edu) Received: from mh5.mail.rice.edu (mh5.mail.rice.edu [128.42.199.32]) by mx1.freebsd.org (Postfix) with ESMTP id 9F4FB8FC17; Tue, 20 Dec 2011 18:50:01 +0000 (UTC) Received: from mh5.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh5.mail.rice.edu (Postfix) with ESMTP id 38A81291035; Tue, 20 Dec 2011 12:50:01 -0600 (CST) Received: from mh5.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh5.mail.rice.edu (Postfix) with ESMTP id 2A917291029; Tue, 20 Dec 2011 12:50:01 -0600 (CST) X-Virus-Scanned: by amavis-2.6.4 at mh5.mail.rice.edu, auth channel Received: from mh5.mail.rice.edu ([127.0.0.1]) by mh5.mail.rice.edu (mh5.mail.rice.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id yMT5-M1hiL3r; Tue, 20 Dec 2011 12:50:01 -0600 (CST) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) (Authenticated sender: alc) by mh5.mail.rice.edu (Postfix) with ESMTPSA id A9C1D29101C; Tue, 20 Dec 2011 12:50:00 -0600 (CST) Message-ID: <4EF0D8D7.2060503@rice.edu> Date: Tue, 20 Dec 2011 12:49:59 -0600 From: Alan Cox User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:8.0) Gecko/20111113 Thunderbird/8.0 MIME-Version: 1.0 To: Sean Bruno References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> In-Reply-To: <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 18:50:02 -0000 On 12/20/2011 07:28, Sean Bruno wrote: >> The code that panics shouldn't even exist in the Xen pmap. Try the >> attached patch. >> >> Alan >> > Indeed .... how on earth did we ever use this stuff? :-) > > Tested to 2G on ref9-xen32.f.o .... should I go any higher? Sure. Right now, I don't know of any reason that it should crash with more memory. :-) Do either of you know if there is a PR in gnats for this 768 MB limitation bug that I should mention in the commit log? Alan From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 19:58:06 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B4ECB106566B; Tue, 20 Dec 2011 19:58:06 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout1-b.corp.bf1.yahoo.com (mrout1-b.corp.bf1.yahoo.com [98.139.253.104]) by mx1.freebsd.org (Postfix) with ESMTP id 6CEB98FC15; Tue, 20 Dec 2011 19:58:06 +0000 (UTC) Received: from [127.0.0.1] (rideseveral.corp.yahoo.com [10.73.160.231]) by mrout1-b.corp.bf1.yahoo.com (8.14.4/8.14.4/y.out) with ESMTP id pBKJvc7W088746; Tue, 20 Dec 2011 11:57:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yahoo-inc.com; s=cobra; t=1324411058; bh=MpmEc90IrQiF/gUvhAx1Ej1zgQk8jq48y0dvd566ts4=; h=Subject:From:To:Cc:In-Reply-To:References:Content-Type:Date: Message-ID:Mime-Version:Content-Transfer-Encoding; b=QZEf0dipuSiReu15I5AknDgqgcr7OtOqBquiuW/yhrqPkLb6rXmOjveMl1P816MOk Yby+fZWE+NFC/uiFV1hIdCxiWJawtB2CO2XHanJ2CgWW+0ogKVecFoT/eI27eRWFSN Ypvna8j4oyMGAk30QkHZoC616sVk4vv1hOzM9w0g= From: Sean Bruno To: Alan Cox In-Reply-To: <4EF0D8D7.2060503@rice.edu> References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> Content-Type: text/plain; charset="UTF-8" Date: Tue, 20 Dec 2011 11:57:37 -0800 Message-ID: <1324411057.12783.8.camel@hitfishpass-lx.corp.yahoo.com> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 19:58:06 -0000 On Tue, 2011-12-20 at 10:49 -0800, Alan Cox wrote: > On 12/20/2011 07:28, Sean Bruno wrote: > >> The code that panics shouldn't even exist in the Xen pmap. Try the > >> attached patch. > >> > >> Alan > >> > > Indeed .... how on earth did we ever use this stuff? :-) > > > > Tested to 2G on ref9-xen32.f.o .... should I go any higher? > > Sure. Right now, I don't know of any reason that it should crash with > more memory. :-) > > Do either of you know if there is a PR in gnats for this 768 MB > limitation bug that I should mention in the commit log? > > Alan > No, I just checked and I didn't put a PR in ... lame. I think I discussed it with colin or kip, but I don't remember if we ever figured out anything else. Sean From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 20:09:54 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F3DB4106566B; Tue, 20 Dec 2011 20:09:53 +0000 (UTC) (envelope-from alc@rice.edu) Received: from mh4.mail.rice.edu (mh4.mail.rice.edu [128.42.199.11]) by mx1.freebsd.org (Postfix) with ESMTP id 84E1F8FC13; Tue, 20 Dec 2011 20:09:53 +0000 (UTC) Received: from mh4.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh4.mail.rice.edu (Postfix) with ESMTP id 0450D291BFA; Tue, 20 Dec 2011 14:09:51 -0600 (CST) Received: from mh4.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh4.mail.rice.edu (Postfix) with ESMTP id ED13C2975CD; Tue, 20 Dec 2011 14:09:50 -0600 (CST) X-Virus-Scanned: by amavis-2.6.4 at mh4.mail.rice.edu, auth channel Received: from mh4.mail.rice.edu ([127.0.0.1]) by mh4.mail.rice.edu (mh4.mail.rice.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id 5TaqMV4zz8p0; Tue, 20 Dec 2011 14:09:50 -0600 (CST) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) (Authenticated sender: alc) by mh4.mail.rice.edu (Postfix) with ESMTPSA id 81371291BF8; Tue, 20 Dec 2011 14:09:50 -0600 (CST) Message-ID: <4EF0EB8D.2020703@rice.edu> Date: Tue, 20 Dec 2011 14:09:49 -0600 From: Alan Cox User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:8.0) Gecko/20111113 Thunderbird/8.0 MIME-Version: 1.0 To: Sean Bruno References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <1324411057.12783.8.camel@hitfishpass-lx.corp.yahoo.com> In-Reply-To: <1324411057.12783.8.camel@hitfishpass-lx.corp.yahoo.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 20:09:54 -0000 On 12/20/2011 13:57, Sean Bruno wrote: > On Tue, 2011-12-20 at 10:49 -0800, Alan Cox wrote: >> On 12/20/2011 07:28, Sean Bruno wrote: >>>> The code that panics shouldn't even exist in the Xen pmap. Try the >>>> attached patch. >>>> >>>> Alan >>>> >>> Indeed .... how on earth did we ever use this stuff? :-) >>> >>> Tested to 2G on ref9-xen32.f.o .... should I go any higher? >> Sure. Right now, I don't know of any reason that it should crash with >> more memory. :-) >> >> Do either of you know if there is a PR in gnats for this 768 MB >> limitation bug that I should mention in the commit log? >> >> Alan >> > > No, I just checked and I didn't put a PR in ... lame. > > I think I discussed it with colin or kip, but I don't remember if we > ever figured out anything else. > Ok. I'll commit the patch shortly. (Note that what I'll commit will remove another bit of unnecessary code.) Alan From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 20:13:00 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6EA77106564A for ; Tue, 20 Dec 2011 20:13:00 +0000 (UTC) (envelope-from bounces+73574-ef5a-xen=freebsd.org@sendgrid.me) Received: from o2.shared.sendgrid.net (o2.shared.sendgrid.net [74.63.235.152]) by mx1.freebsd.org (Postfix) with SMTP id 111DC8FC15 for ; Tue, 20 Dec 2011 20:12:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.info; h= message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type:content-transfer-encoding; s=smtpapi; bh=M8GKXv7MGsoWqCIvwY6zNZ9rFow=; b=W3O2HEPlZHTbbjA/rAn7rU77MBSm QBqCd3PkLJirsJNIu/2hSYI8i8cOAUf6pda5bWEOonJv5czgGz2uHBXfxKP1tKTp G2wOSdbUVMajz70Gjz+c8xVZ0LVNiGznPtwptYEYLkhftPmZ/7u8lb7wdpt6SK3V WcveXAlLCTi8naY= Received: by 10.41.149.161 with SMTP id f04-26.22364.4EF0EC296 Tue, 20 Dec 2011 20:12:25 +0000 (UTC) Received: from mail.tarsnap.com (unknown [10.41.149.212]) by i04-04 (SG) with ESMTP id 4ef0eb37.3ac4.180248f for ; Tue, 20 Dec 2011 20:08:23 +0000 (UTC) Received: (qmail 42289 invoked from network); 20 Dec 2011 20:12:23 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by mail.tarsnap.com with ESMTP; 20 Dec 2011 20:12:23 -0000 Received: (qmail 8485 invoked from network); 20 Dec 2011 20:12:11 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by clamshell.daemonology.net with SMTP; 20 Dec 2011 20:12:11 -0000 Message-ID: <4EF0EC1A.4010604@freebsd.org> Date: Tue, 20 Dec 2011 12:12:10 -0800 From: Colin Percival User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:8.0) Gecko/20111112 Thunderbird/8.0 MIME-Version: 1.0 To: Alan Cox References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> In-Reply-To: <4EF0D8D7.2060503@rice.edu> X-Enigmail-Version: undefined Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Sendgrid-EID: HYUZykSZ9jYPqvLIDxmiHLTFoapJS5N/uhO1I8ZuJQ+5ohGVMRi1Ruo9ri5aybFqiybczIL1XlOAGPFioUx6odC72T6tzgk+yY+N9NZzsF+gTA21GeRi7SFYEXoRevoBTJCbETdBjzHTL3uVqqJJ3w== X-SendGrid-Contentd-ID: {"test_id":1324411979} Cc: Sean Bruno , "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 20:13:00 -0000 On 12/20/11 10:49, Alan Cox wrote: > Do either of you know if there is a PR in gnats for this 768 MB limitation bug > that I should mention in the commit log? The only one I'm aware of is kern/153789. -- Colin Percival Security Officer, FreeBSD | freebsd.org | The power to serve Founder / author, Tarsnap | tarsnap.com | Online backups for the truly paranoid From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 20:17:50 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88C45106566C; Tue, 20 Dec 2011 20:17:50 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout1-b.corp.bf1.yahoo.com (mrout1-b.corp.bf1.yahoo.com [98.139.253.104]) by mx1.freebsd.org (Postfix) with ESMTP id 3FAE38FC16; Tue, 20 Dec 2011 20:17:49 +0000 (UTC) Received: from [127.0.0.1] (rideseveral.corp.yahoo.com [10.73.160.231]) by mrout1-b.corp.bf1.yahoo.com (8.14.4/8.14.4/y.out) with ESMTP id pBKKHVd9096203; Tue, 20 Dec 2011 12:17:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yahoo-inc.com; s=cobra; t=1324412251; bh=ssHR0R+eW7oosanxzSNTjt+xbk+1PY7Ci38sNb1clUc=; h=Subject:From:To:Cc:In-Reply-To:References:Content-Type:Date: Message-ID:Mime-Version:Content-Transfer-Encoding; b=BvmeYh4udOY3QAZbgfvXmOM78vxL7IThWBiuwa4LXpEbqi3tXVS0mzx2dXDmUzFxN rHBp0HhIjeEgIlJFRhi8mhr4ey0lBCufi1P/dSe2ub4He3YGYJV0fV1Q3cmVma3Djr dqPBS0C+iWmhW2Yd6+JQ5yQF7k1RebIhmeI+u5+c= From: Sean Bruno To: Alan Cox In-Reply-To: <4EF0EB8D.2020703@rice.edu> References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <1324411057.12783.8.camel@hitfishpass-lx.corp.yahoo.com> <4EF0EB8D.2020703@rice.edu> Content-Type: text/plain; charset="UTF-8" Date: Tue, 20 Dec 2011 12:17:30 -0800 Message-ID: <1324412250.12783.9.camel@hitfishpass-lx.corp.yahoo.com> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 20:17:50 -0000 On Tue, 2011-12-20 at 12:09 -0800, Alan Cox wrote: > On 12/20/2011 13:57, Sean Bruno wrote: > > On Tue, 2011-12-20 at 10:49 -0800, Alan Cox wrote: > >> On 12/20/2011 07:28, Sean Bruno wrote: > >>>> The code that panics shouldn't even exist in the Xen pmap. Try the > >>>> attached patch. > >>>> > >>>> Alan > >>>> > >>> Indeed .... how on earth did we ever use this stuff? :-) > >>> > >>> Tested to 2G on ref9-xen32.f.o .... should I go any higher? > >> Sure. Right now, I don't know of any reason that it should crash with > >> more memory. :-) > >> > >> Do either of you know if there is a PR in gnats for this 768 MB > >> limitation bug that I should mention in the commit log? > >> > >> Alan > >> > > > > No, I just checked and I didn't put a PR in ... lame. > > > > I think I discussed it with colin or kip, but I don't remember if we > > ever figured out anything else. > > > > Ok. I'll commit the patch shortly. (Note that what I'll commit will > remove another bit of unnecessary code.) > > Alan > I suspect that this earns you +1 beer at bsdcan this year. Sean From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 20:22:29 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 299D7106564A; Tue, 20 Dec 2011 20:22:29 +0000 (UTC) (envelope-from alc@rice.edu) Received: from mh7.mail.rice.edu (mh7.mail.rice.edu [128.42.199.46]) by mx1.freebsd.org (Postfix) with ESMTP id A524E8FC08; Tue, 20 Dec 2011 20:22:28 +0000 (UTC) Received: from mh7.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh7.mail.rice.edu (Postfix) with ESMTP id 4B818292017; Tue, 20 Dec 2011 14:22:28 -0600 (CST) Received: from mh7.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh7.mail.rice.edu (Postfix) with ESMTP id 39204292018; Tue, 20 Dec 2011 14:22:28 -0600 (CST) X-Virus-Scanned: by amavis-2.6.4 at mh7.mail.rice.edu, auth channel Received: from mh7.mail.rice.edu ([127.0.0.1]) by mh7.mail.rice.edu (mh7.mail.rice.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id JeoKIUuMm7t6; Tue, 20 Dec 2011 14:22:28 -0600 (CST) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) (Authenticated sender: alc) by mh7.mail.rice.edu (Postfix) with ESMTPSA id BD0DC292017; Tue, 20 Dec 2011 14:22:27 -0600 (CST) Message-ID: <4EF0EE83.2060900@rice.edu> Date: Tue, 20 Dec 2011 14:22:27 -0600 From: Alan Cox User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:8.0) Gecko/20111113 Thunderbird/8.0 MIME-Version: 1.0 To: Colin Percival References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <4EF0EC1A.4010604@freebsd.org> In-Reply-To: <4EF0EC1A.4010604@freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Sean Bruno , "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 20:22:29 -0000 On 12/20/2011 14:12, Colin Percival wrote: > On 12/20/11 10:49, Alan Cox wrote: >> Do either of you know if there is a PR in gnats for this 768 MB limitation bug >> that I should mention in the commit log? > The only one I'm aware of is kern/153789. > Oops. I've already committed the change. Anyway, I'll change that PR's state to patched. Alan From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 20:25:07 2011 Return-Path: Delivered-To: freebsd-xen@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 660391065675; Tue, 20 Dec 2011 20:25:07 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 35A218FC15; Tue, 20 Dec 2011 20:25:07 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id pBKKP7Df014590; Tue, 20 Dec 2011 20:25:07 GMT (envelope-from alc@freefall.freebsd.org) Received: (from alc@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id pBKKP6cu014586; Tue, 20 Dec 2011 20:25:06 GMT (envelope-from alc) Date: Tue, 20 Dec 2011 20:25:06 GMT Message-Id: <201112202025.pBKKP6cu014586@freefall.freebsd.org> To: gadm@avalon-island.ru, alc@FreeBSD.org, freebsd-xen@FreeBSD.org From: alc@FreeBSD.org Cc: Subject: Re: kern/153789: [xen] [regression] FreeBSD 8.2-RC1 crashes under Solaris/Xen while FreeBSD 8.1-p2 does not. X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 20:25:07 -0000 Synopsis: [xen] [regression] FreeBSD 8.2-RC1 crashes under Solaris/Xen while FreeBSD 8.1-p2 does not. State-Changed-From-To: open->patched State-Changed-By: alc State-Changed-When: Tue Dec 20 20:23:47 UTC 2011 State-Changed-Why: A fix was applied to HEAD in r228746. http://www.freebsd.org/cgi/query-pr.cgi?pr=153789 From owner-freebsd-xen@FreeBSD.ORG Tue Dec 20 20:25:46 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D6BA106564A; Tue, 20 Dec 2011 20:25:46 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout1-b.corp.bf1.yahoo.com (mrout1-b.corp.bf1.yahoo.com [98.139.253.104]) by mx1.freebsd.org (Postfix) with ESMTP id 3C6778FC0C; Tue, 20 Dec 2011 20:25:45 +0000 (UTC) Received: from [127.0.0.1] (rideseveral.corp.yahoo.com [10.73.160.231]) by mrout1-b.corp.bf1.yahoo.com (8.14.4/8.14.4/y.out) with ESMTP id pBKKPJKM098917; Tue, 20 Dec 2011 12:25:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yahoo-inc.com; s=cobra; t=1324412719; bh=thXwnPxC+zp5iRPc92/3R11fqinOQwF0ciXDTtrfz5c=; h=Subject:From:To:Cc:In-Reply-To:References:Content-Type:Date: Message-ID:Mime-Version:Content-Transfer-Encoding; b=QmFdg2tAZug3nCmSFodgkOglWbiUojOvcqmmRQE2ISrAHxcuNhVl/PkdpUTJix2nW rV2DhVt9q/G3Hf3LN8Wqvp6cxgDQ6lBJrQ+uCJ1JVxC0qGhQvajAmgpMJaNP0qmU68 DmhlAIXqNBhEwK8RuMynlfpDfHRJ5xPKkbza40nU= From: Sean Bruno To: Colin Percival In-Reply-To: <4EF0EC1A.4010604@freebsd.org> References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <4EF0EC1A.4010604@freebsd.org> Content-Type: text/plain; charset="UTF-8" Date: Tue, 20 Dec 2011 12:25:18 -0800 Message-ID: <1324412718.12783.10.camel@hitfishpass-lx.corp.yahoo.com> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" , Alan Cox Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Dec 2011 20:25:46 -0000 On Tue, 2011-12-20 at 12:12 -0800, Colin Percival wrote: > kern/153789. Yeah, that's definitely this issue. Sean From owner-freebsd-xen@FreeBSD.ORG Wed Dec 21 00:56:15 2011 Return-Path: Delivered-To: freebsd-xen@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 89F16106566C; Wed, 21 Dec 2011 00:56:15 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 5BB6D8FC13; Wed, 21 Dec 2011 00:56:15 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id pBL0uF2R066216; Wed, 21 Dec 2011 00:56:15 GMT (envelope-from eadler@freefall.freebsd.org) Received: (from eadler@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id pBL0uFb1066212; Wed, 21 Dec 2011 00:56:15 GMT (envelope-from eadler) Date: Wed, 21 Dec 2011 00:56:15 GMT Message-Id: <201112210056.pBL0uFb1066212@freefall.freebsd.org> To: eadler@FreeBSD.org, freebsd-xen@FreeBSD.org, alc@FreeBSD.org From: eadler@FreeBSD.org Cc: Subject: Re: kern/153789: [xen] [regression] FreeBSD 8.2-RC1 crashes under Solaris/Xen while FreeBSD 8.1-p2 does not. X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Dec 2011 00:56:15 -0000 Synopsis: [xen] [regression] FreeBSD 8.2-RC1 crashes under Solaris/Xen while FreeBSD 8.1-p2 does not. Responsible-Changed-From-To: freebsd-xen->alc Responsible-Changed-By: eadler Responsible-Changed-When: Wed Dec 21 00:56:14 UTC 2011 Responsible-Changed-Why: hand over to committer http://www.freebsd.org/cgi/query-pr.cgi?pr=153789 From owner-freebsd-xen@FreeBSD.ORG Wed Dec 21 20:47:19 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DB82C106566B; Wed, 21 Dec 2011 20:47:19 +0000 (UTC) (envelope-from alc@rice.edu) Received: from mh8.mail.rice.edu (mh8.mail.rice.edu [128.42.201.24]) by mx1.freebsd.org (Postfix) with ESMTP id 180308FC08; Wed, 21 Dec 2011 20:47:19 +0000 (UTC) Received: from mh8.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh8.mail.rice.edu (Postfix) with ESMTP id 94696291CD3; Wed, 21 Dec 2011 14:47:18 -0600 (CST) Received: from mh8.mail.rice.edu (localhost.localdomain [127.0.0.1]) by mh8.mail.rice.edu (Postfix) with ESMTP id 82FD729761F; Wed, 21 Dec 2011 14:47:18 -0600 (CST) X-Virus-Scanned: by amavis-2.6.4 at mh8.mail.rice.edu, auth channel Received: from mh8.mail.rice.edu ([127.0.0.1]) by mh8.mail.rice.edu (mh8.mail.rice.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id hQzlSnOjMHtH; Wed, 21 Dec 2011 14:47:18 -0600 (CST) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) (Authenticated sender: alc) by mh8.mail.rice.edu (Postfix) with ESMTPSA id BE3E9291CD1; Wed, 21 Dec 2011 14:47:14 -0600 (CST) Message-ID: <4EF245D1.2050503@rice.edu> Date: Wed, 21 Dec 2011 14:47:13 -0600 From: Alan Cox User-Agent: Mozilla/5.0 (X11; FreeBSD i386; rv:8.0) Gecko/20111113 Thunderbird/8.0 MIME-Version: 1.0 To: Sean Bruno References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <4EF0EC1A.4010604@freebsd.org> <1324412718.12783.10.camel@hitfishpass-lx.corp.yahoo.com> In-Reply-To: <1324412718.12783.10.camel@hitfishpass-lx.corp.yahoo.com> Content-Type: multipart/mixed; boundary="------------010503070403030001090606" Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Dec 2011 20:47:19 -0000 This is a multi-part message in MIME format. --------------010503070403030001090606 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Can you please try the attached patch? I'm trying to reduce the number of differences between the native and Xen pmap implementations. Alan --------------010503070403030001090606 Content-Type: text/plain; name="native_vs_xen.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="native_vs_xen.diff" LS0tIGkzODYvaTM4Ni9wbWFwLmMJMjAxMS0xMi0yMSAxMzowNDoxNy4wMDAwMDAwMDAgLTA2 MDAKKysrIGkzODYveGVuL3BtYXAuYwkyMDExLTEyLTIxIDEzOjA0OjQ4LjAwMDAwMDAwMCAt MDYwMApAQCAtNSw3ICs1LDcgQEAKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5 cmlnaHQgKGMpIDE5OTQgRGF2aWQgR3JlZW5tYW4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAxMCBBbGFuIEwuIENveCA8YWxjQGNzLnJpY2Uu ZWR1PgorICogQ29weXJpZ2h0IChjKSAyMDA1IEFsYW4gTC4gQ294IDxhbGNAY3MucmljZS5l ZHU+CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgY29kZSBpcyBkZXJp dmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gQmVya2VsZXkgYnkKQEAgLTc1LDcg Kzc1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZy ZWVCU0Q6IGhlYWQvc3lzL2kzODYvaTM4Ni9wbWFwLmMgMjI4NTEzIDIwMTEtMTItMTQgMjM6 NTc6NDdaIGFsYyAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL2kzODYveGVu L3BtYXAuYyAyMjg3NDYgMjAxMS0xMi0yMCAyMDoxNjoxMlogYWxjICQiKTsKIAogLyoKICAq CU1hbmFnZXMgcGh5c2ljYWwgYWRkcmVzcyBtYXBzLgpAQCAtMTM4LDcgKzEzOCw2IEBACiAj aW5jbHVkZSA8dm0vdm1fZXh0ZXJuLmg+CiAjaW5jbHVkZSA8dm0vdm1fcGFnZW91dC5oPgog I2luY2x1ZGUgPHZtL3ZtX3BhZ2VyLmg+Ci0jaW5jbHVkZSA8dm0vdm1fcmVzZXJ2Lmg+CiAj aW5jbHVkZSA8dm0vdW1hLmg+CiAKICNpbmNsdWRlIDxtYWNoaW5lL2NwdS5oPgpAQCAtMTU0 LDYgKzE1MywxMiBAQAogI2luY2x1ZGUgPG1hY2hpbmUveGJveC5oPgogI2VuZGlmCiAKKyNp bmNsdWRlIDx4ZW4vaW50ZXJmYWNlL3hlbi5oPgorI2luY2x1ZGUgPHhlbi9oeXBlcnZpc29y Lmg+CisjaW5jbHVkZSA8bWFjaGluZS94ZW4vaHlwZXJjYWxsLmg+CisjaW5jbHVkZSA8bWFj aGluZS94ZW4veGVudmFyLmg+CisjaW5jbHVkZSA8bWFjaGluZS94ZW4veGVuZnVuYy5oPgor CiAjaWYgIWRlZmluZWQoQ1BVX0RJU0FCTEVfU1NFKSAmJiBkZWZpbmVkKEk2ODZfQ1BVKQog I2RlZmluZSBDUFVfRU5BQkxFX1NTRQogI2VuZGlmCkBAIC0xNjIsNiArMTY3LDggQEAKICNk ZWZpbmUgUE1BUF9TSFBHUEVSUFJPQyAyMDAKICNlbmRpZgogCisjZGVmaW5lIERJQUdOT1NU SUMKKwogI2lmICFkZWZpbmVkKERJQUdOT1NUSUMpCiAjaWZkZWYgX19HTlVDX0dOVV9JTkxJ TkVfXwogI2RlZmluZSBQTUFQX0lOTElORQlfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIGlubGluZQpAQCAtMTc5LDkgKzE4Niw2IEBACiAjZGVmaW5lIFBWX1NUQVQoeCkJZG8g eyB9IHdoaWxlICgwKQogI2VuZGlmCiAKLSNkZWZpbmUJcGFfaW5kZXgocGEpCSgocGEpID4+ IFBEUlNISUZUKQotI2RlZmluZQlwYV90b19wdmgocGEpCSgmcHZfdGFibGVbcGFfaW5kZXgo cGEpXSkKLQogLyoKICAqIEdldCBQREVzIGFuZCBQVEVzIGZvciB1c2VyL2tlcm5lbCBhZGRy ZXNzIHNwYWNlCiAgKi8KQEAgLTE5NCwxMCArMTk4LDEzIEBACiAjZGVmaW5lIHBtYXBfcHRl X3UocHRlKQkJKCgqKGludCAqKXB0ZSAmIFBHX0EpICE9IDApCiAjZGVmaW5lIHBtYXBfcHRl X3YocHRlKQkJKCgqKGludCAqKXB0ZSAmIFBHX1YpICE9IDApCiAKLSNkZWZpbmUgcG1hcF9w dGVfc2V0X3cocHRlLCB2KQkoKHYpID8gYXRvbWljX3NldF9pbnQoKHVfaW50ICopKHB0ZSks IFBHX1cpIDogXAotICAgIGF0b21pY19jbGVhcl9pbnQoKHVfaW50ICopKHB0ZSksIFBHX1cp KQogI2RlZmluZSBwbWFwX3B0ZV9zZXRfcHJvdChwdGUsIHYpICgoKihpbnQgKilwdGUgJj0g flBHX1BST1QpLCAoKihpbnQgKilwdGUgfD0gKHYpKSkKIAorI2RlZmluZSBIQU1GSVNURURf TE9DS0lORworI2lmZGVmIEhBTUZJU1RFRF9MT0NLSU5HCitzdGF0aWMgc3RydWN0IG10eCBj cmVhdGVkZWxldGVfbG9jazsKKyNlbmRpZgorCiBzdHJ1Y3QgcG1hcCBrZXJuZWxfcG1hcF9z dG9yZTsKIExJU1RfSEVBRChwbWFwbGlzdCwgcG1hcCk7CiBzdGF0aWMgc3RydWN0IHBtYXBs aXN0IGFsbHBtYXBzOwpAQCAtMjA4LDM0ICsyMTUsMjIgQEAKIGludCBwZ2VmbGFnID0gMDsJ CS8qIFBHX0cgb3ItaW4gKi8KIGludCBwc2VmbGFnID0gMDsJCS8qIFBHX1BTIG9yLWluICov CiAKLXN0YXRpYyBpbnQgbmtwdCA9IE5LUFQ7Ci12bV9vZmZzZXRfdCBrZXJuZWxfdm1fZW5k ID0gS0VSTkJBU0UgKyBOS1BUICogTkJQRFI7CitpbnQgbmtwdDsKK3ZtX29mZnNldF90IGtl cm5lbF92bV9lbmQ7CiBleHRlcm4gdV9pbnQzMl90IEtFUk5lbmQ7Ci1leHRlcm4gdV9pbnQz Ml90IEtQVHBoeXM7CiAKICNpZmRlZiBQQUUKIHB0X2VudHJ5X3QgcGdfbng7Ci1zdGF0aWMg dW1hX3pvbmVfdCBwZHB0em9uZTsKICNlbmRpZgogCiBzdGF0aWMgU1lTQ1RMX05PREUoX3Zt LCBPSURfQVVUTywgcG1hcCwgQ1RMRkxBR19SRCwgMCwgIlZNL3BtYXAgcGFyYW1ldGVycyIp OwogCi1zdGF0aWMgaW50IHBhdF93b3JrcyA9IDE7Ci1TWVNDVExfSU5UKF92bV9wbWFwLCBP SURfQVVUTywgcGF0X3dvcmtzLCBDVExGTEFHX1JELCAmcGF0X3dvcmtzLCAxLAotICAgICJJ cyBwYWdlIGF0dHJpYnV0ZSB0YWJsZSBmdWxseSBmdW5jdGlvbmFsPyIpOwotCi1zdGF0aWMg aW50IHBnX3BzX2VuYWJsZWQgPSAxOwotU1lTQ1RMX0lOVChfdm1fcG1hcCwgT0lEX0FVVE8s IHBnX3BzX2VuYWJsZWQsIENUTEZMQUdfUkRUVU4sICZwZ19wc19lbmFibGVkLCAwLAotICAg ICJBcmUgbGFyZ2UgcGFnZSBtYXBwaW5ncyBlbmFibGVkPyIpOwotCi0jZGVmaW5lCVBBVF9J TkRFWF9TSVpFCTgKLXN0YXRpYyBpbnQgcGF0X2luZGV4W1BBVF9JTkRFWF9TSVpFXTsJLyog Y2FjaGUgbW9kZSB0byBQQVQgaW5kZXggY29udmVyc2lvbiAqLworc3RhdGljIGludCBwYXRf d29ya3M7CQkJLyogSXMgcGFnZSBhdHRyaWJ1dGUgdGFibGUgc2FuZT8gKi8KIAogLyoKICAq IERhdGEgZm9yIHRoZSBwdiBlbnRyeSBhbGxvY2F0aW9uIG1lY2hhbmlzbQogICovCiBzdGF0 aWMgaW50IHB2X2VudHJ5X2NvdW50ID0gMCwgcHZfZW50cnlfbWF4ID0gMCwgcHZfZW50cnlf aGlnaF93YXRlciA9IDA7Ci1zdGF0aWMgc3RydWN0IG1kX3BhZ2UgKnB2X3RhYmxlOwogc3Rh dGljIGludCBzaHBncGVycHJvYyA9IFBNQVBfU0hQR1BFUlBST0M7CiAKIHN0cnVjdCBwdl9j aHVuayAqcHZfY2h1bmtiYXNlOwkJLyogS1ZBIGJsb2NrIGZvciBwdl9jaHVua3MgKi8KQEAg LTI1MywxMCArMjQ4LDggQEAKIAljYWRkcl90CUNBRERSMjsKIH07CiBzdGF0aWMgc3RydWN0 IHN5c21hcHMgc3lzbWFwc19wY3B1W01BWENQVV07Ci1wdF9lbnRyeV90ICpDTUFQMSA9IDA7 CiBzdGF0aWMgcHRfZW50cnlfdCAqQ01BUDM7Ci1zdGF0aWMgcGRfZW50cnlfdCAqS1BURDsK LWNhZGRyX3QgQ0FERFIxID0gMCwgcHR2bW1hcCA9IDA7CitjYWRkcl90IHB0dm1tYXAgPSAw Owogc3RhdGljIGNhZGRyX3QgQ0FERFIzOwogc3RydWN0IG1zZ2J1ZiAqbXNnYnVmcCA9IDA7 CiAKQEAgLTI4Niw0NyArMjc5LDIyIEBACiAKIHN0YXRpYyB2b2lkCWZyZWVfcHZfZW50cnko cG1hcF90IHBtYXAsIHB2X2VudHJ5X3QgcHYpOwogc3RhdGljIHB2X2VudHJ5X3QgZ2V0X3B2 X2VudHJ5KHBtYXBfdCBsb2NrZWRfcG1hcCwgaW50IHRyeSk7Ci1zdGF0aWMgdm9pZAlwbWFw X3B2X2RlbW90ZV9wZGUocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCB2bV9wYWRkcl90 IHBhKTsKLXN0YXRpYyBib29sZWFuX3QgcG1hcF9wdl9pbnNlcnRfcGRlKHBtYXBfdCBwbWFw LCB2bV9vZmZzZXRfdCB2YSwgdm1fcGFkZHJfdCBwYSk7Ci1zdGF0aWMgdm9pZAlwbWFwX3B2 X3Byb21vdGVfcGRlKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1fcGFkZHJfdCBw YSk7CiBzdGF0aWMgdm9pZAlwbWFwX3B2aF9mcmVlKHN0cnVjdCBtZF9wYWdlICpwdmgsIHBt YXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSk7CiBzdGF0aWMgcHZfZW50cnlfdCBwbWFwX3B2 aF9yZW1vdmUoc3RydWN0IG1kX3BhZ2UgKnB2aCwgcG1hcF90IHBtYXAsCiAJCSAgICB2bV9v ZmZzZXRfdCB2YSk7Ci1zdGF0aWMgaW50CXBtYXBfcHZoX3dpcmVkX21hcHBpbmdzKHN0cnVj dCBtZF9wYWdlICpwdmgsIGludCBjb3VudCk7CiAKLXN0YXRpYyBib29sZWFuX3QgcG1hcF9k ZW1vdGVfcGRlKHBtYXBfdCBwbWFwLCBwZF9lbnRyeV90ICpwZGUsIHZtX29mZnNldF90IHZh KTsKLXN0YXRpYyBib29sZWFuX3QgcG1hcF9lbnRlcl9wZGUocG1hcF90IHBtYXAsIHZtX29m ZnNldF90IHZhLCB2bV9wYWdlX3QgbSwKLSAgICB2bV9wcm90X3QgcHJvdCk7Ci1zdGF0aWMg dm1fcGFnZV90IHBtYXBfZW50ZXJfcXVpY2tfbG9ja2VkKHBtYXBfdCBwbWFwLCB2bV9vZmZz ZXRfdCB2YSwKK3N0YXRpYyB2bV9wYWdlX3QgcG1hcF9lbnRlcl9xdWlja19sb2NrZWQobXVs dGljYWxsX2VudHJ5X3QgKiptY2wsIGludCAqY291bnQsIHBtYXBfdCBwbWFwLCB2bV9vZmZz ZXRfdCB2YSwKICAgICB2bV9wYWdlX3QgbSwgdm1fcHJvdF90IHByb3QsIHZtX3BhZ2VfdCBt cHRlKTsKIHN0YXRpYyB2b2lkIHBtYXBfZmx1c2hfcGFnZSh2bV9wYWdlX3QgbSk7Ci1zdGF0 aWMgdm9pZCBwbWFwX2luc2VydF9wdF9wYWdlKHBtYXBfdCBwbWFwLCB2bV9wYWdlX3QgbXB0 ZSk7Ci1zdGF0aWMgdm9pZCBwbWFwX2ZpbGxfcHRwKHB0X2VudHJ5X3QgKmZpcnN0cHRlLCBw dF9lbnRyeV90IG5ld3B0ZSk7Ci1zdGF0aWMgYm9vbGVhbl90IHBtYXBfaXNfbW9kaWZpZWRf cHZoKHN0cnVjdCBtZF9wYWdlICpwdmgpOwotc3RhdGljIGJvb2xlYW5fdCBwbWFwX2lzX3Jl ZmVyZW5jZWRfcHZoKHN0cnVjdCBtZF9wYWdlICpwdmgpOwogc3RhdGljIHZvaWQgcG1hcF9r ZW50ZXJfYXR0cih2bV9vZmZzZXRfdCB2YSwgdm1fcGFkZHJfdCBwYSwgaW50IG1vZGUpOwot c3RhdGljIHZvaWQgcG1hcF9rZW50ZXJfcGRlKHZtX29mZnNldF90IHZhLCBwZF9lbnRyeV90 IG5ld3BkZSk7Ci1zdGF0aWMgdm1fcGFnZV90IHBtYXBfbG9va3VwX3B0X3BhZ2UocG1hcF90 IHBtYXAsIHZtX29mZnNldF90IHZhKTsKLXN0YXRpYyB2b2lkIHBtYXBfcGRlX2F0dHIocGRf ZW50cnlfdCAqcGRlLCBpbnQgY2FjaGVfYml0cyk7Ci1zdGF0aWMgdm9pZCBwbWFwX3Byb21v dGVfcGRlKHBtYXBfdCBwbWFwLCBwZF9lbnRyeV90ICpwZGUsIHZtX29mZnNldF90IHZhKTsK LXN0YXRpYyBib29sZWFuX3QgcG1hcF9wcm90ZWN0X3BkZShwbWFwX3QgcG1hcCwgcGRfZW50 cnlfdCAqcGRlLCB2bV9vZmZzZXRfdCBzdmEsCi0gICAgdm1fcHJvdF90IHByb3QpOwotc3Rh dGljIHZvaWQgcG1hcF9wdGVfYXR0cihwdF9lbnRyeV90ICpwdGUsIGludCBjYWNoZV9iaXRz KTsKLXN0YXRpYyB2b2lkIHBtYXBfcmVtb3ZlX3BkZShwbWFwX3QgcG1hcCwgcGRfZW50cnlf dCAqcGRxLCB2bV9vZmZzZXRfdCBzdmEsCi0gICAgdm1fcGFnZV90ICpmcmVlKTsKIHN0YXRp YyBpbnQgcG1hcF9yZW1vdmVfcHRlKHBtYXBfdCBwbWFwLCBwdF9lbnRyeV90ICpwdHEsIHZt X29mZnNldF90IHN2YSwKICAgICB2bV9wYWdlX3QgKmZyZWUpOwotc3RhdGljIHZvaWQgcG1h cF9yZW1vdmVfcHRfcGFnZShwbWFwX3QgcG1hcCwgdm1fcGFnZV90IG1wdGUpOwogc3RhdGlj IHZvaWQgcG1hcF9yZW1vdmVfcGFnZShzdHJ1Y3QgcG1hcCAqcG1hcCwgdm1fb2Zmc2V0X3Qg dmEsCiAgICAgdm1fcGFnZV90ICpmcmVlKTsKIHN0YXRpYyB2b2lkIHBtYXBfcmVtb3ZlX2Vu dHJ5KHN0cnVjdCBwbWFwICpwbWFwLCB2bV9wYWdlX3QgbSwKIAkJCQkJdm1fb2Zmc2V0X3Qg dmEpOwotc3RhdGljIHZvaWQgcG1hcF9pbnNlcnRfZW50cnkocG1hcF90IHBtYXAsIHZtX29m ZnNldF90IHZhLCB2bV9wYWdlX3QgbSk7CiBzdGF0aWMgYm9vbGVhbl90IHBtYXBfdHJ5X2lu c2VydF9wdl9lbnRyeShwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsCiAgICAgdm1fcGFn ZV90IG0pOwotc3RhdGljIHZvaWQgcG1hcF91cGRhdGVfcGRlKHBtYXBfdCBwbWFwLCB2bV9v ZmZzZXRfdCB2YSwgcGRfZW50cnlfdCAqcGRlLAotICAgIHBkX2VudHJ5X3QgbmV3cGRlKTsK LXN0YXRpYyB2b2lkIHBtYXBfdXBkYXRlX3BkZV9pbnZhbGlkYXRlKHZtX29mZnNldF90IHZh LCBwZF9lbnRyeV90IG5ld3BkZSk7CiAKIHN0YXRpYyB2bV9wYWdlX3QgcG1hcF9hbGxvY3B0 ZShwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIGludCBmbGFncyk7CiAKQEAgLTMzNSwx MCArMzAzLDcgQEAKIHN0YXRpYyBwdF9lbnRyeV90ICpwbWFwX3B0ZV9xdWljayhwbWFwX3Qg cG1hcCwgdm1fb2Zmc2V0X3QgdmEpOwogc3RhdGljIHZvaWQgcG1hcF9wdGVfcmVsZWFzZShw dF9lbnRyeV90ICpwdGUpOwogc3RhdGljIGludCBwbWFwX3VudXNlX3B0KHBtYXBfdCwgdm1f b2Zmc2V0X3QsIHZtX3BhZ2VfdCAqKTsKLSNpZmRlZiBQQUUKLXN0YXRpYyB2b2lkICpwbWFw X3BkcHRfYWxsb2NmKHVtYV96b25lX3Qgem9uZSwgaW50IGJ5dGVzLCB1X2ludDhfdCAqZmxh Z3MsIGludCB3YWl0KTsKLSNlbmRpZgotc3RhdGljIHZvaWQgcG1hcF9zZXRfcGcodm9pZCk7 CitzdGF0aWMgYm9vbGVhbl90IHBtYXBfaXNfcHJlZmF1bHRhYmxlX2xvY2tlZChwbWFwX3Qg cG1hcCwgdm1fb2Zmc2V0X3QgYWRkcik7CiAKIHN0YXRpYyBfX2lubGluZSB2b2lkIHBhZ2V6 ZXJvKHZvaWQgKnBhZ2UpOwogCkBAIC0zNTIsNiArMzE3LDM2IEBACiAgKi8KIENUQVNTRVJU KEtFUk5CQVNFICUgKDEgPDwgMjQpID09IDApOwogCit2b2lkIAorcGRfc2V0KHN0cnVjdCBw bWFwICpwbWFwLCBpbnQgcHRlcGluZGV4LCB2bV9wYWRkcl90IHZhbCwgaW50IHR5cGUpCit7 CisJdm1fcGFkZHJfdCBwZGlyX21hID0gdnRvbWFjaCgmcG1hcC0+cG1fcGRpcltwdGVwaW5k ZXhdKTsKKwkKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIFNIX1BEX1NFVF9WQToKKyNpZiAw CQkKKwkJeGVuX3F1ZXVlX3B0X3VwZGF0ZShzaGFkb3dfcGRpcl9tYSwKKwkJCQkgICAgeHBt YXBfcHRvbSh2YWwgJiB+KFBHX1JXKSkpOworI2VuZGlmCQkKKwkJeGVuX3F1ZXVlX3B0X3Vw ZGF0ZShwZGlyX21hLAorCQkJCSAgICB4cG1hcF9wdG9tKHZhbCkpOyAJCisJCWJyZWFrOwor CWNhc2UgU0hfUERfU0VUX1ZBX01BOgorI2lmIDAJCQorCQl4ZW5fcXVldWVfcHRfdXBkYXRl KHNoYWRvd19wZGlyX21hLAorCQkJCSAgICB2YWwgJiB+KFBHX1JXKSk7CisjZW5kaWYJCQor CQl4ZW5fcXVldWVfcHRfdXBkYXRlKHBkaXJfbWEsIHZhbCk7IAkKKwkJYnJlYWs7CisJY2Fz ZSBTSF9QRF9TRVRfVkFfQ0xFQVI6CisjaWYgMAorCQl4ZW5fcXVldWVfcHRfdXBkYXRlKHNo YWRvd19wZGlyX21hLCAwKTsKKyNlbmRpZgkJCisJCXhlbl9xdWV1ZV9wdF91cGRhdGUocGRp cl9tYSwgMCk7IAkKKwkJYnJlYWs7CisJfQorfQorCiAvKgogICoJQm9vdHN0cmFwIHRoZSBz eXN0ZW0gZW5vdWdoIHRvIHJ1biB3aXRoIHZpcnR1YWwgbWVtb3J5LgogICoKQEAgLTM4OSwy MSArMzg0LDE1IEBACiAjaWZkZWYgUEFFCiAJa2VybmVsX3BtYXAtPnBtX3BkcHQgPSAocGRw dF9lbnRyeV90ICopIChLRVJOQkFTRSArICh1X2ludClJZGxlUERQVCk7CiAjZW5kaWYKLQlr ZXJuZWxfcG1hcC0+cG1fcm9vdCA9IE5VTEw7CiAJQ1BVX0ZJTEwoJmtlcm5lbF9wbWFwLT5w bV9hY3RpdmUpOwkvKiBkb24ndCBhbGxvdyBkZWFjdGl2YXRpb24gKi8KIAlUQUlMUV9JTklU KCZrZXJuZWxfcG1hcC0+cG1fcHZjaHVuayk7CiAJTElTVF9JTklUKCZhbGxwbWFwcyk7Ci0K LQkvKgotCSAqIFJlcXVlc3QgYSBzcGluIG11dGV4IHNvIHRoYXQgY2hhbmdlcyB0byBhbGxw bWFwcyBjYW5ub3QgYmUKLQkgKiBwcmVlbXB0ZWQgYnkgc21wX3JlbmRlenZvdXNfY3B1cygp LiAgT3RoZXJ3aXNlLAotCSAqIHBtYXBfdXBkYXRlX3BkZV9rZXJuZWwoKSBjb3VsZCBhY2Nl c3MgYWxscG1hcHMgd2hpbGUgaXQgaXMKLQkgKiBiZWluZyBjaGFuZ2VkLgotCSAqLwogCW10 eF9pbml0KCZhbGxwbWFwc19sb2NrLCAiYWxscG1hcHMiLCBOVUxMLCBNVFhfU1BJTik7CiAJ bXR4X2xvY2tfc3BpbigmYWxscG1hcHNfbG9jayk7CiAJTElTVF9JTlNFUlRfSEVBRCgmYWxs cG1hcHMsIGtlcm5lbF9wbWFwLCBwbV9saXN0KTsKIAltdHhfdW5sb2NrX3NwaW4oJmFsbHBt YXBzX2xvY2spOworCWlmIChua3B0ID09IDApCisJCW5rcHQgPSBOS1BUOwogCiAJLyoKIAkg KiBSZXNlcnZlIHNvbWUgc3BlY2lhbCBwYWdlIHRhYmxlIGVudHJpZXMvVkEgc3BhY2UgZm9y IHRlbXBvcmFyeQpAQCAtNDI0LDkgKzQxMywxMSBAQAogCQltdHhfaW5pdCgmc3lzbWFwcy0+ bG9jaywgIlNZU01BUFMiLCBOVUxMLCBNVFhfREVGKTsKIAkJU1lTTUFQKGNhZGRyX3QsIHN5 c21hcHMtPkNNQVAxLCBzeXNtYXBzLT5DQUREUjEsIDEpCiAJCVNZU01BUChjYWRkcl90LCBz eXNtYXBzLT5DTUFQMiwgc3lzbWFwcy0+Q0FERFIyLCAxKQorCQlQVF9TRVRfTUEoc3lzbWFw cy0+Q0FERFIxLCAwKTsKKwkJUFRfU0VUX01BKHN5c21hcHMtPkNBRERSMiwgMCk7CiAJfQot CVNZU01BUChjYWRkcl90LCBDTUFQMSwgQ0FERFIxLCAxKQogCVNZU01BUChjYWRkcl90LCBD TUFQMywgQ0FERFIzLCAxKQorCVBUX1NFVF9NQShDQUREUjMsIDApOwogCiAJLyoKIAkgKiBD cmFzaGR1bXAgbWFwcy4KQEAgLTQ0NCwyNSArNDM1LDYgQEAKIAlTWVNNQVAoc3RydWN0IG1z Z2J1ZiAqLCB1bnVzZWQsIG1zZ2J1ZnAsIGF0b3Aocm91bmRfcGFnZShtc2didWZzaXplKSkp CiAKIAkvKgotCSAqIEtQVG1hcCBpcyB1c2VkIGJ5IHBtYXBfa2V4dHJhY3QoKS4KLQkgKgot CSAqIEtQVG1hcCBpcyBmaXJzdCBpbml0aWFsaXplZCBieSBsb2NvcmUuICBIb3dldmVyLCB0 aGF0IGluaXRpYWwKLQkgKiBLUFRtYXAgY2FuIG9ubHkgc3VwcG9ydCBOS1BUIHBhZ2UgdGFi bGUgcGFnZXMuICBIZXJlLCBhIGxhcmdlcgotCSAqIEtQVG1hcCBpcyBjcmVhdGVkIHRoYXQg Y2FuIHN1cHBvcnQgS1ZBX1BBR0VTIHBhZ2UgdGFibGUgcGFnZXMuCi0JICovCi0JU1lTTUFQ KHB0X2VudHJ5X3QgKiwgS1BURCwgS1BUbWFwLCBLVkFfUEFHRVMpCi0KLQlmb3IgKGkgPSAw OyBpIDwgTktQVDsgaSsrKQotCQlLUFREW2ldID0gKEtQVHBoeXMgKyAoaSA8PCBQQUdFX1NI SUZUKSkgfCBwZ2VmbGFnIHwgUEdfUlcgfCBQR19WOwotCi0JLyoKLQkgKiBBZGp1c3QgdGhl IHN0YXJ0IG9mIHRoZSBLUFREIGFuZCBLUFRtYXAgc28gdGhhdCB0aGUgaW1wbGVtZW50YXRp b24KLQkgKiBvZiBwbWFwX2tleHRyYWN0KCkgYW5kIHBtYXBfZ3Jvd2tlcm5lbCgpIGNhbiBi ZSBtYWRlIHNpbXBsZXIuCi0JICovCi0JS1BURCAtPSBLUFRESTsKLQlLUFRtYXAgLT0gaTM4 Nl9idG9wKEtQVERJIDw8IFBEUlNISUZUKTsKLQotCS8qCiAJICogcHRlbWFwIGlzIHVzZWQg Zm9yIHBtYXBfcHRlX3F1aWNrCiAJICovCiAJU1lTTUFQKHB0X2VudHJ5X3QgKiwgUE1BUDEs IFBBRERSMSwgMSkKQEAgLTQ3Nyw2ICs0NDksMTAgQEAKIAkgKiBwaHlzaWNhbCBtZW1vcnkg cmVnaW9uIHRoYXQgaXMgdXNlZCBieSB0aGUgQUNQSSB3YWtldXAgY29kZS4gIFRoaXMKIAkg KiBtYXBwaW5nIG11c3Qgbm90IGhhdmUgUEdfRyBzZXQuIAogCSAqLworI2lmbmRlZiBYRU4K KwkvKgorCSAqIGxlYXZlIGhlcmUgZGVsaWJlcmF0ZWx5IHRvIHNob3cgdGhhdCB0aGlzIGlz IG5vdCBzdXBwb3J0ZWQKKwkgKi8KICNpZmRlZiBYQk9YCiAJLyogRklYTUU6IFRoaXMgaXMg Z3Jvc3MsIGJ1dCBuZWVkZWQgZm9yIHRoZSBYQk9YLiBTaW5jZSB3ZSBhcmUgaW4gc3VjaAog CSAqIGFuIGVhcmx5IHN0YWRpdW0sIHdlIGNhbm5vdCB5ZXQgbmVhdGx5IG1hcCB2aWRlbyBt ZW1vcnkgLi4uIDotKApAQCAtNDkxLDYgKzQ2NywxMSBAQAogCiAJLyogVHVybiBvbiBQR19H IG9uIGtlcm5lbCBwYWdlKHMpICovCiAJcG1hcF9zZXRfcGcoKTsKKyNlbmRpZgorCisjaWZk ZWYgSEFNRklTVEVEX0xPQ0tJTkcKKwltdHhfaW5pdCgmY3JlYXRlZGVsZXRlX2xvY2ssICJw bWFwIGNyZWF0ZS9kZWxldGUiLCBOVUxMLCBNVFhfREVGKTsKKyNlbmRpZgogfQogCiAvKgpA QCAtNDk5LDEzMiArNDgwLDQzIEBACiB2b2lkCiBwbWFwX2luaXRfcGF0KHZvaWQpCiB7Ci0J aW50IHBhdF90YWJsZVtQQVRfSU5ERVhfU0laRV07CiAJdWludDY0X3QgcGF0X21zcjsKLQl1 X2xvbmcgY3IwLCBjcjQ7Ci0JaW50IGk7Ci0KLQkvKiBTZXQgZGVmYXVsdCBQQVQgaW5kZXgg dGFibGUuICovCi0JZm9yIChpID0gMDsgaSA8IFBBVF9JTkRFWF9TSVpFOyBpKyspCi0JCXBh dF90YWJsZVtpXSA9IC0xOwotCXBhdF90YWJsZVtQQVRfV1JJVEVfQkFDS10gPSAwOwotCXBh dF90YWJsZVtQQVRfV1JJVEVfVEhST1VHSF0gPSAxOwotCXBhdF90YWJsZVtQQVRfVU5DQUNI RUFCTEVdID0gMzsKLQlwYXRfdGFibGVbUEFUX1dSSVRFX0NPTUJJTklOR10gPSAzOwotCXBh dF90YWJsZVtQQVRfV1JJVEVfUFJPVEVDVEVEXSA9IDM7Ci0JcGF0X3RhYmxlW1BBVF9VTkNB Q0hFRF0gPSAzOwogCiAJLyogQmFpbCBpZiB0aGlzIENQVSBkb2Vzbid0IGltcGxlbWVudCBQ QVQuICovCi0JaWYgKChjcHVfZmVhdHVyZSAmIENQVUlEX1BBVCkgPT0gMCkgewotCQlmb3Ig KGkgPSAwOyBpIDwgUEFUX0lOREVYX1NJWkU7IGkrKykKLQkJCXBhdF9pbmRleFtpXSA9IHBh dF90YWJsZVtpXTsKLQkJcGF0X3dvcmtzID0gMDsKKwlpZiAoIShjcHVfZmVhdHVyZSAmIENQ VUlEX1BBVCkpCiAJCXJldHVybjsKLQl9Ci0KLQkvKgotCSAqIER1ZSB0byBzb21lIEludGVs IGVycmF0YSwgd2UgY2FuIG9ubHkgc2FmZWx5IHVzZSB0aGUgbG93ZXIgNAotCSAqIFBBVCBl bnRyaWVzLgotCSAqCi0JICogICBJbnRlbCBQZW50aXVtIElJSSBQcm9jZXNzb3IgU3BlY2lm aWNhdGlvbiBVcGRhdGUKLQkgKiBFcnJhdGEgRS4yNyAoVXBwZXIgRm91ciBQQVQgRW50cmll cyBOb3QgVXNhYmxlIFdpdGggTW9kZSBCCi0JICogb3IgTW9kZSBDIFBhZ2luZykKLQkgKgot CSAqICAgSW50ZWwgUGVudGl1bSBJViAgUHJvY2Vzc29yIFNwZWNpZmljYXRpb24gVXBkYXRl Ci0JICogRXJyYXRhIE40NiAoUEFUIEluZGV4IE1TQiBNYXkgQmUgQ2FsY3VsYXRlZCBJbmNv cnJlY3RseSkKLQkgKi8KLQlpZiAoY3B1X3ZlbmRvcl9pZCA9PSBDUFVfVkVORE9SX0lOVEVM ICYmCi0JICAgICEoQ1BVSURfVE9fRkFNSUxZKGNwdV9pZCkgPT0gNiAmJiBDUFVJRF9UT19N T0RFTChjcHVfaWQpID49IDB4ZSkpCi0JCXBhdF93b3JrcyA9IDA7CiAKLQkvKiBJbml0aWFs aXplIGRlZmF1bHQgUEFUIGVudHJpZXMuICovCi0JcGF0X21zciA9IFBBVF9WQUxVRSgwLCBQ QVRfV1JJVEVfQkFDSykgfAotCSAgICBQQVRfVkFMVUUoMSwgUEFUX1dSSVRFX1RIUk9VR0gp IHwKLQkgICAgUEFUX1ZBTFVFKDIsIFBBVF9VTkNBQ0hFRCkgfAotCSAgICBQQVRfVkFMVUUo MywgUEFUX1VOQ0FDSEVBQkxFKSB8Ci0JICAgIFBBVF9WQUxVRSg0LCBQQVRfV1JJVEVfQkFD SykgfAotCSAgICBQQVRfVkFMVUUoNSwgUEFUX1dSSVRFX1RIUk9VR0gpIHwKLQkgICAgUEFU X1ZBTFVFKDYsIFBBVF9VTkNBQ0hFRCkgfAotCSAgICBQQVRfVkFMVUUoNywgUEFUX1VOQ0FD SEVBQkxFKTsKLQotCWlmIChwYXRfd29ya3MpIHsKKwlpZiAoY3B1X3ZlbmRvcl9pZCAhPSBD UFVfVkVORE9SX0lOVEVMIHx8CisJICAgIChDUFVJRF9UT19GQU1JTFkoY3B1X2lkKSA9PSA2 ICYmIENQVUlEX1RPX01PREVMKGNwdV9pZCkgPj0gMHhlKSkgewogCQkvKgotCQkgKiBMZWF2 ZSB0aGUgaW5kaWNlcyAwLTMgYXQgdGhlIGRlZmF1bHQgb2YgV0IsIFdULCBVQy0sIGFuZCBV Qy4KLQkJICogUHJvZ3JhbSA1IGFuZCA2IGFzIFdQIGFuZCBXQy4KLQkJICogTGVhdmUgNCBh bmQgNyBhcyBXQiBhbmQgVUMuCisJCSAqIExlYXZlIHRoZSBpbmRpY2VzIDAtMyBhdCB0aGUg ZGVmYXVsdCBvZiBXQiwgV1QsIFVDLCBhbmQgVUMtLgorCQkgKiBQcm9ncmFtIDQgYW5kIDUg YXMgV1AgYW5kIFdDLgorCQkgKiBMZWF2ZSA2IGFuZCA3IGFzIFVDIGFuZCBVQy0uCiAJCSAq LwotCQlwYXRfbXNyICY9IH4oUEFUX01BU0soNSkgfCBQQVRfTUFTSyg2KSk7Ci0JCXBhdF9t c3IgfD0gUEFUX1ZBTFVFKDUsIFBBVF9XUklURV9QUk9URUNURUQpIHwKLQkJICAgIFBBVF9W QUxVRSg2LCBQQVRfV1JJVEVfQ09NQklOSU5HKTsKLQkJcGF0X3RhYmxlW1BBVF9VTkNBQ0hF RF0gPSAyOwotCQlwYXRfdGFibGVbUEFUX1dSSVRFX1BST1RFQ1RFRF0gPSA1OwotCQlwYXRf dGFibGVbUEFUX1dSSVRFX0NPTUJJTklOR10gPSA2OworCQlwYXRfbXNyID0gcmRtc3IoTVNS X1BBVCk7CisJCXBhdF9tc3IgJj0gfihQQVRfTUFTSyg0KSB8IFBBVF9NQVNLKDUpKTsKKwkJ cGF0X21zciB8PSBQQVRfVkFMVUUoNCwgUEFUX1dSSVRFX1BST1RFQ1RFRCkgfAorCQkgICAg UEFUX1ZBTFVFKDUsIFBBVF9XUklURV9DT01CSU5JTkcpOworCQlwYXRfd29ya3MgPSAxOwog CX0gZWxzZSB7CiAJCS8qCi0JCSAqIEp1c3QgcmVwbGFjZSBQQVQgSW5kZXggMiB3aXRoIFdD IGluc3RlYWQgb2YgVUMtLgorCQkgKiBEdWUgdG8gc29tZSBJbnRlbCBlcnJhdGEsIHdlIGNh biBvbmx5IHNhZmVseSB1c2UgdGhlIGxvd2VyIDQKKwkJICogUEFUIGVudHJpZXMuICBUaHVz LCBqdXN0IHJlcGxhY2UgUEFUIEluZGV4IDIgd2l0aCBXQyBpbnN0ZWFkCisJCSAqIG9mIFVD LS4KKwkJICoKKwkJICogICBJbnRlbCBQZW50aXVtIElJSSBQcm9jZXNzb3IgU3BlY2lmaWNh dGlvbiBVcGRhdGUKKwkJICogRXJyYXRhIEUuMjcgKFVwcGVyIEZvdXIgUEFUIEVudHJpZXMg Tm90IFVzYWJsZSBXaXRoIE1vZGUgQgorCQkgKiBvciBNb2RlIEMgUGFnaW5nKQorCQkgKgor CQkgKiAgIEludGVsIFBlbnRpdW0gSVYgIFByb2Nlc3NvciBTcGVjaWZpY2F0aW9uIFVwZGF0 ZQorCQkgKiBFcnJhdGEgTjQ2IChQQVQgSW5kZXggTVNCIE1heSBCZSBDYWxjdWxhdGVkIElu Y29ycmVjdGx5KQogCQkgKi8KKwkJcGF0X21zciA9IHJkbXNyKE1TUl9QQVQpOwogCQlwYXRf bXNyICY9IH5QQVRfTUFTSygyKTsKIAkJcGF0X21zciB8PSBQQVRfVkFMVUUoMiwgUEFUX1dS SVRFX0NPTUJJTklORyk7Ci0JCXBhdF90YWJsZVtQQVRfV1JJVEVfQ09NQklOSU5HXSA9IDI7 CisJCXBhdF93b3JrcyA9IDA7CiAJfQotCi0JLyogRGlzYWJsZSBQR0UuICovCi0JY3I0ID0g cmNyNCgpOwotCWxvYWRfY3I0KGNyNCAmIH5DUjRfUEdFKTsKLQotCS8qIERpc2FibGUgY2Fj aGVzIChDRCA9IDEsIE5XID0gMCkuICovCi0JY3IwID0gcmNyMCgpOwotCWxvYWRfY3IwKChj cjAgJiB+Q1IwX05XKSB8IENSMF9DRCk7Ci0KLQkvKiBGbHVzaGVzIGNhY2hlcyBhbmQgVExC cy4gKi8KLQl3YmludmQoKTsKLQlpbnZsdGxiKCk7Ci0KLQkvKiBVcGRhdGUgUEFUIGFuZCBp bmRleCB0YWJsZS4gKi8KIAl3cm1zcihNU1JfUEFULCBwYXRfbXNyKTsKLQlmb3IgKGkgPSAw OyBpIDwgUEFUX0lOREVYX1NJWkU7IGkrKykKLQkJcGF0X2luZGV4W2ldID0gcGF0X3RhYmxl W2ldOwotCi0JLyogRmx1c2ggY2FjaGVzIGFuZCBUTEJzIGFnYWluLiAqLwotCXdiaW52ZCgp OwotCWludmx0bGIoKTsKLQotCS8qIFJlc3RvcmUgY2FjaGVzIGFuZCBQR0UuICovCi0JbG9h ZF9jcjAoY3IwKTsKLQlsb2FkX2NyNChjcjQpOwotfQotCi0vKgotICogU2V0IFBHX0cgb24g a2VybmVsIHBhZ2VzLiAgT25seSB0aGUgQlNQIGNhbGxzIHRoaXMgd2hlbiBTTVAgaXMgdHVy bmVkIG9uLgotICovCi1zdGF0aWMgdm9pZAotcG1hcF9zZXRfcGcodm9pZCkKLXsKLQlwdF9l bnRyeV90ICpwdGU7Ci0Jdm1fb2Zmc2V0X3QgdmEsIGVuZHZhOwotCi0JaWYgKHBnZWZsYWcg PT0gMCkKLQkJcmV0dXJuOwotCi0JZW5kdmEgPSBLRVJOQkFTRSArIEtFUk5lbmQ7Ci0KLQlp ZiAocHNlZmxhZykgewotCQl2YSA9IEtFUk5CQVNFICsgS0VSTkxPQUQ7Ci0JCXdoaWxlICh2 YSAgPCBlbmR2YSkgewotCQkJcGRpcl9wZGUoUFRELCB2YSkgfD0gcGdlZmxhZzsKLQkJCWlu dmx0bGIoKTsJLyogUGxheSBpdCBzYWZlLCBpbnZsdGxiKCkgZXZlcnkgdGltZSAqLwotCQkJ dmEgKz0gTkJQRFI7Ci0JCX0KLQl9IGVsc2UgewotCQl2YSA9ICh2bV9vZmZzZXRfdClidGV4 dDsKLQkJd2hpbGUgKHZhIDwgZW5kdmEpIHsKLQkJCXB0ZSA9IHZ0b3B0ZSh2YSk7Ci0JCQlp ZiAoKnB0ZSkKLQkJCQkqcHRlIHw9IHBnZWZsYWc7Ci0JCQlpbnZsdGxiKCk7CS8qIFBsYXkg aXQgc2FmZSwgaW52bHRsYigpIGV2ZXJ5IHRpbWUgKi8KLQkJCXZhICs9IFBBR0VfU0laRTsK LQkJfQotCX0KIH0KIAogLyoKQEAgLTYzOCwxOCArNTMwLDYgQEAKIAltLT5tZC5wYXRfbW9k ZSA9IFBBVF9XUklURV9CQUNLOwogfQogCi0jaWZkZWYgUEFFCi1zdGF0aWMgdm9pZCAqCi1w bWFwX3BkcHRfYWxsb2NmKHVtYV96b25lX3Qgem9uZSwgaW50IGJ5dGVzLCB1X2ludDhfdCAq ZmxhZ3MsIGludCB3YWl0KQotewotCi0JLyogSW5mb3JtIFVNQSB0aGF0IHRoaXMgYWxsb2Nh dG9yIHVzZXMga2VybmVsX21hcC9vYmplY3QuICovCi0JKmZsYWdzID0gVU1BX1NMQUJfS0VS TkVMOwotCXJldHVybiAoKHZvaWQgKilrbWVtX2FsbG9jX2NvbnRpZyhrZXJuZWxfbWFwLCBi eXRlcywgd2FpdCwgMHgwVUxMLAotCSAgICAweGZmZmZmZmZmVUxMLCAxLCAwLCBWTV9NRU1B VFRSX0RFRkFVTFQpKTsKLX0KLSNlbmRpZgotCiAvKgogICogQUJ1c2UgdGhlIHB0ZSBub2Rl cyBmb3IgdW5tYXBwZWQga3ZhIHRvIHRocmVhZCBhIGt2YSBmcmVlbGlzdCB0aHJvdWdoLgog ICogUmVxdWlyZW1lbnRzOgpAQCAtNjYyLDQzICs1NDIsNDggQEAKICAqICAtIEFzc3VtZXMg YSB2bV9vZmZzZXRfdCB3aWxsIGZpdCBpbiBhIHB0ZSAodHJ1ZSBmb3IgaTM4NikuCiAgKiBC ZWNhdXNlIFBHX1YgaXMgbmV2ZXIgc2V0LCB0aGVyZSBjYW4gYmUgbm8gbWFwcGluZ3MgdG8g aW52YWxpZGF0ZS4KICAqLworc3RhdGljIGludCBwdGVsaXN0X2NvdW50ID0gMDsKIHN0YXRp YyB2bV9vZmZzZXRfdAogcG1hcF9wdGVsaXN0X2FsbG9jKHZtX29mZnNldF90ICpoZWFkKQog ewotCXB0X2VudHJ5X3QgKnB0ZTsKIAl2bV9vZmZzZXRfdCB2YTsKLQotCXZhID0gKmhlYWQ7 Ci0JaWYgKHZhID09IDApCi0JCXJldHVybiAodmEpOwkvKiBPdXQgb2YgbWVtb3J5ICovCi0J cHRlID0gdnRvcHRlKHZhKTsKLQkqaGVhZCA9ICpwdGU7Ci0JaWYgKCpoZWFkICYgUEdfVikK LQkJcGFuaWMoInBtYXBfcHRlbGlzdF9hbGxvYzogdmEgd2l0aCBQR19WIHNldCEiKTsKLQkq cHRlID0gMDsKKwl2bV9vZmZzZXRfdCAqcGhlYWQgPSAodm1fb2Zmc2V0X3QgKikqaGVhZDsK KwkKKwlpZiAocHRlbGlzdF9jb3VudCA9PSAwKSB7CisJCXByaW50Zigib3V0IG9mIG1lbW9y eSEhISEhIVxuIik7CisJCXJldHVybiAoMCk7CS8qIE91dCBvZiBtZW1vcnkgKi8KKwl9CisJ cHRlbGlzdF9jb3VudC0tOworCXZhID0gcGhlYWRbcHRlbGlzdF9jb3VudF07CiAJcmV0dXJu ICh2YSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBwbWFwX3B0ZWxpc3RfZnJlZSh2bV9vZmZzZXRf dCAqaGVhZCwgdm1fb2Zmc2V0X3QgdmEpCiB7Ci0JcHRfZW50cnlfdCAqcHRlOworCXZtX29m ZnNldF90ICpwaGVhZCA9ICh2bV9vZmZzZXRfdCAqKSpoZWFkOwogCi0JaWYgKHZhICYgUEdf VikKLQkJcGFuaWMoInBtYXBfcHRlbGlzdF9mcmVlOiBmcmVlaW5nIHZhIHdpdGggUEdfViBz ZXQhIik7Ci0JcHRlID0gdnRvcHRlKHZhKTsKLQkqcHRlID0gKmhlYWQ7CQkvKiB2aXJ0dWFs ISBQR19WIGlzIDAgdGhvdWdoICovCi0JKmhlYWQgPSB2YTsKKwlwaGVhZFtwdGVsaXN0X2Nv dW50KytdID0gdmE7CiB9CiAKIHN0YXRpYyB2b2lkCiBwbWFwX3B0ZWxpc3RfaW5pdCh2bV9v ZmZzZXRfdCAqaGVhZCwgdm9pZCAqYmFzZSwgaW50IG5wYWdlcykKIHsKLQlpbnQgaTsKKwlp bnQgaSwgbnN0YWNrcGFnZXM7CiAJdm1fb2Zmc2V0X3QgdmE7CisJdm1fcGFnZV90IG07CisJ CisJbnN0YWNrcGFnZXMgPSAobnBhZ2VzICsgUEFHRV9TSVpFL3NpemVvZih2bV9vZmZzZXRf dCkgLSAxKS8gKFBBR0VfU0laRS9zaXplb2Yodm1fb2Zmc2V0X3QpKTsKKwlmb3IgKGkgPSAw OyBpIDwgbnN0YWNrcGFnZXM7IGkrKykgeworCQl2YSA9ICh2bV9vZmZzZXRfdCliYXNlICsg aSAqIFBBR0VfU0laRTsKKwkJbSA9IHZtX3BhZ2VfYWxsb2MoTlVMTCwgaSwKKwkJICAgIFZN X0FMTE9DX05PUk1BTCB8IFZNX0FMTE9DX05PT0JKIHwgVk1fQUxMT0NfV0lSRUQgfAorCQkg ICAgVk1fQUxMT0NfWkVSTyk7CisJCXBtYXBfcWVudGVyKHZhLCAmbSwgMSk7CisJfQogCi0J KmhlYWQgPSAwOwotCWZvciAoaSA9IG5wYWdlcyAtIDE7IGkgPj0gMDsgaS0tKSB7CisJKmhl YWQgPSAodm1fb2Zmc2V0X3QpYmFzZTsKKwlmb3IgKGkgPSBucGFnZXMgLSAxOyBpID49IG5z dGFja3BhZ2VzOyBpLS0pIHsKIAkJdmEgPSAodm1fb2Zmc2V0X3QpYmFzZSArIGkgKiBQQUdF X1NJWkU7CiAJCXBtYXBfcHRlbGlzdF9mcmVlKGhlYWQsIHZhKTsKIAl9CkBAIC03MTMsMjIg KzU5OCw2IEBACiB2b2lkCiBwbWFwX2luaXQodm9pZCkKIHsKLQl2bV9wYWdlX3QgbXB0ZTsK LQl2bV9zaXplX3QgczsKLQlpbnQgaSwgcHZfbnBnOwotCi0JLyoKLQkgKiBJbml0aWFsaXpl IHRoZSB2bSBwYWdlIGFycmF5IGVudHJpZXMgZm9yIHRoZSBrZXJuZWwgcG1hcCdzCi0JICog cGFnZSB0YWJsZSBwYWdlcy4KLQkgKi8gCi0JZm9yIChpID0gMDsgaSA8IE5LUFQ7IGkrKykg ewotCQltcHRlID0gUEhZU19UT19WTV9QQUdFKEtQVHBoeXMgKyAoaSA8PCBQQUdFX1NISUZU KSk7Ci0JCUtBU1NFUlQobXB0ZSA+PSB2bV9wYWdlX2FycmF5ICYmCi0JCSAgICBtcHRlIDwg JnZtX3BhZ2VfYXJyYXlbdm1fcGFnZV9hcnJheV9zaXplXSwKLQkJICAgICgicG1hcF9pbml0 OiBwYWdlIHRhYmxlIHBhZ2UgaXMgb3V0IG9mIHJhbmdlIikpOwotCQltcHRlLT5waW5kZXgg PSBpICsgS1BUREk7Ci0JCW1wdGUtPnBoeXNfYWRkciA9IEtQVHBoeXMgKyAoaSA8PCBQQUdF X1NISUZUKTsKLQl9CiAKIAkvKgogCSAqIEluaXRpYWxpemUgdGhlIGFkZHJlc3Mgc3BhY2Ug KHpvbmUpIGZvciB0aGUgcHYgZW50cmllcy4gIFNldCBhCkBAIC03NDEsNTQgKzYxMCwxMiBA QAogCXB2X2VudHJ5X21heCA9IHJvdW5kdXAocHZfZW50cnlfbWF4LCBfTlBDUFYpOwogCXB2 X2VudHJ5X2hpZ2hfd2F0ZXIgPSA5ICogKHB2X2VudHJ5X21heCAvIDEwKTsKIAotCS8qCi0J ICogSWYgdGhlIGtlcm5lbCBpcyBydW5uaW5nIGluIGEgdmlydHVhbCBtYWNoaW5lIG9uIGFu IEFNRCBGYW1pbHkgMTBoCi0JICogcHJvY2Vzc29yLCB0aGVuIGl0IG11c3QgYXNzdW1lIHRo YXQgTUNBIGlzIGVuYWJsZWQgYnkgdGhlIHZpcnR1YWwKLQkgKiBtYWNoaW5lIG1vbml0b3Iu Ci0JICovCi0JaWYgKHZtX2d1ZXN0ID09IFZNX0dVRVNUX1ZNICYmIGNwdV92ZW5kb3JfaWQg PT0gQ1BVX1ZFTkRPUl9BTUQgJiYKLQkgICAgQ1BVSURfVE9fRkFNSUxZKGNwdV9pZCkgPT0g MHgxMCkKLQkJd29ya2Fyb3VuZF9lcnJhdHVtMzgzID0gMTsKLQotCS8qCi0JICogQXJlIGxh cmdlIHBhZ2UgbWFwcGluZ3Mgc3VwcG9ydGVkIGFuZCBlbmFibGVkPwotCSAqLwotCVRVTkFC TEVfSU5UX0ZFVENIKCJ2bS5wbWFwLnBnX3BzX2VuYWJsZWQiLCAmcGdfcHNfZW5hYmxlZCk7 Ci0JaWYgKHBzZWZsYWcgPT0gMCkKLQkJcGdfcHNfZW5hYmxlZCA9IDA7Ci0JZWxzZSBpZiAo cGdfcHNfZW5hYmxlZCkgewotCQlLQVNTRVJUKE1BWFBBR0VTSVpFUyA+IDEgJiYgcGFnZXNp emVzWzFdID09IDAsCi0JCSAgICAoInBtYXBfaW5pdDogY2FuJ3QgYXNzaWduIHRvIHBhZ2Vz aXplc1sxXSIpKTsKLQkJcGFnZXNpemVzWzFdID0gTkJQRFI7Ci0JfQotCi0JLyoKLQkgKiBD YWxjdWxhdGUgdGhlIHNpemUgb2YgdGhlIHB2IGhlYWQgdGFibGUgZm9yIHN1cGVycGFnZXMu Ci0JICovCi0JZm9yIChpID0gMDsgcGh5c19hdmFpbFtpICsgMV07IGkgKz0gMik7Ci0JcHZf bnBnID0gcm91bmRfNG1wYWdlKHBoeXNfYXZhaWxbKGkgLSAyKSArIDFdKSAvIE5CUERSOwot Ci0JLyoKLQkgKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBwdiBoZWFkIHRhYmxlIGZvciBz dXBlcnBhZ2VzLgotCSAqLwotCXMgPSAodm1fc2l6ZV90KShwdl9ucGcgKiBzaXplb2Yoc3Ry dWN0IG1kX3BhZ2UpKTsKLQlzID0gcm91bmRfcGFnZShzKTsKLQlwdl90YWJsZSA9IChzdHJ1 Y3QgbWRfcGFnZSAqKWttZW1fYWxsb2Moa2VybmVsX21hcCwgcyk7Ci0JZm9yIChpID0gMDsg aSA8IHB2X25wZzsgaSsrKQotCQlUQUlMUV9JTklUKCZwdl90YWJsZVtpXS5wdl9saXN0KTsK LQogCXB2X21heGNodW5rcyA9IE1BWChwdl9lbnRyeV9tYXggLyBfTlBDUFYsIG1heHByb2Mp OwogCXB2X2NodW5rYmFzZSA9IChzdHJ1Y3QgcHZfY2h1bmsgKilrbWVtX2FsbG9jX25vZmF1 bHQoa2VybmVsX21hcCwKIAkgICAgUEFHRV9TSVpFICogcHZfbWF4Y2h1bmtzKTsKIAlpZiAo cHZfY2h1bmtiYXNlID09IE5VTEwpCiAJCXBhbmljKCJwbWFwX2luaXQ6IG5vdCBlbm91Z2gg a3ZtIGZvciBwdiBjaHVua3MiKTsKIAlwbWFwX3B0ZWxpc3RfaW5pdCgmcHZfdmFmcmVlLCBw dl9jaHVua2Jhc2UsIHB2X21heGNodW5rcyk7Ci0jaWZkZWYgUEFFCi0JcGRwdHpvbmUgPSB1 bWFfemNyZWF0ZSgiUERQVCIsIE5QR1BURCAqIHNpemVvZihwZHB0X2VudHJ5X3QpLCBOVUxM LAotCSAgICBOVUxMLCBOVUxMLCBOVUxMLCAoTlBHUFREICogc2l6ZW9mKHBkcHRfZW50cnlf dCkpIC0gMSwKLQkgICAgVU1BX1pPTkVfVk0gfCBVTUFfWk9ORV9OT0ZSRUUpOwotCXVtYV96 b25lX3NldF9hbGxvY2YocGRwdHpvbmUsIHBtYXBfcGRwdF9hbGxvY2YpOwotI2VuZGlmCiB9 CiAKIApAQCAtODAwLDIyICs2MjcsMTAgQEAKIHN0YXRpYyBTWVNDVExfTk9ERShfdm1fcG1h cCwgT0lEX0FVVE8sIHBkZSwgQ1RMRkxBR19SRCwgMCwKICAgICAiMi80TUIgcGFnZSBtYXBw aW5nIGNvdW50ZXJzIik7CiAKLXN0YXRpYyB1X2xvbmcgcG1hcF9wZGVfZGVtb3Rpb25zOwot U1lTQ1RMX1VMT05HKF92bV9wbWFwX3BkZSwgT0lEX0FVVE8sIGRlbW90aW9ucywgQ1RMRkxB R19SRCwKLSAgICAmcG1hcF9wZGVfZGVtb3Rpb25zLCAwLCAiMi80TUIgcGFnZSBkZW1vdGlv bnMiKTsKLQogc3RhdGljIHVfbG9uZyBwbWFwX3BkZV9tYXBwaW5nczsKIFNZU0NUTF9VTE9O Ryhfdm1fcG1hcF9wZGUsIE9JRF9BVVRPLCBtYXBwaW5ncywgQ1RMRkxBR19SRCwKICAgICAm cG1hcF9wZGVfbWFwcGluZ3MsIDAsICIyLzRNQiBwYWdlIG1hcHBpbmdzIik7CiAKLXN0YXRp YyB1X2xvbmcgcG1hcF9wZGVfcF9mYWlsdXJlczsKLVNZU0NUTF9VTE9ORyhfdm1fcG1hcF9w ZGUsIE9JRF9BVVRPLCBwX2ZhaWx1cmVzLCBDVExGTEFHX1JELAotICAgICZwbWFwX3BkZV9w X2ZhaWx1cmVzLCAwLCAiMi80TUIgcGFnZSBwcm9tb3Rpb24gZmFpbHVyZXMiKTsKLQotc3Rh dGljIHVfbG9uZyBwbWFwX3BkZV9wcm9tb3Rpb25zOwotU1lTQ1RMX1VMT05HKF92bV9wbWFw X3BkZSwgT0lEX0FVVE8sIHByb21vdGlvbnMsIENUTEZMQUdfUkQsCi0gICAgJnBtYXBfcGRl X3Byb21vdGlvbnMsIDAsICIyLzRNQiBwYWdlIHByb21vdGlvbnMiKTsKLQogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogTG93IGxl dmVsIGhlbHBlciByb3V0aW5lcy4uLi4uCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtODI3LDkwICs2NDIsODEgQEAKIGludAog cG1hcF9jYWNoZV9iaXRzKGludCBtb2RlLCBib29sZWFuX3QgaXNfcGRlKQogewotCWludCBj YWNoZV9iaXRzLCBwYXRfZmxhZywgcGF0X2lkeDsKLQotCWlmIChtb2RlIDwgMCB8fCBtb2Rl ID49IFBBVF9JTkRFWF9TSVpFIHx8IHBhdF9pbmRleFttb2RlXSA8IDApCi0JCXBhbmljKCJV bmtub3duIGNhY2hpbmcgbW9kZSAlZFxuIiwgbW9kZSk7CisJaW50IHBhdF9mbGFnLCBwYXRf aW5kZXgsIGNhY2hlX2JpdHM7CiAKIAkvKiBUaGUgUEFUIGJpdCBpcyBkaWZmZXJlbnQgZm9y IFBURSdzIGFuZCBQREUncy4gKi8KIAlwYXRfZmxhZyA9IGlzX3BkZSA/IFBHX1BERV9QQVQg OiBQR19QVEVfUEFUOwogCisJLyogSWYgd2UgZG9uJ3Qgc3VwcG9ydCBQQVQsIG1hcCBleHRl bmRlZCBtb2RlcyB0byBvbGRlciBvbmVzLiAqLworCWlmICghKGNwdV9mZWF0dXJlICYgQ1BV SURfUEFUKSkgeworCQlzd2l0Y2ggKG1vZGUpIHsKKwkJY2FzZSBQQVRfVU5DQUNIRUFCTEU6 CisJCWNhc2UgUEFUX1dSSVRFX1RIUk9VR0g6CisJCWNhc2UgUEFUX1dSSVRFX0JBQ0s6CisJ CQlicmVhazsKKwkJY2FzZSBQQVRfVU5DQUNIRUQ6CisJCWNhc2UgUEFUX1dSSVRFX0NPTUJJ TklORzoKKwkJY2FzZSBQQVRfV1JJVEVfUFJPVEVDVEVEOgorCQkJbW9kZSA9IFBBVF9VTkNB Q0hFQUJMRTsKKwkJCWJyZWFrOworCQl9CisJfQorCQogCS8qIE1hcCB0aGUgY2FjaGluZyBt b2RlIHRvIGEgUEFUIGluZGV4LiAqLwotCXBhdF9pZHggPSBwYXRfaW5kZXhbbW9kZV07CisJ aWYgKHBhdF93b3JrcykgeworCQlzd2l0Y2ggKG1vZGUpIHsKKwkJCWNhc2UgUEFUX1VOQ0FD SEVBQkxFOgorCQkJCXBhdF9pbmRleCA9IDM7CisJCQkJYnJlYWs7CisJCQljYXNlIFBBVF9X UklURV9USFJPVUdIOgorCQkJCXBhdF9pbmRleCA9IDE7CisJCQkJYnJlYWs7CisJCQljYXNl IFBBVF9XUklURV9CQUNLOgorCQkJCXBhdF9pbmRleCA9IDA7CisJCQkJYnJlYWs7CisJCQlj YXNlIFBBVF9VTkNBQ0hFRDoKKwkJCQlwYXRfaW5kZXggPSAyOworCQkJCWJyZWFrOworCQkJ Y2FzZSBQQVRfV1JJVEVfQ09NQklOSU5HOgorCQkJCXBhdF9pbmRleCA9IDU7CisJCQkJYnJl YWs7CisJCQljYXNlIFBBVF9XUklURV9QUk9URUNURUQ6CisJCQkJcGF0X2luZGV4ID0gNDsK KwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcGFuaWMoIlVua25vd24gY2FjaGluZyBt b2RlICVkXG4iLCBtb2RlKTsKKwkJfQorCX0gZWxzZSB7CisJCXN3aXRjaCAobW9kZSkgewor CQkJY2FzZSBQQVRfVU5DQUNIRUQ6CisJCQljYXNlIFBBVF9VTkNBQ0hFQUJMRToKKwkJCWNh c2UgUEFUX1dSSVRFX1BST1RFQ1RFRDoKKwkJCQlwYXRfaW5kZXggPSAzOworCQkJCWJyZWFr OworCQkJY2FzZSBQQVRfV1JJVEVfVEhST1VHSDoKKwkJCQlwYXRfaW5kZXggPSAxOworCQkJ CWJyZWFrOworCQkJY2FzZSBQQVRfV1JJVEVfQkFDSzoKKwkJCQlwYXRfaW5kZXggPSAwOwor CQkJCWJyZWFrOworCQkJY2FzZSBQQVRfV1JJVEVfQ09NQklOSU5HOgorCQkJCXBhdF9pbmRl eCA9IDI7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXBhbmljKCJVbmtub3duIGNh Y2hpbmcgbW9kZSAlZFxuIiwgbW9kZSk7CisJCX0KKwl9CQogCiAJLyogTWFwIHRoZSAzLWJp dCBpbmRleCB2YWx1ZSBpbnRvIHRoZSBQQVQsIFBDRCwgYW5kIFBXVCBiaXRzLiAqLwogCWNh Y2hlX2JpdHMgPSAwOwotCWlmIChwYXRfaWR4ICYgMHg0KQorCWlmIChwYXRfaW5kZXggJiAw eDQpCiAJCWNhY2hlX2JpdHMgfD0gcGF0X2ZsYWc7Ci0JaWYgKHBhdF9pZHggJiAweDIpCisJ aWYgKHBhdF9pbmRleCAmIDB4MikKIAkJY2FjaGVfYml0cyB8PSBQR19OQ19QQ0Q7Ci0JaWYg KHBhdF9pZHggJiAweDEpCisJaWYgKHBhdF9pbmRleCAmIDB4MSkKIAkJY2FjaGVfYml0cyB8 PSBQR19OQ19QV1Q7CiAJcmV0dXJuIChjYWNoZV9iaXRzKTsKIH0KLQotLyoKLSAqIFRoZSBj YWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG1haW50YWluaW5nIFRMQiBjb25zaXN0ZW5jeS4K LSAqLwotc3RhdGljIHZvaWQKLXBtYXBfa2VudGVyX3BkZSh2bV9vZmZzZXRfdCB2YSwgcGRf ZW50cnlfdCBuZXdwZGUpCi17Ci0JcGRfZW50cnlfdCAqcGRlOwotCXBtYXBfdCBwbWFwOwot CWJvb2xlYW5fdCBQVERfdXBkYXRlZDsKLQotCVBURF91cGRhdGVkID0gRkFMU0U7Ci0JbXR4 X2xvY2tfc3BpbigmYWxscG1hcHNfbG9jayk7Ci0JTElTVF9GT1JFQUNIKHBtYXAsICZhbGxw bWFwcywgcG1fbGlzdCkgewotCQlpZiAoKHBtYXAtPnBtX3BkaXJbUFREUFRESV0gJiBQR19G UkFNRSkgPT0gKFBURHBkZVswXSAmCi0JCSAgICBQR19GUkFNRSkpCi0JCQlQVERfdXBkYXRl ZCA9IFRSVUU7Ci0JCXBkZSA9IHBtYXBfcGRlKHBtYXAsIHZhKTsKLQkJcGRlX3N0b3JlKHBk ZSwgbmV3cGRlKTsKLQl9Ci0JbXR4X3VubG9ja19zcGluKCZhbGxwbWFwc19sb2NrKTsKLQlL QVNTRVJUKFBURF91cGRhdGVkLAotCSAgICAoInBtYXBfa2VudGVyX3BkZTogY3VycmVudCBw YWdlIHRhYmxlIGlzIG5vdCBpbiBhbGxwbWFwcyIpKTsKLX0KLQotLyoKLSAqIEFmdGVyIGNo YW5naW5nIHRoZSBwYWdlIHNpemUgZm9yIHRoZSBzcGVjaWZpZWQgdmlydHVhbCBhZGRyZXNz IGluIHRoZSBwYWdlCi0gKiB0YWJsZSwgZmx1c2ggdGhlIGNvcnJlc3BvbmRpbmcgZW50cmll cyBmcm9tIHRoZSBwcm9jZXNzb3IncyBUTEIuICBPbmx5IHRoZQotICogY2FsbGluZyBwcm9j ZXNzb3IncyBUTEIgaXMgYWZmZWN0ZWQuCi0gKgotICogVGhlIGNhbGxpbmcgdGhyZWFkIG11 c3QgYmUgcGlubmVkIHRvIGEgcHJvY2Vzc29yLgotICovCi1zdGF0aWMgdm9pZAotcG1hcF91 cGRhdGVfcGRlX2ludmFsaWRhdGUodm1fb2Zmc2V0X3QgdmEsIHBkX2VudHJ5X3QgbmV3cGRl KQotewotCXVfbG9uZyBjcjQ7Ci0KLQlpZiAoKG5ld3BkZSAmIFBHX1BTKSA9PSAwKQotCQkv KiBEZW1vdGlvbjogZmx1c2ggYSBzcGVjaWZpYyAyTUIgcGFnZSBtYXBwaW5nLiAqLwotCQlp bnZscGcodmEpOwotCWVsc2UgaWYgKChuZXdwZGUgJiBQR19HKSA9PSAwKQotCQkvKgotCQkg KiBQcm9tb3Rpb246IGZsdXNoIGV2ZXJ5IDRLQiBwYWdlIG1hcHBpbmcgZnJvbSB0aGUgVExC Ci0JCSAqIGJlY2F1c2UgdGhlcmUgYXJlIHRvbyBtYW55IHRvIGZsdXNoIGluZGl2aWR1YWxs eS4KLQkJICovCi0JCWludmx0bGIoKTsKLQllbHNlIHsKLQkJLyoKLQkJICogUHJvbW90aW9u OiBmbHVzaCBldmVyeSA0S0IgcGFnZSBtYXBwaW5nIGZyb20gdGhlIFRMQiwKLQkJICogaW5j bHVkaW5nIGFueSBnbG9iYWwgKFBHX0cpIG1hcHBpbmdzLgotCQkgKi8KLQkJY3I0ID0gcmNy NCgpOwotCQlsb2FkX2NyNChjcjQgJiB+Q1I0X1BHRSk7Ci0JCS8qCi0JCSAqIEFsdGhvdWdo IHByZWVtcHRpb24gYXQgdGhpcyBwb2ludCBjb3VsZCBiZSBkZXRyaW1lbnRhbCB0bwotCQkg KiBwZXJmb3JtYW5jZSwgaXQgd291bGQgbm90IGxlYWQgdG8gYW4gZXJyb3IuICBQR19HIGlz IHNpbXBseQotCQkgKiBpZ25vcmVkIGlmIENSNC5QR0UgaXMgY2xlYXIuICBNb3Jlb3Zlciwg aW4gY2FzZSB0aGlzIGJsb2NrCi0JCSAqIGlzIHJlLWVudGVyZWQsIHRoZSBsb2FkX2NyNCgp IGVpdGhlciBhYm92ZSBvciBiZWxvdyB3aWxsCi0JCSAqIG1vZGlmeSBDUjQuUEdFIGZsdXNo aW5nIHRoZSBUTEIuCi0JCSAqLwotCQlsb2FkX2NyNChjcjQgfCBDUjRfUEdFKTsKLQl9Ci19 CiAjaWZkZWYgU01QCiAvKgogICogRm9yIFNNUCwgdGhlc2UgZnVuY3Rpb25zIGhhdmUgdG8g dXNlIHRoZSBJUEkgbWVjaGFuaXNtIGZvciBjb2hlcmVuY2UuCkBAIC05MzcsNiArNzQzLDkg QEAKIAljcHVzZXRfdCBvdGhlcl9jcHVzOwogCXVfaW50IGNwdWlkOwogCisJQ1RSMihLVFJf UE1BUCwgInBtYXBfaW52YWxpZGF0ZV9wYWdlOiBwbWFwPSVwIHZhPTB4JXgiLAorCSAgICBw bWFwLCB2YSk7CisJCiAJc2NoZWRfcGluKCk7CiAJaWYgKHBtYXAgPT0ga2VybmVsX3BtYXAg fHwgIUNQVV9DTVAoJnBtYXAtPnBtX2FjdGl2ZSwgJmFsbF9jcHVzKSkgewogCQlpbnZscGco dmEpOwpAQCAtOTUyLDYgKzc2MSw3IEBACiAJCQlzbXBfbWFza2VkX2ludmxwZyhvdGhlcl9j cHVzLCB2YSk7CiAJfQogCXNjaGVkX3VucGluKCk7CisJUFRfVVBEQVRFU19GTFVTSCgpOwog fQogCiB2b2lkCkBAIC05NjEsNiArNzcxLDkgQEAKIAl2bV9vZmZzZXRfdCBhZGRyOwogCXVf aW50IGNwdWlkOwogCisJQ1RSMyhLVFJfUE1BUCwgInBtYXBfaW52YWxpZGF0ZV9wYWdlOiBw bWFwPSVwIGV2YT0weCV4IHN2YT0weCV4IiwKKwkgICAgcG1hcCwgc3ZhLCBldmEpOworCiAJ c2NoZWRfcGluKCk7CiAJaWYgKHBtYXAgPT0ga2VybmVsX3BtYXAgfHwgIUNQVV9DTVAoJnBt YXAtPnBtX2FjdGl2ZSwgJmFsbF9jcHVzKSkgewogCQlmb3IgKGFkZHIgPSBzdmE7IGFkZHIg PCBldmE7IGFkZHIgKz0gUEFHRV9TSVpFKQpAQCAtOTc4LDYgKzc5MSw3IEBACiAJCQlzbXBf bWFza2VkX2ludmxwZ19yYW5nZShvdGhlcl9jcHVzLCBzdmEsIGV2YSk7CiAJfQogCXNjaGVk X3VucGluKCk7CisJUFRfVVBEQVRFU19GTFVTSCgpOwogfQogCiB2b2lkCkBAIC05ODYsNiAr ODAwLDggQEAKIAljcHVzZXRfdCBvdGhlcl9jcHVzOwogCXVfaW50IGNwdWlkOwogCisJQ1RS MShLVFJfUE1BUCwgInBtYXBfaW52YWxpZGF0ZV9wYWdlOiBwbWFwPSVwIiwgcG1hcCk7CisK IAlzY2hlZF9waW4oKTsKIAlpZiAocG1hcCA9PSBrZXJuZWxfcG1hcCB8fCAhQ1BVX0NNUCgm cG1hcC0+cG1fYWN0aXZlLCAmYWxsX2NwdXMpKSB7CiAJCWludmx0bGIoKTsKQEAgLTEwMTIs OTggKzgyOCw2IEBACiAJc21wX2NhY2hlX2ZsdXNoKCk7CiAJc2NoZWRfdW5waW4oKTsKIH0K LQotc3RydWN0IHBkZV9hY3Rpb24gewotCWNwdXNldF90IGludmFsaWRhdGU7CS8qIHByb2Nl c3NvcnMgdGhhdCBpbnZhbGlkYXRlIHRoZWlyIFRMQiAqLwotCXZtX29mZnNldF90IHZhOwot CXBkX2VudHJ5X3QgKnBkZTsKLQlwZF9lbnRyeV90IG5ld3BkZTsKLQl1X2ludCBzdG9yZTsJ CS8qIHByb2Nlc3NvciB0aGF0IHVwZGF0ZXMgdGhlIFBERSAqLwotfTsKLQotc3RhdGljIHZv aWQKLXBtYXBfdXBkYXRlX3BkZV9rZXJuZWwodm9pZCAqYXJnKQotewotCXN0cnVjdCBwZGVf YWN0aW9uICphY3QgPSBhcmc7Ci0JcGRfZW50cnlfdCAqcGRlOwotCXBtYXBfdCBwbWFwOwot Ci0JaWYgKGFjdC0+c3RvcmUgPT0gUENQVV9HRVQoY3B1aWQpKSB7Ci0KLQkJLyoKLQkJICog RWxzZXdoZXJlLCB0aGlzIG9wZXJhdGlvbiByZXF1aXJlcyBhbGxwbWFwc19sb2NrIGZvcgot CQkgKiBzeW5jaHJvbml6YXRpb24uICBIZXJlLCBpdCBkb2VzIG5vdCBiZWNhdXNlIGl0IGlz IGJlaW5nCi0JCSAqIHBlcmZvcm1lZCBpbiB0aGUgY29udGV4dCBvZiBhbiBhbGxfY3B1cyBy ZW5kZXp2b3VzLgotCQkgKi8KLQkJTElTVF9GT1JFQUNIKHBtYXAsICZhbGxwbWFwcywgcG1f bGlzdCkgewotCQkJcGRlID0gcG1hcF9wZGUocG1hcCwgYWN0LT52YSk7Ci0JCQlwZGVfc3Rv cmUocGRlLCBhY3QtPm5ld3BkZSk7Ci0JCX0KLQl9Ci19Ci0KLXN0YXRpYyB2b2lkCi1wbWFw X3VwZGF0ZV9wZGVfdXNlcih2b2lkICphcmcpCi17Ci0Jc3RydWN0IHBkZV9hY3Rpb24gKmFj dCA9IGFyZzsKLQotCWlmIChhY3QtPnN0b3JlID09IFBDUFVfR0VUKGNwdWlkKSkKLQkJcGRl X3N0b3JlKGFjdC0+cGRlLCBhY3QtPm5ld3BkZSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1wbWFw X3VwZGF0ZV9wZGVfdGVhcmRvd24odm9pZCAqYXJnKQotewotCXN0cnVjdCBwZGVfYWN0aW9u ICphY3QgPSBhcmc7Ci0KLQlpZiAoQ1BVX0lTU0VUKFBDUFVfR0VUKGNwdWlkKSwgJmFjdC0+ aW52YWxpZGF0ZSkpCi0JCXBtYXBfdXBkYXRlX3BkZV9pbnZhbGlkYXRlKGFjdC0+dmEsIGFj dC0+bmV3cGRlKTsKLX0KLQotLyoKLSAqIENoYW5nZSB0aGUgcGFnZSBzaXplIGZvciB0aGUg c3BlY2lmaWVkIHZpcnR1YWwgYWRkcmVzcyBpbiBhIHdheSB0aGF0Ci0gKiBwcmV2ZW50cyBh bnkgcG9zc2liaWxpdHkgb2YgdGhlIFRMQiBldmVyIGhhdmluZyB0d28gZW50cmllcyB0aGF0 IG1hcCB0aGUKLSAqIHNhbWUgdmlydHVhbCBhZGRyZXNzIHVzaW5nIGRpZmZlcmVudCBwYWdl IHNpemVzLiAgVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQKLSAqIHdvcmthcm91bmQgZm9yIEVy cmF0dW0gMzgzIG9uIEFNRCBGYW1pbHkgMTBoIHByb2Nlc3NvcnMuICBJdCBwcmV2ZW50cyBh Ci0gKiBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbiBmb3IgYSBUTEIgc3RhdGUgdGhhdCBpcyBp bXByb3Blcmx5IGRpYWdub3NlZCBhcyBhCi0gKiBoYXJkd2FyZSBlcnJvci4KLSAqLwotc3Rh dGljIHZvaWQKLXBtYXBfdXBkYXRlX3BkZShwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEs IHBkX2VudHJ5X3QgKnBkZSwgcGRfZW50cnlfdCBuZXdwZGUpCi17Ci0Jc3RydWN0IHBkZV9h Y3Rpb24gYWN0OwotCWNwdXNldF90IGFjdGl2ZSwgb3RoZXJfY3B1czsKLQl1X2ludCBjcHVp ZDsKLQotCXNjaGVkX3BpbigpOwotCWNwdWlkID0gUENQVV9HRVQoY3B1aWQpOwotCW90aGVy X2NwdXMgPSBhbGxfY3B1czsKLQlDUFVfQ0xSKGNwdWlkLCAmb3RoZXJfY3B1cyk7Ci0JaWYg KHBtYXAgPT0ga2VybmVsX3BtYXApCi0JCWFjdGl2ZSA9IGFsbF9jcHVzOwotCWVsc2UKLQkJ YWN0aXZlID0gcG1hcC0+cG1fYWN0aXZlOwotCWlmIChDUFVfT1ZFUkxBUCgmYWN0aXZlLCAm b3RoZXJfY3B1cykpIHsKLQkJYWN0LnN0b3JlID0gY3B1aWQ7Ci0JCWFjdC5pbnZhbGlkYXRl ID0gYWN0aXZlOwotCQlhY3QudmEgPSB2YTsKLQkJYWN0LnBkZSA9IHBkZTsKLQkJYWN0Lm5l d3BkZSA9IG5ld3BkZTsKLQkJQ1BVX1NFVChjcHVpZCwgJmFjdGl2ZSk7Ci0JCXNtcF9yZW5k ZXp2b3VzX2NwdXMoYWN0aXZlLAotCQkgICAgc21wX25vX3JlbmRldm91c19iYXJyaWVyLCBw bWFwID09IGtlcm5lbF9wbWFwID8KLQkJICAgIHBtYXBfdXBkYXRlX3BkZV9rZXJuZWwgOiBw bWFwX3VwZGF0ZV9wZGVfdXNlciwKLQkJICAgIHBtYXBfdXBkYXRlX3BkZV90ZWFyZG93biwg JmFjdCk7Ci0JfSBlbHNlIHsKLQkJaWYgKHBtYXAgPT0ga2VybmVsX3BtYXApCi0JCQlwbWFw X2tlbnRlcl9wZGUodmEsIG5ld3BkZSk7Ci0JCWVsc2UKLQkJCXBkZV9zdG9yZShwZGUsIG5l d3BkZSk7Ci0JCWlmIChDUFVfSVNTRVQoY3B1aWQsICZhY3RpdmUpKQotCQkJcG1hcF91cGRh dGVfcGRlX2ludmFsaWRhdGUodmEsIG5ld3BkZSk7Ci0JfQotCXNjaGVkX3VucGluKCk7Ci19 CiAjZWxzZSAvKiAhU01QICovCiAvKgogICogTm9ybWFsLCBub24tU01QLCA0ODYrIGludmFs aWRhdGlvbiBmdW5jdGlvbnMuCkBAIC0xMTEyLDkgKzgzNiwxMiBAQAogUE1BUF9JTkxJTkUg dm9pZAogcG1hcF9pbnZhbGlkYXRlX3BhZ2UocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZh KQogeworCUNUUjIoS1RSX1BNQVAsICJwbWFwX2ludmFsaWRhdGVfcGFnZTogcG1hcD0lcCB2 YT0weCV4IiwKKwkgICAgcG1hcCwgdmEpOwogCiAJaWYgKHBtYXAgPT0ga2VybmVsX3BtYXAg fHwgIUNQVV9FTVBUWSgmcG1hcC0+cG1fYWN0aXZlKSkKIAkJaW52bHBnKHZhKTsKKwlQVF9V UERBVEVTX0ZMVVNIKCk7CiB9CiAKIFBNQVBfSU5MSU5FIHZvaWQKQEAgLTExMjIsMTUgKzg0 OSwyMiBAQAogewogCXZtX29mZnNldF90IGFkZHI7CiAKKwlpZiAoZXZhIC0gc3ZhID4gUEFH RV9TSVpFKQorCQlDVFIzKEtUUl9QTUFQLCAicG1hcF9pbnZhbGlkYXRlX3JhbmdlOiBwbWFw PSVwIHN2YT0weCV4IGV2YT0weCV4IiwKKwkJICAgIHBtYXAsIHN2YSwgZXZhKTsKKwogCWlm IChwbWFwID09IGtlcm5lbF9wbWFwIHx8ICFDUFVfRU1QVFkoJnBtYXAtPnBtX2FjdGl2ZSkp CiAJCWZvciAoYWRkciA9IHN2YTsgYWRkciA8IGV2YTsgYWRkciArPSBQQUdFX1NJWkUpCiAJ CQlpbnZscGcoYWRkcik7CisJUFRfVVBEQVRFU19GTFVTSCgpOwogfQogCiBQTUFQX0lOTElO RSB2b2lkCiBwbWFwX2ludmFsaWRhdGVfYWxsKHBtYXBfdCBwbWFwKQogewogCisJQ1RSMShL VFJfUE1BUCwgInBtYXBfaW52YWxpZGF0ZV9hbGw6IHBtYXA9JXAiLCBwbWFwKTsKKwkKIAlp ZiAocG1hcCA9PSBrZXJuZWxfcG1hcCB8fCAhQ1BVX0VNUFRZKCZwbWFwLT5wbV9hY3RpdmUp KQogCQlpbnZsdGxiKCk7CiB9CkBAIC0xMTQxLDE4ICs4NzUsNiBAQAogCiAJd2JpbnZkKCk7 CiB9Ci0KLXN0YXRpYyB2b2lkCi1wbWFwX3VwZGF0ZV9wZGUocG1hcF90IHBtYXAsIHZtX29m ZnNldF90IHZhLCBwZF9lbnRyeV90ICpwZGUsIHBkX2VudHJ5X3QgbmV3cGRlKQotewotCi0J aWYgKHBtYXAgPT0ga2VybmVsX3BtYXApCi0JCXBtYXBfa2VudGVyX3BkZSh2YSwgbmV3cGRl KTsKLQllbHNlCi0JCXBkZV9zdG9yZShwZGUsIG5ld3BkZSk7Ci0JaWYgKHBtYXAgPT0ga2Vy bmVsX3BtYXAgfHwgIUNQVV9FTVBUWSgmcG1hcC0+cG1fYWN0aXZlKSkKLQkJcG1hcF91cGRh dGVfcGRlX2ludmFsaWRhdGUodmEsIG5ld3BkZSk7Ci19CiAjZW5kaWYgLyogIVNNUCAqLwog CiAjZGVmaW5lCVBNQVBfQ0xGTFVTSF9USFJFU0hPTEQJKDIgKiAxMDI0ICogMTAyNCkKQEAg LTEyNDIsOCArOTY0LDExIEBACiAJCW10eF9sb2NrKCZQTUFQMm11dGV4KTsKIAkJbmV3cGYg PSAqcGRlICYgUEdfRlJBTUU7CiAJCWlmICgoKlBNQVAyICYgUEdfRlJBTUUpICE9IG5ld3Bm KSB7Ci0JCQkqUE1BUDIgPSBuZXdwZiB8IFBHX1JXIHwgUEdfViB8IFBHX0EgfCBQR19NOwot CQkJcG1hcF9pbnZhbGlkYXRlX3BhZ2Uoa2VybmVsX3BtYXAsICh2bV9vZmZzZXRfdClQQURE UjIpOworCQkJdm1fcGFnZV9sb2NrX3F1ZXVlcygpOworCQkJUFRfU0VUX01BKFBBRERSMiwg bmV3cGYgfCBQR19WIHwgUEdfQSB8IFBHX00pOworCQkJdm1fcGFnZV91bmxvY2tfcXVldWVz KCk7CisJCQlDVFIzKEtUUl9QTUFQLCAicG1hcF9wdGU6IHBtYXA9JXAgdmE9MHgleCBuZXdw dGU9MHglMDh4IiwKKwkJCSAgICBwbWFwLCB2YSwgKCpQTUFQMiAmIDB4ZmZmZmZmZmYpKTsK IAkJfQogCQlyZXR1cm4gKFBBRERSMiArIChpMzg2X2J0b3AodmEpICYgKE5QVEVQRyAtIDEp KSk7CiAJfQpAQCAtMTI1OCw4ICs5ODMsMTQgQEAKIHBtYXBfcHRlX3JlbGVhc2UocHRfZW50 cnlfdCAqcHRlKQogewogCi0JaWYgKChwdF9lbnRyeV90ICopKCh2bV9vZmZzZXRfdClwdGUg JiB+UEFHRV9NQVNLKSA9PSBQQUREUjIpCisJaWYgKChwdF9lbnRyeV90ICopKCh2bV9vZmZz ZXRfdClwdGUgJiB+UEFHRV9NQVNLKSA9PSBQQUREUjIpIHsKKwkJQ1RSMShLVFJfUE1BUCwg InBtYXBfcHRlX3JlbGVhc2U6IHB0ZT0weCVqeCIsCisJCSAgICAqUE1BUDIpOworCQl2bV9w YWdlX2xvY2tfcXVldWVzKCk7CisJCVBUX1NFVF9WQShQTUFQMiwgMCwgVFJVRSk7CisJCXZt X3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwogCQltdHhfdW5sb2NrKCZQTUFQMm11dGV4KTsKKwl9 CiB9CiAKIHN0YXRpYyBfX2lubGluZSB2b2lkCkBAIC0xMjY3LDYgKzk5OCw3IEBACiB7CiAK IAlpbnZscGcoKHVfaW50KWNhZGRyKTsKKwlQVF9VUERBVEVTX0ZMVVNIKCk7CiB9CiAKIC8q CkBAIC0xMjk2LDExICsxMDI4LDEzIEBACiAJCUtBU1NFUlQoY3VydGhyZWFkLT50ZF9waW5u ZWQgPiAwLCAoImN1cnRocmVhZCBub3QgcGlubmVkIikpOwogCQluZXdwZiA9ICpwZGUgJiBQ R19GUkFNRTsKIAkJaWYgKCgqUE1BUDEgJiBQR19GUkFNRSkgIT0gbmV3cGYpIHsKLQkJCSpQ TUFQMSA9IG5ld3BmIHwgUEdfUlcgfCBQR19WIHwgUEdfQSB8IFBHX007CisJCQlQVF9TRVRf TUEoUEFERFIxLCBuZXdwZiB8IFBHX1YgfCBQR19BIHwgUEdfTSk7CisJCQlDVFIzKEtUUl9Q TUFQLCAicG1hcF9wdGVfcXVpY2s6IHBtYXA9JXAgdmE9MHgleCBuZXdwdGU9MHglMDh4IiwK KwkJCSAgICBwbWFwLCB2YSwgKHVfbG9uZykqUE1BUDEpOworCQkJCiAjaWZkZWYgU01QCiAJ CQlQTUFQMWNwdSA9IFBDUFVfR0VUKGNwdWlkKTsKICNlbmRpZgotCQkJaW52bGNhZGRyKFBB RERSMSk7CiAJCQlQTUFQMWNoYW5nZWQrKzsKIAkJfSBlbHNlCiAjaWZkZWYgU01QCkBAIC0x MzI4LDE4ICsxMDYyLDUwIEBACiAJdm1fcGFkZHJfdCBydHZhbDsKIAlwdF9lbnRyeV90ICpw dGU7CiAJcGRfZW50cnlfdCBwZGU7CisJcHRfZW50cnlfdCBwdGV2YWw7CiAKIAlydHZhbCA9 IDA7CiAJUE1BUF9MT0NLKHBtYXApOwogCXBkZSA9IHBtYXAtPnBtX3BkaXJbdmEgPj4gUERS U0hJRlRdOwogCWlmIChwZGUgIT0gMCkgewotCQlpZiAoKHBkZSAmIFBHX1BTKSAhPSAwKQot CQkJcnR2YWwgPSAocGRlICYgUEdfUFNfRlJBTUUpIHwgKHZhICYgUERSTUFTSyk7Ci0JCWVs c2UgewotCQkJcHRlID0gcG1hcF9wdGUocG1hcCwgdmEpOwotCQkJcnR2YWwgPSAoKnB0ZSAm IFBHX0ZSQU1FKSB8ICh2YSAmIFBBR0VfTUFTSyk7Ci0JCQlwbWFwX3B0ZV9yZWxlYXNlKHB0 ZSk7CisJCWlmICgocGRlICYgUEdfUFMpICE9IDApIHsKKwkJCXJ0dmFsID0geHBtYXBfbXRv cChwZGUgJiBQR19QU19GUkFNRSkgfCAodmEgJiBQRFJNQVNLKTsKKwkJCVBNQVBfVU5MT0NL KHBtYXApOworCQkJcmV0dXJuIHJ0dmFsOworCQl9CisJCXB0ZSA9IHBtYXBfcHRlKHBtYXAs IHZhKTsKKwkJcHRldmFsID0gKnB0ZSA/IHhwbWFwX210b3AoKnB0ZSkgOiAwOworCQlydHZh bCA9IChwdGV2YWwgJiBQR19GUkFNRSkgfCAodmEgJiBQQUdFX01BU0spOworCQlwbWFwX3B0 ZV9yZWxlYXNlKHB0ZSk7CisJfQorCVBNQVBfVU5MT0NLKHBtYXApOworCXJldHVybiAocnR2 YWwpOworfQorCisvKgorICoJUm91dGluZToJcG1hcF9leHRyYWN0X21hCisgKglGdW5jdGlv bjoKKyAqCQlMaWtlIHBtYXBfZXh0cmFjdCwgYnV0IHJldHVybnMgbWFjaGluZSBhZGRyZXNz CisgKi8KK3ZtX3BhZGRyX3QgCitwbWFwX2V4dHJhY3RfbWEocG1hcF90IHBtYXAsIHZtX29m ZnNldF90IHZhKQoreworCXZtX3BhZGRyX3QgcnR2YWw7CisJcHRfZW50cnlfdCAqcHRlOwor CXBkX2VudHJ5X3QgcGRlOworCisJcnR2YWwgPSAwOworCVBNQVBfTE9DSyhwbWFwKTsKKwlw ZGUgPSBwbWFwLT5wbV9wZGlyW3ZhID4+IFBEUlNISUZUXTsKKwlpZiAocGRlICE9IDApIHsK KwkJaWYgKChwZGUgJiBQR19QUykgIT0gMCkgeworCQkJcnR2YWwgPSAocGRlICYgflBEUk1B U0spIHwgKHZhICYgUERSTUFTSyk7CisJCQlQTUFQX1VOTE9DSyhwbWFwKTsKKwkJCXJldHVy biBydHZhbDsKIAkJfQorCQlwdGUgPSBwbWFwX3B0ZShwbWFwLCB2YSk7CisJCXJ0dmFsID0g KCpwdGUgJiBQR19GUkFNRSkgfCAodmEgJiBQQUdFX01BU0spOworCQlwbWFwX3B0ZV9yZWxl YXNlKHB0ZSk7CiAJfQogCVBNQVBfVU5MT0NLKHBtYXApOwogCXJldHVybiAocnR2YWwpOwpA QCAtMTM1Niw3ICsxMTIyLDcgQEAKIHBtYXBfZXh0cmFjdF9hbmRfaG9sZChwbWFwX3QgcG1h cCwgdm1fb2Zmc2V0X3QgdmEsIHZtX3Byb3RfdCBwcm90KQogewogCXBkX2VudHJ5X3QgcGRl OwotCXB0X2VudHJ5X3QgcHRlLCAqcHRlcDsKKwlwdF9lbnRyeV90IHB0ZTsKIAl2bV9wYWdl X3QgbTsKIAl2bV9wYWRkcl90IHBhOwogCkBAIC0xMzY0LDcgKzExMzAsNyBAQAogCW0gPSBO VUxMOwogCVBNQVBfTE9DSyhwbWFwKTsKIHJldHJ5OgotCXBkZSA9ICpwbWFwX3BkZShwbWFw LCB2YSk7CisJcGRlID0gUFRfR0VUKHBtYXBfcGRlKHBtYXAsIHZhKSk7CiAJaWYgKHBkZSAh PSAwKSB7CiAJCWlmIChwZGUgJiBQR19QUykgewogCQkJaWYgKChwZGUgJiBQR19SVykgfHwg KHByb3QgJiBWTV9QUk9UX1dSSVRFKSA9PSAwKSB7CkBAIC0xMzc2LDE2ICsxMTQyLDE4IEBA CiAJCQkJdm1fcGFnZV9ob2xkKG0pOwogCQkJfQogCQl9IGVsc2UgewotCQkJcHRlcCA9IHBt YXBfcHRlKHBtYXAsIHZhKTsKLQkJCXB0ZSA9ICpwdGVwOwotCQkJcG1hcF9wdGVfcmVsZWFz ZShwdGVwKTsKLQkJCWlmIChwdGUgIT0gMCAmJgorCQkJc2NoZWRfcGluKCk7CisJCQlwdGUg PSBQVF9HRVQocG1hcF9wdGVfcXVpY2socG1hcCwgdmEpKTsKKwkJCWlmICgqUE1BUDEpCisJ CQkJUFRfU0VUX01BKFBBRERSMSwgMCk7CisJCQlpZiAoKHB0ZSAmIFBHX1YpICYmCiAJCQkg ICAgKChwdGUgJiBQR19SVykgfHwgKHByb3QgJiBWTV9QUk9UX1dSSVRFKSA9PSAwKSkgewog CQkJCWlmICh2bV9wYWdlX3BhX3RyeXJlbG9jayhwbWFwLCBwdGUgJiBQR19GUkFNRSwgJnBh KSkKIAkJCQkJZ290byByZXRyeTsKIAkJCQltID0gUEhZU19UT19WTV9QQUdFKHB0ZSAmIFBH X0ZSQU1FKTsKIAkJCQl2bV9wYWdlX2hvbGQobSk7CiAJCQl9CisJCQlzY2hlZF91bnBpbigp OwogCQl9CiAJfQogCVBBX1VOTE9DS19DT05EKHBhKTsKQEAgLTE0MDMsMjIgKzExNzEsMjcg QEAKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIG1heSBiZSB1c2VkIGJlZm9yZSBwbWFwX2Jvb3Rz dHJhcCgpIGlzIGNhbGxlZC4KICAqLwotUE1BUF9JTkxJTkUgdm9pZCAKK3ZvaWQgCiBwbWFw X2tlbnRlcih2bV9vZmZzZXRfdCB2YSwgdm1fcGFkZHJfdCBwYSkKIHsKKworCVBUX1NFVF9N QSh2YSwgeHBtYXBfcHRvbShwYSl8IFBHX1JXIHwgUEdfViB8IHBnZWZsYWcpOworfQorCit2 b2lkIAorcG1hcF9rZW50ZXJfbWEodm1fb2Zmc2V0X3QgdmEsIHZtX3BhZGRyX3QgbWEpCit7 CiAJcHRfZW50cnlfdCAqcHRlOwogCiAJcHRlID0gdnRvcHRlKHZhKTsKLQlwdGVfc3RvcmUo cHRlLCBwYSB8IFBHX1JXIHwgUEdfViB8IHBnZWZsYWcpOworCXB0ZV9zdG9yZV9tYShwdGUs IG1hIHwgUEdfUlcgfCBQR19WIHwgcGdlZmxhZyk7CiB9CiAKIHN0YXRpYyBfX2lubGluZSB2 b2lkCiBwbWFwX2tlbnRlcl9hdHRyKHZtX29mZnNldF90IHZhLCB2bV9wYWRkcl90IHBhLCBp bnQgbW9kZSkKIHsKLQlwdF9lbnRyeV90ICpwdGU7CiAKLQlwdGUgPSB2dG9wdGUodmEpOwot CXB0ZV9zdG9yZShwdGUsIHBhIHwgUEdfUlcgfCBQR19WIHwgcGdlZmxhZyB8IHBtYXBfY2Fj aGVfYml0cyhtb2RlLCAwKSk7CisJUFRfU0VUX01BKHZhLCBwYSB8IFBHX1JXIHwgUEdfViB8 IHBnZWZsYWcgfCBwbWFwX2NhY2hlX2JpdHMobW9kZSwgMCkpOwogfQogCiAvKgpAQCAtMTQz Myw3ICsxMjA2LDcgQEAKIAlwdF9lbnRyeV90ICpwdGU7CiAKIAlwdGUgPSB2dG9wdGUodmEp OwotCXB0ZV9jbGVhcihwdGUpOworCVBUX0NMRUFSX1ZBKHB0ZSwgRkFMU0UpOwogfQogCiAv KgpAQCAtMTQ1Miw0MCArMTIyNSwxNCBAQAogcG1hcF9tYXAodm1fb2Zmc2V0X3QgKnZpcnQs IHZtX3BhZGRyX3Qgc3RhcnQsIHZtX3BhZGRyX3QgZW5kLCBpbnQgcHJvdCkKIHsKIAl2bV9v ZmZzZXRfdCB2YSwgc3ZhOwotCXZtX3BhZGRyX3Qgc3VwZXJwYWdlX29mZnNldDsKLQlwZF9l bnRyeV90IG5ld3BkZTsKIAotCXZhID0gKnZpcnQ7Ci0JLyoKLQkgKiBEb2VzIHRoZSBwaHlz aWNhbCBhZGRyZXNzIHJhbmdlJ3Mgc2l6ZSBhbmQgYWxpZ25tZW50IHBlcm1pdCBhdAotCSAq IGxlYXN0IG9uZSBzdXBlcnBhZ2UgbWFwcGluZyB0byBiZSBjcmVhdGVkPwotCSAqLyAKLQlz dXBlcnBhZ2Vfb2Zmc2V0ID0gc3RhcnQgJiBQRFJNQVNLOwotCWlmICgoZW5kIC0gc3RhcnQp IC0gKChOQlBEUiAtIHN1cGVycGFnZV9vZmZzZXQpICYgUERSTUFTSykgPj0gTkJQRFIpIHsK LQkJLyoKLQkJICogSW5jcmVhc2UgdGhlIHN0YXJ0aW5nIHZpcnR1YWwgYWRkcmVzcyBzbyB0 aGF0IGl0cyBhbGlnbm1lbnQKLQkJICogZG9lcyBub3QgcHJlY2x1ZGUgdGhlIHVzZSBvZiBz dXBlcnBhZ2UgbWFwcGluZ3MuCi0JCSAqLwotCQlpZiAoKHZhICYgUERSTUFTSykgPCBzdXBl cnBhZ2Vfb2Zmc2V0KQotCQkJdmEgPSAodmEgJiB+UERSTUFTSykgKyBzdXBlcnBhZ2Vfb2Zm c2V0OwotCQllbHNlIGlmICgodmEgJiBQRFJNQVNLKSA+IHN1cGVycGFnZV9vZmZzZXQpCi0J CQl2YSA9ICgodmEgKyBQRFJNQVNLKSAmIH5QRFJNQVNLKSArIHN1cGVycGFnZV9vZmZzZXQ7 Ci0JfQotCXN2YSA9IHZhOworCXZhID0gc3ZhID0gKnZpcnQ7CisJQ1RSNChLVFJfUE1BUCwg InBtYXBfbWFwOiB2YT0weCV4IHN0YXJ0PTB4JWp4IGVuZD0weCVqeCBwcm90PTB4JXgiLAor CSAgICB2YSwgc3RhcnQsIGVuZCwgcHJvdCk7CiAJd2hpbGUgKHN0YXJ0IDwgZW5kKSB7Ci0J CWlmICgoc3RhcnQgJiBQRFJNQVNLKSA9PSAwICYmIGVuZCAtIHN0YXJ0ID49IE5CUERSICYm Ci0JCSAgICBwc2VmbGFnKSB7Ci0JCQlLQVNTRVJUKCh2YSAmIFBEUk1BU0spID09IDAsCi0J CQkgICAgKCJwbWFwX21hcDogbWlzYWxpZ25lZCB2YSAlI3giLCB2YSkpOwotCQkJbmV3cGRl ID0gc3RhcnQgfCBQR19QUyB8IHBnZWZsYWcgfCBQR19SVyB8IFBHX1Y7Ci0JCQlwbWFwX2tl bnRlcl9wZGUodmEsIG5ld3BkZSk7Ci0JCQl2YSArPSBOQlBEUjsKLQkJCXN0YXJ0ICs9IE5C UERSOwotCQl9IGVsc2UgewotCQkJcG1hcF9rZW50ZXIodmEsIHN0YXJ0KTsKLQkJCXZhICs9 IFBBR0VfU0laRTsKLQkJCXN0YXJ0ICs9IFBBR0VfU0laRTsKLQkJfQorCQlwbWFwX2tlbnRl cih2YSwgc3RhcnQpOworCQl2YSArPSBQQUdFX1NJWkU7CisJCXN0YXJ0ICs9IFBBR0VfU0la RTsKIAl9CiAJcG1hcF9pbnZhbGlkYXRlX3JhbmdlKGtlcm5lbF9wbWFwLCBzdmEsIHZhKTsK IAkqdmlydCA9IHZhOwpAQCAtMTUwNSwyNCArMTI1Miw0NyBAQAogdm9pZAogcG1hcF9xZW50 ZXIodm1fb2Zmc2V0X3Qgc3ZhLCB2bV9wYWdlX3QgKm1hLCBpbnQgY291bnQpCiB7Ci0JcHRf ZW50cnlfdCAqZW5kcHRlLCBvbGRwdGUsIHBhLCAqcHRlOwotCXZtX3BhZ2VfdCBtOworCXB0 X2VudHJ5X3QgKmVuZHB0ZSwgKnB0ZTsKKwl2bV9wYWRkcl90IHBhOworCXZtX29mZnNldF90 IHZhID0gc3ZhOworCWludCBtY2xjb3VudCA9IDA7CisJbXVsdGljYWxsX2VudHJ5X3QgbWNs WzE2XTsKKwltdWx0aWNhbGxfZW50cnlfdCAqbWNscCA9IG1jbDsKKwlpbnQgZXJyb3I7CiAK LQlvbGRwdGUgPSAwOworCUNUUjIoS1RSX1BNQVAsICJwbWFwX3FlbnRlcjpzdmE9MHgleCBj b3VudD0lZCIsIHZhLCBjb3VudCk7CiAJcHRlID0gdnRvcHRlKHN2YSk7CiAJZW5kcHRlID0g cHRlICsgY291bnQ7CiAJd2hpbGUgKHB0ZSA8IGVuZHB0ZSkgewotCQltID0gKm1hKys7Ci0J CXBhID0gVk1fUEFHRV9UT19QSFlTKG0pIHwgcG1hcF9jYWNoZV9iaXRzKG0tPm1kLnBhdF9t b2RlLCAwKTsKLQkJaWYgKCgqcHRlICYgKFBHX0ZSQU1FIHwgUEdfUFRFX0NBQ0hFKSkgIT0g cGEpIHsKLQkJCW9sZHB0ZSB8PSAqcHRlOwotCQkJcHRlX3N0b3JlKHB0ZSwgcGEgfCBwZ2Vm bGFnIHwgUEdfUlcgfCBQR19WKTsKLQkJfQotCQlwdGUrKzsKKwkJcGEgPSBWTV9QQUdFX1RP X01BQ0goKm1hKSB8IHBnZWZsYWcgfCBQR19SVyB8IFBHX1YgfCBQR19NIHwgUEdfQTsKKwor CQltY2xwLT5vcCA9IF9fSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZzsKKwkJbWNscC0+ YXJnc1swXSA9IHZhOworCQltY2xwLT5hcmdzWzFdID0gKHVpbnQzMl90KShwYSAmIDB4ZmZm ZmZmZmYpOworCQltY2xwLT5hcmdzWzJdID0gKHVpbnQzMl90KShwYSA+PiAzMik7CisJCW1j bHAtPmFyZ3NbM10gPSAoKnB0ZSAmIFBHX1YpID8gVVZNRl9JTlZMUEd8VVZNRl9BTEwgOiAw OworCQorCQl2YSArPSBQQUdFX1NJWkU7CisJCXB0ZSsrOworCQltYSsrOworCQltY2xwKys7 CisJCW1jbGNvdW50Kys7CisJCWlmIChtY2xjb3VudCA9PSAxNikgeworCQkJZXJyb3IgPSBI WVBFUlZJU09SX211bHRpY2FsbChtY2wsIG1jbGNvdW50KTsKKwkJCW1jbHAgPSBtY2w7CisJ CQltY2xjb3VudCA9IDA7CisJCQlLQVNTRVJUKGVycm9yID09IDAsICgiYmFkIG11bHRpY2Fs bCAlZCIsIGVycm9yKSk7CisJCX0JCQorCX0KKwlpZiAobWNsY291bnQpIHsKKwkJZXJyb3Ig PSBIWVBFUlZJU09SX211bHRpY2FsbChtY2wsIG1jbGNvdW50KTsKKwkJS0FTU0VSVChlcnJv ciA9PSAwLCAoImJhZCBtdWx0aWNhbGwgJWQiLCBlcnJvcikpOwogCX0KLQlpZiAoX19wcmVk aWN0X2ZhbHNlKChvbGRwdGUgJiBQR19WKSAhPSAwKSkKLQkJcG1hcF9pbnZhbGlkYXRlX3Jh bmdlKGtlcm5lbF9wbWFwLCBzdmEsIHN2YSArIGNvdW50ICoKLQkJICAgIFBBR0VfU0laRSk7 CisJCisjaWZkZWYgSU5WQVJJQU5UUworCWZvciAocHRlID0gdnRvcHRlKHN2YSksIG1jbGNv dW50ID0gMDsgbWNsY291bnQgPCBjb3VudDsgbWNsY291bnQrKywgcHRlKyspCisJCUtBU1NF UlQoKnB0ZSwgKCJwdGUgbm90IHNldCBmb3IgdmE9MHgleCIsIHN2YSArIG1jbGNvdW50KlBB R0VfU0laRSkpOworI2VuZGlmCQogfQogCiAvKgpAQCAtMTUzNSwxMiArMTMwNSwxOCBAQAog ewogCXZtX29mZnNldF90IHZhOwogCisJQ1RSMihLVFJfUE1BUCwgInBtYXBfcXJlbW92ZTog c3ZhPTB4JXggY291bnQ9JWQiLCBzdmEsIGNvdW50KTsKIAl2YSA9IHN2YTsKKwl2bV9wYWdl X2xvY2tfcXVldWVzKCk7CisJY3JpdGljYWxfZW50ZXIoKTsKIAl3aGlsZSAoY291bnQtLSA+ IDApIHsKIAkJcG1hcF9rcmVtb3ZlKHZhKTsKIAkJdmEgKz0gUEFHRV9TSVpFOwogCX0KKwlQ VF9VUERBVEVTX0ZMVVNIKCk7CiAJcG1hcF9pbnZhbGlkYXRlX3JhbmdlKGtlcm5lbF9wbWFw LCBzdmEsIHZhKTsKKwljcml0aWNhbF9leGl0KCk7CisJdm1fcGFnZV91bmxvY2tfcXVldWVz KCk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKQEAgLTE1NTQsMTAxICsxMzMwLDggQEAKIAl3aGlsZSAoZnJlZSAhPSBOVUxM KSB7CiAJCW0gPSBmcmVlOwogCQlmcmVlID0gbS0+cmlnaHQ7Ci0JCS8qIFByZXNlcnZlIHRo ZSBwYWdlJ3MgUEdfWkVSTyBzZXR0aW5nLiAqLwotCQl2bV9wYWdlX2ZyZWVfdG9xKG0pOwot CX0KLX0KLQotLyoKLSAqIFNjaGVkdWxlIHRoZSBzcGVjaWZpZWQgdW51c2VkIHBhZ2UgdGFi bGUgcGFnZSB0byBiZSBmcmVlZC4gIFNwZWNpZmljYWxseSwKLSAqIGFkZCB0aGUgcGFnZSB0 byB0aGUgc3BlY2lmaWVkIGxpc3Qgb2YgcGFnZXMgdGhhdCB3aWxsIGJlIHJlbGVhc2VkIHRv IHRoZQotICogcGh5c2ljYWwgbWVtb3J5IG1hbmFnZXIgYWZ0ZXIgdGhlIFRMQiBoYXMgYmVl biB1cGRhdGVkLgotICovCi1zdGF0aWMgX19pbmxpbmUgdm9pZAotcG1hcF9hZGRfZGVsYXll ZF9mcmVlX2xpc3Qodm1fcGFnZV90IG0sIHZtX3BhZ2VfdCAqZnJlZSwgYm9vbGVhbl90IHNl dF9QR19aRVJPKQotewotCi0JaWYgKHNldF9QR19aRVJPKQotCQltLT5mbGFncyB8PSBQR19a RVJPOwotCWVsc2UKLQkJbS0+ZmxhZ3MgJj0gflBHX1pFUk87Ci0JbS0+cmlnaHQgPSAqZnJl ZTsKLQkqZnJlZSA9IG07Ci19Ci0KLS8qCi0gKiBJbnNlcnRzIHRoZSBzcGVjaWZpZWQgcGFn ZSB0YWJsZSBwYWdlIGludG8gdGhlIHNwZWNpZmllZCBwbWFwJ3MgY29sbGVjdGlvbgotICog b2YgaWRsZSBwYWdlIHRhYmxlIHBhZ2VzLiAgRWFjaCBvZiBhIHBtYXAncyBwYWdlIHRhYmxl IHBhZ2VzIGlzIHJlc3BvbnNpYmxlCi0gKiBmb3IgbWFwcGluZyBhIGRpc3RpbmN0IHJhbmdl IG9mIHZpcnR1YWwgYWRkcmVzc2VzLiAgVGhlIHBtYXAncyBjb2xsZWN0aW9uIGlzCi0gKiBv cmRlcmVkIGJ5IHRoaXMgdmlydHVhbCBhZGRyZXNzIHJhbmdlLgotICovCi1zdGF0aWMgdm9p ZAotcG1hcF9pbnNlcnRfcHRfcGFnZShwbWFwX3QgcG1hcCwgdm1fcGFnZV90IG1wdGUpCi17 Ci0Jdm1fcGFnZV90IHJvb3Q7Ci0KLQlQTUFQX0xPQ0tfQVNTRVJUKHBtYXAsIE1BX09XTkVE KTsKLQlyb290ID0gcG1hcC0+cG1fcm9vdDsKLQlpZiAocm9vdCA9PSBOVUxMKSB7Ci0JCW1w dGUtPmxlZnQgPSBOVUxMOwotCQltcHRlLT5yaWdodCA9IE5VTEw7Ci0JfSBlbHNlIHsKLQkJ cm9vdCA9IHZtX3BhZ2Vfc3BsYXkobXB0ZS0+cGluZGV4LCByb290KTsKLQkJaWYgKG1wdGUt PnBpbmRleCA8IHJvb3QtPnBpbmRleCkgewotCQkJbXB0ZS0+bGVmdCA9IHJvb3QtPmxlZnQ7 Ci0JCQltcHRlLT5yaWdodCA9IHJvb3Q7Ci0JCQlyb290LT5sZWZ0ID0gTlVMTDsKLQkJfSBl bHNlIGlmIChtcHRlLT5waW5kZXggPT0gcm9vdC0+cGluZGV4KQotCQkJcGFuaWMoInBtYXBf aW5zZXJ0X3B0X3BhZ2U6IHBpbmRleCBhbHJlYWR5IGluc2VydGVkIik7Ci0JCWVsc2Ugewot CQkJbXB0ZS0+cmlnaHQgPSByb290LT5yaWdodDsKLQkJCW1wdGUtPmxlZnQgPSByb290Owot CQkJcm9vdC0+cmlnaHQgPSBOVUxMOwotCQl9Ci0JfQotCXBtYXAtPnBtX3Jvb3QgPSBtcHRl OwotfQotCi0vKgotICogTG9va3MgZm9yIGEgcGFnZSB0YWJsZSBwYWdlIG1hcHBpbmcgdGhl IHNwZWNpZmllZCB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlCi0gKiBzcGVjaWZpZWQgcG1hcCdz IGNvbGxlY3Rpb24gb2YgaWRsZSBwYWdlIHRhYmxlIHBhZ2VzLiAgUmV0dXJucyBOVUxMIGlm IHRoZXJlCi0gKiBpcyBubyBwYWdlIHRhYmxlIHBhZ2UgY29ycmVzcG9uZGluZyB0byB0aGUg c3BlY2lmaWVkIHZpcnR1YWwgYWRkcmVzcy4KLSAqLwotc3RhdGljIHZtX3BhZ2VfdAotcG1h cF9sb29rdXBfcHRfcGFnZShwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEpCi17Ci0Jdm1f cGFnZV90IG1wdGU7Ci0Jdm1fcGluZGV4X3QgcGluZGV4ID0gdmEgPj4gUERSU0hJRlQ7Ci0K LQlQTUFQX0xPQ0tfQVNTRVJUKHBtYXAsIE1BX09XTkVEKTsKLQlpZiAoKG1wdGUgPSBwbWFw LT5wbV9yb290KSAhPSBOVUxMICYmIG1wdGUtPnBpbmRleCAhPSBwaW5kZXgpIHsKLQkJbXB0 ZSA9IHZtX3BhZ2Vfc3BsYXkocGluZGV4LCBtcHRlKTsKLQkJaWYgKChwbWFwLT5wbV9yb290 ID0gbXB0ZSktPnBpbmRleCAhPSBwaW5kZXgpCi0JCQltcHRlID0gTlVMTDsKLQl9Ci0JcmV0 dXJuIChtcHRlKTsKLX0KLQotLyoKLSAqIFJlbW92ZXMgdGhlIHNwZWNpZmllZCBwYWdlIHRh YmxlIHBhZ2UgZnJvbSB0aGUgc3BlY2lmaWVkIHBtYXAncyBjb2xsZWN0aW9uCi0gKiBvZiBp ZGxlIHBhZ2UgdGFibGUgcGFnZXMuICBUaGUgc3BlY2lmaWVkIHBhZ2UgdGFibGUgcGFnZSBt dXN0IGJlIGEgbWVtYmVyIG9mCi0gKiB0aGUgcG1hcCdzIGNvbGxlY3Rpb24uCi0gKi8KLXN0 YXRpYyB2b2lkCi1wbWFwX3JlbW92ZV9wdF9wYWdlKHBtYXBfdCBwbWFwLCB2bV9wYWdlX3Qg bXB0ZSkKLXsKLQl2bV9wYWdlX3Qgcm9vdDsKLQotCVBNQVBfTE9DS19BU1NFUlQocG1hcCwg TUFfT1dORUQpOwotCWlmIChtcHRlICE9IHBtYXAtPnBtX3Jvb3QpCi0JCXZtX3BhZ2Vfc3Bs YXkobXB0ZS0+cGluZGV4LCBwbWFwLT5wbV9yb290KTsKLQlpZiAobXB0ZS0+bGVmdCA9PSBO VUxMKQotCQlyb290ID0gbXB0ZS0+cmlnaHQ7Ci0JZWxzZSB7Ci0JCXJvb3QgPSB2bV9wYWdl X3NwbGF5KG1wdGUtPnBpbmRleCwgbXB0ZS0+bGVmdCk7Ci0JCXJvb3QtPnJpZ2h0ID0gbXB0 ZS0+cmlnaHQ7CisJCXZtX3BhZ2VfZnJlZV96ZXJvKG0pOwogCX0KLQlwbWFwLT5wbV9yb290 ID0gcm9vdDsKIH0KIAogLyoKQEAgLTE2NzEsMTAgKzEzNTQsMTYgQEAKIHsKIAl2bV9vZmZz ZXRfdCBwdGV2YTsKIAorCVBUX1VQREFURVNfRkxVU0goKTsKIAkvKgogCSAqIHVubWFwIHRo ZSBwYWdlIHRhYmxlIHBhZ2UKIAkgKi8KLQlwbWFwLT5wbV9wZGlyW20tPnBpbmRleF0gPSAw OworCXhlbl9wdF91bnBpbihwbWFwLT5wbV9wZGlyW20tPnBpbmRleF0pOworCS8qCisJICog cGFnZSAqbWlnaHQqIGNvbnRhaW4gcmVzaWR1YWwgbWFwcGluZyA6LS8gIAorCSAqLworCVBE X0NMRUFSX1ZBKHBtYXAsIG0tPnBpbmRleCwgVFJVRSk7CisJcG1hcF96ZXJvX3BhZ2UobSk7 CiAJLS1wbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudDsKIAogCS8qCkBAIC0xNjk1LDcg KzEzODQsOCBAQAogCSAqIFB1dCBwYWdlIG9uIGEgbGlzdCBzbyB0aGF0IGl0IGlzIHJlbGVh c2VkIGFmdGVyCiAJICogKkFMTCogVExCIHNob290ZG93biBpcyBkb25lCiAJICovCi0JcG1h cF9hZGRfZGVsYXllZF9mcmVlX2xpc3QobSwgZnJlZSwgVFJVRSk7CisJbS0+cmlnaHQgPSAq ZnJlZTsKKwkqZnJlZSA9IG07CiAKIAlyZXR1cm4gKDEpOwogfQpAQCAtMTcxMiw3ICsxNDAy LDcgQEAKIAogCWlmICh2YSA+PSBWTV9NQVhVU0VSX0FERFJFU1MpCiAJCXJldHVybiAoMCk7 Ci0JcHRlcGRlID0gKnBtYXBfcGRlKHBtYXAsIHZhKTsKKwlwdGVwZGUgPSBQVF9HRVQocG1h cF9wZGUocG1hcCwgdmEpKTsKIAltcHRlID0gUEhZU19UT19WTV9QQUdFKHB0ZXBkZSAmIFBH X0ZSQU1FKTsKIAlyZXR1cm4gKHBtYXBfdW53aXJlX3B0ZV9ob2xkKHBtYXAsIG1wdGUsIGZy ZWUpKTsKIH0KQEAgLTE3MzQsNyArMTQyNCw2IEBACiAjaWZkZWYgUEFFCiAJcG1hcC0+cG1f cGRwdCA9IChwZHB0X2VudHJ5X3QgKikoS0VSTkJBU0UgKyAodm1fb2Zmc2V0X3QpSWRsZVBE UFQpOwogI2VuZGlmCi0JcG1hcC0+cG1fcm9vdCA9IE5VTEw7CiAJQ1BVX1pFUk8oJnBtYXAt PnBtX2FjdGl2ZSk7CiAJUENQVV9TRVQoY3VycG1hcCwgcG1hcCk7CiAJVEFJTFFfSU5JVCgm cG1hcC0+cG1fcHZjaHVuayk7CkBAIC0xNzQ4LDEwICsxNDM3LDE0IEBACiBpbnQKIHBtYXBf cGluaXQocG1hcF90IHBtYXApCiB7Ci0Jdm1fcGFnZV90IG0sIHB0ZHBnW05QR1BURF07Ci0J dm1fcGFkZHJfdCBwYTsKKwl2bV9wYWdlX3QgbSwgcHRkcGdbTlBHUFREICsgMV07CisJaW50 IG5wZ3B0ZCA9IE5QR1BURCArIDE7CiAJaW50IGk7CiAKKyNpZmRlZiBIQU1GSVNURURfTE9D S0lORworCW10eF9sb2NrKCZjcmVhdGVkZWxldGVfbG9jayk7CisjZW5kaWYKKwogCVBNQVBf TE9DS19JTklUKHBtYXApOwogCiAJLyoKQEAgLTE3NjMsMjUgKzE0NTYsMjAgQEAKIAkJICAg IE5CUFREKTsKIAkJaWYgKHBtYXAtPnBtX3BkaXIgPT0gTlVMTCkgewogCQkJUE1BUF9MT0NL X0RFU1RST1kocG1hcCk7CisjaWZkZWYgSEFNRklTVEVEX0xPQ0tJTkcKKwkJCW10eF91bmxv Y2soJmNyZWF0ZWRlbGV0ZV9sb2NrKTsKKyNlbmRpZgogCQkJcmV0dXJuICgwKTsKIAkJfQog I2lmZGVmIFBBRQotCQlwbWFwLT5wbV9wZHB0ID0gdW1hX3phbGxvYyhwZHB0em9uZSwgTV9X QUlUT0sgfCBNX1pFUk8pOwotCQlLQVNTRVJUKCgodm1fb2Zmc2V0X3QpcG1hcC0+cG1fcGRw dCAmCi0JCSAgICAoKE5QR1BURCAqIHNpemVvZihwZHB0X2VudHJ5X3QpKSAtIDEpKSA9PSAw LAotCQkgICAgKCJwbWFwX3Bpbml0OiBwZHB0IG1pc2FsaWduZWQiKSk7Ci0JCUtBU1NFUlQo cG1hcF9rZXh0cmFjdCgodm1fb2Zmc2V0X3QpcG1hcC0+cG1fcGRwdCkgPCAoNFVMTDw8MzAp LAotCQkgICAgKCJwbWFwX3Bpbml0OiBwZHB0IGFib3ZlIDRnIikpOworCQlwbWFwLT5wbV9w ZHB0ID0gKHBkX2VudHJ5X3QgKilrbWVtX2FsbG9jX25vZmF1bHQoa2VybmVsX21hcCwgMSk7 CiAjZW5kaWYKLQkJcG1hcC0+cG1fcm9vdCA9IE5VTEw7CiAJfQotCUtBU1NFUlQocG1hcC0+ cG1fcm9vdCA9PSBOVUxMLAotCSAgICAoInBtYXBfcGluaXQ6IHBtYXAgaGFzIHJlc2VydmVk IHBhZ2UgdGFibGUgcGFnZShzKSIpKTsKIAogCS8qCiAJICogYWxsb2NhdGUgdGhlIHBhZ2Ug ZGlyZWN0b3J5IHBhZ2UocykKIAkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgTlBHUFREOykgewor CWZvciAoaSA9IDA7IGkgPCBucGdwdGQ7KSB7CiAJCW0gPSB2bV9wYWdlX2FsbG9jKE5VTEws IDAsIFZNX0FMTE9DX05PUk1BTCB8IFZNX0FMTE9DX05PT0JKIHwKIAkJICAgIFZNX0FMTE9D X1dJUkVEIHwgVk1fQUxMT0NfWkVSTyk7CiAJCWlmIChtID09IE5VTEwpCkBAIC0xODAzLDE5 ICsxNDkxLDQ5IEBACiAJYmNvcHkoUFREICsgS1BUREksIHBtYXAtPnBtX3BkaXIgKyBLUFRE SSwgbmtwdCAqIHNpemVvZihwZF9lbnRyeV90KSk7CiAJbXR4X3VubG9ja19zcGluKCZhbGxw bWFwc19sb2NrKTsKIAotCS8qIGluc3RhbGwgc2VsZi1yZWZlcmVudGlhbCBhZGRyZXNzIG1h cHBpbmcgZW50cnkocykgKi8KLQlmb3IgKGkgPSAwOyBpIDwgTlBHUFREOyBpKyspIHsKLQkJ cGEgPSBWTV9QQUdFX1RPX1BIWVMocHRkcGdbaV0pOwotCQlwbWFwLT5wbV9wZGlyW1BURFBU REkgKyBpXSA9IHBhIHwgUEdfViB8IFBHX1JXIHwgUEdfQSB8IFBHX007CiAjaWZkZWYgUEFF Ci0JCXBtYXAtPnBtX3BkcHRbaV0gPSBwYSB8IFBHX1Y7CisJcG1hcF9xZW50ZXIoKHZtX29m ZnNldF90KXBtYXAtPnBtX3BkcHQsICZwdGRwZ1tOUEdQVERdLCAxKTsKKwlpZiAoKHB0ZHBn W05QR1BURF0tPmZsYWdzICYgUEdfWkVSTykgPT0gMCkKKwkJYnplcm8ocG1hcC0+cG1fcGRw dCwgUEFHRV9TSVpFKTsKKwlmb3IgKGkgPSAwOyBpIDwgTlBHUFREOyBpKyspIHsKKwkJdm1f cGFkZHJfdCBtYTsKKwkJCisJCW1hID0gVk1fUEFHRV9UT19NQUNIKHB0ZHBnW2ldKTsKKwkJ cG1hcC0+cG1fcGRwdFtpXSA9IG1hIHwgUEdfVjsKKworCX0KKyNlbmRpZgkKKwlmb3IgKGkg PSAwOyBpIDwgTlBHUFREOyBpKyspIHsKKwkJcHRfZW50cnlfdCAqcGQ7CisJCXZtX3BhZGRy X3QgbWE7CisJCQorCQltYSA9IFZNX1BBR0VfVE9fTUFDSChwdGRwZ1tpXSk7CisJCXBkID0g cG1hcC0+cG1fcGRpciArIChpICogTlBERVBHKTsKKwkJUFRfU0VUX01BKHBkLCAqdnRvcHRl KCh2bV9vZmZzZXRfdClwZCkgJiB+KFBHX018UEdfQXxQR19VfFBHX1JXKSk7CisjaWYgMAkJ CisJCXhlbl9wZ2RfcGluKG1hKTsKKyNlbmRpZgkJCisJfQorCQorI2lmZGVmIFBBRQkKKwlQ VF9TRVRfTUEocG1hcC0+cG1fcGRwdCwgKnZ0b3B0ZSgodm1fb2Zmc2V0X3QpcG1hcC0+cG1f cGRwdCkgJiB+UEdfUlcpOwogI2VuZGlmCisJdm1fcGFnZV9sb2NrX3F1ZXVlcygpOworCXhl bl9mbHVzaF9xdWV1ZSgpOworCXhlbl9wZ2RwdF9waW4oVk1fUEFHRV9UT19NQUNIKHB0ZHBn W05QR1BURF0pKTsKKwlmb3IgKGkgPSAwOyBpIDwgTlBHUFREOyBpKyspIHsKKwkJdm1fcGFk ZHJfdCBtYSA9IFZNX1BBR0VfVE9fTUFDSChwdGRwZ1tpXSk7CisJCVBUX1NFVF9WQV9NQSgm cG1hcC0+cG1fcGRpcltQVERQVERJICsgaV0sIG1hIHwgUEdfViB8IFBHX0EsIEZBTFNFKTsK IAl9Ci0KKwl4ZW5fZmx1c2hfcXVldWUoKTsKKwl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsK IAlDUFVfWkVSTygmcG1hcC0+cG1fYWN0aXZlKTsKIAlUQUlMUV9JTklUKCZwbWFwLT5wbV9w dmNodW5rKTsKIAliemVybygmcG1hcC0+cG1fc3RhdHMsIHNpemVvZiBwbWFwLT5wbV9zdGF0 cyk7CiAKKyNpZmRlZiBIQU1GSVNURURfTE9DS0lORworCW10eF91bmxvY2soJmNyZWF0ZWRl bGV0ZV9sb2NrKTsKKyNlbmRpZgogCXJldHVybiAoMSk7CiB9CiAKQEAgLTE4MjYsNyArMTU0 NCw3IEBACiBzdGF0aWMgdm1fcGFnZV90CiBfcG1hcF9hbGxvY3B0ZShwbWFwX3QgcG1hcCwg dV9pbnQgcHRlcGluZGV4LCBpbnQgZmxhZ3MpCiB7Ci0Jdm1fcGFkZHJfdCBwdGVwYTsKKwl2 bV9wYWRkcl90IHB0ZW1hOwogCXZtX3BhZ2VfdCBtOwogCiAJS0FTU0VSVCgoZmxhZ3MgJiAo TV9OT1dBSVQgfCBNX1dBSVRPSykpID09IE1fTk9XQUlUIHx8CkBAIC0xODYyLDEwICsxNTgw LDEzIEBACiAKIAlwbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCsrOwogCi0JcHRlcGEg PSBWTV9QQUdFX1RPX1BIWVMobSk7Ci0JcG1hcC0+cG1fcGRpcltwdGVwaW5kZXhdID0KLQkJ KHBkX2VudHJ5X3QpIChwdGVwYSB8IFBHX1UgfCBQR19SVyB8IFBHX1YgfCBQR19BIHwgUEdf TSk7Ci0KKwlwdGVtYSA9IFZNX1BBR0VfVE9fTUFDSChtKTsKKwl4ZW5fcHRfcGluKHB0ZW1h KTsKKwlQVF9TRVRfVkFfTUEoJnBtYXAtPnBtX3BkaXJbcHRlcGluZGV4XSwKKwkJKHB0ZW1h IHwgUEdfVSB8IFBHX1JXIHwgUEdfViB8IFBHX0EgfCBQR19NKSwgVFJVRSk7CisJCisJS0FT U0VSVChwbWFwLT5wbV9wZGlyW3B0ZXBpbmRleF0sCisJICAgICgiX3BtYXBfYWxsb2NwdGU6 IHB0ZXBpbmRleD0lZCBkaWQgbm90IGdldCBtYXBwZWQiLCBwdGVwaW5kZXgpKTsKIAlyZXR1 cm4gKG0pOwogfQogCkBAIC0xODczLDcgKzE1OTQsNyBAQAogcG1hcF9hbGxvY3B0ZShwbWFw X3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIGludCBmbGFncykKIHsKIAl1X2ludCBwdGVwaW5k ZXg7Ci0JcGRfZW50cnlfdCBwdGVwYTsKKwlwZF9lbnRyeV90IHB0ZW1hOwogCXZtX3BhZ2Vf dCBtOwogCiAJS0FTU0VSVCgoZmxhZ3MgJiAoTV9OT1dBSVQgfCBNX1dBSVRPSykpID09IE1f Tk9XQUlUIHx8CkBAIC0xODg4LDMyICsxNjA5LDQxIEBACiAJLyoKIAkgKiBHZXQgdGhlIHBh Z2UgZGlyZWN0b3J5IGVudHJ5CiAJICovCi0JcHRlcGEgPSBwbWFwLT5wbV9wZGlyW3B0ZXBp bmRleF07CisJcHRlbWEgPSBwbWFwLT5wbV9wZGlyW3B0ZXBpbmRleF07CiAKIAkvKgogCSAq IFRoaXMgc3VwcG9ydHMgc3dpdGNoaW5nIGZyb20gYSA0TUIgcGFnZSB0byBhCiAJICogbm9y bWFsIDRLIHBhZ2UuCiAJICovCi0JaWYgKHB0ZXBhICYgUEdfUFMpIHsKLQkJKHZvaWQpcG1h cF9kZW1vdGVfcGRlKHBtYXAsICZwbWFwLT5wbV9wZGlyW3B0ZXBpbmRleF0sIHZhKTsKLQkJ cHRlcGEgPSBwbWFwLT5wbV9wZGlyW3B0ZXBpbmRleF07CisJaWYgKHB0ZW1hICYgUEdfUFMp IHsKKwkJLyoKKwkJICogWFhYIAorCQkgKi8KKwkJcG1hcC0+cG1fcGRpcltwdGVwaW5kZXhd ID0gMDsKKwkJcHRlbWEgPSAwOworCQlwbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCAt PSBOQlBEUiAvIFBBR0VfU0laRTsKKwkJcG1hcF9pbnZhbGlkYXRlX2FsbChrZXJuZWxfcG1h cCk7CiAJfQogCiAJLyoKIAkgKiBJZiB0aGUgcGFnZSB0YWJsZSBwYWdlIGlzIG1hcHBlZCwg d2UganVzdCBpbmNyZW1lbnQgdGhlCiAJICogaG9sZCBjb3VudCwgYW5kIGFjdGl2YXRlIGl0 LgogCSAqLwotCWlmIChwdGVwYSkgewotCQltID0gUEhZU19UT19WTV9QQUdFKHB0ZXBhICYg UEdfRlJBTUUpOworCWlmIChwdGVtYSAmIFBHX1YpIHsKKwkJbSA9IFBIWVNfVE9fVk1fUEFH RSh4cG1hcF9tdG9wKHB0ZW1hKSAmIFBHX0ZSQU1FKTsKIAkJbS0+d2lyZV9jb3VudCsrOwog CX0gZWxzZSB7CiAJCS8qCiAJCSAqIEhlcmUgaWYgdGhlIHB0ZSBwYWdlIGlzbid0IG1hcHBl ZCwgb3IgaWYgaXQgaGFzCiAJCSAqIGJlZW4gZGVhbGxvY2F0ZWQuIAogCQkgKi8KKwkJQ1RS MyhLVFJfUE1BUCwgInBtYXBfYWxsb2NwdGU6IHBtYXA9JXAgdmE9MHglMDh4IGZsYWdzPTB4 JXgiLAorCQkgICAgcG1hcCwgdmEsIGZsYWdzKTsKIAkJbSA9IF9wbWFwX2FsbG9jcHRlKHBt YXAsIHB0ZXBpbmRleCwgZmxhZ3MpOwogCQlpZiAobSA9PSBOVUxMICYmIChmbGFncyAmIE1f V0FJVE9LKSkKIAkJCWdvdG8gcmV0cnk7CisKKwkJS0FTU0VSVChwbWFwLT5wbV9wZGlyW3B0 ZXBpbmRleF0sICgicHRlcGluZGV4PSVkIGRpZCBub3QgZ2V0IG1hcHBlZCIsIHB0ZXBpbmRl eCkpOwogCX0KIAlyZXR1cm4gKG0pOwogfQpAQCAtMjAzMywxNCArMTc2MywyMyBAQAogdm9p ZAogcG1hcF9yZWxlYXNlKHBtYXBfdCBwbWFwKQogewotCXZtX3BhZ2VfdCBtLCBwdGRwZ1tO UEdQVERdOworCXZtX3BhZ2VfdCBtLCBwdGRwZ1syKk5QR1BURCsxXTsKKwl2bV9wYWRkcl90 IG1hOwogCWludCBpOworI2lmZGVmIFBBRQkKKwlpbnQgbnBncHRkID0gTlBHUFREICsgMTsK KyNlbHNlCisJaW50IG5wZ3B0ZCA9IE5QR1BURDsKKyNlbmRpZgogCiAJS0FTU0VSVChwbWFw LT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCA9PSAwLAogCSAgICAoInBtYXBfcmVsZWFzZTog cG1hcCByZXNpZGVudCBjb3VudCAlbGQgIT0gMCIsCiAJICAgIHBtYXAtPnBtX3N0YXRzLnJl c2lkZW50X2NvdW50KSk7Ci0JS0FTU0VSVChwbWFwLT5wbV9yb290ID09IE5VTEwsCi0JICAg ICgicG1hcF9yZWxlYXNlOiBwbWFwIGhhcyByZXNlcnZlZCBwYWdlIHRhYmxlIHBhZ2Uocyki KSk7CisJUFRfVVBEQVRFU19GTFVTSCgpOworCisjaWZkZWYgSEFNRklTVEVEX0xPQ0tJTkcK KwltdHhfbG9jaygmY3JlYXRlZGVsZXRlX2xvY2spOworI2VuZGlmCiAKIAlwbWFwX2xhenlm aXgocG1hcCk7CiAJbXR4X2xvY2tfc3BpbigmYWxscG1hcHNfbG9jayk7CkBAIC0yMDQ4LDI1 ICsxNzg3LDM5IEBACiAJbXR4X3VubG9ja19zcGluKCZhbGxwbWFwc19sb2NrKTsKIAogCWZv ciAoaSA9IDA7IGkgPCBOUEdQVEQ7IGkrKykKLQkJcHRkcGdbaV0gPSBQSFlTX1RPX1ZNX1BB R0UocG1hcC0+cG1fcGRpcltQVERQVERJICsgaV0gJgotCQkgICAgUEdfRlJBTUUpOwotCi0J Ynplcm8ocG1hcC0+cG1fcGRpciArIFBURFBUREksIChua3B0ICsgTlBHUFREKSAqCi0JICAg IHNpemVvZigqcG1hcC0+cG1fcGRpcikpOwotCisJCXB0ZHBnW2ldID0gUEhZU19UT19WTV9Q QUdFKHZ0b3BoeXMocG1hcC0+cG1fcGRpciArIChpKk5QREVQRykpICYgUEdfRlJBTUUpOwog CXBtYXBfcXJlbW92ZSgodm1fb2Zmc2V0X3QpcG1hcC0+cG1fcGRpciwgTlBHUFREKTsKKyNp ZmRlZiBQQUUKKwlwdGRwZ1tOUEdQVERdID0gUEhZU19UT19WTV9QQUdFKHZ0b3BoeXMocG1h cC0+cG1fcGRwdCkpOworI2VuZGlmCQogCi0JZm9yIChpID0gMDsgaSA8IE5QR1BURDsgaSsr KSB7CisJZm9yIChpID0gMDsgaSA8IG5wZ3B0ZDsgaSsrKSB7CiAJCW0gPSBwdGRwZ1tpXTsK KwkJbWEgPSBWTV9QQUdFX1RPX01BQ0gobSk7CisJCS8qIHVucGlubmluZyBMMSBhbmQgTDIg dHJlYXRlZCB0aGUgc2FtZSAqLworI2lmIDAKKyAgICAgICAgICAgICAgICB4ZW5fcGdkX3Vu cGluKG1hKTsKKyNlbHNlCisJCWlmIChpID09IE5QR1BURCkKKwkgICAgICAgICAgICAgICAg eGVuX3BnZF91bnBpbihtYSk7CisjZW5kaWYKICNpZmRlZiBQQUUKLQkJS0FTU0VSVChWTV9Q QUdFX1RPX1BIWVMobSkgPT0gKHBtYXAtPnBtX3BkcHRbaV0gJiBQR19GUkFNRSksCi0JCSAg ICAoInBtYXBfcmVsZWFzZTogZ290IHdyb25nIHB0ZCBwYWdlIikpOworCQlpZiAoaSA8IE5Q R1BURCkKKwkJCUtBU1NFUlQoVk1fUEFHRV9UT19NQUNIKG0pID09IChwbWFwLT5wbV9wZHB0 W2ldICYgUEdfRlJBTUUpLAorCQkJICAgICgicG1hcF9yZWxlYXNlOiBnb3Qgd3JvbmcgcHRk IHBhZ2UiKSk7CiAjZW5kaWYKIAkJbS0+d2lyZV9jb3VudC0tOwogCQlhdG9taWNfc3VidHJh Y3RfaW50KCZjbnQudl93aXJlX2NvdW50LCAxKTsKLQkJdm1fcGFnZV9mcmVlX3plcm8obSk7 CisJCXZtX3BhZ2VfZnJlZShtKTsKIAl9CisjaWZkZWYgUEFFCisJcG1hcF9xcmVtb3ZlKCh2 bV9vZmZzZXRfdClwbWFwLT5wbV9wZHB0LCAxKTsKKyNlbmRpZgogCVBNQVBfTE9DS19ERVNU Uk9ZKHBtYXApOworCisjaWZkZWYgSEFNRklTVEVEX0xPQ0tJTkcKKwltdHhfdW5sb2NrKCZj cmVhdGVkZWxldGVfbG9jayk7CisjZW5kaWYKIH0KIAwKIHN0YXRpYyBpbnQKQEAgLTIwOTUs MTEgKzE4NDgsMjQgQEAKIHZvaWQKIHBtYXBfZ3Jvd2tlcm5lbCh2bV9vZmZzZXRfdCBhZGRy KQogeworCXN0cnVjdCBwbWFwICpwbWFwOwogCXZtX3BhZGRyX3QgcHRwcGFkZHI7CiAJdm1f cGFnZV90IG5rcGc7CiAJcGRfZW50cnlfdCBuZXdwZGlyOwogCiAJbXR4X2Fzc2VydCgma2Vy bmVsX21hcC0+c3lzdGVtX210eCwgTUFfT1dORUQpOworCWlmIChrZXJuZWxfdm1fZW5kID09 IDApIHsKKwkJa2VybmVsX3ZtX2VuZCA9IEtFUk5CQVNFOworCQlua3B0ID0gMDsKKwkJd2hp bGUgKHBkaXJfcGRlKFBURCwga2VybmVsX3ZtX2VuZCkpIHsKKwkJCWtlcm5lbF92bV9lbmQg PSAoa2VybmVsX3ZtX2VuZCArIFBBR0VfU0laRSAqIE5QVEVQRykgJiB+KFBBR0VfU0laRSAq IE5QVEVQRyAtIDEpOworCQkJbmtwdCsrOworCQkJaWYgKGtlcm5lbF92bV9lbmQgLSAxID49 IGtlcm5lbF9tYXAtPm1heF9vZmZzZXQpIHsKKwkJCQlrZXJuZWxfdm1fZW5kID0ga2VybmVs X21hcC0+bWF4X29mZnNldDsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KIAlhZGRyID0g cm91bmR1cDIoYWRkciwgTkJQRFIpOwogCWlmIChhZGRyIC0gMSA+PSBrZXJuZWxfbWFwLT5t YXhfb2Zmc2V0KQogCQlhZGRyID0ga2VybmVsX21hcC0+bWF4X29mZnNldDsKQEAgLTIxMjUs OSArMTg5MSwxNSBAQAogCQkJcG1hcF96ZXJvX3BhZ2UobmtwZyk7CiAJCXB0cHBhZGRyID0g Vk1fUEFHRV9UT19QSFlTKG5rcGcpOwogCQluZXdwZGlyID0gKHBkX2VudHJ5X3QpIChwdHBw YWRkciB8IFBHX1YgfCBQR19SVyB8IFBHX0EgfCBQR19NKTsKLQkJcGRpcl9wZGUoS1BURCwg a2VybmVsX3ZtX2VuZCkgPSBwZ2VmbGFnIHwgbmV3cGRpcjsKKwkJdm1fcGFnZV9sb2NrX3F1 ZXVlcygpOworCQlQRF9TRVRfVkEoa2VybmVsX3BtYXAsIChrZXJuZWxfdm1fZW5kID4+IFBE UlNISUZUKSwgbmV3cGRpciwgVFJVRSk7CisJCW10eF9sb2NrX3NwaW4oJmFsbHBtYXBzX2xv Y2spOworCQlMSVNUX0ZPUkVBQ0gocG1hcCwgJmFsbHBtYXBzLCBwbV9saXN0KQorCQkJUERf U0VUX1ZBKHBtYXAsIChrZXJuZWxfdm1fZW5kID4+IFBEUlNISUZUKSwgbmV3cGRpciwgVFJV RSk7CisKKwkJbXR4X3VubG9ja19zcGluKCZhbGxwbWFwc19sb2NrKTsKKwkJdm1fcGFnZV91 bmxvY2tfcXVldWVzKCk7CiAKLQkJcG1hcF9rZW50ZXJfcGRlKGtlcm5lbF92bV9lbmQsIG5l d3BkaXIpOwogCQlrZXJuZWxfdm1fZW5kID0gKGtlcm5lbF92bV9lbmQgKyBOQlBEUikgJiB+ UERSTUFTSzsKIAkJaWYgKGtlcm5lbF92bV9lbmQgLSAxID49IGtlcm5lbF9tYXAtPm1heF9v ZmZzZXQpIHsKIAkJCWtlcm5lbF92bV9lbmQgPSBrZXJuZWxfbWFwLT5tYXhfb2Zmc2V0OwpA QCAtMjIwNSw3ICsxOTc3LDYgQEAKIHN0YXRpYyB2b2lkCiBwbWFwX2NvbGxlY3QocG1hcF90 IGxvY2tlZF9wbWFwLCBzdHJ1Y3QgdnBncXVldWVzICp2cHEpCiB7Ci0JcGRfZW50cnlfdCAq cGRlOwogCXBtYXBfdCBwbWFwOwogCXB0X2VudHJ5X3QgKnB0ZSwgdHB0ZTsKIAlwdl9lbnRy eV90IG5leHRfcHYsIHB2OwpAQCAtMjIyNSw5ICsxOTk2LDYgQEAKIAkJCWVsc2UgaWYgKHBt YXAgIT0gbG9ja2VkX3BtYXAgJiYgIVBNQVBfVFJZTE9DSyhwbWFwKSkKIAkJCQljb250aW51 ZTsKIAkJCXBtYXAtPnBtX3N0YXRzLnJlc2lkZW50X2NvdW50LS07Ci0JCQlwZGUgPSBwbWFw X3BkZShwbWFwLCB2YSk7Ci0JCQlLQVNTRVJUKCgqcGRlICYgUEdfUFMpID09IDAsICgicG1h cF9jb2xsZWN0OiBmb3VuZCIKLQkJCSAgICAiIGEgNG1wYWdlIGluIHBhZ2UgJXAncyBwdiBs aXN0IiwgbSkpOwogCQkJcHRlID0gcG1hcF9wdGVfcXVpY2socG1hcCwgdmEpOwogCQkJdHB0 ZSA9IHB0ZV9sb2FkX2NsZWFyKHB0ZSk7CiAJCQlLQVNTRVJUKCh0cHRlICYgUEdfVykgPT0g MCwKQEAgLTIyNDUsOCArMjAxMyw3IEBACiAJCQlpZiAocG1hcCAhPSBsb2NrZWRfcG1hcCkK IAkJCQlQTUFQX1VOTE9DSyhwbWFwKTsKIAkJfQotCQlpZiAoVEFJTFFfRU1QVFkoJm0tPm1k LnB2X2xpc3QpICYmCi0JCSAgICBUQUlMUV9FTVBUWSgmcGFfdG9fcHZoKFZNX1BBR0VfVE9f UEhZUyhtKSktPnB2X2xpc3QpKQorCQlpZiAoVEFJTFFfRU1QVFkoJm0tPm1kLnB2X2xpc3Qp KQogCQkJdm1fcGFnZV9hZmxhZ19jbGVhcihtLCBQR0FfV1JJVEVBQkxFKTsKIAl9CiAJc2No ZWRfdW5waW4oKTsKQEAgLTIzNzMsNiArMjE0MCw4IEBACiAJUFZfU1RBVChwY19jaHVua19h bGxvY3MrKyk7CiAJcGMgPSAoc3RydWN0IHB2X2NodW5rICopcG1hcF9wdGVsaXN0X2FsbG9j KCZwdl92YWZyZWUpOwogCXBtYXBfcWVudGVyKCh2bV9vZmZzZXRfdClwYywgJm0sIDEpOwor CWlmICgobS0+ZmxhZ3MgJiBQR19aRVJPKSA9PSAwKQorCQlwYWdlemVybyhwYyk7CiAJcGMt PnBjX3BtYXAgPSBwbWFwOwogCXBjLT5wY19tYXBbMF0gPSBwY19mcmVlbWFza1swXSAmIH4x dWw7CS8qIHByZWFsbG9jYXRlZCBiaXQgMCAqLwogCWZvciAoZmllbGQgPSAxOyBmaWVsZCA8 IF9OUENNOyBmaWVsZCsrKQpAQCAtMjM5OSw3MyArMjE2OCw2IEBACiB9CiAKIHN0YXRpYyB2 b2lkCi1wbWFwX3B2X2RlbW90ZV9wZGUocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCB2 bV9wYWRkcl90IHBhKQotewotCXN0cnVjdCBtZF9wYWdlICpwdmg7Ci0JcHZfZW50cnlfdCBw djsKLQl2bV9vZmZzZXRfdCB2YV9sYXN0OwotCXZtX3BhZ2VfdCBtOwotCi0JbXR4X2Fzc2Vy dCgmdm1fcGFnZV9xdWV1ZV9tdHgsIE1BX09XTkVEKTsKLQlLQVNTRVJUKChwYSAmIFBEUk1B U0spID09IDAsCi0JICAgICgicG1hcF9wdl9kZW1vdGVfcGRlOiBwYSBpcyBub3QgNG1wYWdl IGFsaWduZWQiKSk7Ci0KLQkvKgotCSAqIFRyYW5zZmVyIHRoZSA0bXBhZ2UncyBwdiBlbnRy eSBmb3IgdGhpcyBtYXBwaW5nIHRvIHRoZSBmaXJzdAotCSAqIHBhZ2UncyBwdiBsaXN0Lgot CSAqLwotCXB2aCA9IHBhX3RvX3B2aChwYSk7Ci0JdmEgPSB0cnVuY180bXBhZ2UodmEpOwot CXB2ID0gcG1hcF9wdmhfcmVtb3ZlKHB2aCwgcG1hcCwgdmEpOwotCUtBU1NFUlQocHYgIT0g TlVMTCwgKCJwbWFwX3B2X2RlbW90ZV9wZGU6IHB2IG5vdCBmb3VuZCIpKTsKLQltID0gUEhZ U19UT19WTV9QQUdFKHBhKTsKLQlUQUlMUV9JTlNFUlRfVEFJTCgmbS0+bWQucHZfbGlzdCwg cHYsIHB2X2xpc3QpOwotCS8qIEluc3RhbnRpYXRlIHRoZSByZW1haW5pbmcgTlBURVBHIC0g MSBwdiBlbnRyaWVzLiAqLwotCXZhX2xhc3QgPSB2YSArIE5CUERSIC0gUEFHRV9TSVpFOwot CWRvIHsKLQkJbSsrOwotCQlLQVNTRVJUKChtLT5vZmxhZ3MgJiBWUE9fVU5NQU5BR0VEKSA9 PSAwLAotCQkgICAgKCJwbWFwX3B2X2RlbW90ZV9wZGU6IHBhZ2UgJXAgaXMgbm90IG1hbmFn ZWQiLCBtKSk7Ci0JCXZhICs9IFBBR0VfU0laRTsKLQkJcG1hcF9pbnNlcnRfZW50cnkocG1h cCwgdmEsIG0pOwotCX0gd2hpbGUgKHZhIDwgdmFfbGFzdCk7Ci19Ci0KLXN0YXRpYyB2b2lk Ci1wbWFwX3B2X3Byb21vdGVfcGRlKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1f cGFkZHJfdCBwYSkKLXsKLQlzdHJ1Y3QgbWRfcGFnZSAqcHZoOwotCXB2X2VudHJ5X3QgcHY7 Ci0Jdm1fb2Zmc2V0X3QgdmFfbGFzdDsKLQl2bV9wYWdlX3QgbTsKLQotCW10eF9hc3NlcnQo JnZtX3BhZ2VfcXVldWVfbXR4LCBNQV9PV05FRCk7Ci0JS0FTU0VSVCgocGEgJiBQRFJNQVNL KSA9PSAwLAotCSAgICAoInBtYXBfcHZfcHJvbW90ZV9wZGU6IHBhIGlzIG5vdCA0bXBhZ2Ug YWxpZ25lZCIpKTsKLQotCS8qCi0JICogVHJhbnNmZXIgdGhlIGZpcnN0IHBhZ2UncyBwdiBl bnRyeSBmb3IgdGhpcyBtYXBwaW5nIHRvIHRoZQotCSAqIDRtcGFnZSdzIHB2IGxpc3QuICBB c2lkZSBmcm9tIGF2b2lkaW5nIHRoZSBjb3N0IG9mIGEgY2FsbAotCSAqIHRvIGdldF9wdl9l bnRyeSgpLCBhIHRyYW5zZmVyIGF2b2lkcyB0aGUgcG9zc2liaWxpdHkgdGhhdAotCSAqIGdl dF9wdl9lbnRyeSgpIGNhbGxzIHBtYXBfY29sbGVjdCgpIGFuZCB0aGF0IHBtYXBfY29sbGVj dCgpCi0JICogcmVtb3ZlcyBvbmUgb2YgdGhlIG1hcHBpbmdzIHRoYXQgaXMgYmVpbmcgcHJv bW90ZWQuCi0JICovCi0JbSA9IFBIWVNfVE9fVk1fUEFHRShwYSk7Ci0JdmEgPSB0cnVuY180 bXBhZ2UodmEpOwotCXB2ID0gcG1hcF9wdmhfcmVtb3ZlKCZtLT5tZCwgcG1hcCwgdmEpOwot CUtBU1NFUlQocHYgIT0gTlVMTCwgKCJwbWFwX3B2X3Byb21vdGVfcGRlOiBwdiBub3QgZm91 bmQiKSk7Ci0JcHZoID0gcGFfdG9fcHZoKHBhKTsKLQlUQUlMUV9JTlNFUlRfVEFJTCgmcHZo LT5wdl9saXN0LCBwdiwgcHZfbGlzdCk7Ci0JLyogRnJlZSB0aGUgcmVtYWluaW5nIE5QVEVQ RyAtIDEgcHYgZW50cmllcy4gKi8KLQl2YV9sYXN0ID0gdmEgKyBOQlBEUiAtIFBBR0VfU0la RTsKLQlkbyB7Ci0JCW0rKzsKLQkJdmEgKz0gUEFHRV9TSVpFOwotCQlwbWFwX3B2aF9mcmVl KCZtLT5tZCwgcG1hcCwgdmEpOwotCX0gd2hpbGUgKHZhIDwgdmFfbGFzdCk7Ci19Ci0KLXN0 YXRpYyB2b2lkCiBwbWFwX3B2aF9mcmVlKHN0cnVjdCBtZF9wYWdlICpwdmgsIHBtYXBfdCBw bWFwLCB2bV9vZmZzZXRfdCB2YSkKIHsKIAlwdl9lbnRyeV90IHB2OwpAQCAtMjQ3OCwzMSAr MjE4MCwxMSBAQAogc3RhdGljIHZvaWQKIHBtYXBfcmVtb3ZlX2VudHJ5KHBtYXBfdCBwbWFw LCB2bV9wYWdlX3QgbSwgdm1fb2Zmc2V0X3QgdmEpCiB7Ci0Jc3RydWN0IG1kX3BhZ2UgKnB2 aDsKIAogCW10eF9hc3NlcnQoJnZtX3BhZ2VfcXVldWVfbXR4LCBNQV9PV05FRCk7CiAJcG1h cF9wdmhfZnJlZSgmbS0+bWQsIHBtYXAsIHZhKTsKLQlpZiAoVEFJTFFfRU1QVFkoJm0tPm1k LnB2X2xpc3QpKSB7Ci0JCXB2aCA9IHBhX3RvX3B2aChWTV9QQUdFX1RPX1BIWVMobSkpOwot CQlpZiAoVEFJTFFfRU1QVFkoJnB2aC0+cHZfbGlzdCkpCi0JCQl2bV9wYWdlX2FmbGFnX2Ns ZWFyKG0sIFBHQV9XUklURUFCTEUpOwotCX0KLX0KLQotLyoKLSAqIENyZWF0ZSBhIHB2IGVu dHJ5IGZvciBwYWdlIGF0IHBhIGZvcgotICogKHBtYXAsIHZhKS4KLSAqLwotc3RhdGljIHZv aWQKLXBtYXBfaW5zZXJ0X2VudHJ5KHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1f cGFnZV90IG0pCi17Ci0JcHZfZW50cnlfdCBwdjsKLQotCVBNQVBfTE9DS19BU1NFUlQocG1h cCwgTUFfT1dORUQpOwotCW10eF9hc3NlcnQoJnZtX3BhZ2VfcXVldWVfbXR4LCBNQV9PV05F RCk7Ci0JcHYgPSBnZXRfcHZfZW50cnkocG1hcCwgRkFMU0UpOwotCXB2LT5wdl92YSA9IHZh OwotCVRBSUxRX0lOU0VSVF9UQUlMKCZtLT5tZC5wdl9saXN0LCBwdiwgcHZfbGlzdCk7CisJ aWYgKFRBSUxRX0VNUFRZKCZtLT5tZC5wdl9saXN0KSkKKwkJdm1fcGFnZV9hZmxhZ19jbGVh cihtLCBQR0FfV1JJVEVBQkxFKTsKIH0KIAogLyoKQEAgLTI1MjUsMjQzICsyMjA3LDYgQEAK IH0KIAogLyoKLSAqIENyZWF0ZSB0aGUgcHYgZW50cmllcyBmb3IgZWFjaCBvZiB0aGUgcGFn ZXMgd2l0aGluIGEgc3VwZXJwYWdlLgotICovCi1zdGF0aWMgYm9vbGVhbl90Ci1wbWFwX3B2 X2luc2VydF9wZGUocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCB2bV9wYWRkcl90IHBh KQotewotCXN0cnVjdCBtZF9wYWdlICpwdmg7Ci0JcHZfZW50cnlfdCBwdjsKLQotCW10eF9h c3NlcnQoJnZtX3BhZ2VfcXVldWVfbXR4LCBNQV9PV05FRCk7Ci0JaWYgKHB2X2VudHJ5X2Nv dW50IDwgcHZfZW50cnlfaGlnaF93YXRlciAmJiAKLQkgICAgKHB2ID0gZ2V0X3B2X2VudHJ5 KHBtYXAsIFRSVUUpKSAhPSBOVUxMKSB7Ci0JCXB2LT5wdl92YSA9IHZhOwotCQlwdmggPSBw YV90b19wdmgocGEpOwotCQlUQUlMUV9JTlNFUlRfVEFJTCgmcHZoLT5wdl9saXN0LCBwdiwg cHZfbGlzdCk7Ci0JCXJldHVybiAoVFJVRSk7Ci0JfSBlbHNlCi0JCXJldHVybiAoRkFMU0Up OwotfQotCi0vKgotICogRmlsbHMgYSBwYWdlIHRhYmxlIHBhZ2Ugd2l0aCBtYXBwaW5ncyB0 byBjb25zZWN1dGl2ZSBwaHlzaWNhbCBwYWdlcy4KLSAqLwotc3RhdGljIHZvaWQKLXBtYXBf ZmlsbF9wdHAocHRfZW50cnlfdCAqZmlyc3RwdGUsIHB0X2VudHJ5X3QgbmV3cHRlKQotewot CXB0X2VudHJ5X3QgKnB0ZTsKLQotCWZvciAocHRlID0gZmlyc3RwdGU7IHB0ZSA8IGZpcnN0 cHRlICsgTlBURVBHOyBwdGUrKykgewotCQkqcHRlID0gbmV3cHRlOwkKLQkJbmV3cHRlICs9 IFBBR0VfU0laRTsKLQl9Ci19Ci0KLS8qCi0gKiBUcmllcyB0byBkZW1vdGUgYSAyLSBvciA0 TUIgcGFnZSBtYXBwaW5nLiAgSWYgZGVtb3Rpb24gZmFpbHMsIHRoZQotICogMi0gb3IgNE1C IHBhZ2UgbWFwcGluZyBpcyBpbnZhbGlkYXRlZC4KLSAqLwotc3RhdGljIGJvb2xlYW5fdAot cG1hcF9kZW1vdGVfcGRlKHBtYXBfdCBwbWFwLCBwZF9lbnRyeV90ICpwZGUsIHZtX29mZnNl dF90IHZhKQotewotCXBkX2VudHJ5X3QgbmV3cGRlLCBvbGRwZGU7Ci0JcHRfZW50cnlfdCAq Zmlyc3RwdGUsIG5ld3B0ZTsKLQl2bV9wYWRkcl90IG1wdGVwYTsKLQl2bV9wYWdlX3QgZnJl ZSwgbXB0ZTsKLQotCVBNQVBfTE9DS19BU1NFUlQocG1hcCwgTUFfT1dORUQpOwotCW9sZHBk ZSA9ICpwZGU7Ci0JS0FTU0VSVCgob2xkcGRlICYgKFBHX1BTIHwgUEdfVikpID09IChQR19Q UyB8IFBHX1YpLAotCSAgICAoInBtYXBfZGVtb3RlX3BkZTogb2xkcGRlIGlzIG1pc3Npbmcg UEdfUFMgYW5kL29yIFBHX1YiKSk7Ci0JbXB0ZSA9IHBtYXBfbG9va3VwX3B0X3BhZ2UocG1h cCwgdmEpOwotCWlmIChtcHRlICE9IE5VTEwpCi0JCXBtYXBfcmVtb3ZlX3B0X3BhZ2UocG1h cCwgbXB0ZSk7Ci0JZWxzZSB7Ci0JCUtBU1NFUlQoKG9sZHBkZSAmIFBHX1cpID09IDAsCi0J CSAgICAoInBtYXBfZGVtb3RlX3BkZTogcGFnZSB0YWJsZSBwYWdlIGZvciBhIHdpcmVkIG1h cHBpbmciCi0JCSAgICAiIGlzIG1pc3NpbmciKSk7Ci0KLQkJLyoKLQkJICogSW52YWxpZGF0 ZSB0aGUgMi0gb3IgNE1CIHBhZ2UgbWFwcGluZyBhbmQgcmV0dXJuCi0JCSAqICJmYWlsdXJl IiBpZiB0aGUgbWFwcGluZyB3YXMgbmV2ZXIgYWNjZXNzZWQgb3IgdGhlCi0JCSAqIGFsbG9j YXRpb24gb2YgdGhlIG5ldyBwYWdlIHRhYmxlIHBhZ2UgZmFpbHMuCi0JCSAqLwotCQlpZiAo KG9sZHBkZSAmIFBHX0EpID09IDAgfHwgKG1wdGUgPSB2bV9wYWdlX2FsbG9jKE5VTEwsCi0J CSAgICB2YSA+PiBQRFJTSElGVCwgVk1fQUxMT0NfTk9PQkogfCBWTV9BTExPQ19OT1JNQUwg fAotCQkgICAgVk1fQUxMT0NfV0lSRUQpKSA9PSBOVUxMKSB7Ci0JCQlmcmVlID0gTlVMTDsK LQkJCXBtYXBfcmVtb3ZlX3BkZShwbWFwLCBwZGUsIHRydW5jXzRtcGFnZSh2YSksICZmcmVl KTsKLQkJCXBtYXBfaW52YWxpZGF0ZV9wYWdlKHBtYXAsIHRydW5jXzRtcGFnZSh2YSkpOwot CQkJcG1hcF9mcmVlX3plcm9fcGFnZXMoZnJlZSk7Ci0JCQlDVFIyKEtUUl9QTUFQLCAicG1h cF9kZW1vdGVfcGRlOiBmYWlsdXJlIGZvciB2YSAlI3giCi0JCQkgICAgIiBpbiBwbWFwICVw IiwgdmEsIHBtYXApOwotCQkJcmV0dXJuIChGQUxTRSk7Ci0JCX0KLQkJaWYgKHZhIDwgVk1f TUFYVVNFUl9BRERSRVNTKQotCQkJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQrKzsK LQl9Ci0JbXB0ZXBhID0gVk1fUEFHRV9UT19QSFlTKG1wdGUpOwotCi0JLyoKLQkgKiBJZiB0 aGUgcGFnZSBtYXBwaW5nIGlzIGluIHRoZSBrZXJuZWwncyBhZGRyZXNzIHNwYWNlLCB0aGVu IHRoZQotCSAqIEtQVG1hcCBjYW4gcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIHBhZ2UgdGFibGUg cGFnZS4gIE90aGVyd2lzZSwKLQkgKiB0ZW1wb3JhcmlseSBtYXAgdGhlIHBhZ2UgdGFibGUg cGFnZSAobXB0ZSkgaW50byB0aGUga2VybmVsJ3MKLQkgKiBhZGRyZXNzIHNwYWNlIGF0IGVp dGhlciBQQUREUjEgb3IgUEFERFIyLiAKLQkgKi8KLQlpZiAodmEgPj0gS0VSTkJBU0UpCi0J CWZpcnN0cHRlID0gJktQVG1hcFtpMzg2X2J0b3AodHJ1bmNfNG1wYWdlKHZhKSldOwotCWVs c2UgaWYgKGN1cnRocmVhZC0+dGRfcGlubmVkID4gMCAmJiBtdHhfb3duZWQoJnZtX3BhZ2Vf cXVldWVfbXR4KSkgewotCQlpZiAoKCpQTUFQMSAmIFBHX0ZSQU1FKSAhPSBtcHRlcGEpIHsK LQkJCSpQTUFQMSA9IG1wdGVwYSB8IFBHX1JXIHwgUEdfViB8IFBHX0EgfCBQR19NOwotI2lm ZGVmIFNNUAotCQkJUE1BUDFjcHUgPSBQQ1BVX0dFVChjcHVpZCk7Ci0jZW5kaWYKLQkJCWlu dmxjYWRkcihQQUREUjEpOwotCQkJUE1BUDFjaGFuZ2VkKys7Ci0JCX0gZWxzZQotI2lmZGVm IFNNUAotCQlpZiAoUE1BUDFjcHUgIT0gUENQVV9HRVQoY3B1aWQpKSB7Ci0JCQlQTUFQMWNw dSA9IFBDUFVfR0VUKGNwdWlkKTsKLQkJCWludmxjYWRkcihQQUREUjEpOwotCQkJUE1BUDFj aGFuZ2VkY3B1Kys7Ci0JCX0gZWxzZQotI2VuZGlmCi0JCQlQTUFQMXVuY2hhbmdlZCsrOwot CQlmaXJzdHB0ZSA9IFBBRERSMTsKLQl9IGVsc2UgewotCQltdHhfbG9jaygmUE1BUDJtdXRl eCk7Ci0JCWlmICgoKlBNQVAyICYgUEdfRlJBTUUpICE9IG1wdGVwYSkgewotCQkJKlBNQVAy ID0gbXB0ZXBhIHwgUEdfUlcgfCBQR19WIHwgUEdfQSB8IFBHX007Ci0JCQlwbWFwX2ludmFs aWRhdGVfcGFnZShrZXJuZWxfcG1hcCwgKHZtX29mZnNldF90KVBBRERSMik7Ci0JCX0KLQkJ Zmlyc3RwdGUgPSBQQUREUjI7Ci0JfQotCW5ld3BkZSA9IG1wdGVwYSB8IFBHX00gfCBQR19B IHwgKG9sZHBkZSAmIFBHX1UpIHwgUEdfUlcgfCBQR19WOwotCUtBU1NFUlQoKG9sZHBkZSAm IFBHX0EpICE9IDAsCi0JICAgICgicG1hcF9kZW1vdGVfcGRlOiBvbGRwZGUgaXMgbWlzc2lu ZyBQR19BIikpOwotCUtBU1NFUlQoKG9sZHBkZSAmIChQR19NIHwgUEdfUlcpKSAhPSBQR19S VywKLQkgICAgKCJwbWFwX2RlbW90ZV9wZGU6IG9sZHBkZSBpcyBtaXNzaW5nIFBHX00iKSk7 Ci0JbmV3cHRlID0gb2xkcGRlICYgflBHX1BTOwotCWlmICgobmV3cHRlICYgUEdfUERFX1BB VCkgIT0gMCkKLQkJbmV3cHRlIF49IFBHX1BERV9QQVQgfCBQR19QVEVfUEFUOwotCi0JLyoK LQkgKiBJZiB0aGUgcGFnZSB0YWJsZSBwYWdlIGlzIG5ldywgaW5pdGlhbGl6ZSBpdC4KLQkg Ki8KLQlpZiAobXB0ZS0+d2lyZV9jb3VudCA9PSAxKSB7Ci0JCW1wdGUtPndpcmVfY291bnQg PSBOUFRFUEc7Ci0JCXBtYXBfZmlsbF9wdHAoZmlyc3RwdGUsIG5ld3B0ZSk7Ci0JfQotCUtB U1NFUlQoKCpmaXJzdHB0ZSAmIFBHX0ZSQU1FKSA9PSAobmV3cHRlICYgUEdfRlJBTUUpLAot CSAgICAoInBtYXBfZGVtb3RlX3BkZTogZmlyc3RwdGUgYW5kIG5ld3B0ZSBtYXAgZGlmZmVy ZW50IHBoeXNpY2FsIgotCSAgICAiIGFkZHJlc3NlcyIpKTsKLQotCS8qCi0JICogSWYgdGhl IG1hcHBpbmcgaGFzIGNoYW5nZWQgYXR0cmlidXRlcywgdXBkYXRlIHRoZSBwYWdlIHRhYmxl Ci0JICogZW50cmllcy4KLQkgKi8gCi0JaWYgKCgqZmlyc3RwdGUgJiBQR19QVEVfUFJPTU9U RSkgIT0gKG5ld3B0ZSAmIFBHX1BURV9QUk9NT1RFKSkKLQkJcG1hcF9maWxsX3B0cChmaXJz dHB0ZSwgbmV3cHRlKTsKLQkKLQkvKgotCSAqIERlbW90ZSB0aGUgbWFwcGluZy4gIFRoaXMg cG1hcCBpcyBsb2NrZWQuICBUaGUgb2xkIFBERSBoYXMKLQkgKiBQR19BIHNldC4gIElmIHRo ZSBvbGQgUERFIGhhcyBQR19SVyBzZXQsIGl0IGFsc28gaGFzIFBHX00KLQkgKiBzZXQuICBU aHVzLCB0aGVyZSBpcyBubyBkYW5nZXIgb2YgYSByYWNlIHdpdGggYW5vdGhlcgotCSAqIHBy b2Nlc3NvciBjaGFuZ2luZyB0aGUgc2V0dGluZyBvZiBQR19BIGFuZC9vciBQR19NIGJldHdl ZW4KLQkgKiB0aGUgcmVhZCBhYm92ZSBhbmQgdGhlIHN0b3JlIGJlbG93LiAKLQkgKi8KLQlp ZiAod29ya2Fyb3VuZF9lcnJhdHVtMzgzKQotCQlwbWFwX3VwZGF0ZV9wZGUocG1hcCwgdmEs IHBkZSwgbmV3cGRlKTsKLQllbHNlIGlmIChwbWFwID09IGtlcm5lbF9wbWFwKQotCQlwbWFw X2tlbnRlcl9wZGUodmEsIG5ld3BkZSk7Ci0JZWxzZQotCQlwZGVfc3RvcmUocGRlLCBuZXdw ZGUpOwkKLQlpZiAoZmlyc3RwdGUgPT0gUEFERFIyKQotCQltdHhfdW5sb2NrKCZQTUFQMm11 dGV4KTsKLQotCS8qCi0JICogSW52YWxpZGF0ZSB0aGUgcmVjdXJzaXZlIG1hcHBpbmcgb2Yg dGhlIHBhZ2UgdGFibGUgcGFnZS4KLQkgKi8KLQlwbWFwX2ludmFsaWRhdGVfcGFnZShwbWFw LCAodm1fb2Zmc2V0X3QpdnRvcHRlKHZhKSk7Ci0KLQkvKgotCSAqIERlbW90ZSB0aGUgcHYg ZW50cnkuICBUaGlzIGRlcGVuZHMgb24gdGhlIGVhcmxpZXIgZGVtb3Rpb24KLQkgKiBvZiB0 aGUgbWFwcGluZy4gIFNwZWNpZmljYWxseSwgdGhlIChyZSljcmVhdGlvbiBvZiBhIHBlci0K LQkgKiBwYWdlIHB2IGVudHJ5IG1pZ2h0IHRyaWdnZXIgdGhlIGV4ZWN1dGlvbiBvZiBwbWFw X2NvbGxlY3QoKSwKLQkgKiB3aGljaCBtaWdodCByZWNsYWltIGEgbmV3bHkgKHJlKWNyZWF0 ZWQgcGVyLXBhZ2UgcHYgZW50cnkKLQkgKiBhbmQgZGVzdHJveSB0aGUgYXNzb2NpYXRlZCBt YXBwaW5nLiAgSW4gb3JkZXIgdG8gZGVzdHJveQotCSAqIHRoZSBtYXBwaW5nLCB0aGUgUERF IG11c3QgaGF2ZSBhbHJlYWR5IGNoYW5nZWQgZnJvbSBtYXBwaW5nCi0JICogdGhlIDJtcGFn ZSB0byByZWZlcmVuY2luZyB0aGUgcGFnZSB0YWJsZSBwYWdlLgotCSAqLwotCWlmICgob2xk cGRlICYgUEdfTUFOQUdFRCkgIT0gMCkKLQkJcG1hcF9wdl9kZW1vdGVfcGRlKHBtYXAsIHZh LCBvbGRwZGUgJiBQR19QU19GUkFNRSk7Ci0KLQlwbWFwX3BkZV9kZW1vdGlvbnMrKzsKLQlD VFIyKEtUUl9QTUFQLCAicG1hcF9kZW1vdGVfcGRlOiBzdWNjZXNzIGZvciB2YSAlI3giCi0J ICAgICIgaW4gcG1hcCAlcCIsIHZhLCBwbWFwKTsKLQlyZXR1cm4gKFRSVUUpOwotfQotCi0v KgotICogcG1hcF9yZW1vdmVfcGRlOiBkbyB0aGUgdGhpbmdzIHRvIHVubWFwIGEgc3VwZXJw YWdlIGluIGEgcHJvY2VzcwotICovCi1zdGF0aWMgdm9pZAotcG1hcF9yZW1vdmVfcGRlKHBt YXBfdCBwbWFwLCBwZF9lbnRyeV90ICpwZHEsIHZtX29mZnNldF90IHN2YSwKLSAgICB2bV9w YWdlX3QgKmZyZWUpCi17Ci0Jc3RydWN0IG1kX3BhZ2UgKnB2aDsKLQlwZF9lbnRyeV90IG9s ZHBkZTsKLQl2bV9vZmZzZXRfdCBldmEsIHZhOwotCXZtX3BhZ2VfdCBtLCBtcHRlOwotCi0J UE1BUF9MT0NLX0FTU0VSVChwbWFwLCBNQV9PV05FRCk7Ci0JS0FTU0VSVCgoc3ZhICYgUERS TUFTSykgPT0gMCwKLQkgICAgKCJwbWFwX3JlbW92ZV9wZGU6IHN2YSBpcyBub3QgNG1wYWdl IGFsaWduZWQiKSk7Ci0Jb2xkcGRlID0gcHRlX2xvYWRfY2xlYXIocGRxKTsKLQlpZiAob2xk cGRlICYgUEdfVykKLQkJcG1hcC0+cG1fc3RhdHMud2lyZWRfY291bnQgLT0gTkJQRFIgLyBQ QUdFX1NJWkU7Ci0KLQkvKgotCSAqIE1hY2hpbmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpbnZs cGcsIGFsc28gZG9uJ3Qgc3VwcG9ydAotCSAqIFBHX0cuCi0JICovCi0JaWYgKG9sZHBkZSAm IFBHX0cpCi0JCXBtYXBfaW52YWxpZGF0ZV9wYWdlKGtlcm5lbF9wbWFwLCBzdmEpOwotCXBt YXAtPnBtX3N0YXRzLnJlc2lkZW50X2NvdW50IC09IE5CUERSIC8gUEFHRV9TSVpFOwotCWlm IChvbGRwZGUgJiBQR19NQU5BR0VEKSB7Ci0JCXB2aCA9IHBhX3RvX3B2aChvbGRwZGUgJiBQ R19QU19GUkFNRSk7Ci0JCXBtYXBfcHZoX2ZyZWUocHZoLCBwbWFwLCBzdmEpOwotCQlldmEg PSBzdmEgKyBOQlBEUjsKLQkJZm9yICh2YSA9IHN2YSwgbSA9IFBIWVNfVE9fVk1fUEFHRShv bGRwZGUgJiBQR19QU19GUkFNRSk7Ci0JCSAgICB2YSA8IGV2YTsgdmEgKz0gUEFHRV9TSVpF LCBtKyspIHsKLQkJCWlmICgob2xkcGRlICYgKFBHX00gfCBQR19SVykpID09IChQR19NIHwg UEdfUlcpKQotCQkJCXZtX3BhZ2VfZGlydHkobSk7Ci0JCQlpZiAob2xkcGRlICYgUEdfQSkK LQkJCQl2bV9wYWdlX2FmbGFnX3NldChtLCBQR0FfUkVGRVJFTkNFRCk7Ci0JCQlpZiAoVEFJ TFFfRU1QVFkoJm0tPm1kLnB2X2xpc3QpICYmCi0JCQkgICAgVEFJTFFfRU1QVFkoJnB2aC0+ cHZfbGlzdCkpCi0JCQkJdm1fcGFnZV9hZmxhZ19jbGVhcihtLCBQR0FfV1JJVEVBQkxFKTsK LQkJfQotCX0KLQlpZiAocG1hcCA9PSBrZXJuZWxfcG1hcCkgewotCQlpZiAoIXBtYXBfZGVt b3RlX3BkZShwbWFwLCBwZHEsIHN2YSkpCi0JCQlwYW5pYygicG1hcF9yZW1vdmVfcGRlOiBm YWlsZWQgZGVtb3Rpb24iKTsKLQl9IGVsc2UgewotCQltcHRlID0gcG1hcF9sb29rdXBfcHRf cGFnZShwbWFwLCBzdmEpOwotCQlpZiAobXB0ZSAhPSBOVUxMKSB7Ci0JCQlwbWFwX3JlbW92 ZV9wdF9wYWdlKHBtYXAsIG1wdGUpOwotCQkJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291 bnQtLTsKLQkJCUtBU1NFUlQobXB0ZS0+d2lyZV9jb3VudCA9PSBOUFRFUEcsCi0JCQkgICAg KCJwbWFwX3JlbW92ZV9wZGU6IHB0ZSBwYWdlIHdpcmUgY291bnQgZXJyb3IiKSk7Ci0JCQlt cHRlLT53aXJlX2NvdW50ID0gMDsKLQkJCXBtYXBfYWRkX2RlbGF5ZWRfZnJlZV9saXN0KG1w dGUsIGZyZWUsIEZBTFNFKTsKLQkJCWF0b21pY19zdWJ0cmFjdF9pbnQoJmNudC52X3dpcmVf Y291bnQsIDEpOwotCQl9Ci0JfQotfQotCi0vKgogICogcG1hcF9yZW1vdmVfcHRlOiBkbyB0 aGUgdGhpbmdzIHRvIHVubWFwIGEgcGFnZSBpbiBhIHByb2Nlc3MKICAqLwogc3RhdGljIGlu dApAQCAtMjc3MCw5ICsyMjE1LDEzIEBACiAJcHRfZW50cnlfdCBvbGRwdGU7CiAJdm1fcGFn ZV90IG07CiAKKwlDVFIzKEtUUl9QTUFQLCAicG1hcF9yZW1vdmVfcHRlOiBwbWFwPSVwICpw dHE9MHgleCB2YT0weCV4IiwKKwkgICAgcG1hcCwgKHVfbG9uZykqcHRxLCB2YSk7CisJCiAJ bXR4X2Fzc2VydCgmdm1fcGFnZV9xdWV1ZV9tdHgsIE1BX09XTkVEKTsKIAlQTUFQX0xPQ0tf QVNTRVJUKHBtYXAsIE1BX09XTkVEKTsKLQlvbGRwdGUgPSBwdGVfbG9hZF9jbGVhcihwdHEp OworCW9sZHB0ZSA9ICpwdHE7CisJUFRfU0VUX1ZBX01BKHB0cSwgMCwgVFJVRSk7CiAJaWYg KG9sZHB0ZSAmIFBHX1cpCiAJCXBtYXAtPnBtX3N0YXRzLndpcmVkX2NvdW50IC09IDE7CiAJ LyoKQEAgLTI3ODMsNyArMjIzMiw3IEBACiAJCXBtYXBfaW52YWxpZGF0ZV9wYWdlKGtlcm5l bF9wbWFwLCB2YSk7CiAJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQgLT0gMTsKIAlp ZiAob2xkcHRlICYgUEdfTUFOQUdFRCkgewotCQltID0gUEhZU19UT19WTV9QQUdFKG9sZHB0 ZSAmIFBHX0ZSQU1FKTsKKwkJbSA9IFBIWVNfVE9fVk1fUEFHRSh4cG1hcF9tdG9wKG9sZHB0 ZSkgJiBQR19GUkFNRSk7CiAJCWlmICgob2xkcHRlICYgKFBHX00gfCBQR19SVykpID09IChQ R19NIHwgUEdfUlcpKQogCQkJdm1fcGFnZV9kaXJ0eShtKTsKIAkJaWYgKG9sZHB0ZSAmIFBH X0EpCkBAIC0yODAxLDEzICsyMjUwLDE5IEBACiB7CiAJcHRfZW50cnlfdCAqcHRlOwogCisJ Q1RSMihLVFJfUE1BUCwgInBtYXBfcmVtb3ZlX3BhZ2U6IHBtYXA9JXAgdmE9MHgleCIsCisJ ICAgIHBtYXAsIHZhKTsKKwkKIAltdHhfYXNzZXJ0KCZ2bV9wYWdlX3F1ZXVlX210eCwgTUFf T1dORUQpOwogCUtBU1NFUlQoY3VydGhyZWFkLT50ZF9waW5uZWQgPiAwLCAoImN1cnRocmVh ZCBub3QgcGlubmVkIikpOwogCVBNQVBfTE9DS19BU1NFUlQocG1hcCwgTUFfT1dORUQpOwot CWlmICgocHRlID0gcG1hcF9wdGVfcXVpY2socG1hcCwgdmEpKSA9PSBOVUxMIHx8ICpwdGUg PT0gMCkKKwlpZiAoKHB0ZSA9IHBtYXBfcHRlX3F1aWNrKHBtYXAsIHZhKSkgPT0gTlVMTCB8 fCAoKnB0ZSAmIFBHX1YpID09IDApCiAJCXJldHVybjsKIAlwbWFwX3JlbW92ZV9wdGUocG1h cCwgcHRlLCB2YSwgZnJlZSk7CiAJcG1hcF9pbnZhbGlkYXRlX3BhZ2UocG1hcCwgdmEpOwor CWlmICgqUE1BUDEpCisJCVBUX1NFVF9NQShQQUREUjEsIDApOworCiB9CiAKIC8qCkBAIC0y ODI1LDYgKzIyODAsOSBAQAogCXZtX3BhZ2VfdCBmcmVlID0gTlVMTDsKIAlpbnQgYW55dmFs aWQ7CiAKKwlDVFIzKEtUUl9QTUFQLCAicG1hcF9yZW1vdmU6IHBtYXA9JXAgc3ZhPTB4JXgg ZXZhPTB4JXgiLAorCSAgICBwbWFwLCBzdmEsIGV2YSk7CisKIAkvKgogCSAqIFBlcmZvcm0g YW4gdW5zeW5jaHJvbml6ZWQgcmVhZC4gIFRoaXMgaXMsIGhvd2V2ZXIsIHNhZmUuCiAJICov CkBAIC0yODU1LDggKzIzMTMsNiBAQAogCQkgKiBDYWxjdWxhdGUgaW5kZXggZm9yIG5leHQg cGFnZSB0YWJsZS4KIAkJICovCiAJCXBkbnh0ID0gKHN2YSArIE5CUERSKSAmIH5QRFJNQVNL OwotCQlpZiAocGRueHQgPCBzdmEpCi0JCQlwZG54dCA9IGV2YTsKIAkJaWYgKHBtYXAtPnBt X3N0YXRzLnJlc2lkZW50X2NvdW50ID09IDApCiAJCQlicmVhazsKIApAQCAtMjg3NCwyNSAr MjMzMCwxMCBAQAogCQkgKiBDaGVjayBmb3IgbGFyZ2UgcGFnZS4KIAkJICovCiAJCWlmICgo cHRwYWRkciAmIFBHX1BTKSAhPSAwKSB7Ci0JCQkvKgotCQkJICogQXJlIHdlIHJlbW92aW5n IHRoZSBlbnRpcmUgbGFyZ2UgcGFnZT8gIElmIG5vdCwKLQkJCSAqIGRlbW90ZSB0aGUgbWFw cGluZyBhbmQgZmFsbCB0aHJvdWdoLgotCQkJICovCi0JCQlpZiAoc3ZhICsgTkJQRFIgPT0g cGRueHQgJiYgZXZhID49IHBkbnh0KSB7Ci0JCQkJLyoKLQkJCQkgKiBUaGUgVExCIGVudHJ5 IGZvciBhIFBHX0cgbWFwcGluZyBpcwotCQkJCSAqIGludmFsaWRhdGVkIGJ5IHBtYXBfcmVt b3ZlX3BkZSgpLgotCQkJCSAqLwotCQkJCWlmICgocHRwYWRkciAmIFBHX0cpID09IDApCi0J CQkJCWFueXZhbGlkID0gMTsKLQkJCQlwbWFwX3JlbW92ZV9wZGUocG1hcCwKLQkJCQkgICAg JnBtYXAtPnBtX3BkaXJbcGRpcmluZGV4XSwgc3ZhLCAmZnJlZSk7Ci0JCQkJY29udGludWU7 Ci0JCQl9IGVsc2UgaWYgKCFwbWFwX2RlbW90ZV9wZGUocG1hcCwKLQkJCSAgICAmcG1hcC0+ cG1fcGRpcltwZGlyaW5kZXhdLCBzdmEpKSB7Ci0JCQkJLyogVGhlIGxhcmdlIHBhZ2UgbWFw cGluZyB3YXMgZGVzdHJveWVkLiAqLwotCQkJCWNvbnRpbnVlOwotCQkJfQorCQkJUERfQ0xF QVJfVkEocG1hcCwgcGRpcmluZGV4LCBUUlVFKTsKKwkJCXBtYXAtPnBtX3N0YXRzLnJlc2lk ZW50X2NvdW50IC09IE5CUERSIC8gUEFHRV9TSVpFOworCQkJYW55dmFsaWQgPSAxOworCQkJ Y29udGludWU7CiAJCX0KIAogCQkvKgpAQCAtMjkwNSw3ICsyMzQ2LDcgQEAKIAogCQlmb3Ig KHB0ZSA9IHBtYXBfcHRlX3F1aWNrKHBtYXAsIHN2YSk7IHN2YSAhPSBwZG54dDsgcHRlKyss CiAJCSAgICBzdmEgKz0gUEFHRV9TSVpFKSB7Ci0JCQlpZiAoKnB0ZSA9PSAwKQorCQkJaWYg KCgqcHRlICYgUEdfVikgPT0gMCkKIAkJCQljb250aW51ZTsKIAogCQkJLyoKQEAgLTI5MTgs MTAgKzIzNTksMTMgQEAKIAkJCQlicmVhazsKIAkJfQogCX0KKwlQVF9VUERBVEVTX0ZMVVNI KCk7CisJaWYgKCpQTUFQMSkKKwkJUFRfU0VUX1ZBX01BKFBNQVAxLCAwLCBUUlVFKTsKIG91 dDoKLQlzY2hlZF91bnBpbigpOwogCWlmIChhbnl2YWxpZCkKIAkJcG1hcF9pbnZhbGlkYXRl X2FsbChwbWFwKTsKKwlzY2hlZF91bnBpbigpOwogCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygp OwogCVBNQVBfVU5MT0NLKHBtYXApOwogCXBtYXBfZnJlZV96ZXJvX3BhZ2VzKGZyZWUpOwpA QCAtMjk0MywxMiArMjM4Nyw5IEBACiB2b2lkCiBwbWFwX3JlbW92ZV9hbGwodm1fcGFnZV90 IG0pCiB7Ci0Jc3RydWN0IG1kX3BhZ2UgKnB2aDsKIAlwdl9lbnRyeV90IHB2OwogCXBtYXBf dCBwbWFwOwogCXB0X2VudHJ5X3QgKnB0ZSwgdHB0ZTsKLQlwZF9lbnRyeV90ICpwZGU7Ci0J dm1fb2Zmc2V0X3QgdmE7CiAJdm1fcGFnZV90IGZyZWU7CiAKIAlLQVNTRVJUKChtLT5vZmxh Z3MgJiBWUE9fVU5NQU5BR0VEKSA9PSAwLApAQCAtMjk1NiwyNCArMjM5NywxMyBAQAogCWZy ZWUgPSBOVUxMOwogCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKIAlzY2hlZF9waW4oKTsKLQlw dmggPSBwYV90b19wdmgoVk1fUEFHRV9UT19QSFlTKG0pKTsKLQl3aGlsZSAoKHB2ID0gVEFJ TFFfRklSU1QoJnB2aC0+cHZfbGlzdCkpICE9IE5VTEwpIHsKLQkJdmEgPSBwdi0+cHZfdmE7 Ci0JCXBtYXAgPSBQVl9QTUFQKHB2KTsKLQkJUE1BUF9MT0NLKHBtYXApOwotCQlwZGUgPSBw bWFwX3BkZShwbWFwLCB2YSk7Ci0JCSh2b2lkKXBtYXBfZGVtb3RlX3BkZShwbWFwLCBwZGUs IHZhKTsKLQkJUE1BUF9VTkxPQ0socG1hcCk7Ci0JfQogCXdoaWxlICgocHYgPSBUQUlMUV9G SVJTVCgmbS0+bWQucHZfbGlzdCkpICE9IE5VTEwpIHsKIAkJcG1hcCA9IFBWX1BNQVAocHYp OwogCQlQTUFQX0xPQ0socG1hcCk7CiAJCXBtYXAtPnBtX3N0YXRzLnJlc2lkZW50X2NvdW50 LS07Ci0JCXBkZSA9IHBtYXBfcGRlKHBtYXAsIHB2LT5wdl92YSk7Ci0JCUtBU1NFUlQoKCpw ZGUgJiBQR19QUykgPT0gMCwgKCJwbWFwX3JlbW92ZV9hbGw6IGZvdW5kIgotCQkgICAgIiBh IDRtcGFnZSBpbiBwYWdlICVwJ3MgcHYgbGlzdCIsIG0pKTsKIAkJcHRlID0gcG1hcF9wdGVf cXVpY2socG1hcCwgcHYtPnB2X3ZhKTsKLQkJdHB0ZSA9IHB0ZV9sb2FkX2NsZWFyKHB0ZSk7 CisJCXRwdGUgPSAqcHRlOworCQlQVF9TRVRfVkFfTUEocHRlLCAwLCBUUlVFKTsKIAkJaWYg KHRwdGUgJiBQR19XKQogCQkJcG1hcC0+cG1fc3RhdHMud2lyZWRfY291bnQtLTsKIAkJaWYg KHRwdGUgJiBQR19BKQpAQCAtMjk5MSw1MyArMjQyMSwxNSBAQAogCQlQTUFQX1VOTE9DSyhw bWFwKTsKIAl9CiAJdm1fcGFnZV9hZmxhZ19jbGVhcihtLCBQR0FfV1JJVEVBQkxFKTsKKwlQ VF9VUERBVEVTX0ZMVVNIKCk7CisJaWYgKCpQTUFQMSkKKwkJUFRfU0VUX01BKFBBRERSMSwg MCk7CiAJc2NoZWRfdW5waW4oKTsKIAl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsKIAlwbWFw X2ZyZWVfemVyb19wYWdlcyhmcmVlKTsKIH0KIAogLyoKLSAqIHBtYXBfcHJvdGVjdF9wZGU6 IGRvIHRoZSB0aGluZ3MgdG8gcHJvdGVjdCBhIDRtcGFnZSBpbiBhIHByb2Nlc3MKLSAqLwot c3RhdGljIGJvb2xlYW5fdAotcG1hcF9wcm90ZWN0X3BkZShwbWFwX3QgcG1hcCwgcGRfZW50 cnlfdCAqcGRlLCB2bV9vZmZzZXRfdCBzdmEsIHZtX3Byb3RfdCBwcm90KQotewotCXBkX2Vu dHJ5X3QgbmV3cGRlLCBvbGRwZGU7Ci0Jdm1fb2Zmc2V0X3QgZXZhLCB2YTsKLQl2bV9wYWdl X3QgbTsKLQlib29sZWFuX3QgYW55Y2hhbmdlZDsKLQotCVBNQVBfTE9DS19BU1NFUlQocG1h cCwgTUFfT1dORUQpOwotCUtBU1NFUlQoKHN2YSAmIFBEUk1BU0spID09IDAsCi0JICAgICgi cG1hcF9wcm90ZWN0X3BkZTogc3ZhIGlzIG5vdCA0bXBhZ2UgYWxpZ25lZCIpKTsKLQlhbnlj aGFuZ2VkID0gRkFMU0U7Ci1yZXRyeToKLQlvbGRwZGUgPSBuZXdwZGUgPSAqcGRlOwotCWlm IChvbGRwZGUgJiBQR19NQU5BR0VEKSB7Ci0JCWV2YSA9IHN2YSArIE5CUERSOwotCQlmb3Ig KHZhID0gc3ZhLCBtID0gUEhZU19UT19WTV9QQUdFKG9sZHBkZSAmIFBHX1BTX0ZSQU1FKTsK LQkJICAgIHZhIDwgZXZhOyB2YSArPSBQQUdFX1NJWkUsIG0rKykKLQkJCWlmICgob2xkcGRl ICYgKFBHX00gfCBQR19SVykpID09IChQR19NIHwgUEdfUlcpKQotCQkJCXZtX3BhZ2VfZGly dHkobSk7Ci0JfQotCWlmICgocHJvdCAmIFZNX1BST1RfV1JJVEUpID09IDApCi0JCW5ld3Bk ZSAmPSB+KFBHX1JXIHwgUEdfTSk7Ci0jaWZkZWYgUEFFCi0JaWYgKChwcm90ICYgVk1fUFJP VF9FWEVDVVRFKSA9PSAwKQotCQluZXdwZGUgfD0gcGdfbng7Ci0jZW5kaWYKLQlpZiAobmV3 cGRlICE9IG9sZHBkZSkgewotCQlpZiAoIXBkZV9jbXBzZXQocGRlLCBvbGRwZGUsIG5ld3Bk ZSkpCi0JCQlnb3RvIHJldHJ5OwotCQlpZiAob2xkcGRlICYgUEdfRykKLQkJCXBtYXBfaW52 YWxpZGF0ZV9wYWdlKHBtYXAsIHN2YSk7Ci0JCWVsc2UKLQkJCWFueWNoYW5nZWQgPSBUUlVF OwotCX0KLQlyZXR1cm4gKGFueWNoYW5nZWQpOwotfQotCi0vKgogICoJU2V0IHRoZSBwaHlz aWNhbCBwcm90ZWN0aW9uIG9uIHRoZQogICoJc3BlY2lmaWVkIHJhbmdlIG9mIHRoaXMgbWFw IGFzIHJlcXVlc3RlZC4KICAqLwpAQCAtMzA0OSw2ICsyNDQxLDkgQEAKIAlwdF9lbnRyeV90 ICpwdGU7CiAJaW50IGFueWNoYW5nZWQ7CiAKKwlDVFI0KEtUUl9QTUFQLCAicG1hcF9wcm90 ZWN0OiBwbWFwPSVwIHN2YT0weCV4IGV2YT0weCV4IHByb3Q9MHgleCIsCisJICAgIHBtYXAs IHN2YSwgZXZhLCBwcm90KTsKKwkKIAlpZiAoKHByb3QgJiBWTV9QUk9UX1JFQUQpID09IFZN X1BST1RfTk9ORSkgewogCQlwbWFwX3JlbW92ZShwbWFwLCBzdmEsIGV2YSk7CiAJCXJldHVy bjsKQEAgLTMwNzMsOCArMjQ2OCw2IEBACiAJCXVfaW50IHBkaXJpbmRleDsKIAogCQlwZG54 dCA9IChzdmEgKyBOQlBEUikgJiB+UERSTUFTSzsKLQkJaWYgKHBkbnh0IDwgc3ZhKQotCQkJ cGRueHQgPSBldmE7CiAKIAkJcGRpcmluZGV4ID0gc3ZhID4+IFBEUlNISUZUOwogCQlwdHBh ZGRyID0gcG1hcC0+cG1fcGRpcltwZGlyaW5kZXhdOwpAQCAtMzA5MCwyNCArMjQ4MywxNCBA QAogCQkgKiBDaGVjayBmb3IgbGFyZ2UgcGFnZS4KIAkJICovCiAJCWlmICgocHRwYWRkciAm IFBHX1BTKSAhPSAwKSB7Ci0JCQkvKgotCQkJICogQXJlIHdlIHByb3RlY3RpbmcgdGhlIGVu dGlyZSBsYXJnZSBwYWdlPyAgSWYgbm90LAotCQkJICogZGVtb3RlIHRoZSBtYXBwaW5nIGFu ZCBmYWxsIHRocm91Z2guCi0JCQkgKi8KLQkJCWlmIChzdmEgKyBOQlBEUiA9PSBwZG54dCAm JiBldmEgPj0gcGRueHQpIHsKLQkJCQkvKgotCQkJCSAqIFRoZSBUTEIgZW50cnkgZm9yIGEg UEdfRyBtYXBwaW5nIGlzCi0JCQkJICogaW52YWxpZGF0ZWQgYnkgcG1hcF9wcm90ZWN0X3Bk ZSgpLgotCQkJCSAqLwotCQkJCWlmIChwbWFwX3Byb3RlY3RfcGRlKHBtYXAsCi0JCQkJICAg ICZwbWFwLT5wbV9wZGlyW3BkaXJpbmRleF0sIHN2YSwgcHJvdCkpCi0JCQkJCWFueWNoYW5n ZWQgPSAxOwotCQkJCWNvbnRpbnVlOwotCQkJfSBlbHNlIGlmICghcG1hcF9kZW1vdGVfcGRl KHBtYXAsCi0JCQkgICAgJnBtYXAtPnBtX3BkaXJbcGRpcmluZGV4XSwgc3ZhKSkgewotCQkJ CS8qIFRoZSBsYXJnZSBwYWdlIG1hcHBpbmcgd2FzIGRlc3Ryb3llZC4gKi8KLQkJCQljb250 aW51ZTsKLQkJCX0KKwkJCWlmICgocHJvdCAmIFZNX1BST1RfV1JJVEUpID09IDApCisJCQkJ cG1hcC0+cG1fcGRpcltwZGlyaW5kZXhdICY9IH4oUEdfTXxQR19SVyk7CisjaWZkZWYgUEFF CisJCQlpZiAoKHByb3QgJiBWTV9QUk9UX0VYRUNVVEUpID09IDApCisJCQkJcG1hcC0+cG1f cGRpcltwZGlyaW5kZXhdIHw9IHBnX254OworI2VuZGlmCisJCQlhbnljaGFuZ2VkID0gMTsK KwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJaWYgKHBkbnh0ID4gZXZhKQpAQCAtMzEzMCw3ICsy NTEzLDggQEAKIAkJCWlmICgocHJvdCAmIFZNX1BST1RfV1JJVEUpID09IDApIHsKIAkJCQlp ZiAoKHBiaXRzICYgKFBHX01BTkFHRUQgfCBQR19NIHwgUEdfUlcpKSA9PQogCQkJCSAgICAo UEdfTUFOQUdFRCB8IFBHX00gfCBQR19SVykpIHsKLQkJCQkJbSA9IFBIWVNfVE9fVk1fUEFH RShwYml0cyAmIFBHX0ZSQU1FKTsKKwkJCQkJbSA9IFBIWVNfVE9fVk1fUEFHRSh4cG1hcF9t dG9wKHBiaXRzKSAmCisJCQkJCSAgICBQR19GUkFNRSk7CiAJCQkJCXZtX3BhZ2VfZGlydHko bSk7CiAJCQkJfQogCQkJCXBiaXRzICY9IH4oUEdfUlcgfCBQR19NKTsKQEAgLTMxNDEsMTQg KzI1MjUsMTAgQEAKICNlbmRpZgogCiAJCQlpZiAocGJpdHMgIT0gb2JpdHMpIHsKLSNpZmRl ZiBQQUUKLQkJCQlpZiAoIWF0b21pY19jbXBzZXRfNjQocHRlLCBvYml0cywgcGJpdHMpKQor CQkJCW9iaXRzID0gKnB0ZTsKKwkJCQlQVF9TRVRfVkFfTUEocHRlLCBwYml0cywgVFJVRSk7 CisJCQkJaWYgKCpwdGUgIT0gcGJpdHMpCiAJCQkJCWdvdG8gcmV0cnk7Ci0jZWxzZQotCQkJ CWlmICghYXRvbWljX2NtcHNldF9pbnQoKHVfaW50ICopcHRlLCBvYml0cywKLQkJCQkgICAg cGJpdHMpKQotCQkJCQlnb3RvIHJldHJ5OwotI2VuZGlmCiAJCQkJaWYgKG9iaXRzICYgUEdf RykKIAkJCQkJcG1hcF9pbnZhbGlkYXRlX3BhZ2UocG1hcCwgc3ZhKTsKIAkJCQllbHNlCkBA IC0zMTU2LDE0NSArMjUzNiwxNyBAQAogCQkJfQogCQl9CiAJfQotCXNjaGVkX3VucGluKCk7 CisJUFRfVVBEQVRFU19GTFVTSCgpOworCWlmICgqUE1BUDEpCisJCVBUX1NFVF9WQV9NQShQ TUFQMSwgMCwgVFJVRSk7CiAJaWYgKGFueWNoYW5nZWQpCiAJCXBtYXBfaW52YWxpZGF0ZV9h bGwocG1hcCk7CisJc2NoZWRfdW5waW4oKTsKIAl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsK IAlQTUFQX1VOTE9DSyhwbWFwKTsKIH0KIAogLyoKLSAqIFRyaWVzIHRvIHByb21vdGUgdGhl IDUxMiBvciAxMDI0LCBjb250aWd1b3VzIDRLQiBwYWdlIG1hcHBpbmdzIHRoYXQgYXJlCi0g KiB3aXRoaW4gYSBzaW5nbGUgcGFnZSB0YWJsZSBwYWdlIChQVFApIHRvIGEgc2luZ2xlIDIt IG9yIDRNQiBwYWdlIG1hcHBpbmcuCi0gKiBGb3IgcHJvbW90aW9uIHRvIG9jY3VyLCB0d28g Y29uZGl0aW9ucyBtdXN0IGJlIG1ldDogKDEpIHRoZSA0S0IgcGFnZQotICogbWFwcGluZ3Mg bXVzdCBtYXAgYWxpZ25lZCwgY29udGlndW91cyBwaHlzaWNhbCBtZW1vcnkgYW5kICgyKSB0 aGUgNEtCIHBhZ2UKLSAqIG1hcHBpbmdzIG11c3QgaGF2ZSBpZGVudGljYWwgY2hhcmFjdGVy aXN0aWNzLgotICoKLSAqIE1hbmFnZWQgKFBHX01BTkFHRUQpIG1hcHBpbmdzIHdpdGhpbiB0 aGUga2VybmVsIGFkZHJlc3Mgc3BhY2UgYXJlIG5vdAotICogcHJvbW90ZWQuICBUaGUgcmVh c29uIGlzIHRoYXQga2VybmVsIFBERXMgYXJlIHJlcGxpY2F0ZWQgaW4gZWFjaCBwbWFwIGJ1 dAotICogcG1hcF9jbGVhcl9wdGVzKCkgYW5kIHBtYXBfdHNfcmVmZXJlbmNlZCgpIG9ubHkg cmVhZCB0aGUgUERFIGZyb20gdGhlIGtlcm5lbAotICogcG1hcC4KLSAqLwotc3RhdGljIHZv aWQKLXBtYXBfcHJvbW90ZV9wZGUocG1hcF90IHBtYXAsIHBkX2VudHJ5X3QgKnBkZSwgdm1f b2Zmc2V0X3QgdmEpCi17Ci0JcGRfZW50cnlfdCBuZXdwZGU7Ci0JcHRfZW50cnlfdCAqZmly c3RwdGUsIG9sZHB0ZSwgcGEsICpwdGU7Ci0Jdm1fb2Zmc2V0X3Qgb2xkcHRldmE7Ci0Jdm1f cGFnZV90IG1wdGU7Ci0KLQlQTUFQX0xPQ0tfQVNTRVJUKHBtYXAsIE1BX09XTkVEKTsKLQot CS8qCi0JICogRXhhbWluZSB0aGUgZmlyc3QgUFRFIGluIHRoZSBzcGVjaWZpZWQgUFRQLiAg QWJvcnQgaWYgdGhpcyBQVEUgaXMKLQkgKiBlaXRoZXIgaW52YWxpZCwgdW51c2VkLCBvciBk b2VzIG5vdCBtYXAgdGhlIGZpcnN0IDRLQiBwaHlzaWNhbCBwYWdlCi0JICogd2l0aGluIGEg Mi0gb3IgNE1CIHBhZ2UuCi0JICovCi0JZmlyc3RwdGUgPSBwbWFwX3B0ZV9xdWljayhwbWFw LCB0cnVuY180bXBhZ2UodmEpKTsKLXNldHBkZToKLQluZXdwZGUgPSAqZmlyc3RwdGU7Ci0J aWYgKChuZXdwZGUgJiAoKFBHX0ZSQU1FICYgUERSTUFTSykgfCBQR19BIHwgUEdfVikpICE9 IChQR19BIHwgUEdfVikpIHsKLQkJcG1hcF9wZGVfcF9mYWlsdXJlcysrOwotCQlDVFIyKEtU Ul9QTUFQLCAicG1hcF9wcm9tb3RlX3BkZTogZmFpbHVyZSBmb3IgdmEgJSN4IgotCQkgICAg IiBpbiBwbWFwICVwIiwgdmEsIHBtYXApOwotCQlyZXR1cm47Ci0JfQotCWlmICgoKmZpcnN0 cHRlICYgUEdfTUFOQUdFRCkgIT0gMCAmJiBwbWFwID09IGtlcm5lbF9wbWFwKSB7Ci0JCXBt YXBfcGRlX3BfZmFpbHVyZXMrKzsKLQkJQ1RSMihLVFJfUE1BUCwgInBtYXBfcHJvbW90ZV9w ZGU6IGZhaWx1cmUgZm9yIHZhICUjeCIKLQkJICAgICIgaW4gcG1hcCAlcCIsIHZhLCBwbWFw KTsKLQkJcmV0dXJuOwotCX0KLQlpZiAoKG5ld3BkZSAmIChQR19NIHwgUEdfUlcpKSA9PSBQ R19SVykgewotCQkvKgotCQkgKiBXaGVuIFBHX00gaXMgYWxyZWFkeSBjbGVhciwgUEdfUlcg Y2FuIGJlIGNsZWFyZWQgd2l0aG91dAotCQkgKiBhIFRMQiBpbnZhbGlkYXRpb24uCi0JCSAq LwotCQlpZiAoIWF0b21pY19jbXBzZXRfaW50KCh1X2ludCAqKWZpcnN0cHRlLCBuZXdwZGUs IG5ld3BkZSAmCi0JCSAgICB+UEdfUlcpKSAgCi0JCQlnb3RvIHNldHBkZTsKLQkJbmV3cGRl ICY9IH5QR19SVzsKLQl9Ci0KLQkvKiAKLQkgKiBFeGFtaW5lIGVhY2ggb2YgdGhlIG90aGVy IFBURXMgaW4gdGhlIHNwZWNpZmllZCBQVFAuICBBYm9ydCBpZiB0aGlzCi0JICogUFRFIG1h cHMgYW4gdW5leHBlY3RlZCA0S0IgcGh5c2ljYWwgcGFnZSBvciBkb2VzIG5vdCBoYXZlIGlk ZW50aWNhbAotCSAqIGNoYXJhY3RlcmlzdGljcyB0byB0aGUgZmlyc3QgUFRFLgotCSAqLwot CXBhID0gKG5ld3BkZSAmIChQR19QU19GUkFNRSB8IFBHX0EgfCBQR19WKSkgKyBOQlBEUiAt IFBBR0VfU0laRTsKLQlmb3IgKHB0ZSA9IGZpcnN0cHRlICsgTlBURVBHIC0gMTsgcHRlID4g Zmlyc3RwdGU7IHB0ZS0tKSB7Ci1zZXRwdGU6Ci0JCW9sZHB0ZSA9ICpwdGU7Ci0JCWlmICgo b2xkcHRlICYgKFBHX0ZSQU1FIHwgUEdfQSB8IFBHX1YpKSAhPSBwYSkgewotCQkJcG1hcF9w ZGVfcF9mYWlsdXJlcysrOwotCQkJQ1RSMihLVFJfUE1BUCwgInBtYXBfcHJvbW90ZV9wZGU6 IGZhaWx1cmUgZm9yIHZhICUjeCIKLQkJCSAgICAiIGluIHBtYXAgJXAiLCB2YSwgcG1hcCk7 Ci0JCQlyZXR1cm47Ci0JCX0KLQkJaWYgKChvbGRwdGUgJiAoUEdfTSB8IFBHX1JXKSkgPT0g UEdfUlcpIHsKLQkJCS8qCi0JCQkgKiBXaGVuIFBHX00gaXMgYWxyZWFkeSBjbGVhciwgUEdf UlcgY2FuIGJlIGNsZWFyZWQKLQkJCSAqIHdpdGhvdXQgYSBUTEIgaW52YWxpZGF0aW9uLgot CQkJICovCi0JCQlpZiAoIWF0b21pY19jbXBzZXRfaW50KCh1X2ludCAqKXB0ZSwgb2xkcHRl LAotCQkJICAgIG9sZHB0ZSAmIH5QR19SVykpCi0JCQkJZ290byBzZXRwdGU7Ci0JCQlvbGRw dGUgJj0gflBHX1JXOwotCQkJb2xkcHRldmEgPSAob2xkcHRlICYgUEdfRlJBTUUgJiBQRFJN QVNLKSB8Ci0JCQkgICAgKHZhICYgflBEUk1BU0spOwotCQkJQ1RSMihLVFJfUE1BUCwgInBt YXBfcHJvbW90ZV9wZGU6IHByb3RlY3QgZm9yIHZhICUjeCIKLQkJCSAgICAiIGluIHBtYXAg JXAiLCBvbGRwdGV2YSwgcG1hcCk7Ci0JCX0KLQkJaWYgKChvbGRwdGUgJiBQR19QVEVfUFJP TU9URSkgIT0gKG5ld3BkZSAmIFBHX1BURV9QUk9NT1RFKSkgewotCQkJcG1hcF9wZGVfcF9m YWlsdXJlcysrOwotCQkJQ1RSMihLVFJfUE1BUCwgInBtYXBfcHJvbW90ZV9wZGU6IGZhaWx1 cmUgZm9yIHZhICUjeCIKLQkJCSAgICAiIGluIHBtYXAgJXAiLCB2YSwgcG1hcCk7Ci0JCQly ZXR1cm47Ci0JCX0KLQkJcGEgLT0gUEFHRV9TSVpFOwotCX0KLQotCS8qCi0JICogU2F2ZSB0 aGUgcGFnZSB0YWJsZSBwYWdlIGluIGl0cyBjdXJyZW50IHN0YXRlIHVudGlsIHRoZSBQREUK LQkgKiBtYXBwaW5nIHRoZSBzdXBlcnBhZ2UgaXMgZGVtb3RlZCBieSBwbWFwX2RlbW90ZV9w ZGUoKSBvcgotCSAqIGRlc3Ryb3llZCBieSBwbWFwX3JlbW92ZV9wZGUoKS4gCi0JICovCi0J bXB0ZSA9IFBIWVNfVE9fVk1fUEFHRSgqcGRlICYgUEdfRlJBTUUpOwotCUtBU1NFUlQobXB0 ZSA+PSB2bV9wYWdlX2FycmF5ICYmCi0JICAgIG1wdGUgPCAmdm1fcGFnZV9hcnJheVt2bV9w YWdlX2FycmF5X3NpemVdLAotCSAgICAoInBtYXBfcHJvbW90ZV9wZGU6IHBhZ2UgdGFibGUg cGFnZSBpcyBvdXQgb2YgcmFuZ2UiKSk7Ci0JS0FTU0VSVChtcHRlLT5waW5kZXggPT0gdmEg Pj4gUERSU0hJRlQsCi0JICAgICgicG1hcF9wcm9tb3RlX3BkZTogcGFnZSB0YWJsZSBwYWdl J3MgcGluZGV4IGlzIHdyb25nIikpOwotCXBtYXBfaW5zZXJ0X3B0X3BhZ2UocG1hcCwgbXB0 ZSk7Ci0KLQkvKgotCSAqIFByb21vdGUgdGhlIHB2IGVudHJpZXMuCi0JICovCi0JaWYgKChu ZXdwZGUgJiBQR19NQU5BR0VEKSAhPSAwKQotCQlwbWFwX3B2X3Byb21vdGVfcGRlKHBtYXAs IHZhLCBuZXdwZGUgJiBQR19QU19GUkFNRSk7Ci0KLQkvKgotCSAqIFByb3BhZ2F0ZSB0aGUg UEFUIGluZGV4IHRvIGl0cyBwcm9wZXIgcG9zaXRpb24uCi0JICovCi0JaWYgKChuZXdwZGUg JiBQR19QVEVfUEFUKSAhPSAwKQotCQluZXdwZGUgXj0gUEdfUERFX1BBVCB8IFBHX1BURV9Q QVQ7Ci0KLQkvKgotCSAqIE1hcCB0aGUgc3VwZXJwYWdlLgotCSAqLwotCWlmICh3b3JrYXJv dW5kX2VycmF0dW0zODMpCi0JCXBtYXBfdXBkYXRlX3BkZShwbWFwLCB2YSwgcGRlLCBQR19Q UyB8IG5ld3BkZSk7Ci0JZWxzZSBpZiAocG1hcCA9PSBrZXJuZWxfcG1hcCkKLQkJcG1hcF9r ZW50ZXJfcGRlKHZhLCBQR19QUyB8IG5ld3BkZSk7Ci0JZWxzZQotCQlwZGVfc3RvcmUocGRl LCBQR19QUyB8IG5ld3BkZSk7Ci0KLQlwbWFwX3BkZV9wcm9tb3Rpb25zKys7Ci0JQ1RSMihL VFJfUE1BUCwgInBtYXBfcHJvbW90ZV9wZGU6IHN1Y2Nlc3MgZm9yIHZhICUjeCIKLQkgICAg IiBpbiBwbWFwICVwIiwgdmEsIHBtYXApOwotfQotCi0vKgogICoJSW5zZXJ0IHRoZSBnaXZl biBwaHlzaWNhbCBwYWdlIChwKSBhdAogICoJdGhlIHNwZWNpZmllZCB2aXJ0dWFsIGFkZHJl c3MgKHYpIGluIHRoZQogICoJdGFyZ2V0IHBoeXNpY2FsIG1hcCB3aXRoIHRoZSBwcm90ZWN0 aW9uIHJlcXVlc3RlZC4KQEAgLTMzMTgsNiArMjU3MCw4IEBACiAJdm1fcGFnZV90IG1wdGUs IG9tOwogCWJvb2xlYW5fdCBpbnZsdmE7CiAKKwlDVFI2KEtUUl9QTUFQLCAicG1hcF9lbnRl cjogcG1hcD0lMDhwIHZhPTB4JTA4eCBhY2Nlc3M9MHgleCBtYT0weCUwOHggcHJvdD0weCV4 IHdpcmVkPSVkIiwKKwkgICAgcG1hcCwgdmEsIGFjY2VzcywgVk1fUEFHRV9UT19NQUNIKG0p LCBwcm90LCB3aXJlZCk7CiAJdmEgPSB0cnVuY19wYWdlKHZhKTsKIAlLQVNTRVJUKHZhIDw9 IFZNX01BWF9LRVJORUxfQUREUkVTUywgKCJwbWFwX2VudGVyOiB0b29iaWciKSk7CiAJS0FT U0VSVCh2YSA8IFVQVF9NSU5fQUREUkVTUyB8fCB2YSA+PSBVUFRfTUFYX0FERFJFU1MsCkBA IC0zMzUxLDEyICsyNjA1LDIwIEBACiAJICovCiAJaWYgKHB0ZSA9PSBOVUxMKSB7CiAJCXBh bmljKCJwbWFwX2VudGVyOiBpbnZhbGlkIHBhZ2UgZGlyZWN0b3J5IHBkaXI9JSNqeCwgdmE9 JSN4IiwKLQkJCSh1aW50bWF4X3QpcG1hcC0+cG1fcGRpcltQVERQVERJXSwgdmEpOworCQkJ KHVpbnRtYXhfdClwbWFwLT5wbV9wZGlyW3ZhID4+IFBEUlNISUZUXSwgdmEpOwogCX0KIAog CXBhID0gVk1fUEFHRV9UT19QSFlTKG0pOwogCW9tID0gTlVMTDsKKwlvcGEgPSBvcmlncHRl ID0gMDsKKworI2lmIDAKKwlLQVNTRVJUKCgqcHRlICYgUEdfVikgfHwgKCpwdGUgPT0gMCks ICgiYWRkcmVzcyBzZXQgYnV0IG5vdCB2YWxpZCBwdGU9JXAgKnB0ZT0weCUwMTZqeCIsCisJ CXB0ZSwgKnB0ZSkpOworI2VuZGlmCiAJb3JpZ3B0ZSA9ICpwdGU7CisJaWYgKG9yaWdwdGUp CisJCW9yaWdwdGUgPSB4cG1hcF9tdG9wKG9yaWdwdGUpOwogCW9wYSA9IG9yaWdwdGUgJiBQ R19GUkFNRTsKIAogCS8qCkBAIC0zMzk5LDcgKzI2NjEsOSBAQAogCQlpZiAob3JpZ3B0ZSAm IFBHX01BTkFHRUQpIHsKIAkJCW9tID0gUEhZU19UT19WTV9QQUdFKG9wYSk7CiAJCQlwdiA9 IHBtYXBfcHZoX3JlbW92ZSgmb20tPm1kLCBwbWFwLCB2YSk7Ci0JCX0KKwkJfSBlbHNlIGlm ICh2YSA8IFZNX01BWFVTRVJfQUREUkVTUykgCisJCQlwcmludGYoInZhPTB4JXggaXMgdW5t YW5hZ2VkIDotKCBcbiIsIHZhKTsKKwkJCQogCQlpZiAobXB0ZSAhPSBOVUxMKSB7CiAJCQlt cHRlLT53aXJlX2NvdW50LS07CiAJCQlLQVNTRVJUKG1wdGUtPndpcmVfY291bnQgPiAwLApA QCAtMzQzMyw3ICsyNjk3LDcgQEAKIAkvKgogCSAqIE5vdyB2YWxpZGF0ZSBtYXBwaW5nIHdp dGggZGVzaXJlZCBwcm90ZWN0aW9uL3dpcmluZy4KIAkgKi8KLQluZXdwdGUgPSAocHRfZW50 cnlfdCkocGEgfCBwbWFwX2NhY2hlX2JpdHMobS0+bWQucGF0X21vZGUsIDApIHwgUEdfVik7 CisJbmV3cHRlID0gKHB0X2VudHJ5X3QpKHBhIHwgUEdfVik7CiAJaWYgKChwcm90ICYgVk1f UFJPVF9XUklURSkgIT0gMCkgewogCQluZXdwdGUgfD0gUEdfUlc7CiAJCWlmICgobmV3cHRl ICYgUEdfTUFOQUdFRCkgIT0gMCkKQEAgLTM0NTAsMTcgKzI3MTQsMTYgQEAKIAlpZiAocG1h cCA9PSBrZXJuZWxfcG1hcCkKIAkJbmV3cHRlIHw9IHBnZWZsYWc7CiAKKwljcml0aWNhbF9l bnRlcigpOwogCS8qCiAJICogaWYgdGhlIG1hcHBpbmcgb3IgcGVybWlzc2lvbiBiaXRzIGFy ZSBkaWZmZXJlbnQsIHdlIG5lZWQKIAkgKiB0byB1cGRhdGUgdGhlIHB0ZS4KIAkgKi8KIAlp ZiAoKG9yaWdwdGUgJiB+KFBHX018UEdfQSkpICE9IG5ld3B0ZSkgewotCQluZXdwdGUgfD0g UEdfQTsKLQkJaWYgKChhY2Nlc3MgJiBWTV9QUk9UX1dSSVRFKSAhPSAwKQotCQkJbmV3cHRl IHw9IFBHX007Ci0JCWlmIChvcmlncHRlICYgUEdfVikgeworCQlpZiAob3JpZ3B0ZSkgewog CQkJaW52bHZhID0gRkFMU0U7Ci0JCQlvcmlncHRlID0gcHRlX2xvYWRfc3RvcmUocHRlLCBu ZXdwdGUpOworCQkJb3JpZ3B0ZSA9ICpwdGU7CisJCQlQVF9TRVRfVkEocHRlLCBuZXdwdGUg fCBQR19BLCBGQUxTRSk7CiAJCQlpZiAob3JpZ3B0ZSAmIFBHX0EpIHsKIAkJCQlpZiAob3Jp Z3B0ZSAmIFBHX01BTkFHRUQpCiAJCQkJCXZtX3BhZ2VfYWZsYWdfc2V0KG9tLCBQR0FfUkVG RVJFTkNFRCk7CkBAIC0zNDc5LDg1ICsyNzQyLDI1IEBACiAJCQkJCWludmx2YSA9IFRSVUU7 CiAJCQl9CiAJCQlpZiAoKG9yaWdwdGUgJiBQR19NQU5BR0VEKSAhPSAwICYmCi0JCQkgICAg VEFJTFFfRU1QVFkoJm9tLT5tZC5wdl9saXN0KSAmJgotCQkJICAgIFRBSUxRX0VNUFRZKCZw YV90b19wdmgob3BhKS0+cHZfbGlzdCkpCisJCQkgICAgVEFJTFFfRU1QVFkoJm9tLT5tZC5w dl9saXN0KSkKIAkJCQl2bV9wYWdlX2FmbGFnX2NsZWFyKG9tLCBQR0FfV1JJVEVBQkxFKTsK IAkJCWlmIChpbnZsdmEpCiAJCQkJcG1hcF9pbnZhbGlkYXRlX3BhZ2UocG1hcCwgdmEpOwot CQl9IGVsc2UKLQkJCXB0ZV9zdG9yZShwdGUsIG5ld3B0ZSk7CisJCX0gZWxzZXsKKwkJCVBU X1NFVF9WQShwdGUsIG5ld3B0ZSB8IFBHX0EsIEZBTFNFKTsKKwkJfQorCQkKIAl9Ci0KLQkv KgotCSAqIElmIGJvdGggdGhlIHBhZ2UgdGFibGUgcGFnZSBhbmQgdGhlIHJlc2VydmF0aW9u IGFyZSBmdWxseQotCSAqIHBvcHVsYXRlZCwgdGhlbiBhdHRlbXB0IHByb21vdGlvbi4KLQkg Ki8KLQlpZiAoKG1wdGUgPT0gTlVMTCB8fCBtcHRlLT53aXJlX2NvdW50ID09IE5QVEVQRykg JiYKLQkgICAgcGdfcHNfZW5hYmxlZCAmJiB2bV9yZXNlcnZfbGV2ZWxfaWZmdWxscG9wKG0p ID09IDApCi0JCXBtYXBfcHJvbW90ZV9wZGUocG1hcCwgcGRlLCB2YSk7Ci0KKwlQVF9VUERB VEVTX0ZMVVNIKCk7CisJY3JpdGljYWxfZXhpdCgpOworCWlmICgqUE1BUDEpCisJCVBUX1NF VF9WQV9NQShQTUFQMSwgMCwgVFJVRSk7CiAJc2NoZWRfdW5waW4oKTsKIAl2bV9wYWdlX3Vu bG9ja19xdWV1ZXMoKTsKIAlQTUFQX1VOTE9DSyhwbWFwKTsKIH0KIAogLyoKLSAqIFRyaWVz IHRvIGNyZWF0ZSBhIDItIG9yIDRNQiBwYWdlIG1hcHBpbmcuICBSZXR1cm5zIFRSVUUgaWYg c3VjY2Vzc2Z1bCBhbmQKLSAqIEZBTFNFIG90aGVyd2lzZS4gIEZhaWxzIGlmICgxKSBhIHBh Z2UgdGFibGUgcGFnZSBjYW5ub3QgYmUgYWxsb2NhdGVkIHdpdGhvdXQKLSAqIGJsb2NraW5n LCAoMikgYSBtYXBwaW5nIGFscmVhZHkgZXhpc3RzIGF0IHRoZSBzcGVjaWZpZWQgdmlydHVh bCBhZGRyZXNzLCBvcgotICogKDMpIGEgcHYgZW50cnkgY2Fubm90IGJlIGFsbG9jYXRlZCB3 aXRob3V0IHJlY2xhaW1pbmcgYW5vdGhlciBwdiBlbnRyeS4gCi0gKi8KLXN0YXRpYyBib29s ZWFuX3QKLXBtYXBfZW50ZXJfcGRlKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1f cGFnZV90IG0sIHZtX3Byb3RfdCBwcm90KQotewotCXBkX2VudHJ5X3QgKnBkZSwgbmV3cGRl OwotCi0JbXR4X2Fzc2VydCgmdm1fcGFnZV9xdWV1ZV9tdHgsIE1BX09XTkVEKTsKLQlQTUFQ X0xPQ0tfQVNTRVJUKHBtYXAsIE1BX09XTkVEKTsKLQlwZGUgPSBwbWFwX3BkZShwbWFwLCB2 YSk7Ci0JaWYgKCpwZGUgIT0gMCkgewotCQlDVFIyKEtUUl9QTUFQLCAicG1hcF9lbnRlcl9w ZGU6IGZhaWx1cmUgZm9yIHZhICUjbHgiCi0JCSAgICAiIGluIHBtYXAgJXAiLCB2YSwgcG1h cCk7Ci0JCXJldHVybiAoRkFMU0UpOwotCX0KLQluZXdwZGUgPSBWTV9QQUdFX1RPX1BIWVMo bSkgfCBwbWFwX2NhY2hlX2JpdHMobS0+bWQucGF0X21vZGUsIDEpIHwKLQkgICAgUEdfUFMg fCBQR19WOwotCWlmICgobS0+b2ZsYWdzICYgVlBPX1VOTUFOQUdFRCkgPT0gMCkgewotCQlu ZXdwZGUgfD0gUEdfTUFOQUdFRDsKLQotCQkvKgotCQkgKiBBYm9ydCB0aGlzIG1hcHBpbmcg aWYgaXRzIFBWIGVudHJ5IGNvdWxkIG5vdCBiZSBjcmVhdGVkLgotCQkgKi8KLQkJaWYgKCFw bWFwX3B2X2luc2VydF9wZGUocG1hcCwgdmEsIFZNX1BBR0VfVE9fUEhZUyhtKSkpIHsKLQkJ CUNUUjIoS1RSX1BNQVAsICJwbWFwX2VudGVyX3BkZTogZmFpbHVyZSBmb3IgdmEgJSNseCIK LQkJCSAgICAiIGluIHBtYXAgJXAiLCB2YSwgcG1hcCk7Ci0JCQlyZXR1cm4gKEZBTFNFKTsK LQkJfQotCX0KLSNpZmRlZiBQQUUKLQlpZiAoKHByb3QgJiBWTV9QUk9UX0VYRUNVVEUpID09 IDApCi0JCW5ld3BkZSB8PSBwZ19ueDsKLSNlbmRpZgotCWlmICh2YSA8IFZNX01BWFVTRVJf QUREUkVTUykKLQkJbmV3cGRlIHw9IFBHX1U7Ci0KLQkvKgotCSAqIEluY3JlbWVudCBjb3Vu dGVycy4KLQkgKi8KLQlwbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCArPSBOQlBEUiAv IFBBR0VfU0laRTsKLQotCS8qCi0JICogTWFwIHRoZSBzdXBlcnBhZ2UuCi0JICovCi0JcGRl X3N0b3JlKHBkZSwgbmV3cGRlKTsKLQotCXBtYXBfcGRlX21hcHBpbmdzKys7Ci0JQ1RSMihL VFJfUE1BUCwgInBtYXBfZW50ZXJfcGRlOiBzdWNjZXNzIGZvciB2YSAlI2x4IgotCSAgICAi IGluIHBtYXAgJXAiLCB2YSwgcG1hcCk7Ci0JcmV0dXJuIChUUlVFKTsKLX0KLQotLyoKICAq IE1hcHMgYSBzZXF1ZW5jZSBvZiByZXNpZGVudCBwYWdlcyBiZWxvbmdpbmcgdG8gdGhlIHNh bWUgb2JqZWN0LgogICogVGhlIHNlcXVlbmNlIGJlZ2lucyB3aXRoIHRoZSBnaXZlbiBwYWdl IG1fc3RhcnQuICBUaGlzIHBhZ2UgaXMKICAqIG1hcHBlZCBhdCB0aGUgZ2l2ZW4gdmlydHVh bCBhZGRyZXNzIHN0YXJ0LiAgRWFjaCBzdWJzZXF1ZW50IHBhZ2UgaXMKQEAgLTM1NzMsOSAr Mjc3NiwxMSBAQAogcG1hcF9lbnRlcl9vYmplY3QocG1hcF90IHBtYXAsIHZtX29mZnNldF90 IHN0YXJ0LCB2bV9vZmZzZXRfdCBlbmQsCiAgICAgdm1fcGFnZV90IG1fc3RhcnQsIHZtX3By b3RfdCBwcm90KQogewotCXZtX29mZnNldF90IHZhOwogCXZtX3BhZ2VfdCBtLCBtcHRlOwog CXZtX3BpbmRleF90IGRpZmYsIHBzaXplOworCW11bHRpY2FsbF9lbnRyeV90IG1jbFsxNl07 CisJbXVsdGljYWxsX2VudHJ5X3QgKm1jbHAgPSBtY2w7CisJaW50IGVycm9yLCBjb3VudCA9 IDA7CiAKIAlWTV9PQkpFQ1RfTE9DS19BU1NFUlQobV9zdGFydC0+b2JqZWN0LCBNQV9PV05F RCk7CiAJcHNpemUgPSBhdG9wKGVuZCAtIHN0YXJ0KTsKQEAgLTM1ODQsMTYgKzI3ODksMTkg QEAKIAl2bV9wYWdlX2xvY2tfcXVldWVzKCk7CiAJUE1BUF9MT0NLKHBtYXApOwogCXdoaWxl IChtICE9IE5VTEwgJiYgKGRpZmYgPSBtLT5waW5kZXggLSBtX3N0YXJ0LT5waW5kZXgpIDwg cHNpemUpIHsKLQkJdmEgPSBzdGFydCArIHB0b2EoZGlmZik7Ci0JCWlmICgodmEgJiBQRFJN QVNLKSA9PSAwICYmIHZhICsgTkJQRFIgPD0gZW5kICYmCi0JCSAgICAoVk1fUEFHRV9UT19Q SFlTKG0pICYgUERSTUFTSykgPT0gMCAmJgotCQkgICAgcGdfcHNfZW5hYmxlZCAmJiB2bV9y ZXNlcnZfbGV2ZWxfaWZmdWxscG9wKG0pID09IDAgJiYKLQkJICAgIHBtYXBfZW50ZXJfcGRl KHBtYXAsIHZhLCBtLCBwcm90KSkKLQkJCW0gPSAmbVtOQlBEUiAvIFBBR0VfU0laRSAtIDFd OwotCQllbHNlCi0JCQltcHRlID0gcG1hcF9lbnRlcl9xdWlja19sb2NrZWQocG1hcCwgdmEs IG0sIHByb3QsCi0JCQkgICAgbXB0ZSk7CisJCW1wdGUgPSBwbWFwX2VudGVyX3F1aWNrX2xv Y2tlZCgmbWNscCwgJmNvdW50LCBwbWFwLCBzdGFydCArIHB0b2EoZGlmZiksIG0sCisJCSAg ICBwcm90LCBtcHRlKTsKIAkJbSA9IFRBSUxRX05FWFQobSwgbGlzdHEpOworCQlpZiAoY291 bnQgPT0gMTYpIHsKKwkJCWVycm9yID0gSFlQRVJWSVNPUl9tdWx0aWNhbGwobWNsLCBjb3Vu dCk7CisJCQlLQVNTRVJUKGVycm9yID09IDAsICgiYmFkIG11bHRpY2FsbCAlZCIsIGVycm9y KSk7CisJCQltY2xwID0gbWNsOworCQkJY291bnQgPSAwOworCQl9CisJfQorCWlmIChjb3Vu dCkgeworCQllcnJvciA9IEhZUEVSVklTT1JfbXVsdGljYWxsKG1jbCwgY291bnQpOworCQlL QVNTRVJUKGVycm9yID09IDAsICgiYmFkIG11bHRpY2FsbCAlZCIsIGVycm9yKSk7CiAJfQog CXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwogCVBNQVBfVU5MT0NLKHBtYXApOwpAQCAtMzYx MSwyMSArMjgxOSw2MCBAQAogdm9pZAogcG1hcF9lbnRlcl9xdWljayhwbWFwX3QgcG1hcCwg dm1fb2Zmc2V0X3QgdmEsIHZtX3BhZ2VfdCBtLCB2bV9wcm90X3QgcHJvdCkKIHsKKwltdWx0 aWNhbGxfZW50cnlfdCBtY2wsICptY2xwOworCWludCBjb3VudCA9IDA7CisJbWNscCA9ICZt Y2w7CiAKKwlDVFI0KEtUUl9QTUFQLCAicG1hcF9lbnRlcl9xdWljazogcG1hcD0lcCB2YT0w eCV4IG09JXAgcHJvdD0weCV4IiwKKwkgICAgcG1hcCwgdmEsIG0sIHByb3QpOworCQogCXZt X3BhZ2VfbG9ja19xdWV1ZXMoKTsKIAlQTUFQX0xPQ0socG1hcCk7Ci0JKHZvaWQpcG1hcF9l bnRlcl9xdWlja19sb2NrZWQocG1hcCwgdmEsIG0sIHByb3QsIE5VTEwpOworCSh2b2lkKXBt YXBfZW50ZXJfcXVpY2tfbG9ja2VkKCZtY2xwLCAmY291bnQsIHBtYXAsIHZhLCBtLCBwcm90 LCBOVUxMKTsKKwlpZiAoY291bnQpCisJCUhZUEVSVklTT1JfbXVsdGljYWxsKCZtY2wsIGNv dW50KTsKIAl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsKIAlQTUFQX1VOTE9DSyhwbWFwKTsK IH0KIAorI2lmZGVmIG5vdHlldAordm9pZAorcG1hcF9lbnRlcl9xdWlja19yYW5nZShwbWFw X3QgcG1hcCwgdm1fb2Zmc2V0X3QgKmFkZHJzLCB2bV9wYWdlX3QgKnBhZ2VzLCB2bV9wcm90 X3QgKnByb3RzLCBpbnQgY291bnQpCit7CisJaW50IGksIGVycm9yLCBpbmRleCA9IDA7CisJ bXVsdGljYWxsX2VudHJ5X3QgbWNsWzE2XTsKKwltdWx0aWNhbGxfZW50cnlfdCAqbWNscCA9 IG1jbDsKKwkJCisJUE1BUF9MT0NLKHBtYXApOworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsg aSsrLCBhZGRycysrLCBwYWdlcysrLCBwcm90cysrKSB7CisJCWlmICghcG1hcF9pc19wcmVm YXVsdGFibGVfbG9ja2VkKHBtYXAsICphZGRycykpCisJCQljb250aW51ZTsKKworCQkodm9p ZCkgcG1hcF9lbnRlcl9xdWlja19sb2NrZWQoJm1jbHAsICZpbmRleCwgcG1hcCwgKmFkZHJz LCAqcGFnZXMsICpwcm90cywgTlVMTCk7CisJCWlmIChpbmRleCA9PSAxNikgeworCQkJZXJy b3IgPSBIWVBFUlZJU09SX211bHRpY2FsbChtY2wsIGluZGV4KTsKKwkJCW1jbHAgPSBtY2w7 CisJCQlpbmRleCA9IDA7CisJCQlLQVNTRVJUKGVycm9yID09IDAsICgiYmFkIG11bHRpY2Fs bCAlZCIsIGVycm9yKSk7CisJCX0KKwl9CisJaWYgKGluZGV4KSB7CisJCWVycm9yID0gSFlQ RVJWSVNPUl9tdWx0aWNhbGwobWNsLCBpbmRleCk7CisJCUtBU1NFUlQoZXJyb3IgPT0gMCwg KCJiYWQgbXVsdGljYWxsICVkIiwgZXJyb3IpKTsKKwl9CisJCisJUE1BUF9VTkxPQ0socG1h cCk7Cit9CisjZW5kaWYKKwogc3RhdGljIHZtX3BhZ2VfdAotcG1hcF9lbnRlcl9xdWlja19s b2NrZWQocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCB2bV9wYWdlX3QgbSwKK3BtYXBf ZW50ZXJfcXVpY2tfbG9ja2VkKG11bHRpY2FsbF9lbnRyeV90ICoqbWNscHAsIGludCAqY291 bnQsIHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1fcGFnZV90IG0sCiAgICAgdm1f cHJvdF90IHByb3QsIHZtX3BhZ2VfdCBtcHRlKQogewogCXB0X2VudHJ5X3QgKnB0ZTsKIAl2 bV9wYWRkcl90IHBhOwogCXZtX3BhZ2VfdCBmcmVlOworCW11bHRpY2FsbF9lbnRyeV90ICpt Y2wgPSAqbWNscHA7CiAKIAlLQVNTRVJUKHZhIDwga21pLmNsZWFuX3N2YSB8fCB2YSA+PSBr bWkuY2xlYW5fZXZhIHx8CiAJICAgIChtLT5vZmxhZ3MgJiBWUE9fVU5NQU5BR0VEKSAhPSAw LApAQCAtMzYzOSw3ICsyODg2LDcgQEAKIAkgKi8KIAlpZiAodmEgPCBWTV9NQVhVU0VSX0FE RFJFU1MpIHsKIAkJdV9pbnQgcHRlcGluZGV4OwotCQlwZF9lbnRyeV90IHB0ZXBhOworCQlw ZF9lbnRyeV90IHB0ZW1hOwogCiAJCS8qCiAJCSAqIENhbGN1bGF0ZSBwYWdldGFibGUgcGFn ZSBpbmRleApAQCAtMzY1MSwxNiArMjg5OCwxNiBAQAogCQkJLyoKIAkJCSAqIEdldCB0aGUg cGFnZSBkaXJlY3RvcnkgZW50cnkKIAkJCSAqLwotCQkJcHRlcGEgPSBwbWFwLT5wbV9wZGly W3B0ZXBpbmRleF07CisJCQlwdGVtYSA9IHBtYXAtPnBtX3BkaXJbcHRlcGluZGV4XTsKIAog CQkJLyoKIAkJCSAqIElmIHRoZSBwYWdlIHRhYmxlIHBhZ2UgaXMgbWFwcGVkLCB3ZSBqdXN0 IGluY3JlbWVudAogCQkJICogdGhlIGhvbGQgY291bnQsIGFuZCBhY3RpdmF0ZSBpdC4KIAkJ CSAqLwotCQkJaWYgKHB0ZXBhKSB7Ci0JCQkJaWYgKHB0ZXBhICYgUEdfUFMpCi0JCQkJCXJl dHVybiAoTlVMTCk7Ci0JCQkJbXB0ZSA9IFBIWVNfVE9fVk1fUEFHRShwdGVwYSAmIFBHX0ZS QU1FKTsKKwkJCWlmIChwdGVtYSAmIFBHX1YpIHsKKwkJCQlpZiAocHRlbWEgJiBQR19QUykK KwkJCQkJcGFuaWMoInBtYXBfZW50ZXJfcXVpY2s6IHVuZXhwZWN0ZWQgbWFwcGluZyBpbnRv IDRNQiBwYWdlIik7CisJCQkJbXB0ZSA9IFBIWVNfVE9fVk1fUEFHRSh4cG1hcF9tdG9wKHB0 ZW1hKSAmIFBHX0ZSQU1FKTsKIAkJCQltcHRlLT53aXJlX2NvdW50Kys7CiAJCQl9IGVsc2Ug ewogCQkJCW1wdGUgPSBfcG1hcF9hbGxvY3B0ZShwbWFwLCBwdGVwaW5kZXgsCkBAIC0zNjc5 LDggKzI5MjYsOSBAQAogCSAqIHF1aWNrIGVudHJ5IGludG8gYW55IHBtYXAsIG9uZSB3b3Vs ZCBsaWtlbHkgdXNlIHBtYXBfcHRlX3F1aWNrLgogCSAqIEJ1dCB0aGF0IGlzbid0IGFzIHF1 aWNrIGFzIHZ0b3B0ZS4KIAkgKi8KKwlLQVNTRVJUKHBtYXBfaXNfY3VycmVudChwbWFwKSwg KCJlbnRlcmluZyBwYWdlcyBpbiBub24tY3VycmVudCBwbWFwIikpOwogCXB0ZSA9IHZ0b3B0 ZSh2YSk7Ci0JaWYgKCpwdGUpIHsKKwlpZiAoKnB0ZSAmIFBHX1YpIHsKIAkJaWYgKG1wdGUg IT0gTlVMTCkgewogCQkJbXB0ZS0+d2lyZV9jb3VudC0tOwogCQkJbXB0ZSA9IE5VTEw7CkBA IC0zNzEwLDEyICsyOTU4LDEzIEBACiAJICovCiAJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRf Y291bnQrKzsKIAotCXBhID0gVk1fUEFHRV9UT19QSFlTKG0pIHwgcG1hcF9jYWNoZV9iaXRz KG0tPm1kLnBhdF9tb2RlLCAwKTsKKwlwYSA9IFZNX1BBR0VfVE9fUEhZUyhtKTsKICNpZmRl ZiBQQUUKIAlpZiAoKHByb3QgJiBWTV9QUk9UX0VYRUNVVEUpID09IDApCiAJCXBhIHw9IHBn X254OwogI2VuZGlmCiAKKyNpZiAwCiAJLyoKIAkgKiBOb3cgdmFsaWRhdGUgbWFwcGluZyB3 aXRoIFJPIHByb3RlY3Rpb24KIAkgKi8KQEAgLTM3MjMsNiArMjk3MiwyMyBAQAogCQlwdGVf c3RvcmUocHRlLCBwYSB8IFBHX1YgfCBQR19VKTsKIAllbHNlCiAJCXB0ZV9zdG9yZShwdGUs IHBhIHwgUEdfViB8IFBHX1UgfCBQR19NQU5BR0VEKTsKKyNlbHNlCisJLyoKKwkgKiBOb3cg dmFsaWRhdGUgbWFwcGluZyB3aXRoIFJPIHByb3RlY3Rpb24KKwkgKi8KKwlpZiAoKG0tPm9m bGFncyAmIFZQT19VTk1BTkFHRUQpICE9IDApCisJCXBhID0gCXhwbWFwX3B0b20ocGEgfCBQ R19WIHwgUEdfVSk7CisJZWxzZQorCQlwYSA9IHhwbWFwX3B0b20ocGEgfCBQR19WIHwgUEdf VSB8IFBHX01BTkFHRUQpOworCisJbWNsLT5vcCA9IF9fSFlQRVJWSVNPUl91cGRhdGVfdmFf bWFwcGluZzsKKwltY2wtPmFyZ3NbMF0gPSB2YTsKKwltY2wtPmFyZ3NbMV0gPSAodWludDMy X3QpKHBhICYgMHhmZmZmZmZmZik7CisJbWNsLT5hcmdzWzJdID0gKHVpbnQzMl90KShwYSA+ PiAzMik7CisJbWNsLT5hcmdzWzNdID0gMDsKKwkqbWNscHAgPSBtY2wgKyAxOworCSpjb3Vu dCA9ICpjb3VudCArIDE7CisjZW5kaWYJCiAJcmV0dXJuIChtcHRlKTsKIH0KIApAQCAtMzcz NCw5ICszMDAwLDEwIEBACiBwbWFwX2tlbnRlcl90ZW1wb3Jhcnkodm1fcGFkZHJfdCBwYSwg aW50IGkpCiB7CiAJdm1fb2Zmc2V0X3QgdmE7CisJdm1fcGFkZHJfdCBtYSA9IHhwbWFwX3B0 b20ocGEpOwogCiAJdmEgPSAodm1fb2Zmc2V0X3QpY3Jhc2hkdW1wbWFwICsgKGkgKiBQQUdF X1NJWkUpOwotCXBtYXBfa2VudGVyKHZhLCBwYSk7CisJUFRfU0VUX01BKHZhLCAobWEgJiB+ UEFHRV9NQVNLKSB8IFBHX1YgfCBwZ2VmbGFnKTsKIAlpbnZscGcodmEpOwogCXJldHVybiAo KHZvaWQgKiljcmFzaGR1bXBtYXApOwogfQpAQCAtMzgyNCw0NiArMzA5MSwyNyBAQAogdm9p ZAogcG1hcF9jaGFuZ2Vfd2lyaW5nKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgYm9v bGVhbl90IHdpcmVkKQogewotCXBkX2VudHJ5X3QgKnBkZTsKIAlwdF9lbnRyeV90ICpwdGU7 Ci0JYm9vbGVhbl90IGFyZV9xdWV1ZXNfbG9ja2VkOwogCi0JYXJlX3F1ZXVlc19sb2NrZWQg PSBGQUxTRTsKLXJldHJ5OgorCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKIAlQTUFQX0xPQ0so cG1hcCk7Ci0JcGRlID0gcG1hcF9wZGUocG1hcCwgdmEpOwotCWlmICgoKnBkZSAmIFBHX1BT KSAhPSAwKSB7Ci0JCWlmICghd2lyZWQgIT0gKCgqcGRlICYgUEdfVykgPT0gMCkpIHsKLQkJ CWlmICghYXJlX3F1ZXVlc19sb2NrZWQpIHsKLQkJCQlhcmVfcXVldWVzX2xvY2tlZCA9IFRS VUU7Ci0JCQkJaWYgKCFtdHhfdHJ5bG9jaygmdm1fcGFnZV9xdWV1ZV9tdHgpKSB7Ci0JCQkJ CVBNQVBfVU5MT0NLKHBtYXApOwotCQkJCQl2bV9wYWdlX2xvY2tfcXVldWVzKCk7Ci0JCQkJ CWdvdG8gcmV0cnk7Ci0JCQkJfQotCQkJfQotCQkJaWYgKCFwbWFwX2RlbW90ZV9wZGUocG1h cCwgcGRlLCB2YSkpCi0JCQkJcGFuaWMoInBtYXBfY2hhbmdlX3dpcmluZzogZGVtb3Rpb24g ZmFpbGVkIik7Ci0JCX0gZWxzZQotCQkJZ290byBvdXQ7Ci0JfQogCXB0ZSA9IHBtYXBfcHRl KHBtYXAsIHZhKTsKIAotCWlmICh3aXJlZCAmJiAhcG1hcF9wdGVfdyhwdGUpKQorCWlmICh3 aXJlZCAmJiAhcG1hcF9wdGVfdyhwdGUpKSB7CisJCVBUX1NFVF9WQV9NQSgocHRlKSwgKihw dGUpIHwgUEdfVywgVFJVRSk7CiAJCXBtYXAtPnBtX3N0YXRzLndpcmVkX2NvdW50Kys7Ci0J ZWxzZSBpZiAoIXdpcmVkICYmIHBtYXBfcHRlX3cocHRlKSkKKwl9IGVsc2UgaWYgKCF3aXJl ZCAmJiBwbWFwX3B0ZV93KHB0ZSkpIHsKKwkJUFRfU0VUX1ZBX01BKChwdGUpLCAqKHB0ZSkg JiB+UEdfVywgVFJVRSk7CiAJCXBtYXAtPnBtX3N0YXRzLndpcmVkX2NvdW50LS07Ci0KKwl9 CisJCiAJLyoKIAkgKiBXaXJpbmcgaXMgbm90IGEgaGFyZHdhcmUgY2hhcmFjdGVyaXN0aWMg c28gdGhlcmUgaXMgbm8gbmVlZCB0bwogCSAqIGludmFsaWRhdGUgVExCLgogCSAqLwotCXBt YXBfcHRlX3NldF93KHB0ZSwgd2lyZWQpOwogCXBtYXBfcHRlX3JlbGVhc2UocHRlKTsKLW91 dDoKLQlpZiAoYXJlX3F1ZXVlc19sb2NrZWQpCi0JCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygp OwogCVBNQVBfVU5MT0NLKHBtYXApOworCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwogfQog CiAKQEAgLTM4ODgsOCArMzEzNiwxOSBAQAogCWlmIChkc3RfYWRkciAhPSBzcmNfYWRkcikK IAkJcmV0dXJuOwogCi0JaWYgKCFwbWFwX2lzX2N1cnJlbnQoc3JjX3BtYXApKQorCWlmICgh cG1hcF9pc19jdXJyZW50KHNyY19wbWFwKSkgeworCQlDVFIyKEtUUl9QTUFQLAorCQkgICAg InBtYXBfY29weSwgc2tpcHBpbmc6IHBkaXJbUFREUFRESV09MHglanggUFREcGRlWzBdPTB4 JWp4IiwKKwkJICAgIChzcmNfcG1hcC0+cG1fcGRpcltQVERQVERJXSAmIFBHX0ZSQU1FKSwg KFBURHBkZVswXSAmIFBHX0ZSQU1FKSk7CisJCQogCQlyZXR1cm47CisJfQorCUNUUjUoS1RS X1BNQVAsICJwbWFwX2NvcHk6ICBkc3RfcG1hcD0lcCBzcmNfcG1hcD0lcCBkc3RfYWRkcj0w eCV4IGxlbj0lZCBzcmNfYWRkcj0weCV4IiwKKwkgICAgZHN0X3BtYXAsIHNyY19wbWFwLCBk c3RfYWRkciwgbGVuLCBzcmNfYWRkcik7CisJCisjaWZkZWYgSEFNRklTVEVEX0xPQ0tJTkcK KwltdHhfbG9jaygmY3JlYXRlZGVsZXRlX2xvY2spOworI2VuZGlmCiAKIAl2bV9wYWdlX2xv Y2tfcXVldWVzKCk7CiAJaWYgKGRzdF9wbWFwIDwgc3JjX3BtYXApIHsKQEAgLTM5MTAsMjEg KzMxNjksMTUgQEAKIAkJICAgICgicG1hcF9jb3B5OiBpbnZhbGlkIHRvIHBtYXBfY29weSBw YWdlIHRhYmxlcyIpKTsKIAogCQlwZG54dCA9IChhZGRyICsgTkJQRFIpICYgflBEUk1BU0s7 Ci0JCWlmIChwZG54dCA8IGFkZHIpCi0JCQlwZG54dCA9IGVuZF9hZGRyOwogCQlwdGVwaW5k ZXggPSBhZGRyID4+IFBEUlNISUZUOwogCi0JCXNyY3B0ZXBhZGRyID0gc3JjX3BtYXAtPnBt X3BkaXJbcHRlcGluZGV4XTsKKwkJc3JjcHRlcGFkZHIgPSBQVF9HRVQoJnNyY19wbWFwLT5w bV9wZGlyW3B0ZXBpbmRleF0pOwogCQlpZiAoc3JjcHRlcGFkZHIgPT0gMCkKIAkJCWNvbnRp bnVlOwogCQkJCiAJCWlmIChzcmNwdGVwYWRkciAmIFBHX1BTKSB7Ci0JCQlpZiAoZHN0X3Bt YXAtPnBtX3BkaXJbcHRlcGluZGV4XSA9PSAwICYmCi0JCQkgICAgKChzcmNwdGVwYWRkciAm IFBHX01BTkFHRUQpID09IDAgfHwKLQkJCSAgICBwbWFwX3B2X2luc2VydF9wZGUoZHN0X3Bt YXAsIGFkZHIsIHNyY3B0ZXBhZGRyICYKLQkJCSAgICBQR19QU19GUkFNRSkpKSB7Ci0JCQkJ ZHN0X3BtYXAtPnBtX3BkaXJbcHRlcGluZGV4XSA9IHNyY3B0ZXBhZGRyICYKLQkJCQkgICAg flBHX1c7CisJCQlpZiAoZHN0X3BtYXAtPnBtX3BkaXJbcHRlcGluZGV4XSA9PSAwKSB7CisJ CQkJUERfU0VUX1ZBKGRzdF9wbWFwLCBwdGVwaW5kZXgsIHNyY3B0ZXBhZGRyICYgflBHX1cs IFRSVUUpOwogCQkJCWRzdF9wbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCArPQogCQkJ CSAgICBOQlBEUiAvIFBBR0VfU0laRTsKIAkJCX0KQEAgLTM5NTMsMTQgKzMyMDYsMTcgQEAK IAkJCQlkc3RfcHRlID0gcG1hcF9wdGVfcXVpY2soZHN0X3BtYXAsIGFkZHIpOwogCQkJCWlm ICgqZHN0X3B0ZSA9PSAwICYmCiAJCQkJICAgIHBtYXBfdHJ5X2luc2VydF9wdl9lbnRyeShk c3RfcG1hcCwgYWRkciwKLQkJCQkgICAgUEhZU19UT19WTV9QQUdFKHB0ZXRlbXAgJiBQR19G UkFNRSkpKSB7CisJCQkJICAgIFBIWVNfVE9fVk1fUEFHRSh4cG1hcF9tdG9wKHB0ZXRlbXAp ICYgUEdfRlJBTUUpKSkgewogCQkJCQkvKgogCQkJCQkgKiBDbGVhciB0aGUgd2lyZWQsIG1v ZGlmaWVkLCBhbmQKIAkJCQkJICogYWNjZXNzZWQgKHJlZmVyZW5jZWQpIGJpdHMKIAkJCQkJ ICogZHVyaW5nIHRoZSBjb3B5LgogCQkJCQkgKi8KLQkJCQkJKmRzdF9wdGUgPSBwdGV0ZW1w ICYgfihQR19XIHwgUEdfTSB8Ci0JCQkJCSAgICBQR19BKTsKKwkJCQkJS0FTU0VSVChwdGV0 ZW1wICE9IDAsICgic3JjX3B0ZSBub3Qgc2V0IikpOworCQkJCQlQVF9TRVRfVkFfTUEoZHN0 X3B0ZSwgcHRldGVtcCAmIH4oUEdfVyB8IFBHX00gfCBQR19BKSwgVFJVRSAvKiBYWFggZGVi dWcgKi8pOworCQkJCQlLQVNTRVJUKCpkc3RfcHRlID09IChwdGV0ZW1wICYgfihQR19XIHwg UEdfTSB8IFBHX0EpKSwKKwkJCQkJICAgICgibm8gcG1hcCBjb3B5IGV4cGVjdGVkOiAweCVq eCBzYXc6IDB4JWp4IiwKKwkJCQkJCXB0ZXRlbXAgJiAgfihQR19XIHwgUEdfTSB8IFBHX0Ep LCAqZHN0X3B0ZSkpOwogCQkJCQlkc3RfcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQr KzsKIAkgCQkJfSBlbHNlIHsKIAkJCQkJZnJlZSA9IE5VTEw7CkBAIC0zOTgwLDEwICszMjM2 LDE1IEBACiAJCX0KIAl9CiBvdXQ6CisJUFRfVVBEQVRFU19GTFVTSCgpOwogCXNjaGVkX3Vu cGluKCk7CiAJdm1fcGFnZV91bmxvY2tfcXVldWVzKCk7CiAJUE1BUF9VTkxPQ0soc3JjX3Bt YXApOwogCVBNQVBfVU5MT0NLKGRzdF9wbWFwKTsKKworI2lmZGVmIEhBTUZJU1RFRF9MT0NL SU5HCisJbXR4X3VubG9jaygmY3JlYXRlZGVsZXRlX2xvY2spOworI2VuZGlmCiB9CQogCiBz dGF0aWMgX19pbmxpbmUgdm9pZApAQCAtNDAxNiwxMSArMzI3Nyw5IEBACiAJaWYgKCpzeXNt YXBzLT5DTUFQMikKIAkJcGFuaWMoInBtYXBfemVyb19wYWdlOiBDTUFQMiBidXN5Iik7CiAJ c2NoZWRfcGluKCk7Ci0JKnN5c21hcHMtPkNNQVAyID0gUEdfViB8IFBHX1JXIHwgVk1fUEFH RV9UT19QSFlTKG0pIHwgUEdfQSB8IFBHX00gfAotCSAgICBwbWFwX2NhY2hlX2JpdHMobS0+ bWQucGF0X21vZGUsIDApOwotCWludmxjYWRkcihzeXNtYXBzLT5DQUREUjIpOworCVBUX1NF VF9NQShzeXNtYXBzLT5DQUREUjIsIFBHX1YgfCBQR19SVyB8IFZNX1BBR0VfVE9fTUFDSCht KSB8IFBHX0EgfCBQR19NKTsKIAlwYWdlemVybyhzeXNtYXBzLT5DQUREUjIpOwotCSpzeXNt YXBzLT5DTUFQMiA9IDA7CisJUFRfU0VUX01BKHN5c21hcHMtPkNBRERSMiwgMCk7CiAJc2No ZWRfdW5waW4oKTsKIAltdHhfdW5sb2NrKCZzeXNtYXBzLT5sb2NrKTsKIH0KQEAgLTQwNDEs MTQgKzMzMDAsMTMgQEAKIAlpZiAoKnN5c21hcHMtPkNNQVAyKQogCQlwYW5pYygicG1hcF96 ZXJvX3BhZ2VfYXJlYTogQ01BUDIgYnVzeSIpOwogCXNjaGVkX3BpbigpOwotCSpzeXNtYXBz LT5DTUFQMiA9IFBHX1YgfCBQR19SVyB8IFZNX1BBR0VfVE9fUEhZUyhtKSB8IFBHX0EgfCBQ R19NIHwKLQkgICAgcG1hcF9jYWNoZV9iaXRzKG0tPm1kLnBhdF9tb2RlLCAwKTsKLQlpbnZs Y2FkZHIoc3lzbWFwcy0+Q0FERFIyKTsKKwlQVF9TRVRfTUEoc3lzbWFwcy0+Q0FERFIyLCBQ R19WIHwgUEdfUlcgfCBWTV9QQUdFX1RPX01BQ0gobSkgfCBQR19BIHwgUEdfTSk7CisKIAlp ZiAob2ZmID09IDAgJiYgc2l6ZSA9PSBQQUdFX1NJWkUpIAogCQlwYWdlemVybyhzeXNtYXBz LT5DQUREUjIpOwogCWVsc2UKIAkJYnplcm8oKGNoYXIgKilzeXNtYXBzLT5DQUREUjIgKyBv ZmYsIHNpemUpOwotCSpzeXNtYXBzLT5DTUFQMiA9IDA7CisJUFRfU0VUX01BKHN5c21hcHMt PkNBRERSMiwgMCk7CiAJc2NoZWRfdW5waW4oKTsKIAltdHhfdW5sb2NrKCZzeXNtYXBzLT5s b2NrKTsKIH0KQEAgLTQwNjYsMTEgKzMzMjQsOSBAQAogCWlmICgqQ01BUDMpCiAJCXBhbmlj KCJwbWFwX3plcm9fcGFnZV9pZGxlOiBDTUFQMyBidXN5Iik7CiAJc2NoZWRfcGluKCk7Ci0J KkNNQVAzID0gUEdfViB8IFBHX1JXIHwgVk1fUEFHRV9UT19QSFlTKG0pIHwgUEdfQSB8IFBH X00gfAotCSAgICBwbWFwX2NhY2hlX2JpdHMobS0+bWQucGF0X21vZGUsIDApOwotCWludmxj YWRkcihDQUREUjMpOworCVBUX1NFVF9NQShDQUREUjMsIFBHX1YgfCBQR19SVyB8IFZNX1BB R0VfVE9fTUFDSChtKSB8IFBHX0EgfCBQR19NKTsKIAlwYWdlemVybyhDQUREUjMpOwotCSpD TUFQMyA9IDA7CisJUFRfU0VUX01BKENBRERSMywgMCk7CiAJc2NoZWRfdW5waW4oKTsKIH0K IApAQCAtNDA5MiwxNSArMzM0OCwxMSBAQAogCWlmICgqc3lzbWFwcy0+Q01BUDIpCiAJCXBh bmljKCJwbWFwX2NvcHlfcGFnZTogQ01BUDIgYnVzeSIpOwogCXNjaGVkX3BpbigpOwotCWlu dmxwZygodV9pbnQpc3lzbWFwcy0+Q0FERFIxKTsKLQlpbnZscGcoKHVfaW50KXN5c21hcHMt PkNBRERSMik7Ci0JKnN5c21hcHMtPkNNQVAxID0gUEdfViB8IFZNX1BBR0VfVE9fUEhZUyhz cmMpIHwgUEdfQSB8Ci0JICAgIHBtYXBfY2FjaGVfYml0cyhzcmMtPm1kLnBhdF9tb2RlLCAw KTsKLQkqc3lzbWFwcy0+Q01BUDIgPSBQR19WIHwgUEdfUlcgfCBWTV9QQUdFX1RPX1BIWVMo ZHN0KSB8IFBHX0EgfCBQR19NIHwKLQkgICAgcG1hcF9jYWNoZV9iaXRzKGRzdC0+bWQucGF0 X21vZGUsIDApOworCVBUX1NFVF9NQShzeXNtYXBzLT5DQUREUjEsIFBHX1YgfCBWTV9QQUdF X1RPX01BQ0goc3JjKSB8IFBHX0EpOworCVBUX1NFVF9NQShzeXNtYXBzLT5DQUREUjIsIFBH X1YgfCBQR19SVyB8IFZNX1BBR0VfVE9fTUFDSChkc3QpIHwgUEdfQSB8IFBHX00pOwogCWJj b3B5KHN5c21hcHMtPkNBRERSMSwgc3lzbWFwcy0+Q0FERFIyLCBQQUdFX1NJWkUpOwotCSpz eXNtYXBzLT5DTUFQMSA9IDA7Ci0JKnN5c21hcHMtPkNNQVAyID0gMDsKKwlQVF9TRVRfTUEo c3lzbWFwcy0+Q0FERFIxLCAwKTsKKwlQVF9TRVRfTUEoc3lzbWFwcy0+Q0FERFIyLCAwKTsK IAlzY2hlZF91bnBpbigpOwogCW10eF91bmxvY2soJnN5c21hcHMtPmxvY2spOwogfQpAQCAt NDExNSw3ICszMzY3LDYgQEAKIGJvb2xlYW5fdAogcG1hcF9wYWdlX2V4aXN0c19xdWljayhw bWFwX3QgcG1hcCwgdm1fcGFnZV90IG0pCiB7Ci0Jc3RydWN0IG1kX3BhZ2UgKnB2aDsKIAlw dl9lbnRyeV90IHB2OwogCWludCBsb29wcyA9IDA7CiAJYm9vbGVhbl90IHJ2OwpAQCAtNDEz MywxOCArMzM4NCw2IEBACiAJCWlmIChsb29wcyA+PSAxNikKIAkJCWJyZWFrOwogCX0KLQlp ZiAoIXJ2ICYmIGxvb3BzIDwgMTYpIHsKLQkJcHZoID0gcGFfdG9fcHZoKFZNX1BBR0VfVE9f UEhZUyhtKSk7Ci0JCVRBSUxRX0ZPUkVBQ0gocHYsICZwdmgtPnB2X2xpc3QsIHB2X2xpc3Qp IHsKLQkJCWlmIChQVl9QTUFQKHB2KSA9PSBwbWFwKSB7Ci0JCQkJcnYgPSBUUlVFOwotCQkJ CWJyZWFrOwotCQkJfQotCQkJbG9vcHMrKzsKLQkJCWlmIChsb29wcyA+PSAxNikKLQkJCQli cmVhazsKLQkJfQotCX0KIAl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsKIAlyZXR1cm4gKHJ2 KTsKIH0KQEAgLTQxNTgsMzMgKzMzOTcsMTcgQEAKIGludAogcG1hcF9wYWdlX3dpcmVkX21h cHBpbmdzKHZtX3BhZ2VfdCBtKQogeworCXB2X2VudHJ5X3QgcHY7CisJcHRfZW50cnlfdCAq cHRlOworCXBtYXBfdCBwbWFwOwogCWludCBjb3VudDsKIAogCWNvdW50ID0gMDsKIAlpZiAo KG0tPm9mbGFncyAmIFZQT19VTk1BTkFHRUQpICE9IDApCiAJCXJldHVybiAoY291bnQpOwog CXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKLQljb3VudCA9IHBtYXBfcHZoX3dpcmVkX21hcHBp bmdzKCZtLT5tZCwgY291bnQpOwotCWNvdW50ID0gcG1hcF9wdmhfd2lyZWRfbWFwcGluZ3Mo cGFfdG9fcHZoKFZNX1BBR0VfVE9fUEhZUyhtKSksIGNvdW50KTsKLQl2bV9wYWdlX3VubG9j a19xdWV1ZXMoKTsKLQlyZXR1cm4gKGNvdW50KTsKLX0KLQotLyoKLSAqCXBtYXBfcHZoX3dp cmVkX21hcHBpbmdzOgotICoKLSAqCVJldHVybiB0aGUgdXBkYXRlZCBudW1iZXIgImNvdW50 IiBvZiBtYW5hZ2VkIG1hcHBpbmdzIHRoYXQgYXJlIHdpcmVkLgotICovCi1zdGF0aWMgaW50 Ci1wbWFwX3B2aF93aXJlZF9tYXBwaW5ncyhzdHJ1Y3QgbWRfcGFnZSAqcHZoLCBpbnQgY291 bnQpCi17Ci0JcG1hcF90IHBtYXA7Ci0JcHRfZW50cnlfdCAqcHRlOwotCXB2X2VudHJ5X3Qg cHY7Ci0KLQltdHhfYXNzZXJ0KCZ2bV9wYWdlX3F1ZXVlX210eCwgTUFfT1dORUQpOwogCXNj aGVkX3BpbigpOwotCVRBSUxRX0ZPUkVBQ0gocHYsICZwdmgtPnB2X2xpc3QsIHB2X2xpc3Qp IHsKKwlUQUlMUV9GT1JFQUNIKHB2LCAmbS0+bWQucHZfbGlzdCwgcHZfbGlzdCkgewogCQlw bWFwID0gUFZfUE1BUChwdik7CiAJCVBNQVBfTE9DSyhwbWFwKTsKIAkJcHRlID0gcG1hcF9w dGVfcXVpY2socG1hcCwgcHYtPnB2X3ZhKTsKQEAgLTQxOTMsMjUgKzM0MTYsMjAgQEAKIAkJ UE1BUF9VTkxPQ0socG1hcCk7CiAJfQogCXNjaGVkX3VucGluKCk7CisJdm1fcGFnZV91bmxv Y2tfcXVldWVzKCk7CiAJcmV0dXJuIChjb3VudCk7CiB9CiAKIC8qCi0gKiBSZXR1cm5zIFRS VUUgaWYgdGhlIGdpdmVuIHBhZ2UgaXMgbWFwcGVkIGluZGl2aWR1YWxseSBvciBhcyBwYXJ0 IG9mCi0gKiBhIDRtcGFnZS4gIE90aGVyd2lzZSwgcmV0dXJucyBGQUxTRS4KKyAqIFJldHVy bnMgVFJVRSBpZiB0aGUgZ2l2ZW4gcGFnZSBpcyBtYXBwZWQuICBPdGhlcndpc2UsIHJldHVy bnMgRkFMU0UuCiAgKi8KIGJvb2xlYW5fdAogcG1hcF9wYWdlX2lzX21hcHBlZCh2bV9wYWdl X3QgbSkKIHsKLQlib29sZWFuX3QgcnY7CiAKIAlpZiAoKG0tPm9mbGFncyAmIFZQT19VTk1B TkFHRUQpICE9IDApCiAJCXJldHVybiAoRkFMU0UpOwotCXZtX3BhZ2VfbG9ja19xdWV1ZXMo KTsKLQlydiA9ICFUQUlMUV9FTVBUWSgmbS0+bWQucHZfbGlzdCkgfHwKLQkgICAgIVRBSUxR X0VNUFRZKCZwYV90b19wdmgoVk1fUEFHRV9UT19QSFlTKG0pKS0+cHZfbGlzdCk7Ci0Jdm1f cGFnZV91bmxvY2tfcXVldWVzKCk7Ci0JcmV0dXJuIChydik7CisJcmV0dXJuICghVEFJTFFf RU1QVFkoJm0tPm1kLnB2X2xpc3QpKTsKIH0KIAogLyoKQEAgLTQyMjYsMjEgKzM0NDQsMjIg QEAKIHBtYXBfcmVtb3ZlX3BhZ2VzKHBtYXBfdCBwbWFwKQogewogCXB0X2VudHJ5X3QgKnB0 ZSwgdHB0ZTsKLQl2bV9wYWdlX3QgZnJlZSA9IE5VTEw7Ci0Jdm1fcGFnZV90IG0sIG1wdGUs IG10OworCXZtX3BhZ2VfdCBtLCBmcmVlID0gTlVMTDsKIAlwdl9lbnRyeV90IHB2OwotCXN0 cnVjdCBtZF9wYWdlICpwdmg7CiAJc3RydWN0IHB2X2NodW5rICpwYywgKm5wYzsKIAlpbnQg ZmllbGQsIGlkeDsKIAlpbnQzMl90IGJpdDsKIAl1aW50MzJfdCBpbnVzZSwgYml0bWFzazsK IAlpbnQgYWxsZnJlZTsKIAotCWlmIChwbWFwICE9IFBDUFVfR0VUKGN1cnBtYXApKSB7CisJ Q1RSMShLVFJfUE1BUCwgInBtYXBfcmVtb3ZlX3BhZ2VzOiBwbWFwPSVwIiwgcG1hcCk7CisJ CisJaWYgKHBtYXAgIT0gdm1zcGFjZV9wbWFwKGN1cnRocmVhZC0+dGRfcHJvYy0+cF92bXNw YWNlKSkgewogCQlwcmludGYoIndhcm5pbmc6IHBtYXBfcmVtb3ZlX3BhZ2VzIGNhbGxlZCB3 aXRoIG5vbi1jdXJyZW50IHBtYXBcbiIpOwogCQlyZXR1cm47CiAJfQogCXZtX3BhZ2VfbG9j a19xdWV1ZXMoKTsKKwlLQVNTRVJUKHBtYXBfaXNfY3VycmVudChwbWFwKSwgKCJyZW1vdmlu ZyBwYWdlcyBmcm9tIG5vbi1jdXJyZW50IHBtYXAiKSk7CiAJUE1BUF9MT0NLKHBtYXApOwog CXNjaGVkX3BpbigpOwogCVRBSUxRX0ZPUkVBQ0hfU0FGRShwYywgJnBtYXAtPnBtX3B2Y2h1 bmssIHBjX2xpc3QsIG5wYykgewpAQCAtNDI1NCwxMiArMzQ3Myw4IEBACiAJCQkJcHYgPSAm cGMtPnBjX3B2ZW50cnlbaWR4XTsKIAkJCQlpbnVzZSAmPSB+Yml0bWFzazsKIAotCQkJCXB0 ZSA9IHBtYXBfcGRlKHBtYXAsIHB2LT5wdl92YSk7Ci0JCQkJdHB0ZSA9ICpwdGU7Ci0JCQkJ aWYgKCh0cHRlICYgUEdfUFMpID09IDApIHsKLQkJCQkJcHRlID0gdnRvcHRlKHB2LT5wdl92 YSk7Ci0JCQkJCXRwdGUgPSAqcHRlICYgflBHX1BURV9QQVQ7Ci0JCQkJfQorCQkJCXB0ZSA9 IHZ0b3B0ZShwdi0+cHZfdmEpOworCQkJCXRwdGUgPSAqcHRlID8geHBtYXBfbXRvcCgqcHRl KSA6IDA7CiAKIAkJCQlpZiAodHB0ZSA9PSAwKSB7CiAJCQkJCXByaW50ZigKQEAgLTQyODYs NTUgKzM1MDEsMzAgQEAKIAkJCQkJKCJwbWFwX3JlbW92ZV9wYWdlczogYmFkIHRwdGUgJSNq eCIsCiAJCQkJCSh1aW50bWF4X3QpdHB0ZSkpOwogCi0JCQkJcHRlX2NsZWFyKHB0ZSk7CiAK KwkJCQlQVF9DTEVBUl9WQShwdGUsIEZBTFNFKTsKKwkJCQkKIAkJCQkvKgogCQkJCSAqIFVw ZGF0ZSB0aGUgdm1fcGFnZV90IGNsZWFuL3JlZmVyZW5jZSBiaXRzLgogCQkJCSAqLwotCQkJ CWlmICgodHB0ZSAmIChQR19NIHwgUEdfUlcpKSA9PSAoUEdfTSB8IFBHX1JXKSkgewotCQkJ CQlpZiAoKHRwdGUgJiBQR19QUykgIT0gMCkgewotCQkJCQkJZm9yIChtdCA9IG07IG10IDwg Jm1bTkJQRFIgLyBQQUdFX1NJWkVdOyBtdCsrKQotCQkJCQkJCXZtX3BhZ2VfZGlydHkobXQp OwotCQkJCQl9IGVsc2UKLQkJCQkJCXZtX3BhZ2VfZGlydHkobSk7Ci0JCQkJfQorCQkJCWlm ICh0cHRlICYgUEdfTSkKKwkJCQkJdm1fcGFnZV9kaXJ0eShtKTsKKworCQkJCVRBSUxRX1JF TU9WRSgmbS0+bWQucHZfbGlzdCwgcHYsIHB2X2xpc3QpOworCQkJCWlmIChUQUlMUV9FTVBU WSgmbS0+bWQucHZfbGlzdCkpCisJCQkJCXZtX3BhZ2VfYWZsYWdfY2xlYXIobSwgUEdBX1dS SVRFQUJMRSk7CisKKwkJCQlwbWFwX3VudXNlX3B0KHBtYXAsIHB2LT5wdl92YSwgJmZyZWUp OwogCiAJCQkJLyogTWFyayBmcmVlICovCiAJCQkJUFZfU1RBVChwdl9lbnRyeV9mcmVlcysr KTsKIAkJCQlQVl9TVEFUKHB2X2VudHJ5X3NwYXJlKyspOwogCQkJCXB2X2VudHJ5X2NvdW50 LS07CiAJCQkJcGMtPnBjX21hcFtmaWVsZF0gfD0gYml0bWFzazsKLQkJCQlpZiAoKHRwdGUg JiBQR19QUykgIT0gMCkgewotCQkJCQlwbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCAt PSBOQlBEUiAvIFBBR0VfU0laRTsKLQkJCQkJcHZoID0gcGFfdG9fcHZoKHRwdGUgJiBQR19Q U19GUkFNRSk7Ci0JCQkJCVRBSUxRX1JFTU9WRSgmcHZoLT5wdl9saXN0LCBwdiwgcHZfbGlz dCk7Ci0JCQkJCWlmIChUQUlMUV9FTVBUWSgmcHZoLT5wdl9saXN0KSkgewotCQkJCQkJZm9y IChtdCA9IG07IG10IDwgJm1bTkJQRFIgLyBQQUdFX1NJWkVdOyBtdCsrKQotCQkJCQkJCWlm IChUQUlMUV9FTVBUWSgmbXQtPm1kLnB2X2xpc3QpKQotCQkJCQkJCQl2bV9wYWdlX2FmbGFn X2NsZWFyKG10LCBQR0FfV1JJVEVBQkxFKTsKLQkJCQkJfQotCQkJCQltcHRlID0gcG1hcF9s b29rdXBfcHRfcGFnZShwbWFwLCBwdi0+cHZfdmEpOwotCQkJCQlpZiAobXB0ZSAhPSBOVUxM KSB7Ci0JCQkJCQlwbWFwX3JlbW92ZV9wdF9wYWdlKHBtYXAsIG1wdGUpOwotCQkJCQkJcG1h cC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQtLTsKLQkJCQkJCUtBU1NFUlQobXB0ZS0+d2ly ZV9jb3VudCA9PSBOUFRFUEcsCi0JCQkJCQkgICAgKCJwbWFwX3JlbW92ZV9wYWdlczogcHRl IHBhZ2Ugd2lyZSBjb3VudCBlcnJvciIpKTsKLQkJCQkJCW1wdGUtPndpcmVfY291bnQgPSAw OwotCQkJCQkJcG1hcF9hZGRfZGVsYXllZF9mcmVlX2xpc3QobXB0ZSwgJmZyZWUsIEZBTFNF KTsKLQkJCQkJCWF0b21pY19zdWJ0cmFjdF9pbnQoJmNudC52X3dpcmVfY291bnQsIDEpOwot CQkJCQl9Ci0JCQkJfSBlbHNlIHsKLQkJCQkJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291 bnQtLTsKLQkJCQkJVEFJTFFfUkVNT1ZFKCZtLT5tZC5wdl9saXN0LCBwdiwgcHZfbGlzdCk7 Ci0JCQkJCWlmIChUQUlMUV9FTVBUWSgmbS0+bWQucHZfbGlzdCkpIHsKLQkJCQkJCXB2aCA9 IHBhX3RvX3B2aChWTV9QQUdFX1RPX1BIWVMobSkpOwotCQkJCQkJaWYgKFRBSUxRX0VNUFRZ KCZwdmgtPnB2X2xpc3QpKQotCQkJCQkJCXZtX3BhZ2VfYWZsYWdfY2xlYXIobSwgUEdBX1dS SVRFQUJMRSk7Ci0JCQkJCX0KLQkJCQkJcG1hcF91bnVzZV9wdChwbWFwLCBwdi0+cHZfdmEs ICZmcmVlKTsKLQkJCQl9CisJCQkJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQtLTsJ CQkKIAkJCX0KIAkJfQorCQlQVF9VUERBVEVTX0ZMVVNIKCk7CiAJCWlmIChhbGxmcmVlKSB7 CiAJCQlQVl9TVEFUKHB2X2VudHJ5X3NwYXJlIC09IF9OUENQVik7CiAJCQlQVl9TVEFUKHBj X2NodW5rX2NvdW50LS0pOwpAQCAtNDM0Nyw2ICszNTM3LDEwIEBACiAJCQlwbWFwX3B0ZWxp c3RfZnJlZSgmcHZfdmFmcmVlLCAodm1fb2Zmc2V0X3QpcGMpOwogCQl9CiAJfQorCVBUX1VQ REFURVNfRkxVU0goKTsKKwlpZiAoKlBNQVAxKQorCQlQVF9TRVRfTUEoUEFERFIxLCAwKTsK KwogCXNjaGVkX3VucGluKCk7CiAJcG1hcF9pbnZhbGlkYXRlX2FsbChwbWFwKTsKIAl2bV9w YWdlX3VubG9ja19xdWV1ZXMoKTsKQEAgLTQzNjMsMTAgKzM1NTcsMTQgQEAKIGJvb2xlYW5f dAogcG1hcF9pc19tb2RpZmllZCh2bV9wYWdlX3QgbSkKIHsKKwlwdl9lbnRyeV90IHB2Owor CXB0X2VudHJ5X3QgKnB0ZTsKKwlwbWFwX3QgcG1hcDsKIAlib29sZWFuX3QgcnY7CiAKIAlL QVNTRVJUKChtLT5vZmxhZ3MgJiBWUE9fVU5NQU5BR0VEKSA9PSAwLAogCSAgICAoInBtYXBf aXNfbW9kaWZpZWQ6IHBhZ2UgJXAgaXMgbm90IG1hbmFnZWQiLCBtKSk7CisJcnYgPSBGQUxT RTsKIAogCS8qCiAJICogSWYgdGhlIHBhZ2UgaXMgbm90IFZQT19CVVNZLCB0aGVuIFBHQV9X UklURUFCTEUgY2Fubm90IGJlCkBAIC00Mzc2LDQwICszNTc0LDIyIEBACiAJVk1fT0JKRUNU X0xPQ0tfQVNTRVJUKG0tPm9iamVjdCwgTUFfT1dORUQpOwogCWlmICgobS0+b2ZsYWdzICYg VlBPX0JVU1kpID09IDAgJiYKIAkgICAgKG0tPmFmbGFncyAmIFBHQV9XUklURUFCTEUpID09 IDApCi0JCXJldHVybiAoRkFMU0UpOworCQlyZXR1cm4gKHJ2KTsKIAl2bV9wYWdlX2xvY2tf cXVldWVzKCk7Ci0JcnYgPSBwbWFwX2lzX21vZGlmaWVkX3B2aCgmbS0+bWQpIHx8Ci0JICAg IHBtYXBfaXNfbW9kaWZpZWRfcHZoKHBhX3RvX3B2aChWTV9QQUdFX1RPX1BIWVMobSkpKTsK LQl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsKLQlyZXR1cm4gKHJ2KTsKLX0KLQotLyoKLSAq IFJldHVybnMgVFJVRSBpZiBhbnkgb2YgdGhlIGdpdmVuIG1hcHBpbmdzIHdlcmUgdXNlZCB0 byBtb2RpZnkKLSAqIHBoeXNpY2FsIG1lbW9yeS4gIE90aGVyd2lzZSwgcmV0dXJucyBGQUxT RS4gIEJvdGggcGFnZSBhbmQgMm1wYWdlCi0gKiBtYXBwaW5ncyBhcmUgc3VwcG9ydGVkLgot ICovCi1zdGF0aWMgYm9vbGVhbl90Ci1wbWFwX2lzX21vZGlmaWVkX3B2aChzdHJ1Y3QgbWRf cGFnZSAqcHZoKQotewotCXB2X2VudHJ5X3QgcHY7Ci0JcHRfZW50cnlfdCAqcHRlOwotCXBt YXBfdCBwbWFwOwotCWJvb2xlYW5fdCBydjsKLQotCW10eF9hc3NlcnQoJnZtX3BhZ2VfcXVl dWVfbXR4LCBNQV9PV05FRCk7Ci0JcnYgPSBGQUxTRTsKIAlzY2hlZF9waW4oKTsKLQlUQUlM UV9GT1JFQUNIKHB2LCAmcHZoLT5wdl9saXN0LCBwdl9saXN0KSB7CisJVEFJTFFfRk9SRUFD SChwdiwgJm0tPm1kLnB2X2xpc3QsIHB2X2xpc3QpIHsKIAkJcG1hcCA9IFBWX1BNQVAocHYp OwogCQlQTUFQX0xPQ0socG1hcCk7CiAJCXB0ZSA9IHBtYXBfcHRlX3F1aWNrKHBtYXAsIHB2 LT5wdl92YSk7Ci0JCXJ2ID0gKCpwdGUgJiAoUEdfTSB8IFBHX1JXKSkgPT0gKFBHX00gfCBQ R19SVyk7CisJCXJ2ID0gKCpwdGUgJiBQR19NKSAhPSAwOwogCQlQTUFQX1VOTE9DSyhwbWFw KTsKIAkJaWYgKHJ2KQogCQkJYnJlYWs7CiAJfQorCWlmICgqUE1BUDEpCisJCVBUX1NFVF9N QShQQUREUjEsIDApOwogCXNjaGVkX3VucGluKCk7CisJdm1fcGFnZV91bmxvY2tfcXVldWVz KCk7CiAJcmV0dXJuIChydik7CiB9CiAKQEAgLTQ0MTksNjAgKzM1OTksNDYgQEAKICAqCVJl dHVybiB3aGV0aGVyIG9yIG5vdCB0aGUgc3BlY2lmaWVkIHZpcnR1YWwgYWRkcmVzcyBpcyBl bGdpYmxlCiAgKglmb3IgcHJlZmF1bHQuCiAgKi8KLWJvb2xlYW5fdAotcG1hcF9pc19wcmVm YXVsdGFibGUocG1hcF90IHBtYXAsIHZtX29mZnNldF90IGFkZHIpCitzdGF0aWMgYm9vbGVh bl90CitwbWFwX2lzX3ByZWZhdWx0YWJsZV9sb2NrZWQocG1hcF90IHBtYXAsIHZtX29mZnNl dF90IGFkZHIpCiB7Ci0JcGRfZW50cnlfdCAqcGRlOwogCXB0X2VudHJ5X3QgKnB0ZTsKLQli b29sZWFuX3QgcnY7CisJYm9vbGVhbl90IHJ2ID0gRkFMU0U7CiAKLQlydiA9IEZBTFNFOwot CVBNQVBfTE9DSyhwbWFwKTsKLQlwZGUgPSBwbWFwX3BkZShwbWFwLCBhZGRyKTsKLQlpZiAo KnBkZSAhPSAwICYmICgqcGRlICYgUEdfUFMpID09IDApIHsKKwlyZXR1cm4gKHJ2KTsKKwkK KwlpZiAocG1hcF9pc19jdXJyZW50KHBtYXApICYmICpwbWFwX3BkZShwbWFwLCBhZGRyKSkg ewogCQlwdGUgPSB2dG9wdGUoYWRkcik7Ci0JCXJ2ID0gKnB0ZSA9PSAwOworCQlydiA9ICgq cHRlID09IDApOwogCX0KLQlQTUFQX1VOTE9DSyhwbWFwKTsKIAlyZXR1cm4gKHJ2KTsKIH0K IAotLyoKLSAqCXBtYXBfaXNfcmVmZXJlbmNlZDoKLSAqCi0gKglSZXR1cm4gd2hldGhlciBv ciBub3QgdGhlIHNwZWNpZmllZCBwaHlzaWNhbCBwYWdlIHdhcyByZWZlcmVuY2VkCi0gKglp biBhbnkgcGh5c2ljYWwgbWFwcy4KLSAqLwogYm9vbGVhbl90Ci1wbWFwX2lzX3JlZmVyZW5j ZWQodm1fcGFnZV90IG0pCitwbWFwX2lzX3ByZWZhdWx0YWJsZShwbWFwX3QgcG1hcCwgdm1f b2Zmc2V0X3QgYWRkcikKIHsKIAlib29sZWFuX3QgcnY7Ci0KLQlLQVNTRVJUKChtLT5vZmxh Z3MgJiBWUE9fVU5NQU5BR0VEKSA9PSAwLAotCSAgICAoInBtYXBfaXNfcmVmZXJlbmNlZDog cGFnZSAlcCBpcyBub3QgbWFuYWdlZCIsIG0pKTsKLQl2bV9wYWdlX2xvY2tfcXVldWVzKCk7 Ci0JcnYgPSBwbWFwX2lzX3JlZmVyZW5jZWRfcHZoKCZtLT5tZCkgfHwKLQkgICAgcG1hcF9p c19yZWZlcmVuY2VkX3B2aChwYV90b19wdmgoVk1fUEFHRV9UT19QSFlTKG0pKSk7Ci0Jdm1f cGFnZV91bmxvY2tfcXVldWVzKCk7CisJCisJUE1BUF9MT0NLKHBtYXApOworCXJ2ID0gcG1h cF9pc19wcmVmYXVsdGFibGVfbG9ja2VkKHBtYXAsIGFkZHIpOworCVBNQVBfVU5MT0NLKHBt YXApOwogCXJldHVybiAocnYpOwogfQogCi0vKgotICogUmV0dXJucyBUUlVFIGlmIGFueSBv ZiB0aGUgZ2l2ZW4gbWFwcGluZ3Mgd2VyZSByZWZlcmVuY2VkIGFuZCBGQUxTRQotICogb3Ro ZXJ3aXNlLiAgQm90aCBwYWdlIGFuZCA0bXBhZ2UgbWFwcGluZ3MgYXJlIHN1cHBvcnRlZC4K LSAqLwotc3RhdGljIGJvb2xlYW5fdAotcG1hcF9pc19yZWZlcmVuY2VkX3B2aChzdHJ1Y3Qg bWRfcGFnZSAqcHZoKQorYm9vbGVhbl90CitwbWFwX2lzX3JlZmVyZW5jZWQodm1fcGFnZV90 IG0pCiB7CiAJcHZfZW50cnlfdCBwdjsKIAlwdF9lbnRyeV90ICpwdGU7CiAJcG1hcF90IHBt YXA7CiAJYm9vbGVhbl90IHJ2OwogCi0JbXR4X2Fzc2VydCgmdm1fcGFnZV9xdWV1ZV9tdHgs IE1BX09XTkVEKTsKKwlLQVNTRVJUKChtLT5vZmxhZ3MgJiBWUE9fVU5NQU5BR0VEKSA9PSAw LAorCSAgICAoInBtYXBfaXNfcmVmZXJlbmNlZDogcGFnZSAlcCBpcyBub3QgbWFuYWdlZCIs IG0pKTsKIAlydiA9IEZBTFNFOworCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKIAlzY2hlZF9w aW4oKTsKLQlUQUlMUV9GT1JFQUNIKHB2LCAmcHZoLT5wdl9saXN0LCBwdl9saXN0KSB7CisJ VEFJTFFfRk9SRUFDSChwdiwgJm0tPm1kLnB2X2xpc3QsIHB2X2xpc3QpIHsKIAkJcG1hcCA9 IFBWX1BNQVAocHYpOwogCQlQTUFQX0xPQ0socG1hcCk7CiAJCXB0ZSA9IHBtYXBfcHRlX3F1 aWNrKHBtYXAsIHB2LT5wdl92YSk7CkBAIC00NDgxLDIyICszNjQ3LDUyIEBACiAJCWlmIChy dikKIAkJCWJyZWFrOwogCX0KKwlpZiAoKlBNQVAxKQorCQlQVF9TRVRfTUEoUEFERFIxLCAw KTsKIAlzY2hlZF91bnBpbigpOworCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwogCXJldHVy biAocnYpOwogfQogCit2b2lkCitwbWFwX21hcF9yZWFkb25seShwbWFwX3QgcG1hcCwgdm1f b2Zmc2V0X3QgdmEsIGludCBsZW4pCit7CisJaW50IGksIG5wYWdlcyA9IHJvdW5kX3BhZ2Uo bGVuKSA+PiBQQUdFX1NISUZUOworCWZvciAoaSA9IDA7IGkgPCBucGFnZXM7IGkrKykgewor CQlwdF9lbnRyeV90ICpwdGU7CisJCXB0ZSA9IHBtYXBfcHRlKHBtYXAsICh2bV9vZmZzZXRf dCkodmEgKyBpKlBBR0VfU0laRSkpOworCQl2bV9wYWdlX2xvY2tfcXVldWVzKCk7CisJCXB0 ZV9zdG9yZShwdGUsIHhwbWFwX210b3AoKnB0ZSAmIH4oUEdfUld8UEdfTSkpKTsKKwkJdm1f cGFnZV91bmxvY2tfcXVldWVzKCk7CisJCVBNQVBfTUFSS19QUklWKHhwbWFwX210b3AoKnB0 ZSkpOworCQlwbWFwX3B0ZV9yZWxlYXNlKHB0ZSk7CisJfQorfQorCit2b2lkCitwbWFwX21h cF9yZWFkd3JpdGUocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCBpbnQgbGVuKQorewor CWludCBpLCBucGFnZXMgPSByb3VuZF9wYWdlKGxlbikgPj4gUEFHRV9TSElGVDsKKwlmb3Ig KGkgPSAwOyBpIDwgbnBhZ2VzOyBpKyspIHsKKwkJcHRfZW50cnlfdCAqcHRlOworCQlwdGUg PSBwbWFwX3B0ZShwbWFwLCAodm1fb2Zmc2V0X3QpKHZhICsgaSpQQUdFX1NJWkUpKTsKKwkJ UE1BUF9NQVJLX1VOUFJJVih4cG1hcF9tdG9wKCpwdGUpKTsKKwkJdm1fcGFnZV9sb2NrX3F1 ZXVlcygpOworCQlwdGVfc3RvcmUocHRlLCB4cG1hcF9tdG9wKCpwdGUpIHwgKFBHX1JXfFBH X00pKTsKKwkJdm1fcGFnZV91bmxvY2tfcXVldWVzKCk7CisJCXBtYXBfcHRlX3JlbGVhc2Uo cHRlKTsKKwl9Cit9CisKIC8qCiAgKiBDbGVhciB0aGUgd3JpdGUgYW5kIG1vZGlmaWVkIGJp dHMgaW4gZWFjaCBvZiB0aGUgZ2l2ZW4gcGFnZSdzIG1hcHBpbmdzLgogICovCiB2b2lkCiBw bWFwX3JlbW92ZV93cml0ZSh2bV9wYWdlX3QgbSkKIHsKLQlzdHJ1Y3QgbWRfcGFnZSAqcHZo OwotCXB2X2VudHJ5X3QgbmV4dF9wdiwgcHY7CisJcHZfZW50cnlfdCBwdjsKIAlwbWFwX3Qg cG1hcDsKLQlwZF9lbnRyeV90ICpwZGU7CiAJcHRfZW50cnlfdCBvbGRwdGUsICpwdGU7Ci0J dm1fb2Zmc2V0X3QgdmE7CiAKIAlLQVNTRVJUKChtLT5vZmxhZ3MgJiBWUE9fVU5NQU5BR0VE KSA9PSAwLAogCSAgICAoInBtYXBfcmVtb3ZlX3dyaXRlOiBwYWdlICVwIGlzIG5vdCBtYW5h Z2VkIiwgbSkpOwpAQCAtNDUxMiwzNCArMzcwOCwyNCBAQAogCQlyZXR1cm47CiAJdm1fcGFn ZV9sb2NrX3F1ZXVlcygpOwogCXNjaGVkX3BpbigpOwotCXB2aCA9IHBhX3RvX3B2aChWTV9Q QUdFX1RPX1BIWVMobSkpOwotCVRBSUxRX0ZPUkVBQ0hfU0FGRShwdiwgJnB2aC0+cHZfbGlz dCwgcHZfbGlzdCwgbmV4dF9wdikgewotCQl2YSA9IHB2LT5wdl92YTsKLQkJcG1hcCA9IFBW X1BNQVAocHYpOwotCQlQTUFQX0xPQ0socG1hcCk7Ci0JCXBkZSA9IHBtYXBfcGRlKHBtYXAs IHZhKTsKLQkJaWYgKCgqcGRlICYgUEdfUlcpICE9IDApCi0JCQkodm9pZClwbWFwX2RlbW90 ZV9wZGUocG1hcCwgcGRlLCB2YSk7Ci0JCVBNQVBfVU5MT0NLKHBtYXApOwotCX0KIAlUQUlM UV9GT1JFQUNIKHB2LCAmbS0+bWQucHZfbGlzdCwgcHZfbGlzdCkgewogCQlwbWFwID0gUFZf UE1BUChwdik7CiAJCVBNQVBfTE9DSyhwbWFwKTsKLQkJcGRlID0gcG1hcF9wZGUocG1hcCwg cHYtPnB2X3ZhKTsKLQkJS0FTU0VSVCgoKnBkZSAmIFBHX1BTKSA9PSAwLCAoInBtYXBfY2xl YXJfd3JpdGU6IGZvdW5kIgotCQkgICAgIiBhIDRtcGFnZSBpbiBwYWdlICVwJ3MgcHYgbGlz dCIsIG0pKTsKIAkJcHRlID0gcG1hcF9wdGVfcXVpY2socG1hcCwgcHYtPnB2X3ZhKTsKIHJl dHJ5OgogCQlvbGRwdGUgPSAqcHRlOwogCQlpZiAoKG9sZHB0ZSAmIFBHX1JXKSAhPSAwKSB7 CisJCQl2bV9wYWRkcl90IG5ld3B0ZSA9IG9sZHB0ZSAmIH4oUEdfUlcgfCBQR19NKTsKKwkJ CQogCQkJLyoKIAkJCSAqIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhIHB0ZSBpcyAzMiBvciA2 NCBiaXRzCiAJCQkgKiBpbiBzaXplLCBQR19SVyBhbmQgUEdfTSBhcmUgYW1vbmcgdGhlIGxl YXN0CiAJCQkgKiBzaWduaWZpY2FudCAzMiBiaXRzLgogCQkJICovCi0JCQlpZiAoIWF0b21p Y19jbXBzZXRfaW50KCh1X2ludCAqKXB0ZSwgb2xkcHRlLAotCQkJICAgIG9sZHB0ZSAmIH4o UEdfUlcgfCBQR19NKSkpCisJCQlQVF9TRVRfVkFfTUEocHRlLCBuZXdwdGUsIFRSVUUpOwor CQkJaWYgKCpwdGUgIT0gbmV3cHRlKQogCQkJCWdvdG8gcmV0cnk7CisJCQkKIAkJCWlmICgo b2xkcHRlICYgUEdfTSkgIT0gMCkKIAkJCQl2bV9wYWdlX2RpcnR5KG0pOwogCQkJcG1hcF9p bnZhbGlkYXRlX3BhZ2UocG1hcCwgcHYtPnB2X3ZhKTsKQEAgLTQ1NDcsNiArMzczMyw5IEBA CiAJCVBNQVBfVU5MT0NLKHBtYXApOwogCX0KIAl2bV9wYWdlX2FmbGFnX2NsZWFyKG0sIFBH QV9XUklURUFCTEUpOworCVBUX1VQREFURVNfRkxVU0goKTsKKwlpZiAoKlBNQVAxKQorCQlQ VF9TRVRfTUEoUEFERFIxLCAwKTsKIAlzY2hlZF91bnBpbigpOwogCXZtX3BhZ2VfdW5sb2Nr X3F1ZXVlcygpOwogfQpAQCAtNDU2Niw0OSArMzc1NSwxNSBAQAogaW50CiBwbWFwX3RzX3Jl ZmVyZW5jZWQodm1fcGFnZV90IG0pCiB7Ci0Jc3RydWN0IG1kX3BhZ2UgKnB2aDsKIAlwdl9l bnRyeV90IHB2LCBwdmYsIHB2bjsKIAlwbWFwX3QgcG1hcDsKLQlwZF9lbnRyeV90IG9sZHBk ZSwgKnBkZTsKIAlwdF9lbnRyeV90ICpwdGU7Ci0Jdm1fb2Zmc2V0X3QgdmE7CiAJaW50IHJ0 dmFsID0gMDsKIAogCUtBU1NFUlQoKG0tPm9mbGFncyAmIFZQT19VTk1BTkFHRUQpID09IDAs CiAJICAgICgicG1hcF90c19yZWZlcmVuY2VkOiBwYWdlICVwIGlzIG5vdCBtYW5hZ2VkIiwg bSkpOwotCXB2aCA9IHBhX3RvX3B2aChWTV9QQUdFX1RPX1BIWVMobSkpOwogCXZtX3BhZ2Vf bG9ja19xdWV1ZXMoKTsKIAlzY2hlZF9waW4oKTsKLQlUQUlMUV9GT1JFQUNIX1NBRkUocHYs ICZwdmgtPnB2X2xpc3QsIHB2X2xpc3QsIHB2bikgewotCQl2YSA9IHB2LT5wdl92YTsKLQkJ cG1hcCA9IFBWX1BNQVAocHYpOwotCQlQTUFQX0xPQ0socG1hcCk7Ci0JCXBkZSA9IHBtYXBf cGRlKHBtYXAsIHZhKTsKLQkJb2xkcGRlID0gKnBkZTsKLQkJaWYgKChvbGRwZGUgJiBQR19B KSAhPSAwKSB7Ci0JCQlpZiAocG1hcF9kZW1vdGVfcGRlKHBtYXAsIHBkZSwgdmEpKSB7Ci0J CQkJaWYgKChvbGRwZGUgJiBQR19XKSA9PSAwKSB7Ci0JCQkJCS8qCi0JCQkJCSAqIFJlbW92 ZSB0aGUgbWFwcGluZyB0byBhIHNpbmdsZSBwYWdlCi0JCQkJCSAqIHNvIHRoYXQgYSBzdWJz ZXF1ZW50IGFjY2VzcyBtYXkKLQkJCQkJICogcmVwcm9tb3RlLiAgU2luY2UgdGhlIHVuZGVy bHlpbmcKLQkJCQkJICogcGFnZSB0YWJsZSBwYWdlIGlzIGZ1bGx5IHBvcHVsYXRlZCwKLQkJ CQkJICogdGhpcyByZW1vdmFsIG5ldmVyIGZyZWVzIGEgcGFnZQotCQkJCQkgKiB0YWJsZSBw YWdlLgotCQkJCQkgKi8KLQkJCQkJdmEgKz0gVk1fUEFHRV9UT19QSFlTKG0pIC0gKG9sZHBk ZSAmCi0JCQkJCSAgICBQR19QU19GUkFNRSk7Ci0JCQkJCXBtYXBfcmVtb3ZlX3BhZ2UocG1h cCwgdmEsIE5VTEwpOwotCQkJCQlydHZhbCsrOwotCQkJCQlpZiAocnR2YWwgPiA0KSB7Ci0J CQkJCQlQTUFQX1VOTE9DSyhwbWFwKTsKLQkJCQkJCWdvdG8gb3V0OwotCQkJCQl9Ci0JCQkJ fQotCQkJfQotCQl9Ci0JCVBNQVBfVU5MT0NLKHBtYXApOwotCX0KIAlpZiAoKHB2ID0gVEFJ TFFfRklSU1QoJm0tPm1kLnB2X2xpc3QpKSAhPSBOVUxMKSB7CiAJCXB2ZiA9IHB2OwogCQlk byB7CkBAIC00NjE3LDEyICszNzcyLDkgQEAKIAkJCVRBSUxRX0lOU0VSVF9UQUlMKCZtLT5t ZC5wdl9saXN0LCBwdiwgcHZfbGlzdCk7CiAJCQlwbWFwID0gUFZfUE1BUChwdik7CiAJCQlQ TUFQX0xPQ0socG1hcCk7Ci0JCQlwZGUgPSBwbWFwX3BkZShwbWFwLCBwdi0+cHZfdmEpOwot CQkJS0FTU0VSVCgoKnBkZSAmIFBHX1BTKSA9PSAwLCAoInBtYXBfdHNfcmVmZXJlbmNlZDoi Ci0JCQkgICAgIiBmb3VuZCBhIDRtcGFnZSBpbiBwYWdlICVwJ3MgcHYgbGlzdCIsIG0pKTsK IAkJCXB0ZSA9IHBtYXBfcHRlX3F1aWNrKHBtYXAsIHB2LT5wdl92YSk7CiAJCQlpZiAoKCpw dGUgJiBQR19BKSAhPSAwKSB7Ci0JCQkJYXRvbWljX2NsZWFyX2ludCgodV9pbnQgKilwdGUs IFBHX0EpOworCQkJCVBUX1NFVF9WQV9NQShwdGUsICpwdGUgJiB+UEdfQSwgRkFMU0UpOwog CQkJCXBtYXBfaW52YWxpZGF0ZV9wYWdlKHBtYXAsIHB2LT5wdl92YSk7CiAJCQkJcnR2YWwr KzsKIAkJCQlpZiAocnR2YWwgPiA0KQpAQCAtNDYzMSw3ICszNzgzLDkgQEAKIAkJCVBNQVBf VU5MT0NLKHBtYXApOwogCQl9IHdoaWxlICgocHYgPSBwdm4pICE9IE5VTEwgJiYgcHYgIT0g cHZmKTsKIAl9Ci1vdXQ6CisJUFRfVVBEQVRFU19GTFVTSCgpOworCWlmICgqUE1BUDEpCisJ CVBUX1NFVF9NQShQQUREUjEsIDApOwogCXNjaGVkX3VucGluKCk7CiAJdm1fcGFnZV91bmxv Y2tfcXVldWVzKCk7CiAJcmV0dXJuIChydHZhbCk7CkBAIC00NjQzLDEyICszNzk3LDkgQEAK IHZvaWQKIHBtYXBfY2xlYXJfbW9kaWZ5KHZtX3BhZ2VfdCBtKQogewotCXN0cnVjdCBtZF9w YWdlICpwdmg7Ci0JcHZfZW50cnlfdCBuZXh0X3B2LCBwdjsKKwlwdl9lbnRyeV90IHB2Owog CXBtYXBfdCBwbWFwOwotCXBkX2VudHJ5X3Qgb2xkcGRlLCAqcGRlOwotCXB0X2VudHJ5X3Qg b2xkcHRlLCAqcHRlOwotCXZtX29mZnNldF90IHZhOworCXB0X2VudHJ5X3QgKnB0ZTsKIAog CUtBU1NFUlQoKG0tPm9mbGFncyAmIFZQT19VTk1BTkFHRUQpID09IDAsCiAJICAgICgicG1h cF9jbGVhcl9tb2RpZnk6IHBhZ2UgJXAgaXMgbm90IG1hbmFnZWQiLCBtKSk7CkBAIC00NjY1 LDQ5ICszODE2LDkgQEAKIAkJcmV0dXJuOwogCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKIAlz Y2hlZF9waW4oKTsKLQlwdmggPSBwYV90b19wdmgoVk1fUEFHRV9UT19QSFlTKG0pKTsKLQlU QUlMUV9GT1JFQUNIX1NBRkUocHYsICZwdmgtPnB2X2xpc3QsIHB2X2xpc3QsIG5leHRfcHYp IHsKLQkJdmEgPSBwdi0+cHZfdmE7Ci0JCXBtYXAgPSBQVl9QTUFQKHB2KTsKLQkJUE1BUF9M T0NLKHBtYXApOwotCQlwZGUgPSBwbWFwX3BkZShwbWFwLCB2YSk7Ci0JCW9sZHBkZSA9ICpw ZGU7Ci0JCWlmICgob2xkcGRlICYgUEdfUlcpICE9IDApIHsKLQkJCWlmIChwbWFwX2RlbW90 ZV9wZGUocG1hcCwgcGRlLCB2YSkpIHsKLQkJCQlpZiAoKG9sZHBkZSAmIFBHX1cpID09IDAp IHsKLQkJCQkJLyoKLQkJCQkJICogV3JpdGUgcHJvdGVjdCB0aGUgbWFwcGluZyB0byBhCi0J CQkJCSAqIHNpbmdsZSBwYWdlIHNvIHRoYXQgYSBzdWJzZXF1ZW50Ci0JCQkJCSAqIHdyaXRl IGFjY2VzcyBtYXkgcmVwcm9tb3RlLgotCQkJCQkgKi8KLQkJCQkJdmEgKz0gVk1fUEFHRV9U T19QSFlTKG0pIC0gKG9sZHBkZSAmCi0JCQkJCSAgICBQR19QU19GUkFNRSk7Ci0JCQkJCXB0 ZSA9IHBtYXBfcHRlX3F1aWNrKHBtYXAsIHZhKTsKLQkJCQkJb2xkcHRlID0gKnB0ZTsKLQkJ CQkJaWYgKChvbGRwdGUgJiBQR19WKSAhPSAwKSB7Ci0JCQkJCQkvKgotCQkJCQkJICogUmVn YXJkbGVzcyBvZiB3aGV0aGVyIGEgcHRlIGlzIDMyIG9yIDY0IGJpdHMKLQkJCQkJCSAqIGlu IHNpemUsIFBHX1JXIGFuZCBQR19NIGFyZSBhbW9uZyB0aGUgbGVhc3QKLQkJCQkJCSAqIHNp Z25pZmljYW50IDMyIGJpdHMuCi0JCQkJCQkgKi8KLQkJCQkJCXdoaWxlICghYXRvbWljX2Nt cHNldF9pbnQoKHVfaW50ICopcHRlLAotCQkJCQkJICAgIG9sZHB0ZSwKLQkJCQkJCSAgICBv bGRwdGUgJiB+KFBHX00gfCBQR19SVykpKQotCQkJCQkJCW9sZHB0ZSA9ICpwdGU7Ci0JCQkJ CQl2bV9wYWdlX2RpcnR5KG0pOwotCQkJCQkJcG1hcF9pbnZhbGlkYXRlX3BhZ2UocG1hcCwg dmEpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JCVBNQVBfVU5MT0NLKHBtYXApOwot CX0KIAlUQUlMUV9GT1JFQUNIKHB2LCAmbS0+bWQucHZfbGlzdCwgcHZfbGlzdCkgewogCQlw bWFwID0gUFZfUE1BUChwdik7CiAJCVBNQVBfTE9DSyhwbWFwKTsKLQkJcGRlID0gcG1hcF9w ZGUocG1hcCwgcHYtPnB2X3ZhKTsKLQkJS0FTU0VSVCgoKnBkZSAmIFBHX1BTKSA9PSAwLCAo InBtYXBfY2xlYXJfbW9kaWZ5OiBmb3VuZCIKLQkJICAgICIgYSA0bXBhZ2UgaW4gcGFnZSAl cCdzIHB2IGxpc3QiLCBtKSk7CiAJCXB0ZSA9IHBtYXBfcHRlX3F1aWNrKHBtYXAsIHB2LT5w dl92YSk7CiAJCWlmICgoKnB0ZSAmIChQR19NIHwgUEdfUlcpKSA9PSAoUEdfTSB8IFBHX1JX KSkgewogCQkJLyoKQEAgLTQ3MTUsNyArMzgyNiw3IEBACiAJCQkgKiBpbiBzaXplLCBQR19N IGlzIGFtb25nIHRoZSBsZWFzdCBzaWduaWZpY2FudAogCQkJICogMzIgYml0cy4gCiAJCQkg Ki8KLQkJCWF0b21pY19jbGVhcl9pbnQoKHVfaW50ICopcHRlLCBQR19NKTsKKwkJCVBUX1NF VF9WQV9NQShwdGUsICpwdGUgJiB+UEdfTSwgRkFMU0UpOwogCQkJcG1hcF9pbnZhbGlkYXRl X3BhZ2UocG1hcCwgcHYtPnB2X3ZhKTsKIAkJfQogCQlQTUFQX1VOTE9DSyhwbWFwKTsKQEAg LTQ3MzIsNDYgKzM4NDMsMTcgQEAKIHZvaWQKIHBtYXBfY2xlYXJfcmVmZXJlbmNlKHZtX3Bh Z2VfdCBtKQogewotCXN0cnVjdCBtZF9wYWdlICpwdmg7Ci0JcHZfZW50cnlfdCBuZXh0X3B2 LCBwdjsKKwlwdl9lbnRyeV90IHB2OwogCXBtYXBfdCBwbWFwOwotCXBkX2VudHJ5X3Qgb2xk cGRlLCAqcGRlOwogCXB0X2VudHJ5X3QgKnB0ZTsKLQl2bV9vZmZzZXRfdCB2YTsKIAogCUtB U1NFUlQoKG0tPm9mbGFncyAmIFZQT19VTk1BTkFHRUQpID09IDAsCiAJICAgICgicG1hcF9j bGVhcl9yZWZlcmVuY2U6IHBhZ2UgJXAgaXMgbm90IG1hbmFnZWQiLCBtKSk7CiAJdm1fcGFn ZV9sb2NrX3F1ZXVlcygpOwogCXNjaGVkX3BpbigpOwotCXB2aCA9IHBhX3RvX3B2aChWTV9Q QUdFX1RPX1BIWVMobSkpOwotCVRBSUxRX0ZPUkVBQ0hfU0FGRShwdiwgJnB2aC0+cHZfbGlz dCwgcHZfbGlzdCwgbmV4dF9wdikgewotCQl2YSA9IHB2LT5wdl92YTsKLQkJcG1hcCA9IFBW X1BNQVAocHYpOwotCQlQTUFQX0xPQ0socG1hcCk7Ci0JCXBkZSA9IHBtYXBfcGRlKHBtYXAs IHZhKTsKLQkJb2xkcGRlID0gKnBkZTsKLQkJaWYgKChvbGRwZGUgJiBQR19BKSAhPSAwKSB7 Ci0JCQlpZiAocG1hcF9kZW1vdGVfcGRlKHBtYXAsIHBkZSwgdmEpKSB7Ci0JCQkJLyoKLQkJ CQkgKiBSZW1vdmUgdGhlIG1hcHBpbmcgdG8gYSBzaW5nbGUgcGFnZSBzbwotCQkJCSAqIHRo YXQgYSBzdWJzZXF1ZW50IGFjY2VzcyBtYXkgcmVwcm9tb3RlLgotCQkJCSAqIFNpbmNlIHRo ZSB1bmRlcmx5aW5nIHBhZ2UgdGFibGUgcGFnZSBpcwotCQkJCSAqIGZ1bGx5IHBvcHVsYXRl ZCwgdGhpcyByZW1vdmFsIG5ldmVyIGZyZWVzCi0JCQkJICogYSBwYWdlIHRhYmxlIHBhZ2Uu Ci0JCQkJICovCi0JCQkJdmEgKz0gVk1fUEFHRV9UT19QSFlTKG0pIC0gKG9sZHBkZSAmCi0J CQkJICAgIFBHX1BTX0ZSQU1FKTsKLQkJCQlwbWFwX3JlbW92ZV9wYWdlKHBtYXAsIHZhLCBO VUxMKTsKLQkJCX0KLQkJfQotCQlQTUFQX1VOTE9DSyhwbWFwKTsKLQl9CiAJVEFJTFFfRk9S RUFDSChwdiwgJm0tPm1kLnB2X2xpc3QsIHB2X2xpc3QpIHsKIAkJcG1hcCA9IFBWX1BNQVAo cHYpOwogCQlQTUFQX0xPQ0socG1hcCk7Ci0JCXBkZSA9IHBtYXBfcGRlKHBtYXAsIHB2LT5w dl92YSk7Ci0JCUtBU1NFUlQoKCpwZGUgJiBQR19QUykgPT0gMCwgKCJwbWFwX2NsZWFyX3Jl ZmVyZW5jZTogZm91bmQiCi0JCSAgICAiIGEgNG1wYWdlIGluIHBhZ2UgJXAncyBwdiBsaXN0 IiwgbSkpOwogCQlwdGUgPSBwbWFwX3B0ZV9xdWljayhwbWFwLCBwdi0+cHZfdmEpOwogCQlp ZiAoKCpwdGUgJiBQR19BKSAhPSAwKSB7CiAJCQkvKgpAQCAtNDc3OSw3ICszODYxLDcgQEAK IAkJCSAqIGluIHNpemUsIFBHX0EgaXMgYW1vbmcgdGhlIGxlYXN0IHNpZ25pZmljYW50CiAJ CQkgKiAzMiBiaXRzLiAKIAkJCSAqLwotCQkJYXRvbWljX2NsZWFyX2ludCgodV9pbnQgKilw dGUsIFBHX0EpOworCQkJUFRfU0VUX1ZBX01BKHB0ZSwgKnB0ZSAmIH5QR19BLCBGQUxTRSk7 CiAJCQlwbWFwX2ludmFsaWRhdGVfcGFnZShwbWFwLCBwdi0+cHZfdmEpOwogCQl9CiAJCVBN QVBfVU5MT0NLKHBtYXApOwpAQCAtNDc5Miw0MCArMzg3NCw2IEBACiAgKiBNaXNjZWxsYW5l b3VzIHN1cHBvcnQgcm91dGluZXMgZm9sbG93CiAgKi8KIAotLyogQWRqdXN0IHRoZSBjYWNo ZSBtb2RlIGZvciBhIDRLQiBwYWdlIG1hcHBlZCB2aWEgYSBQVEUuICovCi1zdGF0aWMgX19p bmxpbmUgdm9pZAotcG1hcF9wdGVfYXR0cihwdF9lbnRyeV90ICpwdGUsIGludCBjYWNoZV9i aXRzKQotewotCXVfaW50IG9wdGUsIG5wdGU7Ci0KLQkvKgotCSAqIFRoZSBjYWNoZSBtb2Rl IGJpdHMgYXJlIGFsbCBpbiB0aGUgbG93IDMyLWJpdHMgb2YgdGhlCi0JICogUFRFLCBzbyB3 ZSBjYW4ganVzdCBzcGluIG9uIHVwZGF0aW5nIHRoZSBsb3cgMzItYml0cy4KLQkgKi8KLQlk byB7Ci0JCW9wdGUgPSAqKHVfaW50ICopcHRlOwotCQlucHRlID0gb3B0ZSAmIH5QR19QVEVf Q0FDSEU7Ci0JCW5wdGUgfD0gY2FjaGVfYml0czsKLQl9IHdoaWxlIChucHRlICE9IG9wdGUg JiYgIWF0b21pY19jbXBzZXRfaW50KCh1X2ludCAqKXB0ZSwgb3B0ZSwgbnB0ZSkpOwotfQot Ci0vKiBBZGp1c3QgdGhlIGNhY2hlIG1vZGUgZm9yIGEgMi80TUIgcGFnZSBtYXBwZWQgdmlh IGEgUERFLiAqLwotc3RhdGljIF9faW5saW5lIHZvaWQKLXBtYXBfcGRlX2F0dHIocGRfZW50 cnlfdCAqcGRlLCBpbnQgY2FjaGVfYml0cykKLXsKLQl1X2ludCBvcGRlLCBucGRlOwotCi0J LyoKLQkgKiBUaGUgY2FjaGUgbW9kZSBiaXRzIGFyZSBhbGwgaW4gdGhlIGxvdyAzMi1iaXRz IG9mIHRoZQotCSAqIFBERSwgc28gd2UgY2FuIGp1c3Qgc3BpbiBvbiB1cGRhdGluZyB0aGUg bG93IDMyLWJpdHMuCi0JICovCi0JZG8gewotCQlvcGRlID0gKih1X2ludCAqKXBkZTsKLQkJ bnBkZSA9IG9wZGUgJiB+UEdfUERFX0NBQ0hFOwotCQlucGRlIHw9IGNhY2hlX2JpdHM7Ci0J fSB3aGlsZSAobnBkZSAhPSBvcGRlICYmICFhdG9taWNfY21wc2V0X2ludCgodV9pbnQgKilw ZGUsIG9wZGUsIG5wZGUpKTsKLX0KLQogLyoKICAqIE1hcCBhIHNldCBvZiBwaHlzaWNhbCBt ZW1vcnkgcGFnZXMgaW50byB0aGUga2VybmVsIHZpcnR1YWwKICAqIGFkZHJlc3Mgc3BhY2Uu IFJldHVybiBhIHBvaW50ZXIgdG8gd2hlcmUgaXQgaXMgbWFwcGVkLiBUaGlzCkBAIC00ODgw LDkgKzM5MjgsMTEgQEAKIAliYXNlID0gdHJ1bmNfcGFnZSh2YSk7CiAJb2Zmc2V0ID0gdmEg JiBQQUdFX01BU0s7CiAJc2l6ZSA9IHJvdW5kdXAob2Zmc2V0ICsgc2l6ZSwgUEFHRV9TSVpF KTsKKwljcml0aWNhbF9lbnRlcigpOwogCWZvciAodG1wdmEgPSBiYXNlOyB0bXB2YSA8IChi YXNlICsgc2l6ZSk7IHRtcHZhICs9IFBBR0VfU0laRSkKIAkJcG1hcF9rcmVtb3ZlKHRtcHZh KTsKIAlwbWFwX2ludmFsaWRhdGVfcmFuZ2Uoa2VybmVsX3BtYXAsIHZhLCB0bXB2YSk7CisJ Y3JpdGljYWxfZXhpdCgpOwogCWttZW1fZnJlZShrZXJuZWxfbWFwLCBiYXNlLCBzaXplKTsK IH0KIApAQCAtNDkzMCw4ICszOTgwLDkgQEAKIAkJaWYgKCpzeXNtYXBzLT5DTUFQMikKIAkJ CXBhbmljKCJwbWFwX2ZsdXNoX3BhZ2U6IENNQVAyIGJ1c3kiKTsKIAkJc2NoZWRfcGluKCk7 Ci0JCSpzeXNtYXBzLT5DTUFQMiA9IFBHX1YgfCBQR19SVyB8IFZNX1BBR0VfVE9fUEhZUyht KSB8Ci0JCSAgICBQR19BIHwgUEdfTSB8IHBtYXBfY2FjaGVfYml0cyhtLT5tZC5wYXRfbW9k ZSwgMCk7CisJCVBUX1NFVF9NQShzeXNtYXBzLT5DQUREUjIsIFBHX1YgfCBQR19SVyB8CisJ CSAgICBWTV9QQUdFX1RPX01BQ0gobSkgfCBQR19BIHwgUEdfTSB8CisJCSAgICBwbWFwX2Nh Y2hlX2JpdHMobS0+bWQucGF0X21vZGUsIDApKTsKIAkJaW52bGNhZGRyKHN5c21hcHMtPkNB RERSMik7CiAJCXN2YSA9ICh2bV9vZmZzZXRfdClzeXNtYXBzLT5DQUREUjI7CiAJCWV2YSA9 IHN2YSArIFBBR0VfU0laRTsKQEAgLTQ5NDUsNyArMzk5Niw3IEBACiAJCWZvciAoOyBzdmEg PCBldmE7IHN2YSArPSBjcHVfY2xmbHVzaF9saW5lX3NpemUpCiAJCQljbGZsdXNoKHN2YSk7 CiAJCW1mZW5jZSgpOwotCQkqc3lzbWFwcy0+Q01BUDIgPSAwOworCQlQVF9TRVRfTUEoc3lz bWFwcy0+Q0FERFIyLCAwKTsKIAkJc2NoZWRfdW5waW4oKTsKIAkJbXR4X3VubG9jaygmc3lz bWFwcy0+bG9jayk7CiAJfSBlbHNlCkBAIC00OTY2LDkzICs0MDE3LDU0IEBACiBwbWFwX2No YW5nZV9hdHRyKHZtX29mZnNldF90IHZhLCB2bV9zaXplX3Qgc2l6ZSwgaW50IG1vZGUpCiB7 CiAJdm1fb2Zmc2V0X3QgYmFzZSwgb2Zmc2V0LCB0bXB2YTsKLQlwZF9lbnRyeV90ICpwZGU7 CiAJcHRfZW50cnlfdCAqcHRlOwotCWludCBjYWNoZV9iaXRzX3B0ZSwgY2FjaGVfYml0c19w ZGU7CisJdV9pbnQgb3B0ZSwgbnB0ZTsKKwlwZF9lbnRyeV90ICpwZGU7CiAJYm9vbGVhbl90 IGNoYW5nZWQ7CiAKIAliYXNlID0gdHJ1bmNfcGFnZSh2YSk7CiAJb2Zmc2V0ID0gdmEgJiBQ QUdFX01BU0s7CiAJc2l6ZSA9IHJvdW5kdXAob2Zmc2V0ICsgc2l6ZSwgUEFHRV9TSVpFKTsK IAotCS8qCi0JICogT25seSBzdXBwb3J0ZWQgb24ga2VybmVsIHZpcnR1YWwgYWRkcmVzc2Vz IGFib3ZlIHRoZSByZWN1cnNpdmUgbWFwLgotCSAqLwotCWlmIChiYXNlIDwgVk1fTUlOX0tF Uk5FTF9BRERSRVNTKQorCS8qIE9ubHkgc3VwcG9ydGVkIG9uIGtlcm5lbCB2aXJ0dWFsIGFk ZHJlc3Nlcy4gKi8KKwlpZiAoYmFzZSA8PSBWTV9NQVhVU0VSX0FERFJFU1MpCiAJCXJldHVy biAoRUlOVkFMKTsKIAotCWNhY2hlX2JpdHNfcGRlID0gcG1hcF9jYWNoZV9iaXRzKG1vZGUs IDEpOwotCWNhY2hlX2JpdHNfcHRlID0gcG1hcF9jYWNoZV9iaXRzKG1vZGUsIDApOwotCWNo YW5nZWQgPSBGQUxTRTsKLQotCS8qCi0JICogUGFnZXMgdGhhdCBhcmVuJ3QgbWFwcGVkIGFy ZW4ndCBzdXBwb3J0ZWQuICBBbHNvIGJyZWFrIGRvd24KLQkgKiAyLzRNQiBwYWdlcyBpbnRv IDRLQiBwYWdlcyBpZiByZXF1aXJlZC4KLQkgKi8KLQlQTUFQX0xPQ0soa2VybmVsX3BtYXAp OwotCWZvciAodG1wdmEgPSBiYXNlOyB0bXB2YSA8IGJhc2UgKyBzaXplOyApIHsKKwkvKiA0 TUIgcGFnZXMgYW5kIHBhZ2VzIHRoYXQgYXJlbid0IG1hcHBlZCBhcmVuJ3Qgc3VwcG9ydGVk LiAqLworCWZvciAodG1wdmEgPSBiYXNlOyB0bXB2YSA8IChiYXNlICsgc2l6ZSk7IHRtcHZh ICs9IFBBR0VfU0laRSkgewogCQlwZGUgPSBwbWFwX3BkZShrZXJuZWxfcG1hcCwgdG1wdmEp OwotCQlpZiAoKnBkZSA9PSAwKSB7Ci0JCQlQTUFQX1VOTE9DSyhrZXJuZWxfcG1hcCk7CisJ CWlmICgqcGRlICYgUEdfUFMpCiAJCQlyZXR1cm4gKEVJTlZBTCk7Ci0JCX0KLQkJaWYgKCpw ZGUgJiBQR19QUykgewotCQkJLyoKLQkJCSAqIElmIHRoZSBjdXJyZW50IDIvNE1CIHBhZ2Ug YWxyZWFkeSBoYXMKLQkJCSAqIHRoZSByZXF1aXJlZCBtZW1vcnkgdHlwZSwgdGhlbiB3ZSBu ZWVkIG5vdAotCQkJICogZGVtb3RlIHRoaXMgcGFnZS4gIEp1c3QgaW5jcmVtZW50IHRtcHZh IHRvCi0JCQkgKiB0aGUgbmV4dCAyLzRNQiBwYWdlIGZyYW1lLgotCQkJICovCi0JCQlpZiAo KCpwZGUgJiBQR19QREVfQ0FDSEUpID09IGNhY2hlX2JpdHNfcGRlKSB7Ci0JCQkJdG1wdmEg PSB0cnVuY180bXBhZ2UodG1wdmEpICsgTkJQRFI7Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0K LQkJCS8qCi0JCQkgKiBJZiB0aGUgY3VycmVudCBvZmZzZXQgYWxpZ25zIHdpdGggYSAyLzRN QgotCQkJICogcGFnZSBmcmFtZSBhbmQgdGhlcmUgaXMgYXQgbGVhc3QgMi80TUIgbGVmdAot CQkJICogd2l0aGluIHRoZSByYW5nZSwgdGhlbiB3ZSBuZWVkIG5vdCBicmVhawotCQkJICog ZG93biB0aGlzIHBhZ2UgaW50byA0S0IgcGFnZXMuCi0JCQkgKi8KLQkJCWlmICgodG1wdmEg JiBQRFJNQVNLKSA9PSAwICYmCi0JCQkgICAgdG1wdmEgKyBQRFJNQVNLIDwgYmFzZSArIHNp emUpIHsKLQkJCQl0bXB2YSArPSBOQlBEUjsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJCWlm ICghcG1hcF9kZW1vdGVfcGRlKGtlcm5lbF9wbWFwLCBwZGUsIHRtcHZhKSkgewotCQkJCVBN QVBfVU5MT0NLKGtlcm5lbF9wbWFwKTsKLQkJCQlyZXR1cm4gKEVOT01FTSk7Ci0JCQl9Ci0J CX0KLQkJcHRlID0gdnRvcHRlKHRtcHZhKTsKLQkJaWYgKCpwdGUgPT0gMCkgewotCQkJUE1B UF9VTkxPQ0soa2VybmVsX3BtYXApOworCQlpZiAoKCpwZGUgJiBQR19WKSA9PSAwKQorCQkJ cmV0dXJuIChFSU5WQUwpOworCQlwdGUgPSB2dG9wdGUodmEpOworCQlpZiAoKCpwdGUgJiBQ R19WKSA9PSAwKQogCQkJcmV0dXJuIChFSU5WQUwpOwotCQl9Ci0JCXRtcHZhICs9IFBBR0Vf U0laRTsKIAl9Ci0JUE1BUF9VTkxPQ0soa2VybmVsX3BtYXApOworCisJY2hhbmdlZCA9IEZB TFNFOwogCiAJLyoKLQkgKiBPaywgYWxsIHRoZSBwYWdlcyBleGlzdCwgc28gcnVuIHRocm91 Z2ggdGhlbSB1cGRhdGluZyB0aGVpcgotCSAqIGNhY2hlIG1vZGUgaWYgcmVxdWlyZWQuCisJ ICogT2ssIGFsbCB0aGUgcGFnZXMgZXhpc3QgYW5kIGFyZSA0aywgc28gcnVuIHRocm91Z2gg dGhlbSB1cGRhdGluZworCSAqIHRoZWlyIGNhY2hlIG1vZGUuCiAJICovCi0JZm9yICh0bXB2 YSA9IGJhc2U7IHRtcHZhIDwgYmFzZSArIHNpemU7ICkgewotCQlwZGUgPSBwbWFwX3BkZShr ZXJuZWxfcG1hcCwgdG1wdmEpOwotCQlpZiAoKnBkZSAmIFBHX1BTKSB7Ci0JCQlpZiAoKCpw ZGUgJiBQR19QREVfQ0FDSEUpICE9IGNhY2hlX2JpdHNfcGRlKSB7Ci0JCQkJcG1hcF9wZGVf YXR0cihwZGUsIGNhY2hlX2JpdHNfcGRlKTsKLQkJCQljaGFuZ2VkID0gVFJVRTsKLQkJCX0K LQkJCXRtcHZhID0gdHJ1bmNfNG1wYWdlKHRtcHZhKSArIE5CUERSOwotCQl9IGVsc2Ugewot CQkJcHRlID0gdnRvcHRlKHRtcHZhKTsKLQkJCWlmICgoKnB0ZSAmIFBHX1BURV9DQUNIRSkg IT0gY2FjaGVfYml0c19wdGUpIHsKLQkJCQlwbWFwX3B0ZV9hdHRyKHB0ZSwgY2FjaGVfYml0 c19wdGUpOwotCQkJCWNoYW5nZWQgPSBUUlVFOwotCQkJfQotCQkJdG1wdmEgKz0gUEFHRV9T SVpFOwotCQl9CisJZm9yICh0bXB2YSA9IGJhc2U7IHNpemUgPiAwOyApIHsKKwkJcHRlID0g dnRvcHRlKHRtcHZhKTsKKworCQkvKgorCQkgKiBUaGUgY2FjaGUgbW9kZSBiaXRzIGFyZSBh bGwgaW4gdGhlIGxvdyAzMi1iaXRzIG9mIHRoZQorCQkgKiBQVEUsIHNvIHdlIGNhbiBqdXN0 IHNwaW4gb24gdXBkYXRpbmcgdGhlIGxvdyAzMi1iaXRzLgorCQkgKi8KKwkJZG8geworCQkJ b3B0ZSA9ICoodV9pbnQgKilwdGU7CisJCQlucHRlID0gb3B0ZSAmIH4oUEdfUFRFX1BBVCB8 IFBHX05DX1BDRCB8IFBHX05DX1BXVCk7CisJCQlucHRlIHw9IHBtYXBfY2FjaGVfYml0cyht b2RlLCAwKTsKKwkJCVBUX1NFVF9WQV9NQShwdGUsIG5wdGUsIFRSVUUpOworCQl9IHdoaWxl IChucHRlICE9IG9wdGUgJiYgKCpwdGUgIT0gbnB0ZSkpOworCQlpZiAobnB0ZSAhPSBvcHRl KQorCQkJY2hhbmdlZCA9IFRSVUU7CisJCXRtcHZhICs9IFBBR0VfU0laRTsKKwkJc2l6ZSAt PSBQQUdFX1NJWkU7CiAJfQogCiAJLyoKQEAgLTUwNzIsMzMgKzQwODQsMTYgQEAKIGludAog cG1hcF9taW5jb3JlKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCBhZGRyLCB2bV9wYWRkcl90 ICpsb2NrZWRfcGEpCiB7Ci0JcGRfZW50cnlfdCAqcGRlcDsKIAlwdF9lbnRyeV90ICpwdGVw LCBwdGU7CiAJdm1fcGFkZHJfdCBwYTsKIAlpbnQgdmFsOwogCiAJUE1BUF9MT0NLKHBtYXAp OwogcmV0cnk6Ci0JcGRlcCA9IHBtYXBfcGRlKHBtYXAsIGFkZHIpOwotCWlmICgqcGRlcCAh PSAwKSB7Ci0JCWlmICgqcGRlcCAmIFBHX1BTKSB7Ci0JCQlwdGUgPSAqcGRlcDsKLQkJCS8q IENvbXB1dGUgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIDRLQiBwYWdlLiAqLwotCQkJ cGEgPSAoKCpwZGVwICYgUEdfUFNfRlJBTUUpIHwgKGFkZHIgJiBQRFJNQVNLKSkgJgotCQkJ ICAgIFBHX0ZSQU1FOwotCQkJdmFsID0gTUlOQ09SRV9TVVBFUjsKLQkJfSBlbHNlIHsKLQkJ CXB0ZXAgPSBwbWFwX3B0ZShwbWFwLCBhZGRyKTsKLQkJCXB0ZSA9ICpwdGVwOwotCQkJcG1h cF9wdGVfcmVsZWFzZShwdGVwKTsKLQkJCXBhID0gcHRlICYgUEdfRlJBTUU7Ci0JCQl2YWwg PSAwOwotCQl9Ci0JfSBlbHNlIHsKLQkJcHRlID0gMDsKLQkJcGEgPSAwOwotCQl2YWwgPSAw OwotCX0KKwlwdGVwID0gcG1hcF9wdGUocG1hcCwgYWRkcik7CisJcHRlID0gKHB0ZXAgIT0g TlVMTCkgPyBQVF9HRVQocHRlcCkgOiAwOworCXBtYXBfcHRlX3JlbGVhc2UocHRlcCk7CisJ dmFsID0gMDsKIAlpZiAoKHB0ZSAmIFBHX1YpICE9IDApIHsKIAkJdmFsIHw9IE1JTkNPUkVf SU5DT1JFOwogCQlpZiAoKHB0ZSAmIChQR19NIHwgUEdfUlcpKSA9PSAoUEdfTSB8IFBHX1JX KSkKQEAgLTUxMDksNiArNDEwNCw3IEBACiAJaWYgKCh2YWwgJiAoTUlOQ09SRV9NT0RJRklF RF9PVEhFUiB8IE1JTkNPUkVfUkVGRVJFTkNFRF9PVEhFUikpICE9CiAJICAgIChNSU5DT1JF X01PRElGSUVEX09USEVSIHwgTUlOQ09SRV9SRUZFUkVOQ0VEX09USEVSKSAmJgogCSAgICAo cHRlICYgKFBHX01BTkFHRUQgfCBQR19WKSkgPT0gKFBHX01BTkFHRUQgfCBQR19WKSkgewor CQlwYSA9IHB0ZSAmIFBHX0ZSQU1FOwogCQkvKiBFbnN1cmUgdGhhdCAiUEhZU19UT19WTV9Q QUdFKHBhKS0+b2JqZWN0IiBkb2Vzbid0IGNoYW5nZS4gKi8KIAkJaWYgKHZtX3BhZ2VfcGFf dHJ5cmVsb2NrKHBtYXAsIHBhLCBsb2NrZWRfcGEpKQogCQkJZ290byByZXRyeTsKQEAgLTUx NDUsNiArNDE0MSw3IEBACiAJICogcG1hcF9hY3RpdmF0ZSBpcyBmb3IgdGhlIGN1cnJlbnQg dGhyZWFkIG9uIHRoZSBjdXJyZW50IGNwdQogCSAqLwogCXRkLT50ZF9wY2ItPnBjYl9jcjMg PSBjcjM7CisJUFRfVVBEQVRFU19GTFVTSCgpOwogCWxvYWRfY3IzKGNyMyk7CiAJUENQVV9T RVQoY3VycG1hcCwgcG1hcCk7CiAJY3JpdGljYWxfZXhpdCgpOwpAQCAtNTE3OSw2ICs0MTc2 LDY3IEBACiAJCSphZGRyID0gKCgqYWRkciArIFBEUk1BU0spICYgflBEUk1BU0spICsgc3Vw ZXJwYWdlX29mZnNldDsKIH0KIAordm9pZAorcG1hcF9zdXNwZW5kKCkKK3sKKwlwbWFwX3Qg cG1hcDsKKwlpbnQgaSwgcGRpciwgb2Zmc2V0OworCXZtX3BhZGRyX3QgcGRpcm1hOworCW1t dV91cGRhdGVfdCBtdVs0XTsKKworCS8qCisJICogV2UgbmVlZCB0byByZW1vdmUgdGhlIHJl Y3Vyc2l2ZSBtYXBwaW5nIHN0cnVjdHVyZSBmcm9tIGFsbAorCSAqIG91ciBwbWFwcyBzbyB0 aGF0IFhlbiBkb2Vzbid0IGdldCBjb25mdXNlZCB3aGVuIGl0IHJlc3RvcmVzCisJICogdGhl IHBhZ2UgdGFibGVzLiBUaGUgcmVjdXJzaXZlIG1hcCBsaXZlcyBhdCBwYWdlIGRpcmVjdG9y eQorCSAqIGluZGV4IFBURFBUREkuIFdlIGFzc3VtZSB0aGF0IHRoZSBzdXNwZW5kIGNvZGUg aGFzIHN0b3BwZWQKKwkgKiB0aGUgb3RoZXIgdmNwdXMgKGlmIGFueSkuCisJICovCisJTElT VF9GT1JFQUNIKHBtYXAsICZhbGxwbWFwcywgcG1fbGlzdCkgeworCQlmb3IgKGkgPSAwOyBp IDwgNDsgaSsrKSB7CisJCQkvKgorCQkJICogRmlndXJlIG91dCB3aGljaCBwYWdlIGRpcmVj dG9yeSAoTDIpIHBhZ2UKKwkJCSAqIGNvbnRhaW5zIHRoaXMgYml0IG9mIHRoZSByZWN1cnNp dmUgbWFwIGFuZAorCQkJICogdGhlIG9mZnNldCB3aXRoaW4gdGhhdCBwYWdlIG9mIHRoZSBt YXAKKwkJCSAqIGVudHJ5CisJCQkgKi8KKwkJCXBkaXIgPSAoUFREUFRESSArIGkpIC8gTlBE RVBHOworCQkJb2Zmc2V0ID0gKFBURFBUREkgKyBpKSAlIE5QREVQRzsKKwkJCXBkaXJtYSA9 IHBtYXAtPnBtX3BkcHRbcGRpcl0gJiBQR19GUkFNRTsKKwkJCW11W2ldLnB0ciA9IHBkaXJt YSArIG9mZnNldCAqIHNpemVvZihwZF9lbnRyeV90KTsKKwkJCW11W2ldLnZhbCA9IDA7CisJ CX0KKwkJSFlQRVJWSVNPUl9tbXVfdXBkYXRlKG11LCA0LCBOVUxMLCBET01JRF9TRUxGKTsK Kwl9Cit9CisKK3ZvaWQKK3BtYXBfcmVzdW1lKCkKK3sKKwlwbWFwX3QgcG1hcDsKKwlpbnQg aSwgcGRpciwgb2Zmc2V0OworCXZtX3BhZGRyX3QgcGRpcm1hOworCW1tdV91cGRhdGVfdCBt dVs0XTsKKworCS8qCisJICogUmVzdG9yZSB0aGUgcmVjdXJzaXZlIG1hcCB0aGF0IHdlIHJl bW92ZWQgb24gc3VzcGVuZC4KKwkgKi8KKwlMSVNUX0ZPUkVBQ0gocG1hcCwgJmFsbHBtYXBz LCBwbV9saXN0KSB7CisJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJCS8qCisJCQkg KiBGaWd1cmUgb3V0IHdoaWNoIHBhZ2UgZGlyZWN0b3J5IChMMikgcGFnZQorCQkJICogY29u dGFpbnMgdGhpcyBiaXQgb2YgdGhlIHJlY3Vyc2l2ZSBtYXAgYW5kCisJCQkgKiB0aGUgb2Zm c2V0IHdpdGhpbiB0aGF0IHBhZ2Ugb2YgdGhlIG1hcAorCQkJICogZW50cnkKKwkJCSAqLwor CQkJcGRpciA9IChQVERQVERJICsgaSkgLyBOUERFUEc7CisJCQlvZmZzZXQgPSAoUFREUFRE SSArIGkpICUgTlBERVBHOworCQkJcGRpcm1hID0gcG1hcC0+cG1fcGRwdFtwZGlyXSAmIFBH X0ZSQU1FOworCQkJbXVbaV0ucHRyID0gcGRpcm1hICsgb2Zmc2V0ICogc2l6ZW9mKHBkX2Vu dHJ5X3QpOworCQkJbXVbaV0udmFsID0gKHBtYXAtPnBtX3BkcHRbaV0gJiBQR19GUkFNRSkg fCBQR19WOworCQl9CisJCUhZUEVSVklTT1JfbW11X3VwZGF0ZShtdSwgNCwgTlVMTCwgRE9N SURfU0VMRik7CisJfQorfQogCiAjaWYgZGVmaW5lZChQTUFQX0RFQlVHKQogcG1hcF9waWRf ZHVtcChpbnQgcGlkKQpAQCAtNTIxOCw3ICs0Mjc2LDcgQEAKIAkJCQkJCWlmIChwdGUgJiYg cG1hcF9wdGVfdihwdGUpKSB7CiAJCQkJCQkJcHRfZW50cnlfdCBwYTsKIAkJCQkJCQl2bV9w YWdlX3QgbTsKLQkJCQkJCQlwYSA9ICpwdGU7CisJCQkJCQkJcGEgPSBQVF9HRVQocHRlKTsK IAkJCQkJCQltID0gUEhZU19UT19WTV9QQUdFKHBhICYgUEdfRlJBTUUpOwogCQkJCQkJCXBy aW50ZigidmE6IDB4JXgsIHB0OiAweCV4LCBoOiAlZCwgdzogJWQsIGY6IDB4JXgiLAogCQkJ CQkJCQl2YSwgcGEsIG0tPmhvbGRfY291bnQsIG0tPndpcmVfY291bnQsIG0tPmZsYWdzKTsK --------------010503070403030001090606-- From owner-freebsd-xen@FreeBSD.ORG Fri Dec 23 18:34:28 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 11E5B106564A for ; Fri, 23 Dec 2011 18:34:28 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout2-b.corp.bf1.yahoo.com (mrout2-b.corp.bf1.yahoo.com [98.139.253.105]) by mx1.freebsd.org (Postfix) with ESMTP id C97098FC0A for ; Fri, 23 Dec 2011 18:34:27 +0000 (UTC) Received: from [127.0.0.1] (proxy6.corp.yahoo.com [216.145.48.19]) by mrout2-b.corp.bf1.yahoo.com (8.14.4/8.14.4/y.out) with ESMTP id pBNIYHUE022861; Fri, 23 Dec 2011 10:34:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yahoo-inc.com; s=cobra; t=1324665257; bh=SGlgawWDBWoyS0OP9ScrdAnsTaiewdXM7BYchOsPDbw=; h=Subject:From:To:Cc:In-Reply-To:References:Content-Type:Date: Message-ID:Mime-Version:Content-Transfer-Encoding; b=tCxbftscB9Rik4BllTvSWqMz/5Er9T95n1yVzyF1tRsMduTc94vWMVtXhXkhhObrZ SBXOBwWE2VdKLBgzCTJqfexqeai7I/hw4roivj+tdOX8m/DUrkzbkwb8X6YAO5XCXD 632VLM1Dm38V/melGx31hmGd+IjtO5e/8gvZW464= From: Sean Bruno To: Alan Cox In-Reply-To: <4EF245D1.2050503@rice.edu> References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <4EF0EC1A.4010604@freebsd.org> <1324412718.12783.10.camel@hitfishpass-lx.corp.yahoo.com> <4EF245D1.2050503@rice.edu> Content-Type: text/plain; charset="UTF-8" Date: Fri, 23 Dec 2011 10:34:17 -0800 Message-ID: <1324665257.17645.0.camel@hitfishpass-lx.corp.yahoo.com> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Dec 2011 18:34:28 -0000 On Wed, 2011-12-21 at 12:47 -0800, Alan Cox wrote: > Can you please try the attached patch? I'm trying to reduce the number > of differences between the native and Xen pmap implementations. > > Alan > I will test this today, this should apply against 9 and -current ? Sean From owner-freebsd-xen@FreeBSD.ORG Fri Dec 23 22:26:37 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C7FA6106566B for ; Fri, 23 Dec 2011 22:26:37 +0000 (UTC) (envelope-from seanbru@yahoo-inc.com) Received: from mrout2.yahoo.com (mrout2.yahoo.com [216.145.54.172]) by mx1.freebsd.org (Postfix) with ESMTP id A98BE8FC13 for ; Fri, 23 Dec 2011 22:26:37 +0000 (UTC) Received: from [127.0.0.1] (proxy6.corp.yahoo.com [216.145.48.19]) by mrout2.yahoo.com (8.14.4/8.14.4/y.out) with ESMTP id pBNMPvXd001359; Fri, 23 Dec 2011 14:25:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yahoo-inc.com; s=cobra; t=1324679158; bh=Rwmq7lEEvLtnVGybRd4Adx74oJwBvj8aPHn/1Qs9Ml4=; h=Subject:From:To:Cc:In-Reply-To:References:Content-Type:Date: Message-ID:Mime-Version:Content-Transfer-Encoding; b=co5fkZDMP62UcvHPazjkH98Q34CYe+f0+ygt2ZJ6cQa2VQN/Ey+ipvL1TkSq/qReq A9H8f0ZNzbmUbaFXp3LZ1ttY0imhI5Z+Sa/NjGKzU9nTtYwZwTAuwTyYa9pSSjCihM A67TMZYveojxMCay439yapSZP/1yCBlnP4TqDxEk= From: Sean Bruno To: Alan Cox In-Reply-To: <4EF245D1.2050503@rice.edu> References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <4EF0EC1A.4010604@freebsd.org> <1324412718.12783.10.camel@hitfishpass-lx.corp.yahoo.com> <4EF245D1.2050503@rice.edu> Content-Type: text/plain; charset="UTF-8" Date: Fri, 23 Dec 2011 14:25:57 -0800 Message-ID: <1324679157.17645.6.camel@hitfishpass-lx.corp.yahoo.com> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 (2.32.3-1.fc14) Content-Transfer-Encoding: 7bit Cc: "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Dec 2011 22:26:37 -0000 On Wed, 2011-12-21 at 12:47 -0800, Alan Cox wrote: > Can you please try the attached patch? I'm trying to reduce the number > of differences between the native and Xen pmap implementations. > > Alan > Without really looking at the output, I note that this didn't apply cleanly against -head ... can you regenerate it? Sean Patching file i386/xen/pmap.c using Plan A... Reversed (or previously applied) patch detected! Assume -R? [y] Hunk #1 succeeded at 5. Hunk #2 succeeded at 75. Hunk #3 succeeded at 136 (offset -2 lines). Hunk #4 succeeded at 152 (offset -2 lines). Hunk #5 succeeded at 160 (offset -2 lines). Hunk #6 succeeded at 177 (offset -2 lines). Hunk #7 succeeded at 192 (offset -2 lines). Hunk #8 failed at 206. Hunk #9 succeeded at 251 (offset -2 lines). Hunk #10 failed at 284. Hunk #11 failed at 333. Hunk #12 succeeded at 365 with fuzz 2 (offset 13 lines). Hunk #13 succeeded at 407 (offset 18 lines). Hunk #14 succeeded at 437 (offset 13 lines). Hunk #15 succeeded at 462 with fuzz 1 (offset 18 lines). Hunk #16 succeeded at 490 (offset 13 lines). Hunk #17 succeeded at 509 (offset 18 lines). Hunk #18 succeeded at 512 (offset 13 lines). Hunk #19 succeeded at 656 (offset 18 lines). Hunk #20 succeeded at 675 (offset 13 lines). Hunk #21 succeeded at 731 (offset 18 lines). Hunk #22 succeeded at 754 (offset 13 lines). Hunk #23 failed at 813. Hunk #24 succeeded at 833 (offset 6 lines). Hunk #25 succeeded at 950 (offset 13 lines). Hunk #26 succeeded at 958 (offset 6 lines). Hunk #27 succeeded at 974 (offset 13 lines). Hunk #28 succeeded at 984 (offset 6 lines). Hunk #29 succeeded at 999 (offset 13 lines). Hunk #30 succeeded at 1018 (offset 6 lines). Hunk #31 succeeded at 1125 (offset 13 lines). Hunk #32 succeeded at 1128 (offset 6 lines). Hunk #33 succeeded at 1154 with fuzz 1 (offset 13 lines). Hunk #34 succeeded at 1230 with fuzz 2 (offset -12 lines). Hunk #35 succeeded at 1272 (offset 14 lines). Hunk #36 succeeded at 1255 (offset -12 lines). Hunk #37 succeeded at 1310 (offset 14 lines). Hunk #38 failed at 1342. Hunk #39 succeeded at 1344 (offset -12 lines). Hunk #40 succeeded at 1378 (offset 14 lines). Hunk #41 succeeded at 1364 (offset -12 lines). Hunk #42 failed at 1391. Hunk #43 succeeded at 1442 (offset 9 lines). Hunk #44 succeeded at 1440 (offset -12 lines). Hunk #45 succeeded at 1514 with fuzz 1 (offset 9 lines). Hunk #46 succeeded at 1524 (offset -11 lines). Hunk #47 succeeded at 1563 (offset 9 lines). Hunk #48 succeeded at 1660 (offset -11 lines). Hunk #49 succeeded at 1704 with fuzz 2 (offset 9 lines). Hunk #50 failed at 1721. Hunk #51 succeeded at 1715 (offset -19 lines). Hunk #52 succeeded at 1760 (offset 12 lines). Hunk #53 succeeded at 1744 (offset -19 lines). Hunk #54 failed at 1784. Hunk #55 succeeded at 1837 with fuzz 2 (offset 11 lines). Hunk #56 succeeded at 1842 with fuzz 1 (offset -20 lines). Hunk #57 failed at 1853. Hunk #58 succeeded at 1899 (offset 11 lines). Hunk #59 failed at 2044. Hunk #60 succeeded at 2027 (offset -21 lines). Hunk #61 failed at 2074. Hunk #62 failed at 2104. Hunk #63 succeeded at 2217 (offset 12 lines). Hunk #64 succeeded at 2204 (offset -21 lines). Hunk #65 succeeded at 2257 (offset 12 lines). Hunk #66 succeeded at 2352 (offset -21 lines). Hunk #67 succeeded at 2411 (offset 12 lines). Hunk #68 succeeded at 2457 (offset -21 lines). Hunk #69 succeeded at 2537 (offset 12 lines). Hunk #70 succeeded at 2749 (offset -21 lines). Hunk #71 succeeded at 2795 (offset 12 lines). Hunk #72 succeeded at 2780 (offset -21 lines). Hunk #73 failed at 2804. Hunk #74 succeeded at 2867 (offset 12 lines). Hunk #75 succeeded at 2853 (offset -21 lines). Hunk #76 succeeded at 2917 (offset 12 lines). Hunk #77 succeeded at 2897 (offset -21 lines). Hunk #78 succeeded at 2955 (offset 12 lines). Hunk #79 failed at 2968. Hunk #80 succeeded at 2971 (offset -20 lines). Hunk #81 succeeded at 3061 (offset 12 lines). Hunk #82 succeeded at 3053 with fuzz 1 (offset -20 lines). Hunk #83 succeeded at 3102 (offset 12 lines). Hunk #84 succeeded at 3110 (offset -20 lines). Hunk #85 succeeded at 3153 (offset 12 lines). Hunk #86 succeeded at 3136 (offset -20 lines). Hunk #87 succeeded at 3330 (offset 12 lines). Hunk #88 succeeded at 3330 (offset -21 lines). Hunk #89 succeeded at 3411 (offset 12 lines). Hunk #90 succeeded at 3412 (offset -21 lines). Hunk #91 succeeded at 3462 (offset 12 lines). Hunk #92 succeeded at 3458 (offset -21 lines). Hunk #93 failed at 3552. Hunk #94 succeeded at 3597 (offset 13 lines). Hunk #95 failed at 3624. Hunk #96 failed at 3652. Hunk #97 succeeded at 3630 (offset -21 lines). Hunk #98 succeeded at 3692 (offset 13 lines). Hunk #99 succeeded at 3689 (offset -21 lines). Hunk #100 failed at 3702. Hunk #101 succeeded at 3747 (offset 13 lines). Hunk #102 succeeded at 3797 (offset -27 lines). Hunk #103 succeeded at 3901 (offset 13 lines). Hunk #104 succeeded at 3883 (offset -27 lines). Hunk #105 succeeded at 3966 (offset 13 lines). Hunk #106 failed at 3993. Hunk #107 succeeded at 3987 (offset -29 lines). Hunk #108 succeeded at 4054 with fuzz 2 (offset 13 lines). Hunk #109 succeeded at 4037 with fuzz 2 (offset -29 lines). Hunk #110 succeeded at 4105 (offset 13 lines). Hunk #111 succeeded at 4086 (offset -29 lines). Hunk #112 succeeded at 4146 (offset 13 lines). Hunk #113 succeeded at 4129 (offset -29 lines). Hunk #114 succeeded at 4206 (offset 13 lines). Hunk #115 succeeded at 4197 (offset -29 lines). Hunk #116 succeeded at 4267 (offset 13 lines). Hunk #117 succeeded at 4257 (offset -29 lines). Hunk #118 succeeded at 4360 (offset 13 lines). Hunk #119 succeeded at 4334 (offset -29 lines). Hunk #120 succeeded at 4389 (offset 13 lines). Hunk #121 succeeded at 4390 (offset -29 lines). Hunk #122 succeeded at 4494 (offset 13 lines). Hunk #123 succeeded at 4483 (offset -29 lines). Hunk #124 succeeded at 4560 (offset 13 lines). Hunk #125 succeeded at 4537 (offset -29 lines). Hunk #126 succeeded at 4630 (offset 13 lines). Hunk #127 failed at 4644. Hunk #128 succeeded at 4615 (offset -28 lines). Hunk #129 succeeded at 4678 with fuzz 2 (offset 13 lines). Hunk #130 succeeded at 4687 (offset -28 lines). Hunk #131 succeeded at 4745 (offset 13 lines). Hunk #132 succeeded at 4751 (offset -28 lines). Hunk #133 succeeded at 4805 (offset 13 lines). Hunk #134 succeeded at 4852 (offset -28 lines). Hunk #135 succeeded at 4935 with fuzz 2 (offset 5 lines). Hunk #136 failed at 4950. Hunk #137 succeeded at 4924 with fuzz 1 (offset -42 lines). Hunk #138 failed at 5030. Hunk #139 succeeded at 5114 (offset 5 lines). Hunk #140 succeeded at 5103 (offset -42 lines). Hunk #141 succeeded at 5184 (offset 5 lines). Hunk #142 succeeded at 5176 (offset -42 lines). 22 out of 142 hunks failed--saving rejects to i386/xen/pmap.c.rej done From owner-freebsd-xen@FreeBSD.ORG Sat Dec 24 08:53:59 2011 Return-Path: Delivered-To: xen@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 42D0D106566C for ; Sat, 24 Dec 2011 08:53:59 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-vx0-f182.google.com (mail-vx0-f182.google.com [209.85.220.182]) by mx1.freebsd.org (Postfix) with ESMTP id EB5168FC0C for ; Sat, 24 Dec 2011 08:53:58 +0000 (UTC) Received: by vcbfk1 with SMTP id fk1so13701552vcb.13 for ; Sat, 24 Dec 2011 00:53:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=fcyjOWvfEOdZokc/3HZrwkW1RXr22uJGVdFPjaqYMXQ=; b=CaMG5lxO/ADo9q1onFhUXANBFBvpotkwZqrqAaofw0e/RUmL+vyb0AC/c0zUPrrYls xoY05PgHUNGoj4yyG4P/40adVsbYdHzPO9sn8p9YjmSZETS2+EWoeASVL8XDHr6H8PIl ObLwhi/WxPY71FCu2fE6WvfWZBe4tJiy8K8DY= MIME-Version: 1.0 Received: by 10.52.180.98 with SMTP id dn2mr373311vdc.83.1324715398960; Sat, 24 Dec 2011 00:29:58 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.52.36.5 with HTTP; Sat, 24 Dec 2011 00:29:58 -0800 (PST) In-Reply-To: <4EF245D1.2050503@rice.edu> References: <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <4EF0EC1A.4010604@freebsd.org> <1324412718.12783.10.camel@hitfishpass-lx.corp.yahoo.com> <4EF245D1.2050503@rice.edu> Date: Sat, 24 Dec 2011 00:29:58 -0800 X-Google-Sender-Auth: HDUfqzK0aZf5EoqG_HqQhQP6Ads Message-ID: From: Adrian Chadd To: Alan Cox Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Sean Bruno , "xen@freebsd.org" Subject: Re: PV i386 patch X-BeenThere: freebsd-xen@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion of the freebsd port to xen - implementation and usage List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Dec 2011 08:53:59 -0000 On 21 December 2011 12:47, Alan Cox wrote: > Can you please try the attached patch? =A0I'm trying to reduce the number= of > differences between the native and Xen pmap implementations. Hi, When I last tinkered with Xen, I noticed that it was _very_ easy to end up with FS corruption by just doing a whole lot of parallel software builds (in my case squid). This happened with single-CPU VMs too. I wonder if this would be fixed by your work.. Adrian