[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/7] linux-user/hppa: Increase guest stack size to 80MB for hppa
From: |
Helge Deller |
Subject: |
[PATCH 5/7] linux-user/hppa: Increase guest stack size to 80MB for hppa target |
Date: |
Sat, 24 Sep 2022 13:44:59 +0200 |
The hppa target requires a much bigger stack than many other targets,
and the Linux kernel allocates 80 MB by default for it.
This patch increases the guest stack for hppa to 80MB, and prevents
that this default stack size gets reduced by a lower stack limit on the
host.
Since the stack grows upwards on hppa, the stack_limit value marks the
upper boundary of the stack. Fix the output of /proc/self/maps (in the
guest) to show the [stack] marker on the correct memory area.
Signed-off-by: Helge Deller <deller@gmx.de>
---
linux-user/hppa/target_syscall.h | 2 ++
linux-user/main.c | 9 +++++++--
linux-user/syscall.c | 4 ++++
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/linux-user/hppa/target_syscall.h b/linux-user/hppa/target_syscall.h
index 4b382c1fcf..9a8f8ca628 100644
--- a/linux-user/hppa/target_syscall.h
+++ b/linux-user/hppa/target_syscall.h
@@ -26,4 +26,6 @@ struct target_pt_regs {
#define TARGET_MCL_FUTURE 2
#define TARGET_MCL_ONFAULT 4
+#define TARGET_DEFAULT_STACK_SIZE 80 * 1024 * 1024UL
+
#endif /* HPPA_TARGET_SYSCALL_H */
diff --git a/linux-user/main.c b/linux-user/main.c
index 587bd02db2..3a86feb09a 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -124,10 +124,14 @@ static void usage(int exitcode);
static const char *interp_prefix = CONFIG_QEMU_INTERP_PREFIX;
const char *qemu_uname_release;
+#if !defined(TARGET_DEFAULT_STACK_SIZE)
/* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so
we allocate a bigger stack. Need a better solution, for example
by remapping the process stack directly at the right place */
-unsigned long guest_stack_size = 8 * 1024 * 1024UL;
+#define TARGET_DEFAULT_STACK_SIZE 8 * 1024 * 1024UL
+#endif
+
+unsigned long guest_stack_size = TARGET_DEFAULT_STACK_SIZE;
/***********************************************************/
/* Helper routines for implementing atomic operations. */
@@ -690,7 +694,8 @@ int main(int argc, char **argv, char **envp)
struct rlimit lim;
if (getrlimit(RLIMIT_STACK, &lim) == 0
&& lim.rlim_cur != RLIM_INFINITY
- && lim.rlim_cur == (target_long)lim.rlim_cur) {
+ && lim.rlim_cur == (target_long)lim.rlim_cur
+ && lim.rlim_cur > guest_stack_size) {
guest_stack_size = lim.rlim_cur;
}
}
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 4bbf46b622..d17f5d1c66 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8043,7 +8043,11 @@ static int open_self_maps(CPUArchState *cpu_env, int fd)
continue;
}
+#ifdef TARGET_HPPA
+ if (h2g(max) == ts->info->stack_limit) {
+#else
if (h2g(min) == ts->info->stack_limit) {
+#endif
path = "[stack]";
} else {
path = e->path;
--
2.37.3
- [PATCH 0/7] linux-user fixes for hppa target - part 2, Helge Deller, 2022/09/24
- [PATCH 2/7] linux-user: Add proper strace format strings for getdents()/getdents64(), Helge Deller, 2022/09/24
- [PATCH 4/7] linux-user/hppa: Drop stack guard page on hppa target, Helge Deller, 2022/09/24
- [PATCH 5/7] linux-user/hppa: Increase guest stack size to 80MB for hppa target,
Helge Deller <=
- [PATCH 7/7] linux-user/hppa: Fix setup_sigcontext(), Helge Deller, 2022/09/24
- [PATCH 1/7] linux-user: Fix TARGET_PROT_SEM for XTENSA, Helge Deller, 2022/09/24
- [PATCH 6/7] linux-user/hppa: Allow PROT_GROWSUP and PROT_GROWSDOWN in mprotect(), Helge Deller, 2022/09/24
- [PATCH 3/7] linux-user/hppa: Add signal trampoline for hppa target, Helge Deller, 2022/09/24
- Re: [PATCH 0/7] linux-user fixes for hppa target - part 2, Laurent Vivier, 2022/09/27