Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp4630256rdb; Tue, 12 Dec 2023 05:17:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IH/FDpKzkcbM0Ii8hao7Hz2jnnUTGDNougQvzoa6hQbsXFhAtF5yVLW8aPCrLSlS3F/I/yt X-Received: by 2002:a05:6a20:4f91:b0:18f:d275:9f33 with SMTP id gh17-20020a056a204f9100b0018fd2759f33mr6134078pzb.119.1702387054095; Tue, 12 Dec 2023 05:17:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702387054; cv=none; d=google.com; s=arc-20160816; b=MfG4INI8x1sY3j4QOTQrDnlFbDR8XtHmnw7CluZAeOccP12OYFwxkWFD7fVmDY3Kd1 L0RatBoxJ9lqiZZ7Ec+myOCWd++q8g4Lz12qsR9WUS2LDaevdJf93XHpzOg2S94/bfiy H3alClYFTvSiwh/D0vrQcuMrhPcNeupSUpJgG6zrdJvkgpGKIiwrQPqYOQTTeMvjVhZg hG/7vu13N7ne0hITtUUdTFnXHjBVgJv1SFAu2NYbSlp+BlDedoPs88NhrHtuPIWvAtIK d/DUANcWDZPYvHoqyWVeyNyg4oVFUh9FGOQQR+hDPW73Wg4g8QsenVV9PwwBzwKBO7li jeOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:from; bh=Lv2MflYoXqRDsIJ7RVqfwS1W5T7MTYyGJ6y7/2YpJsY=; fh=Q+VoK5gLERa2V98Nlu0ip92G4ExI5nklM2BcU2Z2tLA=; b=hJjMpEhiUE6PjSqLxjC86Xezg2O1oslTWgGeWMwEHMPnRHtKReNXS0H3EwIt2iwydv B5Y5/rvNVzwb/x0OtDknJFY8zuxWRx3T2m/1TjxUF5FPjAi6rnw27WP3OHuQtDIt7eRj +6VzZXQQngNqwXd3ldl9ayAUEYz7eOvVCu8yUUe0mXoUmhbjvHWKBriZHw7zeghFzxea 565FHFe64VJ4KdGAVB4T+Nh8HTuW53xM7m57EtKFyf9g/6neH+dtOj5WN56YXFPtihrH TrL3/P58qyuEPyZAFbhtpadwCd9iEOzhLp6y2oTmBerJFwdX7eyKXDL51r4uwRdi66wY Tiew== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=fzi.de Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id k78-20020a628451000000b006cbf2bc6eaesi410539pfd.188.2023.12.12.05.17.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Dec 2023 05:17:34 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=fzi.de Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id B2FFF8056C4D; Tue, 12 Dec 2023 05:17:30 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376627AbjLLNRL (ORCPT + 99 others); Tue, 12 Dec 2023 08:17:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55176 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1376548AbjLLNRK (ORCPT ); Tue, 12 Dec 2023 08:17:10 -0500 Received: from fzi-msx-e-03.fzi.de (fzi-msx-e-03.fzi.de [141.21.8.252]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 391E1EB for ; Tue, 12 Dec 2023 05:17:15 -0800 (PST) From: Frederik Haxel CC: Vitaly Wool , Frederik Haxel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Andy Chiu , Conor Dooley , "Greentime Hu" , Heiko Stuebner , =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Sami Tolvanen , Nam Cao , Guo Ren , Alexandre Ghiti , Anup Patel , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Baoquan He , Chen Jiahao , , Subject: [PATCH 1/3] riscv: Make XIP bootable again Date: Tue, 12 Dec 2023 14:01:12 +0100 Message-ID: <20231212130116.848530-2-haxel@fzi.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231212130116.848530-1-haxel@fzi.de> References: <20231212130116.848530-1-haxel@fzi.de> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [141.21.46.139] X-ClientProxiedBy: fzi-msx-05.fzi.de (2001:67c:2acc:8:141:21:17:45) To fzi-msx-05.fzi.de (2001:67c:2acc:8:141:21:17:45) X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Tue, 12 Dec 2023 05:17:31 -0800 (PST) Currently, the XIP kernel seems to fail to boot due to missing XIP_FIXUP and a wrong page_offset value. A superfluous XIP_FIXUP has also been removed. Signed-off-by: Frederik Haxel --- arch/riscv/kernel/head.S | 1 + arch/riscv/mm/init.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S index b77397432403..a2e2f0dd3899 100644 --- a/arch/riscv/kernel/head.S +++ b/arch/riscv/kernel/head.S @@ -89,6 +89,7 @@ relocate_enable_mmu: /* Compute satp for kernel page tables, but don't load it yet */ srl a2, a0, PAGE_SHIFT la a1, satp_mode + XIP_FIXUP_OFFSET a1 REG_L a1, 0(a1) or a2, a2, a1 diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 2e011cbddf3a..a65937336cdc 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -174,6 +174,9 @@ void __init mem_init(void) /* Limit the memory size via mem. */ static phys_addr_t memory_limit; +#ifdef CONFIG_XIP_KERNEL +#define memory_limit (*(phys_addr_t *)XIP_FIXUP(&memory_limit)) +#endif /* CONFIG_XIP_KERNEL */ static int __init early_mem(char *p) { @@ -952,7 +955,7 @@ static void __init create_fdt_early_page_table(uintptr_t fix_fdt_va, * setup_vm_final installs the linear mapping. For 32-bit kernel, as the * kernel is mapped in the linear mapping, that makes no difference. */ - dtb_early_va = kernel_mapping_pa_to_va(XIP_FIXUP(dtb_pa)); + dtb_early_va = kernel_mapping_pa_to_va(dtb_pa); #endif dtb_early_pa = dtb_pa; @@ -1055,9 +1058,9 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) #endif kernel_map.virt_addr = KERNEL_LINK_ADDR + kernel_map.virt_offset; - kernel_map.page_offset = _AC(CONFIG_PAGE_OFFSET, UL); #ifdef CONFIG_XIP_KERNEL + kernel_map.page_offset = PAGE_OFFSET_L3; kernel_map.xiprom = (uintptr_t)CONFIG_XIP_PHYS_ADDR; kernel_map.xiprom_sz = (uintptr_t)(&_exiprom) - (uintptr_t)(&_xiprom); @@ -1067,6 +1070,7 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) kernel_map.va_kernel_xip_pa_offset = kernel_map.virt_addr - kernel_map.xiprom; #else + kernel_map.page_offset = _AC(CONFIG_PAGE_OFFSET, UL); kernel_map.phys_addr = (uintptr_t)(&_start); kernel_map.size = (uintptr_t)(&_end) - kernel_map.phys_addr; #endif -- 2.34.1