Received: by 10.223.164.202 with SMTP id h10csp333946wrb; Wed, 8 Nov 2017 17:40:31 -0800 (PST) X-Google-Smtp-Source: ABhQp+SXCD9ueLfJdwTuYZTpc38KD31NVngnkO/d9B5EviW6mHKQkMT02JhowZTAO5JsKXK7uQQI X-Received: by 10.99.4.11 with SMTP id 11mr165295pge.123.1510191630931; Wed, 08 Nov 2017 17:40:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510191630; cv=none; d=google.com; s=arc-20160816; b=BnkxT26J6e8/VMfaJy81A6W26iD21+liGKru5oxxdlps80ruzEv+Gq/bQbdRfKhawV dXQksop0DfdZ1mR0hgHU24g7yyL5Dq7hU87+MB5NQS1hLymLrDUI7dd08IRNzIQ0Rv2Y AGHN7C/krFJRyw3q1OqfE5eHrwmxAfpTdag1dya8RjULChUYS2E28/4usE5JYETrq8ZU Z/1PJ+R8INE+QzGYVBZ0vPukcMH0DnGhEXDoqVtv8jBVetw+6FY0SIq+jgov9lTLxkDh ZCKHZ+djcXKJ/3ay1ZqW8aVT+mPdscA39zp+flD/SBr6KT/qVwkj5XbOv0QZH5xHXH7h 3EBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:organization:message-id:date:subject:cc:to :from:dkim-signature:arc-authentication-results; bh=KS46cCxv/kgfMxaxegC/xPDufaVzvGuLkKCR4IiVnyI=; b=Co4+wyW07r8H5FADVxk602aEDxbuu9AjXlUdCmVcAjsyf8UAQ4xIjZb1WhvZRXpOxm 50qI/LS8Cz12ijNfWZly5nqCXF+excO9/+5RFUoXJNqoCkMhMxe5aev4tBOigSVZesdc yqTF6LG7KqyXZtVfsExjJMxCiHdSCBFCZxeQqzy0UEPgfKtT+9gj+wGormn4TuGRS7X/ z4+13hROAAwaYIeZVpoI1zckVlpUB4Y5kKwJRpGWVGb4a7PKmEjbUuj5Lpc0CsXq4tR0 fSG5jUpfitlanp6MCn3cxXf0srcBo9K2iR8NRZkXcnN9jgrwM4eFw9EUnzjH27KFWljx Lwog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=n8x6JOki; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 3si4940285plz.759.2017.11.08.17.40.19; Wed, 08 Nov 2017 17:40:30 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=n8x6JOki; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752985AbdKIBjk (ORCPT + 82 others); Wed, 8 Nov 2017 20:39:40 -0500 Received: from galahad.ideasonboard.com ([185.26.127.97]:49963 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751245AbdKIBji (ORCPT ); Wed, 8 Nov 2017 20:39:38 -0500 Received: from avalon.localnet (unknown [182.232.171.229]) by galahad.ideasonboard.com (Postfix) with ESMTPSA id D98072075A; Thu, 9 Nov 2017 02:38:27 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1510191508; bh=V0vs4Qsdpxu4hKEPzZi14yDh1NQT3f4hu4aUmpFSylo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n8x6JOkiIug2v5b5ePav0w/ISGBc9qT6Sx4PGb5kTQEHxeAIBtyfkD9yaTsDZyiKY zcDVjNNyKfWr+JQKKFaWsULCDwiqP68nZoth5bGKZjHgBFbVc4VfnrbYfLg5zy2bBs GosGalpYvqtGEFx/SRqthS5K54tEkJH539qSlztc= From: Laurent Pinchart To: Jacopo Mondi Cc: ysato@users.sourceforge.jp, dalias@libc.org, linux-sh@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] sh: migor: Reserve memory block for CEU Date: Thu, 09 Nov 2017 03:39:42 +0200 Message-ID: <2038988.rgqq23lX41@avalon> Organization: Ideas on Board Oy In-Reply-To: <1510164346-21134-1-git-send-email-jacopo+renesas@jmondi.org> References: <1510164346-21134-1-git-send-email-jacopo+renesas@jmondi.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jacopo, Thank you for the patch. On Wednesday, 8 November 2017 20:05:46 EET Jacopo Mondi wrote: > A memory region for CEU video buffer has to be reserved during machine > initialization. > > Originally, it was allocated through DMA API helpers and stored in the > second IORESOURCE_MEM entry, to be later remapped by the CEU driver with > a call to 'dma_declare_coherent_memory()' > > As Linux does not allow anymore to remap system RAM regions with > 'memremap' function, sh_mobile_ceu driver fails when trying to remap the > memory area: > > WARN_ONCE(1, "memremap attempted on ram %pa size: %#lx\n", > &offset, (unsigned long) size) > > from 'memremap()' function in kernel/memremap.c > > To avoid hitting that WARN_ONCE() and have memory successfully remapped, > reserve a region using '.mv_mem_reserve' member of SH's 'struct > sh_machine_vector' to make sure memory is reserved early enough, and > removed from the available system RAM. I'd phrase it the other way around. The important point here is that the reserved memory block must be removed from system memory in order to be remapable. This requires usage of the memblock API, and as this API is only usable very early during the boot process, we have to use the .mv_mem_reserve operation. > This is similar to what happens on ARM architecture with > 'arm_memblock_steal()' function. > > Suggested-by: Laurent Pinchart > Signed-off-by: Jacopo Mondi > --- > arch/sh/boards/mach-migor/setup.c | 28 ++++++++++++++++++++++++++-- > 1 file changed, 26 insertions(+), 2 deletions(-) > > diff --git a/arch/sh/boards/mach-migor/setup.c > b/arch/sh/boards/mach-migor/setup.c index 0bcbe58..080627c 100644 > --- a/arch/sh/boards/mach-migor/setup.c > +++ b/arch/sh/boards/mach-migor/setup.c > @@ -12,6 +12,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -45,6 +46,9 @@ > * 0x18000000 8GB 8 NAND Flash (K9K8G08U0A) > */ > > +#define CEU_BUFFER_MEMORY_SIZE (4 << 20) > +static phys_addr_t ceu_dma_membase; > + > static struct smc91x_platdata smc91x_info = { > .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT, > }; > @@ -501,6 +505,8 @@ extern char migor_sdram_leave_end; > > static int __init migor_devices_setup(void) > { > + struct resource *r = &migor_ceu_device.resource[2]; > + > /* register board specific self-refresh code */ > sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF, > &migor_sdram_enter_start, > @@ -632,8 +638,6 @@ static int __init migor_devices_setup(void) > #endif > __raw_writew(__raw_readw(PORT_MSELCRB) | 0x2000, PORT_MSELCRB); /* D15->D8 > */ > > - platform_resource_setup_memory(&migor_ceu_device, "ceu", 4 << 20); > - > /* SIU: Port B */ > gpio_request(GPIO_FN_SIUBOLR, NULL); > gpio_request(GPIO_FN_SIUBOBT, NULL); > @@ -647,6 +651,12 @@ static int __init migor_devices_setup(void) > */ > __raw_writew(__raw_readw(PORT_MSELCRA) | 1, PORT_MSELCRA); > > + /* Setup additional memory resources for Migo-R */ I would initialize the r variable here instead of at declaration time to make the code more readable. Otherwise the reader will have to scroll back to find out what r points to. Other than that, Reviewed-by: Laurent Pinchart > + r->flags = IORESOURCE_MEM; > + r->start = ceu_dma_membase; > + r->end = r->start + CEU_BUFFER_MEMORY_SIZE - 1; > + r->name = "ceu"; > + > i2c_register_board_info(0, migor_i2c_devices, > ARRAY_SIZE(migor_i2c_devices)); > > @@ -665,10 +675,24 @@ static int migor_mode_pins(void) > return MODE_PIN0 | MODE_PIN1 | MODE_PIN5; > } > > +/* Reserve a portion of memory for CEU buffers */ > +static void __init migor_mv_mem_reserve(void) > +{ > + phys_addr_t phys; > + phys_addr_t size = CEU_BUFFER_MEMORY_SIZE; > + > + phys = memblock_alloc_base(size, PAGE_SIZE, MEMBLOCK_ALLOC_ANYWHERE); > + memblock_free(phys, size); > + memblock_remove(phys, size); > + > + ceu_dma_membase = phys; > +} > + > /* > * The Machine Vector > */ > static struct sh_machine_vector mv_migor __initmv = { > .mv_name = "Migo-R", > .mv_mode_pins = migor_mode_pins, > + .mv_mem_reserve = migor_mv_mem_reserve, > }; -- Regards, Laurent Pinchart From 1583550224273697128@xxx Thu Nov 09 01:32:57 +0000 2017 X-GM-THRID: 1583522157640962016 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread