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
>From 49e5d97bd85e5097c5846e239201cc71a77e32bc Mon Sep 17 00:00:00 2001 From: Avi Kivity <avi@xxxxxxxxxx> 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 <avi@xxxxxxxxxx> --- 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