Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2e05394 authored by Ross Zwisler's avatar Ross Zwisler Committed by Dan Williams
Browse files

pmem, dax: have direct_access use __pmem annotation



Update the annotation for the kaddr pointer returned by direct_access()
so that it is a __pmem pointer.  This is consistent with the PMEM driver
and with how this direct_access() pointer is used in the DAX code.

Signed-off-by: default avatarRoss Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 2765cfbb
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -397,7 +397,8 @@ prototypes:
	int (*release) (struct gendisk *, fmode_t);
	int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
	int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
	int (*direct_access) (struct block_device *, sector_t, void **, unsigned long *);
	int (*direct_access) (struct block_device *, sector_t, void __pmem **,
				unsigned long *);
	int (*media_changed) (struct gendisk *);
	void (*unlock_native_capacity) (struct gendisk *);
	int (*revalidate_disk) (struct gendisk *);
+4 −3
Original line number Diff line number Diff line
@@ -141,13 +141,14 @@ axon_ram_make_request(struct request_queue *queue, struct bio *bio)
 */
static long
axon_ram_direct_access(struct block_device *device, sector_t sector,
		       void **kaddr, unsigned long *pfn, long size)
		       void __pmem **kaddr, unsigned long *pfn, long size)
{
	struct axon_ram_bank *bank = device->bd_disk->private_data;
	loff_t offset = (loff_t)sector << AXON_RAM_SECTOR_SHIFT;
	void *addr = (void *)(bank->ph_addr + offset);

	*kaddr = (void *)(bank->ph_addr + offset);
	*pfn = virt_to_phys(*kaddr) >> PAGE_SHIFT;
	*kaddr = (void __pmem *)addr;
	*pfn = virt_to_phys(addr) >> PAGE_SHIFT;

	return bank->size - offset;
}
+2 −2
Original line number Diff line number Diff line
@@ -371,7 +371,7 @@ static int brd_rw_page(struct block_device *bdev, sector_t sector,

#ifdef CONFIG_BLK_DEV_RAM_DAX
static long brd_direct_access(struct block_device *bdev, sector_t sector,
			void **kaddr, unsigned long *pfn, long size)
			void __pmem **kaddr, unsigned long *pfn, long size)
{
	struct brd_device *brd = bdev->bd_disk->private_data;
	struct page *page;
@@ -381,7 +381,7 @@ static long brd_direct_access(struct block_device *bdev, sector_t sector,
	page = brd_insert_page(brd, sector);
	if (!page)
		return -ENOSPC;
	*kaddr = page_address(page);
	*kaddr = (void __pmem *)page_address(page);
	*pfn = page_to_pfn(page);

	/*
+2 −2
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ static int pmem_rw_page(struct block_device *bdev, sector_t sector,
}

static long pmem_direct_access(struct block_device *bdev, sector_t sector,
			      void **kaddr, unsigned long *pfn, long size)
		      void __pmem **kaddr, unsigned long *pfn, long size)
{
	struct pmem_device *pmem = bdev->bd_disk->private_data;
	size_t offset = sector << 9;
@@ -101,7 +101,7 @@ static long pmem_direct_access(struct block_device *bdev, sector_t sector,
		return -ENODEV;

	/* FIXME convert DAX to comprehend that this mapping has a lifetime */
	*kaddr = (void __force *) pmem->virt_addr + offset;
	*kaddr = pmem->virt_addr + offset;
	*pfn = (pmem->phys_addr + offset) >> PAGE_SHIFT;

	return pmem->size - offset;
+6 −4
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ static int dcssblk_open(struct block_device *bdev, fmode_t mode);
static void dcssblk_release(struct gendisk *disk, fmode_t mode);
static void dcssblk_make_request(struct request_queue *q, struct bio *bio);
static long dcssblk_direct_access(struct block_device *bdev, sector_t secnum,
				 void **kaddr, unsigned long *pfn, long size);
			 void __pmem **kaddr, unsigned long *pfn, long size);

static char dcssblk_segments[DCSSBLK_PARM_LEN] = "\0";

@@ -879,18 +879,20 @@ dcssblk_make_request(struct request_queue *q, struct bio *bio)

static long
dcssblk_direct_access (struct block_device *bdev, sector_t secnum,
			void **kaddr, unsigned long *pfn, long size)
			void __pmem **kaddr, unsigned long *pfn, long size)
{
	struct dcssblk_dev_info *dev_info;
	unsigned long offset, dev_sz;
	void *addr;

	dev_info = bdev->bd_disk->private_data;
	if (!dev_info)
		return -ENODEV;
	dev_sz = dev_info->end - dev_info->start;
	offset = secnum * 512;
	*kaddr = (void *) (dev_info->start + offset);
	*pfn = virt_to_phys(*kaddr) >> PAGE_SHIFT;
	addr = (void *) (dev_info->start + offset);
	*pfn = virt_to_phys(addr) >> PAGE_SHIFT;
	*kaddr = (void __pmem *) addr;

	return dev_sz - offset;
}
Loading