All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sheng Yang <sheng@linux.intel.com>
To: kvm@vger.kernel.org
Cc: Jordan Justen <jljusten@gmail.com>,
	Jordan Justen <jordan.l.justen@intel.com>,
	Marcelo Tosatti <mtosatti@redhat.com>
Subject: Re: [PATCH] Update qemu-kvm to allow a larger BIOS image.
Date: Thu, 16 Jul 2009 13:37:26 +0800	[thread overview]
Message-ID: <200907161337.27383.sheng@linux.intel.com> (raw)
In-Reply-To: <2a50f7880907152157q3fddb30w5fdca450408e2eae@mail.gmail.com>

On Thursday 16 July 2009 12:57:02 Jordan Justen wrote:
> On Wed, Jul 15, 2009 at 8:08 PM, Sheng Yang<sheng@linux.intel.com> wrote:
> > On Thursday 16 July 2009 10:58:53 Jordan Justen wrote:
> >> On Wed, Jul 15, 2009 at 6:34 PM, Sheng Yang <sheng@linux.intel.com> 
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.

Make sense to me. So what's mattered here is not bios, but qemu-kvm and kvm 
code. The user can replace bios binary by UEFI binary easily, but not with kvm 
related part.

I realized you still need separate the qemu-kvm patch into two: one for bios 
and another for qemu. And I just hope this modification won't break some old 
OS(any OS got assumption about bios size? I think Tiano team should have idea 
on it)...

-- 
regards
Yang, Sheng

>
> > --
> > regards
> > Yang, Sheng
> >
> >> > --
> >> > regards
> >> > Yang, Sheng
> >> >
> >> > > Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
> >> > > ---
> >> > >  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@vger.kernel.org
> >> > 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@vger.kernel.org
> >> 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@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



  reply	other threads:[~2009-07-16  5:37 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-16  0:12 [PATCH] Update KVM kernel module to allow a larger BIOS image Jordan Justen
2009-07-16  0:12 ` [PATCH] Update qemu-kvm " Jordan Justen
2009-07-16  1:34   ` Sheng Yang
2009-07-16  2:58     ` Jordan Justen
2009-07-16  3:08       ` Sheng Yang
2009-07-16  4:57         ` Jordan Justen
2009-07-16  5:37           ` Sheng Yang [this message]
2009-07-16 17:57             ` Jordan Justen
2009-07-22 19:04               ` Cristi Magherusan
2009-07-23  1:42                 ` Sheng Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200907161337.27383.sheng@linux.intel.com \
    --to=sheng@linux.intel.com \
    --cc=jljusten@gmail.com \
    --cc=jordan.l.justen@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.