From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: Re: New Xen boot infrastructure proposal Date: Tue, 21 May 2013 14:57:23 +0200 Message-ID: <20130521125723.GC24123@debian70-amd64.local.net-space.pl> References: <363082f7-72f9-41cc-a5b4-75ce235e6493@default> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini Cc: xen-devel@lists.xensource.com, keir@xen.org, ian.campbell@citrix.com, jbeulich@suse.com, konrad.wilk@oracle.com List-Id: xen-devel@lists.xenproject.org On Tue, May 21, 2013 at 12:39:44PM +0100, Stefano Stabellini wrote: > On Tue, 21 May 2013, Daniel Kiper wrote: [...] > > /* Xen Boot Info Arch (XBIA) memory map structure. */ > > typedef struct { > > /* > > * Amount of lower memory accordingly to The Multiboot > > * Specification version 0.6.96. > > */ > > u32 lower; > > /* > > * Amount of upper memory accordingly to The Multiboot > > * Specification version 0.6.96. > > */ > > u32 upper; > > u32 map_size; > > struct e820entry *e820map; > > e820map needs to be moved to an x86 specific struct. It is Xen Boot Info Arch (XBIA) memory map structure which is architecture dependent and it is part of Xen Boot Info Arch (XBIA) (please look below). > Can we use the arch-independent memory map structs as defined in section > 3.4.8 of the multiboot2 spec instead? I thought about that once but I am not sure that it is good idea. It is quiet tightly linked to architecture (e.g. address space which maybe 64-bit, 32-bit, ... or memory types representation). However, I do not insist on staying with that. If we decide to made it arch independed on the base of multiboot2 spec then we should only use base_addr (u64), length (u64) and type (u32). > > } xbia_mem_t; > > > > /* Xen Boot Info Arch (XBIA). */ > > typedef struct { > > EFI_SYSTEM_TABLE *efi_system_table; > > u64 mps; /* Pointer to MPS. */ > > u64 acpi; /* Pointer to ACPI RSDP. */ > > u64 smbios; /* Pointer to SMBIOS. */ > > xbia_mem_t mem; > > struct xen_vga_console_info vga_console_info; > > struct edd_info *edd_info; > > } xbia_t; > > We need to add a pointer to device_tree in there. As I mentioned earlier it is x86 stuff. ARM arch should have relevant separate xbia_t. > > /* Main Xen Boot Info (XBI) structure. */ > > typedef struct { > > char *boot_loader_name; > > char *cmdline; > > u32 mods_count; > > xbi_mod_t *mods; > > xbia_t arch; > > } xbi_t; Daniel