Hello community,
here is the log from the commit of package kvm
checked in at Thu Feb 21 02:04:22 CET 2008.
--------
--- arch/i386/kvm/kvm.changes 2008-02-15 12:19:18.000000000 +0100
+++ /mounts/work_src_done/STABLE/kvm/kvm.changes 2008-02-20 19:46:32.000000000 +0100
@@ -1,0 +2,8 @@
+Fri Feb 15 19:06:58 CET 2008 - bk@suse.de
+
+- Update to kvm-61, adds paravirtualized clock and dozens of fixes
+- Fix cpuid asm or 64-bit guest support and fix core duo support
+- Build the BIOS images from source and add ACPI entries for -M mac
+- Build qemu with -O0 to work around real-mode emulation problems
+
+-------------------------------------------------------------------
Old:
----
kvm-60.tar.bz2
kvm-bootmenu.patch
kvm-no-kvm-disabled.patch
kvm-user-testwarnings.patch
qemu-x86_64-gcc4.patch
series
New:
----
acpi-tables.patch
kvm-61.tar.bz2
kvm-susekernel.patch
no-efer-on-old-core.patch
qemu-kvm-x86-new-cpuidasm.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kvm.spec ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:09.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:09.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package kvm (Version 60)
+# spec file for package kvm (Version 61)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -13,38 +13,41 @@
Name: kvm
+BuildRequires: SDL-devel alsa alsa-devel dev86 perl pmtools texinfo
License: BSD 3-Clause; GPL v2 only; GPL v2 or later; LGPL v2.1 or later; X11/MIT
Group: System/Kernel
Summary: Kernel-based Virtual Machine
Url: http://kvm.qumranet.com/
-Version: 60
-Release: 11
+Version: 61
+Release: 1
+### On update of the tarball, recompress the tarball and:
+# - remove s390-dis.c
+# - remove the "patches" directory
+###
ExclusiveArch: %ix86 x86_64
Source0: %name-%version.tar.bz2
Source1: 60-kvm.rules
Patch01: qemu-datadir.diff
-Patch03: kvm-no-kvm-disabled.patch
+Patch02: kvm-susekernel.patch
+Patch03: qemu-kvm-x86-new-cpuidasm.patch
Patch04: kvm-ssse3.patch
Patch05: kvm-perf.patch
-Patch06: kvm-user-testwarnings.patch
-Patch07: kvm-bootmenu.patch
-Patch50: qemu-x86_64-gcc4.patch
-Source60: series
-Source61: qemu-applesmc.patch
-Source62: qemu-coreduo.patch
-Source64: qemu-ide.patch
-Source65: qemu-intelmac.patch
-Source66: qemu-lpc.patch
-Source67: qemu-multiboot.patch
-Source68: qemu-hpet.patch
-Source69: qemu-rtl8139.patch
-Source81: kvm-cpuid-fake.patch
-#Source90: bios.mac
+Patch10: qemu-hpet.patch
+Patch11: qemu-lpc.patch
+Patch12: qemu-applesmc.patch
+Patch13: qemu-coreduo.patch
+Patch14: qemu-ide.patch
+Patch15: qemu-intelmac.patch
+Patch16: qemu-rtl8139.patch
+Patch17: qemu-multiboot.patch
+Patch18: kvm-cpuid-fake.patch
Patch82: kvm-cpuid.patch
Patch83: kvm-gfxboot.patch
+Patch90: acpi-tables.patch
+# Upstream patches:
+Patch100: no-efer-on-old-core.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: /usr/sbin/groupadd
-BuildRequires: SDL-devel alsa alsa-devel perl texinfo
%define use_kmp 1
%if %use_kmp
BuildRequires: module-init-tools
@@ -86,8 +89,6 @@
Yaniv Kamay
Dor Laor
-%if %use_kmp
-
%package KMP
Summary: Updated kernel modules for KVM (Kernel-based Virtual Machine)
Group: System/Kernel
@@ -121,46 +122,63 @@
Yaniv Kamay
Dor Laor
-%endif
-
%prep
%setup -q
-[ -f qemu/s390-dis.c ] && exit 2 # bnc#353836
-%patch01 -p1 -b .datadir
-#patch03 -p1 -b .no-kvm-disabled
-%patch04 -p1 -b .ssse3
-%patch05 -p1 -b .msr
-%patch06 -p1 -b .user-testwarnings
-%patch07 -p1 -b .bootpatch
-%patch50 -p1 -b .qemu-x86_64-gcc4
+%patch01 -p1 -b .use-qemu-kvm-as-datadir
+%if %use_kmp
+%patch02 -p0 -b .include-path-for-suse-kernel-rpms
+%endif
+%patch03 -p0 -b .qemu-kvm-x86-new-cpuidasm
+%define bios_targets bios vgabios extboot
+%define vanilla 0
+%if !%{vanilla}
+%patch04 -p1 -b .add-support-for-ssse3
+%patch05 -p1
+%patch10 -p0
+%patch11 -p0
+%patch12 -p0
+%patch13 -p0
+%patch14 -p0
+%patch15 -p0
+%patch16 -p0
+%patch17 -p0
+%patch18 -p0
%patch82 -p1
%patch83 -p0
-cd qemu
-while read patch;do
- patch -p1 --input=%_sourcedir/$patch
-done <%_sourcedir/series
-#cp %_sourcedir/bios.mac pc-bios/
-cd ..
-%define kvmcflags %(optflags="%optflags";optflags="${optflags//-fstack-protector/}";echo "${optflags//-D_FORTIFY_SOURCE=?/}")
-mkdir suse-kernel
-./configure --prefix=%{_prefix} --qemu-cc='gcc %kvmcflags' --disable-gcc-check
-# Let this directoy also use the optflags:
-sed -i 's/CFLAGS =/CFLAGS +=/' user/Makefile
-echo "CFLAGS=%kvmcflags" >> user/config.mak
+cp -a bios bios-mac
+%patch90 -p0 -b .bios-mac
+%endif
+# Upstram:
+%patch100 -p1 -b .no-efer-on-old-core
%build
-export EXTRA_CFLAGS="-DVERSION=%version"
-make libkvm user
+[ -f qemu/s390-dis.c ] && exit 2 # bnc#353836
+# KVM's qemu-real-mode emulator (used with -no-kvm) is broken with -O1 or higher,
+# glxboot hangs before showing the menu if -O0 is not enforced here wthen -no-kvm
+# is used:
+sed -i 's/-O2/-O0/' qemu/configure
+./configure --prefix=%{_prefix} --disable-gcc-check --qemu-cflags="%{optflags}"
+# Patch kvm/user Makefile to accept inital CFLAGS:
+sed -i 's/CFLAGS =/CFLAGS +=/' user/Makefile
+echo "CFLAGS=%optflags" >> user/config.mak
+# Main build:
+make libkvm user qemu %{?bios_targets} %{?jobs:-j%jobs}
+%if !%{vanilla}
+make -C bios-mac
+%endif
# kernel modules
%if %use_kmp
+mkdir suse-kernel
for flavor in %flavors_to_build; do
rm -rf suse-kernel/$flavor
cp -r kernel suse-kernel/$flavor
- make -C /usr/src/linux-obj/%_target_cpu/$flavor modules \
- M=$PWD/suse-kernel/$flavor
+ cd suse-kernel/$flavor
+ sed "s|KERNELDIR=.*|KERNELDIR=/usr/src/linux-obj/%_target_cpu/$flavor|" ../../config.mak >../config.mak
+ make
+ cd ../..
done
%endif
-make qemu
+#make
%install
# kernel modules
@@ -174,6 +192,9 @@
%endif
make DESTDIR=%{buildroot} WANT_MODULE="" install
mv qemu/qemu-doc.html qemu/qemu-kvm.html
+%if !%{vanilla}
+install -m 644 bios-mac/BIOS-bochs-latest %{buildroot}/%{_datadir}/qemu-kvm/macbios.bin
+%endif
cd %{buildroot}
rm -r .{%_bindir/qemu-img,%_datadir/{doc,qemu-kvm/{openbios-sparc32,ppc_rom.bin}}}
rm -r .{%_mandir/man1/qemu-img.1,%_includedir,%_libdir}
@@ -194,6 +215,11 @@
%_mandir/man1/qemu-kvm.1.gz
%changelog
+* Fri Feb 15 2008 bk@suse.de
+- Update to kvm-61, adds paravirtualized clock and dozens of fixes
+- Fix cpuid asm or 64-bit guest support and fix core duo support
+- Build the BIOS images from source and add ACPI entries for -M mac
+- Build qemu with -O0 to work around real-mode emulation problems
* Fri Feb 15 2008 agraf@suse.de
- Include fix to make gfxboot work on Intel
* Wed Feb 13 2008 anschneider@suse.de
++++++ acpi-tables.patch ++++++
This ACPI BIOS patch provides:
- The PCI bus definition for PIC, HPET, RTC, SMC and OSYS and SMIF
- An PBLK which provides the size of the L2 and L3 caches
- If newer hardware like ICH6 IDE is found, init it
Signed-off-by: Alex Graf - http://alex.csgraf.de
Index: bios-mac/acpi-dsdt.dsl
===================================================================
--- bios-mac/acpi-dsdt.dsl.orig
+++ bios-mac/acpi-dsdt.dsl
@@ -25,6 +25,12 @@ DefinitionBlock (
0x1 // OEM Revision
)
{
+ OperationRegion (GNVS, SystemMemory, 0x7EEDBC10, 0x0100)
+ Field (GNVS, AnyAcc, Lock, Preserve)
+ {
+ OSYS, 16,
+ SMIF, 8
+ }
Scope (\)
{
@@ -48,11 +54,84 @@ DefinitionBlock (
{
DBGL, 32,
}
+ /* PIC mode setting */
+ Name (PICF, 0x00)
+ Method (_PIC, 1, NotSerialized)
+ {
+ Store(Arg0, PICF)
+ }
}
/* PCI Bus definition */
Scope(\_SB) {
+ OperationRegion (XXX, SystemIO, 0x300, 0x01)
+ Method (_INI, 0, NotSerialized)
+ {
+ Store (0x1, XXX)
+ If (CondRefOf (_OSI, Local0))
+ {
+ If (_OSI ("Darwin"))
+ {
+ Store (0x2710, OSYS)
+ }
+ }
+ Store (0x35, SMIF)
+ }
+ Device (HPET)
+ {
+ Name (_HID, EisaId ("PNP0103"))
+ Name (_CID, 0x010CD041)
+ Name (BUF0, ResourceTemplate ()
+ {
+ IRQNoFlags ()
+ {0}
+ IRQNoFlags ()
+ {8}
+ Memory32Fixed (ReadOnly,
+ 0xFED00000, // Address Base
+ 0x00000400, // Address Length
+ _Y16)
+ })
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0F)
+ }
+ Method (_CRS, 0, Serialized)
+ {
+ Return (BUF0)
+ }
+ }
+ Device (SMC)
+ {
+ Name (_HID, EisaId ("APP0001"))
+ Name (_CID, "smc-napa")
+ Name (_STA, 0x0B)
+ Name (_CRS, ResourceTemplate ()
+ {
+ IO (Decode16,
+ 0x0300, // Range Minimum
+ 0x0300, // Range Maximum
+ 0x01, // Alignment
+ 0x20, // Length
+ )
+ IRQNoFlags ()
+ {6}
+ })
+ }
+ Device (RTC)
+ {
+ Name (_HID, EisaId ("PNP0B00"))
+ Name (_CRS, ResourceTemplate ()
+ {
+ IO (Decode16,
+ 0x0070, // Range Minimum
+ 0x0070, // Range Maximum
+ 0x01, // Alignment
+ 0x08, // Length
+ )
+ })
+ }
Device(PCI0) {
Name (_HID, EisaId ("PNP0A03"))
Name (_ADR, 0x00)
@@ -312,6 +391,7 @@ DefinitionBlock (
}
}
+/* Qemu does not emulate COM2 (Mac OS X finds it in ACPI and fails):
Device (COM2)
{
Name (_HID, EisaId ("PNP0501"))
@@ -339,6 +419,7 @@ DefinitionBlock (
Return (BUF0)
}
}
+*/
}
/* PIIX4 PM */
Index: bios-mac/rombios32.c
===================================================================
--- bios-mac/rombios32.c.orig
+++ bios-mac/rombios32.c
@@ -659,7 +659,9 @@ static void pci_bios_init_bridges(PCIDev
vendor_id = pci_config_readw(d, PCI_VENDOR_ID);
device_id = pci_config_readw(d, PCI_DEVICE_ID);
- if (vendor_id == 0x8086 && device_id == 0x7000) {
+ if (vendor_id == 0x8086 && (device_id == 0x7000 ||
+ device_id == 0x27a0 ||
+ device_id == 0x27b9)) {
int i, irq;
uint8_t elcr[2];
@@ -739,7 +741,8 @@ static void pci_bios_init_device(PCIDevi
d->bus, d->devfn, vendor_id, device_id);
switch(class) {
case 0x0101:
- if (vendor_id == 0x8086 && device_id == 0x7010) {
+ if (vendor_id == 0x8086 && (device_id == 0x7010 ||
+ device_id == 0x269e)) {
/* PIIX3 IDE */
pci_config_writew(d, 0x40, 0x8000); // enable IDE0
pci_config_writew(d, 0x42, 0x8000); // enable IDE1
@@ -1498,6 +1501,13 @@ void acpi_bios_init(void)
acpi_build_table_header((struct acpi_table_header *)madt,
"APIC", madt_size, 1);
}
+ /* PBLK (CPU information structure) */
+ {
+ uint32_t *pblk = (void*) (0x410);
+ *pblk = 0;
+ ((char*)pblk)[4] = 64; /* size of the Level 2 cache */
+ ((char*)pblk)[5] = 0; /* size of the Level 3 cache */
+ }
}
/* SMBIOS entry point -- must be written to a 16-bit aligned address
++++++ kvm-60.tar.bz2 -> kvm-61.tar.bz2 ++++++
++++ 76152 lines of diff (skipped)
++++++ kvm-cpuid.patch ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:14.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:14.000000000 +0100
@@ -1,8 +1,8 @@
-diff --git a/kernel/x86.c b/kernel/x86.c
-index b55c177..73312e9 100644
---- a/kernel/x86.c
-+++ b/kernel/x86.c
-@@ -783,7 +783,7 @@ static int kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu *vcpu,
+Index: kvm-61/kernel/x86.c
+===================================================================
+--- kvm-61.orig/kernel/x86.c
++++ kvm-61/kernel/x86.c
+@@ -911,7 +911,7 @@ static int kvm_vcpu_ioctl_set_cpuid(stru
struct kvm_cpuid *cpuid,
struct kvm_cpuid_entry __user *entries)
{
@@ -11,7 +11,7 @@
struct kvm_cpuid_entry *cpuid_entries;
r = -E2BIG;
-@@ -803,8 +803,17 @@ static int kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu *vcpu,
+@@ -931,8 +931,17 @@ static int kvm_vcpu_ioctl_set_cpuid(stru
vcpu->arch.cpuid_entries[i].ebx = cpuid_entries[i].ebx;
vcpu->arch.cpuid_entries[i].ecx = cpuid_entries[i].ecx;
vcpu->arch.cpuid_entries[i].edx = cpuid_entries[i].edx;
@@ -31,11 +31,11 @@
vcpu->arch.cpuid_entries[i].padding[0] = 0;
vcpu->arch.cpuid_entries[i].padding[1] = 0;
vcpu->arch.cpuid_entries[i].padding[2] = 0;
-diff --git a/qemu/qemu-kvm-x86.c b/qemu/qemu-kvm-x86.c
-index d86fec3..8e5d754 100644
---- a/qemu/qemu-kvm-x86.c
-+++ b/qemu/qemu-kvm-x86.c
-@@ -461,10 +461,11 @@ static void host_cpuid(uint32_t function, uint32_t *eax, uint32_t *ebx,
+Index: kvm-61/qemu/qemu-kvm-x86.c
+===================================================================
+--- kvm-61.orig/qemu/qemu-kvm-x86.c
++++ kvm-61/qemu/qemu-kvm-x86.c
+@@ -468,10 +468,11 @@ static void host_cpuid(uint32_t function
}
@@ -48,16 +48,16 @@
qemu_kvm_cpuid_on_env(env);
e->function = function;
e->eax = env->regs[R_EAX];
-@@ -515,7 +516,7 @@ int kvm_arch_qemu_init_env(CPUState *cenv)
+@@ -522,7 +523,7 @@ int kvm_arch_qemu_init_env(CPUState *cen
#endif
int cpuid_nent = 0;
CPUState copy;
- uint32_t i, limit;
+ uint32_t i, j, limit;
-
- copy = *cenv;
-
-@@ -540,16 +541,27 @@ int kvm_arch_qemu_init_env(CPUState *cenv)
+ int has_clocksource = 0;
+ #ifdef KVM_CAP_CLOCKSOURCE
+ has_clocksource = kvm_check_extension(kvm_context, KVM_CAP_CLOCKSOURCE);
+@@ -551,15 +552,26 @@ int kvm_arch_qemu_init_env(CPUState *cen
qemu_kvm_cpuid_on_env(©);
limit = copy.regs[R_EAX];
@@ -87,4 +87,3 @@
kvm_setup_cpuid(kvm_context, cenv->cpu_index, cpuid_nent, cpuid_ent);
return 0;
- }
++++++ kvm-gfxboot.patch ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:14.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:15.000000000 +0100
@@ -1,7 +1,8 @@
-diff -ur kernel/include/asm-x86/kvm_host.h kernel.patched/include/asm-x86/kvm_host.h
---- kernel/include/asm-x86/kvm_host.h 2008-02-15 07:59:28.000000000 +0100
-+++ kernel.patched/include/asm-x86/kvm_host.h 2008-02-15 07:42:41.000000000 +0100
-@@ -195,6 +195,7 @@
+Index: kernel/include/asm-x86/kvm_host.h
+===================================================================
+--- kernel/include/asm-x86/kvm_host.h.orig
++++ kernel/include/asm-x86/kvm_host.h
+@@ -195,6 +195,7 @@ struct kvm_vcpu_arch {
unsigned long regs[NR_VCPU_REGS]; /* for rsp: vcpu_load_rsp_rip() */
unsigned long rip; /* needs vcpu_load_rsp_rip() */
@@ -9,10 +10,11 @@
unsigned long cr0;
unsigned long cr2;
unsigned long cr3;
-diff -ur kernel/vmx.c kernel.patched/vmx.c
---- kernel/vmx.c 2008-02-15 07:59:28.000000000 +0100
-+++ kernel.patched/vmx.c 2008-02-15 07:51:27.000000000 +0100
-@@ -1112,6 +1112,8 @@
+Index: kernel/vmx.c
+===================================================================
+--- kernel/vmx.c.orig
++++ kernel/vmx.c
+@@ -1153,6 +1153,8 @@ static void fix_pmode_dataseg(int seg, s
static void enter_pmode(struct kvm_vcpu *vcpu)
{
unsigned long flags;
@@ -21,7 +23,7 @@
vcpu->arch.rmode.active = 0;
-@@ -1134,12 +1136,39 @@
+@@ -1175,12 +1177,39 @@ static void enter_pmode(struct kvm_vcpu
fix_pmode_dataseg(VCPU_SREG_GS, &vcpu->arch.rmode.gs);
fix_pmode_dataseg(VCPU_SREG_FS, &vcpu->arch.rmode.fs);
@@ -61,10 +63,11 @@
}
static gva_t rmode_tss_base(struct kvm *kvm)
-diff -ur kernel/x86.c kernel.patched/x86.c
---- kernel/x86.c 2008-02-15 07:59:28.000000000 +0100
-+++ kernel.patched/x86.c 2008-02-14 16:47:27.000000000 +0100
-@@ -1886,13 +1886,14 @@
+Index: kernel/x86.c
+===================================================================
+--- kernel/x86.c.orig
++++ kernel/x86.c
+@@ -2014,13 +2014,14 @@ int emulate_instruction(struct kvm_vcpu
r = x86_decode_insn(&vcpu->arch.emulate_ctxt, &emulate_ops);
@@ -82,19 +85,20 @@
return EMULATE_FAIL;
++vcpu->stat.insn_emulation;
-diff -ur kernel/x86_emulate.c kernel.patched/x86_emulate.c
---- kernel/x86_emulate.c 2008-02-15 07:59:28.000000000 +0100
-+++ kernel.patched/x86_emulate.c 2008-02-15 07:53:39.000000000 +0100
-@@ -174,7 +175,7 @@
+Index: kernel/x86_emulate.c
+===================================================================
+--- kernel/x86_emulate.c.orig
++++ kernel/x86_emulate.c
+@@ -181,7 +181,7 @@ static u16 opcode_table[256] = {
static u16 twobyte_table[256] = {
/* 0x00 - 0x0F */
- 0, SrcMem | ModRM | DstReg, 0, 0, 0, 0, ImplicitOps, 0,
+ 0, Group | GroupDual | Group7, 0, 0, 0, 0, ImplicitOps, 0,
- ImplicitOps, ImplicitOps, 0, 0, 0, ImplicitOps | ModRM, 0, 0,
+ ImplicitOps, ImplicitOps, 0, 0, ImplicitOps, ImplicitOps | ModRM, 0, 0,
/* 0x10 - 0x1F */
0, 0, 0, 0, 0, 0, 0, 0, ImplicitOps | ModRM, 0, 0, 0, 0, 0, 0, 0,
/* 0x20 - 0x2F */
-@@ -1744,6 +1745,16 @@
+@@ -1768,6 +1768,16 @@ twobyte_insn:
case 0x18: /* Grp16 (prefetch/nop) */
c->dst.type = OP_NONE;
break;
++++++ kvm-perf.patch ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:15.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:15.000000000 +0100
@@ -1,27 +1,18 @@
-Index: kernel/x86.c
+Index: kvm-61/kernel/x86.c
===================================================================
---- kvm-59/kernel.orig/x86.c
-+++ kvm-59/kernel/x86.c
-@@ -412,7 +412,7 @@ static u32 msrs_to_save[] = {
- #ifdef CONFIG_X86_64
+--- kvm-61.orig/kernel/x86.c
++++ kvm-61/kernel/x86.c
+@@ -426,6 +426,7 @@ static u32 msrs_to_save[] = {
MSR_CSTAR, MSR_KERNEL_GS_BASE, MSR_SYSCALL_MASK, MSR_LSTAR,
#endif
-- MSR_IA32_TIME_STAMP_COUNTER,
-+ MSR_IA32_TIME_STAMP_COUNTER, MSR_IA32_PERF_STATUS,
+ MSR_IA32_TIME_STAMP_COUNTER, MSR_KVM_SYSTEM_TIME, MSR_KVM_WALL_CLOCK,
++ MSR_IA32_PERF_STATUS,
};
static unsigned num_msrs_to_save;
-@@ -532,7 +532,6 @@ int kvm_get_msr_common(struct kvm_vcpu *
- case MSR_IA32_MC0_MISC+12:
- case MSR_IA32_MC0_MISC+16:
- case MSR_IA32_UCODE_REV:
-- case MSR_IA32_PERF_STATUS:
- case MSR_IA32_EBL_CR_POWERON:
- /* MTRR registers */
- case 0xfe:
-@@ -548,6 +547,12 @@ int kvm_get_msr_common(struct kvm_vcpu *
+@@ -576,6 +577,12 @@ int kvm_set_msr_common(struct kvm_vcpu *
case MSR_IA32_MISC_ENABLE:
- data = vcpu->arch.ia32_misc_enable_msr;
+ vcpu->arch.ia32_misc_enable_msr = data;
break;
+ case MSR_IA32_PERF_STATUS:
+ /* These are fake values, necessary to get
@@ -29,6 +20,14 @@
+ data = 1000ULL /* tsc_increment_by_tick */
+ | (((uint64_t)(4ULL /* granularity */ & 0x7)) << 40);
+ break;
- #ifdef CONFIG_X86_64
- case MSR_EFER:
- data = vcpu->arch.shadow_efer;
+ case MSR_KVM_WALL_CLOCK:
+ vcpu->kvm->arch.wall_clock = data;
+ kvm_write_wall_clock(vcpu->kvm, data);
+@@ -636,7 +643,6 @@ int kvm_get_msr_common(struct kvm_vcpu *
+ case MSR_IA32_MC0_MISC+12:
+ case MSR_IA32_MC0_MISC+16:
+ case MSR_IA32_UCODE_REV:
+- case MSR_IA32_PERF_STATUS:
+ case MSR_IA32_EBL_CR_POWERON:
+ /* MTRR registers */
+ case 0xfe:
++++++ kvm-susekernel.patch ++++++
--- kernel/Makefile
+++ kernel/Makefile
@@ -27,7 +27,7 @@
all::
# include header priority 1) $LINUX 2) $KERNELDIR 3) include-compat
$(MAKE) -C $(KERNELDIR) M=`pwd` \
- LINUXINCLUDE="-I`pwd`/include -Iinclude -I`pwd`/include-compat \
+ LINUXINCLUDE="-I`pwd`/include -Iinclude -Iinclude2 -I/usr/src/linux/include -I`pwd`/include-compat \
-include include/linux/autoconf.h" \
"$$@"
++++++ no-efer-on-old-core.patch ++++++
diff --git a/kernel/vmx.c b/kernel/vmx.c
index e75b2f5..a575e54 100644
--- a/kernel/vmx.c
+++ b/kernel/vmx.c
@@ -1342,6 +1342,8 @@ static void vmx_set_efer(struct kvm_vcpu *vcpu, u64 efer)
struct kvm_msr_entry *msr = find_msr_entry(vmx, MSR_EFER);
vcpu->arch.shadow_efer = efer;
+ if (!msr)
+ return;
if (efer & EFER_LMA) {
vmcs_write32(VM_ENTRY_CONTROLS,
vmcs_read32(VM_ENTRY_CONTROLS) |
++++++ qemu-applesmc.patch ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:15.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:15.000000000 +0100
@@ -1,13 +1,13 @@
Index: qemu/Makefile.target
===================================================================
---- qemu.orig/Makefile.target
+--- qemu/Makefile.target.orig
+++ qemu/Makefile.target
-@@ -468,7 +468,7 @@ ifeq ($(TARGET_BASE_ARCH), i386)
- VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
- VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
- VL_OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
--VL_OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o lpc.o
-+VL_OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o lpc.o applesmc.o
+@@ -581,7 +581,7 @@ ifeq ($(TARGET_BASE_ARCH), i386)
+ OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
+ OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
+ OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
+-OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o lpc.o
++OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o lpc.o applesmc.o
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
endif
ifeq ($(TARGET_BASE_ARCH), ia64)
@@ -189,11 +189,11 @@
+
Index: qemu/hw/pc.h
===================================================================
---- qemu.orig/hw/pc.h
+--- qemu/hw/pc.h.orig
+++ qemu/hw/pc.h
-@@ -142,6 +142,10 @@ void pci_piix4_ide_init(PCIBus *bus, Blo
+@@ -156,6 +156,10 @@ void *virtio_blk_init(PCIBus *bus, uint1
- void isa_ne2000_init(int base, qemu_irq irq, NICInfo *nd);
+ void extboot_init(BlockDriverState *bs, int cmd);
+/* applesmc.c */
+void applesmc_init(void);
@@ -204,9 +204,9 @@
Index: qemu/vl.c
===================================================================
---- qemu.orig/vl.c
+--- qemu/vl.c.orig
+++ qemu/vl.c
-@@ -7974,6 +7974,7 @@ static void help(int exitcode)
+@@ -8059,6 +8059,7 @@ static void help(int exitcode)
"-std-vga simulate a standard VGA card with VESA Bochs Extensions\n"
" (default is CL-GD5446 PCI VGA)\n"
"-no-acpi disable ACPI\n"
@@ -214,17 +214,17 @@
#endif
"-no-reboot exit instead of rebooting\n"
"-loadvm file start right away with a saved state (loadvm in monitor)\n"
-@@ -8096,6 +8097,9 @@ enum {
+@@ -8182,6 +8183,9 @@ enum {
QEMU_OPTION_old_param,
QEMU_OPTION_clock,
QEMU_OPTION_startdate,
+#ifdef TARGET_I386
+ QEMU_OPTION_osk,
+#endif
+ QEMU_OPTION_translation,
QEMU_OPTION_incoming,
QEMU_OPTION_tdf,
- QEMU_OPTION_kvm_shadow_memory,
-@@ -8218,6 +8222,9 @@ const QEMUOption qemu_options[] = {
+@@ -8307,6 +8311,9 @@ const QEMUOption qemu_options[] = {
#endif
{ "clock", HAS_ARG, QEMU_OPTION_clock },
{ "startdate", HAS_ARG, QEMU_OPTION_startdate },
@@ -234,7 +234,7 @@
{ NULL },
};
-@@ -9113,6 +9120,11 @@ int main(int argc, char **argv)
+@@ -9216,6 +9223,11 @@ int main(int argc, char **argv)
}
}
break;
++++++ qemu-hpet.patch ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:15.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:15.000000000 +0100
@@ -3,11 +3,11 @@
--- qemu.orig/Makefile.target
+++ qemu/Makefile.target
@@ -468,7 +468,7 @@ ifeq ($(TARGET_BASE_ARCH), i386)
- VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
- VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
- VL_OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
--VL_OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o
-+VL_OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o
+ OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
+ OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
+ OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
+-OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o
++OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
endif
ifeq ($(TARGET_BASE_ARCH), ia64)
++++++ qemu-intelmac.patch ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:15.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:15.000000000 +0100
@@ -1,6 +1,6 @@
Index: qemu/hw/boards.h
===================================================================
---- qemu.orig/hw/boards.h
+--- qemu/hw/boards.h.orig
+++ qemu/hw/boards.h
@@ -23,6 +23,7 @@ int qemu_register_machine(QEMUMachine *m
extern QEMUMachine bareetraxfs_machine;
@@ -12,9 +12,9 @@
Index: qemu/hw/pc.c
===================================================================
---- qemu.orig/hw/pc.c
+--- qemu/hw/pc.c.orig
+++ qemu/hw/pc.c
-@@ -62,6 +62,12 @@ static PITState *pit;
+@@ -53,6 +53,12 @@ static PITState *pit;
static IOAPICState *ioapic;
static PCIDevice *i440fx_state;
@@ -27,7 +27,7 @@
static void ioport80_write(void *opaque, uint32_t addr, uint32_t data)
{
}
-@@ -727,7 +733,7 @@ static void pc_init1(ram_addr_t ram_size
+@@ -742,7 +748,7 @@ static void pc_init1(ram_addr_t ram_size
const char *boot_device, DisplayState *ds,
const char *kernel_filename, const char *kernel_cmdline,
const char *initrd_filename,
@@ -36,7 +36,7 @@
{
char buf[1024];
int ret, linux_boot, i;
-@@ -755,11 +761,15 @@ static void pc_init1(ram_addr_t ram_size
+@@ -768,11 +774,15 @@ static void pc_init1(ram_addr_t ram_size
/* init CPUs */
if (cpu_model == NULL) {
@@ -54,7 +54,7 @@
}
for(i = 0; i < smp_cpus; i++) {
-@@ -776,7 +786,7 @@ static void pc_init1(ram_addr_t ram_size
+@@ -789,7 +799,7 @@ static void pc_init1(ram_addr_t ram_size
}
register_savevm("cpu", i, 4, cpu_save, cpu_load, env);
qemu_register_reset(main_cpu_reset, env);
@@ -63,7 +63,7 @@
apic_init(env);
}
vmport_init(env);
-@@ -822,8 +822,16 @@
+@@ -817,8 +827,16 @@ static void pc_init1(ram_addr_t ram_size
vga_ram_addr = qemu_ram_alloc(vga_ram_size);
/* BIOS load */
@@ -72,7 +72,7 @@
+ if (bios_name == NULL) {
+ switch(model) {
+ case MODEL_MAC:
-+ bios_name = "bios.mac";
++ bios_name = "bios-mac.bin";
+ break;
+ default:
+ bios_name = BIOS_FILENAME;
@@ -82,7 +82,7 @@
snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name);
bios_size = get_image_size(buf);
if (bios_size <= 0 ||
-@@ -980,7 +990,7 @@ static void pc_init1(ram_addr_t ram_size
+@@ -923,7 +941,7 @@ static void pc_init1(ram_addr_t ram_size
i8259 = i8259_init(cpu_irq[0]);
ferr_irq = i8259[13];
@@ -91,7 +91,7 @@
pci_bus = i440fx_init(&i440fx_state, i8259);
piix3_devfn = piix3_init(pci_bus, -1);
} else {
-@@ -993,7 +1003,7 @@ static void pc_init1(ram_addr_t ram_size
+@@ -936,7 +954,7 @@ static void pc_init1(ram_addr_t ram_size
register_ioport_write(0xf0, 1, 1, ioportF0_write, NULL);
if (cirrus_vga_enabled) {
@@ -100,14 +100,14 @@
pci_cirrus_vga_init(pci_bus,
ds, phys_ram_base + vga_ram_addr,
vga_ram_addr, vga_ram_size);
-@@ -1002,13 +1012,13 @@ static void pc_init1(ram_addr_t ram_size
+@@ -945,13 +963,13 @@ static void pc_init1(ram_addr_t ram_size
vga_ram_addr, vga_ram_size);
}
} else if (vmsvga_enabled) {
- if (pci_enabled)
+ if (model > MODEL_ISA)
- pci_vmsvga_init(pci_bus, ds, phys_ram_base + ram_size,
- ram_size, vga_ram_size);
+ pci_vmsvga_init(pci_bus, ds, phys_ram_base + vga_ram_addr,
+ vga_ram_addr, vga_ram_size);
else
fprintf(stderr, "%s: vmware_vga: no PCI bus\n", __FUNCTION__);
} else {
@@ -116,7 +116,7 @@
pci_vga_init(pci_bus, ds, phys_ram_base + vga_ram_addr,
vga_ram_addr, vga_ram_size, 0, 0);
} else {
-@@ -1022,12 +1032,18 @@ static void pc_init1(ram_addr_t ram_size
+@@ -965,12 +983,18 @@ static void pc_init1(ram_addr_t ram_size
register_ioport_read(0x92, 1, 1, ioport92_read, NULL);
register_ioport_write(0x92, 1, 1, ioport92_write, NULL);
@@ -138,7 +138,7 @@
pic_set_alt_irq_func(isa_pic, ioapic_set_irq, ioapic);
}
-@@ -1051,15 +1067,21 @@ static void pc_init1(ram_addr_t ram_size
+@@ -990,15 +1014,21 @@ static void pc_init1(ram_addr_t ram_size
for(i = 0; i < nb_nics; i++) {
nd = &nd_table[i];
if (!nd->model) {
@@ -165,7 +165,7 @@
if (strcmp(nd->model, "?") == 0)
fprintf(stderr, "qemu: Supported ISA NICs: ne2k_isa\n");
pci_nic_init(pci_bus, nd, -1);
-@@ -1086,19 +1108,25 @@ static void pc_init1(ram_addr_t ram_size
+@@ -1029,19 +1059,25 @@ static void pc_init1(ram_addr_t ram_size
hd[i] = NULL;
}
@@ -199,7 +199,7 @@
#endif
for(i = 0; i < MAX_FD; i++) {
-@@ -1112,11 +1140,11 @@ static void pc_init1(ram_addr_t ram_size
+@@ -1055,11 +1091,11 @@ static void pc_init1(ram_addr_t ram_size
cmos_init(ram_size, above_4g_mem_size, boot_device, hd, smp_cpus);
@@ -213,7 +213,7 @@
uint8_t *eeprom_buf = qemu_mallocz(8 * 256); /* XXX: make this persistent */
i2c_bus *smbus;
-@@ -1131,7 +1159,7 @@ static void pc_init1(ram_addr_t ram_size
+@@ -1074,7 +1110,7 @@ static void pc_init1(ram_addr_t ram_size
i440fx_init_memory_mappings(i440fx_state);
}
@@ -222,7 +222,7 @@
int max_bus;
int bus, unit;
void *scsi;
-@@ -1154,7 +1182,7 @@ static void pc_init1(ram_addr_t ram_size
+@@ -1093,7 +1129,7 @@ static void pc_init1(ram_addr_t ram_size
}
/* Add virtio block devices */
@@ -231,7 +231,7 @@
int index;
int unit_id = 0;
-@@ -1178,6 +1206,18 @@ static void pc_init1(ram_addr_t ram_size
+@@ -1117,6 +1153,18 @@ static void pc_init1(ram_addr_t ram_size
}
}
@@ -250,7 +250,7 @@
static void pc_init_pci(ram_addr_t ram_size, int vga_ram_size,
const char *boot_device, DisplayState *ds,
const char *kernel_filename,
-@@ -1159,7 +1199,7 @@ static void pc_init_pci(ram_addr_t ram_s
+@@ -1126,7 +1174,7 @@ static void pc_init_pci(ram_addr_t ram_s
{
pc_init1(ram_size, vga_ram_size, boot_device, ds,
kernel_filename, kernel_cmdline,
@@ -259,7 +259,7 @@
}
static void pc_init_isa(ram_addr_t ram_size, int vga_ram_size,
-@@ -1171,7 +1211,7 @@ static void pc_init_isa(ram_addr_t ram_s
+@@ -1138,7 +1186,7 @@ static void pc_init_isa(ram_addr_t ram_s
{
pc_init1(ram_size, vga_ram_size, boot_device, ds,
kernel_filename, kernel_cmdline,
@@ -268,7 +268,7 @@
}
QEMUMachine pc_machine = {
-@@ -1180,6 +1220,12 @@ QEMUMachine pc_machine = {
+@@ -1147,6 +1195,12 @@ QEMUMachine pc_machine = {
pc_init_pci,
};
@@ -283,9 +283,9 @@
"ISA-only PC",
Index: qemu/vl.c
===================================================================
---- qemu.orig/vl.c
+--- qemu/vl.c.orig
+++ qemu/vl.c
-@@ -8272,6 +8272,7 @@ static void register_machines(void)
+@@ -8361,6 +8361,7 @@ static void register_machines(void)
{
#if defined(TARGET_I386)
qemu_register_machine(&pc_machine);
++++++ qemu-kvm-x86-new-cpuidasm.patch ++++++
Subject: [PATCH] Fix host_cpuid() in qemu/qemu-kvm-x86.c
Hi,
I found that on kvm-61 the cpuid in the guest was reported incorrectly
when qemu-kvm was compiled with gcc-4.1 or 4.3.
This resulted in linux-64bit not booting, complaining that it is not
running on a 64-bit machine.
Symptom: Unexpected behaviour after the assembly snippet.
Solution: New assembly which is simpler and leaves optimizations to gcc,
resulting in much shorter and maintainable code.
Comments are welcome,
Bernhard
PS: Thanks a lot to Alex Graf for the fix.
--- qemu/qemu-kvm-x86.c
+++ qemu/qemu-kvm-x86.c
@@ -428,35 +428,7 @@ static void host_cpuid(uint32_t function
uint32_t vec[4];
vec[0] = function;
- asm volatile (
-#ifdef __x86_64__
- "sub $128, %%rsp \n\t" /* skip red zone */
- "push %0; push %%rsi \n\t"
- "push %%rax; push %%rbx; push %%rcx; push %%rdx \n\t"
- "mov 8*5(%%rsp), %%rsi \n\t"
- "mov (%%rsi), %%eax \n\t"
- "cpuid \n\t"
- "mov %%eax, (%%rsi) \n\t"
- "mov %%ebx, 4(%%rsi) \n\t"
- "mov %%ecx, 8(%%rsi) \n\t"
- "mov %%edx, 12(%%rsi) \n\t"
- "pop %%rdx; pop %%rcx; pop %%rbx; pop %%rax \n\t"
- "pop %%rsi; pop %0 \n\t"
- "add $128, %%rsp"
-#else
- "push %0; push %%esi \n\t"
- "push %%eax; push %%ebx; push %%ecx; push %%edx \n\t"
- "mov 4*5(%%esp), %%esi \n\t"
- "mov (%%esi), %%eax \n\t"
- "cpuid \n\t"
- "mov %%eax, (%%esi) \n\t"
- "mov %%ebx, 4(%%esi) \n\t"
- "mov %%ecx, 8(%%esi) \n\t"
- "mov %%edx, 12(%%esi) \n\t"
- "pop %%edx; pop %%ecx; pop %%ebx; pop %%eax \n\t"
- "pop %%esi; pop %0 \n\t"
-#endif
- : : "rm"(vec) : "memory");
+ asm volatile("cpuid" : "+a" (vec[0]), "=b" (vec[1]),"=c" (vec[2]), "=d" (vec[3]));
if (eax)
*eax = vec[0];
if (ebx)
++++++ qemu-lpc.patch ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:15.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:15.000000000 +0100
@@ -3,11 +3,11 @@
--- qemu.orig/Makefile.target
+++ qemu/Makefile.target
@@ -468,7 +468,7 @@ ifeq ($(TARGET_BASE_ARCH), i386)
- VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
- VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
- VL_OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
--VL_OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o
-+VL_OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o lpc.o
+ OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
+ OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
+ OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
+-OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o
++OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o extboot.o hpet.o lpc.o
CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
endif
ifeq ($(TARGET_BASE_ARCH), ia64)
++++++ qemu-rtl8139.patch ++++++
--- /var/tmp/diff_new_pack.V19072/_old 2008-02-21 02:04:15.000000000 +0100
+++ /var/tmp/diff_new_pack.V19072/_new 2008-02-21 02:04:15.000000000 +0100
@@ -1,7 +1,7 @@
-Index: qemu-snapshot-2008-01-08_05/hw/rtl8139.c
+Index: qemu/hw/rtl8139.c
===================================================================
---- qemu-snapshot-2008-01-08_05.orig/hw/rtl8139.c
-+++ qemu-snapshot-2008-01-08_05/hw/rtl8139.c
+--- qemu.orig/hw/rtl8139.c
++++ qemu/hw/rtl8139.c
@@ -422,6 +422,9 @@ static void RTL8139TallyCounters_load(QE
/* Saves values of tally counters to VM state file */
static void RTL8139TallyCounters_save(QEMUFile* f, RTL8139TallyCounters *tally_counters);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org