grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
From: "Lennart Sorensen" <lsorense@csclub.uwaterloo.ca>
To: The development of GNU GRUB <grub-devel@gnu.org>
Cc: phcoder@gmail.com, Daniel Kiper <daniel.kiper@oracle.com>,
	mchang@suse.com, xen-devel@lists.xen.org
Subject: Re: [PATCH v3 02/10] xen: reduce number of global variables in xen loader
Date: Thu, 18 Feb 2016 12:00:06 -0500	[thread overview]
Message-ID: <20160218170006.GA10673@csclub.uwaterloo.ca> (raw)
In-Reply-To: <56C59E49.8060201@suse.com>

On Thu, Feb 18, 2016 at 11:34:49AM +0100, Juergen Gross wrote:
> On 18/02/16 11:22, Daniel Kiper wrote:
> > On Wed, Feb 17, 2016 at 06:19:29PM +0100, Juergen Gross wrote:
> >> The loader for xen paravirtualized environment is using lots of global
> >> variables. Reduce the number by making them either local or by putting
> >> them into a single state structure.
> >>
> >> Signed-off-by: Juergen Gross <jgross@suse.com>
> > 
> > Just two nitpicks but in general...
> > 
> > Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
> > 
> >> ---
> >>  grub-core/loader/i386/xen.c | 259 +++++++++++++++++++++++---------------------
> >>  1 file changed, 138 insertions(+), 121 deletions(-)
> >>
> >> diff --git a/grub-core/loader/i386/xen.c b/grub-core/loader/i386/xen.c
> >> index ff7c553..d5fe168 100644
> >> --- a/grub-core/loader/i386/xen.c
> >> +++ b/grub-core/loader/i386/xen.c
> >> @@ -42,16 +42,20 @@
> >>
> >>  GRUB_MOD_LICENSE ("GPLv3+");
> >>
> >> -static struct grub_relocator *relocator = NULL;
> >> -static grub_uint64_t max_addr;
> >> +struct xen_loader_state {
> >> +  struct grub_relocator *relocator;
> >> +  struct start_info next_start;
> >> +  struct grub_xen_file_info xen_inf;
> >> +  grub_uint64_t max_addr;
> >> +  struct xen_multiboot_mod_list *module_info_page;
> >> +  grub_uint64_t modules_target_start;
> >> +  grub_size_t n_modules;
> >> +  int loaded;
> >> +};
> >> +
> >> +static struct xen_loader_state xen_state;
> >> +
> >>  static grub_dl_t my_mod;
> >> -static int loaded = 0;
> >> -static struct start_info next_start;
> >> -static void *kern_chunk_src;
> >> -static struct grub_xen_file_info xen_inf;
> >> -static struct xen_multiboot_mod_list *xen_module_info_page;
> >> -static grub_uint64_t modules_target_start;
> >> -static grub_size_t n_modules;
> >>
> >>  #define PAGE_SIZE 4096
> >>  #define MAX_MODULES (PAGE_SIZE / sizeof (struct xen_multiboot_mod_list))
> >> @@ -225,50 +229,55 @@ grub_xen_boot (void)
> >>    if (grub_xen_n_allocated_shared_pages)
> >>      return grub_error (GRUB_ERR_BUG, "active grants");
> >>
> >> -  state.mfn_list = max_addr;
> >> -  next_start.mfn_list = max_addr + xen_inf.virt_base;
> >> -  next_start.first_p2m_pfn = max_addr >> PAGE_SHIFT;	/* Is this right? */
> >> +  state.mfn_list = xen_state.max_addr;
> >> +  xen_state.next_start.mfn_list =
> >> +    xen_state.max_addr + xen_state.xen_inf.virt_base;
> >> +  xen_state.next_start.first_p2m_pfn = xen_state.max_addr >> PAGE_SHIFT;
> >>    pgtsize = sizeof (grub_xen_mfn_t) * grub_xen_start_page_addr->nr_pages;
> >> -  err = grub_relocator_alloc_chunk_addr (relocator, &ch, max_addr, pgtsize);
> >> -  next_start.nr_p2m_frames = (pgtsize + PAGE_SIZE - 1) >> PAGE_SHIFT;
> >> +  err = grub_relocator_alloc_chunk_addr (xen_state.relocator, &ch,
> >> +					 xen_state.max_addr, pgtsize);
> >> +  xen_state.next_start.nr_p2m_frames = (pgtsize + PAGE_SIZE - 1) >> PAGE_SHIFT;
> >>    if (err)
> >>      return err;
> >>    new_mfn_list = get_virtual_current_address (ch);
> >>    grub_memcpy (new_mfn_list,
> >>  	       (void *) grub_xen_start_page_addr->mfn_list, pgtsize);
> >> -  max_addr = ALIGN_UP (max_addr + pgtsize, PAGE_SIZE);
> >> +  xen_state.max_addr = ALIGN_UP (xen_state.max_addr + pgtsize, PAGE_SIZE);
> >>
> >> -  err = grub_relocator_alloc_chunk_addr (relocator, &ch,
> >> -					 max_addr, sizeof (next_start));
> >> +  err = grub_relocator_alloc_chunk_addr (xen_state.relocator, &ch,
> >> +					 xen_state.max_addr,
> >> +					 sizeof (xen_state.next_start));
> >>    if (err)
> >>      return err;
> >> -  state.start_info = max_addr + xen_inf.virt_base;
> >> +  state.start_info = xen_state.max_addr + xen_state.xen_inf.virt_base;
> >>    nst = get_virtual_current_address (ch);
> >> -  max_addr = ALIGN_UP (max_addr + sizeof (next_start), PAGE_SIZE);
> >> +  xen_state.max_addr =
> >> +    ALIGN_UP (xen_state.max_addr + sizeof (xen_state.next_start), PAGE_SIZE);
> >>
> >> -  next_start.nr_pages = grub_xen_start_page_addr->nr_pages;
> >> -  grub_memcpy (next_start.magic, grub_xen_start_page_addr->magic,
> >> -	       sizeof (next_start.magic));
> >> -  next_start.store_mfn = grub_xen_start_page_addr->store_mfn;
> >> -  next_start.store_evtchn = grub_xen_start_page_addr->store_evtchn;
> >> -  next_start.console.domU = grub_xen_start_page_addr->console.domU;
> >> -  next_start.shared_info = grub_xen_start_page_addr->shared_info;
> >> +  xen_state.next_start.nr_pages = grub_xen_start_page_addr->nr_pages;
> >> +  grub_memcpy (xen_state.next_start.magic, grub_xen_start_page_addr->magic,
> >> +	       sizeof (xen_state.next_start.magic));
> >> +  xen_state.next_start.store_mfn = grub_xen_start_page_addr->store_mfn;
> >> +  xen_state.next_start.store_evtchn = grub_xen_start_page_addr->store_evtchn;
> >> +  xen_state.next_start.console.domU = grub_xen_start_page_addr->console.domU;
> >> +  xen_state.next_start.shared_info = grub_xen_start_page_addr->shared_info;
> >>
> >> -  err = set_mfns (new_mfn_list, max_addr >> PAGE_SHIFT);
> >> +  err = set_mfns (new_mfn_list, xen_state.max_addr >> PAGE_SHIFT);
> >>    if (err)
> >>      return err;
> >> -  max_addr += 2 * PAGE_SIZE;
> >> +  xen_state.max_addr += 2 * PAGE_SIZE;
> >>
> >> -  next_start.pt_base = max_addr + xen_inf.virt_base;
> >> -  state.paging_start = max_addr >> PAGE_SHIFT;
> >> +  xen_state.next_start.pt_base =
> >> +    xen_state.max_addr + xen_state.xen_inf.virt_base;
> >> +  state.paging_start = xen_state.max_addr >> PAGE_SHIFT;
> >>
> >> -  nr_info_pages = max_addr >> PAGE_SHIFT;
> >> +  nr_info_pages = xen_state.max_addr >> PAGE_SHIFT;
> >>    nr_pages = nr_info_pages;
> >>
> >>    while (1)
> >>      {
> >>        nr_pages = ALIGN_UP (nr_pages, (ALIGN_SIZE >> PAGE_SHIFT));
> >> -      nr_pt_pages = get_pgtable_size (nr_pages, xen_inf.virt_base);
> >> +      nr_pt_pages = get_pgtable_size (nr_pages, xen_state.xen_inf.virt_base);
> >>        nr_need_pages =
> >>  	nr_info_pages + nr_pt_pages +
> >>  	((ADDITIONAL_SIZE + STACK_SIZE) >> PAGE_SHIFT);
> >> @@ -278,27 +287,28 @@ grub_xen_boot (void)
> >>      }
> >>
> >>    grub_dprintf ("xen", "bootstrap domain %llx+%llx\n",
> >> -		(unsigned long long) xen_inf.virt_base,
> >> +		(unsigned long long) xen_state.xen_inf.virt_base,
> >>  		(unsigned long long) page2offset (nr_pages));
> >>
> >> -  err = grub_relocator_alloc_chunk_addr (relocator, &ch,
> >> -					 max_addr, page2offset (nr_pt_pages));
> >> +  err = grub_relocator_alloc_chunk_addr (xen_state.relocator, &ch,
> >> +					 xen_state.max_addr,
> >> +					 page2offset (nr_pt_pages));
> >>    if (err)
> >>      return err;
> >>
> >>    generate_page_table (get_virtual_current_address (ch),
> >> -		       max_addr >> PAGE_SHIFT, nr_pages,
> >> -		       xen_inf.virt_base, new_mfn_list);
> >> +		       xen_state.max_addr >> PAGE_SHIFT, nr_pages,
> >> +		       xen_state.xen_inf.virt_base, new_mfn_list);
> >>
> >> -  max_addr += page2offset (nr_pt_pages);
> >> -  state.stack = max_addr + STACK_SIZE + xen_inf.virt_base;
> >> -  state.entry_point = xen_inf.entry_point;
> >> +  xen_state.max_addr += page2offset (nr_pt_pages);
> >> +  state.stack = xen_state.max_addr + STACK_SIZE + xen_state.xen_inf.virt_base;
> >> +  state.entry_point = xen_state.xen_inf.entry_point;
> >>
> >> -  next_start.nr_p2m_frames += nr_pt_pages;
> >> -  next_start.nr_pt_frames = nr_pt_pages;
> >> +  xen_state.next_start.nr_p2m_frames += nr_pt_pages;
> >> +  xen_state.next_start.nr_pt_frames = nr_pt_pages;
> >>    state.paging_size = nr_pt_pages;
> >>
> >> -  *nst = next_start;
> >> +  *nst = xen_state.next_start;
> >>
> >>    grub_memset (&gnttab_setver, 0, sizeof (gnttab_setver));
> >>
> >> @@ -308,24 +318,20 @@ grub_xen_boot (void)
> >>    for (i = 0; i < ARRAY_SIZE (grub_xen_shared_info->evtchn_pending); i++)
> >>      grub_xen_shared_info->evtchn_pending[i] = 0;
> >>
> >> -  return grub_relocator_xen_boot (relocator, state, nr_pages,
> >> -				  xen_inf.virt_base <
> >> +  return grub_relocator_xen_boot (xen_state.relocator, state, nr_pages,
> >> +				  xen_state.xen_inf.virt_base <
> >>  				  PAGE_SIZE ? page2offset (nr_pages) : 0,
> >>  				  nr_pages - 1,
> >>  				  page2offset (nr_pages - 1) +
> >> -				  xen_inf.virt_base);
> >> +				  xen_state.xen_inf.virt_base);
> >>  }
> >>
> >>  static void
> >>  grub_xen_reset (void)
> >>  {
> >> -  grub_memset (&next_start, 0, sizeof (next_start));
> >> -  xen_module_info_page = NULL;
> >> -  n_modules = 0;
> >> +  grub_relocator_unload (xen_state.relocator);
> >>
> >> -  grub_relocator_unload (relocator);
> >> -  relocator = NULL;
> >> -  loaded = 0;
> >> +  grub_memset (&xen_state, 0, sizeof (xen_state));
> >>  }
> >>
> >>  static grub_err_t
> >> @@ -409,17 +415,22 @@ grub_cmd_xen (grub_command_t cmd __attribute__ ((unused)),
> >>    grub_file_t file;
> >>    grub_elf_t elf;
> >>    grub_err_t err;
> >> +  void *kern_chunk_src;
> >> +  grub_relocator_chunk_t ch;
> >> +  grub_addr_t kern_start;
> >> +  grub_addr_t kern_end;
> >>
> >>    if (argc == 0)
> >>      return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
> >>
> >> +  /* Call grub_loader_unset early to avoid it being called by grub_loader_set */
> >>    grub_loader_unset ();
> >>
> >>    grub_xen_reset ();
> >>
> >>    grub_create_loader_cmdline (argc - 1, argv + 1,
> >> -			      (char *) next_start.cmd_line,
> >> -			      sizeof (next_start.cmd_line) - 1);
> >> +			      (char *) xen_state.next_start.cmd_line,
> >> +			      sizeof (xen_state.next_start.cmd_line) - 1);
> >>
> >>    file = grub_file_open (argv[0]);
> >>    if (!file)
> >> @@ -429,85 +440,82 @@ grub_cmd_xen (grub_command_t cmd __attribute__ ((unused)),
> >>    if (!elf)
> >>      goto fail;
> >>
> >> -  err = grub_xen_get_info (elf, &xen_inf);
> >> +  err = grub_xen_get_info (elf, &xen_state.xen_inf);
> >>    if (err)
> >>      goto fail;
> >>  #ifdef __x86_64__
> >> -  if (xen_inf.arch != GRUB_XEN_FILE_X86_64)
> >> +  if (xen_state.xen_inf.arch != GRUB_XEN_FILE_X86_64)
> >>  #else
> >> -  if (xen_inf.arch != GRUB_XEN_FILE_I386_PAE
> >> -      && xen_inf.arch != GRUB_XEN_FILE_I386_PAE_BIMODE)
> >> +  if (xen_state.xen_inf.arch != GRUB_XEN_FILE_I386_PAE
> >> +      && xen_state.xen_inf.arch != GRUB_XEN_FILE_I386_PAE_BIMODE)
> >>  #endif
> >>      {
> >>        grub_error (GRUB_ERR_BAD_OS, "incompatible architecture: %d",
> >> -		  xen_inf.arch);
> >> +		  xen_state.xen_inf.arch);
> >>        goto fail;
> >>      }
> >>
> >> -  if (xen_inf.virt_base & (PAGE_SIZE - 1))
> >> +  if (xen_state.xen_inf.virt_base & (PAGE_SIZE - 1))
> >>      {
> >>        grub_error (GRUB_ERR_BAD_OS, "unaligned virt_base");
> >>        goto fail;
> >>      }
> >>    grub_dprintf ("xen", "virt_base = %llx, entry = %llx\n",
> >> -		(unsigned long long) xen_inf.virt_base,
> >> -		(unsigned long long) xen_inf.entry_point);
> >> +		(unsigned long long) xen_state.xen_inf.virt_base,
> >> +		(unsigned long long) xen_state.xen_inf.entry_point);
> >>
> >> -  relocator = grub_relocator_new ();
> >> -  if (!relocator)
> >> +  xen_state.relocator = grub_relocator_new ();
> >> +  if (!xen_state.relocator)
> >>      goto fail;
> >>
> >> -  grub_relocator_chunk_t ch;
> >> -  grub_addr_t kern_start = xen_inf.kern_start - xen_inf.paddr_offset;
> >> -  grub_addr_t kern_end = xen_inf.kern_end - xen_inf.paddr_offset;
> >> +  kern_start = xen_state.xen_inf.kern_start - xen_state.xen_inf.paddr_offset;
> >> +  kern_end = xen_state.xen_inf.kern_end - xen_state.xen_inf.paddr_offset;
> >>
> >> -  if (xen_inf.has_hypercall_page)
> >> +  if (xen_state.xen_inf.has_hypercall_page)
> >>      {
> >>        grub_dprintf ("xen", "hypercall page at 0x%llx\n",
> >> -		    (unsigned long long) xen_inf.hypercall_page);
> >> -      if (xen_inf.hypercall_page - xen_inf.virt_base < kern_start)
> >> -	kern_start = xen_inf.hypercall_page - xen_inf.virt_base;
> >> -
> >> -      if (xen_inf.hypercall_page - xen_inf.virt_base + PAGE_SIZE > kern_end)
> >> -	kern_end = xen_inf.hypercall_page - xen_inf.virt_base + PAGE_SIZE;
> >> +		    (unsigned long long) xen_state.xen_inf.hypercall_page);
> >> +      kern_start = grub_min (kern_start, xen_state.xen_inf.hypercall_page -
> >> +					 xen_state.xen_inf.virt_base);
> >> +      kern_end = grub_max (kern_end, xen_state.xen_inf.hypercall_page -
> >> +				     xen_state.xen_inf.virt_base + PAGE_SIZE);
> >>      }
> >>
> >> -  max_addr = ALIGN_UP (kern_end, PAGE_SIZE);
> >> +  xen_state.max_addr = ALIGN_UP (kern_end, PAGE_SIZE);
> >>
> >> -  err = grub_relocator_alloc_chunk_addr (relocator, &ch, kern_start,
> >> +  err = grub_relocator_alloc_chunk_addr (xen_state.relocator, &ch, kern_start,
> >>  					 kern_end - kern_start);
> >>    if (err)
> >>      goto fail;
> >>    kern_chunk_src = get_virtual_current_address (ch);
> >>
> >>    grub_dprintf ("xen", "paddr_offset = 0x%llx\n",
> >> -		(unsigned long long) xen_inf.paddr_offset);
> >> +		(unsigned long long) xen_state.xen_inf.paddr_offset);
> >>    grub_dprintf ("xen", "kern_start = 0x%llx, kern_end = 0x%llx\n",
> >> -		(unsigned long long) xen_inf.kern_start,
> >> -		(unsigned long long) xen_inf.kern_end);
> >> +		(unsigned long long) xen_state.xen_inf.kern_start,
> >> +		(unsigned long long) xen_state.xen_inf.kern_end);
> >>
> >>    err = grub_elfXX_load (elf, argv[0],
> >>  			 (grub_uint8_t *) kern_chunk_src - kern_start
> >> -			 - xen_inf.paddr_offset, 0, 0, 0);
> >> +			 - xen_state.xen_inf.paddr_offset, 0, 0, 0);
> >>
> >> -  if (xen_inf.has_hypercall_page)
> >> +  if (xen_state.xen_inf.has_hypercall_page)
> >>      {
> >>        unsigned i;
> >>        for (i = 0; i < PAGE_SIZE / HYPERCALL_INTERFACE_SIZE; i++)
> >>  	set_hypercall_interface ((grub_uint8_t *) kern_chunk_src +
> >>  				 i * HYPERCALL_INTERFACE_SIZE +
> >> -				 xen_inf.hypercall_page - xen_inf.virt_base -
> >> -				 kern_start, i);
> >> +				 xen_state.xen_inf.hypercall_page -
> >> +				 xen_state.xen_inf.virt_base - kern_start, i);
> >>      }
> >>
> >>    if (err)
> >>      goto fail;
> >>
> >>    grub_dl_ref (my_mod);
> >> -  loaded = 1;
> >> +  xen_state.loaded = 1;
> >>
> >>    grub_loader_set (grub_xen_boot, grub_xen_unload, 0);
> >> -  loaded = 1;
> >>
> >>    goto fail;
> >>
> >> @@ -540,14 +548,14 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
> >>        goto fail;
> >>      }
> >>
> >> -  if (!loaded)
> >> +  if (!xen_state.loaded)
> >>      {
> >>        grub_error (GRUB_ERR_BAD_ARGUMENT,
> >>  		  N_("you need to load the kernel first"));
> >>        goto fail;
> >>      }
> >>
> >> -  if (next_start.mod_start || next_start.mod_len)
> >> +  if (xen_state.next_start.mod_start || xen_state.next_start.mod_len)
> >>      {
> >>        grub_error (GRUB_ERR_BAD_ARGUMENT, N_("initrd already loaded"));
> >>        goto fail;
> >> @@ -560,7 +568,8 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
> >>
> >>    if (size)
> >>      {
> >> -      err = grub_relocator_alloc_chunk_addr (relocator, &ch, max_addr, size);
> >> +      err = grub_relocator_alloc_chunk_addr (xen_state.relocator, &ch,
> >> +					     xen_state.max_addr, size);
> >>        if (err)
> >>  	goto fail;
> >>
> >> @@ -569,13 +578,14 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
> >>  	goto fail;
> >>      }
> >>
> >> -  next_start.mod_start = max_addr + xen_inf.virt_base;
> >> -  next_start.mod_len = size;
> >> +  xen_state.next_start.mod_start =
> >> +    xen_state.max_addr + xen_state.xen_inf.virt_base;
> >> +  xen_state.next_start.mod_len = size;
> >>
> >> -  max_addr = ALIGN_UP (max_addr + size, PAGE_SIZE);
> >> +  xen_state.max_addr = ALIGN_UP (xen_state.max_addr + size, PAGE_SIZE);
> >>
> >>    grub_dprintf ("xen", "Initrd, addr=0x%x, size=0x%x\n",
> >> -		(unsigned) next_start.mod_start, (unsigned) size);
> >> +		(unsigned) xen_state.next_start.mod_start, (unsigned) size);
> >>
> >>  fail:
> >>    grub_initrd_close (&initrd_ctx);
> >> @@ -607,45 +617,48 @@ grub_cmd_module (grub_command_t cmd __attribute__ ((unused)),
> >>    if (argc == 0)
> >>      return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
> >>
> >> -  if (!loaded)
> >> +  if (!xen_state.loaded)
> >>      {
> >>        return grub_error (GRUB_ERR_BAD_ARGUMENT,
> >>  			 N_("you need to load the kernel first"));
> >>      }
> >>
> >> -  if ((next_start.mod_start || next_start.mod_len) && !xen_module_info_page)
> >> +  if ((xen_state.next_start.mod_start || xen_state.next_start.mod_len) &&
> >> +      !xen_state.module_info_page)
> >>      {
> >>        return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("initrd already loaded"));
> >>      }
> >>
> >>    /* Leave one space for terminator.  */
> >> -  if (n_modules >= MAX_MODULES - 1)
> >> +  if (xen_state.n_modules >= MAX_MODULES - 1)
> >>      {
> >>        return grub_error (GRUB_ERR_BAD_ARGUMENT, "too many modules");
> >>      }
> >>
> >> -  if (!xen_module_info_page)
> >> +  if (!xen_state.module_info_page)
> >>      {
> >> -      n_modules = 0;
> >> -      max_addr = ALIGN_UP (max_addr, PAGE_SIZE);
> >> -      modules_target_start = max_addr;
> >> -      next_start.mod_start = max_addr + xen_inf.virt_base;
> >> -      next_start.flags |= SIF_MULTIBOOT_MOD;
> >> +      xen_state.n_modules = 0;
> >> +      xen_state.max_addr = ALIGN_UP (xen_state.max_addr, PAGE_SIZE);
> >> +      xen_state.modules_target_start = xen_state.max_addr;
> >> +      xen_state.next_start.mod_start =
> >> +	xen_state.max_addr + xen_state.xen_inf.virt_base;
> > 
> > Lost one space.
> 
> Really? Common indentation style seams to be to use tabs where possible.
> And this is a tab.

But your line continuation is indented LESS than the line it is
continuing, which is clearly NOT the style.

-- 
len Sorensen


  reply	other threads:[~2016-02-18 17:00 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-17 17:19 [PATCH v3 00/10] grub-xen: support booting huge pv-domains Juergen Gross
2016-02-17 17:19 ` [PATCH v3 01/10] xen: make xen loader callable multiple times Juergen Gross
2016-02-18 10:12   ` Daniel Kiper
2016-02-18 10:32     ` Juergen Gross
2016-02-18 16:58       ` Daniel Kiper
2016-02-19  5:21         ` Juergen Gross
2016-02-17 17:19 ` [PATCH v3 02/10] xen: reduce number of global variables in xen loader Juergen Gross
2016-02-18 10:22   ` Daniel Kiper
2016-02-18 10:34     ` Juergen Gross
2016-02-18 17:00       ` Lennart Sorensen [this message]
2016-02-19  4:59         ` [Xen-devel] " Juergen Gross
2016-02-19 16:20           ` Lennart Sorensen
2016-02-18 17:13       ` Daniel Kiper
2016-02-17 17:19 ` [PATCH v3 03/10] xen: add elfnote.h to avoid using numbers instead of constants Juergen Gross
2016-02-18 10:30   ` Daniel Kiper
2016-02-18 10:35     ` Juergen Gross
2016-02-18 17:15       ` Daniel Kiper
2016-02-17 17:19 ` [PATCH v3 04/10] xen: synchronize xen header Juergen Gross
2016-02-18 10:33   ` Daniel Kiper
2016-02-17 17:19 ` [PATCH v3 05/10] xen: factor out p2m list allocation into separate function Juergen Gross
2016-02-18 10:39   ` Daniel Kiper
2016-02-17 17:19 ` [PATCH v3 06/10] xen: factor out allocation of special pages " Juergen Gross
2016-02-18 10:42   ` Daniel Kiper
2016-02-17 17:19 ` [PATCH v3 07/10] xen: factor out allocation of page tables " Juergen Gross
2016-02-18 10:50   ` Daniel Kiper
2016-02-17 17:19 ` [PATCH v3 08/10] xen: add capability to load initrd outside of initial mapping Juergen Gross
2016-02-18 11:18   ` Daniel Kiper
2016-02-18 12:43     ` Juergen Gross
2016-02-18 17:20       ` Daniel Kiper
2016-02-17 17:19 ` [PATCH v3 09/10] xen: modify page table construction Juergen Gross
2016-02-18 16:40   ` Daniel Kiper
2016-02-19  5:20     ` Juergen Gross
2016-02-17 17:19 ` [PATCH v3 10/10] xen: add capability to load p2m list outside of kernel mapping Juergen Gross
2016-02-18 16:44   ` Daniel Kiper

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=20160218170006.GA10673@csclub.uwaterloo.ca \
    --to=lsorense@csclub.uwaterloo.ca \
    --cc=daniel.kiper@oracle.com \
    --cc=grub-devel@gnu.org \
    --cc=mchang@suse.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).