<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/include/linux/gfp.h, branch linux-2.6.21.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.21.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.21.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2007-02-11T18:51:18Z</updated>
<entry>
<title>[PATCH] optional ZONE_DMA: optional ZONE_DMA in the VM</title>
<updated>2007-02-11T18:51:18Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2007-02-10T09:43:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4b51d66989218aad731a721b5b28c79bf5388c09'/>
<id>urn:sha1:4b51d66989218aad731a721b5b28c79bf5388c09</id>
<content type='text'>
Make ZONE_DMA optional in core code.

- ifdef all code for ZONE_DMA and related definitions following the example
  for ZONE_DMA32 and ZONE_HIGHMEM.

- Without ZONE_DMA, ZONE_HIGHMEM and ZONE_DMA32 we get to a ZONES_SHIFT of
  0.

- Modify the VM statistics to work correctly without a DMA zone.

- Modify slab to not create DMA slabs if there is no ZONE_DMA.

[akpm@osdl.org: cleanup]
[jdike@addtoit.com: build fix]
[apw@shadowen.org: Simplify calculation of the number of bits we need for ZONES_SHIFT]
Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Cc: Andi Kleen &lt;ak@suse.de&gt;
Cc: "Luck, Tony" &lt;tony.luck@intel.com&gt;
Cc: Kyle McMartin &lt;kyle@mcmartin.ca&gt;
Cc: Matthew Wilcox &lt;willy@debian.org&gt;
Cc: James Bottomley &lt;James.Bottomley@steeleye.com&gt;
Cc: Paul Mundt &lt;lethal@linux-sh.org&gt;
Signed-off-by: Andy Whitcroft &lt;apw@shadowen.org&gt;
Signed-off-by: Jeff Dike &lt;jdike@addtoit.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] in non-NUMA case mark GFP_THISNODE gfp_t</title>
<updated>2007-02-09T17:14:06Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2007-02-09T16:38:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f2e97df669d32f74152336f46e4e0e328b993c57'/>
<id>urn:sha1:f2e97df669d32f74152336f46e4e0e328b993c57</id>
<content type='text'>
... operations with it are OK as is, but flags &amp; ~0 will have no idea that
this ~0 is meant to be ~gfp_t.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] mm: add arch_alloc_page</title>
<updated>2006-12-07T16:39:21Z</updated>
<author>
<name>Nick Piggin</name>
</author>
<published>2006-12-07T04:32:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cc102509074bba0316f2b5deebd7ef4447da295e'/>
<id>urn:sha1:cc102509074bba0316f2b5deebd7ef4447da295e</id>
<content type='text'>
Add an arch_alloc_page to match arch_free_page.

Signed-off-by: Nick Piggin &lt;npiggin@suse.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] Disable GFP_THISNODE in the non-NUMA case</title>
<updated>2006-09-27T15:26:12Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-09-27T08:50:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=77f700dab4c05f8ee17584ec869672796d7bcb87'/>
<id>urn:sha1:77f700dab4c05f8ee17584ec869672796d7bcb87</id>
<content type='text'>
GFP_THISNODE must be set to 0 in the non numa case otherwise we disable retry
and warnings for failing allocations in the SMP and UP case.

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] Define easier to handle GFP_THISNODE</title>
<updated>2006-09-26T15:48:50Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-09-26T06:31:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=980128f223fa3c75e3ebdde650c9f1bcabd4c0a2'/>
<id>urn:sha1:980128f223fa3c75e3ebdde650c9f1bcabd4c0a2</id>
<content type='text'>
In many places we will need to use the same combination of flags.  Specify
a single GFP_THISNODE definition for ease of use in gfp.h.

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] Add __GFP_THISNODE to avoid fallback to other nodes and ignore cpuset/memory policy restrictions</title>
<updated>2006-09-26T15:48:50Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-09-26T06:31:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9b819d204cf602eab1a53a9ec4b8d2ca51e02a1d'/>
<id>urn:sha1:9b819d204cf602eab1a53a9ec4b8d2ca51e02a1d</id>
<content type='text'>
Add a new gfp flag __GFP_THISNODE to avoid fallback to other nodes.  This
flag is essential if a kernel component requires memory to be located on a
certain node.  It will be needed for alloc_pages_node() to force allocation
on the indicated node and for alloc_pages() to force allocation on the
current node.

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Cc: Andy Whitcroft &lt;apw@shadowen.org&gt;
Cc: Mel Gorman &lt;mel@csn.ul.ie&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] linearly index zone-&gt;node_zonelists[]</title>
<updated>2006-09-26T15:48:47Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-09-26T06:31:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=19655d3487001d7df0e10e9cbfc27c758b77c2b5'/>
<id>urn:sha1:19655d3487001d7df0e10e9cbfc27c758b77c2b5</id>
<content type='text'>
I wonder why we need this bitmask indexing into zone-&gt;node_zonelists[]?

We always start with the highest zone and then include all lower zones
if we build zonelists.

Are there really cases where we need allocation from ZONE_DMA or
ZONE_HIGHMEM but not ZONE_NORMAL? It seems that the current implementation
of highest_zone() makes that already impossible.

If we go linear on the index then gfp_zone() == highest_zone() and a lot
of definitions fall by the wayside.

We can now revert back to the use of gfp_zone() in mempolicy.c ;-)

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] mempolicies: fix policy_zone check</title>
<updated>2006-09-26T15:48:47Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-09-26T06:31:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4e4785bcf0c8503224fa6c17d8e0228de781bff6'/>
<id>urn:sha1:4e4785bcf0c8503224fa6c17d8e0228de781bff6</id>
<content type='text'>
There is a check in zonelist_policy that compares pieces of the bitmap
obtained from a gfp mask via GFP_ZONETYPES with a zone number in function
zonelist_policy().

The bitmap is an ORed mask of __GFP_DMA, __GFP_DMA32 and __GFP_HIGHMEM.
The policy_zone is a zone number with the possible values of ZONE_DMA,
ZONE_DMA32, ZONE_HIGHMEM and ZONE_NORMAL. These are two different domains
of values.

For some reason seemed to work before the zone reduction patchset (It
definitely works on SGI boxes since we just have one zone and the check
cannot fail).

With the zone reduction patchset this check definitely fails on systems
with two zones if the system actually has memory in both zones.

This is because ZONE_NORMAL is selected using no __GFP flag at
all and thus gfp_zone(gfpmask) == 0. ZONE_DMA is selected when __GFP_DMA
is set. __GFP_DMA is 0x01.  So gfp_zone(gfpmask) == 1.

policy_zone is set to ZONE_NORMAL (==1) if ZONE_NORMAL and ZONE_DMA are
populated.

For ZONE_NORMAL gfp_zone(&lt;no _GFP_DMA&gt;) yields 0 which is &lt;
policy_zone(ZONE_NORMAL) and so policy is not applied to regular memory
allocations!

Instead gfp_zone(__GFP_DMA) == 1 which results in policy being applied
to DMA allocations!

What we realy want in that place is to establish the highest allowable
zone for a given gfp_mask. If the highest zone is higher or equal to the
policy_zone then memory policies need to be applied. We have such
a highest_zone() function in page_alloc.c.

So move the highest_zone() function from mm/page_alloc.c into
include/linux/gfp.h.  On the way we simplify the function and use the new
zone_type that was also introduced with the zone reduction patchset plus we
also specify the right type for the gfp flags parameter.

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Signed-off-by: Lee Schermerhorn &lt;Lee.Schermerhorn@hp.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] reduce MAX_NR_ZONES: make ZONE_HIGHMEM optional</title>
<updated>2006-09-26T15:48:46Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-09-26T06:31:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e53ef38d05dd59ed281a35590e4a5b64d8ff4c52'/>
<id>urn:sha1:e53ef38d05dd59ed281a35590e4a5b64d8ff4c52</id>
<content type='text'>
Make ZONE_HIGHMEM optional

- ifdef out code and definitions related to CONFIG_HIGHMEM

- __GFP_HIGHMEM falls back to normal allocations if there is no
  ZONE_HIGHMEM

- GFP_ZONEMASK becomes 0x01 if there is no DMA32 and no HIGHMEM
  zone.

[jdike@addtoit.com: build fix]
Signed-off-by: Jeff Dike &lt;jdike@addtoit.com&gt;
Signed-off-by: Christoph Lameter &lt;clameter@engr.sgi.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] reduce MAX_NR_ZONES: make ZONE_DMA32 optional</title>
<updated>2006-09-26T15:48:46Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-09-26T06:31:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fb0e7942bdcbbd2f90e61cb4cfa4fa892a873f8a'/>
<id>urn:sha1:fb0e7942bdcbbd2f90e61cb4cfa4fa892a873f8a</id>
<content type='text'>
Make ZONE_DMA32 optional

- Add #ifdefs around ZONE_DMA32 specific code and definitions.

- Add CONFIG_ZONE_DMA32 config option and use that for x86_64
  that alone needs this zone.

- Remove the use of CONFIG_DMA_IS_DMA32 and CONFIG_DMA_IS_NORMAL
  for ia64 and fix up the way per node ZVCs are calculated.

- Fall back to prior GFP_ZONEMASK of 0x03 if there is no
  DMA32 zone.

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
</feed>
