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:
Peter Maydell 2015-04-02 15:53:16 +01:00
commit a8a7ef145d
8 changed files with 96 additions and 13 deletions

View File

@ -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 \

View File

@ -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)

View File

@ -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);

View File

@ -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);
} }

View File

@ -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

View File

@ -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);

View File

@ -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++) {

View File

@ -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);