xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Ian Campbell <Ian.Campbell@citrix.com>
To: Jordan Justen <jljusten@gmail.com>
Cc: Bei Guan <gbtju85@gmail.com>, xen-devel <xen-devel@lists.xen.org>
Subject: Re: How to initialize the grant table in a HVM guest OS and its bios
Date: Fri, 17 Aug 2012 19:46:51 +0100	[thread overview]
Message-ID: <1345229211.23624.0.camel@dagon.hellion.org.uk> (raw)
In-Reply-To: <CAFe8ug_YBeupJf9Kdq100WAYoKv_-otRppL0ACejJimjsTu-Nw@mail.gmail.com>

On Fri, 2012-08-17 at 18:08 +0100, Jordan Justen wrote:
> On Fri, Aug 17, 2012 at 8:44 AM, Ian Campbell <Ian.Campbell@citrix.com> wrote:
> > On Fri, 2012-08-17 at 16:31 +0100, Bei Guan wrote:
> >>
> >> 2012/8/8 Ian Campbell <Ian.Campbell@citrix.com>
> >>         On Wed, 2012-08-08 at 16:48 +0100, Bei Guan wrote:
> >>
> >>         > Thank you very much for your help.
> >>         > Is there any example code of initialization of grant table
> >>         in HVM that
> >>         > I can refer to?
> >>
> >>
> >>         The PVHVM support in upstream Linux would be a good place to
> >>         look.
> >>
> >>         So might the code in the xen tree in
> >>         unmodified_drivers/linux-2.6/
> >>
> >>         IIRC Daniel got grant tables working in SeaBIOS last summer
> >>         for GSoC so
> >>         you might also find some useful examples in
> >>         git://github.com/evildani/seabios_patch.git
> >> Hi Ian,
> >>
> >>
> >> Thank you very much for this information. It's very useful to me.
> >>
> >>
> >> However, I'm still confused with the initialization of the grant table
> >> in HVM.
> >>
> >>
> >> The relationship of the methods in the initialization of the grant
> >> table in linux source code (driver/xen) is:
> >> platform_pci_init()-->gnttab_init()-->gnttab_resume()-->gnttab_map()-->arch_gnttab_map_shared()-->apply_to_page_range().
> >>
> >>
> >> So, I am not sure that what's the function of the method
> >> apply_to_page_range(), which is implemented in code file [1].
> >> This function is a little complex. Is there any simple method to do
> >> this? Thank you for your time.
> >
> > This function is the simple method ;-)
> >
> > All it basically does is iterate over the page tables corresponding to a
> > range of addresses and calling a user supplied function on each leaf
> > PTE. In the case of the gnttab_map this user supplied function simply
> > sets the leaf PTEs to point to the right grant table page.
> >
> > I suppose you are working on tianocore? I've no idea what the page table
> > layout is in that environment, I suppose it either has a linear map or
> > some other way of getting at the leaf ptes. Anyway since the method to
> > use is specific to the OS (or firmware) environment you are running in I
> > think you'll have to ask on the tianocore development list.
> 
> At boot time all pages are identity mapped. I don't think we need this
> mapping step for our firmware. Does that sound right?

In that case you can skip the page table setup bit, you just need the
step where you add the grant table to your physical address space.

Ian.

      reply	other threads:[~2012-08-17 18:46 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-08 15:10 How to initialize the grant table in a HVM guest OS and its bios Bei Guan
2012-08-08 15:22 ` Ian Campbell
2012-08-08 15:48   ` Bei Guan
2012-08-08 15:55     ` Ian Campbell
2012-08-17 15:31       ` Bei Guan
2012-08-17 15:44         ` Ian Campbell
2012-08-17 16:24           ` Bei Guan
2012-08-17 17:08           ` Jordan Justen
2012-08-17 18:46             ` Ian Campbell [this message]

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=1345229211.23624.0.camel@dagon.hellion.org.uk \
    --to=ian.campbell@citrix.com \
    --cc=gbtju85@gmail.com \
    --cc=jljusten@gmail.com \
    --cc=xen-devel@lists.xen.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).