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

Re: Remove memory DLPAR operation fails for Debian 6.0.3 on IBM Power6 and Power7 Systems



Hello,

On Tue, Jan 03, 2012 at 08:56:03AM -0430, Juan Jose Garcia wrote:
> Hi! Check if your Kernel Configuration has this items in this way. I had to
> recompile my Kernel due to perform every CPU, Memory an PCI DLPAR operation
> succesfully:
> 
> CONFIG_LPARCFG=y
> CONFIG_RTAS_PROC=y
> CONFIG_MIGRATION=Y
> CONFIG_HOTPLUG_PCI=y
> CONFIG_HOTPLUG_PCI_RPA=y
> CONFIG_HOTPLUG_PCI_RPA_DLPAR=y
> CONFIG_SPARSEMEM=y
> CONFIG_SPARSEMEN_VMEMMAP=n
> CONFIG_MEMORY_HOTREMOVE=y
> CONFIG_MEMORY_HOTPLUG=y
> CONFIG_MEMORY_HOTPLUG_SPARSE=y
> CONFIG_NUMA=y

yes, the kernel was rebuild with those - and some other PPC-, PSERIES-
and POWER-related - options enabled:
  # egrep -w "CONFIG_LPARCFG|CONFIG_RTAS_PROC|CONFIG_MIGRATION|CONFIG_HOTPLUG_PCI|CONFIG_HOTPLUG_PCI_RPA|CONFIG_HOTPLUG_PCI_RPA_DLPAR|CONFIG_SPARSEMEM|CONFIG_SPARSEMEN_VMEMMAP|CONFIG_MEMORY_HOTREMOVE|CONFIG_MEMORY_HOTPLUG|CONFIG_MEMORY_HOTPLUG_SPARSE|CONFIG_NUMA" /boot/config-2.6.39-bpo.2-powerpc
  CONFIG_LPARCFG=y
  CONFIG_RTAS_PROC=y
  CONFIG_NUMA=y
  CONFIG_SPARSEMEM=y
  CONFIG_MEMORY_HOTPLUG=y
  CONFIG_MEMORY_HOTPLUG_SPARSE=y
  CONFIG_MEMORY_HOTREMOVE=y
  CONFIG_MIGRATION=y
  CONFIG_HOTPLUG_PCI=y
  CONFIG_HOTPLUG_PCI_RPA=y
  CONFIG_HOTPLUG_PCI_RPA_DLPAR=y

Within the kernel i've traced the call path of the memory remove
operation down to the __release_region function in ./kernel/resource.c.
At the moment it fails at this point (empty lines removed):

    void __release_region(struct resource *parent, resource_size_t start,
                resource_size_t n)
    {
        struct resource **p;
        resource_size_t end;
        p = &parent->child;
        end = start + n - 1;
        write_lock(&resource_lock);
        for (;;) {
            struct resource *res = *p;
            if (!res) { /* !!! Fails here !!! */
                break;
            }
            ...

For some, yet unknown, reason the parent->child resource seems to be
uninitialized and by this effect the pointers p and res are also un-
initialized. Now i've just have figure out why ... any pointers are
very welcome, because my C knowledge is a bit rusty ;-)

Thanks & best regards,

    Frank


Reply to: