[Devel] Re: [PATCH] x86: only clear node_states for 64bit

Ingo Molnar mingo at elte.hu
Sat Jun 27 10:17:14 PDT 2009


* Yinghai Lu <yinghai at kernel.org> wrote:

> Andrew Morton wrote:
> > On Mon, 22 Jun 2009 08:38:50 -0700
> > Yinghai Lu <yinghai at kernel.org> wrote:
> > 
> >> Nathan reported that
> >> | commit 73d60b7f747176dbdff826c4127d22e1fd3f9f74
> >> | Author: Yinghai Lu <yinghai at kernel.org>
> >> | Date:   Tue Jun 16 15:33:00 2009 -0700
> >> |
> >> |    page-allocator: clear N_HIGH_MEMORY map before we set it again
> >> |    
> >> |    SRAT tables may contains nodes of very small size.  The arch code may
> >> |    decide to not activate such a node.  However, currently the early boot
> >> |    code sets N_HIGH_MEMORY for such nodes.  These nodes therefore seem to be
> >> |    active although these nodes have no present pages.
> >> |    
> >> |    For 64bit N_HIGH_MEMORY == N_NORMAL_MEMORY, so that works for 64 bit too
> >>
> >> the cpuset.mems cgroup attribute on an i386 kvm guest
> >>
> >> fix it by only clearing node_states[N_NORMAL_MEMORY] for 64bit only.
> >> and need to do save/restore for that in find_zone_movable_pfn
> >>
> > 
> > There appear to be some words omitted from this changelog - it doesn't
> > make sense.
> > 
> > I think that perhaps a line got deleted before "the cpuset.mems cgroup
> > ...".  That was the line which actualy describes the bug which we're
> > fixing.  Or perhaps it was a single word?  "zeroes".
> > 
> > 
> > I did this:
> > 
> > Nathan reported that
> > : 
> > : | commit 73d60b7f747176dbdff826c4127d22e1fd3f9f74
> > : | Author: Yinghai Lu <yinghai at kernel.org>
> > : | Date:   Tue Jun 16 15:33:00 2009 -0700
> > : |
> > : |    page-allocator: clear N_HIGH_MEMORY map before we set it again
> > : |
> > : |    SRAT tables may contains nodes of very small size.  The arch code may
> > : |    decide to not activate such a node.  However, currently the early boot
> > : |    code sets N_HIGH_MEMORY for such nodes.  These nodes therefore seem to be
> > : |    active although these nodes have no present pages.
> > : |
> > : |    For 64bit N_HIGH_MEMORY == N_NORMAL_MEMORY, so that works for 64 bit too
> > : 
> 
> "
> > : unintentionally and incorrectly clears the cpuset.mems cgroup attribute on
> > : an i386 kvm guest
> "
> ==> 
> 
> 32bit assume NORMAL_MEMORY bit and HIGH_MEMORY bit are set for 
> Node0 always.

Where in the code is this assumption?

> and some code only check if HIGH_MEMORY is there to know if 
> NORMAL_MEMORY is there.

Which code is that exactly?

	Ingo
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list