From patchwork Fri Jul 26 16:28:26 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shilimkar X-Patchwork-Id: 2834256 Return-Path: X-Original-To: patchwork-linux-mmc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 87BBEC0319 for ; Fri, 26 Jul 2013 16:29:27 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2A378201BD for ; Fri, 26 Jul 2013 16:29:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EA987201B9 for ; Fri, 26 Jul 2013 16:29:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758257Ab3GZQ3F (ORCPT ); Fri, 26 Jul 2013 12:29:05 -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 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by devils.ext.ti.com (8.13.7/8.13.7) with ESMTP id r6QGSRQ9030539; Fri, 26 Jul 2013 11:28:27 -0500 Received: from DFLE73.ent.ti.com (dfle73.ent.ti.com [128.247.5.110]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id r6QGSRpj024958; Fri, 26 Jul 2013 11:28:27 -0500 Received: from dlelxv22.itg.ti.com (172.17.1.197) by DFLE73.ent.ti.com (128.247.5.110) with Microsoft SMTP Server id 14.2.342.3; Fri, 26 Jul 2013 11:28:27 -0500 Received: from [158.218.103.117] (ula0393909.am.dhcp.ti.com [158.218.103.117]) by dlelxv22.itg.ti.com (8.13.8/8.13.8) with ESMTP id r6QGSQqr001759; Fri, 26 Jul 2013 11:28:26 -0500 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> Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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);