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

Re: [Xen-ia64-devel] [patch 14/16] Kdump: Add /proc/iomem_machine



On Wed, Sep 12, 2007 at 03:42:10PM -0600, Alex Williamson wrote:
> On Wed, 2007-09-12 at 17:28 +0900, Simon Horman wrote:
> > plain text document attachment (ia64-kexec-xen-iomem_machine.patch)
> > Add /proc/iomem_machine. This is basically the iomem regions
> > as the hypervisor sees them. As opposed to Linux's /proc/iomem
> > which is provides a somewhat limited and distorted view of the world.
> > Or in other words, /proc/iomem is for pseudo-phical memory and
> > /proc/iomem_machine is for machine memory.
> > 
> > This is needed for kdump to work on ia64 as else it can't place
> > the crashkernel region correctly, nor can it map out all physical
> > memory to be included in the vmcore file in the second kernel.
> > 
> > There is an acompanying patch to kexec-tools to allow it
> > to use /proc/iomem_machine instead of /proc/iomem as appropriate.
> > 
> 
> > @@ -947,7 +952,7 @@ efi_memmap_init(unsigned long *s, unsign
> >             md = p;
> >             if (!efi_wb(md)) {
> >                     if (efi_uc(md) && (md->type == EFI_CONVENTIONAL_MEMORY 
> > ||
> > -                                      md->type == EFI_BOOT_SERVICES_DATA)) 
> > {
> > +                                      md->type == EFI_BOOT_SERVICES_DATA)) 
> > {
> 
>    This whitespace change doesn't appear to be fixed in upstream, let's
> fix it there first.  We don't want too many extraneous changes making
> merge up harder.

Sorry about that, I've remove that hunk now.

>    This chunk below scares me for transparent paravirt.  It probably
> needs to be protected with a is_running_on_xen()/is_initial_xendomain()
> check.  Thanks,

Agreed, I have protected it with is_initial_xendomain() now.
I have also done the same for the code that creates /proc/iomem_machine

>       Alex
> 
> > +#ifdef CONFIG_PROC_IOMEM_MACHINE
> > +static int
> > +efi_initialize_iomem_machine_resources(void)
> > +{
> > +   unsigned long size;
> > +   xen_memory_map_t memmap;
> > +   xen_ia64_memmap_info_t *memmap_info = NULL;
> > +   void *efi_map_start, *efi_map_end;
> > +   u64 efi_desc_size;
> > +   int ret;
> > +
> > +   /* It would be nice if it wasn't neccessary to loop like this */
> > +   for (size = 1024; 1; size += 1024) {
> > +           memmap_info = kmalloc(size, GFP_KERNEL);
> > +           if (memmap_info == NULL)
> > +                   return -ENOMEM;
> > +
> > +           memmap.nr_entries = size;
> > +           set_xen_guest_handle(memmap.buffer, memmap_info);
> > +           ret = HYPERVISOR_memory_op(XENMEM_machine_memory_map, &memmap);
> > +           if (!ret)
> > +                   break;
> > +

-- 
Horms
  H: http://www.vergenet.net/~horms/
  W: http://www.valinux.co.jp/en/


_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.