From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7B75C433DB for ; Tue, 16 Feb 2021 17:03:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8178264DEC for ; Tue, 16 Feb 2021 17:03:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230310AbhBPRDo (ORCPT ); Tue, 16 Feb 2021 12:03:44 -0500 Received: from foss.arm.com ([217.140.110.172]:39226 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229784AbhBPRDl (ORCPT ); Tue, 16 Feb 2021 12:03:41 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A539C101E; Tue, 16 Feb 2021 09:02:55 -0800 (PST) Received: from [192.168.0.110] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A99363F73B; Tue, 16 Feb 2021 09:02:54 -0800 (PST) Subject: Re: [PATCH kvmtool 17/21] virtio: Switch trap handling to use MMIO handler To: Andre Przywara , Will Deacon , Julien Thierry Cc: kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org, Marc Zyngier References: <20201210142908.169597-1-andre.przywara@arm.com> <20201210142908.169597-18-andre.przywara@arm.com> From: Alexandru Elisei Message-ID: <0c6e033e-4bc4-bc81-173f-c7c195ded78a@arm.com> Date: Tue, 16 Feb 2021 17:03:04 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20201210142908.169597-18-andre.przywara@arm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Hi Andre, Nitpick below, otherwise looks good. On 12/10/20 2:29 PM, Andre Przywara wrote: > With the planned retirement of the special ioport emulation code, we > need to provide an emulation function compatible with the MMIO prototype. > > Adjust the existing MMIO callback routine to automatically determine > the region this trap came through, and call the existing I/O handlers. > Register the ioport region using the new registration function. > > Signed-off-by: Andre Przywara > --- > virtio/pci.c | 42 ++++++++++-------------------------------- > 1 file changed, 10 insertions(+), 32 deletions(-) > > diff --git a/virtio/pci.c b/virtio/pci.c > index 6eea6c68..49d3f4d5 100644 > --- a/virtio/pci.c > +++ b/virtio/pci.c > @@ -178,15 +178,6 @@ static bool virtio_pci__data_in(struct kvm_cpu *vcpu, struct virtio_device *vdev > return ret; > } > > -static bool virtio_pci__io_in(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) > -{ > - struct virtio_device *vdev = ioport->priv; > - struct virtio_pci *vpci = vdev->virtio; > - unsigned long offset = port - virtio_pci__port_addr(vpci); > - > - return virtio_pci__data_in(vcpu, vdev, offset, data, size); > -} > - > static void update_msix_map(struct virtio_pci *vpci, > struct msix_table *msix_entry, u32 vecnum) > { > @@ -334,20 +325,6 @@ static bool virtio_pci__data_out(struct kvm_cpu *vcpu, struct virtio_device *vde > return ret; > } > > -static bool virtio_pci__io_out(struct ioport *ioport, struct kvm_cpu *vcpu, u16 port, void *data, int size) > -{ > - struct virtio_device *vdev = ioport->priv; > - struct virtio_pci *vpci = vdev->virtio; > - unsigned long offset = port - virtio_pci__port_addr(vpci); > - > - return virtio_pci__data_out(vcpu, vdev, offset, data, size); > -} > - > -static struct ioport_operations virtio_pci__io_ops = { > - .io_in = virtio_pci__io_in, > - .io_out = virtio_pci__io_out, > -}; > - > static void virtio_pci__msix_mmio_callback(struct kvm_cpu *vcpu, > u64 addr, u8 *data, u32 len, > u8 is_write, void *ptr) > @@ -455,12 +432,15 @@ static void virtio_pci__io_mmio_callback(struct kvm_cpu *vcpu, > { > struct virtio_device *vdev = ptr; > struct virtio_pci *vpci = vdev->virtio; > - u32 mmio_addr = virtio_pci__mmio_addr(vpci); > + u32 base_addr = virtio_pci__mmio_addr(vpci); > + > + if (addr < base_addr || addr >= base_addr + PCI_IO_SIZE) > + base_addr = virtio_pci__port_addr(vpci); There are only two BARs that use this callback, the ioport BAR (BAR0) and the memory BAR (BAR1) (MSIX uses a different emulation callback). The condition above says that if addr is not inside the region described by the memory BAR, then it's an ioport BAR. How about checking explicitly that it is inside the ioport region like this (compile tested only), which looks a bit more intuitive for me: diff --git a/virtio/pci.c b/virtio/pci.c index 49d3f4d524b2..4024bcd709cd 100644 --- a/virtio/pci.c +++ b/virtio/pci.c @@ -432,10 +432,15 @@ static void virtio_pci__io_mmio_callback(struct kvm_cpu *vcpu,  {         struct virtio_device *vdev = ptr;         struct virtio_pci *vpci = vdev->virtio; -       u32 base_addr = virtio_pci__mmio_addr(vpci); +       u32 mmio_addr = virtio_pci__mmio_addr(vpci); +       u32 ioport_addr = virtio_pci__port_addr(vpci); +       u32 base_addr;   -       if (addr < base_addr || addr >= base_addr + PCI_IO_SIZE) -               base_addr = virtio_pci__port_addr(vpci); +       if (addr >= ioport_addr && +           addr < ioport_addr + pci__bar_size(&vpci->pci_hdr, 0)) +               base_addr = ioport_addr; +       else +               base_addr = mmio_addr;           if (!is_write)                 virtio_pci__data_in(vcpu, vdev, addr - base_addr, data, len); Thanks, Alex > > if (!is_write) > - virtio_pci__data_in(vcpu, vdev, addr - mmio_addr, data, len); > + virtio_pci__data_in(vcpu, vdev, addr - base_addr, data, len); > else > - virtio_pci__data_out(vcpu, vdev, addr - mmio_addr, data, len); > + virtio_pci__data_out(vcpu, vdev, addr - base_addr, data, len); > } > > static int virtio_pci__bar_activate(struct kvm *kvm, > @@ -478,10 +458,8 @@ static int virtio_pci__bar_activate(struct kvm *kvm, > > switch (bar_num) { > case 0: > - r = ioport__register(kvm, bar_addr, &virtio_pci__io_ops, > - bar_size, vdev); > - if (r > 0) > - r = 0; > + r = kvm__register_pio(kvm, bar_addr, bar_size, > + virtio_pci__io_mmio_callback, vdev); > break; > case 1: > r = kvm__register_mmio(kvm, bar_addr, bar_size, false, > @@ -510,7 +488,7 @@ static int virtio_pci__bar_deactivate(struct kvm *kvm, > > switch (bar_num) { > case 0: > - r = ioport__unregister(kvm, bar_addr); > + r = kvm__deregister_pio(kvm, bar_addr); > break; > case 1: > case 2: > @@ -625,7 +603,7 @@ int virtio_pci__exit(struct kvm *kvm, struct virtio_device *vdev) > virtio_pci__reset(kvm, vdev); > kvm__deregister_mmio(kvm, virtio_pci__mmio_addr(vpci)); > kvm__deregister_mmio(kvm, virtio_pci__msix_io_addr(vpci)); > - ioport__unregister(kvm, virtio_pci__port_addr(vpci)); > + kvm__deregister_pio(kvm, virtio_pci__port_addr(vpci)); > > return 0; > } From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE6A9C433DB for ; Tue, 16 Feb 2021 17:03:01 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id 3B06164E07 for ; Tue, 16 Feb 2021 17:03:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3B06164E07 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvmarm-bounces@lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id A87B94B2A7; Tue, 16 Feb 2021 12:03:00 -0500 (EST) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IvryLV-WBiSm; Tue, 16 Feb 2021 12:02:59 -0500 (EST) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 461A44B2B3; Tue, 16 Feb 2021 12:02:59 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id C601C4B2B1 for ; Tue, 16 Feb 2021 12:02:57 -0500 (EST) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gEwr2bRxrMg3 for ; Tue, 16 Feb 2021 12:02:56 -0500 (EST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 3E7EB4B2A8 for ; Tue, 16 Feb 2021 12:02:56 -0500 (EST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A539C101E; Tue, 16 Feb 2021 09:02:55 -0800 (PST) Received: from [192.168.0.110] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A99363F73B; Tue, 16 Feb 2021 09:02:54 -0800 (PST) Subject: Re: [PATCH kvmtool 17/21] virtio: Switch trap handling to use MMIO handler To: Andre Przywara , Will Deacon , Julien Thierry References: <20201210142908.169597-1-andre.przywara@arm.com> <20201210142908.169597-18-andre.przywara@arm.com> From: Alexandru Elisei Message-ID: <0c6e033e-4bc4-bc81-173f-c7c195ded78a@arm.com> Date: Tue, 16 Feb 2021 17:03:04 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20201210142908.169597-18-andre.przywara@arm.com> Content-Language: en-US Cc: linux-arm-kernel@lists.infradead.org, Marc Zyngier , kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu SGkgQW5kcmUsCgpOaXRwaWNrIGJlbG93LCBvdGhlcndpc2UgbG9va3MgZ29vZC4KCk9uIDEyLzEw LzIwIDI6MjkgUE0sIEFuZHJlIFByenl3YXJhIHdyb3RlOgo+IFdpdGggdGhlIHBsYW5uZWQgcmV0 aXJlbWVudCBvZiB0aGUgc3BlY2lhbCBpb3BvcnQgZW11bGF0aW9uIGNvZGUsIHdlCj4gbmVlZCB0 byBwcm92aWRlIGFuIGVtdWxhdGlvbiBmdW5jdGlvbiBjb21wYXRpYmxlIHdpdGggdGhlIE1NSU8g cHJvdG90eXBlLgo+Cj4gQWRqdXN0IHRoZSBleGlzdGluZyBNTUlPIGNhbGxiYWNrIHJvdXRpbmUg dG8gYXV0b21hdGljYWxseSBkZXRlcm1pbmUKPiB0aGUgcmVnaW9uIHRoaXMgdHJhcCBjYW1lIHRo cm91Z2gsIGFuZCBjYWxsIHRoZSBleGlzdGluZyBJL08gaGFuZGxlcnMuCj4gUmVnaXN0ZXIgdGhl IGlvcG9ydCByZWdpb24gdXNpbmcgdGhlIG5ldyByZWdpc3RyYXRpb24gZnVuY3Rpb24uCj4KPiBT aWduZWQtb2ZmLWJ5OiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KPiAt LS0KPiAgdmlydGlvL3BjaS5jIHwgNDIgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS92aXJ0aW8vcGNpLmMgYi92aXJ0aW8vcGNpLmMKPiBpbmRl eCA2ZWVhNmM2OC4uNDlkM2Y0ZDUgMTAwNjQ0Cj4gLS0tIGEvdmlydGlvL3BjaS5jCj4gKysrIGIv dmlydGlvL3BjaS5jCj4gQEAgLTE3OCwxNSArMTc4LDYgQEAgc3RhdGljIGJvb2wgdmlydGlvX3Bj aV9fZGF0YV9pbihzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwgc3RydWN0IHZpcnRpb19kZXZpY2UgKnZk ZXYKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIHZpcnRpb19wY2lfX2lv X2luKHN0cnVjdCBpb3BvcnQgKmlvcG9ydCwgc3RydWN0IGt2bV9jcHUgKnZjcHUsIHUxNiBwb3J0 LCB2b2lkICpkYXRhLCBpbnQgc2l6ZSkKPiAtewo+IC0Jc3RydWN0IHZpcnRpb19kZXZpY2UgKnZk ZXYgPSBpb3BvcnQtPnByaXY7Cj4gLQlzdHJ1Y3QgdmlydGlvX3BjaSAqdnBjaSA9IHZkZXYtPnZp cnRpbzsKPiAtCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gcG9ydCAtIHZpcnRpb19wY2lfX3BvcnRf YWRkcih2cGNpKTsKPiAtCj4gLQlyZXR1cm4gdmlydGlvX3BjaV9fZGF0YV9pbih2Y3B1LCB2ZGV2 LCBvZmZzZXQsIGRhdGEsIHNpemUpOwo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCB1cGRhdGVfbXNp eF9tYXAoc3RydWN0IHZpcnRpb19wY2kgKnZwY2ksCj4gIAkJCSAgICBzdHJ1Y3QgbXNpeF90YWJs ZSAqbXNpeF9lbnRyeSwgdTMyIHZlY251bSkKPiAgewo+IEBAIC0zMzQsMjAgKzMyNSw2IEBAIHN0 YXRpYyBib29sIHZpcnRpb19wY2lfX2RhdGFfb3V0KHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCBzdHJ1 Y3QgdmlydGlvX2RldmljZSAqdmRlCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMg Ym9vbCB2aXJ0aW9fcGNpX19pb19vdXQoc3RydWN0IGlvcG9ydCAqaW9wb3J0LCBzdHJ1Y3Qga3Zt X2NwdSAqdmNwdSwgdTE2IHBvcnQsIHZvaWQgKmRhdGEsIGludCBzaXplKQo+IC17Cj4gLQlzdHJ1 Y3QgdmlydGlvX2RldmljZSAqdmRldiA9IGlvcG9ydC0+cHJpdjsKPiAtCXN0cnVjdCB2aXJ0aW9f cGNpICp2cGNpID0gdmRldi0+dmlydGlvOwo+IC0JdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBwb3J0 IC0gdmlydGlvX3BjaV9fcG9ydF9hZGRyKHZwY2kpOwo+IC0KPiAtCXJldHVybiB2aXJ0aW9fcGNp X19kYXRhX291dCh2Y3B1LCB2ZGV2LCBvZmZzZXQsIGRhdGEsIHNpemUpOwo+IC19Cj4gLQo+IC1z dGF0aWMgc3RydWN0IGlvcG9ydF9vcGVyYXRpb25zIHZpcnRpb19wY2lfX2lvX29wcyA9IHsKPiAt CS5pb19pbgk9IHZpcnRpb19wY2lfX2lvX2luLAo+IC0JLmlvX291dAk9IHZpcnRpb19wY2lfX2lv X291dCwKPiAtfTsKPiAtCj4gIHN0YXRpYyB2b2lkIHZpcnRpb19wY2lfX21zaXhfbW1pb19jYWxs YmFjayhzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwKPiAgCQkJCQkgICB1NjQgYWRkciwgdTggKmRhdGEs IHUzMiBsZW4sCj4gIAkJCQkJICAgdTggaXNfd3JpdGUsIHZvaWQgKnB0cikKPiBAQCAtNDU1LDEy ICs0MzIsMTUgQEAgc3RhdGljIHZvaWQgdmlydGlvX3BjaV9faW9fbW1pb19jYWxsYmFjayhzdHJ1 Y3Qga3ZtX2NwdSAqdmNwdSwKPiAgewo+ICAJc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYgPSBw dHI7Cj4gIAlzdHJ1Y3QgdmlydGlvX3BjaSAqdnBjaSA9IHZkZXYtPnZpcnRpbzsKPiAtCXUzMiBt bWlvX2FkZHIgPSB2aXJ0aW9fcGNpX19tbWlvX2FkZHIodnBjaSk7Cj4gKwl1MzIgYmFzZV9hZGRy ID0gdmlydGlvX3BjaV9fbW1pb19hZGRyKHZwY2kpOwo+ICsKPiArCWlmIChhZGRyIDwgYmFzZV9h ZGRyIHx8IGFkZHIgPj0gYmFzZV9hZGRyICsgUENJX0lPX1NJWkUpCj4gKwkJYmFzZV9hZGRyID0g dmlydGlvX3BjaV9fcG9ydF9hZGRyKHZwY2kpOwoKVGhlcmUgYXJlIG9ubHkgdHdvIEJBUnMgdGhh dCB1c2UgdGhpcyBjYWxsYmFjaywgdGhlIGlvcG9ydCBCQVIgKEJBUjApIGFuZCB0aGUKbWVtb3J5 IEJBUiAoQkFSMSkgKE1TSVggdXNlcyBhIGRpZmZlcmVudCBlbXVsYXRpb24gY2FsbGJhY2spLiBU aGUgY29uZGl0aW9uIGFib3ZlCnNheXMgdGhhdCBpZiBhZGRyIGlzIG5vdCBpbnNpZGUgdGhlIHJl Z2lvbiBkZXNjcmliZWQgYnkgdGhlIG1lbW9yeSBCQVIsIHRoZW4gaXQncwphbiBpb3BvcnQgQkFS LiBIb3cgYWJvdXQgY2hlY2tpbmcgZXhwbGljaXRseSB0aGF0IGl0IGlzIGluc2lkZSB0aGUgaW9w b3J0IHJlZ2lvbgpsaWtlIHRoaXMgKGNvbXBpbGUgdGVzdGVkIG9ubHkpLCB3aGljaCBsb29rcyBh IGJpdCBtb3JlIGludHVpdGl2ZSBmb3IgbWU6CgpkaWZmIC0tZ2l0IGEvdmlydGlvL3BjaS5jIGIv dmlydGlvL3BjaS5jCmluZGV4IDQ5ZDNmNGQ1MjRiMi4uNDAyNGJjZDcwOWNkIDEwMDY0NAotLS0g YS92aXJ0aW8vcGNpLmMKKysrIGIvdmlydGlvL3BjaS5jCkBAIC00MzIsMTAgKzQzMiwxNSBAQCBz dGF0aWMgdm9pZCB2aXJ0aW9fcGNpX19pb19tbWlvX2NhbGxiYWNrKHN0cnVjdCBrdm1fY3B1ICp2 Y3B1LArCoHsKwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYgPSBwdHI7 CsKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2aXJ0aW9fcGNpICp2cGNpID0gdmRldi0+dmlydGlvOwot wqDCoMKgwqDCoMKgIHUzMiBiYXNlX2FkZHIgPSB2aXJ0aW9fcGNpX19tbWlvX2FkZHIodnBjaSk7 CivCoMKgwqDCoMKgwqAgdTMyIG1taW9fYWRkciA9IHZpcnRpb19wY2lfX21taW9fYWRkcih2cGNp KTsKK8KgwqDCoMKgwqDCoCB1MzIgaW9wb3J0X2FkZHIgPSB2aXJ0aW9fcGNpX19wb3J0X2FkZHIo dnBjaSk7CivCoMKgwqDCoMKgwqAgdTMyIGJhc2VfYWRkcjsKwqAKLcKgwqDCoMKgwqDCoCBpZiAo YWRkciA8IGJhc2VfYWRkciB8fCBhZGRyID49IGJhc2VfYWRkciArIFBDSV9JT19TSVpFKQotwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYXNlX2FkZHIgPSB2aXJ0aW9fcGNpX19wb3J0X2Fk ZHIodnBjaSk7CivCoMKgwqDCoMKgwqAgaWYgKGFkZHIgPj0gaW9wb3J0X2FkZHIgJiYKK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGFkZHIgPCBpb3BvcnRfYWRkciArIHBjaV9fYmFyX3NpemUoJnZwY2kt PnBjaV9oZHIsIDApKQorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYXNlX2FkZHIgPSBp b3BvcnRfYWRkcjsKK8KgwqDCoMKgwqDCoCBlbHNlCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGJhc2VfYWRkciA9IG1taW9fYWRkcjsKwqAKwqDCoMKgwqDCoMKgwqAgaWYgKCFpc193cml0 ZSkKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZpcnRpb19wY2lfX2RhdGFfaW4odmNw dSwgdmRldiwgYWRkciAtIGJhc2VfYWRkciwgZGF0YSwgbGVuKTsKClRoYW5rcywKCkFsZXgKCj4g IAo+ICAJaWYgKCFpc193cml0ZSkKPiAtCQl2aXJ0aW9fcGNpX19kYXRhX2luKHZjcHUsIHZkZXYs IGFkZHIgLSBtbWlvX2FkZHIsIGRhdGEsIGxlbik7Cj4gKwkJdmlydGlvX3BjaV9fZGF0YV9pbih2 Y3B1LCB2ZGV2LCBhZGRyIC0gYmFzZV9hZGRyLCBkYXRhLCBsZW4pOwo+ICAJZWxzZQo+IC0JCXZp cnRpb19wY2lfX2RhdGFfb3V0KHZjcHUsIHZkZXYsIGFkZHIgLSBtbWlvX2FkZHIsIGRhdGEsIGxl bik7Cj4gKwkJdmlydGlvX3BjaV9fZGF0YV9vdXQodmNwdSwgdmRldiwgYWRkciAtIGJhc2VfYWRk ciwgZGF0YSwgbGVuKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCB2aXJ0aW9fcGNpX19iYXJfYWN0 aXZhdGUoc3RydWN0IGt2bSAqa3ZtLAo+IEBAIC00NzgsMTAgKzQ1OCw4IEBAIHN0YXRpYyBpbnQg dmlydGlvX3BjaV9fYmFyX2FjdGl2YXRlKHN0cnVjdCBrdm0gKmt2bSwKPiAgCj4gIAlzd2l0Y2gg KGJhcl9udW0pIHsKPiAgCWNhc2UgMDoKPiAtCQlyID0gaW9wb3J0X19yZWdpc3Rlcihrdm0sIGJh cl9hZGRyLCAmdmlydGlvX3BjaV9faW9fb3BzLAo+IC0JCQkJICAgICBiYXJfc2l6ZSwgdmRldik7 Cj4gLQkJaWYgKHIgPiAwKQo+IC0JCQlyID0gMDsKPiArCQlyID0ga3ZtX19yZWdpc3Rlcl9waW8o a3ZtLCBiYXJfYWRkciwgYmFyX3NpemUsCj4gKwkJCQkgICAgICB2aXJ0aW9fcGNpX19pb19tbWlv X2NhbGxiYWNrLCB2ZGV2KTsKPiAgCQlicmVhazsKPiAgCWNhc2UgMToKPiAgCQlyID0gIGt2bV9f cmVnaXN0ZXJfbW1pbyhrdm0sIGJhcl9hZGRyLCBiYXJfc2l6ZSwgZmFsc2UsCj4gQEAgLTUxMCw3 ICs0ODgsNyBAQCBzdGF0aWMgaW50IHZpcnRpb19wY2lfX2Jhcl9kZWFjdGl2YXRlKHN0cnVjdCBr dm0gKmt2bSwKPiAgCj4gIAlzd2l0Y2ggKGJhcl9udW0pIHsKPiAgCWNhc2UgMDoKPiAtCQlyID0g aW9wb3J0X191bnJlZ2lzdGVyKGt2bSwgYmFyX2FkZHIpOwo+ICsJCXIgPSBrdm1fX2RlcmVnaXN0 ZXJfcGlvKGt2bSwgYmFyX2FkZHIpOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSAxOgo+ICAJY2FzZSAy Ogo+IEBAIC02MjUsNyArNjAzLDcgQEAgaW50IHZpcnRpb19wY2lfX2V4aXQoc3RydWN0IGt2bSAq a3ZtLCBzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKPiAgCXZpcnRpb19wY2lfX3Jlc2V0KGt2 bSwgdmRldik7Cj4gIAlrdm1fX2RlcmVnaXN0ZXJfbW1pbyhrdm0sIHZpcnRpb19wY2lfX21taW9f YWRkcih2cGNpKSk7Cj4gIAlrdm1fX2RlcmVnaXN0ZXJfbW1pbyhrdm0sIHZpcnRpb19wY2lfX21z aXhfaW9fYWRkcih2cGNpKSk7Cj4gLQlpb3BvcnRfX3VucmVnaXN0ZXIoa3ZtLCB2aXJ0aW9fcGNp X19wb3J0X2FkZHIodnBjaSkpOwo+ICsJa3ZtX19kZXJlZ2lzdGVyX3Bpbyhrdm0sIHZpcnRpb19w Y2lfX3BvcnRfYWRkcih2cGNpKSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Ka3ZtYXJtIG1haWxpbmcgbGlzdApr dm1hcm1AbGlzdHMuY3MuY29sdW1iaWEuZWR1Cmh0dHBzOi8vbGlzdHMuY3MuY29sdW1iaWEuZWR1 L21haWxtYW4vbGlzdGluZm8va3ZtYXJtCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6EEF6C433E6 for ; Tue, 16 Feb 2021 17:04:46 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 34FA664DCF for ; Tue, 16 Feb 2021 17:04:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 34FA664DCF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=6t+BqudBxnud+6aB/CPlzUKNXAVT+ULASE5aAfPGawQ=; b=2G6doYTxfIv0El3MPP92kXKWS //ETCso5ZHPtjlAVeIwL9RYZMjKGnY1jvm5oHJo+uyvMFWQVJ3faI4VlN65WIi3/GbeYY1etCQvBF YzlSQS5oA6jiLtgdaIejXrzT61IhGN83Jo50wn1PFaYGF+uf92QPcRDdvtKtQ+Fq4ifbtVRJIFb22 TkiSnlUU9ElaQ7/n+8iZKtdw/SSBZGB8gjVbWMFSSJaLFzbsKSnNv5krA+NxxzYFhq3TwceSX9QWG 1GH7FHOTOMdFlSpAAi/PS/ZWR1gkvSMYNXbhdGGBeKhaNFuCyh+ZBlhRR2e6mr2hIP+spyC/MDVR0 t1CUN/RCA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lC3kd-0007E7-8y; Tue, 16 Feb 2021 17:03:03 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lC3kZ-0007D6-JV for linux-arm-kernel@lists.infradead.org; Tue, 16 Feb 2021 17:03:01 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A539C101E; Tue, 16 Feb 2021 09:02:55 -0800 (PST) Received: from [192.168.0.110] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A99363F73B; Tue, 16 Feb 2021 09:02:54 -0800 (PST) Subject: Re: [PATCH kvmtool 17/21] virtio: Switch trap handling to use MMIO handler To: Andre Przywara , Will Deacon , Julien Thierry References: <20201210142908.169597-1-andre.przywara@arm.com> <20201210142908.169597-18-andre.przywara@arm.com> From: Alexandru Elisei Message-ID: <0c6e033e-4bc4-bc81-173f-c7c195ded78a@arm.com> Date: Tue, 16 Feb 2021 17:03:04 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20201210142908.169597-18-andre.przywara@arm.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210216_120300_178710_FFC23CA0 X-CRM114-Status: GOOD ( 22.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm-kernel@lists.infradead.org, Marc Zyngier , kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQW5kcmUsCgpOaXRwaWNrIGJlbG93LCBvdGhlcndpc2UgbG9va3MgZ29vZC4KCk9uIDEyLzEw LzIwIDI6MjkgUE0sIEFuZHJlIFByenl3YXJhIHdyb3RlOgo+IFdpdGggdGhlIHBsYW5uZWQgcmV0 aXJlbWVudCBvZiB0aGUgc3BlY2lhbCBpb3BvcnQgZW11bGF0aW9uIGNvZGUsIHdlCj4gbmVlZCB0 byBwcm92aWRlIGFuIGVtdWxhdGlvbiBmdW5jdGlvbiBjb21wYXRpYmxlIHdpdGggdGhlIE1NSU8g cHJvdG90eXBlLgo+Cj4gQWRqdXN0IHRoZSBleGlzdGluZyBNTUlPIGNhbGxiYWNrIHJvdXRpbmUg dG8gYXV0b21hdGljYWxseSBkZXRlcm1pbmUKPiB0aGUgcmVnaW9uIHRoaXMgdHJhcCBjYW1lIHRo cm91Z2gsIGFuZCBjYWxsIHRoZSBleGlzdGluZyBJL08gaGFuZGxlcnMuCj4gUmVnaXN0ZXIgdGhl IGlvcG9ydCByZWdpb24gdXNpbmcgdGhlIG5ldyByZWdpc3RyYXRpb24gZnVuY3Rpb24uCj4KPiBT aWduZWQtb2ZmLWJ5OiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KPiAt LS0KPiAgdmlydGlvL3BjaS5jIHwgNDIgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS92aXJ0aW8vcGNpLmMgYi92aXJ0aW8vcGNpLmMKPiBpbmRl eCA2ZWVhNmM2OC4uNDlkM2Y0ZDUgMTAwNjQ0Cj4gLS0tIGEvdmlydGlvL3BjaS5jCj4gKysrIGIv dmlydGlvL3BjaS5jCj4gQEAgLTE3OCwxNSArMTc4LDYgQEAgc3RhdGljIGJvb2wgdmlydGlvX3Bj aV9fZGF0YV9pbihzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwgc3RydWN0IHZpcnRpb19kZXZpY2UgKnZk ZXYKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIHZpcnRpb19wY2lfX2lv X2luKHN0cnVjdCBpb3BvcnQgKmlvcG9ydCwgc3RydWN0IGt2bV9jcHUgKnZjcHUsIHUxNiBwb3J0 LCB2b2lkICpkYXRhLCBpbnQgc2l6ZSkKPiAtewo+IC0Jc3RydWN0IHZpcnRpb19kZXZpY2UgKnZk ZXYgPSBpb3BvcnQtPnByaXY7Cj4gLQlzdHJ1Y3QgdmlydGlvX3BjaSAqdnBjaSA9IHZkZXYtPnZp cnRpbzsKPiAtCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gcG9ydCAtIHZpcnRpb19wY2lfX3BvcnRf YWRkcih2cGNpKTsKPiAtCj4gLQlyZXR1cm4gdmlydGlvX3BjaV9fZGF0YV9pbih2Y3B1LCB2ZGV2 LCBvZmZzZXQsIGRhdGEsIHNpemUpOwo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCB1cGRhdGVfbXNp eF9tYXAoc3RydWN0IHZpcnRpb19wY2kgKnZwY2ksCj4gIAkJCSAgICBzdHJ1Y3QgbXNpeF90YWJs ZSAqbXNpeF9lbnRyeSwgdTMyIHZlY251bSkKPiAgewo+IEBAIC0zMzQsMjAgKzMyNSw2IEBAIHN0 YXRpYyBib29sIHZpcnRpb19wY2lfX2RhdGFfb3V0KHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCBzdHJ1 Y3QgdmlydGlvX2RldmljZSAqdmRlCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMg Ym9vbCB2aXJ0aW9fcGNpX19pb19vdXQoc3RydWN0IGlvcG9ydCAqaW9wb3J0LCBzdHJ1Y3Qga3Zt X2NwdSAqdmNwdSwgdTE2IHBvcnQsIHZvaWQgKmRhdGEsIGludCBzaXplKQo+IC17Cj4gLQlzdHJ1 Y3QgdmlydGlvX2RldmljZSAqdmRldiA9IGlvcG9ydC0+cHJpdjsKPiAtCXN0cnVjdCB2aXJ0aW9f cGNpICp2cGNpID0gdmRldi0+dmlydGlvOwo+IC0JdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBwb3J0 IC0gdmlydGlvX3BjaV9fcG9ydF9hZGRyKHZwY2kpOwo+IC0KPiAtCXJldHVybiB2aXJ0aW9fcGNp X19kYXRhX291dCh2Y3B1LCB2ZGV2LCBvZmZzZXQsIGRhdGEsIHNpemUpOwo+IC19Cj4gLQo+IC1z dGF0aWMgc3RydWN0IGlvcG9ydF9vcGVyYXRpb25zIHZpcnRpb19wY2lfX2lvX29wcyA9IHsKPiAt CS5pb19pbgk9IHZpcnRpb19wY2lfX2lvX2luLAo+IC0JLmlvX291dAk9IHZpcnRpb19wY2lfX2lv X291dCwKPiAtfTsKPiAtCj4gIHN0YXRpYyB2b2lkIHZpcnRpb19wY2lfX21zaXhfbW1pb19jYWxs YmFjayhzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwKPiAgCQkJCQkgICB1NjQgYWRkciwgdTggKmRhdGEs IHUzMiBsZW4sCj4gIAkJCQkJICAgdTggaXNfd3JpdGUsIHZvaWQgKnB0cikKPiBAQCAtNDU1LDEy ICs0MzIsMTUgQEAgc3RhdGljIHZvaWQgdmlydGlvX3BjaV9faW9fbW1pb19jYWxsYmFjayhzdHJ1 Y3Qga3ZtX2NwdSAqdmNwdSwKPiAgewo+ICAJc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYgPSBw dHI7Cj4gIAlzdHJ1Y3QgdmlydGlvX3BjaSAqdnBjaSA9IHZkZXYtPnZpcnRpbzsKPiAtCXUzMiBt bWlvX2FkZHIgPSB2aXJ0aW9fcGNpX19tbWlvX2FkZHIodnBjaSk7Cj4gKwl1MzIgYmFzZV9hZGRy ID0gdmlydGlvX3BjaV9fbW1pb19hZGRyKHZwY2kpOwo+ICsKPiArCWlmIChhZGRyIDwgYmFzZV9h ZGRyIHx8IGFkZHIgPj0gYmFzZV9hZGRyICsgUENJX0lPX1NJWkUpCj4gKwkJYmFzZV9hZGRyID0g dmlydGlvX3BjaV9fcG9ydF9hZGRyKHZwY2kpOwoKVGhlcmUgYXJlIG9ubHkgdHdvIEJBUnMgdGhh dCB1c2UgdGhpcyBjYWxsYmFjaywgdGhlIGlvcG9ydCBCQVIgKEJBUjApIGFuZCB0aGUKbWVtb3J5 IEJBUiAoQkFSMSkgKE1TSVggdXNlcyBhIGRpZmZlcmVudCBlbXVsYXRpb24gY2FsbGJhY2spLiBU aGUgY29uZGl0aW9uIGFib3ZlCnNheXMgdGhhdCBpZiBhZGRyIGlzIG5vdCBpbnNpZGUgdGhlIHJl Z2lvbiBkZXNjcmliZWQgYnkgdGhlIG1lbW9yeSBCQVIsIHRoZW4gaXQncwphbiBpb3BvcnQgQkFS LiBIb3cgYWJvdXQgY2hlY2tpbmcgZXhwbGljaXRseSB0aGF0IGl0IGlzIGluc2lkZSB0aGUgaW9w b3J0IHJlZ2lvbgpsaWtlIHRoaXMgKGNvbXBpbGUgdGVzdGVkIG9ubHkpLCB3aGljaCBsb29rcyBh IGJpdCBtb3JlIGludHVpdGl2ZSBmb3IgbWU6CgpkaWZmIC0tZ2l0IGEvdmlydGlvL3BjaS5jIGIv dmlydGlvL3BjaS5jCmluZGV4IDQ5ZDNmNGQ1MjRiMi4uNDAyNGJjZDcwOWNkIDEwMDY0NAotLS0g YS92aXJ0aW8vcGNpLmMKKysrIGIvdmlydGlvL3BjaS5jCkBAIC00MzIsMTAgKzQzMiwxNSBAQCBz dGF0aWMgdm9pZCB2aXJ0aW9fcGNpX19pb19tbWlvX2NhbGxiYWNrKHN0cnVjdCBrdm1fY3B1ICp2 Y3B1LArCoHsKwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYgPSBwdHI7 CsKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2aXJ0aW9fcGNpICp2cGNpID0gdmRldi0+dmlydGlvOwot wqDCoMKgwqDCoMKgIHUzMiBiYXNlX2FkZHIgPSB2aXJ0aW9fcGNpX19tbWlvX2FkZHIodnBjaSk7 CivCoMKgwqDCoMKgwqAgdTMyIG1taW9fYWRkciA9IHZpcnRpb19wY2lfX21taW9fYWRkcih2cGNp KTsKK8KgwqDCoMKgwqDCoCB1MzIgaW9wb3J0X2FkZHIgPSB2aXJ0aW9fcGNpX19wb3J0X2FkZHIo dnBjaSk7CivCoMKgwqDCoMKgwqAgdTMyIGJhc2VfYWRkcjsKwqAKLcKgwqDCoMKgwqDCoCBpZiAo YWRkciA8IGJhc2VfYWRkciB8fCBhZGRyID49IGJhc2VfYWRkciArIFBDSV9JT19TSVpFKQotwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYXNlX2FkZHIgPSB2aXJ0aW9fcGNpX19wb3J0X2Fk ZHIodnBjaSk7CivCoMKgwqDCoMKgwqAgaWYgKGFkZHIgPj0gaW9wb3J0X2FkZHIgJiYKK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGFkZHIgPCBpb3BvcnRfYWRkciArIHBjaV9fYmFyX3NpemUoJnZwY2kt PnBjaV9oZHIsIDApKQorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYXNlX2FkZHIgPSBp b3BvcnRfYWRkcjsKK8KgwqDCoMKgwqDCoCBlbHNlCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGJhc2VfYWRkciA9IG1taW9fYWRkcjsKwqAKwqDCoMKgwqDCoMKgwqAgaWYgKCFpc193cml0 ZSkKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZpcnRpb19wY2lfX2RhdGFfaW4odmNw dSwgdmRldiwgYWRkciAtIGJhc2VfYWRkciwgZGF0YSwgbGVuKTsKClRoYW5rcywKCkFsZXgKCj4g IAo+ICAJaWYgKCFpc193cml0ZSkKPiAtCQl2aXJ0aW9fcGNpX19kYXRhX2luKHZjcHUsIHZkZXYs IGFkZHIgLSBtbWlvX2FkZHIsIGRhdGEsIGxlbik7Cj4gKwkJdmlydGlvX3BjaV9fZGF0YV9pbih2 Y3B1LCB2ZGV2LCBhZGRyIC0gYmFzZV9hZGRyLCBkYXRhLCBsZW4pOwo+ICAJZWxzZQo+IC0JCXZp cnRpb19wY2lfX2RhdGFfb3V0KHZjcHUsIHZkZXYsIGFkZHIgLSBtbWlvX2FkZHIsIGRhdGEsIGxl bik7Cj4gKwkJdmlydGlvX3BjaV9fZGF0YV9vdXQodmNwdSwgdmRldiwgYWRkciAtIGJhc2VfYWRk ciwgZGF0YSwgbGVuKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCB2aXJ0aW9fcGNpX19iYXJfYWN0 aXZhdGUoc3RydWN0IGt2bSAqa3ZtLAo+IEBAIC00NzgsMTAgKzQ1OCw4IEBAIHN0YXRpYyBpbnQg dmlydGlvX3BjaV9fYmFyX2FjdGl2YXRlKHN0cnVjdCBrdm0gKmt2bSwKPiAgCj4gIAlzd2l0Y2gg KGJhcl9udW0pIHsKPiAgCWNhc2UgMDoKPiAtCQlyID0gaW9wb3J0X19yZWdpc3Rlcihrdm0sIGJh cl9hZGRyLCAmdmlydGlvX3BjaV9faW9fb3BzLAo+IC0JCQkJICAgICBiYXJfc2l6ZSwgdmRldik7 Cj4gLQkJaWYgKHIgPiAwKQo+IC0JCQlyID0gMDsKPiArCQlyID0ga3ZtX19yZWdpc3Rlcl9waW8o a3ZtLCBiYXJfYWRkciwgYmFyX3NpemUsCj4gKwkJCQkgICAgICB2aXJ0aW9fcGNpX19pb19tbWlv X2NhbGxiYWNrLCB2ZGV2KTsKPiAgCQlicmVhazsKPiAgCWNhc2UgMToKPiAgCQlyID0gIGt2bV9f cmVnaXN0ZXJfbW1pbyhrdm0sIGJhcl9hZGRyLCBiYXJfc2l6ZSwgZmFsc2UsCj4gQEAgLTUxMCw3 ICs0ODgsNyBAQCBzdGF0aWMgaW50IHZpcnRpb19wY2lfX2Jhcl9kZWFjdGl2YXRlKHN0cnVjdCBr dm0gKmt2bSwKPiAgCj4gIAlzd2l0Y2ggKGJhcl9udW0pIHsKPiAgCWNhc2UgMDoKPiAtCQlyID0g aW9wb3J0X191bnJlZ2lzdGVyKGt2bSwgYmFyX2FkZHIpOwo+ICsJCXIgPSBrdm1fX2RlcmVnaXN0 ZXJfcGlvKGt2bSwgYmFyX2FkZHIpOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSAxOgo+ICAJY2FzZSAy Ogo+IEBAIC02MjUsNyArNjAzLDcgQEAgaW50IHZpcnRpb19wY2lfX2V4aXQoc3RydWN0IGt2bSAq a3ZtLCBzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKPiAgCXZpcnRpb19wY2lfX3Jlc2V0KGt2 bSwgdmRldik7Cj4gIAlrdm1fX2RlcmVnaXN0ZXJfbW1pbyhrdm0sIHZpcnRpb19wY2lfX21taW9f YWRkcih2cGNpKSk7Cj4gIAlrdm1fX2RlcmVnaXN0ZXJfbW1pbyhrdm0sIHZpcnRpb19wY2lfX21z aXhfaW9fYWRkcih2cGNpKSk7Cj4gLQlpb3BvcnRfX3VucmVnaXN0ZXIoa3ZtLCB2aXJ0aW9fcGNp X19wb3J0X2FkZHIodnBjaSkpOwo+ICsJa3ZtX19kZXJlZ2lzdGVyX3Bpbyhrdm0sIHZpcnRpb19w Y2lfX3BvcnRfYWRkcih2cGNpKSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK