Re: [PATCH 1/5] resources: add arch hook for preventing allocation in reserved areas

Bjorn Helgaas
2010-12-10T21:07:24Z

On Friday, December 10, 2010 01:36:09 pm Jesse Barnes wrote:
> [Actually cc'ing Matthew this time]
>
> On Fri, 10 Dec 2010 12:30:08 -0800
> Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
>
> > On Wed, 08 Dec 2010 14:36:06 -0700
> > Bjorn Helgaas <bjorn.helgaas@hp.com> wrote:
> >
> > >
> > > This adds arch_remove_reservations(), which an arch can implement if it
> > > needs to protect part of the address space from allocation.
> > >
> > > Sometimes that can be done by just requesting a resource. This hook is to
> > > cover cases where protected area doesn't fit well in the hierarchical
> > > resource tree. For example, x86 BIOS E820 reservations are not related
> > > to devices, so they may overlap part of, all of, or more than a device
> > > resource.
> > >
> > > Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
> > > ---
> >
> > Hm, this is bigger than the simple change of just avoiding the high 2M;
> > Linus have you checked it out yet? It's nicer than simply adjusting
> > PCIBIOS_MAX_MEM since it will affect all resource callers rather than
> > just PCI, but it's definitely bigger.

Dan Williams also reproduced the problem on a 2530p and tested this
series (though I think he actually tested a backport in Fedora):
https://bugzilla.kernel.org/show_bug.cgi?id=23542#c7
https://bugzilla.kernel.org/show_bug.cgi?id=23542#c23

The simple PCIBIOS_MAX_MEM_32 change below will fix the 2530p problem,
but it won't help fix the nx6325 problem Rafael reported; details at:
https://bugzilla.kernel.org/show_bug.cgi?id=23332#c20

Rafael did confirm on #acpi Wednesday that the full series fixed
his nx6325.

Bjorn

> > If you want just the simple change for 2.6.37 I can push that, but
> > we'll need to get a tested-by from Matthew:
> >
> > diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> > index ca0437c..aef9f77 100644
> > --- a/arch/x86/include/asm/pci.h
> > +++ b/arch/x86/include/asm/pci.h
> > @@ -141,7 +141,7 @@ void dma32_reserve_bootmem(void);
> >
> > /* generic pci stuff */
> > #include <asm-generic/pci.h>
> > -#define PCIBIOS_MAX_MEM_32 0xffffffff
> > +#define PCIBIOS_MAX_MEM_32 0xfff00000
> >
> > #ifdef CONFIG_NUMA
> > /* Returns the node based on pci bus */
> >
> > and I'll queue up this set for 2.6.38.
> >
> > Thanks,
>
>
>