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=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 5D9ADC5DF60 for ; Tue, 5 Nov 2019 17:47:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 23F87217F4 for ; Tue, 5 Nov 2019 17:47:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="KseWs/lN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390503AbfKERra (ORCPT ); Tue, 5 Nov 2019 12:47:30 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:39213 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2390343AbfKERr3 (ORCPT ); Tue, 5 Nov 2019 12:47:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1572976048; 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=mmNbdhzmcE/l8I+m97JNhArMEK2wMeb3rOnVLGrpP44=; b=KseWs/lNeOjUStpAjkBv3Pc4M4Gi+NGYJIpv41v/l6EGVo3Fh77KHta4hN6V4lT9vRyK6b 7RBMnwOmRqYk/PhSg1W8JX5GwjmNdUp/0khkB0TUrni1uawEG6S1dT8rgVhHl6VKjyDd/i PqkF0WGy6qUBrUPrGAIyjouAOKlcf2g= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-333-ArmLVmUlO4K5jaS0MCFNjA-1; Tue, 05 Nov 2019 12:47:25 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 44360800C73; Tue, 5 Nov 2019 17:47:21 +0000 (UTC) Received: from x1.home (ovpn-116-110.phx2.redhat.com [10.3.116.110]) by smtp.corp.redhat.com (Postfix) with ESMTP id A98BB1001B28; Tue, 5 Nov 2019 17:47:10 +0000 (UTC) Date: Tue, 5 Nov 2019 10:47:10 -0700 From: Alex Williamson To: Jason Wang Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-gvt-dev@lists.freedesktop.org, kwankhede@nvidia.com, mst@redhat.com, tiwei.bie@intel.com, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, cohuck@redhat.com, maxime.coquelin@redhat.com, cunming.liang@intel.com, zhihong.wang@intel.com, rob.miller@broadcom.com, xiao.w.wang@intel.com, haotian.wang@sifive.com, zhenyuw@linux.intel.com, zhi.a.wang@intel.com, jani.nikula@linux.intel.com, joonas.lahtinen@linux.intel.com, rodrigo.vivi@intel.com, airlied@linux.ie, daniel@ffwll.ch, farman@linux.ibm.com, pasic@linux.ibm.com, sebott@linux.ibm.com, oberpar@linux.ibm.com, heiko.carstens@de.ibm.com, gor@linux.ibm.com, borntraeger@de.ibm.com, akrowiak@linux.ibm.com, freude@linux.ibm.com, lingshan.zhu@intel.com, idos@mellanox.com, eperezma@redhat.com, lulu@redhat.com, parav@mellanox.com, christophe.de.dinechin@gmail.com, kevin.tian@intel.com, stefanha@redhat.com Subject: Re: [PATCH V8 4/6] mdev: introduce virtio device and its device ops Message-ID: <20191105104710.16d0f629@x1.home> In-Reply-To: <20191105093240.5135-5-jasowang@redhat.com> References: <20191105093240.5135-1-jasowang@redhat.com> <20191105093240.5135-5-jasowang@redhat.com> Organization: Red Hat MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-MC-Unique: ArmLVmUlO4K5jaS0MCFNjA-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 5 Nov 2019 17:32:38 +0800 Jason Wang wrote: > This patch implements basic support for mdev driver that supports > virtio transport for kernel virtio driver. >=20 > Signed-off-by: Jason Wang > --- > drivers/vfio/mdev/mdev_core.c | 21 +++++ > drivers/vfio/mdev/mdev_private.h | 2 + > include/linux/mdev.h | 6 ++ > include/linux/mdev_virtio_ops.h | 149 +++++++++++++++++++++++++++++++ > 4 files changed, 178 insertions(+) > create mode 100644 include/linux/mdev_virtio_ops.h >=20 > diff --git a/drivers/vfio/mdev/mdev_core.c b/drivers/vfio/mdev/mdev_core.= c > index 4e70f19ac145..c58253404ed5 100644 > --- a/drivers/vfio/mdev/mdev_core.c > +++ b/drivers/vfio/mdev/mdev_core.c > @@ -78,6 +78,27 @@ const struct mdev_vfio_device_ops *mdev_get_vfio_ops(s= truct mdev_device *mdev) > } > EXPORT_SYMBOL(mdev_get_vfio_ops); > =20 > +/* > + * Specify the virtio device ops for the mdev device, this > + * must be called during create() callback for virtio mdev device. > + */ > +void mdev_set_virtio_ops(struct mdev_device *mdev, > +=09=09=09 const struct mdev_virtio_device_ops *virtio_ops) > +{ > +=09mdev_set_class(mdev, MDEV_CLASS_ID_VIRTIO); > +=09mdev->virtio_ops =3D virtio_ops; > +} > +EXPORT_SYMBOL(mdev_set_virtio_ops); > + > +/* Get the virtio device ops for the mdev device. */ > +const struct mdev_virtio_device_ops * > +mdev_get_virtio_ops(struct mdev_device *mdev) > +{ > +=09WARN_ON(mdev->class_id !=3D MDEV_CLASS_ID_VIRTIO); > +=09return mdev->virtio_ops; > +} > +EXPORT_SYMBOL(mdev_get_virtio_ops); > + > struct device *mdev_dev(struct mdev_device *mdev) > { > =09return &mdev->dev; > diff --git a/drivers/vfio/mdev/mdev_private.h b/drivers/vfio/mdev/mdev_pr= ivate.h > index 411227373625..2c74dd032409 100644 > --- a/drivers/vfio/mdev/mdev_private.h > +++ b/drivers/vfio/mdev/mdev_private.h > @@ -11,6 +11,7 @@ > #define MDEV_PRIVATE_H > =20 > #include > +#include > =20 > int mdev_bus_register(void); > void mdev_bus_unregister(void); > @@ -38,6 +39,7 @@ struct mdev_device { > =09u16 class_id; > =09union { > =09=09const struct mdev_vfio_device_ops *vfio_ops; > +=09=09const struct mdev_virtio_device_ops *virtio_ops; > =09}; > }; > =20 > diff --git a/include/linux/mdev.h b/include/linux/mdev.h > index 9e37506d1987..f3d75a60c2b5 100644 > --- a/include/linux/mdev.h > +++ b/include/linux/mdev.h > @@ -17,6 +17,7 @@ > =20 > struct mdev_device; > struct mdev_vfio_device_ops; > +struct mdev_virtio_device_ops; > =20 > /* > * Called by the parent device driver to set the device which represents > @@ -112,6 +113,10 @@ void mdev_set_class(struct mdev_device *mdev, u16 id= ); > void mdev_set_vfio_ops(struct mdev_device *mdev, > =09=09 const struct mdev_vfio_device_ops *vfio_ops); > const struct mdev_vfio_device_ops *mdev_get_vfio_ops(struct mdev_device = *mdev); > +void mdev_set_virtio_ops(struct mdev_device *mdev, > +=09=09=09 const struct mdev_virtio_device_ops *virtio_ops); > +const struct mdev_virtio_device_ops * > +mdev_get_virtio_ops(struct mdev_device *mdev); > =20 > extern struct bus_type mdev_bus_type; > =20 > @@ -127,6 +132,7 @@ struct mdev_device *mdev_from_dev(struct device *dev)= ; > =20 > enum { > =09MDEV_CLASS_ID_VFIO =3D 1, > +=09MDEV_CLASS_ID_VIRTIO =3D 2, > =09/* New entries must be added here */ > }; > =20 > diff --git a/include/linux/mdev_virtio_ops.h b/include/linux/mdev_virtio_= ops.h > new file mode 100644 > index 000000000000..379bfa5d6a30 > --- /dev/null > +++ b/include/linux/mdev_virtio_ops.h > @@ -0,0 +1,149 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* > + * Virtio mediated device driver > + * > + * Copyright 2019, Red Hat Corp. > + * Author: Jason Wang > + */ > +#ifndef MDEV_VIRTIO_OPS_H > +#define MDEV_VIRTIO_OPS_H > + > +#include > +#include > +#include > + > +#define VIRTIO_MDEV_DEVICE_API_STRING=09=09"virtio-mdev" > +#define VIRTIO_MDEV_F_VERSION_1 0x1 This entire concept of VIRTIO_MDEV_F_VERSION_1 is gone now, right? Let's remove it here and below. Thanks, Alex > + > +struct virtio_mdev_callback { > +=09irqreturn_t (*callback)(void *data); > +=09void *private; > +}; > + > +/** > + * struct mdev_virtio_device_ops - Structure to be registered for each > + * mdev device to register the device for virtio/vhost drivers. > + * > + * The device ops that is supported by VIRTIO_MDEV_F_VERSION_1, the > + * callbacks are mandatory unless explicity mentioned. > + * > + * @set_vq_address:=09=09Set the address of virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@desc_area: address of desc area > + *=09=09=09=09@driver_area: address of driver area > + *=09=09=09=09@device_area: address of device area > + *=09=09=09=09Returns integer: success (0) or error (< 0) > + * @set_vq_num:=09=09=09Set the size of virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@num: the size of virtqueue > + * @kick_vq:=09=09=09Kick the virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + * @set_vq_cb:=09=09=09Set the interrupt callback function for > + *=09=09=09=09a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@cb: virtio-mdev interrupt callback structure > + * @set_vq_ready:=09=09Set ready status for a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@ready: ready (true) not ready(false) > + * @get_vq_ready:=09=09Get ready status for a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09Returns boolean: ready (true) or not (false) > + * @set_vq_state:=09=09Set the state for a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@state: virtqueue state (last_avail_idx) > + *=09=09=09=09Returns integer: success (0) or error (< 0) > + * @get_vq_state:=09=09Get the state for a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09Returns virtqueue state (last_avail_idx) > + * @get_vq_align:=09=09Get the virtqueue align requirement > + *=09=09=09=09for the device > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns virtqueue algin requirement > + * @get_features:=09=09Get virtio features supported by the device > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns the virtio features support by the > + *=09=09=09=09device > + * @set_features:=09=09Set virtio features supported by the driver > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@features: feature support by the driver > + *=09=09=09=09Returns integer: success (0) or error (< 0) > + * @set_config_cb:=09=09Set the config interrupt callback > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@cb: virtio-mdev interrupt callback structure > + * @get_vq_num_max:=09=09Get the max size of virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u16: max size of virtqueue > + * @get_device_id:=09=09Get virtio device id > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u32: virtio device id > + * @get_vendor_id:=09=09Get id for the vendor that provides this device > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u32: virtio vendor id > + * @get_status:=09=09=09Get the device status > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u8: virtio device status > + * @set_status:=09=09=09Set the device status > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@status: virtio device status > + * @get_config:=09=09=09Read from device specific configuration space > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@offset: offset from the beginning of > + *=09=09=09=09configuration space > + *=09=09=09=09@buf: buffer used to read to > + *=09=09=09=09@len: the length to read from > + *=09=09=09=09configration space > + * @set_config:=09=09=09Write to device specific configuration space > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@offset: offset from the beginning of > + *=09=09=09=09configuration space > + *=09=09=09=09@buf: buffer used to write from > + *=09=09=09=09@len: the length to write to > + *=09=09=09=09configration space > + * @get_generation:=09=09Get device config generaton (optional) > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u32: device generation > + */ > +struct mdev_virtio_device_ops { > +=09/* Virtqueue ops */ > +=09int (*set_vq_address)(struct mdev_device *mdev, > +=09=09=09 u16 idx, u64 desc_area, u64 driver_area, > +=09=09=09 u64 device_area); > +=09void (*set_vq_num)(struct mdev_device *mdev, u16 idx, u32 num); > +=09void (*kick_vq)(struct mdev_device *mdev, u16 idx); > +=09void (*set_vq_cb)(struct mdev_device *mdev, u16 idx, > +=09=09=09 struct virtio_mdev_callback *cb); > +=09void (*set_vq_ready)(struct mdev_device *mdev, u16 idx, bool ready); > +=09bool (*get_vq_ready)(struct mdev_device *mdev, u16 idx); > +=09int (*set_vq_state)(struct mdev_device *mdev, u16 idx, u64 state); > +=09u64 (*get_vq_state)(struct mdev_device *mdev, u16 idx); > + > +=09/* Virtio device ops */ > +=09u16 (*get_vq_align)(struct mdev_device *mdev); > +=09u64 (*get_features)(struct mdev_device *mdev); > +=09int (*set_features)(struct mdev_device *mdev, u64 features); > +=09void (*set_config_cb)(struct mdev_device *mdev, > +=09=09=09 struct virtio_mdev_callback *cb); > +=09u16 (*get_vq_num_max)(struct mdev_device *mdev); > +=09u32 (*get_device_id)(struct mdev_device *mdev); > +=09u32 (*get_vendor_id)(struct mdev_device *mdev); > +=09u8 (*get_status)(struct mdev_device *mdev); > +=09void (*set_status)(struct mdev_device *mdev, u8 status); > +=09void (*get_config)(struct mdev_device *mdev, unsigned int offset, > +=09=09=09 void *buf, unsigned int len); > +=09void (*set_config)(struct mdev_device *mdev, unsigned int offset, > +=09=09=09 const void *buf, unsigned int len); > +=09u32 (*get_generation)(struct mdev_device *mdev); > +}; > + > +void mdev_set_virtio_ops(struct mdev_device *mdev, > +=09=09=09 const struct mdev_virtio_device_ops *virtio_ops); > + > +#endif From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH V8 4/6] mdev: introduce virtio device and its device ops Date: Tue, 5 Nov 2019 10:47:10 -0700 Message-ID: <20191105104710.16d0f629@x1.home> References: <20191105093240.5135-1-jasowang@redhat.com> <20191105093240.5135-5-jasowang@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20191105093240.5135-5-jasowang@redhat.com> Sender: linux-kernel-owner@vger.kernel.org To: Jason Wang Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-gvt-dev@lists.freedesktop.org, kwankhede@nvidia.com, mst@redhat.com, tiwei.bie@intel.com, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, cohuck@redhat.com, maxime.coquelin@redhat.com, cunming.liang@intel.com, zhihong.wang@intel.com, rob.miller@broadcom.com, xiao.w.wang@intel.com, haotian.wang@sifive.com, zhenyuw@linux.intel.com, zhi.a.wang@intel.com, jani.nikula@linux.intel.com, joonas.lahtinen@linux.intel.com, rodrigo.vivi@intel.com, airlied@linux.ie, daniel@ffwll.ch, farman@linux.ibm.com, pasic@linux.ibm.com, sebott@linux.ibm.com, oberpar@linux.ibm.com, heiko.carstens@de.ibm.com, gor@linux.ibm.com List-Id: dri-devel@lists.freedesktop.org On Tue, 5 Nov 2019 17:32:38 +0800 Jason Wang wrote: > This patch implements basic support for mdev driver that supports > virtio transport for kernel virtio driver. >=20 > Signed-off-by: Jason Wang > --- > drivers/vfio/mdev/mdev_core.c | 21 +++++ > drivers/vfio/mdev/mdev_private.h | 2 + > include/linux/mdev.h | 6 ++ > include/linux/mdev_virtio_ops.h | 149 +++++++++++++++++++++++++++++++ > 4 files changed, 178 insertions(+) > create mode 100644 include/linux/mdev_virtio_ops.h >=20 > diff --git a/drivers/vfio/mdev/mdev_core.c b/drivers/vfio/mdev/mdev_core.= c > index 4e70f19ac145..c58253404ed5 100644 > --- a/drivers/vfio/mdev/mdev_core.c > +++ b/drivers/vfio/mdev/mdev_core.c > @@ -78,6 +78,27 @@ const struct mdev_vfio_device_ops *mdev_get_vfio_ops(s= truct mdev_device *mdev) > } > EXPORT_SYMBOL(mdev_get_vfio_ops); > =20 > +/* > + * Specify the virtio device ops for the mdev device, this > + * must be called during create() callback for virtio mdev device. > + */ > +void mdev_set_virtio_ops(struct mdev_device *mdev, > +=09=09=09 const struct mdev_virtio_device_ops *virtio_ops) > +{ > +=09mdev_set_class(mdev, MDEV_CLASS_ID_VIRTIO); > +=09mdev->virtio_ops =3D virtio_ops; > +} > +EXPORT_SYMBOL(mdev_set_virtio_ops); > + > +/* Get the virtio device ops for the mdev device. */ > +const struct mdev_virtio_device_ops * > +mdev_get_virtio_ops(struct mdev_device *mdev) > +{ > +=09WARN_ON(mdev->class_id !=3D MDEV_CLASS_ID_VIRTIO); > +=09return mdev->virtio_ops; > +} > +EXPORT_SYMBOL(mdev_get_virtio_ops); > + > struct device *mdev_dev(struct mdev_device *mdev) > { > =09return &mdev->dev; > diff --git a/drivers/vfio/mdev/mdev_private.h b/drivers/vfio/mdev/mdev_pr= ivate.h > index 411227373625..2c74dd032409 100644 > --- a/drivers/vfio/mdev/mdev_private.h > +++ b/drivers/vfio/mdev/mdev_private.h > @@ -11,6 +11,7 @@ > #define MDEV_PRIVATE_H > =20 > #include > +#include > =20 > int mdev_bus_register(void); > void mdev_bus_unregister(void); > @@ -38,6 +39,7 @@ struct mdev_device { > =09u16 class_id; > =09union { > =09=09const struct mdev_vfio_device_ops *vfio_ops; > +=09=09const struct mdev_virtio_device_ops *virtio_ops; > =09}; > }; > =20 > diff --git a/include/linux/mdev.h b/include/linux/mdev.h > index 9e37506d1987..f3d75a60c2b5 100644 > --- a/include/linux/mdev.h > +++ b/include/linux/mdev.h > @@ -17,6 +17,7 @@ > =20 > struct mdev_device; > struct mdev_vfio_device_ops; > +struct mdev_virtio_device_ops; > =20 > /* > * Called by the parent device driver to set the device which represents > @@ -112,6 +113,10 @@ void mdev_set_class(struct mdev_device *mdev, u16 id= ); > void mdev_set_vfio_ops(struct mdev_device *mdev, > =09=09 const struct mdev_vfio_device_ops *vfio_ops); > const struct mdev_vfio_device_ops *mdev_get_vfio_ops(struct mdev_device = *mdev); > +void mdev_set_virtio_ops(struct mdev_device *mdev, > +=09=09=09 const struct mdev_virtio_device_ops *virtio_ops); > +const struct mdev_virtio_device_ops * > +mdev_get_virtio_ops(struct mdev_device *mdev); > =20 > extern struct bus_type mdev_bus_type; > =20 > @@ -127,6 +132,7 @@ struct mdev_device *mdev_from_dev(struct device *dev)= ; > =20 > enum { > =09MDEV_CLASS_ID_VFIO =3D 1, > +=09MDEV_CLASS_ID_VIRTIO =3D 2, > =09/* New entries must be added here */ > }; > =20 > diff --git a/include/linux/mdev_virtio_ops.h b/include/linux/mdev_virtio_= ops.h > new file mode 100644 > index 000000000000..379bfa5d6a30 > --- /dev/null > +++ b/include/linux/mdev_virtio_ops.h > @@ -0,0 +1,149 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* > + * Virtio mediated device driver > + * > + * Copyright 2019, Red Hat Corp. > + * Author: Jason Wang > + */ > +#ifndef MDEV_VIRTIO_OPS_H > +#define MDEV_VIRTIO_OPS_H > + > +#include > +#include > +#include > + > +#define VIRTIO_MDEV_DEVICE_API_STRING=09=09"virtio-mdev" > +#define VIRTIO_MDEV_F_VERSION_1 0x1 This entire concept of VIRTIO_MDEV_F_VERSION_1 is gone now, right? Let's remove it here and below. Thanks, Alex > + > +struct virtio_mdev_callback { > +=09irqreturn_t (*callback)(void *data); > +=09void *private; > +}; > + > +/** > + * struct mdev_virtio_device_ops - Structure to be registered for each > + * mdev device to register the device for virtio/vhost drivers. > + * > + * The device ops that is supported by VIRTIO_MDEV_F_VERSION_1, the > + * callbacks are mandatory unless explicity mentioned. > + * > + * @set_vq_address:=09=09Set the address of virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@desc_area: address of desc area > + *=09=09=09=09@driver_area: address of driver area > + *=09=09=09=09@device_area: address of device area > + *=09=09=09=09Returns integer: success (0) or error (< 0) > + * @set_vq_num:=09=09=09Set the size of virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@num: the size of virtqueue > + * @kick_vq:=09=09=09Kick the virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + * @set_vq_cb:=09=09=09Set the interrupt callback function for > + *=09=09=09=09a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@cb: virtio-mdev interrupt callback structure > + * @set_vq_ready:=09=09Set ready status for a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@ready: ready (true) not ready(false) > + * @get_vq_ready:=09=09Get ready status for a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09Returns boolean: ready (true) or not (false) > + * @set_vq_state:=09=09Set the state for a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09@state: virtqueue state (last_avail_idx) > + *=09=09=09=09Returns integer: success (0) or error (< 0) > + * @get_vq_state:=09=09Get the state for a virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@idx: virtqueue index > + *=09=09=09=09Returns virtqueue state (last_avail_idx) > + * @get_vq_align:=09=09Get the virtqueue align requirement > + *=09=09=09=09for the device > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns virtqueue algin requirement > + * @get_features:=09=09Get virtio features supported by the device > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns the virtio features support by the > + *=09=09=09=09device > + * @set_features:=09=09Set virtio features supported by the driver > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@features: feature support by the driver > + *=09=09=09=09Returns integer: success (0) or error (< 0) > + * @set_config_cb:=09=09Set the config interrupt callback > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@cb: virtio-mdev interrupt callback structure > + * @get_vq_num_max:=09=09Get the max size of virtqueue > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u16: max size of virtqueue > + * @get_device_id:=09=09Get virtio device id > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u32: virtio device id > + * @get_vendor_id:=09=09Get id for the vendor that provides this device > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u32: virtio vendor id > + * @get_status:=09=09=09Get the device status > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u8: virtio device status > + * @set_status:=09=09=09Set the device status > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@status: virtio device status > + * @get_config:=09=09=09Read from device specific configuration space > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@offset: offset from the beginning of > + *=09=09=09=09configuration space > + *=09=09=09=09@buf: buffer used to read to > + *=09=09=09=09@len: the length to read from > + *=09=09=09=09configration space > + * @set_config:=09=09=09Write to device specific configuration space > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09@offset: offset from the beginning of > + *=09=09=09=09configuration space > + *=09=09=09=09@buf: buffer used to write from > + *=09=09=09=09@len: the length to write to > + *=09=09=09=09configration space > + * @get_generation:=09=09Get device config generaton (optional) > + *=09=09=09=09@mdev: mediated device > + *=09=09=09=09Returns u32: device generation > + */ > +struct mdev_virtio_device_ops { > +=09/* Virtqueue ops */ > +=09int (*set_vq_address)(struct mdev_device *mdev, > +=09=09=09 u16 idx, u64 desc_area, u64 driver_area, > +=09=09=09 u64 device_area); > +=09void (*set_vq_num)(struct mdev_device *mdev, u16 idx, u32 num); > +=09void (*kick_vq)(struct mdev_device *mdev, u16 idx); > +=09void (*set_vq_cb)(struct mdev_device *mdev, u16 idx, > +=09=09=09 struct virtio_mdev_callback *cb); > +=09void (*set_vq_ready)(struct mdev_device *mdev, u16 idx, bool ready); > +=09bool (*get_vq_ready)(struct mdev_device *mdev, u16 idx); > +=09int (*set_vq_state)(struct mdev_device *mdev, u16 idx, u64 state); > +=09u64 (*get_vq_state)(struct mdev_device *mdev, u16 idx); > + > +=09/* Virtio device ops */ > +=09u16 (*get_vq_align)(struct mdev_device *mdev); > +=09u64 (*get_features)(struct mdev_device *mdev); > +=09int (*set_features)(struct mdev_device *mdev, u64 features); > +=09void (*set_config_cb)(struct mdev_device *mdev, > +=09=09=09 struct virtio_mdev_callback *cb); > +=09u16 (*get_vq_num_max)(struct mdev_device *mdev); > +=09u32 (*get_device_id)(struct mdev_device *mdev); > +=09u32 (*get_vendor_id)(struct mdev_device *mdev); > +=09u8 (*get_status)(struct mdev_device *mdev); > +=09void (*set_status)(struct mdev_device *mdev, u8 status); > +=09void (*get_config)(struct mdev_device *mdev, unsigned int offset, > +=09=09=09 void *buf, unsigned int len); > +=09void (*set_config)(struct mdev_device *mdev, unsigned int offset, > +=09=09=09 const void *buf, unsigned int len); > +=09u32 (*get_generation)(struct mdev_device *mdev); > +}; > + > +void mdev_set_virtio_ops(struct mdev_device *mdev, > +=09=09=09 const struct mdev_virtio_device_ops *virtio_ops); > + > +#endif 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=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 961C8C47E49 for ; Tue, 5 Nov 2019 17:47:31 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 72641217F4 for ; Tue, 5 Nov 2019 17:47:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 72641217F4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CAB4A89D63; Tue, 5 Nov 2019 17:47:30 +0000 (UTC) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id B4B916EB32 for ; Tue, 5 Nov 2019 17:47:29 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-333-ArmLVmUlO4K5jaS0MCFNjA-1; Tue, 05 Nov 2019 12:47:25 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 44360800C73; Tue, 5 Nov 2019 17:47:21 +0000 (UTC) Received: from x1.home (ovpn-116-110.phx2.redhat.com [10.3.116.110]) by smtp.corp.redhat.com (Postfix) with ESMTP id A98BB1001B28; Tue, 5 Nov 2019 17:47:10 +0000 (UTC) Date: Tue, 5 Nov 2019 10:47:10 -0700 From: Alex Williamson To: Jason Wang Subject: Re: [PATCH V8 4/6] mdev: introduce virtio device and its device ops Message-ID: <20191105104710.16d0f629@x1.home> In-Reply-To: <20191105093240.5135-5-jasowang@redhat.com> References: <20191105093240.5135-1-jasowang@redhat.com> <20191105093240.5135-5-jasowang@redhat.com> Organization: Red Hat MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-MC-Unique: ArmLVmUlO4K5jaS0MCFNjA-1 X-Mimecast-Spam-Score: 0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1572976048; 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=mmNbdhzmcE/l8I+m97JNhArMEK2wMeb3rOnVLGrpP44=; b=KseWs/lNeOjUStpAjkBv3Pc4M4Gi+NGYJIpv41v/l6EGVo3Fh77KHta4hN6V4lT9vRyK6b 7RBMnwOmRqYk/PhSg1W8JX5GwjmNdUp/0khkB0TUrni1uawEG6S1dT8rgVhHl6VKjyDd/i PqkF0WGy6qUBrUPrGAIyjouAOKlcf2g= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: stefanha@redhat.com, christophe.de.dinechin@gmail.com, kvm@vger.kernel.org, mst@redhat.com, airlied@linux.ie, heiko.carstens@de.ibm.com, kevin.tian@intel.com, dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org, kwankhede@nvidia.com, rob.miller@broadcom.com, linux-s390@vger.kernel.org, sebott@linux.ibm.com, lulu@redhat.com, eperezma@redhat.com, pasic@linux.ibm.com, borntraeger@de.ibm.com, haotian.wang@sifive.com, cunming.liang@intel.com, zhi.a.wang@intel.com, farman@linux.ibm.com, idos@mellanox.com, gor@linux.ibm.com, intel-gfx@lists.freedesktop.org, rodrigo.vivi@intel.com, xiao.w.wang@intel.com, freude@linux.ibm.com, parav@mellanox.com, zhihong.wang@intel.com, intel-gvt-dev@lists.freedesktop.org, akrowiak@linux.ibm.com, oberpar@linux.ibm.com, tiwei.bie@intel.com, netdev@vger.kernel.org, cohuck@redhat.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com, lingshan.zhu@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191105174710.bfHW_CAxh_HEBsc8ahxHk8ss9tRSUdLNvBMxZc64Wus@z> T24gVHVlLCAgNSBOb3YgMjAxOSAxNzozMjozOCArMDgwMApKYXNvbiBXYW5nIDxqYXNvd2FuZ0By ZWRoYXQuY29tPiB3cm90ZToKCj4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJhc2ljIHN1cHBvcnQg Zm9yIG1kZXYgZHJpdmVyIHRoYXQgc3VwcG9ydHMKPiB2aXJ0aW8gdHJhbnNwb3J0IGZvciBrZXJu ZWwgdmlydGlvIGRyaXZlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxqYXNvd2Fu Z0ByZWRoYXQuY29tPgo+IC0tLQo+ICBkcml2ZXJzL3ZmaW8vbWRldi9tZGV2X2NvcmUuYyAgICB8 ICAyMSArKysrKwo+ICBkcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3ByaXZhdGUuaCB8ICAgMiArCj4g IGluY2x1ZGUvbGludXgvbWRldi5oICAgICAgICAgICAgIHwgICA2ICsrCj4gIGluY2x1ZGUvbGlu dXgvbWRldl92aXJ0aW9fb3BzLmggIHwgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9saW51eC9tZGV2X3ZpcnRpb19vcHMuaAo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZmaW8vbWRldi9tZGV2X2NvcmUuYyBiL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfY29y ZS5jCj4gaW5kZXggNGU3MGYxOWFjMTQ1Li5jNTgyNTM0MDRlZDUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy92ZmlvL21kZXYvbWRldl9jb3JlLmMKPiArKysgYi9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2 X2NvcmUuYwo+IEBAIC03OCw2ICs3OCwyNyBAQCBjb25zdCBzdHJ1Y3QgbWRldl92ZmlvX2Rldmlj ZV9vcHMgKm1kZXZfZ2V0X3ZmaW9fb3BzKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldikKPiAgfQo+ ICBFWFBPUlRfU1lNQk9MKG1kZXZfZ2V0X3ZmaW9fb3BzKTsKPiAgCj4gKy8qCj4gKyAqIFNwZWNp ZnkgdGhlIHZpcnRpbyBkZXZpY2Ugb3BzIGZvciB0aGUgbWRldiBkZXZpY2UsIHRoaXMKPiArICog bXVzdCBiZSBjYWxsZWQgZHVyaW5nIGNyZWF0ZSgpIGNhbGxiYWNrIGZvciB2aXJ0aW8gbWRldiBk ZXZpY2UuCj4gKyAqLwo+ICt2b2lkIG1kZXZfc2V0X3ZpcnRpb19vcHMoc3RydWN0IG1kZXZfZGV2 aWNlICptZGV2LAo+ICsJCQkgY29uc3Qgc3RydWN0IG1kZXZfdmlydGlvX2RldmljZV9vcHMgKnZp cnRpb19vcHMpCj4gK3sKPiArCW1kZXZfc2V0X2NsYXNzKG1kZXYsIE1ERVZfQ0xBU1NfSURfVklS VElPKTsKPiArCW1kZXYtPnZpcnRpb19vcHMgPSB2aXJ0aW9fb3BzOwo+ICt9Cj4gK0VYUE9SVF9T WU1CT0wobWRldl9zZXRfdmlydGlvX29wcyk7Cj4gKwo+ICsvKiBHZXQgdGhlIHZpcnRpbyBkZXZp Y2Ugb3BzIGZvciB0aGUgbWRldiBkZXZpY2UuICovCj4gK2NvbnN0IHN0cnVjdCBtZGV2X3ZpcnRp b19kZXZpY2Vfb3BzICoKPiArbWRldl9nZXRfdmlydGlvX29wcyhzdHJ1Y3QgbWRldl9kZXZpY2Ug Km1kZXYpCj4gK3sKPiArCVdBUk5fT04obWRldi0+Y2xhc3NfaWQgIT0gTURFVl9DTEFTU19JRF9W SVJUSU8pOwo+ICsJcmV0dXJuIG1kZXYtPnZpcnRpb19vcHM7Cj4gK30KPiArRVhQT1JUX1NZTUJP TChtZGV2X2dldF92aXJ0aW9fb3BzKTsKPiArCj4gIHN0cnVjdCBkZXZpY2UgKm1kZXZfZGV2KHN0 cnVjdCBtZGV2X2RldmljZSAqbWRldikKPiAgewo+ICAJcmV0dXJuICZtZGV2LT5kZXY7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfcHJpdmF0ZS5oIGIvZHJpdmVycy92Zmlv L21kZXYvbWRldl9wcml2YXRlLmgKPiBpbmRleCA0MTEyMjczNzM2MjUuLjJjNzRkZDAzMjQwOSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3ByaXZhdGUuaAo+ICsrKyBiL2Ry aXZlcnMvdmZpby9tZGV2L21kZXZfcHJpdmF0ZS5oCj4gQEAgLTExLDYgKzExLDcgQEAKPiAgI2Rl ZmluZSBNREVWX1BSSVZBVEVfSAo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L21kZXZfdmZpb19vcHMu aD4KPiArI2luY2x1ZGUgPGxpbnV4L21kZXZfdmlydGlvX29wcy5oPgo+ICAKPiAgaW50ICBtZGV2 X2J1c19yZWdpc3Rlcih2b2lkKTsKPiAgdm9pZCBtZGV2X2J1c191bnJlZ2lzdGVyKHZvaWQpOwo+ IEBAIC0zOCw2ICszOSw3IEBAIHN0cnVjdCBtZGV2X2RldmljZSB7Cj4gIAl1MTYgY2xhc3NfaWQ7 Cj4gIAl1bmlvbiB7Cj4gIAkJY29uc3Qgc3RydWN0IG1kZXZfdmZpb19kZXZpY2Vfb3BzICp2Zmlv X29wczsKPiArCQljb25zdCBzdHJ1Y3QgbWRldl92aXJ0aW9fZGV2aWNlX29wcyAqdmlydGlvX29w czsKPiAgCX07Cj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kZXYuaCBi L2luY2x1ZGUvbGludXgvbWRldi5oCj4gaW5kZXggOWUzNzUwNmQxOTg3Li5mM2Q3NWE2MGMyYjUg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9tZGV2LmgKPiArKysgYi9pbmNsdWRlL2xpbnV4 L21kZXYuaAo+IEBAIC0xNyw2ICsxNyw3IEBACj4gIAo+ICBzdHJ1Y3QgbWRldl9kZXZpY2U7Cj4g IHN0cnVjdCBtZGV2X3ZmaW9fZGV2aWNlX29wczsKPiArc3RydWN0IG1kZXZfdmlydGlvX2Rldmlj ZV9vcHM7Cj4gIAo+ICAvKgo+ICAgKiBDYWxsZWQgYnkgdGhlIHBhcmVudCBkZXZpY2UgZHJpdmVy IHRvIHNldCB0aGUgZGV2aWNlIHdoaWNoIHJlcHJlc2VudHMKPiBAQCAtMTEyLDYgKzExMywxMCBA QCB2b2lkIG1kZXZfc2V0X2NsYXNzKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwgdTE2IGlkKTsK PiAgdm9pZCBtZGV2X3NldF92ZmlvX29wcyhzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYsCj4gIAkJ ICAgICAgIGNvbnN0IHN0cnVjdCBtZGV2X3ZmaW9fZGV2aWNlX29wcyAqdmZpb19vcHMpOwo+ICBj b25zdCBzdHJ1Y3QgbWRldl92ZmlvX2RldmljZV9vcHMgKm1kZXZfZ2V0X3ZmaW9fb3BzKHN0cnVj dCBtZGV2X2RldmljZSAqbWRldik7Cj4gK3ZvaWQgbWRldl9zZXRfdmlydGlvX29wcyhzdHJ1Y3Qg bWRldl9kZXZpY2UgKm1kZXYsCj4gKwkJCSBjb25zdCBzdHJ1Y3QgbWRldl92aXJ0aW9fZGV2aWNl X29wcyAqdmlydGlvX29wcyk7Cj4gK2NvbnN0IHN0cnVjdCBtZGV2X3ZpcnRpb19kZXZpY2Vfb3Bz ICoKPiArbWRldl9nZXRfdmlydGlvX29wcyhzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpOwo+ICAK PiAgZXh0ZXJuIHN0cnVjdCBidXNfdHlwZSBtZGV2X2J1c190eXBlOwo+ICAKPiBAQCAtMTI3LDYg KzEzMiw3IEBAIHN0cnVjdCBtZGV2X2RldmljZSAqbWRldl9mcm9tX2RldihzdHJ1Y3QgZGV2aWNl ICpkZXYpOwo+ICAKPiAgZW51bSB7Cj4gIAlNREVWX0NMQVNTX0lEX1ZGSU8gPSAxLAo+ICsJTURF Vl9DTEFTU19JRF9WSVJUSU8gPSAyLAo+ICAJLyogTmV3IGVudHJpZXMgbXVzdCBiZSBhZGRlZCBo ZXJlICovCj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kZXZfdmlydGlv X29wcy5oIGIvaW5jbHVkZS9saW51eC9tZGV2X3ZpcnRpb19vcHMuaAo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zNzliZmE1ZDZhMzAKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvaW5jbHVkZS9saW51eC9tZGV2X3ZpcnRpb19vcHMuaAo+IEBAIC0wLDAgKzEsMTQ5 IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KPiArLyoK PiArICogVmlydGlvIG1lZGlhdGVkIGRldmljZSBkcml2ZXIKPiArICoKPiArICogQ29weXJpZ2h0 IDIwMTksIFJlZCBIYXQgQ29ycC4KPiArICogICAgIEF1dGhvcjogSmFzb24gV2FuZyA8amFzb3dh bmdAcmVkaGF0LmNvbT4KPiArICovCj4gKyNpZm5kZWYgTURFVl9WSVJUSU9fT1BTX0gKPiArI2Rl ZmluZSBNREVWX1ZJUlRJT19PUFNfSAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5o Pgo+ICsjaW5jbHVkZSA8bGludXgvbWRldi5oPgo+ICsjaW5jbHVkZSA8dWFwaS9saW51eC92aG9z dC5oPgo+ICsKPiArI2RlZmluZSBWSVJUSU9fTURFVl9ERVZJQ0VfQVBJX1NUUklORwkJInZpcnRp by1tZGV2Igo+ICsjZGVmaW5lIFZJUlRJT19NREVWX0ZfVkVSU0lPTl8xIDB4MQoKVGhpcyBlbnRp cmUgY29uY2VwdCBvZiBWSVJUSU9fTURFVl9GX1ZFUlNJT05fMSBpcyBnb25lIG5vdywgcmlnaHQ/ CkxldCdzIHJlbW92ZSBpdCBoZXJlIGFuZCBiZWxvdy4gIFRoYW5rcywKCkFsZXgKCj4gKwo+ICtz dHJ1Y3QgdmlydGlvX21kZXZfY2FsbGJhY2sgewo+ICsJaXJxcmV0dXJuX3QgKCpjYWxsYmFjayko dm9pZCAqZGF0YSk7Cj4gKwl2b2lkICpwcml2YXRlOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIHN0 cnVjdCBtZGV2X3ZpcnRpb19kZXZpY2Vfb3BzIC0gU3RydWN0dXJlIHRvIGJlIHJlZ2lzdGVyZWQg Zm9yIGVhY2gKPiArICogbWRldiBkZXZpY2UgdG8gcmVnaXN0ZXIgdGhlIGRldmljZSBmb3Igdmly dGlvL3Zob3N0IGRyaXZlcnMuCj4gKyAqCj4gKyAqIFRoZSBkZXZpY2Ugb3BzIHRoYXQgaXMgc3Vw cG9ydGVkIGJ5IFZJUlRJT19NREVWX0ZfVkVSU0lPTl8xLCB0aGUKPiArICogY2FsbGJhY2tzIGFy ZSBtYW5kYXRvcnkgdW5sZXNzIGV4cGxpY2l0eSBtZW50aW9uZWQuCj4gKyAqCj4gKyAqIEBzZXRf dnFfYWRkcmVzczoJCVNldCB0aGUgYWRkcmVzcyBvZiB2aXJ0cXVldWUKPiArICoJCQkJQG1kZXY6 IG1lZGlhdGVkIGRldmljZQo+ICsgKgkJCQlAaWR4OiB2aXJ0cXVldWUgaW5kZXgKPiArICoJCQkJ QGRlc2NfYXJlYTogYWRkcmVzcyBvZiBkZXNjIGFyZWEKPiArICoJCQkJQGRyaXZlcl9hcmVhOiBh ZGRyZXNzIG9mIGRyaXZlciBhcmVhCj4gKyAqCQkJCUBkZXZpY2VfYXJlYTogYWRkcmVzcyBvZiBk ZXZpY2UgYXJlYQo+ICsgKgkJCQlSZXR1cm5zIGludGVnZXI6IHN1Y2Nlc3MgKDApIG9yIGVycm9y ICg8IDApCj4gKyAqIEBzZXRfdnFfbnVtOgkJCVNldCB0aGUgc2l6ZSBvZiB2aXJ0cXVldWUKPiAr ICoJCQkJQG1kZXY6IG1lZGlhdGVkIGRldmljZQo+ICsgKgkJCQlAaWR4OiB2aXJ0cXVldWUgaW5k ZXgKPiArICoJCQkJQG51bTogdGhlIHNpemUgb2YgdmlydHF1ZXVlCj4gKyAqIEBraWNrX3ZxOgkJ CUtpY2sgdGhlIHZpcnRxdWV1ZQo+ICsgKgkJCQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAq CQkJCUBpZHg6IHZpcnRxdWV1ZSBpbmRleAo+ICsgKiBAc2V0X3ZxX2NiOgkJCVNldCB0aGUgaW50 ZXJydXB0IGNhbGxiYWNrIGZ1bmN0aW9uIGZvcgo+ICsgKgkJCQlhIHZpcnRxdWV1ZQo+ICsgKgkJ CQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCUBpZHg6IHZpcnRxdWV1ZSBpbmRleAo+ ICsgKgkJCQlAY2I6IHZpcnRpby1tZGV2IGludGVycnVwdCBjYWxsYmFjayBzdHJ1Y3R1cmUKPiAr ICogQHNldF92cV9yZWFkeToJCVNldCByZWFkeSBzdGF0dXMgZm9yIGEgdmlydHF1ZXVlCj4gKyAq CQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJQGlkeDogdmlydHF1ZXVlIGluZGV4 Cj4gKyAqCQkJCUByZWFkeTogcmVhZHkgKHRydWUpIG5vdCByZWFkeShmYWxzZSkKPiArICogQGdl dF92cV9yZWFkeToJCUdldCByZWFkeSBzdGF0dXMgZm9yIGEgdmlydHF1ZXVlCj4gKyAqCQkJCUBt ZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJQGlkeDogdmlydHF1ZXVlIGluZGV4Cj4gKyAq CQkJCVJldHVybnMgYm9vbGVhbjogcmVhZHkgKHRydWUpIG9yIG5vdCAoZmFsc2UpCj4gKyAqIEBz ZXRfdnFfc3RhdGU6CQlTZXQgdGhlIHN0YXRlIGZvciBhIHZpcnRxdWV1ZQo+ICsgKgkJCQlAbWRl djogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCUBpZHg6IHZpcnRxdWV1ZSBpbmRleAo+ICsgKgkJ CQlAc3RhdGU6IHZpcnRxdWV1ZSBzdGF0ZSAobGFzdF9hdmFpbF9pZHgpCj4gKyAqCQkJCVJldHVy bnMgaW50ZWdlcjogc3VjY2VzcyAoMCkgb3IgZXJyb3IgKDwgMCkKPiArICogQGdldF92cV9zdGF0 ZToJCUdldCB0aGUgc3RhdGUgZm9yIGEgdmlydHF1ZXVlCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRl ZCBkZXZpY2UKPiArICoJCQkJQGlkeDogdmlydHF1ZXVlIGluZGV4Cj4gKyAqCQkJCVJldHVybnMg dmlydHF1ZXVlIHN0YXRlIChsYXN0X2F2YWlsX2lkeCkKPiArICogQGdldF92cV9hbGlnbjoJCUdl dCB0aGUgdmlydHF1ZXVlIGFsaWduIHJlcXVpcmVtZW50Cj4gKyAqCQkJCWZvciB0aGUgZGV2aWNl Cj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJUmV0dXJucyB2aXJ0cXVl dWUgYWxnaW4gcmVxdWlyZW1lbnQKPiArICogQGdldF9mZWF0dXJlczoJCUdldCB2aXJ0aW8gZmVh dHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UKPiArICoJCQkJQG1kZXY6IG1lZGlhdGVkIGRl dmljZQo+ICsgKgkJCQlSZXR1cm5zIHRoZSB2aXJ0aW8gZmVhdHVyZXMgc3VwcG9ydCBieSB0aGUK PiArICoJCQkJZGV2aWNlCj4gKyAqIEBzZXRfZmVhdHVyZXM6CQlTZXQgdmlydGlvIGZlYXR1cmVz IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UK PiArICoJCQkJQGZlYXR1cmVzOiBmZWF0dXJlIHN1cHBvcnQgYnkgdGhlIGRyaXZlcgo+ICsgKgkJ CQlSZXR1cm5zIGludGVnZXI6IHN1Y2Nlc3MgKDApIG9yIGVycm9yICg8IDApCj4gKyAqIEBzZXRf Y29uZmlnX2NiOgkJU2V0IHRoZSBjb25maWcgaW50ZXJydXB0IGNhbGxiYWNrCj4gKyAqCQkJCUBt ZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJQGNiOiB2aXJ0aW8tbWRldiBpbnRlcnJ1cHQg Y2FsbGJhY2sgc3RydWN0dXJlCj4gKyAqIEBnZXRfdnFfbnVtX21heDoJCUdldCB0aGUgbWF4IHNp emUgb2YgdmlydHF1ZXVlCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJ UmV0dXJucyB1MTY6IG1heCBzaXplIG9mIHZpcnRxdWV1ZQo+ICsgKiBAZ2V0X2RldmljZV9pZDoJ CUdldCB2aXJ0aW8gZGV2aWNlIGlkCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiAr ICoJCQkJUmV0dXJucyB1MzI6IHZpcnRpbyBkZXZpY2UgaWQKPiArICogQGdldF92ZW5kb3JfaWQ6 CQlHZXQgaWQgZm9yIHRoZSB2ZW5kb3IgdGhhdCBwcm92aWRlcyB0aGlzIGRldmljZQo+ICsgKgkJ CQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCVJldHVybnMgdTMyOiB2aXJ0aW8gdmVu ZG9yIGlkCj4gKyAqIEBnZXRfc3RhdHVzOgkJCUdldCB0aGUgZGV2aWNlIHN0YXR1cwo+ICsgKgkJ CQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCVJldHVybnMgdTg6IHZpcnRpbyBkZXZp Y2Ugc3RhdHVzCj4gKyAqIEBzZXRfc3RhdHVzOgkJCVNldCB0aGUgZGV2aWNlIHN0YXR1cwo+ICsg KgkJCQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCUBzdGF0dXM6IHZpcnRpbyBkZXZp Y2Ugc3RhdHVzCj4gKyAqIEBnZXRfY29uZmlnOgkJCVJlYWQgZnJvbSBkZXZpY2Ugc3BlY2lmaWMg Y29uZmlndXJhdGlvbiBzcGFjZQo+ICsgKgkJCQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAq CQkJCUBvZmZzZXQ6IG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKPiArICoJCQkJY29uZmln dXJhdGlvbiBzcGFjZQo+ICsgKgkJCQlAYnVmOiBidWZmZXIgdXNlZCB0byByZWFkIHRvCj4gKyAq CQkJCUBsZW46IHRoZSBsZW5ndGggdG8gcmVhZCBmcm9tCj4gKyAqCQkJCWNvbmZpZ3JhdGlvbiBz cGFjZQo+ICsgKiBAc2V0X2NvbmZpZzoJCQlXcml0ZSB0byBkZXZpY2Ugc3BlY2lmaWMgY29uZmln dXJhdGlvbiBzcGFjZQo+ICsgKgkJCQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCUBv ZmZzZXQ6IG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKPiArICoJCQkJY29uZmlndXJhdGlv biBzcGFjZQo+ICsgKgkJCQlAYnVmOiBidWZmZXIgdXNlZCB0byB3cml0ZSBmcm9tCj4gKyAqCQkJ CUBsZW46IHRoZSBsZW5ndGggdG8gd3JpdGUgdG8KPiArICoJCQkJY29uZmlncmF0aW9uIHNwYWNl Cj4gKyAqIEBnZXRfZ2VuZXJhdGlvbjoJCUdldCBkZXZpY2UgY29uZmlnIGdlbmVyYXRvbiAob3B0 aW9uYWwpCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJUmV0dXJucyB1 MzI6IGRldmljZSBnZW5lcmF0aW9uCj4gKyAqLwo+ICtzdHJ1Y3QgbWRldl92aXJ0aW9fZGV2aWNl X29wcyB7Cj4gKwkvKiBWaXJ0cXVldWUgb3BzICovCj4gKwlpbnQgKCpzZXRfdnFfYWRkcmVzcyko c3RydWN0IG1kZXZfZGV2aWNlICptZGV2LAo+ICsJCQkgICAgICB1MTYgaWR4LCB1NjQgZGVzY19h cmVhLCB1NjQgZHJpdmVyX2FyZWEsCj4gKwkJCSAgICAgIHU2NCBkZXZpY2VfYXJlYSk7Cj4gKwl2 b2lkICgqc2V0X3ZxX251bSkoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1MTYgaWR4LCB1MzIg bnVtKTsKPiArCXZvaWQgKCpraWNrX3ZxKShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYsIHUxNiBp ZHgpOwo+ICsJdm9pZCAoKnNldF92cV9jYikoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1MTYg aWR4LAo+ICsJCQkgIHN0cnVjdCB2aXJ0aW9fbWRldl9jYWxsYmFjayAqY2IpOwo+ICsJdm9pZCAo KnNldF92cV9yZWFkeSkoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1MTYgaWR4LCBib29sIHJl YWR5KTsKPiArCWJvb2wgKCpnZXRfdnFfcmVhZHkpKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwg dTE2IGlkeCk7Cj4gKwlpbnQgKCpzZXRfdnFfc3RhdGUpKHN0cnVjdCBtZGV2X2RldmljZSAqbWRl diwgdTE2IGlkeCwgdTY0IHN0YXRlKTsKPiArCXU2NCAoKmdldF92cV9zdGF0ZSkoc3RydWN0IG1k ZXZfZGV2aWNlICptZGV2LCB1MTYgaWR4KTsKPiArCj4gKwkvKiBWaXJ0aW8gZGV2aWNlIG9wcyAq Lwo+ICsJdTE2ICgqZ2V0X3ZxX2FsaWduKShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpOwo+ICsJ dTY0ICgqZ2V0X2ZlYXR1cmVzKShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpOwo+ICsJaW50ICgq c2V0X2ZlYXR1cmVzKShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYsIHU2NCBmZWF0dXJlcyk7Cj4g Kwl2b2lkICgqc2V0X2NvbmZpZ19jYikoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LAo+ICsJCQkg ICAgICBzdHJ1Y3QgdmlydGlvX21kZXZfY2FsbGJhY2sgKmNiKTsKPiArCXUxNiAoKmdldF92cV9u dW1fbWF4KShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpOwo+ICsJdTMyICgqZ2V0X2RldmljZV9p ZCkoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KTsKPiArCXUzMiAoKmdldF92ZW5kb3JfaWQpKHN0 cnVjdCBtZGV2X2RldmljZSAqbWRldik7Cj4gKwl1OCAoKmdldF9zdGF0dXMpKHN0cnVjdCBtZGV2 X2RldmljZSAqbWRldik7Cj4gKwl2b2lkICgqc2V0X3N0YXR1cykoc3RydWN0IG1kZXZfZGV2aWNl ICptZGV2LCB1OCBzdGF0dXMpOwo+ICsJdm9pZCAoKmdldF9jb25maWcpKHN0cnVjdCBtZGV2X2Rl dmljZSAqbWRldiwgdW5zaWduZWQgaW50IG9mZnNldCwKPiArCQkJICAgdm9pZCAqYnVmLCB1bnNp Z25lZCBpbnQgbGVuKTsKPiArCXZvaWQgKCpzZXRfY29uZmlnKShzdHJ1Y3QgbWRldl9kZXZpY2Ug Km1kZXYsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkJCSAgIGNvbnN0IHZvaWQgKmJ1ZiwgdW5z aWduZWQgaW50IGxlbik7Cj4gKwl1MzIgKCpnZXRfZ2VuZXJhdGlvbikoc3RydWN0IG1kZXZfZGV2 aWNlICptZGV2KTsKPiArfTsKPiArCj4gK3ZvaWQgbWRldl9zZXRfdmlydGlvX29wcyhzdHJ1Y3Qg bWRldl9kZXZpY2UgKm1kZXYsCj4gKwkJCSBjb25zdCBzdHJ1Y3QgbWRldl92aXJ0aW9fZGV2aWNl X29wcyAqdmlydGlvX29wcyk7Cj4gKwo+ICsjZW5kaWYKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbA== 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=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 C2897C5DF61 for ; Tue, 5 Nov 2019 17:47:33 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 9FB4D217F4 for ; Tue, 5 Nov 2019 17:47:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9FB4D217F4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6E43A6EB2F; Tue, 5 Nov 2019 17:47:31 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 87B156EB2F for ; Tue, 5 Nov 2019 17:47:29 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-333-ArmLVmUlO4K5jaS0MCFNjA-1; Tue, 05 Nov 2019 12:47:25 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 44360800C73; Tue, 5 Nov 2019 17:47:21 +0000 (UTC) Received: from x1.home (ovpn-116-110.phx2.redhat.com [10.3.116.110]) by smtp.corp.redhat.com (Postfix) with ESMTP id A98BB1001B28; Tue, 5 Nov 2019 17:47:10 +0000 (UTC) Date: Tue, 5 Nov 2019 10:47:10 -0700 From: Alex Williamson To: Jason Wang Message-ID: <20191105104710.16d0f629@x1.home> In-Reply-To: <20191105093240.5135-5-jasowang@redhat.com> References: <20191105093240.5135-1-jasowang@redhat.com> <20191105093240.5135-5-jasowang@redhat.com> Organization: Red Hat MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-MC-Unique: ArmLVmUlO4K5jaS0MCFNjA-1 X-Mimecast-Spam-Score: 0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1572976048; 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=mmNbdhzmcE/l8I+m97JNhArMEK2wMeb3rOnVLGrpP44=; b=KseWs/lNeOjUStpAjkBv3Pc4M4Gi+NGYJIpv41v/l6EGVo3Fh77KHta4hN6V4lT9vRyK6b 7RBMnwOmRqYk/PhSg1W8JX5GwjmNdUp/0khkB0TUrni1uawEG6S1dT8rgVhHl6VKjyDd/i PqkF0WGy6qUBrUPrGAIyjouAOKlcf2g= Subject: Re: [Intel-gfx] [PATCH V8 4/6] mdev: introduce virtio device and its device ops X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: stefanha@redhat.com, christophe.de.dinechin@gmail.com, kvm@vger.kernel.org, mst@redhat.com, airlied@linux.ie, heiko.carstens@de.ibm.com, dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org, kwankhede@nvidia.com, rob.miller@broadcom.com, linux-s390@vger.kernel.org, sebott@linux.ibm.com, lulu@redhat.com, eperezma@redhat.com, pasic@linux.ibm.com, borntraeger@de.ibm.com, haotian.wang@sifive.com, cunming.liang@intel.com, farman@linux.ibm.com, idos@mellanox.com, gor@linux.ibm.com, intel-gfx@lists.freedesktop.org, xiao.w.wang@intel.com, freude@linux.ibm.com, parav@mellanox.com, zhihong.wang@intel.com, intel-gvt-dev@lists.freedesktop.org, akrowiak@linux.ibm.com, oberpar@linux.ibm.com, tiwei.bie@intel.com, netdev@vger.kernel.org, cohuck@redhat.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com, lingshan.zhu@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191105174710.iZteRpo28sNeaLx0w2JY3PtP2uQa0l0RojqHvJBm8cA@z> T24gVHVlLCAgNSBOb3YgMjAxOSAxNzozMjozOCArMDgwMApKYXNvbiBXYW5nIDxqYXNvd2FuZ0By ZWRoYXQuY29tPiB3cm90ZToKCj4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGJhc2ljIHN1cHBvcnQg Zm9yIG1kZXYgZHJpdmVyIHRoYXQgc3VwcG9ydHMKPiB2aXJ0aW8gdHJhbnNwb3J0IGZvciBrZXJu ZWwgdmlydGlvIGRyaXZlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxqYXNvd2Fu Z0ByZWRoYXQuY29tPgo+IC0tLQo+ICBkcml2ZXJzL3ZmaW8vbWRldi9tZGV2X2NvcmUuYyAgICB8 ICAyMSArKysrKwo+ICBkcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3ByaXZhdGUuaCB8ICAgMiArCj4g IGluY2x1ZGUvbGludXgvbWRldi5oICAgICAgICAgICAgIHwgICA2ICsrCj4gIGluY2x1ZGUvbGlu dXgvbWRldl92aXJ0aW9fb3BzLmggIHwgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9saW51eC9tZGV2X3ZpcnRpb19vcHMuaAo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZmaW8vbWRldi9tZGV2X2NvcmUuYyBiL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfY29y ZS5jCj4gaW5kZXggNGU3MGYxOWFjMTQ1Li5jNTgyNTM0MDRlZDUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy92ZmlvL21kZXYvbWRldl9jb3JlLmMKPiArKysgYi9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2 X2NvcmUuYwo+IEBAIC03OCw2ICs3OCwyNyBAQCBjb25zdCBzdHJ1Y3QgbWRldl92ZmlvX2Rldmlj ZV9vcHMgKm1kZXZfZ2V0X3ZmaW9fb3BzKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldikKPiAgfQo+ ICBFWFBPUlRfU1lNQk9MKG1kZXZfZ2V0X3ZmaW9fb3BzKTsKPiAgCj4gKy8qCj4gKyAqIFNwZWNp ZnkgdGhlIHZpcnRpbyBkZXZpY2Ugb3BzIGZvciB0aGUgbWRldiBkZXZpY2UsIHRoaXMKPiArICog bXVzdCBiZSBjYWxsZWQgZHVyaW5nIGNyZWF0ZSgpIGNhbGxiYWNrIGZvciB2aXJ0aW8gbWRldiBk ZXZpY2UuCj4gKyAqLwo+ICt2b2lkIG1kZXZfc2V0X3ZpcnRpb19vcHMoc3RydWN0IG1kZXZfZGV2 aWNlICptZGV2LAo+ICsJCQkgY29uc3Qgc3RydWN0IG1kZXZfdmlydGlvX2RldmljZV9vcHMgKnZp cnRpb19vcHMpCj4gK3sKPiArCW1kZXZfc2V0X2NsYXNzKG1kZXYsIE1ERVZfQ0xBU1NfSURfVklS VElPKTsKPiArCW1kZXYtPnZpcnRpb19vcHMgPSB2aXJ0aW9fb3BzOwo+ICt9Cj4gK0VYUE9SVF9T WU1CT0wobWRldl9zZXRfdmlydGlvX29wcyk7Cj4gKwo+ICsvKiBHZXQgdGhlIHZpcnRpbyBkZXZp Y2Ugb3BzIGZvciB0aGUgbWRldiBkZXZpY2UuICovCj4gK2NvbnN0IHN0cnVjdCBtZGV2X3ZpcnRp b19kZXZpY2Vfb3BzICoKPiArbWRldl9nZXRfdmlydGlvX29wcyhzdHJ1Y3QgbWRldl9kZXZpY2Ug Km1kZXYpCj4gK3sKPiArCVdBUk5fT04obWRldi0+Y2xhc3NfaWQgIT0gTURFVl9DTEFTU19JRF9W SVJUSU8pOwo+ICsJcmV0dXJuIG1kZXYtPnZpcnRpb19vcHM7Cj4gK30KPiArRVhQT1JUX1NZTUJP TChtZGV2X2dldF92aXJ0aW9fb3BzKTsKPiArCj4gIHN0cnVjdCBkZXZpY2UgKm1kZXZfZGV2KHN0 cnVjdCBtZGV2X2RldmljZSAqbWRldikKPiAgewo+ICAJcmV0dXJuICZtZGV2LT5kZXY7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfcHJpdmF0ZS5oIGIvZHJpdmVycy92Zmlv L21kZXYvbWRldl9wcml2YXRlLmgKPiBpbmRleCA0MTEyMjczNzM2MjUuLjJjNzRkZDAzMjQwOSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3ByaXZhdGUuaAo+ICsrKyBiL2Ry aXZlcnMvdmZpby9tZGV2L21kZXZfcHJpdmF0ZS5oCj4gQEAgLTExLDYgKzExLDcgQEAKPiAgI2Rl ZmluZSBNREVWX1BSSVZBVEVfSAo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L21kZXZfdmZpb19vcHMu aD4KPiArI2luY2x1ZGUgPGxpbnV4L21kZXZfdmlydGlvX29wcy5oPgo+ICAKPiAgaW50ICBtZGV2 X2J1c19yZWdpc3Rlcih2b2lkKTsKPiAgdm9pZCBtZGV2X2J1c191bnJlZ2lzdGVyKHZvaWQpOwo+ IEBAIC0zOCw2ICszOSw3IEBAIHN0cnVjdCBtZGV2X2RldmljZSB7Cj4gIAl1MTYgY2xhc3NfaWQ7 Cj4gIAl1bmlvbiB7Cj4gIAkJY29uc3Qgc3RydWN0IG1kZXZfdmZpb19kZXZpY2Vfb3BzICp2Zmlv X29wczsKPiArCQljb25zdCBzdHJ1Y3QgbWRldl92aXJ0aW9fZGV2aWNlX29wcyAqdmlydGlvX29w czsKPiAgCX07Cj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kZXYuaCBi L2luY2x1ZGUvbGludXgvbWRldi5oCj4gaW5kZXggOWUzNzUwNmQxOTg3Li5mM2Q3NWE2MGMyYjUg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9tZGV2LmgKPiArKysgYi9pbmNsdWRlL2xpbnV4 L21kZXYuaAo+IEBAIC0xNyw2ICsxNyw3IEBACj4gIAo+ICBzdHJ1Y3QgbWRldl9kZXZpY2U7Cj4g IHN0cnVjdCBtZGV2X3ZmaW9fZGV2aWNlX29wczsKPiArc3RydWN0IG1kZXZfdmlydGlvX2Rldmlj ZV9vcHM7Cj4gIAo+ICAvKgo+ICAgKiBDYWxsZWQgYnkgdGhlIHBhcmVudCBkZXZpY2UgZHJpdmVy IHRvIHNldCB0aGUgZGV2aWNlIHdoaWNoIHJlcHJlc2VudHMKPiBAQCAtMTEyLDYgKzExMywxMCBA QCB2b2lkIG1kZXZfc2V0X2NsYXNzKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwgdTE2IGlkKTsK PiAgdm9pZCBtZGV2X3NldF92ZmlvX29wcyhzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYsCj4gIAkJ ICAgICAgIGNvbnN0IHN0cnVjdCBtZGV2X3ZmaW9fZGV2aWNlX29wcyAqdmZpb19vcHMpOwo+ICBj b25zdCBzdHJ1Y3QgbWRldl92ZmlvX2RldmljZV9vcHMgKm1kZXZfZ2V0X3ZmaW9fb3BzKHN0cnVj dCBtZGV2X2RldmljZSAqbWRldik7Cj4gK3ZvaWQgbWRldl9zZXRfdmlydGlvX29wcyhzdHJ1Y3Qg bWRldl9kZXZpY2UgKm1kZXYsCj4gKwkJCSBjb25zdCBzdHJ1Y3QgbWRldl92aXJ0aW9fZGV2aWNl X29wcyAqdmlydGlvX29wcyk7Cj4gK2NvbnN0IHN0cnVjdCBtZGV2X3ZpcnRpb19kZXZpY2Vfb3Bz ICoKPiArbWRldl9nZXRfdmlydGlvX29wcyhzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpOwo+ICAK PiAgZXh0ZXJuIHN0cnVjdCBidXNfdHlwZSBtZGV2X2J1c190eXBlOwo+ICAKPiBAQCAtMTI3LDYg KzEzMiw3IEBAIHN0cnVjdCBtZGV2X2RldmljZSAqbWRldl9mcm9tX2RldihzdHJ1Y3QgZGV2aWNl ICpkZXYpOwo+ICAKPiAgZW51bSB7Cj4gIAlNREVWX0NMQVNTX0lEX1ZGSU8gPSAxLAo+ICsJTURF Vl9DTEFTU19JRF9WSVJUSU8gPSAyLAo+ICAJLyogTmV3IGVudHJpZXMgbXVzdCBiZSBhZGRlZCBo ZXJlICovCj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kZXZfdmlydGlv X29wcy5oIGIvaW5jbHVkZS9saW51eC9tZGV2X3ZpcnRpb19vcHMuaAo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zNzliZmE1ZDZhMzAKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvaW5jbHVkZS9saW51eC9tZGV2X3ZpcnRpb19vcHMuaAo+IEBAIC0wLDAgKzEsMTQ5 IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KPiArLyoK PiArICogVmlydGlvIG1lZGlhdGVkIGRldmljZSBkcml2ZXIKPiArICoKPiArICogQ29weXJpZ2h0 IDIwMTksIFJlZCBIYXQgQ29ycC4KPiArICogICAgIEF1dGhvcjogSmFzb24gV2FuZyA8amFzb3dh bmdAcmVkaGF0LmNvbT4KPiArICovCj4gKyNpZm5kZWYgTURFVl9WSVJUSU9fT1BTX0gKPiArI2Rl ZmluZSBNREVWX1ZJUlRJT19PUFNfSAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5o Pgo+ICsjaW5jbHVkZSA8bGludXgvbWRldi5oPgo+ICsjaW5jbHVkZSA8dWFwaS9saW51eC92aG9z dC5oPgo+ICsKPiArI2RlZmluZSBWSVJUSU9fTURFVl9ERVZJQ0VfQVBJX1NUUklORwkJInZpcnRp by1tZGV2Igo+ICsjZGVmaW5lIFZJUlRJT19NREVWX0ZfVkVSU0lPTl8xIDB4MQoKVGhpcyBlbnRp cmUgY29uY2VwdCBvZiBWSVJUSU9fTURFVl9GX1ZFUlNJT05fMSBpcyBnb25lIG5vdywgcmlnaHQ/ CkxldCdzIHJlbW92ZSBpdCBoZXJlIGFuZCBiZWxvdy4gIFRoYW5rcywKCkFsZXgKCj4gKwo+ICtz dHJ1Y3QgdmlydGlvX21kZXZfY2FsbGJhY2sgewo+ICsJaXJxcmV0dXJuX3QgKCpjYWxsYmFjayko dm9pZCAqZGF0YSk7Cj4gKwl2b2lkICpwcml2YXRlOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIHN0 cnVjdCBtZGV2X3ZpcnRpb19kZXZpY2Vfb3BzIC0gU3RydWN0dXJlIHRvIGJlIHJlZ2lzdGVyZWQg Zm9yIGVhY2gKPiArICogbWRldiBkZXZpY2UgdG8gcmVnaXN0ZXIgdGhlIGRldmljZSBmb3Igdmly dGlvL3Zob3N0IGRyaXZlcnMuCj4gKyAqCj4gKyAqIFRoZSBkZXZpY2Ugb3BzIHRoYXQgaXMgc3Vw cG9ydGVkIGJ5IFZJUlRJT19NREVWX0ZfVkVSU0lPTl8xLCB0aGUKPiArICogY2FsbGJhY2tzIGFy ZSBtYW5kYXRvcnkgdW5sZXNzIGV4cGxpY2l0eSBtZW50aW9uZWQuCj4gKyAqCj4gKyAqIEBzZXRf dnFfYWRkcmVzczoJCVNldCB0aGUgYWRkcmVzcyBvZiB2aXJ0cXVldWUKPiArICoJCQkJQG1kZXY6 IG1lZGlhdGVkIGRldmljZQo+ICsgKgkJCQlAaWR4OiB2aXJ0cXVldWUgaW5kZXgKPiArICoJCQkJ QGRlc2NfYXJlYTogYWRkcmVzcyBvZiBkZXNjIGFyZWEKPiArICoJCQkJQGRyaXZlcl9hcmVhOiBh ZGRyZXNzIG9mIGRyaXZlciBhcmVhCj4gKyAqCQkJCUBkZXZpY2VfYXJlYTogYWRkcmVzcyBvZiBk ZXZpY2UgYXJlYQo+ICsgKgkJCQlSZXR1cm5zIGludGVnZXI6IHN1Y2Nlc3MgKDApIG9yIGVycm9y ICg8IDApCj4gKyAqIEBzZXRfdnFfbnVtOgkJCVNldCB0aGUgc2l6ZSBvZiB2aXJ0cXVldWUKPiAr ICoJCQkJQG1kZXY6IG1lZGlhdGVkIGRldmljZQo+ICsgKgkJCQlAaWR4OiB2aXJ0cXVldWUgaW5k ZXgKPiArICoJCQkJQG51bTogdGhlIHNpemUgb2YgdmlydHF1ZXVlCj4gKyAqIEBraWNrX3ZxOgkJ CUtpY2sgdGhlIHZpcnRxdWV1ZQo+ICsgKgkJCQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAq CQkJCUBpZHg6IHZpcnRxdWV1ZSBpbmRleAo+ICsgKiBAc2V0X3ZxX2NiOgkJCVNldCB0aGUgaW50 ZXJydXB0IGNhbGxiYWNrIGZ1bmN0aW9uIGZvcgo+ICsgKgkJCQlhIHZpcnRxdWV1ZQo+ICsgKgkJ CQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCUBpZHg6IHZpcnRxdWV1ZSBpbmRleAo+ ICsgKgkJCQlAY2I6IHZpcnRpby1tZGV2IGludGVycnVwdCBjYWxsYmFjayBzdHJ1Y3R1cmUKPiAr ICogQHNldF92cV9yZWFkeToJCVNldCByZWFkeSBzdGF0dXMgZm9yIGEgdmlydHF1ZXVlCj4gKyAq CQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJQGlkeDogdmlydHF1ZXVlIGluZGV4 Cj4gKyAqCQkJCUByZWFkeTogcmVhZHkgKHRydWUpIG5vdCByZWFkeShmYWxzZSkKPiArICogQGdl dF92cV9yZWFkeToJCUdldCByZWFkeSBzdGF0dXMgZm9yIGEgdmlydHF1ZXVlCj4gKyAqCQkJCUBt ZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJQGlkeDogdmlydHF1ZXVlIGluZGV4Cj4gKyAq CQkJCVJldHVybnMgYm9vbGVhbjogcmVhZHkgKHRydWUpIG9yIG5vdCAoZmFsc2UpCj4gKyAqIEBz ZXRfdnFfc3RhdGU6CQlTZXQgdGhlIHN0YXRlIGZvciBhIHZpcnRxdWV1ZQo+ICsgKgkJCQlAbWRl djogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCUBpZHg6IHZpcnRxdWV1ZSBpbmRleAo+ICsgKgkJ CQlAc3RhdGU6IHZpcnRxdWV1ZSBzdGF0ZSAobGFzdF9hdmFpbF9pZHgpCj4gKyAqCQkJCVJldHVy bnMgaW50ZWdlcjogc3VjY2VzcyAoMCkgb3IgZXJyb3IgKDwgMCkKPiArICogQGdldF92cV9zdGF0 ZToJCUdldCB0aGUgc3RhdGUgZm9yIGEgdmlydHF1ZXVlCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRl ZCBkZXZpY2UKPiArICoJCQkJQGlkeDogdmlydHF1ZXVlIGluZGV4Cj4gKyAqCQkJCVJldHVybnMg dmlydHF1ZXVlIHN0YXRlIChsYXN0X2F2YWlsX2lkeCkKPiArICogQGdldF92cV9hbGlnbjoJCUdl dCB0aGUgdmlydHF1ZXVlIGFsaWduIHJlcXVpcmVtZW50Cj4gKyAqCQkJCWZvciB0aGUgZGV2aWNl Cj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJUmV0dXJucyB2aXJ0cXVl dWUgYWxnaW4gcmVxdWlyZW1lbnQKPiArICogQGdldF9mZWF0dXJlczoJCUdldCB2aXJ0aW8gZmVh dHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UKPiArICoJCQkJQG1kZXY6IG1lZGlhdGVkIGRl dmljZQo+ICsgKgkJCQlSZXR1cm5zIHRoZSB2aXJ0aW8gZmVhdHVyZXMgc3VwcG9ydCBieSB0aGUK PiArICoJCQkJZGV2aWNlCj4gKyAqIEBzZXRfZmVhdHVyZXM6CQlTZXQgdmlydGlvIGZlYXR1cmVz IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UK PiArICoJCQkJQGZlYXR1cmVzOiBmZWF0dXJlIHN1cHBvcnQgYnkgdGhlIGRyaXZlcgo+ICsgKgkJ CQlSZXR1cm5zIGludGVnZXI6IHN1Y2Nlc3MgKDApIG9yIGVycm9yICg8IDApCj4gKyAqIEBzZXRf Y29uZmlnX2NiOgkJU2V0IHRoZSBjb25maWcgaW50ZXJydXB0IGNhbGxiYWNrCj4gKyAqCQkJCUBt ZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJQGNiOiB2aXJ0aW8tbWRldiBpbnRlcnJ1cHQg Y2FsbGJhY2sgc3RydWN0dXJlCj4gKyAqIEBnZXRfdnFfbnVtX21heDoJCUdldCB0aGUgbWF4IHNp emUgb2YgdmlydHF1ZXVlCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJ UmV0dXJucyB1MTY6IG1heCBzaXplIG9mIHZpcnRxdWV1ZQo+ICsgKiBAZ2V0X2RldmljZV9pZDoJ CUdldCB2aXJ0aW8gZGV2aWNlIGlkCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiAr ICoJCQkJUmV0dXJucyB1MzI6IHZpcnRpbyBkZXZpY2UgaWQKPiArICogQGdldF92ZW5kb3JfaWQ6 CQlHZXQgaWQgZm9yIHRoZSB2ZW5kb3IgdGhhdCBwcm92aWRlcyB0aGlzIGRldmljZQo+ICsgKgkJ CQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCVJldHVybnMgdTMyOiB2aXJ0aW8gdmVu ZG9yIGlkCj4gKyAqIEBnZXRfc3RhdHVzOgkJCUdldCB0aGUgZGV2aWNlIHN0YXR1cwo+ICsgKgkJ CQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCVJldHVybnMgdTg6IHZpcnRpbyBkZXZp Y2Ugc3RhdHVzCj4gKyAqIEBzZXRfc3RhdHVzOgkJCVNldCB0aGUgZGV2aWNlIHN0YXR1cwo+ICsg KgkJCQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCUBzdGF0dXM6IHZpcnRpbyBkZXZp Y2Ugc3RhdHVzCj4gKyAqIEBnZXRfY29uZmlnOgkJCVJlYWQgZnJvbSBkZXZpY2Ugc3BlY2lmaWMg Y29uZmlndXJhdGlvbiBzcGFjZQo+ICsgKgkJCQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAq CQkJCUBvZmZzZXQ6IG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKPiArICoJCQkJY29uZmln dXJhdGlvbiBzcGFjZQo+ICsgKgkJCQlAYnVmOiBidWZmZXIgdXNlZCB0byByZWFkIHRvCj4gKyAq CQkJCUBsZW46IHRoZSBsZW5ndGggdG8gcmVhZCBmcm9tCj4gKyAqCQkJCWNvbmZpZ3JhdGlvbiBz cGFjZQo+ICsgKiBAc2V0X2NvbmZpZzoJCQlXcml0ZSB0byBkZXZpY2Ugc3BlY2lmaWMgY29uZmln dXJhdGlvbiBzcGFjZQo+ICsgKgkJCQlAbWRldjogbWVkaWF0ZWQgZGV2aWNlCj4gKyAqCQkJCUBv ZmZzZXQ6IG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKPiArICoJCQkJY29uZmlndXJhdGlv biBzcGFjZQo+ICsgKgkJCQlAYnVmOiBidWZmZXIgdXNlZCB0byB3cml0ZSBmcm9tCj4gKyAqCQkJ CUBsZW46IHRoZSBsZW5ndGggdG8gd3JpdGUgdG8KPiArICoJCQkJY29uZmlncmF0aW9uIHNwYWNl Cj4gKyAqIEBnZXRfZ2VuZXJhdGlvbjoJCUdldCBkZXZpY2UgY29uZmlnIGdlbmVyYXRvbiAob3B0 aW9uYWwpCj4gKyAqCQkJCUBtZGV2OiBtZWRpYXRlZCBkZXZpY2UKPiArICoJCQkJUmV0dXJucyB1 MzI6IGRldmljZSBnZW5lcmF0aW9uCj4gKyAqLwo+ICtzdHJ1Y3QgbWRldl92aXJ0aW9fZGV2aWNl X29wcyB7Cj4gKwkvKiBWaXJ0cXVldWUgb3BzICovCj4gKwlpbnQgKCpzZXRfdnFfYWRkcmVzcyko c3RydWN0IG1kZXZfZGV2aWNlICptZGV2LAo+ICsJCQkgICAgICB1MTYgaWR4LCB1NjQgZGVzY19h cmVhLCB1NjQgZHJpdmVyX2FyZWEsCj4gKwkJCSAgICAgIHU2NCBkZXZpY2VfYXJlYSk7Cj4gKwl2 b2lkICgqc2V0X3ZxX251bSkoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1MTYgaWR4LCB1MzIg bnVtKTsKPiArCXZvaWQgKCpraWNrX3ZxKShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYsIHUxNiBp ZHgpOwo+ICsJdm9pZCAoKnNldF92cV9jYikoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1MTYg aWR4LAo+ICsJCQkgIHN0cnVjdCB2aXJ0aW9fbWRldl9jYWxsYmFjayAqY2IpOwo+ICsJdm9pZCAo KnNldF92cV9yZWFkeSkoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1MTYgaWR4LCBib29sIHJl YWR5KTsKPiArCWJvb2wgKCpnZXRfdnFfcmVhZHkpKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwg dTE2IGlkeCk7Cj4gKwlpbnQgKCpzZXRfdnFfc3RhdGUpKHN0cnVjdCBtZGV2X2RldmljZSAqbWRl diwgdTE2IGlkeCwgdTY0IHN0YXRlKTsKPiArCXU2NCAoKmdldF92cV9zdGF0ZSkoc3RydWN0IG1k ZXZfZGV2aWNlICptZGV2LCB1MTYgaWR4KTsKPiArCj4gKwkvKiBWaXJ0aW8gZGV2aWNlIG9wcyAq Lwo+ICsJdTE2ICgqZ2V0X3ZxX2FsaWduKShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpOwo+ICsJ dTY0ICgqZ2V0X2ZlYXR1cmVzKShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpOwo+ICsJaW50ICgq c2V0X2ZlYXR1cmVzKShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYsIHU2NCBmZWF0dXJlcyk7Cj4g Kwl2b2lkICgqc2V0X2NvbmZpZ19jYikoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LAo+ICsJCQkg ICAgICBzdHJ1Y3QgdmlydGlvX21kZXZfY2FsbGJhY2sgKmNiKTsKPiArCXUxNiAoKmdldF92cV9u dW1fbWF4KShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpOwo+ICsJdTMyICgqZ2V0X2RldmljZV9p ZCkoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KTsKPiArCXUzMiAoKmdldF92ZW5kb3JfaWQpKHN0 cnVjdCBtZGV2X2RldmljZSAqbWRldik7Cj4gKwl1OCAoKmdldF9zdGF0dXMpKHN0cnVjdCBtZGV2 X2RldmljZSAqbWRldik7Cj4gKwl2b2lkICgqc2V0X3N0YXR1cykoc3RydWN0IG1kZXZfZGV2aWNl ICptZGV2LCB1OCBzdGF0dXMpOwo+ICsJdm9pZCAoKmdldF9jb25maWcpKHN0cnVjdCBtZGV2X2Rl dmljZSAqbWRldiwgdW5zaWduZWQgaW50IG9mZnNldCwKPiArCQkJICAgdm9pZCAqYnVmLCB1bnNp Z25lZCBpbnQgbGVuKTsKPiArCXZvaWQgKCpzZXRfY29uZmlnKShzdHJ1Y3QgbWRldl9kZXZpY2Ug Km1kZXYsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkJCSAgIGNvbnN0IHZvaWQgKmJ1ZiwgdW5z aWduZWQgaW50IGxlbik7Cj4gKwl1MzIgKCpnZXRfZ2VuZXJhdGlvbikoc3RydWN0IG1kZXZfZGV2 aWNlICptZGV2KTsKPiArfTsKPiArCj4gK3ZvaWQgbWRldl9zZXRfdmlydGlvX29wcyhzdHJ1Y3Qg bWRldl9kZXZpY2UgKm1kZXYsCj4gKwkJCSBjb25zdCBzdHJ1Y3QgbWRldl92aXJ0aW9fZGV2aWNl X29wcyAqdmlydGlvX29wcyk7Cj4gKwo+ICsjZW5kaWYKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==