Subject: [PATCH] Fix gfxboot under VT From: Anthony Liguori This patch lets gfxboot-3.3.38 work under KVM. The fix was suggested by Avi Kivity. Signed-off-by: Anthony Liguori diff -ur a/bincode.asm b/bincode.asm --- a/bincode.asm 2007-07-24 05:49:46.000000000 -0500 +++ b/bincode.asm 2007-09-29 22:14:35.000000000 -0500 @@ -15519,6 +15519,7 @@ switch_to_pm: pushf push eax + push ebx mov eax,cr0 @@ -15534,6 +15535,11 @@ mov word [cs:rm_seg.fs],fs mov word [cs:rm_seg.gs],gs + ;; ss:rpl must equal cs:rpl in PM for VT. we can't rely on ss + ;; maintaining it's value after the transition so we have to + ;; pass it in a GP register + mov ebx,ss + or al,1 o32 lgdt [cs:pm_gdt] o32 lidt [cs:pm_idt] @@ -15546,7 +15552,7 @@ mov ax,pm_seg.prog_d16 mov ds,ax - mov eax,ss + mov eax,ebx and esp,0ffffh shl eax,4 add esp,eax @@ -15557,6 +15563,7 @@ mov fs,ax mov gs,ax + pop ebx pop eax popfw o16 ret