Re: [RFT] kvm with Windows optimization

Gildas
2007-10-26T10:29:46Z

2007/10/26, Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>:
> Gildas wrote:
> > 2007/10/25, Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>:
> >
> >> This is a request for testing of an experimental kvm feature that
> >> dramatically accelerates some Windows releases (when running with the
> >> ACPI HAL, and especially with guest SMP). The feature detects accesses
> >> by the guest to the Task Priority Register (TPR) and patches them at
> >> runtime to a kvm-friendly code snipped that is provided by the BIOS.
> >>
> >> The upshot of all that is that
> >> http://kvm.qumranet.com/kvmwiki/Windows_ACPI_Workaround is no longer
> >> required, and Windows SMP no longer runs like a dog; it's quite snappy
> >> from my very limited testing.
> >>
> >> Please download the test release from
> >> http://people.qumranet.com/avi/tpr-opt-1.tar.gz and give it a spin.
> >> Once it has received some exposure, I'll merge it into mainline.
> >>
> >> Credit for the original idea is due to Ben Serebrin.
> >>
> >> --
> >> error compiling committee.c: too many arguments to function
> >>
> >
> > Hi Avi,
> >
> > On an intel machine running 64 bits ubuntu with kernel 2.6.20, using
> > the archive downloaded this morning at 10 o'clock GMT with the
> > following md5sum:
> >
> >
>
> Right, installs seem not to like this release, but running an existing
> VM seems to work fine (mostly).

A windows 2000 sp4 installation crashes as well (this time with
WORKER_THREAD_RETURNED_A_BAD_IRQL). This was reproduceable. I've
restarted the installation with -no-kvm-irq and it seems to work fine
so long (it didn't crash where it crashed previously).

I've restarted windows xp install and this time I had the following:
[86852.991254] ------------[ cut here ]------------
[86852.991260] kernel BUG at /home/gl03/sources/tpr-opt-1/kernel/mmu.c:308!
[86852.991262] invalid opcode: 0000 [1] SMP
[86852.991265] CPU 1
[86852.991267] Modules linked in: kvm_intel kvm binfmt_misc rfcomm
l2cap bluetooth ppdev i915 drm acpi_cpufreq cpufreq_ondemand
cpufreq_powersave cpufreq_stats freq_table cpufreq_userspace
cpufreq_conservative dev_acpi sony_acpi tc1100_wmi pcc_acpi sbs i2c_ec
i2c_core battery ac video asus_acpi button backlight dock container
ipv6 nls_utf8 ntfs sbp2 lp fuse joydev pcmcia snd_hda_intel
snd_hda_codec snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy
snd_seq_oss snd_seq_midi snd_rawmidi yenta_socket rsrc_nonstatic
pcmcia_core iTCO_wdt iTCO_vendor_support af_packet snd_seq_midi_event
snd_seq ipw3945 tifm_7xx1 parport_pc parport sdhci snd_timer
snd_seq_device pcspkr tpm_infineon tpm tpm_bios serio_raw ieee80211
ieee80211_crypt mmc_core intel_agp psmouse tifm_core snd soundcore
snd_page_alloc shpchp pci_hotplug tsdev evdev sr_mod cdrom generic
ext3 jbd mbcache sg sd_mod ohci1394 ieee1394 ata_piix tg3 ahci
ehci_hcd uhci_hcd usbcore ata_generic libata scsi_mod thermal
processor fan dm_mod fbcon tileblit font bitblit softcursor vesafb
cfbcopyarea cfbimgblt cfbfillrect capability commoncap
[86852.991337] Pid: 12492, comm: qemu-system-x86 Not tainted
2.6.20-16-generic #2
[86852.991340] RIP: 0010:[<ffffffff883aa877>] [<ffffffff883aa877>]
:kvm:mmu_memory_cache_alloc+0x7/0x30
[86852.991354] RSP: 0018:ffff810024b039c8 EFLAGS: 00010246
[86852.991356] RAX: 0000000000000000 RBX: ffffc2000082a868 RCX: ffff810033c54080
[86852.991359] RDX: ffff810033c54088 RSI: 0000000000000028 RDI: ffff810025232820
[86852.991361] RBP: ffff810034771750 R08: 0000000000000000 R09: 0000000000000004
[86852.991363] R10: 00000000145cd963 R11: 0000000000000000 R12: ffff810025232440
[86852.991366] R13: 0000000000000000 R14: ffff810034771750 R15: ffff810025232440
[86852.991369] FS: 00002acc64f8a5b0(0000) GS:ffff81007dbd8ec0(0000)
knlGS:0000000000000000
[86852.991372] CS: 0010 DS: 002b ES: 002b CR0: 000000008005003b
[86852.991374] CR2: 0000000001001ad8 CR3: 0000000008b86000 CR4: 00000000000026e0
[86852.991377] Process qemu-system-x86 (pid: 12492, threadinfo
ffff810024b02000, task ffff8100713c9820)
[86852.991379] Stack: ffffc2000082a868 ffffffff883aa95c
000000002a6c6043 0000000000000002
[86852.991384] 000000002a6c6000 ffffffff883ab2ab 0000000000000001
00000000000145cd
[86852.991388] 0000000000000000 0000000000000000 00000000145cd000
00000000145cd000
[86852.991391] Call Trace:
[86852.991402] [<ffffffff883aa95c>] :kvm:rmap_add+0xac/0x130
[86852.991414] [<ffffffff883ab2ab>] :kvm:paging32_set_pte_common+0x1fb/0x270
[86852.991434] [<ffffffff883ab369>] :kvm:paging32_set_pte+0x49/0x50
[86852.991448] [<ffffffff883ab8b3>] :kvm:kvm_mmu_pte_write+0x273/0x380
[86852.991472] [<ffffffff883a5685>]
:kvm:emulator_write_emulated_onepage+0x85/0x100
[86852.991485] [<ffffffff883b022a>] :kvm:x86_emulate_insn+0x2b9a/0x4200
[86852.991497] [<ffffffff883c24f7>] :kvm_intel:vmcs_readl+0x17/0x20
[86852.991512] [<ffffffff883a5c74>] :kvm:emulate_instruction+0x174/0x2d0
[86852.991524] [<ffffffff883c501f>] :kvm_intel:handle_exception+0x18f/0x290
[86852.991532] [<ffffffff883b2739>] :kvm:apic_update_ppr+0x29/0x60
[86852.991546] [<ffffffff883a6fb1>] :kvm:kvm_vcpu_ioctl+0x411/0x1120
[86852.991553] [<ffffffff8028b6e8>] __activate_task+0x38/0x60
[86852.991560] [<ffffffff80248dac>] try_to_wake_up+0x3dc/0x400
[86852.991577] [<ffffffff8028b454>] __wake_up_common+0x44/0x80
[86852.991587] [<ffffffff8022f7a3>] __wake_up+0x43/0x70
[86852.991598] [<ffffffff802dd1e9>] core_sys_select+0x289/0x2e0
[86852.991620] [<ffffffff8029a058>] __dequeue_signal+0x168/0x1e0
[86852.991629] [<ffffffff80270a74>] do_gettimeofday+0x44/0x90
[86852.991637] [<ffffffff8025de20>] getnstimeofday+0x10/0x30
[86852.991648] [<ffffffff8024362f>] do_ioctl+0x2f/0xa0
[86852.991654] [<ffffffff80231592>] vfs_ioctl+0x2a2/0x2e0
[86852.991664] [<ffffffff8024e7dc>] sys_ioctl+0x6c/0xb0
[86852.991673] [<ffffffff8026111e>] system_call+0x7e/0x83
[86852.991688]
[86852.991690]
[86852.991690] Code: 0f 0b 0f 1f 80 00 00 00 00 eb fe 83 e8 01 48 89
f2 31 f6 89
[86852.991700] RIP [<ffffffff883aa877>] :kvm:mmu_memory_cache_alloc+0x7/0x30
[86852.991709] RSP <ffff810024b039c8>
[86852.991711] <6>kvm: guest NX capability removed
[86883.412300] kvm: guest NX capability removed

process is in defunct/zombi mode now and can't be killed.

Regards,
Gildas