[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] start of day, special pages



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@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel


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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.