linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com>
To: linux-arch@vger.kernel.org
Cc: Paul Mundt <lethal@linux-sh.org>,
	Christoph Hellwig <hch@infradead.org>,
	James Bottomley <James.Bottomley@SteelEye.com>,
	Arjan van de Ven <arjan@infradead.org>,
	linux-mm@kvack.org, Russell King <rmk@arm.linux.org.uk>,
	Christoph Lameter <clameter@sgi.com>, Andi Kleen <ak@suse.de>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: [PATCH 5/8] Optional ZONE_DMA for x86_64
Date: Mon, 18 Sep 2006 11:36:40 -0700 (PDT)	[thread overview]
Message-ID: <20060918183640.19679.45514.sendpatchset@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <20060918183614.19679.50359.sendpatchset@schroedinger.engr.sgi.com>

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

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2006-09-18 18:36 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-18 18:36 [PATCH 0/8] Optional ZONE_DMA V2 Christoph Lameter
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 ` Christoph Lameter [this message]
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
     [not found]   ` <20060911222729.4849.69497.sendpatchset@schroedinger.engr.sgi.com>
     [not found]     ` <20060911222744.4849.26386.sendpatchset@schroedinger.engr.sgi.com>
     [not found]       ` <450600C7.7090801@yahoo.com.au>
2006-09-12  1:40         ` [PATCH 3/6] Optional ZONE_DMA in the VM Christoph Lameter
     [not found]     ` <20060912133457.GC10689@sgi.com>
     [not found]       ` <Pine.LNX.4.64.0609121032310.11278@schroedinger.engr.sgi.com>
2006-09-12 17:47         ` [PATCH 0/8] Optional ZONE_DMA V1 Martin Bligh
2006-09-12 17:53           ` Christoph Lameter
     [not found]     ` <1158046205.2992.1.camel@laptopd505.fenrus.org>
     [not found]       ` <Pine.LNX.4.64.0609121024290.11188@schroedinger.engr.sgi.com>
     [not found]         ` <yq0d5a0fbcj.fsf@jaguar.mkp.net>
     [not found]           ` <Pine.LNX.4.64.0609130109030.15792@schroedinger.engr.sgi.com>
     [not found]             ` <4507D4EE.4060501@sgi.com>
2006-09-13 17:23               ` Christoph Lameter
2006-09-13 17:49                 ` Jack Steiner
2006-09-13 18:00                   ` Christoph Lameter
2006-09-14  8:52                     ` Jes Sorensen
2006-09-14 16:55                       ` Christoph Lameter
     [not found]     ` <20060911222739.4849.79915.sendpatchset@schroedinger.engr.sgi.com>
     [not found]       ` <20060918135559.GB15096@infradead.org>
     [not found]         ` <20060918152243.GA4320@localhost.na.rta>
2006-09-18 17:33           ` [PATCH 2/6] Introduce CONFIG_ZONE_DMA Christoph Lameter
2006-09-18 22:45             ` Paul Mundt
2006-09-18 22:58               ` Christoph Lameter
2006-09-18 23:25                 ` Paul Mundt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060918183640.19679.45514.sendpatchset@schroedinger.engr.sgi.com \
    --to=clameter@sgi.com \
    --cc=James.Bottomley@SteelEye.com \
    --cc=ak@suse.de \
    --cc=arjan@infradead.org \
    --cc=hch@infradead.org \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=lethal@linux-sh.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=rmk@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox