Another round of small fixes. I am not including the
virtio-blk fix, because Wen only posted a prototype and the changes I made were pretty large. It definitely needs another pair of eyes (but it is a 2.3 regression and a blocker). -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABCAAGBQJVHUtcAAoJEL/70l94x66Dr1IIAIq+2i+79CoOW1VgoqdN9hBM co7s8MzVwPzSPxMzicv94nAMBcPWfmoGzi8JJebxUmQDmZ7L33bOa64cbVgmQ5wU gfJ+yea8TRkyDH/psv8jcvesdEgwRUnpOTCrEv4GD+haTHWZB4t6HW4KpolxbclJ igs5MUxcH/cM//L+nyadr/ZuJvPy4sakquvnMqr5Zzr/xjwLwzbJIksoZthMdxW5 oZAY1g0T2f5sSpt0kl8lYid1njbTBX9z8ZkoftQSjRJFZ253vl+CxXFuJevke1hE ayRhRKg5VfAyPY4txEK0+27E/Jo4X51y+6Et0N5yzrQsSZ1FeBtxzngm14gEQZA= =CfCj -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging Another round of small fixes. I am not including the virtio-blk fix, because Wen only posted a prototype and the changes I made were pretty large. It definitely needs another pair of eyes (but it is a 2.3 regression and a blocker). # gpg: Signature made Thu Apr 2 14:59:56 2015 BST using RSA key ID 78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini/tags/for-upstream: Use $(MAKE) for recursive make kvm-all: Sync dirty-bitmap from kvm before kvm destroy the corresponding dirty_bitmap util/qemu-config: fix regression of qmp_query_command_line_options target-i386: clear bsp bit when designating bsp qga: fitering out -fstack-protector-strong target-i386: save 64-bit CR3 in 64-bit SMM state save area Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
a8a7ef145d
6
Makefile
6
Makefile
@ -331,8 +331,8 @@ distclean: clean
|
|||||||
rm -rf $$d || exit 1 ; \
|
rm -rf $$d || exit 1 ; \
|
||||||
done
|
done
|
||||||
rm -Rf .sdk
|
rm -Rf .sdk
|
||||||
if test -f pixman/config.log; then make -C pixman distclean; fi
|
if test -f pixman/config.log; then $(MAKE) -C pixman distclean; fi
|
||||||
if test -f dtc/version_gen.h; then make $(DTC_MAKE_ARGS) clean; fi
|
if test -f dtc/version_gen.h; then $(MAKE) $(DTC_MAKE_ARGS) clean; fi
|
||||||
|
|
||||||
KEYMAPS=da en-gb et fr fr-ch is lt modifiers no pt-br sv \
|
KEYMAPS=da en-gb et fr fr-ch is lt modifiers no pt-br sv \
|
||||||
ar de en-us fi fr-be hr it lv nl pl ru th \
|
ar de en-us fi fr-be hr it lv nl pl ru th \
|
||||||
@ -532,7 +532,7 @@ installer: $(INSTALLER)
|
|||||||
INSTDIR=/tmp/qemu-nsis
|
INSTDIR=/tmp/qemu-nsis
|
||||||
|
|
||||||
$(INSTALLER): $(SRC_PATH)/qemu.nsi
|
$(INSTALLER): $(SRC_PATH)/qemu.nsi
|
||||||
make install prefix=${INSTDIR}
|
$(MAKE) install prefix=${INSTDIR}
|
||||||
ifdef SIGNCODE
|
ifdef SIGNCODE
|
||||||
(cd ${INSTDIR}; \
|
(cd ${INSTDIR}; \
|
||||||
for i in *.exe; do \
|
for i in *.exe; do \
|
||||||
|
@ -215,14 +215,18 @@ void apic_init_reset(DeviceState *dev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void apic_designate_bsp(DeviceState *dev)
|
void apic_designate_bsp(DeviceState *dev, bool bsp)
|
||||||
{
|
{
|
||||||
if (dev == NULL) {
|
if (dev == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
APICCommonState *s = APIC_COMMON(dev);
|
APICCommonState *s = APIC_COMMON(dev);
|
||||||
s->apicbase |= MSR_IA32_APICBASE_BSP;
|
if (bsp) {
|
||||||
|
s->apicbase |= MSR_IA32_APICBASE_BSP;
|
||||||
|
} else {
|
||||||
|
s->apicbase &= ~MSR_IA32_APICBASE_BSP;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void apic_reset_common(DeviceState *dev)
|
static void apic_reset_common(DeviceState *dev)
|
||||||
|
@ -21,7 +21,7 @@ void apic_sipi(DeviceState *s);
|
|||||||
void apic_handle_tpr_access_report(DeviceState *d, target_ulong ip,
|
void apic_handle_tpr_access_report(DeviceState *d, target_ulong ip,
|
||||||
TPRAccess access);
|
TPRAccess access);
|
||||||
void apic_poll_irq(DeviceState *d);
|
void apic_poll_irq(DeviceState *d);
|
||||||
void apic_designate_bsp(DeviceState *d);
|
void apic_designate_bsp(DeviceState *d, bool bsp);
|
||||||
|
|
||||||
/* pc.c */
|
/* pc.c */
|
||||||
DeviceState *cpu_get_current_apic(void);
|
DeviceState *cpu_get_current_apic(void);
|
||||||
|
@ -715,7 +715,7 @@ static void kvm_set_phys_mem(MemoryRegionSection *section, bool add)
|
|||||||
|
|
||||||
old = *mem;
|
old = *mem;
|
||||||
|
|
||||||
if (mem->flags & KVM_MEM_LOG_DIRTY_PAGES) {
|
if ((mem->flags & KVM_MEM_LOG_DIRTY_PAGES) || s->migration_log) {
|
||||||
kvm_physical_sync_dirty_bitmap(section);
|
kvm_physical_sync_dirty_bitmap(section);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
qga-vss-dll-obj-y += requester.o provider.o install.o
|
qga-vss-dll-obj-y += requester.o provider.o install.o
|
||||||
|
|
||||||
obj-qga-vss-dll-obj-y = $(addprefix $(obj)/, $(qga-vss-dll-obj-y))
|
obj-qga-vss-dll-obj-y = $(addprefix $(obj)/, $(qga-vss-dll-obj-y))
|
||||||
$(obj-qga-vss-dll-obj-y): QEMU_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wredundant-decls -fstack-protector-all, $(QEMU_CFLAGS)) -Wno-unknown-pragmas -Wno-delete-non-virtual-dtor
|
$(obj-qga-vss-dll-obj-y): QEMU_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wredundant-decls -fstack-protector-all -fstack-protector-strong, $(QEMU_CFLAGS)) -Wno-unknown-pragmas -Wno-delete-non-virtual-dtor
|
||||||
|
|
||||||
$(obj)/qga-vss.dll: LDFLAGS = -shared -Wl,--add-stdcall-alias,--enable-stdcall-fixup -lole32 -loleaut32 -lshlwapi -luuid -static
|
$(obj)/qga-vss.dll: LDFLAGS = -shared -Wl,--add-stdcall-alias,--enable-stdcall-fixup -lole32 -loleaut32 -lshlwapi -luuid -static
|
||||||
$(obj)/qga-vss.dll: $(obj-qga-vss-dll-obj-y) $(SRC_PATH)/$(obj)/qga-vss.def
|
$(obj)/qga-vss.dll: $(obj-qga-vss-dll-obj-y) $(SRC_PATH)/$(obj)/qga-vss.def
|
||||||
|
@ -2714,9 +2714,7 @@ static void x86_cpu_reset(CPUState *s)
|
|||||||
|
|
||||||
#if !defined(CONFIG_USER_ONLY)
|
#if !defined(CONFIG_USER_ONLY)
|
||||||
/* We hard-wire the BSP to the first CPU. */
|
/* We hard-wire the BSP to the first CPU. */
|
||||||
if (s->cpu_index == 0) {
|
apic_designate_bsp(cpu->apic_state, s->cpu_index == 0);
|
||||||
apic_designate_bsp(cpu->apic_state);
|
|
||||||
}
|
|
||||||
|
|
||||||
s->halted = !cpu_is_bsp(cpu);
|
s->halted = !cpu_is_bsp(cpu);
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ void do_smm_enter(X86CPU *cpu)
|
|||||||
stl_phys(cs->as, sm_state + 0x7f60, env->dr[7]);
|
stl_phys(cs->as, sm_state + 0x7f60, env->dr[7]);
|
||||||
|
|
||||||
stl_phys(cs->as, sm_state + 0x7f48, env->cr[4]);
|
stl_phys(cs->as, sm_state + 0x7f48, env->cr[4]);
|
||||||
stl_phys(cs->as, sm_state + 0x7f50, env->cr[3]);
|
stq_phys(cs->as, sm_state + 0x7f50, env->cr[3]);
|
||||||
stl_phys(cs->as, sm_state + 0x7f58, env->cr[0]);
|
stl_phys(cs->as, sm_state + 0x7f58, env->cr[0]);
|
||||||
|
|
||||||
stl_phys(cs->as, sm_state + 0x7efc, SMM_REVISION_ID);
|
stl_phys(cs->as, sm_state + 0x7efc, SMM_REVISION_ID);
|
||||||
@ -236,7 +236,7 @@ void helper_rsm(CPUX86State *env)
|
|||||||
env->dr[7] = ldl_phys(cs->as, sm_state + 0x7f60);
|
env->dr[7] = ldl_phys(cs->as, sm_state + 0x7f60);
|
||||||
|
|
||||||
cpu_x86_update_cr4(env, ldl_phys(cs->as, sm_state + 0x7f48));
|
cpu_x86_update_cr4(env, ldl_phys(cs->as, sm_state + 0x7f48));
|
||||||
cpu_x86_update_cr3(env, ldl_phys(cs->as, sm_state + 0x7f50));
|
cpu_x86_update_cr3(env, ldq_phys(cs->as, sm_state + 0x7f50));
|
||||||
cpu_x86_update_cr0(env, ldl_phys(cs->as, sm_state + 0x7f58));
|
cpu_x86_update_cr0(env, ldl_phys(cs->as, sm_state + 0x7f58));
|
||||||
|
|
||||||
for (i = 0; i < 6; i++) {
|
for (i = 0; i < 6; i++) {
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "hw/qdev.h"
|
#include "hw/qdev.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qmp-commands.h"
|
#include "qmp-commands.h"
|
||||||
|
#include "hw/i386/pc.h"
|
||||||
|
|
||||||
static QemuOptsList *vm_config_groups[32];
|
static QemuOptsList *vm_config_groups[32];
|
||||||
static QemuOptsList *drive_config_groups[4];
|
static QemuOptsList *drive_config_groups[4];
|
||||||
@ -148,6 +149,84 @@ static CommandLineParameterInfoList *get_drive_infolist(void)
|
|||||||
return head;
|
return head;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* restore machine options that are now machine's properties */
|
||||||
|
static QemuOptsList machine_opts = {
|
||||||
|
.merge_lists = true,
|
||||||
|
.head = QTAILQ_HEAD_INITIALIZER(machine_opts.head),
|
||||||
|
.desc = {
|
||||||
|
{
|
||||||
|
.name = "type",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "emulated machine"
|
||||||
|
},{
|
||||||
|
.name = "accel",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "accelerator list",
|
||||||
|
},{
|
||||||
|
.name = "kernel_irqchip",
|
||||||
|
.type = QEMU_OPT_BOOL,
|
||||||
|
.help = "use KVM in-kernel irqchip",
|
||||||
|
},{
|
||||||
|
.name = "kvm_shadow_mem",
|
||||||
|
.type = QEMU_OPT_SIZE,
|
||||||
|
.help = "KVM shadow MMU size",
|
||||||
|
},{
|
||||||
|
.name = "kernel",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "Linux kernel image file",
|
||||||
|
},{
|
||||||
|
.name = "initrd",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "Linux initial ramdisk file",
|
||||||
|
},{
|
||||||
|
.name = "append",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "Linux kernel command line",
|
||||||
|
},{
|
||||||
|
.name = "dtb",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "Linux kernel device tree file",
|
||||||
|
},{
|
||||||
|
.name = "dumpdtb",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "Dump current dtb to a file and quit",
|
||||||
|
},{
|
||||||
|
.name = "phandle_start",
|
||||||
|
.type = QEMU_OPT_NUMBER,
|
||||||
|
.help = "The first phandle ID we may generate dynamically",
|
||||||
|
},{
|
||||||
|
.name = "dt_compatible",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "Overrides the \"compatible\" property of the dt root node",
|
||||||
|
},{
|
||||||
|
.name = "dump-guest-core",
|
||||||
|
.type = QEMU_OPT_BOOL,
|
||||||
|
.help = "Include guest memory in a core dump",
|
||||||
|
},{
|
||||||
|
.name = "mem-merge",
|
||||||
|
.type = QEMU_OPT_BOOL,
|
||||||
|
.help = "enable/disable memory merge support",
|
||||||
|
},{
|
||||||
|
.name = "usb",
|
||||||
|
.type = QEMU_OPT_BOOL,
|
||||||
|
.help = "Set on/off to enable/disable usb",
|
||||||
|
},{
|
||||||
|
.name = "firmware",
|
||||||
|
.type = QEMU_OPT_STRING,
|
||||||
|
.help = "firmware image",
|
||||||
|
},{
|
||||||
|
.name = "iommu",
|
||||||
|
.type = QEMU_OPT_BOOL,
|
||||||
|
.help = "Set on/off to enable/disable Intel IOMMU (VT-d)",
|
||||||
|
},{
|
||||||
|
.name = "suppress-vmdesc",
|
||||||
|
.type = QEMU_OPT_BOOL,
|
||||||
|
.help = "Set on to disable self-describing migration",
|
||||||
|
},
|
||||||
|
{ /* End of list */ }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
|
CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
|
||||||
const char *option,
|
const char *option,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
@ -162,6 +241,8 @@ CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
|
|||||||
info->option = g_strdup(vm_config_groups[i]->name);
|
info->option = g_strdup(vm_config_groups[i]->name);
|
||||||
if (!strcmp("drive", vm_config_groups[i]->name)) {
|
if (!strcmp("drive", vm_config_groups[i]->name)) {
|
||||||
info->parameters = get_drive_infolist();
|
info->parameters = get_drive_infolist();
|
||||||
|
} else if (!strcmp("machine", vm_config_groups[i]->name)) {
|
||||||
|
info->parameters = query_option_descs(machine_opts.desc);
|
||||||
} else {
|
} else {
|
||||||
info->parameters =
|
info->parameters =
|
||||||
query_option_descs(vm_config_groups[i]->desc);
|
query_option_descs(vm_config_groups[i]->desc);
|
||||||
|
Loading…
Reference in New Issue
Block a user