From patchwork Sun Nov 12 06:14:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164192 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561656vqg; Sat, 11 Nov 2023 22:17:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IE7smavd82/gt2BhRkqBblEsUQLfzqmxDc9p1sC5BmMeLEzXLy/YwepTMpdzinaGpdbTeB2 X-Received: by 2002:a05:6a21:a59b:b0:186:fdb:5c3 with SMTP id gd27-20020a056a21a59b00b001860fdb05c3mr4855011pzc.8.1699769844603; Sat, 11 Nov 2023 22:17:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769844; cv=none; d=google.com; s=arc-20160816; b=piBn4thA4z2FARTa6jSYUKsabangTAJnmZ2p+DeOeaJkOOpKBrRa6vDvjssfyUNsEl R0+d8jz3fMwDP6IMDP2BSXLmsdgou1OnbiKsm3+PKWszGjmlM6FRfy902TOIehDWwoLi 5TFdEK1xbHDaHPGIWq8rxCFlY9+3m23PAqhML/t0E+uhvs0tBBP2IKZaFXcmISMtdOJR wVZ/XEtEYoLfChCcxwhKc118JBUs5BgHW9cfMivYJnzIYIkeUgQri94baH565LcyBXzf 0IuApy9W1FiI1MNhcnydS7Eep1kDHJRUCJmn/O+EtpmayPGH9Gq6bgPQ0RjAA4d32Cnh PPnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=xuWhAQFGvWZlGgOpcoSWqGWYbq5FhZOJK5OdGyYaXjs=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=aVL+qjMdjA3bLMShchzmdRWcGc+srI1u28+LUXLI42nZoRYJ+FPnj07AZkJH9pH7lb 2NCPMq7jlQbkI+BgashZvWBAouqj2p/+iIrHguTmmUl24hx8iWzFv5A6eczzTHXlMWLE fwPB8iej6IsPZ9eCEDbOh/6tcF2BqNRSUE8OZQxisVy2RmwqzEbPD4TIFC1K7O4TGwd/ sqe5OffEv8Dseoe4x+8eeR5HQt/i7x3epVdWT0LAEQbzbMrGv8w/ZZoxiCjNs45f4gDl ChmEsdtBUnNGPsgBVbvYZDMqNBKipWTvtgjJe9aC3PivvKh+KsGMekRMHkPjrZ+iA7Wv hyIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=odxdBVaa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id u18-20020a056a00125200b006935df3019esi3213224pfi.235.2023.11.11.22.17.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:17:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=odxdBVaa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 367338080D6B; Sat, 11 Nov 2023 22:17:03 -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 S230071AbjKLGPl (ORCPT + 29 others); Sun, 12 Nov 2023 01:15:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230052AbjKLGPh (ORCPT ); Sun, 12 Nov 2023 01:15:37 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F8E82D46 for ; Sat, 11 Nov 2023 22:15:33 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4B382C433C7; Sun, 12 Nov 2023 06:15:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769733; bh=7DizsHP7tASuRjl6xi8+9j4wWEOCc+4gYNXhsSXKgJw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=odxdBVaaAySaLxUBZqzgus5rfUHgtxS2FGkvNJKS0kTn0mhAtb+YdRnOo8Bd1tTEW zn5C8jpWf5Exe1nBqCambABc0mdYWeeUaOAeiWVlhOuH2aSc28x+Pc5YWdB0g1JX4H 5rqo23Ov8MQVubqyP5n2+MfMA9r3K7c8JPstSD5/9suBW8rMbSCs1pC/6alDsDPRBT F3HYeCYt4ZPt6dLegFbkWOjy2saVHF4BFVXZ7L85Vgw/vm6AW9eiw/bGjs9HClXp4O /gt3d6Mt+mgTtVIm5Te5mlZ0AdeapIR+ztJQtm9r01pRwQfCWAwmZQSV1bSOTqnI5m KgbNB3hwvvI2Q== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 01/38] riscv: u64ilp32: Unify vdso32 & compat_vdso into vdso/Makefile Date: Sun, 12 Nov 2023 01:14:37 -0500 Message-Id: <20231112061514.2306187-2-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email 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]); Sat, 11 Nov 2023 22:17:03 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337864285602127 X-GMAIL-MSGID: 1782337864285602127 From: Guo Ren Linux kernel abi and vdso abi could be different, and current vdso/Makefile force vdso use the same abi as the kernel. It isn't suitable for the next s64ilp32 patch series because s64ilp32 uses 64ilp32 abi in the kernel but still uses 32ilp32 in the userspace. This patch unifies vdso32 & compat_vdso into vdso/Makefile to solve this problem, similar to Powerpc's vdso framework. Before this: - vdso/ - vdso/vdso.S - vdso/gen_vdso_offsets.sh - compat_vdso/compat_vdso.S - compat_vdso/gen_compat_vdso_offsets.sh - vdso.c After this: - vdso/ - vdso64.S - vdso/gen_vdso64_offsets.sh - vdso32.S - vdso/gen_vdso32_offsets.sh - vdso.c Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 11 ++ arch/riscv/Makefile | 15 +- arch/riscv/include/asm/vdso.h | 34 +++- arch/riscv/include/asm/vdso/gettimeofday.h | 7 +- arch/riscv/kernel/Makefile | 3 +- arch/riscv/kernel/compat_signal.c | 2 +- arch/riscv/kernel/vdso.c | 4 +- arch/riscv/kernel/vdso/Makefile | 179 ++++++++++++------ ..._vdso_offsets.sh => gen_vdso32_offsets.sh} | 2 +- arch/riscv/kernel/vdso/gen_vdso64_offsets.sh | 5 + arch/riscv/kernel/vdso32.S | 8 + arch/riscv/kernel/{vdso/vdso.S => vdso64.S} | 8 +- 12 files changed, 197 insertions(+), 81 deletions(-) rename arch/riscv/kernel/vdso/{gen_vdso_offsets.sh => gen_vdso32_offsets.sh} (78%) create mode 100755 arch/riscv/kernel/vdso/gen_vdso64_offsets.sh create mode 100644 arch/riscv/kernel/vdso32.S rename arch/riscv/kernel/{vdso/vdso.S => vdso64.S} (73%) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 4c07b9189c86..4b91e2ba7815 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -5,9 +5,11 @@ # config 64BIT + select VDSO64 bool config 32BIT + select VDSO32 bool config RISCV @@ -278,6 +280,14 @@ config AS_HAS_OPTION_ARCH depends on $(as-instr, .option arch$(comma) +m) depends on !$(as-instr, .option arch$(comma) -i) +config VDSO32 + bool + depends on MMU + +config VDSO64 + bool + depends on MMU + source "arch/riscv/Kconfig.socs" source "arch/riscv/Kconfig.errata" @@ -696,6 +706,7 @@ config CRASH_DUMP config COMPAT bool "Kernel support for 32-bit U-mode" default 64BIT + select VDSO32 depends on 64BIT && MMU help This option enables support for a 32-bit U-mode running under a 64-bit diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index 6ec6d52a4180..3b7d5ebf3c78 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -136,18 +136,19 @@ libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a PHONY += vdso_install vdso_install: - $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@ - $(if $(CONFIG_COMPAT),$(Q)$(MAKE) \ - $(build)=arch/riscv/kernel/compat_vdso compat_$@) + $(if $(CONFIG_VDSO32),$(Q)$(MAKE) \ + $(build)=arch/riscv/kernel/vdso vdso32_install + $(if $(CONFIG_VDSO64),$(Q)$(MAKE) \ + $(build)=arch/riscv/kernel/vdso vdso64_install ifeq ($(KBUILD_EXTMOD),) ifeq ($(CONFIG_MMU),y) prepare: vdso_prepare vdso_prepare: prepare0 - $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso include/generated/vdso-offsets.h - $(if $(CONFIG_COMPAT),$(Q)$(MAKE) \ - $(build)=arch/riscv/kernel/compat_vdso include/generated/compat_vdso-offsets.h) - + $(if $(CONFIG_VDSO32),$(Q)$(MAKE) \ + $(build)=arch/riscv/kernel/vdso include/generated/vdso32-offsets.h) + $(if $(CONFIG_VDSO64),$(Q)$(MAKE) \ + $(build)=arch/riscv/kernel/vdso include/generated/vdso64-offsets.h) endif endif diff --git a/arch/riscv/include/asm/vdso.h b/arch/riscv/include/asm/vdso.h index f891478829a5..305ddc6de21c 100644 --- a/arch/riscv/include/asm/vdso.h +++ b/arch/riscv/include/asm/vdso.h @@ -17,22 +17,36 @@ #define __VVAR_PAGES 2 #ifndef __ASSEMBLY__ -#include -#define VDSO_SYMBOL(base, name) \ - (void __user *)((unsigned long)(base) + __vdso_##name##_offset) +#ifdef CONFIG_VDSO64 +#include -#ifdef CONFIG_COMPAT -#include +#define VDSO64_SYMBOL(base, name) \ + (void __user *)((unsigned long)(base) + rv64__vdso_##name##_offset) -#define COMPAT_VDSO_SYMBOL(base, name) \ - (void __user *)((unsigned long)(base) + compat__vdso_##name##_offset) +extern char vdso64_start[], vdso64_end[]; -extern char compat_vdso_start[], compat_vdso_end[]; +#endif /* CONFIG_VDSO64 */ -#endif /* CONFIG_COMPAT */ +#ifdef CONFIG_VDSO32 +#include -extern char vdso_start[], vdso_end[]; +#define VDSO32_SYMBOL(base, name) \ + (void __user *)((unsigned long)(base) + rv32__vdso_##name##_offset) + +extern char vdso32_start[], vdso32_end[]; + +#endif /* CONFIG_VDSO32 */ + +#ifdef CONFIG_64BIT +#define vdso_start vdso64_start +#define vdso_end vdso64_end +#define VDSO_SYMBOL VDSO64_SYMBOL +#else /* CONFIG_64BIT */ +#define vdso_start vdso32_start +#define vdso_end vdso32_end +#define VDSO_SYMBOL VDSO32_SYMBOL +#endif /* CONFIG_64BIT */ #endif /* !__ASSEMBLY__ */ diff --git a/arch/riscv/include/asm/vdso/gettimeofday.h b/arch/riscv/include/asm/vdso/gettimeofday.h index ba3283cf7acc..a7ae8576797b 100644 --- a/arch/riscv/include/asm/vdso/gettimeofday.h +++ b/arch/riscv/include/asm/vdso/gettimeofday.h @@ -17,6 +17,7 @@ #define VDSO_HAS_CLOCK_GETRES 1 +#ifdef __NR_gettimeofday static __always_inline int gettimeofday_fallback(struct __kernel_old_timeval *_tv, struct timezone *_tz) @@ -33,7 +34,9 @@ int gettimeofday_fallback(struct __kernel_old_timeval *_tv, return ret; } +#endif +#ifdef __NR_clock_gettime static __always_inline long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) { @@ -49,7 +52,9 @@ long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) return ret; } +#endif +#ifdef __NR_clock_getres static __always_inline int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) { @@ -65,7 +70,7 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) return ret; } - +#endif #endif /* CONFIG_GENERIC_TIME_VSYSCALL */ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode, diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile index 506cc4a9a45a..23032ac7f51d 100644 --- a/arch/riscv/kernel/Makefile +++ b/arch/riscv/kernel/Makefile @@ -57,6 +57,8 @@ obj-y += cacheinfo.o obj-y += patch.o obj-y += probes/ obj-$(CONFIG_MMU) += vdso.o vdso/ +obj-$(CONFIG_VDSO64) += vdso64.o +obj-$(CONFIG_VDSO32) += vdso32.o obj-$(CONFIG_RISCV_M_MODE) += traps_misaligned.o obj-$(CONFIG_FPU) += fpu.o @@ -94,7 +96,6 @@ obj-$(CONFIG_JUMP_LABEL) += jump_label.o obj-$(CONFIG_EFI) += efi.o obj-$(CONFIG_COMPAT) += compat_syscall_table.o obj-$(CONFIG_COMPAT) += compat_signal.o -obj-$(CONFIG_COMPAT) += compat_vdso/ obj-$(CONFIG_64BIT) += pi/ obj-$(CONFIG_ACPI) += acpi.o diff --git a/arch/riscv/kernel/compat_signal.c b/arch/riscv/kernel/compat_signal.c index 6ec4e34255a9..8dea2012836e 100644 --- a/arch/riscv/kernel/compat_signal.c +++ b/arch/riscv/kernel/compat_signal.c @@ -217,7 +217,7 @@ int compat_setup_rt_frame(struct ksignal *ksig, sigset_t *set, if (err) return -EFAULT; - regs->ra = (unsigned long)COMPAT_VDSO_SYMBOL( + regs->ra = (unsigned long)VDSO32_SYMBOL( current->mm->context.vdso, rt_sigreturn); /* diff --git a/arch/riscv/kernel/vdso.c b/arch/riscv/kernel/vdso.c index 2cf76218a5bd..dc03393bf900 100644 --- a/arch/riscv/kernel/vdso.c +++ b/arch/riscv/kernel/vdso.c @@ -194,8 +194,8 @@ static struct vm_special_mapping rv_compat_vdso_maps[] __ro_after_init = { static struct __vdso_info compat_vdso_info __ro_after_init = { .name = "compat_vdso", - .vdso_code_start = compat_vdso_start, - .vdso_code_end = compat_vdso_end, + .vdso_code_start = vdso32_start, + .vdso_code_end = vdso32_end, .dm = &rv_compat_vdso_maps[RV_VDSO_MAP_VVAR], .cm = &rv_compat_vdso_maps[RV_VDSO_MAP_VDSO], }; diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile index 6b1dba11bf6d..a9720e816e1f 100644 --- a/arch/riscv/kernel/vdso/Makefile +++ b/arch/riscv/kernel/vdso/Makefile @@ -1,85 +1,156 @@ # SPDX-License-Identifier: GPL-2.0-only -# Copied from arch/tile/kernel/vdso/Makefile # Include the generic Makefile to check the built vdso. include $(srctree)/lib/vdso/Makefile -# Symbols present in the vdso -vdso-syms = rt_sigreturn -ifdef CONFIG_64BIT -vdso-syms += vgettimeofday -endif -vdso-syms += getcpu -vdso-syms += flush_icache -vdso-syms += hwprobe -vdso-syms += sys_hwprobe -# Files to link into the vdso -obj-vdso = $(patsubst %, %.o, $(vdso-syms)) note.o +VDSO_CC := $(CC) +VDSO_LD := $(LD) + +# Disable profiling and instrumentation for VDSO code +GCOV_PROFILE := n +KCOV_INSTRUMENT := n +KASAN_SANITIZE := n +UBSAN_SANITIZE := n ccflags-y := -fno-stack-protector ccflags-y += -DDISABLE_BRANCH_PROFILING -ifneq ($(c-gettimeofday-y),) - CFLAGS_vgettimeofday.o += -fPIC -include $(c-gettimeofday-y) +CPPFLAGS_vdso.lds += -P -C -U$(ARCH) +ifneq ($(filter vgettimeofday, $(vdso-cc-syms)),) + CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY endif -CFLAGS_hwprobe.o += -fPIC +# strip rule for the .so file +$(obj)/%.so: OBJCOPYFLAGS := -S +$(obj)/%.so: $(obj)/%.so.dbg FORCE + $(call if_changed,objcopy) -# Build rules -targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds -obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) +# install commands for the unstripped file +quiet_cmd_vdso_install = INSTALL $@ + cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/$@ -obj-y += vdso.o -CPPFLAGS_vdso.lds += -P -C -U$(ARCH) -ifneq ($(filter vgettimeofday, $(vdso-syms)),) -CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY -endif +# Symbols present in the vdso +ifdef CONFIG_VDSO64 +vdso64-as-syms = rt_sigreturn +vdso64-as-syms += getcpu +vdso64-as-syms += flush_icache +vdso64-as-syms += sys_hwprobe -# Disable -pg to prevent insert call site -CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) +vdso64-cc-syms = vgettimeofday +vdso64-cc-syms += hwprobe -# Disable profiling and instrumentation for VDSO code -GCOV_PROFILE := n -KCOV_INSTRUMENT := n -KASAN_SANITIZE := n -UBSAN_SANITIZE := n +obj-as-vdso64 = $(patsubst %, %-64.o, $(vdso64-as-syms)) note-64.o +obj-as-vdso64 := $(addprefix $(obj)/, $(obj-as-vdso64)) -# Force dependency -$(obj)/vdso.o: $(obj)/vdso.so +obj-cc-vdso64 = $(patsubst %, %-64.o, $(vdso64-cc-syms)) +obj-cc-vdso64 := $(addprefix $(obj)/, $(obj-cc-vdso64)) -# link rule for the .so file, .lds has to be first -$(obj)/vdso.so.dbg: $(obj)/vdso.lds $(obj-vdso) FORCE - $(call if_changed,vdsold) -LDFLAGS_vdso.so.dbg = -shared -S -soname=linux-vdso.so.1 \ +targets += $(obj-as-vdso64) $(obj-cc-vdso64) vdso64.so vdso64.so.dbg vdso64.lds + +$(obj)/vdso64.so.dbg: $(obj)/vdso.lds $(obj-as-vdso64) $(obj-cc-vdso64) FORCE + $(call if_changed,vdso64ld) +LDFLAGS_vdso64.so.dbg = -shared -S -soname=linux-vdso64.so.1 \ --build-id=sha1 --hash-style=both --eh-frame-hdr +# The DSO images are built using a special linker script +# Make sure only to export the intended __vdso_xxx symbol offsets. +quiet_cmd_vdso64ld = VDSO64LD $@ + cmd_vdso64ld = $(VDSO_LD) $(ld_flags) $(VDSO64_LD_FLAGS) -T $(filter-out FORCE,$^) -o $@.tmp && \ + $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso64-as-syms) $(vdso64-cc-syms)) $@.tmp $@ && \ + rm $@.tmp -# strip rule for the .so file -$(obj)/%.so: OBJCOPYFLAGS := -S -$(obj)/%.so: $(obj)/%.so.dbg FORCE - $(call if_changed,objcopy) +# actual build commands +quiet_cmd_vdso64as = VDSO64AS $@ + cmd_vdso64as = $(VDSO_CC) $(a_flags) $(VDSO64_CC_FLAGS) -c -o $@ $< +quiet_cmd_vdso64cc = VDSO64CC $@ + cmd_vdso64cc = $(VDSO_CC) $(c_flags) $(VDSO64_CC_FLAGS) -c -o $@ $< + +# Force dependency +$(obj)/vdso64.o: $(obj)/vdso64.so + +$(obj-as-vdso64): %-64.o: %.S FORCE + $(call if_changed_dep,vdso64as) +$(obj-cc-vdso64): %-64.o: %.c FORCE + $(call if_changed_dep,vdso64cc) + +CFLAGS_vgettimeofday-64.o += -fPIC -include $(c-gettimeofday-y) +# Disable -pg to prevent insert call site +CFLAGS_REMOVE_vgettimeofday-64.o = $(CC_FLAGS_FTRACE) + +CFLAGS_hwprobe-64.o += -fPIC # Generate VDSO offsets using helper script -gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh -quiet_cmd_vdsosym = VDSOSYM $@ - cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ +gen-vdso64sym := $(srctree)/$(src)/gen_vdso64_offsets.sh +quiet_cmd_vdso64sym = VDSO64SYM $@ + cmd_vdso64sym = $(NM) $< | $(gen-vdso64sym) | LC_ALL=C sort > $@ -include/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE - $(call if_changed,vdsosym) +include/generated/vdso64-offsets.h: $(obj)/vdso64.so.dbg $(obj)/vdso64.so FORCE + $(call if_changed,vdso64sym) + +vdso64.so: $(obj)/vdso64.so.dbg + @mkdir -p $(MODLIB)/vdso + $(call cmd,vdso_install) + +vdso64_install: vdso64.so +endif + +ifdef CONFIG_VDSO32 +vdso32-as-syms = rt_sigreturn +vdso32-as-syms += getcpu +vdso32-as-syms += flush_icache +vdso32-as-syms += sys_hwprobe + +vdso32-cc-syms += hwprobe + +VDSO32_CC_FLAGS := -march=rv32g -mabi=ilp32 +VDSO32_LD_FLAGS := -melf32lriscv + +obj-as-vdso32 = $(patsubst %, %-32.o, $(vdso32-as-syms)) note-32.o +obj-as-vdso32 := $(addprefix $(obj)/, $(obj-as-vdso32)) + +obj-cc-vdso32 = $(patsubst %, %-32.o, $(vdso32-cc-syms)) +obj-cc-vdso32 := $(addprefix $(obj)/, $(obj-cc-vdso32)) + +targets += $(obj-as-vdso32) $(obj-cc-vdso32) vdso32.so vdso32.so.dbg vdso32.lds + +$(obj)/vdso32.so.dbg: $(obj)/vdso.lds $(obj-as-vdso32) $(obj-cc-vdso32) FORCE + $(call if_changed,vdso32ld) +LDFLAGS_vdso32.so.dbg = -shared -S -soname=linux-vdso32.so.1 \ + --build-id=sha1 --hash-style=both --eh-frame-hdr -# actual build commands # The DSO images are built using a special linker script # Make sure only to export the intended __vdso_xxx symbol offsets. -quiet_cmd_vdsold = VDSOLD $@ - cmd_vdsold = $(LD) $(ld_flags) -T $(filter-out FORCE,$^) -o $@.tmp && \ - $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso-syms)) $@.tmp $@ && \ +quiet_cmd_vdso32ld = VDSO32LD $@ + cmd_vdso32ld = $(VDSO_LD) $(ld_flags) $(VDSO32_LD_FLAGS) -T $(filter-out FORCE,$^) -o $@.tmp && \ + $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso32-as-syms) $(vdso32-cc-syms)) $@.tmp $@ && \ rm $@.tmp -# install commands for the unstripped file -quiet_cmd_vdso_install = INSTALL $@ - cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/$@ +# actual build commands +quiet_cmd_vdso32as = VDSO32AS $@ + cmd_vdso32as = $(VDSO_CC) $(a_flags) $(VDSO32_CC_FLAGS) -c -o $@ $< +quiet_cmd_vdso32cc = VDSO32CC $@ + cmd_vdso32cc = $(VDSO_CC) $(c_flags) $(VDSO32_CC_FLAGS) -c -o $@ $< -vdso.so: $(obj)/vdso.so.dbg +# Force dependency +$(obj)/vdso32.o: $(obj)/vdso32.so + +$(obj-as-vdso32): %-32.o: %.S FORCE + $(call if_changed_dep,vdso32as) +$(obj-cc-vdso32): %-32.o: %.c FORCE + $(call if_changed_dep,vdso32cc) + +CFLAGS_hwprobe-32.o += -fPIC + +# Generate VDSO offsets using helper script +gen-vdso32sym := $(srctree)/$(src)/gen_vdso32_offsets.sh +quiet_cmd_vdso32sym = VDSO32SYM $@ + cmd_vdso32sym = $(NM) $< | $(gen-vdso32sym) | LC_ALL=C sort > $@ + +include/generated/vdso32-offsets.h: $(obj)/vdso32.so.dbg $(obj)/vdso32.so FORCE + $(call if_changed,vdso32sym) + +vdso32.so: $(obj)/vdso32.so.dbg @mkdir -p $(MODLIB)/vdso $(call cmd,vdso_install) -vdso_install: vdso.so +vdso32_install: vdso32.so +endif diff --git a/arch/riscv/kernel/vdso/gen_vdso_offsets.sh b/arch/riscv/kernel/vdso/gen_vdso32_offsets.sh similarity index 78% rename from arch/riscv/kernel/vdso/gen_vdso_offsets.sh rename to arch/riscv/kernel/vdso/gen_vdso32_offsets.sh index c2e5613f3495..c0dee7361530 100755 --- a/arch/riscv/kernel/vdso/gen_vdso_offsets.sh +++ b/arch/riscv/kernel/vdso/gen_vdso32_offsets.sh @@ -2,4 +2,4 @@ # SPDX-License-Identifier: GPL-2.0 LC_ALL=C -sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define \2_offset\t0x\1/p' +sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define rv32\2_offset\t0x\1/p' diff --git a/arch/riscv/kernel/vdso/gen_vdso64_offsets.sh b/arch/riscv/kernel/vdso/gen_vdso64_offsets.sh new file mode 100755 index 000000000000..ac265ed49eaf --- /dev/null +++ b/arch/riscv/kernel/vdso/gen_vdso64_offsets.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +LC_ALL=C +sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define rv64\2_offset\t0x\1/p' diff --git a/arch/riscv/kernel/vdso32.S b/arch/riscv/kernel/vdso32.S new file mode 100644 index 000000000000..9bdf3cb20ccb --- /dev/null +++ b/arch/riscv/kernel/vdso32.S @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#define vdso64_start vdso32_start +#define vdso64_end vdso32_end + +#define __VDSO_PATH "arch/riscv/kernel/vdso/vdso32.so" + +#include "vdso64.S" diff --git a/arch/riscv/kernel/vdso/vdso.S b/arch/riscv/kernel/vdso64.S similarity index 73% rename from arch/riscv/kernel/vdso/vdso.S rename to arch/riscv/kernel/vdso64.S index 83f1c899e8d8..498b73da0dbf 100644 --- a/arch/riscv/kernel/vdso/vdso.S +++ b/arch/riscv/kernel/vdso64.S @@ -8,16 +8,16 @@ #include #ifndef __VDSO_PATH -#define __VDSO_PATH "arch/riscv/kernel/vdso/vdso.so" +#define __VDSO_PATH "arch/riscv/kernel/vdso/vdso64.so" #endif __PAGE_ALIGNED_DATA - .globl vdso_start, vdso_end + .globl vdso64_start, vdso64_end .balign PAGE_SIZE -vdso_start: +vdso64_start: .incbin __VDSO_PATH .balign PAGE_SIZE -vdso_end: +vdso64_end: .previous From patchwork Sun Nov 12 06:14:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164197 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561769vqg; Sat, 11 Nov 2023 22:17:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IF7pMs9xquSUjdYj7RhD1p+RZgokbSTntXOdLhcmUA7u7kyMo4xBXE8LFA2dJBz1SL1aLn+ X-Received: by 2002:a05:6a21:19f:b0:186:736f:773f with SMTP id le31-20020a056a21019f00b00186736f773fmr314632pzb.17.1699769871547; Sat, 11 Nov 2023 22:17:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769871; cv=none; d=google.com; s=arc-20160816; b=USHCX/KduTLSr5XoUbgOAGqVwRhS8Ae1oxLyG89qEnNYkxBsZBZct79IaDvT0glR2E zwETqpmvI1BozmRQ9l6nZXxo2GpI50NVRIuaDMjA6gJCvv35bfRSdJS4ZsAeUenF9lNE nIxKW+dH4l5DwGiKswscy09C/CA68OlovRNR7Pa6Axx/0flb8+yaHjHBjGliGTqMKyOs 966T2dTdNw5lI9qwy3H6Av1MvP6X9lsG3gB7034gKF+yxWr4cm2Zzh+7XXTjQLyBHpog ezHjUsKoTLgpJn1LZm2fXlWML/su+5gICK0fQC8N5yPANXtm5heRssxpcYAYGmQb6yoh G1qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=pRT+pAQqmtRk+UK3MAYGpOgGr4nyZwXdWQF+ZYarK4g=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=FVYLmkXHCRp+v4FL9zz3WHEpvitSEwFFt/DzNtmUq+FB3CG3aixza3+4KaT4dRKk3e k+8eR0Z90aHrJj3Cv6mRGmxwU++QzOCKgLw9Fa7csYJrm4wa+A67vSQrB1YFfSz39AP1 sEFu25MTvo8pY40n3frjPU0aoGpYG81LTyWXjYOicN+PBAX3tpfoZmciG5Ju8oenWusQ Pfm8DDF5R39ineMEnFejBGwTfPfy9EcjMe7GLz9i+xSnyZoFx2z9AIitrnU3oBsZNEf2 +OcU8UZo3nW7wnu4npAmrwvxAVtTcyjA+RXqActieDFUohiPy8nQo6rIcGAAH/ygBhty 988A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RM0z84tJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id di4-20020a056a020c0400b005b503f56f03si3300768pgb.827.2023.11.11.22.17.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:17:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RM0z84tJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id B2380806B576; Sat, 11 Nov 2023 22:16:18 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230117AbjKLGPo (ORCPT + 29 others); Sun, 12 Nov 2023 01:15:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45188 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230120AbjKLGPm (ORCPT ); Sun, 12 Nov 2023 01:15:42 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28DE02D63 for ; Sat, 11 Nov 2023 22:15:39 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8497BC433CC; Sun, 12 Nov 2023 06:15:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769738; bh=zy+LIqvorCsCX2M/f8auQf0yEixqHw8DL0243s77+7Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RM0z84tJA0mRaJMee/k+ux2axfXtnnmJ3Vb+KxOgBWXWNeRBvHdig4yh5SxFL/lQ0 0RrdKxAfQFL7jVYOmeEuWUKEWuDoO7tNWc53/eZ5c5AJC3PgcAcPf7+D1rw1+p9Z7s JYx7Kmod9QzBxqdXH5lkw9zW+2FQx1auZTTrL7nLONLkq+gsHo1gqcDVSk4noc1+IV RRUETV07GcboogqBaZbB47abzXtGphvh1F6qvVBifBtCcgerIOVzkbLbmpGnJyB5dM UZoQUmchMmgaX3UEokh6oG7q0vDslWUjM+ykEQrxEK/4i/3MFYIJp5AVvEyR3Mm4Sq Q8Xwhyfhctnng== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 02/38] riscv: u64ilp32: Remove compat_vdso/ Date: Sun, 12 Nov 2023 01:14:38 -0500 Message-Id: <20231112061514.2306187-3-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:16:18 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337892685805359 X-GMAIL-MSGID: 1782337892685805359 From: Guo Ren After unifying vdso32 & vdso64 into vdso/, we ever needn't compat_vdso directory. This commit removes the whole compat_vdso/. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/kernel/compat_vdso/.gitignore | 2 -- arch/riscv/kernel/compat_vdso/compat_vdso.S | 8 -------- arch/riscv/kernel/compat_vdso/compat_vdso.lds.S | 3 --- arch/riscv/kernel/compat_vdso/flush_icache.S | 3 --- arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh | 5 ----- arch/riscv/kernel/compat_vdso/getcpu.S | 3 --- arch/riscv/kernel/compat_vdso/note.S | 3 --- arch/riscv/kernel/compat_vdso/rt_sigreturn.S | 3 --- 8 files changed, 30 deletions(-) delete mode 100644 arch/riscv/kernel/compat_vdso/.gitignore delete mode 100644 arch/riscv/kernel/compat_vdso/compat_vdso.S delete mode 100644 arch/riscv/kernel/compat_vdso/compat_vdso.lds.S delete mode 100644 arch/riscv/kernel/compat_vdso/flush_icache.S delete mode 100755 arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh delete mode 100644 arch/riscv/kernel/compat_vdso/getcpu.S delete mode 100644 arch/riscv/kernel/compat_vdso/note.S delete mode 100644 arch/riscv/kernel/compat_vdso/rt_sigreturn.S diff --git a/arch/riscv/kernel/compat_vdso/.gitignore b/arch/riscv/kernel/compat_vdso/.gitignore deleted file mode 100644 index 19d83d846c1e..000000000000 --- a/arch/riscv/kernel/compat_vdso/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -compat_vdso.lds diff --git a/arch/riscv/kernel/compat_vdso/compat_vdso.S b/arch/riscv/kernel/compat_vdso/compat_vdso.S deleted file mode 100644 index ffd66237e091..000000000000 --- a/arch/riscv/kernel/compat_vdso/compat_vdso.S +++ /dev/null @@ -1,8 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#define vdso_start compat_vdso_start -#define vdso_end compat_vdso_end - -#define __VDSO_PATH "arch/riscv/kernel/compat_vdso/compat_vdso.so" - -#include "../vdso/vdso.S" diff --git a/arch/riscv/kernel/compat_vdso/compat_vdso.lds.S b/arch/riscv/kernel/compat_vdso/compat_vdso.lds.S deleted file mode 100644 index c7c9355d311e..000000000000 --- a/arch/riscv/kernel/compat_vdso/compat_vdso.lds.S +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include "../vdso/vdso.lds.S" diff --git a/arch/riscv/kernel/compat_vdso/flush_icache.S b/arch/riscv/kernel/compat_vdso/flush_icache.S deleted file mode 100644 index 523dd8b96045..000000000000 --- a/arch/riscv/kernel/compat_vdso/flush_icache.S +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include "../vdso/flush_icache.S" diff --git a/arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh b/arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh deleted file mode 100755 index 8ac070c783b3..000000000000 --- a/arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 - -LC_ALL=C -sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define compat\2_offset\t0x\1/p' diff --git a/arch/riscv/kernel/compat_vdso/getcpu.S b/arch/riscv/kernel/compat_vdso/getcpu.S deleted file mode 100644 index 10f463efe271..000000000000 --- a/arch/riscv/kernel/compat_vdso/getcpu.S +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include "../vdso/getcpu.S" diff --git a/arch/riscv/kernel/compat_vdso/note.S b/arch/riscv/kernel/compat_vdso/note.S deleted file mode 100644 index b10312907542..000000000000 --- a/arch/riscv/kernel/compat_vdso/note.S +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include "../vdso/note.S" diff --git a/arch/riscv/kernel/compat_vdso/rt_sigreturn.S b/arch/riscv/kernel/compat_vdso/rt_sigreturn.S deleted file mode 100644 index 884aada4facc..000000000000 --- a/arch/riscv/kernel/compat_vdso/rt_sigreturn.S +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include "../vdso/rt_sigreturn.S" From patchwork Sun Nov 12 06:14:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164191 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561522vqg; Sat, 11 Nov 2023 22:16:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IFYzhUDXMFDgLY/hFkRNbpQQqGdCUsyG4vYWY0IkhmljBMhXuxCRecgTIu1vH6YcWOfJOpo X-Received: by 2002:a17:902:d2d1:b0:1cc:e76e:79ab with SMTP id n17-20020a170902d2d100b001cce76e79abmr2565182plc.31.1699769811055; Sat, 11 Nov 2023 22:16:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769811; cv=none; d=google.com; s=arc-20160816; b=ofuFXcq3Db56m/xN4jq3C4RLq01WFVYN7l4CDM/FaAYNr46zbPdXQfzkr41TnaY43Z AAapRaqHeCas4LaJ0++TQJPoxmvcNheZoNW5lPWTqWCCvy2b2/n81SFQVBwS3bzWFjQl tbsxpqK79LElvV612qJq9xPme0zSAbsxEEPYBSwSRvjvb0JxQE+69NkdAL4ifV8VnbLW tn6Tt/ydNM324E7yl7i4r8r98YVTv/rMWR4L1COZ3zAW60SAEQz6F6YxixTvrL4q7cnA +E38HreOIkwVx+6oJO0449N80w+M8/mnUFiit1z9n2SJz8AgTRUn+EEYzGamQFskKdLU Zcgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=pr3QPzbr1+sqXStk+UrquBaHuZZhvQRXL6TUAbLXMfc=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=HZ3XLQb0AuioINlJsWwX3MCQcSy0r3WvLqs24oCOc9OP/vBpXxmMJmQf/jj8E1XjBM is4vnXD3PtReCflvWw7WXRha84n6kr5fLmg8cmgG0t0SuqDafpKqg6joUqlF7lw+8k0t Z9mlOA7ObHNh+/BinYBAtiecWoKbA32dZ91l4LXzjS7hCiw2FeKiLlqoXpEmmqy1CauJ LAjElYYX9IH9MJqt8CIMvjKsZMDpIQYfpFEsEkP6UIJl+6/NguDBUS6BZCyWVat8i3Sy AJupalSHv82XpsPiO9Ex1gY+mmB+5jCpOVZppaLoBOFrdNKEgXJDNFTMRyqWj5L80Vg6 WcdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=F6KmQ0AR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id t18-20020a1709028c9200b001c9c8e0cbafsi2993095plo.202.2023.11.11.22.16.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:16:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=F6KmQ0AR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 52C5A804C640; Sat, 11 Nov 2023 22:16:43 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230149AbjKLGP5 (ORCPT + 29 others); Sun, 12 Nov 2023 01:15:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49444 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230151AbjKLGPx (ORCPT ); Sun, 12 Nov 2023 01:15:53 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE3A22D46 for ; Sat, 11 Nov 2023 22:15:45 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3EB45C433BA; Sun, 12 Nov 2023 06:15:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769745; bh=UaIimKGmjnUGloTxOFJqXp6BBypHnPKUh6PUNXXTMXs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F6KmQ0ARB15XFhwVM92q1sSvcWPHdHSLnGPo9uASPmW8Sria6bLRbQHM2cgYauygP 9J0kEy5PuGbYrhMbUxb6NtRYWgl37HZJsMW9qoZ2a9PDv+I+0wEaoazEKl1x37MVUU 2T/NJzoNRRy+scLjqOwig2UUCY7o4YVSVgNvXRj5Wwv75ehWyu2dev30VlnhuFLPwn 3M45DE7Bd9fwJq5nBDnQdILSd0zdlWxEBXZCiL3/+JVMOZwJNw3yo7UoOb6rs2vz4t r2UznWm5UwhRgEyF29EVBtD1qiSV2wezQGOeE9ubeS+HvxJo6nvajz3pvtfMJPzDf1 e2t7yGi3ZVRVg== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 03/38] riscv: u64ilp32: Add time-related vDSO common flow for vdso32 Date: Sun, 12 Nov 2023 01:14:39 -0500 Message-Id: <20231112061514.2306187-4-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:16:43 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337829304140468 X-GMAIL-MSGID: 1782337829304140468 From: Guo Ren This patch adds time-related vDSO common flow for vdso32, and it's an addition to commit: ad5d1122b82f ("riscv: use vDSO common flow to reduce the latency of the time-related functions"). Then we could reduce the latency of collecting clock information for u32ilp32 (native 32-bit userspace ecosystem), just like what we've done for u64lp64. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 4 +- arch/riscv/include/asm/vdso/gettimeofday.h | 90 ++++++++++++++++++++++ arch/riscv/include/uapi/asm/unistd.h | 1 + arch/riscv/kernel/vdso/Makefile | 42 +++++----- arch/riscv/kernel/vdso/vdso.lds.S | 2 - arch/riscv/kernel/vdso/vgettimeofday.c | 39 ++++++++-- 6 files changed, 145 insertions(+), 33 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 4b91e2ba7815..24b1b6abf0a7 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -82,7 +82,7 @@ config RISCV select GENERIC_PTDUMP if MMU select GENERIC_SCHED_CLOCK select GENERIC_SMP_IDLE_THREAD - select GENERIC_TIME_VSYSCALL if MMU && 64BIT + select GENERIC_TIME_VSYSCALL if MMU select GENERIC_VDSO_TIME_NS if HAVE_GENERIC_VDSO select HARDIRQS_SW_RESEND select HAS_IOPORT if MMU @@ -118,7 +118,7 @@ config RISCV select HAVE_FUNCTION_ARG_ACCESS_API select HAVE_FUNCTION_ERROR_INJECTION select HAVE_GCC_PLUGINS - select HAVE_GENERIC_VDSO if MMU && 64BIT + select HAVE_GENERIC_VDSO if MMU select HAVE_IRQ_TIME_ACCOUNTING select HAVE_KPROBES if !XIP_KERNEL select HAVE_KPROBES_ON_FTRACE if !XIP_KERNEL diff --git a/arch/riscv/include/asm/vdso/gettimeofday.h b/arch/riscv/include/asm/vdso/gettimeofday.h index a7ae8576797b..4c362bb9a16b 100644 --- a/arch/riscv/include/asm/vdso/gettimeofday.h +++ b/arch/riscv/include/asm/vdso/gettimeofday.h @@ -36,6 +36,7 @@ int gettimeofday_fallback(struct __kernel_old_timeval *_tv, } #endif +#if __SIZEOF_POINTER__ == 8 #ifdef __NR_clock_gettime static __always_inline long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) @@ -71,6 +72,84 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) return ret; } #endif + +#elif __SIZEOF_POINTER__ == 4 + +#define BUILD_VDSO32 1 + +#ifdef __NR_clock_gettime64 +static __always_inline +long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) +{ + register clockid_t clkid asm("a0") = _clkid; + register struct __kernel_timespec *ts asm("a1") = _ts; + register long ret asm("a0"); + register long nr asm("a7") = __NR_clock_gettime64; + + asm volatile ("ecall\n" + : "=r" (ret) + : "r"(clkid), "r"(ts), "r"(nr) + : "memory"); + + return ret; +} +#endif + +#ifdef __NR_clock_getres_time64 +static __always_inline +int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) +{ + register clockid_t clkid asm("a0") = _clkid; + register struct __kernel_timespec *ts asm("a1") = _ts; + register long ret asm("a0"); + register long nr asm("a7") = __NR_clock_getres_time64; + + asm volatile ("ecall\n" + : "=r" (ret) + : "r"(clkid), "r"(ts), "r"(nr) + : "memory"); + + return ret; +} +#endif + +#ifdef __NR_clock_gettime +static __always_inline +int clock_gettime32_fallback(clockid_t _clkid, struct old_timespec32 *_ts) +{ + register clockid_t clkid asm("a0") = _clkid; + register struct old_timespec32 *ts asm("a1") = _ts; + register long ret asm("a0"); + register long nr asm("a7") = __NR_clock_gettime; + + asm volatile ("ecall\n" + : "=r" (ret) + : "r"(clkid), "r"(ts), "r"(nr) + : "memory"); + + return ret; +} +#endif + +#ifdef __NR_clock_getres +static __always_inline +int clock_getres32_fallback(clockid_t _clkid, struct old_timespec32 *_ts) +{ + register clockid_t clkid asm("a0") = _clkid; + register struct old_timespec32 *ts asm("a1") = _ts; + register long ret asm("a0"); + register long nr asm("a7") = __NR_clock_getres; + + asm volatile ("ecall\n" + : "=r" (ret) + : "r"(clkid), "r"(ts), "r"(nr) + : "memory"); + + return ret; +} +#endif + +#endif /* __SIZEOF_POINTER__ */ #endif /* CONFIG_GENERIC_TIME_VSYSCALL */ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode, @@ -81,7 +160,18 @@ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode, * M-mode to obtain the value of CSR_TIME. Hence, unlike other * architecture, no fence instructions surround the csr_read() */ +#if __riscv_xlen == 64 return csr_read(CSR_TIME); +#else + u32 hi, lo; + + do { + hi = csr_read(CSR_TIMEH); + lo = csr_read(CSR_TIME); + } while (hi != csr_read(CSR_TIMEH)); + + return ((u64)hi << 32) | lo; +#endif } static __always_inline const struct vdso_data *__arch_get_vdso_data(void) diff --git a/arch/riscv/include/uapi/asm/unistd.h b/arch/riscv/include/uapi/asm/unistd.h index 950ab3fd4409..0ee86ef907e4 100644 --- a/arch/riscv/include/uapi/asm/unistd.h +++ b/arch/riscv/include/uapi/asm/unistd.h @@ -22,6 +22,7 @@ #define __ARCH_WANT_SYS_CLONE3 #define __ARCH_WANT_MEMFD_SECRET +#define __ARCH_WANT_TIME32_SYSCALLS #include diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile index a9720e816e1f..df8f68bb0937 100644 --- a/arch/riscv/kernel/vdso/Makefile +++ b/arch/riscv/kernel/vdso/Makefile @@ -16,9 +16,6 @@ ccflags-y := -fno-stack-protector ccflags-y += -DDISABLE_BRANCH_PROFILING CPPFLAGS_vdso.lds += -P -C -U$(ARCH) -ifneq ($(filter vgettimeofday, $(vdso-cc-syms)),) - CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY -endif # strip rule for the .so file $(obj)/%.so: OBJCOPYFLAGS := -S @@ -29,20 +26,20 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE quiet_cmd_vdso_install = INSTALL $@ cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/$@ -# Symbols present in the vdso -ifdef CONFIG_VDSO64 -vdso64-as-syms = rt_sigreturn -vdso64-as-syms += getcpu -vdso64-as-syms += flush_icache -vdso64-as-syms += sys_hwprobe +vdso-as-syms = rt_sigreturn +vdso-as-syms += getcpu +vdso-as-syms += flush_icache +vdso-as-syms += sys_hwprobe -vdso64-cc-syms = vgettimeofday -vdso64-cc-syms += hwprobe +vdso-cc-syms = vgettimeofday +vdso-cc-syms += hwprobe -obj-as-vdso64 = $(patsubst %, %-64.o, $(vdso64-as-syms)) note-64.o +# Symbols present in the vdso +ifdef CONFIG_VDSO64 +obj-as-vdso64 = $(patsubst %, %-64.o, $(vdso-as-syms)) note-64.o obj-as-vdso64 := $(addprefix $(obj)/, $(obj-as-vdso64)) -obj-cc-vdso64 = $(patsubst %, %-64.o, $(vdso64-cc-syms)) +obj-cc-vdso64 = $(patsubst %, %-64.o, $(vdso-cc-syms)) obj-cc-vdso64 := $(addprefix $(obj)/, $(obj-cc-vdso64)) targets += $(obj-as-vdso64) $(obj-cc-vdso64) vdso64.so vdso64.so.dbg vdso64.lds @@ -55,7 +52,7 @@ LDFLAGS_vdso64.so.dbg = -shared -S -soname=linux-vdso64.so.1 \ # Make sure only to export the intended __vdso_xxx symbol offsets. quiet_cmd_vdso64ld = VDSO64LD $@ cmd_vdso64ld = $(VDSO_LD) $(ld_flags) $(VDSO64_LD_FLAGS) -T $(filter-out FORCE,$^) -o $@.tmp && \ - $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso64-as-syms) $(vdso64-cc-syms)) $@.tmp $@ && \ + $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso-as-syms) $(vdso-cc-syms)) $@.tmp $@ && \ rm $@.tmp # actual build commands @@ -94,20 +91,13 @@ vdso64_install: vdso64.so endif ifdef CONFIG_VDSO32 -vdso32-as-syms = rt_sigreturn -vdso32-as-syms += getcpu -vdso32-as-syms += flush_icache -vdso32-as-syms += sys_hwprobe - -vdso32-cc-syms += hwprobe - VDSO32_CC_FLAGS := -march=rv32g -mabi=ilp32 VDSO32_LD_FLAGS := -melf32lriscv -obj-as-vdso32 = $(patsubst %, %-32.o, $(vdso32-as-syms)) note-32.o +obj-as-vdso32 = $(patsubst %, %-32.o, $(vdso-as-syms)) note-32.o obj-as-vdso32 := $(addprefix $(obj)/, $(obj-as-vdso32)) -obj-cc-vdso32 = $(patsubst %, %-32.o, $(vdso32-cc-syms)) +obj-cc-vdso32 = $(patsubst %, %-32.o, $(vdso-cc-syms)) obj-cc-vdso32 := $(addprefix $(obj)/, $(obj-cc-vdso32)) targets += $(obj-as-vdso32) $(obj-cc-vdso32) vdso32.so vdso32.so.dbg vdso32.lds @@ -121,7 +111,7 @@ LDFLAGS_vdso32.so.dbg = -shared -S -soname=linux-vdso32.so.1 \ # Make sure only to export the intended __vdso_xxx symbol offsets. quiet_cmd_vdso32ld = VDSO32LD $@ cmd_vdso32ld = $(VDSO_LD) $(ld_flags) $(VDSO32_LD_FLAGS) -T $(filter-out FORCE,$^) -o $@.tmp && \ - $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso32-as-syms) $(vdso32-cc-syms)) $@.tmp $@ && \ + $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso-as-syms) $(vdso-cc-syms)) $@.tmp $@ && \ rm $@.tmp # actual build commands @@ -140,6 +130,10 @@ $(obj-cc-vdso32): %-32.o: %.c FORCE CFLAGS_hwprobe-32.o += -fPIC +CFLAGS_vgettimeofday-32.o += -fPIC -include $(c-gettimeofday-y) +# Disable -pg to prevent insert call site +CFLAGS_REMOVE_vgettimeofday-32.o = $(CC_FLAGS_FTRACE) + # Generate VDSO offsets using helper script gen-vdso32sym := $(srctree)/$(src)/gen_vdso32_offsets.sh quiet_cmd_vdso32sym = VDSO32SYM $@ diff --git a/arch/riscv/kernel/vdso/vdso.lds.S b/arch/riscv/kernel/vdso/vdso.lds.S index 82ce64900f3d..d28202283b72 100644 --- a/arch/riscv/kernel/vdso/vdso.lds.S +++ b/arch/riscv/kernel/vdso/vdso.lds.S @@ -75,11 +75,9 @@ VERSION LINUX_4.15 { global: __vdso_rt_sigreturn; -#ifdef HAS_VGETTIMEOFDAY __vdso_gettimeofday; __vdso_clock_gettime; __vdso_clock_getres; -#endif __vdso_getcpu; __vdso_flush_icache; #ifndef COMPAT_VDSO diff --git a/arch/riscv/kernel/vdso/vgettimeofday.c b/arch/riscv/kernel/vdso/vgettimeofday.c index cc0d80699c31..056b465eb161 100644 --- a/arch/riscv/kernel/vdso/vgettimeofday.c +++ b/arch/riscv/kernel/vdso/vgettimeofday.c @@ -9,6 +9,14 @@ #include #include +extern +int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz); +int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz) +{ + return __cvdso_gettimeofday(tv, tz); +} + +#if __SIZEOF_POINTER__ == 8 extern int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts); int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts) @@ -17,15 +25,36 @@ int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts) } extern -int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz); -int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz) +int __vdso_clock_getres(clockid_t clock_id, struct __kernel_timespec *res); +int __vdso_clock_getres(clockid_t clock_id, struct __kernel_timespec *res) { - return __cvdso_gettimeofday(tv, tz); + return __cvdso_clock_getres(clock_id, res); +} +#elif __SIZEOF_POINTER__ == 4 +extern +int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts); +int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts) +{ + return __cvdso_clock_gettime32(clock, ts); +} + +int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts); +int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts) +{ + return __cvdso_clock_gettime(clock, ts); } extern -int __vdso_clock_getres(clockid_t clock_id, struct __kernel_timespec *res); -int __vdso_clock_getres(clockid_t clock_id, struct __kernel_timespec *res) +int __vdso_clock_getres(clockid_t clock_id, struct old_timespec32 *res); +int __vdso_clock_getres(clockid_t clock_id, struct old_timespec32 *res) +{ + return __cvdso_clock_getres_time32(clock_id, res); +} + +extern +int __vdso_clock_getres64(clockid_t clock_id, struct __kernel_timespec *res); +int __vdso_clock_getres64(clockid_t clock_id, struct __kernel_timespec *res) { return __cvdso_clock_getres(clock_id, res); } +#endif From patchwork Sun Nov 12 06:14:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164198 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561777vqg; Sat, 11 Nov 2023 22:17:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IFdvP9fDKiJXwhxTOivHqnO60guloQlFXZ+F4FwMEEUdFDBpCWn3FlG9xLF0Ov8yimb4ZQh X-Received: by 2002:a17:903:18f:b0:1c9:b2c1:139c with SMTP id z15-20020a170903018f00b001c9b2c1139cmr4735331plg.62.1699769872678; Sat, 11 Nov 2023 22:17:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769872; cv=none; d=google.com; s=arc-20160816; b=scu9RvGsAA+D7U9RTuhVMooo4zgxMkzbFX3aO29MshB5/tqb7WPoD6zsH9Rk/nUT1L PomGuMrBVI4jkXh7Si/bLtg9mSUE5/vmcgSTYissw1vCmUDLgQRtD0U50WniAQvShxOS QK7xu4vYA2rrj9voo9eAjgTQmWzwlqCgeZ+bA0gJ7QCCgS4SKbclDeFuW3eqPxBq4Jzf aWj89MLM1hd5DtaPu6S/VfhD+P4KFcm9S06NOEbhQdykdTRkkUKwtRE8KQNEKwGGp7Ow xP5laHUrBelGLNKl4yMrXz/CxrODO2QP/hXiAc0NSxkl5BvOapt3Tu9ZrgWIr3f7RdRG kg3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+Ad0ra2fjpu+P1yKKQVuwsj3QjusoXaShHCl9zyFPZg=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=xiUiKHdJnkD5ooSbu9h4Qzt3UeMTajf4E1d0/lJb4hFJ5qqe9N1jiaLPGudwO90MW8 /G1ybZZ2oi3RcwjRI8HinUrRLTmLE0OhpNuIAL+MbBm3748e8affWR+BH68WuaQlK3Pp UcIrOUNsTLps/ilBuBdFnyG0Z/Y1XQuVeJKZjKlQLEWlyDXs6nCUBl8d9KYUmvAZVceP ma/n4vaibG+6NGMHqDCEury0FIKswOSy9rrIg7mgcgyyOEHfaLtxEll1Ifb8V8devM9T YV1iW7BEGFLUj8Pdjq+GJXPCLZzdeU8F+x8WpuieGl1ci1i8indQdLe9OBhtWhyQkfXj nkxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=lT4YE0Oj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id f2-20020a170902ce8200b001ca24970584si3282226plg.572.2023.11.11.22.17.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:17:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=lT4YE0Oj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id BD677809B9DA; Sat, 11 Nov 2023 22:16:27 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230171AbjKLGQF (ORCPT + 29 others); Sun, 12 Nov 2023 01:16:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230140AbjKLGQA (ORCPT ); Sun, 12 Nov 2023 01:16:00 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C01CF44B3 for ; Sat, 11 Nov 2023 22:15:51 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AAC40C433CC; Sun, 12 Nov 2023 06:15:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769751; bh=rxwIgp8hQp0Nt2lN35u6PopHm3HPAlKUrKzCrN0lOv8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lT4YE0OjIKAEa87Flp9Iq31j+R93R3Y6ygJ9cjCzEtjj4rSQDfgZ+lCifue2vC7A0 DHpnccClCtCx2ad112n/ZAI3XB3aqPA7SW95BNGTWD9l2BvbvOREnjVUmWj0lDL54E 9vFY5BaSkBCkpJr/5gqMOvoyTRQum91KuUnkoIYQkuRf5+Y7BFXR3RhGei7fLGXRqi fA9VE043VDoMeAFCs6tSNgK4rVPZrXOHWRfyFbZrV7fMRCJ7/elUvwLhOH2/vjHewT efgUxa75Mi+zXxRLNT4VCW/0HFZxrFgMWjBHRKTfP5nojYXlW5cW1lAIqE1T58BI1d gn6AEW/df+s8Q== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 04/38] riscv: u64ilp32: Introduce ILP32 vdso for UXL=64 Date: Sun, 12 Nov 2023 01:14:40 -0500 Message-Id: <20231112061514.2306187-5-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:16:27 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337894174668206 X-GMAIL-MSGID: 1782337894174668206 From: Guo Ren This is the first patch to introduce ILP32 abi for RV64. Here is the diagram: +--------------------------------+------------+ | +-------------------+--------+ | +--------+ | | | (compat)|(compat)| | | | | | |u64lp64 u64ilp32|u32ilp32| | |u32ilp32| | ABI | | ^^^^^^^^| | | | | | | +-------------------+--------+ | +--------+ | | +-------------------+--------+ | +--------+ | | | UXL=64 | UXL=32 | | | UXL=32 | | ISA | +-------------------+--------+ | +--------+ | +--------------------------------+------------+------- | +----------------------------+ | +--------+ | | | 64BIT | | | 32BIT| | Kernel | | s64lp64 | | |s32ilp32| | ABI | +----------------------------+ | +--------+ | | +----------------------------+ | +--------+ | | | SXL=64 | | | SXL=32 | | ISA | +----------------------------+ | +--------+ | +--------------------------------+------------+ The 64ilp32 userspace needs another virtual dynamic shared object independent from vdso32(32ilp32) and vdso64(64ilp32). Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 5 ++ arch/riscv/Makefile | 4 ++ arch/riscv/kernel/Makefile | 1 + arch/riscv/kernel/vdso/Makefile | 59 +++++++++++++++++++ .../kernel/vdso/gen_vdso64ilp32_offsets.sh | 5 ++ arch/riscv/kernel/vdso64ilp32.S | 8 +++ 6 files changed, 82 insertions(+) create mode 100755 arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh create mode 100644 arch/riscv/kernel/vdso64ilp32.S diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 24b1b6abf0a7..5d770b8e2756 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -288,6 +288,10 @@ config VDSO64 bool depends on MMU +config VDSO64ILP32 + bool + depends on MMU + source "arch/riscv/Kconfig.socs" source "arch/riscv/Kconfig.errata" @@ -707,6 +711,7 @@ config COMPAT bool "Kernel support for 32-bit U-mode" default 64BIT select VDSO32 + select VDSO64ILP32 if $(cc-option,-march=rv64g -mabi=ilp32) depends on 64BIT && MMU help This option enables support for a 32-bit U-mode running under a 64-bit diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index 3b7d5ebf3c78..8605050bddd0 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -140,6 +140,8 @@ vdso_install: $(build)=arch/riscv/kernel/vdso vdso32_install $(if $(CONFIG_VDSO64),$(Q)$(MAKE) \ $(build)=arch/riscv/kernel/vdso vdso64_install + $(if $(CONFIG_VDSO64ILP32),$(Q)$(MAKE) \ + $(build)=arch/riscv/kernel/vdso vdso64ilp32_install ifeq ($(KBUILD_EXTMOD),) ifeq ($(CONFIG_MMU),y) @@ -149,6 +151,8 @@ vdso_prepare: prepare0 $(build)=arch/riscv/kernel/vdso include/generated/vdso32-offsets.h) $(if $(CONFIG_VDSO64),$(Q)$(MAKE) \ $(build)=arch/riscv/kernel/vdso include/generated/vdso64-offsets.h) + $(if $(CONFIG_VDSO64ILP32),$(Q)$(MAKE) \ + $(build)=arch/riscv/kernel/vdso include/generated/vdso64ilp32-offsets.h) endif endif diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile index 23032ac7f51d..a4583a29b28b 100644 --- a/arch/riscv/kernel/Makefile +++ b/arch/riscv/kernel/Makefile @@ -59,6 +59,7 @@ obj-y += probes/ obj-$(CONFIG_MMU) += vdso.o vdso/ obj-$(CONFIG_VDSO64) += vdso64.o obj-$(CONFIG_VDSO32) += vdso32.o +obj-$(CONFIG_VDSO64ILP32) += vdso64ilp32.o obj-$(CONFIG_RISCV_M_MODE) += traps_misaligned.o obj-$(CONFIG_FPU) += fpu.o diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile index df8f68bb0937..629989b1ad05 100644 --- a/arch/riscv/kernel/vdso/Makefile +++ b/arch/riscv/kernel/vdso/Makefile @@ -148,3 +148,62 @@ vdso32.so: $(obj)/vdso32.so.dbg vdso32_install: vdso32.so endif + +ifdef CONFIG_VDSO64ILP32 +VDSO64ILP32_CC_FLAGS := -march=rv64g -mabi=ilp32 +VDSO64ILP32_LD_FLAGS := -melf32lriscv + +obj-as-vdso64ilp32 = $(patsubst %, %-64ilp32.o, $(vdso-as-syms)) note-64ilp32.o +obj-as-vdso64ilp32 := $(addprefix $(obj)/, $(obj-as-vdso64ilp32)) + +obj-cc-vdso64ilp32 = $(patsubst %, %-64ilp32.o, $(vdso-cc-syms)) +obj-cc-vdso64ilp32 := $(addprefix $(obj)/, $(obj-cc-vdso64ilp32)) + +targets += $(obj-as-vdso64ilp32) $(obj-cc-vdso64ilp32) vdso64ilp32.so vdso64ilp32.so.dbg vdso64ilp32.lds + +$(obj)/vdso64ilp32.so.dbg: $(obj)/vdso.lds $(obj-as-vdso64ilp32) $(obj-cc-vdso64ilp32) FORCE + $(call if_changed,vdso64ilp32ld) +LDFLAGS_vdso64ilp32.so.dbg = -shared -S -soname=linux-vdso64ilp32.so.1 \ + --build-id=sha1 --hash-style=both --eh-frame-hdr + +# The DSO images are built using a special linker script +# Make sure only to export the intended __vdso_xxx symbol offsets. +quiet_cmd_vdso64ilp32ld = VDSO64ILP32LD $@ + cmd_vdso64ilp32ld = $(VDSO_LD) $(ld_flags) $(VDSO64ILP32_LD_FLAGS) -T $(filter-out FORCE,$^) -o $@.tmp && \ + $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso-as-syms) $(vdso-cc-syms)) $@.tmp $@ && \ + rm $@.tmp + +# actual build commands +quiet_cmd_vdso64ilp32as = VDSO64ILP32AS $@ + cmd_vdso64ilp32as = $(VDSO_CC) $(a_flags) $(VDSO64ILP32_CC_FLAGS) -c -o $@ $< +quiet_cmd_vdso64ilp32cc = VDSO64ILP32CC $@ + cmd_vdso64ilp32cc = $(VDSO_CC) $(c_flags) $(VDSO64ILP32_CC_FLAGS) -c -o $@ $< + +# Force dependency +$(obj)/vdso64ilp32.o: $(obj)/vdso64ilp32.so + +$(obj-as-vdso64ilp32): %-64ilp32.o: %.S FORCE + $(call if_changed_dep,vdso64ilp32as) +$(obj-cc-vdso64ilp32): %-64ilp32.o: %.c FORCE + $(call if_changed_dep,vdso64ilp32cc) + +CFLAGS_hwprobe-64ilp32.o += -fPIC + +CFLAGS_vgettimeofday-64ilp32.o += -fPIC -include $(c-gettimeofday-y) +# Disable -pg to prevent insert call site +CFLAGS_REMOVE_vgettimeofday-64ilp32.o = $(CC_FLAGS_FTRACE) + +# Generate VDSO offsets using helper script +gen-vdso64ilp32sym := $(srctree)/$(src)/gen_vdso64ilp32_offsets.sh +quiet_cmd_vdso64ilp32sym = VDSO64ILP32SYM $@ + cmd_vdso64ilp32sym = $(NM) $< | $(gen-vdso64ilp32sym) | LC_ALL=C sort > $@ + +include/generated/vdso64ilp32-offsets.h: $(obj)/vdso64ilp32.so.dbg $(obj)/vdso64ilp32.so FORCE + $(call if_changed,vdso64ilp32sym) + +vdso64ilp32.so: $(obj)/vdso64ilp32.so.dbg + @mkdir -p $(MODLIB)/vdso + $(call cmd,vdso_install) + +vdso64ilp32_install: vdso64ilp32.so +endif diff --git a/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh b/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh new file mode 100755 index 000000000000..6af2db7a26ad --- /dev/null +++ b/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +LC_ALL=C +sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define rv64ilp32\2_offset\t0x\1/p' diff --git a/arch/riscv/kernel/vdso64ilp32.S b/arch/riscv/kernel/vdso64ilp32.S new file mode 100644 index 000000000000..5b658da1eeef --- /dev/null +++ b/arch/riscv/kernel/vdso64ilp32.S @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#define vdso64_start vdso64ilp32_start +#define vdso64_end vdso64ilp32_end + +#define __VDSO_PATH "arch/riscv/kernel/vdso/vdso64ilp32.so" + +#include "vdso64.S" From patchwork Sun Nov 12 06:14:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164199 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561781vqg; Sat, 11 Nov 2023 22:17:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IFD2gRw6rqaE/ToPBbiPrCnDKAXgdH9DOTnANCVoaLBAtubIffpuggpISuA52hgA7Rz4av7 X-Received: by 2002:a05:6a00:1bca:b0:68f:f38d:f76c with SMTP id o10-20020a056a001bca00b0068ff38df76cmr2287535pfw.6.1699769874087; Sat, 11 Nov 2023 22:17:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769874; cv=none; d=google.com; s=arc-20160816; b=bQGhROFmOnDBefI76YtPIw41+WBqLjud+Q83wLHbyN6wtLR25siVybrOtnuXhJkRwh MisbNyF46fCEaLbV73RMwZHaL6DbGbDluFoxzlHCb2JDKxlVL/Ff1MKWHPBhvQi+vg3W aDJqAooL5NCCRuJ35KTmVLtnJFW1Qy3tsOl2cPblYcrY8MJWTL/IT9CSHy1oIWvPgx52 HMqjnG14mTyroJvmUONgUZpjpnNeIppuYNB7aLbiJmxFQ+7KKh5NDyLWp3RQHUqxfa6n DxpAjG88BIUzjosM/Su5xv36Pw/oGDfbbMCJye4FpzIaRGWYaCgOHQhJugO5xX5q0Qqi PZ5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=muNoAcyO4eSOM3z8pGK4gaAGZKjlN9PGxBEFxlaoOTM=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=O48mG3MY6yJcl6srzS+FeDjX0mntFCSC8hgOIC/b6qnnUPobetaLoNEjZBCsUqTeKv JbajgHZz5BL1iy3ElOGLLzpc5Yoyb2IMyASlJcdGuQABQcYATgXBmxVSQ3glIacYYdES q29zyJ5j2eNfGEmOub//kSKzxD0I1Mhervl0e/FCWBU6BqOTXVnG5vuZB+Oi7FCG23p3 D0yNSJMBZzaoPwsFWB1l5PCouDivHrKGv0EXhk1T/oW14T6p4Lrsrk4+1GIlmyGZ5fXb +Ye7nlHQTHYPigMcCv5SZOSh6UHvh0VuBCm/F6oskE/OrQDE2dt/ncMTFaQWFfNmLL/O DFpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=b53s08La; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id j8-20020a056a00130800b006be0857ab24si3198662pfu.19.2023.11.11.22.17.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:17:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=b53s08La; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 0313E80A5F8C; Sat, 11 Nov 2023 22:16:31 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230173AbjKLGQU (ORCPT + 29 others); Sun, 12 Nov 2023 01:16:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230180AbjKLGQN (ORCPT ); Sun, 12 Nov 2023 01:16:13 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 517503AA6 for ; Sat, 11 Nov 2023 22:15:58 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21AA0C433CB; Sun, 12 Nov 2023 06:15:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769757; bh=XpUd4fnRtkvkgeq3GEpwNa3eOjoCC/fgMtEHTFs7iQM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b53s08LaY2s8JDp3okKYnrU4Mv3y6oiqRbwSmKtfYC6PGgDsKHomDFswG6XilGAB9 i2ZHEjTGokwuqB5C6ZWyqjHti4EPgj5O23G8cMJ2hHA9jnkNadseJdXEwx9czWciTv NlLxoDPPFuqQm2+zh60dZo9SnKyaFQ57eGpZfgVpzhlY4F+SO4BtcaHjaBC4AKchJu SoAWitasUakDYe1AF1gOZvQOmqoY74p3qjPJl8+fx3ar5OrIJUVPl8lobVtkXDxukk KznCc8rChOmNBqMvEMsb0IOQBUQNk1P83yM/IhKkQg10eJ6VYey/U1g/69goMlooKC xE1HG33YlubVQ== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 05/38] riscv: u64ilp32: Adjust vDSO kernel flow for 64ilp32 abi Date: Sun, 12 Nov 2023 01:14:41 -0500 Message-Id: <20231112061514.2306187-6-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:16:31 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337895842195972 X-GMAIL-MSGID: 1782337895842195972 From: Guo Ren The 64ilp32 vDSO brings another new abi into riscv, and it needs to adjust the current vDSO flow to enable it. This patch separates the VDSO32 (32ILP32), VDSO64 (64LP64), and VDSO64ILP32 more clearly, and enable VDSO64ILP32 as need. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/vdso.h | 18 +++--- arch/riscv/kernel/alternative.c | 15 ++++- arch/riscv/kernel/signal.c | 23 ++++++-- arch/riscv/kernel/vdso.c | 98 +++++++++++++++++++++++++++------ 4 files changed, 121 insertions(+), 33 deletions(-) diff --git a/arch/riscv/include/asm/vdso.h b/arch/riscv/include/asm/vdso.h index 305ddc6de21c..77015edb1488 100644 --- a/arch/riscv/include/asm/vdso.h +++ b/arch/riscv/include/asm/vdso.h @@ -38,15 +38,15 @@ extern char vdso32_start[], vdso32_end[]; #endif /* CONFIG_VDSO32 */ -#ifdef CONFIG_64BIT -#define vdso_start vdso64_start -#define vdso_end vdso64_end -#define VDSO_SYMBOL VDSO64_SYMBOL -#else /* CONFIG_64BIT */ -#define vdso_start vdso32_start -#define vdso_end vdso32_end -#define VDSO_SYMBOL VDSO32_SYMBOL -#endif /* CONFIG_64BIT */ +#ifdef CONFIG_VDSO64ILP32 +#include + +#define VDSO64ILP32_SYMBOL(base, name) \ + (void __user *)((unsigned long)(base) + rv64ilp32__vdso_##name##_offset) + +extern char vdso64ilp32_start[], vdso64ilp32_end[]; + +#endif /* CONFIG_VDSO64ILP32 */ #endif /* !__ASSEMBLY__ */ diff --git a/arch/riscv/kernel/alternative.c b/arch/riscv/kernel/alternative.c index 6b75788c18e6..73a2d7533806 100644 --- a/arch/riscv/kernel/alternative.c +++ b/arch/riscv/kernel/alternative.c @@ -182,7 +182,7 @@ static void __init_or_module _apply_alternatives(struct alt_entry *begin, } #ifdef CONFIG_MMU -static void __init apply_vdso_alternatives(void) +static void __init apply_vdso_alternatives(void *vdso_start) { const Elf_Ehdr *hdr; const Elf_Shdr *shdr; @@ -203,7 +203,7 @@ static void __init apply_vdso_alternatives(void) RISCV_ALTERNATIVES_BOOT); } #else -static void __init apply_vdso_alternatives(void) { } +static void __init apply_vdso_alternatives(void *vdso_start) { } #endif void __init apply_boot_alternatives(void) @@ -216,7 +216,16 @@ void __init apply_boot_alternatives(void) (struct alt_entry *)__alt_end, RISCV_ALTERNATIVES_BOOT); - apply_vdso_alternatives(); +#ifdef CONFIG_VDSO64 + apply_vdso_alternatives(vdso64_start); +#endif +#ifdef CONFIG_VDSO32 + apply_vdso_alternatives(vdso32_start); +#endif +#ifdef CONFIG_VDSO64ILP32 + apply_vdso_alternatives(vdso64ilp32_start); +#endif + } /* diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c index 180d951d3624..95c4a8d8a3f5 100644 --- a/arch/riscv/kernel/signal.c +++ b/arch/riscv/kernel/signal.c @@ -345,10 +345,25 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, return -EFAULT; /* Set up to return from userspace. */ -#ifdef CONFIG_MMU - regs->ra = (unsigned long)VDSO_SYMBOL( - current->mm->context.vdso, rt_sigreturn); -#else +#ifdef CONFIG_VDSO64 + if (!test_thread_flag(TIF_32BIT)) + regs->ra = (unsigned long)VDSO64_SYMBOL( + current->mm->context.vdso, rt_sigreturn); +#endif /* CONFIG_VDSO64 */ + +#ifdef CONFIG_VDSO32 + if (test_thread_flag(TIF_32BIT) && !test_thread_flag(TIF_64ILP32)) + regs->ra = (unsigned long)VDSO32_SYMBOL( + current->mm->context.vdso, rt_sigreturn); +#endif /* CONFIG_VDSO32 */ + +#ifdef CONFIG_VDSO64ILP32 + if (test_thread_flag(TIF_32BIT) && test_thread_flag(TIF_64ILP32)) + regs->ra = (unsigned long)VDSO64ILP32_SYMBOL( + current->mm->context.vdso, rt_sigreturn); +#endif /* CONFIG_VDSO64ILP32 */ + +#ifndef CONFIG_MMU /* * For the nommu case we don't have a VDSO. Instead we push two * instructions to call the rt_sigreturn syscall onto the user stack. diff --git a/arch/riscv/kernel/vdso.c b/arch/riscv/kernel/vdso.c index dc03393bf900..6b5cfb7ddbae 100644 --- a/arch/riscv/kernel/vdso.c +++ b/arch/riscv/kernel/vdso.c @@ -50,9 +50,14 @@ struct __vdso_info { struct vm_special_mapping *cm; }; -static struct __vdso_info vdso_info; -#ifdef CONFIG_COMPAT -static struct __vdso_info compat_vdso_info; +#ifdef CONFIG_VDSO64 +static struct __vdso_info vdso64_info; +#endif +#ifdef CONFIG_VDSO32 +static struct __vdso_info vdso32_info; +#endif +#ifdef CONFIG_VDSO64ILP32 +static struct __vdso_info vdso64ilp32_info; #endif static int vdso_mremap(const struct vm_special_mapping *sm, @@ -114,10 +119,16 @@ int vdso_join_timens(struct task_struct *task, struct time_namespace *ns) mmap_read_lock(mm); for_each_vma(vmi, vma) { - if (vma_is_special_mapping(vma, vdso_info.dm)) +#ifdef CONFIG_VDSO64 + if (vma_is_special_mapping(vma, vdso64_info.dm)) zap_vma_pages(vma); -#ifdef CONFIG_COMPAT - if (vma_is_special_mapping(vma, compat_vdso_info.dm)) +#endif +#ifdef CONFIG_VDSO32 + if (vma_is_special_mapping(vma, vdso32_info.dm)) + zap_vma_pages(vma); +#endif +#ifdef CONFIG_VDSO64ILP32 + if (vma_is_special_mapping(vma, vdso64ilp32_info.dm)) zap_vma_pages(vma); #endif } @@ -172,13 +183,15 @@ static struct vm_special_mapping rv_vdso_maps[] __ro_after_init = { }, }; -static struct __vdso_info vdso_info __ro_after_init = { +#ifdef CONFIG_VDSO64 +static struct __vdso_info vdso64_info __ro_after_init = { .name = "vdso", - .vdso_code_start = vdso_start, - .vdso_code_end = vdso_end, + .vdso_code_start = vdso64_start, + .vdso_code_end = vdso64_end, .dm = &rv_vdso_maps[RV_VDSO_MAP_VVAR], .cm = &rv_vdso_maps[RV_VDSO_MAP_VDSO], }; +#endif #ifdef CONFIG_COMPAT static struct vm_special_mapping rv_compat_vdso_maps[] __ro_after_init = { @@ -191,21 +204,48 @@ static struct vm_special_mapping rv_compat_vdso_maps[] __ro_after_init = { .mremap = vdso_mremap, }, }; +#endif -static struct __vdso_info compat_vdso_info __ro_after_init = { - .name = "compat_vdso", +#ifdef CONFIG_VDSO32 +static struct __vdso_info vdso32_info __ro_after_init = { + .name = "vdso32", .vdso_code_start = vdso32_start, .vdso_code_end = vdso32_end, +#ifdef CONFIG_64BIT .dm = &rv_compat_vdso_maps[RV_VDSO_MAP_VVAR], .cm = &rv_compat_vdso_maps[RV_VDSO_MAP_VDSO], +#else + .dm = &rv_vdso_maps[RV_VDSO_MAP_VVAR], + .cm = &rv_vdso_maps[RV_VDSO_MAP_VDSO], +#endif +}; +#endif + +#ifdef CONFIG_VDSO64ILP32 +static struct __vdso_info vdso64ilp32_info __ro_after_init = { + .name = "vdso64ilp32", + .vdso_code_start = vdso64ilp32_start, + .vdso_code_end = vdso64ilp32_end, +#ifdef CONFIG_64BIT + .dm = &rv_compat_vdso_maps[RV_VDSO_MAP_VVAR], + .cm = &rv_compat_vdso_maps[RV_VDSO_MAP_VDSO], +#else + .dm = &rv_vdso_maps[RV_VDSO_MAP_VVAR], + .cm = &rv_vdso_maps[RV_VDSO_MAP_VDSO], +#endif }; #endif static int __init vdso_init(void) { - __vdso_init(&vdso_info); -#ifdef CONFIG_COMPAT - __vdso_init(&compat_vdso_info); +#ifdef CONFIG_VDSO64 + __vdso_init(&vdso64_info); +#endif +#ifdef CONFIG_VDSO32 + __vdso_init(&vdso32_info); +#endif +#ifdef CONFIG_VDSO64ILP32 + __vdso_init(&vdso64ilp32_info); #endif return 0; @@ -265,8 +305,18 @@ int compat_arch_setup_additional_pages(struct linux_binprm *bprm, if (mmap_write_lock_killable(mm)) return -EINTR; - ret = __setup_additional_pages(mm, bprm, uses_interp, - &compat_vdso_info); +#ifdef CONFIG_VDSO32 + if (test_thread_flag(TIF_32BIT) && !test_thread_flag(TIF_64ILP32)) + ret = __setup_additional_pages(mm, bprm, uses_interp, + &vdso32_info); +#endif + +#ifdef CONFIG_VDSO64ILP32 + if (test_thread_flag(TIF_32BIT) && test_thread_flag(TIF_64ILP32)) + ret = __setup_additional_pages(mm, bprm, uses_interp, + &vdso64ilp32_info); +#endif + mmap_write_unlock(mm); return ret; @@ -281,7 +331,21 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) if (mmap_write_lock_killable(mm)) return -EINTR; - ret = __setup_additional_pages(mm, bprm, uses_interp, &vdso_info); +#ifdef CONFIG_VDSO64 + if (!test_thread_flag(TIF_32BIT)) + ret = __setup_additional_pages(mm, bprm, uses_interp, &vdso64_info); +#endif + +#ifdef CONFIG_VDSO32 + if (test_thread_flag(TIF_32BIT) && !test_thread_flag(TIF_64ILP32)) + ret = __setup_additional_pages(mm, bprm, uses_interp, &vdso32_info); +#endif + +#ifdef CONFIG_VDSO64ILP32 + if (test_thread_flag(TIF_32BIT) && test_thread_flag(TIF_64ILP32)) + ret = __setup_additional_pages(mm, bprm, uses_interp, &vdso64ilp32_info); +#endif + mmap_write_unlock(mm); return ret; From patchwork Sun Nov 12 06:14:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164194 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561742vqg; Sat, 11 Nov 2023 22:17:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IHEgZbTOIsFKmtK/R6DWRby9xbn777o0aAk+RQ+woBVuHRu6TjqODWqD5CMpvTwydjFIerv X-Received: by 2002:a9d:6643:0:b0:6bf:1925:13a0 with SMTP id q3-20020a9d6643000000b006bf192513a0mr4234115otm.33.1699769865586; Sat, 11 Nov 2023 22:17:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769865; cv=none; d=google.com; s=arc-20160816; b=hz0dH79M/wWOlr30ye6b8+4mUELsdoMt32260bXvSgaF+tr6/+Wd0RwaF98O0A9FxD G/Mr1Chs0S4cTT2L0ylOxkqj7qQIC+whndr3fH1kA0TR/t3x3HSxQScPgKo31Pb3yFAm c/HtBX2TNCj+ETNvSJiMp4xL9ks8UkZeViroc8cqT9NM6Rg6c/Z7wRPQcS6HkEVFbOcQ y3tx81tEN+Suqb/NoH8wTTIzfqwxVkf+jpVGO4e+QCfvRdyLLazdTw1Fy+VMQUiyJ5V2 bKZNxcuTKgd6Z35eST1cy47HtVRqhgBDw0G7F23b8yCyvVND8+ZWyrZPBwK5/Bsooubf 1nFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+FJTy4CQ5NJ3TzHMEOJATTx7rbkulzxAeEKZpHDMgdM=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=zctf8R+esxA1hLnZrZ7QVq6lgtkPBFBUwMOoeGwbZaRSlWyBCNoVw4gokD4Cvfn+kp NRWObaS9e7vq0KhNGcjnGIOFB+TtT6TILYuxN1OnxiiKUsdnchqrr7aZ7/z4TGwa2htq jT1gmOl/YReXNp2/EgO7I+W1LHL2hMjKQWpSUeFSfaekv4T4D0zOHuZzlDARUaqsw9gv a5f1zvS/HMnxIm54oao+r91L3dQvGUEm3+T4BRKXtrQU9FROtiBCj08PBDS0DPHNKXRa 6/QC2xPUNToiCR9uT5UGm49coCqRmSbC2xlkFw7FCpPW5jAnDYXX5gLno1r/3opslmG9 nkMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=LijSfjXM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id u11-20020a170902b28b00b001cc2293b5e0si3044073plr.96.2023.11.11.22.17.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:17:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=LijSfjXM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 48EBE804A665; Sat, 11 Nov 2023 22:17:02 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230104AbjKLGQ0 (ORCPT + 29 others); Sun, 12 Nov 2023 01:16:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230167AbjKLGQU (ORCPT ); Sun, 12 Nov 2023 01:16:20 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E85D446B1 for ; Sat, 11 Nov 2023 22:16:03 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 33BFBC433D9; Sun, 12 Nov 2023 06:15:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769763; bh=VEdgkasnG6WV+UwznjmxtCe/+1EnOyvijw2TTDpGzls=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LijSfjXMXwZ7v68ahlqw4zv5xx9HIG5ohVA/+6HsSiQeE6I7KIp+zAYxquYYx/Rki ORMbca9Aps4wycU1ZctklwUJXamKPqduNqusNNGaelIfaYzuWcHUkxeSos9v3CrfTW SW46dQcdrj4xifPGeNtBTOo6OxlfB+gEmMnxGTBvxp/3JO3dMkdjCJkn7KUmrexuLh U4yZFJ6UfL0ORGcYa4dE0dXoPXbtBFfYyeJW9eWh1G/n26IPfND3rjkIzIStV2kaNe dFApL15ryILb9lETfRSDUR+68KH4ZPQWqsi6v5T8LmZBfloe0pJOno4PcqrQCNPhTJ SWU0cH/7PPD0g== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 06/38] riscv: u64ilp32: Add signal support for compat Date: Sun, 12 Nov 2023 01:14:42 -0500 Message-Id: <20231112061514.2306187-7-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:17:02 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337886489420817 X-GMAIL-MSGID: 1782337886489420817 From: Guo Ren The u64ilp32 reuses compat mode on the 64-bit Linux kernel, but the signal context is the same as the native 64-bit, not u32ilp32. So use the native signal procedure for u64ilp32 applications. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/signal32.h | 9 ++++++ arch/riscv/kernel/compat_signal.c | 21 ++++-------- arch/riscv/kernel/signal.c | 53 ++++++++++++++++++++++--------- 3 files changed, 54 insertions(+), 29 deletions(-) diff --git a/arch/riscv/include/asm/signal32.h b/arch/riscv/include/asm/signal32.h index 96dc56932e76..cda62d7eb0a5 100644 --- a/arch/riscv/include/asm/signal32.h +++ b/arch/riscv/include/asm/signal32.h @@ -6,6 +6,7 @@ #if IS_ENABLED(CONFIG_COMPAT) int compat_setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs); +long __riscv_compat_rt_sigreturn(void); #else static inline int compat_setup_rt_frame(struct ksignal *ksig, sigset_t *set, @@ -13,6 +14,14 @@ int compat_setup_rt_frame(struct ksignal *ksig, sigset_t *set, { return -1; } + +static inline +long __riscv_compat_rt_sigreturn(void) +{ + return -1; +} #endif +void __riscv_rt_sigreturn_badframe(void); + #endif diff --git a/arch/riscv/kernel/compat_signal.c b/arch/riscv/kernel/compat_signal.c index 8dea2012836e..955a638da2a4 100644 --- a/arch/riscv/kernel/compat_signal.c +++ b/arch/riscv/kernel/compat_signal.c @@ -116,18 +116,16 @@ static long compat_restore_sigcontext(struct pt_regs *regs, return err; } -COMPAT_SYSCALL_DEFINE0(rt_sigreturn) +long __riscv_compat_rt_sigreturn(void) { - struct pt_regs *regs = current_pt_regs(); - struct compat_rt_sigframe __user *frame; - struct task_struct *task; sigset_t set; + struct pt_regs *regs = current_pt_regs(); + struct compat_rt_sigframe __user *frame = + (struct compat_rt_sigframe __user *)kernel_stack_pointer(regs); /* Always make any pending restarted system calls return -EINTR */ current->restart_block.fn = do_no_restart_syscall; - frame = (struct compat_rt_sigframe __user *)regs->sp; - if (!access_ok(frame, sizeof(*frame))) goto badframe; @@ -142,17 +140,12 @@ COMPAT_SYSCALL_DEFINE0(rt_sigreturn) if (compat_restore_altstack(&frame->uc.uc_stack)) goto badframe; + regs->cause = -1UL; + return regs->a0; badframe: - task = current; - if (show_unhandled_signals) { - pr_info_ratelimited( - "%s[%d]: bad frame in %s: frame=%p pc=%p sp=%p\n", - task->comm, task_pid_nr(task), __func__, - frame, (void *)regs->epc, (void *)regs->sp); - } - force_sig(SIGSEGV); + __riscv_rt_sigreturn_badframe(); return 0; } diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c index 95c4a8d8a3f5..1c51a6783c98 100644 --- a/arch/riscv/kernel/signal.c +++ b/arch/riscv/kernel/signal.c @@ -224,19 +224,34 @@ static size_t get_rt_frame_size(bool cal_all) return frame_size; } -SYSCALL_DEFINE0(rt_sigreturn) +void __riscv_rt_sigreturn_badframe(void) +{ + struct task_struct *task = current; + struct pt_regs *regs = task_pt_regs(task); + + if (show_unhandled_signals) { + pr_info_ratelimited( + "%s[%d]: bad frame in %s: frame=%p pc=%p sp=%p\n", + task->comm, task_pid_nr(task), __func__, + (void *)kernel_stack_pointer(regs), + (void *)instruction_pointer(regs), + (void *)kernel_stack_pointer(regs)); + } + + force_sig(SIGSEGV); +} + +static long __riscv_rt_sigreturn(void) { - struct pt_regs *regs = current_pt_regs(); - struct rt_sigframe __user *frame; - struct task_struct *task; sigset_t set; size_t frame_size = get_rt_frame_size(false); + struct pt_regs *regs = current_pt_regs(); + struct rt_sigframe __user *frame = + (struct rt_sigframe __user *)kernel_stack_pointer(regs); /* Always make any pending restarted system calls return -EINTR */ current->restart_block.fn = do_no_restart_syscall; - frame = (struct rt_sigframe __user *)regs->sp; - if (!access_ok(frame, frame_size)) goto badframe; @@ -256,17 +271,25 @@ SYSCALL_DEFINE0(rt_sigreturn) return regs->a0; badframe: - task = current; - if (show_unhandled_signals) { - pr_info_ratelimited( - "%s[%d]: bad frame in %s: frame=%p pc=%p sp=%p\n", - task->comm, task_pid_nr(task), __func__, - frame, (void *)regs->epc, (void *)regs->sp); - } - force_sig(SIGSEGV); + __riscv_rt_sigreturn_badframe(); return 0; } +SYSCALL_DEFINE0(rt_sigreturn) +{ + return __riscv_rt_sigreturn(); +} + +#ifdef CONFIG_COMPAT +COMPAT_SYSCALL_DEFINE0(rt_sigreturn) +{ + if (test_thread_flag(TIF_32BIT) && !test_thread_flag(TIF_64ILP32)) + return __riscv_compat_rt_sigreturn(); + else + return __riscv_rt_sigreturn(); +} +#endif + static long setup_sigcontext(struct rt_sigframe __user *frame, struct pt_regs *regs) { @@ -433,7 +456,7 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) rseq_signal_deliver(ksig, regs); /* Set up the stack frame */ - if (is_compat_task()) + if (test_thread_flag(TIF_32BIT) && !test_thread_flag(TIF_64ILP32)) ret = compat_setup_rt_frame(ksig, oldset, regs); else ret = setup_rt_frame(ksig, oldset, regs); From patchwork Sun Nov 12 06:14:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164200 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561803vqg; Sat, 11 Nov 2023 22:17:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IGCJdxSjrBidOCnmTUbK20H3+Ax/EFFmc7EIxTxgg1Ql7GEta28YIEJ3ZotGy3bJhaovA9o X-Received: by 2002:a0d:ed06:0:b0:589:8b55:fe09 with SMTP id w6-20020a0ded06000000b005898b55fe09mr3332821ywe.50.1699769879634; Sat, 11 Nov 2023 22:17:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769879; cv=none; d=google.com; s=arc-20160816; b=mR6g7wnwlW6Xn26TZAoanngxOR0WMGgVpbj1rybzGxgbv5J56EF+viYJMfWWl3IPv7 ofaRJ89CFiu6QmkM3WgWP7eB5WE+CIH62xGzM6M9eNDNHo84pwkPPJilvAbwKbCBcsod B2ivmVJVa1RnTzEAM1WFKzprExLeewCYhri4rc2I0RxXTNoivAGiZK+QdmKCQjZ7zNqO urL1Bs99DpfMttdwKbPxmyG779nAyVCOB6hn57Sxt7Zg89MbxLUWDf3d9jSrfgbIWQFh aUMG75g6MrJa7CRMYI1hD7285Qv6+BURXH+FOSf0jYBVqdGn63pPWYkmYKLQJBitXLfQ GsiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=aYe/sCfdmJuMPvkqAZTAn6Gwi6YKHmq4PZk1VLB2RHA=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=fuah7+KcTaEzoJcW4va5fDU+bB5sFMVODCgxbY22Usw6yaW3Cwp02raOZ0Lcd1xePe xCuXRcmuYWEP+5mb2RH8V+rLcZvExRJbt+fAqtIOKciIO34ePvrsd17XnaiOXVu9Vs1l Nd3dgp3+VhQb0ghO8zeWEltDtRYpnqLgs2lE6oZ4LaGpHoyDNJmYC2Oz3ZiUrYIdpqVD 6mWBgrUqhmvWU28Vq7b7PeCIUHiFQllV+70eFQ0m/Hs66LDHGyl8iW4+QrnUj36rNCs+ nzaHOY9sTblZmrBI+EIPkh9Azm7OANusjJU/y3x0JARPYGiiVaPhA43eDeHAYjZJAEMK tkAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=c59OtDgx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id cq13-20020a056a00330d00b006b1fec25a82si2510368pfb.403.2023.11.11.22.17.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:17:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=c59OtDgx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 272C680B2323; Sat, 11 Nov 2023 22:16:48 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230120AbjKLGQh (ORCPT + 29 others); Sun, 12 Nov 2023 01:16:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230264AbjKLGQ3 (ORCPT ); Sun, 12 Nov 2023 01:16:29 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 18C214790 for ; Sat, 11 Nov 2023 22:16:11 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2F82C43391; Sun, 12 Nov 2023 06:16:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769770; bh=DKk902dUzJRu+EpHJ3Wk2xXFN2nL8OoR25SRcqCxR2Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c59OtDgxKoaL5H+8t/esEfV4kKvicRpVLj8v1lnhz3siL7SoX+2IByEa0bFClwdAn gWRKRChuD0ELQzyxEhYYTrZ2c111YRbKdTtjo5SAXQ7zbrerldn80owtj+w72YJl8o XyBcE5AGmM3J9GulU7mgINeZo+r9aq4447aDD8rL7aO3bGorg4INoFvR5ly2W5eWa/ PGT6kAuUzfr9kOZVP9bqms7r2XiNrBnF3kWDsm3W6ESHZ9jx35kFCdp06buDcYrX2T idUnQF9oVyN4PTA5ImVxyC9kkYF+rJYoA+Xbsf33gcQdiYEuMw0BkhIdKmJkuKVy2l qZ113gkQTjpoA== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 07/38] riscv: u64ilp32: Add ptrace interface support Date: Sun, 12 Nov 2023 01:14:43 -0500 Message-Id: <20231112061514.2306187-8-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:16:48 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337901502877153 X-GMAIL-MSGID: 1782337901502877153 From: Guo Ren The pt_regs of u64ilp32 is the same as the 64-bit kernel's. So, change to use native_view instead. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/kernel/ptrace.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/riscv/kernel/ptrace.c b/arch/riscv/kernel/ptrace.c index 1d572cf3140f..5471b12127da 100644 --- a/arch/riscv/kernel/ptrace.c +++ b/arch/riscv/kernel/ptrace.c @@ -369,7 +369,8 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, const struct user_regset_view *task_user_regset_view(struct task_struct *task) { #ifdef CONFIG_COMPAT - if (test_tsk_thread_flag(task, TIF_32BIT)) + if (test_tsk_thread_flag(task, TIF_32BIT) && + !test_tsk_thread_flag(task, TIF_64ILP32)) return &compat_riscv_user_native_view; else #endif From patchwork Sun Nov 12 06:14:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164202 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561825vqg; Sat, 11 Nov 2023 22:18:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IFd6XXRWQdcTEDM7uQghVQelxsL8v3txDiRX8RPu7ZFgm89TkAJiGUiHU4DMQFR5d/p/QST X-Received: by 2002:a05:6358:218b:b0:16b:c6fb:cd25 with SMTP id v11-20020a056358218b00b0016bc6fbcd25mr3615381rwb.17.1699769884678; Sat, 11 Nov 2023 22:18:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769884; cv=none; d=google.com; s=arc-20160816; b=xoJ0f9yzJ9QlzVKuUAPRd7JXudLHnE/qAJ+/ToePWbyelmDU9/W1pKlCNbgL9VcZhx S0W0nnXod8aiG0ee/qnJMmp3OGtWgd+DevwOLYJ4V1/soogT9DlIQzjwgJomVasshRD1 Yh7PUJjY+PGXuFwgd0dNb1QwPCKZtOpsJbzka7v7qFFDxjHuvCOBOYMyGCk0wgk7H7ae AgswjFozluWeuyoctsDyXgjuhOwEsyZnvdk3OZjqJeigmbhFEniQTjZJ2NAB6/vtCN13 vAjF142wnWtbIEO9LMyfFfIfbaI7PLjNuDTLavkPQB702x2Uu3ri6hrWUZqiUVrpcjo9 /MLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=btAjcYO2mh6mR+HJ9iCs6or9HjIUYsETcVaE5Q2QuYs=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=AvRSuNpWgsXL/rjdGsGuYCqSKK12Xc4t0Mp16Dc6+8BgTvecs9N1iq9LCeObchA6ui iLTnThLHpB0brzUMOXUhg+hfay0BgFhQC39iQFGKP0Frb+G6u9T0Uz4pbDr4pJssw3rM yd3vbTaL3qvstDZeC7Y1sQAvlElP+pj3UFO/ybTW3ryO+7FbkJ5gcgPGhlEzqR2BARwr qWtDI1jYiIB3d5+unVn2xi0J59bKu5ug17/gZcKAOdxpJMtcSGUq6hkrEGAQ6bEIw9xf mzr+s7Re3QBKIuvQVls12og2E28f7By/sbEyY74qVRWT2cmbJOTXvuFrOdFm9WHj0a5z De4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=tbmYH6qv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id l25-20020a63ba59000000b005b966a6960csi3314035pgu.786.2023.11.11.22.18.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:18:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=tbmYH6qv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 671F180BD254; Sat, 11 Nov 2023 22:17:05 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230281AbjKLGQm (ORCPT + 29 others); Sun, 12 Nov 2023 01:16:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230151AbjKLGQf (ORCPT ); Sun, 12 Nov 2023 01:16:35 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 30CAC3A8D for ; Sat, 11 Nov 2023 22:16:17 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22DC5C433CB; Sun, 12 Nov 2023 06:16:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769776; bh=vpjhhhUmj1avFAQY8tW0355cR2hNJ8+HWWoICf4M/q4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tbmYH6qvjiwpurPDTM/NhvCyNM0BO9pDMaCHLOgToCuPIYab9D5pj1Pru7s5I5zH3 3EZpHOYlEz7SPUvEspv5L+ntRZzc7Cu9pkMJ7kLCXZ9h7PQd63b+UeUidrdSN0WSkA 6dHdTp7ipXNS/ZSQxbnuETUSCx/kEpXc9VvNk5zEb/oy5uSCt/XZXQECJEiy1sa94Z 4yz6iD4zm0oOVHE+huuWTqa705yDUvTwkqHE/b/egrGTwu28FeR2kvixkaS9B8y2Wp v/asfaAmxC6JFNBTJpFBH/S61flYt5GgQ2C0+pM4/xWWLkKohmzBOlpE17LyUP/1MO jXud+VjwKISQQ== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 08/38] riscv: u64ilp32: Adjust vDSO alternative for 64ilp32 abi Date: Sun, 12 Nov 2023 01:14:44 -0500 Message-Id: <20231112061514.2306187-9-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:17:05 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337906491690014 X-GMAIL-MSGID: 1782337906491690014 From: Guo Ren The 64ilp32 uses the same ELF32 as 32ilp32 and the 64lp64 uses ELF64, so separate apply_vdso_alternatives into 64 and 32 versions and serve for three kinds of vDSO - vdso32, vdso64, vdso64ilp32. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/module.h | 30 ++++++++++++++++++++++ arch/riscv/kernel/alternative.c | 45 ++++++++++++++++++++++++--------- 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/arch/riscv/include/asm/module.h b/arch/riscv/include/asm/module.h index 0f3baaa6a9a8..9f556435a1a4 100644 --- a/arch/riscv/include/asm/module.h +++ b/arch/riscv/include/asm/module.h @@ -127,4 +127,34 @@ static inline const Elf_Shdr *find_section(const Elf_Ehdr *hdr, return NULL; } +static inline const Elf64_Shdr *find_section64(const Elf64_Ehdr *hdr, + const Elf64_Shdr *sechdrs, + const char *name) +{ + const Elf64_Shdr *s, *se; + const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset; + + for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++) { + if (strcmp(name, secstrs + s->sh_name) == 0) + return s; + } + + return NULL; +} + +static inline const Elf32_Shdr *find_section32(const Elf32_Ehdr *hdr, + const Elf32_Shdr *sechdrs, + const char *name) +{ + const Elf32_Shdr *s, *se; + const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset; + + for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++) { + if (strcmp(name, secstrs + s->sh_name) == 0) + return s; + } + + return NULL; +} + #endif /* _ASM_RISCV_MODULE_H */ diff --git a/arch/riscv/kernel/alternative.c b/arch/riscv/kernel/alternative.c index 73a2d7533806..ab9eb42a5502 100644 --- a/arch/riscv/kernel/alternative.c +++ b/arch/riscv/kernel/alternative.c @@ -181,17 +181,40 @@ static void __init_or_module _apply_alternatives(struct alt_entry *begin, stage); } -#ifdef CONFIG_MMU -static void __init apply_vdso_alternatives(void *vdso_start) +#ifdef CONFIG_VDSO64 +static void __init apply_vdso_alternatives64(void *vdso_start) { - const Elf_Ehdr *hdr; - const Elf_Shdr *shdr; - const Elf_Shdr *alt; + const Elf64_Ehdr *hdr; + const Elf64_Shdr *shdr; + const Elf64_Shdr *alt; struct alt_entry *begin, *end; - hdr = (Elf_Ehdr *)vdso_start; + hdr = (Elf64_Ehdr *)vdso_start; shdr = (void *)hdr + hdr->e_shoff; - alt = find_section(hdr, shdr, ".alternative"); + alt = find_section64(hdr, shdr, ".alternative"); + if (!alt) + return; + + begin = (void *)hdr + alt->sh_offset, + end = (void *)hdr + alt->sh_offset + alt->sh_size, + + _apply_alternatives((struct alt_entry *)begin, + (struct alt_entry *)end, + RISCV_ALTERNATIVES_BOOT); +} +#endif + +#if IS_ENABLED(CONFIG_VDSO32) || IS_ENABLED(CONFIG_VDSO64ILP32) +static void __init apply_vdso_alternatives32(void *vdso_start) +{ + const Elf32_Ehdr *hdr; + const Elf32_Shdr *shdr; + const Elf32_Shdr *alt; + struct alt_entry *begin, *end; + + hdr = (Elf32_Ehdr *)vdso_start; + shdr = (void *)hdr + hdr->e_shoff; + alt = find_section32(hdr, shdr, ".alternative"); if (!alt) return; @@ -202,8 +225,6 @@ static void __init apply_vdso_alternatives(void *vdso_start) (struct alt_entry *)end, RISCV_ALTERNATIVES_BOOT); } -#else -static void __init apply_vdso_alternatives(void *vdso_start) { } #endif void __init apply_boot_alternatives(void) @@ -217,13 +238,13 @@ void __init apply_boot_alternatives(void) RISCV_ALTERNATIVES_BOOT); #ifdef CONFIG_VDSO64 - apply_vdso_alternatives(vdso64_start); + apply_vdso_alternatives64(vdso64_start); #endif #ifdef CONFIG_VDSO32 - apply_vdso_alternatives(vdso32_start); + apply_vdso_alternatives32(vdso32_start); #endif #ifdef CONFIG_VDSO64ILP32 - apply_vdso_alternatives(vdso64ilp32_start); + apply_vdso_alternatives32(vdso64ilp32_start); #endif } From patchwork Sun Nov 12 06:14:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164205 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561912vqg; Sat, 11 Nov 2023 22:18:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IE1Y+h+0wXGdL/j9RV75nwX6bsUgThk1sXJBKg8Hq+Xxr0dgqo/PwdXBHId5lg1W9Sels+W X-Received: by 2002:a05:6808:200e:b0:3b6:dc6f:2713 with SMTP id q14-20020a056808200e00b003b6dc6f2713mr3772433oiw.31.1699769903943; Sat, 11 Nov 2023 22:18:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769903; cv=none; d=google.com; s=arc-20160816; b=U77ML4LszsCo1dc4yVfP/gPiK3VbCqsljYoOiTiEIT7jqw4pKRBSWO7Ic/KUl6bYgs /m3H5rpZhRygFELRhjynoS4szhuHmn7zmhTbVZS3rOVnJuolH2bpvzW92dlDo/uctJ8g wh99NJuhz0O4MuydGbJi9VB/8BF7gB/+RGTU2ABEFq1+Ku7zOwM+u+kJqt9K77+3sPWC g1rAnxJT5KJ/+0vLmPTR0PXRXAGZvavNkIRQAEYEupPUaBYY9ni+imQTXR0J8nmQpxPS qJ2BGZCn4qQ8F5iI8Y0jtiTxRnkvw33q+gGILfzVPX51/AM5orGHf/5xVOTtBu6f/qVa 9ZfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=yyNEfyip/5TrGtpFsNd3rKABuMSVTWPfTc8E1vpGkYc=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=sShaVQZqtpKEVuWMCIh2sREpBbhzjsAVcspbmyL2mWkbmq2Kehp0HiQzFA/vdxHasd YO6L1epKB2XAGC04ME2RDe2skQ+AKFp0MaFpUkYcf1mSWgUquJxKD36jy0Xpe/HZf02c 56gquB+BlZBaRr45S5zlns9CLj6ZDIGtj6Xfbfq+o30X+wcbWeUEJFwxYpg8wdJwn0N7 HVzZwZ8GfSibfv7eJ2/02mlwodgDiLoyv8oU58UWuxVMJyyU63RXqtPsdxmTHIYcmvD2 bsaMS6afc+eDe06MGgBonPc/IyAgxVJYyxTfIp+KLsbaqfd/h0ATSQg3Hjno5otA1oii t0Ww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=boE1zCDR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id g12-20020a056a0023cc00b006be246c6decsi3193665pfc.351.2023.11.11.22.18.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:18:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=boE1zCDR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 2DAC28045C55; Sat, 11 Nov 2023 22:18:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230290AbjKLGQx (ORCPT + 29 others); Sun, 12 Nov 2023 01:16:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230264AbjKLGQl (ORCPT ); Sun, 12 Nov 2023 01:16:41 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 133E54696 for ; Sat, 11 Nov 2023 22:16:22 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3F126C43395; Sun, 12 Nov 2023 06:16:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769782; bh=c/XztdxeZEb8IqwcMkuoEz/d2lH7K8y6SAjCB4w9a8w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=boE1zCDRZd99yF7fq4wSEnK3GZSGwQ3y48zx3AyteCaYr2xiZaQ3Cqta7dphkuQav JsXrIEmI7/L+FoOIP7vXpjhKk60uSnEj6qWvRdCgOCqtBWvh3jO3cmJlurSuxTVGgt Cuil7yr8pjzmWRurKglAKkTYEKfu9r3uer2cCuDhvPEawE+gmnGt3FsMMjwaUKGYYJ mG6BLk/AWF0pFnFwuXpzxrxmp1s2n8KlOH/XxpnEGtmjJQCIpwZpQ7qpdkmYDxJysN tO9TKi5TlnSZF+zanRFWdm38dyJmfonLs13kI4VPKhFNaqvQEqXKXbYOdO4rdwcDRl aqilmLVLIsaTA== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 09/38] riscv: u64ilp32: Add xlen_t in user_regs_struct Date: Sun, 12 Nov 2023 01:14:45 -0500 Message-Id: <20231112061514.2306187-10-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:18:15 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337926855241875 X-GMAIL-MSGID: 1782337926855241875 From: Guo Ren The u64ilp32 xlen is 64-bit, not the size of long, so change the elements of user_regs_struct with xlen_t to match different __riscv_xlen. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/uapi/asm/ptrace.h | 72 +++++++++++++++------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/arch/riscv/include/uapi/asm/ptrace.h b/arch/riscv/include/uapi/asm/ptrace.h index e17c550986a6..39e8d10eebaf 100644 --- a/arch/riscv/include/uapi/asm/ptrace.h +++ b/arch/riscv/include/uapi/asm/ptrace.h @@ -10,6 +10,14 @@ #include +#if __riscv_xlen == 64 +typedef __u64 xlen_t; +#elif __riscv_xlen == 32 +typedef __u32 xlen_t; +#else +#error "Unexpected __riscv_xlen" +#endif + /* * User-mode register state for core dumps, ptrace, sigcontext * @@ -17,38 +25,38 @@ * struct user_regs_struct must form a prefix of struct pt_regs. */ struct user_regs_struct { - unsigned long pc; - unsigned long ra; - unsigned long sp; - unsigned long gp; - unsigned long tp; - unsigned long t0; - unsigned long t1; - unsigned long t2; - unsigned long s0; - unsigned long s1; - unsigned long a0; - unsigned long a1; - unsigned long a2; - unsigned long a3; - unsigned long a4; - unsigned long a5; - unsigned long a6; - unsigned long a7; - unsigned long s2; - unsigned long s3; - unsigned long s4; - unsigned long s5; - unsigned long s6; - unsigned long s7; - unsigned long s8; - unsigned long s9; - unsigned long s10; - unsigned long s11; - unsigned long t3; - unsigned long t4; - unsigned long t5; - unsigned long t6; + xlen_t pc; + xlen_t ra; + xlen_t sp; + xlen_t gp; + xlen_t tp; + xlen_t t0; + xlen_t t1; + xlen_t t2; + xlen_t s0; + xlen_t s1; + xlen_t a0; + xlen_t a1; + xlen_t a2; + xlen_t a3; + xlen_t a4; + xlen_t a5; + xlen_t a6; + xlen_t a7; + xlen_t s2; + xlen_t s3; + xlen_t s4; + xlen_t s5; + xlen_t s6; + xlen_t s7; + xlen_t s8; + xlen_t s9; + xlen_t s10; + xlen_t s11; + xlen_t t3; + xlen_t t4; + xlen_t t5; + xlen_t t6; }; struct __riscv_f_ext_state { From patchwork Sun Nov 12 06:14:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164214 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562243vqg; Sat, 11 Nov 2023 22:19:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IFAtYZ3x7+DVIDHka5b2i4py9TVs/cjkw1G26S/RQvJ0RZVkCA7MY0VD/U4gvklT8atjCBh X-Received: by 2002:a05:6808:4096:b0:3b2:e74c:30a6 with SMTP id db22-20020a056808409600b003b2e74c30a6mr4153012oib.10.1699769974282; Sat, 11 Nov 2023 22:19:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769974; cv=none; d=google.com; s=arc-20160816; b=Gy0ZPHZQxdR/u6FyvOhxv7Wh9ivRze6ac5jIJd2cWE5JbErGh8YQ40mzeipwhz4KGM 18Xl8+VfaspQKD6xcg07n2sCMbJKKCw7VRUp3hUQHrr8s2YqDho6QKzFH6JyXX8jG30D gU32JbAcEeIrF6E+debkZhkZ9QT04mWUhWOXZeOS8IHcaEvFWZi4xoo+PfqipyJyqS+o kVhRBhwK5hbPW45rwmBpWpaSSLOAVXJRFOrufWAtODIrSOQ1gRMmM0On/eyAyoE8d4Gi xo8pYihxJ4lQnAvtK/H9uFS2A7dM28M5HsVpYJKYk37KPNzB3xGT6zwT7tW0+1Sd+6/R PDqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=AZNCl6FTG8VnR0HUZW8vMgUtvb9FKpPCbm49jzRdsFU=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=LI+JvItFkXkT3We+QFy5tfbJ+6pG9DOs+Hr+p93n3y1LPgnpJD6DzOYQwoNgwuTXKh EgXXK4z1Fry+B3AxgsVNlzuqPyYgR3dU4oH3gjUMzcO6oG6ferXsJ+hO8fliPz1T9yn6 4MpdoEi3/yDI+0vLPtvM5kxR90jU/Uz3pG54/CJ8nb3cYgP+y59inuLF44efa74FdgYf LflM7pqlkumnNVUQAimldUKs7XEJXQKts3fZKjJhhFm8GAV7PFB8/+VuRHE6qrZNlrSF KDT+jVruoju627krsKQxBW0fASjBq6z5UeXLbQRrvnbSY+QJgHTS6PvTA4ekAkvkJ5mv RJTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EB1Tkw1Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id z128-20020a633386000000b005bdd8af5a15si3031420pgz.668.2023.11.11.22.19.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:19:34 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EB1Tkw1Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 1B8758078616; Sat, 11 Nov 2023 22:19:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230452AbjKLGQ6 (ORCPT + 29 others); Sun, 12 Nov 2023 01:16:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230376AbjKLGQs (ORCPT ); Sun, 12 Nov 2023 01:16:48 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F2EA3840 for ; Sat, 11 Nov 2023 22:16:29 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0415FC433CC; Sun, 12 Nov 2023 06:16:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769788; bh=x2yNl81rtMLNR83PEs3HCmEpsQ4/7rJymYTh7H6aEEs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EB1Tkw1ZePpU08PhgrQFyDzSgHHkUjmbXxR/MUfG9bEVV+Iqk7O9UI0yiAixM8Jim ijdKADfSY75NGC29rcYC1mdguX3mcb7TwbXCv5XJbBQy0Szp1r0s50Ul50mA7JJS0O nLfC/bApQGYZcDd7S8pGBd2WNctZpvQ2G4sr3FE+v+cbbKJcQ154u+YzChQk2HyUZO QMl52JlYFGIXKd1n7CaPK5ahUUZ3kDSEhDiIoMq5PhRfUHho2veayBgIf8qrZBZYJS dEMpUJibV+TeKlPUnHb0iDewAmVuzxXifFf3b86rqSS9CRpgB19LbEZjFi810Jl04U Ds4QiYJ1/SScw== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 10/38] riscv: u64ilp32: Remove the restriction of UXL=32 Date: Sun, 12 Nov 2023 01:14:46 -0500 Message-Id: <20231112061514.2306187-11-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 fry.vger.email 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 (fry.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:19:15 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338000493115119 X-GMAIL-MSGID: 1782338000493115119 From: Guo Ren The u64ilp32 needn't hardware support UXL=32, so remove the restriction when EF_RISCV_64ILP32 is detected. Reported-by: Junqiang Wang Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/kernel/process.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index e32d737e039f..93057ca2e2a7 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -88,7 +88,7 @@ static bool compat_mode_supported __read_mostly; bool compat_elf_check_arch(Elf32_Ehdr *hdr) { - return compat_mode_supported && + return (compat_mode_supported || (hdr->e_flags & EF_RISCV_64ILP32)) && hdr->e_machine == EM_RISCV && hdr->e_ident[EI_CLASS] == ELFCLASS32; } From patchwork Sun Nov 12 06:14:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164216 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562408vqg; Sat, 11 Nov 2023 22:20:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IHe34rJDWLk4wWQwTJoBjye9rB65EqCZ5GbV7Ymohikfz5FZtC/qTwZo/qIBngkwu4MQjOJ X-Received: by 2002:a05:6a20:12c9:b0:17a:e981:817e with SMTP id v9-20020a056a2012c900b0017ae981817emr5198461pzg.3.1699770011820; Sat, 11 Nov 2023 22:20:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770011; cv=none; d=google.com; s=arc-20160816; b=z8JBQlmGo+fyjav7oRFK58zVLhSTmD2GU0DjtB0LKMaLU/UkRUB2oVerWfH0etobbW WDwGXGedPpKKY2l6oyXzRKtUCubFuFqRajFAqPhHkkT8vorpFUwJPr8hH0Ik/3XKJNlb Z0KvrBL+AFYkm6SXpu0bBnX9PBEP150235cShCUnmaIccqTpUIvOXP/R5RBlM6Nilu5v ck2Bol4nzPMOzX7jxPHdW4BDs2zsND8VlY4erzkLeIr0QiBPZO2sx9VZoby8gcaP8HcM scSlRomK2n7+kJ/M1RfEeCbve/fw8FdUY2TvkKYti08O0PvKDFHzTDXlZQPL5K/N/0P2 NRoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=vRm6Hbr0hH+p0yby49VdNgqGTQQChNOZ0rq32eufvXs=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=mhNockMr8TW2NlZw1hQfLOQPGfPD+uV7RgQSeVo+jP0aHt7NGE55WPk/ppIMa606cz E1JpBrwsiAsgCuWAM3rnSUgnLiugq3CTGLDSQ25c/7HqZ50fAXpj7cg7ehVsLqioj6k3 JXqe1heLsVRnJAUEfbJv8ACSRnWWfxZLNfN9mooeOuMmU+SyuQco9AcQVB1cV4hizn/i e7t34BOk5qPt8U9EfWuuADIM8sqkVMWjuEDKBnn3PwwT1s/7fqUu/Jso63ltxAlDYOxx M/Z5qvG5aMfTLpnFFkbj2ZUh/REXG2HB3VDVSyTNBkaEYmldWh43FE3KPWSlWxKh0jk2 F4qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gmZIsck3; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id c1-20020aa78e01000000b006bf2e5f0841si2982955pfr.393.2023.11.11.22.20.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:20:11 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=gmZIsck3; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 15F80809B9DD; Sat, 11 Nov 2023 22:19:45 -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 S230198AbjKLGRC (ORCPT + 29 others); Sun, 12 Nov 2023 01:17:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60188 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230416AbjKLGQw (ORCPT ); Sun, 12 Nov 2023 01:16:52 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 32AF64783 for ; Sat, 11 Nov 2023 22:16:35 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F980C433C7; Sun, 12 Nov 2023 06:16:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769794; bh=t5MrC4fvvQc/xekSl+yR6G661NNGQj6PgtJ8W5ldz/o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gmZIsck3qQZ47ZtEtuPfCGlEnruD5oZdRze4VoBdVlszVX+zR+zesI8h/f8NTefwq VWhnjyuIgcvNRfcyJRHmdcrLSoeVXKTKxUu6YHOA6pYGK2Al4X7XOduITVsoRh51Xy YWIgiXgVwRNzjIX3F8cKKmCa/PJg3/dCzlDqt078w29bGlY12eAurMcl+H4E9Vpyb0 5dPifGZVFfAhrfLPx+/jDOWlknO4zCU4aBCHHHkE/Pz9pURH66T6YyPE344dZTL81u wccacwGGK5aJ+vaR+VI5EM23Ux+fNTmGjWLzaiUVZJ9p8eMvZDCnEZtb51WSPw7+wf GTMrhXIlKwycg== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 11/38] riscv: u64ilp32: Enable user space runtime switch Date: Sun, 12 Nov 2023 01:14:47 -0500 Message-Id: <20231112061514.2306187-12-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 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]); Sat, 11 Nov 2023 22:19:45 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338040242776881 X-GMAIL-MSGID: 1782338040242776881 From: Guo Ren This patch didn't introduce any new syscall table but reused the existing rv32 implementation to ease the maintenance of the kernel side. Unify the UXL mode setting by ELF e_flags to support u64ilp32 & u32ilp32. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/csr.h | 2 -- arch/riscv/include/asm/elf.h | 7 ++++++- arch/riscv/include/asm/syscall.h | 2 +- arch/riscv/include/asm/thread_info.h | 1 + arch/riscv/kernel/process.c | 4 +--- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/arch/riscv/include/asm/csr.h b/arch/riscv/include/asm/csr.h index 7bac43a3176e..638b7a836acc 100644 --- a/arch/riscv/include/asm/csr.h +++ b/arch/riscv/include/asm/csr.h @@ -44,11 +44,9 @@ #define SR_SD _AC(0x8000000000000000, UL) /* FS/VS/XS dirty */ #endif -#ifdef CONFIG_64BIT #define SR_UXL _AC(0x300000000, UL) /* XLEN mask for U-mode */ #define SR_UXL_32 _AC(0x100000000, UL) /* XLEN = 32 for U-mode */ #define SR_UXL_64 _AC(0x200000000, UL) /* XLEN = 64 for U-mode */ -#endif /* SATP flags */ #ifndef CONFIG_64BIT diff --git a/arch/riscv/include/asm/elf.h b/arch/riscv/include/asm/elf.h index c24280774caf..5b2bf1a7cb59 100644 --- a/arch/riscv/include/asm/elf.h +++ b/arch/riscv/include/asm/elf.h @@ -127,18 +127,23 @@ do { \ *(struct user_regs_struct *)regs; \ } while (0); -#ifdef CONFIG_COMPAT +#define EF_RISCV_64ILP32 0x20 #define SET_PERSONALITY(ex) \ do { if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ set_thread_flag(TIF_32BIT); \ else \ clear_thread_flag(TIF_32BIT); \ + if ((ex).e_flags & EF_RISCV_64ILP32) \ + set_thread_flag(TIF_64ILP32); \ + else \ + clear_thread_flag(TIF_64ILP32); \ if (personality(current->personality) != PER_LINUX32) \ set_personality(PER_LINUX | \ (current->personality & (~PER_MASK))); \ } while (0) +#ifdef CONFIG_COMPAT #define COMPAT_ELF_ET_DYN_BASE ((TASK_SIZE_32 / 3) * 2) /* rv32 registers */ diff --git a/arch/riscv/include/asm/syscall.h b/arch/riscv/include/asm/syscall.h index 0148c6bd9675..a1122b88c362 100644 --- a/arch/riscv/include/asm/syscall.h +++ b/arch/riscv/include/asm/syscall.h @@ -81,7 +81,7 @@ static inline void syscall_handler(struct pt_regs *regs, ulong syscall) syscall_t fn; #ifdef CONFIG_COMPAT - if ((regs->status & SR_UXL) == SR_UXL_32) + if (test_thread_flag(TIF_32BIT)) fn = compat_sys_call_table[syscall]; else #endif diff --git a/arch/riscv/include/asm/thread_info.h b/arch/riscv/include/asm/thread_info.h index 1833beb00489..61f7101aebb3 100644 --- a/arch/riscv/include/asm/thread_info.h +++ b/arch/riscv/include/asm/thread_info.h @@ -93,6 +93,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); #define TIF_NOTIFY_SIGNAL 9 /* signal notifications exist */ #define TIF_UPROBE 10 /* uprobe breakpoint or singlestep */ #define TIF_32BIT 11 /* compat-mode 32bit process */ +#define TIF_64ILP32 12 /* 64ILP32 process */ #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index 93057ca2e2a7..87bdb0d6dbf3 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -126,14 +126,12 @@ void start_thread(struct pt_regs *regs, unsigned long pc, regs->epc = pc; regs->sp = sp; -#ifdef CONFIG_64BIT regs->status &= ~SR_UXL; - if (is_compat_task()) + if (test_thread_flag(TIF_32BIT) && !test_thread_flag(TIF_64ILP32)) regs->status |= SR_UXL_32; else regs->status |= SR_UXL_64; -#endif } void flush_thread(void) From patchwork Sun Nov 12 06:14:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164196 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561766vqg; Sat, 11 Nov 2023 22:17:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IGZE06D/s1KgUhXmT3OVQWddg/rvkQhvubQsORYjkdVvvc9MjXuhutGEEBiPhgtvERHrHoT X-Received: by 2002:a05:6870:aa97:b0:1e9:d158:2465 with SMTP id gr23-20020a056870aa9700b001e9d1582465mr5020184oab.17.1699769871267; Sat, 11 Nov 2023 22:17:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769871; cv=none; d=google.com; s=arc-20160816; b=nstFoVDSIhfGUiFq9D/7vdviscwQYTkP156bYRXbxAO5Q7xKIHiiHHgmQqoNJ6qXeS qgBfgYB5rgVegU7jzvQI34ciDdvwe8hVf2YboLUeZWae9XFeVG9KPj9DSF7S0HhwkIEo YkXLH32RDB8exL64BdLLZcI3ruzez9Lz76X2BThnKYLA50ECEmf1vDR78Ndw6vRAzs3E sn3y6M3iw6cKf7/eVo0AeK4f1birNeukg11f6J3BK7+Vm7A9+F4jmYLJ7on2noOXPShz Cq7GvGksSg0uUpvfan13ONVWhT//nMY5vjSeQ2nSXW9nZhns+TRGRFyDNjoiC1PSGVQt zulA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=CQD4No5wzoKyVgTxUIgOSqxZZdAuoGgrM+4xoS1C8Z4=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=bGECDrrtnmdSh1K5/LIDYGbb4VwHbRogyR5q7esIjhfVSP+pAhZu9rEJR/d94nq6bH 8KpzyKO4V+sh4XpAyh5aiyvaeFNMyAA39B08SLu9k6VSP0sg3GyEP33KgIGvMI8XFUuw vZ9Izd3jUPcBz8e0OML3jCshKc1QtMVcy/uQvO8HZmX3JDMgLQZ6Mwy+f0mkRyVdLokl Yp2Z8AN0m/m49l40HCCqebliBjzlErFlr8XWYB5PLAoRGiwILs3YWtkTG2H3wk/x3XwU YIGws84WNjwSuQG+T9Zyyg3jKqHjuby+DyLZ+RbDc+yzPqdpEBGGgxM4JREsC6yp0wL9 eF0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uZw4FPl2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id n7-20020a6563c7000000b005b8ea4a4ab6si3156050pgv.623.2023.11.11.22.17.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:17:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uZw4FPl2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 6FDC2804C64D; Sat, 11 Nov 2023 22:17:47 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230376AbjKLGRP (ORCPT + 29 others); Sun, 12 Nov 2023 01:17:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60444 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230249AbjKLGRA (ORCPT ); Sun, 12 Nov 2023 01:17:00 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E672F4798 for ; Sat, 11 Nov 2023 22:16:40 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 32147C433D9; Sun, 12 Nov 2023 06:16:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769800; bh=bKheZRHS9yncX/iADam3fCVUrHEXBhjqFo5pnoPNSGY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uZw4FPl2DJ3Wy1j2ZEwoepxbHE6DvDx5D2CMzMcLDv7WUAb1mopfDPG2mTccFGbDZ nPjC2Fr4vIJQHXstErsxJ19YJcQy9J7eqHC7RmE26UZEn5b4VpUvB+m0sPE83Gsot/ 6rRsUnqbsvfyGrFwrGTER0NPbJMxhuDefiiQ7rdfA03S14dKLQ7qK1ILPU/ZiBdoBy zNuIHRcvaXsIu7tV9NsTyPOxEl7LBd6tFmICqxa+M5dGBTqiErlIRs7OHBijIT7fH8 IILxwqB74RlTBAQMJDDnmDZmQa/KRgHjjFZZiBwaCWzl3dmvapPV6WWEfJSituLY9v bU4bVdgMuMuyg== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 12/38] riscv: s64ilp32: Unify ULL & UL into UXL in csr Date: Sun, 12 Nov 2023 01:14:48 -0500 Message-Id: <20231112061514.2306187-13-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:17:47 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337892384040208 X-GMAIL-MSGID: 1782337892384040208 From: Guo Ren The 64ilp32's long size has been different from the csr xlen, so introduce a new macro of UXL to distinguish UL & ULL. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/csr.h | 166 +++++++++++++++++++---------------- 1 file changed, 89 insertions(+), 77 deletions(-) diff --git a/arch/riscv/include/asm/csr.h b/arch/riscv/include/asm/csr.h index 638b7a836acc..051c017e1e5e 100644 --- a/arch/riscv/include/asm/csr.h +++ b/arch/riscv/include/asm/csr.h @@ -9,64 +9,76 @@ #include #include +#if __riscv_xlen == 32 +#define UXL UL +#define GENMASK_UXL GENMASK +#else +#define UXL ULL +#define GENMASK_UXL GENMASK_ULL +#endif + /* Status register flags */ -#define SR_SIE _AC(0x00000002, UL) /* Supervisor Interrupt Enable */ -#define SR_MIE _AC(0x00000008, UL) /* Machine Interrupt Enable */ -#define SR_SPIE _AC(0x00000020, UL) /* Previous Supervisor IE */ -#define SR_MPIE _AC(0x00000080, UL) /* Previous Machine IE */ -#define SR_SPP _AC(0x00000100, UL) /* Previously Supervisor */ -#define SR_MPP _AC(0x00001800, UL) /* Previously Machine */ -#define SR_SUM _AC(0x00040000, UL) /* Supervisor User Memory Access */ - -#define SR_FS _AC(0x00006000, UL) /* Floating-point Status */ -#define SR_FS_OFF _AC(0x00000000, UL) -#define SR_FS_INITIAL _AC(0x00002000, UL) -#define SR_FS_CLEAN _AC(0x00004000, UL) -#define SR_FS_DIRTY _AC(0x00006000, UL) - -#define SR_VS _AC(0x00000600, UL) /* Vector Status */ -#define SR_VS_OFF _AC(0x00000000, UL) -#define SR_VS_INITIAL _AC(0x00000200, UL) -#define SR_VS_CLEAN _AC(0x00000400, UL) -#define SR_VS_DIRTY _AC(0x00000600, UL) - -#define SR_XS _AC(0x00018000, UL) /* Extension Status */ -#define SR_XS_OFF _AC(0x00000000, UL) -#define SR_XS_INITIAL _AC(0x00008000, UL) -#define SR_XS_CLEAN _AC(0x00010000, UL) -#define SR_XS_DIRTY _AC(0x00018000, UL) +#define SR_SIE _AC(0x00000002, UXL) /* Supervisor Interrupt Enable */ +#define SR_MIE _AC(0x00000008, UXL) /* Machine Interrupt Enable */ +#define SR_SPIE _AC(0x00000020, UXL) /* Previous Supervisor IE */ +#define SR_MPIE _AC(0x00000080, UXL) /* Previous Machine IE */ +#define SR_SPP _AC(0x00000100, UXL) /* Previously Supervisor */ +#define SR_MPP _AC(0x00001800, UXL) /* Previously Machine */ +#define SR_SUM _AC(0x00040000, UXL) /* Supervisor User Memory Access */ + +#define SR_FS _AC(0x00006000, UXL) /* Floating-point Status */ +#define SR_FS_OFF _AC(0x00000000, UXL) +#define SR_FS_INITIAL _AC(0x00002000, UXL) +#define SR_FS_CLEAN _AC(0x00004000, UXL) +#define SR_FS_DIRTY _AC(0x00006000, UXL) + +#define SR_VS _AC(0x00000600, UXL) /* Vector Status */ +#define SR_VS_OFF _AC(0x00000000, UXL) +#define SR_VS_INITIAL _AC(0x00000200, UXL) +#define SR_VS_CLEAN _AC(0x00000400, UXL) +#define SR_VS_DIRTY _AC(0x00000600, UXL) + +#define SR_XS _AC(0x00018000, UXL) /* Extension Status */ +#define SR_XS_OFF _AC(0x00000000, UXL) +#define SR_XS_INITIAL _AC(0x00008000, UXL) +#define SR_XS_CLEAN _AC(0x00010000, UXL) +#define SR_XS_DIRTY _AC(0x00018000, UXL) #define SR_FS_VS (SR_FS | SR_VS) /* Vector and Floating-Point Unit */ -#ifndef CONFIG_64BIT -#define SR_SD _AC(0x80000000, UL) /* FS/VS/XS dirty */ +#if __riscv_xlen == 32 +#define SR_SD _AC(0x80000000, UXL) /* FS/VS/XS dirty */ #else -#define SR_SD _AC(0x8000000000000000, UL) /* FS/VS/XS dirty */ +#define SR_SD _AC(0x8000000000000000, UXL) /* FS/VS/XS dirty */ #endif -#define SR_UXL _AC(0x300000000, UL) /* XLEN mask for U-mode */ -#define SR_UXL_32 _AC(0x100000000, UL) /* XLEN = 32 for U-mode */ -#define SR_UXL_64 _AC(0x200000000, UL) /* XLEN = 64 for U-mode */ +#define SR_UXL _AC(0x300000000, UXL) /* XLEN mask for U-mode */ +#define SR_UXL_32 _AC(0x100000000, UXL) /* XLEN = 32 for U-mode */ +#define SR_UXL_64 _AC(0x200000000, UXL) /* XLEN = 64 for U-mode */ /* SATP flags */ -#ifndef CONFIG_64BIT -#define SATP_PPN _AC(0x003FFFFF, UL) -#define SATP_MODE_32 _AC(0x80000000, UL) +#if __riscv_xlen == 32 +#define SATP_PPN _AC(0x003FFFFF, UXL) +#define SATP_MODE_32 _AC(0x80000000, UXL) #define SATP_ASID_BITS 9 #define SATP_ASID_SHIFT 22 -#define SATP_ASID_MASK _AC(0x1FF, UL) +#define SATP_ASID_MASK _AC(0x1FF, UXL) #else -#define SATP_PPN _AC(0x00000FFFFFFFFFFF, UL) -#define SATP_MODE_39 _AC(0x8000000000000000, UL) -#define SATP_MODE_48 _AC(0x9000000000000000, UL) -#define SATP_MODE_57 _AC(0xa000000000000000, UL) +#define SATP_PPN _AC(0x00000FFFFFFFFFFF, UXL) +#define SATP_MODE_39 _AC(0x8000000000000000, UXL) +#define SATP_MODE_48 _AC(0x9000000000000000, UXL) +#define SATP_MODE_57 _AC(0xa000000000000000, UXL) #define SATP_ASID_BITS 16 #define SATP_ASID_SHIFT 44 -#define SATP_ASID_MASK _AC(0xFFFF, UL) +#define SATP_ASID_MASK _AC(0xFFFF, UXL) #endif /* Exception cause high bit - is an interrupt if set */ -#define CAUSE_IRQ_FLAG (_AC(1, UL) << (__riscv_xlen - 1)) +#if __riscv_xlen == 32 +#define CAUSE_IRQ_FLAG (_AC(1, UXL) << (__riscv_xlen - 1)) +#else +#define CAUSE_IRQ_FLAG (_AC(1, UXL) << (__riscv_xlen - 1)) +#endif /* Interrupt causes (minus the high bit) */ #define IRQ_S_SOFT 1 @@ -81,7 +93,7 @@ #define IRQ_S_GEXT 12 #define IRQ_PMU_OVF 13 #define IRQ_LOCAL_MAX (IRQ_PMU_OVF + 1) -#define IRQ_LOCAL_MASK GENMASK((IRQ_LOCAL_MAX - 1), 0) +#define IRQ_LOCAL_MASK GENMASK_UXL((IRQ_LOCAL_MAX - 1), 0) /* Exception causes */ #define EXC_INST_MISALIGNED 0 @@ -114,41 +126,41 @@ #define PMP_L 0x80 /* HSTATUS flags */ -#ifdef CONFIG_64BIT -#define HSTATUS_VSXL _AC(0x300000000, UL) +#if __riscv_xlen == 64 +#define HSTATUS_VSXL _AC(0x300000000, UXL) #define HSTATUS_VSXL_SHIFT 32 #endif -#define HSTATUS_VTSR _AC(0x00400000, UL) -#define HSTATUS_VTW _AC(0x00200000, UL) -#define HSTATUS_VTVM _AC(0x00100000, UL) -#define HSTATUS_VGEIN _AC(0x0003f000, UL) +#define HSTATUS_VTSR _AC(0x00400000, UXL) +#define HSTATUS_VTW _AC(0x00200000, UXL) +#define HSTATUS_VTVM _AC(0x00100000, UXL) +#define HSTATUS_VGEIN _AC(0x0003f000, UXL) #define HSTATUS_VGEIN_SHIFT 12 -#define HSTATUS_HU _AC(0x00000200, UL) -#define HSTATUS_SPVP _AC(0x00000100, UL) -#define HSTATUS_SPV _AC(0x00000080, UL) -#define HSTATUS_GVA _AC(0x00000040, UL) -#define HSTATUS_VSBE _AC(0x00000020, UL) +#define HSTATUS_HU _AC(0x00000200, UXL) +#define HSTATUS_SPVP _AC(0x00000100, UXL) +#define HSTATUS_SPV _AC(0x00000080, UXL) +#define HSTATUS_GVA _AC(0x00000040, UXL) +#define HSTATUS_VSBE _AC(0x00000020, UXL) /* HGATP flags */ -#define HGATP_MODE_OFF _AC(0, UL) -#define HGATP_MODE_SV32X4 _AC(1, UL) -#define HGATP_MODE_SV39X4 _AC(8, UL) -#define HGATP_MODE_SV48X4 _AC(9, UL) -#define HGATP_MODE_SV57X4 _AC(10, UL) +#define HGATP_MODE_OFF _AC(0, UXL) +#define HGATP_MODE_SV32X4 _AC(1, UXL) +#define HGATP_MODE_SV39X4 _AC(8, UXL) +#define HGATP_MODE_SV48X4 _AC(9, UXL) +#define HGATP_MODE_SV57X4 _AC(10, UXL) #define HGATP32_MODE_SHIFT 31 #define HGATP32_VMID_SHIFT 22 -#define HGATP32_VMID GENMASK(28, 22) -#define HGATP32_PPN GENMASK(21, 0) +#define HGATP32_VMID GENMASK_UXL(28, 22) +#define HGATP32_PPN GENMASK_UXL(21, 0) #define HGATP64_MODE_SHIFT 60 #define HGATP64_VMID_SHIFT 44 -#define HGATP64_VMID GENMASK(57, 44) -#define HGATP64_PPN GENMASK(43, 0) +#define HGATP64_VMID GENMASK_UXL(57, 44) +#define HGATP64_PPN GENMASK_UXL(43, 0) #define HGATP_PAGE_SHIFT 12 -#ifdef CONFIG_64BIT +#if __riscv_xlen == 64 #define HGATP_PPN HGATP64_PPN #define HGATP_VMID_SHIFT HGATP64_VMID_SHIFT #define HGATP_VMID HGATP64_VMID @@ -162,30 +174,30 @@ /* VSIP & HVIP relation */ #define VSIP_TO_HVIP_SHIFT (IRQ_VS_SOFT - IRQ_S_SOFT) -#define VSIP_VALID_MASK ((_AC(1, UL) << IRQ_S_SOFT) | \ - (_AC(1, UL) << IRQ_S_TIMER) | \ - (_AC(1, UL) << IRQ_S_EXT)) +#define VSIP_VALID_MASK ((_AC(1, UXL) << IRQ_S_SOFT) | \ + (_AC(1, UXL) << IRQ_S_TIMER) | \ + (_AC(1, UXL) << IRQ_S_EXT)) /* AIA CSR bits */ #define TOPI_IID_SHIFT 16 -#define TOPI_IID_MASK GENMASK(11, 0) -#define TOPI_IPRIO_MASK GENMASK(7, 0) +#define TOPI_IID_MASK GENMASK_UXL(11, 0) +#define TOPI_IPRIO_MASK GENMASK_UXL(7, 0) #define TOPI_IPRIO_BITS 8 #define TOPEI_ID_SHIFT 16 -#define TOPEI_ID_MASK GENMASK(10, 0) -#define TOPEI_PRIO_MASK GENMASK(10, 0) +#define TOPEI_ID_MASK GENMASK_UXL(10, 0) +#define TOPEI_PRIO_MASK GENMASK_UXL(10, 0) #define ISELECT_IPRIO0 0x30 #define ISELECT_IPRIO15 0x3f -#define ISELECT_MASK GENMASK(8, 0) +#define ISELECT_MASK GENMASK_UXL(8, 0) #define HVICTL_VTI BIT(30) -#define HVICTL_IID GENMASK(27, 16) +#define HVICTL_IID GENMASK_UXL(27, 16) #define HVICTL_IID_SHIFT 16 #define HVICTL_DPR BIT(9) #define HVICTL_IPRIOM BIT(8) -#define HVICTL_IPRIO GENMASK(7, 0) +#define HVICTL_IPRIO GENMASK_UXL(7, 0) /* xENVCFG flags */ #define ENVCFG_STCE (_AC(1, ULL) << 63) @@ -438,14 +450,14 @@ # define RV_IRQ_TIMER IRQ_S_TIMER # define RV_IRQ_EXT IRQ_S_EXT # define RV_IRQ_PMU IRQ_PMU_OVF -# define SIP_LCOFIP (_AC(0x1, UL) << IRQ_PMU_OVF) +# define SIP_LCOFIP (_AC(0x1, UXL) << IRQ_PMU_OVF) #endif /* !CONFIG_RISCV_M_MODE */ /* IE/IP (Supervisor/Machine Interrupt Enable/Pending) flags */ -#define IE_SIE (_AC(0x1, UL) << RV_IRQ_SOFT) -#define IE_TIE (_AC(0x1, UL) << RV_IRQ_TIMER) -#define IE_EIE (_AC(0x1, UL) << RV_IRQ_EXT) +#define IE_SIE (_AC(0x1, UXL) << RV_IRQ_SOFT) +#define IE_TIE (_AC(0x1, UXL) << RV_IRQ_TIMER) +#define IE_EIE (_AC(0x1, UXL) << RV_IRQ_EXT) #ifndef __ASSEMBLY__ From patchwork Sun Nov 12 06:14:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164195 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561759vqg; Sat, 11 Nov 2023 22:17:48 -0800 (PST) X-Google-Smtp-Source: AGHT+IG648IwGt1mEw7fvyi+QGbh+01fcrDgo92LUcRMXZRyxIEDn4di2VC1wV8euxzMw9eAFyXq X-Received: by 2002:a05:6358:60c6:b0:168:e697:ce0d with SMTP id i6-20020a05635860c600b00168e697ce0dmr3000548rwi.31.1699769868349; Sat, 11 Nov 2023 22:17:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769868; cv=none; d=google.com; s=arc-20160816; b=q4fomEDcV4vDB+sXLgkD1j9e8aD4crCFWMyzpOTQKlbN8EKPVMyGXOICkUqMXy3nTI w3R/ZkXiwNFJmUE+vubHWKmNmr1+1mPEJN9c8z+eFkNzVfBCvE2pi2pVtcALv6lh+dZb pDL06zj9EgK74QThYnEDYekWncPDIqPzSzbYs/HkxX/zX0B4R9oSY3ht+1ECS1RF9p16 Wnz8+/DLKoTJmiGwugNeMeP84DpHqGOKh0KhoQIlRT4rNX59gYuhUQyBmOuTQGsnNZ/a 3meS8D44RYqODPEaUoz58ok0brZR3lxc9nYTXFuGUEzhsmXl7Cq6CM9eMixjjXWegLgg Ov7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hXid4lSYxP/xphoZN7Y7PYVUz5dU+pBGvR6PbVmks3Y=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=o90gCSXHixXpXimPd51MBIOU2YiN/cx6OIglJGZT5J2mL0LhtXJIVjQ4+vFIfrBBTL YKrMm4069m0zJRbk8wSUGqtvLxyMqVn3JQhUxtyjC+Bdi8phqcDNGS/8jhDPvdG4qup/ iSm3zpqtiFTh1u4cG5zvS5URRDRaiwwxKt53Bk+BWtNQIEQyXxJMn/FS5gCQQgLGfhqh 5ZOXy6t9ISUfNsFswmyXzqFpy20NAIcV6HnLuipIHe7Dlg7DWsyZRm+7zkAPv+kWjAsE 98aH/0hi6pXMBvekkZiEpD0w8NEHQCfyPAV+s1ITnlyu+xn1bbXyHGaaPFz//tSz24HD vV8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ESyaUcYg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id bn8-20020a056a02030800b005be1ee5beb7si3452018pgb.534.2023.11.11.22.17.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:17:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ESyaUcYg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id C26FE804C4BE; Sat, 11 Nov 2023 22:17:44 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230477AbjKLGRX (ORCPT + 29 others); Sun, 12 Nov 2023 01:17:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230490AbjKLGRJ (ORCPT ); Sun, 12 Nov 2023 01:17:09 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C4E5385E for ; Sat, 11 Nov 2023 22:16:47 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1162C433CB; Sun, 12 Nov 2023 06:16:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769806; bh=qHVG03WWJVZvda3e++Okszof2Z8C09M4hIc5+i1mb4w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ESyaUcYgNZ0w0PeP2kGWLX5Cc0dwRyNfLVnXyg9QegSXPArmxplZ9qX9iQZiScfEQ Rm+EPIvWhBCbTz1kAKaBDTtgnpMq2U0IFUgRl4vPD599u+P4UJtlsliPYEUhWYXCcD HGuVXJuQ3nZc4keZ0OZbGfXF5P4ISH/LZ/c776GY97dKhlM/b4KDihf7Y/rOwCLki5 dBjrHeqm7rXXA5VQeX2ON4PAqAdRv/3futewKN+kSZKpGxof7uenBZyysTjmpJd87Y xms8KaaJztTEunoNDl9dgjtK7zpZ0Vro0gs+xIo90ZVYrYtlpcn0GZcjI8dFoNpuHb LdAJYKuyfZr8g== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 13/38] riscv: s64ilp32: Introduce xlen_t for 64ILP32 kernel Date: Sun, 12 Nov 2023 01:14:49 -0500 Message-Id: <20231112061514.2306187-14-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:17:44 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337889794464782 X-GMAIL-MSGID: 1782337889794464782 From: Guo Ren When s64ilp32 landed, we couldn't use CONFIG_64/32BIT to distingue XLEN data types. Because the xlen is 64, but the long & pointer is 32 for s64ilp32, and s64ilp32 is a 32BIT from the software view. So introduce a new data type - "xlen_t" and use __riscv_xlen instead of CONFIG_64/32BIT ifdef macro. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/csr.h | 20 ++++--- arch/riscv/include/asm/processor.h | 8 +-- arch/riscv/include/asm/ptrace.h | 96 +++++++++++++++--------------- arch/riscv/include/asm/timex.h | 10 ++-- arch/riscv/kernel/process.c | 4 +- arch/riscv/kernel/traps.c | 4 +- arch/riscv/kernel/vector.c | 2 +- arch/riscv/lib/memset.S | 4 +- arch/riscv/mm/fault.c | 2 +- 9 files changed, 78 insertions(+), 72 deletions(-) diff --git a/arch/riscv/include/asm/csr.h b/arch/riscv/include/asm/csr.h index 051c017e1e5e..03acdedc100d 100644 --- a/arch/riscv/include/asm/csr.h +++ b/arch/riscv/include/asm/csr.h @@ -461,9 +461,15 @@ #ifndef __ASSEMBLY__ +#if __riscv_xlen == 64 +typedef u64 xlen_t; +#else +typedef u32 xlen_t; +#endif + #define csr_swap(csr, val) \ ({ \ - unsigned long __v = (unsigned long)(val); \ + xlen_t __v = (xlen_t)(val); \ __asm__ __volatile__ ("csrrw %0, " __ASM_STR(csr) ", %1"\ : "=r" (__v) : "rK" (__v) \ : "memory"); \ @@ -472,7 +478,7 @@ #define csr_read(csr) \ ({ \ - register unsigned long __v; \ + register xlen_t __v; \ __asm__ __volatile__ ("csrr %0, " __ASM_STR(csr) \ : "=r" (__v) : \ : "memory"); \ @@ -481,7 +487,7 @@ #define csr_write(csr, val) \ ({ \ - unsigned long __v = (unsigned long)(val); \ + xlen_t __v = (xlen_t)(val); \ __asm__ __volatile__ ("csrw " __ASM_STR(csr) ", %0" \ : : "rK" (__v) \ : "memory"); \ @@ -489,7 +495,7 @@ #define csr_read_set(csr, val) \ ({ \ - unsigned long __v = (unsigned long)(val); \ + xlen_t __v = (xlen_t)(val); \ __asm__ __volatile__ ("csrrs %0, " __ASM_STR(csr) ", %1"\ : "=r" (__v) : "rK" (__v) \ : "memory"); \ @@ -498,7 +504,7 @@ #define csr_set(csr, val) \ ({ \ - unsigned long __v = (unsigned long)(val); \ + xlen_t __v = (xlen_t)(val); \ __asm__ __volatile__ ("csrs " __ASM_STR(csr) ", %0" \ : : "rK" (__v) \ : "memory"); \ @@ -506,7 +512,7 @@ #define csr_read_clear(csr, val) \ ({ \ - unsigned long __v = (unsigned long)(val); \ + xlen_t __v = (xlen_t)(val); \ __asm__ __volatile__ ("csrrc %0, " __ASM_STR(csr) ", %1"\ : "=r" (__v) : "rK" (__v) \ : "memory"); \ @@ -515,7 +521,7 @@ #define csr_clear(csr, val) \ ({ \ - unsigned long __v = (unsigned long)(val); \ + xlen_t __v = (xlen_t)(val); \ __asm__ __volatile__ ("csrc " __ASM_STR(csr) ", %0" \ : : "rK" (__v) \ : "memory"); \ diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/processor.h index c950a8d9edef..d8bfadaeea32 100644 --- a/arch/riscv/include/asm/processor.h +++ b/arch/riscv/include/asm/processor.h @@ -37,12 +37,12 @@ struct thread_struct { /* Callee-saved registers */ unsigned long ra; unsigned long sp; /* Kernel mode stack */ - unsigned long s[12]; /* s[0]: frame pointer */ + xlen_t s[12]; /* s[0]: frame pointer */ struct __riscv_d_ext_state fstate; unsigned long bad_cause; unsigned long vstate_ctrl; struct __riscv_v_ext_state vstate; -}; +} __attribute__((__aligned__(sizeof(xlen_t)))); /* Whitelist the fstate from the task_struct for hardened usercopy */ static inline void arch_thread_struct_whitelist(unsigned long *offset, @@ -60,8 +60,8 @@ static inline void arch_thread_struct_whitelist(unsigned long *offset, ((struct pt_regs *)(task_stack_page(tsk) + THREAD_SIZE \ - ALIGN(sizeof(struct pt_regs), STACK_ALIGN))) -#define KSTK_EIP(tsk) (task_pt_regs(tsk)->epc) -#define KSTK_ESP(tsk) (task_pt_regs(tsk)->sp) +#define KSTK_EIP(tsk) (ulong)(task_pt_regs(tsk)->epc) +#define KSTK_ESP(tsk) (ulong)(task_pt_regs(tsk)->sp) /* Do necessary setup to start up a newly executed thread. */ diff --git a/arch/riscv/include/asm/ptrace.h b/arch/riscv/include/asm/ptrace.h index b5b0adcc85c1..54cdeec8ee79 100644 --- a/arch/riscv/include/asm/ptrace.h +++ b/arch/riscv/include/asm/ptrace.h @@ -13,53 +13,53 @@ #ifndef __ASSEMBLY__ struct pt_regs { - unsigned long epc; - unsigned long ra; - unsigned long sp; - unsigned long gp; - unsigned long tp; - unsigned long t0; - unsigned long t1; - unsigned long t2; - unsigned long s0; - unsigned long s1; - unsigned long a0; - unsigned long a1; - unsigned long a2; - unsigned long a3; - unsigned long a4; - unsigned long a5; - unsigned long a6; - unsigned long a7; - unsigned long s2; - unsigned long s3; - unsigned long s4; - unsigned long s5; - unsigned long s6; - unsigned long s7; - unsigned long s8; - unsigned long s9; - unsigned long s10; - unsigned long s11; - unsigned long t3; - unsigned long t4; - unsigned long t5; - unsigned long t6; + xlen_t epc; + xlen_t ra; + xlen_t sp; + xlen_t gp; + xlen_t tp; + xlen_t t0; + xlen_t t1; + xlen_t t2; + xlen_t s0; + xlen_t s1; + xlen_t a0; + xlen_t a1; + xlen_t a2; + xlen_t a3; + xlen_t a4; + xlen_t a5; + xlen_t a6; + xlen_t a7; + xlen_t s2; + xlen_t s3; + xlen_t s4; + xlen_t s5; + xlen_t s6; + xlen_t s7; + xlen_t s8; + xlen_t s9; + xlen_t s10; + xlen_t s11; + xlen_t t3; + xlen_t t4; + xlen_t t5; + xlen_t t6; /* Supervisor/Machine CSRs */ - unsigned long status; - unsigned long badaddr; - unsigned long cause; + xlen_t status; + xlen_t badaddr; + xlen_t cause; /* a0 value before the syscall */ - unsigned long orig_a0; + xlen_t orig_a0; }; #define PTRACE_SYSEMU 0x1f #define PTRACE_SYSEMU_SINGLESTEP 0x20 -#ifdef CONFIG_64BIT -#define REG_FMT "%016lx" +#if __riscv_xlen == 64 +#define REG_FMT "%016llx" #else -#define REG_FMT "%08lx" +#define REG_FMT "%08x" #endif #define user_mode(regs) (((regs)->status & SR_PP) == 0) @@ -69,12 +69,12 @@ struct pt_regs { /* Helpers for working with the instruction pointer */ static inline unsigned long instruction_pointer(struct pt_regs *regs) { - return regs->epc; + return (unsigned long)regs->epc; } static inline void instruction_pointer_set(struct pt_regs *regs, unsigned long val) { - regs->epc = val; + regs->epc = (xlen_t)val; } #define profile_pc(regs) instruction_pointer(regs) @@ -82,40 +82,40 @@ static inline void instruction_pointer_set(struct pt_regs *regs, /* Helpers for working with the user stack pointer */ static inline unsigned long user_stack_pointer(struct pt_regs *regs) { - return regs->sp; + return (unsigned long)regs->sp; } static inline void user_stack_pointer_set(struct pt_regs *regs, unsigned long val) { - regs->sp = val; + regs->sp = (xlen_t)val; } /* Valid only for Kernel mode traps. */ static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) { - return regs->sp; + return (unsigned long)regs->sp; } /* Helpers for working with the frame pointer */ static inline unsigned long frame_pointer(struct pt_regs *regs) { - return regs->s0; + return (unsigned long)regs->s0; } static inline void frame_pointer_set(struct pt_regs *regs, unsigned long val) { - regs->s0 = val; + regs->s0 = (xlen_t)val; } static inline unsigned long regs_return_value(struct pt_regs *regs) { - return regs->a0; + return (unsigned long)regs->a0; } static inline void regs_set_return_value(struct pt_regs *regs, unsigned long val) { - regs->a0 = val; + regs->a0 = (xlen_t)val; } extern int regs_query_register_offset(const char *name); diff --git a/arch/riscv/include/asm/timex.h b/arch/riscv/include/asm/timex.h index a06697846e69..bc0d2708bcd6 100644 --- a/arch/riscv/include/asm/timex.h +++ b/arch/riscv/include/asm/timex.h @@ -8,7 +8,7 @@ #include -typedef unsigned long cycles_t; +typedef xlen_t cycles_t; #ifdef CONFIG_RISCV_M_MODE @@ -62,12 +62,12 @@ static inline u32 get_cycles_hi(void) #endif /* !CONFIG_RISCV_M_MODE */ -#ifdef CONFIG_64BIT +#if __riscv_xlen == 64 static inline u64 get_cycles64(void) { return get_cycles(); } -#else /* CONFIG_64BIT */ +#else /* __riscv_xlen == 64 */ static inline u64 get_cycles64(void) { u32 hi, lo; @@ -79,12 +79,12 @@ static inline u64 get_cycles64(void) return ((u64)hi << 32) | lo; } -#endif /* CONFIG_64BIT */ +#endif /* __riscv_xlen == 64 */ #define ARCH_HAS_READ_CURRENT_TIMER static inline int read_current_timer(unsigned long *timer_val) { - *timer_val = get_cycles(); + *timer_val = (unsigned long)get_cycles(); return 0; } diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index 87bdb0d6dbf3..599b1966a166 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -46,8 +46,8 @@ void __show_regs(struct pt_regs *regs) show_regs_print_info(KERN_DEFAULT); if (!user_mode(regs)) { - pr_cont("epc : %pS\n", (void *)regs->epc); - pr_cont(" ra : %pS\n", (void *)regs->ra); + pr_cont("epc : %pS\n", (void *)(ulong)regs->epc); + pr_cont(" ra : %pS\n", (void *)(ulong)regs->ra); } pr_cont("epc : " REG_FMT " ra : " REG_FMT " sp : " REG_FMT "\n", diff --git a/arch/riscv/kernel/traps.c b/arch/riscv/kernel/traps.c index f910dfccbf5d..8fcef4fa43d0 100644 --- a/arch/riscv/kernel/traps.c +++ b/arch/riscv/kernel/traps.c @@ -100,7 +100,7 @@ void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr) if (show_unhandled_signals && unhandled_signal(tsk, signo) && printk_ratelimit()) { pr_info("%s[%d]: unhandled signal %d code 0x%x at 0x" REG_FMT, - tsk->comm, task_pid_nr(tsk), signo, code, addr); + tsk->comm, task_pid_nr(tsk), signo, code, (xlen_t)addr); print_vma_addr(KERN_CONT " in ", instruction_pointer(regs)); pr_cont("\n"); __show_regs(regs); @@ -265,7 +265,7 @@ void handle_break(struct pt_regs *regs) current->thread.bad_cause = regs->cause; if (user_mode(regs)) - force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)regs->epc); + force_sig_fault(SIGTRAP, TRAP_BRKPT, (void __user *)instruction_pointer(regs)); #ifdef CONFIG_KGDB else if (notify_die(DIE_TRAP, "EBREAK", regs, 0, regs->cause, SIGTRAP) == NOTIFY_STOP) diff --git a/arch/riscv/kernel/vector.c b/arch/riscv/kernel/vector.c index 8d92fb6c522c..72ff3916eed6 100644 --- a/arch/riscv/kernel/vector.c +++ b/arch/riscv/kernel/vector.c @@ -133,7 +133,7 @@ EXPORT_SYMBOL_GPL(riscv_v_vstate_ctrl_user_allowed); bool riscv_v_first_use_handler(struct pt_regs *regs) { - u32 __user *epc = (u32 __user *)regs->epc; + u32 __user *epc = (u32 __user *)(ulong)regs->epc; u32 insn = (u32)regs->badaddr; /* Do not handle if V is not supported, or disabled */ diff --git a/arch/riscv/lib/memset.S b/arch/riscv/lib/memset.S index 34c5360c6705..34be7bf51731 100644 --- a/arch/riscv/lib/memset.S +++ b/arch/riscv/lib/memset.S @@ -38,7 +38,7 @@ WEAK(memset) or a1, a3, a1 slli a3, a1, 16 or a1, a3, a1 -#ifdef CONFIG_64BIT +#if __riscv_xlen == 64 slli a3, a1, 32 or a1, a3, a1 #endif @@ -58,7 +58,7 @@ WEAK(memset) /* Jump into loop body */ /* Assumes 32-bit instruction lengths */ la a5, 3f -#ifdef CONFIG_64BIT +#if __riscv_xlen == 64 srli a4, a4, 1 #endif add a5, a5, a4 diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index 6ea2cce4cc17..3d410dad28f8 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -28,7 +28,7 @@ static void die_kernel_fault(const char *msg, unsigned long addr, bust_spinlocks(1); pr_alert("Unable to handle kernel %s at virtual address " REG_FMT "\n", msg, - addr); + (xlen_t)addr); bust_spinlocks(0); die(regs, "Oops"); From patchwork Sun Nov 12 06:14:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164201 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561815vqg; Sat, 11 Nov 2023 22:18:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IHTVygcoIU8lZAjYqcxvjy1xxBJ6I5MyWBkrTAuGP0/R2MSYE7N9Cey/3kvxzqylXaubKXy X-Received: by 2002:a05:6358:e496:b0:169:8620:a228 with SMTP id by22-20020a056358e49600b001698620a228mr3149550rwb.3.1699769882243; Sat, 11 Nov 2023 22:18:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769882; cv=none; d=google.com; s=arc-20160816; b=d7q2DWNICkGX+g/hx4W8epvs7pkgYwXlIfwWga3Nm6q9MZFCo1jhw0KcRglAGjjJGl dMiYJExHKWCLkZpEpbdY+OuJ/hQh8Ffj0MIbTXXm3cwKbdIHvr7pNjN9xVYVYbHHSd4T 0DDQs21gijF4UX8+AHUVBBXOp2bFodbgK9Wg09qp0wAb4AZTbqrb2dYgovIPTApZHDUp zXTTOxW81tVW3ywoFQBQZAR9g3Do1PdTKJoOFxFQQfuOvu8dWbd+6Q9J0dTZqEpK0vq6 uEc1xETjAkHryv0ow5VnK6cne/O9P7SaPiWWwhXyAT6JhTxTqokkeJCVHUsEhKUeMQt1 DQww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=nlv8TTGbp5uiwl/pcBtc2wG3kuONrk0O9O0H3vExEdM=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=FWGF87friWeg02Im1wLlDnepQmUJ1k1urwTmuNhxizLhoC8foACulNgCTtiTt5KWHs uZ9NZxMUHc77b+3P2hT0h8ESzrBlkzuEDxxXjPQZm6ZsRrXs4WXu6nHkCu2r+Zk9xqyU GGtf403j37+BsT+NWvnyE1z4CVWGrzwRFR8mm6Kbx2JeDZ5/YKT14Sjf3RawTkzeOLhm X9Wzq/DSOvzILiuV42qKPZ2ekO86iNF7g74r6q/DstihsgI/T0pJnpWAFKi2TlUYaqys 1UQBQAP102zX/nnLtYd3K5sysf264XEaFy+5dWrNzU0SX04rN8prdqgvIPkJu5WhoxQn r9Og== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="sAK0/0Gp"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id z7-20020a6553c7000000b005be18ddf8b4si3220616pgr.646.2023.11.11.22.18.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:18:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="sAK0/0Gp"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 130D5804C1AD; Sat, 11 Nov 2023 22:17:58 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231190AbjKLGR2 (ORCPT + 29 others); Sun, 12 Nov 2023 01:17:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52672 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230263AbjKLGRP (ORCPT ); Sun, 12 Nov 2023 01:17:15 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A14546A2 for ; Sat, 11 Nov 2023 22:16:53 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5991FC43391; Sun, 12 Nov 2023 06:16:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769812; bh=KzofBJzeuKk0qp4eF9L9DEUx4e3dBBIpOr5GwI2s4xM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sAK0/0GpSij3kNhaPmA6LVyHDvgxIc1JHc5AkAwijYyI8lphNpC1PjlRLdOFcsOxa EowF9tSMXhm6SCbPasrxhCfW9nYjdxGNITDjjzS52qsBRltnf+n9uXjHQ32DzTfGhc HQ5FAG778U0Nol34rADQidp3Y4zUk0nRzpYSyDq3Nj0Z0bEJVkeNCXgg1GB+g+CMye uLsQyuAE3i8i1P8STb3mvrJCx/1wzdG0AObitTdYUsAs/7EiTJNNiRnK4doG/wzG3e S90BCyjQi0iB5S/2f2OT/dqhU/MC6m5P9dt308Xi2BESDHoRMgQbHPVvoF+E508OFN ItPJoQXnweIMg== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 14/38] riscv: s64ilp32: Add sbi support Date: Sun, 12 Nov 2023 01:14:50 -0500 Message-Id: <20231112061514.2306187-15-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:17:58 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337904372195140 X-GMAIL-MSGID: 1782337904372195140 From: Guo Ren The sbi uses xlen as base argument elements to connect m-mode and s-mode. The previous implementation assumes sizeof(xlen_t) = sizeof(long), but the s64ilp32's are different. So modify the sbi code suitable with the s64ilp32 change. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/cpu_ops_sbi.h | 4 ++-- arch/riscv/include/asm/sbi.h | 24 ++++++++++++------------ arch/riscv/kernel/cpu_ops_sbi.c | 4 ++-- arch/riscv/kernel/sbi.c | 24 ++++++++++++------------ 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/arch/riscv/include/asm/cpu_ops_sbi.h b/arch/riscv/include/asm/cpu_ops_sbi.h index d6e4665b3195..d967adad6b48 100644 --- a/arch/riscv/include/asm/cpu_ops_sbi.h +++ b/arch/riscv/include/asm/cpu_ops_sbi.h @@ -19,8 +19,8 @@ extern const struct cpu_operations cpu_ops_sbi; * @stack_ptr: A pointer to the hart specific sp */ struct sbi_hart_boot_data { - void *task_ptr; - void *stack_ptr; + xlen_t task_ptr; + xlen_t stack_ptr; }; #endif diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index 5b4a1bf5f439..501e06e52078 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -123,16 +123,16 @@ enum sbi_ext_pmu_fid { }; union sbi_pmu_ctr_info { - unsigned long value; + xlen_t value; struct { - unsigned long csr:12; - unsigned long width:6; + xlen_t csr:12; + xlen_t width:6; #if __riscv_xlen == 32 - unsigned long reserved:13; + xlen_t reserved:13; #else - unsigned long reserved:45; + xlen_t reserved:45; #endif - unsigned long type:1; + xlen_t type:1; }; }; @@ -254,15 +254,15 @@ enum sbi_pmu_ctr_type { extern unsigned long sbi_spec_version; struct sbiret { - long error; - long value; + xlen_t error; + xlen_t value; }; void sbi_init(void); -struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0, - unsigned long arg1, unsigned long arg2, - unsigned long arg3, unsigned long arg4, - unsigned long arg5); +struct sbiret sbi_ecall(int ext, int fid, xlen_t arg0, + xlen_t arg1, xlen_t arg2, + xlen_t arg3, xlen_t arg4, + xlen_t arg5); void sbi_console_putchar(int ch); int sbi_console_getchar(void); diff --git a/arch/riscv/kernel/cpu_ops_sbi.c b/arch/riscv/kernel/cpu_ops_sbi.c index efa0f0816634..01a1e270ec1d 100644 --- a/arch/riscv/kernel/cpu_ops_sbi.c +++ b/arch/riscv/kernel/cpu_ops_sbi.c @@ -71,8 +71,8 @@ static int sbi_cpu_start(unsigned int cpuid, struct task_struct *tidle) /* Make sure tidle is updated */ smp_mb(); - bdata->task_ptr = tidle; - bdata->stack_ptr = task_stack_page(tidle) + THREAD_SIZE; + bdata->task_ptr = (ulong)tidle; + bdata->stack_ptr = (ulong)task_stack_page(tidle) + THREAD_SIZE; /* Make sure boot data is updated */ smp_mb(); hsm_data = __pa(bdata); diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c index c672c8ba9a2a..88eea3a99ee0 100644 --- a/arch/riscv/kernel/sbi.c +++ b/arch/riscv/kernel/sbi.c @@ -22,21 +22,21 @@ static int (*__sbi_rfence)(int fid, const struct cpumask *cpu_mask, unsigned long start, unsigned long size, unsigned long arg4, unsigned long arg5) __ro_after_init; -struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0, - unsigned long arg1, unsigned long arg2, - unsigned long arg3, unsigned long arg4, - unsigned long arg5) +struct sbiret sbi_ecall(int ext, int fid, xlen_t arg0, + xlen_t arg1, xlen_t arg2, + xlen_t arg3, xlen_t arg4, + xlen_t arg5) { struct sbiret ret; - register uintptr_t a0 asm ("a0") = (uintptr_t)(arg0); - register uintptr_t a1 asm ("a1") = (uintptr_t)(arg1); - register uintptr_t a2 asm ("a2") = (uintptr_t)(arg2); - register uintptr_t a3 asm ("a3") = (uintptr_t)(arg3); - register uintptr_t a4 asm ("a4") = (uintptr_t)(arg4); - register uintptr_t a5 asm ("a5") = (uintptr_t)(arg5); - register uintptr_t a6 asm ("a6") = (uintptr_t)(fid); - register uintptr_t a7 asm ("a7") = (uintptr_t)(ext); + register xlen_t a0 asm ("a0") = arg0; + register xlen_t a1 asm ("a1") = arg1; + register xlen_t a2 asm ("a2") = arg2; + register xlen_t a3 asm ("a3") = arg3; + register xlen_t a4 asm ("a4") = arg4; + register xlen_t a5 asm ("a5") = arg5; + register xlen_t a6 asm ("a6") = fid; + register xlen_t a7 asm ("a7") = ext; asm volatile ("ecall" : "+r" (a0), "+r" (a1) : "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6), "r" (a7) From patchwork Sun Nov 12 06:14:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164203 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561882vqg; Sat, 11 Nov 2023 22:18:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IHmD/0RJjXIyZdGXmrekPdnwu0mjoXUTV8VDIJtrLABxl3uP4klp3UZOZJzofLbWULREON6 X-Received: by 2002:a05:6870:4154:b0:1e9:8ab9:11cd with SMTP id r20-20020a056870415400b001e98ab911cdmr5392808oad.45.1699769896285; Sat, 11 Nov 2023 22:18:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769896; cv=none; d=google.com; s=arc-20160816; b=uD1y/mRDgQwU6gjd/ZiTyo4qspoyH4rPb7gbErFWOeq44MVgXsSnldmCiga+b7ho6v U3Eqo9MvRBA/NmzqY3OS3N2eKbhDyApiWnBIy9wyT0XZcKFLx+Jjp3L+95w/7Tcd7AE9 LIcvy3Eeak9sg+AjiSGTCaLsYn8g2IX2D+ENHeXWNa+2QifyJXBjMRXLcCo7ZqUOwo0C Y7T/ZpGwX7PrGVJsaVrerS7cJ795H3wH0k9EQv2sXkP2ztg2ScvzigZIcN37uBIcmwSw CwCZf6Ku8k0dZqu4WbmkgW+TWMIFF7PnTNekSPlxYSlsCVK+mJ4D8gz2DgqYsXkQQ2aF XyfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+lAYR8J7V1Jb1PHc3bkfQAJSHLpY0PHu38cfUl+dOB0=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=gYfzP8RumeFYjBWmN8O/K4fqh8kUC2UqTgTqZfT4IT9yBudK4sfi9uQB3hHH9C3RfK NWG7pfWDAecyBIOpN/gEZ5u9FAj9S7TdVs/iccpN5ywRVmoJ26u8GgYp0pM9roLab8up GSmpucDMEtdVbSXWd2YENNmmDCGTe95Qp67WHSQC/rANsJSbi+15wtyBeJIXOw8uEvAW Kn+7Lf+NRdUgwoWYPzQQzCuK7EQUhI7Eq1R3IV00FB8e1qIlJzO3mULEdcCAN/+mn6MZ OGcVkkP2wlsgtNFO00dd4NCo6/uuYwJu3qneGn4OpA2FoNwCMV3sSs+KbT0wazotIdnR HQGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GW5NoU+I; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id bf5-20020a170902b90500b001cc2c4fdbecsi2914428plb.649.2023.11.11.22.18.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:18:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GW5NoU+I; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id BF798804C643; Sat, 11 Nov 2023 22:18:13 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231145AbjKLGRi (ORCPT + 29 others); Sun, 12 Nov 2023 01:17:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60438 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229929AbjKLGRX (ORCPT ); Sun, 12 Nov 2023 01:17:23 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 42EF730EA for ; Sat, 11 Nov 2023 22:16:59 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1329EC433C7; Sun, 12 Nov 2023 06:16:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769819; bh=qenSRo414Gnjw+wPdqdNQw1NfHZPaPnw9rVg2h6yowQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GW5NoU+InHnAHzio8lhZKosW6whn3JdHi4Q/dDOScdYFN7QjZKPUKXXs98dTQuw5h 45fW+a6Y1YPCVIa5T3cobF6lQUZPjawcP2Rzn99jvtgGE2vyakm09BCpPlZb+f/Wpq V7/4h6YGJTPwA6oP6a40o0SLfLK1XOhj0GOTCKell0jihsJuECN2NX8iPeKiTVDdC3 Cuu39HlcRospB1qSF0c6582N41+vi7tkSLS1EraM9vhN/CiwbKNoyOwJUVU4DgYCVt boYhSj6vK3kQM6iBLcEMiNPReyKIpaZOH1WO1KMsffukC32HjUXV4rWj7RpgPeJVkF 64h+bIhWZynBQ== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 15/38] riscv: s64ilp32: Add asid support Date: Sun, 12 Nov 2023 01:14:51 -0500 Message-Id: <20231112061514.2306187-16-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:18:13 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337918908080067 X-GMAIL-MSGID: 1782337918908080067 From: Guo Ren The s32ilp32 uses 9 bits as asid_bits because of the xlen=32 limitation of CSR. The xlen of s64ilp32 is 64 bits in width, and the SATP CSR format is the same for Sv32, Sv39, Sv48, and Sv57. So this patch makes asid mechanism support s64ilp32 with maximum num_asids. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/tlbflush.h | 2 +- arch/riscv/mm/context.c | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/arch/riscv/include/asm/tlbflush.h b/arch/riscv/include/asm/tlbflush.h index a09196f8de68..6793c3f835a0 100644 --- a/arch/riscv/include/asm/tlbflush.h +++ b/arch/riscv/include/asm/tlbflush.h @@ -12,7 +12,7 @@ #include #ifdef CONFIG_MMU -extern unsigned long asid_mask; +extern xlen_t asid_mask; static inline void local_flush_tlb_all(void) { diff --git a/arch/riscv/mm/context.c b/arch/riscv/mm/context.c index 12e22e7330e7..9eab9aa87dc6 100644 --- a/arch/riscv/mm/context.c +++ b/arch/riscv/mm/context.c @@ -20,9 +20,9 @@ DEFINE_STATIC_KEY_FALSE(use_asid_allocator); -static unsigned long asid_bits; +static xlen_t asid_bits; static unsigned long num_asids; -unsigned long asid_mask; +xlen_t asid_mask; static atomic_long_t current_version; @@ -227,14 +227,18 @@ static inline void set_mm(struct mm_struct *prev, static int __init asids_init(void) { - unsigned long old; + xlen_t old; /* Figure-out number of ASID bits in HW */ old = csr_read(CSR_SATP); asid_bits = old | (SATP_ASID_MASK << SATP_ASID_SHIFT); csr_write(CSR_SATP, asid_bits); asid_bits = (csr_read(CSR_SATP) >> SATP_ASID_SHIFT) & SATP_ASID_MASK; - asid_bits = fls_long(asid_bits); +#if __riscv_xlen == 64 + asid_bits = fls64(asid_bits); +#else + asid_bits = fls(asid_bits); +#endif csr_write(CSR_SATP, old); /* @@ -267,9 +271,9 @@ static int __init asids_init(void) static_branch_enable(&use_asid_allocator); pr_info("ASID allocator using %lu bits (%lu entries)\n", - asid_bits, num_asids); + (ulong)asid_bits, num_asids); } else { - pr_info("ASID allocator disabled (%lu bits)\n", asid_bits); + pr_info("ASID allocator disabled (%lu bits)\n", (ulong)asid_bits); } return 0; From patchwork Sun Nov 12 06:14:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164210 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562095vqg; Sat, 11 Nov 2023 22:19:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IH227AFSxKXGNGTpPFiSFy3GpRBJFFb3GmPSlIbh+Feqj7hHIHdER2jY11QznGCPtMqgirO X-Received: by 2002:aca:1311:0:b0:3b5:6467:8cf5 with SMTP id e17-20020aca1311000000b003b564678cf5mr4447203oii.54.1699769942296; Sat, 11 Nov 2023 22:19:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769942; cv=none; d=google.com; s=arc-20160816; b=Lz+VdNEGdolzRVEm4T+zDGDya2euEly7V3hJoPGx7c62XAsI7+5V4/ZxQWKT8ABgaE CWH6OggnBxXKYxiKTdcKn3XmzlDFg7vwynS8StAsIzrRkx8Wvm6hO+dxHsnAilYgA2FJ B0D6U2hT7iHipvRW5XAHaIPmrOZOBtl93GgbSfmkZQE/+0tl7mSDwK13nz2Cv3bLv+2c uPqBnmkMnQau1dj7VW5Wd7IP9NORLr8kvB7Scghds6s9t6CSK9HisSjsXgLu05vRz6bB Qc9Qk6wNw+Yw2ZuHR3csFYhp+h7yK/MRd6ByORGH1ccI0I8DBOoi6VdbrsgJaupnTONI 3cRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Ji1Mc7p9NeN7ni8SImHOB1bwuNKqf0h7t+8rYvtYaPk=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=N+GaKMHerFal2Gr7jRCbkrBEwUL+B+iyC6gck8e1gfFmb5s2fV4wTVsoq2XGpXACwa 6aLlnNTkG2K2k3rOljoLI7Ie8EIKsXnEjDj800xwtH3fo70DPUFN07mp8MOI/XKuzTHt KRGQmsr15PIC+DfEIF8U7zRnJwzkz+2+HKb/LKFrRtd77NUM2qVjZ92IJwn8jTs+hRj4 xpSTLydGDXuco0eMldKtSTbctFcePfOAfasQ6wNiUCBo5jLPprqbdnqhz8ol5ZTBjsQg eQTBqtiBOa5ljPHSU4Rj77TY1cC2H74UGas3yQ6+ZmtAiI++ADXBfEml4ct0f8Q4yG7Y 0G/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="bV45f/Jg"; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id x17-20020a170902ec9100b001c3323ff53asi3455139plg.139.2023.11.11.22.19.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:19:02 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="bV45f/Jg"; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 81C948078C83; Sat, 11 Nov 2023 22:18:40 -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 S231282AbjKLGRt (ORCPT + 29 others); Sun, 12 Nov 2023 01:17:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231273AbjKLGRc (ORCPT ); Sun, 12 Nov 2023 01:17:32 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B74649E4 for ; Sat, 11 Nov 2023 22:17:05 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82818C43395; Sun, 12 Nov 2023 06:16:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769824; bh=DWYO8HfbmOxkQ7VOjim84D6teiWTnlk7kC8va8cLcv0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bV45f/JgIiGFRTg5S0AN/PHrCkBHhftZm7i/2pzQT6PrA1mtuK9niI57Wbnc6hZNn DNzPjVhb5yf9WJ05jumRT1MgJqhv47bGnaa52/ecG1CgPF8f8YeLsAV98KQIT5dwC+ MGGcsA+XhgKzrpJ6Oso3SNMf0ULjY8bi9H11DoxDFBgmkKzjGdjYU/zzmNa7MCiQRe qQG1C3hL5jhotJdWO7GMu/BYzaq71+gd6+1JnjZcgJajOqu4vfN1mXj0KLdubPqbUx +1aElC/nIN0Np8bwNn60bYFGYominKepff/ED6pMd5X1zz48wOyfhkEmq5dqPVOxRO 2DRwStoq9f/xA== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 16/38] riscv: s64ilp32: Introduce PTR_L and PTR_S Date: Sun, 12 Nov 2023 01:14:52 -0500 Message-Id: <20231112061514.2306187-17-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 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]); Sat, 11 Nov 2023 22:18:40 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337967248479958 X-GMAIL-MSGID: 1782337967248479958 From: Guo Ren REG_L and REG_S can't satisfy s64ilp32 situation, because its __SIZEOF_POINTER__*8 != __riscv_xlen. So we introduce new PTR_L and PTR_S macro to help head.S and entry.S deal with the pointer data type and replace all REG_L/S by PTR_L/S to fit the current algorithm in memcpy, memove, memset, strcmp, strlen and strncmp. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/asm.h | 5 +++++ arch/riscv/kernel/entry.S | 24 ++++++++++++------------ arch/riscv/kernel/head.S | 8 ++++---- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/arch/riscv/include/asm/asm.h b/arch/riscv/include/asm/asm.h index 114bbadaef41..1cf20027bdbd 100644 --- a/arch/riscv/include/asm/asm.h +++ b/arch/riscv/include/asm/asm.h @@ -38,6 +38,7 @@ #define RISCV_SZPTR "8" #define RISCV_LGPTR "3" #endif +#define __PTR_SEL(a, b) __ASM_STR(a) #elif __SIZEOF_POINTER__ == 4 #ifdef __ASSEMBLY__ #define RISCV_PTR .word @@ -48,10 +49,14 @@ #define RISCV_SZPTR "4" #define RISCV_LGPTR "2" #endif +#define __PTR_SEL(a, b) __ASM_STR(b) #else #error "Unexpected __SIZEOF_POINTER__" #endif +#define PTR_L __PTR_SEL(ld, lw) +#define PTR_S __PTR_SEL(sd, sw) + #if (__SIZEOF_INT__ == 4) #define RISCV_INT __ASM_STR(.word) #define RISCV_SZINT __ASM_STR(4) diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S index 143a2bb3e697..7dc7603a86ba 100644 --- a/arch/riscv/kernel/entry.S +++ b/arch/riscv/kernel/entry.S @@ -25,19 +25,19 @@ SYM_CODE_START(handle_exception) _restore_kernel_tpsp: csrr tp, CSR_SCRATCH - REG_S sp, TASK_TI_KERNEL_SP(tp) + PTR_S sp, TASK_TI_KERNEL_SP(tp) #ifdef CONFIG_VMAP_STACK addi sp, sp, -(PT_SIZE_ON_STACK) srli sp, sp, THREAD_SHIFT andi sp, sp, 0x1 bnez sp, handle_kernel_stack_overflow - REG_L sp, TASK_TI_KERNEL_SP(tp) + PTR_L sp, TASK_TI_KERNEL_SP(tp) #endif _save_context: - REG_S sp, TASK_TI_USER_SP(tp) - REG_L sp, TASK_TI_KERNEL_SP(tp) + PTR_S sp, TASK_TI_USER_SP(tp) + PTR_L sp, TASK_TI_KERNEL_SP(tp) addi sp, sp, -(PT_SIZE_ON_STACK) REG_S x1, PT_RA(sp) REG_S x3, PT_GP(sp) @@ -53,7 +53,7 @@ _save_context: */ li t0, SR_SUM | SR_FS_VS - REG_L s0, TASK_TI_USER_SP(tp) + PTR_L s0, TASK_TI_USER_SP(tp) csrrc s1, CSR_STATUS, t0 csrr s2, CSR_EPC csrr s3, CSR_TVAL @@ -96,7 +96,7 @@ _save_context: add t0, t1, t0 /* Check if exception code lies within bounds */ bgeu t0, t2, 1f - REG_L t0, 0(t0) + PTR_L t0, 0(t0) jr t0 1: tail do_trap_unknown @@ -121,7 +121,7 @@ SYM_CODE_START_NOALIGN(ret_from_exception) /* Save unwound kernel stack pointer in thread_info */ addi s0, sp, PT_SIZE_ON_STACK - REG_S s0, TASK_TI_KERNEL_SP(tp) + PTR_S s0, TASK_TI_KERNEL_SP(tp) /* * Save TP into the scratch register , so we can find the kernel data @@ -239,7 +239,7 @@ restore_caller_reg: REG_S x5, PT_T0(sp) save_from_x6_to_x31 - REG_L s0, TASK_TI_KERNEL_SP(tp) + PTR_L s0, TASK_TI_KERNEL_SP(tp) csrr s1, CSR_STATUS csrr s2, CSR_EPC csrr s3, CSR_TVAL @@ -283,8 +283,8 @@ SYM_FUNC_START(__switch_to) li a4, TASK_THREAD_RA add a3, a0, a4 add a4, a1, a4 - REG_S ra, TASK_THREAD_RA_RA(a3) - REG_S sp, TASK_THREAD_SP_RA(a3) + PTR_S ra, TASK_THREAD_RA_RA(a3) + PTR_S sp, TASK_THREAD_SP_RA(a3) REG_S s0, TASK_THREAD_S0_RA(a3) REG_S s1, TASK_THREAD_S1_RA(a3) REG_S s2, TASK_THREAD_S2_RA(a3) @@ -298,8 +298,8 @@ SYM_FUNC_START(__switch_to) REG_S s10, TASK_THREAD_S10_RA(a3) REG_S s11, TASK_THREAD_S11_RA(a3) /* Restore context from next->thread */ - REG_L ra, TASK_THREAD_RA_RA(a4) - REG_L sp, TASK_THREAD_SP_RA(a4) + PTR_L ra, TASK_THREAD_RA_RA(a4) + PTR_L sp, TASK_THREAD_SP_RA(a4) REG_L s0, TASK_THREAD_S0_RA(a4) REG_L s1, TASK_THREAD_S1_RA(a4) REG_L s2, TASK_THREAD_S2_RA(a4) diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S index 11c3b94c4534..bff21ad7f077 100644 --- a/arch/riscv/kernel/head.S +++ b/arch/riscv/kernel/head.S @@ -42,7 +42,7 @@ ENTRY(_start) /* Image load offset (0MB) from start of RAM for M-mode */ .dword 0 #else -#if __riscv_xlen == 64 +#ifdef CONFIG_64BIT /* Image load offset(2MB) from start of RAM */ .dword 0x200000 #else @@ -75,7 +75,7 @@ relocate_enable_mmu: /* Relocate return address */ la a1, kernel_map XIP_FIXUP_OFFSET a1 - REG_L a1, KERNEL_MAP_VIRT_ADDR(a1) + PTR_L a1, KERNEL_MAP_VIRT_ADDR(a1) la a2, _start sub a1, a1, a2 add ra, ra, a1 @@ -348,8 +348,8 @@ clear_bss_done: */ .Lwait_for_cpu_up: /* FIXME: We should WFI to save some energy here. */ - REG_L sp, (a1) - REG_L tp, (a2) + PTR_L sp, (a1) + PTR_L tp, (a2) beqz sp, .Lwait_for_cpu_up beqz tp, .Lwait_for_cpu_up fence From patchwork Sun Nov 12 06:14:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164204 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561905vqg; Sat, 11 Nov 2023 22:18:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IERmugRuJDQCCtkjjVLyxFhP4BIcLub9D3WcCVEjoNqgU5tfP+J3PNv1hkGFBx7mlTyrvP0 X-Received: by 2002:aa7:8892:0:b0:6be:c6f7:f9fd with SMTP id z18-20020aa78892000000b006bec6f7f9fdmr13499555pfe.11.1699769901743; Sat, 11 Nov 2023 22:18:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769901; cv=none; d=google.com; s=arc-20160816; b=xzmpMwPkhiLncZ9wRSnu3Xgycn8fxVuakJL867cD1RFmd6kQfcCL2J0Ja7d2QUfiaP +JB9VvlRQ1d4J5dM1dpifP962kmopA3e9Wk3Rqz1f+FmNKXQKVD+g/Nh0+DRC8iDTSC7 V6kHvq6A1jjh0e5UZirIT7txwqs1ucSOpkrmXI/lBjK9i+U7ivo2IU+1rGMO11jW0e0B Tds9F757Ue+4/KJKh0UKkm5DqDjAX6lyS/ORE42naNHjrnz9sKkx+XGmX/x4OP+UHc5O 0JddK+Si/pnecyKlOjPb6KnKmaT66u+0ZiKCj4SfAyzxeRi0Cg37a9KoqGE74s4Ninrc ToOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=QgDsjPLT8jngiUJ7yjCPNjCJVEN98zhJX3Zxuw6ZIGA=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=casyG3Mk/IY4jCL3vH7QMYjAgYaqLq61tNshjXXi8HlKS8WQrkkWTKZE9vw/5pYiMg 9tCNM868KNrNPYROGmhGMwbTrzyfp4cmJ4xQPpaNd73UMEwkq723VftoizJ2TE3kUWEb 5WC7DBC/0WBBCsUWKq5i8pquXzDOxDr0dr7UNdHHtE0Qezly5E3S0g/kzlQpEoU36Vit NFGqMuLq+OmdLifgp+Rl+nlUsya+y1WRDsNmVaF7YArSminRYLH56fx442cXLRgQfvN3 zCuWB1tiGlc4K/FASgzq/RuaIsucndB5+3JbdL4ei2zP0UKJuvIqnOlZU5r4j8LDX/ic +H0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fBDFivBo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id x188-20020a6363c5000000b0054fd947f66dsi3093171pgb.210.2023.11.11.22.18.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:18:21 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fBDFivBo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id E3E32804C4BB; Sat, 11 Nov 2023 22:18:19 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230264AbjKLGSA (ORCPT + 29 others); Sun, 12 Nov 2023 01:18:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60472 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230486AbjKLGRh (ORCPT ); Sun, 12 Nov 2023 01:17:37 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A3A023A87 for ; Sat, 11 Nov 2023 22:17:11 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3AAE4C433C9; Sun, 12 Nov 2023 06:17:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769831; bh=xvz1rya1E02xCfXGsQlwgCTl+atNWzPl7o+rS0iSLkM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fBDFivBo3T7J24ZloTMhISNIG/bND0s7vrrL2C1z8x/tqG8opLe99Kjlqlz3jI79y uhVNHaWLH1ArFXGXJEiub688pP0XTpJCHrrhV2xUf6gEw2MjHITF02A1OGHKPSvyMm gNV7Nk3ktsoNitWRPxry1/3uJKsYM9LO/fesvwLysYBUXJAdctqslxu60+Xi3YOeZG Nz4hNdgyJbdNDW+icuW/5mS5/HQq4rq8O/X2y7OsxXv5Ro6gNIRmAyXqNN58djw1sI PbAF/PpwCCzWVyeqctUo5NQ6CWFpLrSM5VNtrKLDVlU2i4CyPLVAQfVkRd+2tI6xaF ABhUyCTRybIjg== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 17/38] riscv: s64ilp32: Adjust TASK_SIZE for s64ilp32 kernel Date: Sun, 12 Nov 2023 01:14:53 -0500 Message-Id: <20231112061514.2306187-18-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:18:20 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337924739998411 X-GMAIL-MSGID: 1782337924739998411 From: Guo Ren The RV64ILP32 32-bit Linux kernel uses the same userspace address range as the 64-bit Linux compat mode, about 2GB. They have no difference from the hardware view, and all are running ILP32 on a 64-bit ISA. But the standard 32ilp32 Linux has a slightly bigger userspace address space, about 2.4GB. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/pgtable.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 75970ee2bda2..e5e7a929949a 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -839,20 +839,25 @@ static inline pte_t pte_swp_clear_exclusive(pte_t pte) * "load and store effective addresses, which are 64bits, must have bits * 63–48 all equal to bit 47, or else a page-fault exception will occur." */ +#define TASK_SIZE_32 (_AC(0x80000000, UL) - PAGE_SIZE) + #ifdef CONFIG_64BIT #define TASK_SIZE_64 (PGDIR_SIZE * PTRS_PER_PGD / 2) #define TASK_SIZE_MIN (PGDIR_SIZE_L3 * PTRS_PER_PGD / 2) #ifdef CONFIG_COMPAT -#define TASK_SIZE_32 (_AC(0x80000000, UL) - PAGE_SIZE) #define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \ TASK_SIZE_32 : TASK_SIZE_64) #else #define TASK_SIZE TASK_SIZE_64 #endif +#else +#ifdef CONFIG_ARCH_RV64ILP32 +#define TASK_SIZE TASK_SIZE_32 #else #define TASK_SIZE FIXADDR_START +#endif #define TASK_SIZE_MIN TASK_SIZE #endif From patchwork Sun Nov 12 06:14:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164206 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561949vqg; Sat, 11 Nov 2023 22:18:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IGR6VjUhbRNM+wSIqjogQ1hPD6AErzJwyJVhm2lQcW9mBb/4XUa6gRZ/l4NCSlKgVO2wGVb X-Received: by 2002:a05:6808:199:b0:3a9:bb08:d468 with SMTP id w25-20020a056808019900b003a9bb08d468mr4755420oic.55.1699769910093; Sat, 11 Nov 2023 22:18:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769910; cv=none; d=google.com; s=arc-20160816; b=z4XYg+cY7bM4sur7DBZubN+Wz60yHPOP1a6dEIXupk4ffbg/7JgiFMxTyfgdWdfYRm CzLqxL9cM4kV2m1YvJNGn5IQm9L8UZGADMQdrwu68Dlay6cqhtklrPSZTNa3YEefPuAA i5FoAHMKaeCOLrXgZoQgWGeykc9thN7HTglTbApgKq+Sz8U3O91B/+YXh78RRsmeZsiv HQNuO3cykv6RH/xhaYQcCG7ZKLD2op0RIfsNGo6Inyv4IMD5GUjDPLPIR0IyEUrs+Gxg tV8TBX9G+iXZZbuMwT4Vr32n3IE5GgpvZZJlJDBrU99F0Wd+igJu5FpdL5HwofPK/SBX 7low== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+E7poaL3WU9jGiKm2R7RnPWvBSQmVAofvYf2kbGpe5s=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=dOnr9S8ZwrldSghC1ZrwvYhb8016Gk8S3vJc2T53yYJBClcHHYUDJNIKMa0NNPIFpm SKhmLYf3tAqCNpxMhteQ75UdTzHao9J2wsB3BgmzhA0yQc0PjSKPB3hEKk5RTB/K9Ctp /szt84VV7qndTyq9l8bLl9IRXYmb1meNjPKpEfn9lzzY8ZDsfRE6+g4Ck5NH7LfeLQig +mPUikF83nmXbAmsDsQl26VA0/tahEwSMTgC17+rI4d6nFJcRxON8PEN5nq/hLy4mA9s MK1SGEdN0moJslFUb9X6vgawmkRQripfW0hgTCK0tbrMhnqt1bBVQ32vdsjghLNEv+bC 6wYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uXWH+71B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id 28-20020a17090a035c00b00274274bf0ecsi3284831pjf.61.2023.11.11.22.18.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:18:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uXWH+71B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 9BE9B8048C06; Sat, 11 Nov 2023 22:18:25 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231356AbjKLGR4 (ORCPT + 29 others); Sun, 12 Nov 2023 01:17:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230242AbjKLGRl (ORCPT ); Sun, 12 Nov 2023 01:17:41 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A356947B6 for ; Sat, 11 Nov 2023 22:17:17 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A2DD9C433D9; Sun, 12 Nov 2023 06:17:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769837; bh=yJ53jomTLG+j+rzKLDFglTmPOzUq4xATJqhV03Y8NDA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uXWH+71BlkB0gLhz3M2X15BE4B4oEYB9gyycQqZ8+FdLYqMz3funNQkzHc0Dy9XBp 8ObE/BWmXibABF2C3xM83Jafy7ZAcI0Mt/kEddZ5fp3qHw4s8Sm5JNY7WKFOnwlTHF XebaLVFboE5rnhqBdO5/ZdqxwmPOogqsgCllKNUnGJo0WlEBkq4RTDjX8YLafHMWJ5 5PqFLGR5t8hI3HrTmU+l0D0GDKxB0il/JGfS2b455jexb153+6vOha/HJiAAaVRPMD JUj6goF6Ow1Gm47Z17xP/gMVRHN6sFy0NoVDBX0XwqO3xDgrIkSCjn1gSZSqBbhqhi fdcFURboW9taw== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 18/38] riscv: s64ilp32: Add ebpf jit support Date: Sun, 12 Nov 2023 01:14:54 -0500 Message-Id: <20231112061514.2306187-19-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:18:25 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337932909617654 X-GMAIL-MSGID: 1782337932909617654 From: Guo Ren The s64ilp32 uses the rv64 ISA instruction set, not the rv32 ISA. So bpf_jit_comp32.c can't be used for s64ilp32, and we use bpf_jit_comp64.c instead. This patch makes s64ilp32 ebpf jit correct and improves the performance because bpf_jit_comp32.c has significant gaps in mapping ebpf 64-bit ISA. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/extable.h | 2 +- arch/riscv/net/Makefile | 6 +++--- arch/riscv/net/bpf_jit_comp64.c | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/riscv/include/asm/extable.h b/arch/riscv/include/asm/extable.h index 3eb5c1f7bf34..7e22bb520309 100644 --- a/arch/riscv/include/asm/extable.h +++ b/arch/riscv/include/asm/extable.h @@ -38,7 +38,7 @@ bool fixup_exception(struct pt_regs *regs); static inline bool fixup_exception(struct pt_regs *regs) { return false; } #endif -#if defined(CONFIG_BPF_JIT) && defined(CONFIG_ARCH_RV64I) +#if defined(CONFIG_BPF_JIT) && !defined(CONFIG_ARCH_RV32I) bool ex_handler_bpf(const struct exception_table_entry *ex, struct pt_regs *regs); #else static inline bool diff --git a/arch/riscv/net/Makefile b/arch/riscv/net/Makefile index 9a1e5f0a94e5..907edce21acc 100644 --- a/arch/riscv/net/Makefile +++ b/arch/riscv/net/Makefile @@ -2,8 +2,8 @@ obj-$(CONFIG_BPF_JIT) += bpf_jit_core.o -ifeq ($(CONFIG_ARCH_RV64I),y) - obj-$(CONFIG_BPF_JIT) += bpf_jit_comp64.o -else +ifeq ($(CONFIG_ARCH_RV32I),y) obj-$(CONFIG_BPF_JIT) += bpf_jit_comp32.o +else + obj-$(CONFIG_BPF_JIT) += bpf_jit_comp64.o endif diff --git a/arch/riscv/net/bpf_jit_comp64.c b/arch/riscv/net/bpf_jit_comp64.c index c648864c8cd1..ec0b7fb6982b 100644 --- a/arch/riscv/net/bpf_jit_comp64.c +++ b/arch/riscv/net/bpf_jit_comp64.c @@ -126,7 +126,7 @@ static u8 rv_tail_call_reg(struct rv_jit_context *ctx) static bool is_32b_int(s64 val) { - return -(1L << 31) <= val && val < (1L << 31); + return -(1LL << 31) <= val && val < (1LL << 31); } static bool in_auipc_jalr_range(s64 val) @@ -135,8 +135,8 @@ static bool in_auipc_jalr_range(s64 val) * auipc+jalr can reach any signed PC-relative offset in the range * [-2^31 - 2^11, 2^31 - 2^11). */ - return (-(1L << 31) - (1L << 11)) <= val && - val < ((1L << 31) - (1L << 11)); + return (-(1LL << 31) - (1LL << 11)) <= val && + val < ((1LL << 31) - (1LL << 11)); } /* Emit fixed-length instructions for address */ From patchwork Sun Nov 12 06:14:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164212 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562188vqg; Sat, 11 Nov 2023 22:19:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IHhH6cJ27eHlTQwWkGxjKjWHWiSQkIac3NpckGfU1E/UcmNnxunCSmsapTOH/Axhue21dk5 X-Received: by 2002:a17:903:244a:b0:1cc:70e4:28d7 with SMTP id l10-20020a170903244a00b001cc70e428d7mr5121504pls.10.1699769961170; Sat, 11 Nov 2023 22:19:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769961; cv=none; d=google.com; s=arc-20160816; b=qPKzIVb3S1bs5twI6kgo250vSe+6Z2GwrxxpM9nswCqxZDWZsngS3sJ/muyrZ09np1 24fy7/77Ei/dEjbIB7bFJWEkitRXj3xq59xSs5xHDNNVznGA2gtMgBbNlTjOk1XjUmvG iv06qCjFvmbE746AHr0xt/2WALYlaKqit5Pj2WtJyz7VhFLI2Ng77VeynIp4kP3yVgVT 8TbHQNb8DXasQQ16wSQ3UVN6a4KaT7IjoCECPURNXO3lFJ0fopCIHctT9heEMDWi6lGn 3gZbDHEw1JmJ7tdOMb3NuszuBbRYJVl3k8xqzn3dgHLu1Dy+M0kUpExJuuxXrHqGIbSM G6Rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=I8tSYFYbf0knPNHn6moWFIB27LxRqtBTmpx3nNNjxw4=; fh=1hppoN31C5kjce2CIdZedDcdQlFaO2RqAMQ5owFhvIc=; b=TMt3b7IZdKAEY28c5L4koSDz5pkXh0Jl08z+szea9XB4jWXDMB8LmKnac/ZOSDEKrm BKchSCpoq8n/jFcvTMTjpZILoW0gs66H2KKX1fJpb/9qep3iSAguo3VM7P3ympO5jRW+ E66qkpBxhNbwNFrR4Y8HUQBsdNheS5KrqdP9U6OEK9GwnFWP58MiaL8buWRNkF0mhGFI AxnTh1jzkeOkUVT7tQphJTuHJeJtaSvJSY5hAbFiTKAj8y5UKFFnfsYxnYh2GXU+CwNt kpuJ/5MEnTyUfGarlrMOw5Dee7f+mJIqJOOoAVFN4ruDrJajWM402EijZgi3qTIUC14/ SsCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hMoW3pc7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id q18-20020a170902dad200b001cc41a2b752si3212590plx.206.2023.11.11.22.19.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:19:21 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hMoW3pc7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 8652A809BBB0; Sat, 11 Nov 2023 22:18:58 -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 S229599AbjKLGSK (ORCPT + 29 others); Sun, 12 Nov 2023 01:18:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49428 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230309AbjKLGRq (ORCPT ); Sun, 12 Nov 2023 01:17:46 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 872DA469C for ; Sat, 11 Nov 2023 22:17:23 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B44E8C433C8; Sun, 12 Nov 2023 06:17:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769843; bh=bke8fOXFDjV1zILAGkdyjNPTOfL1ZR2nFogEIcEnLNk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hMoW3pc7nxmWk9TC7awLImserdou0qBcPtBdvsgWteW/xYXDxcUp9v4CpLyETmaoe p3F6oi8kTZDV31QvjU85h0OvOvaSmokczVTFAn8MOVlJv4xAOqyCkEWTSCOVQhiVaO +VMnKyi2Y49C1IwpIkWtL55An0Wh21zTNPPdJbECeOst0TfGqO1q1Qa46RZy2jqKZX dkCnLhdQYPdb1O6P/jSu/4/wlIY0OIQVhM8E5enAcQkeavsiof2vH1S9rtjvuMoXtF BckquD1HmBgApzGOgJxELfdlsEjtlWU1xrlEjpMdpe78xyEva6NJTvqonnWbhS/bzu Qk8o+iazacIow== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren , Guo Ren Subject: [RFC PATCH V2 19/38] riscv: s64ilp32: Add ELF32 support Date: Sun, 12 Nov 2023 01:14:55 -0500 Message-Id: <20231112061514.2306187-20-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 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]); Sat, 11 Nov 2023 22:18:58 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337986583962952 X-GMAIL-MSGID: 1782337986583962952 From: Guo Ren Use abi_len to distinct ELF32 and ELF64 because s64ilp32 is xlen=64 and abi_len=32 (__SIZEOF_POINTER__=4). And s64ilp32 is an ELF32 based the same as s32ilp32. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/uapi/asm/elf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/include/uapi/asm/elf.h b/arch/riscv/include/uapi/asm/elf.h index d696d6610231..962e8ec8fe05 100644 --- a/arch/riscv/include/uapi/asm/elf.h +++ b/arch/riscv/include/uapi/asm/elf.h @@ -24,7 +24,7 @@ typedef __u64 elf_fpreg_t; typedef union __riscv_fp_state elf_fpregset_t; #define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t)) -#if __riscv_xlen == 64 +#if __SIZEOF_POINTER__ == 8 #define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info) #define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info) #else From patchwork Sun Nov 12 06:14:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164207 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp561973vqg; Sat, 11 Nov 2023 22:18:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IHfY2oFc2x2KIb5zaJHtY0UnOl34lPTKTajtEZaE89KRoNLEdHgUU2/At0lg5xAyRePCtg3 X-Received: by 2002:a05:6e02:20c3:b0:35a:a5b3:afd9 with SMTP id 3-20020a056e0220c300b0035aa5b3afd9mr5149447ilq.24.1699769914683; Sat, 11 Nov 2023 22:18:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769914; cv=none; d=google.com; s=arc-20160816; b=yO+wCj2lD//Mddco4PGi7+agiHZRk66cqb6df4JRERBCT4wa1EM0K1pS9PnnbD015u TEEcYWCdj4KvlKFGjsXKJa5lKbHtNasYLMdBqnvqZf3D3rGjn3WOTgZDMjQWePqZmldD 4Q7c3vj2JPZsO0Eg3BK3+WT16pLbww56hD0oPs1ORrVJrbkseqoNbTtg7dG7k7cjWrnv Q+EePvmhFxwDt364cPsjALfnfTc5lHp/cdM39Uqt0kbHqvgY/oU/xn0opigl9GcS58Qq zORXkSW2YKat2Jbtuc/lwWqWRxD+2a0dcOA1LbIb0wp/MKZ734C4fr9A33wMFkOK3561 0n8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9kzR9QJEqe7+9Pj1iBicRIqoFKd08cImzc/J84nALjg=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=kIOkTvLanmik/45g2SQOzW5UoEZHt9gqXNzDciECnhIPT9o7pi+Wfz9ZNuUDehElSp ZIkspimtID715BujSsuh+DUKcTgQM/Zh665EkrgCfGdlJjZMTOzI5ubci8wx7wUs3e4B JncydRC3omJ+nig9gzDOhr3iT7l9r19Umri1+hpzcoA8tYNJnFDdk4mPGpGS8glX3VgL X6osAGzmKQ5FNuMAv7Oyui7TVMiyM2V3jogWExARzLOZWFD3W8mf8lYTqBNJfHONMv6O bjFAj5d4k/plg/PfY0OEbmT2e0qdehHJpefcBm1g6AnEnPWGYO2+yHh9OqD/jgDBVwv3 8RiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fM4A4qzP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id jf1-20020a170903268100b001c7347e993esi2859726plb.17.2023.11.11.22.18.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:18:34 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fM4A4qzP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id C03D1804BDF3; Sat, 11 Nov 2023 22:18:32 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230249AbjKLGSW (ORCPT + 29 others); Sun, 12 Nov 2023 01:18:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230441AbjKLGRz (ORCPT ); Sun, 12 Nov 2023 01:17:55 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DCCE49D4 for ; Sat, 11 Nov 2023 22:17:29 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95C71C433CB; Sun, 12 Nov 2023 06:17:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769848; bh=81esJgTh4dOkvuzt4uEEBn1Vcq8zmYGS/5KoUzDRHwk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fM4A4qzP2sUTruR53HAyk8qZNaK4mAcObnJjPX2TBzXVU1E9k1oP29D1Ez3sdVbPq VsesVknvjqglzsZlFYWy6ftyd3D62nRk2/pz7DZpsI7W7TO8MDjHHs0XUMXsZ7j2fr aAj6qKQnOSkGp8jsZBRKxYRlvbmVXPviL5PIdHIDX3N5OPy4/yEVTkn8Pq6uaPa5wO lqPxaJT15ygRjwBsrpYDU+yL0kCH8mcajb45/i0aYxr0YIY7ahmWeIEEumtYCKelgs 5Mr7VtDVKIqN5vVaQ+ZFIaoXjEIzMdQ/RE9v+85S4qGWU+sLPqQYtTovNtmUB3AxHv 0Vj8D6OiNLLvQ== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 20/38] riscv: s64ilp32: Add ARCH_RV64ILP32 Kconfig option Date: Sun, 12 Nov 2023 01:14:56 -0500 Message-Id: <20231112061514.2306187-21-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:18:32 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337937866277009 X-GMAIL-MSGID: 1782337937866277009 From: Guo Ren Just the same as ARCH_RV64I & ARCH_RV32I, add ARCH_RV64ILP32 config for s64ilp32 and turn on the s64ilp32 compile switch in the arch/riscv/Makefile. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 7 +++++++ arch/riscv/Makefile | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 5d770b8e2756..5a3eb5e7d67a 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -334,6 +334,13 @@ config ARCH_RV64I select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 select SWIOTLB if MMU +config ARCH_RV64ILP32 + bool "RV64ILP32" + depends on NONPORTABLE + select 32BIT + select MMU + select VDSO64ILP32 + endchoice # We must be able to map all physical memory into the kernel, but the compiler diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index 8605050bddd0..3b1435bade49 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -58,6 +58,7 @@ endif # ISA string setting riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima +riscv-march-$(CONFIG_ARCH_RV64ILP32) := rv64ima riscv-march-$(CONFIG_FPU) := $(riscv-march-y)fd riscv-march-$(CONFIG_RISCV_ISA_C) := $(riscv-march-y)c riscv-march-$(CONFIG_RISCV_ISA_V) := $(riscv-march-y)v @@ -121,7 +122,11 @@ stack_protector_prepare: prepare0 endif # arch specific predefines for sparse +ifeq ($(CONFIG_ARCH_RV64ILP32),y) +CHECKFLAGS += -D__riscv +else CHECKFLAGS += -D__riscv -D__riscv_xlen=$(BITS) +endif # Default target when executing plain make boot := arch/riscv/boot From patchwork Sun Nov 12 06:14:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164211 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562106vqg; Sat, 11 Nov 2023 22:19:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IHEZrF2yK6mVMR5okGaORp6ALtXf43sFTqMfx1J9/4J/zdCy4GP0UFqZHvmAfY2BgXcj/wp X-Received: by 2002:a17:902:d2c3:b0:1c9:ff46:163d with SMTP id n3-20020a170902d2c300b001c9ff46163dmr5477465plc.38.1699769944036; Sat, 11 Nov 2023 22:19:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769944; cv=none; d=google.com; s=arc-20160816; b=ur4zWs6VrEwMEF1dkqh3znYIyMNq4bC8ruL1iAxHempX9HVQeLm9xqljdJ9IBJHUit fFEyrUP9lrVgKq3wATOM5OU0XcBx/LGPvO02gESwCb5/Yk1eKtz/aPR+oAE2PuRDcwRo ImmtFq5qDTTZA2qAoetVI+lOmNiLKpBEtIxOHDBBu/dnrtjaze3k038U+xclnOZanQUO Hr92rnE2Z+oV+ixJCsC9xwsgbUgvZ/gZ6W1qtTjXTDOw/zPO2wEeUxmOqYP1iLcbL9b5 jwqT+a0teXeAqh5bBqZJugjTSUySfldMetrWQd+hSW+6T6Q1bS2PepVCGxMMqRjJz8nU ykNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=rziMjHtwM9Hf03B+Q9QpkPwnhmJL5APcNv4+whz8Pvw=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=H6zmgqbWxYMZfwXHCMIMYZWiQRYqJx3oys5XzKeWggq5BZz2w/hALtqNy7juIle4My 3xQWBPW2h+Ni6fvUbZprqUI2qKKTOpDleLgssgZSbhq+qgTLTxXSwRPfxaJNvQPz1UHk Qc8acLFoXh07L8uHZvFCIXBKhSDWLbsRsvQjNPngmFYJe/PF3mFv6x2nK2zzHF3zX6U5 ZWY2JiMowC6gY5VhIDnBAzdHv/rlZw0gfHhTWomRUJs9hkm1lxqbXp0HYOREfviHbU3H wThXe9yS4OnjK3Is05q1sPWK+O/E8SeguWeB3C3dY7aPj6XNG/xH6lnv/KvRYR8US8UC VMWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=cVixWE5B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id n2-20020a170902d2c200b001cc31c96c70si3319161plc.330.2023.11.11.22.19.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:19:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=cVixWE5B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 2B1C4804646E; Sat, 11 Nov 2023 22:18:54 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230153AbjKLGSZ (ORCPT + 29 others); Sun, 12 Nov 2023 01:18:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43624 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230510AbjKLGSD (ORCPT ); Sun, 12 Nov 2023 01:18:03 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C2784C1D for ; Sat, 11 Nov 2023 22:17:35 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4F47BC433CC; Sun, 12 Nov 2023 06:17:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769855; bh=McvUmbn7ofR9ECIK1HzZvYjfVLwR/ntK8/66isIijtM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cVixWE5BU3e4YiwTPApmxFvfwcQjyW4BCr6TG50g4zBwUphGarDaFwV04CbuzkNp8 fcJ0yF57pqfwrYk17nBniNgJxa5HEYSLCYceCYpVlwmBs9t+j9Spx8D1/+UCxRCwZH WXJIGTd4x825tMD5ZBzWbl9DBr7XQEX7SIzW63zoNx0sU9rdFqMSxR2HmlOONiJA/E bFNhgrFJTCHEhWW1sLsfWksh5LGNylmxHUEhA94B/fhLu6Z516D55+XjtOpZ1t0rru EEqGkJ+xcrIaxrsLSz4Q6jxSDw6D/R6mP+p/Ftn3C/cHP9pQd8XP9GFq1R/+IeC50b gWTZeAfPCLuhw== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 21/38] riscv: s64ilp32: Add MMU_SV32 mode support Date: Sun, 12 Nov 2023 01:14:57 -0500 Message-Id: <20231112061514.2306187-22-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:18:54 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337968739952827 X-GMAIL-MSGID: 1782337968739952827 From: Guo Ren This needs to add Sv32 mode in the SATP CSR of RV64 ISA, a novel extension of 64-bit processors' MMU. It could save a bit of page table footprint and improve the page table walk performance: s64ilp32 with Sv39: PageTables: 136 kB s64ilp32 with Sv32: PageTables: 60 kB Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 11 ++++++++++- arch/riscv/Kconfig.errata | 2 +- arch/riscv/include/asm/csr.h | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 5a3eb5e7d67a..1d3a236d2c45 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -481,7 +481,7 @@ config RISCV_ISA_SVNAPOT config RISCV_ISA_SVPBMT bool "Svpbmt extension support for supervisor mode page-based memory types" - depends on 64BIT && MMU + depends on !MMU_SV32 && MMU depends on RISCV_ALTERNATIVE default y help @@ -638,6 +638,15 @@ config THREAD_SIZE_ORDER Specify the Pages of thread stack size (from 4KB to 64KB), which also affects irq stack size, which is equal to thread stack size. +config MMU_SV32 + bool "MMU Sv32" + depends on 32BIT && MMU + help + ARCH_RV32I only supports MMU Sv32 mode, but ARCH_RV64ILP32 supports + MMU Sv39 & Sv32 (MMU Sv32 is optional for RV64 hardware). + + If unsure, say N. + endmenu # "Platform type" menu "Kernel features" diff --git a/arch/riscv/Kconfig.errata b/arch/riscv/Kconfig.errata index 0c8f4652cd82..1aa85a427ff3 100644 --- a/arch/riscv/Kconfig.errata +++ b/arch/riscv/Kconfig.errata @@ -44,7 +44,7 @@ config ERRATA_THEAD config ERRATA_THEAD_PBMT bool "Apply T-Head memory type errata" - depends on ERRATA_THEAD && 64BIT && MMU + depends on ERRATA_THEAD && !MMU_SV32 && MMU select RISCV_ALTERNATIVE_EARLY default y help diff --git a/arch/riscv/include/asm/csr.h b/arch/riscv/include/asm/csr.h index 03acdedc100d..aa78c5f20d75 100644 --- a/arch/riscv/include/asm/csr.h +++ b/arch/riscv/include/asm/csr.h @@ -65,6 +65,7 @@ #define SATP_ASID_MASK _AC(0x1FF, UXL) #else #define SATP_PPN _AC(0x00000FFFFFFFFFFF, UXL) +#define SATP_MODE_32 _AC(0x1000000000000000, UXL) #define SATP_MODE_39 _AC(0x8000000000000000, UXL) #define SATP_MODE_48 _AC(0x9000000000000000, UXL) #define SATP_MODE_57 _AC(0xa000000000000000, UXL) From patchwork Sun Nov 12 06:14:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164217 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562411vqg; Sat, 11 Nov 2023 22:20:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IEA+UaZwJIQK8lqWd7PCv4JRWJ0wIAByXMKzSAWeRUlcqmY0isy8omSaKxp/ygHA5pewcYn X-Received: by 2002:a17:90a:4966:b0:280:72b:397d with SMTP id c93-20020a17090a496600b00280072b397dmr10665809pjh.20.1699770012457; Sat, 11 Nov 2023 22:20:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770012; cv=none; d=google.com; s=arc-20160816; b=XLbTZg1hCnv8FMSxaFeKD9mI3JeCn2HRepT/KG3m0K2ZixaoR4lPDB8rPj6b+c+JsA U9Ea7n5WDaiG/O/2FaAnu8T9NMSz1jfB7k5bhhcZpRuiQLDA2zXWrk4rsoB25XmSxJ1h skqECOfKecsrBexK7soIWHSV5fp4ioy0ipTYaYHcyfACzpusx7t4Etw0BGLXtCwYGRvj TUFIOF0griUQIegRQQQasCOMo8KGxeNoFQJqQy8tbHL3mtJ0GvrtBDEXVVpZY+aEcxxI 7P2is/1Pb1U8OYc7XtvBlsCgjsIN/n9ixOsmL5pVwvlG3RtF4THo2qR9NeByCRBNnU27 XcHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=xeqfc+4FpByF7YuvYrDU94VrRtDjwmrhfgzzOasfW08=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=iwznXAiGdKKy9iEe00cY2vvotD15lP28vY7MI/YDBc8zyfZw0woxsPIiDdwV04svW+ bK9ey2aPOwvmWvWYMjWgiBGOiTCHI+UYUuzyzECS6FRt2OaEhvsld1TaytbR8TOChCbL AlspYBP8hLDJihGScFs58u3X+zL2LUiqgSZee4XsZQZXMXtTF+ErnuB39j8mpUYRX2jw nfz37VRDvm4OgHnO5k8uGtLLdAoIcOnlaGlxF2pSc2nNt+TWvHX4cT0ZpICmb4yv96eI W7q4J+W5xes3sfdxYm5DinPTMg5VrWcIsg3qg8MBtQutrwKA8rZC2ro8UicPQh2KLrOq Kbmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WN6yTfKY; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id m15-20020a170902db0f00b001c88e81a54asi2644817plx.325.2023.11.11.22.20.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:20:12 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WN6yTfKY; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id DCFB8809B9DB; Sat, 11 Nov 2023 22:19:44 -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 S231308AbjKLGSi (ORCPT + 29 others); Sun, 12 Nov 2023 01:18:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60412 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231296AbjKLGSO (ORCPT ); Sun, 12 Nov 2023 01:18:14 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CFFBB4C3B for ; Sat, 11 Nov 2023 22:17:41 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BCCA0C43395; Sun, 12 Nov 2023 06:17:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769861; bh=aTovK/sGx3wduvwHHzP4k5hY0TmVrj1ye2Y4kPuJg5o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WN6yTfKYq2dSCw5oS475aELuIEDSdloXqsXgydFt/c7M5VP7bnk5fwRsPCiB5gBai J1WWb6Dz9tf8jHWgwDQB62+620TLIzFmCPl+OTioRvf+R6kUrwYUBmiGDC0cVfU60Q 5XJkKDD1oi7BP47QzYfULgnM1Zl/beoefR7agITCCziONL38No1PaneOa2SsZJXadn Mj90UKMhWD1VUWR4I3+3m0kNvqs1NpZKTD4BObScnPbHek28p9HNYaQL/1U1V6DhoD I+TiQ1YGoENrvbXfe/TmlDZHBO5fZV+z/Rb5ucU1VbtTP4gM9LEa/pKc/tSK3PPVSE zsSHh6yIwb4Yw== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 22/38] riscv: s64ilp32: Add MMU_SV39 mode support Date: Sun, 12 Nov 2023 01:14:58 -0500 Message-Id: <20231112061514.2306187-23-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 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]); Sat, 11 Nov 2023 22:19:44 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338040734995981 X-GMAIL-MSGID: 1782338040734995981 From: Guo Ren There is no MMU_SV32 support in xlen=64 ISA generally, but s64ilp32 selects 32BIT, which uses MMU_SV32 default. This commit enables MMU_SV39 for 32BIT to satisfy the 4GB mapping requirement. The Sv39 is the mandatory MMU mode in RVA20S64 and RVA22S64, so we needn't care about Sv48 & Sv57. We use duplicate remapping to solve the address sign extension problem from the compiler. Make the address of 0xffffffff80000000 equal to 0x80000000 by pg_dir[2] = pg_dir[510] and pg_dir[3] = pg_dir[511] of the page table. Why didn't we prevent address sign extension in the compiler? - Additional zero extension reduces the performance - Prevent complex and unnecessary work for compiler guys. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 4 ++- arch/riscv/include/asm/page.h | 24 ++++++++++---- arch/riscv/include/asm/pgtable-64.h | 50 ++++++++++++++--------------- arch/riscv/include/asm/pgtable.h | 19 ++++++++--- arch/riscv/kernel/cpu.c | 4 +-- arch/riscv/mm/fault.c | 11 +++++++ arch/riscv/mm/init.c | 24 +++++++++++--- 7 files changed, 92 insertions(+), 44 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 1d3a236d2c45..f364d2436b1d 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -257,7 +257,7 @@ config FIX_EARLYCON_MEM config PGTABLE_LEVELS int - default 5 if 64BIT + default 5 if !MMU_SV32 default 2 config LOCKDEP_SUPPORT @@ -327,6 +327,8 @@ config ARCH_RV32I select GENERIC_LIB_ASHRDI3 select GENERIC_LIB_LSHRDI3 select GENERIC_LIB_UCMPDI2 + select MMU + select MMU_SV32 config ARCH_RV64I bool "RV64I" diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h index b55ba20903ec..7c535e88cf91 100644 --- a/arch/riscv/include/asm/page.h +++ b/arch/riscv/include/asm/page.h @@ -61,16 +61,28 @@ void clear_page(void *page); /* Page Global Directory entry */ typedef struct { - unsigned long pgd; +#ifndef CONFIG_MMU_SV32 + u64 pgd; +#else + u32 pgd; +#endif } pgd_t; /* Page Table entry */ typedef struct { - unsigned long pte; +#ifndef CONFIG_MMU_SV32 + u64 pte; +#else + u32 pte; +#endif } pte_t; typedef struct { - unsigned long pgprot; +#ifndef CONFIG_MMU_SV32 + u64 pgprot; +#else + u32 pgprot; +#endif } pgprot_t; typedef struct page *pgtable_t; @@ -83,10 +95,10 @@ typedef struct page *pgtable_t; #define __pgd(x) ((pgd_t) { (x) }) #define __pgprot(x) ((pgprot_t) { (x) }) -#ifdef CONFIG_64BIT -#define PTE_FMT "%016lx" +#ifndef CONFIG_MMU_SV32 +#define PTE_FMT "%016llx" #else -#define PTE_FMT "%08lx" +#define PTE_FMT "%08x" #endif #ifdef CONFIG_64BIT diff --git a/arch/riscv/include/asm/pgtable-64.h b/arch/riscv/include/asm/pgtable-64.h index 7a5097202e15..2e57378731f4 100644 --- a/arch/riscv/include/asm/pgtable-64.h +++ b/arch/riscv/include/asm/pgtable-64.h @@ -16,12 +16,12 @@ extern bool pgtable_l5_enabled; #define PGDIR_SHIFT_L3 30 #define PGDIR_SHIFT_L4 39 #define PGDIR_SHIFT_L5 48 -#define PGDIR_SIZE_L3 (_AC(1, UL) << PGDIR_SHIFT_L3) +#define PGDIR_SIZE_L3 (_AC(1, ULL) << PGDIR_SHIFT_L3) #define PGDIR_SHIFT (pgtable_l5_enabled ? PGDIR_SHIFT_L5 : \ (pgtable_l4_enabled ? PGDIR_SHIFT_L4 : PGDIR_SHIFT_L3)) /* Size of region mapped by a page global directory */ -#define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) +#define PGDIR_SIZE (_AC(1, ULL) << PGDIR_SHIFT) #define PGDIR_MASK (~(PGDIR_SIZE - 1)) /* p4d is folded into pgd in case of 4-level page table */ @@ -30,7 +30,7 @@ extern bool pgtable_l5_enabled; #define P4D_SHIFT_L5 39 #define P4D_SHIFT (pgtable_l5_enabled ? P4D_SHIFT_L5 : \ (pgtable_l4_enabled ? P4D_SHIFT_L4 : P4D_SHIFT_L3)) -#define P4D_SIZE (_AC(1, UL) << P4D_SHIFT) +#define P4D_SIZE (_AC(1, ULL) << P4D_SHIFT) #define P4D_MASK (~(P4D_SIZE - 1)) /* pud is folded into pgd in case of 3-level page table */ @@ -45,7 +45,7 @@ extern bool pgtable_l5_enabled; /* Page 4th Directory entry */ typedef struct { - unsigned long p4d; + u64 p4d; } p4d_t; #define p4d_val(x) ((x).p4d) @@ -54,7 +54,7 @@ typedef struct { /* Page Upper Directory entry */ typedef struct { - unsigned long pud; + u64 pud; } pud_t; #define pud_val(x) ((x).pud) @@ -63,7 +63,7 @@ typedef struct { /* Page Middle Directory entry */ typedef struct { - unsigned long pmd; + u64 pmd; } pmd_t; #define pmd_val(x) ((x).pmd) @@ -76,7 +76,7 @@ typedef struct { * | 63 | 62 61 | 60 54 | 53 10 | 9 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 * N MT RSV PFN reserved for SW D A G U X W R V */ -#define _PAGE_PFN_MASK GENMASK(53, 10) +#define _PAGE_PFN_MASK GENMASK_ULL(53, 10) /* * [63] Svnapot definitions: @@ -103,7 +103,7 @@ enum napot_cont_order { #define napot_cont_shift(order) ((order) + PAGE_SHIFT) #define napot_cont_size(order) BIT(napot_cont_shift(order)) -#define napot_cont_mask(order) (~(napot_cont_size(order) - 1UL)) +#define napot_cont_mask(order) (~(napot_cont_size(order) - 1ULL)) #define napot_pte_num(order) BIT(order) #ifdef CONFIG_RISCV_ISA_SVNAPOT @@ -120,8 +120,8 @@ enum napot_cont_order { * 10 - IO Non-cacheable, non-idempotent, strongly-ordered I/O memory * 11 - Rsvd Reserved for future standard use */ -#define _PAGE_NOCACHE_SVPBMT (1UL << 61) -#define _PAGE_IO_SVPBMT (1UL << 62) +#define _PAGE_NOCACHE_SVPBMT (1ULL << 61) +#define _PAGE_IO_SVPBMT (1ULL << 62) #define _PAGE_MTMASK_SVPBMT (_PAGE_NOCACHE_SVPBMT | _PAGE_IO_SVPBMT) /* @@ -131,10 +131,10 @@ enum napot_cont_order { * 01110 - PMA Weakly-ordered, Cacheable, Bufferable, Shareable, Non-trustable * 10000 - IO Strongly-ordered, Non-cacheable, Non-bufferable, Non-shareable, Non-trustable */ -#define _PAGE_PMA_THEAD ((1UL << 62) | (1UL << 61) | (1UL << 60)) -#define _PAGE_NOCACHE_THEAD 0UL -#define _PAGE_IO_THEAD (1UL << 63) -#define _PAGE_MTMASK_THEAD (_PAGE_PMA_THEAD | _PAGE_IO_THEAD | (1UL << 59)) +#define _PAGE_PMA_THEAD ((1ULL << 62) | (1ULL << 61) | (1ULL << 60)) +#define _PAGE_NOCACHE_THEAD 0ULL +#define _PAGE_IO_THEAD (1ULL << 63) +#define _PAGE_MTMASK_THEAD (_PAGE_PMA_THEAD | _PAGE_IO_THEAD | (1ULL << 59)) static inline u64 riscv_page_mtmask(void) { @@ -165,7 +165,7 @@ static inline u64 riscv_page_io(void) #define _PAGE_MTMASK riscv_page_mtmask() /* Set of bits to preserve across pte_modify() */ -#define _PAGE_CHG_MASK (~(unsigned long)(_PAGE_PRESENT | _PAGE_READ | \ +#define _PAGE_CHG_MASK (~(u64)(_PAGE_PRESENT | _PAGE_READ | \ _PAGE_WRITE | _PAGE_EXEC | \ _PAGE_USER | _PAGE_GLOBAL | \ _PAGE_MTMASK)) @@ -206,12 +206,12 @@ static inline void pud_clear(pud_t *pudp) set_pud(pudp, __pud(0)); } -static inline pud_t pfn_pud(unsigned long pfn, pgprot_t prot) +static inline pud_t pfn_pud(u64 pfn, pgprot_t prot) { return __pud((pfn << _PAGE_PFN_SHIFT) | pgprot_val(prot)); } -static inline unsigned long _pud_pfn(pud_t pud) +static inline u64 _pud_pfn(pud_t pud) { return __page_val_to_pfn(pud_val(pud)); } @@ -246,16 +246,16 @@ static inline bool mm_pud_folded(struct mm_struct *mm) #define pmd_index(addr) (((addr) >> PMD_SHIFT) & (PTRS_PER_PMD - 1)) -static inline pmd_t pfn_pmd(unsigned long pfn, pgprot_t prot) +static inline pmd_t pfn_pmd(u64 pfn, pgprot_t prot) { - unsigned long prot_val = pgprot_val(prot); + u64 prot_val = pgprot_val(prot); ALT_THEAD_PMA(prot_val); return __pmd((pfn << _PAGE_PFN_SHIFT) | prot_val); } -static inline unsigned long _pmd_pfn(pmd_t pmd) +static inline u64 _pmd_pfn(pmd_t pmd) { return __page_val_to_pfn(pmd_val(pmd)); } @@ -263,13 +263,13 @@ static inline unsigned long _pmd_pfn(pmd_t pmd) #define mk_pmd(page, prot) pfn_pmd(page_to_pfn(page), prot) #define pmd_ERROR(e) \ - pr_err("%s:%d: bad pmd %016lx.\n", __FILE__, __LINE__, pmd_val(e)) + pr_err("%s:%d: bad pmd " PTE_FMT ".\n", __FILE__, __LINE__, pmd_val(e)) #define pud_ERROR(e) \ - pr_err("%s:%d: bad pud %016lx.\n", __FILE__, __LINE__, pud_val(e)) + pr_err("%s:%d: bad pud " PTE_FMT ".\n", __FILE__, __LINE__, pud_val(e)) #define p4d_ERROR(e) \ - pr_err("%s:%d: bad p4d %016lx.\n", __FILE__, __LINE__, p4d_val(e)) + pr_err("%s:%d: bad p4d " PTE_FMT ".\n", __FILE__, __LINE__, p4d_val(e)) static inline void set_p4d(p4d_t *p4dp, p4d_t p4d) { @@ -309,12 +309,12 @@ static inline void p4d_clear(p4d_t *p4d) set_p4d(p4d, __p4d(0)); } -static inline p4d_t pfn_p4d(unsigned long pfn, pgprot_t prot) +static inline p4d_t pfn_p4d(u64 pfn, pgprot_t prot) { return __p4d((pfn << _PAGE_PFN_SHIFT) | pgprot_val(prot)); } -static inline unsigned long _p4d_pfn(p4d_t p4d) +static inline u64 _p4d_pfn(p4d_t p4d) { return __page_val_to_pfn(p4d_val(p4d)); } diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index e5e7a929949a..645cc6e69373 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -34,7 +34,11 @@ * Half of the kernel address space (1/4 of the entries of the page global * directory) is for the direct mapping. */ -#define KERN_VIRT_SIZE ((PTRS_PER_PGD / 2 * PGDIR_SIZE) / 2) +#if IS_ENABLED(CONFIG_ARCH_RV64ILP32) && !IS_ENABLED(CONFIG_MMU_SV32) +#define KERN_VIRT_SIZE (ulong)(PTRS_PER_PGD * PMD_SIZE) +#else +#define KERN_VIRT_SIZE (ulong)((PTRS_PER_PGD / 2 * PGDIR_SIZE) / 2) +#endif #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1) #define VMALLOC_END PAGE_OFFSET @@ -86,7 +90,7 @@ #define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE) #define FIXADDR_TOP PCI_IO_START -#ifdef CONFIG_64BIT +#ifndef CONFIG_MMU_SV32 #define MAX_FDT_SIZE PMD_SIZE #define FIX_FDT_SIZE (MAX_FDT_SIZE + SZ_2M) #define FIXADDR_SIZE (PMD_SIZE + FIX_FDT_SIZE) @@ -114,11 +118,11 @@ #define __page_val_to_pfn(_val) (((_val) & _PAGE_PFN_MASK) >> _PAGE_PFN_SHIFT) -#ifdef CONFIG_64BIT +#ifndef CONFIG_MMU_SV32 #include #else #include -#endif /* CONFIG_64BIT */ +#endif /* !CONFIG_MMU_SV32 */ #include @@ -527,7 +531,11 @@ static inline int ptep_set_access_flags(struct vm_area_struct *vma, static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long address, pte_t *ptep) { +#ifndef CONFIG_MMU_SV32 + pte_t pte = __pte(atomic64_xchg((atomic64_t *)ptep, 0)); +#else pte_t pte = __pte(atomic_long_xchg((atomic_long_t *)ptep, 0)); +#endif page_table_check_pte_clear(mm, address, pte); @@ -541,7 +549,8 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, { if (!pte_young(*ptep)) return 0; - return test_and_clear_bit(_PAGE_ACCESSED_OFFSET, &pte_val(*ptep)); + return test_and_clear_bit(_PAGE_ACCESSED_OFFSET, + (unsigned long *)&pte_val(*ptep)); } #define __HAVE_ARCH_PTEP_SET_WRPROTECT diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c index a2fc952318e9..bc39fd16ab64 100644 --- a/arch/riscv/kernel/cpu.c +++ b/arch/riscv/kernel/cpu.c @@ -274,9 +274,9 @@ static void print_mmu(struct seq_file *f) char sv_type[16]; #ifdef CONFIG_MMU -#if defined(CONFIG_32BIT) +#if defined(CONFIG_MMU_SV32) strncpy(sv_type, "sv32", 5); -#elif defined(CONFIG_64BIT) +#else if (pgtable_l5_enabled) strncpy(sv_type, "sv57", 5); else if (pgtable_l4_enabled) diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index 3d410dad28f8..85165fe438d8 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -140,7 +140,18 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a no_context(regs, addr); return; } +#if !IS_ENABLED(CONFIG_MMU_SV32) && IS_ENABLED(CONFIG_ARCH_RV64ILP32) + /* + * The pg_dir[2,510,3,511] has been set during early + * boot, so we only make a check here. + */ + if (pgd_val(*pgd) != pgd_val(*pgd_k)) { + no_context(regs, addr); + return; + } +#else set_pgd(pgd, *pgd_k); +#endif p4d_k = p4d_offset(pgd_k, addr); if (!p4d_present(*p4d_k)) { diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 70fb31960b63..80c6c381f3f2 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -44,8 +44,12 @@ EXPORT_SYMBOL(kernel_map); #ifdef CONFIG_64BIT u64 satp_mode __ro_after_init = !IS_ENABLED(CONFIG_XIP_KERNEL) ? SATP_MODE_57 : SATP_MODE_39; #else +#ifndef CONFIG_MMU_SV32 +u64 satp_mode __ro_after_init = SATP_MODE_39; +#else u64 satp_mode __ro_after_init = SATP_MODE_32; #endif +#endif EXPORT_SYMBOL(satp_mode); bool pgtable_l4_enabled = IS_ENABLED(CONFIG_64BIT) && !IS_ENABLED(CONFIG_XIP_KERNEL); @@ -639,16 +643,26 @@ void __init create_pgd_mapping(pgd_t *pgdp, pgd_next_t *nextp; phys_addr_t next_phys; uintptr_t pgd_idx = pgd_index(va); +#if !IS_ENABLED(CONFIG_MMU_SV32) && IS_ENABLED(CONFIG_ARCH_RV64ILP32) + uintptr_t pgd_idh = pgd_index(sign_extend64((u64)va, 31)); +#endif if (sz == PGDIR_SIZE) { - if (pgd_val(pgdp[pgd_idx]) == 0) + if (pgd_val(pgdp[pgd_idx]) == 0) { pgdp[pgd_idx] = pfn_pgd(PFN_DOWN(pa), prot); +#if !IS_ENABLED(CONFIG_MMU_SV32) && IS_ENABLED(CONFIG_ARCH_RV64ILP32) + pgdp[pgd_idh] = pfn_pgd(PFN_DOWN(pa), prot); +#endif + } return; } if (pgd_val(pgdp[pgd_idx]) == 0) { next_phys = alloc_pgd_next(va); pgdp[pgd_idx] = pfn_pgd(PFN_DOWN(next_phys), PAGE_TABLE); +#if !IS_ENABLED(CONFIG_MMU_SV32) && IS_ENABLED(CONFIG_ARCH_RV64ILP32) + pgdp[pgd_idh] = pfn_pgd(PFN_DOWN(next_phys), PAGE_TABLE); +#endif nextp = get_pgd_next_virt(next_phys); memset(nextp, 0, PAGE_SIZE); } else { @@ -930,7 +944,7 @@ static void __init create_fdt_early_page_table(uintptr_t fix_fdt_va, BUILD_BUG_ON(FIX_FDT % (PMD_SIZE / PAGE_SIZE)); /* In 32-bit only, the fdt lies in its own PGD */ - if (!IS_ENABLED(CONFIG_64BIT)) { + if (IS_ENABLED(CONFIG_MMU_SV32)) { create_pgd_mapping(early_pg_dir, fix_fdt_va, pa, MAX_FDT_SIZE, PAGE_KERNEL); } else { @@ -1152,7 +1166,7 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) fix_bmap_epmd = fixmap_pmd[pmd_index(__fix_to_virt(FIX_BTMAP_END))]; if (pmd_val(fix_bmap_spmd) != pmd_val(fix_bmap_epmd)) { WARN_ON(1); - pr_warn("fixmap btmap start [%08lx] != end [%08lx]\n", + pr_warn("fixmap btmap start [" PTE_FMT "] != end [" PTE_FMT "]\n", pmd_val(fix_bmap_spmd), pmd_val(fix_bmap_epmd)); pr_warn("fix_to_virt(FIX_BTMAP_BEGIN): %08lx\n", fix_to_virt(FIX_BTMAP_BEGIN)); @@ -1248,7 +1262,7 @@ static void __init create_linear_mapping_page_table(void) static void __init setup_vm_final(void) { /* Setup swapper PGD for fixmap */ -#if !defined(CONFIG_64BIT) +#if defined(CONFIG_MMU_SV32) /* * In 32-bit, the device tree lies in a pgd entry, so it must be copied * directly in swapper_pg_dir in addition to the pgd entry that points @@ -1266,7 +1280,7 @@ static void __init setup_vm_final(void) create_linear_mapping_page_table(); /* Map the kernel */ - if (IS_ENABLED(CONFIG_64BIT)) + if (!IS_ENABLED(CONFIG_MMU_SV32)) create_kernel_page_table(swapper_pg_dir, false); #ifdef CONFIG_KASAN From patchwork Sun Nov 12 06:14:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164209 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562094vqg; Sat, 11 Nov 2023 22:19:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IFVXRwMMJlYc6Rw5vWsNOQG6jTUnDtvlwhvP7DVfybppVRnS6DL5K3QKy0SZlNGHvLeeu7d X-Received: by 2002:a05:6830:1bfb:b0:6d6:4f73:dbf4 with SMTP id k27-20020a0568301bfb00b006d64f73dbf4mr4317741otb.24.1699769941944; Sat, 11 Nov 2023 22:19:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769941; cv=none; d=google.com; s=arc-20160816; b=ZIu4pIaZCvltVD8hoGAQnwWbICwIgxqyE1AOcYlzuO0tHiWQ79wwVAap6zTA1qMbyh FSgYOa5h4iNQ2M6RUWkSi1I7Lv40M2vQMOyqhtBIk3cOP8ymfDiH4175nP39XicBMtnn bmdQGWViWT+/d6q4mKTNIgkOdfYkGYVx0j62Qtcsd2l36ypVU09N1h9WND1BkG7X7xmX ZX5Abw7Mraxom6sPTdeAGhZviOxOPORWTr6Ee6CpsUTM0xnZdUaeuzadG6zHK9Z7KwQU 1WNjxvRlNt4gp2WvAIj2oxr+hI84l+Zxpqhv4pxOryybJlS2g9123yV6agj7zL75tpLi Y5gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=tU/8eQFgLBGh1wp3u+eugkEkML+bEpBRSzdJS1QZvB8=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=XAappmnqiIZhcqcqoT6UbjjGXjNmfd/Y41DwsDVwtDZCxUYjDFXNy+pPRYppr9qd8k B/FygN+bYZsRpQ8jz55EvCYGZsahf7tNM0KpRqgUkgB/JMnRbHGGg/0+3ug4SMStKtpM gHRIxDdPPlUhNrBqUPjzmdIggrgj6eiLyivqpTvDO1+P94+t7QAAplg7uAfKY4jcOR1b N+IiDFBTpvSCJIPeJ5q5dKeAHjzTb3Wp1OETNcPcWmn4S443m9xo4F+U0pXYMb2J05Px /LdGvYJmijRsx8ui+RFSEf9wujrf3ujo4oZZfuwZUH4Tk0RngEy0fP3xtn+lEPJgfLx8 Lc3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=u3mYKvvV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id iw21-20020a170903045500b001cc58f174fasi2970154plb.364.2023.11.11.22.19.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:19:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=u3mYKvvV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 9EE48804AF7B; Sat, 11 Nov 2023 22:18:58 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231452AbjKLGSt (ORCPT + 29 others); Sun, 12 Nov 2023 01:18:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231371AbjKLGSY (ORCPT ); Sun, 12 Nov 2023 01:18:24 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54D2349E8 for ; Sat, 11 Nov 2023 22:17:48 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D5A01C433D9; Sun, 12 Nov 2023 06:17:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769867; bh=DJd0JPnD4tdXPL2F5/pVMn7+3pGHc/BdFV5e1StNJ0o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u3mYKvvVcCXgok8Svx8v4kF7mGHdEIkfptFpvN3AkwLdtO3ntnvI1tFetv8IzkGud QsqcEzsuLOpPvYOMq//OcMmUt1bX8nDoBgAPmTAQ3RWqjuHAZ6Dde0eSs6C2/y+VxI PDCLedfjiu12dGTFD/L2dYd544DJHkuziYtfgdvNe+TXgj8RPvV5f8jK6eJT4fAhxf aqzzh/LVK8k8ktL94w2cpBMh0gvgCZ0CJTHTeQQHWNyUaWzvHLESSAINDdDCvDxL1V uaLDgFyGRBaolDP18QX6VtyYB/IDSyturZGmHAbMRjanSPG5ujOcv/4DT0ZxwCN0zU kKb1zgIB6qstA== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 23/38] riscv: s64ilp32: Enable native atomic64 Date: Sun, 12 Nov 2023 01:14:59 -0500 Message-Id: <20231112061514.2306187-24-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:18:58 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337966574281985 X-GMAIL-MSGID: 1782337966574281985 From: Guo Ren The traditional rv32 Linux (s32ilp32) uses a generic version of the lib/atomic64.c, which are inaccurate atomic64 primitives and couldn't co-work with READ_ONCE/WRITE_ONCE, atomic_8/16/32. The s64ilp32 could use native AMO instructions to implement accurate atomic64 primitives. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 2 +- arch/riscv/include/asm/atomic.h | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index f364d2436b1d..0fc03aa076e6 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -65,7 +65,7 @@ config RISCV select CPU_PM if CPU_IDLE || HIBERNATION select EDAC_SUPPORT select GENERIC_ARCH_TOPOLOGY - select GENERIC_ATOMIC64 if !64BIT + select GENERIC_ATOMIC64 if ARCH_RV32I select GENERIC_CLOCKEVENTS_BROADCAST if SMP select GENERIC_EARLY_IOREMAP select GENERIC_ENTRY diff --git a/arch/riscv/include/asm/atomic.h b/arch/riscv/include/asm/atomic.h index f5dfef6c2153..8f6579b33ecc 100644 --- a/arch/riscv/include/asm/atomic.h +++ b/arch/riscv/include/asm/atomic.h @@ -16,6 +16,12 @@ # endif #endif +#ifdef CONFIG_ARCH_RV64ILP32 +typedef struct { + s64 counter; +} atomic64_t; +#endif + #include #include From patchwork Sun Nov 12 06:15:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164208 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562088vqg; Sat, 11 Nov 2023 22:19:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IE21sa6SmvKVWHMeOsvUGs43lSnvIXH1FTeVFSbI2ph5aD/qaxNHea0OuosFJwmuTmbNolw X-Received: by 2002:a81:a18b:0:b0:5a7:bc79:9618 with SMTP id y133-20020a81a18b000000b005a7bc799618mr4031999ywg.12.1699769941377; Sat, 11 Nov 2023 22:19:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769941; cv=none; d=google.com; s=arc-20160816; b=EAvkbToZYvJHP3+scf+2qmT5Q4OJlpwzJOaLk8EZVMSCEgzfXgzgPckrtKiCHHN1cX V9H90puHaVziwQU8TGz56nxqGliK7hwQutuEsNQb6CLR+UEA3r6uLBjgTwdu5ovHVzyl Qz7MzOkYTxp3FyI/KH1gHiHoT5nk4MuDQ/NENuSB3YXIp8KrHBTvGA5jWkcQSWAHvbKl 1SPpLnmsSGa6G/oz4/TiNH2pFVWzEddd/CyqMA1nr2JW6J38zsv567uzYOkdwFLbU8tX II3zTzpR66SOVZ99npQU9RKqizWExujUezuJAe0qz4fXCOXuXtL3bCWEDr6jUNu6KzmY G97w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=b8Fd5algXv1hC9RL4Oqdh8Kcyt+C3bUuZZdNlKFcC0M=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=hmnjXsybmvHt+sHdOLH3dJ5iu6g6AzdQnje3gNr5lX70Xm4TlyxSQK590aCDmjfH06 wKdOYyy9IKj5iFGVZ8jP8VouRveXlA6Xid2MhhDVAsEF3cGDt3RrZurwiJcFw+xwU8fK dhm0O7KFiaaguhD4jhq88jbECGSOuZzyauqA4BBF1X9/guBg7kaZtXmn1t2w/D1F3Br6 L49yorcAuc2rU6Yyue3YRiEJEOvFjSvLF5bCSqhRVExGaiD2ouzkFTaC3ZIK6KNHRmG2 8y0/6frmTYaXM+ZvS3YqG3T208gGqNbFsQZY9evDxpRQMxGkyI3Qg/PGg6Ss5EjyXPZt +H8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dYK86b7k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id c21-20020a056a00249500b006c3482c4e4dsi3237857pfv.289.2023.11.11.22.19.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:19:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dYK86b7k; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 1E9DA808488D; Sat, 11 Nov 2023 22:19:00 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231408AbjKLGSy (ORCPT + 29 others); Sun, 12 Nov 2023 01:18:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231372AbjKLGSY (ORCPT ); Sun, 12 Nov 2023 01:18:24 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88E7B4EC5 for ; Sat, 11 Nov 2023 22:17:54 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5733CC433CD; Sun, 12 Nov 2023 06:17:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769874; bh=i54fNqJU7sp4UXlnwp+YcKfJLY+fhfGViunXjtd8s+k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dYK86b7k9E9ZF7LvDQjIBzOpnNCn2Tujmh+DY478+1v491siLxIcYO0XXQgtr9EVD YkEwCIQ4bhW7o/fcNbcZb/CyIbKvZVeIM0ZLvKgqSNz4mE/hbpOofOpaq6KIteEm2E NDE1JUNUwoUxAErCY+HvrykIdHI4hC1y1H7uBvjC/mftXKkKthQD4PY0PVlpMSh0Fm cBcLqp+5nzEVrOpEydk2FAcQcTNNnk1nFA7kKzCu1WTF+KacRCT6G0Lar9mOQr9EnD l8PhPryyGvgqTaJ/BJl4gFTdKbC3Ci7jYtE4dnIr6q2i9ZItvDNaYcZH7K7ew3DzqS 7DQjQWfnd13tQ== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 24/38] riscv: s64ilp32: Add TImode (128 int) support Date: Sun, 12 Nov 2023 01:15:00 -0500 Message-Id: <20231112061514.2306187-25-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 (snail.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:19:00 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337965659361108 X-GMAIL-MSGID: 1782337965659361108 From: Guo Ren The s64ilp32 uses 64bit compiler, so it could support “Tetra Integer” mode, which represents a sixteen-byte (128) integer. It's the first 32BIT linux support TImode :) Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 1 + arch/riscv/lib/Makefile | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 0fc03aa076e6..a45e31ef3b2c 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -339,6 +339,7 @@ config ARCH_RV64I config ARCH_RV64ILP32 bool "RV64ILP32" depends on NONPORTABLE + select ARCH_SUPPORTS_INT128 if !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) select 32BIT select MMU select VDSO64ILP32 diff --git a/arch/riscv/lib/Makefile b/arch/riscv/lib/Makefile index 26cb2502ecf8..68af463795e1 100644 --- a/arch/riscv/lib/Makefile +++ b/arch/riscv/lib/Makefile @@ -9,5 +9,6 @@ lib-y += strncmp.o lib-$(CONFIG_MMU) += uaccess.o lib-$(CONFIG_64BIT) += tishift.o lib-$(CONFIG_RISCV_ISA_ZICBOZ) += clear_page.o +lib-$(CONFIG_ARCH_RV64ILP32) += tishift.o obj-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o From patchwork Sun Nov 12 06:15:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164225 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562813vqg; Sat, 11 Nov 2023 22:21:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IEFfqO7oedflWpqKzE/vDJ9Lw0TGNNy31/yddqQfTexTHIH4xJWbrZzNWtkeTG/lKm6f8FU X-Received: by 2002:a05:6808:640e:b0:3af:75e2:4c34 with SMTP id fg14-20020a056808640e00b003af75e24c34mr5073758oib.50.1699770111240; Sat, 11 Nov 2023 22:21:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770111; cv=none; d=google.com; s=arc-20160816; b=mjiU7tk4dqQZonqYhl2sOeY3M3LmA1c17IuEkzXGXqKkx5d3Px1JmZdG2jg0MjxHyV Xzs3WPMSLxDIvtFv0mAuMO1hcFOl265ajYq0WQHh6+y14kzs5FMYeQT8ilUGuXx8g2BF OG5sUzQ/g+iBuQaXRCnhDCORX9hstunGWVw5ERFaQczL/TROl77hSk7hAWunLRv4CVeM Q6u2V9ahoiZFxUsFWL308RO4nb5Q2q+Y8quopfIBOk8hEHlYE9GAYtu4dLu4rikivrL8 g0riH+hx8E5oWOTJrJ5Vjc7tEPYo+f+EUyrlOyrJkGR723iVh6vPMKxAI8en1rBE2sOy 0ffQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=xFczIbqJSvm687tqMvpcwoPDJUNAvevGpDvzHNeg2Ps=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=XXi33JSLtFxX/7aBwC0KRj9DvPZSQWRjeJBm1fXOdKFXY73gduUScFz3FSSttgz6jR g+1cKKCtpis7+CBhkhbNgeLo5ek8rNShyrcSjreW8Ul/IRLnRglzpOkGo8ZPW5JhIEns 2gsUCzfL60xRjfFl95ohZIxUtAeFmwCRXEOiJYTKuLmfvHKoB0vOrPfqzyQtvdNckJwR tXeL5nLQNn7fo6TT0/rqe5RBlhorjV+s/oPrDCPTbVksyjiJHY3Gdutgm9323R3BcVrJ fPLAiOt45gZDWz9cYL70OllR642WQwINvoBJkUQPYB2Lk420gDJs5wXKknwFg1bdjHo8 I8rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=DPbNX3VW; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id k5-20020a170902c40500b001c7345bc007si3256678plk.486.2023.11.11.22.21.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:21:51 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=DPbNX3VW; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 71A048087212; Sat, 11 Nov 2023 22:21:35 -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 S231246AbjKLGS6 (ORCPT + 29 others); Sun, 12 Nov 2023 01:18:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230403AbjKLGSe (ORCPT ); Sun, 12 Nov 2023 01:18:34 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D86DC47AB for ; Sat, 11 Nov 2023 22:18:00 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCDC5C433C7; Sun, 12 Nov 2023 06:17:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769880; bh=nL7iDuDhY95l52l/CjM7hbY+3m/GNRO3MBYY0dX3WHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DPbNX3VW6Wt4eQeItvPkn01OM6G1EIx3FnWK8VeBrKuI9rgxBaf5VRbXsrchYPGct LSLCVQkzLfG8/4xG035kAhK9C685tNhXpTe0magt/gSOZrI5LWkGvfePLULoH6tSMI Y53CCQfyFMMYdLTYovZ547xGxNYgAMInBnTzn/bNzBvA/aF9KAsmsgJO10b/EOmjfc WU558dZUZSvVwa7pOR3JvsfGhrdVKMmXZIGbGsJu6AW6oFFsaWyHyuM9OXzMUevdyW 8I+ZWWe6tBeA3ORoOl3R+QgfFlnrOfOSEORIJqU3IjnHERzrwMiQw6e86KPzhjxeDl vEBZJfJsIx+BQ== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 25/38] riscv: s64ilp32: Implement cmpxchg_double Date: Sun, 12 Nov 2023 01:15:01 -0500 Message-Id: <20231112061514.2306187-26-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 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]); Sat, 11 Nov 2023 22:21:35 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338144394960911 X-GMAIL-MSGID: 1782338144394960911 From: Guo Ren The s64ilp32 has the ability to exclusively load and store (ld/sd) a pair of words from an address. Then the SLUB can take advantage of a cmpxchg_double implementation to avoid taking some locks. This patch provides an implementation of cmpxchg_double for 64-bit pairs, and activates the logic required for the SLUB to use these functions (HAVE_ALIGNED_STRUCT_PAGE and HAVE_CMPXCHG_DOUBLE). Similar commit: 5284e1b4bc8a ("arm64: xchg: Implement cmpxchg_double") Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 2 ++ arch/riscv/include/asm/cmpxchg.h | 53 ++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index a45e31ef3b2c..57b98f1990b3 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -86,6 +86,7 @@ config RISCV select GENERIC_VDSO_TIME_NS if HAVE_GENERIC_VDSO select HARDIRQS_SW_RESEND select HAS_IOPORT if MMU + select HAVE_ALIGNED_STRUCT_PAGE if SLUB && ARCH_RV64ILP32 select HAVE_ARCH_AUDITSYSCALL select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP select HAVE_ARCH_HUGE_VMAP if MMU && 64BIT && !XIP_KERNEL @@ -105,6 +106,7 @@ config RISCV select HAVE_ARCH_USERFAULTFD_MINOR if 64BIT && USERFAULTFD select HAVE_ARCH_VMAP_STACK if MMU && 64BIT select HAVE_ASM_MODVERSIONS + select HAVE_CMPXCHG_DOUBLE if ARCH_RV64ILP32 select HAVE_CONTEXT_TRACKING_USER select HAVE_DEBUG_KMEMLEAK select HAVE_DMA_CONTIGUOUS if MMU diff --git a/arch/riscv/include/asm/cmpxchg.h b/arch/riscv/include/asm/cmpxchg.h index 2f4726d3cfcc..9f48a1da1c0a 100644 --- a/arch/riscv/include/asm/cmpxchg.h +++ b/arch/riscv/include/asm/cmpxchg.h @@ -7,6 +7,7 @@ #define _ASM_RISCV_CMPXCHG_H #include +#include #include #include @@ -360,4 +361,56 @@ arch_cmpxchg_relaxed((ptr), (o), (n)); \ }) +#ifdef CONFIG_ARCH_RV64ILP32 +#define system_has_cmpxchg_double() 1 + +#define __cmpxchg_double_check(ptr1, ptr2) \ +({ \ + if (sizeof(*(ptr1)) != 4) \ + BUILD_BUG(); \ + if (sizeof(*(ptr2)) != 4) \ + BUILD_BUG(); \ + VM_BUG_ON((ulong *)(ptr2) - (ulong *)(ptr1) != 1); \ + VM_BUG_ON(((ulong)ptr1 & 0x7) != 0); \ +}) + +#define __cmpxchg_double(old1, old2, new1, new2, ptr) \ +({ \ + __typeof__(ptr) __ptr = (ptr); \ + register unsigned int __ret; \ + u64 __old; \ + u64 __new; \ + u64 __tmp; \ + switch (sizeof(*(ptr))) { \ + case 4: \ + __old = ((u64)old2 << 32) | (u64)old1; \ + __new = ((u64)new2 << 32) | (u64)new1; \ + __asm__ __volatile__ ( \ + "0: lr.d %0, %2\n" \ + " bne %0, %z3, 1f\n" \ + " sc.d %1, %z4, %2\n" \ + " bnez %1, 0b\n" \ + "1:\n" \ + : "=&r" (__tmp), "=&r" (__ret), "+A" (*__ptr) \ + : "rJ" (__old), "rJ" (__new) \ + : "memory"); \ + __ret = (__old == __tmp); \ + break; \ + default: \ + BUILD_BUG(); \ + } \ + __ret; \ +}) + +#define arch_cmpxchg_double(ptr1, ptr2, o1, o2, n1, n2) \ +({ \ + int __ret; \ + __cmpxchg_double_check(ptr1, ptr2); \ + __ret = __cmpxchg_double((ulong)(o1), (ulong)(o2), \ + (ulong)(n1), (ulong)(n2), \ + ptr1); \ + __ret; \ +}) +#endif + #endif /* _ASM_RISCV_CMPXCHG_H */ From patchwork Sun Nov 12 06:15:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164229 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp564093vqg; Sat, 11 Nov 2023 22:27:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IHOW0y7p7D17dUwGM2VhFjqoc/cJciel+pIO45hpl8U9SyfVzbSdcIgOlqfa/WFehmzniR4 X-Received: by 2002:a81:a04f:0:b0:577:a46:26e5 with SMTP id x76-20020a81a04f000000b005770a4626e5mr3791113ywg.31.1699770450262; Sat, 11 Nov 2023 22:27:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770450; cv=none; d=google.com; s=arc-20160816; b=W14cdXYgexfdJ+qMlYIC+7BOeNpSQi6bECB7ztGkuUBaLKoUoskcp/xUnnNrqB5ezX oCLYFwt0EsBikZgAcf027IQd9Ap0cIHw7WwRp13KemDY5CDoWzCFvqJIO9YJJwvxN4DX H90yNXHxAIhy4m3i8KqTgbMjUo3rYpbLNDF5y6HT+TMposHs5+LIFbDcLQ84UnLnOJoj NpdmnzR1TGV6FImdZv1qNN31DM8ruzLvuuHSM5zg/XZAxRHH66CBgvrsnW3EDbkVGTkq 7uoP3TSEARcrEBvl2476RB5ixSuk513401Bt29OKZqfcZmpKN6vSTTuwx7Mr4arh4LRu R3iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Tjtm9pgrg9d8/oPAZs4lg+g+QX1+fylqmvVFBkTmdwo=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=YVZ35wbDoTt0JIDxVTjNAEUGjIbWzwDTJIZWZyhzFMfOSZ2Qc6nRF6ZZDX7aAffyh+ 8TFyQFcUxscpaMSTQUFzQvFzdHYJmvusizN5mT+HMZdEaGotXwsLbU3bjofrXTWqsXNK K6HpOQWfVdH/xNfUL6Smk5QDiwXXl1qLqlSUxsDjjYVrO4PdZK7O6KGMPRgEJdVYrldi pXdamf+a3K5g3+LCe+/GKMDM3DKsLM/GzpO82+V5I2uTY0kYbaQEG4kPt+MYjKoBwZVS TkV1a2nBCE6kJaCzF/N6DEYJ5fGeF/wGGeKmyaoTryJLKVZ/B15GmjN1fCfS01YWl3la I5zA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=CbhMDVf5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id g7-20020a056a0023c700b0068e3f550763si3373110pfc.101.2023.11.11.22.27.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:27:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=CbhMDVf5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 3BC4B806382E; Sat, 11 Nov 2023 22:26:45 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229748AbjKLG0b (ORCPT + 29 others); Sun, 12 Nov 2023 01:26:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230104AbjKLG01 (ORCPT ); Sun, 12 Nov 2023 01:26:27 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F4483C15 for ; Sat, 11 Nov 2023 22:18:07 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E993CC433CA; Sun, 12 Nov 2023 06:18:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769886; bh=pCbLyhlTiTCPVyjC6F0x/RIOJUl3eHTLK6u1tDMFHiQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CbhMDVf5Ls3HY7vX7w6FISj1kn1U4VVPGZX4dsUZKDlZoIDE6gN68LYCDykSmzwq/ HW0hrA9GMbmEYenBeVuylzxp0i40jlJS2sb74sRLRaQ7a28yqIyPj9pyIMqLEXwWdH womA6+yJRG46rjsiYplmtxAQnB1q+T0g11SjcvYIFwMpeVdQxIM03g9v2CFzu3QD95 4kfemghrnDw8pcpdHOqG0p/JJMRLzSyTLGUTIt1gBNht3bc8n9RJ547lfMACGeRf9M 0cQcGwBytXmIbT0qepXitV/1fhx0YB7aPqbEHs86kXMbtwoNMJH7ZAyUeICU2LVS3C QAYg6f/FQx6MQ== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 26/38] riscv: s64ilp32: Disable KVM Date: Sun, 12 Nov 2023 01:15:02 -0500 Message-Id: <20231112061514.2306187-27-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:26:45 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338499783191643 X-GMAIL-MSGID: 1782338499783191643 From: Guo Ren Disable the KVM host feature for s64ilp32 first, and let's work on this feature after the s64ilp32 main feature is merged. Signed-off-by: Guo Ren Signed-off-by: Guo Ren Cc: Anup Patel --- arch/riscv/kvm/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/kvm/Kconfig b/arch/riscv/kvm/Kconfig index dfc237d7875b..3033fc1f7271 100644 --- a/arch/riscv/kvm/Kconfig +++ b/arch/riscv/kvm/Kconfig @@ -20,6 +20,7 @@ if VIRTUALIZATION config KVM tristate "Kernel-based Virtual Machine (KVM) support (EXPERIMENTAL)" depends on RISCV_SBI && MMU + depends on !ARCH_RV64ILP32 select HAVE_KVM_EVENTFD select HAVE_KVM_IRQCHIP select HAVE_KVM_IRQFD From patchwork Sun Nov 12 06:15:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164213 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562191vqg; Sat, 11 Nov 2023 22:19:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IEXIruNgU7lIVamfyoaPG1q19E89zsD16gPS/82V0ciJo9EOkeI+zd5ZWUF9tWYPNvZYpxZ X-Received: by 2002:a05:6a21:7899:b0:152:4615:cb9d with SMTP id bf25-20020a056a21789900b001524615cb9dmr11809889pzc.12.1699769961919; Sat, 11 Nov 2023 22:19:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769961; cv=none; d=google.com; s=arc-20160816; b=FYBQiGi7t9p+2N5o+1cHAmjnF/F4I/lWrrDipC8SpgG6dyGSgdEL5lRgTUWdx2IBZU ute7EgX9PdyTsr2+yeXlBJXZt4A3F2l0CHG/m1XJ4lHD4/LtPcyDCph9tbSfx3fY00ex 76vUeTvIfCm/VzN1nAVZcee9CvjnnTRV72kU3Qq1N27SobnH2ezq3l/ov3prA/dUc+3y Eu/09ko5ImL7wWNT/KvDJrpU2y/QhpsM4aW2GcHLfJOE+FF4JWnlwfqNFbTqWukHG4ar TvcsJ0xHyOvXZ/eZTr1XbFoW4/32TJVgmhGA/K+MiJ0wXyoOAlV0qb5X1f1lmpoBEPQu mxOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Fik/JncVKA0nz8jFq+DfZjK+PJsxsRTpLEsmv0XTnl8=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=x3TOj5oLwr/V2QhDjoX+npDEyEwsAfS9V+Gxls4a6fIybgGCljR6pHRR2Ryl4j+Btm i8Z0E/k2/CWK0hj7JhLAk2JBi+jnSjmnzrcQcBa7NoG2eDD6dFQ0CsVJrG9mi5kFbOGu GtfGGquPDg+iEeoE230LoF+vubjLTAU3UnnFCEUOdMrkNnqsuUJOYVNxF3prs/EUN/94 0s2viKK9TcvmHiySIHwaphPban7SeYznXBMjUZiv2wHkWUowe7r7fQTcqpiESXXzG7NK /mum/lAe7l5O9CUXrkcVS19j4nt+i6rR8aOdHJVY+tabOsQO/Wm8uDDVE03V+ER3snOF xedg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=q9FS9ARU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id cl22-20020a056a02099600b005b7d9aace9dsi3587326pgb.46.2023.11.11.22.19.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:19:21 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=q9FS9ARU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 09F618048C2E; Sat, 11 Nov 2023 22:19:20 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230225AbjKLGTG (ORCPT + 29 others); Sun, 12 Nov 2023 01:19:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231386AbjKLGSi (ORCPT ); Sun, 12 Nov 2023 01:18:38 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 93BCF5264 for ; Sat, 11 Nov 2023 22:18:12 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 139DCC433C8; Sun, 12 Nov 2023 06:18:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769892; bh=Se41gQju7esb4eo2kifFLRU4bWbFiAHi/+vBMhWFQy0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q9FS9ARUamXXaaEY7AQz3NchiLDA2ZkD57Sll0hRZts0OLQyJeawiSN2smXN0fSE0 9PCu9cIbHg9iqvXzLl0HAhBfnbf4do6AlWl+bRNTlhzz27lrJqQtK64ckOa9E4hSMK vIS/YyelQCO8j9btqRE99cEzhSJxcPhTJ7KZcb3yesHRJHsMQD3mArJ9eZS8l5puCe ab+J9RECiexXhAchKZMaZaCjwLxoOPo+ETD4GaceQQhFDVJ5aOVfz8L1cTVmhjb4pV 7cC/lbI7m1gRb5qiB+sXzaBhgMXzocyyV36Ef52nSiA5IxVqlGcyxRr3ZMG8vsSlfE nPYSCj8r+4F+g== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 27/38] riscv: s64ilp32: Correct the rv64ilp32 stackframe layout Date: Sun, 12 Nov 2023 01:15:03 -0500 Message-Id: <20231112061514.2306187-28-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:19:20 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782337987250925175 X-GMAIL-MSGID: 1782337987250925175 From: Guo Ren The callee saved fp & ra are xlen size, not long size. This patch corrects the layout for the struct stackframe. echo c > /proc/sysrq-trigger Before the patch: sysrq: Trigger a crash Kernel panic - not syncing: sysrq triggered crash CPU: 0 PID: 102 Comm: sh Not tainted 6.3.0-rc1-00084-g9e2ba938797e-dirty #2 Hardware name: riscv-virtio,qemu (DT) Call Trace: ---[ end Kernel panic - not syncing: sysrq triggered crash ]--- After the patch: sysrq: Trigger a crash Kernel panic - not syncing: sysrq triggered crash CPU: 0 PID: 102 Comm: sh Not tainted 6.3.0-rc1-00084-g9e2ba938797e-dirty #1 Hardware name: riscv-virtio,qemu (DT) Call Trace: [] dump_backtrace+0x1e/0x26 [] show_stack+0x2e/0x3c [] dump_stack_lvl+0x40/0x5a [] dump_stack+0x16/0x1e [] panic+0x10c/0x2a8 [] sysrq_reset_seq_param_set+0x0/0x76 [] __handle_sysrq+0x9c/0x19c [] write_sysrq_trigger+0x64/0x78 [] proc_reg_write+0x4a/0xa2 [] vfs_write+0xac/0x308 [] ksys_write+0x62/0xda [] sys_write+0xe/0x16 [] do_trap_ecall_u+0xd8/0xda [] ret_from_exception+0x0/0x66 ---[ end Kernel panic - not syncing: sysrq triggered crash ]--- Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/stacktrace.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/riscv/include/asm/stacktrace.h b/arch/riscv/include/asm/stacktrace.h index f7e8ef2418b9..cea8aafbecca 100644 --- a/arch/riscv/include/asm/stacktrace.h +++ b/arch/riscv/include/asm/stacktrace.h @@ -8,7 +8,13 @@ struct stackframe { unsigned long fp; +#ifdef CONFIG_ARCH_RV64ILP32 + unsigned long pad1; +#endif unsigned long ra; +#ifdef CONFIG_ARCH_RV64ILP32 + unsigned long pad2; +#endif }; extern void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs, From patchwork Sun Nov 12 06:15:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164219 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562474vqg; Sat, 11 Nov 2023 22:20:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IGtIVKhThFFsgykgzVvB2oTy+P3a8KSHoRUXbNfO1VqSsRRphF8QSHrR07HdXAvIpGUvwaC X-Received: by 2002:a05:6808:1211:b0:3ab:8e86:fc26 with SMTP id a17-20020a056808121100b003ab8e86fc26mr5942413oil.46.1699770031362; Sat, 11 Nov 2023 22:20:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770031; cv=none; d=google.com; s=arc-20160816; b=Ze6bRVXRuoUeFeFE0gBQnzBXEIOHWMwmM8wzB3ddV+4FOLyWqCcJSH+RcLaQKwj0Aa j45TYniMsONIqt7HSEjSjJmeg2/174J1beGg2Sm8C6T5Od5g8CrMu/MCyLSDbZhO9MHz e3BtQ57x/0HwbkCfuSfTIh1STvZym+xyDBaUTZp/of1dDV7RHTZHZZgKC7VvVa30rZRB w/3axVcmFxpGBzthvh1A+iAv+tcZsa6FeywDp+1egBXqJYlavfMW7+zl6BXKXLdbmRwd UB54+yDO3+iwQkT4SgWjuBfh+0eBYOWfamMtTUcmRpnCxlfNOrTFr3FSbzwwZI9VeZGh 5f+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=eC9iE73u/QLXnrgqlD6Tx7eRltMLAh2MKRx5qcdLMo0=; fh=hiUu4WnNf2NE4BOnZkChTDNuaLCP7F/uPj8/x0ZaTY8=; b=sFdXCOyImltGCLGK4IAy3t+NAT9wy59XyyK9SZMZ9RwIFfzrjM+dw0JLrfHZlCXirU sWzifae1HEzpl1cn1l0WxCh414M42/aVbGO562CYfJG8d5AtH3DKJXY1ANFG/lXCSRuZ WMUtfrMy4Yx+yTNIBhfKHtN3+g/k+ubkYOahsnoYKv0XToFUv4/F6dkh4U7oPSCBaflZ pka5doG/RtsI4IxmlqIPMNl1kEQa0UZKk9RYnIc0bSRlaalf8gDWKJzxRYsPe5P5lTtB HZfGj0BB/jjlhE+7ykqh2yDHd2pl8KWntOaXSjLMqu5jvT4BN7qvQIZNtZgYxauaS3Mp RNmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="XzxiUc/r"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id n3-20020a170902d2c300b001cc453f5178si3206180plc.439.2023.11.11.22.20.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:20:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="XzxiUc/r"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 68DFE809EE3B; Sat, 11 Nov 2023 22:20:13 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231358AbjKLGTO (ORCPT + 29 others); Sun, 12 Nov 2023 01:19:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43662 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231357AbjKLGSr (ORCPT ); Sun, 12 Nov 2023 01:18:47 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ABEE249D1 for ; Sat, 11 Nov 2023 22:18:18 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF689C433CC; Sun, 12 Nov 2023 06:18:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769898; bh=C5/JTwI5wb372y7wWIYf3dQ+SLZcZm+RSCZqId06nPc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XzxiUc/riiP4tMEJUwggD2u9mRqrLLZ41Aw67HFXqS1bHzAuFmeIH2H5OdveRi8cH 5zztfx/t2iY6XV7eYL8QLHaXv5f+VLVEv0DQBpzv3fhdQ34oepKnhuUHQCRLTAAfmI BlXFjNTpR4nT0HBy8oRTm2UlXg1Lm37W6+Es2jfbgDfBCMc1rqNVmbOAc2iRrA8GrJ 6R8wIWO+3OcjVbkakLgVpVjgClmWXdTeeqSpyTGCAbCoxFIQVQxFEwORvHlUkG+QQa oywT+nnivDrE06mlTpUBGGpGzGR1WmPvM77j7UI/6TmlIhpnpuKOcrEvU6Cvpr98bH HAReT157wq6iw== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren , LiaoShihua Subject: [RFC PATCH V2 28/38] riscv: s64ilp32: Temporary workaround solution to gcc problem Date: Sun, 12 Nov 2023 01:15:04 -0500 Message-Id: <20231112061514.2306187-29-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 fry.vger.email 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 (fry.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:20:13 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338060380166999 X-GMAIL-MSGID: 1782338060380166999 From: Guo Ren There is an existing problem in 64ilp32 gcc that combines two pointers in one register. Liao is solving that problem. Before he finishes the job, we could prevent it with a simple noinline attribute, fortunately. struct path { struct vfsmount *mnt; struct dentry *dentry; } __randomize_layout; struct nameidata { struct path path; struct qstr last; struct path root; ... } __randomize_layout; struct nameidata *nd ... nd->path = nd->root; 6c88 ld a0,24(s1) ^^ // Wrong arg of mntget e088 sd a0,0(s1) // Need inserting "lw a0,0(s1)" here mntget(path->mnt); 2a6150ef jal c01ce946 Any gcc helps are welcome :) Signed-off-by: Guo Ren Signed-off-by: Guo Ren Cc: LiaoShihua --- fs/namei.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/namei.c b/fs/namei.c index e56ff39a79bc..1285736dadc4 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -543,7 +543,7 @@ EXPORT_SYMBOL(inode_permission); * * Given a path increment the reference count to the dentry and the vfsmount. */ -void path_get(const struct path *path) +void noinline path_get(const struct path *path) { mntget(path->mnt); dget(path->dentry); From patchwork Sun Nov 12 06:15:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164215 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562330vqg; Sat, 11 Nov 2023 22:19:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IF82EJ29v02aeRjAq3lcc75v/gd9OWK1eMp3RTxNc/kf+/ReaKSpGB8TCkRBJG+B5nVw0Cq X-Received: by 2002:a05:6870:7a17:b0:1ef:b8c2:5541 with SMTP id hf23-20020a0568707a1700b001efb8c25541mr5555227oab.47.1699769997009; Sat, 11 Nov 2023 22:19:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699769996; cv=none; d=google.com; s=arc-20160816; b=m6qEGBnbBjm7K5ssRPBombViAc0Ba6XcQGbo8dStEHqnCFWwealv4/KVPnoruEKpFc twCNkPMA8j4VyOhldofRgyXb7IB2zMCn5t0B4d6oSP0ntov1x2IX3xfLVNuFj8qOhqsk /08ENR8Xv9+POGoilSd/x+09BelM6tKRecr4VBxN9JAjmt4nXs8IIVDqRNHpujLsDI7E txEcwtc7YNkNl/5GJXLqdBghEa1gep9577wyUfaeqVwhHKCmmPFl+jLcEE7KeixFI7sj nsbnJAA6fq7fXWDkxHRzw/K3ezEY7KK6Rjow6iUmAE7oSAUun7dseyU3aH8xaI7pJD2i lFVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=PsgIxYH8oZ+rM0ikUc/ugfT3+AIYS9eLUf0ThozjFHs=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=sIdcFCqxWNGMe338BkmOgvfND0F6HBmpyCQVyjYNIjRQyAAEOgVks99m40pPKL0DNg svD631q6fb8eoEu/LRaQJmoo/azJPijsIynscKFscRqTNQF/U2bbnu28GvyLFUlnxxhh bxxO7QWAz8MjEhDzeT8DMn6PCoBCdW6p75lo3E/OlhsvqB0olL31yxTO2bugo4FVTN20 EB/sCiRPX3RJK/gynqMtGdKPL8Y6Mswj3RMQ6UaMCU7Ja466wxCXiyyfhwnuRbgSoblM XCUYMXsajJYpwWbiCcec7UY/CkuIKWwibnvlKD6u2V2agHAYKcAkV2pxkYwCbDi4MbcJ 2YJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VNp1V4JK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id e8-20020a17090a9a8800b00280a01a906esi7767955pjp.162.2023.11.11.22.19.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:19:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VNp1V4JK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id A53458047D4C; Sat, 11 Nov 2023 22:19:53 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230506AbjKLGTd (ORCPT + 29 others); Sun, 12 Nov 2023 01:19:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231487AbjKLGTJ (ORCPT ); Sun, 12 Nov 2023 01:19:09 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6EB3F47A1 for ; Sat, 11 Nov 2023 22:18:24 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F7A1C43397; Sun, 12 Nov 2023 06:18:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769904; bh=lBeUMNOs/hGCqxEibPqpp7A9oyHUvY+MVkAUbSUv13Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VNp1V4JKQmXTYAc0Y6hZletG3bC2go9bi1V3CwPXQKsEJUXdISnUT+ruGjB/Ep4zZ 7K7aV6siUkCR35ommO3wCoA/a/nwHaLFyj+rNTd901lQ4B2d/KzxBtT2AHWLg4i8QV 5YaIePrBO6KZEc7chitzVbk3GMqw/3bveniKMb7LiVllgtYcFqA/a65QsAH0qxi0NU ZFF90/reQLudz5ayCxUn/+nCLIQTiKaycu5uzJBHvLW2x52P7O9ZPQoQFwDkPpRqFC OgIwdxKZxU/TnAk0VRnWy3Mm1cqrdlmTV6VNIPXVejRniT0xgCHWvFyZ6qrEJKOAZE L7YW5UuCr3bag== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 29/38] riscv: s64ilp32: Introduce ARCH_HAS_64ILP32_KERNEL for syscall Date: Sun, 12 Nov 2023 01:15:05 -0500 Message-Id: <20231112061514.2306187-30-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:19:53 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338024282903454 X-GMAIL-MSGID: 1782338024282903454 From: Guo Ren When the kernel is built with ILP32 memory model on 64bit ISA and supports ILP32 memory model on 32bit ISA in userspace, the ABIs are different between kernel and userspace, similar to COMPAT, so the option converts the 64-bit arguments of 32ILP32 syscalls to 64ILP32 calling convention. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/Kconfig | 10 ++++++++++ arch/riscv/Kconfig | 1 + fs/open.c | 22 ++++++++++++++++++++++ fs/read_write.c | 17 +++++++++++++++++ fs/sync.c | 22 ++++++++++++++++++++++ include/linux/syscalls.h | 35 +++++++++++++++++++++++++---------- mm/fadvise.c | 24 ++++++++++++++++++++++++ 7 files changed, 121 insertions(+), 10 deletions(-) diff --git a/arch/Kconfig b/arch/Kconfig index aff2746c8af2..a77764d581cc 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -1479,6 +1479,16 @@ config ARCH_HAS_NONLEAF_PMD_YOUNG address translations. Page table walkers that clear the accessed bit may use this capability to reduce their search space. +config ARCH_HAS_64ILP32_KERNEL + bool + depends on 32BIT + help + Architectures that select this option build the kernel with the ILP32 memory + model and support the ILP32 memory model on 32bit ISA in userspace, the ABIs + are different between kernel and userspace, similar to COMPAT, so the option + converts the 64-bit arguments of 32ILP32 syscalls to 64ILP32 calling + convention. + source "kernel/gcov/Kconfig" source "scripts/gcc-plugins/Kconfig" diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 57b98f1990b3..5106eab17811 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -345,6 +345,7 @@ config ARCH_RV64ILP32 select 32BIT select MMU select VDSO64ILP32 + select ARCH_HAS_64ILP32_KERNEL endchoice diff --git a/fs/open.c b/fs/open.c index 0c55c8e7f837..533938e11536 100644 --- a/fs/open.c +++ b/fs/open.c @@ -214,6 +214,17 @@ COMPAT_SYSCALL_DEFINE2(ftruncate, unsigned int, fd, compat_ulong_t, length) /* LFS versions of truncate are only needed on 32 bit machines */ #if BITS_PER_LONG == 32 +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL +SYSCALL_DEFINE3(truncate64, const char __user *, path, compat_arg_u64_dual(length)) +{ + return do_sys_truncate(path, compat_arg_u64_glue(length)); +} + +SYSCALL_DEFINE3(ftruncate64, unsigned int, fd, compat_arg_u64_dual(length)) +{ + return do_sys_ftruncate(fd, compat_arg_u64_glue(length), 0); +} +#else SYSCALL_DEFINE2(truncate64, const char __user *, path, loff_t, length) { return do_sys_truncate(path, length); @@ -223,6 +234,7 @@ SYSCALL_DEFINE2(ftruncate64, unsigned int, fd, loff_t, length) { return do_sys_ftruncate(fd, length, 0); } +#endif #endif /* BITS_PER_LONG == 32 */ #if defined(CONFIG_COMPAT) && defined(__ARCH_WANT_COMPAT_TRUNCATE64) @@ -350,10 +362,20 @@ int ksys_fallocate(int fd, int mode, loff_t offset, loff_t len) return error; } +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL +SYSCALL_DEFINE6(fallocate, int, fd, int, mode, + compat_arg_u64_dual(offset), + compat_arg_u64_dual(len)) +{ + return ksys_fallocate(fd, mode, compat_arg_u64_glue(offset), + compat_arg_u64_glue(len)); +} +#else SYSCALL_DEFINE4(fallocate, int, fd, int, mode, loff_t, offset, loff_t, len) { return ksys_fallocate(fd, mode, offset, len); } +#endif #if defined(CONFIG_COMPAT) && defined(__ARCH_WANT_COMPAT_FALLOCATE) COMPAT_SYSCALL_DEFINE6(fallocate, int, fd, int, mode, compat_arg_u64_dual(offset), diff --git a/fs/read_write.c b/fs/read_write.c index b07de77ef126..f6d90d52dec9 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -669,11 +669,19 @@ ssize_t ksys_pread64(unsigned int fd, char __user *buf, size_t count, return ret; } +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL +SYSCALL_DEFINE5(pread64, unsigned int, fd, char __user *, buf, + size_t, count, compat_arg_u64_dual(pos)) +{ + return ksys_pread64(fd, buf, count, compat_arg_u64_glue(pos)); +} +#else SYSCALL_DEFINE4(pread64, unsigned int, fd, char __user *, buf, size_t, count, loff_t, pos) { return ksys_pread64(fd, buf, count, pos); } +#endif #if defined(CONFIG_COMPAT) && defined(__ARCH_WANT_COMPAT_PREAD64) COMPAT_SYSCALL_DEFINE5(pread64, unsigned int, fd, char __user *, buf, @@ -703,11 +711,20 @@ ssize_t ksys_pwrite64(unsigned int fd, const char __user *buf, return ret; } +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL +SYSCALL_DEFINE5(pwrite64, unsigned int, fd, const char __user *, buf, + size_t, count, compat_arg_u64_dual(pos)) +{ + return ksys_pwrite64(fd, buf, count, compat_arg_u64_glue(pos)); +} + +#else SYSCALL_DEFINE4(pwrite64, unsigned int, fd, const char __user *, buf, size_t, count, loff_t, pos) { return ksys_pwrite64(fd, buf, count, pos); } +#endif #if defined(CONFIG_COMPAT) && defined(__ARCH_WANT_COMPAT_PWRITE64) COMPAT_SYSCALL_DEFINE5(pwrite64, unsigned int, fd, const char __user *, buf, diff --git a/fs/sync.c b/fs/sync.c index dc725914e1ed..d25c95d13d96 100644 --- a/fs/sync.c +++ b/fs/sync.c @@ -367,11 +367,22 @@ int ksys_sync_file_range(int fd, loff_t offset, loff_t nbytes, return ret; } +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL +SYSCALL_DEFINE6(sync_file_range, int, fd, + compat_arg_u64_dual(offset), + compat_arg_u64_dual(nbytes), + unsigned int, flags) +{ + return ksys_sync_file_range(fd, compat_arg_u64_glue(offset), + compat_arg_u64_glue(nbytes), flags); +} +#else SYSCALL_DEFINE4(sync_file_range, int, fd, loff_t, offset, loff_t, nbytes, unsigned int, flags) { return ksys_sync_file_range(fd, offset, nbytes, flags); } +#endif #if defined(CONFIG_COMPAT) && defined(__ARCH_WANT_COMPAT_SYNC_FILE_RANGE) COMPAT_SYSCALL_DEFINE6(sync_file_range, int, fd, compat_arg_u64_dual(offset), @@ -384,8 +395,19 @@ COMPAT_SYSCALL_DEFINE6(sync_file_range, int, fd, compat_arg_u64_dual(offset), /* It would be nice if people remember that not all the world's an i386 when they introduce new system calls */ +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL +SYSCALL_DEFINE6(sync_file_range2, int, fd, unsigned int, flags, + compat_arg_u64_dual(offset), + compat_arg_u64_dual(nbytes)) +{ + return ksys_sync_file_range(fd, compat_arg_u64_glue(offset), + compat_arg_u64_glue(nbytes), + flags); +} +#else SYSCALL_DEFINE4(sync_file_range2, int, fd, unsigned int, flags, loff_t, offset, loff_t, nbytes) { return ksys_sync_file_range(fd, offset, nbytes, flags); } +#endif diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 03e3d0121d5e..b559b0e676a9 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -313,6 +313,13 @@ static inline void addr_limit_user_check(void) * include the prototypes if CONFIG_ARCH_HAS_SYSCALL_WRAPPER is enabled. */ #ifndef CONFIG_ARCH_HAS_SYSCALL_WRAPPER + +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL +#define arg_loff_t(name) compat_arg_u64(name) +#else +#define arg_loff_t(name) loff_t name +#endif + asmlinkage long sys_io_setup(unsigned nr_reqs, aio_context_t __user *ctx); asmlinkage long sys_io_destroy(aio_context_t ctx); asmlinkage long sys_io_submit(aio_context_t, long, @@ -427,10 +434,11 @@ asmlinkage long sys_fstatfs64(unsigned int fd, size_t sz, asmlinkage long sys_truncate(const char __user *path, long length); asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length); #if BITS_PER_LONG == 32 -asmlinkage long sys_truncate64(const char __user *path, loff_t length); -asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length); +asmlinkage long sys_truncate64(const char __user *path, arg_loff_t(length)); +asmlinkage long sys_ftruncate64(unsigned int fd, arg_loff_t(length)); #endif -asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len); +asmlinkage long sys_fallocate(int fd, int mode, arg_loff_t(offset), + arg_loff_t(len)); asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode); asmlinkage long sys_faccessat2(int dfd, const char __user *filename, int mode, int flags); @@ -474,9 +482,9 @@ asmlinkage long sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen); asmlinkage long sys_pread64(unsigned int fd, char __user *buf, - size_t count, loff_t pos); + size_t count, arg_loff_t(pos)); asmlinkage long sys_pwrite64(unsigned int fd, const char __user *buf, - size_t count, loff_t pos); + size_t count, arg_loff_t(pos)); asmlinkage long sys_preadv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen, unsigned long pos_l, unsigned long pos_h); asmlinkage long sys_pwritev(unsigned long fd, const struct iovec __user *vec, @@ -516,9 +524,13 @@ asmlinkage long sys_sync(void); asmlinkage long sys_fsync(unsigned int fd); asmlinkage long sys_fdatasync(unsigned int fd); asmlinkage long sys_sync_file_range2(int fd, unsigned int flags, - loff_t offset, loff_t nbytes); -asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes, - unsigned int flags); + arg_loff_t(offset), + arg_loff_t(nbytes)); +asmlinkage long sys_sync_file_range(int fd, + arg_loff_t(offset), + arg_loff_t(nbytes), + unsigned int flags); + asmlinkage long sys_timerfd_create(int clockid, int flags); asmlinkage long sys_timerfd_settime(int ufd, int flags, const struct __kernel_itimerspec __user *utmr, @@ -795,7 +807,10 @@ asmlinkage long sys_clone3(struct clone_args __user *uargs, size_t size); asmlinkage long sys_execve(const char __user *filename, const char __user *const __user *argv, const char __user *const __user *envp); -asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice); +asmlinkage long sys_fadvise64_64(int fd, + arg_loff_t(offset), + arg_loff_t(len), + int advice); /* CONFIG_MMU only */ asmlinkage long sys_swapon(const char __user *specialfile, int swap_flags); @@ -1023,7 +1038,7 @@ asmlinkage long sys_newstat(const char __user *filename, struct stat __user *statbuf); asmlinkage long sys_newlstat(const char __user *filename, struct stat __user *statbuf); -asmlinkage long sys_fadvise64(int fd, loff_t offset, size_t len, int advice); +asmlinkage long sys_fadvise64(int fd, arg_loff_t(offset), size_t len, int advice); /* __ARCH_WANT_SYSCALL_DEPRECATED */ asmlinkage long sys_alarm(unsigned int seconds); diff --git a/mm/fadvise.c b/mm/fadvise.c index 6c39d42f16dc..0f56cbe8496b 100644 --- a/mm/fadvise.c +++ b/mm/fadvise.c @@ -202,18 +202,42 @@ int ksys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice) return ret; } +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL + +SYSCALL_DEFINE6(fadvise64_64, int, fd, compat_arg_u64_dual(offset), + compat_arg_u64_dual(len), int, advice) +{ + return ksys_fadvise64_64(fd, compat_arg_u64_glue(offset), + compat_arg_u64_glue(len), advice); +} + +#else + SYSCALL_DEFINE4(fadvise64_64, int, fd, loff_t, offset, loff_t, len, int, advice) { return ksys_fadvise64_64(fd, offset, len, advice); } +#endif + #ifdef __ARCH_WANT_SYS_FADVISE64 +#ifdef CONFIG_ARCH_HAS_64ILP32_KERNEL + +SYSCALL_DEFINE5(fadvise64, int, fd, loff_t, compat_arg_u64_dual(offset), + size_t, len, int, advice) +{ + return ksys_fadvise64_64(fd, compat_arg_u64_glue(offset), len, advice); +} + +#else + SYSCALL_DEFINE4(fadvise64, int, fd, loff_t, offset, size_t, len, int, advice) { return ksys_fadvise64_64(fd, offset, len, advice); } +#endif #endif #if defined(CONFIG_COMPAT) && defined(__ARCH_WANT_COMPAT_FADVISE64_64) From patchwork Sun Nov 12 06:15:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164223 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562794vqg; Sat, 11 Nov 2023 22:21:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IGF1bIEJJam/4FDtIgB+0fmuQtGaJmWojf/bd4OOJdDZNT4BPyPelLJJj18di0aVcOXdkFb X-Received: by 2002:a05:6808:10c9:b0:3ae:b06:2131 with SMTP id s9-20020a05680810c900b003ae0b062131mr5460157ois.0.1699770104658; Sat, 11 Nov 2023 22:21:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770104; cv=none; d=google.com; s=arc-20160816; b=ELIOilxAsMTc3rMlJvCzZuyv93l2MP4Xq3i6Zj4SeSDZ7cI67xKIqZmYJVn1PewyZh BuVU5ZjjMTeYBPcfz1F6Tsq16FFX2t3Kyk7THkaiWtE02jklHmoe8FyNk6+eWvNX0TI+ 3F3Cw4Ie428OaECzOYvtNqdrTKXfpCAsdiMC2QWO+UMIuzg/TECSrACI8YVhD6R8Lku/ /p4JQSJascM/giMVX2m0ah7j91CToaZRF8KjpIM0PwDHqPVF6i7E0ngbWFwpRy/o9xwr n8pEM2kY0YT/uYkgkGTmmgqU2W5XK+fDq1LlcZzReovGWqa6F2eKvOyKFMgzrTdUgK6X IBbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=iRxoDG9V2+qB7eYz6y/2Yl3DSmoD1Bc2JXIZKO51naA=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=bphZQth4a3HmQdG0qYNQB3C5IlGMLKdMSo2FUlH2nzoMGECQKgmQPLyAzlJBlu+7JQ eyeBoo+vBQhYky7aRDA9t4d+AYmSmSfpiuAxFvTp+wGyHUTKc6T9RWdl93Z6La26h5sm UTIOEGyORuLmz4gMnflObARPVotPym3OckVX4arCHqfoMps136Ox5/ewSVepncvdMq3q fk/dgkSrAbmhCBKGycd0nIDdPpSJS1aESjDL6IHGeecvHUZYD59EngPHXSg97Jr8Z6ye +bEAeAV7K2HfV8ZRUZvKrPPVkdYBkioIcDiKsQ7/9r8ML3Cm5Qkhe42C7p9A1G9n5gpr OMEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=NUqY1I7x; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id q192-20020a632ac9000000b005aba9cdf091si3210306pgq.579.2023.11.11.22.21.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:21:44 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=NUqY1I7x; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id A613A8079C8D; Sat, 11 Nov 2023 22:20:58 -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 S230450AbjKLGT3 (ORCPT + 29 others); Sun, 12 Nov 2023 01:19:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230167AbjKLGTH (ORCPT ); Sun, 12 Nov 2023 01:19:07 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 152374C3E for ; Sat, 11 Nov 2023 22:18:31 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B0EF7C4339A; Sun, 12 Nov 2023 06:18:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769910; bh=OjrCcl0rfmfc64pY2XcaTipAjTIetFz7lqlGwLAdI1U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NUqY1I7x2IBpSxSUqW/7Q6OGxQiYKOlhpkgEMuIXaegTBhYxQabZ9nWdjM3gZ1HA9 PlNm0fMrqtlmHvJ+jn4V8Ren7NlYCmwAiTI8y5M/k9k/16h+Ii0SRuzEgvYc1u3EJq whpJwHxfxSih6gKdXEktmiq5plDVz7/YlAQzH8C7aBOT3HiqHjulOxuCgkBg7WPlH/ f0NmXgtgbDRUMTm9HiQr8f4uKme+8Sdo5Sh8zYj+XRX1VD270xGtNAxCrjmwn0v60m rOVTaDeFOqKNkyQ/yEOWKFz2Qc0ijC27b9+L+CfEBAR0obCEuxoEuHL9jnL5Tdj5S6 BYGwuFwOZw69Q== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 30/38] riscv: s64ilp32: Add u32ilp32 ptrace support Date: Sun, 12 Nov 2023 01:15:06 -0500 Message-Id: <20231112061514.2306187-31-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 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]); Sat, 11 Nov 2023 22:20:58 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338136954094733 X-GMAIL-MSGID: 1782338136954094733 From: Guo Ren The s64ilp32 supports both u64ilp32 and u32ilp32 ABIs, and their pt_regs differ. So introduce the compat feature to help u32ilp32 ABI. Now u64ilp32 and u32ilp32 applications could work with the s64ilp32 Linux ptrace concurrently. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/elf.h | 2 +- arch/riscv/kernel/ptrace.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/riscv/include/asm/elf.h b/arch/riscv/include/asm/elf.h index 5b2bf1a7cb59..58c2e5ef2b7a 100644 --- a/arch/riscv/include/asm/elf.h +++ b/arch/riscv/include/asm/elf.h @@ -143,13 +143,13 @@ do { if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ (current->personality & (~PER_MASK))); \ } while (0) -#ifdef CONFIG_COMPAT #define COMPAT_ELF_ET_DYN_BASE ((TASK_SIZE_32 / 3) * 2) /* rv32 registers */ typedef compat_ulong_t compat_elf_greg_t; typedef compat_elf_greg_t compat_elf_gregset_t[ELF_NGREG]; +#ifdef CONFIG_COMPAT extern int compat_arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp); #define compat_arch_setup_additional_pages \ diff --git a/arch/riscv/kernel/ptrace.c b/arch/riscv/kernel/ptrace.c index 5471b12127da..1078c0f454c1 100644 --- a/arch/riscv/kernel/ptrace.c +++ b/arch/riscv/kernel/ptrace.c @@ -295,7 +295,7 @@ long arch_ptrace(struct task_struct *child, long request, return ret; } -#ifdef CONFIG_COMPAT +#if IS_ENABLED(CONFIG_COMPAT) || IS_ENABLED(CONFIG_ARCH_RV64ILP32) static int compat_riscv_gpr_get(struct task_struct *target, const struct user_regset *regset, struct membuf to) @@ -350,7 +350,9 @@ static const struct user_regset_view compat_riscv_user_native_view = { .regsets = compat_riscv_user_regset, .n = ARRAY_SIZE(compat_riscv_user_regset), }; +#endif +#ifdef CONFIG_COMPAT long compat_arch_ptrace(struct task_struct *child, compat_long_t request, compat_ulong_t caddr, compat_ulong_t cdata) { @@ -368,7 +370,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, const struct user_regset_view *task_user_regset_view(struct task_struct *task) { -#ifdef CONFIG_COMPAT +#if IS_ENABLED(CONFIG_COMPAT) || IS_ENABLED(CONFIG_ARCH_RV64ILP32) if (test_tsk_thread_flag(task, TIF_32BIT) && !test_tsk_thread_flag(task, TIF_64ILP32)) return &compat_riscv_user_native_view; From patchwork Sun Nov 12 06:15:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164224 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562795vqg; Sat, 11 Nov 2023 22:21:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IHFkvPztrceQyF4cKL3W1QsuYNAAbXcJF/TOd4cXqUkcj76Mk2zRBhjmjCzAseRMY74dPsx X-Received: by 2002:a05:6a20:7d87:b0:181:a38c:8106 with SMTP id v7-20020a056a207d8700b00181a38c8106mr5451183pzj.20.1699770104661; Sat, 11 Nov 2023 22:21:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770104; cv=none; d=google.com; s=arc-20160816; b=V841xYtlNI3LymhZl08GqOLy71BkFOsciw1odnz5f+yFZTtZohjf4jSTKB3YDuxq6e w6g/r3993M7FANOjp8rQmG3H7uvtsAodart85ATcus8kkxOstQoG3u7TGfoG5UnOqdY4 2rBr7cmSRqYC02CrFblcEc+7ne/QNCaaL5LPpoBsL+deJlp9EvaRHVsQppYc/8TDMIRc bHqnnzk3OccL4nIWt1RAOchFVmYpwgR8/8GOL/JAcq44TEOxhbLtNBcVzInze8SNq+QT IXJrcpF9aLGCos/q7Rvm+n8SgV3w0GpXz0Nv0a3H9t8eIvCFCvoUuIGIQyXPwu1Vsy8U RUog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=K7j5ufC5FnOv2eT8vmfHF8nVSvORl72SPtpX61SYGaM=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=jlieYkerFPJ7G4bpUDkPZIya+3Cx0fCzYst2SNL3UonvPOoJMGuotZaG0SmxHqWnTL T+ylyJoGd2IpG6vOxa1+N4nLtBRoxrAENxUOq/9eqesMS3zI1ivvxfhKCfT7b7uzxSZE 2VVvKq3TBehfmClluPh1Lnj70zpkz/TElhH3FMPUFB+y3fe0W0G15imYkbyJ8ssLzxJk wUdtizMuiKPlNYDr/abPBrn1LNkoTxdFbHsyRphn9c4PLCbrZCNvSY450TtuyRfNVJDZ yd82quet1dQzJhZoo5oza6VCCsh9Dfxum475R28yOxMv0qM7aGkkvRfQnU6CEzozW8HV 2y0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Cib6Q1ZU; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id ay27-20020a056a00301b00b006bd2084d6ddsi3331384pfb.100.2023.11.11.22.21.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:21:44 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Cib6Q1ZU; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 47369807963B; Sat, 11 Nov 2023 22:21:02 -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 S231421AbjKLGTl (ORCPT + 29 others); Sun, 12 Nov 2023 01:19:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230398AbjKLGTU (ORCPT ); Sun, 12 Nov 2023 01:19:20 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC66A3C3C for ; Sat, 11 Nov 2023 22:18:36 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2612FC433D9; Sun, 12 Nov 2023 06:18:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769916; bh=Yd1se3YAvTpm3f6jR2T3YyxOy5a1aI13dnazTuxGpzs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Cib6Q1ZUgS2FaDH4BWH6sy+4T4ju7sE9ZqI/4WjqXf+/9wNUzo1g8Lh7AhURej2Dh ds3OmIJ7NuwdMMJsmhVV83diwJFb4ycXr8DHEmtqAnEscuSNMaLmi6COUnDsGdvZNC 48epOdk0lVec54vwPX4+oawPbEHxi7LHNgplAYP+u7R6EFMpgZlqI1hKTTZyPAKqH+ FbHpWR6QnaaAFEwD1RB2SVt5Cs4BLe56fLDphnZjefH6nFyOwP6hZcQCB4hlMpIXU1 RPi2nAz7rtuiPBvt9l9ks0tz4U2y6cbPVa68u0jPbUIJk397571LXKTfGGugR1SMPJ X+3T30N4ldZ7A== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 31/38] riscv: s64ilp32: Add u32ilp32 signal support Date: Sun, 12 Nov 2023 01:15:07 -0500 Message-Id: <20231112061514.2306187-32-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 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]); Sat, 11 Nov 2023 22:21:02 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338136925915469 X-GMAIL-MSGID: 1782338136925915469 From: Guo Ren The u32ilp32 uses the compat_pt_regs instead of the native pt_regs, so we borrow the compat code to support the u32ilp32 signal procedure in the s64ilp32 kernel. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/include/asm/signal32.h | 2 +- arch/riscv/kernel/Makefile | 1 + arch/riscv/kernel/signal.c | 5 ++++- kernel/signal.c | 24 ++++++++++++++---------- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/arch/riscv/include/asm/signal32.h b/arch/riscv/include/asm/signal32.h index cda62d7eb0a5..e47bb739e61a 100644 --- a/arch/riscv/include/asm/signal32.h +++ b/arch/riscv/include/asm/signal32.h @@ -3,7 +3,7 @@ #ifndef __ASM_SIGNAL32_H #define __ASM_SIGNAL32_H -#if IS_ENABLED(CONFIG_COMPAT) +#if IS_ENABLED(CONFIG_COMPAT) || IS_ENABLED(CONFIG_ARCH_RV64ILP32) int compat_setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs); long __riscv_compat_rt_sigreturn(void); diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile index a4583a29b28b..e8af95298e98 100644 --- a/arch/riscv/kernel/Makefile +++ b/arch/riscv/kernel/Makefile @@ -97,6 +97,7 @@ obj-$(CONFIG_JUMP_LABEL) += jump_label.o obj-$(CONFIG_EFI) += efi.o obj-$(CONFIG_COMPAT) += compat_syscall_table.o obj-$(CONFIG_COMPAT) += compat_signal.o +obj-$(CONFIG_ARCH_RV64ILP32) += compat_signal.o obj-$(CONFIG_64BIT) += pi/ obj-$(CONFIG_ACPI) += acpi.o diff --git a/arch/riscv/kernel/signal.c b/arch/riscv/kernel/signal.c index 1c51a6783c98..95512af927dd 100644 --- a/arch/riscv/kernel/signal.c +++ b/arch/riscv/kernel/signal.c @@ -277,7 +277,10 @@ static long __riscv_rt_sigreturn(void) SYSCALL_DEFINE0(rt_sigreturn) { - return __riscv_rt_sigreturn(); + if (test_thread_flag(TIF_32BIT) && !test_thread_flag(TIF_64ILP32)) + return __riscv_compat_rt_sigreturn(); + else + return __riscv_rt_sigreturn(); } #ifdef CONFIG_COMPAT diff --git a/kernel/signal.c b/kernel/signal.c index b5370fe5c198..3ac7fa4f1761 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -3390,7 +3390,7 @@ int copy_siginfo_from_user(kernel_siginfo_t *to, const siginfo_t __user *from) return post_copy_siginfo_from_user(to, from); } -#ifdef CONFIG_COMPAT +#if IS_ENABLED(CONFIG_COMPAT) || IS_ENABLED(CONFIG_ARCH_RV64ILP32) /** * copy_siginfo_to_external32 - copy a kernel siginfo into a compat user siginfo * @to: compat siginfo destination @@ -3556,6 +3556,7 @@ static int post_copy_siginfo_from_user32(kernel_siginfo_t *to, return 0; } +#ifdef CONFIG_COMPAT static int __copy_siginfo_from_user32(int signo, struct kernel_siginfo *to, const struct compat_siginfo __user *ufrom) { @@ -3567,6 +3568,7 @@ static int __copy_siginfo_from_user32(int signo, struct kernel_siginfo *to, from.si_signo = signo; return post_copy_siginfo_from_user32(to, &from); } +#endif /* CONFIG_COMPAT */ int copy_siginfo_from_user32(struct kernel_siginfo *to, const struct compat_siginfo __user *ufrom) @@ -3578,7 +3580,7 @@ int copy_siginfo_from_user32(struct kernel_siginfo *to, return post_copy_siginfo_from_user32(to, &from); } -#endif /* CONFIG_COMPAT */ +#endif /** * do_sigtimedwait - wait for queued signals specified in @which @@ -4279,7 +4281,7 @@ int __save_altstack(stack_t __user *uss, unsigned long sp) return err; } -#ifdef CONFIG_COMPAT +#if IS_ENABLED(CONFIG_COMPAT) || IS_ENABLED(CONFIG_ARCH_HAS_64ILP32_KERNEL) static int do_compat_sigaltstack(const compat_stack_t __user *uss_ptr, compat_stack_t __user *uoss_ptr) { @@ -4309,13 +4311,6 @@ static int do_compat_sigaltstack(const compat_stack_t __user *uss_ptr, return ret; } -COMPAT_SYSCALL_DEFINE2(sigaltstack, - const compat_stack_t __user *, uss_ptr, - compat_stack_t __user *, uoss_ptr) -{ - return do_compat_sigaltstack(uss_ptr, uoss_ptr); -} - int compat_restore_altstack(const compat_stack_t __user *uss) { int err = do_compat_sigaltstack(uss, NULL); @@ -4335,6 +4330,15 @@ int __compat_save_altstack(compat_stack_t __user *uss, unsigned long sp) } #endif +#ifdef CONFIG_COMPAT +COMPAT_SYSCALL_DEFINE2(sigaltstack, + const compat_stack_t __user *, uss_ptr, + compat_stack_t __user *, uoss_ptr) +{ + return do_compat_sigaltstack(uss_ptr, uoss_ptr); +} +#endif + #ifdef __ARCH_WANT_SYS_SIGPENDING /** From patchwork Sun Nov 12 06:15:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164220 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562719vqg; Sat, 11 Nov 2023 22:21:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IE6aB+qj75Bme2VFo3ko8iBWwHub7EpJ3FMpKfxUt1yBiAXfoooZwtX6I4Izl4wQcUQX2Vn X-Received: by 2002:a17:902:fb8c:b0:1cc:4596:841f with SMTP id lg12-20020a170902fb8c00b001cc4596841fmr7962059plb.31.1699770084344; Sat, 11 Nov 2023 22:21:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770084; cv=none; d=google.com; s=arc-20160816; b=nSu3TNIU+vqUJr8uiJP8MbWgp+4iojoJ3kHwk3roKRoDZkaoDBmmVPCq0sy4LNVrVn hcQktR/JnxqK06Yk1mbL9y1U0gABlKY2d+TZeL5Aj7FDL5Aro0Hvd4dTUTqZG3+CYMim UGZnB5L9e84p8tsHnr6Q9R+C0J+8LesxVUAQ724Pr4kHHSbwDznMzSL6PGvBA+vSgrLj QjC2BYaE3cK9XBD4zYjWR149cGnNhxQjFKI4eYn7X5S7jBzUPfFPFYHwEd8erdNrPO5E CWRtz+OVZByXq/2WpbfN9MphpCDk9wPwGjtea5jHiVYiYHLAiXK921iULxFRhSYG7lbd cUlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Q8LTUtnhIWx8kJhql7h7PijHV0KDNEp1DSzxQfyrRIQ=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=tuVgQPerMK9+mMMazaCeNUFbJ1nDHe4SnLNOctNMkBsoYJC3BCIODGcfjchb1b7MqH uA414BTvS4ooicI8GbBAKzSwGSgf7BgSl2koElTO9EE8JXStq2bmwBxG5CINba3EzhJZ Qe6mRA/+1zv7EwbXfVQ7Vo7ewA2zY73oNQUYBCJqQSmeHy2CZDmth6/trQZSIhwQbEQy SPcRfEWQcjQFf0pRZiGfN0wUHI3uQSDIr5UjfweEwWeUeu29DyeTNAWK6tJcWCCv+cMS Qak4rGGxBKDVF85hXKbLcaLhRoqdxws7+tloCg/FMLmodzFK/be9Hi1vYcT10zNg8m8/ FIDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=eds0Ikvb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id g24-20020a1709029f9800b001ca01fd8942si3077564plq.120.2023.11.11.22.21.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:21:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=eds0Ikvb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 99AB38067A7E; Sat, 11 Nov 2023 22:20:54 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230216AbjKLGTw (ORCPT + 29 others); Sun, 12 Nov 2023 01:19:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231386AbjKLGTa (ORCPT ); Sun, 12 Nov 2023 01:19:30 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DEFF155BF for ; Sat, 11 Nov 2023 22:18:42 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3362C433C7; Sun, 12 Nov 2023 06:18:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769922; bh=bS9zYu4p2fDX0v+IO9ccI6gNcdJmQYX5Su7I11BAbz8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eds0Ikvb4knSS+2emy3RCxl6MssNc5zSLI7TvAgF41P6aLGxzvhumme+tfoiJbZYR E64mIZD3foSewobLLFWM8uEAYS2F7Kh6RRauO69qm7oFrRLBiW5gcTGx7lQquDH1H4 pyGzBxPO8sU1e4R2qo6ecYZVx0NP7Pn6xurHDlH/Gr544GTZVrrt/ofParw6Qb0Tpm 9o78tX8Aa4k8+RKVvEClQE4oPy776KWO5tvkrU2H3+Gs4WcLuzV1r+qVRi/fQ/GK8P B5sTrI/oBj3IU/2VjqZLyF7Cy/1WyISInWnMyztHVxlQ5TsnAF6GPIStsmJkrSURHC 7/S9+w2Jg0xbg== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 32/38] riscv: s64ilp32: Validate harts by architecture name Date: Sun, 12 Nov 2023 01:15:08 -0500 Message-Id: <20231112061514.2306187-33-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:20:54 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338115435913010 X-GMAIL-MSGID: 1782338115435913010 From: Guo Ren When rv64ilp32 was introduced, the 32BIT would work with rv64,isa. So use the architecture name instead of the ABI width name. This is an addition to the commit: 069b0d517077 ("RISC-V: validate riscv,isa at boot, not during ISA string parsing"). Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/kernel/cpu.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c index bc39fd16ab64..3c06ffc00fe0 100644 --- a/arch/riscv/kernel/cpu.c +++ b/arch/riscv/kernel/cpu.c @@ -66,10 +66,11 @@ int riscv_early_of_processor_hartid(struct device_node *node, unsigned long *har return -ENODEV; } - if (IS_ENABLED(CONFIG_32BIT) && strncasecmp(isa, "rv32ima", 7)) + if (IS_ENABLED(CONFIG_RV32I) && strncasecmp(isa, "rv32ima", 7)) return -ENODEV; - if (IS_ENABLED(CONFIG_64BIT) && strncasecmp(isa, "rv64ima", 7)) + if ((IS_ENABLED(CONFIG_RV64I) || IS_ENABLED(CONFIG_RV64IILP32)) + && strncasecmp(isa, "rv64ima", 7)) return -ENODEV; return 0; From patchwork Sun Nov 12 06:15:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164222 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562721vqg; Sat, 11 Nov 2023 22:21:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IGDmYDuSzPyEVUALh6SU//nsljbZjwIgMkIDrc0YqVueSzY8Iskzg7v/VMDmT+46rDWhL6P X-Received: by 2002:a05:6a20:a127:b0:179:f79e:8615 with SMTP id q39-20020a056a20a12700b00179f79e8615mr4678748pzk.52.1699770084767; Sat, 11 Nov 2023 22:21:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770084; cv=none; d=google.com; s=arc-20160816; b=yI6GShVzEuzCJEgJOHRd2aQiZUA5UJgFhpGILdl5AAE6t/enjN7zPW7dfxi9cGW6Nv nnu+3KHJS9BWxx+iik/KgEXsrK9OX9Z5kjPvFnVJt2LY5DfREc4F4kXQK7+1rjEog7Yt ZY05u3sFsyKJHl7Ame9lNTgvOO7zvxFoBKSJUl8Or7xL6tvEj45PpoJy6lzqa7EQ9+5j DSIjYOxNMVypHuppxVrTNt2HpxVKlu8CVlo4U1ZHjIXplB0OlDM86h63tlh4LlJ3W8cj 7+w5DBlJuV8Z3Cmai/Jt+38BniiG4Unl5/vBhcIhvo8flZF5e6f4ivFjpYAQeHLW2ZBt nCEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=MBkPWfiXtPJoDgKAWSNhizj969Pj4M9kObaD8ZMUS+I=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=fAMF/Ag7pb3HiBwo6VnHloL6U34Mg1hV3qcnQqps7EN4/DIEdZuBYikaOhGkaGJ/Ou MYcvF6v0eR3yh4Ruuvn7g+q3/WEL/YkycHMLyxxUvsvIcvHi7C+9IFTAFX1GyZCWl2ho 1blv1QavFFXhScxD9IqHy8B1r/sn4DuUmjLp4VErR7FaIyn5+oB8WMjsMgbw8gBW80BN nSsup6JcOQEwaNrRHLQvYN+UhokjnaqK8MAiLy/a7tF3EpSafaQHgNsy2kr6JeZQpNv8 /lQR47buZhTdQXi79LjPuVgIGTBrpFFouldvTcMIxLXQw6IGG0v+YveUQDL6yQXHkly5 Khlg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=m3ZnNHPp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id bq24-20020a056a000e1800b006c34753bcf6si3209637pfb.355.2023.11.11.22.21.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:21:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=m3ZnNHPp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id A22EF807FCD5; Sat, 11 Nov 2023 22:21:13 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231206AbjKLGUB (ORCPT + 29 others); Sun, 12 Nov 2023 01:20:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47564 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231396AbjKLGTj (ORCPT ); Sun, 12 Nov 2023 01:19:39 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FE0959D7 for ; Sat, 11 Nov 2023 22:18:48 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id ECE71C433C8; Sun, 12 Nov 2023 06:18:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769928; bh=cuF9JM0r/gsp1vghHnzFT7BkfhIYwfHcWZhIf27n2xY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=m3ZnNHPp3EJ0Y7agFTlRHB8X/PRo4qR3eYYHC7/GGu20rmlj22UU0PTGsvORZBD41 Z+EVPhN5T/bYe++fF/zfE0ELkpn3Rl+4JcZjYGnDj8dkve6+UH4nvo5DwIHyi5vocE lEyIrJ7c07LGEPXju8fkDwtlWmfYYETHVZHKz0vDT4MojxgLB2IB9QAF+ZsLh63a03 pR2u2UEDc3ioOIihJNM3NSJpXwSI0R6vVBvEso2YO33TjSZPsiojurtrZ7sTarcJeo 6B4ZNSy9+D2Pazrrjl9Uf/Xtbmw46Z1+rZwN/cs4OQLG/0CrQeCn/UoGyKwwXBDYUl mbwNziOgXRm7w== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 33/38] riscv: s64ilp32: Add rv64ilp32_defconfig Date: Sun, 12 Nov 2023 01:15:09 -0500 Message-Id: <20231112061514.2306187-34-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:21:13 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338116168015301 X-GMAIL-MSGID: 1782338116168015301 From: Guo Ren Follow the rv32_defconfig rule to add rv64ilp32_defconfig; the only difference is: -CONFIG_ARCH_RV32I=y +CONFIG_ARCH_RV64ILP32=y Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Makefile | 4 ++++ arch/riscv/configs/64ilp32.config | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 arch/riscv/configs/64ilp32.config diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index 3b1435bade49..d01f41fdf57f 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -205,3 +205,7 @@ rv32_defconfig: PHONY += rv32_nommu_virt_defconfig rv32_nommu_virt_defconfig: $(Q)$(MAKE) -f $(srctree)/Makefile nommu_virt_defconfig 32-bit.config + +PHONY += rv64ilp32_defconfig +rv64ilp32_defconfig: + $(Q)$(MAKE) -f $(srctree)/Makefile defconfig 64ilp32.config diff --git a/arch/riscv/configs/64ilp32.config b/arch/riscv/configs/64ilp32.config new file mode 100644 index 000000000000..7d836aa2fae7 --- /dev/null +++ b/arch/riscv/configs/64ilp32.config @@ -0,0 +1,2 @@ +CONFIG_ARCH_RV64ILP32=y +CONFIG_NONPORTABLE=y From patchwork Sun Nov 12 06:15:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164226 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562872vqg; Sat, 11 Nov 2023 22:22:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IHDUUBAli66tLd/0y4x23hqrzVFt3ZGvei3+xcuHuIake47an6SANkWobAst3h0DBW51Dx2 X-Received: by 2002:a25:ade8:0:b0:da0:3fac:7ed6 with SMTP id d40-20020a25ade8000000b00da03fac7ed6mr3237545ybe.54.1699770127488; Sat, 11 Nov 2023 22:22:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770127; cv=none; d=google.com; s=arc-20160816; b=0ee3OQPHqvI/XfNYOiech8YhKyDjUBW1W/KdruIdxQ8f7arHO0t1Md/7t7l6ysoUl7 YdW6tk0OxV4LY6+kiLnpGx8dWOD8EzEQG/irUWORl/3SWwocndZGVoJE8ZzD6tJbS/bQ r/nR5TSTRbnMCy0BP4ujL42cKDbHI8xzcLbkV6j8YGUP5Omurvdkh+skThbTU0uZF9NJ sG4xnbhto8vW15uGsauMoMHu3UZhUV/Wcbqqa+Vh84dDnuKMceULH11w/4mkA4PBDdQY QrTSll6HcwRrq6lkYrxVmj0gwBUq2NYfVkhsPcxJPvSxt4tfdj8QxDEdi2nXTwxGrUd9 hC2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=MBV/XGp+Hkwbd42G30m3VYD4kOK/H0zNem1Xtnt5gn8=; fh=LyaUptUKkQuyAQ+VKU3173vB/dtE35hrjIPkCg8hM8k=; b=S/d4ofvjQ1z833hUnOzo+UR88krutcKIbdlv8yV9CMwYekQIHpyQe6+mboF8kbM0hn O/JGw3zUrLfdwQ63mjVPeK4eHFzQjk438OoYXMIE/9NIK4a5WfFfPLxX0NghOMgblk4l Bi/RaOjqb4DGTgMWSf5aHW5xALmYsfn5GmjMlMfM9OiezzzRtVkYjZJi8m04wDLoldWx nWRKvzS8kP7TdMxnex4j8HKetUWVf1NgEbaFxpIL4iemJlH5z5oqYZ56DSQhLQ42InbU lwrTa1JtWkF3cNvoGRNtjBJ8n/74YjFZwLlUUDZX4kKf5Vh5kUsy0NKmYXzPCd4+dRfv pIgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=sJXr4K7C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id d16-20020a056a0024d000b006c049d08778si3267084pfv.188.2023.11.11.22.22.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:22:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=sJXr4K7C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 2CF45808A373; Sat, 11 Nov 2023 22:22:00 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230398AbjKLGUF (ORCPT + 29 others); Sun, 12 Nov 2023 01:20:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52752 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229599AbjKLGTm (ORCPT ); Sun, 12 Nov 2023 01:19:42 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8A0B59EA for ; Sat, 11 Nov 2023 22:18:55 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AE88DC433CD; Sun, 12 Nov 2023 06:18:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769935; bh=AwoQnmBHOr8wX0BVa478M177ccT62CL+qVUXJhTICuI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sJXr4K7CMCXTwmO5X1pmQnRLyFyMAWwG0wfgQ3IgYD0i9bjqWX0shBQhZKtCQsnIA v4K4s+1F6Ic7Y9U7q5L0ZO3sGGyTeu/F4hGL2KKPl2fTc17E3FOorTcARLkRvgK/ni B6AR82CJfxt0k+42b3M1nzdqY3B9+Knf0yrg2DCUxkRgdLWPwGhTOMjWD0+iZLTK0t mcIYpcO9Kkxyg5pkjKS9UnbhajiDqAdiJ4C6a5PTfaV4PcQjP7+QLva36W6RF9JN8q GLdQ1t9VZx/UzjEDXZtEfagDjw9CwcKjFswIm+AugiUmEqxKBVunP9X9y4kJg8muBa OxEwx3teBIcTw== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren , Randy Dunlap Subject: [RFC PATCH V2 34/38] riscv: Cleanup rv32_defconfig Date: Sun, 12 Nov 2023 01:15:10 -0500 Message-Id: <20231112061514.2306187-35-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 fry.vger.email 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 (fry.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:22:00 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338161363448368 X-GMAIL-MSGID: 1782338161363448368 From: Guo Ren Remove unnecessary configs to make rv32_defconfig have a minimal difference from the defconfig. CONFIG_ARCH_RV32I selects the CONFIG_32BIT, so putting it in the file is unnecessary. Also, there is no need to comment on CONFIG_PORTABLE; it should come from carelessness. Next rv64ilp32_defconfig would like: CONFIG_ARCH_RV64ILP32=y CONFIG_NONPORTABLE=y Signed-off-by: Guo Ren Signed-off-by: Guo Ren Cc: Randy Dunlap Cc: Palmer Dabbelt --- arch/riscv/configs/32-bit.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/riscv/configs/32-bit.config b/arch/riscv/configs/32-bit.config index f6af0f708df4..eb87885c8640 100644 --- a/arch/riscv/configs/32-bit.config +++ b/arch/riscv/configs/32-bit.config @@ -1,4 +1,2 @@ CONFIG_ARCH_RV32I=y -CONFIG_32BIT=y -# CONFIG_PORTABLE is not set CONFIG_NONPORTABLE=y From patchwork Sun Nov 12 06:15:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164218 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562471vqg; Sat, 11 Nov 2023 22:20:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IFW8fvOYMHC77EUIyv7CLzELI78bJ1uWnrpbJtENDCKA24l4/qzNbdWWJQXGnIKyLK0FhvC X-Received: by 2002:a17:90b:4b87:b0:280:74ce:ae8d with SMTP id lr7-20020a17090b4b8700b0028074ceae8dmr3472552pjb.20.1699770030420; Sat, 11 Nov 2023 22:20:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770030; cv=none; d=google.com; s=arc-20160816; b=NTCZ7aoSxiqTGgSvcbjO2UedllMGNMuJOrtcsXypT4sqC6Ph37EnZikQVghqWtMxVf eNOlzJ1Ithz6/OO+nSPTf/Rf3ZFVtx03/IbMK6Zq09cGu+mP4q0paGc7hTFZk3SCB1Pg JTGx31S8UVlIqTdNEgVPgrPx84LF1gHJ7us+Ce6ew2oEK726+t+U839CVW+G4NeU8r3p RoifkT6vONxpmDWcSmBEv9to34zovPNF+lntPSlBhBanrrb4F2RdeaGV3irW/NlJv1ex JjGlc+WgrJbRttKm3hd+zEKhjvkEfXjIyX9FOqjnWqX198F13fy7KYRaQUgquuS0F2Sm qoIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=XJsmcgM98QdhnuII3hSU0Ma0L+R/fSk4l4W9+o5lXbM=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=KzjOhI3jX58VxX6uMyjfPYfoS5Xnu2w2Q6Glw14lVPUaK4zaHndMwTMxTbxyLe1dYc UDY1XhQTUMUpacduQUOZ0zccR/6KE+Lca9m4LtbnyYU4DA+WjTZVlaTCbRyN+hBo6syG i5QElObNIkXYhegKgkRHIMntf5EhfKKRdUp5drnqITYLP/DIMTLMbyZvca366Jd3qzRR 2M3bjUw8FP7AonIZZXc9GY/OOHYgnuszmUveniFvWxeZ0TOHk8BtIYhmmSGOCUr4a0BJ a2NdGKL1YB1+sJ+EqozInNuKFxLX4MQOx1syfYiolOJUtOD2lI0M96ij+GQGBJu6CE+B euUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ggOZX2kR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id my1-20020a17090b4c8100b0027d37bb12a6si3354705pjb.49.2023.11.11.22.20.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:20:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ggOZX2kR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 6A5AC8047D56; Sat, 11 Nov 2023 22:20:28 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231384AbjKLGUU (ORCPT + 29 others); Sun, 12 Nov 2023 01:20:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52658 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231415AbjKLGUA (ORCPT ); Sun, 12 Nov 2023 01:20:00 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2163B5B87 for ; Sat, 11 Nov 2023 22:19:02 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B1F1EC433CC; Sun, 12 Nov 2023 06:18:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769941; bh=qRqp7QPejGbBbu5oKyIM5RFWyLdo559Kq9GxnASTbi4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ggOZX2kRI1MtgdsU3XRYcle/m3IZf5lFlvSEYa0dAcFri8lmz9B12mIjqRdjlTXpT 9eFDzbRis6FA35srzfdsZ1u+hdrQQVMKimjV/uEL8gk48FIJWD4Fq7mAEAar6U9BQA UO4a6fHPSuSWXP7Uof/glDnhRF6GmGUcc2ukCjlha4UnHfycJl2E7Vmx63uepFbtX2 eSwGWL6bq0W+YoWoC5OdGwLBR3dmmolU6lxAdTgevj6QQ9NDteYmG5XgzL4wGhXiFx mJWrDq5z/7tZHCpCSiEhZE6dgetUMoigTXmlWHhxf6Q40hsyiNK/Qs5ODE9ZGl3gwW COGIgXRKibzXA== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 35/38] clocksource: riscv: s64ilp32: Use __riscv_xlen instead of CONFIG_32BIT Date: Sun, 12 Nov 2023 01:15:11 -0500 Message-Id: <20231112061514.2306187-36-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 lipwig.vger.email 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 (lipwig.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:20:28 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338059197778529 X-GMAIL-MSGID: 1782338059197778529 From: Guo Ren When s64ilp32 enabled, CONFIG_32BIT=y but __riscv_xlen=64. So we must use __riscv_xlen to detect real machine XLEN for CSR access. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- drivers/clocksource/timer-riscv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/clocksource/timer-riscv.c b/drivers/clocksource/timer-riscv.c index da3071b387eb..fe83b4e2005a 100644 --- a/drivers/clocksource/timer-riscv.c +++ b/drivers/clocksource/timer-riscv.c @@ -38,7 +38,7 @@ static int riscv_clock_next_event(unsigned long delta, csr_set(CSR_IE, IE_TIE); if (static_branch_likely(&riscv_sstc_available)) { -#if defined(CONFIG_32BIT) +#if __riscv_xlen == 32 csr_write(CSR_STIMECMP, next_tval & 0xFFFFFFFF); csr_write(CSR_STIMECMPH, next_tval >> 32); #else From patchwork Sun Nov 12 06:15:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164227 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562918vqg; Sat, 11 Nov 2023 22:22:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IGME0iFZEzuodh36Zq3SFCeIPZCtoM6rXvz27se7AswmfXRkhlWnZve6TLVIccTlzAvaW// X-Received: by 2002:a81:52ca:0:b0:5a7:b4ab:9d7d with SMTP id g193-20020a8152ca000000b005a7b4ab9d7dmr4201196ywb.20.1699770142792; Sat, 11 Nov 2023 22:22:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770142; cv=none; d=google.com; s=arc-20160816; b=TrT1eCowgLNauKgIwTh+bGdrWUCS2gUiZ5o0/wO9BQ8DQBWMbAbW61BHhiyQEEjzlv NSUupGjWX8+dthHlkWEmC5vW0YY2hrO5SIwiR/XAIzVwfSCwvIs/gJahK5hHcLJgTg8k jrPmcP2Yo5PKW+U4aw8j+M44zEND1nN66n76zwqMBbM+5NTAMww9GvOawJXBcIj6v6+L OI2HdQ3eSWASgHDqWFeKNqiAkz5W6lbifPEmYkLF/rI+lX0mR4+dxtvm1zJxr0MeSvfS 5zmp6oXsXJxgVXmvM0APGk84GdhIpSf++bcMA+EU6q947Wa6JN8iEJaRk7Rzy2eoKtjx PzwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ODwU7MBrD272ewvOC20D7Z+lN7ryymhoRlzOcNq3SbY=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=xBulONElZIzFk4D5ohGyLiM6bIbkMTltLZ0D1yKFio7NhPpmcVt1uRb5HnO/xhItef MA9M1GNkfEPmO7A2/f4hAjWjZI9X4gSolg0GHWYfBGMc8XHjHAk7S9qyzVuF5fjQ/px5 UwIeOcphguDdn1XnBmsN1ZHU0UoigNL66KlAN6njJ/599Na9201fW8++yYif/Rpnv67D DjSCxkdmolhzsQSzPZbY8Bp/Nsp9heCUSJ+8TUTMKAkm6LrL7i+YV8H/pKmrOHHIl4lv STDEQvcQKylPDiwMK6ROK0j5Pe77OH2tHTT+3ZKqymJkkAbZY5mbILmF/Bm56eKP13LP sfjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VbI2EEzZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id eg18-20020a056a00801200b006b356972c78si3231718pfb.405.2023.11.11.22.22.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:22:22 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VbI2EEzZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 06762807C559; Sat, 11 Nov 2023 22:22:16 -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 S231426AbjKLGVl (ORCPT + 29 others); Sun, 12 Nov 2023 01:21:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231381AbjKLGV3 (ORCPT ); Sun, 12 Nov 2023 01:21:29 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 00B2949C6 for ; Sat, 11 Nov 2023 22:19:07 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 33DF4C433CA; Sun, 12 Nov 2023 06:19:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769947; bh=NRQ3+7zYtWxcLMyaVKQL6b/W2ki6kHtASjhWDkIuCOI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VbI2EEzZrCv1lHLtCSo4ml+lsXoi2BDR011BlUq9xT0ZNKfCfIJqP1pKQzJBh8N7g kiMUAnJS6x4AZgmjx2yE/Ll/Yh2fkJYiBAoM1ZsZW9v4oJc0VHf32QSGCngpncB27v LrJ7/m8DB/od4SkM4KJERf+onE6k2uJojjXohO3T1P7hGXPF9PwyWGjUI50nFnK721 NoXn00HX/mfQHlJg2099EljXDIxLj0RA4ke7+vHnDG/TY9K29A8ZFU5Obq3R9yBR2D rgeYSxG2x8DJrDFwGs5DcDwJRy82wG1hlg4UfnC8H60hdWaKQfalzVHUZciXmdD3qd MVlNJeiEpTn4w== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 36/38] irqchip: riscv: s64ilp32: Use __riscv_xlen instead of CONFIG_32BIT Date: Sun, 12 Nov 2023 01:15:12 -0500 Message-Id: <20231112061514.2306187-37-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 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]); Sat, 11 Nov 2023 22:22:16 -0800 (PST) X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338177585115057 X-GMAIL-MSGID: 1782338177585115057 From: Guo Ren When s64ilp32 enabled, CONFIG_32BIT=y but __riscv_xlen=64. So we must use __riscv_xlen to detect real machine XLEN for CSR access. Signed-off-by: Guo Ren Signed-off-by: Guo Ren --- drivers/irqchip/irq-riscv-intc.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/irqchip/irq-riscv-intc.c b/drivers/irqchip/irq-riscv-intc.c index 4adeee1bc391..ee3514ef4326 100644 --- a/drivers/irqchip/irq-riscv-intc.c +++ b/drivers/irqchip/irq-riscv-intc.c @@ -22,10 +22,7 @@ static struct irq_domain *intc_domain; static asmlinkage void riscv_intc_irq(struct pt_regs *regs) { - unsigned long cause = regs->cause & ~CAUSE_IRQ_FLAG; - - if (unlikely(cause >= BITS_PER_LONG)) - panic("unexpected interrupt cause"); + xlen_t cause = regs->cause & ~CAUSE_IRQ_FLAG; generic_handle_domain_irq(intc_domain, cause); } @@ -117,7 +114,7 @@ static int __init riscv_intc_init_common(struct fwnode_handle *fn) { int rc; - intc_domain = irq_domain_create_linear(fn, BITS_PER_LONG, + intc_domain = irq_domain_create_linear(fn, __riscv_xlen, &riscv_intc_domain_ops, NULL); if (!intc_domain) { pr_err("unable to add IRQ domain\n"); @@ -132,7 +129,7 @@ static int __init riscv_intc_init_common(struct fwnode_handle *fn) riscv_set_intc_hwnode_fn(riscv_intc_hwnode); - pr_info("%d local interrupts mapped\n", BITS_PER_LONG); + pr_info("%d local interrupts mapped\n", __riscv_xlen); return 0; } From patchwork Sun Nov 12 06:15:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164228 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562973vqg; Sat, 11 Nov 2023 22:22:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IHWFfz0zhdwUFtBd9LH+8sP+c+vaEveNAlzuJEZUsE/WIUC2jaEPwdjOsBH9D/YgKXUGpgE X-Received: by 2002:a05:620a:8719:b0:778:b3fa:e0cf with SMTP id px25-20020a05620a871900b00778b3fae0cfmr5256634qkn.40.1699770157309; Sat, 11 Nov 2023 22:22:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770157; cv=none; d=google.com; s=arc-20160816; b=nd3t5fcDQkwjHmHzNKkRal84HPCbCZtGcZepbIKDyBDRH957+jdopIo+IlDdiDUtDs tu8obLdgCwY+Oia9GiB9WtDvpWWiIfMa3+4ORa1kFuEm7jXc8JCuapy6ZH+e23oMbeJy WdQ7ktkNptH+FwvOKFfEQemH5Pol4M/UI7OwVql4gVYjvdOBpNGeMajC4o8IYTdXgA/X EGsKeWHTDl6M/n88y8ylvwL+lnNfUNiYKCSZH2TDGdEHWGY6mbrq0M26F3pkN0ve1kpm IUWREkWAK98ZLrbkYUYhuRQNDLmBc/305He917curXa2pjLOS6xQUQERyXtgn/X3TzMr Uy8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=TAEg43LvdSg7s5bzUTsa7JdTHxtpwp62Sb1Y+6l4TJs=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=vzX14SfO5lpw61nTF4GVENhUnUHkmEsCE1+LOGR+xTXIlw7aoPqJfjsi0+lZyIihcT CKK5LrP5NUWQWCcrihhggP0ABg32CN3z8SWHxWEhpss72IWmcmQl2ohajwbxJ+edQOTW Bxor4ZzyAiVJsybo7Q6ATE1CcQfpGk5jo1PC+ifUqWBnYlFfQSNB91IccQzZrvBJ6mDG YIi9iDbF7RPu4w94H0/9taiB8bzofgiGEtkPQmXieTeD/tIzsbF8X0yuPp5Vd4VCKgqw nnLXIBng4soCy7mukq/n2jTH93dNU8ioVBoj5FRM4C5+wH9fioToLvndTOE2UQPKaHxI 9g5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dkKhnGt+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id i14-20020a6561ae000000b005bdbd683601si3233310pgv.57.2023.11.11.22.22.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:22:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dkKhnGt+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 54DEA8086507; Sat, 11 Nov 2023 22:22:32 -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 S230240AbjKLGUd (ORCPT + 29 others); Sun, 12 Nov 2023 01:20:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43702 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230316AbjKLGUN (ORCPT ); Sun, 12 Nov 2023 01:20:13 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A87B5240 for ; Sat, 11 Nov 2023 22:19:14 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7069C43397; Sun, 12 Nov 2023 06:19:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769953; bh=Ooj3Z1D8vrwoAvcfoMd2XHUN9ti4j9jFEKxp5Li/2zU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dkKhnGt+QvcqgukqOM+LkGz4JZ+VW0ka4FydtVLSoYTHX96HX8Mo8GskYTo3Vyh45 Y4WQ5dxOn/7Kg+WegYxnlemqGxlUSDBkO3ktXh+e3YCBDvpla3qtQvAPvDpCNQh5Qh aOKI347cT0SNAqmMdibar/SmpVMz3cpcUpdq9iH+hgppi/pBWLyLccIgcQoeIhYIUR oaQNK5k78JUbTOIzix4OIf3otG6UglXiEY2tv+80rGdE7q04hgiiAg8FeKWUens2cE LuUwa+cKueaL5l8oh/h2NKpWczNKABQhLxBtjVbzgPPAxgdbT0tRLgvXUuFnRk6DY/ C/3y7pp2DpNYg== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 37/38] add tinylab defconfig Date: Sun, 12 Nov 2023 01:15:13 -0500 Message-Id: <20231112061514.2306187-38-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-0.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,UPPERCASE_50_75 autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email 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]); Sat, 11 Nov 2023 22:22:32 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338192450899463 X-GMAIL-MSGID: 1782338192450899463 From: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/configs/tinylab32ilp32_defconfig | 88 ++++++++++++++++++++ arch/riscv/configs/tinylab64ilp32_defconfig | 89 +++++++++++++++++++++ arch/riscv/configs/tinylab_defconfig | 89 +++++++++++++++++++++ 3 files changed, 266 insertions(+) create mode 100644 arch/riscv/configs/tinylab32ilp32_defconfig create mode 100644 arch/riscv/configs/tinylab64ilp32_defconfig create mode 100644 arch/riscv/configs/tinylab_defconfig diff --git a/arch/riscv/configs/tinylab32ilp32_defconfig b/arch/riscv/configs/tinylab32ilp32_defconfig new file mode 100644 index 000000000000..64adbc788430 --- /dev/null +++ b/arch/riscv/configs/tinylab32ilp32_defconfig @@ -0,0 +1,88 @@ +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +# CONFIG_INITRAMFS_PRESERVE_MTIME is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_MULTIUSER is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_FHANDLE is not set +# CONFIG_POSIX_TIMERS is not set +# CONFIG_BUG is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_TIMERFD is not set +# CONFIG_EVENTFD is not set +# CONFIG_SHMEM is not set +# CONFIG_AIO is not set +# CONFIG_IO_URING is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_MEMBARRIER is not set +# CONFIG_KALLSYMS is not set +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_NONPORTABLE=y +CONFIG_ARCH_RV32I=y +CONFIG_CMODEL_MEDANY=y +# CONFIG_RISCV_ISA_SVPBMT is not set +# CONFIG_RISCV_ISA_ZICBOM is not set +# CONFIG_RISCV_ISA_ZICBOZ is not set +# CONFIG_FPU is not set +# CONFIG_SECCOMP is not set +# CONFIG_STACKPROTECTOR is not set +# CONFIG_STRICT_KERNEL_RWX is not set +# CONFIG_BLOCK is not set +# CONFIG_BINFMT_SCRIPT is not set +# CONFIG_COREDUMP is not set +CONFIG_SLUB_TINY=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_COMPACTION is not set +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_SECRETMEM is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_FW_LOADER is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_INPUT is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LEGACY_TIOCSTI is not set +# CONFIG_LDISC_AUTOLOAD is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_HW_RANDOM is not set +# CONFIG_DEVMEM is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_PROC_FS is not set +# CONFIG_SYSFS is not set +# CONFIG_EFIVAR_FS is not set +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_INIT_STACK_NONE=y +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_DEBUG_MISC is not set +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_PANIC_TIMEOUT=1 +# CONFIG_FTRACE is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/arch/riscv/configs/tinylab64ilp32_defconfig b/arch/riscv/configs/tinylab64ilp32_defconfig new file mode 100644 index 000000000000..703778a13157 --- /dev/null +++ b/arch/riscv/configs/tinylab64ilp32_defconfig @@ -0,0 +1,89 @@ +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +# CONFIG_INITRAMFS_PRESERVE_MTIME is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_MULTIUSER is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_FHANDLE is not set +# CONFIG_POSIX_TIMERS is not set +# CONFIG_BUG is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_TIMERFD is not set +# CONFIG_EVENTFD is not set +# CONFIG_SHMEM is not set +# CONFIG_AIO is not set +# CONFIG_IO_URING is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_MEMBARRIER is not set +# CONFIG_KALLSYMS is not set +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_NONPORTABLE=y +CONFIG_ARCH_RV64ILP32=y +CONFIG_CMODEL_MEDANY=y +# CONFIG_RISCV_ISA_C is not set +# CONFIG_RISCV_ISA_SVPBMT is not set +# CONFIG_RISCV_ISA_ZICBOM is not set +# CONFIG_RISCV_ISA_ZICBOZ is not set +# CONFIG_FPU is not set +# CONFIG_EFI is not set +# CONFIG_SECCOMP is not set +# CONFIG_STACKPROTECTOR is not set +# CONFIG_STRICT_KERNEL_RWX is not set +# CONFIG_BLOCK is not set +# CONFIG_BINFMT_SCRIPT is not set +# CONFIG_COREDUMP is not set +CONFIG_SLUB_TINY=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_COMPACTION is not set +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_SECRETMEM is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_FW_LOADER is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_INPUT is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LEGACY_TIOCSTI is not set +# CONFIG_LDISC_AUTOLOAD is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_HW_RANDOM is not set +# CONFIG_DEVMEM is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_PROC_FS is not set +# CONFIG_SYSFS is not set +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_INIT_STACK_NONE=y +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_DEBUG_MISC is not set +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_PANIC_TIMEOUT=1 +# CONFIG_FTRACE is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/arch/riscv/configs/tinylab_defconfig b/arch/riscv/configs/tinylab_defconfig new file mode 100644 index 000000000000..6294c4590edd --- /dev/null +++ b/arch/riscv/configs/tinylab_defconfig @@ -0,0 +1,89 @@ +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +# CONFIG_INITRAMFS_PRESERVE_MTIME is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_MULTIUSER is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_FHANDLE is not set +# CONFIG_POSIX_TIMERS is not set +# CONFIG_BUG is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_TIMERFD is not set +# CONFIG_EVENTFD is not set +# CONFIG_SHMEM is not set +# CONFIG_AIO is not set +# CONFIG_IO_URING is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_MEMBARRIER is not set +# CONFIG_KALLSYMS is not set +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_NONPORTABLE=y +# CONFIG_RISCV_ISA_C is not set +# CONFIG_RISCV_ISA_SVNAPOT is not set +# CONFIG_RISCV_ISA_SVPBMT is not set +# CONFIG_RISCV_ISA_ZICBOM is not set +# CONFIG_RISCV_ISA_ZICBOZ is not set +# CONFIG_FPU is not set +# CONFIG_COMPAT is not set +# CONFIG_EFI is not set +# CONFIG_SECCOMP is not set +# CONFIG_STACKPROTECTOR is not set +# CONFIG_STRICT_KERNEL_RWX is not set +# CONFIG_BLOCK is not set +# CONFIG_BINFMT_SCRIPT is not set +# CONFIG_COREDUMP is not set +CONFIG_SLUB_TINY=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_COMPACTION is not set +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_SECRETMEM is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_FW_LOADER is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_INPUT is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LEGACY_TIOCSTI is not set +# CONFIG_LDISC_AUTOLOAD is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_HW_RANDOM is not set +# CONFIG_DEVMEM is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_PROC_FS is not set +# CONFIG_SYSFS is not set +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_INIT_STACK_NONE=y +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_DEBUG_MISC is not set +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_PANIC_TIMEOUT=1 +# CONFIG_FTRACE is not set +# CONFIG_RUNTIME_TESTING_MENU is not set From patchwork Sun Nov 12 06:15:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 164221 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp562724vqg; Sat, 11 Nov 2023 22:21:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IGQxFHq6KViCKQt2TS33U7m0ssx3szCq1dWuBN5azlYsh+jb7SAkuYOIjVsVQKuUtZUHRIY X-Received: by 2002:a17:902:cf0d:b0:1cc:419e:cb4b with SMTP id i13-20020a170902cf0d00b001cc419ecb4bmr6450912plg.19.1699770084929; Sat, 11 Nov 2023 22:21:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1699770084; cv=none; d=google.com; s=arc-20160816; b=XPTAxYZUpV/upQobGZ7+RjDASQ4fMEbuYWkPVQvI5GdqEolxWzEyiIyijTCdcLAL18 wl7495Dj8BrD9OW56U5JqlBRaudn/Es8mBMVEJJ+I+cE8JvpnWMKiK7WbwQgQLGrR9p/ rQ6VQthcLYDldaAHWS4So32MhpkBnAWoFKW3rZoqHpLZyweJQXmY0StSJ6kkZrV+T0za 75fqIm92G7yNqAj57FhBe5+YRXoVv1w023683wON9R2AXBzhszFSrHjkXpYL0oKR00Fz Zd7G9Iw6eWqqVpq6Y8ojG4qJ8s1Nkdd3nm5zkZeqmCYdXkFvJJM/9JW6Z1GkwKXwtsas igdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=RPWjhgfeZuj2sI/UXungwGEw+YLtX91gw+jjMEOZcL8=; fh=ZE/z2dNArDjRCaYXLY1qiMuWjPgjymC0plQjRd9hozE=; b=FDVbr0uvAkJl3MeMyRjaP1GzYKjpHoruWY1bCCWGPi6vQke8MhhWDNxCo9LSFpTP/m YGKYmYTvsJZ3RCeOhK1P05m9HCvacyQpKFPgM1wfGCnRjmKiKhiBxZQscMU9ulLvaSgp r2uFsLYEEKXwNsOFp5A4XCscQ0IUyddngkgr7pjnnYvi1EbTQnBmlVAQer4/oggBsgzH 3fJbz+nLkU7U2dPaup98dTIhmUmKEfEtb8nRE/thCUz/ex8lVRG3y3iyfyPTkTiHBjuc Gg1VHm44SUTa5q61kIuTGNvyPO6OYv8rWfBHCnPhedV03OOPGcX3m0AJ7JcFgiPhi1G+ U6Qg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uxp8Fc+v; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id l14-20020a170903244e00b001cc1eab0fe4si3270068pls.298.2023.11.11.22.21.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Nov 2023 22:21:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uxp8Fc+v; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 30BC9806AFE2; Sat, 11 Nov 2023 22:21:14 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230263AbjKLGU4 (ORCPT + 29 others); Sun, 12 Nov 2023 01:20:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60446 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230383AbjKLGUj (ORCPT ); Sun, 12 Nov 2023 01:20:39 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C3E95FED for ; Sat, 11 Nov 2023 22:19:21 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5E562C433CD; Sun, 12 Nov 2023 06:19:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699769960; bh=dK4ton2oM+HkEOBvpM4c5CJzMl0JR/DxER2w5fW1tdg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uxp8Fc+vLd1OxaYU6JHEobJ9lYSoyT6mwQRrxVaQHLsmnTO1D4uf+oE/hQ8pZEfO9 pAJtj7VRnQ9zBG+TSXtv6eTkf37UxZfFA4Hk6LYgFrXIqwAxwW3ZQ4F6/k/0DduMCE qlMYWbc751aEgRudX/rL7cUXLbpS/X1y9DOGeZanW1TTWYFUnokD9byjiEHodJcu/0 Iil9U3Uaf5n9IISv32EMhC743m6kyCSKZ0VQ8t5k6qmeNHW0AonN8PVg8eZ+kxeheI GRPTmdj+kurQ+mOgDuTqewn0Cj7scDwDXghLYpCxYR1E7IYwBjETB1B1XU5saALSBk f3A5BZh6NAhWg== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de, apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org, paul.walmsley@sifive.com, anup@brainfault.org, jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com, U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn, kito.cheng@sifive.com, andy.chiu@sifive.com, vincent.chen@sifive.com, greentime.hu@sifive.com, wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org, fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Guo Ren Subject: [RFC PATCH V2 38/38] 64ilp32 v.s. 64lp64 Date: Sun, 12 Nov 2023 01:15:14 -0500 Message-Id: <20231112061514.2306187-39-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org> References: <20231112061514.2306187-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Sat, 11 Nov 2023 22:21:14 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782338116634074194 X-GMAIL-MSGID: 1782338116634074194 From: Guo Ren Signed-off-by: Guo Ren --- arch/riscv/Kconfig | 1 - arch/riscv/include/asm/page.h | 2 +- init/main.c | 2 ++ 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 5106eab17811..acd6aa60ed84 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -160,7 +160,6 @@ config RISCV select THREAD_INFO_IN_TASK select TRACE_IRQFLAGS_SUPPORT select UACCESS_MEMCPY if !MMU - select ZONE_DMA32 if 64BIT config CLANG_SUPPORTS_DYNAMIC_FTRACE def_bool CC_IS_CLANG diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h index 7c535e88cf91..f9af3e6b6e21 100644 --- a/arch/riscv/include/asm/page.h +++ b/arch/riscv/include/asm/page.h @@ -106,7 +106,7 @@ typedef struct page *pgtable_t; * We override this value as its generic definition uses __pa too early in * the boot process (before kernel_map.va_pa_offset is set). */ -#define MIN_MEMBLOCK_ADDR 0 +#define MIN_MEMBLOCK_ADDR 0x60400000ULL #endif #ifdef CONFIG_MMU diff --git a/init/main.c b/init/main.c index ad920fac325c..f88f0227e398 100644 --- a/init/main.c +++ b/init/main.c @@ -1496,6 +1496,8 @@ static int __ref kernel_init(void *unused) !try_to_run_init_process("/bin/sh")) return 0; + show_mem(0, NULL); + panic("No working init found. Try passing init= option to kernel. " "See Linux Documentation/admin-guide/init.rst for guidance."); }