qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 2/5] virtio-pmem: Add virtio pmem driver


From: Yuval Shaia
Subject: Re: [Qemu-devel] [PATCH v5 2/5] virtio-pmem: Add virtio pmem driver
Date: Wed, 10 Apr 2019 17:41:47 +0300
User-agent: Mutt/1.10.1 (2018-07-13)

> +
> +static int virtio_pmem_probe(struct virtio_device *vdev)
> +{
> +     int err = 0;
> +     struct resource res;
> +     struct virtio_pmem *vpmem;
> +     struct nvdimm_bus *nvdimm_bus;
> +     struct nd_region_desc ndr_desc = {};
> +     int nid = dev_to_node(&vdev->dev);
> +     struct nd_region *nd_region;
> +
> +     if (!vdev->config->get) {
> +             dev_err(&vdev->dev, "%s failure: config disabled\n",
> +                     __func__);
> +             return -EINVAL;
> +     }
> +
> +     vdev->priv = vpmem = devm_kzalloc(&vdev->dev, sizeof(*vpmem),
> +                                     GFP_KERNEL);
> +     if (!vpmem) {
> +             err = -ENOMEM;
> +             goto out_err;
> +     }
> +
> +     vpmem->vdev = vdev;
> +     err = init_vq(vpmem);
> +     if (err)
> +             goto out_err;
> +
> +     virtio_cread(vpmem->vdev, struct virtio_pmem_config,
> +                     start, &vpmem->start);
> +     virtio_cread(vpmem->vdev, struct virtio_pmem_config,
> +                     size, &vpmem->size);
> +
> +     res.start = vpmem->start;
> +     res.end   = vpmem->start + vpmem->size-1;
> +     vpmem->nd_desc.provider_name = "virtio-pmem";
> +     vpmem->nd_desc.module = THIS_MODULE;
> +
> +     vpmem->nvdimm_bus = nvdimm_bus = nvdimm_bus_register(&vdev->dev,
> +                                             &vpmem->nd_desc);
> +     if (!nvdimm_bus)
> +             goto out_vq;
> +
> +     dev_set_drvdata(&vdev->dev, nvdimm_bus);
> +
> +     ndr_desc.res = &res;
> +     ndr_desc.numa_node = nid;
> +     ndr_desc.flush = virtio_pmem_flush;
> +     set_bit(ND_REGION_PAGEMAP, &ndr_desc.flags);
> +     set_bit(ND_REGION_ASYNC, &ndr_desc.flags);
> +     nd_region = nvdimm_pmem_region_create(nvdimm_bus, &ndr_desc);
> +     nd_region->provider_data =  dev_to_virtio

Pleas delete the extra space.

> +                                     (nd_region->dev.parent->parent);
> +
> +     if (!nd_region)
> +             goto out_nd;
> +
> +     return 0;
> +out_nd:
> +     err = -ENXIO;
> +     nvdimm_bus_unregister(nvdimm_bus);
> +out_vq:
> +     vdev->config->del_vqs(vdev);
> +out_err:
> +     dev_err(&vdev->dev, "failed to register virtio pmem memory\n");
> +     return err;
> +}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]