qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-2.12-pull-request' into staging

# gpg: Signature made Tue 03 Apr 2018 11:33:31 BST
# gpg: using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>"
# gpg: aka "Laurent Vivier <laurent@vivier.eu>"
# gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>"
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C

* remotes/vivier2/tags/linux-user-for-2.12-pull-request:
linux-user: fix TARGET___O_TMPFILE for sparc
linux-user: define TARGET_ARCH_HAS_KA_RESTORER
linux-user: fix alpha signal emulation

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

+14 -6
+4 -4
linux-user/signal.c
··· 2920 2920 env->pc = ka->_sa_handler; 2921 2921 env->npc = (env->pc + 4); 2922 2922 /* 5. return to kernel instructions */ 2923 - if (ka->sa_restorer) { 2924 - env->regwptr[UREG_I7] = ka->sa_restorer; 2923 + if (ka->ka_restorer) { 2924 + env->regwptr[UREG_I7] = ka->ka_restorer; 2925 2925 } else { 2926 2926 uint32_t val32; 2927 2927 ··· 6367 6367 &frame->retcode[1]); 6368 6368 __put_user(INSN_CALLSYS, &frame->retcode[2]); 6369 6369 /* imb() */ 6370 - r26 = frame_addr; 6370 + r26 = frame_addr + offsetof(struct target_sigframe, retcode); 6371 6371 } 6372 6372 6373 6373 unlock_user_struct(frame, frame_addr, 1); ··· 6424 6424 &frame->retcode[1]); 6425 6425 __put_user(INSN_CALLSYS, &frame->retcode[2]); 6426 6426 /* imb(); */ 6427 - r26 = frame_addr; 6427 + r26 = frame_addr + offsetof(struct target_sigframe, retcode); 6428 6428 } 6429 6429 6430 6430 if (err) {
+5 -2
linux-user/syscall.c
··· 8700 8700 target_siginitset(&act.sa_mask, old_act->sa_mask); 8701 8701 act.sa_flags = old_act->sa_flags; 8702 8702 act.sa_restorer = old_act->sa_restorer; 8703 + #ifdef TARGET_ARCH_HAS_KA_RESTORER 8704 + act.ka_restorer = 0; 8705 + #endif 8703 8706 unlock_user_struct(old_act, arg2, 0); 8704 8707 pact = &act; 8705 8708 } else { ··· 8774 8777 if (!lock_user_struct(VERIFY_READ, act, arg2, 1)) { 8775 8778 goto efault; 8776 8779 } 8777 - #ifdef TARGET_SPARC 8778 - act->sa_restorer = restorer; 8780 + #ifdef TARGET_ARCH_HAS_KA_RESTORER 8781 + act->ka_restorer = restorer; 8779 8782 #endif 8780 8783 } else { 8781 8784 act = NULL;
+5
linux-user/syscall_defs.h
··· 435 435 #define TARGET_SA_NODEFER 0x20u 436 436 #define TARGET_SA_RESETHAND 4u 437 437 #define TARGET_ARCH_HAS_SA_RESTORER 1 438 + #define TARGET_ARCH_HAS_KA_RESTORER 1 438 439 #elif defined(TARGET_MIPS) 439 440 #define TARGET_SA_NOCLDSTOP 0x00000001 440 441 #define TARGET_SA_NOCLDWAIT 0x00010000 ··· 742 743 abi_ulong sa_restorer; 743 744 #endif 744 745 target_sigset_t sa_mask; 746 + #ifdef TARGET_ARCH_HAS_KA_RESTORER 747 + abi_ulong ka_restorer; 748 + #endif 745 749 }; 746 750 #endif 747 751 ··· 2561 2565 #define TARGET_O_CLOEXEC 0x400000 2562 2566 #define TARGET___O_SYNC 0x800000 2563 2567 #define TARGET_O_PATH 0x1000000 2568 + #define TARGET___O_TMPFILE 0x2000000 2564 2569 #endif 2565 2570 2566 2571 /* <asm-generic/fcntl.h> values follow. */