All of lore.kernel.org
 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 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.