From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: Aros (icaros) system fails to reboot in kvm Date: Wed, 28 Mar 2012 19:02:40 +0200 Message-ID: <4F734430.8090409@redhat.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080009090500090809050800" Cc: kvm@vger.kernel.org, Stefan Hajnoczi To: Michal Suchanek Return-path: Received: from mx1.redhat.com ([209.132.183.28]:16948 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756119Ab2C1RCo (ORCPT ); Wed, 28 Mar 2012 13:02:44 -0400 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------080009090500090809050800 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 03/27/2012 04:55 PM, Michal Suchanek wrote: > Hello, > > I downloaded a live CD of icaros here: > > http://www.icarosdesktop.com/dl.htm > http://www.icarosdesktop.com/icarosfiles/IcarosLive_1_4_0.7z.exe > http://www.icarosdesktop.com/icarosfiles/IcarosLight_1_4_0.7z > > I run kvm on > > ii linux-image-3.2.0-1-amd64 3.2.6-1 Linux > 3.2 for 64-bit PCs > ii qemu-kvm 1.0+dfsg-9 Full > virtualization on x86 hardware > Linux OptiPlex960 3.2.0-1-amd64 #1 SMP Wed Feb 1 08:56:58 UTC 2012 > x86_64 GNU/Linux > Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz > > To reproduce: > > 1) download one of the archives > > 2) extract the .iso image > > 3) boot the CD > > 4) right click in the top left corner, select shut down > > 5) select restart machine > > does not happen wiht -no-kvm > > $ kvm -m 2048 -cdrom Live/icaros-pc-i386.iso > KVM internal error. Suberror: 1 > emulation failure > EAX=00000000 EBX=00000361 ECX=00000000 EDX=000003a2 > ESI=02f2e980 EDI=fc0dd830 EBP=010c9d34 ESP=010c9cf0 > EIP=7fe84616 EFL=00013246 [---Z-P-] CPL=3 II=0 A20=1 SMM=0 HLT=0 > ES =0023 00000000 ffffffff 00c0f300 DPL=3 DS [-WA] > CS =001b 00000000 ffffffff 00c0fb00 DPL=3 CS32 [-RA] > SS =0023 00000000 ffffffff 00c0f300 DPL=3 DS [-WA] > DS =0023 00000000 ffffffff 00c0f300 DPL=3 DS [-WA] > FS =0000 00000000 ffffffff 00000000 > GS =0000 00000000 ffffffff 00000000 > LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT > TR =0030 00000040 00000067 00008b00 DPL=0 TSS32-busy > GDT= 00000900 0000003f > IDT= 00000100 000007ff > CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000600 > DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 > DR3=0000000000000000 > DR6=00000000ffff0ff0 DR7=0000000000000400 > EFER=0000000000000000 > Code=86 a0 00 00 00 0f 28 06 0f 28 4e 10 0f 28 56 20 0f 28 5e 30 <0f> > 2b 07 0f 2b 4f 10 0f 2b 57 20 0f 2b 5f 30 83 c6 40 83 c7 40 83 eb 40 > 7d d0 e9 b4 00 00 > > 0: 0f 2b 07 movntps %xmm0,(%edi) 3: 0f 2b 4f 10 movntps %xmm1,0x10(%edi) 7: 0f 2b 57 20 movntps %xmm2,0x20(%edi) b: 0f 2b 5f 30 movntps %xmm3,0x30(%edi) Please try the attached patch. Stefan, this also doesn't check for alignment. Do you have something in the works? -- error compiling committee.c: too many arguments to function --------------080009090500090809050800 Content-Type: text/x-patch; name="0001-KVM-x86-emulator-implement-movntps.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-KVM-x86-emulator-implement-movntps.patch" >>From 49e5d97bd85e5097c5846e239201cc71a77e32bc Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Wed, 28 Mar 2012 18:59:48 +0200 Subject: [PATCH] KVM: x86 emulator: implement movntps Used to write to framebuffers (by at least Icaros). Note: lacks #GP on unaligned writes. Signed-off-by: Avi Kivity --- arch/x86/kvm/emulate.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 8375622..11c700a 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -3418,6 +3418,10 @@ static int check_perm_out(struct x86_emulate_ctxt *ctxt) N, N, N, I(Sse, em_movdqu), }; +static struct gprefix pfx_vmovntpx = { + I(0, em_movdqu), N, N, N, +}; + static struct opcode opcode_table[256] = { /* 0x00 - 0x07 */ I6ALU(Lock, em_add), @@ -3549,7 +3553,8 @@ static int check_perm_out(struct x86_emulate_ctxt *ctxt) IIP(ModRM | SrcMem | Priv | Op3264, em_cr_write, cr_write, check_cr_write), IIP(ModRM | SrcMem | Priv | Op3264, em_dr_write, dr_write, check_dr_write), N, N, N, N, - N, N, N, N, N, N, N, N, + N, N, N, GP(ModRM | DstMem | SrcReg | Sse | Mov, &pfx_vmovntpx), + N, N, N, N, /* 0x30 - 0x3F */ II(ImplicitOps | Priv, em_wrmsr, wrmsr), IIP(ImplicitOps, em_rdtsc, rdtsc, check_rdtsc), -- 1.7.9 --------------080009090500090809050800--