Message ID | 1566995743-5614-4-git-send-email-yoshihiro.shimoda.uh@renesas.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | treewide: improve R-Car SDHI performance | expand |
On 8/28/19 6:35 AM, Yoshihiro Shimoda wrote: > This patch adds a helper function whether a queue can merge > the segments by the DMA MAP layer (e.g. via IOMMU). Reviewed-by: Jens Axboe <axboe@kernel.dk>
Hi Christoph, Now this patch series got {Ack,Review}ed-by from each maintainer. https://patchwork.kernel.org/project/linux-renesas-soc/list/?series=166501 So, would you pick this up through the dma-mapping tree as you said before? > From: Jens Axboe, Sent: Tuesday, September 3, 2019 6:47 AM > > On 8/28/19 6:35 AM, Yoshihiro Shimoda wrote: > > This patch adds a helper function whether a queue can merge > > the segments by the DMA MAP layer (e.g. via IOMMU). > > Reviewed-by: Jens Axboe <axboe@kernel.dk> Jens, thank you for your review! Best regards, Yoshihiro Shimoda
On Tue, Sep 03, 2019 at 04:59:59AM +0000, Yoshihiro Shimoda wrote: > Hi Christoph, > > Now this patch series got {Ack,Review}ed-by from each maintainer. > https://patchwork.kernel.org/project/linux-renesas-soc/list/?series=166501 > > So, would you pick this up through the dma-mapping tree as you said before? I've applied it to the dma-mapping tree for 5.4 now, thanks a lot!
Hi Christoph, > > Now this patch series got {Ack,Review}ed-by from each maintainer. > > https://patchwork.kernel.org/project/linux-renesas-soc/list/?series=166501 > > > > So, would you pick this up through the dma-mapping tree as you said before? > > I've applied it to the dma-mapping tree for 5.4 now, thanks a lot! Thank you very much for your support! Best regards, Yoshihiro Shimoda
diff --git a/block/blk-settings.c b/block/blk-settings.c index 2c18312..c3632fc 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c @@ -12,6 +12,7 @@ #include <linux/lcm.h> #include <linux/jiffies.h> #include <linux/gfp.h> +#include <linux/dma-mapping.h> #include "blk.h" #include "blk-wbt.h" @@ -832,6 +833,28 @@ void blk_queue_write_cache(struct request_queue *q, bool wc, bool fua) } EXPORT_SYMBOL_GPL(blk_queue_write_cache); +/** + * blk_queue_can_use_dma_map_merging - configure queue for merging segments. + * @q: the request queue for the device + * @dev: the device pointer for dma + * + * Tell the block layer about merging the segments by dma map of @q. + */ +bool blk_queue_can_use_dma_map_merging(struct request_queue *q, + struct device *dev) +{ + unsigned long boundary = dma_get_merge_boundary(dev); + + if (!boundary) + return false; + + /* No need to update max_segment_size. see blk_queue_virt_boundary() */ + blk_queue_virt_boundary(q, boundary); + + return true; +} +EXPORT_SYMBOL_GPL(blk_queue_can_use_dma_map_merging); + static int __init blk_settings_init(void) { blk_max_low_pfn = max_low_pfn - 1; diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 1ac7901..d62d6e2 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1086,6 +1086,8 @@ extern void blk_queue_dma_alignment(struct request_queue *, int); extern void blk_queue_update_dma_alignment(struct request_queue *, int); extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); extern void blk_queue_write_cache(struct request_queue *q, bool enabled, bool fua); +extern bool blk_queue_can_use_dma_map_merging(struct request_queue *q, + struct device *dev); /* * Number of physical segments as sent to the device.