linux-user pull request 20200605-v2
Implement F_OFD_ fcntl() command, /proc/cpuinfo for hppa Fix socket(), prnctl() error codes, underflow in target_mremap, epoll_create() strace, oldumount for alpha User-mode build dependencies improvement -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAl7blvgSHGxhdXJlbnRA dml2aWVyLmV1AAoJEPMMOL0/L748Nf0P/1QF1Y4A2I/SI53TksSWS55wlWCfV/wd SXUSjTmM1W4Y/tKScwkjooClYeVV59Ie5VL7WMdLO0YGxTQC7jqBONHAuaxSb4ky qNI5pvW0fpfl4i1ThC7XIlihOn49WlzEczTZqLRMuOh28nr3gJQCWweo/QIQoyUl KNcCLgQiY3raBi7nykC26dRc8DvV6sSu+qcoTk8A0FRbEfUDf+sj/njY3Xh8AZN7 FAn4iscV/UIAnGM6VGQzGfUHfBBL28rkmg/++oQrnvnH8blx0O1NrdDsgiHuKT7P /OC4tzpp6IkBzOy+sL3V/QdjKoxmMPadDj39rGLnZTQ6GZFXRZgVckknVdupTZD6 77lmnvbQMKmsKJWwn8zrd3RtwG2L6tWHgm16ZUXXaU+lFDa/xn55o4KnMdgZXEGP +7EHf2IfkZfiFmblBWiJi7OMg2wzSDQaAIBTMr43nJfDwZUvKGnAHccuVLQitpGe 4dRN6lCT0K1h6WwNhLRH/Fqqhi9vN7o3sSUQVm128XzYOOPDRyau/R4F1AQNbNdU +ZyrZqSvQxSxH0VNeu5wHRiwOym3bFJTVmGd5cWMzXs1kb+vmMG5ZjGBfxFr6gbC 9bVwDMxJ9vU5ExIZfUg4J/dOtWccJuADj11QPDcm8et3Tbqy1iiV9Py2k5IsIgqM BCsqBl3i+ekz =5q4d -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-5.1-pull-request' into staging linux-user pull request 20200605-v2 Implement F_OFD_ fcntl() command, /proc/cpuinfo for hppa Fix socket(), prnctl() error codes, underflow in target_mremap, epoll_create() strace, oldumount for alpha User-mode build dependencies improvement # gpg: Signature made Sat 06 Jun 2020 14:15:36 BST # gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C # gpg: issuer "laurent@vivier.eu" # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full] # gpg: aka "Laurent Vivier <laurent@vivier.eu>" [full] # gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full] # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C * remotes/vivier2/tags/linux-user-for-5.1-pull-request: stubs: Restrict ui/win32-kbd-hook to system-mode hw/core: Restrict CpuClass::get_crash_info() to system-mode target/s390x: Restrict CpuClass::get_crash_info() to system-mode target/i386: Restrict CpuClass::get_crash_info() to system-mode arch_init: Remove unused 'qapi-commands-misc.h' include exec: Assert CPU migration is not used on user-only build target/riscv/cpu: Restrict CPU migration to system-mode stubs/Makefile: Reduce the user-mode object list util/Makefile: Reduce the user-mode object list tests/Makefile: Restrict some softmmu-only tests tests/Makefile: Only display TCG-related tests when TCG is available configure: Avoid building TCG when not needed Makefile: Only build virtiofsd if system-mode is enabled linux-user: implement OFD locks linux-user/mmap.c: fix integer underflow in target_mremap linux-user/strace.list: fix epoll_create{,1} -strace output linux-user: Add support for /proc/cpuinfo on hppa platform linux-user: return target error codes for socket() and prctl() linux-user, alpha: fix oldumount syscall Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
49ee115552
2
Makefile
2
Makefile
@ -345,7 +345,7 @@ HELPERS-y += vhost-user-gpu$(EXESUF)
|
||||
vhost-user-json-y += contrib/vhost-user-gpu/50-qemu-gpu.json
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
|
||||
ifeq ($(CONFIG_SOFTMMU)$(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyyy)
|
||||
HELPERS-y += virtiofsd$(EXESUF)
|
||||
vhost-user-json-y += tools/virtiofsd/50-qemu-virtiofsd.json
|
||||
endif
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include "sysemu/arch_init.h"
|
||||
#include "hw/pci/pci.h"
|
||||
#include "hw/audio/soundhw.h"
|
||||
#include "qapi/qapi-commands-misc.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu/config-file.h"
|
||||
#include "qemu/error-report.h"
|
||||
|
4
configure
vendored
4
configure
vendored
@ -1663,6 +1663,10 @@ if [ "$ARCH" = "unknown" ]; then
|
||||
linux_user="no"
|
||||
fi
|
||||
|
||||
if [ "$bsd_user" = "no" -a "$linux_user" = "no" -a "$softmmu" = "no" ] ; then
|
||||
tcg="no"
|
||||
fi
|
||||
|
||||
default_target_list=""
|
||||
|
||||
mak_wilds=""
|
||||
|
4
exec.c
4
exec.c
@ -946,7 +946,9 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
|
||||
|
||||
qemu_plugin_vcpu_init_hook(cpu);
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
assert(cc->vmsd == NULL);
|
||||
#else /* !CONFIG_USER_ONLY */
|
||||
if (qdev_get_vmsd(DEVICE(cpu)) == NULL) {
|
||||
vmstate_register(NULL, cpu->cpu_index, &vmstate_cpu_common, cpu);
|
||||
}
|
||||
|
@ -209,6 +209,7 @@ static bool cpu_common_exec_interrupt(CPUState *cpu, int int_req)
|
||||
return false;
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
GuestPanicInformation *cpu_get_crash_info(CPUState *cpu)
|
||||
{
|
||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||
@ -219,6 +220,7 @@ GuestPanicInformation *cpu_get_crash_info(CPUState *cpu)
|
||||
}
|
||||
return res;
|
||||
}
|
||||
#endif
|
||||
|
||||
void cpu_dump_state(CPUState *cpu, FILE *f, int flags)
|
||||
{
|
||||
|
@ -490,6 +490,8 @@ bool cpu_paging_enabled(const CPUState *cpu);
|
||||
void cpu_get_memory_mapping(CPUState *cpu, MemoryMappingList *list,
|
||||
Error **errp);
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
|
||||
/**
|
||||
* cpu_write_elf64_note:
|
||||
* @f: pointer to a function that writes memory to a file
|
||||
@ -539,6 +541,8 @@ int cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cpu,
|
||||
*/
|
||||
GuestPanicInformation *cpu_get_crash_info(CPUState *cpu);
|
||||
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
|
||||
/**
|
||||
* CPUDumpFlags:
|
||||
* @CPU_DUMP_CODE:
|
||||
@ -632,7 +636,8 @@ static inline int cpu_asidx_from_attrs(CPUState *cpu, MemTxAttrs attrs)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_USER_ONLY */
|
||||
|
||||
/**
|
||||
* cpu_list_add:
|
||||
|
@ -99,6 +99,10 @@
|
||||
#define TARGET_F_SETLKW64 14
|
||||
#endif
|
||||
|
||||
#define TARGET_F_OFD_GETLK 36
|
||||
#define TARGET_F_OFD_SETLK 37
|
||||
#define TARGET_F_OFD_SETLKW 38
|
||||
|
||||
#ifndef TARGET_F_SETOWN_EX
|
||||
#define TARGET_F_SETOWN_EX 15
|
||||
#define TARGET_F_GETOWN_EX 16
|
||||
|
@ -708,7 +708,7 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
|
||||
if (prot == 0) {
|
||||
host_addr = mremap(g2h(old_addr), old_size, new_size, flags);
|
||||
if (host_addr != MAP_FAILED && reserved_va && old_size > new_size) {
|
||||
mmap_reserve(old_addr + old_size, new_size - old_size);
|
||||
mmap_reserve(old_addr + old_size, old_size - new_size);
|
||||
}
|
||||
} else {
|
||||
errno = ENOMEM;
|
||||
|
@ -125,10 +125,10 @@
|
||||
{ TARGET_NR_dup3, "dup3" , "%s(%d,%d,%d)", NULL, NULL },
|
||||
#endif
|
||||
#ifdef TARGET_NR_epoll_create
|
||||
{ TARGET_NR_epoll_create, "%s(%d)", NULL, NULL, NULL },
|
||||
{ TARGET_NR_epoll_create, "epoll_create", "%s(%d)", NULL, NULL },
|
||||
#endif
|
||||
#ifdef TARGET_NR_epoll_create1
|
||||
{ TARGET_NR_epoll_create1, "%s(%d)", NULL, NULL, NULL },
|
||||
{ TARGET_NR_epoll_create1, "epoll_create1", "%s(%d)", NULL, NULL },
|
||||
#endif
|
||||
#ifdef TARGET_NR_epoll_ctl
|
||||
{ TARGET_NR_epoll_ctl, "epoll_ctl" , NULL, NULL, NULL },
|
||||
|
@ -2987,7 +2987,7 @@ static abi_long do_socket(int domain, int type, int protocol)
|
||||
#endif
|
||||
protocol == NETLINK_KOBJECT_UEVENT ||
|
||||
protocol == NETLINK_AUDIT)) {
|
||||
return -EPFNOSUPPORT;
|
||||
return -TARGET_EPFNOSUPPORT;
|
||||
}
|
||||
|
||||
if (domain == AF_PACKET ||
|
||||
@ -5856,7 +5856,7 @@ static abi_long do_get_thread_area(CPUX86State *env, abi_ulong ptr)
|
||||
|
||||
abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr)
|
||||
{
|
||||
return -ENOSYS;
|
||||
return -TARGET_ENOSYS;
|
||||
}
|
||||
#else
|
||||
abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr)
|
||||
@ -6098,6 +6098,9 @@ static int target_to_host_fcntl_cmd(int cmd)
|
||||
case TARGET_F_SETFD:
|
||||
case TARGET_F_GETFL:
|
||||
case TARGET_F_SETFL:
|
||||
case TARGET_F_OFD_GETLK:
|
||||
case TARGET_F_OFD_SETLK:
|
||||
case TARGET_F_OFD_SETLKW:
|
||||
ret = cmd;
|
||||
break;
|
||||
case TARGET_F_GETLK:
|
||||
@ -6383,6 +6386,7 @@ static abi_long do_fcntl(int fd, int cmd, abi_ulong arg)
|
||||
break;
|
||||
|
||||
case TARGET_F_GETLK64:
|
||||
case TARGET_F_OFD_GETLK:
|
||||
ret = copy_from_user_flock64(&fl64, arg);
|
||||
if (ret) {
|
||||
return ret;
|
||||
@ -6394,6 +6398,8 @@ static abi_long do_fcntl(int fd, int cmd, abi_ulong arg)
|
||||
break;
|
||||
case TARGET_F_SETLK64:
|
||||
case TARGET_F_SETLKW64:
|
||||
case TARGET_F_OFD_SETLK:
|
||||
case TARGET_F_OFD_SETLKW:
|
||||
ret = copy_from_user_flock64(&fl64, arg);
|
||||
if (ret) {
|
||||
return ret;
|
||||
@ -7378,7 +7384,7 @@ static int is_proc_myself(const char *filename, const char *entry)
|
||||
}
|
||||
|
||||
#if defined(HOST_WORDS_BIGENDIAN) != defined(TARGET_WORDS_BIGENDIAN) || \
|
||||
defined(TARGET_SPARC) || defined(TARGET_M68K)
|
||||
defined(TARGET_SPARC) || defined(TARGET_M68K) || defined(TARGET_HPPA)
|
||||
static int is_proc(const char *filename, const char *entry)
|
||||
{
|
||||
return strcmp(filename, entry) == 0;
|
||||
@ -7438,6 +7444,18 @@ static int open_cpuinfo(void *cpu_env, int fd)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(TARGET_HPPA)
|
||||
static int open_cpuinfo(void *cpu_env, int fd)
|
||||
{
|
||||
dprintf(fd, "cpu family\t: PA-RISC 1.1e\n");
|
||||
dprintf(fd, "cpu\t\t: PA7300LC (PCX-L2)\n");
|
||||
dprintf(fd, "capabilities\t: os32\n");
|
||||
dprintf(fd, "model\t\t: 9000/778/B160L\n");
|
||||
dprintf(fd, "model name\t: Merlin L2 160 QEMU (9000/778/B160L)\n");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(TARGET_M68K)
|
||||
static int open_hardware(void *cpu_env, int fd)
|
||||
{
|
||||
@ -7462,7 +7480,7 @@ static int do_openat(void *cpu_env, int dirfd, const char *pathname, int flags,
|
||||
#if defined(HOST_WORDS_BIGENDIAN) != defined(TARGET_WORDS_BIGENDIAN)
|
||||
{ "/proc/net/route", open_net_route, is_proc },
|
||||
#endif
|
||||
#if defined(TARGET_SPARC)
|
||||
#if defined(TARGET_SPARC) || defined(TARGET_HPPA)
|
||||
{ "/proc/cpuinfo", open_cpuinfo, is_proc },
|
||||
#endif
|
||||
#if defined(TARGET_M68K)
|
||||
@ -8031,8 +8049,13 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
#ifdef TARGET_NR_umount
|
||||
#if defined(TARGET_NR_umount) || defined(TARGET_NR_oldumount)
|
||||
#if defined(TARGET_NR_umount)
|
||||
case TARGET_NR_umount:
|
||||
#endif
|
||||
#if defined(TARGET_NR_oldumount)
|
||||
case TARGET_NR_oldumount:
|
||||
#endif
|
||||
if (!(p = lock_user_string(arg1)))
|
||||
return -TARGET_EFAULT;
|
||||
ret = get_errno(umount(p));
|
||||
|
@ -1,47 +1,55 @@
|
||||
stub-obj-y += arch_type.o
|
||||
stub-obj-y += bdrv-next-monitor-owned.o
|
||||
stub-obj-y += blk-commit-all.o
|
||||
stub-obj-y += blockdev-close-all-bdrv-states.o
|
||||
stub-obj-y += clock-warp.o
|
||||
stub-obj-y += cpu-get-clock.o
|
||||
stub-obj-y += cpu-get-icount.o
|
||||
stub-obj-y += dump.o
|
||||
stub-obj-y += error-printf.o
|
||||
stub-obj-y += fdset.o
|
||||
stub-obj-y += gdbstub.o
|
||||
stub-obj-y += get-vm-name.o
|
||||
stub-obj-y += iothread.o
|
||||
stub-obj-y += iothread-lock.o
|
||||
stub-obj-y += is-daemonized.o
|
||||
stub-obj-$(CONFIG_LINUX_AIO) += linux-aio.o
|
||||
stub-obj-$(CONFIG_LINUX_IO_URING) += io_uring.o
|
||||
stub-obj-y += machine-init-done.o
|
||||
stub-obj-y += migr-blocker.o
|
||||
stub-obj-y += change-state-handler.o
|
||||
stub-obj-y += monitor.o
|
||||
stub-obj-y += monitor-core.o
|
||||
stub-obj-y += notify-event.o
|
||||
stub-obj-y += qmp_memory_device.o
|
||||
stub-obj-y += qtest.o
|
||||
stub-obj-y += ramfb.o
|
||||
stub-obj-y += replay.o
|
||||
stub-obj-y += replay-user.o
|
||||
stub-obj-y += runstate-check.o
|
||||
stub-obj-$(CONFIG_SOFTMMU) += semihost.o
|
||||
stub-obj-y += set-fd-handler.o
|
||||
stub-obj-y += vmgenid.o
|
||||
stub-obj-y += sysbus.o
|
||||
stub-obj-y += tpm.o
|
||||
stub-obj-y += trace-control.o
|
||||
stub-obj-y += uuid.o
|
||||
stub-obj-y += vm-stop.o
|
||||
stub-obj-y += vmstate.o
|
||||
stub-obj-y += win32-kbd-hook.o
|
||||
stub-obj-$(CONFIG_SOFTMMU) += win32-kbd-hook.o
|
||||
|
||||
#######################################################################
|
||||
# code used by both qemu system emulation and qemu-img
|
||||
|
||||
ifeq ($(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS)),y)
|
||||
|
||||
stub-obj-y += arch_type.o
|
||||
stub-obj-y += bdrv-next-monitor-owned.o
|
||||
stub-obj-y += blockdev-close-all-bdrv-states.o
|
||||
stub-obj-y += change-state-handler.o
|
||||
stub-obj-y += clock-warp.o
|
||||
stub-obj-y += fd-register.o
|
||||
stub-obj-y += qmp_memory_device.o
|
||||
stub-obj-y += target-monitor-defs.o
|
||||
stub-obj-y += target-get-monitor-def.o
|
||||
stub-obj-y += vmgenid.o
|
||||
stub-obj-y += xen-common.o
|
||||
stub-obj-y += xen-hvm.o
|
||||
stub-obj-y += fw_cfg.o
|
||||
stub-obj-y += get-vm-name.o
|
||||
stub-obj-y += iothread.o
|
||||
stub-obj-y += machine-init-done.o
|
||||
stub-obj-y += migr-blocker.o
|
||||
stub-obj-y += monitor.o
|
||||
stub-obj-y += pci-host-piix.o
|
||||
stub-obj-y += ram-block.o
|
||||
stub-obj-y += ramfb.o
|
||||
stub-obj-y += fw_cfg.o
|
||||
stub-obj-$(CONFIG_SOFTMMU) += semihost.o
|
||||
stub-obj-y += replay-user.o
|
||||
stub-obj-y += target-get-monitor-def.o
|
||||
stub-obj-y += target-monitor-defs.o
|
||||
stub-obj-y += uuid.o
|
||||
stub-obj-y += vm-stop.o
|
||||
stub-obj-y += xen-common.o
|
||||
stub-obj-y += xen-hvm.o
|
||||
|
||||
endif # CONFIG_SOFTMMU || CONFIG_TOOLS
|
||||
|
@ -6850,6 +6850,7 @@ static void x86_cpu_register_feature_bit_props(X86CPU *cpu,
|
||||
x86_cpu_register_bit_prop(cpu, name, w, bitnr);
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
static GuestPanicInformation *x86_cpu_get_crash_info(CPUState *cs)
|
||||
{
|
||||
X86CPU *cpu = X86_CPU(cs);
|
||||
@ -6893,6 +6894,7 @@ static void x86_cpu_get_crash_info_qom(Object *obj, Visitor *v,
|
||||
errp);
|
||||
qapi_free_GuestPanicInformation(panic_info);
|
||||
}
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
|
||||
static void x86_cpu_initfn(Object *obj)
|
||||
{
|
||||
@ -6939,8 +6941,10 @@ static void x86_cpu_initfn(Object *obj)
|
||||
x86_cpu_get_unavailable_features,
|
||||
NULL, NULL, NULL);
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
object_property_add(obj, "crash-information", "GuestPanicInformation",
|
||||
x86_cpu_get_crash_info_qom, NULL, NULL, NULL);
|
||||
#endif
|
||||
|
||||
for (w = 0; w < FEATURE_WORDS; w++) {
|
||||
int bitnr;
|
||||
@ -7252,7 +7256,6 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
|
||||
cc->cpu_exec_interrupt = x86_cpu_exec_interrupt;
|
||||
#endif
|
||||
cc->dump_state = x86_cpu_dump_state;
|
||||
cc->get_crash_info = x86_cpu_get_crash_info;
|
||||
cc->set_pc = x86_cpu_set_pc;
|
||||
cc->synchronize_from_tb = x86_cpu_synchronize_from_tb;
|
||||
cc->gdb_read_register = x86_cpu_gdb_read_register;
|
||||
@ -7263,6 +7266,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
|
||||
cc->asidx_from_attrs = x86_asidx_from_attrs;
|
||||
cc->get_memory_mapping = x86_cpu_get_memory_mapping;
|
||||
cc->get_phys_page_attrs_debug = x86_cpu_get_phys_page_attrs_debug;
|
||||
cc->get_crash_info = x86_cpu_get_crash_info;
|
||||
cc->write_elf64_note = x86_cpu_write_elf64_note;
|
||||
cc->write_elf64_qemunote = x86_cpu_write_elf64_qemunote;
|
||||
cc->write_elf32_note = x86_cpu_write_elf32_note;
|
||||
|
@ -469,10 +469,12 @@ static void riscv_cpu_init(Object *obj)
|
||||
cpu_set_cpustate_pointers(cpu);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
static const VMStateDescription vmstate_riscv_cpu = {
|
||||
.name = "cpu",
|
||||
.unmigratable = 1,
|
||||
};
|
||||
#endif
|
||||
|
||||
static Property riscv_cpu_properties[] = {
|
||||
DEFINE_PROP_BOOL("i", RISCVCPU, cfg.ext_i, true),
|
||||
@ -528,13 +530,13 @@ static void riscv_cpu_class_init(ObjectClass *c, void *data)
|
||||
cc->do_transaction_failed = riscv_cpu_do_transaction_failed;
|
||||
cc->do_unaligned_access = riscv_cpu_do_unaligned_access;
|
||||
cc->get_phys_page_debug = riscv_cpu_get_phys_page_debug;
|
||||
/* For now, mark unmigratable: */
|
||||
cc->vmsd = &vmstate_riscv_cpu;
|
||||
#endif
|
||||
#ifdef CONFIG_TCG
|
||||
cc->tcg_initialize = riscv_translate_init;
|
||||
cc->tlb_fill = riscv_cpu_tlb_fill;
|
||||
#endif
|
||||
/* For now, mark unmigratable: */
|
||||
cc->vmsd = &vmstate_riscv_cpu;
|
||||
device_class_set_props(dc, riscv_cpu_properties);
|
||||
}
|
||||
|
||||
|
@ -247,6 +247,7 @@ out:
|
||||
error_propagate(errp, err);
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
static GuestPanicInformation *s390_cpu_get_crash_info(CPUState *cs)
|
||||
{
|
||||
GuestPanicInformation *panic_info;
|
||||
@ -256,11 +257,7 @@ static GuestPanicInformation *s390_cpu_get_crash_info(CPUState *cs)
|
||||
panic_info = g_malloc0(sizeof(GuestPanicInformation));
|
||||
|
||||
panic_info->type = GUEST_PANIC_INFORMATION_TYPE_S390;
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
panic_info->u.s390.core = cpu->env.core_id;
|
||||
#else
|
||||
panic_info->u.s390.core = 0; /* sane default for non system emulation */
|
||||
#endif
|
||||
panic_info->u.s390.psw_mask = cpu->env.psw.mask;
|
||||
panic_info->u.s390.psw_addr = cpu->env.psw.addr;
|
||||
panic_info->u.s390.reason = cpu->env.crash_reason;
|
||||
@ -286,6 +283,7 @@ static void s390_cpu_get_crash_info_qom(Object *obj, Visitor *v,
|
||||
errp);
|
||||
qapi_free_GuestPanicInformation(panic_info);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void s390_cpu_initfn(Object *obj)
|
||||
{
|
||||
@ -295,16 +293,16 @@ static void s390_cpu_initfn(Object *obj)
|
||||
cpu_set_cpustate_pointers(cpu);
|
||||
cs->halted = 1;
|
||||
cs->exception_index = EXCP_HLT;
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
object_property_add(obj, "crash-information", "GuestPanicInformation",
|
||||
s390_cpu_get_crash_info_qom, NULL, NULL, NULL);
|
||||
s390_cpu_model_register_props(obj);
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
cpu->env.tod_timer =
|
||||
timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_tod_timer, cpu);
|
||||
cpu->env.cpu_timer =
|
||||
timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_cpu_timer, cpu);
|
||||
s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu);
|
||||
#endif
|
||||
s390_cpu_model_register_props(obj);
|
||||
}
|
||||
|
||||
static void s390_cpu_finalize(Object *obj)
|
||||
@ -488,13 +486,13 @@ static void s390_cpu_class_init(ObjectClass *oc, void *data)
|
||||
cc->do_interrupt = s390_cpu_do_interrupt;
|
||||
#endif
|
||||
cc->dump_state = s390_cpu_dump_state;
|
||||
cc->get_crash_info = s390_cpu_get_crash_info;
|
||||
cc->set_pc = s390_cpu_set_pc;
|
||||
cc->gdb_read_register = s390_cpu_gdb_read_register;
|
||||
cc->gdb_write_register = s390_cpu_gdb_write_register;
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
cc->get_phys_page_debug = s390_cpu_get_phys_page_debug;
|
||||
cc->vmsd = &vmstate_s390_cpu;
|
||||
cc->get_crash_info = s390_cpu_get_crash_info;
|
||||
cc->write_elf64_note = s390_cpu_write_elf64_note;
|
||||
#ifdef CONFIG_TCG
|
||||
cc->cpu_exec_interrupt = s390_cpu_exec_interrupt;
|
||||
|
@ -12,8 +12,10 @@ check-help:
|
||||
@echo " $(MAKE) check-speed Run qobject speed tests"
|
||||
@echo " $(MAKE) check-qapi-schema Run QAPI schema tests"
|
||||
@echo " $(MAKE) check-block Run block tests"
|
||||
ifeq ($(CONFIG_TCG),y)
|
||||
@echo " $(MAKE) check-tcg Run TCG tests"
|
||||
@echo " $(MAKE) check-softfloat Run FPU emulation tests"
|
||||
endif
|
||||
@echo " $(MAKE) check-acceptance Run all acceptance (functional) tests"
|
||||
@echo
|
||||
@echo " $(MAKE) check-report.tap Generates an aggregated TAP test report"
|
||||
@ -64,14 +66,14 @@ check-unit-y += tests/check-qlit$(EXESUF)
|
||||
check-unit-y += tests/test-qobject-output-visitor$(EXESUF)
|
||||
check-unit-y += tests/test-clone-visitor$(EXESUF)
|
||||
check-unit-y += tests/test-qobject-input-visitor$(EXESUF)
|
||||
check-unit-y += tests/test-qmp-cmds$(EXESUF)
|
||||
check-unit-$(CONFIG_SOFTMMU) += tests/test-qmp-cmds$(EXESUF)
|
||||
check-unit-y += tests/test-string-input-visitor$(EXESUF)
|
||||
check-unit-y += tests/test-string-output-visitor$(EXESUF)
|
||||
check-unit-y += tests/test-qmp-event$(EXESUF)
|
||||
check-unit-y += tests/test-opts-visitor$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-coroutine$(EXESUF)
|
||||
check-unit-y += tests/test-visitor-serialization$(EXESUF)
|
||||
check-unit-y += tests/test-iov$(EXESUF)
|
||||
check-unit-$(CONFIG_SOFTMMU) += tests/test-iov$(EXESUF)
|
||||
check-unit-y += tests/test-bitmap$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-aio$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-aio-multithread$(EXESUF)
|
||||
@ -106,7 +108,7 @@ check-unit-y += tests/test-qht$(EXESUF)
|
||||
check-unit-y += tests/test-qht-par$(EXESUF)
|
||||
check-unit-y += tests/test-bitops$(EXESUF)
|
||||
check-unit-y += tests/test-bitcnt$(EXESUF)
|
||||
check-unit-y += tests/test-qdev-global-props$(EXESUF)
|
||||
check-unit-$(CONFIG_SOFTMMU) += tests/test-qdev-global-props$(EXESUF)
|
||||
check-unit-y += tests/check-qom-interface$(EXESUF)
|
||||
check-unit-y += tests/check-qom-proplist$(EXESUF)
|
||||
check-unit-y += tests/test-qemu-opts$(EXESUF)
|
||||
@ -124,9 +126,9 @@ check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_GNUTLS)) += tests/test-crypto-tl
|
||||
ifneq (,$(findstring qemu-ga,$(TOOLS)))
|
||||
check-unit-$(call land,$(CONFIG_LINUX),$(CONFIG_VIRTIO_SERIAL)) += tests/test-qga$(EXESUF)
|
||||
endif
|
||||
check-unit-y += tests/test-timed-average$(EXESUF)
|
||||
check-unit-$(CONFIG_INOTIFY1) += tests/test-util-filemonitor$(EXESUF)
|
||||
check-unit-y += tests/test-util-sockets$(EXESUF)
|
||||
check-unit-$(CONFIG_SOFTMMU) += tests/test-timed-average$(EXESUF)
|
||||
check-unit-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_INOTIFY1)) += tests/test-util-filemonitor$(EXESUF)
|
||||
check-unit-$(CONFIG_SOFTMMU) += tests/test-util-sockets$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-authz-simple$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-authz-list$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-authz-listfile$(EXESUF)
|
||||
@ -137,7 +139,7 @@ check-unit-$(CONFIG_BLOCK) += tests/test-io-channel-file$(EXESUF)
|
||||
check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_GNUTLS)) += tests/test-io-channel-tls$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-io-channel-command$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-io-channel-buffer$(EXESUF)
|
||||
check-unit-y += tests/test-base64$(EXESUF)
|
||||
check-unit-$(CONFIG_SOFTMMU) += tests/test-base64$(EXESUF)
|
||||
check-unit-$(call land,$(CONFIG_BLOCK),$(if $(CONFIG_NETTLE),y,$(CONFIG_GCRYPT))) += tests/test-crypto-pbkdf$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-crypto-ivgen$(EXESUF)
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-crypto-afsplit$(EXESUF)
|
||||
@ -145,7 +147,7 @@ check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_QEMU_PRIVATE_XTS)) += tests/test
|
||||
check-unit-$(CONFIG_BLOCK) += tests/test-crypto-block$(EXESUF)
|
||||
check-unit-y += tests/test-logging$(EXESUF)
|
||||
check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_REPLICATION)) += tests/test-replication$(EXESUF)
|
||||
check-unit-y += tests/test-bufferiszero$(EXESUF)
|
||||
check-unit-$(CONFIG_SOFTMMU) += tests/test-bufferiszero$(EXESUF)
|
||||
check-unit-y += tests/test-uuid$(EXESUF)
|
||||
check-unit-y += tests/ptimer-test$(EXESUF)
|
||||
check-unit-y += tests/test-qapi-util$(EXESUF)
|
||||
|
@ -1,8 +1,4 @@
|
||||
util-obj-y = osdep.o cutils.o unicode.o qemu-timer-common.o
|
||||
util-obj-y += bufferiszero.o
|
||||
util-obj-y += lockcnt.o
|
||||
util-obj-y += aiocb.o async.o aio-wait.o thread-pool.o qemu-timer.o
|
||||
util-obj-y += main-loop.o
|
||||
util-obj-$(call lnot,$(CONFIG_ATOMIC64)) += atomic64.o
|
||||
util-obj-$(CONFIG_POSIX) += aio-posix.o
|
||||
util-obj-$(CONFIG_POSIX) += fdmon-poll.o
|
||||
@ -21,31 +17,20 @@ util-obj-$(CONFIG_WIN32) += oslib-win32.o
|
||||
util-obj-$(CONFIG_WIN32) += qemu-thread-win32.o
|
||||
util-obj-y += envlist.o path.o module.o
|
||||
util-obj-y += host-utils.o
|
||||
util-obj-y += bitmap.o bitops.o hbitmap.o
|
||||
util-obj-y += bitmap.o bitops.o
|
||||
util-obj-y += fifo8.o
|
||||
util-obj-y += nvdimm-utils.o
|
||||
util-obj-y += cacheinfo.o
|
||||
util-obj-y += error.o qemu-error.o
|
||||
util-obj-y += qemu-print.o
|
||||
util-obj-y += id.o
|
||||
util-obj-y += iov.o qemu-config.o qemu-sockets.o uri.o notify.o
|
||||
util-obj-y += qemu-config.o notify.o
|
||||
util-obj-y += qemu-option.o qemu-progress.o
|
||||
util-obj-y += keyval.o
|
||||
util-obj-y += hexdump.o
|
||||
util-obj-y += crc32c.o
|
||||
util-obj-y += uuid.o
|
||||
util-obj-y += throttle.o
|
||||
util-obj-y += getauxval.o
|
||||
util-obj-y += readline.o
|
||||
util-obj-y += rcu.o
|
||||
util-obj-$(CONFIG_MEMBARRIER) += sys_membarrier.o
|
||||
util-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o
|
||||
util-obj-y += qemu-coroutine-sleep.o
|
||||
util-obj-y += qemu-co-shared-resource.o
|
||||
util-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o
|
||||
util-obj-y += buffer.o
|
||||
util-obj-y += timed-average.o
|
||||
util-obj-y += base64.o
|
||||
util-obj-y += log.o
|
||||
util-obj-y += pagesize.o
|
||||
util-obj-y += qdist.o
|
||||
@ -54,13 +39,45 @@ util-obj-y += qsp.o
|
||||
util-obj-y += range.o
|
||||
util-obj-y += stats64.o
|
||||
util-obj-y += systemd.o
|
||||
util-obj-y += iova-tree.o
|
||||
util-obj-$(CONFIG_INOTIFY1) += filemonitor-inotify.o
|
||||
util-obj-$(call lnot,$(CONFIG_INOTIFY1)) += filemonitor-stub.o
|
||||
util-obj-$(CONFIG_LINUX) += vfio-helpers.o
|
||||
util-obj-$(CONFIG_POSIX) += drm.o
|
||||
util-obj-y += guest-random.o
|
||||
util-obj-$(CONFIG_GIO) += dbus.o
|
||||
dbus.o-cflags = $(GIO_CFLAGS)
|
||||
dbus.o-libs = $(GIO_LIBS)
|
||||
util-obj-$(CONFIG_USER_ONLY) += selfmap.o
|
||||
|
||||
#######################################################################
|
||||
# code used by both qemu system emulation and qemu-img
|
||||
|
||||
ifeq ($(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS)),y)
|
||||
|
||||
util-obj-y += aio-wait.o
|
||||
util-obj-y += aiocb.o
|
||||
util-obj-y += async.o
|
||||
util-obj-y += base64.o
|
||||
util-obj-y += buffer.o
|
||||
util-obj-y += bufferiszero.o
|
||||
util-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o
|
||||
util-obj-y += hexdump.o
|
||||
util-obj-y += lockcnt.o
|
||||
util-obj-y += iov.o
|
||||
util-obj-y += iova-tree.o
|
||||
util-obj-y += hbitmap.o
|
||||
util-obj-y += main-loop.o
|
||||
util-obj-y += nvdimm-utils.o
|
||||
util-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o
|
||||
util-obj-y += qemu-coroutine-sleep.o
|
||||
util-obj-y += qemu-co-shared-resource.o
|
||||
util-obj-y += qemu-sockets.o
|
||||
util-obj-y += qemu-timer.o
|
||||
util-obj-y += thread-pool.o
|
||||
util-obj-y += throttle.o
|
||||
util-obj-y += timed-average.o
|
||||
util-obj-y += uri.o
|
||||
|
||||
util-obj-$(CONFIG_LINUX) += vfio-helpers.o
|
||||
util-obj-$(CONFIG_INOTIFY1) += filemonitor-inotify.o
|
||||
util-obj-$(call lnot,$(CONFIG_INOTIFY1)) += filemonitor-stub.o
|
||||
util-obj-$(CONFIG_BLOCK) += readline.o
|
||||
|
||||
endif # CONFIG_SOFTMMU || CONFIG_TOOLS
|
||||
|
Loading…
Reference in New Issue
Block a user