Re: [PATCH V6 8/8] virtio: Intel IFC VF driver for VDPA

Zhu Lingshan
2020-03-19T07:28:23Z

On 3/18/2020 8:22 PM, Jason Gunthorpe wrote:
> On Wed, Mar 18, 2020 at 04:03:27PM +0800, Jason Wang wrote:
>> From: Zhu Lingshan <lingshan.zhu@intel.com>
>> +
>> +static int ifcvf_vdpa_attach(struct ifcvf_adapter *adapter)
>> +{
>> + int ret;
>> +
>> + adapter->vdpa_dev = vdpa_alloc_device(adapter->dev, adapter->dev,
>> + &ifc_vdpa_ops);
>> + if (IS_ERR(adapter->vdpa_dev)) {
>> + IFCVF_ERR(adapter->dev, "Failed to init ifcvf on vdpa bus");
>> + put_device(&adapter->vdpa_dev->dev);
>> + return -ENODEV;
>> + }
> The point of having an alloc call is so that the drivers
> ifcvf_adaptor memory could be placed in the same struct - eg use
> container_of to flip between them, and have a kref for both memories.
>
> It seem really weird to have an alloc followed immediately by
> register.

Hi Jason,

Thanks for your comments, but I failed to understand this. In IFCVF
driver, we call ifcvf_vdpa_attach() at the end at probe(),
at this point, PCIE initialization almost done, then try to alloc vdpa
device, if successful, we can register it to VDPA bus.

Are you suggesting to wait for anything else done?

THanks,
BR
Zhu Linghsan
>
>> diff --git a/drivers/virtio/virtio_vdpa.c b/drivers/virtio/virtio_vdpa.c
>> index c30eb55030be..de64b88ee7e4 100644
>> +++ b/drivers/virtio/virtio_vdpa.c
>> @@ -362,6 +362,7 @@ static int virtio_vdpa_probe(struct vdpa_device *vdpa)
>> goto err;
>>
>> vdpa_set_drvdata(vdpa, vd_dev);
>> + dev_info(vd_dev->vdev.dev.parent, "device attached to VDPA bus\n");
>>
>> return 0;
> This hunk seems out of place
>
> Jason