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
next prev parent 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).