On Thu, Jun 20, 2019 at 05:50:10PM +0900, Yoshihiro Shimoda wrote:
> When the max_segs of a mmc host is smaller than 512, the mmc
> subsystem tries to use 512 segments if DMA MAP layer can merge
> the segments, and then the mmc subsystem exposes such information
> to the block layer by using blk_queue_can_use_dma_map_merging().
>
> Signed-off-by: Yoshihiro Shimoda <[email protected]>
> ---
> drivers/mmc/core/queue.c | 35 ++++++++++++++++++++++++++++++++---
> include/linux/mmc/host.h | 1 +
> 2 files changed, 33 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c
> index 92900a0..ab0ecc6 100644
> --- a/drivers/mmc/core/queue.c
> +++ b/drivers/mmc/core/queue.c
> @@ -24,6 +24,8 @@
> #include "card.h"
> #include "host.h"
>
> +#define MMC_DMA_MAP_MERGE_SEGMENTS 512
> +
> static inline bool mmc_cqe_dcmd_busy(struct mmc_queue *mq)
> {
> /* Allow only 1 DCMD at a time */
> @@ -196,6 +198,12 @@ static void mmc_queue_setup_discard(struct request_queue
> *q,
> blk_queue_flag_set(QUEUE_FLAG_SECERASE, q);
> }
>
> +static unsigned int mmc_get_max_segments(struct mmc_host *host)
> +{
> + return host->can_dma_map_merge ? MMC_DMA_MAP_MERGE_SEGMENTS :
> + host->max_segs;
I personally don't like superflous use of ? : if an if would be more
obvious:
if (host->can_dma_map_merge)
return MMC_DMA_MAP_MERGE_SEGMENTS;
return host->max_segs;
but that is really just a nitpick and for the mmc maintainer to decide.
Otherwise looks good:
Reviewed-by: Christoph Hellwig <[email protected]>
_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu