Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759425Ab3GZQ3I (ORCPT ); Fri, 26 Jul 2013 12:29:08 -0400 Received: from devils.ext.ti.com ([198.47.26.153]:43215 "EHLO devils.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757810Ab3GZQ3C (ORCPT ); Fri, 26 Jul 2013 12:29:02 -0400 Message-ID: <51F2A3AA.4060801@ti.com> Date: Fri, 26 Jul 2013 12:28:26 -0400 From: Santosh Shilimkar User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: Russell King - ARM Linux CC: , , Catalin Marinas , Will Deacon , Nicolas Pitre , Tejun Heo , Jens Axboe , , Chris Ball , Subject: Re: [RFC/RFT PATCH 0/5] mm: ARM nobootmem and few dma_mask fixes References: <1373665694-7580-1-git-send-email-santosh.shilimkar@ti.com> <20130726151021.GU24642@n2100.arm.linux.org.uk> In-Reply-To: <20130726151021.GU24642@n2100.arm.linux.org.uk> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3734 Lines: 94 On Friday 26 July 2013 11:10 AM, Russell King - ARM Linux wrote: > On Fri, Jul 12, 2013 at 05:48:09PM -0400, Santosh Shilimkar wrote: >> The series is an attempt to move ARM port to NO_BOOTMEM. As discussed >> on list NO_BOOTMEM move needed updates to max*pfn meaning to be maximum >> PFNs but that breaks the dma_mask for few block layer drivers since >> ARM start of physical memory is not PFN0 unlike most of the architectures. >> Some more read on it is here: >> http://lwn.net/Articles/543408/ >> http://lwn.net/Articles/543424/ >> >> To address this issue, we introduce generic dma_max_pfn() helper which >> can be overridden from the architectures. >> >> Another intention behind move to nobootmem is also to convert ARM to >> switch to memblock and getting rid of bootmem allocator dependency which >> don't work for LPAE machines which has physical memory starting beyond >> 4 GB boundary. It needs changes to core kernel and also a new memblock >> API. More on this can be found here: >> https://lkml.org/lkml/2013/6/29/77 >> >> I have been trying to cook up these patches with kind help from Russell >> and we know series don't solve all the dma_mask bad assumptions. But at >> least I am hoping that it can get the ball rolling. >> >> Comments/testing help is welcome !! > > As this is related to some of the cleanup of dma_mask which I've been > doing, I think it may make sense to roll this into one tree. Any > objection to that? > > Can we get any acks on this stuff from Jens and Jejb etc - especially > for the bits which touch block/ and for the scsi bits as these are > touching other subsystems. (oddly, linux-scsi wasn't on the original > mail for this series summary.) > Sorry I missed the scsi lists on the summary patch. While browsing the code I found another spot in mmc layer which needs fixing. The patch is at the end of the email with Chris and linux-mmc cc'ed here. Regards, Santosh >From 06a27a784a1fd86bf22adf1b247ac82a7c21d46b Mon Sep 17 00:00:00 2001 From: Santosh Shilimkar Date: Fri, 19 Jul 2013 21:36:46 -0400 Subject: [PATCH] mmc: Use dma_max_pfn(dev) helper for bounce_limit calculations DMA bounce limit is the maximum direct DMA'able memory beyond which bounce buffers has to be used to perform dma operations. MMC queue layer relies on dma_mask but its calculation is based on max_*pfn which don't have uniform meaning across architectures. So make use of dma_max_pfn() which is expected to return the DMAable maximum pfn value across architectures. Cc: Russell King Cc: Chris Ball Signed-off-by: Santosh Shilimkar --- drivers/mmc/card/queue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c index fa9632e..357bbc5 100644 --- a/drivers/mmc/card/queue.c +++ b/drivers/mmc/card/queue.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -196,7 +197,7 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, struct mmc_queue_req *mqrq_prev = &mq->mqrq[1]; if (mmc_dev(host)->dma_mask && *mmc_dev(host)->dma_mask) - limit = *mmc_dev(host)->dma_mask; + limit = dma_max_pfn(mmc_dev(host)) << PAGE_SHIFT; mq->card = card; mq->queue = blk_init_queue(mmc_request_fn, lock); -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/