Jan Beulich
2013-Nov-04 10:25 UTC
[PATCH] x86: make sure memory block is RAM before passing to the allocator
Memory blocks outside of the always visible 1:1 mapping range get passed to the allocator separately (once enough other setup was done). Skipping non-RAM regions, however, was forgotten in adc5afbf ("x86: support up to 16Tb"). Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -1155,6 +1155,8 @@ void __init __start_xen(unsigned long mb { uint64_t s, e; + if ( boot_e820.map[i].type != E820_RAM ) + continue; s = (boot_e820.map[i].addr + mask) & ~mask; e = (boot_e820.map[i].addr + boot_e820.map[i].size) & ~mask; if ( PFN_DOWN(e) <= limit ) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Keir Fraser
2013-Nov-04 13:25 UTC
Re: [PATCH] x86: make sure memory block is RAM before passing to the allocator
On 04/11/2013 10:25, "Jan Beulich" <JBeulich@suse.com> wrote:> Memory blocks outside of the always visible 1:1 mapping range get > passed to the allocator separately (once enough other setup was done). > Skipping non-RAM regions, however, was forgotten in adc5afbf ("x86: > support up to 16Tb"). > > Signed-off-by: Jan Beulich <jbeulich@suse.com>Acked-by: Keir Fraser <keir@xen.org>> --- a/xen/arch/x86/setup.c > +++ b/xen/arch/x86/setup.c > @@ -1155,6 +1155,8 @@ void __init __start_xen(unsigned long mb > { > uint64_t s, e; > > + if ( boot_e820.map[i].type != E820_RAM ) > + continue; > s = (boot_e820.map[i].addr + mask) & ~mask; > e = (boot_e820.map[i].addr + boot_e820.map[i].size) & ~mask; > if ( PFN_DOWN(e) <= limit ) > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel