x86: merge include/asm-x86/sparsemem.h

2008-01-30 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8a423ff0c4a0472607bbed6790fdaeec54af2ebb
Commit: 8a423ff0c4a0472607bbed6790fdaeec54af2ebb
Parent: 4757d7d8d00c5f8b2c176ca03b0a8eabbc206664
Author: Thomas Gleixner <[EMAIL PROTECTED]>
AuthorDate: Wed Jan 30 13:30:37 2008 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 13:30:37 2008 +0100

    x86: merge include/asm-x86/sparsemem.h

Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
---
 include/asm-x86/mmzone_64.h|2 ++
 include/asm-x86/sparsemem.h|   39 ++-
 include/asm-x86/sparsemem_32.h |   28 
 include/asm-x86/sparsemem_64.h |   26 --
 4 files changed, 36 insertions(+), 59 deletions(-)

diff --git a/include/asm-x86/mmzone_64.h b/include/asm-x86/mmzone_64.h
index 19a8937..1e0ed34 100644
--- a/include/asm-x86/mmzone_64.h
+++ b/include/asm-x86/mmzone_64.h
@@ -41,6 +41,8 @@ static inline __attribute__((pure)) int phys_to_nid(unsigned 
long addr)
 #define node_end_pfn(nid)   (NODE_DATA(nid)->node_start_pfn + \
 NODE_DATA(nid)->node_spanned_pages)
 
+extern int early_pfn_to_nid(unsigned long pfn);
+
 #ifdef CONFIG_DISCONTIGMEM
 #define pfn_to_nid(pfn) phys_to_nid((unsigned long)(pfn) << PAGE_SHIFT)
 
diff --git a/include/asm-x86/sparsemem.h b/include/asm-x86/sparsemem.h
dissimilarity index 68%
index 3f203b1..fa58cd5 100644
--- a/include/asm-x86/sparsemem.h
+++ b/include/asm-x86/sparsemem.h
@@ -1,5 +1,34 @@
-#ifdef CONFIG_X86_32
-# include "sparsemem_32.h"
-#else
-# include "sparsemem_64.h"
-#endif
+#ifndef _ASM_X86_SPARSEMEM_H
+#define _ASM_X86_SPARSEMEM_H
+
+#ifdef CONFIG_SPARSEMEM
+/*
+ * generic non-linear memory support:
+ *
+ * 1) we will not split memory into more chunks than will fit into the flags
+ *field of the struct page
+ *
+ * SECTION_SIZE_BITS   2^n: size of each section
+ * MAX_PHYSADDR_BITS   2^n: max size of physical address space
+ * MAX_PHYSMEM_BITS2^n: how much memory we can have in that space
+ *
+ */
+
+#ifdef CONFIG_X86_32
+# ifdef CONFIG_X86_PAE
+#  define SECTION_SIZE_BITS30
+#  define MAX_PHYSADDR_BITS36
+#  define MAX_PHYSMEM_BITS 36
+# else
+#  define SECTION_SIZE_BITS26
+#  define MAX_PHYSADDR_BITS32
+#  define MAX_PHYSMEM_BITS 32
+# endif
+#else /* CONFIG_X86_32 */
+# define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */
+# define MAX_PHYSADDR_BITS 40
+# define MAX_PHYSMEM_BITS  40
+#endif
+
+#endif /* CONFIG_SPARSEMEM */
+#endif
diff --git a/include/asm-x86/sparsemem_32.h b/include/asm-x86/sparsemem_32.h
deleted file mode 100644
index d89c321..000
--- a/include/asm-x86/sparsemem_32.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _I386_SPARSEMEM_H
-#define _I386_SPARSEMEM_H
-#ifdef CONFIG_SPARSEMEM
-
-/*
- * generic non-linear memory support:
- *
- * 1) we will not split memory into more chunks than will fit into the
- *flags field of the struct page
- */
-
-/*
- * SECTION_SIZE_BITS   2^N: how big each section will be
- * MAX_PHYSADDR_BITS   2^N: how much physical address space we have
- * MAX_PHYSMEM_BITS2^N: how much memory we can have in that space
- */
-#ifdef CONFIG_X86_PAE
-#define SECTION_SIZE_BITS   30
-#define MAX_PHYSADDR_BITS   36
-#define MAX_PHYSMEM_BITS   36
-#else
-#define SECTION_SIZE_BITS   26
-#define MAX_PHYSADDR_BITS   32
-#define MAX_PHYSMEM_BITS   32
-#endif
-
-#endif /* CONFIG_SPARSEMEM */
-#endif /* _I386_SPARSEMEM_H */
diff --git a/include/asm-x86/sparsemem_64.h b/include/asm-x86/sparsemem_64.h
deleted file mode 100644
index dabb167..000
--- a/include/asm-x86/sparsemem_64.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _ASM_X86_64_SPARSEMEM_H
-#define _ASM_X86_64_SPARSEMEM_H 1
-
-#ifdef CONFIG_SPARSEMEM
-
-/*
- * generic non-linear memory support:
- *
- * 1) we will not split memory into more chunks than will fit into the flags
- *field of the struct page
- *
- * SECTION_SIZE_BITS   2^n: size of each section
- * MAX_PHYSADDR_BITS   2^n: max size of physical address space
- * MAX_PHYSMEM_BITS2^n: how much memory we can have in that space
- *
- */
-
-#define SECTION_SIZE_BITS  27 /* matt - 128 is convenient right now */
-#define MAX_PHYSADDR_BITS  40
-#define MAX_PHYSMEM_BITS   40
-
-extern int early_pfn_to_nid(unsigned long pfn);
-
-#endif /* CONFIG_SPARSEMEM */
-
-#endif /* _ASM_X86_64_SPARSEMEM_H */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


x86: merge include/asm-x86/sparsemem.h

2008-01-30 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e1d9197862ff4d950dab45669b7f37b5ec3219d8
Commit: e1d9197862ff4d950dab45669b7f37b5ec3219d8
Parent: 8a423ff0c4a0472607bbed6790fdaeec54af2ebb
Author: Thomas Gleixner <[EMAIL PROTECTED]>
AuthorDate: Wed Jan 30 13:30:37 2008 +0100
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Wed Jan 30 13:30:37 2008 +0100

    x86: merge include/asm-x86/sparsemem.h

Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
---
 include/asm-x86/io_apic.h|  158 +-
 include/asm-x86/io_apic_32.h |  155 -
 include/asm-x86/io_apic_64.h |  134 ---
 3 files changed, 156 insertions(+), 291 deletions(-)

diff --git a/include/asm-x86/io_apic.h b/include/asm-x86/io_apic.h
index 8849496..0f5b3fe 100644
--- a/include/asm-x86/io_apic.h
+++ b/include/asm-x86/io_apic.h
@@ -1,5 +1,159 @@
+#ifndef __ASM_IO_APIC_H
+#define __ASM_IO_APIC_H
+
+#include 
+#include 
+#include 
+
+/*
+ * Intel IO-APIC support for SMP and UP systems.
+ *
+ * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar
+ */
+
+/*
+ * The structure of the IO-APIC:
+ */
+union IO_APIC_reg_00 {
+   u32 raw;
+   struct {
+   u32 __reserved_2: 14,
+   LTS :  1,
+   delivery_type   :  1,
+   __reserved_1:  8,
+   ID  :  8;
+   } __attribute__ ((packed)) bits;
+};
+
+union IO_APIC_reg_01 {
+   u32 raw;
+   struct {
+   u32 version :  8,
+   __reserved_2:  7,
+   PRQ :  1,
+   entries :  8,
+   __reserved_1:  8;
+   } __attribute__ ((packed)) bits;
+};
+
+union IO_APIC_reg_02 {
+   u32 raw;
+   struct {
+   u32 __reserved_2: 24,
+   arbitration :  4,
+   __reserved_1:  4;
+   } __attribute__ ((packed)) bits;
+};
+
+union IO_APIC_reg_03 {
+   u32 raw;
+   struct {
+   u32 boot_DT :  1,
+   __reserved_1: 31;
+   } __attribute__ ((packed)) bits;
+};
+
+enum ioapic_irq_destination_types {
+   dest_Fixed = 0,
+   dest_LowestPrio = 1,
+   dest_SMI = 2,
+   dest__reserved_1 = 3,
+   dest_NMI = 4,
+   dest_INIT = 5,
+   dest__reserved_2 = 6,
+   dest_ExtINT = 7
+};
+
+struct IO_APIC_route_entry {
+   __u32   vector  :  8,
+   delivery_mode   :  3,   /* 000: FIXED
+* 001: lowest prio
+* 111: ExtINT
+*/
+   dest_mode   :  1,   /* 0: physical, 1: logical */
+   delivery_status :  1,
+   polarity:  1,
+   irr :  1,
+   trigger :  1,   /* 0: edge, 1: level */
+   mask:  1,   /* 0: enabled, 1: disabled */
+   __reserved_2: 15;
+
 #ifdef CONFIG_X86_32
-# include "io_apic_32.h"
+   union {
+   struct {
+   __u32   __reserved_1: 24,
+   physical_dest   :  4,
+   __reserved_2:  4;
+   } physical;
+
+   struct {
+   __u32   __reserved_1: 24,
+   logical_dest:  8;
+   } logical;
+   } dest;
 #else
-# include "io_apic_64.h"
+   __u32   __reserved_3: 24,
+   dest:  8;
+#endif
+
+} __attribute__ ((packed));
+
+#ifdef CONFIG_X86_IO_APIC
+
+/*
+ * # of IO-APICs and # of IRQ routing registers
+ */
+extern int nr_ioapics;
+extern int nr_ioapic_registers[MAX_IO_APICS];
+
+/*
+ * MP-BIOS irq configuration table structures:
+ */
+
+/* I/O APIC entries */
+extern struct mpc_config_ioapic mp_ioapics[MAX_IO_APICS];
+
+/* # of MP IRQ source entries */
+extern int mp_irq_entries;
+
+/* MP IRQ source entries */
+extern struct mpc_config_intsrc mp_irqs[MAX_IRQ_SOURCES];
+
+/* non-0 if default (table-less) MP configuration */
+extern int mpc_default_type;
+
+/* Older SiS APIC requires we rewrite the index register */
+extern int sis_apic_bug;
+
+/* 1 if "noapic" boot option passed */
+extern int skip_ioapic_setup;
+
+static inline void disable_ioapic_setup(void)
+{
+   skip_ioapic_setup = 1;
+}
+
+/*
+ * If we use the IO-APIC for IRQ routing, disable automatic
+ * assignment of PCI IRQ's.
+ */
+#define io_apic_assign_pci_irqs \
+   (mp_irq_entries && !skip_ioapic_setup && io_apic_irqs)
+
+#ifdef CONFIG_A