Commit 684bf9cd authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

ps3vram: convert to blk_alloc_disk/blk_cleanup_disk



Convert the ps3vram driver to use the blk_alloc_disk and blk_cleanup_disk
helpers to simplify gendisk and request_queue allocation.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Link: https://lore.kernel.org/r/20210521055116.1053587-23-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent f9dc931d
Loading
Loading
Loading
Loading
+8 −23
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ struct ps3vram_cache {
};

struct ps3vram_priv {
	struct request_queue *queue;
	struct gendisk *gendisk;

	u64 size;
@@ -613,7 +612,6 @@ static int ps3vram_probe(struct ps3_system_bus_device *dev)
{
	struct ps3vram_priv *priv;
	int error, status;
	struct request_queue *queue;
	struct gendisk *gendisk;
	u64 ddr_size, ddr_lpar, ctrl_lpar, info_lpar, reports_lpar,
	    reports_size, xdr_lpar;
@@ -736,33 +734,23 @@ static int ps3vram_probe(struct ps3_system_bus_device *dev)

	ps3vram_proc_init(dev);

	queue = blk_alloc_queue(NUMA_NO_NODE);
	if (!queue) {
		dev_err(&dev->core, "blk_alloc_queue failed\n");
		error = -ENOMEM;
		goto out_cache_cleanup;
	}

	priv->queue = queue;
	blk_queue_max_segments(queue, BLK_MAX_SEGMENTS);
	blk_queue_max_segment_size(queue, BLK_MAX_SEGMENT_SIZE);
	blk_queue_max_hw_sectors(queue, BLK_SAFE_MAX_SECTORS);

	gendisk = alloc_disk(1);
	gendisk = blk_alloc_disk(NUMA_NO_NODE);
	if (!gendisk) {
		dev_err(&dev->core, "alloc_disk failed\n");
		dev_err(&dev->core, "blk_alloc_disk failed\n");
		error = -ENOMEM;
		goto fail_cleanup_queue;
		goto out_cache_cleanup;
	}

	priv->gendisk = gendisk;
	gendisk->major = ps3vram_major;
	gendisk->first_minor = 0;
	gendisk->minors = 1;
	gendisk->fops = &ps3vram_fops;
	gendisk->queue = queue;
	gendisk->private_data = dev;
	strlcpy(gendisk->disk_name, DEVICE_NAME, sizeof(gendisk->disk_name));
	set_capacity(gendisk, priv->size >> 9);
	blk_queue_max_segments(gendisk->queue, BLK_MAX_SEGMENTS);
	blk_queue_max_segment_size(gendisk->queue, BLK_MAX_SEGMENT_SIZE);
	blk_queue_max_hw_sectors(gendisk->queue, BLK_SAFE_MAX_SECTORS);

	dev_info(&dev->core, "%s: Using %llu MiB of GPU memory\n",
		 gendisk->disk_name, get_capacity(gendisk) >> 11);
@@ -770,8 +758,6 @@ static int ps3vram_probe(struct ps3_system_bus_device *dev)
	device_add_disk(&dev->core, gendisk, NULL);
	return 0;

fail_cleanup_queue:
	blk_cleanup_queue(queue);
out_cache_cleanup:
	remove_proc_entry(DEVICE_NAME, NULL);
	ps3vram_cache_cleanup(dev);
@@ -802,8 +788,7 @@ static void ps3vram_remove(struct ps3_system_bus_device *dev)
	struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev);

	del_gendisk(priv->gendisk);
	put_disk(priv->gendisk);
	blk_cleanup_queue(priv->queue);
	blk_cleanup_disk(priv->gendisk);
	remove_proc_entry(DEVICE_NAME, NULL);
	ps3vram_cache_cleanup(dev);
	iounmap(priv->reports);