xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
Cc: "xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: start of day, special pages
Date: Wed, 30 Oct 2013 09:03:35 -0400	[thread overview]
Message-ID: <20131030130335.GA24078@phenom.dumpdata.com> (raw)
In-Reply-To: <5270FC5E.2080401@gmail.com>

On Wed, Oct 30, 2013 at 01:32:30PM +0100, Vladimir 'φ-coder/phcoder' Serbinenko wrote:
> Hello, all. I'm writing pvgrub2 ( for those interested
> http://git.savannah.gnu.org/cgit/grub.git/log/?h=phcoder/newports/xen )
> Now I'm able to load pvgrub2 from pvgrub2. Now I'm trying to load
> NetBSD. Apparently NetBSD assumes that console interface is mapping in
> start-of-day layout and I paid special care not to map any special pages
> in start-of-day. Which special pages have to be mapped and where?
> Accoring to xen.h:
>  *  1. The domain is started within contiguous virtual-memory region.
>  *  2. The contiguous region ends on an aligned 4MB boundary.
>  *  3. This the order of bootstrap elements in the initial virtual region:
>  *      a. relocated kernel image
>  *      b. initial ram disk              [mod_start, mod_len]
>  *      c. list of allocated page frames [mfn_list, nr_pages]
>  *         (unless relocated due to XEN_ELFNOTE_INIT_P2M)
>  *      d. start_info_t structure        [register ESI (x86)]

That structure has the information:


#ifdef XEN_HAVE_PV_GUEST_ENTRY
struct start_info {
    /* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME.    */
    char magic[32];             /* "xen-<version>-<platform>".            */
    unsigned long nr_pages;     /* Total pages allocated to this domain.  */
    unsigned long shared_info;  /* MACHINE address of shared info struct. */
    uint32_t flags;             /* SIF_xxx flags.                         */
    xen_pfn_t store_mfn;        /* MACHINE page number of shared page.    */
    uint32_t store_evtchn;      /* Event channel for store communication. */
    union {
        struct {
            xen_pfn_t mfn;      /* MACHINE page number of console page.   */  <====
            uint32_t  evtchn;   /* Event channel for console page.        */
        } domU;
        struct {
            uint32_t info_off;  /* Offset of console_info struct.         */
            uint32_t info_size; /* Size of console_info struct from start.*/
        } dom0;
    } console;
    /* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME).     */
    unsigned long pt_base;      /* VIRTUAL address of page directory.     */
    unsigned long nr_pt_frames; /* Number of bootstrap p.t. frames.       */
    unsigned long mfn_list;     /* VIRTUAL address of page-frame list.    */
    unsigned long mod_start;    /* VIRTUAL address of pre-loaded module   */
                                /* (PFN of pre-loaded module if           */
                                /*  SIF_MOD_START_PFN set in flags).      */
    unsigned long mod_len;      /* Size (bytes) of pre-loaded module.     */
#define MAX_GUEST_CMDLINE 1024
    int8_t cmd_line[MAX_GUEST_CMDLINE];
    /* The pfn range here covers both page table and p->m table frames.   */
    unsigned long first_p2m_pfn;/* 1st pfn forming initial P->M table.    */
    unsigned long nr_p2m_frames;/* # of pfns forming initial P->M table.  */
};

You need to consult console.domU.mfn.


>  *      e. bootstrap page tables         [pt_base and CR3 (x86)]
>  *      f. bootstrap stack               [register ESP (x86)]
>  *  4. Bootstrap elements are packed together, but each is 4kB-aligned.
>  *  5. The initial ram disk may be omitted.
>  *  6. The list of page frames forms a contiguous 'pseudo-physical' memory
>  *     layout for the domain. In particular, the bootstrap virtual-memory
>  *     region is a 1:1 mapping to the first section of the
> pseudo-physical map.
>  *  7. All bootstrap elements are mapped read-writable for the guest OS. The
>  *     only exception is the bootstrap page table, which is mapped
> read-only.
>  *  8. There is guaranteed to be at least 512kB padding after the final
>  *     bootstrap element. If necessary, the bootstrap virtual region is
>  *     extended by an extra 4MB to ensure this.
> 
> I see no mention of mapped console interface at all.
> 



> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  reply	other threads:[~2013-10-30 13:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-30 12:32 start of day, special pages Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-30 13:03 ` Konrad Rzeszutek Wilk [this message]
2013-10-30 13:11   ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-30 19:03     ` Konrad Rzeszutek Wilk
2013-10-30 20:17       ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-10-30 22:12     ` Daniel Kiper
2013-10-31  0:39       ` Vladimir 'φ-coder/phcoder' Serbinenko

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=20131030130335.GA24078@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=phcoder@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).