From patchwork Fri May 15 11:20:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 1291051 X-Patchwork-Delegate: matthias.bgg@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.a=rsa-sha256 header.s=mail20170921 header.b=bbEhdKvF; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49NmDr2HZ6z9sTM for ; Fri, 15 May 2020 21:21:00 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 3907A81FAA; Fri, 15 May 2020 13:20:56 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="bbEhdKvF"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4547F81FBE; Fri, 15 May 2020 13:20:41 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 1096E81F8A for ; Fri, 15 May 2020 13:20:34 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=m.szyprowski@samsung.com Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200515112033euoutp017eb47659406948c97ea15bfdfb1b3f08~PL7G6Oqp31992919929euoutp013 for ; Fri, 15 May 2020 11:20:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200515112033euoutp017eb47659406948c97ea15bfdfb1b3f08~PL7G6Oqp31992919929euoutp013 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1589541633; bh=dUNOdbeUwGQ0gjnN7h/iptgs0THBcsWZ7VMJYZz9CsY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bbEhdKvFCQ+r9CtRiBoJq6NL8z24DmdamtF96LzHi97IPOmBf+C8vOykviI0E0hEi jZSv936YskTQ1L3i4HNhbsus0t+p4QNOH7hLSdjdIr7Nunpc0Hw4CJGyqWisjwDVPB AxX6vgDCTPplsO/pTm6ZhmZ5QrA8XgQlZrdkawbg= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200515112033eucas1p22933659bab69278ede51e35c4d0415ec~PL7GsLlfm2092120921eucas1p2S; Fri, 15 May 2020 11:20:33 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id BA.4C.60698.10B7EBE5; Fri, 15 May 2020 12:20:33 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200515112033eucas1p29c631060556949761d0c7c06c2088374~PL7GVgsJD1291212912eucas1p2u; Fri, 15 May 2020 11:20:33 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200515112033eusmtrp1d1d4153e6deb5135be89911fd25044b8~PL7GU4WL72690326903eusmtrp1W; Fri, 15 May 2020 11:20:33 +0000 (GMT) X-AuditID: cbfec7f5-a0fff7000001ed1a-1c-5ebe7b013f99 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id CB.73.08375.10B7EBE5; Fri, 15 May 2020 12:20:33 +0100 (BST) Received: from AMDC2765.digital.local (unknown [106.120.51.73]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200515112032eusmtip23f3e5b8018fa872615a6ab251a1c03bf~PL7F1jj9x1806618066eusmtip2X; Fri, 15 May 2020 11:20:32 +0000 (GMT) From: Marek Szyprowski To: u-boot@lists.denx.de Cc: Marek Szyprowski , Matthias Brugger , Tom Rini , Sylwester Nawrocki , marex@denx.de, bmeng.cn@gmail.com, nsaenzjulienne@suse.de, sjg@chromium.org, jh80.chung@samsung.com, b.zolnierkie@samsung.com Subject: [RFC PATCH v2 1/2] arm: provide a function for boards init code to modify MMU virtual-physical map Date: Fri, 15 May 2020 13:20:15 +0200 Message-Id: <20200515112016.24522-2-m.szyprowski@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200515112016.24522-1-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA0WSfSxVcRjH93POueeg206X5Ql5uVu2NGTYzhJlSztrzfqrNRYOzi5xL7uX W9gkxs2dMC+lq7z9EdHtEomMidYtVySztHldavNWjWpCLccZ/fd5vs/3+X63334UJrtHOFIJ qlRereKS5BIbvOPV7xEvlNkbefzzrBvTWmkimIrCKGZiI59gjC+nSGY5/wZiasvmCabD0CBh BpZ1BPOrvQMxFaVtJLPSU0CetmWrskdxttrwGme7DFMku9jXRLJvJzsRW9TehFhT+zjOtlky L1DhNifj+KQELa/2CY62ibd8y7NKqXG59jBnGs9GW6BH1hTQ/pBbNyLRIxtKRjci+L6eh4nD DwSDf4xIHNYQdD/SWe2eNH+ZJgSW0Q0I5puP7V3k1lTtLCS0L+hX9BKB7WmAjeLxnSSMbrSC NV0VKSzsaCW8mWrCBMbpIzC4XoAEltJBYNx8SohtrtDc0rftoShrOhgmx3BRfkBC0bKTIAN9 BnQ5maJsB4vmdlJkZ7CUFeJCLdC5COaGjaQ4FCIYy6lEoisQJoc3JEIQRh8F03MfUQ6B0aUe XMzfDxMrBwQZ28bSjjuYKEvhZr5MdHuAwfx4r/bFu/eYyCwUfSgmxOcZQDDebSRKkKvhf1kt Qk3IgU/TKBW8xk/FX/XWcEpNmkrhHZusfIK2/4zlr/lnJ+rdiulHNIXk+6SzGb2RMoLTatKV /QgoTG4vDTN1R8qkcVx6Bq9OjlKnJfGafuRE4XIHqV/9wmUZreBS+USeT+HVu1srytoxG901 K7yzz94O4zyX1mdqh7QtFxcR13AwNyDF/VRWQETrfdPM+XKldjU6tD7Cxd2tesVhoKTlSkyg KuQjpl5F9xmduajZ9vCn8roUlOUWN/fVK3HeApf8J+sdLHBroVi7OeRx6Fy1l74mKPVEV4F7 eOj16lL+2Rzm6lwhIUpi5bgmnvP1xNQa7h9tJx5GLwMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPLMWRmVeSWpSXmKPExsVy+t/xe7qM1fviDE6e4rLYOGM9q8XUnniL G7/aWC3WHrnLbvGmrZHRYsHkJ6wW22YtZ7M4/Kad1eLblm2MFlMnbWa3eLu3k92B22N2w0UW j3mzTrB47Jx1l93j1YFV7B5n7+xg9OjbsorRY/2Wqywem09XB3BE6dkU5ZeWpCpk5BeX2CpF G1oY6RlaWugZmVjqGRqbx1oZmSrp29mkpOZklqUW6dsl6GWcft/KVDBfrmJl0z2WBsY/El2M nBwSAiYSq5/dY+1i5OIQEljKKDF370Z2iISMxMlpDawQtrDEn2tdbBBFnxgltp+7xwaSYBMw lOh62wVmiwhISPzqv8oIUsQssIlJ4tLeBWAJYYFsiUP3mllAbBYBVYlTPzoZQWxeAVuJtb+3 Qm2Ql1i94QBzFyMHB6eAncSdy2DlQgL5En/vLWCbwMi3gJFhFaNIamlxbnpusaFecWJucWle ul5yfu4mRmDgbzv2c/MOxksbgw8xCnAwKvHwPqjaFyfEmlhWXJl7iFGCg1lJhNdv/e44Id6U xMqq1KL8+KLSnNTiQ4ymQDdNZJYSTc4HRmVeSbyhqaG5haWhubG5sZmFkjhvh8DBGCGB9MSS 1OzU1ILUIpg+Jg5OqQZGrW9q1deNk7ftjLuslDuDzybCjOeE3Ys75XeCntdO3JW8ZL7618Ws AeKv5AWZ579JrlbnON0vfv2qnjAz0/r6eI0r8dkpB9n51oZ65k52XJVnVne5K6f17/1JR769 6HWo/dbxd6KAbO/Z0PvG2+52FE38sHw1rz3zZ2WnyL6p+7XFnmVYbc9SYinOSDTUYi4qTgQA ViSOhpICAAA= X-CMS-MailID: 20200515112033eucas1p29c631060556949761d0c7c06c2088374 X-Msg-Generator: CA X-RootMTR: 20200515112033eucas1p29c631060556949761d0c7c06c2088374 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200515112033eucas1p29c631060556949761d0c7c06c2088374 References: <71b88bb9-7bfd-cb33-59b8-052c08ed33fa@suse.com> <20200515112016.24522-1-m.szyprowski@samsung.com> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.30rc1 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.2 at phobos.denx.de X-Virus-Status: Clean Provide a function for setting arbitrary virtual-physical MMU mapping for the given region. Signed-off-by: Marek Szyprowski --- arch/arm/include/asm/mmu.h | 8 ++++++++ arch/arm/include/asm/system.h | 11 +++++++++++ arch/arm/lib/cache-cp15.c | 24 ++++++++++++++++++------ 3 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 arch/arm/include/asm/mmu.h diff --git a/arch/arm/include/asm/mmu.h b/arch/arm/include/asm/mmu.h new file mode 100644 index 0000000..fe3d793 --- /dev/null +++ b/arch/arm/include/asm/mmu.h @@ -0,0 +1,8 @@ +#ifndef __ASM_ARM_MMU_H +#define __ASM_ARM_MMU_H + +#ifdef CONFIG_ADDR_MAP +extern void init_addr_map(void); +#endif + +#endif diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index 81ccead..5b9f31c 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -573,6 +573,17 @@ s32 psci_features(u32 function_id, u32 psci_fid); void save_boot_params_ret(void); /** + * Change the virt/phys mapping and cache settings for a region. + * + * \param virt virtual start address of memory region to change + * \param phys physical address for the memory region to set + * \param size size of memory region to change + * \param option dcache option to select + */ +void mmu_set_region_dcache_behaviour_phys(phys_addr_t virt, phys_addr_t phys, + size_t size, enum dcache_option option); + +/** * Change the cache settings for a region. * * \param start start address of memory region to change diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c index f8d2096..84ddad3 100644 --- a/arch/arm/lib/cache-cp15.c +++ b/arch/arm/lib/cache-cp15.c @@ -24,7 +24,8 @@ __weak void arm_init_domains(void) { } -void set_section_dcache(int section, enum dcache_option option) +static void set_section_phys(int section, phys_addr_t phys, + enum dcache_option option) { #ifdef CONFIG_ARMV7_LPAE u64 *page_table = (u64 *)gd->arch.tlb_addr; @@ -36,7 +37,7 @@ void set_section_dcache(int section, enum dcache_option option) #endif /* Add the page offset */ - value |= ((u32)section << MMU_SECTION_SHIFT); + value |= phys; /* Add caching bits */ value |= option; @@ -45,13 +46,18 @@ void set_section_dcache(int section, enum dcache_option option) page_table[section] = value; } +void set_section_dcache(int section, enum dcache_option option) +{ + set_section_phys(section, (u32)section << MMU_SECTION_SHIFT, option); +} + __weak void mmu_page_table_flush(unsigned long start, unsigned long stop) { debug("%s: Warning: not implemented\n", __func__); } -void mmu_set_region_dcache_behaviour(phys_addr_t start, size_t size, - enum dcache_option option) +void mmu_set_region_dcache_behaviour_phys(phys_addr_t start, phys_addr_t phys, + size_t size, enum dcache_option option) { #ifdef CONFIG_ARMV7_LPAE u64 *page_table = (u64 *)gd->arch.tlb_addr; @@ -70,8 +76,8 @@ void mmu_set_region_dcache_behaviour(phys_addr_t start, size_t size, debug("%s: start=%pa, size=%zu, option=0x%x\n", __func__, &start, size, option); #endif - for (upto = start; upto < end; upto++) - set_section_dcache(upto, option); + for (upto = start; upto < end; upto++, phys += MMU_SECTION_SIZE) + set_section_phys(upto, phys, option); /* * Make sure range is cache line aligned @@ -86,6 +92,12 @@ void mmu_set_region_dcache_behaviour(phys_addr_t start, size_t size, mmu_page_table_flush(startpt, stoppt); } +void mmu_set_region_dcache_behaviour(phys_addr_t start, size_t size, + enum dcache_option option) +{ + mmu_set_region_dcache_behaviour_phys(start, start, size, option); +} + __weak void dram_bank_mmu_setup(int bank) { bd_t *bd = gd->bd;