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

Re: [Xen-devel] [PATCH RFC 2/7] xen/x86: Add xbi.h header file



On Mon, 11 Aug 2014, Stefano Stabellini wrote:
> On Sat, 9 Aug 2014, Daniel Kiper wrote:
> > Define Xen Boot Info (XBI) type. This will be used to define variable
> > used to store data collected by bootloader and preloader. This way
> > we are able to make most of Xen code bootloader agnostic.
> > 
> > Signed-off-by: Daniel Kiper <daniel.kiper@xxxxxxxxxx>
> > ---
> >  xen/include/asm-x86/xbi.h |  117 
> > +++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 117 insertions(+)
> >  create mode 100644 xen/include/asm-x86/xbi.h
> > 
> > diff --git a/xen/include/asm-x86/xbi.h b/xen/include/asm-x86/xbi.h
> > new file mode 100644
> > index 0000000..ca9e615
> > --- /dev/null
> > +++ b/xen/include/asm-x86/xbi.h
> > @@ -0,0 +1,117 @@
> > +/*
> > + * Copyright (c) 2013, 2014 Oracle Co., Daniel Kiper
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License as published by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License along
> > + * with this program.  If not, see <http://www.gnu.org/licenses/>.
> > + */
> > +
> > +#ifndef __XBI_H__
> > +#define __XBI_H__
> > +
> > +#include <xen/types.h>
> > +#include <xen/vga.h>
> > +
> > +#include <asm/e820.h>
> > +#include <asm/edd.h>
> > +#include <asm/mbd.h>
> > +
> > +/* Xen Boot Info (XBI) type. */
> > +typedef struct {
> > +    /* Boot loader name. */
> > +    char *boot_loader_name;
> > +
> > +    /* Xen command line. */
> > +    char *cmdline;
> > +
> > +    /* Memory map type (source of memory map). */
> > +    char *mmap_type;
> > +
> > +    /*
> > +     * Amount of upper memory (in KiB) accordingly to The Multiboot
> > +     * Specification version 0.6.96.
> > +     */
> > +    u32 mem_upper;
> > +
> > +    /* Number of memory map entries provided by Xen preloader. */
> > +    int e820map_nr;
> > +
> > +    /*
> > +     * Memory map provided by Xen preloader. It should always point
> > +     * to an area able to accommodate at least E820MAX entries.
> > +     */
> > +    struct e820entry *e820map;
> > +
> > +    /* Size (in bytes) of EFI memory map provided by Xen preloader. */
> > +    unsigned long efi_mmap_size;

I would use explicitly sized integers here. Moreover ARM32 supports
LPAE.


> > +    /* Size (in bytes) of EFI memory map descriptor provided by Xen 
> > preloader. */
> > +    unsigned long efi_mmap_desc_size;
> > +
> > +    /* Pointer to EFI memory map provided by preloader. */
> > +    void *efi_mmap;
> > +
> > +    /* Pointer to MPS. */
> > +    unsigned long mps;

Why some pointers are void* and some others are unsigned long?
If this contains a physical address you should say so in the comment.
Also you should use xen_ulong_t or u64.


> > +    /* Pointer to ACPI RSDP. */
> > +    unsigned long acpi;
> > +
> > +    /* Pointer to ACPI 2.0 RSDP. */
> > +    unsigned long acpi20;
> > +
> > +    /* Pointer to SMBIOS. */
> > +    unsigned long smbios;
> > +
> > +    /* Pointer to EFI System Table. */
> > +    void *efi_system_table;
> > +
> > +    /* VGA console info. */
> > +    struct xen_vga_console_info vga_console_info;
> > +
> > +    /* EDID info. */
> > +    unsigned short edid_caps;
> > +    unsigned char *edid_info;
> > +
> > +    /* Number of EDD entries provided by Xen preloader. */
> > +    u8 edd_info_nr;
> > +
> > +    /* Pointer to EDD info. */
> > +    struct edd_info *edd_info;
> > +
> > +    /* Number of MBR entries provided by Xen preloader. */
> > +    u8 mbr_signature_nr;
> > +
> > +    /* Pointer to MBR info. */
> > +    struct mbr_signature *mbr_signature;
> > +
> > +    /* Number of modules. */
> > +    unsigned int mods_nr;
> > +
> > +    /* Pointer to modules description. */
> > +    boot_module_t *mods;
> > +
> > +    /*
> > +     * Info about warning occurred during XBI initialization.
> > +     * NULL if everything went OK.
> > +     */
> > +    char *warn_msg;
> > +
> > +    /*
> > +     * Info about error occurred during XBI initialization. NULL if 
> > everything
> > +     * went OK. Otherwise XBI is not fully/properly initialized.
> > +     */
> > +    char *err_msg;
> > +} xbi_t;
> > +
> > +extern xbi_t *xbi;
> > +#endif /* __XBI_H__ */
>  
> If this struct is to become part of an internal cross-arch interface in
> Xen, it needs to have an arch specific field. You could move the e820
> stuff to the x86 version of it. The only memory map available on ARM is
> the UEFI memory map.
> 

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