On Wed, Jul 15, 2009 at 8:08 PM, Sheng Yang<sheng@xxxxxxxxxxxxxxx> wrote: > On Thursday 16 July 2009 10:58:53 Jordan Justen wrote: >> On Wed, Jul 15, 2009 at 6:34 PM, Sheng Yang <sheng@xxxxxxxxxxxxxxx> wrote: >> > On Thursday 16 July 2009 08:12:15 Jordan Justen wrote: >> > > >> > > Motivation for making these changes: >> > > >> > > A larger firmware image size allows alternative BIOS images to be >> > > used with KVM. Some possible uses are to enable UEFI firmware >> > > or coreboot firmware. Additionally, an alternative firmware might >> > > include a linux kernel+initrd payload, which would require several >> > > megabytes. >> > >> > I think if you update bios to UEFI, the E820 should be represented by >> > UEFI rather than current bios? >> >> Yeah, that is true. But, that firmware would be separate from the qemu-kvm >> tree at this time, right? > > Yes, so currently from QEmu-kvm side, I think it may not necessary to update, > for the patches haven't followed up yet... Of the two patches (1. kvm kernel module, 2. qemu-kvm), I think it is best if the qemu-kvm change happens first. Since the qemu-kvm patch will cause the qemu-kvm bios to add more memory regions as reserved, the new change to qemu-kvm will be compatible with both the old and new versions of the kvm kernel module. >> But, in this patch it is critical that the 'VMX TSS Pages' are moved within >> qemu-kvm so the conflict with the larger bios.bin is removed. > > Well, for we are using a small size bios now, and larger bios would be totally > another story, I don't think push the modification now to the upstream make > sense. These modification can go with further patches with UEFI at any time in > the future. I am working on this UEFI firmware project which currently supports QEMU: https://edk2.tianocore.org/OVMF.html I would like it to also support KVM, and I found that it can already boot the UEFI shell on KVM if these two patches are applied. If these patches make some progress, I will update OVMF to reserve the appropriate memory regions. > -- > regards > Yang, Sheng > >> >> > -- >> > regards >> > Yang, Sheng >> > >> > > Signed-off-by: Jordan Justen <jordan.l.justen@xxxxxxxxx> >> > > --- >> > > kvm/bios/rombios.c | 8 ++++---- >> > > kvm/include/x86/asm/vmx.h | 2 +- >> > > qemu-kvm-x86.c | 2 +- >> > > 3 files changed, 6 insertions(+), 6 deletions(-) >> > > >> > > diff --git a/kvm/bios/rombios.c b/kvm/bios/rombios.c >> > > index 6186199..2d0c153 100644 >> > > --- a/kvm/bios/rombios.c >> > > +++ b/kvm/bios/rombios.c >> > > @@ -4596,14 +4596,14 @@ ASM_END >> > > case 5: >> > > /* 4 pages before the bios, 3 pages for vmx >> > > tss pages, * the other page for EPT real mode pagetable */ >> > > - set_e820_range(ES, regs.u.r16.di, 0xfffbc000L, >> > > - 0xfffc0000L, 0, 0, 2); >> > > + set_e820_range(ES, regs.u.r16.di, 0xfeffc000L, >> > > + 0xff000000L, 0, 0, 2); >> > > regs.u.r32.ebx = 6; >> > > break; >> > > case 6: >> > > - /* 256KB BIOS area at the end of 4 GB */ >> > > + /* 16MB BIOS area at the end of 4 GB */ >> > > set_e820_range(ES, regs.u.r16.di, >> > > - 0xfffc0000L, 0x00000000L ,0, 0, >> > > 2); + 0xff000000L, 0x00000000L >> > > ,0, 0, 2); if (extra_highbits_memory_size || >> > > extra_lowbits_memory_size) regs.u.r32.ebx = 7; >> > > else >> > > diff --git a/kvm/include/x86/asm/vmx.h b/kvm/include/x86/asm/vmx.h >> > > index df8d4f9..99e2bb9 100644 >> > > --- a/kvm/include/x86/asm/vmx.h >> > > +++ b/kvm/include/x86/asm/vmx.h >> > > @@ -403,7 +403,7 @@ enum vmcs_field { >> > > #define VMX_EPT_EXECUTABLE_MASK 0x4ull >> > > #define VMX_EPT_IGMT_BIT (1ull << 6) >> > > >> > > -#define VMX_EPT_IDENTITY_PAGETABLE_ADDR 0xfffbc000ul >> > > +#define VMX_EPT_IDENTITY_PAGETABLE_ADDR 0xfeffc000ul >> > > >> > > >> > > #define ASM_VMX_VMCLEAR_RAX ".byte 0x66, 0x0f, 0xc7, 0x30" >> > > diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c >> > > index daf60b6..b5306aa 100644 >> > > --- a/qemu-kvm-x86.c >> > > +++ b/qemu-kvm-x86.c >> > > @@ -63,7 +63,7 @@ static int kvm_init_tss(kvm_context_t kvm) >> > > * this address is 3 pages before the bios, and the bios >> > > should present * as unavaible memory >> > > */ >> > > - r = kvm_set_tss_addr(kvm, 0xfffbd000); >> > > + r = kvm_set_tss_addr(kvm, 0xfeffd000); >> > > if (r < 0) { >> > > fprintf(stderr, "kvm_init_tss: unable to set tss >> > > addr\n"); return r; >> > >> > -- >> > To unsubscribe from this list: send the line "unsubscribe kvm" in >> > the body of a message to majordomo@xxxxxxxxxxxxxxx >> > More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> -- >> To unsubscribe from this list: send the line "unsubscribe kvm" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html