[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] MAX_DMADOM_PFN



On Thu, Jan 26, 2006 at 02:03:46PM -0600, Jon Mason wrote:
> On Thu, Jan 26, 2006 at 10:19:20AM +0900, Isaku Yamahata wrote:
> > 
> > made MAX_DMADOM_PFN page size aware.
> > 4K page size was assumed, however it is not true for xen/ia64.
> > It should also be possible for arch dependent code to override it.
> > 
> > # HG changeset patch
> > # User yamahata@xxxxxxxxxxxxx
> > # Node ID 0c2b703c79333c01e4cccef1fbac1d01c6c7daa7
> > # Parent  5b004f4e76cf90ef6f7155a4822e63b9e33cf7d8
> > made MAX_DMADOM_PFN aware of page size.
> > 4K page size was assumed. It is not true for xen/ia64 by default.
> > It should also be possible for arch dependent code to override it.
> > 
> > Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
> > 
> > diff -r 5b004f4e76cf -r 0c2b703c7933 xen/common/page_alloc.c
> > --- a/xen/common/page_alloc.c       Wed Jan 25 23:35:22 2006 +0100
> > +++ b/xen/common/page_alloc.c       Thu Jan 26 10:09:39 2006 +0900
> > @@ -216,7 +216,9 @@
> >  #define NR_ZONES    3
> >  
> >  
> > -#define MAX_DMADOM_PFN 0x7FFFFUL /* 31 addressable bits */
> > +#ifndef MAX_DMADOM_PFN /* arch-depedent code can override */
> > +#define MAX_DMADOM_PFN (0x7FFFFFFFUL >> PAGE_SHIFT) /* 31 addressable bits 
> > */
> > +#endif
> >  #define pfn_dom_zone_type(_pfn)                                 \
> >      (((_pfn) <= MAX_DMADOM_PFN) ? MEMZONE_DMADOM : MEMZONE_DOM)
> 
> Why only 31bits?
> 
> Also, wouldn't it be better to define this in <asm/dma.h>?  x86-64 added
> similar #defines to include/asm-x86_64/dma.h relatively recently (see
> MAX_DMA32_PFN).  This would be a good model to follow.

I added asm-xxx/dma.h to each archs and moved
MAX_DMADOM_PFN definition to these files.
But I left the value as it was.
(I only did compile tests for x86_32 and ia64.)

Is this patch acceptable or should I refine more?

# HG changeset patch
# User yamahata@xxxxxxxxxxxxx
# Node ID 322423fd19f90adeea2dfe248b794d53de3cbb81
# Parent  2add7a26253079c1d9d6ba87a37aa72c89358a06
made MAX_DMADOM_PFN page size aware and arch dependent.
4K page size was assumed, however it is not true for xen/ia64.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>

diff -r 2add7a262530 -r 322423fd19f9 xen/common/page_alloc.c
--- a/xen/common/page_alloc.c   Fri Jan 27 16:17:38 2006 +0100
+++ b/xen/common/page_alloc.c   Mon Jan 30 11:56:52 2006 +0900
@@ -33,6 +33,7 @@
 #include <xen/shadow.h>
 #include <xen/domain_page.h>
 #include <asm/page.h>
+#include <asm/dma.h>
 
 /*
  * Comma-separated list of hexadecimal page numbers containing bad bytes.
@@ -216,7 +217,6 @@
 #define NR_ZONES    3
 
 
-#define MAX_DMADOM_PFN 0x7FFFFUL /* 31 addressable bits */
 #define pfn_dom_zone_type(_pfn)                                 \
     (((_pfn) <= MAX_DMADOM_PFN) ? MEMZONE_DMADOM : MEMZONE_DOM)
 
diff -r 2add7a262530 -r 322423fd19f9 xen/include/asm-ia64/linux-xen/asm/dma.h
--- /dev/null   Thu Jan  1 00:00:00 1970 +0000
+++ b/xen/include/asm-ia64/linux-xen/asm/dma.h  Mon Jan 30 11:56:52 2006 +0900
@@ -0,0 +1,25 @@
+#ifndef _ASM_IA64_DMA_H
+#define _ASM_IA64_DMA_H
+
+/*
+ * Copyright (C) 1998-2002 Hewlett-Packard Co
+ *     David Mosberger-Tang <davidm@xxxxxxxxxx>
+ */
+
+#include <linux/config.h>
+
+#include <asm/io.h>            /* need byte IO */
+
+extern unsigned long MAX_DMA_ADDRESS;
+
+#ifdef CONFIG_PCI
+  extern int isa_dma_bridge_buggy;
+#else
+# define isa_dma_bridge_buggy  (0)
+#endif
+
+#define free_dma(x)
+
+#define MAX_DMADOM_PFN (0x7FFFFFFFUL >> PAGE_SHIFT) /* 31 addressable bits */
+
+#endif /* _ASM_IA64_DMA_H */
diff -r 2add7a262530 -r 322423fd19f9 xen/include/asm-x86/dma.h
--- /dev/null   Thu Jan  1 00:00:00 1970 +0000
+++ b/xen/include/asm-x86/dma.h Mon Jan 30 11:56:52 2006 +0900
@@ -0,0 +1,16 @@
+/*
+ * dma.h
+ */
+
+#ifndef _ASM_X86_DMA_H
+#define _ASM_X86_DMA_H
+
+#include <asm/page.h>
+
+#if defined(__i386__)
+# include <asm/x86_32/dma.h>
+#elif defined(__x86_64__)
+# include <asm/x86_64/dma.h>
+#endif
+
+#endif /* _ASM_X86_DMA_H */
diff -r 2add7a262530 -r 322423fd19f9 xen/include/asm-x86/x86_32/dma.h
--- /dev/null   Thu Jan  1 00:00:00 1970 +0000
+++ b/xen/include/asm-x86/x86_32/dma.h  Mon Jan 30 11:56:52 2006 +0900
@@ -0,0 +1,10 @@
+/*
+ * x86_32/dma.h
+ */
+
+#ifndef _ASM_X86_32_DMA_H
+#define _ASM_X86_32_DMA_H
+
+#define MAX_DMADOM_PFN (0x7FFFFFFFUL >> PAGE_SHIFT) /* 31 addressable bits */
+
+#endif /* _ASM_X86_32_DMA_H */
diff -r 2add7a262530 -r 322423fd19f9 xen/include/asm-x86/x86_64/dma.h
--- /dev/null   Thu Jan  1 00:00:00 1970 +0000
+++ b/xen/include/asm-x86/x86_64/dma.h  Mon Jan 30 11:56:52 2006 +0900
@@ -0,0 +1,10 @@
+/*
+ * x86_64/dma.h
+ */
+
+#ifndef _ASM_X86_64_DMA_H
+#define _ASM_X86_64_DMA_H
+
+#define MAX_DMADOM_PFN (0x7FFFFFFFUL >> PAGE_SHIFT) /* 31 addressable bits */
+
+#endif /* _ASM_X86_64_DMA_H */
diff -r 2add7a262530 -r 322423fd19f9 xen/include/asm-ia64/linux/asm/dma.h
--- a/xen/include/asm-ia64/linux/asm/dma.h      Fri Jan 27 16:17:38 2006 +0100
+++ /dev/null   Thu Jan  1 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#ifndef _ASM_IA64_DMA_H
-#define _ASM_IA64_DMA_H
-
-/*
- * Copyright (C) 1998-2002 Hewlett-Packard Co
- *     David Mosberger-Tang <davidm@xxxxxxxxxx>
- */
-
-#include <linux/config.h>
-
-#include <asm/io.h>            /* need byte IO */
-
-extern unsigned long MAX_DMA_ADDRESS;
-
-#ifdef CONFIG_PCI
-  extern int isa_dma_bridge_buggy;
-#else
-# define isa_dma_bridge_buggy  (0)
-#endif
-
-#define free_dma(x)
-
-#endif /* _ASM_IA64_DMA_H */


-- 
yamahata

Attachment: 8681:322423fd19f9.patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.