On Wed, 25 May 2016 01:28:15 +0530
Kirti Wankhede <kwankh...@nvidia.com> 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


Reply via email to