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

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



On 30.10.2013 14:03, Konrad Rzeszutek Wilk wrote:
> 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.
> 
Yes, I understand that but it's not my question. My question is where I
should map it to when handing off control to another kernel.
> 
>>  *      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
> 
> 


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
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®.