Messages in this thread | | | From | Eli Cohen <> | Subject | RE: [PATCH 1/3] vdpa: device feature provisioning | Date | Mon, 19 Sep 2022 06:59:27 +0000 |
| |
> From: Jason Wang <jasowang@redhat.com> > Sent: Thursday, 15 September 2022 11:51 > To: mst@redhat.com; jasowang@redhat.com > Cc: Eli Cohen <elic@nvidia.com>; si-wei.liu@oracle.com; Parav Pandit > <parav@nvidia.com>; wuzongyong@linux.alibaba.com; > virtualization@lists.linux-foundation.org; linux-kernel@vger.kernel.org; > eperezma@redhat.com; lingshan.zhu@intel.com; gdawar@xilinx.com; > lulu@redhat.com; xieyongji@bytedance.com > Subject: [PATCH 1/3] vdpa: device feature provisioning > > This patch allows the device features to be provisioned through > netlink. A new attribute is introduced to allow the userspace to pass > a 64bit device features during device adding. > > This provides several advantages: > > - Allow to provision a subset of the features to ease the cross vendor > live migration. > - Better debug-ability for vDPA framework and parent. > > Signed-off-by: Jason Wang <jasowang@redhat.com> > --- > drivers/vdpa/vdpa.c | 5 +++++ > include/linux/vdpa.h | 1 + > include/uapi/linux/vdpa.h | 2 ++ > 3 files changed, 8 insertions(+) > > diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c > index c06c02704461..278e26bfa492 100644 > --- a/drivers/vdpa/vdpa.c > +++ b/drivers/vdpa/vdpa.c > @@ -600,6 +600,11 @@ static int vdpa_nl_cmd_dev_add_set_doit(struct > sk_buff *skb, struct genl_info *i > } > config.mask |= > BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MAX_VQP); > } > + if (nl_attrs[VDPA_ATTR_DEV_FEATURES]) { > + config.device_features = > + nla_get_u64(nl_attrs[VDPA_ATTR_DEV_FEATURES]); > + config.mask |= BIT_ULL(VDPA_ATTR_DEV_FEATURES); > + } > > /* Skip checking capability if user didn't prefer to configure any > * device networking attributes. It is likely that user might have used > diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h > index d282f464d2f1..6d0f5e4e82c2 100644 > --- a/include/linux/vdpa.h > +++ b/include/linux/vdpa.h > @@ -104,6 +104,7 @@ struct vdpa_iova_range { > }; > > struct vdpa_dev_set_config { > + u64 device_features; > struct { > u8 mac[ETH_ALEN]; > u16 mtu; > diff --git a/include/uapi/linux/vdpa.h b/include/uapi/linux/vdpa.h > index 25c55cab3d7c..9dc855f37c59 100644 > --- a/include/uapi/linux/vdpa.h > +++ b/include/uapi/linux/vdpa.h > @@ -52,6 +52,8 @@ enum vdpa_attr { > VDPA_ATTR_DEV_VENDOR_ATTR_NAME, /* string */ > VDPA_ATTR_DEV_VENDOR_ATTR_VALUE, /* u64 */ > > + VDPA_ATTR_DEV_FEATURES, /* u64 */
Maybe VDPA_ATTR_DEV_FEATURES_MASK would be more informative. Other than that: Reviewed-by: Eli Cohen <elic@nvidia.com>
> + > /* new attributes must be added above here */ > VDPA_ATTR_MAX, > }; > -- > 2.25.1
| |