]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - block/blk-settings.c
Merge tag 'printk-for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek...
[linux.git] / block / blk-settings.c
index 6bd1e3b082d8e811da833070c4813a41bcfa11c4..5f6dcc7a47bd92745341feee781cb2f2d3fa58b2 100644 (file)
@@ -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"
@@ -848,6 +849,28 @@ void blk_queue_required_elevator_features(struct request_queue *q,
 }
 EXPORT_SYMBOL_GPL(blk_queue_required_elevator_features);
 
+/**
+ * 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;