[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 09/08/14 00:04, 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>

This looks ok in principle, and the end goal seems like a good idea.

> ---
>  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. */

Probably need a rather larger comment here, reiterating that this
structure is a collection of information provided/found by the
bootloader/preloader, and presented in a common place for the Xen boot code.

> +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;

Count of e820 entries is inherently an unsigned quantity.

> +
> +    /*
> +     * 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;
> +
> +    /* Size (in bytes) of EFI memory map descriptor provided by Xen 
> preloader. */
> +    unsigned long efi_mmap_desc_size;

size_t for these two?

> +
> +    /* Pointer to EFI memory map provided by preloader. */
> +    void *efi_mmap;
> +
> +    /* Pointer to MPS. */
> +    unsigned long mps;
> +
> +    /* Pointer to ACPI RSDP. */
> +    unsigned long acpi;
> +
> +    /* Pointer to ACPI 2.0 RSDP. */
> +    unsigned long acpi20;
> +
> +    /* Pointer to SMBIOS. */
> +    unsigned long smbios;

I presume these 4 are all physical addresses?  how about paddr_t ?

> +
> +    /* 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;

I realise this is very subjective, but I quite dislike this name.  The X
is redundant, this being the Xen source tree, and BI could perfectly
easily be an object called "boot_into", which would be rather clearer
when used in the code.

~Andrew

> +#endif /* __XBI_H__ */


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