All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-5.2 0/3] linux-user: fix various sparc64 guest bugs
@ 2020-11-05 21:23 Peter Maydell
  2020-11-05 21:23 ` [PATCH for-5.2 1/3] linux-user/sparc: Fix errors in target_ucontext structures Peter Maydell
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Peter Maydell @ 2020-11-05 21:23 UTC (permalink / raw)
  To: qemu-devel
  Cc: Giuseppe Musacchio, Richard Henderson, Mark Cave-Ayland, Laurent Vivier

This set of patches fixes bugs which were preventing the
Debian sparc64 /bin/bash from running:
 * the target_ucontext structure put the registers in the
   wrong place (missing alignment specifier, mostly)
 * the set_context and get_context traps weren't saving fp
   and i7, which meant that guest code that did a longjmp would
   crash shortly afterwards (SPARC64 uses these traps to
   implement setjmp/longjmp)
 * we were trying to stuff a 64-bit PC into a uint32_t in
   sigreturn, which caused a SEGV on return from a signal handler

Review very much desired in particular from anybody who understands
SPARC register windows and how we handle them in linux-user for
patch 2! The other patches are straightforward.

This patchset is sufficient that I can at least chroot into
a Debian sparc64 chroot and run basic commands like 'ls' from
the shell prompt (together with Giuseppe Musacchio's patch that
fixes the stack_t struct).

There are clearly a bunch of other bugs in sparc signal handling
(starting with the fact that rt_frame support is simply not
implemented, but there are also some XXX/FIXME comments about TSTATE
save/restore in set/get_context and about the FPU state in the signal
frame code). There's also a Coverity issue about accessing off the
end of the sregs[] array in the target_mc_fpu struct -- the error is
actually harmless (we're accessing into the space in the union for
dregs[16..31] which is what we want to be doing) but I'll probably
put together a patch to make Coverity happier.

thanks
-- PMM

Peter Maydell (3):
  linux-user/sparc: Fix errors in target_ucontext structures
  linux-user/sparc: Correct set/get_context handling of fp and i7
  linux-user/sparc: Don't zero high half of PC, NPC, PSR in sigreturn

 linux-user/sparc/signal.c | 62 ++++++++++++++++++++-------------------
 1 file changed, 32 insertions(+), 30 deletions(-)

-- 
2.20.1



^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-11-10 13:03 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-05 21:23 [PATCH for-5.2 0/3] linux-user: fix various sparc64 guest bugs Peter Maydell
2020-11-05 21:23 ` [PATCH for-5.2 1/3] linux-user/sparc: Fix errors in target_ucontext structures Peter Maydell
2020-11-05 22:15   ` Richard Henderson
2020-11-05 23:36     ` Peter Maydell
2020-11-10  6:53   ` Laurent Vivier
2020-11-10  9:02     ` LemonBoy
2020-11-10  9:41       ` Laurent Vivier
2020-11-05 21:23 ` [PATCH for-5.2 2/3] linux-user/sparc: Correct set/get_context handling of fp and i7 Peter Maydell
2020-11-05 22:22   ` Richard Henderson
2020-11-10  6:53   ` Laurent Vivier
2020-11-05 21:23 ` [PATCH for-5.2 3/3] linux-user/sparc: Don't zero high half of PC, NPC, PSR in sigreturn Peter Maydell
2020-11-05 22:23   ` Richard Henderson
2020-11-10  6:55   ` Laurent Vivier
2020-11-10 12:56 ` [PATCH for-5.2 0/3] linux-user: fix various sparc64 guest bugs Mark Cave-Ayland
2020-11-10 13:01   ` Laurent Vivier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.