From owner-freebsd-virtualization@freebsd.org Mon Jan 15 08:59:43 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B372EEBAD3C for ; Mon, 15 Jan 2018 08:59:43 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from mxrelay.ysv.freebsd.org (mxrelay.ysv.freebsd.org [IPv6:2001:1900:2254:206a::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.ysv.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9805C3F9E for ; Mon, 15 Jan 2018 08:59:43 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.ysv.freebsd.org (Postfix) with ESMTPS id 8D762197BA for ; Mon, 15 Jan 2018 08:59:43 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id w0F8xhKW037109 for ; Mon, 15 Jan 2018 08:59:43 GMT (envelope-from bugzilla-noreply@freebsd.org) Received: (from www@localhost) by kenobi.freebsd.org (8.15.2/8.15.2/Submit) id w0F8xhf8037108 for freebsd-virtualization@FreeBSD.org; Mon, 15 Jan 2018 08:59:43 GMT (envelope-from bugzilla-noreply@freebsd.org) X-Authentication-Warning: kenobi.freebsd.org: www set sender to bugzilla-noreply@freebsd.org using -f From: bugzilla-noreply@freebsd.org To: freebsd-virtualization@FreeBSD.org Subject: [Bug 215972] Bhyve crash more then 1 cpu AMD Date: Mon, 15 Jan 2018 08:59:41 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 11.0-STABLE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: avg@FreeBSD.org X-Bugzilla-Status: Open X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-virtualization@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2018 08:59:43 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D215972 --- Comment #28 from Andriy Gapon --- And an alternative proposal: https://reviews.freebsd.org/D13828 --=20 You are receiving this mail because: You are the assignee for the bug.= From owner-freebsd-virtualization@freebsd.org Wed Jan 17 23:20:33 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A54B4EBEDAA for ; Wed, 17 Jan 2018 23:20:33 +0000 (UTC) (envelope-from lobo@bsd.com.br) Received: from mail-qt0-x231.google.com (mail-qt0-x231.google.com [IPv6:2607:f8b0:400d:c0d::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6141063B0D for ; Wed, 17 Jan 2018 23:20:33 +0000 (UTC) (envelope-from lobo@bsd.com.br) Received: by mail-qt0-x231.google.com with SMTP id c2so25913874qtn.9 for ; Wed, 17 Jan 2018 15:20:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsd.com.br; s=capeta; h=date:from:to:subject:message-id:organization:mime-version :content-transfer-encoding; bh=oJJzZTWoV65GJswDWqAT5sJEqklgnMTWDfwOuVTqcDA=; b=VymyIo7TJaywlQFKLHwseyd9rKJHOZCHixchdavlfC1Dkah+K+ybK3Qd3YChuQAF39 JyNmPBiAt/CTk8pOIskEELigOeAEcqWz/9M4+ruB81gU60FCIF77UbHDarUmn7K9SfMa 3aPvFSohBf/i7aeUrYwx69rNJ1NBoadS8O7tM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:organization :mime-version:content-transfer-encoding; bh=oJJzZTWoV65GJswDWqAT5sJEqklgnMTWDfwOuVTqcDA=; b=Qk8xg+xf7AZucEfm5S+osgLs4XAQ/fgODMSdJHVmBl171ozD9zqQIyHnN1VNqhySiN iGKz4PZ7k8LdJvbGum+Rx1cEd9bVDrLp5cdrwYKewEWl327AMpJUxKk574C1L7Qo3CqK 2Gz4UpLQ7URjINVSX1bgAVsnkfedTWqMYar5SIoxTp4YsZU+lJlEIzIfbxl8EGAoXh03 i/B/7mivbrgqOr1QteAdNBf5stClgeX7izJHTlfLOFh5ebz9KXn2pixfqH+9Dbdanl5m DJ5x4YveBZ6x/gTJ1O+KpnRh+mtEB9VoCTaJUJ9gkjBsTiIlHU2ZySSjoBZRgJetyEG/ 8GaQ== X-Gm-Message-State: AKwxytezauaFtpPgBS0H5CNLG51MVd9TivMhyJqKKzsXwF+MzpDGlpnF r1pMzK4ejFlLffzb8t7UvLBc0YCO X-Google-Smtp-Source: ACJfBovyEqUN/z5AqYpM43hBqMhJ5evQ23z/sbpO5xuQAXBZF+1Z4E8ip/ZBP7y3O66NtIKtAzBx3g== X-Received: by 10.237.46.130 with SMTP id k2mr15478085qtd.85.1516231232388; Wed, 17 Jan 2018 15:20:32 -0800 (PST) Received: from Papi.lobos ([177.158.106.185]) by smtp.gmail.com with ESMTPSA id l1sm3767280qki.60.2018.01.17.15.20.31 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 17 Jan 2018 15:20:32 -0800 (PST) Date: Wed, 17 Jan 2018 20:22:50 -0300 From: Mario Lobo To: freebsd-virtualization@freebsd.org Subject: Bhyve passthrough problems Message-ID: <20180117202250.6ef90c6d@Papi.lobos> Organization: BSD X-Mailer: Claws Mail 3.15.1 (GTK+ 2.24.31; amd64-portbld-freebsd11.1) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2018 23:20:33 -0000 Hello; I'm trying to passthrough a firewire pci card to a windows 7 64 guest. Without passthrough, the vm boots with everything working normally. Here are my specs: uname -a: FreeBSD 11.1-STABLE #0 r328025M: Wed Jan 17 18:30:26 -03 2018 root@Papi.lobos:/usr/obj/usr/src/sys/LOBO amd64 x86info: x86info v1.31pre Found 8 identical CPUs Extended Family: 6 Extended Model: 0 Family: 15 Model: 2 Stepping: 0 CPU Model (x86info's best guess): AMD FX Series Processor (OR-C0) Processor name string (BIOS programmed): AMD FX-8320E Eight-Core Processor dmesg | grep ivhd ivhd0: on acpi0 ivhd0: Flag:3e ivhd0: max supported paging level:7 restricting to: 4 ivhd0: device supported range [0x0 - 0x4ff] ivhd0: device [0xa0 - 0xa0]config:d7 ivhd0: PCI cap 0x10b540f@0x40 feature:1 PCI card (already attached to ppt0) ppt0@pci0:4:7:0: class=0x0c0010 card=0x30441106 chip=0x30441106 rev=0xc0 hdr=0x00 vendor = 'VIA Technologies, Inc.' device = 'VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller' class = serial bus subclass = FireWire Starting the vm with VNC: bhyve -A -P -H -c 4 -S -s 0,amd_hostbridge -s 3,ahci-hd,/Vmachines/disk.img,sectorsize=512 -s 4,ahci-cd,/Extra/Isos/Windows/Windows_7/null_dvd.iso -s 7,passthru,4/7/0 -s 10,virtio-net,tap0 -s 11,fbuf,tcp=0.0.0.0:5900,,w=1600,h=900,wait -s 20,xhci,tablet -s 31,lpc -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -m 8G -H -w WIN-764 fbuf frame buffer base: 0xa42e00000 [sz 16777216] Assertion As soon as I try to connect, the VM aborts with: failed: (error == 0), function modify_bar_registration, file /usr/src/usr.sbin/bhyve/pci_emul.c, line 491. Abort trap Starting the vm without VNC: bhyve -A -H -P -c 4 -S -s 0,amd_hostbridge -s 3,ahci-hd,/Vmachines/disk.img,sectorsize=512 -s 4,ahci-cd,/Extra/Isos/Windows/Windows_7/null_dvd.iso -s 7,passthru,4/7/0 -s 10,virtio-net,tap0 -s 20,xhci,tablet -s 31,lpc -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -m 8G -H -w WIN-764 VM exits with: Assertion failed: (mr->name == memp->name), function unregister_mem, file /usr/src/usr.sbin/bhyve/mem.c, line 265. Abort trap Same thing happens without "-A -H -P" on bhyve command line. Would anybody have any suggestions on what else I could try? Thanks, -- Mario Lobo http://www.mallavoodoo.com.br FreeBSD since 2.2.8 [not Pro-Audio.... YET!!] "UNIX was not designed to stop you from doing stupid things, because that would also stop you from doing clever things." From owner-freebsd-virtualization@freebsd.org Thu Jan 18 08:58:21 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 404D1EBE8F1 for ; Thu, 18 Jan 2018 08:58:21 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from alto.onthenet.com.au (alto.OntheNet.com.au [203.13.68.12]) by mx1.freebsd.org (Postfix) with ESMTP id EE7A2813D6 for ; Thu, 18 Jan 2018 08:58:20 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from iredmail.onthenet.com.au (iredmail.onthenet.com.au [203.13.68.150]) by alto.onthenet.com.au (Postfix) with ESMTPS id C57D420B4BB4 for ; Thu, 18 Jan 2018 18:58:12 +1000 (AEST) Received: from localhost (iredmail.onthenet.com.au [127.0.0.1]) by iredmail.onthenet.com.au (Postfix) with ESMTP id C0023280AB0 for ; Thu, 18 Jan 2018 18:58:12 +1000 (AEST) X-Amavis-Modified: Mail body modified (using disclaimer) - iredmail.onthenet.com.au Received: from iredmail.onthenet.com.au ([127.0.0.1]) by localhost (iredmail.onthenet.com.au [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id jNWaX7UU-0zQ for ; Thu, 18 Jan 2018 18:58:12 +1000 (AEST) Received: from Peters-MacBook-Pro-2.local (c-67-180-92-13.hsd1.ca.comcast.net [67.180.92.13]) by iredmail.onthenet.com.au (Postfix) with ESMTPSA id 983632818D7; Thu, 18 Jan 2018 18:58:10 +1000 (AEST) Subject: Re: Bhyve passthrough problems To: Mario Lobo References: <20180117202250.6ef90c6d@Papi.lobos> Cc: freebsd-virtualization@freebsd.org From: Peter Grehan Message-ID: Date: Thu, 18 Jan 2018 00:58:08 -0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <20180117202250.6ef90c6d@Papi.lobos> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=KPZ08mNo c=1 sm=1 tr=0 a=A6CF0fG5TOl4vs6YHvqXgw==:117 a=5eVCmCvhg37cu/pjidAGzw==:17 a=IkcTkHD0fZMA:10 a=RgaUWeydRksA:10 a=F3yxotcADMa9Rns8wiMA:9 a=QEXdDO2ut3YA:10 wl=host:3 X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2018 08:58:21 -0000 Hi Mario, > I'm trying to passthrough a firewire pci card to a windows 7 64 guest. First, you'll need to verify if that card supports MSI or MSI-x since that is required by bhyve for passthru support. This can be seen with 'pciconf -lbc' on the FreeBSD host. > VM exits with: > > Assertion failed: (mr->name == memp->name), function > unregister_mem, file /usr/src/usr.sbin/bhyve/mem.c, line 265. > Abort trap This is bug in bhyve when running Windows with PCI devices that have more than 1 memory BAR (e.g. Intel igb ethernet devices), due to the order that Windows determines BAR sizes. I've been meaning to fix this for a long time so will try and get to it. later, Peter. From owner-freebsd-virtualization@freebsd.org Fri Jan 19 20:50:41 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 30F7AEC7990 for ; Fri, 19 Jan 2018 20:50:41 +0000 (UTC) (envelope-from lobo@bsd.com.br) Received: from mail-qt0-x230.google.com (mail-qt0-x230.google.com [IPv6:2607:f8b0:400d:c0d::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DCDA2749C7 for ; Fri, 19 Jan 2018 20:50:40 +0000 (UTC) (envelope-from lobo@bsd.com.br) Received: by mail-qt0-x230.google.com with SMTP id l20so5686691qtj.11 for ; Fri, 19 Jan 2018 12:50:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsd.com.br; s=capeta; h=date:from:to:subject:message-id:in-reply-to:references:organization :mime-version:content-transfer-encoding; bh=p2m761f/m5/1UiAf7MLfv5NIDIt022IYIS3fYlaAmDs=; b=ExF+ZRN1GkxldfcJl6sA5+sc4HfVOzzySRjwPj7oeLRCD+wwyh9eq+/F3OMGe9HP12 5cChFHsn9CQRccJIH7GF4ZfvB9eKnKcSNEUPSl3q+e6WYdb9QUfPZugebFNdmareXkua roKwh1urHYy/wVGky+oPzTwKyrdHKjoQf/Vgg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:in-reply-to :references:organization:mime-version:content-transfer-encoding; bh=p2m761f/m5/1UiAf7MLfv5NIDIt022IYIS3fYlaAmDs=; b=P/g52w5oMdnwSbRmzePwb9yTUvIiwFhBKJhWGD/VQpcXLZU/tXqAo45SI8NtsVTUd4 ikJysqYvK9zNHGjCdU78k+whID34LN8/MmEa4yNuiIniBd6wsTrEsJTUj6pVEWcAjnVY UrMAaOQdx1AVn6Dn08DJHp+utLKVKXfSV9YFQCWIh947zoXF1fOPuw90lEoRY58x1Nxq ikXifjzvLUXrEpuE+ccOpt5dLCcci3RaiY97shEpUjZHatq/7N2a+/Rrsu+K65ypAZl0 WJdQ29HXbmJDNWhqezP+dQIJZnMKE9F+7wWttmdi0SVsrPyi4LAkSnu7UVXiM43E1AwR qTkw== X-Gm-Message-State: AKwxytfhs0A1lDV+Dz7waL3FMbnEjba3mOGp/sHJqdmS9Y13JsblUFEp xZ2c6tKYA6cVnAy0PD5BZvp4TFg2 X-Google-Smtp-Source: ACJfBosRmwkBBFerMbe+6re+M6TMVOtey6v/UlKq3erTlannaS8ipJqO8vA8mrIE+L/jJ/5ZRHmu5w== X-Received: by 10.55.204.134 with SMTP id n6mr52240156qkl.169.1516395039990; Fri, 19 Jan 2018 12:50:39 -0800 (PST) Received: from Papi.lobos (179.176.147.107.dynamic.adsl.gvt.net.br. [179.176.147.107]) by smtp.gmail.com with ESMTPSA id x6sm7017741qkg.19.2018.01.19.12.50.36 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 19 Jan 2018 12:50:39 -0800 (PST) Date: Fri, 19 Jan 2018 17:52:57 -0300 From: Mario Lobo To: freebsd-virtualization@freebsd.org Subject: Re: Bhyve passthrough problems (update) Message-ID: <20180119175257.3f29d9d6@Papi.lobos> In-Reply-To: References: <20180117202250.6ef90c6d@Papi.lobos> Organization: BSD X-Mailer: Claws Mail 3.15.1 (GTK+ 2.24.31; amd64-portbld-freebsd11.1) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2018 20:50:41 -0000 On Thu, 18 Jan 2018 00:58:08 -0800 Peter Grehan wrote: > Hi Mario, > > > I'm trying to passthrough a firewire pci card to a windows 7 64 > > guest. > > First, you'll need to verify if that card supports MSI or MSI-x > since that is required by bhyve for passthru support. This can be > seen with 'pciconf -lbc' on the FreeBSD host. > > > VM exits with: > > > > Assertion failed: (mr->name == memp->name), function > > unregister_mem, file /usr/src/usr.sbin/bhyve/mem.c, line 265. > > Abort trap > > This is bug in bhyve when running Windows with PCI devices that > have more than 1 memory BAR (e.g. Intel igb ethernet devices), due to > the order that Windows determines BAR sizes. I've been meaning to fix > this for a long time so will try and get to it. > > later, > > Peter. Hi there: Well, now, even without setting up passthrough, the VM doesn't start (which it did, before I svned up /usr/src). With vnc: bhyve -c 4 -s 0,amd_hostbridge -s 3,ahci-hd,/Vmachines/disk.img,sectorsize=512 -s 4,ahci-cd,/Extra/Isos/Windows/Windows_7/null_dvd.iso -s 10,virtio-net,tap0 -s 11,fbuf,tcp=0.0.0.0:5900,,w=1600,h=900,wait -s 20,xhci,tablet -s 31,lpc -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -m 4G -H -w WIN-764 fbuf frame buffer base: 0x942e00000 [sz 16777216] error: Assertion failed: (error == 0), function modify_bar_registration, file /usr/src/usr.sbin/bhyve/pci_emul.c, line 491. Abort trap Without vnc: bhyve -c 4 -s 0,amd_hostbridge -s 3,ahci-hd,/Vmachines/disk.img,sectorsize=512 -s 4,ahci-cd,/Extra/Isos/Windows/Windows_7/null_dvd.iso -s 10,virtio-net,tap0 -s 20,xhci,tablet -s 31,lpc -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd -m 4G -H -w WIN-764 error: Assertion failed: (mr->name == memp->name), function unregister_mem, file /usr/src/usr.sbin/bhyve/mem.c, line 265. Abort trap Revisions (/usr/src 11-STABLE): working: 321652 not working (current): 328163 -- Mario Lobo http://www.mallavoodoo.com.br FreeBSD since 2.2.8 [not Pro-Audio.... YET!!] "UNIX was not designed to stop you from doing stupid things, because that would also stop you from doing clever things." From owner-freebsd-virtualization@freebsd.org Sat Jan 20 12:21:50 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 98F88ECE0FC for ; Sat, 20 Jan 2018 12:21:50 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1180A76F66 for ; Sat, 20 Jan 2018 12:21:50 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 58BE81C502 for ; Sat, 20 Jan 2018 12:21:49 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id 57A7CBF08F; Sat, 20 Jan 2018 12:21:49 +0000 (UTC) Date: Sat, 20 Jan 2018 12:21:49 +0000 To: freebsd-virtualization@freebsd.org From: "sux2mfgj_gmail.com (Shunsuke Mie)" Reply-to: D13995+333+f248ba92bf0c9c79@reviews.freebsd.org Subject: [Differential] D13995: NVMe controller emulator for bhyve. Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , , Thread-Topic: D13995: NVMe controller emulator for bhyve. X-Herald-Rules: <95> X-Phabricator-Projects: <#bhyve> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk Thread-Index: ZGM1NGRjZmQzNjRiMjY5OGVhNjhmY2UxNzhj MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_03bd2db2ea9364bf79c571da2b2f20e4" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2018 12:21:50 -0000 --b1_03bd2db2ea9364bf79c571da2b2f20e4 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 c3V4Mm1mZ2pfZ21haWwuY29tIGNyZWF0ZWQgdGhpcyByZXZpc2lvbi4Kc3V4Mm1mZ2pfZ21haWwu Y29tIGFkZGVkIHJldmlld2VyczogZ3JlaGFuLCB0cmFzei4Kc3V4Mm1mZ2pfZ21haWwuY29tIGFk ZGVkIGEgcHJvamVjdDogYmh5dmUuCgpSRVZJU0lPTiBTVU1NQVJZCiAgVGhpcyBlbXVsYXRvciBp cyBpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gTlZNZSBzcGVjaWZpY2F0aW9uIDEuMCwgYW5kIGRp ZG4ndCBjb3ZlcmVkIGFsbC4gSG93ZXZlciwgSSB0ZXN0ZWQgdXNpbmcgYG5ld2ZzYCBhbmQgYG52 bWVjb250cm9sIHBlcmZgOyBUaGVzZSB3YXMgY2xlYXJlZC4gVGhlIHRlc3Qgd2FzIGV4ZWN1dGVk IG1hbnVhbGx5LgoKUkVWSVNJT04gREVUQUlMCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3Jn L0QxMzk5NQoKQUZGRUNURUQgRklMRVMKICBzeXMvZGV2L252bWUvbnZtZS5oCiAgdXNyLnNiaW4v Ymh5dmUvTWFrZWZpbGUKICB1c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44CiAgdXNyLnNiaW4vYmh5dmUv cGNpX252bWUuYwoKRU1BSUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5v cmcvc2V0dGluZ3MvcGFuZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBzdXgybWZnal9nbWFpbC5j b20sIGdyZWhhbiwgdHJhc3oKQ2M6IGZyZWVic2QtdmlydHVhbGl6YXRpb24tbGlzdCwgY2h1Y2sK --b1_03bd2db2ea9364bf79c571da2b2f20e4 Content-Type: text/x-patch; charset=utf-8; name="D13995.38245.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D13995.38245.patch" ZGlmZiAtLWdpdCBhL3Vzci5zYmluL2JoeXZlL3BjaV9udm1lLmMgYi91c3Iuc2Jpbi9iaHl2ZS9w Y2lfbnZtZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdXNyLnNi aW4vYmh5dmUvcGNpX252bWUuYwpAQCAtMCwwICsxLDEyNTcgQEAKKyNpbmNsdWRlIDxzdGRpby5o PgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0 ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNs dWRlIDxwdGhyZWFkLmg+CisKKyNpbmNsdWRlIDxtYWNoaW5lL3ZtbS5oPgorI2luY2x1ZGUgPHZt bWFwaS5oPgorCisjaW5jbHVkZSA8bnZtZS5oPgorCisjaW5jbHVkZSAicGNpX2VtdWwuaCIKKyNp bmNsdWRlICJibG9ja19pZi5oIgorI2luY2x1ZGUgImJoeXZlcnVuLmgiCisKKyNpZmRlZiBOVk1F X0RFQlVHCitzdGF0aWMgRklMRSogZGJnOworI2RlZmluZSBEUFJJTlRGKGZvcm1hdCwgYXJnLi4u KSAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg IGZwcmludGYoZGJnLCBmb3JtYXQsICMjYXJnKTsgXAorICAgICAgICBmZmx1c2goZGJnKTsgICAg ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorI2Vsc2UKKyNkZWZpbmUgRFBSSU5URihm b3JtYXQsIGFyZy4uLikKKyNlbmRpZgorCitlbnVtIG52bWVfY29udHJvbGxlcl9yZWdpc3Rlcl9v ZmZzZXRzIHsKKyAgICBOVk1FX0NSX0NBUF9MT1cgPSAweDAwLAorICAgIE5WTUVfQ1JfQ0FQX0hJ ID0gMHgwNCwKKyAgICBOVk1FX0NSX1ZTID0gMHgwOCwKKyAgICBOVk1FX0NSX0lOVE1TID0gMHgw YywKKyAgICBOVk1FX0NSX0lOVE1DID0gMHgxMCwKKyAgICBOVk1FX0NSX0NDID0gMHgxNCwKKyAg ICBOVk1FX0NSX0NTVFMgPSAweDFjLAorICAgIE5WTUVfQ1JfTlNTUiA9IDB4MjAsCisgICAgTlZN RV9DUl9BUUEgPSAweDI0LAorICAgIE5WTUVfQ1JfQVNRX0xPVyA9IDB4MjgsCisgICAgTlZNRV9D Ul9BU1FfSEkgPSAweDJjLAorICAgIE5WTUVfQ1JfQUNRX0xPVyA9IDB4MzAsCisgICAgTlZNRV9D Ul9BQ1FfSEkgPSAweDM0LAorICAgIC8vIHN1Ym1pc3Npb24gcXVldWUgMCB0YWlsIGRvb3JiZWxs IChhZG1pbikKKyAgICBOVk1FX0NSX0lPX1FVRVVFX0JBU0UgPSAweDEwMDAsCisgICAgLyoKKyAg ICAgKiAweDEwMDAgfiAweDEwMDMgIDogc3VibWlzc2lvbiBxdWV1ZSAwIGhlYWQgZG9vcmJlbGwo YWRtaW4pCisgICAgICogMHgxMDA0IH4gMHgxMDA3ICA6IGNvbXBsZXRpb24gcXVldWUgMCB0YWls IGRvb3JiZWxsKGFkbWluKQorICAgICAqIDB4MTAwOCB+IDB4MTAwYiAgOiBzdWJtaXNzaW9uIHF1 ZXVlIDEgaGVhZCBkb29yYmVsbAorICAgICAqIDB4MTAwYyB+IDB4MTAwZiAgOiBjb21wbGV0aW9u IHF1ZXVlIDEgdGFpbCBkb29yYmVsbAorICAgICAqLworICAgIE5WTUVfQ1JfQURNSU5fU1FfVEFJ TCA9IDB4MTAwMCwKKyAgICBOVk1FX0NSX0FETUlOX0NRX0hFQUQgPSAweDEwMDQsCisgICAgTlZN RV9DUl9TUV8xX1RBSUwgPSAweDEwMDgsCisgICAgTlZNRV9DUl9DUV8xX0hFQUQgPSAweDEwMGMs CisgICAgTlZNRV9DUl9TSVpFID0gMHgxMDEwLAorfTsKKworI2RlZmluZSBOVk1FX0lPX1NRX05V TSAxCisjZGVmaW5lIE5WTUVfSU9fQ1FfTlVNIDEKKworI2RlZmluZSBOVk1FX0lPX1NRU19TSVpF IChOVk1FX0lPX1NRX05VTSArIDEpCisjZGVmaW5lIE5WTUVfSU9fQ1FTX1NJWkUgKE5WTUVfSU9f Q1FfTlVNICsgMSkKKworZW51bSBudm1lX3BjaV9iYXIgeworICAgIE5WTUVfQkFSX0NSID0gMCwg Ly8gMCBhbmQgMQorICAgIE5WTUVfQkFSX1JTViA9IDMsIC8vIHJlc2VydmVkCisgICAgTlZNRV9C QVJfTVNJWCA9IDQsIC8vIDQgYW5kIDUKK307CisKKy8qCisgKiBOVk1FX0NSX0FETUlOX0NRX0hF QUQgYW5kIE5WTWUgSS9PIGNvbXBsZXRpb24gcXVldWVzCisgKi8KKyNkZWZpbmUgTlZNRV9DT01Q TEVUSU9OX1FVRVVFX05VTSAoTlZNRV9JT19DUV9OVU0gKyAxKQorCitlbnVtIG52bWVfY21kX2lk ZW50aWZ5X2NkdzEwIHsKKyAgICBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9DTlRJRCA9IDB4ZmZm ZjAwMDAsCisgICAgTlZNRV9DTURfSURFTlRJRllfQ0RXMTBfUlNWID0gMHgwMDAwZmYwMCwKKyAg ICBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9DTlMgPSAweDAwMDAwMGZmLAorfTsKKworZW51bSBu dm1lX2NtZF9pZGVudGlmeV9kYXRhIHsKKyAgICBOVk1FX0NNRF9JREVOVElGWV9DTlNfTkFNRVNQ QUNFID0gMHgwLAorICAgIE5WTUVfQ01EX0lERU5USUZZX0NOU19DT05UUk9MTEVSID0gMHgxLAor fTsKKworZW51bSBudm1lX2NjX2JpdHMgeworICAgIE5WTUVfQ0NfRU4gPSAweDAwMDAwMDAxLAor ICAgIE5WTUVfQ0NfUlNWMCA9IDB4MDAwMDAwMGUsCisgICAgTlZNRV9DQ19DQ1MgPSAweDAwMDAw MDcwLAorICAgIE5WTUVfQ0NfTVBTID0gMHgwMDAwMDc4MCwKKyAgICBOVk1FX0NDX0FNUyA9IDB4 MDAwMDM4MDAsCisgICAgTlZNRV9DQ19TSE4gPSAweDAwMDBjMDAwLAorICAgIE5WTUVfQ0NfSU9T UUVTID0gMHgwMDBmMDAwMCwKKyAgICBOVk1FX0NDX0lPQ1FFUyA9IDB4MDBmMDAwMDAsCisgICAg TlZNRV9DQ19SU1YxID0gMHhmZjAwMDAwMCwKK307CisKK3N0cnVjdCBudm1lX2ZlYXR1cmVzIHsK KyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQzMl90IHJhdzsKKyAgICAgICAgc3RydWN0IHsKKyAg ICAgICAgICAgIHVpbnQ4X3QgYWIgOiAyOworICAgICAgICAgICAgdWludDhfdCByZXNlcnZlZCA6 IDU7CisgICAgICAgICAgICB1aW50OF90IGxwdyA6IDg7CisgICAgICAgICAgICB1aW50OF90IG1w dyA6IDg7CisgICAgICAgICAgICB1aW50OF90IGhwdyA6IDg7CisgICAgICAgIH0gX19wYWNrZWQg Yml0czsKKyAgICB9IF9fcGFja2VkIGFyYml0cmF0aW9uOworCisgICAgdW5pb24geworICAgICAg ICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHBz IDogNTsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjc7CisgICAgICAgIH0gX19w YWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHBvd2VyX21hbmFnZW1lbnQ7CisKKyAgICB1bmlv biB7CisgICAgICAgIHVpbnQzMl90IHJhdzsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg IHVpbnQ4X3QgbnVtIDogNjsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjY7Cisg ICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGxiYV9yYW5nZV90eXBlOwor CisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7Cisg ICAgICAgICAgICB1aW50MTZfdCBvdmVyOworICAgICAgICAgICAgdWludDE2X3QgdW5kZXI7Cisg ICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHRlbXBhcnR1cmVfdGhyZXNo b2xkOworCisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVj dCB7CisgICAgICAgICAgICB1aW50MTZfdCB0bGVyOworICAgICAgICAgICAgdWludDE2X3QgcmVz ZXJ2ZWQ7CisgICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGVycm9yX3Jl Y292ZXJ5OworCisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0 cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHdjZSA6IDE7CisgICAgICAgICAgICB1aW50MzJf dCByZXNlcnZlZCA6IDMxOworICAgICAgICB9IF9fcGFja2VkIGJpdHM7CisgICAgfSBfX3BhY2tl ZCB2b2xhdGlsZV93cml0ZV9jYWNoZTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3Qg cmF3OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgbmNxciA6IDE2Owor ICAgICAgICAgICAgdWludDE2X3QgbnNxciA6IDE2OworICAgICAgICB9IF9fcGFja2VkIGJpdHM7 CisgICAgfSBfX3BhY2tlZCBudW1fb2ZfcXVldWVzOworCisgICAgdW5pb24geworICAgICAgICB1 aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHRociA6 IDg7CisgICAgICAgICAgICB1aW50OF90IHRpbWUgOiA4OworICAgICAgICAgICAgdWludDE2X3Qg cmVzZXJ2ZWQgOiAxNjsKKyAgICAgICAgfSBfX3BhY2tlZCBiaXRzOworICAgIH0gX19wYWNrZWQg aW50ZXJydXB0X2NvYWxzY2luZzsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3QgcmF3 OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgaXY7CisgICAgICAgICAg ICB1aW50OF90IGNkIDogMTsKKyAgICAgICAgICAgIHVpbnQxNl90IHJlc2VydmVkIDogMTU7Cisg ICAgICAgIH0gX19wYWNrZWQgYml0czsKKworCisgICAgfSBfX3BhY2tlZCBpbnRlcnJ1cHRfdmVj dG9yX2NvbmZpZzsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3QgcmF3OworICAgICAg ICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBkbiA6IDE7CisgICAgICAgICAgICB1aW50 MzJfdCByZXNlcnZlZCA6IDMxOworICAgICAgICB9IF9fcGFja2VkIGJpdHM7CisgICAgfSBfX3Bh Y2tlZCB3cml0ZV9hdG9taWNpdHk7CisKKyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQzMl90IHJh dzsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQxNl90IHNtYXJ0IDogODsKKyAg ICAgICAgICAgIHVpbnQxNl90IG5zX2F0dHJfbm90aSA6IDE7CisgICAgICAgICAgICB1aW50MTZf dCBmd19hY3Rfbm90aSA6IDE7CisgICAgICAgICAgICB1aW50MTZfdCB0ZWxlX2xvZ19ub3RpIDog MTsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjE7CisgICAgICAgIH0gX19wYWNr ZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGFzeW5jX2V2ZW50X2NvbmZpZzsKKworICAgIHVuaW9u IHsKKyAgICAgICAgdWludDMyX3QgcmF3OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg dWludDhfdCBwYnNsYzsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjQ7CisgICAg ICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHNvZnR3YXJlX3Byb2dyZXNzX21h cmtlcjsKKworfTsKKworc3RydWN0IG52bWVfY29tcGxldGlvbl9xdWV1ZV9pbmZvIHsKKyAgICB1 aW50cHRyX3QgYmFzZV9hZGRyOworICAgIHVpbnQxNl90IHNpemU7CisgICAgdWludDE2X3QgdGFp bDsKKyAgICB1aW50MTZfdCBxaWQ7CisgICAgdWludDE2X3QgaW50ZXJydXB0X3ZlY3RvcjsKKyAg ICBwdGhyZWFkX211dGV4X3QgbXR4OworfTsKKworc3RydWN0IHBjaV9udm1lX3NvZnRjOworLy8g aW8gcmVxdWVzdCB0byBibG9ja19pZi4KK3N0cnVjdCBudm1lX2lvcmVxIHsKKyAgICBzdHJ1Y3Qg YmxvY2tpZl9yZXEgaW9fcmVxOworICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb24gY29tcGxldGlv bl9lbnRyeTsKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uX3F1ZXVlX2luZm8qIGNxX2luZm87 CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9xdWV1ZV9pbmZvKiBzcV9pbmZvOworICAgIHN0 cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2M7CisgICAgU1RBSUxRX0VOVFJZKG52bWVfaW9yZXEpIGlv X2ZsaXN0OworICAgIFRBSUxRX0VOVFJZKG52bWVfaW9yZXEpIGlvX2JsaXN0OworfTsKKworc3Ry dWN0IG52bWVfc3VibWlzc2lvbl9xdWV1ZV9pbmZvIHsKKyAgICB1aW50cHRyX3QgYmFzZV9hZGRy OworICAgIHVpbnQxNl90IHNpemU7CisgICAgdWludDE2X3QgcWlkOworICAgIHVpbnQxNl90IGNv bXBsZXRpb25fcWlkOworICAgIHN0cnVjdCBudm1lX2lvcmVxKiBpb3JlcTsKKyAgICBTVEFJTFFf SEVBRChudm1lX2ZoZWFkLCBudm1lX2lvcmVxKSBpb2ZoZDsKKyAgICBUQUlMUV9IRUFEKG52bWVf YmhlYWQsIG52bWVfaW9yZXEpIGlvYmhkOworfTsKKworc3RydWN0IHBjaV9udm1lX3NvZnRjIHsK KyAgICBzdHJ1Y3QgbnZtZV9yZWdpc3RlcnMgcmVnczsKKyAgICBzdHJ1Y3QgbnZtZV9mZWF0dXJl cyBmZWF0dXJlczsKKyAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpOworICAgIHVpbnQxNl90IGNv bXBsZXRpb25fcXVldWVfaGVhZDsKKyAgICB1aW50MTZfdCBzdWJtaXNzaW9uX3F1ZXVlX3RhaWw7 CisgICAgdWludHB0cl90IGFzcV9iYXNlOworICAgIHVpbnRwdHJfdCBhY3FfYmFzZTsKKyAgICBz dHJ1Y3QgbnZtZV9jb250cm9sbGVyX2RhdGEgY29udHJvbGxlcl9kYXRhOworICAgIHN0cnVjdCBu dm1lX25hbWVzcGFjZV9kYXRhIG5hbWVzcGFjZV9kYXRhOworICAgIHN0cnVjdCBudm1lX2NvbXBs ZXRpb25fcXVldWVfaW5mbyogY3FzX2luZm87CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9x dWV1ZV9pbmZvKiBzcXNfaW5mbzsKKyAgICBzdHJ1Y3QgYmxvY2tpZl9jdHh0KiBiY3R4OworfTsK Kworc3RhdGljIHZvaWQgcGNpX252bWVfcmVzZXQoc3RydWN0IHBjaV9udm1lX3NvZnRjKiBzYykK K3sKKyAgICAvKgorICAgICAqIENvbnRyb2xsZXIgUmVnaXN0ZXIgdmFsdWVzIGFyZSBhY2NvcmRp bmcgdG8gTlZNZSBzcGVjaWZpY2F0aW9uIDEuMGUuCisgICAgICovCisKKyAgICAvKgorICAgICAq IENvbnRyb2xsZXIgQ2FwYWJpbGl0ZXMKKyAgICAgKi8KKyAgICAvLyBNYXhpbXVtIHF1ZXVlIChJ L08gc3VibWlzc2lvbiBhbmQgY29tcGxldGlvbiBxdWV1ZSkgZW50cmllcyBzdXBwb3J0ZWQgYnkg bnZtZSBjb250cm9sbGVyCisgICAgc2MtPnJlZ3MuY2FwX2xvLmJpdHMubXFlcyA9IDB4MTA7CisK KyAgICAvLyBDb250aWd1b3VzIFF1ZXVlcyBSZXF1aXJlZAorICAgIHNjLT5yZWdzLmNhcF9sby5i aXRzLmNxciA9IDE7CisgICAgc2MtPnJlZ3MuY2FwX2xvLmJpdHMuYW1zID0gMDsKKyAgICBzYy0+ cmVncy5jYXBfbG8uYml0cy5yZXNlcnZlZDEgPSAwOworICAgIHNjLT5yZWdzLmNhcF9sby5iaXRz LnRvID0gMTA7CisKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5kc3RyZCA9IDA7CisgICAgc2Mt PnJlZ3MuY2FwX2hpLmJpdHMucmVzZXJ2ZWQzID0gMDsKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0 cy5jc3NfbnZtID0gMDsKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5jc3NfcmVzZXJ2ZWQgPSAw OworICAgIHNjLT5yZWdzLmNhcF9oaS5iaXRzLnJlc2VydmVkMiA9IDA7CisgICAgLyoKKyAgICAg KiBNUFNNSU4gYW5kIE1QU01BWCAKKyAgICAgKiAgaW5kaWNhdGUgdGhlIG1pbmltdW0gYW5kIG1h eGltdW0gaG9zdCBtZW1vcnkgcGFnZSBzaXplCisgICAgICogICgyIF4gKDEyICsgTVBTTUFYIG9y IE1QU01JTikpCisgICAgICovCisgICAgc2MtPnJlZ3MuY2FwX2hpLmJpdHMubXBzbWluID0gMDsK KyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5tcHNtYXggPSAwOworICAgIHNjLT5yZWdzLmNhcF9o aS5iaXRzLnJlc2VydmVkMSA9IDA7CisKKyAgICAvKgorICAgICAqIFZlcnNpb24gb2YgTlZNIGV4 cHJlc3Mgc3BlY2lmaWNhdGlvbi4KKyAgICAgKi8gCisgICAgLy8gaW4gdGhpcyBjYXNlLCB0aGUg dmVyc2lvbiBpcyAxLjAKKyAgICB1aW50MzJfdCB2ZXJzaW9uID0gKDB4MDAwMSA8PCAxNikgfCAw eDAwMDA7CisgICAgc2MtPnJlZ3MudnMgPSB2ZXJzaW9uOworCisgICAgLy8gSW50ZXJydXB0IE1h c2sgU2V0CisgICAgc2MtPnJlZ3MuaW50bXMgPSAwOworICAgIAorICAgIC8vIEludGVycnVwdCBN YXNrIGNsZWFyCisgICAgc2MtPnJlZ3MuaW50bWMgPSAwOworCisgICAgc2MtPnJlZ3MuY2MucmF3 ID0gMDsKKworICAgIHNjLT5yZWdzLmNzdHMucmF3ID0gMDsKKworICAgIHNjLT5jb21wbGV0aW9u X3F1ZXVlX2hlYWQgPSAwOworICAgIHNjLT5hc3FfYmFzZSA9IDA7CisgICAgc2MtPmFjcV9iYXNl ID0gMDsKK30KKworc3RhdGljIHZvaWQgbnZtZV9pbml0aWFsaXplX2ZlYXR1cmUoc3RydWN0IHBj aV9udm1lX3NvZnRjKiBzYykKK3sKKyAgICBzYy0+ZmVhdHVyZXMuYXJiaXRyYXRpb24ucmF3ID0g MDsKKworICAgIHNjLT5mZWF0dXJlcy50ZW1wYXJ0dXJlX3RocmVzaG9sZC5iaXRzLm92ZXIgPSAw eGZmZmY7CisgICAgc2MtPmZlYXR1cmVzLnRlbXBhcnR1cmVfdGhyZXNob2xkLmJpdHMudW5kZXIg PSAweDAwMDA7CisKKyAgICBzYy0+ZmVhdHVyZXMucG93ZXJfbWFuYWdlbWVudC5yYXcgPSAwOwor CisgICAgc2MtPmZlYXR1cmVzLmVycm9yX3JlY292ZXJ5LnJhdyA9IDA7CisgICAgCisgICAgc2Mt PmZlYXR1cmVzLm51bV9vZl9xdWV1ZXMucmF3ID0gMDsKKworICAgIHNjLT5mZWF0dXJlcy5pbnRl cnJ1cHRfY29hbHNjaW5nLnJhdyA9IDA7CisKKyAgICBzYy0+ZmVhdHVyZXMuaW50ZXJydXB0X3Zl Y3Rvcl9jb25maWcucmF3ID0gMDsKKyAgICBzYy0+ZmVhdHVyZXMuaW50ZXJydXB0X3ZlY3Rvcl9j b25maWcuYml0cy5jZCA9IDE7CisKKyAgICBzYy0+ZmVhdHVyZXMuYXN5bmNfZXZlbnRfY29uZmln LnJhdyA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIG52bWVfaW5pdGlhbGl6ZV9pZGVudGlmeShzdHJ1 Y3QgcGNpX252bWVfc29mdGMqIHNjKQoreworICAgIC8vIG9ubHkgb25lIG5hbWVzcGFjZQorICAg IHNjLT5jb250cm9sbGVyX2RhdGEubm4gPSAweDE7ICAKKworICAgIC8vIExCQSBmb3JtYXQKKyAg ICBzYy0+bmFtZXNwYWNlX2RhdGEubGJhZlswXS5tcyA9IDB4MDA7CisKKyAgICAvKgorICAgICAq IExCQSBkYXRhIHNpemUgaXMgMl5uIChuIGlzIHN0YXJ0ZWQgYnkgMCkKKyAgICAgKiBzaG91bGQg YmUgbGFyZ2VyIHRoYW4gOS4oaS5lLiA1MTIgYnl0ZXMpCisgICAgICovCisgICAgdWludDY0X3Qg bGJhX2RhdGFfc2l6ZSA9IDk7CisgICAgc2MtPm5hbWVzcGFjZV9kYXRhLmxiYWZbMF0ubGJhZHMg PSBsYmFfZGF0YV9zaXplOworICAgIHNjLT5uYW1lc3BhY2VfZGF0YS5sYmFmWzBdLnJwID0gMHgw OworCisgICAgc2MtPm5hbWVzcGFjZV9kYXRhLm5sYmFmID0gMHgwMDsKKyAgICBzYy0+bmFtZXNw YWNlX2RhdGEuZmxiYXMuZm9ybWF0ID0gMHgwMDsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubmxi YWYgPSAweDE7CisKKyAgICB1aW50NjRfdCBibG9ja19zaXplID0gYmxvY2tpZl9zaXplKHNjLT5i Y3R4KTsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubnN6ZSA9IGJsb2NrX3NpemUgLyAoMiA8PCAo bGJhX2RhdGFfc2l6ZSAtIDEpKTsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubmNhcCA9IGJsb2Nr X3NpemUgLyAoMiA8PCAobGJhX2RhdGFfc2l6ZSAtIDEpKTsKK30KKworc3RhdGljIGludCBwY2lf bnZtZV9zdWJtaXNzaW9uX3F1ZXVlX2luaXQoCisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9x dWV1ZV9pbmZvKiBxaW5mbywKKyAgICBzdHJ1Y3QgYmxvY2tpZl9jdHh0KiBjdHh0KQoreworICAg IHN0cnVjdCBudm1lX2lvcmVxKiByZXE7CisgICAgaW50IGlvcV9zaXplID0gYmxvY2tpZl9xdWV1 ZXN6KGN0eHQpOworICAgIHFpbmZvLT5pb3JlcSA9IGNhbGxvYyhpb3Ffc2l6ZSwgc2l6ZW9mKHN0 cnVjdCBudm1lX2lvcmVxKSk7CisgICAgU1RBSUxRX0lOSVQoJnFpbmZvLT5pb2ZoZCk7CisKKyAg ICAvLyBzZXR1cCBhbmQgaW5zZXJ0IHJlcXVlc3RzIHRvIHRoZSBmcmVlIHF1ZXVlCisgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBpb3Ffc2l6ZTsgKytpKSB7CisgICAgICAgIHJlcSA9ICZxaW5mby0+ aW9yZXFbaV07CisgICAgICAgIHJlcS0+c3FfaW5mbyA9IHFpbmZvOworICAgICAgICAvLyBzZXR1 cCBjYWxsYmFjayBmdW5jdGlvbgorICAgICAgICBTVEFJTFFfSU5TRVJUX1RBSUwoJnFpbmZvLT5p b2ZoZCwgcmVxLCBpb19mbGlzdCk7CisgICAgfQorCisgICAgVEFJTFFfSU5JVCgmcWluZm8tPmlv YmhkKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3BjaV9udm1lX2NxX2luaXQo c3RydWN0IG52bWVfY29tcGxldGlvbl9xdWV1ZV9pbmZvKiBjcWluZm8pIAoreworICAgIHB0aHJl YWRfbXV0ZXhfaW5pdCgmY3FpbmZvLT5tdHgsIE5VTEwpOworICAgIGNxaW5mby0+YmFzZV9hZGRy ID0gKHVpbnRwdHJfdClOVUxMOworICAgIGNxaW5mby0+c2l6ZSA9IC0xOworICAgIGNxaW5mby0+ dGFpbCA9IDA7CisgICAgY3FpbmZvLT5xaWQgPSAtMTsKKyAgICBjcWluZm8tPmludGVycnVwdF92 ZWN0b3IgPSAtMTsKK30KKworc3RhdGljIGludCBwY2lfbnZtZV9pbml0KHN0cnVjdCB2bWN0eCog Y3R4LCBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLCBjaGFyKiBvcHRzKQoreworICAgIHN0cnVjdCBw Y2lfbnZtZV9zb2Z0Yyogc2M7CisgICAgc3RydWN0IGJsb2NraWZfY3R4dCogYmN0eHQ7CisJY2hh ciBiaWRlbnRbc2l6ZW9mKCJYWDpYOlgiKV07CisKKyNpZmRlZiBOVk1FX0RFQlVHCisgICAgZGJn ID0gZm9wZW4oIi90bXAvbnZtZV9lbXVfbG9nIiwgIncrIik7CisjZW5kaWYKKyAgICBEUFJJTlRG KCItLS0gc3RhcnQgbnZtZSBjb250cm9sbGVyIC0tLVxuIik7CisKKyAgICBpZiAob3B0cyA9PSBO VUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAicGNpX252bWU6IGJhY2tpbmcgZGV2aWNl IHJlcXVpcmVkXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIERQUklOVEYoIiVz XG4iLCBvcHRzKTsKKworICAgIC8qIAorICAgICAqIEF0dGVtcHQgdG8gb3BlbiB0aGUgYmFja2lu ZyBpbWFnZS4gVXNlIHRoZSBQQ0kKKwkgKiBzbG90L2Z1bmMgZm9yIHRoZSBpZGVudGlmaWVyIHN0 cmluZy4KKwkgKi8KKwlzbnByaW50ZihiaWRlbnQsIHNpemVvZihiaWRlbnQpLCAiJWQ6JWQiLCBw aS0+cGlfc2xvdCwgcGktPnBpX2Z1bmMpOworICAgIGJjdHh0ID0gYmxvY2tpZl9vcGVuKG9wdHMs IGJpZGVudCk7CisgICAgaWYgKGJjdHh0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOwor ICAgIH0KKworLyogICAgIHBjaV9zZXRfY2ZnZGF0YTE2KHBpLCBQQ0lSX0RFVklDRSwgMHgwOTUz KTsgKi8KKyAgICBwY2lfc2V0X2NmZ2RhdGExNihwaSwgUENJUl9ERVZJQ0UsIDB4MDExMSk7Cisg ICAgcGNpX3NldF9jZmdkYXRhMTYocGksIFBDSVJfVkVORE9SLCAweDgwODYpOworICAgIHBjaV9z ZXRfY2ZnZGF0YTgocGksIFBDSVJfQ0xBU1MsIFBDSUNfU1RPUkFHRSk7CisKKyAgICAvLyBmb3Ig TlZNZSBDb250cm9sbGVyIFJlZ2lzdGVycworICAgIGlmIChwY2lfZW11bF9hbGxvY19iYXIocGks IE5WTUVfQkFSX0NSLCBQQ0lCQVJfTUVNNjQsIE5WTUVfQ1JfU0laRSkpIHsKKyAgICAgICAgRFBS SU5URigiZXJyb3IgaXMgb2NjdXJlZCBpbiBwY2lfZW11bF9hbGxvY19iYXJcbiIpOworICAgICAg ICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLy8gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUg Y29udHJvbGxlciBhbGxvY2F0ZSBhIHVuaXF1ZXVlIE1TSS1YIHZlY3RvciBmb3IgZWFjaCBjb21w bGV0aW9uIHF1ZXVlLgorICAgIGlmIChwY2lfZW11bF9hZGRfbXNpeGNhcChwaSwgTlZNRV9DT01Q TEVUSU9OX1FVRVVFX05VTSwgTlZNRV9CQVJfTVNJWCkpIAorICAgIHsKKyAgICAgICAgRFBSSU5U RigiZXJyb3IgaXMgb2NjdXJlZCBpbiBwY2lfZW11bF9hZGRfbXNpeGNhcFxuIik7CisgICAgICAg IGdvdG8gZmFpbDsKKyAgICB9CisgICAgRFBSSU5URigidGFibGUgJWQsIHBiYSAlZFxuIiwgcGNp X21zaXhfdGFibGVfYmFyKHBpKSwgcGNpX21zaXhfcGJhX2JhcihwaSkpOworCisgICAgc2MgPSBj YWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwY2lfbnZtZV9zb2Z0YykpOworICAgIHBpLT5waV9hcmcg PSBzYzsKKyAgICBwaS0+cGlfdm1jdHggPSBjdHg7CisgICAgc2MtPnBpID0gcGk7CisKKyAgICBz Yy0+YmN0eCA9IGJjdHh0OworCisgICAgcGNpX252bWVfcmVzZXQoc2MpOworCisgICAgc2MtPmNx c19pbmZvID0gY2FsbG9jKE5WTUVfSU9fQ1FTX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uX3F1ZXVlX2luZm8pKTsKKyAgICBmb3Io aW50IGk9MDsgaTwgTlZNRV9JT19DUVNfU0laRTsgKytpKSB7CisgICAgICAgIHBjaV9udm1lX2Nx X2luaXQoJnNjLT5jcXNfaW5mb1tpXSk7CisgICAgfQorCisgICAgc2MtPnNxc19pbmZvID0gY2Fs bG9jKE5WTUVfSU9fU1FTX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihz dHJ1Y3QgbnZtZV9zdWJtaXNzaW9uX3F1ZXVlX2luZm8pKTsKKworICAgIGZvciAoaW50IGkgPSAw OyBpIDwgTlZNRV9JT19TUVNfU0laRTsgKytpKSB7CisgICAgICAgIHBjaV9udm1lX3N1Ym1pc3Np b25fcXVldWVfaW5pdCgmc2MtPnNxc19pbmZvW2ldLCBzYy0+YmN0eCk7CisgICAgfQorCisgICAg bnZtZV9pbml0aWFsaXplX2lkZW50aWZ5KHNjKTsKKyAgICBudm1lX2luaXRpYWxpemVfZmVhdHVy ZShzYyk7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBibG9ja2lmX2Nsb3NlKGJjdHh0 KTsKKyAgICBmcmVlKHNjLT5jcXNfaW5mbyk7CisgICAgZnJlZShzYy0+c3FzX2luZm8pOworICAg IGZyZWUoc2MpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCBwY2lfbnZtZV9zZXR1 cF9jb250cm9sbGVyKHN0cnVjdCB2bWN0eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjKQoreworICAgIERQUklOVEYo ImFzcXMgMHgleCwgYWNxcyAweCV4XG4iLCBzYy0+cmVncy5hcWEuYml0cy5hc3FzLAorICAgICAg ICAgICAgc2MtPnJlZ3MuYXFhLmJpdHMuYWNxcyk7CisgICAgc2MtPmFzcV9iYXNlID0gKHVpbnRw dHJfdCl2bV9tYXBfZ3BhKAorICAgICAgICBjdHgsIHNjLT5yZWdzLmFzcSwKKyAgICAgICAgc2l6 ZW9mKHN0cnVjdCBudm1lX2NvbW1hbmQpICogc2MtPnJlZ3MuYXFhLmJpdHMuYXNxcyk7CisgICAg c2MtPmFjcV9iYXNlID0gKHVpbnRwdHJfdCl2bV9tYXBfZ3BhKAorICAgICAgICBjdHgsIHNjLT5y ZWdzLmFjcSwKKyAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pICogc2MtPnJl Z3MuYXFhLmJpdHMuYWNxcyk7CisKKyAgICBzYy0+cmVncy5jc3RzLmJpdHMucmR5ID0gMTsKK30K Kworc3RhdGljIHZvaWQgZXhlY3V0ZV9zZXRfZmVhdHVyZV9jb21tYW5kKHN0cnVjdCBwY2lfbnZt ZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IG52bWVfY29tbWFuZCogY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjbXBfZW50cnkpCit7CisgICAgRFBS SU5URigiMHgleFxuIiwgY29tbWFuZC0+Y2R3MTEpOworICAgIERQUklOVEYoIjB4JXhcbiIsIGNv bW1hbmQtPmNkdzEwKTsKKyAgICBjbXBfZW50cnktPmNkdzAgPSAweDAwMDAwMDAwOworICAgIGVu dW0gbnZtZV9mZWF0dXJlIGZlYXR1cmUgPSBjb21tYW5kLT5jZHcxMCAmIDB4ZjsKKyAgICBzd2l0 Y2ggKGZlYXR1cmUpIHsKKyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfTlVNQkVSX09GX1FVRVVFUzoK KyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5udW1fb2ZfcXVldWVzLnJhdyA9IGNvbW1hbmQtPmNk dzExICYgMHhmZmZmOworICAgICAgICAgICAgRFBSSU5URigiU0VUX0ZFQVRVUkUgY21kOiBuY3Fy IDB4JXgsIG5zcXIgMHgleFxuIiwKKyAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmQtPmNkdzEx ID4+IDE2KSwgKGNvbW1hbmQtPmNkdzExICYgMHhmZmZmKSk7CisgICAgICAgICAgICBjbXBfZW50 cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3Qg PSAweDA7CisgICAgICAgICAgICBpZiAocGNpX21zaXhfZW5hYmxlZChzYy0+cGkpKSB7CisgICAg ICAgICAgICAgICAgRFBSSU5URigiZ2VuZXJhdGUgbXNpeCwgdGFibGVfY291bnQgJWQsIFxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgIHNjLT5waS0+cGlfbXNpeC50YWJsZV9jb3VudCk7Cisg ICAgICAgICAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICJwY2lf bXNpeCBpcyBkaXNhYmxlPyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisK KyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfQVNZTkNfRVZFTlRfQ09ORklHVVJBVElPTjoKKyAgICAg ICAgICAgIC8vVE9ETyAKKyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5hc3luY19ldmVudF9jb25m aWcucmF3ID0gY29tbWFuZC0+Y2R3MTE7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5z YyA9IDB4MDA7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAg ICAgICAgICBwY2lfZ2VuZXJhdGVfbXNpeChzYy0+cGksIDApOworICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfSU5URVJSVVBUX0NPQUxFU0NJTkc6CisgICAgICAg ICAgICBEUFJJTlRGKCJpbnRlcnJ1cHQgY29hbGVzY2luZyBjZHcxMSAweCV4XG4iLCBjb21tYW5k LT5jZHcxMSk7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAg ICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAgICAgICAgICBzYy0+ZmVh dHVyZXMuaW50ZXJydXB0X2NvYWxzY2luZy5iaXRzLnRociA9IGNvbW1hbmQtPmNkdzExICYgMHhm ZjsKKyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5pbnRlcnJ1cHRfY29hbHNjaW5nLmJpdHMudGlt ZSA9CisgICAgICAgICAgICAgICAgKGNvbW1hbmQtPmNkdzExID4+IDgpICYgMHhmZjsKKyAgICAg ICAgICAgIHBjaV9nZW5lcmF0ZV9tc2l4KHNjLT5waSwgMCk7CisgICAgICAgICAgICBicmVhazsK KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDAgJiYgInRoaXMgZmVhdHVy ZSBpcyBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9Cit9CisKK2VudW0gdGVtcF90aHJlc2hvbGRf Y2R3MTEgeworICAgIE5WTUVfVEVNUF9USFJFU0hPTERfVE1QVEggPSAweDAwMDBmZmZmLAorICAg IE5WTUVfVEVNUF9USFJFU0hPTERfVE1QU0VMID0gMHgwMDBmMDAwMCwKKyAgICBOVk1FX1RFTVBf VEhSRVNIT0xEX1RIU0VMID0gMHgwMDMwMDAwMCwKKyAgICBOVk1FX1RFTVBfVEhSRVNIT0xEX1JF U0VSVkVEID0gMHhmZmMwMDAwMCwKK307CisKK3N0YXRpYyB2b2lkIGV4ZWN1dGVfZ2V0X2ZlYXR1 cmVfY29tbWFuZChzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG52bWVfY29tcGxldGlv biogY21wX2VudHJ5KQoreworICAgIGVudW0gbnZtZV9mZWF0dXJlIGZlYXR1cmUgPSBjb21tYW5k LT5jZHcxMCAmIDB4ZjsKKyAgICBzd2l0Y2ggKGZlYXR1cmUpIHsKKyAgICAgICAgY2FzZSBOVk1F X0ZFQVRfVEVNUEVSQVRVUkVfVEhSRVNIT0xEOiB7CisgICAgICAgICAgICB1aW50OF90IHRoc2Vs ID0gKGNvbW1hbmQtPmNkdzExICYgTlZNRV9URU1QX1RIUkVTSE9MRF9USFNFTCkgPj4gMjA7Cisg ICAgICAgICAgICAvLyBvdmVyIHRlbXBhcnR1cmUgdGhyZXNob2xkCisgICAgICAgICAgICBpZiAo dGhzZWwgPT0gMHgwMCkgeworICAgICAgICAgICAgICAgIGNtcF9lbnRyeS0+Y2R3MCA9IHNjLT5m ZWF0dXJlcy50ZW1wYXJ0dXJlX3RocmVzaG9sZC5iaXRzLm92ZXI7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICAvLyB1bmRlciB0ZW1wYXJ0dXJlIHRocmVzaG9sZAorICAgICAgICAgICAgZWxz ZSBpZiAodGhzZWwgPT0gMHgxKSB7CisgICAgICAgICAgICAgICAgY21wX2VudHJ5LT5jZHcwID0g c2MtPmZlYXR1cmVzLnRlbXBhcnR1cmVfdGhyZXNob2xkLmJpdHMudW5kZXI7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoInRoZSB0aHNl bCBpcyBpbnZhbGllZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY21wX2VudHJ5LT5z dGF0dXMuc2MgPSAweDAwOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2N0ID0gMHgw OworICAgICAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklO VEYoImZlYXR1cmUgbnVtYmVyOiAweCV4XG4iLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIGFzc2Vy dCgwICYmICJub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKK3N0 YXRpYyB2b2lkIG52bWVfZXhlY3V0ZV9pZGVudGlmeV9jb21tYW5kKHN0cnVjdCBwY2lfbnZtZV9z b2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IG52bWVfY29tcGxldGlvbiogY21wX2VudHJ5KQoreworICAgIERQ UklOVEYoIklkZW50aWZ5IGNvbW1hbmQgKDB4JXgpXG4iLCAKKyAgICAgICAgICAgIGNvbW1hbmQt PmNkdzEwICYgTlZNRV9DTURfSURFTlRJRllfQ0RXMTBfQ05TKTsKKyAgICBEUFJJTlRGKCJjZHcx MCAweCV4LCBkcHRyIDB4JWx4LCAweCVseCIsIGNvbW1hbmQtPmNkdzEwLCBjb21tYW5kLT5wcnAx LAorICAgICAgICAgICAgY29tbWFuZC0+cHJwMik7CisgICAgdWludHB0cl90IGRlc3RfYWRkciA9 ICh1aW50cHRyX3Qpdm1fbWFwX2dwYSgKKyAgICAgICAgc2MtPnBpLT5waV92bWN0eCwgY29tbWFu ZC0+cHJwMSwgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbnRyb2xsZXJfZGF0YSkpOworCisgICAgLy8g VE9ETyBoYXZlIHRvIGNvbnNpZGVyIGFib3V0IGNvbXBsZXRpb24gcXVldWUgZW50cnkgY29udGVu dAorICAgIHN3aXRjaCAoY29tbWFuZC0+Y2R3MTAgJiBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9D TlMpIHsKKyAgICAgICAgY2FzZSBOVk1FX0NNRF9JREVOVElGWV9DTlNfTkFNRVNQQUNFOgorICAg ICAgICAgICAgbWVtY3B5KChzdHJ1Y3QgbnZtZV9uYW1lc3BhY2VfZGF0YSopZGVzdF9hZGRyLCAm c2MtPm5hbWVzcGFjZV9kYXRhLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZt ZV9uYW1lc3BhY2VfZGF0YSkpOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2MgPSAw eDAwOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2N0ID0gMHgwOworICAgICAgICAg ICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgY2FzZSBOVk1FX0NNRF9JREVOVElGWV9DTlNfQ09OVFJPTExFUjoKKyAgICAgICAgICAg IG1lbWNweSgoc3RydWN0IG52bWVfY29udHJvbGxlcl9kYXRhKilkZXN0X2FkZHIsCisgICAgICAg ICAgICAgICAgICAgJnNjLT5jb250cm9sbGVyX2RhdGEsIHNpemVvZihzdHJ1Y3QgbnZtZV9jb250 cm9sbGVyX2RhdGEpKTsKKyAgICAgICAgICAgIGNtcF9lbnRyeS0+c3RhdHVzLnNjID0gMHgwMDsK KyAgICAgICAgICAgIGNtcF9lbnRyeS0+c3RhdHVzLnNjdCA9IDB4MDsKKyAgICAgICAgICAgIHBj aV9nZW5lcmF0ZV9tc2l4KHNjLT5waSwgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg IGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCAmJiAiW0NOU10gbm90IGlucGxlbWVudGVk Iik7CisgICAgfQorCisgICAgYXNzZXJ0KDApOworfQorCitlbnVtIGNyZWF0ZV9pb19jcV9jZHcx MSB7CisgICAgTlZNRV9DUkVBVEVfSU9fQ1FfQ0RXMTFfUEMgPSAweDAwMDAwMDAxLAorICAgIE5W TUVfQ1JFQVRFX0lPX0NRX0NEVzExX0lFTiA9IDB4MDAwMDAwMDIsCisgICAgTlZNRV9DUkVBVEVf SU9fQ1FfQ0RXMTFfUlNWID0gMHgwMDAwZmZmYywKKyAgICBOVk1FX0NSRUFURV9JT19DUV9DRFcx MV9JViA9IDB4ZmZmZjAwMDAsCit9OworCitzdGF0aWMgdm9pZCAKK252bWVfZXhlY3V0ZV9jcmVh dGVfaW9fY3FfY29tbWFuZChzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbW1hbmQqIGNv bW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IG52bWVfY29tcGxldGlvbiogY21wX2VudHJ5KQoreworICAgIC8vIFRPRE8KKyAgICAvLyAg SUVOCisgICAgLy8gIElWCisgICAgRFBSSU5URigiaW50ZXJydXB0IHZlY3RvciAweCV4XG4iLCBj b21tYW5kLT5jZHcxMSA+PiAxNik7CisgICAgaWYgKGNvbW1hbmQtPmNkdzExICYgTlZNRV9DUkVB VEVfSU9fQ1FfQ0RXMTFfUEMpIHsKKyAgICAgICAgdWludDE2X3QgcWlkID0gY29tbWFuZC0+Y2R3 MTAgJiAweGZmZmY7CisgICAgICAgIGFzc2VydChxaWQgPCBOVk1FX0lPX0NRU19TSVpFICYmIAor ICAgICAgICAgICAgICAgICJ5b3Ugc2hvdWxkIGluY3JlYXNlIG51bWJlciBvZiBjb21wbGV0aW9u IHF1ZXVlIG9mIHRoaXMgY29udHJvbGxlciBlbXVsYXRvciIpOworCisgICAgICAgIGlmIChzYy0+ Y3FzX2luZm9bcWlkXS5iYXNlX2FkZHIgIT0gKHVpbnRwdHJfdClOVUxMKSB7CisgICAgICAgICAg ICBhc3NlcnQoMCAmJiAidGhlIGNvbXBsZXRpb24gcXVldWUgaXMgYWxyZWFkeSB1c2VkIik7Cisg ICAgICAgIH0KKworICAgICAgICB1aW50MTZfdCBpbnRlcnJ1cHRfdmVjdG9yID0gY29tbWFuZC0+ Y2R3MTEgPj4gMTY7CisgICAgICAgIHVpbnQxNl90IHF1ZXVlX3NpemUgPSBjb21tYW5kLT5jZHcx MCA+PiAxNjsKKyAgICAgICAgc2MtPmNxc19pbmZvW3FpZF0uYmFzZV9hZGRyID0KKyAgICAgICAg ICAgICh1aW50cHRyX3Qpdm1fbWFwX2dwYShzYy0+cGktPnBpX3ZtY3R4LCBjb21tYW5kLT5wcnAx LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9j b21wbGV0aW9uKSAqIHF1ZXVlX3NpemUpOworICAgICAgICBzYy0+Y3FzX2luZm9bcWlkXS5zaXpl ID0gcXVldWVfc2l6ZTsKKyAgICAgICAgc2MtPmNxc19pbmZvW3FpZF0ucWlkID0gcWlkOworICAg ICAgICBzYy0+Y3FzX2luZm9bcWlkXS5pbnRlcnJ1cHRfdmVjdG9yID0gaW50ZXJydXB0X3ZlY3Rv cjsKKworICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAgICAgIGNtcF9l bnRyeS0+c3RhdHVzLnNjdCA9IDB4MDsKKyAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBp LCAwKTsKKyAgICAgICAgRFBSSU5URigicWlkICVkLCBxc2l6ZSAweCV4LCBhZGRyIDB4JWx4LCBJ ViAlZFxuIiwgCisgICAgICAgICAgICAgICAgcWlkLCBxdWV1ZV9zaXplLCBjb21tYW5kLT5wcnAx LCBpbnRlcnJ1cHRfdmVjdG9yKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCgw ICYmICJub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKK2VudW0g Y3JlYXRlX2lvX3NxX2NkdzExIHsKKyAgICBOVk1FX0NSRUFURV9JT19TUV9DRFcxMV9QQyA9IDB4 MDAwMDAwMDEsCisgICAgTlZNRV9DUkVBVEVfSU9fU1FfQ0RXMTFfUVBSSU8gPSAweDAwMDAwMDYw LAorICAgIE5WTUVfQ1JFQVRFX0lPX1NRX0NEVzExX1JTViA9IDB4MDAwMGZmODAsCisgICAgTlZN RV9DUkVBVEVfSU9fU1FfQ0RXMTFfQ1FJRCA9IDB4ZmZmZjAwMDAsCit9OworCitzdGF0aWMgdm9p ZCBudm1lX2V4ZWN1dGVfY3JlYXRlX2lvX3NxX2NvbW1hbmQoc3RydWN0IHBjaV9udm1lX3NvZnRj KiBzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAg ICBpZiAoY29tbWFuZC0+Y2R3MTEgJiBOVk1FX0NSRUFURV9JT19TUV9DRFcxMV9QQykgeworICAg ICAgICB1aW50MTZfdCBxaWQgPSBjb21tYW5kLT5jZHcxMCAmIDB4ZmZmZjsKKyAgICAgICAgYXNz ZXJ0KHFpZCA8IE5WTUVfSU9fU1FTX1NJWkUgJiYgCisgICAgICAgICAgICAgICAgInlvdSBzaG91 bGQgaW5jcmVhc2UgbnVtYmVyIG9mIHN1Ym1pc3Npb24gcXVldWUgb2YgdGhpcyBjb250cm9sbGVy IGVtdWxhdG9yIik7CisgICAgICAgIC8vIFRPRE8KKyAgICAgICAgLyogICAgICAgICB1aW50OF90 IHF1ZXVlX3ByaW9yaXR5ID0gKGNvbW1hbmQtPmNkdzExICYKKyAgICAgICAgICogTlZNRV9DUkVB VEVfSU9fU1FfQ0RXMTFfUVBSSU8pID4+IDE7ICovCisgICAgICAgIHN0cnVjdCBudm1lX3N1Ym1p c3Npb25fcXVldWVfaW5mbyogc3FfaW5mbyA9ICZzYy0+c3FzX2luZm9bcWlkXTsKKyAgICAgICAg aWYgKHNxX2luZm8tPmJhc2VfYWRkciAhPSAodWludHB0cl90KU5VTEwpIHsKKyAgICAgICAgICAg IGFzc2VydCgwKTsKKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCBjcWlkID0gY29tbWFuZC0+ Y2R3MTEgPj4gMTY7CisgICAgICAgIHVpbnQxNl90IHF1ZXVlX3NpemUgPSBjb21tYW5kLT5jZHcx MCA+PiAxNjsKKyAgICAgICAgc3FfaW5mby0+YmFzZV9hZGRyID0KKyAgICAgICAgICAgICh1aW50 cHRyX3Qpdm1fbWFwX2dwYShzYy0+cGktPnBpX3ZtY3R4LCBjb21tYW5kLT5wcnAxLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21tYW5kKSAq IHF1ZXVlX3NpemUpOworICAgICAgICBzcV9pbmZvLT5zaXplID0gcXVldWVfc2l6ZTsKKyAgICAg ICAgc3FfaW5mby0+Y29tcGxldGlvbl9xaWQgPSBjcWlkOworICAgICAgICBzcV9pbmZvLT5xaWQg PSBxaWQ7CisKKyAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2MgPSAweDAwOworICAgICAgICBj bXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAgICAgIHBjaV9nZW5lcmF0ZV9tc2l4KHNj LT5waSwgMCk7CisgICAgICAgIERQUklOVEYoInFpZCAlZCwgcXNpemUgMHgleCwgYWRkciAweCVs eCwgY3FpZCAlZFxuIiwgCisgICAgICAgICAgICAgICAgcWlkLCBxdWV1ZV9zaXplLCBjb21tYW5k LT5wcnAxLCBjcWlkKTsKKworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KDAgJiYg Im5vdCBpbXBsZW1lbnRlZCIpOworICAgIH0KK30KK3N0YXRpYyB2b2lkIG52bWVfZXhlY3V0ZV9k ZWxldGVfaW9fc3FfY29tbWFuZCgKKyAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg IHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAgc3RydWN0IG52bWVfY29tcGxldGlv biogY21wX2VudHJ5KQoreworICAgIHVpbnQxNl90IHFpZCA9IGNvbW1hbmQtPmNkdzEwICYgMHhm ZmZmOworICAgIHNjLT5zcXNfaW5mb1txaWRdLmJhc2VfYWRkciA9ICh1aW50cHRyX3QpTlVMTDsK KyAgICBwY2lfZ2VuZXJhdGVfbXNpeChzYy0+cGksIDApOworfQorCitzdGF0aWMgdm9pZCBudm1l X2V4ZWN1dGVfZGVsZXRlX2lvX2NxX2NvbW1hbmQoCisgICAgc3RydWN0IHBjaV9udm1lX3NvZnRj KiBzYywKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgIHN0cnVjdCBudm1l X2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAgICB1aW50MTZfdCBxaWQgPSBjb21tYW5kLT5j ZHcxMCAmIDB4ZmZmZjsKKyAgICBzYy0+Y3FzX2luZm9bcWlkXS5iYXNlX2FkZHIgPSAodWludHB0 cl90KU5VTEw7CisgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKK30KKworc3RhdGlj IHZvaWQgZXhlY3V0ZV9hc3luY19ldmVudF9yZXF1ZXN0X2NvbW1hbmQoCisgICAgc3RydWN0IHBj aV9udm1lX3NvZnRjKiBzYywKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAg IHN0cnVjdCBudm1lX2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAgICAvLyBUT0RPCisgICAg Ly8gd2hlbiBzb21lIGV2ZW50cyBhcmUgb2NjdXJlZCwgdGhlIGNvbnRyb2xsZXIgc2VuZCBub3Rp ZnkKK30KKworc3RhdGljIHZvaWQgcGNpX252bWVfZXhlY3V0ZV9hZG1pbl9jb21tYW5kKHN0cnVj dCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDY0X3QgdmFsdWUpCit7CisgICAgc3RydWN0IG52bWVfY29tbWFuZCogY29t bWFuZCA9CisgICAgICAgIChzdHJ1Y3QgbnZtZV9jb21tYW5kKikoc2MtPmFzcV9iYXNlICsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IG52bWVfY29tbWFuZCkg KiAodmFsdWUgLSAxKSk7CisKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjbXBfZW50cnkg PQorICAgICAgICAoc3RydWN0IG52bWVfY29tcGxldGlvbiopKHNjLT5hY3FfYmFzZSArCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRp b24pICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPmNvbXBsZXRp b25fcXVldWVfaGVhZCk7CisKKyAgICBjbXBfZW50cnktPnNxaWQgPSAwOworICAgIGNtcF9lbnRy eS0+c3FoZCA9IHZhbHVlIC0gMTsKKyAgICBjbXBfZW50cnktPmNpZCA9IGNvbW1hbmQtPmNpZDsK KyAgICBjbXBfZW50cnktPnN0YXR1cy5wID0gIWNtcF9lbnRyeS0+c3RhdHVzLnA7CisKKyAgICBE UFJJTlRGKCJbYWRtaW4gY29tbWFuZF0gMHgleFxuIiwgY29tbWFuZC0+b3BjKTsKKyAgICBzd2l0 Y2ggKGNvbW1hbmQtPm9wYykgeworICAgICAgICBjYXNlIE5WTUVfT1BDX0RFTEVURV9JT19TUToK KyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9kZWxldGVfaW9fc3FfY29tbWFuZChzYywgY29tbWFu ZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BD X0NSRUFURV9JT19TUToKKyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9jcmVhdGVfaW9fc3FfY29t bWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICBjYXNlIE5WTUVfT1BDX0RFTEVURV9JT19DUToKKyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9k ZWxldGVfaW9fY3FfY29tbWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BDX0NSRUFURV9JT19DUToKKyAgICAgICAgICAg IG52bWVfZXhlY3V0ZV9jcmVhdGVfaW9fY3FfY29tbWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5 KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BDX0lERU5USUZZOgor ICAgICAgICAgICAgbnZtZV9leGVjdXRlX2lkZW50aWZ5X2NvbW1hbmQoc2MsIGNvbW1hbmQsIGNt cF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVk1FX09QQ19TRVRf RkVBVFVSRVM6CisgICAgICAgICAgICBleGVjdXRlX3NldF9mZWF0dXJlX2NvbW1hbmQoc2MsIGNv bW1hbmQsIGNtcF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVk1F X09QQ19HRVRfRkVBVFVSRVM6CisgICAgICAgICAgICBleGVjdXRlX2dldF9mZWF0dXJlX2NvbW1h bmQoc2MsIGNvbW1hbmQsIGNtcF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg Y2FzZSBOVk1FX09QQ19BU1lOQ19FVkVOVF9SRVFVRVNUOgorICAgICAgICAgICAgLy8gWFhYIHRo aXMgaXMgYSBkaXJ0eSBoYWNrLi4uLiBzaG91bGQgYmUgZml4ZWQuLi4KKyAgICAgICAgICAgIGNt cF9lbnRyeS0+c3RhdHVzLnAgPSAhY21wX2VudHJ5LT5zdGF0dXMucDsKKyAgICAgICAgICAgIGV4 ZWN1dGVfYXN5bmNfZXZlbnRfcmVxdWVzdF9jb21tYW5kKHNjLCBjb21tYW5kLCBjbXBfZW50cnkp OworICAgICAgICAgICAgc2MtPmNvbXBsZXRpb25fcXVldWVfaGVhZC0tOworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCAmJiAidGhlIGFk bWluIGNvbW1hbmQgaXMgbm90IGltcGxlbWVudGVkIik7CisgICAgfQorCisgICAgc2MtPmNvbXBs ZXRpb25fcXVldWVfaGVhZCsrOworICAgIGlmKHNjLT5yZWdzLmFxYS5iaXRzLmFjcXMgPT0gc2Mt PmNvbXBsZXRpb25fcXVldWVfaGVhZCkKKyAgICB7CisgICAgICAgIHNjLT5jb21wbGV0aW9uX3F1 ZXVlX2hlYWQgPSAwOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcGNpX252bWVfYmxvY2tpZl9p b3JlcV9jYihzdHJ1Y3QgYmxvY2tpZl9yZXEqIGJyLCBpbnQgZXJyKQoreworICAgIERQUklOVEYo IiVzICVkXG4iLCBfX2Z1bmNfXywgZXJyKTsKKworICAgIHN0cnVjdCBudm1lX2lvcmVxKiBucmVx ID0gYnItPmJyX3BhcmFtOworICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb25fcXVldWVfaW5mbyog Y3FfaW5mbyA9IG5yZXEtPmNxX2luZm87CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9xdWV1 ZV9pbmZvKiBzcV9pbmZvID0gbnJlcS0+c3FfaW5mbzsKKworICAgIHB0aHJlYWRfbXV0ZXhfbG9j aygmY3FfaW5mby0+bXR4KTsKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjb21wbGV0aW9u X2VudHJ5ID0KKyAgICAgICAgKHN0cnVjdCBudm1lX2NvbXBsZXRpb24qKShjcV9pbmZvLT5iYXNl X2FkZHIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qg bnZtZV9jb21wbGV0aW9uKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNxX2luZm8tPnRhaWwpOworCisgICAgbnJlcS0+Y29tcGxldGlvbl9lbnRyeS5zdGF0dXMuc2N0 ID0gMHgwOworICAgIG5yZXEtPmNvbXBsZXRpb25fZW50cnkuc3RhdHVzLnNjID0gMHgwMDsKKwor ICAgIC8vIHNhdmUgcGhhc2UgdmFsdWUgYmVmb3JlIHdyaXRlIHZhbHVlcyB0byBjb21wbGV0aW9u IHF1ZXVlIGVudHJ5CisgICAgdWludDhfdCBzdGF0dXNfcGhhc2UgPSBjb21wbGV0aW9uX2VudHJ5 LT5zdGF0dXMucDsKKworICAgIG1lbWNweShjb21wbGV0aW9uX2VudHJ5LCAmbnJlcS0+Y29tcGxl dGlvbl9lbnRyeSwKKyAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pKTsK KyAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMucCA9ICFzdGF0dXNfcGhhc2U7CisKKyAgICBE UFJJTlRGKCJicl9yZXNpZCAweCVseFxuIiwgYnItPmJyX3Jlc2lkKTsKKyAgICBEUFJJTlRGKCJj cV9oZWFkIDB4JXgobWF4IDB4JXgpLCBxaWQgJWQsIHN0YXR1cyBwaGFzZSAleCBJViAlZFxuIiwK KyAgICAgICAgICAgIGNxX2luZm8tPnRhaWwsIGNxX2luZm8tPnNpemUsIGNxX2luZm8tPnFpZCwg CisgICAgICAgICAgICAhc3RhdHVzX3BoYXNlLCBjcV9pbmZvLT5pbnRlcnJ1cHRfdmVjdG9yKTsK KworICAgIGNxX2luZm8tPnRhaWwrKzsKKy8qICAgICBpZiAoY3FfaW5mby0+dGFpbCA9PSBjcV9p bmZvLT5zaXplKSB7ICovCisgICAgaWYgKGNxX2luZm8tPnRhaWwgPiBjcV9pbmZvLT5zaXplKSB7 CisgICAgICAgIGNxX2luZm8tPnRhaWwgPSAwOworICAgIH0KKworICAgIFRBSUxRX1JFTU9WRSgm c3FfaW5mby0+aW9iaGQsIG5yZXEsIGlvX2JsaXN0KTsKKworICAgIFNUQUlMUV9JTlNFUlRfVEFJ TCgmc3FfaW5mby0+aW9maGQsIG5yZXEsIGlvX2ZsaXN0KTsKKworICAgIHBjaV9nZW5lcmF0ZV9t c2l4KG5yZXEtPnNjLT5waSwgY3FfaW5mby0+aW50ZXJydXB0X3ZlY3Rvcik7CisgICAgcHRocmVh ZF9tdXRleF91bmxvY2soJmNxX2luZm8tPm10eCk7Cit9CisKK3N0YXRpYyB2b2lkIG52bWVfbnZt X2NvbW1hbmRfcmVhZF93cml0ZSgKKyAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg IHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAgc3RydWN0IG52bWVfc3VibWlzc2lv bl9xdWV1ZV9pbmZvKiBzcV9pbmZvLAorICAgIHVpbnQxNl90IHNxaGQpCit7CisgICAgaW50IGVy ciA9IDA7CisgICAgdWludHB0cl90IHN0YXJ0aW5nX2xiYSA9ICgodWludDY0X3QpY29tbWFuZC0+ Y2R3MTEgPDwgMzIpIHwgY29tbWFuZC0+Y2R3MTA7CisgICAgLy8gTkxCIChudW1iZXIgb2YgbG9n aWMgYmxvY2spIGlzIGEgMCdzIGJhc2VkIHZhbHVlCisgICAgdWludDE2X3QgbnVtYmVyX29mX2xi ID0gKGNvbW1hbmQtPmNkdzEyICYgMHhmZmZmKSArIDE7CisgICAgaW50IGxvZ2ljX2Jsb2NrX3Np emUgPSAxIDw8IHNjLT5uYW1lc3BhY2VfZGF0YS5sYmFmWzBdLmxiYWRzOworCisgICAgRFBSSU5U Rigic2xiYSAweCVseCwgbmxiYSAweCV4LCBsYiBzaXplIDB4JXhcbiIsCisgICAgICAgICAgICBz dGFydGluZ19sYmEsIG51bWJlcl9vZl9sYiwgbG9naWNfYmxvY2tfc2l6ZSk7CisgICAgRFBSSU5U Rigic3FoZDogMHgleCwgZGVzdGluYXRpb24gYWRkciA6IDB4JTA4bHhcbiIsIHNxaGQsIGNvbW1h bmQtPnBycDEpOworCisgICAgLyogICAgIHN0cnVjdCBudm1lX2lvcmVxICpucmVxID0gc3FfaW5m by0+aW9yZXE7ICovCisgICAgc3RydWN0IG52bWVfaW9yZXEqIG5yZXEgPSBTVEFJTFFfRklSU1Qo JnNxX2luZm8tPmlvZmhkKTsKKyAgICBhc3NlcnQobnJlcSAhPSBOVUxMKTsKKyAgICBTVEFJTFFf UkVNT1ZFX0hFQUQoJnNxX2luZm8tPmlvZmhkLCBpb19mbGlzdCk7CisKKyAgICBucmVxLT5jb21w bGV0aW9uX2VudHJ5LnNxaGQgPSBzcWhkOworICAgIG5yZXEtPmNvbXBsZXRpb25fZW50cnkuc3Fp ZCA9IHNxX2luZm8tPnFpZDsKKyAgICBucmVxLT5jb21wbGV0aW9uX2VudHJ5LmNpZCA9IGNvbW1h bmQtPmNpZDsKKyAgICBucmVxLT5jcV9pbmZvID0gJnNjLT5jcXNfaW5mb1tzcV9pbmZvLT5jb21w bGV0aW9uX3FpZF07CisgICAgbnJlcS0+c2MgPSBzYzsKKyAgICBucmVxLT5zcV9pbmZvID0gc3Ff aW5mbzsKKyAgICBEUFJJTlRGKCJzcWlkICVkLCBjcWlkICVkXG4iLCBzcV9pbmZvLT5xaWQsIHNx X2luZm8tPmNvbXBsZXRpb25fcWlkKTsKKworICAgIAorICAgIGludCBkYXRhX3NpemUgPSBudW1i ZXJfb2ZfbGIgKiBsb2dpY19ibG9ja19zaXplOworICAgIGludCBwYWdlX251bSA9IGRhdGFfc2l6 ZSAvICgxIDw8IDEyKTsKKyAgICBpZihkYXRhX3NpemUgJSAoMSA8PCAxMikpCisgICAgeworICAg ICAgICBwYWdlX251bSsrOworICAgIH0KKyAgICAvL1RPRE8gcGFnZSBzaXplIGlzIGRlcGVuZCBv biBDQy5NUFMKKyAgICBEUFJJTlRGKCJhbGwgc2l6ZSAweCV4LCBwYWdlIG51bSAweCV4XG4iLCBk YXRhX3NpemUsIHBhZ2VfbnVtKTsKKyAgICBEUFJJTlRGKCJtb2QgMHgleFxuIiwgZGF0YV9zaXpl ICUgKDEgPDwgMTIpKTsKKyAgICBEUFJJTlRGKCJQUlAgMHglMDhseCAweCUwOGx4XG4iLCBjb21t YW5kLT5wcnAxLCBjb21tYW5kLT5wcnAyKTsKKyAgICBEUFJJTlRGKCJDRFcwIDB4JXhcbiIsIGNv bW1hbmQtPnJzdmQxKTsKKworICAgIHN0cnVjdCBibG9ja2lmX3JlcSogYnJlcSA9ICZucmVxLT5p b19yZXE7CisgICAgYnJlcS0+YnJfb2Zmc2V0ID0gMDsKKworICAgIGlmKGNvbW1hbmQtPnBycDIg PT0gMCkgeworCisgICAgICAgIGJyZXEtPmJyX2lvdlswXS5pb3ZfYmFzZSA9CisgICAgICAgICAg ICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsIGRhdGFf c2l6ZSk7CisgICAgICAgIGJyZXEtPmJyX2lvdlswXS5pb3ZfbGVuID0gZGF0YV9zaXplOworICAg ICAgICBicmVxLT5icl9pb3ZjbnQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICBp ZihwYWdlX251bSA9PSAyKSB7CisgICAgICAgICAgICAvLyBwYWdlIHNpemUgKDRrKQorICAgICAg ICAgICAgaW50IHNpemUgPSAxIDw8IDEyOworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlv dl9iYXNlID0KKyAgICAgICAgICAgICAgICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1j dHgsIGNvbW1hbmQtPnBycDEsIHNpemUpOyAKKyAgICAgICAgICAgIGJyZXEtPmJyX2lvdlswXS5p b3ZfbGVuID0gc2l6ZTsKKworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzFdLmlvdl9iYXNlID0g CisgICAgICAgICAgICAgICAgcGFkZHJfZ3Vlc3QyaG9zdChzYy0+cGktPnBpX3ZtY3R4LCBjb21t YW5kLT5wcnAyLCBzaXplKTsKKyAgICAgICAgICAgIGJyZXEtPmJyX2lvdlsxXS5pb3ZfbGVuID0g c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHBhZ2VfbnVtID4gMikgeworCisgICAg ICAgICAgICBpbnQgcHJwMV9vZmZzZXQgPSAoY29tbWFuZC0+cHJwMSAmIDB4ZmZmKTsKKyAgICAg ICAgICAgIGludCBwcnAxX3NpemUgPSAoMSA8PCAxMikgLSBwcnAxX29mZnNldDsKKworICAgICAg ICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9iYXNlID0KKyAgICAgICAgICAgICAgICBwYWRkcl9n dWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsIHBycDFfc2l6ZSk7Cisg ICAgICAgICAgICBicmVxLT5icl9pb3ZbMF0uaW92X2xlbiA9IHBycDFfc2l6ZTsKKworICAgICAg ICAgICAgZGF0YV9zaXplIC09IDEgPDwgMTI7CisKKyAgICAgICAgICAgIHVpbnQ2NF90KiBwcnBf bGlzdCA9IHBhZGRyX2d1ZXN0Mmhvc3QoCisgICAgICAgICAgICAgICAgICAgIHNjLT5waS0+cGlf dm1jdHgsIAorICAgICAgICAgICAgICAgICAgICBjb21tYW5kLT5wcnAyLAorICAgICAgICAgICAg ICAgICAgICBzaXplb2YodWludDY0X3QpICogKHBhZ2VfbnVtIC0gMSkpOworCisgICAgICAgICAg ICBEUFJJTlRGKCJwcnAxICAgOiAweCVseCwgMHgleFxuIiwgY29tbWFuZC0+cHJwMSwgcHJwMV9z aXplKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvL1RPRE8gYmUgY2FyZWZ1 bGwgb2Ygc2l6ZS4gYnJfaW92W0JMT0NLSUZfSU9WX01BWF0uCisgICAgICAgICAgICBmb3IoaW50 IGk9MTsgaTwgcGFnZV9udW07ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp bnQgc2l6ZSA9ICgxPDwxMik7CisgICAgICAgICAgICAgICAgaWYoZGF0YV9zaXplIDwgKDEgPDwg MTIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGkgPT0g KHBhZ2VfbnVtIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBzaXplID0gZGF0YV9zaXplOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVxLT5icl9pb3ZbaV0uaW92X2Jh c2UgPSAKKyAgICAgICAgICAgICAgICAgICAgcGFkZHJfZ3Vlc3QyaG9zdChzYy0+cGktPnBpX3Zt Y3R4LCBwcnBfbGlzdFtpIC0gMV0sIHNpemUpOworICAgICAgICAgICAgICAgIGJyZXEtPmJyX2lv dltpXS5pb3ZfbGVuID0gc2l6ZTsKKworICAgICAgICAgICAgICAgIGRhdGFfc2l6ZSAtPSBzaXpl OworICAgICAgICAgICAgICAgIERQUklOVEYoInBycDJbJWRdICAgOiAweCVseCwgMHgleFxuIiwg aSwgcHJwX2xpc3RbaV0sIHNpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFBSSU5U RigibGFzdCBkYXRhIHNpemU6IDB4JXhcbiIsIGRhdGFfc2l6ZSk7CisgICAgICAgICAgICBEUFJJ TlRGKCJwYWdlIG51bSAweCV4IiwgcGFnZV9udW0pOworICAgICAgICB9CisgICAgICAgIGVsc2Ug eworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9iYXNlID0KKyAgICAgICAgICAgICAg ICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsCisgICAg ICAgICAgICAgICAgICAgICAgICBudW1iZXJfb2ZfbGIgKiBsb2dpY19ibG9ja19zaXplKTsKKwor ICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9sZW4gPSBudW1iZXJfb2ZfbGIgKiBsb2dp Y19ibG9ja19zaXplOworICAgICAgICB9CisgICAgfQorICAgIGJyZXEtPmJyX2lvdmNudCA9IHBh Z2VfbnVtOworICAgIGJyZXEtPmJyX29mZnNldCArPSBzdGFydGluZ19sYmEgKiBsb2dpY19ibG9j a19zaXplOworICAgIGJyZXEtPmJyX3Jlc2lkID0gbnVtYmVyX29mX2xiICogbG9naWNfYmxvY2tf c2l6ZTsKKyAgICBicmVxLT5icl9jYWxsYmFjayA9IHBjaV9udm1lX2Jsb2NraWZfaW9yZXFfY2I7 CisgICAgYnJlcS0+YnJfcGFyYW0gPSBucmVxOworCisgICAgVEFJTFFfSU5TRVJUX0hFQUQoJnNx X2luZm8tPmlvYmhkLCBucmVxLCBpb19ibGlzdCk7CisKKyAgICBzd2l0Y2ggKGNvbW1hbmQtPm9w YykgeworICAgICAgICBjYXNlIE5WTUVfT1BDX1JFQUQ6CisgICAgICAgICAgICBlcnIgPSBibG9j a2lmX3JlYWQoc2MtPmJjdHgsIGJyZXEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh c2UgTlZNRV9PUENfV1JJVEU6CisgICAgICAgICAgICBlcnIgPSBibG9ja2lmX3dyaXRlKHNjLT5i Y3R4LCBicmVxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg ICAgICAgLy9UT0RPCisgICAgICAgICAgICBhc3NlcnQoMCAmJiAiPz8iKTsKKyAgICB9CisKKyAg ICBhc3NlcnQoZXJyID09IDAgJiYgImJsb2NraWZfcmVhZCBvciBibG9ja2lmX3dyaXRlIGZhaWxl ZCIpOworfQorCisvKiBzdGF0aWMgdm9pZCBudm1lX252bV9jb21tYW5kX2ZsdXNoKHN0cnVjdCBw Y2lfbnZtZV9zb2Z0Yyogc2MsICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBudm1lX3N1Ym1pc3Npb25fcXVldWVfaW5mbyogc3FfaW5mbywgKi8KKy8qICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgY2lkLCAqLworLyogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzcWhkKSAqLworLyogeyAq LworLyogICAgIGFzc2VydCgibm90IHlldCBpbXBsZW1lbnRlZCIpOyAqLworLyogICAgIHN0cnVj dCBudm1lX2NvbXBsZXRpb25fcXVldWVfaW5mbyogY3FfaW5mbyA9ICovCisvKiAgICAgICAgICZz Yy0+Y3FzX2luZm9bc3FfaW5mby0+Y29tcGxldGlvbl9xaWRdOyAqLworCisvKiAgICAgcHRocmVh ZF9tdXRleF9sb2NrKCZjcV9pbmZvLT5tdHgpOyAqLworLyogICAgIHN0cnVjdCBudm1lX2NvbXBs ZXRpb24qIGNvbXBsZXRpb25fZW50cnkgPSAqLworLyogICAgICAgICAoc3RydWN0IG52bWVfY29t cGxldGlvbiopKGNxX2luZm8tPmJhc2VfYWRkciArICovCisvKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pICogKi8KKy8qICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3FfaW5mby0+aGVhZCk7ICovCisK Ky8qICAgICBjb21wbGV0aW9uX2VudHJ5LT5zcWhkID0gc3FoZDsgKi8KKy8qICAgICBjb21wbGV0 aW9uX2VudHJ5LT5zcWlkID0gc3FfaW5mby0+cWlkOyAqLworLyogICAgIGNvbXBsZXRpb25fZW50 cnktPmNpZCA9IGNpZDsgKi8KKy8qICAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMuc2N0ID0g MHgwOyAqLworLyogICAgIGNvbXBsZXRpb25fZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7ICovCisv KiAgICAgY29tcGxldGlvbl9lbnRyeS0+c3RhdHVzLnAgPSAhY29tcGxldGlvbl9lbnRyeS0+c3Rh dHVzLnA7ICovCisKKy8qICAgICBEUFJJTlRGKCJjaWQ6IDB4JXgsIGNxaWQ6IDB4JXgsIGNxX2lu Zm8tPmhlYWQgMHgleCwgY3FfaW5mby0+c2l6ZSAweCV4XG4iLCAqLworLyogICAgICAgICAgICAg Y2lkLCBzcV9pbmZvLT5jb21wbGV0aW9uX3FpZCwgY3FfaW5mby0+aGVhZCwgY3FfaW5mby0+c2l6 ZSk7ICovCisvKiAgICAgY3FfaW5mby0+aGVhZCsrOyAqLworLyogICAgIGlmIChjcV9pbmZvLT5o ZWFkID09IGNxX2luZm8tPnNpemUpIHsgKi8KKy8qICAgICAgICAgY3FfaW5mby0+aGVhZCA9IDA7 ICovCisvKiAgICAgfSAqLworLyogICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjcV9pbmZvLT5t dHgpOyAqLworCisvKiAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCBzcV9pbmZvLT5jb21w bGV0aW9uX3FpZCk7ICovCisvKiB9ICovCisKK3N0YXRpYyB2b2lkIHBjaV9udm1lX2V4ZWN1dGVf bnZtZV9jb21tYW5kKHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBxaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBzcV90YWlsKQoreworICAgIHN0cnVj dCBudm1lX3N1Ym1pc3Npb25fcXVldWVfaW5mbyogc3FfaW5mbyA9ICZzYy0+c3FzX2luZm9bcWlk XTsKKworICAgIHVpbnQxNl90IGNvbW1hbmRfaW5kZXggPSBzcV90YWlsIC0gMTsKKyAgICB1aW50 MTZfdCBzcWhkID0gc3FfdGFpbCAtIDE7CisgICAgaWYgKHNxX3RhaWwgPT0gMHgwKSB7CisgICAg ICAgIGNvbW1hbmRfaW5kZXggPSBzcV9pbmZvLT5zaXplOworICAgICAgICBzcWhkID0gc3FfaW5m by0+c2l6ZTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kID0KKyAg ICAgICAgKHN0cnVjdCBudm1lX2NvbW1hbmQqKShzcV9pbmZvLT5iYXNlX2FkZHIgKworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21tYW5kKSAqIChj b21tYW5kX2luZGV4KSk7CisKKyAgICAvKiAgICAgdWludDE2X3QgY29tcGxldGlvbl9xaWQgPSBz cV9pbmZvLT5jb21wbGV0aW9uX3FpZDsgKi8KKyAgICAvKiAgICAgc3RydWN0IG52bWVfY29tcGxl dGlvbl9xdWV1ZV9pbmZvICpjcV9pbmZvID0KKyAgICAgKiAmc2MtPmNxc19pbmZvW2NvbXBsZXRp b25fcWlkXTsgKi8KKworICAgIERQUklOVEYoIioqKioqIG52bSBjb21tYW5kIDB4JXggKioqKipc biIsIGNvbW1hbmQtPm9wYyk7CisgICAgRFBSSU5URigib3BjOiAweCV4LCBjaWQ6IDB4JXgsIG5z aWQ6IDB4JXgsIHFpZDogMHgleCwgc3FfdGFpbCAweCVseFxuIiwKKyAgICAgICAgICAgIGNvbW1h bmQtPm9wYywgY29tbWFuZC0+Y2lkLCBjb21tYW5kLT5uc2lkLCBxaWQsIHNxX3RhaWwpOworCisg ICAgc3dpdGNoIChjb21tYW5kLT5vcGMpIHsKKyAgICAgICAgY2FzZSBOVk1FX09QQ19SRUFEOgor ICAgICAgICBjYXNlIE5WTUVfT1BDX1dSSVRFOgorICAgICAgICAgICAgbnZtZV9udm1fY29tbWFu ZF9yZWFkX3dyaXRlKHNjLCBjb21tYW5kLCBzcV9pbmZvLCBzcWhkKTsKKyAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgLyogICAgICAgICBjYXNlIE5WTUVfT1BDX0ZMVVNIOiAqLworICAgICAg ICAvKiAgICAgICAgICAgICBudm1lX252bV9jb21tYW5kX2ZsdXNoKHNjLCBzcV9pbmZvLCBjb21t YW5kLT5jaWQsIHNxaGQpOworICAgICAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgcmV0 dXJuOyAqLworICAgICAgICAvKiAgICAgICAgIGNhc2UgTlZNRV9PUENfREFUQVNFVF9NQU5BR0VN RU5UOiAqLworICAgICAgICAvKiAgICAgICAgICAgICB7ICovCisgICAgICAgIC8qICAgICAgICAg ICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmNxX2luZm8tPm10eCk7ICovCisgICAgICAgIC8q ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjb21wbGV0aW9uX2VudHJ5 ID0gICovCisgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgcGNpX252bWVfYWNxdWlyZV9j b21wbGV0aW9uX2VudHJ5KHNjLCBjcV9pbmZvKTsKKyAgICAgICAgICovCisgICAgICAgIC8qICAg ICAgICAgICAgICAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMuc2MgPSAweDAwOyAqLworICAg ICAgICAvKiAgICAgICAgICAgICAgICAgY29tcGxldGlvbl9lbnRyeS0+c3RhdHVzLnNjdCA9IDB4 MDsgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZj cV9pbmZvLT5tdHgpOyAqLworCisgICAgICAgIC8qICAgICAgICAgICAgICAgICBwY2lfZ2VuZXJh dGVfbXNpeChzYy0+cGksIHNxX2luZm8tPmNvbXBsZXRpb25fcWlkKTsKKyAgICAgICAgICovCisg ICAgICAgIC8qICAgICAgICAgICAgICAgICByZXR1cm47ICovCisgICAgICAgIC8qICAgICAgICAg ICAgIH0gKi8KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDAgJiYgInRo ZSBudm1lIGNvbW1hbmQgaXMgbm90IGltcGxlbWVudGVkIHlldCIpOworICAgIH0KK30KKworc3Rh dGljIHZvaWQgcGNpX252bWVfd3JpdGVfYmFyXzAoc3RydWN0IHZtY3R4KiBjdHgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVnb2ZmLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkKK3sKKyAgICAvLyB3cml0ZSB2YWx1ZSB0byBkb29y YmVsbCByZWdpc3RlcgorICAgIC8vIFRPRE8gbGltaXQgb2YgZG9vcmJlbGwgcmVnaXN0ZXIgYWRk cmVzcyBpcyBkZXBlbmQgb24gdGhlIG51bWJlciBvZiBxdWV1ZQorICAgIC8vIHBhaXJzLgorICAg IGlmIChyZWdvZmYgPj0gTlZNRV9DUl9JT19RVUVVRV9CQVNFICYmIHJlZ29mZiA8IE5WTUVfQ1Jf U0laRSkgeworICAgICAgICBpbnQgcXVldWVfb2Zmc2V0ID0gcmVnb2ZmIC0gTlZNRV9DUl9JT19R VUVVRV9CQVNFOyAgLy8gMHgxMDAwIGlzIE5WTUVfQ1JfSU9fUVVFVUVfQkFTRQorICAgICAgICBE UFJJTlRGKCJyZWdvZmYgMHglbHhcbiIsIHJlZ29mZik7CisgICAgICAgIGludCBxaWQgPSBxdWV1 ZV9vZmZzZXQgLyA4OyAgLy8gNCBpcyBkb29yYmVsbCByZWdpc3RlciBzaXplCisgICAgICAgIGlu dCBpc19jb21wbGV0aW9uID0gKHF1ZXVlX29mZnNldCAvIDQpICUgMjsKKworICAgICAgICAvLyBj b21wbGV0aW9uIGRvb3JiZWxsCisgICAgICAgIGlmIChpc19jb21wbGV0aW9uKSB7CisgICAgICAg ICAgICBEUFJJTlRGKCJjb21wbGV0aW9uIGRvb3JiZWxsICglZCkgaXMga25vY2tlZCwgY3FoZCAw eCV4XG4iLCAKKyAgICAgICAgICAgICAgICAgICAgcWlkLCAodWludDE2X3QpdmFsdWUpOworICAg ICAgICAgICAgaWYgKHFpZCA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAgICAg ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAg ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIHN1 Ym1pc3Npb24gZG9vcmJlbGwKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBhZG1pbiBj b21tYW5kCisgICAgICAgICAgICBpZiAocWlkID09IDApIHsKKyAgICAgICAgICAgICAgICBwY2lf bnZtZV9leGVjdXRlX2FkbWluX2NvbW1hbmQoc2MsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBy ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBudm1lIGNvbW1hbmQKKyAgICAg ICAgICAgIC8vIFRPRE8gdmFsaWRhdGUgcWlkCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg ICAgICAgICBwY2lfbnZtZV9leGVjdXRlX252bWVfY29tbWFuZChzYywgcWlkLCB2YWx1ZSk7Cisg ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg IGFzc2VydCgwKTsKKyAgICB9CisKKyAgICBEUFJJTlRGKCJ3cml0ZSAweCVseCwgdmFsdWUgJWx4 IFxuIiwgcmVnb2ZmLCB2YWx1ZSk7CisgICAgYXNzZXJ0KHNpemUgPT0gNCAmJiAid29yZCBzaXpl IHNob3VsZCBiZSA0KGJ5dGUpIik7CisgICAgc3dpdGNoIChyZWdvZmYpIHsKKyAgICAgICAgY2Fz ZSBOVk1FX0NSX0NDOgorCisgICAgICAgICAgICAvLyBlbmFibGUgKEVOKSBiaXQgaW4gY29udHJv bGxlciByZWdpc3RlcgorICAgICAgICAgICAgLyogLSAwIC0+IDEKKyAgICAgICAgICAgICAqICAg ICAgLSBXaGVuIGEgY29udHJvbGxlciBpcyByZWFkeSB0byBwcm9jZXNzIGNvbW1hbmRzLCB0aGUK KyAgICAgICAgICAgICAqICAgICAgY29udHJvbGxlciBzZXQgJzEnIHRvIENTVFMuUkRZLgorICAg ICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoKHNjLT5yZWdzLmNjLmJpdHMuZW4gPT0gMCkg JiYgKHZhbHVlICYgTlZNRV9DQ19FTikpIHsKKyAgICAgICAgICAgICAgICBwY2lfbnZtZV9yZXNl dChzYyk7CisgICAgICAgICAgICAgICAgcGNpX252bWVfc2V0dXBfY29udHJvbGxlcihjdHgsIHNj KTsKKyAgICAgICAgICAgICAgICBEUFJJTlRGKCJudm1lIHVwXG4iKTsKKyAgICAgICAgICAgIH0K KworICAgICAgICAgICAgLy8gVE9ETworICAgICAgICAgICAgLyogLSAxIC0+IDAKKyAgICAgICAg ICAgICAqICBDb250cm9sZXIgUmVzZXQKKyAgICAgICAgICAgICAqICAgICAgLSBkZWxldGUgYWxs IEkvTyBTdWJtaXNzaW9uIHF1ZXVlcyBhbmQgQ29tcGxldGlvbiBxdWV1ZXMKKyAgICAgICAgICAg ICAqICAgICAgLSByZXNldCBhZG1pbiBzdWJtaXR0aW9uIHF1ZXVlIGFuZCBjb21wbGV0aW9uIHF1 ZXVlCisgICAgICAgICAgICAgKiAgICAgIC0gbW92ZSB0byBpZGxlIHN0YXRlCisgICAgICAgICAg ICAgKiAgICAgIC0gYWxsIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGFyZSByZXNldCB0byB0aGVpciBk ZWZhdWx0IHZhbHVlcworICAgICAgICAgICAgICogICAgICAoZGVmaW5lZCBpbiBzZWN0aW9uIDUu MjEuMSkKKyAgICAgICAgICAgICAqICAgICAgLSBDU1RTLlJEWSBiaXQgaXMgY2xlYXJlZCB0byAn MCcuCisgICAgICAgICAgICAgKi8gIAorICAgICAgICAgICAgaWYgKChzYy0+cmVncy5jYy5iaXRz LmVuID09IDEpICYmICEodmFsdWUgJiBOVk1FX0NDX0VOKSkgeworICAgICAgICAgICAgICAgIERQ UklOVEYoIm52bWUgZG93blxuIik7CisgICAgICAgICAgICAgICAgc2MtPnJlZ3MuY3N0cy5iaXRz LnJkeSA9IDA7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAgICAgICAgICAgICAgIC8qICAg ICAgICAgICAgICAgICAgICAgYXNzZXJ0KDApOyAqLworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBzd2l0Y2goKHZhbHVlICYgTlZNRV9DQ19TSE4pID4+IDE0KQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGNhc2UgTlZNRV9TSE5fTk9FRkNUOgorICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5WTUVfU0hOX05PUk1BTDoKKyAgICAgICAg ICAgICAgICAgICAgc2MtPnJlZ3MuY3N0cy5iaXRzLnNoc3QgPSBOVk1FX1NIU1RfQ09NUExFVEU7 CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTlZNRV9T SE5fQUJSVVBUOgorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg IGFzc2VydCgwICYmICJub3QgeWV0IGltcGxlbWVudGVkIik7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIHNjLT5yZWdzLmNjLnJhdyA9ICh1aW50MzJfdCl2YWx1ZTsKKyAgICAgICAgICAg IHJldHVybjsKKworICAgICAgICBjYXNlIE5WTUVfQ1JfQVFBOgorICAgICAgICAgICAgc2MtPnJl Z3MuYXFhLnJhdyA9ICh1aW50MzJfdCl2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAg ICAgICBjYXNlIE5WTUVfQ1JfQVNRX0xPVzoKKyAgICAgICAgICAgIHNjLT5yZWdzLmFzcSA9Cisg ICAgICAgICAgICAgICAgKHNjLT5yZWdzLmFzcSAmIDB4ZmZmZmZmZmYwMDAwMDAwMCkgfCAoMHhm ZmZmZjAwMCAmIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIE5W TUVfQ1JfQVNRX0hJOgorICAgICAgICAgICAgc2MtPnJlZ3MuYXNxID0gKHNjLT5yZWdzLmFzcSAm IDB4MDAwMDAwMDBmZmZmZmZmZikgfCAodmFsdWUgPDwgMzIpOworICAgICAgICAgICAgcmV0dXJu OworCisgICAgICAgIGNhc2UgTlZNRV9DUl9BQ1FfTE9XOgorICAgICAgICAgICAgc2MtPnJlZ3Mu YWNxID0KKyAgICAgICAgICAgICAgICAoc2MtPnJlZ3MuYWNxICYgMHhmZmZmZmZmZjAwMDAwMDAw KSB8ICgweGZmZmZmMDAwICYgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg IGNhc2UgTlZNRV9DUl9BQ1FfSEk6CisgICAgICAgICAgICBzYy0+cmVncy5hY3EgPSAoc2MtPnJl Z3MuYWNxICYgMHgwMDAwMDAwMGZmZmZmZmZmKSB8ICh2YWx1ZSA8PCAzMik7CisgICAgICAgICAg ICByZXR1cm47CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklOVEYoInVua25v d24gcmVnb2ZmIDB4JWx4IHdpdGggdmFsdWUgMHglbHgsIHNpemUgJWQgaW4gJXNcbiIsCisgICAg ICAgICAgICAgICAgICAgIHJlZ29mZiwgdmFsdWUsIHNpemUsIF9fZnVuY19fKTsKKyAgICAgICAg ICAgIGFzc2VydCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHBjaV9udm1lX3dyaXRlKHN0 cnVjdCB2bWN0eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZjcHUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGJhcmlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IHJlZ29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXpl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWUpCit7CisgICAgc3Ry dWN0IHBjaV9udm1lX3NvZnRjKiBzYyA9IHBpLT5waV9hcmc7CisKKyAgICBpZiAoYmFyaWR4ID09 IHBjaV9tc2l4X3RhYmxlX2JhcihwaSkgfHwgYmFyaWR4ID09IHBjaV9tc2l4X3BiYV9iYXIocGkp KSB7CisgICAgICAgIERQUklOVEYoImJhcmlkeCwgJWQsIG1zaXg6IHJlZ29mZiAweCVseCwgc2l6 ZSAlZCwgdmFsdWUgJWx4XG4iLCBiYXJpZHgsCisgICAgICAgICAgICAgICAgcmVnb2ZmLCBzaXpl LCB2YWx1ZSk7CisgICAgICAgIHBjaV9lbXVsX21zaXhfdHdyaXRlKHBpLCByZWdvZmYsIHNpemUs IHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoYmFyaWR4KSB7 CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHBjaV9udm1lX3dyaXRlX2Jhcl8wKGN0eCwg c2MsIHJlZ29mZiwgdmFsdWUsIHNpemUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg ZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklOVEYoInVua25vd24gYmFyaWR4ICVkIHdpdGggMHgl bHggaW4gJXNcbiIsIGJhcmlkeCwgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f KTsKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50NjRfdCBw Y2lfbnZtZV9yZWFkX2Jhcl8wKAorICAgIHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAg ZW51bSBudm1lX2NvbnRyb2xsZXJfcmVnaXN0ZXJfb2Zmc2V0cyBvZmZzZXQsCisgICAgaW50IHNp emUpCit7CisgICAgRFBSSU5URigicmVhZCAweCV4XG4iLCBvZmZzZXQpOworICAgIGFzc2VydChz aXplID09IDQgJiYgIndvcmQgc2l6ZSBzaG91bGQgYmUgNC4iKTsKKyAgICBzd2l0Y2ggKG9mZnNl dCkgeworICAgICAgICBjYXNlIE5WTUVfQ1JfQ0FQX0xPVzoKKyAgICAgICAgICAgIHJldHVybiAo dWludDY0X3Qpc2MtPnJlZ3MuY2FwX2xvLnJhdzsKKworICAgICAgICBjYXNlIE5WTUVfQ1JfQ0FQ X0hJOgorICAgICAgICAgICAgcmV0dXJuICh1aW50NjRfdClzYy0+cmVncy5jYXBfaGkucmF3Owor CisgICAgICAgIGNhc2UgTlZNRV9DUl9WUzoKKyAgICAgICAgICAgIHJldHVybiAodWludDY0X3Qp c2MtPnJlZ3MudnM7CisKKyAgICAgICAgY2FzZSBOVk1FX0NSX0NDOgorICAgICAgICAgICAgcmV0 dXJuICh1aW50NjRfdClzYy0+cmVncy5jYy5yYXc7CisKKyAgICAgICAgY2FzZSBOVk1FX0NSX0NT VFM6CisgICAgICAgICAgICBEUFJJTlRGKCJDU1RTIHJhdyAweCV4XG4iLCBzYy0+cmVncy5jc3Rz LnJhdyk7CisgICAgICAgICAgICByZXR1cm4gKHVpbnQ2NF90KXNjLT5yZWdzLmNzdHMucmF3Owor CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBEUFJJTlRGKCJ1bmtub3duIHJlZ29mZiB2 YWx1ZTogMHgleCwgc2l6ZSAlZCBpbiAlc1xuIiwgb2Zmc2V0LCBzaXplLAorICAgICAgICAgICAg ICAgICAgICBfX2Z1bmNfXyk7CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorCisgICAg cmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBwY2lfbnZtZV9yZWFkKHN0cnVjdCB2bWN0 eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZjcHUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGJhcmlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90IHJlZ29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBzaXplKQoreworICAgIHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MgPSBwaS0+cGlfYXJnOwor CisgICAgaWYgKGJhcmlkeCA9PSBwY2lfbXNpeF90YWJsZV9iYXIocGkpIHx8IGJhcmlkeCA9PSBw Y2lfbXNpeF9wYmFfYmFyKHBpKSkgeworICAgICAgICBEUFJJTlRGKCJiYXJpZHg6ICVkLCBtc2l4 OiByZWdvZmYgMHglbHgsIHNpemUgJWRcbiIsIGJhcmlkeCwgcmVnb2ZmLAorICAgICAgICAgICAg ICAgIHNpemUpOworICAgICAgICByZXR1cm4gcGNpX2VtdWxfbXNpeF90cmVhZChwaSwgcmVnb2Zm LCBzaXplKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGJhcmlkeCkgeworICAgICAgICBjYXNlIDA6 CisgICAgICAgICAgICByZXR1cm4gcGNpX252bWVfcmVhZF9iYXJfMChzYywgcmVnb2ZmLCBzaXpl KTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgRFBSSU5URigidW5rbm93biBiYXIg JWQsIDB4JWx4XG4iLCBiYXJpZHgsIHJlZ29mZik7CisgICAgICAgICAgICBhc3NlcnQoMCk7Cisg ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBwY2lfZGV2ZW11IHBjaV9kZV9udm1l ID0geworICAgIC5wZV9lbXUgPSAibnZtZSIsCisgICAgLnBlX2luaXQgPSBwY2lfbnZtZV9pbml0 LAorICAgIC5wZV9iYXJ3cml0ZSA9IHBjaV9udm1lX3dyaXRlLAorICAgIC5wZV9iYXJyZWFkID0g cGNpX252bWVfcmVhZAorfTsKK1BDSV9FTVVMX1NFVChwY2lfZGVfbnZtZSk7CmRpZmYgLS1naXQg YS91c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44IGIvdXNyLnNiaW4vYmh5dmUvYmh5dmUuOAotLS0gYS91 c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44CisrKyBiL3Vzci5zYmluL2JoeXZlL2JoeXZlLjgKQEAgLTE4 MCw2ICsxODAsOCBAQAogLkl0IExpIGxwYwogTFBDIFBDSS1JU0EgYnJpZGdlIHdpdGggQ09NMSBh bmQgQ09NMiAxNjU1MCBzZXJpYWwgcG9ydHMgYW5kIGEgYm9vdCBST00uCiBUaGUgTFBDIGJyaWRn ZSBlbXVsYXRpb24gY2FuIG9ubHkgYmUgY29uZmlndXJlZCBvbiBidXMgMC4KKy5JdCBMaSBudm1l CitOVk1lIGNvbnRyb2xsZXIgYXR0YWNoZWQuCiAuRWwKIC5JdCBPcCBBciBjb25mCiBUaGlzIG9w dGlvbmFsIHBhcmFtZXRlciBkZXNjcmliZXMgdGhlIGJhY2tlbmQgZm9yIGRldmljZSBlbXVsYXRp b25zLgpkaWZmIC0tZ2l0IGEvdXNyLnNiaW4vYmh5dmUvTWFrZWZpbGUgYi91c3Iuc2Jpbi9iaHl2 ZS9NYWtlZmlsZQotLS0gYS91c3Iuc2Jpbi9iaHl2ZS9NYWtlZmlsZQorKysgYi91c3Iuc2Jpbi9i aHl2ZS9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBAQAogCXBjaV92aXJ0aW9fcm5kLmMJXAogCXBj aV91YXJ0LmMJCVwKIAlwY2lfeGhjaS5jCQlcCisJcGNpX252bWUuYwkJXAogCXBtLmMJCQlcCiAJ cG9zdC5jCQkJXAogCXBzMmtiZC5jCQlcCkBAIC02MSw3ICs2Miw3IEBACiAKIExJQkFERD0Jdm1t YXBpIG1kIHB0aHJlYWQgegogCi1DRkxBR1MrPSAtSSR7QkhZVkVfU1lTRElSfS9zeXMvZGV2L3Vz Yi9jb250cm9sbGVyCitDRkxBR1MrPSAtSSR7QkhZVkVfU1lTRElSfS9zeXMvZGV2L3VzYi9jb250 cm9sbGVyIC1JJHtCSFlWRV9TWVNESVJ9L3N5cy9kZXYvbnZtZS8KIAogV0FSTlM/PQkyCiAKZGlm ZiAtLWdpdCBhL3N5cy9kZXYvbnZtZS9udm1lLmggYi9zeXMvZGV2L252bWUvbnZtZS5oCi0tLSBh L3N5cy9kZXYvbnZtZS9udm1lLmgKKysrIGIvc3lzL2Rldi9udm1lL252bWUuaApAQCAtMTI0LDYg KzEyNCw3IEBACiB9IF9fcGFja2VkOwogCiBlbnVtIHNobl92YWx1ZSB7CisgICAgTlZNRV9TSE5f Tk9FRkNUICAgICA9IDB4MCwKIAlOVk1FX1NITl9OT1JNQUwJCT0gMHgxLAogCU5WTUVfU0hOX0FC UlVQVAkJPSAweDIsCiB9OwoK --b1_03bd2db2ea9364bf79c571da2b2f20e4-- From owner-freebsd-virtualization@freebsd.org Sat Jan 20 12:27:46 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6FDBBECE4F4 for ; Sat, 20 Jan 2018 12:27:46 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 488FE77275 for ; Sat, 20 Jan 2018 12:27:46 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 88B371C544 for ; Sat, 20 Jan 2018 12:27:45 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id 7FA1FBFA0D; Sat, 20 Jan 2018 12:27:45 +0000 (UTC) Date: Sat, 20 Jan 2018 12:27:45 +0000 To: freebsd-virtualization@freebsd.org From: "sux2mfgj_gmail.com (Shunsuke Mie)" Reply-to: D13995+333+f248ba92bf0c9c79@reviews.freebsd.org Subject: [Differential] D13995: NVMe controller emulator for bhyve. Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: Thread-Topic: D13995: NVMe controller emulator for bhyve. X-Herald-Rules: <95> X-Phabricator-Projects: <#bhyve> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: ZGM1NGRjZmQzNjRiMjY5OGVhNjhmY2UxNzhjIFpjNcE= MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2018 12:27:46 -0000 c3V4Mm1mZ2pfZ21haWwuY29tIGVkaXRlZCB0aGUgc3VtbWFyeSBvZiB0aGlzIHJldmlzaW9uLgoK UkVWSVNJT04gREVUQUlMCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QxMzk5NQoKRU1B SUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvc2V0dGluZ3MvcGFu ZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBzdXgybWZnal9nbWFpbC5jb20sIGdyZWhhbiwgdHJh c3oKQ2M6IGZyZWVic2QtdmlydHVhbGl6YXRpb24tbGlzdCwgY2h1Y2sK From owner-freebsd-virtualization@freebsd.org Sat Jan 20 12:28:10 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BEE69ECE553 for ; Sat, 20 Jan 2018 12:28:10 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 91660772DE for ; Sat, 20 Jan 2018 12:28:10 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id C3B081C548 for ; Sat, 20 Jan 2018 12:28:09 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id C2B68BFA7B; Sat, 20 Jan 2018 12:28:09 +0000 (UTC) Date: Sat, 20 Jan 2018 12:28:09 +0000 To: freebsd-virtualization@freebsd.org From: "sux2mfgj_gmail.com (Shunsuke Mie)" Reply-to: D13995+333+f248ba92bf0c9c79@reviews.freebsd.org Subject: [Differential] D13995: NVMe controller emulator for bhyve. Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: Thread-Topic: D13995: NVMe controller emulator for bhyve. X-Herald-Rules: <95> X-Phabricator-Projects: <#bhyve> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: ZGM1NGRjZmQzNjRiMjY5OGVhNjhmY2UxNzhjIFpjNdk= MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2018 12:28:10 -0000 c3V4Mm1mZ2pfZ21haWwuY29tIGVkaXRlZCB0aGUgc3VtbWFyeSBvZiB0aGlzIHJldmlzaW9uLgoK UkVWSVNJT04gREVUQUlMCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QxMzk5NQoKRU1B SUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvc2V0dGluZ3MvcGFu ZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBzdXgybWZnal9nbWFpbC5jb20sIGdyZWhhbiwgdHJh c3oKQ2M6IGZyZWVic2QtdmlydHVhbGl6YXRpb24tbGlzdCwgY2h1Y2sK From owner-freebsd-virtualization@freebsd.org Sat Jan 20 18:36:02 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 81CFCEBF187 for ; Sat, 20 Jan 2018 18:36:02 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 58AB825B9 for ; Sat, 20 Jan 2018 18:36:02 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 996FD2016B for ; Sat, 20 Jan 2018 18:36:00 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id 984B1B45F0; Sat, 20 Jan 2018 18:36:00 +0000 (UTC) Date: Sat, 20 Jan 2018 18:36:00 +0000 To: freebsd-virtualization@freebsd.org From: "cem (Conrad Meyer)" Reply-to: D13995+333+f248ba92bf0c9c79@reviews.freebsd.org Subject: [Differential] D13995: NVMe controller emulator for bhyve. Message-ID: <7bf99cded0621f5537180125aef86e2b@localhost.localdomain> X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , Thread-Topic: D13995: NVMe controller emulator for bhyve. X-Herald-Rules: <95> X-Phabricator-Projects: <#bhyve> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: ZGM1NGRjZmQzNjRiMjY5OGVhNjhmY2UxNzhjIFpjjBA= MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2018 18:36:02 -0000 Y2VtIGFkZGVkIGEgcmV2aWV3ZXI6IGltcC4KY2VtIGFkZGVkIGEgY29tbWVudC4KCgogIEF3ZXNv bWUhCiAgCiAgSSBjYW4ndCBzcGVhayB0byB0aGUgTlZNZSBlbXVsYXRpb24gaXRzZWxmIChJIGtu b3cgYWxtb3N0IG5vdGhpbmcgYWJvdXQgdGhlIHByb3RvY29sIGFuZCBub3RoaW5nIGFib3V0IEJo eXZlIEhXIGVtdSBpbnRlcmZhY2VzKS4gIE1heWJlIFdhcm5lciBjYW4uCgpJTkxJTkUgQ09NTUVO VFMKCj4gbnZtZS5oOjEyNwo+ICBlbnVtIHNobl92YWx1ZSB7Cj4gKyAgICBOVk1FX1NITl9OT0VG Q1QgICAgID0gMHgwLAo+ICAJTlZNRV9TSE5fTk9STUFMCQk9IDB4MSwKCmluZGVudGF0aW9uIGxv b2tzIG9mZiBoZXJlLiAgaXMgaXQganVzdCBwaGFicmljYXRvcj8KCj4gTWFrZWZpbGU6NjUKPiAg Cj4gLUNGTEFHUys9IC1JJHtCSFlWRV9TWVNESVJ9L3N5cy9kZXYvdXNiL2NvbnRyb2xsZXIKPiAr Q0ZMQUdTKz0gLUkke0JIWVZFX1NZU0RJUn0vc3lzL2Rldi91c2IvY29udHJvbGxlciAtSSR7QkhZ VkVfU1lTRElSfS9zeXMvZGV2L252bWUvCj4gIAoKZG9uJ3QgbmVlZCB0cmFpbGluZyBzbGFzaAoK PiBwY2lfbnZtZS5jOjE5Cj4gKyNpZmRlZiBOVk1FX0RFQlVHCj4gK3N0YXRpYyBGSUxFKiBkYmc7 Cj4gKyNkZWZpbmUgRFBSSU5URihmb3JtYXQsIGFyZy4uLikgICAgICBcCgpzdHlsZSBuaXQ6IGBz dGF0aWMgRklMRSAqZGJnO2AgKGFzdGVyaXNrIGdvZXMgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhl IHNwYWNlKQoKPiBwY2lfbnZtZS5jOjIxCj4gKyNkZWZpbmUgRFBSSU5URihmb3JtYXQsIGFyZy4u LikgICAgICBcCj4gKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg ICAgICAgZnByaW50ZihkYmcsIGZvcm1hdCwgIyNhcmcpOyBcCgpzdHlsZSBuaXQ6IFNob3VsZCBi ZSB0YWIgaW5kZW50cyB0aHJvdWdob3V0IChjYW4ndCB0ZWxsIGlmIHRoYXQncyBqdXN0IFBoYWIg bWFraW5nIGl0IGxvb2sgbGlrZSA0IHNwYWNlcyBvciBhY3R1YWxseSA0IHNwYWNlcykuCgpSRVZJ U0lPTiBERVRBSUwKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDEzOTk1CgpFTUFJTCBQ UkVGRVJFTkNFUwogIGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9zZXR0aW5ncy9wYW5lbC9l bWFpbHByZWZlcmVuY2VzLwoKVG86IHN1eDJtZmdqX2dtYWlsLmNvbSwgZ3JlaGFuLCB0cmFzeiwg aW1wCkNjOiBjZW0sIGZyZWVic2QtdmlydHVhbGl6YXRpb24tbGlzdCwgY2h1Y2sK From owner-freebsd-virtualization@freebsd.org Sat Jan 20 18:52:04 2018 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6B8A2EBFFC1 for ; Sat, 20 Jan 2018 18:52:04 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4295430C3 for ; Sat, 20 Jan 2018 18:52:04 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 00FB42037E for ; Sat, 20 Jan 2018 18:52:03 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id 00000B7A2A; Sat, 20 Jan 2018 18:52:02 +0000 (UTC) Date: Sat, 20 Jan 2018 18:52:02 +0000 To: freebsd-virtualization@freebsd.org From: rgrimes Reply-to: D13995+333+f248ba92bf0c9c79@reviews.freebsd.org Subject: [Differential] D13995: NVMe controller emulator for bhyve. Message-ID: <088f28d2d722207066144b380a0d7fac@localhost.localdomain> X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , Thread-Topic: D13995: NVMe controller emulator for bhyve. X-Herald-Rules: <95> X-Phabricator-Projects: <#bhyve> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: ZGM1NGRjZmQzNjRiMjY5OGVhNjhmY2UxNzhjIFpjj9I= MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.25 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2018 18:52:04 -0000 cmdyaW1lcyBhZGRlZCBhIGNvbW1lbnQuCgoKICBJIGRpZCBhIHZlcnkgcXVpY2sgb25lIHRpbWUg c2NhbiBkb3duIHRoZSBjb2RlIGp1c3QgdG8gc2VlIHdoYXQgd2FzIGhlcmUsIHRoZXNlIGFyZSBt eSBjb21tZW50cyBhYm91dCBpdC4KICBOb25lIG9mIHRoZSBmdW5jdGlvbnMgaGF2ZSBibG9jayBz dGFydCBjb21tZW50cyBzdGF0aW5nIHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzLgoKSU5MSU5FIENP TU1FTlRTCgo+IHBjaV9udm1lLmM6MQo+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiArI2luY2x1ZGUg PHN0ZGxpYi5oPgoKRmlsZSBpcyBtaXNzaW5nIGEgY29weXJpZ2h0LCBhbmQgYSAkRnJlZUJTRCQs IHdoZXJlIGRpZCB0aGlzIGNvZGUgY29tZSBmcm9tPyAgV2hvIHdyb3RlIGl0PwoKPiBwY2lfbnZt ZS5jOjg1MAo+ICsKPiArICAgIAo+ICsgICAgaW50IGRhdGFfc2l6ZSA9IG51bWJlcl9vZl9sYiAq IGxvZ2ljX2Jsb2NrX3NpemU7CgpzdHlsZSBuaXQsIGV4dHJhIGJsYW5rIGxpbmUKCj4gcGNpX252 bWUuYzo5ODUKPiArLyogICAgIHBjaV9nZW5lcmF0ZV9tc2l4KHNjLT5waSwgc3FfaW5mby0+Y29t cGxldGlvbl9xaWQpOyAqLwo+ICsvKiB9ICovCj4gKwoKV2h5IGlzIHRoaXMgY29kZSBoZXJlIGFu ZCBhbGwgY29tbWVudGVkIG91dD8KI2lmIDAvI2VuZGlmIHdvdWxkIG1ha2UgdGhpcyBtb3JlIHJl YWRhYmxlLgoKUkVWSVNJT04gREVUQUlMCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0Qx Mzk5NQoKRU1BSUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvc2V0 dGluZ3MvcGFuZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBzdXgybWZnal9nbWFpbC5jb20sIGdy ZWhhbiwgdHJhc3osIGltcApDYzogcmdyaW1lcywgY2VtLCBmcmVlYnNkLXZpcnR1YWxpemF0aW9u LWxpc3QsIGNodWNrCg==