From ad519c6902fb66990ad206cdf2c38da259f0dee9 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Sun, 27 Oct 2002 17:15:58 -0800 Subject: [PATCH] queue dma alignment Make it possible for a device to specify the dma alignment restrictions it has. This will be used by future infrastructure when mapping in user pages, and allows us to dma to on ATAPI even though user address and length is not sector size aligned. --- include/linux/blkdev.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'include/linux/blkdev.h') diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 7ac2b3bb88e5..cd9b016a8993 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -215,6 +215,7 @@ struct request_queue unsigned int max_segment_size; unsigned long seg_boundary_mask; + unsigned int dma_alignment; wait_queue_head_t queue_wait; @@ -346,6 +347,7 @@ extern void blk_queue_segment_boundary(request_queue_t *, unsigned long); extern void blk_queue_assign_lock(request_queue_t *, spinlock_t *); extern void blk_queue_prep_rq(request_queue_t *, prep_rq_fn *pfn); extern void blk_queue_merge_bvec(request_queue_t *, merge_bvec_fn *); +extern void blk_queue_dma_alignment(request_queue_t *, int); extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); extern int blk_rq_map_sg(request_queue_t *, struct request *, struct scatterlist *); @@ -392,6 +394,21 @@ static inline int bdev_hardsect_size(struct block_device *bdev) return queue_hardsect_size(bdev_get_queue(bdev)); } +static inline int queue_dma_alignment(request_queue_t *q) +{ + int retval = 511; + + if (q && q->dma_alignment) + retval = q->dma_alignment; + + return retval; +} + +static inline int bdev_dma_aligment(struct block_device *bdev) +{ + return queue_dma_alignment(bdev_get_queue(bdev)); +} + #define blk_finished_io(nsects) do { } while (0) #define blk_started_io(nsects) do { } while (0) -- cgit v1.2.3