From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Tian, Kevin" Subject: RE: [RFC PATCH v4 1/3] Mediated device Core driver Date: Fri, 3 Jun 2016 09:40:16 +0000 Message-ID: References: <1464119897-10844-1-git-send-email-kwankhede@nvidia.com> <1464119897-10844-2-git-send-email-kwankhede@nvidia.com> <20160603165746.3df39542@oc7835276234> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT Cc: "alex.williamson@redhat.com" , "pbonzini@redhat.com" , "kraxel@redhat.com" , "cjia@nvidia.com" , "qemu-devel@nongnu.org" , "kvm@vger.kernel.org" , "Ruan, Shuai" , "Song, Jike" , "Lv, Zhiyuan" To: Dong Jia , Kirti Wankhede Return-path: Received: from mga09.intel.com ([134.134.136.24]:61451 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751348AbcFCJlX convert rfc822-to-8bit (ORCPT ); Fri, 3 Jun 2016 05:41:23 -0400 In-Reply-To: <20160603165746.3df39542@oc7835276234> Content-Language: en-US Sender: kvm-owner@vger.kernel.org List-ID: > From: Dong Jia [mailto:bjsdjshi@linux.vnet.ibm.com] > Sent: Friday, June 03, 2016 4:58 PM > > > ...snip... > > > +struct phy_device_ops { > > + struct module *owner; > > + const struct attribute_group **dev_attr_groups; > > + const struct attribute_group **mdev_attr_groups; > > + > > + int (*supported_config)(struct device *dev, char *config); > > + int (*create)(struct device *dev, uuid_le uuid, > > + uint32_t instance, char *mdev_params); > > + int (*destroy)(struct device *dev, uuid_le uuid, > > + uint32_t instance); > > + int (*start)(uuid_le uuid); > > + int (*shutdown)(uuid_le uuid); > > + ssize_t (*read)(struct mdev_device *vdev, char *buf, size_t count, > > + enum mdev_emul_space address_space, loff_t pos); > > + ssize_t (*write)(struct mdev_device *vdev, char *buf, size_t count, > > + enum mdev_emul_space address_space, loff_t pos); > > + int (*set_irqs)(struct mdev_device *vdev, uint32_t flags, > > + unsigned int index, unsigned int start, > > + unsigned int count, void *data); > > + int (*get_region_info)(struct mdev_device *vdev, int region_index, > > + struct pci_region_info *region_info); > > + int (*validate_map_request)(struct mdev_device *vdev, > > + unsigned long virtaddr, > > + unsigned long *pfn, unsigned long *size, > > + pgprot_t *prot); > > +}; > > Dear Kirti: > > When I rebased my vfio-ccw patches on this series, I found I need an > extra 'ioctl' callback in phy_device_ops. > > The ccw physical device only supports one ccw mediated device. And I > have two new ioctl commands for the ccw mediated device. One is > to hot-reset the resource in the physical device that allocated for > the mediated device, the other is to do an I/O instruction translation > and perform an I/O operation on the physical device. I found the > existing callbacks could not meet my requirements. > > Something like the following would be fine for my case: > int (*ioctl)(struct mdev_device *vdev, > unsigned int cmd, > unsigned long arg); > > What do you think about this? > 'reset' should be generic. better to define an individual callback for it (then we can also expose a node under vgpu path in sysfs). Thanks Kevin From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38230) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8lbd-0002CC-4d for qemu-devel@nongnu.org; Fri, 03 Jun 2016 05:41:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b8lbZ-0005ue-02 for qemu-devel@nongnu.org; Fri, 03 Jun 2016 05:41:28 -0400 Received: from mga02.intel.com ([134.134.136.20]:41836) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8lbY-0005ua-LT for qemu-devel@nongnu.org; Fri, 03 Jun 2016 05:41:24 -0400 From: "Tian, Kevin" Date: Fri, 3 Jun 2016 09:40:16 +0000 Message-ID: References: <1464119897-10844-1-git-send-email-kwankhede@nvidia.com> <1464119897-10844-2-git-send-email-kwankhede@nvidia.com> <20160603165746.3df39542@oc7835276234> In-Reply-To: <20160603165746.3df39542@oc7835276234> Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [Qemu-devel] [RFC PATCH v4 1/3] Mediated device Core driver List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Dong Jia , Kirti Wankhede Cc: "alex.williamson@redhat.com" , "pbonzini@redhat.com" , "kraxel@redhat.com" , "cjia@nvidia.com" , "qemu-devel@nongnu.org" , "kvm@vger.kernel.org" , "Ruan, Shuai" , "Song, Jike" , "Lv, Zhiyuan" > From: Dong Jia [mailto:bjsdjshi@linux.vnet.ibm.com] > Sent: Friday, June 03, 2016 4:58 PM >=20 >=20 > ...snip... >=20 > > +struct phy_device_ops { > > + struct module *owner; > > + const struct attribute_group **dev_attr_groups; > > + const struct attribute_group **mdev_attr_groups; > > + > > + int (*supported_config)(struct device *dev, char *config); > > + int (*create)(struct device *dev, uuid_le uuid, > > + uint32_t instance, char *mdev_params); > > + int (*destroy)(struct device *dev, uuid_le uuid, > > + uint32_t instance); > > + int (*start)(uuid_le uuid); > > + int (*shutdown)(uuid_le uuid); > > + ssize_t (*read)(struct mdev_device *vdev, char *buf, size_t count, > > + enum mdev_emul_space address_space, loff_t pos); > > + ssize_t (*write)(struct mdev_device *vdev, char *buf, size_t count, > > + enum mdev_emul_space address_space, loff_t pos); > > + int (*set_irqs)(struct mdev_device *vdev, uint32_t flags, > > + unsigned int index, unsigned int start, > > + unsigned int count, void *data); > > + int (*get_region_info)(struct mdev_device *vdev, int region_index, > > + struct pci_region_info *region_info); > > + int (*validate_map_request)(struct mdev_device *vdev, > > + unsigned long virtaddr, > > + unsigned long *pfn, unsigned long *size, > > + pgprot_t *prot); > > +}; >=20 > Dear Kirti: >=20 > When I rebased my vfio-ccw patches on this series, I found I need an > extra 'ioctl' callback in phy_device_ops. >=20 > The ccw physical device only supports one ccw mediated device. And I > have two new ioctl commands for the ccw mediated device. One is > to hot-reset the resource in the physical device that allocated for > the mediated device, the other is to do an I/O instruction translation > and perform an I/O operation on the physical device. I found the > existing callbacks could not meet my requirements. >=20 > Something like the following would be fine for my case: > int (*ioctl)(struct mdev_device *vdev, > unsigned int cmd, > unsigned long arg); >=20 > What do you think about this? >=20 'reset' should be generic. better to define an individual callback for it (then we can also expose a node under vgpu path in sysfs). Thanks Kevin