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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8262EC6FD1C for ; Fri, 24 Mar 2023 05:32:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231382AbjCXFcO (ORCPT ); Fri, 24 Mar 2023 01:32:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231211AbjCXFcH (ORCPT ); Fri, 24 Mar 2023 01:32:07 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C193A1 for ; Thu, 23 Mar 2023 22:31:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679635881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=N2a1xvUOUTDa8qNXVZtHHs2/wy9h/5BrtN8IXVy3fEQ=; b=gNr5K22bSMIqIz93mg+Y9TgXPyyRZ6KRbeLCno61Hi48mMNJTiYY5LyJvATgNkSRr4XslA 6zHQbRjPjY/G3zTScViQG+/VsnCGPGG6FieQvf0qRs19zofF/n3wU2/AUY9wjt/Q1wddUq ZqpoI9YKhfKbkt/++f8N/6TteMMPzTw= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-317-Pl4W8EXgODqqANofCK1bRg-1; Fri, 24 Mar 2023 01:31:17 -0400 X-MC-Unique: Pl4W8EXgODqqANofCK1bRg-1 Received: by mail-wm1-f69.google.com with SMTP id bh19-20020a05600c3d1300b003ee93fac4a9so1690328wmb.2 for ; Thu, 23 Mar 2023 22:31:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679635876; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=N2a1xvUOUTDa8qNXVZtHHs2/wy9h/5BrtN8IXVy3fEQ=; b=63DRSEvXHcxwNg/WTE6LMOTeay4TDIqIPAT9PvJwCytrEb4lf7hQJQJ4jRZBUfiCPr nbJM2tNeyi3O15SfJGEj/AxYmWGegXoo0a36D53f3YGbjpHTcbEBcjCVYf8JuDNAhPwS OvU91eF23ZrgJh6lE0tDWjroAIbE6vF2OrdOPDsVxlTXXDVgVAoSTvkueVwlb+BX/Cc7 Byiqi5FGGYCBpf2cddjRpQCZW5cbRkAS379pm7nQKj+gh3SKG26xU5zGD4FxDyhS96cl tBvv0HUe+YuNbvhlqSankWepOHnx+q6NPBVPBaKEXtg2mDo6hGLCpEy1RyRKW7sAFcBj J94A== X-Gm-Message-State: AAQBX9ell+gzkOa117kJokJ+O+zM8pI8RoFEBKxSl2Cj1KiXSYnX12Au T7riFpctXvRzhadPzjLBr40jkoja0UQ++jbk+Kr9/P1W7BX7ju6K70toKu1bLpePsafOJCEEbb9 YE3t/tCaID8uuSH6/sMlPig== X-Received: by 2002:a5d:6b8b:0:b0:2ce:ad08:ca4 with SMTP id n11-20020a5d6b8b000000b002cead080ca4mr989240wrx.35.1679635875954; Thu, 23 Mar 2023 22:31:15 -0700 (PDT) X-Google-Smtp-Source: AKy350b3Mx7v295xk69JlKaVftSlan8v8qU7rb+a8DZjWnx7PlsPog3Ko+6oMYE2zmGyg7YJu5D+BQ== X-Received: by 2002:a5d:6b8b:0:b0:2ce:ad08:ca4 with SMTP id n11-20020a5d6b8b000000b002cead080ca4mr989228wrx.35.1679635875586; Thu, 23 Mar 2023 22:31:15 -0700 (PDT) Received: from redhat.com ([2.52.12.190]) by smtp.gmail.com with ESMTPSA id e23-20020a5d5957000000b002cfefa50a8esm17502567wri.98.2023.03.23.22.31.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Mar 2023 22:31:14 -0700 (PDT) Date: Fri, 24 Mar 2023 01:31:11 -0400 From: "Michael S. Tsirkin" To: Jason Wang Cc: Viktor Prutyanov , cohuck@redhat.com, pasic@linux.ibm.com, farman@linux.ibm.com, linux-s390@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, yan@daynix.com Subject: Re: [PATCH v5] virtio: add VIRTIO_F_NOTIFICATION_DATA feature support Message-ID: <20230324011454-mutt-send-email-mst@kernel.org> References: <20230323085551.2346411-1-viktor@daynix.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-s390@vger.kernel.org On Fri, Mar 24, 2023 at 11:09:19AM +0800, Jason Wang wrote: > On Thu, Mar 23, 2023 at 4:56 PM Viktor Prutyanov wrote: > > > > According to VirtIO spec v1.2, VIRTIO_F_NOTIFICATION_DATA feature > > indicates that the driver passes extra data along with the queue > > notifications. > > > > In a split queue case, the extra data is 16-bit available index. In a > > packed queue case, the extra data is 1-bit wrap counter and 15-bit > > available index. > > > > Add support for this feature for MMIO, channel I/O and modern PCI > > transports. > > > > Signed-off-by: Viktor Prutyanov > > --- > > v5: replace ternary operator with if-else > > v4: remove VP_NOTIFY macro and legacy PCI support, add > > virtio_ccw_kvm_notify_with_data to virtio_ccw > > v3: support feature in virtio_ccw, remove VM_NOTIFY, use avail_idx_shadow, > > remove byte swap, rename to vring_notification_data > > v2: reject the feature in virtio_ccw, replace __le32 with u32 > > > > Tested with disabled VIRTIO_F_NOTIFICATION_DATA on qemu-system-s390x > > (virtio-blk-ccw), qemu-system-riscv64 (virtio-blk-device, > > virtio-rng-device), qemu-system-x86_64 (virtio-blk-pci, virtio-net-pci) > > to make sure nothing is broken. > > Tested with enabled VIRTIO_F_NOTIFICATION_DATA on 64-bit RISC-V Linux > > and my hardware implementation of virtio-rng with MMIO. > > > > drivers/s390/virtio/virtio_ccw.c | 22 +++++++++++++++++++--- > > drivers/virtio/virtio_mmio.c | 18 +++++++++++++++++- > > drivers/virtio/virtio_pci_modern.c | 17 ++++++++++++++++- > > drivers/virtio/virtio_ring.c | 17 +++++++++++++++++ > > include/linux/virtio_ring.h | 2 ++ > > include/uapi/linux/virtio_config.h | 6 ++++++ > > 6 files changed, 77 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/s390/virtio/virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c > > index 954fc31b4bc7..9a9c5d34454c 100644 > > --- a/drivers/s390/virtio/virtio_ccw.c > > +++ b/drivers/s390/virtio/virtio_ccw.c > > @@ -391,7 +391,7 @@ static void virtio_ccw_drop_indicator(struct virtio_ccw_device *vcdev, > > ccw_device_dma_free(vcdev->cdev, thinint_area, sizeof(*thinint_area)); > > } > > > > -static bool virtio_ccw_kvm_notify(struct virtqueue *vq) > > +static inline bool virtio_ccw_do_kvm_notify(struct virtqueue *vq, u32 data) > > { > > struct virtio_ccw_vq_info *info = vq->priv; > > struct virtio_ccw_device *vcdev; > > @@ -402,12 +402,22 @@ static bool virtio_ccw_kvm_notify(struct virtqueue *vq) > > BUILD_BUG_ON(sizeof(struct subchannel_id) != sizeof(unsigned int)); > > info->cookie = kvm_hypercall3(KVM_S390_VIRTIO_CCW_NOTIFY, > > *((unsigned int *)&schid), > > - vq->index, info->cookie); > > + data, info->cookie); > > if (info->cookie < 0) > > return false; > > return true; > > } > > > > +static bool virtio_ccw_kvm_notify(struct virtqueue *vq) > > +{ > > + return virtio_ccw_do_kvm_notify(vq, vq->index); > > +} > > + > > +static bool virtio_ccw_kvm_notify_with_data(struct virtqueue *vq) > > +{ > > + return virtio_ccw_do_kvm_notify(vq, vring_notification_data(vq)); > > +} > > + > > static int virtio_ccw_read_vq_conf(struct virtio_ccw_device *vcdev, > > struct ccw1 *ccw, int index) > > { > > @@ -501,6 +511,12 @@ static struct virtqueue *virtio_ccw_setup_vq(struct virtio_device *vdev, > > u64 queue; > > unsigned long flags; > > bool may_reduce; > > + bool (*notify)(struct virtqueue *vq); > > + > > + if (__virtio_test_bit(vdev, VIRTIO_F_NOTIFICATION_DATA)) > > + notify = virtio_ccw_kvm_notify_with_data; > > + else > > + notify = virtio_ccw_kvm_notify; > > > > /* Allocate queue. */ > > info = kzalloc(sizeof(struct virtio_ccw_vq_info), GFP_KERNEL); > > @@ -524,7 +540,7 @@ static struct virtqueue *virtio_ccw_setup_vq(struct virtio_device *vdev, > > may_reduce = vcdev->revision > 0; > > vq = vring_create_virtqueue(i, info->num, KVM_VIRTIO_CCW_RING_ALIGN, > > vdev, true, may_reduce, ctx, > > - virtio_ccw_kvm_notify, callback, name); > > + notify, callback, name); > > > > if (!vq) { > > /* For now, we fail if we can't get the requested size. */ > > diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c > > index 3ff746e3f24a..7e87f745f68d 100644 > > --- a/drivers/virtio/virtio_mmio.c > > +++ b/drivers/virtio/virtio_mmio.c > > @@ -285,6 +285,16 @@ static bool vm_notify(struct virtqueue *vq) > > return true; > > } > > > > +static bool vm_notify_with_data(struct virtqueue *vq) > > +{ > > + struct virtio_mmio_device *vm_dev = to_virtio_mmio_device(vq->vdev); > > + u32 data = vring_notification_data(vq); > > + > > + writel(data, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); > > + > > + return true; > > +} > > + > > /* Notify all virtqueues on an interrupt. */ > > static irqreturn_t vm_interrupt(int irq, void *opaque) > > { > > @@ -368,6 +378,12 @@ static struct virtqueue *vm_setup_vq(struct virtio_device *vdev, unsigned int in > > unsigned long flags; > > unsigned int num; > > int err; > > + bool (*notify)(struct virtqueue *vq); > > + > > + if (__virtio_test_bit(vdev, VIRTIO_F_NOTIFICATION_DATA)) > > + notify = vm_notify_with_data; > > + else > > + notify = vm_notify; > > > > if (!name) > > return NULL; > > @@ -397,7 +413,7 @@ static struct virtqueue *vm_setup_vq(struct virtio_device *vdev, unsigned int in > > > > /* Create the vring */ > > vq = vring_create_virtqueue(index, num, VIRTIO_MMIO_VRING_ALIGN, vdev, > > - true, true, ctx, vm_notify, callback, name); > > + true, true, ctx, notify, callback, name); > > if (!vq) { > > err = -ENOMEM; > > goto error_new_virtqueue; > > diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c > > index 9e496e288cfa..3bfc368b279e 100644 > > --- a/drivers/virtio/virtio_pci_modern.c > > +++ b/drivers/virtio/virtio_pci_modern.c > > @@ -288,6 +288,15 @@ static u16 vp_config_vector(struct virtio_pci_device *vp_dev, u16 vector) > > return vp_modern_config_vector(&vp_dev->mdev, vector); > > } > > > > +static bool vp_notify_with_data(struct virtqueue *vq) > > +{ > > + u32 data = vring_notification_data(vq); > > + > > + iowrite32(data, (void __iomem *)vq->priv); > > + > > + return true; > > +} > > + > > static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev, > > struct virtio_pci_vq_info *info, > > unsigned int index, > > @@ -301,6 +310,12 @@ static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev, > > struct virtqueue *vq; > > u16 num; > > int err; > > + bool (*notify)(struct virtqueue *vq); > > + > > + if (__virtio_test_bit(&vp_dev->vdev, VIRTIO_F_NOTIFICATION_DATA)) > > + notify = vp_notify_with_data; > > + else > > + notify = vp_notify; > > > > if (index >= vp_modern_get_num_queues(mdev)) > > return ERR_PTR(-EINVAL); > > @@ -321,7 +336,7 @@ static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev, > > vq = vring_create_virtqueue(index, num, > > SMP_CACHE_BYTES, &vp_dev->vdev, > > true, true, ctx, > > - vp_notify, callback, name); > > + notify, callback, name); > > if (!vq) > > return ERR_PTR(-ENOMEM); > > > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > > index 4c3bb0ddeb9b..837875cc3190 100644 > > --- a/drivers/virtio/virtio_ring.c > > +++ b/drivers/virtio/virtio_ring.c > > @@ -2752,6 +2752,21 @@ void vring_del_virtqueue(struct virtqueue *_vq) > > } > > EXPORT_SYMBOL_GPL(vring_del_virtqueue); > > > > +u32 vring_notification_data(struct virtqueue *_vq) > > +{ > > + struct vring_virtqueue *vq = to_vvq(_vq); > > + u16 next; > > + > > + if (vq->packed_ring) > > + next = (vq->packed.next_avail_idx & ~(1 << 15)) | > > + vq->packed.avail_wrap_counter << 15; > > Nit: We have VRING_PACKED_EVENT_F_WRAP_CTR which could be used for > replacing 15 here. > > And we have many places for packing them into u16, it might be better > to introduce a helper. Not sure about a helper, I'd leave that for a future cleanup. However I would use & (-(1 << VRING_PACKED_EVENT_F_WRAP_CTR)) that's more robust - works for any value of VRING_PACKED_EVENT_F_WRAP_CTR giving low bits 0 to VRING_PACKED_EVENT_F_WRAP_CTR, and will keep working if someone copypasted it and changed counter to a value different from 15. > Acked-by: Jason Wang > > Thanks > > > + else > > + next = vq->split.avail_idx_shadow; > > + > > + return next << 16 | _vq->index; > > +} > > +EXPORT_SYMBOL_GPL(vring_notification_data); > > + > > /* Manipulates transport-specific feature bits. */ > > void vring_transport_features(struct virtio_device *vdev) > > { > > @@ -2771,6 +2786,8 @@ void vring_transport_features(struct virtio_device *vdev) > > break; > > case VIRTIO_F_ORDER_PLATFORM: > > break; > > + case VIRTIO_F_NOTIFICATION_DATA: > > + break; > > default: > > /* We don't understand this bit. */ > > __virtio_clear_bit(vdev, i); > > diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h > > index 8b95b69ef694..2550c9170f4f 100644 > > --- a/include/linux/virtio_ring.h > > +++ b/include/linux/virtio_ring.h > > @@ -117,4 +117,6 @@ void vring_del_virtqueue(struct virtqueue *vq); > > void vring_transport_features(struct virtio_device *vdev); > > > > irqreturn_t vring_interrupt(int irq, void *_vq); > > + > > +u32 vring_notification_data(struct virtqueue *_vq); > > #endif /* _LINUX_VIRTIO_RING_H */ > > diff --git a/include/uapi/linux/virtio_config.h b/include/uapi/linux/virtio_config.h > > index 3c05162bc988..2c712c654165 100644 > > --- a/include/uapi/linux/virtio_config.h > > +++ b/include/uapi/linux/virtio_config.h > > @@ -99,6 +99,12 @@ > > */ > > #define VIRTIO_F_SR_IOV 37 > > > > +/* > > + * This feature indicates that the driver passes extra data (besides > > + * identifying the virtqueue) in its device notifications. > > + */ > > +#define VIRTIO_F_NOTIFICATION_DATA 38 > > + > > /* > > * This feature indicates that the driver can reset a queue individually. > > */ > > -- > > 2.35.1 > > 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 Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D44E4C6FD1C for ; Fri, 24 Mar 2023 05:31:26 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 256674194E; Fri, 24 Mar 2023 05:31:26 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 256674194E Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=Khec35JN X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id s2LQppZPQ-iF; Fri, 24 Mar 2023 05:31:24 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id C6ECA415BB; Fri, 24 Mar 2023 05:31:23 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org C6ECA415BB Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 894A5C0071; Fri, 24 Mar 2023 05:31:23 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 666BAC0032 for ; Fri, 24 Mar 2023 05:31:22 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 2CD604012E for ; Fri, 24 Mar 2023 05:31:22 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 2CD604012E Authentication-Results: smtp2.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=Khec35JN X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id M6byoXfN6I8F for ; Fri, 24 Mar 2023 05:31:20 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org F3BFB400CB Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp2.osuosl.org (Postfix) with ESMTPS id F3BFB400CB for ; Fri, 24 Mar 2023 05:31:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679635878; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=N2a1xvUOUTDa8qNXVZtHHs2/wy9h/5BrtN8IXVy3fEQ=; b=Khec35JNVB66AkW4liSV3eU8cK1K/3AgeSUmZ874Qt6pjbStXQIyzUh9WSJpj507wnLuP0 mftPRBmZBXhJ5YHW1/laWnpgWQF2Rxs52kKMs+QRDVs2X5jATdfkigTrbcJDykBNlziJHi BtwtKwBblf+O4EnFV/ZeKGB46610J1Y= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-589-t4vwjU8GMMGo4rZM3YkufA-1; Fri, 24 Mar 2023 01:31:17 -0400 X-MC-Unique: t4vwjU8GMMGo4rZM3YkufA-1 Received: by mail-wm1-f71.google.com with SMTP id bg13-20020a05600c3c8d00b003ed40f09355so475622wmb.5 for ; Thu, 23 Mar 2023 22:31:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679635876; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=N2a1xvUOUTDa8qNXVZtHHs2/wy9h/5BrtN8IXVy3fEQ=; b=JbwkD1LnclsFZRs3HZD2EHNpXJ8+p2I2W5V2F6mzGDP+e2tnNukg/vDncgJBCCNYMT zNMKN09kYc+fpHNHf3MGq/+PYTzQDnRsgWx+QkfwqpNSL2PYm3lZ+IYwtEJU9AyiVMEc bp0j4n0Ltj2mXRivlTEFWPU8ycftQLa52cQC337aWpyCkcTAGCgMlsjGuAZEjHySSVhB hIgOmRpOa0G72PkBlBUBAdZclb5j9Rjae/MnUGFZSOi515CcfOZrDSck9QD4vv88MjjO NLFqDG2puOTXi2idHG+AEgg8zg6/UpCO9WSXXCsZeX03+HDHQXfx1LOp78cgfCNffgnZ Rfng== X-Gm-Message-State: AAQBX9dh+SYZK+JLhnOpqT0lZ/5NN8HPLUOqBCE6GciwKB0VnL/p+ukW 9Qb7TqGYziSd/n73sHc3k6wI7KHlKPgp66NuKDmW1s6l+GiXRYTOGV3kqBCCN5DrDqVE5G/UmZN yQ4syABRVBQUnlK0GQ1EYxKa3JShhAtFwXR71wmtx4w== X-Received: by 2002:a5d:6b8b:0:b0:2ce:ad08:ca4 with SMTP id n11-20020a5d6b8b000000b002cead080ca4mr989247wrx.35.1679635875979; Thu, 23 Mar 2023 22:31:15 -0700 (PDT) X-Google-Smtp-Source: AKy350b3Mx7v295xk69JlKaVftSlan8v8qU7rb+a8DZjWnx7PlsPog3Ko+6oMYE2zmGyg7YJu5D+BQ== X-Received: by 2002:a5d:6b8b:0:b0:2ce:ad08:ca4 with SMTP id n11-20020a5d6b8b000000b002cead080ca4mr989228wrx.35.1679635875586; Thu, 23 Mar 2023 22:31:15 -0700 (PDT) Received: from redhat.com ([2.52.12.190]) by smtp.gmail.com with ESMTPSA id e23-20020a5d5957000000b002cfefa50a8esm17502567wri.98.2023.03.23.22.31.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Mar 2023 22:31:14 -0700 (PDT) Date: Fri, 24 Mar 2023 01:31:11 -0400 From: "Michael S. Tsirkin" To: Jason Wang Subject: Re: [PATCH v5] virtio: add VIRTIO_F_NOTIFICATION_DATA feature support Message-ID: <20230324011454-mutt-send-email-mst@kernel.org> References: <20230323085551.2346411-1-viktor@daynix.com> MIME-Version: 1.0 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: linux-s390@vger.kernel.org, farman@linux.ibm.com, kvm@vger.kernel.org, cohuck@redhat.com, Viktor Prutyanov , linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, pasic@linux.ibm.com, yan@daynix.com X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gRnJpLCBNYXIgMjQsIDIwMjMgYXQgMTE6MDk6MTlBTSArMDgwMCwgSmFzb24gV2FuZyB3cm90 ZToKPiBPbiBUaHUsIE1hciAyMywgMjAyMyBhdCA0OjU24oCvUE0gVmlrdG9yIFBydXR5YW5vdiA8 dmlrdG9yQGRheW5peC5jb20+IHdyb3RlOgo+ID4KPiA+IEFjY29yZGluZyB0byBWaXJ0SU8gc3Bl YyB2MS4yLCBWSVJUSU9fRl9OT1RJRklDQVRJT05fREFUQSBmZWF0dXJlCj4gPiBpbmRpY2F0ZXMg dGhhdCB0aGUgZHJpdmVyIHBhc3NlcyBleHRyYSBkYXRhIGFsb25nIHdpdGggdGhlIHF1ZXVlCj4g PiBub3RpZmljYXRpb25zLgo+ID4KPiA+IEluIGEgc3BsaXQgcXVldWUgY2FzZSwgdGhlIGV4dHJh IGRhdGEgaXMgMTYtYml0IGF2YWlsYWJsZSBpbmRleC4gSW4gYQo+ID4gcGFja2VkIHF1ZXVlIGNh c2UsIHRoZSBleHRyYSBkYXRhIGlzIDEtYml0IHdyYXAgY291bnRlciBhbmQgMTUtYml0Cj4gPiBh dmFpbGFibGUgaW5kZXguCj4gPgo+ID4gQWRkIHN1cHBvcnQgZm9yIHRoaXMgZmVhdHVyZSBmb3Ig TU1JTywgY2hhbm5lbCBJL08gYW5kIG1vZGVybiBQQ0kKPiA+IHRyYW5zcG9ydHMuCj4gPgo+ID4g U2lnbmVkLW9mZi1ieTogVmlrdG9yIFBydXR5YW5vdiA8dmlrdG9yQGRheW5peC5jb20+Cj4gPiAt LS0KPiA+ICB2NTogcmVwbGFjZSB0ZXJuYXJ5IG9wZXJhdG9yIHdpdGggaWYtZWxzZQo+ID4gIHY0 OiByZW1vdmUgVlBfTk9USUZZIG1hY3JvIGFuZCBsZWdhY3kgUENJIHN1cHBvcnQsIGFkZAo+ID4g ICAgIHZpcnRpb19jY3dfa3ZtX25vdGlmeV93aXRoX2RhdGEgdG8gdmlydGlvX2Njdwo+ID4gIHYz OiBzdXBwb3J0IGZlYXR1cmUgaW4gdmlydGlvX2NjdywgcmVtb3ZlIFZNX05PVElGWSwgdXNlIGF2 YWlsX2lkeF9zaGFkb3csCj4gPiAgICAgcmVtb3ZlIGJ5dGUgc3dhcCwgcmVuYW1lIHRvIHZyaW5n X25vdGlmaWNhdGlvbl9kYXRhCj4gPiAgdjI6IHJlamVjdCB0aGUgZmVhdHVyZSBpbiB2aXJ0aW9f Y2N3LCByZXBsYWNlIF9fbGUzMiB3aXRoIHUzMgo+ID4KPiA+ICBUZXN0ZWQgd2l0aCBkaXNhYmxl ZCBWSVJUSU9fRl9OT1RJRklDQVRJT05fREFUQSBvbiBxZW11LXN5c3RlbS1zMzkweAo+ID4gICh2 aXJ0aW8tYmxrLWNjdyksIHFlbXUtc3lzdGVtLXJpc2N2NjQgKHZpcnRpby1ibGstZGV2aWNlLAo+ ID4gIHZpcnRpby1ybmctZGV2aWNlKSwgcWVtdS1zeXN0ZW0teDg2XzY0ICh2aXJ0aW8tYmxrLXBj aSwgdmlydGlvLW5ldC1wY2kpCj4gPiAgdG8gbWFrZSBzdXJlIG5vdGhpbmcgaXMgYnJva2VuLgo+ ID4gIFRlc3RlZCB3aXRoIGVuYWJsZWQgVklSVElPX0ZfTk9USUZJQ0FUSU9OX0RBVEEgb24gNjQt Yml0IFJJU0MtViBMaW51eAo+ID4gIGFuZCBteSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiBvZiB2 aXJ0aW8tcm5nIHdpdGggTU1JTy4KPiA+Cj4gPiAgZHJpdmVycy9zMzkwL3ZpcnRpby92aXJ0aW9f Y2N3LmMgICB8IDIyICsrKysrKysrKysrKysrKysrKystLS0KPiA+ICBkcml2ZXJzL3ZpcnRpby92 aXJ0aW9fbW1pby5jICAgICAgIHwgMTggKysrKysrKysrKysrKysrKystCj4gPiAgZHJpdmVycy92 aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYyB8IDE3ICsrKysrKysrKysrKysrKystCj4gPiAgZHJp dmVycy92aXJ0aW8vdmlydGlvX3JpbmcuYyAgICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCj4g PiAgaW5jbHVkZS9saW51eC92aXJ0aW9fcmluZy5oICAgICAgICB8ICAyICsrCj4gPiAgaW5jbHVk ZS91YXBpL2xpbnV4L3ZpcnRpb19jb25maWcuaCB8ICA2ICsrKysrKwo+ID4gIDYgZmlsZXMgY2hh bmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zMzkwL3ZpcnRpby92aXJ0aW9fY2N3LmMgYi9kcml2ZXJzL3MzOTAvdmlydGlv L3ZpcnRpb19jY3cuYwo+ID4gaW5kZXggOTU0ZmMzMWI0YmM3Li45YTljNWQzNDQ1NGMgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL3MzOTAvdmlydGlvL3ZpcnRpb19jY3cuYwo+ID4gKysrIGIvZHJp dmVycy9zMzkwL3ZpcnRpby92aXJ0aW9fY2N3LmMKPiA+IEBAIC0zOTEsNyArMzkxLDcgQEAgc3Rh dGljIHZvaWQgdmlydGlvX2Njd19kcm9wX2luZGljYXRvcihzdHJ1Y3QgdmlydGlvX2Njd19kZXZp Y2UgKnZjZGV2LAo+ID4gICAgICAgICBjY3dfZGV2aWNlX2RtYV9mcmVlKHZjZGV2LT5jZGV2LCB0 aGluaW50X2FyZWEsIHNpemVvZigqdGhpbmludF9hcmVhKSk7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0 aWMgYm9vbCB2aXJ0aW9fY2N3X2t2bV9ub3RpZnkoc3RydWN0IHZpcnRxdWV1ZSAqdnEpCj4gPiAr c3RhdGljIGlubGluZSBib29sIHZpcnRpb19jY3dfZG9fa3ZtX25vdGlmeShzdHJ1Y3QgdmlydHF1 ZXVlICp2cSwgdTMyIGRhdGEpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgdmlydGlvX2Njd192 cV9pbmZvICppbmZvID0gdnEtPnByaXY7Cj4gPiAgICAgICAgIHN0cnVjdCB2aXJ0aW9fY2N3X2Rl dmljZSAqdmNkZXY7Cj4gPiBAQCAtNDAyLDEyICs0MDIsMjIgQEAgc3RhdGljIGJvb2wgdmlydGlv X2Njd19rdm1fbm90aWZ5KHN0cnVjdCB2aXJ0cXVldWUgKnZxKQo+ID4gICAgICAgICBCVUlMRF9C VUdfT04oc2l6ZW9mKHN0cnVjdCBzdWJjaGFubmVsX2lkKSAhPSBzaXplb2YodW5zaWduZWQgaW50 KSk7Cj4gPiAgICAgICAgIGluZm8tPmNvb2tpZSA9IGt2bV9oeXBlcmNhbGwzKEtWTV9TMzkwX1ZJ UlRJT19DQ1dfTk9USUZZLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqKCh1bnNpZ25lZCBpbnQgKikmc2NoaWQpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2cS0+aW5kZXgsIGluZm8tPmNvb2tpZSk7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIGluZm8tPmNvb2tpZSk7Cj4gPiAgICAgICAg IGlmIChpbmZvLT5jb29raWUgPCAwKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK PiA+ICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0aWMgYm9vbCB2aXJ0 aW9fY2N3X2t2bV9ub3RpZnkoc3RydWN0IHZpcnRxdWV1ZSAqdnEpCj4gPiArewo+ID4gKyAgICAg ICByZXR1cm4gdmlydGlvX2Njd19kb19rdm1fbm90aWZ5KHZxLCB2cS0+aW5kZXgpOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgYm9vbCB2aXJ0aW9fY2N3X2t2bV9ub3RpZnlfd2l0aF9kYXRhKHN0 cnVjdCB2aXJ0cXVldWUgKnZxKQo+ID4gK3sKPiA+ICsgICAgICAgcmV0dXJuIHZpcnRpb19jY3df ZG9fa3ZtX25vdGlmeSh2cSwgdnJpbmdfbm90aWZpY2F0aW9uX2RhdGEodnEpKTsKPiA+ICt9Cj4g PiArCj4gPiAgc3RhdGljIGludCB2aXJ0aW9fY2N3X3JlYWRfdnFfY29uZihzdHJ1Y3QgdmlydGlv X2Njd19kZXZpY2UgKnZjZGV2LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgY2N3MSAqY2N3LCBpbnQgaW5kZXgpCj4gPiAgewo+ID4gQEAgLTUwMSw2ICs1MTEs MTIgQEAgc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKnZpcnRpb19jY3dfc2V0dXBfdnEoc3RydWN0 IHZpcnRpb19kZXZpY2UgKnZkZXYsCj4gPiAgICAgICAgIHU2NCBxdWV1ZTsKPiA+ICAgICAgICAg dW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ICAgICAgICAgYm9vbCBtYXlfcmVkdWNlOwo+ID4gKyAg ICAgICBib29sICgqbm90aWZ5KShzdHJ1Y3QgdmlydHF1ZXVlICp2cSk7Cj4gPiArCj4gPiArICAg ICAgIGlmIChfX3ZpcnRpb190ZXN0X2JpdCh2ZGV2LCBWSVJUSU9fRl9OT1RJRklDQVRJT05fREFU QSkpCj4gPiArICAgICAgICAgICAgICAgbm90aWZ5ID0gdmlydGlvX2Njd19rdm1fbm90aWZ5X3dp dGhfZGF0YTsKPiA+ICsgICAgICAgZWxzZQo+ID4gKyAgICAgICAgICAgICAgIG5vdGlmeSA9IHZp cnRpb19jY3dfa3ZtX25vdGlmeTsKPiA+Cj4gPiAgICAgICAgIC8qIEFsbG9jYXRlIHF1ZXVlLiAq Lwo+ID4gICAgICAgICBpbmZvID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHZpcnRpb19jY3dfdnFf aW5mbyksIEdGUF9LRVJORUwpOwo+ID4gQEAgLTUyNCw3ICs1NDAsNyBAQCBzdGF0aWMgc3RydWN0 IHZpcnRxdWV1ZSAqdmlydGlvX2Njd19zZXR1cF92cShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRl diwKPiA+ICAgICAgICAgbWF5X3JlZHVjZSA9IHZjZGV2LT5yZXZpc2lvbiA+IDA7Cj4gPiAgICAg ICAgIHZxID0gdnJpbmdfY3JlYXRlX3ZpcnRxdWV1ZShpLCBpbmZvLT5udW0sIEtWTV9WSVJUSU9f Q0NXX1JJTkdfQUxJR04sCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 ZGV2LCB0cnVlLCBtYXlfcmVkdWNlLCBjdHgsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2aXJ0aW9fY2N3X2t2bV9ub3RpZnksIGNhbGxiYWNrLCBuYW1lKTsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmeSwgY2FsbGJhY2ssIG5hbWUp Owo+ID4KPiA+ICAgICAgICAgaWYgKCF2cSkgewo+ID4gICAgICAgICAgICAgICAgIC8qIEZvciBu b3csIHdlIGZhaWwgaWYgd2UgY2FuJ3QgZ2V0IHRoZSByZXF1ZXN0ZWQgc2l6ZS4gKi8KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jIGIvZHJpdmVycy92aXJ0aW8v dmlydGlvX21taW8uYwo+ID4gaW5kZXggM2ZmNzQ2ZTNmMjRhLi43ZTg3Zjc0NWY2OGQgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbW1pby5jCj4gPiArKysgYi9kcml2ZXJz L3ZpcnRpby92aXJ0aW9fbW1pby5jCj4gPiBAQCAtMjg1LDYgKzI4NSwxNiBAQCBzdGF0aWMgYm9v bCB2bV9ub3RpZnkoc3RydWN0IHZpcnRxdWV1ZSAqdnEpCj4gPiAgICAgICAgIHJldHVybiB0cnVl Owo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIGJvb2wgdm1fbm90aWZ5X3dpdGhfZGF0YShzdHJ1Y3Qg dmlydHF1ZXVlICp2cSkKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCB2aXJ0aW9fbW1pb19kZXZp Y2UgKnZtX2RldiA9IHRvX3ZpcnRpb19tbWlvX2RldmljZSh2cS0+dmRldik7Cj4gPiArICAgICAg IHUzMiBkYXRhID0gdnJpbmdfbm90aWZpY2F0aW9uX2RhdGEodnEpOwo+ID4gKwo+ID4gKyAgICAg ICB3cml0ZWwoZGF0YSwgdm1fZGV2LT5iYXNlICsgVklSVElPX01NSU9fUVVFVUVfTk9USUZZKTsK PiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIHRydWU7Cj4gPiArfQo+ID4gKwo+ID4gIC8qIE5vdGlm eSBhbGwgdmlydHF1ZXVlcyBvbiBhbiBpbnRlcnJ1cHQuICovCj4gPiAgc3RhdGljIGlycXJldHVy bl90IHZtX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpvcGFxdWUpCj4gPiAgewo+ID4gQEAgLTM2 OCw2ICszNzgsMTIgQEAgc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKnZtX3NldHVwX3ZxKHN0cnVj dCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCB1bnNpZ25lZCBpbnQgaW4KPiA+ICAgICAgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsKPiA+ICAgICAgICAgdW5zaWduZWQgaW50IG51bTsKPiA+ICAgICAgICAg aW50IGVycjsKPiA+ICsgICAgICAgYm9vbCAoKm5vdGlmeSkoc3RydWN0IHZpcnRxdWV1ZSAqdnEp Owo+ID4gKwo+ID4gKyAgICAgICBpZiAoX192aXJ0aW9fdGVzdF9iaXQodmRldiwgVklSVElPX0Zf Tk9USUZJQ0FUSU9OX0RBVEEpKQo+ID4gKyAgICAgICAgICAgICAgIG5vdGlmeSA9IHZtX25vdGlm eV93aXRoX2RhdGE7Cj4gPiArICAgICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAgICBub3RpZnkg PSB2bV9ub3RpZnk7Cj4gPgo+ID4gICAgICAgICBpZiAoIW5hbWUpCj4gPiAgICAgICAgICAgICAg ICAgcmV0dXJuIE5VTEw7Cj4gPiBAQCAtMzk3LDcgKzQxMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgdmly dHF1ZXVlICp2bV9zZXR1cF92cShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldiwgdW5zaWduZWQg aW50IGluCj4gPgo+ID4gICAgICAgICAvKiBDcmVhdGUgdGhlIHZyaW5nICovCj4gPiAgICAgICAg IHZxID0gdnJpbmdfY3JlYXRlX3ZpcnRxdWV1ZShpbmRleCwgbnVtLCBWSVJUSU9fTU1JT19WUklO R19BTElHTiwgdmRldiwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUs IHRydWUsIGN0eCwgdm1fbm90aWZ5LCBjYWxsYmFjaywgbmFtZSk7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0cnVlLCB0cnVlLCBjdHgsIG5vdGlmeSwgY2FsbGJhY2ssIG5h bWUpOwo+ID4gICAgICAgICBpZiAoIXZxKSB7Cj4gPiAgICAgICAgICAgICAgICAgZXJyID0gLUVO T01FTTsKPiA+ICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX25ld192aXJ0cXVldWU7Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYyBiL2RyaXZlcnMv dmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMKPiA+IGluZGV4IDllNDk2ZTI4OGNmYS4uM2JmYzM2 OGIyNzllIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4u Ywo+ID4gKysrIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYwo+ID4gQEAgLTI4 OCw2ICsyODgsMTUgQEAgc3RhdGljIHUxNiB2cF9jb25maWdfdmVjdG9yKHN0cnVjdCB2aXJ0aW9f cGNpX2RldmljZSAqdnBfZGV2LCB1MTYgdmVjdG9yKQo+ID4gICAgICAgICByZXR1cm4gdnBfbW9k ZXJuX2NvbmZpZ192ZWN0b3IoJnZwX2Rldi0+bWRldiwgdmVjdG9yKTsKPiA+ICB9Cj4gPgo+ID4g K3N0YXRpYyBib29sIHZwX25vdGlmeV93aXRoX2RhdGEoc3RydWN0IHZpcnRxdWV1ZSAqdnEpCj4g PiArewo+ID4gKyAgICAgICB1MzIgZGF0YSA9IHZyaW5nX25vdGlmaWNhdGlvbl9kYXRhKHZxKTsK PiA+ICsKPiA+ICsgICAgICAgaW93cml0ZTMyKGRhdGEsICh2b2lkIF9faW9tZW0gKil2cS0+cHJp dik7Cj4gPiArCj4gPiArICAgICAgIHJldHVybiB0cnVlOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0 aWMgc3RydWN0IHZpcnRxdWV1ZSAqc2V0dXBfdnEoc3RydWN0IHZpcnRpb19wY2lfZGV2aWNlICp2 cF9kZXYsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZpcnRp b19wY2lfdnFfaW5mbyAqaW5mbywKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgaW5kZXgsCj4gPiBAQCAtMzAxLDYgKzMxMCwxMiBAQCBzdGF0aWMgc3Ry dWN0IHZpcnRxdWV1ZSAqc2V0dXBfdnEoc3RydWN0IHZpcnRpb19wY2lfZGV2aWNlICp2cF9kZXYs Cj4gPiAgICAgICAgIHN0cnVjdCB2aXJ0cXVldWUgKnZxOwo+ID4gICAgICAgICB1MTYgbnVtOwo+ ID4gICAgICAgICBpbnQgZXJyOwo+ID4gKyAgICAgICBib29sICgqbm90aWZ5KShzdHJ1Y3Qgdmly dHF1ZXVlICp2cSk7Cj4gPiArCj4gPiArICAgICAgIGlmIChfX3ZpcnRpb190ZXN0X2JpdCgmdnBf ZGV2LT52ZGV2LCBWSVJUSU9fRl9OT1RJRklDQVRJT05fREFUQSkpCj4gPiArICAgICAgICAgICAg ICAgbm90aWZ5ID0gdnBfbm90aWZ5X3dpdGhfZGF0YTsKPiA+ICsgICAgICAgZWxzZQo+ID4gKyAg ICAgICAgICAgICAgIG5vdGlmeSA9IHZwX25vdGlmeTsKPiA+Cj4gPiAgICAgICAgIGlmIChpbmRl eCA+PSB2cF9tb2Rlcm5fZ2V0X251bV9xdWV1ZXMobWRldikpCj4gPiAgICAgICAgICAgICAgICAg cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gPiBAQCAtMzIxLDcgKzMzNiw3IEBAIHN0YXRpYyBz dHJ1Y3QgdmlydHF1ZXVlICpzZXR1cF92cShzdHJ1Y3QgdmlydGlvX3BjaV9kZXZpY2UgKnZwX2Rl diwKPiA+ICAgICAgICAgdnEgPSB2cmluZ19jcmVhdGVfdmlydHF1ZXVlKGluZGV4LCBudW0sCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTVBfQ0FDSEVfQllURVMsICZ2 cF9kZXYtPnZkZXYsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVl LCB0cnVlLCBjdHgsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cF9u b3RpZnksIGNhbGxiYWNrLCBuYW1lKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5vdGlmeSwgY2FsbGJhY2ssIG5hbWUpOwo+ID4gICAgICAgICBpZiAoIXZxKQo+ID4g ICAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jIGIvZHJpdmVycy92aXJ0aW8vdmlydGlv X3JpbmcuYwo+ID4gaW5kZXggNGMzYmIwZGRlYjliLi44Mzc4NzVjYzMxOTAgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jCj4gPiArKysgYi9kcml2ZXJzL3ZpcnRp by92aXJ0aW9fcmluZy5jCj4gPiBAQCAtMjc1Miw2ICsyNzUyLDIxIEBAIHZvaWQgdnJpbmdfZGVs X3ZpcnRxdWV1ZShzdHJ1Y3QgdmlydHF1ZXVlICpfdnEpCj4gPiAgfQo+ID4gIEVYUE9SVF9TWU1C T0xfR1BMKHZyaW5nX2RlbF92aXJ0cXVldWUpOwo+ID4KPiA+ICt1MzIgdnJpbmdfbm90aWZpY2F0 aW9uX2RhdGEoc3RydWN0IHZpcnRxdWV1ZSAqX3ZxKQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0 IHZyaW5nX3ZpcnRxdWV1ZSAqdnEgPSB0b192dnEoX3ZxKTsKPiA+ICsgICAgICAgdTE2IG5leHQ7 Cj4gPiArCj4gPiArICAgICAgIGlmICh2cS0+cGFja2VkX3JpbmcpCj4gPiArICAgICAgICAgICAg ICAgbmV4dCA9ICh2cS0+cGFja2VkLm5leHRfYXZhaWxfaWR4ICYgfigxIDw8IDE1KSkgfAo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgdnEtPnBhY2tlZC5hdmFpbF93cmFwX2NvdW50ZXIgPDwg MTU7Cj4gCj4gTml0OiBXZSBoYXZlIFZSSU5HX1BBQ0tFRF9FVkVOVF9GX1dSQVBfQ1RSIHdoaWNo IGNvdWxkIGJlIHVzZWQgZm9yCj4gcmVwbGFjaW5nIDE1IGhlcmUuCj4gCj4gQW5kIHdlIGhhdmUg bWFueSBwbGFjZXMgZm9yIHBhY2tpbmcgdGhlbSBpbnRvIHUxNiwgaXQgbWlnaHQgYmUgYmV0dGVy Cj4gdG8gaW50cm9kdWNlIGEgaGVscGVyLgoKTm90IHN1cmUgYWJvdXQgYSBoZWxwZXIsIEknZCBs ZWF2ZSB0aGF0IGZvciBhIGZ1dHVyZSBjbGVhbnVwLgoKSG93ZXZlciBJIHdvdWxkIHVzZQoKJiAo LSgxIDw8IFZSSU5HX1BBQ0tFRF9FVkVOVF9GX1dSQVBfQ1RSKSkKCnRoYXQncyBtb3JlIHJvYnVz dCAtIHdvcmtzIGZvciBhbnkgdmFsdWUgb2YgVlJJTkdfUEFDS0VEX0VWRU5UX0ZfV1JBUF9DVFIK Z2l2aW5nIGxvdyBiaXRzIDAgdG8gVlJJTkdfUEFDS0VEX0VWRU5UX0ZfV1JBUF9DVFIsCmFuZCB3 aWxsIGtlZXAgd29ya2luZyBpZiBzb21lb25lIGNvcHlwYXN0ZWQgaXQgYW5kIGNoYW5nZWQKY291 bnRlciB0byBhIHZhbHVlIGRpZmZlcmVudCBmcm9tIDE1LgoKCj4gQWNrZWQtYnk6IEphc29uIFdh bmcgPGphc293YW5nQHJlZGhhdC5jb20+Cj4gCj4gVGhhbmtzCj4gCj4gPiArICAgICAgIGVsc2UK PiA+ICsgICAgICAgICAgICAgICBuZXh0ID0gdnEtPnNwbGl0LmF2YWlsX2lkeF9zaGFkb3c7Cj4g PiArCj4gPiArICAgICAgIHJldHVybiBuZXh0IDw8IDE2IHwgX3ZxLT5pbmRleDsKPiA+ICt9Cj4g PiArRVhQT1JUX1NZTUJPTF9HUEwodnJpbmdfbm90aWZpY2F0aW9uX2RhdGEpOwo+ID4gKwo+ID4g IC8qIE1hbmlwdWxhdGVzIHRyYW5zcG9ydC1zcGVjaWZpYyBmZWF0dXJlIGJpdHMuICovCj4gPiAg dm9pZCB2cmluZ190cmFuc3BvcnRfZmVhdHVyZXMoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYp Cj4gPiAgewo+ID4gQEAgLTI3NzEsNiArMjc4Niw4IEBAIHZvaWQgdnJpbmdfdHJhbnNwb3J0X2Zl YXR1cmVzKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7Cj4gPiAgICAgICAgICAgICAgICAgY2FzZSBWSVJUSU9fRl9PUkRFUl9QTEFU Rk9STToKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAg ICAgIGNhc2UgVklSVElPX0ZfTk9USUZJQ0FUSU9OX0RBVEE6Cj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKPiA+ICAgICAgICAgICAgICAgICBkZWZhdWx0Ogo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgLyogV2UgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIGJpdC4gKi8KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIF9fdmlydGlvX2NsZWFyX2JpdCh2ZGV2LCBpKTsKPiA+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3ZpcnRpb19yaW5nLmggYi9pbmNsdWRlL2xpbnV4L3Zp cnRpb19yaW5nLmgKPiA+IGluZGV4IDhiOTViNjllZjY5NC4uMjU1MGM5MTcwZjRmIDEwMDY0NAo+ ID4gLS0tIGEvaW5jbHVkZS9saW51eC92aXJ0aW9fcmluZy5oCj4gPiArKysgYi9pbmNsdWRlL2xp bnV4L3ZpcnRpb19yaW5nLmgKPiA+IEBAIC0xMTcsNCArMTE3LDYgQEAgdm9pZCB2cmluZ19kZWxf dmlydHF1ZXVlKHN0cnVjdCB2aXJ0cXVldWUgKnZxKTsKPiA+ICB2b2lkIHZyaW5nX3RyYW5zcG9y dF9mZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldik7Cj4gPgo+ID4gIGlycXJldHVy bl90IHZyaW5nX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpfdnEpOwo+ID4gKwo+ID4gK3UzMiB2 cmluZ19ub3RpZmljYXRpb25fZGF0YShzdHJ1Y3QgdmlydHF1ZXVlICpfdnEpOwo+ID4gICNlbmRp ZiAvKiBfTElOVVhfVklSVElPX1JJTkdfSCAqLwo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFw aS9saW51eC92aXJ0aW9fY29uZmlnLmggYi9pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2NvbmZp Zy5oCj4gPiBpbmRleCAzYzA1MTYyYmM5ODguLjJjNzEyYzY1NDE2NSAxMDA2NDQKPiA+IC0tLSBh L2luY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9fY29uZmlnLmgKPiA+ICsrKyBiL2luY2x1ZGUvdWFw aS9saW51eC92aXJ0aW9fY29uZmlnLmgKPiA+IEBAIC05OSw2ICs5OSwxMiBAQAo+ID4gICAqLwo+ ID4gICNkZWZpbmUgVklSVElPX0ZfU1JfSU9WICAgICAgICAgICAgICAgICAgICAgICAgMzcKPiA+ Cj4gPiArLyoKPiA+ICsgKiBUaGlzIGZlYXR1cmUgaW5kaWNhdGVzIHRoYXQgdGhlIGRyaXZlciBw YXNzZXMgZXh0cmEgZGF0YSAoYmVzaWRlcwo+ID4gKyAqIGlkZW50aWZ5aW5nIHRoZSB2aXJ0cXVl dWUpIGluIGl0cyBkZXZpY2Ugbm90aWZpY2F0aW9ucy4KPiA+ICsgKi8KPiA+ICsjZGVmaW5lIFZJ UlRJT19GX05PVElGSUNBVElPTl9EQVRBICAgICAzOAo+ID4gKwo+ID4gIC8qCj4gPiAgICogVGhp cyBmZWF0dXJlIGluZGljYXRlcyB0aGF0IHRoZSBkcml2ZXIgY2FuIHJlc2V0IGEgcXVldWUgaW5k aXZpZHVhbGx5Lgo+ID4gICAqLwo+ID4gLS0KPiA+IDIuMzUuMQo+ID4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcg bGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xp c3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==