public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
       [not found]   ` <20060911222739.4849.79915.sendpatchset@schroedinger.engr.sgi.com>
@ 2006-09-18 13:55     ` Christoph Hellwig
  2006-09-18 14:08       ` Martin Schwidefsky
                         ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: Christoph Hellwig @ 2006-09-18 13:55 UTC (permalink / raw)
  To: Christoph Lameter
  Cc: linux-mm, Nick Piggin, Christoph Hellwig, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Mon, Sep 11, 2006 at 03:27:39PM -0700, Christoph Lameter wrote:
> Introduce CONFIG_ZONE_DMA
> 
> This patch simply defines CONFIG_ZONE_DMA for all arches. We later do
> special things with CONFIG_ZONE_DMA after the VM and an arch are
> prepared to work without ZONE_DMA.
> 
> CONFIG_ZONE_DMA can be defined in two ways depending on how
> an architecture handles ISA DMA.
> 
> First if CONFIG_GENERIC_ISA_DMA is set by the arch then we know that
> the arch needs ZONE_DMA because ISA DMA devices are supported. We
> can catch this in mm/Kconfig and do not need to modify arch code.
> 
> Second, arches may use ZONE_DMA in an unknown way. We set CONFIG_ZONE_DMA
> for all arches that do not set CONFIG_GENERIC_ISA_DMA in order to insure
> backwards compatibility. The arches may later undefine ZONE_DMA
> if their arch code has been verified to not depend on ZONE_DMA.

Let's pass this on to linux-arch so that the arch maintainers can give input
whether they need ZONE_DMA or not.  If this just sneaks in unseen I'd bet
various architectures will just keept it around despite not needing it.


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 13:55     ` [PATCH 2/6] Introduce CONFIG_ZONE_DMA Christoph Hellwig
@ 2006-09-18 14:08       ` Martin Schwidefsky
  2006-09-18 17:28         ` Christoph Lameter
  2006-09-18 14:42       ` Russell King
                         ` (2 subsequent siblings)
  3 siblings, 1 reply; 21+ messages in thread
From: Martin Schwidefsky @ 2006-09-18 14:08 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Christoph Lameter, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Mon, 2006-09-18 at 14:55 +0100, Christoph Hellwig wrote:
> > Second, arches may use ZONE_DMA in an unknown way. We set CONFIG_ZONE_DMA
> > for all arches that do not set CONFIG_GENERIC_ISA_DMA in order to insure
> > backwards compatibility. The arches may later undefine ZONE_DMA
> > if their arch code has been verified to not depend on ZONE_DMA.
> 
> Let's pass this on to linux-arch so that the arch maintainers can give input
> whether they need ZONE_DMA or not.  If this just sneaks in unseen I'd bet
> various architectures will just keept it around despite not needing it.

s390 needs ZONE_DMA for the memory area below 2GB. That is required for
the control structure of channel based I/O. It is not ISA but
conceptually related. Can we rename GENERIC_ISA_DMA into GENERIC_IO_DMA
or something similar?

-- 
blue skies,
  Martin.

Martin Schwidefsky
Linux for zSeries Development & Services
IBM Deutschland Entwicklung GmbH

"Reality continues to ruin my life." - Calvin.



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 13:55     ` [PATCH 2/6] Introduce CONFIG_ZONE_DMA Christoph Hellwig
  2006-09-18 14:08       ` Martin Schwidefsky
@ 2006-09-18 14:42       ` Russell King
  2006-09-18 14:58       ` James Bottomley
  2006-09-18 15:22       ` Paul Mundt
  3 siblings, 0 replies; 21+ messages in thread
From: Russell King @ 2006-09-18 14:42 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Christoph Lameter, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Mon, Sep 18, 2006 at 02:55:59PM +0100, Christoph Hellwig wrote:
> Let's pass this on to linux-arch so that the arch maintainers can give input
> whether they need ZONE_DMA or not.  If this just sneaks in unseen I'd bet
> various architectures will just keept it around despite not needing it.

Thanks Chris - I'd have missed this otherwise.

FWIW, several ARM platforms do make use of ZONE_DMA, though not all, so
it's not safe to assume that it can be turned off just because it's ARM.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 Serial core

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 13:55     ` [PATCH 2/6] Introduce CONFIG_ZONE_DMA Christoph Hellwig
  2006-09-18 14:08       ` Martin Schwidefsky
  2006-09-18 14:42       ` Russell King
@ 2006-09-18 14:58       ` James Bottomley
  2006-09-18 17:30         ` Christoph Lameter
  2006-09-18 15:22       ` Paul Mundt
  3 siblings, 1 reply; 21+ messages in thread
From: James Bottomley @ 2006-09-18 14:58 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Christoph Lameter, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Mon, 2006-09-18 at 14:55 +0100, Christoph Hellwig wrote:
> Let's pass this on to linux-arch so that the arch maintainers can give input
> whether they need ZONE_DMA or not.  If this just sneaks in unseen I'd bet
> various architectures will just keept it around despite not needing it.

Right at the moment, parisc has no use for ZONE_DMA.  We basically set
ZONE_DMA == ZONE_NORMAL.  I don't believe our 32 bit systems will ever
need it.  On the 64 bit systems currently we insist on having an IOMMU
for every transaction, so ZONE_DMA == ZONE_NORMAL still.  However, on
the zx1 systems, I can see us eventually implementing IOMMU bypass and
for that case, we might need ZONE_DMA (primarily for GFP_DMA32, I
suppose, which we could do internally).

James



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 13:55     ` [PATCH 2/6] Introduce CONFIG_ZONE_DMA Christoph Hellwig
                         ` (2 preceding siblings ...)
  2006-09-18 14:58       ` James Bottomley
@ 2006-09-18 15:22       ` Paul Mundt
  2006-09-18 17:33         ` Christoph Lameter
  3 siblings, 1 reply; 21+ messages in thread
From: Paul Mundt @ 2006-09-18 15:22 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Christoph Lameter, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Mon, Sep 18, 2006 at 02:55:59PM +0100, Christoph Hellwig wrote:
> On Mon, Sep 11, 2006 at 03:27:39PM -0700, Christoph Lameter wrote:
> > Second, arches may use ZONE_DMA in an unknown way. We set CONFIG_ZONE_DMA
> > for all arches that do not set CONFIG_GENERIC_ISA_DMA in order to insure
> > backwards compatibility. The arches may later undefine ZONE_DMA
> > if their arch code has been verified to not depend on ZONE_DMA.
> 
> Let's pass this on to linux-arch so that the arch maintainers can give input
> whether they need ZONE_DMA or not.  If this just sneaks in unseen I'd bet
> various architectures will just keept it around despite not needing it.
> 
sh and sh64 have no use for ZONE_DMA, it's effectively ZONE_DMA ==
ZONE_NORMAL anyways, so it can be safely switched off (though
arch/sh/mm/init.c should then be changed to use ZONE_NORMAL if ZONE_DMA
goes away, as we currently place all lowmem in ZONE_DMA, likewise for
sh64). None of our DMA controllers have any particular limitations where
ZONE_DMA would be useful at least.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 14:08       ` Martin Schwidefsky
@ 2006-09-18 17:28         ` Christoph Lameter
  2006-09-19  8:03           ` Martin Schwidefsky
  0 siblings, 1 reply; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 17:28 UTC (permalink / raw)
  To: Martin Schwidefsky
  Cc: Christoph Hellwig, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Mon, 18 Sep 2006, Martin Schwidefsky wrote:

> s390 needs ZONE_DMA for the memory area below 2GB. That is required for
> the control structure of channel based I/O. It is not ISA but
> conceptually related. Can we rename GENERIC_ISA_DMA into GENERIC_IO_DMA
> or something similar?

The patchset defines CONFIG_ZONE_DMA for s390 so you are fine.


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 14:58       ` James Bottomley
@ 2006-09-18 17:30         ` Christoph Lameter
  0 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 17:30 UTC (permalink / raw)
  To: James Bottomley
  Cc: Christoph Hellwig, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Mon, 18 Sep 2006, James Bottomley wrote:

> On Mon, 2006-09-18 at 14:55 +0100, Christoph Hellwig wrote:
> > Let's pass this on to linux-arch so that the arch maintainers can give input
> > whether they need ZONE_DMA or not.  If this just sneaks in unseen I'd bet
> > various architectures will just keept it around despite not needing it.
> 
> Right at the moment, parisc has no use for ZONE_DMA.  We basically set
> ZONE_DMA == ZONE_NORMAL.  I don't believe our 32 bit systems will ever
> need it.  On the 64 bit systems currently we insist on having an IOMMU
> for every transaction, so ZONE_DMA == ZONE_NORMAL still.  However, on
> the zx1 systems, I can see us eventually implementing IOMMU bypass and
> for that case, we might need ZONE_DMA (primarily for GFP_DMA32, I
> suppose, which we could do internally).

What does parisc do with GENERIC_ISA_DMA? I see

config GENERIC_ISA_DMA
        bool

No default and no explanation?

Can I drop this from parisc's Kconfig? Is GENERIC_ISA_DMA set or not?


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 15:22       ` Paul Mundt
@ 2006-09-18 17:33         ` Christoph Lameter
  2006-09-18 22:45           ` Paul Mundt
  0 siblings, 1 reply; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 17:33 UTC (permalink / raw)
  To: Paul Mundt
  Cc: Christoph Hellwig, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Tue, 19 Sep 2006, Paul Mundt wrote:

> sh and sh64 have no use for ZONE_DMA, it's effectively ZONE_DMA ==
> ZONE_NORMAL anyways, so it can be safely switched off (though
> arch/sh/mm/init.c should then be changed to use ZONE_NORMAL if ZONE_DMA
> goes away, as we currently place all lowmem in ZONE_DMA, likewise for
> sh64). None of our DMA controllers have any particular limitations where
> ZONE_DMA would be useful at least.

Ok. I dropped the CONFIG_ZONE_DMA for sh so you will no longer have a DMA 
zone when this patch goes in.
 
sh64 has the same strange code as parisc:

config GENERIC_ISA_DMA
        bool

You do not have ISA_DMA so I should drop these lines?


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 0/8] Optional ZONE_DMA V2
@ 2006-09-18 18:36 Christoph Lameter
       [not found] ` <20060911222729.4849.69497.sendpatchset@schroedinger.engr.sgi.com>
                   ` (8 more replies)
  0 siblings, 9 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, KAMEZAWA Hiroyuki,
	Andi Kleen

Optional ZONE_DMA V2

V1->V2
- Sh sh64 and parisc do not need ZONE_DMA so do not define
  CONFIG_ZONE_DMA for those zones. Add patches for those
  arches to remove the use of ZONE_DMA (untested since
  I do not have those arches).
- Update documentation after feedback from V1.

This patch follows up on the earlier work in Andrew's tree to reduce
the number of zones. The patches allow to go to a minimum of 2 zones.
This one allows also to make ZONE_DMA optional and therefore the
number of zones can be reduced to one.

ZONE_DMA is usually used for ISA DMA devices. There are a number
of reasons why we would not want to have ZONE_DMA

1. Some arches do not need ZONE_DMA at all.

2. With the advent of IOMMUs DMA zones are no longer needed.
   The necessity of DMA zones may drastically be reduced
   in the future. This patchset allows a compilation of
   a kernel without that overhead.

3. Devices that require ISA DMA get rare these days. All
   my systems do not have any need for ISA DMA.

4. The presence of an additional zone unecessarily complicates
   VM operations because it must be scanned and balancing
   logic must operate on its.

5. With only ZONE_NORMAL one can reach the situation where
   we have only one zone. This will allow the unrolling of many
   loops in the VM and allows the optimization of varous
   code paths in the VM.

6. Having only a single zone in a NUMA system results in a
   1-1 correspondence between nodes and zones. Various additional
   optimizations to critical VM paths become possible.

Many systems today can operate just fine with a single zone.
If you look at what is in ZONE_DMA then one usually sees that nothing
uses it. The DMA slabs are empty (Some arches use ZONE_DMA instead
of ZONE_NORMAL, then ZONE_NORMAL will be empty instead).

On all of my systems (i386, x86_64, ia64) ZONE_DMA is completely empty.
Why constantly look at an empty zone in /proc/zoneinfo and empty slab
in /proc/slabinfo?  Non i386 also frequently have no need for ZONE_DMA
and zones stay empty.

The patchset was tested on i386 (UP / SMP), x86_64 (UP, NUMA) and
ia64 (NUMA).

The RFC posted earlier (see
http://marc.theaimsgroup.com/?l=linux-kernel&m=115231723513008&w=2)
had lots of #ifdefs in them. An effort has been made to minize the number
of #ifdefs and make this as compact as possible. The job was made much easier
by the ongoing efforts of others to extract common arch specific functionality.

I have been running this for awhile now on my desktop and finally Linux is
using all my available RAM instead of leaving the 16MB in ZONE_DMA untouched:

christoph@pentium940:~$ cat /proc/zoneinfo
Node 0, zone   Normal
  pages free     4435
        min      1448
        low      1810
        high     2172
        active   241786
        inactive 210170
        scanned  0 (a: 0 i: 0)
        spanned  524224
        present  524224
    nr_anon_pages 61680
    nr_mapped    14271
    nr_file_pages 390264
    nr_slab_reclaimable 27564
    nr_slab_unreclaimable 1793
    nr_page_table_pages 449
    nr_dirty     39
    nr_writeback 0
    nr_unstable  0
    nr_bounce    0
    cpu: 0 pcp: 0
              count: 156
              high:  186
              batch: 31
    cpu: 0 pcp: 1
              count: 9
              high:  62
              batch: 15
  vm stats threshold: 20
    cpu: 1 pcp: 0
              count: 177
              high:  186
              batch: 31
    cpu: 1 pcp: 1
              count: 12
              high:  62
              batch: 15
  vm stats threshold: 20
  all_unreclaimable: 0
  prev_priority:     12
  temp_priority:     12
  start_pfn:         0


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 1/8] Deal with cases of ZONE_DMA meaning the first zone
  2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
       [not found] ` <20060911222729.4849.69497.sendpatchset@schroedinger.engr.sgi.com>
@ 2006-09-18 18:36 ` Christoph Lameter
  2006-09-18 18:36 ` [PATCH 2/8] Introduce CONFIG_ZONE_DMA Christoph Lameter
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, Andi Kleen,
	KAMEZAWA Hiroyuki

Optional DMA zone: Replace uses of ZONE_DMA as the first zone

In two places in the VM we use ZONE_DMA to refer to the first zone.
If ZONE_DMA is optional then other zones may be first. So simply
replace ZONE_DMA with zone 0.

This also fixes ZONETABLE_PGSHIFT. If we have only a single zone then
ZONES_PGSHIFT may become 0 because there is no need anymore to encode the
zone number related to a pgdat. However, we still need a zonetable to index
all the zones for each node if this is a NUMA system. Therefore define
ZONETABLE_SHIFT unconditionally as the offset of the ZONE field in page flags.

Acked-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm2/mm/mempolicy.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/mm/mempolicy.c	2006-09-18 13:07:53.318935179 -0500
+++ linux-2.6.18-rc6-mm2/mm/mempolicy.c	2006-09-18 13:16:18.929008279 -0500
@@ -105,7 +105,7 @@ static struct kmem_cache *sn_cache;
 
 /* Highest zone. An specific allocation for a zone below that is not
    policied. */
-enum zone_type policy_zone = ZONE_DMA;
+enum zone_type policy_zone = 0;
 
 struct mempolicy default_policy = {
 	.refcnt = ATOMIC_INIT(1), /* never free it */
Index: linux-2.6.18-rc6-mm2/mm/page_alloc.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/mm/page_alloc.c	2006-09-18 13:16:14.463795639 -0500
+++ linux-2.6.18-rc6-mm2/mm/page_alloc.c	2006-09-18 13:27:53.271625765 -0500
@@ -2486,11 +2486,11 @@ static void __meminit free_area_init_cor
 				"  %s zone: %lu pages exceeds realsize %lu\n",
 				zone_names[j], memmap_pages, realsize);
 
-		/* Account for reserved DMA pages */
-		if (j == ZONE_DMA && realsize > dma_reserve) {
+		/* Account for reserved pages */
+		if (j == 0 && realsize > dma_reserve) {
 			realsize -= dma_reserve;
-			printk(KERN_DEBUG "  DMA zone: %lu pages reserved\n",
-								dma_reserve);
+			printk(KERN_DEBUG "  %s zone: %lu pages reserved\n",
+					zone_names[0], dma_reserve);
 		}
 
 		if (!is_highmem_idx(j))
Index: linux-2.6.18-rc6-mm2/include/linux/mm.h
===================================================================
--- linux-2.6.18-rc6-mm2.orig/include/linux/mm.h	2006-09-18 13:16:14.000000000 -0500
+++ linux-2.6.18-rc6-mm2/include/linux/mm.h	2006-09-18 13:28:52.406396556 -0500
@@ -416,7 +416,7 @@ void split_page(struct page *page, unsig
 #else
 #define ZONETABLE_SHIFT		(SECTIONS_SHIFT + ZONES_SHIFT)
 #endif
-#define ZONETABLE_PGSHIFT	ZONES_PGSHIFT
+#define ZONETABLE_PGSHIFT	ZONES_PGOFF
 
 #if SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH > FLAGS_RESERVED
 #error SECTIONS_WIDTH+NODES_WIDTH+ZONES_WIDTH > FLAGS_RESERVED

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 2/8] Introduce CONFIG_ZONE_DMA
  2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
       [not found] ` <20060911222729.4849.69497.sendpatchset@schroedinger.engr.sgi.com>
  2006-09-18 18:36 ` [PATCH 1/8] Deal with cases of ZONE_DMA meaning the first zone Christoph Lameter
@ 2006-09-18 18:36 ` Christoph Lameter
  2006-09-18 18:36 ` [PATCH 3/8] Optional ZONE_DMA in the VM Christoph Lameter
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, KAMEZAWA Hiroyuki,
	Andi Kleen

Introduce CONFIG_ZONE_DMA

This patch simply defines CONFIG_ZONE_DMA for all arches. We later do
special things with CONFIG_ZONE_DMA after the VM and an arch are
prepared to work without ZONE_DMA.

CONFIG_ZONE_DMA can be defined in two ways depending on how
an architecture handles ISA DMA.

First if CONFIG_GENERIC_ISA_DMA is set by the arch then we know that
the arch needs ZONE_DMA because ISA DMA devices are supported. We
can catch this in mm/Kconfig and do not need to modify arch code.

Second, arches may use ZONE_DMA in an unknown way. We set CONFIG_ZONE_DMA
for all arches that do not set CONFIG_GENERIC_ISA_DMA in order to insure
backwards compatibility. The arches may later undefine ZONE_DMA
if their arch code has been verified to not depend on ZONE_DMA.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm2/mm/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/mm/Kconfig	2006-09-15 12:17:39.778004366 -0500
+++ linux-2.6.18-rc6-mm2/mm/Kconfig	2006-09-18 12:27:12.303278031 -0500
@@ -139,6 +139,10 @@ config SPLIT_PTLOCK_CPUS
 	default "4096" if PARISC && !PA20
 	default "4"
 
+config ZONE_DMA
+	def_bool y
+	depends on GENERIC_ISA_DMA
+
 #
 # support for page migration
 #
Index: linux-2.6.18-rc6-mm2/arch/ia64/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/ia64/Kconfig	2006-09-15 12:17:39.786794169 -0500
+++ linux-2.6.18-rc6-mm2/arch/ia64/Kconfig	2006-09-18 12:27:12.361876548 -0500
@@ -22,6 +22,10 @@ config 64BIT
 	bool
 	default y
 
+config ZONE_DMA
+	bool
+	default y
+
 config MMU
 	bool
 	default y
Index: linux-2.6.18-rc6-mm2/arch/cris/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/cris/Kconfig	2006-09-15 12:17:39.795583972 -0500
+++ linux-2.6.18-rc6-mm2/arch/cris/Kconfig	2006-09-18 12:27:12.388245880 -0500
@@ -9,6 +9,10 @@ config MMU
 	bool
 	default y
 
+config ZONE_DMA
+	bool
+	default y
+
 config RWSEM_GENERIC_SPINLOCK
 	bool
 	default y
Index: linux-2.6.18-rc6-mm2/arch/s390/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/s390/Kconfig	2006-09-15 12:17:39.804373775 -0500
+++ linux-2.6.18-rc6-mm2/arch/s390/Kconfig	2006-09-18 12:27:12.426334916 -0500
@@ -7,6 +7,10 @@ config MMU
 	bool
 	default y
 
+config ZONE_DMA
+	bool
+	default y
+
 config LOCKDEP_SUPPORT
 	bool
 	default y
Index: linux-2.6.18-rc6-mm2/arch/xtensa/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/xtensa/Kconfig	2006-09-15 12:17:39.813163578 -0500
+++ linux-2.6.18-rc6-mm2/arch/xtensa/Kconfig	2006-09-18 12:27:12.459540742 -0500
@@ -7,6 +7,10 @@ config FRAME_POINTER
 	bool
 	default n
 
+config ZONE_DMA
+	bool
+	default y
+
 config XTENSA
 	bool
 	default y
Index: linux-2.6.18-rc6-mm2/arch/h8300/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/h8300/Kconfig	2006-09-15 12:17:39.820976736 -0500
+++ linux-2.6.18-rc6-mm2/arch/h8300/Kconfig	2006-09-18 12:27:12.496653135 -0500
@@ -17,6 +17,10 @@ config SWAP
 	bool
 	default n
 
+config ZONE_DMA
+	bool
+	default y
+
 config FPU
 	bool
 	default n
Index: linux-2.6.18-rc6-mm2/arch/v850/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/v850/Kconfig	2006-09-15 12:17:39.830743184 -0500
+++ linux-2.6.18-rc6-mm2/arch/v850/Kconfig	2006-09-18 12:27:12.524975752 -0500
@@ -10,6 +10,9 @@ mainmenu "uClinux/v850 (w/o MMU) Kernel 
 config MMU
        	bool
 	default n
+config ZONE_DMA
+	bool
+	default y
 config RWSEM_GENERIC_SPINLOCK
 	bool
 	default y
Index: linux-2.6.18-rc6-mm2/arch/frv/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/frv/Kconfig	2006-09-15 12:17:39.847346146 -0500
+++ linux-2.6.18-rc6-mm2/arch/frv/Kconfig	2006-09-18 12:27:12.604083749 -0500
@@ -6,6 +6,10 @@ config FRV
 	bool
 	default y
 
+config ZONE_DMA
+	bool
+	default y
+
 config RWSEM_GENERIC_SPINLOCK
 	bool
 	default y
Index: linux-2.6.18-rc6-mm2/arch/m68knommu/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/m68knommu/Kconfig	2006-09-15 12:17:39.860042528 -0500
+++ linux-2.6.18-rc6-mm2/arch/m68knommu/Kconfig	2006-09-18 12:27:12.630453081 -0500
@@ -17,6 +17,10 @@ config FPU
 	bool
 	default n
 
+config ZONE_DMA
+	bool
+	default y
+
 config RWSEM_GENERIC_SPINLOCK
 	bool
 	default y


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 3/8] Optional ZONE_DMA in the VM
  2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
                   ` (2 preceding siblings ...)
  2006-09-18 18:36 ` [PATCH 2/8] Introduce CONFIG_ZONE_DMA Christoph Lameter
@ 2006-09-18 18:36 ` Christoph Lameter
  2006-09-18 18:36 ` [PATCH 4/8] Optional ZONE_DMA for i386 Christoph Lameter
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, Andi Kleen,
	KAMEZAWA Hiroyuki

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.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm2/include/linux/mmzone.h
===================================================================
--- linux-2.6.18-rc6-mm2.orig/include/linux/mmzone.h	2006-09-18 13:16:14.450122635 -0500
+++ linux-2.6.18-rc6-mm2/include/linux/mmzone.h	2006-09-18 13:16:29.139812806 -0500
@@ -91,6 +91,7 @@ struct per_cpu_pageset {
 #endif
 
 enum zone_type {
+#ifdef CONFIG_ZONE_DMA
 	/*
 	 * ZONE_DMA is used when there are devices that are not able
 	 * to do DMA to all of addressable memory (ZONE_NORMAL). Then we
@@ -111,6 +112,7 @@ enum zone_type {
 	 * 			<16M.
 	 */
 	ZONE_DMA,
+#endif
 #ifdef CONFIG_ZONE_DMA32
 	/*
 	 * x86_64 needs two ZONE_DMAs because it supports devices that are
@@ -148,7 +150,11 @@ enum zone_type {
  */
 
 #if !defined(CONFIG_ZONE_DMA32) && !defined(CONFIG_HIGHMEM)
+#if !defined(CONFIG_ZONE_DMA)
+#define ZONES_SHIFT 0
+#else
 #define ZONES_SHIFT 1
+#endif
 #else
 #define ZONES_SHIFT 2
 #endif
@@ -453,7 +459,11 @@ static inline int is_dma32(struct zone *
 
 static inline int is_dma(struct zone *zone)
 {
+#ifdef CONFIG_ZONE_DMA
 	return zone == zone->zone_pgdat->node_zones + ZONE_DMA;
+#else
+	return 0;
+#endif
 }
 
 /* These two functions are used to setup the per zone pages min values */
Index: linux-2.6.18-rc6-mm2/mm/page_alloc.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/mm/page_alloc.c	2006-09-18 13:16:18.945611213 -0500
+++ linux-2.6.18-rc6-mm2/mm/page_alloc.c	2006-09-18 13:16:29.159345669 -0500
@@ -71,7 +71,9 @@ static void __free_pages_ok(struct page 
  * don't need any ZONE_NORMAL reservation
  */
 int sysctl_lowmem_reserve_ratio[MAX_NR_ZONES-1] = {
+#ifdef CONFIG_ZONE_DMA
 	 256,
+#endif
 #ifdef CONFIG_ZONE_DMA32
 	 256,
 #endif
@@ -90,7 +92,9 @@ struct zone *zone_table[1 << ZONETABLE_S
 EXPORT_SYMBOL(zone_table);
 
 static char *zone_names[MAX_NR_ZONES] = {
+#ifdef CONFIG_ZONE_DMA
 	 "DMA",
+#endif
 #ifdef CONFIG_ZONE_DMA32
 	 "DMA32",
 #endif
Index: linux-2.6.18-rc6-mm2/include/linux/gfp.h
===================================================================
--- linux-2.6.18-rc6-mm2.orig/include/linux/gfp.h	2006-09-18 13:16:13.307450110 -0500
+++ linux-2.6.18-rc6-mm2/include/linux/gfp.h	2006-09-18 13:16:29.170088744 -0500
@@ -80,8 +80,10 @@ struct vm_area_struct;
 
 static inline enum zone_type gfp_zone(gfp_t flags)
 {
+#ifdef CONFIG_ZONE_DMA
 	if (flags & __GFP_DMA)
 		return ZONE_DMA;
+#endif
 #ifdef CONFIG_ZONE_DMA32
 	if (flags & __GFP_DMA32)
 		return ZONE_DMA32;
Index: linux-2.6.18-rc6-mm2/mm/slab.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/mm/slab.c	2006-09-18 13:16:15.423835889 -0500
+++ linux-2.6.18-rc6-mm2/mm/slab.c	2006-09-18 13:16:29.187668322 -0500
@@ -1441,13 +1441,14 @@ void __init kmem_cache_init(void)
 					ARCH_KMALLOC_FLAGS|SLAB_PANIC,
 					NULL, NULL);
 		}
-
+#ifdef CONFIG_ZONE_DMA
 		sizes->cs_dmacachep = kmem_cache_create(names->name_dma,
 					sizes->cs_size,
 					ARCH_KMALLOC_MINALIGN,
 					ARCH_KMALLOC_FLAGS|SLAB_CACHE_DMA|
 						SLAB_PANIC,
 					NULL, NULL);
+#endif
 		sizes++;
 		names++;
 	}
@@ -2275,8 +2276,10 @@ kmem_cache_create (const char *name, siz
 	cachep->slab_size = slab_size;
 	cachep->flags = flags;
 	cachep->gfpflags = 0;
+#ifdef CONFIG_ZONE_DMA
 	if (flags & SLAB_CACHE_DMA)
 		cachep->gfpflags |= GFP_DMA;
+#endif
 	cachep->buffer_size = size;
 
 	if (flags & CFLGS_OFF_SLAB) {
Index: linux-2.6.18-rc6-mm2/include/linux/slab.h
===================================================================
--- linux-2.6.18-rc6-mm2.orig/include/linux/slab.h	2006-09-18 13:07:52.648958109 -0500
+++ linux-2.6.18-rc6-mm2/include/linux/slab.h	2006-09-18 13:16:29.199388040 -0500
@@ -72,7 +72,11 @@ extern const char *kmem_cache_name(kmem_
 struct cache_sizes {
 	size_t		 cs_size;
 	kmem_cache_t	*cs_cachep;
+#ifdef CONFIG_ZONE_DMA
 	kmem_cache_t	*cs_dmacachep;
+#else
+#define cs_dmacachep cs_cachep
+#endif
 };
 extern struct cache_sizes malloc_sizes[];
 
Index: linux-2.6.18-rc6-mm2/mm/vmstat.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/mm/vmstat.c	2006-09-18 13:07:52.686070541 -0500
+++ linux-2.6.18-rc6-mm2/mm/vmstat.c	2006-09-18 13:16:29.207201186 -0500
@@ -437,6 +437,12 @@ struct seq_operations fragmentation_op =
 	.show	= frag_show,
 };
 
+#ifdef CONFIG_ZONE_DMA
+#define TEXT_FOR_DMA(xx) xx "_dma",
+#else
+#define TEXT_FOR_DMA(xx)
+#endif
+
 #ifdef CONFIG_ZONE_DMA32
 #define TEXT_FOR_DMA32(xx) xx "_dma32",
 #else
@@ -449,7 +455,7 @@ struct seq_operations fragmentation_op =
 #define TEXT_FOR_HIGHMEM(xx)
 #endif
 
-#define TEXTS_FOR_ZONES(xx) xx "_dma", TEXT_FOR_DMA32(xx) xx "_normal", \
+#define TEXTS_FOR_ZONES(xx) TEXT_FOR_DMA(xx) TEXT_FOR_DMA32(xx) xx "_normal", \
 					TEXT_FOR_HIGHMEM(xx)
 
 static char *vmstat_text[] = {
Index: linux-2.6.18-rc6-mm2/include/linux/vmstat.h
===================================================================
--- linux-2.6.18-rc6-mm2.orig/include/linux/vmstat.h	2006-09-18 13:07:52.660677824 -0500
+++ linux-2.6.18-rc6-mm2/include/linux/vmstat.h	2006-09-18 13:16:29.215990974 -0500
@@ -17,6 +17,12 @@
  * generated will simply be the increment of a global address.
  */
 
+#ifdef CONFIG_ZONE_DMA
+#define DMA_ZONE(xx) xx##_DMA,
+#else
+#define DMA_ZONE(xx)
+#endif
+
 #ifdef CONFIG_ZONE_DMA32
 #define DMA32_ZONE(xx) xx##_DMA32,
 #else
@@ -29,7 +35,7 @@
 #define HIGHMEM_ZONE(xx)
 #endif
 
-#define FOR_ALL_ZONES(xx) xx##_DMA, DMA32_ZONE(xx) xx##_NORMAL HIGHMEM_ZONE(xx)
+#define FOR_ALL_ZONES(xx) DMA_ZONE(xx) DMA32_ZONE(xx) xx##_NORMAL HIGHMEM_ZONE(xx)
 
 enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
 		FOR_ALL_ZONES(PGALLOC),
@@ -88,7 +94,8 @@ extern void vm_events_fold_cpu(int cpu);
 #endif /* CONFIG_VM_EVENT_COUNTERS */
 
 #define __count_zone_vm_events(item, zone, delta) \
-			__count_vm_events(item##_DMA + zone_idx(zone), delta)
+		__count_vm_events(item##_NORMAL - ZONE_NORMAL + \
+		zone_idx(zone), delta)
 
 /*
  * Zone based page accounting with per cpu differentials.
@@ -135,14 +142,16 @@ static inline unsigned long node_page_st
 	struct zone *zones = NODE_DATA(node)->node_zones;
 
 	return
+#ifdef CONFIG_ZONE_DMA
+		zone_page_state(&zones[ZONE_DMA], item) +
+#endif
 #ifdef CONFIG_ZONE_DMA32
 		zone_page_state(&zones[ZONE_DMA32], item) +
 #endif
-		zone_page_state(&zones[ZONE_NORMAL], item) +
 #ifdef CONFIG_HIGHMEM
 		zone_page_state(&zones[ZONE_HIGHMEM], item) +
 #endif
-		zone_page_state(&zones[ZONE_DMA], item);
+		zone_page_state(&zones[ZONE_NORMAL], item);
 }
 
 extern void zone_statistics(struct zonelist *, struct zone *);

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 4/8] Optional ZONE_DMA for i386
  2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
                   ` (3 preceding siblings ...)
  2006-09-18 18:36 ` [PATCH 3/8] Optional ZONE_DMA in the VM Christoph Lameter
@ 2006-09-18 18:36 ` Christoph Lameter
  2006-09-18 18:36 ` [PATCH 5/8] Optional ZONE_DMA for x86_64 Christoph Lameter
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, KAMEZAWA Hiroyuki,
	Andi Kleen

i386: Optional ZONE_DMA

ZONE_DMA depends on GENERIC_ISA_DMA. We allow the user to configure
GENERIC_ISA_DMA. If it is switched off then ISA_DMA_API is also
switched off which will deselect all drivers that depend on ISA
functionality.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm1/arch/i386/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/i386/Kconfig	2006-09-08 06:42:11.697455315 -0500
+++ linux-2.6.18-rc6-mm1/arch/i386/Kconfig	2006-09-11 15:41:55.911259588 -0500
@@ -41,10 +41,6 @@
 config SBUS
 	bool
 
-config GENERIC_ISA_DMA
-	bool
-	default y
-
 config GENERIC_IOMAP
 	bool
 	default y
@@ -346,6 +342,15 @@
           XFree86 to initialize some video cards via BIOS. Disabling this
           option saves about 6k.
 
+config GENERIC_ISA_DMA
+	bool "ISA DMA zone (to support ISA legacy DMA)"
+	default y
+	help
+	  If DMA for ISA boards needs to be supported then this option
+	  needs to be enabled. An additional DMA zone for <16MB memory
+	  will be created and memory below 16MB will be used for those
+	  devices.
+
 config TOSHIBA
 	tristate "Toshiba Laptop support"
 	---help---
@@ -1071,6 +1076,7 @@
 
 config ISA_DMA_API
 	bool
+	depends on GENERIC_ISA_DMA
 	default y
 
 config ISA
Index: linux-2.6.18-rc6-mm1/arch/i386/kernel/Makefile
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/i386/kernel/Makefile	2006-09-08 06:42:11.780470103 -0500
+++ linux-2.6.18-rc6-mm1/arch/i386/kernel/Makefile	2006-09-11 15:41:55.950325419 -0500
@@ -7,8 +7,9 @@
 obj-y	:= process.o signal.o entry.o traps.o irq.o \
 		ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_i386.o \
 		pci-dma.o i386_ksyms.o i387.o bootflag.o \
-		quirks.o i8237.o topology.o alternative.o i8253.o tsc.o
+		quirks.o topology.o alternative.o i8253.o tsc.o
 
+obj-$(CONFIG_GENERIC_ISA_DMA)	+= i8237.o
 obj-$(CONFIG_STACKTRACE)	+= stacktrace.o
 obj-y				+= cpu/
 obj-y				+= acpi/
Index: linux-2.6.18-rc6-mm1/arch/i386/kernel/setup.c
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/i386/kernel/setup.c	2006-09-08 06:42:12.269769024 -0500
+++ linux-2.6.18-rc6-mm1/arch/i386/kernel/setup.c	2006-09-11 15:41:55.982554730 -0500
@@ -1075,13 +1075,17 @@
 {
 #ifdef CONFIG_HIGHMEM
 	unsigned long max_zone_pfns[MAX_NR_ZONES] = {
+#ifdef CONFIG_ZONE_DMA
 			virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT,
+#endif
 			max_low_pfn,
 			highend_pfn};
 	add_active_range(0, 0, highend_pfn);
 #else
 	unsigned long max_zone_pfns[MAX_NR_ZONES] = {
+#ifdef CONFIG_ZONE_DMA
 			virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT,
+#endif
 			max_low_pfn};
 	add_active_range(0, 0, max_low_pfn);
 #endif

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 5/8] Optional ZONE_DMA for x86_64
  2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
                   ` (4 preceding siblings ...)
  2006-09-18 18:36 ` [PATCH 4/8] Optional ZONE_DMA for i386 Christoph Lameter
@ 2006-09-18 18:36 ` Christoph Lameter
  2006-09-18 18:36 ` [PATCH 6/8] Optional ZONE_DMA for ia64 Christoph Lameter
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, Andi Kleen,
	KAMEZAWA Hiroyuki

x86_64: optional ZONE_DMA/ZONE_DMA32

Allow the use to specify CONFIG_ZONE_DMA32 and CONFIG_ZONE_DMA (via
CONFIG_GENERIC_ISA_DMA). The default is on to be on the safe side.

If CONFIG_ZONE_DMA is off then devices requiring ISA DMA can no
longer be selected.

There are no drivers depending on CONFIG_ZONE_DMA32. If CONFIG_ZONE_DMA32
is not set then the system assumes that DMA devices are capable of
doing DMA to all of memory. This is frequently the case if

1. No memory exists over the 4GB boundary (careful, some motherboards
   equipped with 4GB memory will have memory show up above the 4GB
   boundary!). It is safe if one has 2GB or less memory in an
   x86_64 system.

2. The system has an IOMMU.

3. All devices using DMA are supporting DMA to all memory.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm1/arch/x86_64/mm/init.c
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/x86_64/mm/init.c	2006-09-11 16:06:41.705747849 -0500
+++ linux-2.6.18-rc6-mm1/arch/x86_64/mm/init.c	2006-09-11 16:08:13.190088058 -0500
@@ -406,9 +406,15 @@
 #ifndef CONFIG_NUMA
 void __init paging_init(void)
 {
-	unsigned long max_zone_pfns[MAX_NR_ZONES] = {MAX_DMA_PFN,
-							MAX_DMA32_PFN,
-							end_pfn};
+	unsigned long max_zone_pfns[MAX_NR_ZONES] = {
+#ifdef CONFIG_ZONE_DMA
+		MAX_DMA_PFN,
+#endif
+#ifdef CONFIG_ZONE_DMA32
+		MAX_DMA32_PFN,
+#endif
+		end_pfn
+	};
 	memory_present(0, 0, end_pfn);
 	sparse_init();
 	free_area_init_nodes(max_zone_pfns);
Index: linux-2.6.18-rc6-mm1/arch/x86_64/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/x86_64/Kconfig	2006-09-11 16:06:41.713561013 -0500
+++ linux-2.6.18-rc6-mm1/arch/x86_64/Kconfig	2006-09-11 16:10:45.369039566 -0500
@@ -24,10 +24,6 @@
 	bool
 	default y
 
-config ZONE_DMA32
-	bool
-	default y
-
 config LOCKDEP_SUPPORT
 	bool
 	default y
@@ -73,10 +69,6 @@
 	bool
 	default y
 
-config GENERIC_ISA_DMA
-	bool
-	default y
-
 config GENERIC_IOMAP
 	bool
 	default y
@@ -251,6 +243,24 @@
 
 	  See <file:Documentation/mtrr.txt> for more information.
 
+config ZONE_DMA32
+	bool "32 Bit DMA Zone (only needed if memory >4GB)"
+	default y
+	help
+	  Some x64 configurations have 32 bit DMA controllers that cannot
+	  write to all of memory. If you have one of these and you have RAM
+	  beyond the 4GB boundary then enable this option.
+
+config GENERIC_ISA_DMA
+	bool "ISA DMA zone (to support ISA legacy DMA)"
+	default y
+	help
+	  If DMA for ISA boards needs to be supported then this option
+	  needs to be enabled. An additional DMA zone for <16MB memory
+	  will be created and memory below 16MB will be used for those
+	  devices. If this is deselected then devices that use ISA
+	  DMA will not be selectable.
+
 config SMP
 	bool "Symmetric multi-processing support"
 	---help---
@@ -611,6 +621,7 @@
 # we have no ISA slots, but we do have ISA-style DMA.
 config ISA_DMA_API
 	bool
+	depends on GENERIC_ISA_DMA
 	default y
 
 config GENERIC_PENDING_IRQ
Index: linux-2.6.18-rc6-mm1/arch/x86_64/kernel/Makefile
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/x86_64/kernel/Makefile	2006-09-11 16:06:41.726257405 -0500
+++ linux-2.6.18-rc6-mm1/arch/x86_64/kernel/Makefile	2006-09-11 16:08:13.214504197 -0500
@@ -7,9 +7,10 @@
 obj-y	:= process.o signal.o entry.o traps.o irq.o \
 		ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_x86_64.o \
 		x8664_ksyms.o i387.o syscall.o vsyscall.o \
-		setup64.o bootflag.o e820.o reboot.o quirks.o i8237.o \
+		setup64.o bootflag.o e820.o reboot.o quirks.o \
 		pci-dma.o pci-nommu.o alternative.o early-quirks.o
 
+obj-$(CONFIG_GENERIC_ISA_DMA)	+= i8237.o
 obj-$(CONFIG_STACKTRACE)	+= stacktrace.o
 obj-$(CONFIG_X86_MCE)         += mce.o
 obj-$(CONFIG_X86_MCE_INTEL)	+= mce_intel.o

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 6/8] Optional ZONE_DMA for ia64
  2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
                   ` (5 preceding siblings ...)
  2006-09-18 18:36 ` [PATCH 5/8] Optional ZONE_DMA for x86_64 Christoph Lameter
@ 2006-09-18 18:36 ` Christoph Lameter
  2006-09-18 18:36 ` [PATCH 7/8] Remove ZONE_DMA remains from parisc Christoph Lameter
  2006-09-18 18:36 ` [PATCH 8/8] Remove ZONE_DMA remains from sh/sh64 Christoph Lameter
  8 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, KAMEZAWA Hiroyuki,
	Andi Kleen

ZONE_DMA less operation for IA64 SGI platform

Disable ZONE_DMA for SGI SN2. All memory is addressable by all
devices and we do not need any special memory pool.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm1/arch/ia64/mm/discontig.c
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/ia64/mm/discontig.c	2006-09-11 16:42:07.206714114 -0500
+++ linux-2.6.18-rc6-mm1/arch/ia64/mm/discontig.c	2006-09-11 16:51:50.094129334 -0500
@@ -37,7 +37,9 @@
 	unsigned long pernode_size;
 	struct bootmem_data bootmem_data;
 	unsigned long num_physpages;
+#ifdef CONFIG_ZONE_DMA
 	unsigned long num_dma_physpages;
+#endif
 	unsigned long min_pfn;
 	unsigned long max_pfn;
 };
@@ -656,9 +658,11 @@
 
 	add_active_range(node, start >> PAGE_SHIFT, end >> PAGE_SHIFT);
 	mem_data[node].num_physpages += len >> PAGE_SHIFT;
+#ifdef CONFIG_ZONE_DMA
 	if (start <= __pa(MAX_DMA_ADDRESS))
 		mem_data[node].num_dma_physpages +=
 			(min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT;
+#endif
 	start = GRANULEROUNDDOWN(start);
 	start = ORDERROUNDDOWN(start);
 	end = GRANULEROUNDUP(end);
@@ -709,7 +713,9 @@
 			max_pfn = mem_data[node].max_pfn;
 	}
 
+#ifdef CONFIG_ZONE_DMA
 	max_zone_pfns[ZONE_DMA] = max_dma;
+#endif
 	max_zone_pfns[ZONE_NORMAL] = max_pfn;
 	free_area_init_nodes(max_zone_pfns);
 
Index: linux-2.6.18-rc6-mm1/arch/ia64/mm/contig.c
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/ia64/mm/contig.c	2006-09-11 16:42:07.215503923 -0500
+++ linux-2.6.18-rc6-mm1/arch/ia64/mm/contig.c	2006-09-11 16:51:50.104872434 -0500
@@ -231,8 +231,10 @@
 	num_physpages = 0;
 	efi_memmap_walk(count_pages, &num_physpages);
 
+#ifdef CONFIG_ZONE_DMA
 	max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT;
 	max_zone_pfns[ZONE_DMA] = max_dma;
+#endif
 	max_zone_pfns[ZONE_NORMAL] = max_low_pfn;
 
 #ifdef CONFIG_VIRTUAL_MEM_MAP
Index: linux-2.6.18-rc6-mm1/arch/ia64/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm1.orig/arch/ia64/Kconfig	2006-09-11 16:44:55.649739769 -0500
+++ linux-2.6.18-rc6-mm1/arch/ia64/Kconfig	2006-09-11 16:51:50.114638888 -0500
@@ -23,8 +23,8 @@
 	default y
 
 config ZONE_DMA
-	bool
-	default y
+	def_bool y
+	depends on !IA64_SGI_SN2
 
 config MMU
 	bool

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 7/8] Remove ZONE_DMA remains from parisc
  2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
                   ` (6 preceding siblings ...)
  2006-09-18 18:36 ` [PATCH 6/8] Optional ZONE_DMA for ia64 Christoph Lameter
@ 2006-09-18 18:36 ` Christoph Lameter
  2006-09-18 18:36 ` [PATCH 8/8] Remove ZONE_DMA remains from sh/sh64 Christoph Lameter
  8 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, Andi Kleen,
	KAMEZAWA Hiroyuki

parisc: arch does not need ZONE_DMA

Remove ZONE_DMA remains from parisc so that kernels are build without
ZONE_DMA.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm2/arch/parisc/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/parisc/Kconfig	2006-09-18 12:52:05.203892680 -0500
+++ linux-2.6.18-rc6-mm2/arch/parisc/Kconfig	2006-09-18 12:55:43.140754129 -0500
@@ -42,9 +42,6 @@ config TIME_LOW_RES
 	depends on SMP
 	default y
 
-config GENERIC_ISA_DMA
-	bool
-
 config GENERIC_HARDIRQS
 	def_bool y
 
Index: linux-2.6.18-rc6-mm2/arch/parisc/mm/init.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/parisc/mm/init.c	2006-09-18 12:52:05.217565682 -0500
+++ linux-2.6.18-rc6-mm2/arch/parisc/mm/init.c	2006-09-18 12:55:43.153450483 -0500
@@ -808,9 +808,7 @@ void __init paging_init(void)
 	for (i = 0; i < npmem_ranges; i++) {
 		unsigned long zones_size[MAX_NR_ZONES] = { 0, };
 
-		/* We have an IOMMU, so all memory can go into a single
-		   ZONE_DMA zone. */
-		zones_size[ZONE_DMA] = pmem_ranges[i].pages;
+		zones_size[ZONE_NORMAL] = pmem_ranges[i].pages;
 
 #ifdef CONFIG_DISCONTIGMEM
 		/* Need to initialize the pfnnid_map before we can initialize

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 8/8] Remove ZONE_DMA remains from sh/sh64
  2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
                   ` (7 preceding siblings ...)
  2006-09-18 18:36 ` [PATCH 7/8] Remove ZONE_DMA remains from parisc Christoph Lameter
@ 2006-09-18 18:36 ` Christoph Lameter
  8 siblings, 0 replies; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 18:36 UTC (permalink / raw)
  To: linux-arch
  Cc: Paul Mundt, Christoph Hellwig, James Bottomley, Arjan van de Ven,
	linux-mm, Russell King, Christoph Lameter, KAMEZAWA Hiroyuki,
	Andi Kleen

sh / sh64: Remove ZONE_DMA remains.

Both arches do not need ZONE_DMA

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm2/arch/sh/mm/init.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/sh/mm/init.c	2006-09-18 12:54:04.733274009 -0500
+++ linux-2.6.18-rc6-mm2/arch/sh/mm/init.c	2006-09-18 12:58:58.563038661 -0500
@@ -156,7 +156,6 @@ void __init paging_init(void)
 	 * Setup some defaults for the zone sizes.. these should be safe
 	 * regardless of distcontiguous memory or MMU settings.
 	 */
-	zones_size[ZONE_DMA] = 0 >> PAGE_SHIFT;
 	zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT;
 #ifdef CONFIG_HIGHMEM
 	zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT;
Index: linux-2.6.18-rc6-mm2/arch/sh64/mm/init.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/sh64/mm/init.c	2006-09-18 12:54:04.745970361 -0500
+++ linux-2.6.18-rc6-mm2/arch/sh64/mm/init.c	2006-09-18 12:58:58.577688302 -0500
@@ -118,10 +118,7 @@ void __init paging_init(void)
 
 	mmu_context_cache = MMU_CONTEXT_FIRST_VERSION;
 
-        /*
-	 * All memory is good as ZONE_NORMAL (fall-through) and ZONE_DMA.
-         */
-	zones_size[ZONE_DMA] = MAX_LOW_PFN - START_PFN;
+	zones_size[ZONE_NORMAL] = MAX_LOW_PFN - START_PFN;
 	NODE_DATA(0)->node_mem_map = NULL;
 	free_area_init_node(0, NODE_DATA(0), zones_size, __MEMORY_START >> PAGE_SHIFT, 0);
 }
Index: linux-2.6.18-rc6-mm2/arch/sh64/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/sh64/Kconfig	2006-09-18 12:33:04.000000000 -0500
+++ linux-2.6.18-rc6-mm2/arch/sh64/Kconfig	2006-09-18 13:01:07.919367272 -0500
@@ -36,9 +36,6 @@ config GENERIC_CALIBRATE_DELAY
 config RWSEM_XCHGADD_ALGORITHM
 	bool
 
-config GENERIC_ISA_DMA
-	bool
-
 source init/Kconfig
 
 menu "System type"

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 17:33         ` Christoph Lameter
@ 2006-09-18 22:45           ` Paul Mundt
  2006-09-18 22:58             ` Christoph Lameter
  0 siblings, 1 reply; 21+ messages in thread
From: Paul Mundt @ 2006-09-18 22:45 UTC (permalink / raw)
  To: Christoph Lameter
  Cc: Christoph Hellwig, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch, James Bottomley,
	Russell King

On Mon, Sep 18, 2006 at 10:33:00AM -0700, Christoph Lameter wrote:
> sh64 has the same strange code as parisc:
> 
> config GENERIC_ISA_DMA
>         bool
> 
> You do not have ISA_DMA so I should drop these lines?
> 
It doesn't really matter, this notation basically keeps it disabled
anyways (you'll note the absence of it from the defconfigs).

On Mon, Sep 18, 2006 at 11:36:55AM -0700, Christoph Lameter wrote:
> Index: linux-2.6.18-rc6-mm2/arch/sh/mm/init.c
> ===================================================================
> --- linux-2.6.18-rc6-mm2.orig/arch/sh/mm/init.c	2006-09-18 12:54:04.733274009 -0500
> +++ linux-2.6.18-rc6-mm2/arch/sh/mm/init.c	2006-09-18 12:58:58.563038661 -0500
> @@ -156,7 +156,6 @@ void __init paging_init(void)
>  	 * Setup some defaults for the zone sizes.. these should be safe
>  	 * regardless of distcontiguous memory or MMU settings.
>  	 */
> -	zones_size[ZONE_DMA] = 0 >> PAGE_SHIFT;
>  	zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT;
>  #ifdef CONFIG_HIGHMEM
>  	zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT;

You've missed the other ZONE_DMA references, if you scroll a bit further
down that's where we fill in ZONE_DMA, this is simply the default zone
layout that we rely on for nommu.

sh64 part looks fine.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 22:45           ` Paul Mundt
@ 2006-09-18 22:58             ` Christoph Lameter
  2006-09-18 23:25               ` Paul Mundt
  0 siblings, 1 reply; 21+ messages in thread
From: Christoph Lameter @ 2006-09-18 22:58 UTC (permalink / raw)
  To: Paul Mundt
  Cc: Christoph Hellwig, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch, James Bottomley,
	Russell King

On Tue, 19 Sep 2006, Paul Mundt wrote:

> You've missed the other ZONE_DMA references, if you scroll a bit further
> down that's where we fill in ZONE_DMA, this is simply the default zone
> layout that we rely on for nommu.

Are you sure that sh does not need ZONE_DMA? There is code in there
to check for the DMA boundary. The following patch disables that
code if CONFIG_ZONE_DMA is not set.



sh / sh64: Remove ZONE_DMA remains.

Both arches do not need ZONE_DMA

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.18-rc6-mm2/arch/sh/mm/init.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/sh/mm/init.c	2006-09-18 13:27:48.125691412 -0500
+++ linux-2.6.18-rc6-mm2/arch/sh/mm/init.c	2006-09-18 17:56:23.632421140 -0500
@@ -156,7 +156,6 @@ void __init paging_init(void)
 	 * Setup some defaults for the zone sizes.. these should be safe
 	 * regardless of distcontiguous memory or MMU settings.
 	 */
-	zones_size[ZONE_DMA] = 0 >> PAGE_SHIFT;
 	zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT;
 #ifdef CONFIG_HIGHMEM
 	zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT;
@@ -186,13 +185,16 @@ void __init paging_init(void)
 		max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
 		low = MAX_LOW_PFN;
 
-		if (low < max_dma) {
-			zones_size[ZONE_DMA] = low - start_pfn;
-			zones_size[ZONE_NORMAL] = 0;
-		} else {
+#ifdef CONFIG_ZONE_DMA
+		if (low < max_dma)
+#endif
+			zones_size[ZONE_NORMAL] = low - start_pfn;
+#ifdef CONFIG_ZONE_DMA
+		else {
 			zones_size[ZONE_DMA] = max_dma - start_pfn;
 			zones_size[ZONE_NORMAL] = low - max_dma;
 		}
+#endif
 	}
 
 #elif defined(CONFIG_CPU_SH3) || defined(CONFIG_CPU_SH4)
Index: linux-2.6.18-rc6-mm2/arch/sh64/mm/init.c
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/sh64/mm/init.c	2006-09-18 13:27:48.134481203 -0500
+++ linux-2.6.18-rc6-mm2/arch/sh64/mm/init.c	2006-09-18 17:54:14.263532486 -0500
@@ -118,10 +118,7 @@ void __init paging_init(void)
 
 	mmu_context_cache = MMU_CONTEXT_FIRST_VERSION;
 
-        /*
-	 * All memory is good as ZONE_NORMAL (fall-through) and ZONE_DMA.
-         */
-	zones_size[ZONE_DMA] = MAX_LOW_PFN - START_PFN;
+	zones_size[ZONE_NORMAL] = MAX_LOW_PFN - START_PFN;
 	NODE_DATA(0)->node_mem_map = NULL;
 	free_area_init_node(0, NODE_DATA(0), zones_size, __MEMORY_START >> PAGE_SHIFT, 0);
 }
Index: linux-2.6.18-rc6-mm2/arch/sh64/Kconfig
===================================================================
--- linux-2.6.18-rc6-mm2.orig/arch/sh64/Kconfig	2006-09-18 13:27:48.145224281 -0500
+++ linux-2.6.18-rc6-mm2/arch/sh64/Kconfig	2006-09-18 17:54:14.285995416 -0500
@@ -36,9 +36,6 @@ config GENERIC_CALIBRATE_DELAY
 config RWSEM_XCHGADD_ALGORITHM
 	bool
 
-config GENERIC_ISA_DMA
-	bool
-
 source init/Kconfig
 
 menu "System type"

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 22:58             ` Christoph Lameter
@ 2006-09-18 23:25               ` Paul Mundt
  0 siblings, 0 replies; 21+ messages in thread
From: Paul Mundt @ 2006-09-18 23:25 UTC (permalink / raw)
  To: Christoph Lameter
  Cc: Christoph Hellwig, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch, James Bottomley,
	Russell King

On Mon, Sep 18, 2006 at 03:58:52PM -0700, Christoph Lameter wrote:
> On Tue, 19 Sep 2006, Paul Mundt wrote:
> > You've missed the other ZONE_DMA references, if you scroll a bit further
> > down that's where we fill in ZONE_DMA, this is simply the default zone
> > layout that we rely on for nommu.
> 
> Are you sure that sh does not need ZONE_DMA? There is code in there
> to check for the DMA boundary. The following patch disables that
> code if CONFIG_ZONE_DMA is not set.
> 
Yes, MAX_DMA_ADDRESS (in include/asm-sh/dma.h) is from when we needed it for
alloc_bootmem(), we have no interest in it, but we can't kill off the
definition either since some drivers seem to rely on it.. It was also left
around in case some CPU variants with an arbitrary limitation in their
respective DMACs popped up.

All lowmem fits < MAX_DMA_ADDRESS and so gets stuffed in ZONE_DMA, as
per:

                if (low < max_dma) {
                        zones_size[ZONE_DMA] = low - start_pfn;
                        zones_size[ZONE_NORMAL] = 0;

So we may as well just do away with it entirely, via something like this:

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index 8ea27ca..40494f9 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -156,7 +156,6 @@ void __init paging_init(void)
 	 * Setup some defaults for the zone sizes.. these should be safe
 	 * regardless of distcontiguous memory or MMU settings.
 	 */
-	zones_size[ZONE_DMA] = 0 >> PAGE_SHIFT;
 	zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT;
 #ifdef CONFIG_HIGHMEM
 	zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT;
@@ -168,7 +167,7 @@ #ifdef CONFIG_MMU
 	 * the zone sizes accordingly, in addition to turning it on.
 	 */
 	{
-		unsigned long max_dma, low, start_pfn;
+		unsigned long low, start_pfn;
 		pgd_t *pg_dir;
 		int i;
 
@@ -183,16 +182,10 @@ #ifdef CONFIG_MMU
 
 		/* Fixup the zone sizes */
 		start_pfn = START_PFN;
-		max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
 		low = MAX_LOW_PFN;
 
-		if (low < max_dma) {
-			zones_size[ZONE_DMA] = low - start_pfn;
-			zones_size[ZONE_NORMAL] = 0;
-		} else {
-			zones_size[ZONE_DMA] = max_dma - start_pfn;
-			zones_size[ZONE_NORMAL] = low - max_dma;
-		}
+		/* No DMA limitation, shove all of lowmem in ZONE_NORMAL. */
+		zones_size[ZONE_NORMAL] = low - start_pfn;
 	}
 
 #elif defined(CONFIG_CPU_SH3) || defined(CONFIG_CPU_SH4)

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/6] Introduce CONFIG_ZONE_DMA
  2006-09-18 17:28         ` Christoph Lameter
@ 2006-09-19  8:03           ` Martin Schwidefsky
  0 siblings, 0 replies; 21+ messages in thread
From: Martin Schwidefsky @ 2006-09-19  8:03 UTC (permalink / raw)
  To: Christoph Lameter
  Cc: Christoph Hellwig, linux-mm, Nick Piggin, linux-ia64,
	Marcelo Tosatti, Arjan van de Ven, Martin Bligh,
	KAMEZAWA Hiroyuki, Andi Kleen, linux-arch

On Mon, 2006-09-18 at 10:28 -0700, Christoph Lameter wrote:
> > s390 needs ZONE_DMA for the memory area below 2GB. That is required for
> > the control structure of channel based I/O. It is not ISA but
> > conceptually related. Can we rename GENERIC_ISA_DMA into GENERIC_IO_DMA
> > or something similar?
> 
> The patchset defines CONFIG_ZONE_DMA for s390 so you are fine.

Ok, I've looked at the patch and defining ZONE_DMA is the
straightforward solution. No need to make detours over GENERIC_ISA_DMA.

-- 
blue skies,
  Martin.

Martin Schwidefsky
Linux for zSeries Development & Services
IBM Deutschland Entwicklung GmbH

"Reality continues to ruin my life." - Calvin.



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2006-09-19  8:03 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
     [not found] ` <20060911222729.4849.69497.sendpatchset@schroedinger.engr.sgi.com>
     [not found]   ` <20060911222739.4849.79915.sendpatchset@schroedinger.engr.sgi.com>
2006-09-18 13:55     ` [PATCH 2/6] Introduce CONFIG_ZONE_DMA Christoph Hellwig
2006-09-18 14:08       ` Martin Schwidefsky
2006-09-18 17:28         ` Christoph Lameter
2006-09-19  8:03           ` Martin Schwidefsky
2006-09-18 14:42       ` Russell King
2006-09-18 14:58       ` James Bottomley
2006-09-18 17:30         ` Christoph Lameter
2006-09-18 15:22       ` Paul Mundt
2006-09-18 17:33         ` Christoph Lameter
2006-09-18 22:45           ` Paul Mundt
2006-09-18 22:58             ` Christoph Lameter
2006-09-18 23:25               ` Paul Mundt
2006-09-18 18:36 ` [PATCH 1/8] Deal with cases of ZONE_DMA meaning the first zone Christoph Lameter
2006-09-18 18:36 ` [PATCH 2/8] Introduce CONFIG_ZONE_DMA Christoph Lameter
2006-09-18 18:36 ` [PATCH 3/8] Optional ZONE_DMA in the VM Christoph Lameter
2006-09-18 18:36 ` [PATCH 4/8] Optional ZONE_DMA for i386 Christoph Lameter
2006-09-18 18:36 ` [PATCH 5/8] Optional ZONE_DMA for x86_64 Christoph Lameter
2006-09-18 18:36 ` [PATCH 6/8] Optional ZONE_DMA for ia64 Christoph Lameter
2006-09-18 18:36 ` [PATCH 7/8] Remove ZONE_DMA remains from parisc Christoph Lameter
2006-09-18 18:36 ` [PATCH 8/8] Remove ZONE_DMA remains from sh/sh64 Christoph Lameter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox