From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57211) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8kvb-0006Z6-Oc for qemu-devel@nongnu.org; Fri, 03 Jun 2016 04:58:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b8kvX-0003yn-Ls for qemu-devel@nongnu.org; Fri, 03 Jun 2016 04:58:03 -0400 Received: from e36.co.us.ibm.com ([32.97.110.154]:47088) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8kvX-0003yK-CR for qemu-devel@nongnu.org; Fri, 03 Jun 2016 04:57:59 -0400 Received: from localhost by e36.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 3 Jun 2016 02:57:57 -0600 Date: Fri, 3 Jun 2016 16:57:46 +0800 From: Dong Jia Message-ID: <20160603165746.3df39542@oc7835276234> In-Reply-To: <1464119897-10844-2-git-send-email-kwankhede@nvidia.com> References: <1464119897-10844-1-git-send-email-kwankhede@nvidia.com> <1464119897-10844-2-git-send-email-kwankhede@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit 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: Kirti Wankhede Cc: alex.williamson@redhat.com, pbonzini@redhat.com, kraxel@redhat.com, cjia@nvidia.com, qemu-devel@nongnu.org, kvm@vger.kernel.org, kevin.tian@intel.com, shuai.ruan@intel.com, jike.song@intel.com, zhiyuan.lv@intel.com On Wed, 25 May 2016 01:28:15 +0530 Kirti Wankhede wrote: ...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? -------- Dong Jia