LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH 00 of 10] x86: unify asm/pgtable.h
@ 2008-01-08 22:00 Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 01 of 10] x86: move all asm/pgtable constants into one place Jeremy Fitzhardinge
` (10 more replies)
0 siblings, 11 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Hi Ingo,
Here's a series which goes some way to tidying up pgtable.h. It is
not complete yet, but this lot compiles and works for me.
In many cases I've moved code around with no attempt at adjusting the
formatting to acceptible style. That can be done in a later patch,
but it means that checkpatch is noisy with this lot.
Thanks,
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 01 of 10] x86: move all asm/pgtable constants into one place
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 02 of 10] x86: avoid name conflict for Voyager leave_mm Jeremy Fitzhardinge
` (9 subsequent siblings)
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
32 and 64-bit use the same flags for pagetable entries, so make them all common.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
include/asm-x86/pgtable.h | 113 ++++++++++++++++++++++++++++++++++++++++++
include/asm-x86/pgtable_32.h | 110 ----------------------------------------
include/asm-x86/pgtable_64.h | 91 ---------------------------------
3 files changed, 113 insertions(+), 201 deletions(-)
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h
--- a/include/asm-x86/pgtable.h
+++ b/include/asm-x86/pgtable.h
@@ -1,5 +1,118 @@
+#ifndef _ASM_X86_PGTABLE_H
+#define _ASM_X86_PGTABLE_H
+
+#define USER_PTRS_PER_PGD ((TASK_SIZE-1)/PGDIR_SIZE+1)
+#define FIRST_USER_ADDRESS 0
+
+#define _PAGE_BIT_PRESENT 0
+#define _PAGE_BIT_RW 1
+#define _PAGE_BIT_USER 2
+#define _PAGE_BIT_PWT 3
+#define _PAGE_BIT_PCD 4
+#define _PAGE_BIT_ACCESSED 5
+#define _PAGE_BIT_DIRTY 6
+#define _PAGE_BIT_FILE 6
+#define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
+#define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
+#define _PAGE_BIT_UNUSED1 9 /* available for programmer */
+#define _PAGE_BIT_UNUSED2 10
+#define _PAGE_BIT_UNUSED3 11
+#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
+
+#define _PAGE_PRESENT (_AC(1, UL)<<_PAGE_BIT_PRESENT)
+#define _PAGE_RW (_AC(1, UL)<<_PAGE_BIT_RW)
+#define _PAGE_USER (_AC(1, UL)<<_PAGE_BIT_USER)
+#define _PAGE_PWT (_AC(1, UL)<<_PAGE_BIT_PWT)
+#define _PAGE_PCD (_AC(1, UL)<<_PAGE_BIT_PCD)
+#define _PAGE_ACCESSED (_AC(1, UL)<<_PAGE_BIT_ACCESSED)
+#define _PAGE_DIRTY (_AC(1, UL)<<_PAGE_BIT_DIRTY)
+#define _PAGE_PSE (_AC(1, UL)<<_PAGE_BIT_PSE) /* 2MB page */
+#define _PAGE_GLOBAL (_AC(1, UL)<<_PAGE_BIT_GLOBAL) /* Global TLB entry */
+#define _PAGE_UNUSED1 (_AC(1, UL)<<_PAGE_BIT_UNUSED1)
+#define _PAGE_UNUSED2 (_AC(1, UL)<<_PAGE_BIT_UNUSED2)
+#define _PAGE_UNUSED3 (_AC(1, UL)<<_PAGE_BIT_UNUSED3)
+
+#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
+#define _PAGE_NX (_AC(1, ULL) << _PAGE_BIT_NX)
+#else
+#define _PAGE_NX 0
+#endif
+
+/* If _PAGE_PRESENT is clear, we use these: */
+#define _PAGE_FILE _PAGE_DIRTY /* nonlinear file mapping, saved PTE; unset:swap */
+#define _PAGE_PROTNONE _PAGE_PSE /* if the user mapped it with PROT_NONE;
+ pte_present gives true */
+
+#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
+#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
+
+#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
+
+#define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
+#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
+
+#define PAGE_SHARED_EXEC __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
+#define PAGE_COPY_NOEXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
+#define PAGE_COPY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
+#define PAGE_COPY PAGE_COPY_NOEXEC
+#define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
+#define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
+
+#ifdef CONFIG_X86_32
+#define _PAGE_KERNEL_EXEC \
+ (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
+#define _PAGE_KERNEL (_PAGE_KERNEL_EXEC | _PAGE_NX)
+
+#ifndef __ASSEMBLER__
+extern unsigned long long __PAGE_KERNEL, __PAGE_KERNEL_EXEC;
+#endif /* __ASSEMBLER__ */
+#else
+#define __PAGE_KERNEL_EXEC \
+ (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
+#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
+#endif
+
+#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
+#define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
+#define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
+#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
+#define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT)
+#define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
+#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
+
+#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
+#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
+#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
+#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
+#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
+#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
+#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
+#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL)
+#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE)
+
+/* xwr */
+#define __P000 PAGE_NONE
+#define __P001 PAGE_READONLY
+#define __P010 PAGE_COPY
+#define __P011 PAGE_COPY
+#define __P100 PAGE_READONLY_EXEC
+#define __P101 PAGE_READONLY_EXEC
+#define __P110 PAGE_COPY_EXEC
+#define __P111 PAGE_COPY_EXEC
+
+#define __S000 PAGE_NONE
+#define __S001 PAGE_READONLY
+#define __S010 PAGE_SHARED
+#define __S011 PAGE_SHARED
+#define __S100 PAGE_READONLY_EXEC
+#define __S101 PAGE_READONLY_EXEC
+#define __S110 PAGE_SHARED_EXEC
+#define __S111 PAGE_SHARED_EXEC
+
#ifdef CONFIG_X86_32
# include "pgtable_32.h"
#else
# include "pgtable_64.h"
#endif
+
+#endif /* _ASM_X86_PGTABLE_H */
diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h
--- a/include/asm-x86/pgtable_32.h
+++ b/include/asm-x86/pgtable_32.h
@@ -58,9 +58,6 @@ void paging_init(void);
#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
#define PGDIR_MASK (~(PGDIR_SIZE-1))
-#define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE)
-#define FIRST_USER_ADDRESS 0
-
#define USER_PGD_PTRS (PAGE_OFFSET >> PGDIR_SHIFT)
#define KERNEL_PGD_PTRS (PTRS_PER_PGD-USER_PGD_PTRS)
@@ -83,113 +80,6 @@ void paging_init(void);
#else
# define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE)
#endif
-
-/*
- * _PAGE_PSE set in the page directory entry just means that
- * the page directory entry points directly to a 4MB-aligned block of
- * memory.
- */
-#define _PAGE_BIT_PRESENT 0
-#define _PAGE_BIT_RW 1
-#define _PAGE_BIT_USER 2
-#define _PAGE_BIT_PWT 3
-#define _PAGE_BIT_PCD 4
-#define _PAGE_BIT_ACCESSED 5
-#define _PAGE_BIT_DIRTY 6
-#define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page, Pentium+, if present.. */
-#define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
-#define _PAGE_BIT_UNUSED1 9 /* available for programmer */
-#define _PAGE_BIT_UNUSED2 10
-#define _PAGE_BIT_UNUSED3 11
-#define _PAGE_BIT_NX 63
-
-#define _PAGE_PRESENT 0x001
-#define _PAGE_RW 0x002
-#define _PAGE_USER 0x004
-#define _PAGE_PWT 0x008
-#define _PAGE_PCD 0x010
-#define _PAGE_ACCESSED 0x020
-#define _PAGE_DIRTY 0x040
-#define _PAGE_PSE 0x080 /* 4 MB (or 2MB) page, Pentium+, if present.. */
-#define _PAGE_GLOBAL 0x100 /* Global TLB entry PPro+ */
-#define _PAGE_UNUSED1 0x200 /* available for programmer */
-#define _PAGE_UNUSED2 0x400
-#define _PAGE_UNUSED3 0x800
-
-/* If _PAGE_PRESENT is clear, we use these: */
-#define _PAGE_FILE 0x040 /* nonlinear file mapping, saved PTE; unset:swap */
-#define _PAGE_PROTNONE 0x080 /* if the user mapped it with PROT_NONE;
- pte_present gives true */
-#ifdef CONFIG_X86_PAE
-#define _PAGE_NX (1ULL<<_PAGE_BIT_NX)
-#else
-#define _PAGE_NX 0
-#endif
-
-#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
-#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
-#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
-
-#define PAGE_NONE \
- __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
-#define PAGE_SHARED \
- __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
-
-#define PAGE_SHARED_EXEC \
- __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
-#define PAGE_COPY_NOEXEC \
- __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
-#define PAGE_COPY_EXEC \
- __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
-#define PAGE_COPY \
- PAGE_COPY_NOEXEC
-#define PAGE_READONLY \
- __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
-#define PAGE_READONLY_EXEC \
- __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
-
-#define _PAGE_KERNEL \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX)
-#define _PAGE_KERNEL_EXEC \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
-
-extern unsigned long long __PAGE_KERNEL, __PAGE_KERNEL_EXEC;
-#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
-#define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
-#define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
-#define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
-#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
-
-#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
-#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
-#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
-#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
-#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
-#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
-#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
-
-/*
- * The i386 can't do page protection for execute, and considers that
- * the same are read. Also, write permissions imply read permissions.
- * This is the closest we can get..
- */
-#define __P000 PAGE_NONE
-#define __P001 PAGE_READONLY
-#define __P010 PAGE_COPY
-#define __P011 PAGE_COPY
-#define __P100 PAGE_READONLY_EXEC
-#define __P101 PAGE_READONLY_EXEC
-#define __P110 PAGE_COPY_EXEC
-#define __P111 PAGE_COPY_EXEC
-
-#define __S000 PAGE_NONE
-#define __S001 PAGE_READONLY
-#define __S010 PAGE_SHARED
-#define __S011 PAGE_SHARED
-#define __S100 PAGE_READONLY_EXEC
-#define __S101 PAGE_READONLY_EXEC
-#define __S110 PAGE_SHARED_EXEC
-#define __S111 PAGE_SHARED_EXEC
/*
* Define this if things work differently on an i386 and an i486:
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -131,8 +131,6 @@ static inline pte_t ptep_get_and_clear_f
#define PGDIR_SIZE (_AC(1,UL) << PGDIR_SHIFT)
#define PGDIR_MASK (~(PGDIR_SIZE-1))
-#define USER_PTRS_PER_PGD ((TASK_SIZE-1)/PGDIR_SIZE+1)
-#define FIRST_USER_ADDRESS 0
#define MAXMEM _AC(0x3fffffffffff, UL)
#define VMALLOC_START _AC(0xffffc20000000000, UL)
@@ -141,95 +139,6 @@ static inline pte_t ptep_get_and_clear_f
#define MODULES_VADDR _AC(0xffffffff88000000, UL)
#define MODULES_END _AC(0xfffffffffff00000, UL)
#define MODULES_LEN (MODULES_END - MODULES_VADDR)
-
-#define _PAGE_BIT_PRESENT 0
-#define _PAGE_BIT_RW 1
-#define _PAGE_BIT_USER 2
-#define _PAGE_BIT_PWT 3
-#define _PAGE_BIT_PCD 4
-#define _PAGE_BIT_ACCESSED 5
-#define _PAGE_BIT_DIRTY 6
-#define _PAGE_BIT_PSE 7 /* 4 MB (or 2MB) page */
-#define _PAGE_BIT_FILE 6
-#define _PAGE_BIT_GLOBAL 8 /* Global TLB entry PPro+ */
-#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
-
-#define _PAGE_PRESENT (_AC(1, UL)<<_PAGE_BIT_PRESENT)
-#define _PAGE_RW (_AC(1, UL)<<_PAGE_BIT_RW)
-#define _PAGE_USER (_AC(1, UL)<<_PAGE_BIT_USER)
-#define _PAGE_PWT (_AC(1, UL)<<_PAGE_BIT_PWT)
-#define _PAGE_PCD (_AC(1, UL)<<_PAGE_BIT_PCD)
-#define _PAGE_ACCESSED (_AC(1, UL)<<_PAGE_BIT_ACCESSED)
-#define _PAGE_DIRTY (_AC(1, UL)<<_PAGE_BIT_DIRTY)
-/* 2MB page */
-#define _PAGE_PSE (_AC(1, UL)<<_PAGE_BIT_PSE)
-/* nonlinear file mapping, saved PTE; unset:swap */
-#define _PAGE_FILE (_AC(1, UL)<<_PAGE_BIT_FILE)
-/* Global TLB entry */
-#define _PAGE_GLOBAL (_AC(1, UL)<<_PAGE_BIT_GLOBAL)
-
-#define _PAGE_PROTNONE 0x080 /* If not present */
-#define _PAGE_NX (_AC(1, UL)<<_PAGE_BIT_NX)
-
-#define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
-#define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
-
-#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
-
-#define PAGE_NONE __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
-#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
-#define PAGE_SHARED_EXEC __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
-#define PAGE_COPY_NOEXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
-#define PAGE_COPY PAGE_COPY_NOEXEC
-#define PAGE_COPY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
-#define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
-#define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
-#define __PAGE_KERNEL \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX)
-#define __PAGE_KERNEL_EXEC \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
-#define __PAGE_KERNEL_NOCACHE \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_PCD | _PAGE_PWT | _PAGE_ACCESSED | _PAGE_NX)
-#define __PAGE_KERNEL_RO \
- (_PAGE_PRESENT | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX)
-#define __PAGE_KERNEL_VSYSCALL \
- (_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
-#define __PAGE_KERNEL_VSYSCALL_NOCACHE \
- (_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_PCD | _PAGE_PWT)
-#define __PAGE_KERNEL_LARGE \
- (__PAGE_KERNEL | _PAGE_PSE)
-#define __PAGE_KERNEL_LARGE_EXEC \
- (__PAGE_KERNEL_EXEC | _PAGE_PSE)
-
-#define MAKE_GLOBAL(x) __pgprot((x) | _PAGE_GLOBAL)
-
-#define PAGE_KERNEL MAKE_GLOBAL(__PAGE_KERNEL)
-#define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC)
-#define PAGE_KERNEL_RO MAKE_GLOBAL(__PAGE_KERNEL_RO)
-#define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE)
-#define PAGE_KERNEL_VSYSCALL32 __pgprot(__PAGE_KERNEL_VSYSCALL)
-#define PAGE_KERNEL_VSYSCALL MAKE_GLOBAL(__PAGE_KERNEL_VSYSCALL)
-#define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE)
-#define PAGE_KERNEL_VSYSCALL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_VSYSCALL_NOCACHE)
-
-/* xwr */
-#define __P000 PAGE_NONE
-#define __P001 PAGE_READONLY
-#define __P010 PAGE_COPY
-#define __P011 PAGE_COPY
-#define __P100 PAGE_READONLY_EXEC
-#define __P101 PAGE_READONLY_EXEC
-#define __P110 PAGE_COPY_EXEC
-#define __P111 PAGE_COPY_EXEC
-
-#define __S000 PAGE_NONE
-#define __S001 PAGE_READONLY
-#define __S010 PAGE_SHARED
-#define __S011 PAGE_SHARED
-#define __S100 PAGE_READONLY_EXEC
-#define __S101 PAGE_READONLY_EXEC
-#define __S110 PAGE_SHARED_EXEC
-#define __S111 PAGE_SHARED_EXEC
#ifndef __ASSEMBLY__
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 02 of 10] x86: avoid name conflict for Voyager leave_mm
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 01 of 10] x86: move all asm/pgtable constants into one place Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 03 of 10] x86/pgtable: unify pagetable accessors Jeremy Fitzhardinge
` (8 subsequent siblings)
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Avoid a conflict between Voyager's leave_mm and asm-x86/mmu.h's leave_mm.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
arch/x86/mach-voyager/voyager_smp.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/x86/mach-voyager/voyager_smp.c b/arch/x86/mach-voyager/voyager_smp.c
--- a/arch/x86/mach-voyager/voyager_smp.c
+++ b/arch/x86/mach-voyager/voyager_smp.c
@@ -808,7 +808,7 @@ static DEFINE_SPINLOCK(tlbstate_lock);
* We need to reload %cr3 since the page tables may be going
* away from under us..
*/
-static inline void leave_mm(unsigned long cpu)
+static inline void voyager_leave_mm(unsigned long cpu)
{
if (per_cpu(cpu_tlbstate, cpu).state == TLBSTATE_OK)
BUG();
@@ -838,7 +838,7 @@ static void smp_invalidate_interrupt(voi
else
__flush_tlb_one(flush_va);
} else
- leave_mm(cpu);
+ voyager_leave_mm(cpu);
}
smp_mb__before_clear_bit();
clear_bit(cpu, &smp_invalidate_needed);
@@ -919,7 +919,7 @@ void flush_tlb_mm(struct mm_struct *mm)
if (current->mm)
local_flush_tlb();
else
- leave_mm(smp_processor_id());
+ voyager_leave_mm(smp_processor_id());
}
if (cpu_mask)
voyager_flush_tlb_others(cpu_mask, mm, TLB_FLUSH_ALL);
@@ -939,7 +939,7 @@ void flush_tlb_page(struct vm_area_struc
if (current->mm)
__flush_tlb_one(va);
else
- leave_mm(smp_processor_id());
+ voyager_leave_mm(smp_processor_id());
}
if (cpu_mask)
@@ -1155,7 +1155,7 @@ static void do_flush_tlb_all(void *info)
__flush_tlb_all();
if (per_cpu(cpu_tlbstate, cpu).state == TLBSTATE_LAZY)
- leave_mm(cpu);
+ voyager_leave_mm(cpu);
}
/* flush the TLB of every active CPU in the system */
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 03 of 10] x86/pgtable: unify pagetable accessors
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 01 of 10] x86: move all asm/pgtable constants into one place Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 02 of 10] x86: avoid name conflict for Voyager leave_mm Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 04 of 10] x86: unify pgtable accessors which use supported_pte_mask Jeremy Fitzhardinge
` (7 subsequent siblings)
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Unify functions to test and set bits in pagetable entries.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
include/asm-x86/pgtable.h | 28 ++++++++++++++++++++++++++++
include/asm-x86/pgtable_32.h | 25 -------------------------
include/asm-x86/pgtable_64.h | 26 --------------------------
3 files changed, 28 insertions(+), 51 deletions(-)
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h
--- a/include/asm-x86/pgtable.h
+++ b/include/asm-x86/pgtable.h
@@ -109,6 +109,34 @@ extern unsigned long long __PAGE_KERNEL,
#define __S110 PAGE_SHARED_EXEC
#define __S111 PAGE_SHARED_EXEC
+#ifndef __ASSEMBLER__
+/*
+ * The following only work if pte_present() is true.
+ * Undefined behaviour if not..
+ */
+static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
+static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; }
+static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_RW; }
+static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; }
+static inline int pte_huge(pte_t pte) { return pte_val(pte) & _PAGE_PSE; }
+
+static inline int pmd_large(pmd_t pte) {
+ return (pmd_val(pte) & (_PAGE_PSE|_PAGE_PRESENT)) ==
+ (_PAGE_PSE|_PAGE_PRESENT);
+}
+
+static inline pte_t pte_mkclean(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_DIRTY); }
+static inline pte_t pte_mkold(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_ACCESSED); }
+static inline pte_t pte_wrprotect(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_RW); }
+static inline pte_t pte_mkexec(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_NX); }
+static inline pte_t pte_mkdirty(pte_t pte) { return __pte(pte_val(pte) | _PAGE_DIRTY); }
+static inline pte_t pte_mkyoung(pte_t pte) { return __pte(pte_val(pte) | _PAGE_ACCESSED); }
+static inline pte_t pte_mkwrite(pte_t pte) { return __pte(pte_val(pte) | _PAGE_RW); }
+static inline pte_t pte_mkhuge(pte_t pte) { return __pte(pte_val(pte) | _PAGE_PSE); }
+static inline pte_t pte_clrhuge(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_PSE); }
+
+#endif /* __ASSEMBLER__ */
+
#ifdef CONFIG_X86_32
# include "pgtable_32.h"
#else
diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h
--- a/include/asm-x86/pgtable_32.h
+++ b/include/asm-x86/pgtable_32.h
@@ -100,28 +100,6 @@ extern unsigned long pg0[];
#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
-
-/*
- * The following only work if pte_present() is true.
- * Undefined behaviour if not..
- */
-static inline int pte_dirty(pte_t pte) { return (pte).pte_low & _PAGE_DIRTY; }
-static inline int pte_young(pte_t pte) { return (pte).pte_low & _PAGE_ACCESSED; }
-static inline int pte_write(pte_t pte) { return (pte).pte_low & _PAGE_RW; }
-static inline int pte_huge(pte_t pte) { return (pte).pte_low & _PAGE_PSE; }
-
-/*
- * The following only works if pte_present() is not true.
- */
-static inline int pte_file(pte_t pte) { return (pte).pte_low & _PAGE_FILE; }
-
-static inline pte_t pte_mkclean(pte_t pte) { (pte).pte_low &= ~_PAGE_DIRTY; return pte; }
-static inline pte_t pte_mkold(pte_t pte) { (pte).pte_low &= ~_PAGE_ACCESSED; return pte; }
-static inline pte_t pte_wrprotect(pte_t pte) { (pte).pte_low &= ~_PAGE_RW; return pte; }
-static inline pte_t pte_mkdirty(pte_t pte) { (pte).pte_low |= _PAGE_DIRTY; return pte; }
-static inline pte_t pte_mkyoung(pte_t pte) { (pte).pte_low |= _PAGE_ACCESSED; return pte; }
-static inline pte_t pte_mkwrite(pte_t pte) { (pte).pte_low |= _PAGE_RW; return pte; }
-static inline pte_t pte_mkhuge(pte_t pte) { (pte).pte_low |= _PAGE_PSE; return pte; }
#ifdef CONFIG_X86_PAE
# include <asm/pgtable-3level.h>
@@ -273,9 +251,6 @@ static inline pte_t pte_modify(pte_t pte
return pte;
}
-#define pmd_large(pmd) \
-((pmd_val(pmd) & (_PAGE_PSE|_PAGE_PRESENT)) == (_PAGE_PSE|_PAGE_PRESENT))
-
/*
* the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
*
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -173,28 +173,6 @@ static inline pte_t pfn_pte(unsigned lon
pte_val(pte) &= __supported_pte_mask;
return pte;
}
-
-/*
- * The following only work if pte_present() is true.
- * Undefined behaviour if not..
- */
-#define __LARGE_PTE (_PAGE_PSE|_PAGE_PRESENT)
-static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
-static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; }
-static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_RW; }
-static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; }
-static inline int pte_huge(pte_t pte) { return pte_val(pte) & _PAGE_PSE; }
-
-static inline pte_t pte_mkclean(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_DIRTY)); return pte; }
-static inline pte_t pte_mkold(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_ACCESSED)); return pte; }
-static inline pte_t pte_wrprotect(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_RW)); return pte; }
-static inline pte_t pte_mkexec(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_NX)); return pte; }
-static inline pte_t pte_mkdirty(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) | _PAGE_DIRTY)); return pte; }
-static inline pte_t pte_mkyoung(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) | _PAGE_ACCESSED)); return pte; }
-static inline pte_t pte_mkwrite(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) | _PAGE_RW)); return pte; }
-static inline pte_t pte_mkhuge(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) | _PAGE_PSE)); return pte; }
-static inline pte_t pte_clrhuge(pte_t pte) { set_pte(&pte, __pte(pte_val(pte) & ~_PAGE_PSE)); return pte; }
-
struct vm_area_struct;
static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
@@ -213,10 +191,6 @@ static inline void ptep_set_wrprotect(st
* Macro to mark a page protection value as "uncacheable".
*/
#define pgprot_noncached(prot) (__pgprot(pgprot_val(prot) | _PAGE_PCD | _PAGE_PWT))
-
-static inline int pmd_large(pmd_t pte) {
- return (pmd_val(pte) & __LARGE_PTE) == __LARGE_PTE;
-}
/*
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 04 of 10] x86: unify pgtable accessors which use supported_pte_mask
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
` (2 preceding siblings ...)
2008-01-08 22:00 ` [PATCH 03 of 10] x86/pgtable: unify pagetable accessors Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 05 of 10] x86: page.h: make pte_t a union to always include pte element Jeremy Fitzhardinge
` (6 subsequent siblings)
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Make users of supported_pte_mask common. This has the side-effect of
introducing the variable for 32-bit non-PAE, but I think its a pretty
small cost to simplify the code.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
arch/x86/mm/init_32.c | 5 +++--
include/asm-x86/pgtable-2level.h | 2 --
include/asm-x86/pgtable-3level.h | 14 --------------
include/asm-x86/pgtable.h | 32 ++++++++++++++++++++++++++++++++
include/asm-x86/pgtable_32.h | 16 ----------------
include/asm-x86/pgtable_64.h | 18 ------------------
6 files changed, 35 insertions(+), 52 deletions(-)
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -473,11 +473,12 @@ void zap_low_mappings (void)
int nx_enabled = 0;
+pteval_t __supported_pte_mask __read_mostly = ~_PAGE_NX;
+EXPORT_SYMBOL_GPL(__supported_pte_mask);
+
#ifdef CONFIG_X86_PAE
static int disable_nx __initdata = 0;
-u64 __supported_pte_mask __read_mostly = ~_PAGE_NX;
-EXPORT_SYMBOL_GPL(__supported_pte_mask);
/*
* noexec = on|off
diff --git a/include/asm-x86/pgtable-2level.h b/include/asm-x86/pgtable-2level.h
--- a/include/asm-x86/pgtable-2level.h
+++ b/include/asm-x86/pgtable-2level.h
@@ -53,8 +53,6 @@ static inline pte_t native_ptep_get_and_
#define pte_page(x) pfn_to_page(pte_pfn(x))
#define pte_none(x) (!(x).pte_low)
#define pte_pfn(x) (pte_val(x) >> PAGE_SHIFT)
-#define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
-#define pfn_pmd(pfn, prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
/*
* All present pages are kernel-executable:
diff --git a/include/asm-x86/pgtable-3level.h b/include/asm-x86/pgtable-3level.h
--- a/include/asm-x86/pgtable-3level.h
+++ b/include/asm-x86/pgtable-3level.h
@@ -158,20 +158,6 @@ static inline unsigned long pte_pfn(pte_
return pte_val(pte) >> PAGE_SHIFT;
}
-extern unsigned long long __supported_pte_mask;
-
-static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
-{
- return __pte((((unsigned long long)page_nr << PAGE_SHIFT) |
- pgprot_val(pgprot)) & __supported_pte_mask);
-}
-
-static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot)
-{
- return __pmd((((unsigned long long)page_nr << PAGE_SHIFT) |
- pgprot_val(pgprot)) & __supported_pte_mask);
-}
-
/*
* Bits 0, 6 and 7 are taken in the low part of the pte,
* put the 32 bits of offset into the high part.
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h
--- a/include/asm-x86/pgtable.h
+++ b/include/asm-x86/pgtable.h
@@ -135,6 +135,38 @@ static inline pte_t pte_mkhuge(pte_t pte
static inline pte_t pte_mkhuge(pte_t pte) { return __pte(pte_val(pte) | _PAGE_PSE); }
static inline pte_t pte_clrhuge(pte_t pte) { return __pte(pte_val(pte) & ~_PAGE_PSE); }
+extern pteval_t __supported_pte_mask;
+
+static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
+{
+ return __pte((((phys_addr_t)page_nr << PAGE_SHIFT) |
+ pgprot_val(pgprot)) & __supported_pte_mask);
+}
+
+static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot)
+{
+ return __pmd((((phys_addr_t)page_nr << PAGE_SHIFT) |
+ pgprot_val(pgprot)) & __supported_pte_mask);
+}
+
+static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
+{
+ pteval_t val = pte_val(pte);
+
+ val &= _PAGE_CHG_MASK;
+ val |= pgprot_val(newprot);
+
+ /*
+ * Chop off the NX bit (if present), and add the NX portion of
+ * the newprot (if present):
+ */
+ val &= ~_PAGE_NX;
+ val |= pgprot_val(newprot) & __supported_pte_mask;
+
+ return __pte(val);
+}
+
+
#endif /* __ASSEMBLER__ */
#ifdef CONFIG_X86_32
diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h
--- a/include/asm-x86/pgtable_32.h
+++ b/include/asm-x86/pgtable_32.h
@@ -235,22 +235,6 @@ static inline void clone_pgd_range(pgd_t
#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
-static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
-{
- pte.pte_low &= _PAGE_CHG_MASK;
- pte.pte_low |= pgprot_val(newprot);
-#ifdef CONFIG_X86_PAE
- /*
- * Chop off the NX bit (if present), and add the NX portion of
- * the newprot (if present):
- */
- pte.pte_high &= ~(1 << (_PAGE_BIT_NX - 32));
- pte.pte_high |= (pgprot_val(newprot) >> 32) & \
- (__supported_pte_mask >> 32);
-#endif
- return pte;
-}
-
/*
* the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
*
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -17,7 +17,6 @@ extern pud_t level3_ident_pgt[512];
extern pud_t level3_ident_pgt[512];
extern pmd_t level2_kernel_pgt[512];
extern pgd_t init_level4_pgt[];
-extern unsigned long __supported_pte_mask;
#define swapper_pg_dir init_level4_pgt
@@ -165,14 +164,6 @@ static inline unsigned long pmd_bad(pmd_
#define pte_page(x) pfn_to_page(pte_pfn(x))
#define pte_pfn(x) ((pte_val(x) & __PHYSICAL_MASK) >> PAGE_SHIFT)
-static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
-{
- pte_t pte;
- pte_val(pte) = (page_nr << PAGE_SHIFT);
- pte_val(pte) |= pgprot_val(pgprot);
- pte_val(pte) &= __supported_pte_mask;
- return pte;
-}
struct vm_area_struct;
static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
@@ -239,15 +230,6 @@ static inline void ptep_set_wrprotect(st
/* page, protection -> pte */
#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
-/* Change flags of a PTE */
-static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
-{
- pte_val(pte) &= _PAGE_CHG_MASK;
- pte_val(pte) |= pgprot_val(newprot);
- pte_val(pte) &= __supported_pte_mask;
- return pte;
-}
-
#define pte_index(address) \
(((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
#define pte_offset_kernel(dir, address) ((pte_t *) pmd_page_vaddr(*(dir)) + \
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 05 of 10] x86: page.h: make pte_t a union to always include pte element
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
` (3 preceding siblings ...)
2008-01-08 22:00 ` [PATCH 04 of 10] x86: unify pgtable accessors which use supported_pte_mask Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 06 of 10] x86/vmi: fix compilation as a result of pte_t changes Jeremy Fitzhardinge
` (5 subsequent siblings)
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Make sure pte_t, whatever its definition, has a pte element with type
pteval_t. This allows common code to access it without needing to be
specifically parameterised on what pagetable mode we're compiling for.
For 32-bit, this means that pte_t becomes a union with "pte" and "{
pte_low, pte_high }" (PAE) or just "pte_low" (non-PAE).
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
arch/x86/xen/mmu.c | 4 +---
include/asm-x86/page.h | 10 ++++++++++
include/asm-x86/page_32.h | 30 +++++++-----------------------
include/asm-x86/page_64.h | 3 ---
include/asm-x86/paravirt.h | 2 +-
include/asm-x86/pgtable-2level.h | 4 ++--
include/asm-x86/pgtable-3level.h | 4 ++--
include/asm-x86/pgtable_64.h | 6 +++---
include/asm-x86/processor.h | 1 -
include/xen/page.h | 6 +++---
10 files changed, 29 insertions(+), 41 deletions(-)
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -246,9 +246,7 @@ pte_t xen_make_pte(unsigned long long pt
pte &= ~_PAGE_PCD;
- pte &= ~_PAGE_PCD;
-
- return (pte_t){ pte, pte >> 32 };
+ return (pte_t){ .pte = pte };
}
pmd_t xen_make_pmd(unsigned long long pmd)
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h
--- a/include/asm-x86/page.h
+++ b/include/asm-x86/page.h
@@ -108,6 +108,16 @@ static inline pmdval_t native_pmd_val(pm
#include <asm-generic/pgtable-nopmd.h>
#endif /* PAGETABLE_LEVELS >= 3 */
+static inline pte_t native_make_pte(pteval_t val)
+{
+ return (pte_t) { .pte = val };
+}
+
+static inline pteval_t native_pte_val(pte_t pte)
+{
+ return pte.pte;
+}
+
#define pgprot_val(x) ((x).pgprot)
#define __pgprot(x) ((pgprot_t) { (x) } )
diff --git a/include/asm-x86/page_32.h b/include/asm-x86/page_32.h
--- a/include/asm-x86/page_32.h
+++ b/include/asm-x86/page_32.h
@@ -26,18 +26,12 @@ typedef u64 pgprotval_t;
typedef u64 pgprotval_t;
typedef u64 phys_addr_t;
-typedef struct { unsigned long pte_low, pte_high; } pte_t;
-
-static inline unsigned long long native_pte_val(pte_t pte)
-{
- return pte.pte_low | ((unsigned long long)pte.pte_high << 32);
-}
-
-static inline pte_t native_make_pte(unsigned long long val)
-{
- return (pte_t) { .pte_low = val, .pte_high = (val >> 32) } ;
-}
-
+typedef union {
+ struct {
+ unsigned long pte_low, pte_high;
+ };
+ pteval_t pte;
+} pte_t;
#endif /* __ASSEMBLY__
*/
#else /* !CONFIG_X86_PAE */
@@ -53,18 +47,8 @@ typedef unsigned long pgprotval_t;
typedef unsigned long pgprotval_t;
typedef unsigned long phys_addr_t;
-typedef struct { pteval_t pte_low; } pte_t;
+typedef union { pteval_t pte, pte_low; } pte_t;
typedef pte_t boot_pte_t;
-
-static inline unsigned long native_pte_val(pte_t pte)
-{
- return pte.pte_low;
-}
-
-static inline pte_t native_make_pte(unsigned long val)
-{
- return (pte_t) { .pte_low = val };
-}
#endif /* __ASSEMBLY__ */
#endif /* CONFIG_X86_PAE */
diff --git a/include/asm-x86/page_64.h b/include/asm-x86/page_64.h
--- a/include/asm-x86/page_64.h
+++ b/include/asm-x86/page_64.h
@@ -70,9 +70,6 @@ typedef unsigned long phys_addr_t;
typedef struct { pteval_t pte; } pte_t;
-#define native_pte_val(x) ((x).pte)
-#define native_make_pte(x) ((pte_t) { (x) } )
-
#define vmemmap ((struct page *)VMEMMAP_START)
#endif /* !__ASSEMBLY__ */
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h
--- a/include/asm-x86/paravirt.h
+++ b/include/asm-x86/paravirt.h
@@ -922,7 +922,7 @@ static inline pte_t __pte(unsigned long
unsigned long long ret = PVOP_CALL2(unsigned long long,
pv_mmu_ops.make_pte,
val, val >> 32);
- return (pte_t) { ret, ret >> 32 };
+ return (pte_t) { .pte = ret };
}
static inline pmd_t __pmd(unsigned long long val)
diff --git a/include/asm-x86/pgtable-2level.h b/include/asm-x86/pgtable-2level.h
--- a/include/asm-x86/pgtable-2level.h
+++ b/include/asm-x86/pgtable-2level.h
@@ -72,13 +72,13 @@ static inline int pte_exec_kernel(pte_t
((((pte).pte_low >> 1) & 0x1f ) + (((pte).pte_low >> 8) << 5 ))
#define pgoff_to_pte(off) \
- ((pte_t) { (((off) & 0x1f) << 1) + (((off) >> 5) << 8) + _PAGE_FILE })
+ ((pte_t) { .pte_low = (((off) & 0x1f) << 1) + (((off) >> 5) << 8) + _PAGE_FILE })
/* Encode and de-code a swap entry */
#define __swp_type(x) (((x).val >> 1) & 0x1f)
#define __swp_offset(x) ((x).val >> 8)
#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low })
-#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_entry_to_pte(x) ((pte_t) { .pte = (x).val })
#endif /* _I386_PGTABLE_2LEVEL_H */
diff --git a/include/asm-x86/pgtable-3level.h b/include/asm-x86/pgtable-3level.h
--- a/include/asm-x86/pgtable-3level.h
+++ b/include/asm-x86/pgtable-3level.h
@@ -163,7 +163,7 @@ static inline unsigned long pte_pfn(pte_
* put the 32 bits of offset into the high part.
*/
#define pte_to_pgoff(pte) ((pte).pte_high)
-#define pgoff_to_pte(off) ((pte_t) { _PAGE_FILE, (off) })
+#define pgoff_to_pte(off) ((pte_t) { { .pte_low = _PAGE_FILE, .pte_high = (off) } })
#define PTE_FILE_MAX_BITS 32
/* Encode and de-code a swap entry */
@@ -171,7 +171,7 @@ static inline unsigned long pte_pfn(pte_
#define __swp_offset(x) ((x).val >> 5)
#define __swp_entry(type, offset) ((swp_entry_t){(type) | (offset) << 5})
#define __pte_to_swp_entry(pte) ((swp_entry_t){ (pte).pte_high })
-#define __swp_entry_to_pte(x) ((pte_t){ 0, (x).val })
+#define __swp_entry_to_pte(x) ((pte_t){ { .pte_high = (x).val } })
#define __pmd_free_tlb(tlb, x) do { } while (0)
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -72,7 +72,7 @@ extern unsigned long empty_zero_page[PAG
static inline void set_pte(pte_t *dst, pte_t val)
{
- pte_val(*dst) = pte_val(val);
+ *dst = val;
}
#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
@@ -222,7 +222,7 @@ static inline void ptep_set_wrprotect(st
#define pmd_pfn(x) ((pmd_val(x) & __PHYSICAL_MASK) >> PAGE_SHIFT)
#define pte_to_pgoff(pte) ((pte_val(pte) & PHYSICAL_PAGE_MASK) >> PAGE_SHIFT)
-#define pgoff_to_pte(off) ((pte_t) { ((off) << PAGE_SHIFT) | _PAGE_FILE })
+#define pgoff_to_pte(off) ((pte_t) { .pte = ((off) << PAGE_SHIFT) | _PAGE_FILE })
#define PTE_FILE_MAX_BITS __PHYSICAL_MASK_SHIFT
/* PTE - Level 1 access. */
@@ -264,7 +264,7 @@ static inline void ptep_set_wrprotect(st
#define __swp_offset(x) ((x).val >> 8)
#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_entry_to_pte(x) ((pte_t) { .pte = (x).val })
extern spinlock_t pgd_lock;
extern struct list_head pgd_list;
diff --git a/include/asm-x86/processor.h b/include/asm-x86/processor.h
--- a/include/asm-x86/processor.h
+++ b/include/asm-x86/processor.h
@@ -10,7 +10,6 @@ struct mm_struct;
#include <asm/vm86.h>
#include <asm/math_emu.h>
#include <asm/segment.h>
-#include <asm/page.h>
#include <asm/types.h>
#include <asm/sigcontext.h>
#include <asm/current.h>
diff --git a/include/xen/page.h b/include/xen/page.h
--- a/include/xen/page.h
+++ b/include/xen/page.h
@@ -156,16 +156,16 @@ static inline pte_t mfn_pte(unsigned lon
static inline unsigned long long pte_val_ma(pte_t x)
{
- return ((unsigned long long)x.pte_high << 32) | x.pte_low;
+ return x.pte;
}
#define pmd_val_ma(v) ((v).pmd)
#define pud_val_ma(v) ((v).pgd.pgd)
-#define __pte_ma(x) ((pte_t) { .pte_low = (x), .pte_high = (x)>>32 } )
+#define __pte_ma(x) ((pte_t) { .pte = (x) })
#define __pmd_ma(x) ((pmd_t) { (x) } )
#else /* !X86_PAE */
#define pte_mfn(_pte) ((_pte).pte_low >> PAGE_SHIFT)
#define mfn_pte(pfn, prot) __pte_ma(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
-#define pte_val_ma(x) ((x).pte_low)
+#define pte_val_ma(x) ((x).pte)
#define pmd_val_ma(v) ((v).pud.pgd.pgd)
#define __pte_ma(x) ((pte_t) { (x) } )
#endif /* CONFIG_X86_PAE */
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 06 of 10] x86/vmi: fix compilation as a result of pte_t changes
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
` (4 preceding siblings ...)
2008-01-08 22:00 ` [PATCH 05 of 10] x86: page.h: make pte_t a union to always include pte element Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 07 of 10] x86: pgtable: unify pte accessors Jeremy Fitzhardinge
` (4 subsequent siblings)
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich, Zachary Amsden
Fix various compilation problems as a result of changing pte_t.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Zachary Amsden <zach@vmware.com>
---
arch/x86/kernel/vmi_32.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c
--- a/arch/x86/kernel/vmi_32.c
+++ b/arch/x86/kernel/vmi_32.c
@@ -475,7 +475,7 @@ static void vmi_set_pmd(pmd_t *pmdp, pmd
static void vmi_set_pmd(pmd_t *pmdp, pmd_t pmdval)
{
#ifdef CONFIG_X86_PAE
- const pte_t pte = { pmdval.pmd, pmdval.pmd >> 32 };
+ const pte_t pte = { .pte = pmdval.pmd };
vmi_check_page_type(__pa(pmdp) >> PAGE_SHIFT, VMI_PAGE_PMD);
#else
const pte_t pte = { pmdval.pud.pgd.pgd };
@@ -508,21 +508,21 @@ static void vmi_set_pud(pud_t *pudp, pud
static void vmi_set_pud(pud_t *pudp, pud_t pudval)
{
/* Um, eww */
- const pte_t pte = { pudval.pgd.pgd, pudval.pgd.pgd >> 32 };
+ const pte_t pte = { .pte = pudval.pgd.pgd };
vmi_check_page_type(__pa(pudp) >> PAGE_SHIFT, VMI_PAGE_PGD);
vmi_ops.set_pte(pte, (pte_t *)pudp, VMI_PAGE_PDP);
}
static void vmi_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
{
- const pte_t pte = { 0 };
+ const pte_t pte = { .pte = 0 };
vmi_check_page_type(__pa(ptep) >> PAGE_SHIFT, VMI_PAGE_PTE);
vmi_ops.set_pte(pte, ptep, vmi_flags_addr(mm, addr, VMI_PAGE_PT, 0));
}
static void vmi_pmd_clear(pmd_t *pmd)
{
- const pte_t pte = { 0 };
+ const pte_t pte = { .pte = 0 };
vmi_check_page_type(__pa(pmd) >> PAGE_SHIFT, VMI_PAGE_PMD);
vmi_ops.set_pte(pte, (pte_t *)pmd, VMI_PAGE_PD);
}
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 07 of 10] x86: pgtable: unify pte accessors
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
` (5 preceding siblings ...)
2008-01-08 22:00 ` [PATCH 06 of 10] x86/vmi: fix compilation as a result of pte_t changes Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 08 of 10] x86: unify zero_page definition Jeremy Fitzhardinge
` (3 subsequent siblings)
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Make various pte accessors common.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
include/asm-x86/pgtable-2level.h | 1
include/asm-x86/pgtable-3level.h | 1
include/asm-x86/pgtable.h | 110 +++++++++++++++++++++++++++++++++++++-
include/asm-x86/pgtable_32.h | 101 ----------------------------------
include/asm-x86/pgtable_64.h | 43 +-------------
5 files changed, 113 insertions(+), 143 deletions(-)
diff --git a/include/asm-x86/pgtable-2level.h b/include/asm-x86/pgtable-2level.h
--- a/include/asm-x86/pgtable-2level.h
+++ b/include/asm-x86/pgtable-2level.h
@@ -33,7 +33,6 @@ static inline void native_set_pmd(pmd_t
#define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
#define set_pte_present(mm,addr,ptep,pteval) set_pte_at(mm,addr,ptep,pteval)
-#define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *xp)
diff --git a/include/asm-x86/pgtable-3level.h b/include/asm-x86/pgtable-3level.h
--- a/include/asm-x86/pgtable-3level.h
+++ b/include/asm-x86/pgtable-3level.h
@@ -101,7 +101,6 @@ static inline void native_pmd_clear(pmd_
#define set_pte_atomic(ptep, pte) native_set_pte_atomic(ptep, pte)
#define set_pmd(pmdp, pmd) native_set_pmd(pmdp, pmd)
#define set_pud(pudp, pud) native_set_pud(pudp, pud)
-#define pte_clear(mm, addr, ptep) native_pte_clear(mm, addr, ptep)
#define pmd_clear(pmd) native_pmd_clear(pmd)
#endif
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h
--- a/include/asm-x86/pgtable.h
+++ b/include/asm-x86/pgtable.h
@@ -110,6 +110,7 @@ extern unsigned long long __PAGE_KERNEL,
#define __S111 PAGE_SHARED_EXEC
#ifndef __ASSEMBLER__
+
/*
* The following only work if pte_present() is true.
* Undefined behaviour if not..
@@ -166,7 +167,6 @@ static inline pte_t pte_modify(pte_t pte
return __pte(val);
}
-
#endif /* __ASSEMBLER__ */
#ifdef CONFIG_X86_32
@@ -175,4 +175,112 @@ static inline pte_t pte_modify(pte_t pte
# include "pgtable_64.h"
#endif
+#ifndef __ASSEMBLER__
+
+#ifndef CONFIG_PARAVIRT
+/*
+ * Rules for using pte_update - it must be called after any PTE update which
+ * has not been done using the set_pte / clear_pte interfaces. It is used by
+ * shadow mode hypervisors to resynchronize the shadow page tables. Kernel PTE
+ * updates should either be sets, clears, or set_pte_atomic for P->P
+ * transitions, which means this hook should only be called for user PTEs.
+ * This hook implies a P->P protection or access change has taken place, which
+ * requires a subsequent TLB flush. The notification can optionally be delayed
+ * until the TLB flush event by using the pte_update_defer form of the
+ * interface, but care must be taken to assure that the flush happens while
+ * still holding the same page table lock so that the shadow and primary pages
+ * do not become out of sync on SMP.
+ */
+#define pte_update(mm, addr, ptep) do { } while (0)
+#define pte_update_defer(mm, addr, ptep) do { } while (0)
+#endif
+
+/* local pte updates need not use xchg for locking */
+static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep)
+{
+ pte_t res = *ptep;
+
+ /* Pure native function needs no input for mm, addr */
+ native_pte_clear(NULL, 0, ptep);
+ return res;
+}
+
+/*
+ * We only update the dirty/accessed state if we set
+ * the dirty bit by hand in the kernel, since the hardware
+ * will do the accessed bit for us, and we don't want to
+ * race with other CPU's that might be updating the dirty
+ * bit at the same time.
+ */
+#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
+#define ptep_set_access_flags(vma, address, ptep, entry, dirty) \
+({ \
+ int __changed = !pte_same(*(ptep), entry); \
+ if (__changed && dirty) { \
+ *ptep = entry; \
+ pte_update_defer((vma)->vm_mm, (address), (ptep)); \
+ flush_tlb_page(vma, address); \
+ } \
+ __changed; \
+})
+
+#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
+#define ptep_test_and_clear_young(vma, addr, ptep) ({ \
+ int __ret = 0; \
+ if (pte_young(*(ptep))) \
+ __ret = test_and_clear_bit(_PAGE_BIT_ACCESSED, \
+ &(ptep)->pte); \
+ if (__ret) \
+ pte_update((vma)->vm_mm, addr, ptep); \
+ __ret; \
+})
+
+#define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
+#define ptep_clear_flush_young(vma, address, ptep) \
+({ \
+ int __young; \
+ __young = ptep_test_and_clear_young((vma), (address), (ptep)); \
+ if (__young) \
+ flush_tlb_page(vma, address); \
+ __young; \
+})
+
+#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
+static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
+{
+ pte_t pte = native_ptep_get_and_clear(ptep);
+ pte_update(mm, addr, ptep);
+ return pte;
+}
+
+#define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
+static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full)
+{
+ pte_t pte;
+ if (full) {
+ /*
+ * Full address destruction in progress; paravirt does not
+ * care about updates and native needs no locking
+ */
+ pte = native_local_ptep_get_and_clear(ptep);
+ } else {
+ pte = ptep_get_and_clear(mm, addr, ptep);
+ }
+ return pte;
+}
+
+#define __HAVE_ARCH_PTEP_SET_WRPROTECT
+static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
+{
+ clear_bit(_PAGE_BIT_RW, &ptep->pte);
+ pte_update(mm, addr, ptep);
+}
+
+#ifndef CONFIG_PARAVIRT
+#define pte_clear(mm, addr, ptep) native_pte_clear(mm, addr, ptep)
+#endif /* !CONFIG_PARAVIRT */
+
+#include <asm-generic/pgtable.h>
+#endif /* __ASSEMBLER__ */
+
#endif /* _ASM_X86_PGTABLE_H */
diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h
--- a/include/asm-x86/pgtable_32.h
+++ b/include/asm-x86/pgtable_32.h
@@ -106,105 +106,6 @@ extern unsigned long pg0[];
#else
# include <asm/pgtable-2level.h>
#endif
-
-#ifndef CONFIG_PARAVIRT
-/*
- * Rules for using pte_update - it must be called after any PTE update which
- * has not been done using the set_pte / clear_pte interfaces. It is used by
- * shadow mode hypervisors to resynchronize the shadow page tables. Kernel PTE
- * updates should either be sets, clears, or set_pte_atomic for P->P
- * transitions, which means this hook should only be called for user PTEs.
- * This hook implies a P->P protection or access change has taken place, which
- * requires a subsequent TLB flush. The notification can optionally be delayed
- * until the TLB flush event by using the pte_update_defer form of the
- * interface, but care must be taken to assure that the flush happens while
- * still holding the same page table lock so that the shadow and primary pages
- * do not become out of sync on SMP.
- */
-#define pte_update(mm, addr, ptep) do { } while (0)
-#define pte_update_defer(mm, addr, ptep) do { } while (0)
-#endif
-
-/* local pte updates need not use xchg for locking */
-static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep)
-{
- pte_t res = *ptep;
-
- /* Pure native function needs no input for mm, addr */
- native_pte_clear(NULL, 0, ptep);
- return res;
-}
-
-/*
- * We only update the dirty/accessed state if we set
- * the dirty bit by hand in the kernel, since the hardware
- * will do the accessed bit for us, and we don't want to
- * race with other CPU's that might be updating the dirty
- * bit at the same time.
- */
-#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-#define ptep_set_access_flags(vma, address, ptep, entry, dirty) \
-({ \
- int __changed = !pte_same(*(ptep), entry); \
- if (__changed && dirty) { \
- (ptep)->pte_low = (entry).pte_low; \
- pte_update_defer((vma)->vm_mm, (address), (ptep)); \
- flush_tlb_page(vma, address); \
- } \
- __changed; \
-})
-
-#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-#define ptep_test_and_clear_young(vma, addr, ptep) ({ \
- int __ret = 0; \
- if (pte_young(*(ptep))) \
- __ret = test_and_clear_bit(_PAGE_BIT_ACCESSED, \
- &(ptep)->pte_low); \
- if (__ret) \
- pte_update((vma)->vm_mm, addr, ptep); \
- __ret; \
-})
-
-#define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
-#define ptep_clear_flush_young(vma, address, ptep) \
-({ \
- int __young; \
- __young = ptep_test_and_clear_young((vma), (address), (ptep)); \
- if (__young) \
- flush_tlb_page(vma, address); \
- __young; \
-})
-
-#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
-static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
-{
- pte_t pte = native_ptep_get_and_clear(ptep);
- pte_update(mm, addr, ptep);
- return pte;
-}
-
-#define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
-static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full)
-{
- pte_t pte;
- if (full) {
- /*
- * Full address destruction in progress; paravirt does not
- * care about updates and native needs no locking
- */
- pte = native_local_ptep_get_and_clear(ptep);
- } else {
- pte = ptep_get_and_clear(mm, addr, ptep);
- }
- return pte;
-}
-
-#define __HAVE_ARCH_PTEP_SET_WRPROTECT
-static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
-{
- clear_bit(_PAGE_BIT_RW, &ptep->pte_low);
- pte_update(mm, addr, ptep);
-}
/*
* clone_pgd_range(pgd_t *dst, pgd_t *src, int count);
@@ -359,6 +260,4 @@ static inline void paravirt_pagetable_se
#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
remap_pfn_range(vma, vaddr, pfn, size, prot)
-#include <asm-generic/pgtable.h>
-
#endif /* _I386_PGTABLE_H */
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -101,18 +101,18 @@ static inline void pgd_clear (pgd_t * pg
set_pgd(pgd, __pgd(0));
}
-#define ptep_get_and_clear(mm,addr,xp) __pte(xchg(&(xp)->pte, 0))
+#define native_ptep_get_and_clear(xp) __pte(xchg(&(xp)->pte, 0))
struct mm_struct;
-static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full)
+static inline pte_t native_ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full)
{
pte_t pte;
if (full) {
pte = *ptep;
*ptep = __pte(0);
} else {
- pte = ptep_get_and_clear(mm, addr, ptep);
+ pte = native_ptep_get_and_clear(ptep);
}
return pte;
}
@@ -158,25 +158,11 @@ static inline unsigned long pmd_bad(pmd_
#define pte_none(x) (!pte_val(x))
#define pte_present(x) (pte_val(x) & (_PAGE_PRESENT | _PAGE_PROTNONE))
-#define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
+#define native_pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) /* FIXME: is this right? */
#define pte_page(x) pfn_to_page(pte_pfn(x))
#define pte_pfn(x) ((pte_val(x) & __PHYSICAL_MASK) >> PAGE_SHIFT)
-
-struct vm_area_struct;
-
-static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
-{
- if (!pte_young(*ptep))
- return 0;
- return test_and_clear_bit(_PAGE_BIT_ACCESSED, &ptep->pte);
-}
-
-static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
-{
- clear_bit(_PAGE_BIT_RW, &ptep->pte);
-}
/*
* Macro to mark a page protection value as "uncacheable".
@@ -243,22 +229,6 @@ static inline void ptep_set_wrprotect(st
#define update_mmu_cache(vma,address,pte) do { } while (0)
-/* We only update the dirty/accessed state if we set
- * the dirty bit by hand in the kernel, since the hardware
- * will do the accessed bit for us, and we don't want to
- * race with other CPU's that might be updating the dirty
- * bit at the same time. */
-#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-#define ptep_set_access_flags(__vma, __address, __ptep, __entry, __dirty) \
-({ \
- int __changed = !pte_same(*(__ptep), __entry); \
- if (__changed && __dirty) { \
- set_pte(__ptep, __entry); \
- flush_tlb_page(__vma, __address); \
- } \
- __changed; \
-})
-
/* Encode and de-code a swap entry */
#define __swp_type(x) (((x).val >> 1) & 0x3f)
#define __swp_offset(x) ((x).val >> 8)
@@ -290,12 +260,7 @@ pte_t *lookup_address(unsigned long addr
#define kc_offset_to_vaddr(o) \
(((o) & (1UL << (__VIRTUAL_MASK_SHIFT-1))) ? ((o) | (~__VIRTUAL_MASK)) : (o))
-#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
-#define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
-#define __HAVE_ARCH_PTEP_SET_WRPROTECT
#define __HAVE_ARCH_PTE_SAME
-#include <asm-generic/pgtable.h>
#endif /* !__ASSEMBLY__ */
#endif /* _X86_64_PGTABLE_H */
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 08 of 10] x86: unify zero_page definition
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
` (6 preceding siblings ...)
2008-01-08 22:00 ` [PATCH 07 of 10] x86: pgtable: unify pte accessors Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 09 of 10] x86: unify paravirt pagetable accessors Jeremy Fitzhardinge
` (2 subsequent siblings)
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Move ZERO_PAGE/empty_zero_page to common place.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
include/asm-x86/pgtable.h | 8 ++++++++
include/asm-x86/pgtable_32.h | 6 ------
include/asm-x86/pgtable_64.h | 7 -------
3 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h
--- a/include/asm-x86/pgtable.h
+++ b/include/asm-x86/pgtable.h
@@ -110,6 +110,14 @@ extern unsigned long long __PAGE_KERNEL,
#define __S111 PAGE_SHARED_EXEC
#ifndef __ASSEMBLER__
+
+/*
+ * ZERO_PAGE is a global shared page that is always zero: used
+ * for zero-mapped memory areas etc..
+ */
+extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)];
+#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
+
/*
* The following only work if pte_present() is true.
diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h
--- a/include/asm-x86/pgtable_32.h
+++ b/include/asm-x86/pgtable_32.h
@@ -25,12 +25,6 @@ struct mm_struct;
struct mm_struct;
struct vm_area_struct;
-/*
- * ZERO_PAGE is a global shared page that is always zero: used
- * for zero-mapped memory areas etc..
- */
-#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
-extern unsigned long empty_zero_page[1024];
extern pgd_t swapper_pg_dir[1024];
extern struct kmem_cache *pmd_cache;
extern spinlock_t pgd_lock;
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -22,13 +22,6 @@ extern pgd_t init_level4_pgt[];
extern void paging_init(void);
extern void clear_kernel_mapping(unsigned long addr, unsigned long size);
-
-/*
- * ZERO_PAGE is a global shared page that is always zero: used
- * for zero-mapped memory areas etc..
- */
-extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)];
-#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
#endif /* !__ASSEMBLY__ */
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 09 of 10] x86: unify paravirt pagetable accessors
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
` (7 preceding siblings ...)
2008-01-08 22:00 ` [PATCH 08 of 10] x86: unify zero_page definition Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 10 of 10] xen: mask out PWT too Jeremy Fitzhardinge
2008-01-08 22:42 ` [PATCH 00 of 10] x86: unify asm/pgtable.h Ingo Molnar
10 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Put all the defines for mapping pagetable operations to their native
versions (for the non-paravirt case) into one place. Make the
corresponding changes to paravirt.h.
The tricky part here is that when a pagetable entry can't be updated
atomically (ie, 32-bit PAE), we need special handlers for pte_clear,
set_pte_atomic and set_pte_present. However, the other two modes
don't need special handling for these, and can use a common
set_pte(_at) path.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
include/asm-x86/paravirt.h | 21 ++++++++++
include/asm-x86/pgtable-2level.h | 30 ++++++++-------
include/asm-x86/pgtable-3level.h | 15 -------
include/asm-x86/pgtable.h | 60 +++++++++++++++++++++++-------
include/asm-x86/pgtable_64.h | 76 ++++++++++++++++++++------------------
5 files changed, 124 insertions(+), 78 deletions(-)
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h
--- a/include/asm-x86/paravirt.h
+++ b/include/asm-x86/paravirt.h
@@ -1039,6 +1039,27 @@ static inline void set_pmd(pmd_t *pmdp,
{
PVOP_VCALL2(pv_mmu_ops.set_pmd, pmdp, pmdval.pud.pgd.pgd);
}
+
+static inline void pmd_clear(pmd_t *pmdp)
+{
+ set_pmd(pmdp, __pmd(0));
+}
+
+static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
+{
+ set_pte_at(mm, addr, ptep, __pte(0));
+}
+
+static inline void set_pte_atomic(pte_t *ptep, pte_t pte)
+{
+ set_pte(ptep, pte);
+}
+
+static inline void set_pte_present(struct mm_struct *mm, unsigned long addr,
+ pte_t *ptep, pte_t pte)
+{
+ set_pte(ptep, pte);
+}
#endif /* CONFIG_X86_PAE */
/* Lazy mode for batching updates / context switch */
diff --git a/include/asm-x86/pgtable-2level.h b/include/asm-x86/pgtable-2level.h
--- a/include/asm-x86/pgtable-2level.h
+++ b/include/asm-x86/pgtable-2level.h
@@ -15,29 +15,31 @@ static inline void native_set_pte(pte_t
{
*ptep = pte;
}
-static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep , pte_t pte)
-{
- native_set_pte(ptep, pte);
-}
+
static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
{
*pmdp = pmd;
}
-#ifndef CONFIG_PARAVIRT
-#define set_pte(pteptr, pteval) native_set_pte(pteptr, pteval)
-#define set_pte_at(mm,addr,ptep,pteval) native_set_pte_at(mm, addr, ptep, pteval)
-#define set_pmd(pmdptr, pmdval) native_set_pmd(pmdptr, pmdval)
-#endif
-#define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
-#define set_pte_present(mm,addr,ptep,pteval) set_pte_at(mm,addr,ptep,pteval)
+static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
+{
+ native_set_pte(ptep, pte);
+}
-#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
+static inline void native_set_pte_present(struct mm_struct *mm, unsigned long addr,
+ pte_t *ptep, pte_t pte)
+{
+ native_set_pte(ptep, pte);
+}
+
+static inline void native_pmd_clear(pmd_t *pmdp)
+{
+ native_set_pmd(pmdp, __pmd(0));
+}
static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *xp)
{
- *xp = __pte(0);
+ *xp = native_make_pte(0);
}
#ifdef CONFIG_SMP
diff --git a/include/asm-x86/pgtable-3level.h b/include/asm-x86/pgtable-3level.h
--- a/include/asm-x86/pgtable-3level.h
+++ b/include/asm-x86/pgtable-3level.h
@@ -38,11 +38,6 @@ static inline void native_set_pte(pte_t
ptep->pte_high = pte.pte_high;
smp_wmb();
ptep->pte_low = pte.pte_low;
-}
-static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep , pte_t pte)
-{
- native_set_pte(ptep, pte);
}
/*
@@ -93,16 +88,6 @@ static inline void native_pmd_clear(pmd_
smp_wmb();
*(tmp + 1) = 0;
}
-
-#ifndef CONFIG_PARAVIRT
-#define set_pte(ptep, pte) native_set_pte(ptep, pte)
-#define set_pte_at(mm, addr, ptep, pte) native_set_pte_at(mm, addr, ptep, pte)
-#define set_pte_present(mm, addr, ptep, pte) native_set_pte_present(mm, addr, ptep, pte)
-#define set_pte_atomic(ptep, pte) native_set_pte_atomic(ptep, pte)
-#define set_pmd(pmdp, pmd) native_set_pmd(pmdp, pmd)
-#define set_pud(pudp, pud) native_set_pud(pudp, pud)
-#define pmd_clear(pmd) native_pmd_clear(pmd)
-#endif
/*
* Pentium-II erratum A13: in PAE mode we explicitly have to flush
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h
--- a/include/asm-x86/pgtable.h
+++ b/include/asm-x86/pgtable.h
@@ -175,6 +175,36 @@ static inline pte_t pte_modify(pte_t pte
return __pte(val);
}
+#ifdef CONFIG_PARAVIRT
+#include <asm/paravirt.h>
+#else /* !CONFIG_PARAVIRT */
+#define set_pte(ptep, pte) native_set_pte(ptep, pte)
+#define set_pte_at(mm, addr, ptep, pte) native_set_pte_at(mm, addr, ptep, pte)
+
+#define set_pte_present(mm, addr, ptep, pte) \
+ native_set_pte_present(mm, addr, ptep, pte)
+#define set_pte_atomic(ptep, pte) \
+ native_set_pte_atomic(ptep, pte)
+
+#define set_pmd(pmdp, pmd) native_set_pmd(pmdp, pmd)
+
+#ifndef __PAGETABLE_PUD_FOLDED
+#define set_pgd(pgdp, pgd) native_set_pgd(pgdp, pgd)
+#define set_pud(pudp, pud) native_set_pud(pudp, pud)
+#define pgd_clear(pgd) native_pgd_clear(pgd)
+#endif
+
+#ifndef __PAGETABLE_PMD_FOLDED
+#define pud_clear(pud) native_pud_clear(pud)
+#endif
+
+#define pte_clear(mm, addr, ptep) native_pte_clear(mm, addr, ptep)
+#define pmd_clear(pmd) native_pmd_clear(pmd)
+
+#define pte_update(mm, addr, ptep) do { } while (0)
+#define pte_update_defer(mm, addr, ptep) do { } while (0)
+#endif /* CONFIG_PARAVIRT */
+
#endif /* __ASSEMBLER__ */
#ifdef CONFIG_X86_32
@@ -184,6 +214,22 @@ static inline pte_t pte_modify(pte_t pte
#endif
#ifndef __ASSEMBLER__
+
+/* local pte updates need not use xchg for locking */
+static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep)
+{
+ pte_t res = *ptep;
+
+ /* Pure native function needs no input for mm, addr */
+ native_pte_clear(NULL, 0, ptep);
+ return res;
+}
+
+static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr,
+ pte_t *ptep , pte_t pte)
+{
+ native_set_pte(ptep, pte);
+}
#ifndef CONFIG_PARAVIRT
/*
@@ -202,16 +248,6 @@ static inline pte_t pte_modify(pte_t pte
#define pte_update(mm, addr, ptep) do { } while (0)
#define pte_update_defer(mm, addr, ptep) do { } while (0)
#endif
-
-/* local pte updates need not use xchg for locking */
-static inline pte_t native_local_ptep_get_and_clear(pte_t *ptep)
-{
- pte_t res = *ptep;
-
- /* Pure native function needs no input for mm, addr */
- native_pte_clear(NULL, 0, ptep);
- return res;
-}
/*
* We only update the dirty/accessed state if we set
@@ -284,10 +320,6 @@ static inline void ptep_set_wrprotect(st
pte_update(mm, addr, ptep);
}
-#ifndef CONFIG_PARAVIRT
-#define pte_clear(mm, addr, ptep) native_pte_clear(mm, addr, ptep)
-#endif /* !CONFIG_PARAVIRT */
-
#include <asm-generic/pgtable.h>
#endif /* __ASSEMBLER__ */
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h
--- a/include/asm-x86/pgtable_64.h
+++ b/include/asm-x86/pgtable_64.h
@@ -63,51 +63,59 @@ extern void clear_kernel_mapping(unsigne
#define pgd_none(x) (!pgd_val(x))
#define pud_none(x) (!pud_val(x))
-static inline void set_pte(pte_t *dst, pte_t val)
+struct mm_struct;
+
+static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr,
+ pte_t *ptep)
{
- *dst = val;
-}
-#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
-
-static inline void set_pmd(pmd_t *dst, pmd_t val)
-{
- *dst = val;
-}
-
-static inline void set_pud(pud_t *dst, pud_t val)
-{
- *dst = val;
+ *ptep = native_make_pte(0);
}
-static inline void pud_clear (pud_t *pud)
+static inline void native_set_pte(pte_t *ptep, pte_t pte)
{
- set_pud(pud, __pud(0));
+ *ptep = pte;
}
-static inline void set_pgd(pgd_t *dst, pgd_t val)
+static inline pte_t native_ptep_get_and_clear(pte_t *xp)
{
- *dst = val;
-}
-
-static inline void pgd_clear (pgd_t * pgd)
-{
- set_pgd(pgd, __pgd(0));
+#ifdef CONFIG_SMP
+ return native_make_pte(xchg(&xp->pte, 0));
+#else
+ /* native_local_ptep_get_and_clear, but duplicated because of cyclic dependency */
+ pte_t ret = *xp;
+ native_pte_clear(NULL, 0, xp);
+ return ret;
+#endif
}
-#define native_ptep_get_and_clear(xp) __pte(xchg(&(xp)->pte, 0))
+static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
+{
+ *pmdp = pmd;
+}
-struct mm_struct;
+static inline void native_pmd_clear(pmd_t *pmd)
+{
+ native_set_pmd(pmd, native_make_pmd(0));
+}
-static inline pte_t native_ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full)
+static inline void native_set_pud(pud_t *pudp, pud_t pud)
{
- pte_t pte;
- if (full) {
- pte = *ptep;
- *ptep = __pte(0);
- } else {
- pte = native_ptep_get_and_clear(ptep);
- }
- return pte;
+ *pudp = pud;
+}
+
+static inline void native_pud_clear(pud_t *pud)
+{
+ native_set_pud(pud, native_make_pud(0));
+}
+
+static inline void native_set_pgd(pgd_t *pgdp, pgd_t pgd)
+{
+ *pgdp = pgd;
+}
+
+static inline void native_pgd_clear(pgd_t * pgd)
+{
+ native_set_pgd(pgd, native_make_pgd(0));
}
#define pte_same(a, b) ((a).pte == (b).pte)
@@ -151,7 +159,6 @@ static inline unsigned long pmd_bad(pmd_
#define pte_none(x) (!pte_val(x))
#define pte_present(x) (pte_val(x) & (_PAGE_PRESENT | _PAGE_PROTNONE))
-#define native_pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
#define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) /* FIXME: is this right? */
#define pte_page(x) pfn_to_page(pte_pfn(x))
@@ -196,7 +203,6 @@ static inline unsigned long pmd_bad(pmd_
pmd_index(address))
#define pmd_none(x) (!pmd_val(x))
#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
-#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
#define pfn_pmd(nr,prot) (__pmd(((nr) << PAGE_SHIFT) | pgprot_val(prot)))
#define pmd_pfn(x) ((pmd_val(x) & __PHYSICAL_MASK) >> PAGE_SHIFT)
^ permalink raw reply [flat|nested] 49+ messages in thread
* [PATCH 10 of 10] xen: mask out PWT too
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
` (8 preceding siblings ...)
2008-01-08 22:00 ` [PATCH 09 of 10] x86: unify paravirt pagetable accessors Jeremy Fitzhardinge
@ 2008-01-08 22:00 ` Jeremy Fitzhardinge
2008-01-09 9:17 ` Jan Beulich
2008-01-08 22:42 ` [PATCH 00 of 10] x86: unify asm/pgtable.h Ingo Molnar
10 siblings, 1 reply; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 22:00 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
The hypervisor doesn't allow PCD or PWT to be set on guest ptes, so
make sure they're masked out. Also, fix up some previous mispatching.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
arch/x86/xen/mmu.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -244,7 +244,7 @@ pte_t xen_make_pte(unsigned long long pt
if (pte & 1)
pte = phys_to_machine(XPADDR(pte)).maddr;
- pte &= ~_PAGE_PCD;
+ pte &= ~(_PAGE_PCD | _PAGE_PWT);
return (pte_t){ .pte = pte };
}
@@ -293,9 +293,7 @@ pte_t xen_make_pte(unsigned long pte)
if (pte & _PAGE_PRESENT)
pte = phys_to_machine(XPADDR(pte)).maddr;
- pte &= ~_PAGE_PCD;
-
- pte &= ~_PAGE_PCD;
+ pte &= ~(_PAGE_PCD | _PAGE_PWT);
return (pte_t){ pte };
}
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
` (9 preceding siblings ...)
2008-01-08 22:00 ` [PATCH 10 of 10] xen: mask out PWT too Jeremy Fitzhardinge
@ 2008-01-08 22:42 ` Ingo Molnar
2008-01-08 23:12 ` Ingo Molnar
10 siblings, 1 reply; 49+ messages in thread
From: Ingo Molnar @ 2008-01-08 22:42 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> Hi Ingo,
>
> Here's a series which goes some way to tidying up pgtable.h. It is
> not complete yet, but this lot compiles and works for me.
>
> In many cases I've moved code around with no attempt at adjusting the
> formatting to acceptible style. That can be done in a later patch,
> but it means that checkpatch is noisy with this lot.
thanks Jeremy, applied.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-08 22:42 ` [PATCH 00 of 10] x86: unify asm/pgtable.h Ingo Molnar
@ 2008-01-08 23:12 ` Ingo Molnar
2008-01-08 23:23 ` Jeremy Fitzhardinge
0 siblings, 1 reply; 49+ messages in thread
From: Ingo Molnar @ 2008-01-08 23:12 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
[-- Attachment #1: Type: text/plain, Size: 1853 bytes --]
* Ingo Molnar <mingo@elte.hu> wrote:
> > Hi Ingo,
> >
> > Here's a series which goes some way to tidying up pgtable.h. It is
> > not complete yet, but this lot compiles and works for me.
> >
> > In many cases I've moved code around with no attempt at adjusting
> > the formatting to acceptible style. That can be done in a later
> > patch, but it means that checkpatch is noisy with this lot.
>
> thanks Jeremy, applied.
threw this into the random test setup: it found the attached config
after a few iterations, which needed the fix below. (config builds and
boots fine with this fix)
the problem was that set_pud() is used by
include/asm-generic/pgtable-nopud.h, to build set_pgd():
#define set_pgd(pgdptr, pgdval) set_pud((pud_t *)(pgdptr), (pud_t) { pgdval })
it's truly a maze ... took me 10 straight minutes of staring at the code
to figure out where the set_pud() came from :-/
anyway, your patchset is holding up pretty good so far in testing.
Ingo
--------------------->
Subject: x86: unify-pgtable.h, fix
From: Ingo Molnar <mingo@elte.hu>
fix build error.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
include/asm-x86/pgtable.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux-x86.q/include/asm-x86/pgtable.h
===================================================================
--- linux-x86.q.orig/include/asm-x86/pgtable.h
+++ linux-x86.q/include/asm-x86/pgtable.h
@@ -190,10 +190,11 @@ static inline pte_t pte_modify(pte_t pte
#ifndef __PAGETABLE_PUD_FOLDED
#define set_pgd(pgdp, pgd) native_set_pgd(pgdp, pgd)
-#define set_pud(pudp, pud) native_set_pud(pudp, pud)
#define pgd_clear(pgd) native_pgd_clear(pgd)
#endif
+#define set_pud(pudp, pud) native_set_pud(pudp, pud)
+
#ifndef __PAGETABLE_PMD_FOLDED
#define pud_clear(pud) native_pud_clear(pud)
#endif
[-- Attachment #2: config --]
[-- Type: text/plain, Size: 53387 bytes --]
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24-rc7
# Wed Jan 9 00:01:55 2008
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
# CONFIG_GENERIC_LOCKBREAK is not set
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_QUICKLIST=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
# CONFIG_GENERIC_GPIO is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set
# CONFIG_ARCH_SETS_UP_PER_CPU_AREA is not set
CONFIG_ARCH_SUPPORTS_OPROFILE=y
# CONFIG_ZONE_DMA32 is not set
CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_KTIME_SCALAR=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
# CONFIG_TASK_DELAY_ACCT is not set
# CONFIG_TASK_XACCT is not set
CONFIG_USER_NS=y
CONFIG_PID_NS=y
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=20
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
# CONFIG_CGROUP_NS is not set
# CONFIG_FAIR_GROUP_SCHED is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_SYSFS_DEPRECATED=y
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_KMOD is not set
CONFIG_BLOCK=y
# CONFIG_LBD is not set
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_LSF is not set
CONFIG_BLK_DEV_BSG=y
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
#
# Processor type and features
#
# CONFIG_TICK_ONESHOT is not set
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP is not set
# CONFIG_X86_PC is not set
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
CONFIG_X86_GENERICARCH=y
# CONFIG_X86_ES7000 is not set
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_VSMP is not set
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
CONFIG_X86_CYCLONE_TIMER=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_MVIAC7=y
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_TSC=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=4
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_HPET_TIMER=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
CONFIG_VM86=y
CONFIG_TOSHIBA=y
CONFIG_I8K=y
# CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=y
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=y
# CONFIG_X86_CPUID is not set
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_NR_QUICK=1
CONFIG_VIRT_TO_BUS=y
# CONFIG_HIGHPTE is not set
CONFIG_MATH_EMULATION=y
# CONFIG_MTRR is not set
# CONFIG_SECCOMP is not set
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x100000
CONFIG_RELOCATABLE=y
CONFIG_PHYSICAL_ALIGN=0x100000
# CONFIG_COMPAT_VDSO is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
# Power management options
#
# CONFIG_PM is not set
CONFIG_SUSPEND_UP_POSSIBLE=y
CONFIG_HIBERNATION_UP_POSSIBLE=y
#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# CPUFreq processor drivers
#
CONFIG_X86_POWERNOW_K6=y
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K8=y
CONFIG_X86_GX_SUSPMOD=y
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not set
CONFIG_X86_SPEEDSTEP_SMI=m
CONFIG_X86_P4_CLOCKMOD=y
CONFIG_X86_CPUFREQ_NFORCE2=y
CONFIG_X86_LONGRUN=y
CONFIG_X86_E_POWERSAVER=y
#
# shared options
#
CONFIG_X86_SPEEDSTEP_LIB=y
CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
# CONFIG_CPU_IDLE is not set
#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCIEPORTBUS=y
# CONFIG_PCIEAER is not set
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_LEGACY is not set
# CONFIG_PCI_DEBUG is not set
# CONFIG_HT_IRQ is not set
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
CONFIG_PCCARD=y
CONFIG_PCMCIA_DEBUG=y
# CONFIG_PCMCIA is not set
CONFIG_CARDBUS=y
#
# PC-card bridges
#
CONFIG_YENTA=m
CONFIG_YENTA_O2=y
CONFIG_YENTA_RICOH=y
CONFIG_YENTA_TI=y
CONFIG_YENTA_ENE_TUNE=y
CONFIG_YENTA_TOSHIBA=y
CONFIG_PCMCIA_PROBE=y
CONFIG_PCCARD_NONSTATIC=m
# CONFIG_HOTPLUG_PCI is not set
#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=y
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
CONFIG_XFRM_SUB_POLICY=y
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_MULTIPLE_TABLES is not set
# CONFIG_IP_ROUTE_MULTIPATH is not set
# CONFIG_IP_ROUTE_VERBOSE is not set
CONFIG_IP_PNP=y
# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE=m
CONFIG_NET_IPGRE_BROADCAST=y
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
CONFIG_INET_ESP=y
CONFIG_INET_IPCOMP=y
CONFIG_INET_XFRM_TUNNEL=y
CONFIG_INET_TUNNEL=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_LRO=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=m
# CONFIG_TCP_CONG_WESTWOOD is not set
CONFIG_TCP_CONG_HTCP=y
CONFIG_TCP_CONG_HSTCP=y
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=y
CONFIG_TCP_CONG_SCALABLE=m
# CONFIG_TCP_CONG_LP is not set
# CONFIG_TCP_CONG_VENO is not set
# CONFIG_TCP_CONG_YEAH is not set
CONFIG_TCP_CONG_ILLINOIS=m
# CONFIG_DEFAULT_BIC is not set
# CONFIG_DEFAULT_CUBIC is not set
# CONFIG_DEFAULT_HTCP is not set
CONFIG_DEFAULT_VEGAS=y
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="vegas"
CONFIG_TCP_MD5SIG=y
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
CONFIG_NETLABEL=y
CONFIG_NETWORK_SECMARK=y
# CONFIG_NETFILTER is not set
CONFIG_IP_DCCP=m
CONFIG_INET_DCCP_DIAG=m
CONFIG_IP_DCCP_ACKVEC=y
#
# DCCP CCIDs Configuration (EXPERIMENTAL)
#
CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID2_DEBUG is not set
# CONFIG_IP_DCCP_CCID3 is not set
#
# DCCP Kernel Hacking
#
CONFIG_IP_DCCP_DEBUG=y
CONFIG_IP_SCTP=y
CONFIG_SCTP_DBG_MSG=y
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
CONFIG_TIPC=y
CONFIG_TIPC_ADVANCED=y
CONFIG_TIPC_ZONES=3
CONFIG_TIPC_CLUSTERS=1
CONFIG_TIPC_NODES=255
CONFIG_TIPC_SLAVE_NODES=0
CONFIG_TIPC_PORTS=8191
CONFIG_TIPC_LOG=0
CONFIG_TIPC_DEBUG=y
CONFIG_ATM=m
CONFIG_ATM_CLIP=m
# CONFIG_ATM_CLIP_NO_ICMP is not set
# CONFIG_ATM_LANE is not set
# CONFIG_ATM_BR2684 is not set
# CONFIG_BRIDGE is not set
CONFIG_VLAN_8021Q=y
CONFIG_DECNET=y
# CONFIG_DECNET_ROUTER is not set
CONFIG_LLC=y
CONFIG_LLC2=y
CONFIG_IPX=y
# CONFIG_IPX_INTERN is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
CONFIG_LAPB=m
# CONFIG_ECONET is not set
CONFIG_WAN_ROUTER=y
CONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#
# CONFIG_NET_SCH_CBQ is not set
CONFIG_NET_SCH_HTB=y
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_ATM=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RR=m
# CONFIG_NET_SCH_RED is not set
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=y
CONFIG_NET_SCH_GRED=y
# CONFIG_NET_SCH_DSMARK is not set
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=y
#
# Classification
#
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
CONFIG_NET_CLS_TCINDEX=y
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
# CONFIG_NET_CLS_FW is not set
CONFIG_NET_CLS_U32=m
# CONFIG_CLS_U32_PERF is not set
# CONFIG_CLS_U32_MARK is not set
# CONFIG_NET_CLS_RSVP is not set
CONFIG_NET_CLS_RSVP6=y
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_EMATCH_NBYTE=m
CONFIG_NET_EMATCH_U32=m
CONFIG_NET_EMATCH_META=y
# CONFIG_NET_EMATCH_TEXT is not set
# CONFIG_NET_CLS_ACT is not set
# CONFIG_NET_CLS_POLICE is not set
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
#
# Network testing
#
CONFIG_NET_PKTGEN=y
# CONFIG_HAMRADIO is not set
CONFIG_IRDA=y
#
# IrDA protocols
#
# CONFIG_IRLAN is not set
# CONFIG_IRCOMM is not set
CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
# CONFIG_IRDA_CACHE_LAST_LSAP is not set
CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
#
# Infrared-port device drivers
#
#
# SIR device drivers
#
# CONFIG_IRTTY_SIR is not set
#
# Dongle support
#
CONFIG_KINGSUN_DONGLE=m
# CONFIG_KSDAZZLE_DONGLE is not set
CONFIG_KS959_DONGLE=m
#
# Old SIR device drivers
#
CONFIG_IRPORT_SIR=m
#
# Old Serial dongle support
#
CONFIG_DONGLE_OLD=y
CONFIG_ESI_DONGLE_OLD=y
CONFIG_ACTISYS_DONGLE_OLD=m
CONFIG_TEKRAM_DONGLE_OLD=m
# CONFIG_GIRBIL_DONGLE_OLD is not set
CONFIG_LITELINK_DONGLE_OLD=y
# CONFIG_MCP2120_DONGLE_OLD is not set
CONFIG_OLD_BELKIN_DONGLE_OLD=y
# CONFIG_ACT200L_DONGLE_OLD is not set
CONFIG_MA600_DONGLE_OLD=m
#
# FIR device drivers
#
CONFIG_USB_IRDA=y
# CONFIG_SIGMATEL_FIR is not set
CONFIG_NSC_FIR=y
# CONFIG_WINBOND_FIR is not set
CONFIG_TOSHIBA_FIR=y
CONFIG_SMC_IRCC_FIR=m
# CONFIG_ALI_FIR is not set
CONFIG_VLSI_FIR=y
CONFIG_VIA_FIR=m
CONFIG_MCS_FIR=m
CONFIG_BT=m
CONFIG_BT_L2CAP=m
# CONFIG_BT_SCO is not set
# CONFIG_BT_RFCOMM is not set
CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
# CONFIG_BT_BNEP_PROTO_FILTER is not set
CONFIG_BT_CMTP=m
CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
CONFIG_BT_HCIUSB=m
CONFIG_BT_HCIUSB_SCO=y
# CONFIG_BT_HCIBTSDIO is not set
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
CONFIG_BT_HCIUART_LL=y
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
# CONFIG_AF_RXRPC is not set
#
# Wireless
#
CONFIG_CFG80211=y
CONFIG_NL80211=y
CONFIG_WIRELESS_EXT=y
CONFIG_MAC80211=m
CONFIG_MAC80211_RCSIMPLE=y
# CONFIG_MAC80211_LEDS is not set
# CONFIG_MAC80211_DEBUGFS is not set
CONFIG_MAC80211_DEBUG=y
# CONFIG_MAC80211_VERBOSE_DEBUG is not set
CONFIG_MAC80211_LOWTX_FRAME_DUMP=y
# CONFIG_TKIP_DEBUG is not set
# CONFIG_MAC80211_DEBUG_COUNTERS is not set
CONFIG_MAC80211_IBSS_DEBUG=y
CONFIG_MAC80211_VERBOSE_PS_DEBUG=y
CONFIG_IEEE80211=y
# CONFIG_IEEE80211_DEBUG is not set
CONFIG_IEEE80211_CRYPT_WEP=y
# CONFIG_IEEE80211_CRYPT_CCMP is not set
# CONFIG_IEEE80211_CRYPT_TKIP is not set
CONFIG_IEEE80211_SOFTMAC=y
# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
CONFIG_RFKILL=y
CONFIG_RFKILL_INPUT=y
CONFIG_RFKILL_LEDS=y
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
CONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=m
# CONFIG_MTD is not set
# CONFIG_PARPORT is not set
CONFIG_PNP=y
CONFIG_PNP_DEBUG=y
#
# Protocols
#
# CONFIG_ISAPNP is not set
CONFIG_PNPBIOS=y
CONFIG_PNPBIOS_PROC_FS=y
# CONFIG_PNPACPI is not set
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_FD=m
# CONFIG_BLK_DEV_XD is not set
CONFIG_BLK_CPQ_DA=m
CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_CISS_SCSI_TAPE=y
CONFIG_BLK_DEV_DAC960=m
CONFIG_BLK_DEV_UMEM=m
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_SX8=y
CONFIG_BLK_DEV_UB=y
# CONFIG_BLK_DEV_RAM is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD_WCACHE=y
CONFIG_ATA_OVER_ETH=y
# CONFIG_MISC_DEVICES is not set
CONFIG_EEPROM_93CX6=m
# CONFIG_IDE is not set
#
# SCSI device support
#
CONFIG_RAID_ATTRS=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=y
CONFIG_SCSI_NETLINK=y
# CONFIG_SCSI_PROC_FS is not set
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_CHR_DEV_OSST=m
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=m
# CONFIG_CHR_DEV_SCH is not set
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_FC_TGT_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=y
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
CONFIG_SCSI_SRP_ATTRS=y
# CONFIG_SCSI_SRP_TGT_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
CONFIG_BLK_DEV_3W_XXXX_RAID=y
CONFIG_SCSI_3W_9XXX=m
# CONFIG_SCSI_7000FASST is not set
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AHA152X=y
CONFIG_SCSI_AHA1542=m
# CONFIG_SCSI_AACRAID is not set
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_AIC7XXX_DEBUG_MASK=0
CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
CONFIG_SCSI_DPT_I2O=y
# CONFIG_SCSI_ADVANSYS is not set
CONFIG_SCSI_IN2000=m
# CONFIG_SCSI_ARCMSR is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
CONFIG_SCSI_HPTIOP=y
CONFIG_SCSI_BUSLOGIC=y
# CONFIG_SCSI_OMIT_FLASHPOINT is not set
# CONFIG_SCSI_DMX3191D is not set
CONFIG_SCSI_DTC3280=m
CONFIG_SCSI_EATA=m
# CONFIG_SCSI_EATA_TAGGED_QUEUE is not set
CONFIG_SCSI_EATA_LINKED_COMMANDS=y
CONFIG_SCSI_EATA_MAX_TAGS=16
# CONFIG_SCSI_FUTURE_DOMAIN is not set
CONFIG_SCSI_GENERIC_NCR5380=m
CONFIG_SCSI_GENERIC_NCR5380_MMIO=y
# CONFIG_SCSI_GENERIC_NCR53C400 is not set
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INITIO=m
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C406A is not set
CONFIG_SCSI_STEX=m
# CONFIG_SCSI_SYM53C8XX_2 is not set
CONFIG_SCSI_IPR=y
# CONFIG_SCSI_IPR_TRACE is not set
CONFIG_SCSI_IPR_DUMP=y
CONFIG_SCSI_PAS16=m
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
CONFIG_SCSI_QLOGIC_1280=y
CONFIG_SCSI_QLA_FC=m
CONFIG_SCSI_QLA_ISCSI=m
CONFIG_SCSI_LPFC=y
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_SYM53C416 is not set
CONFIG_SCSI_DC395x=y
# CONFIG_SCSI_DC390T is not set
CONFIG_SCSI_T128=y
CONFIG_SCSI_U14_34F=m
# CONFIG_SCSI_U14_34F_TAGGED_QUEUE is not set
CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
CONFIG_SCSI_U14_34F_MAX_TAGS=8
# CONFIG_SCSI_ULTRASTOR is not set
CONFIG_SCSI_NSP32=m
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_SRP=y
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_SATA_AHCI=y
CONFIG_SATA_SVW=m
CONFIG_ATA_PIIX=y
CONFIG_SATA_MV=m
# CONFIG_SATA_NV is not set
CONFIG_PDC_ADMA=y
CONFIG_SATA_QSTOR=y
CONFIG_SATA_PROMISE=m
CONFIG_SATA_SX4=y
# CONFIG_SATA_SIL is not set
CONFIG_SATA_SIL24=y
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_ULI is not set
CONFIG_SATA_VIA=m
CONFIG_SATA_VITESSE=m
CONFIG_SATA_INIC162X=m
# CONFIG_PATA_ALI is not set
CONFIG_PATA_AMD=y
CONFIG_PATA_ARTOP=y
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD640_PCI is not set
CONFIG_PATA_CMD64X=y
CONFIG_PATA_CS5520=m
# CONFIG_PATA_CS5530 is not set
CONFIG_PATA_CS5535=y
# CONFIG_PATA_CS5536 is not set
CONFIG_PATA_CYPRESS=y
CONFIG_PATA_EFAR=m
CONFIG_ATA_GENERIC=y
CONFIG_PATA_HPT366=y
# CONFIG_PATA_HPT37X is not set
CONFIG_PATA_HPT3X2N=y
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
CONFIG_PATA_JMICRON=m
CONFIG_PATA_LEGACY=m
# CONFIG_PATA_TRIFLEX is not set
CONFIG_PATA_MARVELL=m
# CONFIG_PATA_MPIIX is not set
CONFIG_PATA_OLDPIIX=y
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_NS87415 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
CONFIG_PATA_PDC_OLD=y
CONFIG_PATA_QDI=m
CONFIG_PATA_RADISYS=y
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
CONFIG_PATA_SERVERWORKS=y
CONFIG_PATA_PDC2027X=m
# CONFIG_PATA_SIL680 is not set
CONFIG_PATA_SIS=m
CONFIG_PATA_VIA=y
CONFIG_PATA_WINBOND=y
CONFIG_PATA_WINBOND_VLB=y
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
# CONFIG_MD_RAID10 is not set
# CONFIG_MD_RAID456 is not set
CONFIG_MD_MULTIPATH=m
# CONFIG_MD_FAULTY is not set
CONFIG_BLK_DEV_DM=y
CONFIG_DM_DEBUG=y
# CONFIG_DM_CRYPT is not set
CONFIG_DM_SNAPSHOT=y
CONFIG_DM_MIRROR=y
CONFIG_DM_ZERO=m
# CONFIG_DM_MULTIPATH is not set
CONFIG_DM_DELAY=m
CONFIG_DM_UEVENT=y
CONFIG_FUSION=y
# CONFIG_FUSION_SPI is not set
CONFIG_FUSION_FC=y
# CONFIG_FUSION_SAS is not set
CONFIG_FUSION_MAX_SGE=128
CONFIG_FUSION_CTL=y
CONFIG_FUSION_LOGGING=y
#
# IEEE 1394 (FireWire) support
#
CONFIG_FIREWIRE=m
CONFIG_FIREWIRE_OHCI=m
CONFIG_FIREWIRE_SBP2=m
CONFIG_IEEE1394=m
#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
#
# Controllers
#
CONFIG_IEEE1394_PCILYNX=m
CONFIG_IEEE1394_OHCI1394=m
#
# Protocols
#
# CONFIG_IEEE1394_VIDEO1394 is not set
# CONFIG_IEEE1394_SBP2 is not set
CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
CONFIG_IEEE1394_ETH1394=m
# CONFIG_IEEE1394_DV1394 is not set
# CONFIG_IEEE1394_RAWIO is not set
# CONFIG_I2O is not set
CONFIG_MACINTOSH_DRIVERS=y
# CONFIG_MAC_EMUMOUSEBTN is not set
CONFIG_NETDEVICES=y
CONFIG_NETDEVICES_MULTIQUEUE=y
# CONFIG_DUMMY is not set
CONFIG_BONDING=y
CONFIG_MACVLAN=y
# CONFIG_EQUALIZER is not set
CONFIG_TUN=y
CONFIG_VETH=y
# CONFIG_NET_SB1000 is not set
CONFIG_IP1000=y
CONFIG_ARCNET=y
CONFIG_ARCNET_1201=y
CONFIG_ARCNET_1051=y
CONFIG_ARCNET_RAW=m
CONFIG_ARCNET_CAP=m
CONFIG_ARCNET_COM90xx=y
# CONFIG_ARCNET_COM90xxIO is not set
CONFIG_ARCNET_RIM_I=y
# CONFIG_ARCNET_COM20020 is not set
CONFIG_PHYLIB=y
#
# MII PHY device drivers
#
# CONFIG_MARVELL_PHY is not set
# CONFIG_DAVICOM_PHY is not set
# CONFIG_QSEMI_PHY is not set
CONFIG_LXT_PHY=y
# CONFIG_CICADA_PHY is not set
CONFIG_VITESSE_PHY=m
CONFIG_SMSC_PHY=m
CONFIG_BROADCOM_PHY=y
# CONFIG_ICPLUS_PHY is not set
CONFIG_FIXED_PHY=m
CONFIG_FIXED_MII_10_FDX=y
# CONFIG_FIXED_MII_100_FDX is not set
# CONFIG_FIXED_MII_1000_FDX is not set
CONFIG_FIXED_MII_AMNT=1
CONFIG_MDIO_BITBANG=m
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
CONFIG_HAPPYMEAL=y
# CONFIG_SUNGEM is not set
CONFIG_CASSINI=y
CONFIG_NET_VENDOR_3COM=y
# CONFIG_EL1 is not set
CONFIG_EL2=y
CONFIG_ELPLUS=y
CONFIG_EL16=y
CONFIG_EL3=m
CONFIG_3C515=y
# CONFIG_VORTEX is not set
CONFIG_TYPHOON=y
CONFIG_LANCE=y
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
CONFIG_NET_TULIP=y
# CONFIG_DE2104X is not set
# CONFIG_TULIP is not set
# CONFIG_DE4X5 is not set
# CONFIG_WINBOND_840 is not set
CONFIG_DM9102=m
# CONFIG_ULI526X is not set
# CONFIG_PCMCIA_XIRCOM is not set
CONFIG_PCMCIA_XIRTULIP=y
CONFIG_AT1700=m
CONFIG_DEPCA=y
CONFIG_HP100=m
# CONFIG_NET_ISA is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
CONFIG_NET_PCI=y
CONFIG_PCNET32=y
# CONFIG_PCNET32_NAPI is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_AC3200 is not set
# CONFIG_APRICOT is not set
CONFIG_B44=m
CONFIG_B44_PCI_AUTOSELECT=y
CONFIG_B44_PCICORE_AUTOSELECT=y
CONFIG_B44_PCI=y
CONFIG_FORCEDETH=y
# CONFIG_FORCEDETH_NAPI is not set
CONFIG_CS89x0=y
CONFIG_EEPRO100=m
CONFIG_E100=y
CONFIG_FEALNX=y
CONFIG_NATSEMI=m
CONFIG_NE2K_PCI=m
CONFIG_8139CP=m
CONFIG_8139TOO=y
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
CONFIG_TLAN=m
CONFIG_VIA_RHINE=m
# CONFIG_VIA_RHINE_MMIO is not set
CONFIG_VIA_RHINE_NAPI=y
CONFIG_SC92031=y
CONFIG_NETDEV_1000=y
CONFIG_ACENIC=y
# CONFIG_ACENIC_OMIT_TIGON_I is not set
# CONFIG_DL2K is not set
CONFIG_E1000=y
CONFIG_E1000_NAPI=y
# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
CONFIG_E1000E=y
# CONFIG_NS83820 is not set
CONFIG_HAMACHI=m
# CONFIG_YELLOWFIN is not set
CONFIG_R8169=y
# CONFIG_R8169_NAPI is not set
# CONFIG_R8169_VLAN is not set
CONFIG_SIS190=m
CONFIG_SKGE=y
# CONFIG_SKGE_DEBUG is not set
# CONFIG_SKY2 is not set
CONFIG_SK98LIN=m
# CONFIG_VIA_VELOCITY is not set
# CONFIG_TIGON3 is not set
CONFIG_BNX2=m
CONFIG_QLA3XXX=y
CONFIG_ATL1=m
CONFIG_NETDEV_10000=y
CONFIG_CHELSIO_T1=m
CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T1_NAPI=y
# CONFIG_CHELSIO_T3 is not set
# CONFIG_IXGBE is not set
CONFIG_IXGB=m
CONFIG_IXGB_NAPI=y
# CONFIG_S2IO is not set
CONFIG_MYRI10GE=y
# CONFIG_NETXEN_NIC is not set
CONFIG_NIU=y
CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
CONFIG_TEHUTI=m
# CONFIG_TR is not set
#
# Wireless LAN
#
CONFIG_WLAN_PRE80211=y
CONFIG_STRIP=y
CONFIG_ARLAN=y
CONFIG_WAVELAN=y
CONFIG_WLAN_80211=y
CONFIG_IPW2100=y
CONFIG_IPW2100_MONITOR=y
CONFIG_IPW2100_DEBUG=y
# CONFIG_IPW2200 is not set
CONFIG_LIBERTAS=m
# CONFIG_LIBERTAS_USB is not set
# CONFIG_LIBERTAS_SDIO is not set
# CONFIG_LIBERTAS_DEBUG is not set
# CONFIG_AIRO is not set
CONFIG_HERMES=y
CONFIG_PLX_HERMES=y
CONFIG_TMD_HERMES=y
# CONFIG_NORTEL_HERMES is not set
# CONFIG_PCI_HERMES is not set
# CONFIG_ATMEL is not set
# CONFIG_PRISM54 is not set
CONFIG_USB_ZD1201=m
# CONFIG_RTL8187 is not set
CONFIG_ADM8211=m
CONFIG_P54_COMMON=m
# CONFIG_P54_USB is not set
CONFIG_P54_PCI=m
# CONFIG_IWLWIFI is not set
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
CONFIG_HOSTAP_PLX=m
CONFIG_HOSTAP_PCI=m
CONFIG_BCM43XX=y
# CONFIG_BCM43XX_DEBUG is not set
CONFIG_BCM43XX_DMA=y
# CONFIG_BCM43XX_DMA_AND_PIO_MODE is not set
CONFIG_BCM43XX_DMA_MODE=y
# CONFIG_BCM43XX_PIO_MODE is not set
CONFIG_B43=m
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_RFKILL=y
CONFIG_B43_DEBUG=y
CONFIG_B43_DMA=y
CONFIG_B43_PIO=y
CONFIG_B43_DMA_AND_PIO_MODE=y
# CONFIG_B43_DMA_MODE is not set
# CONFIG_B43_PIO_MODE is not set
CONFIG_B43LEGACY=m
CONFIG_B43LEGACY_PCI_AUTOSELECT=y
CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
# CONFIG_B43LEGACY_DEBUG is not set
CONFIG_B43LEGACY_DMA=y
CONFIG_B43LEGACY_PIO=y
CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
# CONFIG_B43LEGACY_DMA_MODE is not set
# CONFIG_B43LEGACY_PIO_MODE is not set
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
CONFIG_RT2X00=m
CONFIG_RT2X00_LIB=m
CONFIG_RT2X00_LIB_PCI=m
CONFIG_RT2X00_LIB_FIRMWARE=y
CONFIG_RT2X00_LIB_RFKILL=y
CONFIG_RT2400PCI=m
CONFIG_RT2400PCI_RFKILL=y
CONFIG_RT2500PCI=m
CONFIG_RT2500PCI_RFKILL=y
CONFIG_RT61PCI=m
CONFIG_RT61PCI_RFKILL=y
# CONFIG_RT2500USB is not set
# CONFIG_RT73USB is not set
# CONFIG_RT2X00_DEBUG is not set
#
# USB Network Adapters
#
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=y
# CONFIG_USB_PEGASUS is not set
CONFIG_USB_RTL8150=y
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_CDCETHER=m
CONFIG_USB_NET_DM9601=m
# CONFIG_USB_NET_GL620A is not set
CONFIG_USB_NET_NET1080=m
# CONFIG_USB_NET_PLUSB is not set
CONFIG_USB_NET_MCS7830=m
CONFIG_USB_NET_RNDIS_HOST=m
# CONFIG_USB_NET_CDC_SUBSET is not set
# CONFIG_USB_NET_ZAURUS is not set
# CONFIG_WAN is not set
CONFIG_ATM_DRIVERS=y
CONFIG_ATM_DUMMY=m
# CONFIG_ATM_TCP is not set
CONFIG_ATM_LANAI=m
# CONFIG_ATM_ENI is not set
# CONFIG_ATM_FIRESTREAM is not set
CONFIG_ATM_ZATM=m
CONFIG_ATM_ZATM_DEBUG=y
# CONFIG_ATM_NICSTAR is not set
CONFIG_ATM_IDT77252=m
CONFIG_ATM_IDT77252_DEBUG=y
# CONFIG_ATM_IDT77252_RCV_ALL is not set
CONFIG_ATM_IDT77252_USE_SUNI=y
CONFIG_ATM_AMBASSADOR=m
# CONFIG_ATM_AMBASSADOR_DEBUG is not set
CONFIG_ATM_HORIZON=m
CONFIG_ATM_HORIZON_DEBUG=y
# CONFIG_ATM_IA is not set
CONFIG_ATM_FORE200E_MAYBE=m
CONFIG_ATM_FORE200E_PCA=y
CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y
# CONFIG_ATM_FORE200E_USE_TASKLET is not set
CONFIG_ATM_FORE200E_TX_RETRY=16
CONFIG_ATM_FORE200E_DEBUG=0
CONFIG_ATM_FORE200E=m
CONFIG_ATM_HE=m
CONFIG_ATM_HE_USE_SUNI=y
CONFIG_FDDI=y
CONFIG_DEFXX=m
# CONFIG_DEFXX_MMIO is not set
CONFIG_SKFP=m
CONFIG_HIPPI=y
# CONFIG_ROADRUNNER is not set
# CONFIG_PPP is not set
CONFIG_SLIP=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLHC=y
# CONFIG_SLIP_SMART is not set
CONFIG_SLIP_MODE_SLIP6=y
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=y
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_ISDN=y
CONFIG_ISDN_I4L=y
CONFIG_ISDN_PPP=y
CONFIG_ISDN_PPP_VJ=y
CONFIG_ISDN_MPP=y
CONFIG_IPPP_FILTER=y
# CONFIG_ISDN_PPP_BSDCOMP is not set
CONFIG_ISDN_AUDIO=y
# CONFIG_ISDN_TTY_FAX is not set
#
# ISDN feature submodules
#
CONFIG_ISDN_DRV_LOOP=y
CONFIG_ISDN_DIVERSION=y
#
# ISDN4Linux hardware drivers
#
#
# Passive cards
#
CONFIG_ISDN_DRV_HISAX=y
#
# D-channel protocol features
#
# CONFIG_HISAX_EURO is not set
# CONFIG_HISAX_1TR6 is not set
CONFIG_HISAX_NI1=y
CONFIG_HISAX_MAX_CARDS=8
#
# HiSax supported cards
#
# CONFIG_HISAX_16_0 is not set
# CONFIG_HISAX_16_3 is not set
# CONFIG_HISAX_S0BOX is not set
# CONFIG_HISAX_AVM_A1 is not set
# CONFIG_HISAX_FRITZPCI is not set
# CONFIG_HISAX_AVM_A1_PCMCIA is not set
CONFIG_HISAX_ELSA=y
# CONFIG_HISAX_IX1MICROR2 is not set
# CONFIG_HISAX_DIEHLDIVA is not set
CONFIG_HISAX_ASUSCOM=y
# CONFIG_HISAX_TELEINT is not set
CONFIG_HISAX_HFCS=y
CONFIG_HISAX_SEDLBAUER=y
# CONFIG_HISAX_SPORTSTER is not set
CONFIG_HISAX_MIC=y
# CONFIG_HISAX_NICCY is not set
CONFIG_HISAX_ISURF=y
CONFIG_HISAX_HSTSAPHIR=y
# CONFIG_HISAX_GAZEL is not set
# CONFIG_HISAX_HFC_SX is not set
# CONFIG_HISAX_DEBUG is not set
#
# HiSax PCMCIA card service modules
#
#
# HiSax sub driver modules
#
CONFIG_HISAX_ST5481=y
# CONFIG_HISAX_HFCUSB is not set
# CONFIG_HISAX_HFC4S8S is not set
CONFIG_HISAX_HDLC=y
#
# Active cards
#
# CONFIG_ISDN_DRV_ICN is not set
CONFIG_ISDN_DRV_PCBIT=m
CONFIG_ISDN_DRV_SC=m
# CONFIG_ISDN_DRV_ACT2000 is not set
CONFIG_HYSDN=m
CONFIG_HYSDN_CAPI=y
CONFIG_ISDN_DRV_GIGASET=y
CONFIG_GIGASET_BASE=m
# CONFIG_GIGASET_M105 is not set
CONFIG_GIGASET_M101=m
# CONFIG_GIGASET_DEBUG is not set
# CONFIG_GIGASET_UNDOCREQ is not set
CONFIG_ISDN_CAPI=m
# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
CONFIG_CAPI_TRACE=y
# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
# CONFIG_ISDN_CAPI_CAPI20 is not set
# CONFIG_ISDN_CAPI_CAPIDRV is not set
#
# CAPI hardware drivers
#
# CONFIG_CAPI_AVM is not set
CONFIG_CAPI_EICON=y
# CONFIG_ISDN_DIVAS is not set
CONFIG_PHONE=y
# CONFIG_PHONE_IXJ is not set
#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=y
CONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_JOYDEV=m
# CONFIG_INPUT_EVDEV is not set
CONFIG_INPUT_EVBUG=m
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYBOARD_SUNKBD=m
CONFIG_KEYBOARD_LKKBD=m
# CONFIG_KEYBOARD_XTKBD is not set
CONFIG_KEYBOARD_NEWTON=m
CONFIG_KEYBOARD_STOWAWAY=y
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
CONFIG_MOUSE_SERIAL=y
CONFIG_MOUSE_APPLETOUCH=y
CONFIG_MOUSE_INPORT=m
CONFIG_MOUSE_ATIXL=y
CONFIG_MOUSE_LOGIBM=y
CONFIG_MOUSE_PC110PAD=m
# CONFIG_MOUSE_VSXXXAA is not set
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=y
CONFIG_JOYSTICK_A3D=m
# CONFIG_JOYSTICK_ADI is not set
CONFIG_JOYSTICK_COBRA=y
CONFIG_JOYSTICK_GF2K=m
CONFIG_JOYSTICK_GRIP=y
# CONFIG_JOYSTICK_GRIP_MP is not set
CONFIG_JOYSTICK_GUILLEMOT=m
# CONFIG_JOYSTICK_INTERACT is not set
# CONFIG_JOYSTICK_SIDEWINDER is not set
CONFIG_JOYSTICK_TMDC=m
# CONFIG_JOYSTICK_IFORCE is not set
CONFIG_JOYSTICK_WARRIOR=m
# CONFIG_JOYSTICK_MAGELLAN is not set
CONFIG_JOYSTICK_SPACEORB=m
CONFIG_JOYSTICK_SPACEBALL=y
CONFIG_JOYSTICK_STINGER=m
CONFIG_JOYSTICK_TWIDJOY=y
CONFIG_JOYSTICK_JOYDUMP=y
CONFIG_JOYSTICK_XPAD=y
CONFIG_JOYSTICK_XPAD_FF=y
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_FUJITSU is not set
CONFIG_TOUCHSCREEN_GUNZE=m
CONFIG_TOUCHSCREEN_ELO=y
CONFIG_TOUCHSCREEN_MTOUCH=y
CONFIG_TOUCHSCREEN_MK712=m
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
CONFIG_TOUCHSCREEN_TOUCHRIGHT=y
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_UCB1400 is not set
CONFIG_TOUCHSCREEN_USB_COMPOSITE=y
CONFIG_TOUCHSCREEN_USB_EGALAX=y
CONFIG_TOUCHSCREEN_USB_PANJIT=y
CONFIG_TOUCHSCREEN_USB_3M=y
CONFIG_TOUCHSCREEN_USB_ITM=y
CONFIG_TOUCHSCREEN_USB_ETURBO=y
CONFIG_TOUCHSCREEN_USB_GUNZE=y
CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
CONFIG_TOUCHSCREEN_USB_GOTOP=y
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_CT82C710 is not set
CONFIG_SERIO_PCIPS2=y
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=m
CONFIG_GAMEPORT=y
CONFIG_GAMEPORT_NS558=m
CONFIG_GAMEPORT_L4=y
# CONFIG_GAMEPORT_EMU10K1 is not set
CONFIG_GAMEPORT_FM801=y
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_INTEL=y
CONFIG_HW_RANDOM_AMD=m
CONFIG_HW_RANDOM_GEODE=y
CONFIG_HW_RANDOM_VIA=m
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
CONFIG_GEN_RTC=y
# CONFIG_GEN_RTC_X is not set
CONFIG_DTLK=m
CONFIG_R3964=m
# CONFIG_APPLICOM is not set
CONFIG_SONYPI=y
CONFIG_MWAVE=y
# CONFIG_PC8736x_GPIO is not set
CONFIG_NSC_GPIO=m
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
CONFIG_HANGCHECK_TIMER=m
CONFIG_TCG_TPM=y
CONFIG_TCG_ATMEL=y
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not set
#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_ALGOPCF=y
# CONFIG_I2C_ALGOPCA is not set
#
# I2C Hardware Bus support
#
CONFIG_I2C_ALI1535=m
CONFIG_I2C_ALI1563=m
CONFIG_I2C_ALI15X3=m
CONFIG_I2C_AMD756=m
CONFIG_I2C_AMD756_S4882=m
# CONFIG_I2C_AMD8111 is not set
CONFIG_I2C_ELEKTOR=y
# CONFIG_I2C_I801 is not set
CONFIG_I2C_I810=m
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_NFORCE2 is not set
CONFIG_I2C_OCORES=y
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set
CONFIG_I2C_SAVAGE4=m
CONFIG_I2C_SIMTEC=m
CONFIG_SCx200_ACB=y
# CONFIG_I2C_SIS5595 is not set
CONFIG_I2C_SIS630=y
CONFIG_I2C_SIS96X=m
CONFIG_I2C_TAOS_EVM=y
# CONFIG_I2C_STUB is not set
CONFIG_I2C_TINY_USB=y
CONFIG_I2C_VIA=y
CONFIG_I2C_VIAPRO=m
# CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set
#
# Miscellaneous I2C Chip support
#
CONFIG_SENSORS_DS1337=y
CONFIG_SENSORS_DS1374=m
CONFIG_DS1682=m
CONFIG_SENSORS_EEPROM=m
CONFIG_SENSORS_PCF8574=m
CONFIG_SENSORS_PCA9539=y
CONFIG_SENSORS_PCF8591=m
CONFIG_SENSORS_MAX6875=m
CONFIG_SENSORS_TSL2550=m
CONFIG_I2C_DEBUG_CORE=y
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
CONFIG_I2C_DEBUG_CHIP=y
#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=y
CONFIG_ACQUIRE_WDT=y
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_ALIM1535_WDT is not set
# CONFIG_ALIM7101_WDT is not set
# CONFIG_SC520_WDT is not set
# CONFIG_EUROTECH_WDT is not set
CONFIG_IB700_WDT=y
CONFIG_IBMASR=m
# CONFIG_WAFER_WDT is not set
# CONFIG_I6300ESB_WDT is not set
CONFIG_ITCO_WDT=m
# CONFIG_ITCO_VENDOR_SUPPORT is not set
# CONFIG_IT8712F_WDT is not set
# CONFIG_SC1200_WDT is not set
CONFIG_PC87413_WDT=m
CONFIG_60XX_WDT=y
CONFIG_SBC8360_WDT=y
# CONFIG_SBC7240_WDT is not set
# CONFIG_CPU5_WDT is not set
# CONFIG_SMSC37B787_WDT is not set
CONFIG_W83627HF_WDT=y
CONFIG_W83697HF_WDT=y
# CONFIG_W83877F_WDT is not set
# CONFIG_W83977F_WDT is not set
CONFIG_MACHZ_WDT=y
CONFIG_SBC_EPX_C3_WATCHDOG=m
#
# ISA-based Watchdog Cards
#
CONFIG_PCWATCHDOG=m
CONFIG_MIXCOMWD=y
# CONFIG_WDT is not set
#
# PCI-based Watchdog Cards
#
CONFIG_PCIPCWATCHDOG=m
# CONFIG_WDTPCI is not set
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
CONFIG_SSB=m
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
CONFIG_SSB_DEBUG=y
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
CONFIG_SSB_DRIVER_PCICORE=y
#
# Multifunction device drivers
#
CONFIG_MFD_SM501=m
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
CONFIG_DVB_CORE=m
# CONFIG_DVB_CORE_ATTACH is not set
# CONFIG_DVB_CAPTURE_DRIVERS is not set
CONFIG_DAB=y
CONFIG_USB_DABUSB=m
#
# Graphics support
#
# CONFIG_AGP is not set
CONFIG_DRM=y
CONFIG_DRM_TDFX=m
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_RADEON is not set
CONFIG_DRM_MGA=m
# CONFIG_DRM_VIA is not set
CONFIG_DRM_SAVAGE=y
CONFIG_VGASTATE=m
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=m
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_DDC=m
CONFIG_FB_CFB_FILLRECT=m
CONFIG_FB_CFB_COPYAREA=m
CONFIG_FB_CFB_IMAGEBLIT=m
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
CONFIG_FB_SYS_FILLRECT=m
CONFIG_FB_SYS_COPYAREA=m
CONFIG_FB_SYS_IMAGEBLIT=m
CONFIG_FB_SYS_FOPS=m
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
CONFIG_FB_PM2=m
# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_ARC=m
# CONFIG_FB_VGA16 is not set
CONFIG_FB_UVESA=m
CONFIG_FB_HECUBA=m
# CONFIG_FB_HGA is not set
CONFIG_FB_S1D13XXX=m
CONFIG_FB_NVIDIA=m
# CONFIG_FB_NVIDIA_I2C is not set
CONFIG_FB_NVIDIA_DEBUG=y
# CONFIG_FB_NVIDIA_BACKLIGHT is not set
CONFIG_FB_RIVA=m
# CONFIG_FB_RIVA_I2C is not set
CONFIG_FB_RIVA_DEBUG=y
CONFIG_FB_RIVA_BACKLIGHT=y
# CONFIG_FB_I810 is not set
CONFIG_FB_LE80578=m
# CONFIG_FB_CARILLO_RANCH is not set
# CONFIG_FB_INTEL is not set
CONFIG_FB_MATROX=m
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
# CONFIG_FB_MATROX_G is not set
# CONFIG_FB_MATROX_I2C is not set
CONFIG_FB_MATROX_MULTIHEAD=y
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
CONFIG_FB_ATY=m
CONFIG_FB_ATY_CT=y
# CONFIG_FB_ATY_GENERIC_LCD is not set
# CONFIG_FB_ATY_GX is not set
CONFIG_FB_ATY_BACKLIGHT=y
# CONFIG_FB_S3 is not set
CONFIG_FB_SAVAGE=m
CONFIG_FB_SAVAGE_I2C=y
CONFIG_FB_SAVAGE_ACCEL=y
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
CONFIG_FB_KYRO=m
CONFIG_FB_3DFX=m
CONFIG_FB_3DFX_ACCEL=y
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_CYBLA is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
CONFIG_FB_PM3=m
CONFIG_FB_GEODE=y
CONFIG_FB_GEODE_LX=m
CONFIG_FB_GEODE_GX=m
CONFIG_FB_GEODE_GX_SET_FBSIZE=y
CONFIG_FB_GEODE_GX_FBSIZE=0x1600000
CONFIG_FB_GEODE_GX1=m
# CONFIG_FB_SM501 is not set
# CONFIG_FB_VIRTUAL is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_CORGI is not set
CONFIG_BACKLIGHT_PROGEAR=m
CONFIG_BACKLIGHT_CARILLO_RANCH=m
#
# Display device support
#
CONFIG_DISPLAY_SUPPORT=m
#
# Display hardware drivers
#
#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
# CONFIG_VIDEO_SELECT is not set
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE is not set
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
# CONFIG_LOGO_LINUX_CLUT224 is not set
#
# Sound
#
CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
# CONFIG_SND is not set
#
# Open Sound System
#
CONFIG_SOUND_PRIME=m
# CONFIG_SOUND_TRIDENT is not set
CONFIG_SOUND_MSNDCLAS=m
CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin"
CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin"
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_OSS is not set
# CONFIG_HID_SUPPORT is not set
CONFIG_HID=m
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
#
# Miscellaneous USB options
#
# CONFIG_USB_DEVICEFS is not set
# CONFIG_USB_DEVICE_CLASS is not set
CONFIG_USB_DYNAMIC_MINORS=y
# CONFIG_USB_OTG is not set
#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_U132_HCD is not set
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
#
# USB Device Class drivers
#
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=y
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
# may also be needed; see USB_STORAGE Help for more information
#
CONFIG_USB_STORAGE=y
CONFIG_USB_STORAGE_DEBUG=y
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
CONFIG_USB_STORAGE_ISD200=y
# CONFIG_USB_STORAGE_DPCM is not set
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
# CONFIG_USB_STORAGE_SDDR55 is not set
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_LIBUSUAL=y
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
CONFIG_USB_MICROTEK=m
CONFIG_USB_MON=y
#
# USB port drivers
#
#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=m
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_AIRCABLE is not set
CONFIG_USB_SERIAL_AIRPRIME=m
CONFIG_USB_SERIAL_ARK3116=m
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_CP2101 is not set
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
CONFIG_USB_SERIAL_FTDI_SIO=m
# CONFIG_USB_SERIAL_FUNSOFT is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
CONFIG_USB_SERIAL_GARMIN=m
# CONFIG_USB_SERIAL_IPW is not set
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
# CONFIG_USB_SERIAL_KEYSPAN is not set
CONFIG_USB_SERIAL_KLSI=m
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_MOS7720 is not set
CONFIG_USB_SERIAL_MOS7840=m
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_OTI6858=m
CONFIG_USB_SERIAL_HP4X=m
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
CONFIG_USB_SERIAL_TI=m
CONFIG_USB_SERIAL_CYBERJACK=m
CONFIG_USB_SERIAL_XIRCOM=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_OMNINET=m
# CONFIG_USB_SERIAL_DEBUG is not set
CONFIG_USB_EZUSB=y
#
# USB Miscellaneous drivers
#
CONFIG_USB_EMI62=y
CONFIG_USB_EMI26=m
CONFIG_USB_ADUTUX=m
CONFIG_USB_AUERSWALD=m
CONFIG_USB_RIO500=m
CONFIG_USB_LEGOTOWER=m
CONFIG_USB_LCD=y
CONFIG_USB_BERRY_CHARGE=m
CONFIG_USB_LED=m
CONFIG_USB_CYPRESS_CY7C63=y
CONFIG_USB_CYTHERM=y
CONFIG_USB_PHIDGET=m
# CONFIG_USB_PHIDGETKIT is not set
# CONFIG_USB_PHIDGETMOTORCONTROL is not set
CONFIG_USB_PHIDGETSERVO=m
CONFIG_USB_IDMOUSE=m
CONFIG_USB_FTDI_ELAN=y
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set
CONFIG_USB_LD=m
# CONFIG_USB_TRANCEVIBRATOR is not set
CONFIG_USB_IOWARRIOR=y
#
# USB DSL modem support
#
CONFIG_USB_ATM=m
CONFIG_USB_SPEEDTOUCH=m
# CONFIG_USB_CXACRU is not set
CONFIG_USB_UEAGLEATM=m
CONFIG_USB_XUSBATM=m
#
# USB Gadget Support
#
CONFIG_USB_GADGET=m
CONFIG_USB_GADGET_DEBUG=y
CONFIG_USB_GADGET_DEBUG_FILES=y
# CONFIG_USB_GADGET_DEBUG_FS is not set
CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_AMD5536UDC is not set
# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
CONFIG_USB_GADGET_NET2280=y
CONFIG_USB_NET2280=m
# CONFIG_USB_GADGET_PXA2XX is not set
# CONFIG_USB_GADGET_M66592 is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
CONFIG_USB_GADGET_DUALSPEED=y
# CONFIG_USB_ZERO is not set
# CONFIG_USB_ETH is not set
CONFIG_USB_GADGETFS=m
CONFIG_USB_FILE_STORAGE=m
CONFIG_USB_FILE_STORAGE_TEST=y
CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_UNSAFE_RESUME=y
#
# MMC/SD Card Drivers
#
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
#
# MMC/SD Host Controller Drivers
#
CONFIG_MMC_SDHCI=m
# CONFIG_MMC_RICOH_MMC is not set
CONFIG_MMC_WBSD=m
# CONFIG_MMC_TIFM_SD is not set
CONFIG_NEW_LEDS=y
# CONFIG_LEDS_CLASS is not set
#
# LED drivers
#
#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_INFINIBAND=y
CONFIG_INFINIBAND_USER_MAD=m
CONFIG_INFINIBAND_USER_ACCESS=y
CONFIG_INFINIBAND_USER_MEM=y
CONFIG_INFINIBAND_ADDR_TRANS=y
CONFIG_INFINIBAND_MTHCA=y
CONFIG_INFINIBAND_MTHCA_DEBUG=y
# CONFIG_INFINIBAND_AMSO1100 is not set
CONFIG_MLX4_INFINIBAND=m
# CONFIG_INFINIBAND_IPOIB is not set
CONFIG_INFINIBAND_SRP=y
CONFIG_INFINIBAND_ISER=y
CONFIG_EDAC=y
#
# Reporting subsystems
#
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_MM_EDAC=m
CONFIG_EDAC_AMD76X=m
CONFIG_EDAC_E7XXX=m
CONFIG_EDAC_E752X=m
# CONFIG_EDAC_I82875P is not set
CONFIG_EDAC_I82975X=m
CONFIG_EDAC_I3000=m
CONFIG_EDAC_I82860=m
CONFIG_EDAC_R82600=m
CONFIG_EDAC_I5000=m
# CONFIG_RTC_CLASS is not set
CONFIG_DMADEVICES=y
#
# DMA Devices
#
# CONFIG_INTEL_IOATDMA is not set
CONFIG_VIRTUALIZATION=y
# CONFIG_KVM is not set
#
# Userspace I/O
#
# CONFIG_UIO is not set
#
# Firmware Drivers
#
CONFIG_EDD=m
# CONFIG_DELL_RBU is not set
CONFIG_DCDBAS=y
# CONFIG_DMIID is not set
#
# File systems
#
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4DEV_FS=m
# CONFIG_EXT4DEV_FS_XATTR is not set
CONFIG_JBD=y
CONFIG_JBD_DEBUG=y
CONFIG_JBD2=m
CONFIG_JBD2_DEBUG=y
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
# CONFIG_XFS_SECURITY is not set
# CONFIG_XFS_POSIX_ACL is not set
# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
CONFIG_OCFS2_FS=m
CONFIG_OCFS2_DEBUG_MASKLOG=y
CONFIG_OCFS2_DEBUG_FS=y
# CONFIG_MINIX_FS is not set
CONFIG_ROMFS_FS=m
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_PRINT_QUOTA_WARNING is not set
CONFIG_QFMT_V1=y
CONFIG_QFMT_V2=m
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=m
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
CONFIG_UDF_FS=y
CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
# CONFIG_VFAT_FS is not set
CONFIG_FAT_DEFAULT_CODEPAGE=437
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=y
#
# Miscellaneous filesystems
#
CONFIG_ADFS_FS=m
CONFIG_ADFS_FS_RW=y
# CONFIG_AFFS_FS is not set
CONFIG_HFS_FS=y
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
CONFIG_EFS_FS=y
CONFIG_CRAMFS=y
# CONFIG_VXFS_FS is not set
CONFIG_HPFS_FS=y
CONFIG_QNX4FS_FS=y
CONFIG_SYSV_FS=m
CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set
CONFIG_UFS_DEBUG=y
CONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NFS_FS is not set
CONFIG_NFSD=y
# CONFIG_NFSD_V3 is not set
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=y
CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_SUNRPC_XPRT_RDMA=m
# CONFIG_SUNRPC_BIND34 is not set
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_RPCSEC_GSS_SPKM3=y
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
CONFIG_CIFS=y
# CONFIG_CIFS_STATS is not set
# CONFIG_CIFS_WEAK_PW_HASH is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
CONFIG_CODA_FS=m
# CONFIG_CODA_FS_OLD_API is not set
# CONFIG_AFS_FS is not set
#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
CONFIG_AMIGA_PARTITION=y
CONFIG_ATARI_PARTITION=y
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
CONFIG_MINIX_SUBPARTITION=y
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
CONFIG_SGI_PARTITION=y
CONFIG_ULTRIX_PARTITION=y
CONFIG_SUN_PARTITION=y
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
CONFIG_SYSV68_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_737=y
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=y
CONFIG_NLS_CODEPAGE_855=y
CONFIG_NLS_CODEPAGE_857=y
# CONFIG_NLS_CODEPAGE_860 is not set
CONFIG_NLS_CODEPAGE_861=y
CONFIG_NLS_CODEPAGE_862=y
CONFIG_NLS_CODEPAGE_863=m
CONFIG_NLS_CODEPAGE_864=m
CONFIG_NLS_CODEPAGE_865=m
CONFIG_NLS_CODEPAGE_866=y
CONFIG_NLS_CODEPAGE_869=m
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=y
CONFIG_NLS_CODEPAGE_874=y
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=y
# CONFIG_NLS_ISO8859_5 is not set
CONFIG_NLS_ISO8859_6=y
CONFIG_NLS_ISO8859_7=m
CONFIG_NLS_ISO8859_9=y
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
CONFIG_DLM=y
# CONFIG_DLM_DEBUG is not set
CONFIG_INSTRUMENTATION=y
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
CONFIG_MARKERS=y
#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
# CONFIG_TIMER_STATS is not set
CONFIG_SLUB_DEBUG_ON=y
# CONFIG_DEBUG_PREEMPT is not set
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
# CONFIG_PROVE_LOCKING is not set
CONFIG_LOCKDEP=y
CONFIG_LOCK_STAT=y
CONFIG_DEBUG_LOCKDEP=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_VM=y
CONFIG_DEBUG_LIST=y
# CONFIG_DEBUG_SG is not set
CONFIG_FRAME_POINTER=y
CONFIG_FORCED_INLINING=y
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_RCU_TORTURE_TEST=m
# CONFIG_FAULT_INJECTION is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
CONFIG_SAMPLES=y
CONFIG_SAMPLE_MARKERS=m
# CONFIG_WANT_EXTRA_DEBUG_INFORMATION is not set
# CONFIG_UNWIND_INFO is not set
# CONFIG_KGDB is not set
# CONFIG_KGDB_ATTACH_WAIT is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
CONFIG_DEBUG_STACK_USAGE=y
CONFIG_DEBUG_PAGEALLOC=y
CONFIG_DEBUG_RODATA=y
# CONFIG_4KSTACKS is not set
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
CONFIG_DOUBLEFAULT=y
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_IO_DELAY_TYPE_NONE=3
CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=0
CONFIG_DEBUG_BOOT_PARAMS=y
#
# Security options
#
# CONFIG_KEYS is not set
CONFIG_SECURITY=y
# CONFIG_SECURITY_NETWORK is not set
CONFIG_SECURITY_CAPABILITIES=y
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
# CONFIG_SECURITY_ROOTPLUG is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ABLKCIPHER=m
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=y
CONFIG_CRYPTO_LRW=m
# CONFIG_CRYPTO_XTS is not set
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_FCRYPT=y
CONFIG_CRYPTO_BLOWFISH=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
CONFIG_CRYPTO_TWOFISH_586=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_AES_586 is not set
CONFIG_CRYPTO_CAST5=y
# CONFIG_CRYPTO_CAST6 is not set
CONFIG_CRYPTO_TEA=y
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_KHAZAD=m
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_CAMELLIA=m
# CONFIG_CRYPTO_TEST is not set
CONFIG_CRYPTO_AUTHENC=y
# CONFIG_CRYPTO_HW is not set
#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=y
CONFIG_CRC16=y
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-08 23:12 ` Ingo Molnar
@ 2008-01-08 23:23 ` Jeremy Fitzhardinge
2008-01-08 23:28 ` Ingo Molnar
0 siblings, 1 reply; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-08 23:23 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Ingo Molnar wrote:
> threw this into the random test setup: it found the attached config
> after a few iterations, which needed the fix below. (config builds and
> boots fine with this fix)
>
> the problem was that set_pud() is used by
> include/asm-generic/pgtable-nopud.h, to build set_pgd():
>
> #define set_pgd(pgdptr, pgdval) set_pud((pud_t *)(pgdptr), (pud_t) { pgdval })
>
Oh, yeah. That's bitten me before, but I guess I lost that part of the
patch somewhere :(.
> it's truly a maze ... took me 10 straight minutes of staring at the code
> to figure out where the set_pud() came from :-/
>
It's pretty awful. The pagetable level folding stuff is fairly deep
into "too clever" territory, but its hard to see what better
alternatives there are... Dropping non-PAE support would be nice, but
impractical given that even relatively recent chips are missing support
for it.
> anyway, your patchset is holding up pretty good so far in testing.
>
Great!
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-08 23:23 ` Jeremy Fitzhardinge
@ 2008-01-08 23:28 ` Ingo Molnar
2008-01-08 23:44 ` Ingo Molnar
2008-01-09 0:07 ` Jeremy Fitzhardinge
0 siblings, 2 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-08 23:28 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
[-- Attachment #1: Type: text/plain, Size: 925 bytes --]
right now i'm trying to bisect this crash on 64-bit:
Calling initcall 0xffffffff80395877: pci_init+0x0/0x2b()
------------[ cut here ]------------
kernel BUG at arch/x86/mm/pageattr_64.c:176!
[...]
Call Trace:
[<ffffffff8021db68>] change_page_attr_addr+0x9e/0x119
[<ffffffff8021d44f>] ioremap_change_attr+0x49/0x58
[<ffffffff8021d626>] iounmap+0xbe/0xe0
[<ffffffff804dfc95>] quirk_usb_early_handoff+0x396/0x3a5
[<ffffffff80396ea0>] pci_fixup_device+0x90/0x9e
[<ffffffff80395889>] pci_init+0x12/0x2b
[<ffffffff808c9545>] kernel_init+0xd0/0x23c
[<ffffffff8020bec8>] child_rip+0xa/0x12
[<ffffffff808c9475>] kernel_init+0x0/0x23c
[<ffffffff8020bebe>] child_rip+0x0/0x12
config and bootlog attached.
it's one of these patches:
Subject: x86: move all asm/pgtable constants into one place
Subject: x86: avoid name conflict for Voyager leave_mm
Subject: x86/pgtable: unify pagetable accessors
Ingo
[-- Attachment #2: config --]
[-- Type: text/plain, Size: 49590 bytes --]
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24-rc7
# Wed Jan 9 00:21:52 2008
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
# CONFIG_GENERIC_LOCKBREAK is not set
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
# CONFIG_QUICKLIST is not set
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
# CONFIG_GENERIC_GPIO is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_ARCH_SETS_UP_PER_CPU_AREA=y
CONFIG_ARCH_SUPPORTS_OPROFILE=y
CONFIG_ZONE_DMA32=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_AUDIT_ARCH=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_PM_CPUINIT=y
# CONFIG_KTIME_SCALAR is not set
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_TASKSTATS=y
# CONFIG_TASK_DELAY_ACCT is not set
CONFIG_TASK_XACCT=y
# CONFIG_TASK_IO_ACCOUNTING is not set
CONFIG_USER_NS=y
# CONFIG_PID_NS is not set
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=20
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
# CONFIG_CGROUP_NS is not set
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_FAIR_USER_SCHED is not set
CONFIG_FAIR_CGROUP_SCHED=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_UNLOAD is not set
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_BLK_DEV_IO_TRACE is not set
CONFIG_BLK_DEV_BSG=y
CONFIG_BLOCK_COMPAT=y
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=m
# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
#
# Processor type and features
#
# CONFIG_TICK_ONESHOT is not set
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP is not set
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_VSMP is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
CONFIG_MCORE2=y
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_L1_CACHE_BYTES=64
CONFIG_X86_INTERNODE_CACHE_BYTES=64
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_GART_IOMMU=y
# CONFIG_CALGARY_IOMMU is not set
CONFIG_SWIOTLB=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_INTEL is not set
# CONFIG_X86_MCE_AMD is not set
# CONFIG_MICROCODE is not set
CONFIG_X86_MSR=y
# CONFIG_X86_CPUID is not set
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
# CONFIG_SPARSEMEM_VMEMMAP is not set
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTPLUG_SPARSE=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_MTRR=y
CONFIG_EFI=y
CONFIG_SECCOMP=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_ALL is not set
CONFIG_HZ_100=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x200000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x200000
CONFIG_COMPAT_VDSO=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
CONFIG_PM_DEBUG=y
# CONFIG_PM_VERBOSE is not set
CONFIG_SUSPEND_UP_POSSIBLE=y
# CONFIG_SUSPEND is not set
CONFIG_HIBERNATION_UP_POSSIBLE=y
CONFIG_ACPI=y
CONFIG_ACPI_PROCFS=y
# CONFIG_ACPI_PROCFS_POWER is not set
CONFIG_ACPI_PROC_EVENT=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_DOCK=y
CONFIG_ACPI_BAY=y
CONFIG_ACPI_PROCESSOR=m
# CONFIG_ACPI_THERMAL is not set
CONFIG_ACPI_ASUS=y
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m
CONFIG_ACPI_HOTPLUG_MEMORY=m
CONFIG_ACPI_SBS=y
#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# CPUFreq processor drivers
#
# CONFIG_X86_ACPI_CPUFREQ is not set
CONFIG_X86_POWERNOW_K8=m
CONFIG_X86_POWERNOW_K8_ACPI=y
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_P4_CLOCKMOD=m
#
# shared options
#
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
CONFIG_X86_SPEEDSTEP_LIB=m
# CONFIG_CPU_IDLE is not set
#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
# CONFIG_PCI_MMCONFIG is not set
CONFIG_PCI_DOMAINS=y
# CONFIG_DMAR is not set
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=m
CONFIG_PCIEAER=y
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
# CONFIG_PCI_LEGACY is not set
# CONFIG_HT_IRQ is not set
CONFIG_ISA_DMA_API=y
CONFIG_K8_NB=y
CONFIG_PCCARD=m
CONFIG_PCMCIA_DEBUG=y
# CONFIG_PCMCIA is not set
CONFIG_CARDBUS=y
#
# PC-card bridges
#
CONFIG_YENTA=m
CONFIG_YENTA_O2=y
CONFIG_YENTA_RICOH=y
CONFIG_YENTA_TI=y
CONFIG_YENTA_ENE_TUNE=y
CONFIG_YENTA_TOSHIBA=y
CONFIG_PCCARD_NONSTATIC=m
CONFIG_HOTPLUG_PCI=m
CONFIG_HOTPLUG_PCI_FAKE=m
CONFIG_HOTPLUG_PCI_ACPI=m
CONFIG_HOTPLUG_PCI_ACPI_IBM=m
CONFIG_HOTPLUG_PCI_CPCI=y
CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
CONFIG_HOTPLUG_PCI_SHPC=m
#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
CONFIG_IA32_EMULATION=y
CONFIG_IA32_AOUT=m
CONFIG_COMPAT=y
CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
CONFIG_SYSVIPC_COMPAT=y
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
CONFIG_XFRM_SUB_POLICY=y
CONFIG_XFRM_MIGRATE=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=y
# CONFIG_NET_IPGRE is not set
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_ARPD=y
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=y
# CONFIG_INET_ESP is not set
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_TUNNEL=m
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_LRO=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=y
# CONFIG_TCP_CONG_CUBIC is not set
CONFIG_TCP_CONG_WESTWOOD=y
# CONFIG_TCP_CONG_HTCP is not set
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=y
CONFIG_TCP_CONG_SCALABLE=y
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=y
CONFIG_TCP_CONG_YEAH=y
# CONFIG_TCP_CONG_ILLINOIS is not set
# CONFIG_DEFAULT_BIC is not set
# CONFIG_DEFAULT_CUBIC is not set
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
CONFIG_DEFAULT_WESTWOOD=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="westwood"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IP_VS is not set
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_IPV6_ROUTER_PREF is not set
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
CONFIG_INET6_AH=y
CONFIG_INET6_ESP=y
# CONFIG_INET6_IPCOMP is not set
CONFIG_IPV6_MIP6=y
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
CONFIG_INET6_XFRM_MODE_BEET=m
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
CONFIG_IPV6_SIT=m
# CONFIG_IPV6_TUNNEL is not set
CONFIG_IPV6_MULTIPLE_TABLES=y
# CONFIG_IPV6_SUBTREES is not set
CONFIG_NETLABEL=y
CONFIG_NETWORK_SECMARK=y
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
# CONFIG_BRIDGE_NETFILTER is not set
#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NF_CONNTRACK_ENABLED=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_CT_ACCT=y
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
# CONFIG_NF_CONNTRACK_EVENTS is not set
CONFIG_NF_CT_PROTO_GRE=y
CONFIG_NF_CT_PROTO_SCTP=y
# CONFIG_NF_CT_PROTO_UDPLITE is not set
CONFIG_NF_CONNTRACK_AMANDA=y
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=y
# CONFIG_NF_CONNTRACK_IRC is not set
# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
CONFIG_NF_CONNTRACK_PPTP=y
CONFIG_NF_CONNTRACK_SANE=y
CONFIG_NF_CONNTRACK_SIP=y
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
CONFIG_NETFILTER_XTABLES=y
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
CONFIG_NETFILTER_XT_TARGET_DSCP=m
# CONFIG_NETFILTER_XT_TARGET_MARK is not set
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set
# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_DCCP=m
# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
CONFIG_NETFILTER_XT_MATCH_ESP=m
# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_POLICY=y
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
# CONFIG_NETFILTER_XT_MATCH_REALM is not set
CONFIG_NETFILTER_XT_MATCH_SCTP=m
# CONFIG_NETFILTER_XT_MATCH_STATE is not set
# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
# CONFIG_NETFILTER_XT_MATCH_STRING is not set
CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
CONFIG_NETFILTER_XT_MATCH_TIME=y
CONFIG_NETFILTER_XT_MATCH_U32=m
# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_QUEUE=y
# CONFIG_IP_NF_IPTABLES is not set
CONFIG_IP_NF_ARPTABLES=m
# CONFIG_IP_NF_ARPFILTER is not set
# CONFIG_IP_NF_ARP_MANGLE is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_NF_CONNTRACK_IPV6 is not set
CONFIG_IP6_NF_QUEUE=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_RT=m
# CONFIG_IP6_NF_MATCH_OPTS is not set
CONFIG_IP6_NF_MATCH_FRAG=m
# CONFIG_IP6_NF_MATCH_HL is not set
# CONFIG_IP6_NF_MATCH_OWNER is not set
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_MH=m
# CONFIG_IP6_NF_MATCH_EUI64 is not set
# CONFIG_IP6_NF_FILTER is not set
CONFIG_IP6_NF_MANGLE=m
# CONFIG_IP6_NF_TARGET_HL is not set
# CONFIG_IP6_NF_RAW is not set
#
# Bridge: Netfilter Configuration
#
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
# CONFIG_BRIDGE_EBT_T_NAT is not set
CONFIG_BRIDGE_EBT_802_3=m
# CONFIG_BRIDGE_EBT_AMONG is not set
# CONFIG_BRIDGE_EBT_ARP is not set
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_LIMIT=m
# CONFIG_BRIDGE_EBT_MARK is not set
CONFIG_BRIDGE_EBT_PKTTYPE=m
# CONFIG_BRIDGE_EBT_STP is not set
CONFIG_BRIDGE_EBT_VLAN=m
# CONFIG_BRIDGE_EBT_ARPREPLY is not set
# CONFIG_BRIDGE_EBT_DNAT is not set
# CONFIG_BRIDGE_EBT_MARK_T is not set
# CONFIG_BRIDGE_EBT_REDIRECT is not set
# CONFIG_BRIDGE_EBT_SNAT is not set
CONFIG_BRIDGE_EBT_LOG=m
CONFIG_BRIDGE_EBT_ULOG=m
# CONFIG_IP_DCCP is not set
CONFIG_IP_SCTP=y
# CONFIG_SCTP_DBG_MSG is not set
CONFIG_SCTP_DBG_OBJCNT=y
CONFIG_SCTP_HMAC_NONE=y
# CONFIG_SCTP_HMAC_SHA1 is not set
# CONFIG_SCTP_HMAC_MD5 is not set
# CONFIG_TIPC is not set
CONFIG_ATM=y
CONFIG_ATM_CLIP=m
# CONFIG_ATM_CLIP_NO_ICMP is not set
CONFIG_ATM_LANE=y
# CONFIG_ATM_MPOA is not set
# CONFIG_ATM_BR2684 is not set
CONFIG_BRIDGE=y
CONFIG_VLAN_8021Q=y
# CONFIG_DECNET is not set
CONFIG_LLC=y
CONFIG_LLC2=m
# CONFIG_IPX is not set
CONFIG_ATALK=y
# CONFIG_DEV_APPLETALK is not set
# CONFIG_X25 is not set
CONFIG_LAPB=m
# CONFIG_ECONET is not set
CONFIG_WAN_ROUTER=y
CONFIG_NET_SCHED=y
#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
# CONFIG_NET_SCH_HTB is not set
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_ATM=m
CONFIG_NET_SCH_PRIO=y
CONFIG_NET_SCH_RR=y
CONFIG_NET_SCH_RED=y
# CONFIG_NET_SCH_SFQ is not set
# CONFIG_NET_SCH_TEQL is not set
CONFIG_NET_SCH_TBF=y
CONFIG_NET_SCH_GRED=y
CONFIG_NET_SCH_DSMARK=y
CONFIG_NET_SCH_NETEM=y
# CONFIG_NET_SCH_INGRESS is not set
#
# Classification
#
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
CONFIG_NET_CLS_TCINDEX=y
# CONFIG_NET_CLS_ROUTE4 is not set
# CONFIG_NET_CLS_FW is not set
CONFIG_NET_CLS_U32=m
# CONFIG_CLS_U32_PERF is not set
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=y
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=y
# CONFIG_NET_EMATCH_NBYTE is not set
CONFIG_NET_EMATCH_U32=m
CONFIG_NET_EMATCH_META=m
CONFIG_NET_EMATCH_TEXT=y
CONFIG_NET_CLS_ACT=y
# CONFIG_NET_ACT_POLICE is not set
CONFIG_NET_ACT_GACT=y
# CONFIG_GACT_PROB is not set
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_NAT=m
# CONFIG_NET_ACT_PEDIT is not set
CONFIG_NET_ACT_SIMP=y
# CONFIG_NET_CLS_POLICE is not set
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
CONFIG_HAMRADIO=y
#
# Packet Radio protocols
#
CONFIG_AX25=m
CONFIG_AX25_DAMA_SLAVE=y
# CONFIG_NETROM is not set
CONFIG_ROSE=m
#
# AX.25 network device drivers
#
CONFIG_MKISS=m
# CONFIG_6PACK is not set
CONFIG_BPQETHER=m
# CONFIG_BAYCOM_SER_FDX is not set
CONFIG_BAYCOM_SER_HDX=m
# CONFIG_BAYCOM_PAR is not set
CONFIG_YAM=m
CONFIG_IRDA=y
#
# IrDA protocols
#
CONFIG_IRLAN=y
# CONFIG_IRCOMM is not set
# CONFIG_IRDA_ULTRA is not set
#
# IrDA options
#
# CONFIG_IRDA_CACHE_LAST_LSAP is not set
CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
#
# Infrared-port device drivers
#
#
# SIR device drivers
#
# CONFIG_IRTTY_SIR is not set
#
# Dongle support
#
# CONFIG_KINGSUN_DONGLE is not set
CONFIG_KSDAZZLE_DONGLE=m
CONFIG_KS959_DONGLE=y
#
# Old SIR device drivers
#
# CONFIG_IRPORT_SIR is not set
#
# Old Serial dongle support
#
#
# FIR device drivers
#
# CONFIG_USB_IRDA is not set
CONFIG_SIGMATEL_FIR=m
# CONFIG_NSC_FIR is not set
# CONFIG_WINBOND_FIR is not set
# CONFIG_SMC_IRCC_FIR is not set
CONFIG_ALI_FIR=y
CONFIG_VLSI_FIR=m
# CONFIG_VIA_FIR is not set
CONFIG_MCS_FIR=y
CONFIG_BT=m
CONFIG_BT_L2CAP=m
# CONFIG_BT_SCO is not set
# CONFIG_BT_RFCOMM is not set
# CONFIG_BT_BNEP is not set
# CONFIG_BT_CMTP is not set
CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
CONFIG_BT_HCIUSB=m
CONFIG_BT_HCIUSB_SCO=y
CONFIG_BT_HCIBTSDIO=m
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIUART_LL is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
CONFIG_BT_HCIBFUSB=m
# CONFIG_BT_HCIVHCI is not set
CONFIG_AF_RXRPC=y
CONFIG_AF_RXRPC_DEBUG=y
# CONFIG_RXKAD is not set
CONFIG_FIB_RULES=y
#
# Wireless
#
CONFIG_CFG80211=m
# CONFIG_NL80211 is not set
CONFIG_WIRELESS_EXT=y
CONFIG_MAC80211=m
CONFIG_MAC80211_RCSIMPLE=y
# CONFIG_MAC80211_DEBUGFS is not set
CONFIG_MAC80211_DEBUG=y
CONFIG_MAC80211_VERBOSE_DEBUG=y
# CONFIG_MAC80211_LOWTX_FRAME_DUMP is not set
# CONFIG_TKIP_DEBUG is not set
# CONFIG_MAC80211_DEBUG_COUNTERS is not set
# CONFIG_MAC80211_IBSS_DEBUG is not set
CONFIG_MAC80211_VERBOSE_PS_DEBUG=y
CONFIG_IEEE80211=y
# CONFIG_IEEE80211_DEBUG is not set
CONFIG_IEEE80211_CRYPT_WEP=m
# CONFIG_IEEE80211_CRYPT_CCMP is not set
CONFIG_IEEE80211_CRYPT_TKIP=m
# CONFIG_IEEE80211_SOFTMAC is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
CONFIG_PARPORT=m
# CONFIG_PARPORT_PC is not set
# CONFIG_PARPORT_GSC is not set
CONFIG_PARPORT_AX88796=m
# CONFIG_PARPORT_1284 is not set
CONFIG_PARPORT_NOT_PC=y
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set
#
# Protocols
#
CONFIG_PNPACPI=y
# CONFIG_BLK_DEV is not set
CONFIG_MISC_DEVICES=y
# CONFIG_IBM_ASM is not set
# CONFIG_PHANTOM is not set
CONFIG_EEPROM_93CX6=m
# CONFIG_SGI_IOC4 is not set
CONFIG_TIFM_CORE=y
CONFIG_TIFM_7XX1=y
CONFIG_FUJITSU_LAPTOP=y
# CONFIG_MSI_LAPTOP is not set
CONFIG_SONY_LAPTOP=y
CONFIG_SONYPI_COMPAT=y
# CONFIG_THINKPAD_ACPI is not set
# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
CONFIG_SCSI_NETLINK=y
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=y
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
CONFIG_SCSI_SRP_ATTRS=m
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_ATA_ACPI=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_SVW=m
CONFIG_ATA_PIIX=y
CONFIG_SATA_MV=m
CONFIG_SATA_NV=m
# CONFIG_PDC_ADMA is not set
CONFIG_SATA_QSTOR=m
CONFIG_SATA_PROMISE=y
# CONFIG_SATA_SX4 is not set
CONFIG_SATA_SIL=y
CONFIG_SATA_SIL24=m
CONFIG_SATA_SIS=m
# CONFIG_SATA_ULI is not set
CONFIG_SATA_VIA=y
CONFIG_SATA_VITESSE=m
CONFIG_SATA_INIC162X=m
# CONFIG_PATA_ACPI is not set
CONFIG_PATA_ALI=y
CONFIG_PATA_AMD=y
CONFIG_PATA_ARTOP=y
CONFIG_PATA_ATIIXP=m
CONFIG_PATA_CMD640_PCI=m
CONFIG_PATA_CMD64X=y
CONFIG_PATA_CS5520=y
CONFIG_PATA_CS5530=m
# CONFIG_PATA_CYPRESS is not set
CONFIG_PATA_EFAR=y
# CONFIG_ATA_GENERIC is not set
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
CONFIG_PATA_HPT3X2N=m
CONFIG_PATA_HPT3X3=y
CONFIG_PATA_HPT3X3_DMA=y
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
CONFIG_PATA_TRIFLEX=y
CONFIG_PATA_MARVELL=y
CONFIG_PATA_MPIIX=m
CONFIG_PATA_OLDPIIX=y
CONFIG_PATA_NETCELL=m
CONFIG_PATA_NS87410=y
CONFIG_PATA_NS87415=y
CONFIG_PATA_OPTI=m
CONFIG_PATA_OPTIDMA=y
CONFIG_PATA_PDC_OLD=y
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
CONFIG_PATA_SC1200=m
CONFIG_PATA_SERVERWORKS=y
# CONFIG_PATA_PDC2027X is not set
CONFIG_PATA_SIL680=m
CONFIG_PATA_SIS=m
CONFIG_PATA_VIA=m
CONFIG_PATA_WINBOND=m
# CONFIG_MD is not set
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
CONFIG_FIREWIRE=y
# CONFIG_FIREWIRE_OHCI is not set
CONFIG_FIREWIRE_SBP2=m
# CONFIG_IEEE1394 is not set
CONFIG_I2O=m
# CONFIG_I2O_LCT_NOTIFY_ON_CHANGES is not set
# CONFIG_I2O_EXT_ADAPTEC is not set
# CONFIG_I2O_CONFIG is not set
CONFIG_I2O_BUS=m
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_SCSI is not set
CONFIG_I2O_PROC=m
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
CONFIG_NETDEVICES_MULTIQUEUE=y
CONFIG_IFB=m
CONFIG_DUMMY=y
CONFIG_BONDING=m
# CONFIG_MACVLAN is not set
CONFIG_EQUALIZER=y
CONFIG_TUN=y
CONFIG_VETH=m
CONFIG_NET_SB1000=m
CONFIG_IP1000=m
CONFIG_ARCNET=y
# CONFIG_ARCNET_1201 is not set
# CONFIG_ARCNET_1051 is not set
CONFIG_ARCNET_RAW=m
CONFIG_ARCNET_CAP=m
CONFIG_ARCNET_COM90xx=y
CONFIG_ARCNET_COM90xxIO=m
CONFIG_ARCNET_RIM_I=m
# CONFIG_ARCNET_COM20020 is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
CONFIG_HAPPYMEAL=y
CONFIG_SUNGEM=m
CONFIG_CASSINI=m
# CONFIG_NET_VENDOR_3COM is not set
CONFIG_NET_TULIP=y
CONFIG_DE2104X=y
CONFIG_TULIP=m
# CONFIG_TULIP_MWI is not set
CONFIG_TULIP_MMIO=y
# CONFIG_TULIP_NAPI is not set
# CONFIG_DE4X5 is not set
CONFIG_WINBOND_840=y
CONFIG_DM9102=m
# CONFIG_ULI526X is not set
CONFIG_PCMCIA_XIRCOM=y
# CONFIG_PCMCIA_XIRTULIP is not set
CONFIG_HP100=y
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
CONFIG_NET_PCI=y
CONFIG_PCNET32=m
# CONFIG_PCNET32_NAPI is not set
CONFIG_AMD8111_ETH=y
# CONFIG_AMD8111E_NAPI is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
CONFIG_FORCEDETH=y
CONFIG_FORCEDETH_NAPI=y
CONFIG_EEPRO100=y
CONFIG_E100=y
CONFIG_FEALNX=y
CONFIG_NATSEMI=y
# CONFIG_NE2K_PCI is not set
CONFIG_8139CP=m
CONFIG_8139TOO=y
# CONFIG_8139TOO_PIO is not set
CONFIG_8139TOO_TUNE_TWISTER=y
CONFIG_8139TOO_8129=y
CONFIG_8139_OLD_RX_RESET=y
CONFIG_SIS900=y
# CONFIG_EPIC100 is not set
CONFIG_SUNDANCE=m
CONFIG_SUNDANCE_MMIO=y
# CONFIG_VIA_RHINE is not set
CONFIG_SC92031=m
# CONFIG_NET_POCKET is not set
# CONFIG_NETDEV_1000 is not set
CONFIG_NETDEV_10000=y
# CONFIG_CHELSIO_T1 is not set
CONFIG_CHELSIO_T3=y
# CONFIG_IXGBE is not set
CONFIG_IXGB=m
# CONFIG_IXGB_NAPI is not set
CONFIG_S2IO=m
# CONFIG_S2IO_NAPI is not set
# CONFIG_MYRI10GE is not set
CONFIG_NETXEN_NIC=m
# CONFIG_NIU is not set
CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
CONFIG_TEHUTI=y
# CONFIG_TR is not set
#
# Wireless LAN
#
CONFIG_WLAN_PRE80211=y
CONFIG_STRIP=m
CONFIG_WLAN_80211=y
# CONFIG_IPW2100 is not set
CONFIG_IPW2200=m
# CONFIG_IPW2200_MONITOR is not set
# CONFIG_IPW2200_QOS is not set
# CONFIG_IPW2200_DEBUG is not set
CONFIG_LIBERTAS=y
CONFIG_LIBERTAS_USB=y
# CONFIG_LIBERTAS_SDIO is not set
CONFIG_LIBERTAS_DEBUG=y
# CONFIG_AIRO is not set
# CONFIG_HERMES is not set
CONFIG_ATMEL=y
CONFIG_PCI_ATMEL=y
CONFIG_PRISM54=y
# CONFIG_USB_ZD1201 is not set
# CONFIG_RTL8187 is not set
CONFIG_ADM8211=m
# CONFIG_P54_COMMON is not set
# CONFIG_IWLWIFI is not set
CONFIG_HOSTAP=m
# CONFIG_HOSTAP_FIRMWARE is not set
CONFIG_HOSTAP_PLX=m
CONFIG_HOSTAP_PCI=m
CONFIG_B43=m
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_DEBUG=y
CONFIG_B43_PIO=y
# CONFIG_B43_DMA_AND_PIO_MODE is not set
# CONFIG_B43_DMA_MODE is not set
CONFIG_B43_PIO_MODE=y
# CONFIG_B43LEGACY is not set
# CONFIG_RT2X00 is not set
#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
CONFIG_USB_PEGASUS=y
# CONFIG_USB_RTL8150 is not set
CONFIG_USB_USBNET=y
# CONFIG_USB_NET_AX8817X is not set
CONFIG_USB_NET_CDCETHER=y
# CONFIG_USB_NET_DM9601 is not set
CONFIG_USB_NET_GL620A=y
CONFIG_USB_NET_NET1080=y
# CONFIG_USB_NET_PLUSB is not set
CONFIG_USB_NET_MCS7830=m
# CONFIG_USB_NET_RNDIS_HOST is not set
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
# CONFIG_USB_BELKIN is not set
# CONFIG_USB_ARMLINUX is not set
CONFIG_USB_EPSON2888=y
CONFIG_USB_KC2190=y
CONFIG_USB_NET_ZAURUS=y
# CONFIG_WAN is not set
CONFIG_ATM_DRIVERS=y
# CONFIG_ATM_DUMMY is not set
# CONFIG_ATM_TCP is not set
CONFIG_ATM_LANAI=y
# CONFIG_ATM_ENI is not set
CONFIG_ATM_FIRESTREAM=y
CONFIG_ATM_ZATM=m
CONFIG_ATM_ZATM_DEBUG=y
CONFIG_ATM_IDT77252=y
# CONFIG_ATM_IDT77252_DEBUG is not set
# CONFIG_ATM_IDT77252_RCV_ALL is not set
CONFIG_ATM_IDT77252_USE_SUNI=y
CONFIG_ATM_AMBASSADOR=m
# CONFIG_ATM_AMBASSADOR_DEBUG is not set
CONFIG_ATM_HORIZON=m
CONFIG_ATM_HORIZON_DEBUG=y
CONFIG_ATM_FORE200E_MAYBE=m
CONFIG_ATM_FORE200E_PCA=y
CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y
# CONFIG_ATM_FORE200E_USE_TASKLET is not set
CONFIG_ATM_FORE200E_TX_RETRY=16
CONFIG_ATM_FORE200E_DEBUG=0
CONFIG_ATM_FORE200E=m
CONFIG_ATM_HE=m
CONFIG_ATM_HE_USE_SUNI=y
CONFIG_FDDI=y
CONFIG_DEFXX=y
CONFIG_DEFXX_MMIO=y
CONFIG_SKFP=m
# CONFIG_HIPPI is not set
CONFIG_PLIP=m
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
CONFIG_SHAPER=m
CONFIG_NETCONSOLE=y
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_ISDN=y
# CONFIG_ISDN_I4L is not set
CONFIG_ISDN_CAPI=m
# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set
# CONFIG_CAPI_TRACE is not set
CONFIG_ISDN_CAPI_MIDDLEWARE=y
CONFIG_ISDN_CAPI_CAPI20=m
CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
CONFIG_ISDN_CAPI_CAPIFS=m
#
# CAPI hardware drivers
#
# CONFIG_CAPI_AVM is not set
# CONFIG_CAPI_EICON is not set
# CONFIG_PHONE is not set
#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=y
CONFIG_INPUT_POLLDEV=y
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_JOYDEV=y
# CONFIG_INPUT_EVDEV is not set
CONFIG_INPUT_EVBUG=y
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYBOARD_SUNKBD=m
CONFIG_KEYBOARD_LKKBD=m
CONFIG_KEYBOARD_XTKBD=m
CONFIG_KEYBOARD_NEWTON=y
CONFIG_KEYBOARD_STOWAWAY=m
# CONFIG_INPUT_MOUSE is not set
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=m
# CONFIG_JOYSTICK_A3D is not set
CONFIG_JOYSTICK_ADI=y
# CONFIG_JOYSTICK_COBRA is not set
# CONFIG_JOYSTICK_GF2K is not set
CONFIG_JOYSTICK_GRIP=m
# CONFIG_JOYSTICK_GRIP_MP is not set
CONFIG_JOYSTICK_GUILLEMOT=y
CONFIG_JOYSTICK_INTERACT=y
CONFIG_JOYSTICK_SIDEWINDER=y
# CONFIG_JOYSTICK_TMDC is not set
CONFIG_JOYSTICK_IFORCE=m
CONFIG_JOYSTICK_IFORCE_USB=y
# CONFIG_JOYSTICK_IFORCE_232 is not set
CONFIG_JOYSTICK_WARRIOR=m
# CONFIG_JOYSTICK_MAGELLAN is not set
# CONFIG_JOYSTICK_SPACEORB is not set
CONFIG_JOYSTICK_SPACEBALL=m
# CONFIG_JOYSTICK_STINGER is not set
CONFIG_JOYSTICK_TWIDJOY=y
# CONFIG_JOYSTICK_DB9 is not set
CONFIG_JOYSTICK_GAMECON=m
CONFIG_JOYSTICK_TURBOGRAFX=m
CONFIG_JOYSTICK_JOYDUMP=y
CONFIG_JOYSTICK_XPAD=y
CONFIG_JOYSTICK_XPAD_FF=y
CONFIG_INPUT_TABLET=y
CONFIG_TABLET_USB_ACECAD=y
CONFIG_TABLET_USB_AIPTEK=y
CONFIG_TABLET_USB_GTCO=m
CONFIG_TABLET_USB_KBTAB=m
# CONFIG_TABLET_USB_WACOM is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=m
CONFIG_SERIO_CT82C710=y
CONFIG_SERIO_PARKBD=m
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=m
CONFIG_GAMEPORT=y
CONFIG_GAMEPORT_NS558=y
# CONFIG_GAMEPORT_L4 is not set
CONFIG_GAMEPORT_EMU10K1=y
# CONFIG_GAMEPORT_FM801 is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_COMPUTONE is not set
# CONFIG_ROCKETPORT is not set
CONFIG_CYCLADES=y
# CONFIG_CYZ_INTR is not set
# CONFIG_DIGIEPCA is not set
CONFIG_MOXA_INTELLIO=y
# CONFIG_MOXA_SMARTIO is not set
# CONFIG_MOXA_SMARTIO_NEW is not set
CONFIG_ISI=m
# CONFIG_SYNCLINK is not set
CONFIG_SYNCLINKMP=y
CONFIG_SYNCLINK_GT=m
CONFIG_N_HDLC=y
CONFIG_RISCOM8=m
CONFIG_SPECIALIX=m
# CONFIG_SPECIALIX_RTSCTS is not set
CONFIG_SX=m
CONFIG_RIO=y
# CONFIG_RIO_OLDPCI is not set
# CONFIG_STALDRV is not set
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
# CONFIG_SERIAL_8250_MANY_PORTS is not set
# CONFIG_SERIAL_8250_SHARE_IRQ is not set
CONFIG_SERIAL_8250_DETECT_IRQ=y
# CONFIG_SERIAL_8250_RSA is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_PRINTER is not set
# CONFIG_PPDEV is not set
CONFIG_IPMI_HANDLER=m
# CONFIG_IPMI_PANIC_EVENT is not set
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
# CONFIG_IPMI_WATCHDOG is not set
CONFIG_IPMI_POWEROFF=m
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_INTEL=m
CONFIG_HW_RANDOM_AMD=m
# CONFIG_NVRAM is not set
CONFIG_RTC=y
CONFIG_R3964=y
CONFIG_APPLICOM=y
# CONFIG_MWAVE is not set
CONFIG_PC8736x_GPIO=y
CONFIG_NSC_GPIO=y
CONFIG_RAW_DRIVER=m
CONFIG_MAX_RAW_DEVS=256
# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=m
#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_ALGOPCF=y
CONFIG_I2C_ALGOPCA=m
#
# I2C Hardware Bus support
#
CONFIG_I2C_ALI1535=y
CONFIG_I2C_ALI1563=y
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not set
CONFIG_I2C_I801=m
# CONFIG_I2C_I810 is not set
CONFIG_I2C_PIIX4=y
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT is not set
CONFIG_I2C_PARPORT_LIGHT=m
# CONFIG_I2C_PROSAVAGE is not set
CONFIG_I2C_SAVAGE4=y
CONFIG_I2C_SIMTEC=m
CONFIG_I2C_SIS5595=m
CONFIG_I2C_SIS630=y
# CONFIG_I2C_SIS96X is not set
CONFIG_I2C_TAOS_EVM=m
CONFIG_I2C_STUB=m
# CONFIG_I2C_TINY_USB is not set
# CONFIG_I2C_VIA is not set
CONFIG_I2C_VIAPRO=y
# CONFIG_I2C_VOODOO3 is not set
#
# Miscellaneous I2C Chip support
#
CONFIG_SENSORS_DS1337=m
CONFIG_SENSORS_DS1374=y
CONFIG_DS1682=y
CONFIG_SENSORS_EEPROM=y
CONFIG_SENSORS_PCF8574=m
CONFIG_SENSORS_PCA9539=m
CONFIG_SENSORS_PCF8591=m
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_SENSORS_TSL2550 is not set
CONFIG_I2C_DEBUG_CORE=y
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
CONFIG_W1=y
#
# 1-wire Bus Masters
#
CONFIG_W1_MASTER_MATROX=y
CONFIG_W1_MASTER_DS2490=m
CONFIG_W1_MASTER_DS2482=m
#
# 1-wire Slaves
#
CONFIG_W1_SLAVE_THERM=y
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_DS2433=y
CONFIG_W1_SLAVE_DS2433_CRC=y
CONFIG_W1_SLAVE_DS2760=y
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
CONFIG_PDA_POWER=m
CONFIG_BATTERY_DS2760=y
CONFIG_HWMON=m
CONFIG_HWMON_VID=m
# CONFIG_SENSORS_ABITUGURU is not set
CONFIG_SENSORS_ABITUGURU3=m
CONFIG_SENSORS_AD7418=m
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
CONFIG_SENSORS_ADM1026=m
CONFIG_SENSORS_ADM1029=m
CONFIG_SENSORS_ADM1031=m
# CONFIG_SENSORS_ADM9240 is not set
CONFIG_SENSORS_ADT7470=m
# CONFIG_SENSORS_K8TEMP is not set
CONFIG_SENSORS_ASB100=m
CONFIG_SENSORS_ATXP1=m
CONFIG_SENSORS_DS1621=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_F71805F=m
CONFIG_SENSORS_F71882FG=m
CONFIG_SENSORS_F75375S=m
CONFIG_SENSORS_FSCHER=m
# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_FSCHMD is not set
CONFIG_SENSORS_GL518SM=m
# CONFIG_SENSORS_GL520SM is not set
CONFIG_SENSORS_CORETEMP=m
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IT87=m
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM75 is not set
CONFIG_SENSORS_LM77=m
CONFIG_SENSORS_LM78=m
# CONFIG_SENSORS_LM80 is not set
# CONFIG_SENSORS_LM83 is not set
CONFIG_SENSORS_LM85=m
# CONFIG_SENSORS_LM87 is not set
# CONFIG_SENSORS_LM90 is not set
CONFIG_SENSORS_LM92=m
CONFIG_SENSORS_LM93=m
CONFIG_SENSORS_MAX1619=m
CONFIG_SENSORS_MAX6650=m
# CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_PC87427 is not set
CONFIG_SENSORS_SIS5595=m
# CONFIG_SENSORS_DME1737 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_THMC50=m
CONFIG_SENSORS_VIA686A=m
CONFIG_SENSORS_VT1211=m
CONFIG_SENSORS_VT8231=m
CONFIG_SENSORS_W83781D=m
CONFIG_SENSORS_W83791D=m
# CONFIG_SENSORS_W83792D is not set
# CONFIG_SENSORS_W83793 is not set
CONFIG_SENSORS_W83L785TS=m
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
CONFIG_SENSORS_HDAPS=m
CONFIG_SENSORS_APPLESMC=m
CONFIG_HWMON_DEBUG_CHIP=y
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
# Watchdog Device Drivers
#
CONFIG_SOFT_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=y
# CONFIG_ALIM1535_WDT is not set
# CONFIG_ALIM7101_WDT is not set
CONFIG_SC520_WDT=m
# CONFIG_EUROTECH_WDT is not set
CONFIG_IB700_WDT=y
CONFIG_IBMASR=y
CONFIG_WAFER_WDT=m
CONFIG_I6300ESB_WDT=y
# CONFIG_ITCO_WDT is not set
# CONFIG_IT8712F_WDT is not set
CONFIG_SC1200_WDT=m
CONFIG_PC87413_WDT=y
CONFIG_60XX_WDT=y
CONFIG_SBC8360_WDT=y
CONFIG_CPU5_WDT=m
CONFIG_SMSC37B787_WDT=y
CONFIG_W83627HF_WDT=y
# CONFIG_W83697HF_WDT is not set
CONFIG_W83877F_WDT=m
# CONFIG_W83977F_WDT is not set
CONFIG_MACHZ_WDT=m
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
#
# PCI-based Watchdog Cards
#
CONFIG_PCIPCWATCHDOG=m
CONFIG_WDTPCI=y
CONFIG_WDT_501_PCI=y
#
# USB-based Watchdog Cards
#
CONFIG_USBPCWATCHDOG=y
#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
CONFIG_SSB=m
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
CONFIG_SSB_DEBUG=y
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
CONFIG_SSB_DRIVER_PCICORE=y
#
# Multifunction device drivers
#
CONFIG_MFD_SM501=y
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
CONFIG_DAB=y
# CONFIG_USB_DABUSB is not set
#
# Graphics support
#
CONFIG_AGP=y
CONFIG_AGP_AMD64=y
# CONFIG_AGP_INTEL is not set
CONFIG_AGP_SIS=m
# CONFIG_AGP_VIA is not set
# CONFIG_DRM is not set
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
# CONFIG_FB is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_CORGI=m
CONFIG_BACKLIGHT_PROGEAR=m
#
# Display device support
#
CONFIG_DISPLAY_SUPPORT=y
#
# Display hardware drivers
#
#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_VIDEO_SELECT=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FONT_8x16=y
#
# Sound
#
# CONFIG_SOUND is not set
# CONFIG_HID_SUPPORT is not set
CONFIG_HID=m
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
CONFIG_USB_DEBUG=y
#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_DEVICE_CLASS is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
CONFIG_USB_SUSPEND=y
CONFIG_USB_PERSIST=y
# CONFIG_USB_OTG is not set
#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_ISP116X_HCD=y
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_U132_HCD is not set
CONFIG_USB_SL811_HCD=y
CONFIG_USB_R8A66597_HCD=y
#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
# may also be needed; see USB_STORAGE Help for more information
#
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_LIBUSUAL is not set
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
CONFIG_USB_MICROTEK=m
CONFIG_USB_MON=y
#
# USB port drivers
#
CONFIG_USB_USS720=m
#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=y
# CONFIG_USB_SERIAL_CONSOLE is not set
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_AIRCABLE=y
CONFIG_USB_SERIAL_AIRPRIME=y
CONFIG_USB_SERIAL_ARK3116=m
CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_CP2101 is not set
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
CONFIG_USB_SERIAL_EMPEG=y
# CONFIG_USB_SERIAL_FTDI_SIO is not set
CONFIG_USB_SERIAL_FUNSOFT=y
# CONFIG_USB_SERIAL_VISOR is not set
CONFIG_USB_SERIAL_IPAQ=y
# CONFIG_USB_SERIAL_IR is not set
CONFIG_USB_SERIAL_EDGEPORT=m
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=y
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
CONFIG_USB_SERIAL_KEYSPAN_USA28=y
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=y
# CONFIG_USB_SERIAL_MCT_U232 is not set
CONFIG_USB_SERIAL_MOS7720=m
CONFIG_USB_SERIAL_MOS7840=m
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_OTI6858=m
# CONFIG_USB_SERIAL_HP4X is not set
CONFIG_USB_SERIAL_SAFE=m
CONFIG_USB_SERIAL_SAFE_PADDED=y
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
# CONFIG_USB_SERIAL_TI is not set
CONFIG_USB_SERIAL_CYBERJACK=y
CONFIG_USB_SERIAL_XIRCOM=y
# CONFIG_USB_SERIAL_OPTION is not set
CONFIG_USB_SERIAL_OMNINET=y
CONFIG_USB_SERIAL_DEBUG=y
CONFIG_USB_EZUSB=y
#
# USB Miscellaneous drivers
#
CONFIG_USB_EMI62=m
CONFIG_USB_EMI26=m
CONFIG_USB_ADUTUX=y
# CONFIG_USB_AUERSWALD is not set
CONFIG_USB_RIO500=m
CONFIG_USB_LEGOTOWER=y
CONFIG_USB_LCD=m
CONFIG_USB_BERRY_CHARGE=y
CONFIG_USB_LED=m
CONFIG_USB_CYPRESS_CY7C63=y
CONFIG_USB_CYTHERM=y
# CONFIG_USB_PHIDGET is not set
CONFIG_USB_IDMOUSE=y
CONFIG_USB_FTDI_ELAN=m
CONFIG_USB_APPLEDISPLAY=y
CONFIG_USB_SISUSBVGA=y
CONFIG_USB_SISUSBVGA_CON=y
CONFIG_USB_LD=m
CONFIG_USB_TRANCEVIBRATOR=m
CONFIG_USB_IOWARRIOR=m
CONFIG_USB_TEST=m
#
# USB DSL modem support
#
CONFIG_USB_ATM=m
# CONFIG_USB_SPEEDTOUCH is not set
CONFIG_USB_CXACRU=m
CONFIG_USB_UEAGLEATM=m
# CONFIG_USB_XUSBATM is not set
#
# USB Gadget Support
#
CONFIG_USB_GADGET=m
# CONFIG_USB_GADGET_DEBUG_FILES is not set
# CONFIG_USB_GADGET_DEBUG_FS is not set
CONFIG_USB_GADGET_SELECTED=y
CONFIG_USB_GADGET_AMD5536UDC=y
CONFIG_USB_AMD5536UDC=m
# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
# CONFIG_USB_GADGET_M66592 is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
CONFIG_USB_GADGET_DUALSPEED=y
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=m
# CONFIG_USB_ETH_RNDIS is not set
# CONFIG_USB_GADGETFS is not set
CONFIG_USB_FILE_STORAGE=m
# CONFIG_USB_FILE_STORAGE_TEST is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not set
CONFIG_MMC=m
CONFIG_MMC_DEBUG=y
CONFIG_MMC_UNSAFE_RESUME=y
#
# MMC/SD Card Drivers
#
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_SDIO_UART=m
#
# MMC/SD Host Controller Drivers
#
CONFIG_MMC_SDHCI=m
CONFIG_MMC_RICOH_MMC=m
# CONFIG_MMC_WBSD is not set
CONFIG_MMC_TIFM_SD=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=m
#
# LED drivers
#
#
# LED Triggers
#
# CONFIG_LEDS_TRIGGERS is not set
CONFIG_INFINIBAND=y
CONFIG_INFINIBAND_USER_MAD=y
# CONFIG_INFINIBAND_USER_ACCESS is not set
CONFIG_INFINIBAND_ADDR_TRANS=y
# CONFIG_INFINIBAND_MTHCA is not set
CONFIG_INFINIBAND_IPATH=m
CONFIG_INFINIBAND_AMSO1100=m
# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_MLX4_INFINIBAND=m
CONFIG_INFINIBAND_IPOIB=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
CONFIG_INFINIBAND_SRP=m
CONFIG_INFINIBAND_ISER=y
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=m
CONFIG_RTC_CLASS=m
#
# RTC interfaces
#
# CONFIG_RTC_INTF_SYSFS is not set
# CONFIG_RTC_INTF_PROC is not set
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
CONFIG_RTC_DRV_TEST=m
#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
CONFIG_RTC_DRV_DS1374=m
CONFIG_RTC_DRV_DS1672=m
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_X1205=m
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set
#
# SPI RTC drivers
#
#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=m
CONFIG_RTC_DRV_DS1553=m
CONFIG_RTC_DRV_STK17TA8=m
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_M48T59=m
CONFIG_RTC_DRV_V3020=m
#
# on-CPU RTC drivers
#
# CONFIG_DMADEVICES is not set
CONFIG_AUXDISPLAY=y
# CONFIG_VIRTUALIZATION is not set
#
# Userspace I/O
#
CONFIG_UIO=m
# CONFIG_UIO_CIF is not set
#
# Firmware Drivers
#
# CONFIG_EDD is not set
# CONFIG_EFI_VARS is not set
CONFIG_DELL_RBU=m
CONFIG_DCDBAS=m
CONFIG_DMIID=y
#
# File systems
#
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4DEV_FS=m
# CONFIG_EXT4DEV_FS_XATTR is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=y
CONFIG_REISERFS_CHECK=y
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
# CONFIG_REISERFS_FS_POSIX_ACL is not set
CONFIG_REISERFS_FS_SECURITY=y
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
# CONFIG_JFS_SECURITY is not set
CONFIG_JFS_DEBUG=y
CONFIG_JFS_STATISTICS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
# CONFIG_XFS_SECURITY is not set
# CONFIG_XFS_POSIX_ACL is not set
# CONFIG_XFS_RT is not set
CONFIG_GFS2_FS=y
# CONFIG_GFS2_FS_LOCKING_NOLOCK is not set
CONFIG_GFS2_FS_LOCKING_DLM=y
CONFIG_OCFS2_FS=m
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
CONFIG_OCFS2_DEBUG_FS=y
CONFIG_MINIX_FS=m
CONFIG_ROMFS_FS=m
# CONFIG_INOTIFY is not set
# CONFIG_QUOTA is not set
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=m
# CONFIG_FUSE_FS is not set
CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
# CONFIG_MSDOS_FS is not set
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_NTFS_FS=m
CONFIG_NTFS_DEBUG=y
# CONFIG_NTFS_RW is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_CONFIGFS_FS=y
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
CONFIG_ECRYPT_FS=m
CONFIG_HFS_FS=m
# CONFIG_HFSPLUS_FS is not set
CONFIG_BEFS_FS=y
# CONFIG_BEFS_DEBUG is not set
CONFIG_BFS_FS=y
# CONFIG_EFS_FS is not set
CONFIG_CRAMFS=m
CONFIG_VXFS_FS=m
# CONFIG_HPFS_FS is not set
CONFIG_QNX4FS_FS=m
CONFIG_SYSV_FS=m
CONFIG_UFS_FS=y
CONFIG_UFS_FS_WRITE=y
# CONFIG_UFS_DEBUG is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
CONFIG_ACORN_PARTITION=y
CONFIG_ACORN_PARTITION_CUMANA=y
# CONFIG_ACORN_PARTITION_EESOX is not set
# CONFIG_ACORN_PARTITION_ICS is not set
CONFIG_ACORN_PARTITION_ADFS=y
# CONFIG_ACORN_PARTITION_POWERTEC is not set
# CONFIG_ACORN_PARTITION_RISCIX is not set
CONFIG_OSF_PARTITION=y
CONFIG_AMIGA_PARTITION=y
CONFIG_ATARI_PARTITION=y
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LDM_DEBUG is not set
CONFIG_SGI_PARTITION=y
# CONFIG_ULTRIX_PARTITION is not set
CONFIG_SUN_PARTITION=y
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
# CONFIG_SYSV68_PARTITION is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
CONFIG_NLS_CODEPAGE_737=y
CONFIG_NLS_CODEPAGE_775=m
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
CONFIG_NLS_CODEPAGE_855=m
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=y
CONFIG_NLS_CODEPAGE_861=y
CONFIG_NLS_CODEPAGE_862=y
CONFIG_NLS_CODEPAGE_863=y
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
CONFIG_NLS_CODEPAGE_866=y
# CONFIG_NLS_CODEPAGE_869 is not set
CONFIG_NLS_CODEPAGE_936=y
CONFIG_NLS_CODEPAGE_950=y
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=y
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=y
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=y
# CONFIG_NLS_ISO8859_3 is not set
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
# CONFIG_NLS_ISO8859_7 is not set
CONFIG_NLS_ISO8859_9=m
# CONFIG_NLS_ISO8859_13 is not set
CONFIG_NLS_ISO8859_14=y
# CONFIG_NLS_ISO8859_15 is not set
CONFIG_NLS_KOI8_R=m
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=m
CONFIG_DLM=y
# CONFIG_DLM_DEBUG is not set
CONFIG_INSTRUMENTATION=y
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
CONFIG_MARKERS=y
#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
CONFIG_HEADERS_CHECK=y
# CONFIG_DEBUG_KERNEL is not set
# CONFIG_SLUB_DEBUG_ON is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
CONFIG_SAMPLES=y
CONFIG_SAMPLE_MARKERS=m
# CONFIG_WANT_EXTRA_DEBUG_INFORMATION is not set
# CONFIG_UNWIND_INFO is not set
CONFIG_KGDB_ATTACH_WAIT=y
CONFIG_EARLY_PRINTK=y
CONFIG_X86_MPPARSE=y
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not set
# CONFIG_IO_DELAY_0XED is not set
CONFIG_IO_DELAY_UDELAY=y
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=2
#
# Security options
#
CONFIG_KEYS=y
CONFIG_KEYS_DEBUG_PROC_KEYS=y
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
CONFIG_SECURITY_CAPABILITIES=y
CONFIG_SECURITY_FILE_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
# CONFIG_SECURITY_SELINUX is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ABLKCIPHER=m
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
# CONFIG_CRYPTO_SHA512 is not set
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_GF128MUL=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=y
CONFIG_CRYPTO_LRW=y
# CONFIG_CRYPTO_XTS is not set
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_FCRYPT=m
# CONFIG_CRYPTO_BLOWFISH is not set
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
CONFIG_CRYPTO_TWOFISH_X86_64=y
CONFIG_CRYPTO_SERPENT=y
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_AES_X86_64=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=y
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=y
# CONFIG_CRYPTO_SEED is not set
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
CONFIG_CRYPTO_CAMELLIA=y
# CONFIG_CRYPTO_TEST is not set
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_HW=y
#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=y
CONFIG_CRC16=y
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=y
CONFIG_TEXTSEARCH_BM=y
CONFIG_TEXTSEARCH_FSM=y
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
[-- Attachment #3: crash.log --]
[-- Type: text/plain, Size: 55154 bytes --]
Linux version 2.6.24-rc7 (mingo@dione) (gcc version 4.2.2) #5 PREEMPT Wed Jan 9 00:22:52 CET 2008
Command line: root=/dev/sda6 console=ttyS0,115200 earlyprintk=serial,ttyS0,115200 3 profile=0 debug initcall_debug enforcing=0 apic=verbose sysrq_always_enabled ignore_loglevel selinux=0
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
BIOS-e820: 000000003fff0000 - 000000003fff3000 (ACPI NVS)
BIOS-e820: 000000003fff3000 - 0000000040000000 (ACPI data)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
console [earlyser0] enabled
end_pfn_map = 1048576
kernel direct mapping tables up to 100000000 @ 8000-d000
DMI 2.3 present.
ACPI: RSDP 000F76F0, 0014 (r0 Nvidia)
ACPI: RSDT 3FFF3040, 0034 (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: FACP 3FFF30C0, 0074 (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: DSDT 3FFF3180, 6264 (r1 NVIDIA AWRDACPI 1000 MSFT 100000E)
ACPI: FACS 3FFF0000, 0040
ACPI: SRAT 3FFF9500, 00A0 (r1 AMD HAMMER 1 AMD 1)
ACPI: MCFG 3FFF9600, 003C (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: APIC 3FFF9440, 007C (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
Zone PFN ranges:
DMA 0 -> 4096
DMA32 4096 -> 1048576
Normal 1048576 -> 1048576
Movable zone start PFN for each node
early_node_map[2] active PFN ranges
0: 0 -> 159
0: 256 -> 262128
Nvidia board detected. Ignoring ACPI timer override.
If you got timer trouble try acpi_use_timer_override
ACPI: PM-Timer IO Port: 0x4008
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 (Bootup-CPU)
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
Processor #1
WARNING: NR_CPUS limit of 1 reached. Processor ignored.
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: BIOS IRQ0 pin2 override ignored.
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge)
ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge)
Setting APIC routing to flat
Using ACPI (MADT) for SMP configuration information
mapped APIC to ffffffffff5fb000 ( fee00000)
mapped IOAPIC to ffffffffff5fa000 (00000000fec00000)
Allocating PCI resources starting at 50000000 (gap: 40000000:a0000000)
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 256252
Kernel command line: root=/dev/sda6 console=ttyS0,115200 earlyprintk=serial,ttyS0,115200 3 profile=0 debug initcall_debug enforcing=0 apic=verbose sysrq_always_enabled ignore_loglevel selinux=0
kernel profiling enabled (shift: 0)
debug: sysrq always enabled.
debug: ignoring loglevel setting.
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 32768 bytes)
TSC calibrated against PM_TIMER
time.c: Detected 2160.201 MHz processor.
spurious 8259A interrupt: IRQ7.
Console: colour VGA+ 80x25
console handover: boot [earlyser0] -> real [ttyS0]
Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
Checking aperture...
CPU 0: aperture @ 4000000 size 32 MB
Aperture too small (32 MB)
No AGP bridge found
Memory: 1004848k/1048512k available (4539k kernel code, 42840k reserved, 2351k data, 216k init)
SLUB: Genslabs=11, HWalign=64, Order=0-1, MinObjects=4, CPUs=1, Nodes=1
Calibrating delay using timer specific routine.. 4322.40 BogoMIPS (lpj=21612027)
Security Framework initialized
Capability LSM initialized
Mount-cache hash table entries: 256
Initializing cgroup subsys cpuacct
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
CPU: <6>AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ stepping 02
ACPI: Core revision 20070126
enabled ExtINT on CPU#0
ENABLING IO-APIC IRQs
init IO_APIC IRQs
IOAPIC[0]: Set routing entry (2-0 -> 0x30 -> IRQ 0 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-1 -> 0x31 -> IRQ 1 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-2 -> 0x32 -> IRQ 2 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-3 -> 0x33 -> IRQ 3 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-4 -> 0x34 -> IRQ 4 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-5 -> 0x35 -> IRQ 5 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-6 -> 0x36 -> IRQ 6 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-7 -> 0x37 -> IRQ 7 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-8 -> 0x38 -> IRQ 8 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-9 -> 0x39 -> IRQ 9 Mode:1 Active:0)
IOAPIC[0]: Set routing entry (2-10 -> 0x3a -> IRQ 10 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-11 -> 0x3b -> IRQ 11 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-12 -> 0x3c -> IRQ 12 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-13 -> 0x3d -> IRQ 13 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-14 -> 0x3e -> IRQ 14 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-15 -> 0x3f -> IRQ 15 Mode:0 Active:0)
IO-APIC (apicid-pin) 2-16, 2-17, 2-18, 2-19, 2-20, 2-21, 2-22, 2-23 not connected.
..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1
Using local APIC timer interrupts.
APIC timer calibration result 13501255
Detected 13.501 MHz APIC timer.
Calling initcall 0xffffffff808e5e24: init_cpufreq_transition_notifier_list+0x0/0x14()
initcall 0xffffffff808e5e24: init_cpufreq_transition_notifier_list+0x0/0x14() returned 0.
initcall 0xffffffff808e5e24 ran for 0 msecs: init_cpufreq_transition_notifier_list+0x0/0x14()
Calling initcall 0xffffffff808e8225: net_ns_init+0x0/0xf6()
net_namespace: 120 bytes
initcall 0xffffffff808e8225: net_ns_init+0x0/0xf6() returned 0.
initcall 0xffffffff808e8225 ran for 9 msecs: net_ns_init+0x0/0xf6()
Calling initcall 0xffffffff808ce1f0: cpufreq_tsc+0x0/0x16()
initcall 0xffffffff808ce1f0: cpufreq_tsc+0x0/0x16() returned 0.
initcall 0xffffffff808ce1f0 ran for 0 msecs: cpufreq_tsc+0x0/0x16()
Calling initcall 0xffffffff808d51de: sysctl_init+0x0/0x22()
initcall 0xffffffff808d51de: sysctl_init+0x0/0x22() returned 0.
initcall 0xffffffff808d51de ran for 0 msecs: sysctl_init+0x0/0x22()
Calling initcall 0xffffffff808d5bd9: init_jiffies_clocksource+0x0/0xc()
initcall 0xffffffff808d5bd9: init_jiffies_clocksource+0x0/0xc() returned 0.
initcall 0xffffffff808d5bd9 ran for 0 msecs: init_jiffies_clocksource+0x0/0xc()
Calling initcall 0xffffffff808d5cf8: pm_init+0x0/0x2a()
initcall 0xffffffff808d5cf8: pm_init+0x0/0x2a() returned 0.
initcall 0xffffffff808d5cf8 ran for 0 msecs: pm_init+0x0/0x2a()
Calling initcall 0xffffffff808d6160: ksysfs_init+0x0/0x5a()
initcall 0xffffffff808d6160: ksysfs_init+0x0/0x5a() returned 0.
initcall 0xffffffff808d6160 ran for 0 msecs: ksysfs_init+0x0/0x5a()
Calling initcall 0xffffffff808d7e26: filelock_init+0x0/0x2e()
initcall 0xffffffff808d7e26: filelock_init+0x0/0x2e() returned 0.
initcall 0xffffffff808d7e26 ran for 0 msecs: filelock_init+0x0/0x2e()
Calling initcall 0xffffffff808d8783: init_script_binfmt+0x0/0xc()
initcall 0xffffffff808d8783: init_script_binfmt+0x0/0xc() returned 0.
initcall 0xffffffff808d8783 ran for 0 msecs: init_script_binfmt+0x0/0xc()
Calling initcall 0xffffffff808d878f: init_elf_binfmt+0x0/0xc()
initcall 0xffffffff808d878f: init_elf_binfmt+0x0/0xc() returned 0.
initcall 0xffffffff808d878f ran for 0 msecs: init_elf_binfmt+0x0/0xc()
Calling initcall 0xffffffff808d879b: init_compat_elf_binfmt+0x0/0xc()
initcall 0xffffffff808d879b: init_compat_elf_binfmt+0x0/0xc() returned 0.
initcall 0xffffffff808d879b ran for 0 msecs: init_compat_elf_binfmt+0x0/0xc()
Calling initcall 0xffffffff808d9471: debugfs_init+0x0/0x40()
initcall 0xffffffff808d9471: debugfs_init+0x0/0x40() returned 0.
initcall 0xffffffff808d9471 ran for 0 msecs: debugfs_init+0x0/0x40()
Calling initcall 0xffffffff808d9a20: securityfs_init+0x0/0x40()
initcall 0xffffffff808d9a20: securityfs_init+0x0/0x40() returned 0.
initcall 0xffffffff808d9a20 ran for 0 msecs: securityfs_init+0x0/0x40()
Calling initcall 0xffffffff808da183: random32_init+0x0/0x16()
initcall 0xffffffff808da183: random32_init+0x0/0x16() returned 0.
initcall 0xffffffff808da183 ran for 0 msecs: random32_init+0x0/0x16()
Calling initcall 0xffffffff808e5e38: cpufreq_core_init+0x0/0x2c()
initcall 0xffffffff808e5e38: cpufreq_core_init+0x0/0x2c() returned 0.
initcall 0xffffffff808e5e38 ran for 0 msecs: cpufreq_core_init+0x0/0x2c()
Calling initcall 0xffffffff808e80fa: sock_init+0x0/0x5e()
initcall 0xffffffff808e80fa: sock_init+0x0/0x5e() returned 0.
initcall 0xffffffff808e80fa ran for 0 msecs: sock_init+0x0/0x5e()
Calling initcall 0xffffffff808e88cf: netpoll_init+0x0/0x22()
initcall 0xffffffff808e88cf: netpoll_init+0x0/0x22() returned 0.
initcall 0xffffffff808e88cf ran for 0 msecs: netpoll_init+0x0/0x22()
Calling initcall 0xffffffff808e8c6d: netlink_proto_init+0x0/0x14e()
NET: Registered protocol family 16
initcall 0xffffffff808e8c6d: netlink_proto_init+0x0/0x14e() returned 0.
initcall 0xffffffff808e8c6d ran for 0 msecs: netlink_proto_init+0x0/0x14e()
Calling initcall 0xffffffff808da0b0: kobject_uevent_init+0x0/0x45()
initcall 0xffffffff808da0b0: kobject_uevent_init+0x0/0x45() returned 0.
initcall 0xffffffff808da0b0 ran for 0 msecs: kobject_uevent_init+0x0/0x45()
Calling initcall 0xffffffff808da3df: pcibus_class_init+0x0/0xc()
initcall 0xffffffff808da3df: pcibus_class_init+0x0/0xc() returned 0.
initcall 0xffffffff808da3df ran for 0 msecs: pcibus_class_init+0x0/0xc()
Calling initcall 0xffffffff808da91b: pci_driver_init+0x0/0xc()
initcall 0xffffffff808da91b: pci_driver_init+0x0/0xc() returned 0.
initcall 0xffffffff808da91b ran for 0 msecs: pci_driver_init+0x0/0xc()
Calling initcall 0xffffffff808daae3: backlight_class_init+0x0/0x4a()
initcall 0xffffffff808daae3: backlight_class_init+0x0/0x4a() returned 0.
initcall 0xffffffff808daae3 ran for 0 msecs: backlight_class_init+0x0/0x4a()
Calling initcall 0xffffffff808dbe8d: dock_init+0x0/0x53()
No dock devices found.
initcall 0xffffffff808dbe8d: dock_init+0x0/0x53() returned 0.
initcall 0xffffffff808dbe8d ran for 0 msecs: dock_init+0x0/0x53()
Calling initcall 0xffffffff808dbee0: bay_init+0x0/0x51()
initcall 0xffffffff808dbee0: bay_init+0x0/0x51() returned -19.
initcall 0xffffffff808dbee0 ran for 0 msecs: bay_init+0x0/0x51()
Calling initcall 0xffffffff808dcbfd: tty_class_init+0x0/0x2a()
initcall 0xffffffff808dcbfd: tty_class_init+0x0/0x2a() returned 0.
initcall 0xffffffff808dcbfd ran for 0 msecs: tty_class_init+0x0/0x2a()
Calling initcall 0xffffffff808dd5be: vtconsole_class_init+0x0/0xaf()
initcall 0xffffffff808dd5be: vtconsole_class_init+0x0/0xaf() returned 0.
initcall 0xffffffff808dd5be ran for 0 msecs: vtconsole_class_init+0x0/0xaf()
Calling initcall 0xffffffff808ce0bd: arch_kdebugfs_init+0x0/0x3()
initcall 0xffffffff808ce0bd: arch_kdebugfs_init+0x0/0x3() returned 0.
initcall 0xffffffff808ce0bd ran for 0 msecs: arch_kdebugfs_init+0x0/0x3()
Calling initcall 0xffffffff808ce959: mtrr_if_init+0x0/0x7a()
initcall 0xffffffff808ce959: mtrr_if_init+0x0/0x7a() returned 0.
initcall 0xffffffff808ce959 ran for 0 msecs: mtrr_if_init+0x0/0x7a()
Calling initcall 0xffffffff808cf6f1: ffh_cstate_init+0x0/0x2c()
initcall 0xffffffff808cf6f1: ffh_cstate_init+0x0/0x2c() returned -1.
initcall 0xffffffff808cf6f1 ran for 0 msecs: ffh_cstate_init+0x0/0x2c()
initcall at 0xffffffff808cf6f1: ffh_cstate_init+0x0/0x2c(): returned with error code -1
Calling initcall 0xffffffff808daa87: acpi_pci_init+0x0/0x48()
ACPI: bus type pci registered
initcall 0xffffffff808daa87: acpi_pci_init+0x0/0x48() returned 0.
initcall 0xffffffff808daa87 ran for 0 msecs: acpi_pci_init+0x0/0x48()
Calling initcall 0xffffffff808db9fd: init_acpi_device_notify+0x0/0x4b()
initcall 0xffffffff808db9fd: init_acpi_device_notify+0x0/0x4b() returned 0.
initcall 0xffffffff808db9fd ran for 0 msecs: init_acpi_device_notify+0x0/0x4b()
Calling initcall 0xffffffff808e6d85: dmi_id_init+0x0/0x2df()
initcall 0xffffffff808e6d85: dmi_id_init+0x0/0x2df() returned 0.
initcall 0xffffffff808e6d85 ran for 0 msecs: dmi_id_init+0x0/0x2df()
Calling initcall 0xffffffff808e762f: pci_access_init+0x0/0x36()
PCI: Using configuration type 1
initcall 0xffffffff808e762f: pci_access_init+0x0/0x36() returned 0.
initcall 0xffffffff808e762f ran for 0 msecs: pci_access_init+0x0/0x36()
Calling initcall 0xffffffff808ce0ae: topology_init+0x0/0xf()
initcall 0xffffffff808ce0ae: topology_init+0x0/0xf() returned 0.
initcall 0xffffffff808ce0ae ran for 0 msecs: topology_init+0x0/0xf()
Calling initcall 0xffffffff808ce7ac: mtrr_init_finialize+0x0/0x34()
initcall 0xffffffff808ce7ac: mtrr_init_finialize+0x0/0x34() returned 0.
initcall 0xffffffff808ce7ac ran for 0 msecs: mtrr_init_finialize+0x0/0x34()
Calling initcall 0xffffffff808d565e: param_sysfs_init+0x0/0x1b1()
initcall 0xffffffff808d565e: param_sysfs_init+0x0/0x1b1() returned 0.
initcall 0xffffffff808d565e ran for 0 msecs: param_sysfs_init+0x0/0x1b1()
Calling initcall 0xffffffff80247004: pm_sysrq_init+0x0/0x19()
initcall 0xffffffff80247004: pm_sysrq_init+0x0/0x19() returned 0.
initcall 0xffffffff80247004 ran for 0 msecs: pm_sysrq_init+0x0/0x19()
Calling initcall 0xffffffff808d75c1: readahead_init+0x0/0xc()
initcall 0xffffffff808d75c1: readahead_init+0x0/0xc() returned 0.
initcall 0xffffffff808d75c1 ran for 0 msecs: readahead_init+0x0/0xc()
Calling initcall 0xffffffff808d8444: init_bio+0x0/0xbb()
initcall 0xffffffff808d8444: init_bio+0x0/0xbb() returned 0.
initcall 0xffffffff808d8444 ran for 0 msecs: init_bio+0x0/0xbb()
Calling initcall 0xffffffff808d9d57: genhd_device_init+0x0/0x4d()
initcall 0xffffffff808d9d57: genhd_device_init+0x0/0x4d() returned 0.
initcall 0xffffffff808d9d57 ran for 0 msecs: genhd_device_init+0x0/0x4d()
Calling initcall 0xffffffff808db72b: acpi_init+0x0/0x1cd()
ACPI: EC: Look up EC in DSDT
ACPI: Interpreter enabled
ACPI: (supports S0 S5)
ACPI: Using IOAPIC for interrupt routing
initcall 0xffffffff808db72b: acpi_init+0x0/0x1cd() returned 0.
initcall 0xffffffff808db72b ran for 19 msecs: acpi_init+0x0/0x1cd()
Calling initcall 0xffffffff808dbb48: acpi_scan_init+0x0/0x116()
initcall 0xffffffff808dbb48: acpi_scan_init+0x0/0x116() returned 0.
initcall 0xffffffff808dbb48 ran for 9 msecs: acpi_scan_init+0x0/0x116()
Calling initcall 0xffffffff808dbc5e: acpi_ec_init+0x0/0x61()
initcall 0xffffffff808dbc5e: acpi_ec_init+0x0/0x61() returned 0.
initcall 0xffffffff808dbc5e ran for 0 msecs: acpi_ec_init+0x0/0x61()
Calling initcall 0xffffffff808dbf31: acpi_pci_root_init+0x0/0x28()
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Transparent bridge - 0000:00:09.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
initcall 0xffffffff808dbf31: acpi_pci_root_init+0x0/0x28() returned 0.
initcall 0xffffffff808dbf31 ran for 76 msecs: acpi_pci_root_init+0x0/0x28()
Calling initcall 0xffffffff808dc0ab: acpi_pci_link_init+0x0/0x48()
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 *5 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUBA] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUBB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LMAC] (IRQs 3 4 5 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LACI] (IRQs *3 4 5 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LMCI] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LSMB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUB2] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LIDE] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LSID] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LFID] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LPCA] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [APC1] (IRQs 16) *0, disabled.
ACPI: PCI Interrupt Link [APC2] (IRQs 17) *0
ACPI: PCI Interrupt Link [APC3] (IRQs 18) *0
ACPI: PCI Interrupt Link [APC4] (IRQs 19) *0, disabled.
ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled.
ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22 23) *0
ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22 23) *0
ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCS] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSI] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSJ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCP] (IRQs 20 21 22 23) *0, disabled.
initcall 0xffffffff808dc0ab: acpi_pci_link_init+0x0/0x48() returned 0.
initcall 0xffffffff808dc0ab ran for 190 msecs: acpi_pci_link_init+0x0/0x48()
Calling initcall 0xffffffff808dc0f3: acpi_power_init+0x0/0x77()
initcall 0xffffffff808dc0f3: acpi_power_init+0x0/0x77() returned 0.
initcall 0xffffffff808dc0f3 ran for 0 msecs: acpi_power_init+0x0/0x77()
Calling initcall 0xffffffff808dc16a: acpi_system_init+0x0/0x268()
initcall 0xffffffff808dc16a: acpi_system_init+0x0/0x268() returned 0.
initcall 0xffffffff808dc16a ran for 0 msecs: acpi_system_init+0x0/0x268()
Calling initcall 0xffffffff808dc586: pnp_init+0x0/0x1f()
Linux Plug and Play Support v0.97 (c) Adam Belay
initcall 0xffffffff808dc586: pnp_init+0x0/0x1f() returned 0.
initcall 0xffffffff808dc586 ran for 9 msecs: pnp_init+0x0/0x1f()
Calling initcall 0xffffffff808dc74b: pnpacpi_init+0x0/0x8c()
pnp: PnP ACPI init
ACPI: bus type pnp registered
IOAPIC[0]: Set routing entry (2-8 -> 0x38 -> IRQ 8 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-13 -> 0x3d -> IRQ 13 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-6 -> 0x36 -> IRQ 6 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-4 -> 0x34 -> IRQ 4 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-7 -> 0x37 -> IRQ 7 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-12 -> 0x3c -> IRQ 12 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-1 -> 0x31 -> IRQ 1 Mode:0 Active:0)
IOAPIC[0]: Set routing entry (2-10 -> 0x3a -> IRQ 10 Mode:0 Active:0)
pnpacpi: exceeded the max number of mem resources: 12
pnpacpi: exceeded the max number of mem resources: 12
pnp: PnP ACPI: found 16 devices
ACPI: ACPI bus type pnp unregistered
initcall 0xffffffff808dc74b: pnpacpi_init+0x0/0x8c() returned 0.
initcall 0xffffffff808dc74b ran for 76 msecs: pnpacpi_init+0x0/0x8c()
Calling initcall 0xffffffff808dd096: misc_init+0x0/0x86()
initcall 0xffffffff808dd096: misc_init+0x0/0x86() returned 0.
initcall 0xffffffff808dd096 ran for 0 msecs: misc_init+0x0/0x86()
Calling initcall 0xffffffff808dff4d: tifm_init+0x0/0x6a()
initcall 0xffffffff808dff4d: tifm_init+0x0/0x6a() returned 0.
initcall 0xffffffff808dff4d ran for 0 msecs: tifm_init+0x0/0x6a()
Calling initcall 0xffffffff808e255f: init_scsi+0x0/0x87()
SCSI subsystem initialized
initcall 0xffffffff808e255f: init_scsi+0x0/0x87() returned 0.
initcall 0xffffffff808e255f ran for 0 msecs: init_scsi+0x0/0x87()
Calling initcall 0xffffffff808e2b02: ata_init+0x0/0x7c()
libata version 3.00 loaded.
initcall 0xffffffff808e2b02: ata_init+0x0/0x7c() returned 0.
initcall 0xffffffff808e2b02 ran for 0 msecs: ata_init+0x0/0x7c()
Calling initcall 0xffffffff808e311b: usb_init+0x0/0x115()
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
initcall 0xffffffff808e311b: usb_init+0x0/0x115() returned 0.
initcall 0xffffffff808e311b ran for 9 msecs: usb_init+0x0/0x115()
Calling initcall 0xffffffff808e42db: serio_init+0x0/0x8b()
initcall 0xffffffff808e42db: serio_init+0x0/0x8b() returned 0.
initcall 0xffffffff808e42db ran for 0 msecs: serio_init+0x0/0x8b()
Calling initcall 0xffffffff808e481a: gameport_init+0x0/0x8b()
initcall 0xffffffff808e481a: gameport_init+0x0/0x8b() returned 0.
initcall 0xffffffff808e481a ran for 0 msecs: gameport_init+0x0/0x8b()
Calling initcall 0xffffffff808e4bd3: input_init+0x0/0x116()
initcall 0xffffffff808e4bd3: input_init+0x0/0x116() returned 0.
initcall 0xffffffff808e4bd3 ran for 0 msecs: input_init+0x0/0x116()
Calling initcall 0xffffffff808e4f9e: i2c_init+0x0/0x24()
initcall 0xffffffff808e4f9e: i2c_init+0x0/0x24() returned 0.
initcall 0xffffffff808e4f9e ran for 0 msecs: i2c_init+0x0/0x24()
Calling initcall 0xffffffff808e50de: power_supply_class_init+0x0/0x34()
initcall 0xffffffff808e50de: power_supply_class_init+0x0/0x34() returned 0.
initcall 0xffffffff808e50de ran for 0 msecs: power_supply_class_init+0x0/0x34()
Calling initcall 0xffffffff808e7665: pci_acpi_init+0x0/0xa4()
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
number of MP IRQ sources: 16.
number of IO-APIC #2 registers: 24.
testing the IO APIC.......................
IO APIC #2......
.... register #00: 00000000
....... : physical APIC id: 00
.... register #01: 00170011
....... : max redirection entries: 0017
....... : PRQ implemented: 0
....... : IO APIC version: 0011
.... register #02: 00000000
....... : arbitration: 00
.... IRQ redirection table:
NR Dst Mask Trig IRR Pol Stat Dmod Deli Vect:
00 001 0 0 0 0 0 1 1 30
01 001 0 0 0 0 0 1 1 31
02 001 0 0 0 0 0 1 1 32
03 001 1 0 0 0 0 1 1 33
04 001 0 0 0 0 0 1 1 34
05 001 1 0 0 0 0 1 1 35
06 001 0 0 0 0 0 1 1 36
07 001 0 0 0 0 0 1 1 37
08 001 0 0 0 0 0 1 1 38
09 001 0 1 0 0 0 1 1 39
0a 001 0 0 0 0 0 1 1 3A
0b 001 1 0 0 0 0 1 1 3B
0c 001 0 0 0 0 0 1 1 3C
0d 001 0 0 0 0 0 1 1 3D
0e 001 0 0 0 0 0 1 1 3E
0f 001 0 0 0 0 0 1 1 3F
10 000 1 0 0 0 0 0 0 00
11 000 1 0 0 0 0 0 0 00
12 000 1 0 0 0 0 0 0 00
13 000 1 0 0 0 0 0 0 00
14 000 1 0 0 0 0 0 0 00
15 000 1 0 0 0 0 0 0 00
16 000 1 0 0 0 0 0 0 00
17 000 1 0 0 0 0 0 0 00
IRQ to pin mappings:
IRQ0 -> 0:0
IRQ1 -> 0:1
IRQ2 -> 0:2
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ5 -> 0:5
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ9 -> 0:9
IRQ10 -> 0:10
IRQ11 -> 0:11
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
.................................... done.
initcall 0xffffffff808e7665: pci_acpi_init+0x0/0xa4() returned 0.
initcall 0xffffffff808e7665 ran for 162 msecs: pci_acpi_init+0x0/0xa4()
Calling initcall 0xffffffff808e7709: pci_legacy_init+0x0/0xfe()
initcall 0xffffffff808e7709: pci_legacy_init+0x0/0xfe() returned 0.
initcall 0xffffffff808e7709 ran for 0 msecs: pci_legacy_init+0x0/0xfe()
Calling initcall 0xffffffff808e7bfc: pcibios_irq_init+0x0/0x491()
initcall 0xffffffff808e7bfc: pcibios_irq_init+0x0/0x491() returned 0.
initcall 0xffffffff808e7bfc ran for 0 msecs: pcibios_irq_init+0x0/0x491()
Calling initcall 0xffffffff808e808d: pcibios_init+0x0/0x6d()
initcall 0xffffffff808e808d: pcibios_init+0x0/0x6d() returned 0.
initcall 0xffffffff808e808d ran for 0 msecs: pcibios_init+0x0/0x6d()
Calling initcall 0xffffffff808e81ad: proto_init+0x0/0x2e()
initcall 0xffffffff808e81ad: proto_init+0x0/0x2e() returned 0.
initcall 0xffffffff808e81ad ran for 0 msecs: proto_init+0x0/0x2e()
Calling initcall 0xffffffff808e84d3: net_dev_init+0x0/0x127()
initcall 0xffffffff808e84d3: net_dev_init+0x0/0x127() returned 0.
initcall 0xffffffff808e84d3 ran for 0 msecs: net_dev_init+0x0/0x127()
Calling initcall 0xffffffff808e8636: neigh_init+0x0/0x71()
initcall 0xffffffff808e8636: neigh_init+0x0/0x71() returned 0.
initcall 0xffffffff808e8636 ran for 0 msecs: neigh_init+0x0/0x71()
Calling initcall 0xffffffff808e88f1: fib_rules_init+0x0/0x50()
initcall 0xffffffff808e88f1: fib_rules_init+0x0/0x50() returned 0.
initcall 0xffffffff808e88f1 ran for 0 msecs: fib_rules_init+0x0/0x50()
Calling initcall 0xffffffff808e89e9: pktsched_init+0x0/0xc4()
initcall 0xffffffff808e89e9: pktsched_init+0x0/0xc4() returned 0.
initcall 0xffffffff808e89e9 ran for 0 msecs: pktsched_init+0x0/0xc4()
Calling initcall 0xffffffff808e8ab9: tc_filter_init+0x0/0x4c()
initcall 0xffffffff808e8ab9: tc_filter_init+0x0/0x4c() returned 0.
initcall 0xffffffff808e8ab9 ran for 0 msecs: tc_filter_init+0x0/0x4c()
Calling initcall 0xffffffff808e8b05: tc_action_init+0x0/0x4c()
initcall 0xffffffff808e8b05: tc_action_init+0x0/0x4c() returned 0.
initcall 0xffffffff808e8b05 ran for 0 msecs: tc_action_init+0x0/0x4c()
Calling initcall 0xffffffff808e8dbb: genl_init+0x0/0xca()
initcall 0xffffffff808e8dbb: genl_init+0x0/0xca() returned 0.
initcall 0xffffffff808e8dbb ran for 38 msecs: genl_init+0x0/0xca()
Calling initcall 0xffffffff808eae63: cipso_v4_init+0x0/0x5d()
initcall 0xffffffff808eae63: cipso_v4_init+0x0/0x5d() returned 0.
initcall 0xffffffff808eae63 ran for 0 msecs: cipso_v4_init+0x0/0x5d()
Calling initcall 0xffffffff808ec2c6: wanrouter_init+0x0/0x4b()
Sangoma WANPIPE Router v1.1 (c) 1995-2000 Sangoma Technologies Inc.
initcall 0xffffffff808ec2c6: wanrouter_init+0x0/0x4b() returned 0.
initcall 0xffffffff808ec2c6 ran for 9 msecs: wanrouter_init+0x0/0x4b()
Calling initcall 0xffffffff808ec6dc: irda_init+0x0/0x9d()
irda_init()
NET: Registered protocol family 23
initcall 0xffffffff808ec6dc: irda_init+0x0/0x9d() returned 0.
initcall 0xffffffff808ec6dc ran for 9 msecs: irda_init+0x0/0x9d()
Calling initcall 0xffffffff808ecc28: atm_init+0x0/0xaa()
NET: Registered protocol family 8
NET: Registered protocol family 20
initcall 0xffffffff808ecc28: atm_init+0x0/0xaa() returned 0.
initcall 0xffffffff808ecc28 ran for 9 msecs: atm_init+0x0/0xaa()
Calling initcall 0xffffffff808ed6a9: wireless_nlevent_init+0x0/0x22()
initcall 0xffffffff808ed6a9: wireless_nlevent_init+0x0/0x22() returned 0.
initcall 0xffffffff808ed6a9 ran for 0 msecs: wireless_nlevent_init+0x0/0x22()
Calling initcall 0xffffffff808ed6fb: netlbl_init+0x0/0x75()
NetLabel: Initializing
NetLabel: domain hash size = 128
NetLabel: protocols = UNLABELED CIPSOv4
NetLabel: unlabeled traffic allowed by default
initcall 0xffffffff808ed6fb: netlbl_init+0x0/0x75() returned 0.
initcall 0xffffffff808ed6fb ran for 9 msecs: netlbl_init+0x0/0x75()
Calling initcall 0xffffffff808cd41e: pci_iommu_init+0x0/0x13()
initcall 0xffffffff808cd41e: pci_iommu_init+0x0/0x13() returned 0.
initcall 0xffffffff808cd41e ran for 0 msecs: pci_iommu_init+0x0/0x13()
Calling initcall 0xffffffff808d2ed1: hpet_late_init+0x0/0x4d()
initcall 0xffffffff808d2ed1: hpet_late_init+0x0/0x4d() returned -19.
initcall 0xffffffff808d2ed1 ran for 0 msecs: hpet_late_init+0x0/0x4d()
Calling initcall 0xffffffff808d5ae0: clocksource_done_booting+0x0/0xd()
initcall 0xffffffff808d5ae0<6>Time: tsc clocksource has been installed.
: clocksource_done_booting+0x0/0xd() returned 0.
initcall 0xffffffff808d5ae0 ran for 0 msecs: clocksource_done_booting+0x0/0xd()
Calling initcall 0xffffffff808d7dba: init_pipe_fs+0x0/0x42()
initcall 0xffffffff808d7dba: init_pipe_fs+0x0/0x42() returned 0.
initcall 0xffffffff808d7dba ran for 0 msecs: init_pipe_fs+0x0/0x42()
Calling initcall 0xffffffff808d8578: eventpoll_init+0x0/0x7b()
initcall 0xffffffff808d8578: eventpoll_init+0x0/0x7b() returned 0.
initcall 0xffffffff808d8578 ran for 0 msecs: eventpoll_init+0x0/0x7b()
Calling initcall 0xffffffff808d85f3: anon_inode_init+0x0/0x10b()
initcall 0xffffffff808d85f3: anon_inode_init+0x0/0x10b() returned 0.
initcall 0xffffffff808d85f3 ran for 0 msecs: anon_inode_init+0x0/0x10b()
Calling initcall 0xffffffff808dba81: acpi_rtc_init+0x0/0xc7()
ACPI: RTC can wake from S4
initcall 0xffffffff808dba81: acpi_rtc_init+0x0/0xc7() returned 0.
initcall 0xffffffff808dba81 ran for 2 msecs: acpi_rtc_init+0x0/0xc7()
Calling initcall 0xffffffff808dc3d2: acpi_event_init+0x0/0x80()
initcall 0xffffffff808dc3d2: acpi_event_init+0x0/0x80() returned 0.
initcall 0xffffffff808dc3d2 ran for 33 msecs: acpi_event_init+0x0/0x80()
Calling initcall 0xffffffff808dc681: pnp_system_init+0x0/0xc()
system 00:01: ioport range 0x4000-0x407f has been reserved
system 00:01: ioport range 0x4080-0x40ff has been reserved
system 00:01: ioport range 0x4400-0x447f has been reserved
system 00:01: ioport range 0x4480-0x44ff has been reserved
system 00:01: ioport range 0x4800-0x487f has been reserved
system 00:01: ioport range 0x4880-0x48ff has been reserved
system 00:02: ioport range 0x4d0-0x4d1 has been reserved
system 00:02: ioport range 0x800-0x805 has been reserved
system 00:02: ioport range 0x290-0x297 has been reserved
system 00:0e: iomem range 0xe0000000-0xefffffff could not be reserved
system 00:0f: iomem range 0xf0000-0xf3fff could not be reserved
system 00:0f: iomem range 0xf4000-0xf7fff could not be reserved
system 00:0f: iomem range 0xf8000-0xfbfff could not be reserved
system 00:0f: iomem range 0xfc000-0xfffff could not be reserved
system 00:0f: iomem range 0x3fff0000-0x3fffffff could not be reserved
system 00:0f: iomem range 0xffff0000-0xffffffff has been reserved
system 00:0f: iomem range 0x0-0x9ffff could not be reserved
system 00:0f: iomem range 0x100000-0x3ffeffff could not be reserved
system 00:0f: iomem range 0xfec00000-0xfec00fff has been reserved
system 00:0f: iomem range 0xfee00000-0xfeefffff could not be reserved
system 00:0f: iomem range 0xfefff000-0xfeffffff has been reserved
system 00:0f: iomem range 0xfff80000-0xfff80fff has been reserved
initcall 0xffffffff808dc681: pnp_system_init+0x0/0xc() returned 0.
initcall 0xffffffff808dc681 ran for 116 msecs: pnp_system_init+0x0/0xc()
Calling initcall 0xffffffff808dcb26: chr_dev_init+0x0/0x9a()
initcall 0xffffffff808dcb26: chr_dev_init+0x0/0x9a() returned 0.
initcall 0xffffffff808dcb26 ran for 0 msecs: chr_dev_init+0x0/0x9a()
Calling initcall 0xffffffff808dfe26: firmware_class_init+0x0/0x68()
initcall 0xffffffff808dfe26: firmware_class_init+0x0/0x68() returned 0.
initcall 0xffffffff808dfe26 ran for 0 msecs: firmware_class_init+0x0/0x68()
Calling initcall 0xffffffff808e05fb: loopback_init+0x0/0xc()
initcall 0xffffffff808e05fb: loopback_init+0x0/0xc() returned 0.
initcall 0xffffffff808e05fb ran for 0 msecs: loopback_init+0x0/0xc()
Calling initcall 0xffffffff808e5eae: cpufreq_gov_performance_init+0x0/0xc()
initcall 0xffffffff808e5eae: cpufreq_gov_performance_init+0x0/0xc() returned 0.
initcall 0xffffffff808e5eae ran for 0 msecs: cpufreq_gov_performance_init+0x0/0xc()
Calling initcall 0xffffffff808e7074: init_acpi_pm_clocksource+0x0/0xa5()
initcall 0xffffffff808e7074: init_acpi_pm_clocksource+0x0/0xa5() returned 0.
initcall 0xffffffff808e7074 ran for 0 msecs: init_acpi_pm_clocksource+0x0/0xa5()
Calling initcall 0xffffffff808e7119: pcibios_assign_resources+0x0/0x86()
PCI: Bridge: 0000:00:09.0
IO window: c000-cfff
MEM window: da000000-da0fffff
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0b.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0c.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0d.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0e.0
IO window: b000-bfff
MEM window: d8000000-d9ffffff
PREFETCH window: d0000000-d7ffffff
PCI: Setting latency timer of device 0000:00:09.0 to 64
PCI: Setting latency timer of device 0000:00:0b.0 to 64
PCI: Setting latency timer of device 0000:00:0c.0 to 64
PCI: Setting latency timer of device 0000:00:0d.0 to 64
PCI: Setting latency timer of device 0000:00:0e.0 to 64
initcall 0xffffffff808e7119: pcibios_assign_resources+0x0/0x86() returned 0.
initcall 0xffffffff808e7119 ran for 69 msecs: pcibios_assign_resources+0x0/0x86()
Calling initcall 0xffffffff808ea1d3: inet_init+0x0/0x326()
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 6, 262144 bytes)
TCP established hash table entries: 131072 (order: 9, 2097152 bytes)
TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
initcall 0xffffffff808ea1d3: inet_init+0x0/0x326() returned 0.
initcall 0xffffffff808ea1d3 ran for 145 msecs: inet_init+0x0/0x326()
Calling initcall 0xffffffff808cc029: populate_rootfs+0x0/0xa6()
initcall 0xffffffff808cc029: populate_rootfs+0x0/0xa6() returned 0.
initcall 0xffffffff808cc029 ran for 0 msecs: populate_rootfs+0x0/0xa6()
Calling initcall 0xffffffff808ccd86: i8259A_init_sysfs+0x0/0x23()
initcall 0xffffffff808ccd86: i8259A_init_sysfs+0x0/0x23() returned 0.
initcall 0xffffffff808ccd86 ran for 0 msecs: i8259A_init_sysfs+0x0/0x23()
Calling initcall 0xffffffff808ccfe2: vsyscall_init+0x0/0x9b()
initcall 0xffffffff808ccfe2: vsyscall_init+0x0/0x9b() returned 0.
initcall 0xffffffff808ccfe2 ran for 0 msecs: vsyscall_init+0x0/0x9b()
Calling initcall 0xffffffff808cd45b: sbf_init+0x0/0x108()
initcall 0xffffffff808cd45b: sbf_init+0x0/0x108() returned 0.
initcall 0xffffffff808cd45b ran for 0 msecs: sbf_init+0x0/0x108()
Calling initcall 0xffffffff808ce08b: i8237A_init_sysfs+0x0/0x23()
initcall 0xffffffff808ce08b: i8237A_init_sysfs+0x0/0x23() returned 0.
initcall 0xffffffff808ce08b ran for 0 msecs: i8237A_init_sysfs+0x0/0x23()
Calling initcall 0xffffffff8021474f: cache_sysfs_init+0x0/0x242()
initcall 0xffffffff8021474f: cache_sysfs_init+0x0/0x242() returned 0.
initcall 0xffffffff8021474f ran for 0 msecs: cache_sysfs_init+0x0/0x242()
Calling initcall 0xffffffff808ce667: mce_init_device+0x0/0x104()
initcall 0xffffffff808ce667: mce_init_device+0x0/0x104() returned 0.
initcall 0xffffffff808ce667 ran for 0 msecs: mce_init_device+0x0/0x104()
Calling initcall 0xffffffff808ce593: periodic_mcheck_init+0x0/0x3c()
initcall 0xffffffff808ce593: periodic_mcheck_init+0x0/0x3c() returned 0.
initcall 0xffffffff808ce593 ran for 0 msecs: periodic_mcheck_init+0x0/0x3c()
Calling initcall 0xffffffff808ce76b: thermal_throttle_init_device+0x0/0x41()
initcall 0xffffffff808ce76b: thermal_throttle_init_device+0x0/0x41() returned 0.
initcall 0xffffffff808ce76b ran for 0 msecs: thermal_throttle_init_device+0x0/0x41()
Calling initcall 0xffffffff808cf78c: msr_init+0x0/0xaf()
initcall 0xffffffff808cf78c: msr_init+0x0/0xaf() returned 0.
initcall 0xffffffff808cf78c ran for 0 msecs: msr_init+0x0/0xaf()
Calling initcall 0xffffffff808d0813: init_lapic_sysfs+0x0/0x2e()
initcall 0xffffffff808d0813: init_lapic_sysfs+0x0/0x2e() returned 0.
initcall 0xffffffff808d0813 ran for 0 msecs: init_lapic_sysfs+0x0/0x2e()
Calling initcall 0xffffffff808d1104: ioapic_init_sysfs+0x0/0x96()
initcall 0xffffffff808d1104: ioapic_init_sysfs+0x0/0x96() returned 0.
initcall 0xffffffff808d1104 ran for 0 msecs: ioapic_init_sysfs+0x0/0x96()
Calling initcall 0xffffffff808d2f4b: add_pcspkr+0x0/0x3e()
initcall 0xffffffff808d2f4b: add_pcspkr+0x0/0x3e() returned 0.
initcall 0xffffffff808d2f4b ran for 0 msecs: add_pcspkr+0x0/0x3e()
Calling initcall 0xffffffff808d3000: audit_classes_init+0x0/0xaf()
initcall 0xffffffff808d3000: audit_classes_init+0x0/0xaf() returned 0.
initcall 0xffffffff808d3000 ran for 0 msecs: audit_classes_init+0x0/0xaf()
Calling initcall 0xffffffff808d42c8: init+0x0/0xc()
initcall 0xffffffff808d42c8: init+0x0/0xc() returned 0.
initcall 0xffffffff808d42c8 ran for 0 msecs: init+0x0/0xc()
Calling initcall 0xffffffff808d42eb: init_vdso_vars+0x0/0x221()
initcall 0xffffffff808d42eb: init_vdso_vars+0x0/0x221() returned 0.
initcall 0xffffffff808d42eb ran for 0 msecs: init_vdso_vars+0x0/0x221()
Calling initcall 0xffffffff808d4526: ia32_binfmt_init+0x0/0x14()
initcall 0xffffffff808d4526: ia32_binfmt_init+0x0/0x14() returned 0.
initcall 0xffffffff808d4526 ran for 0 msecs: ia32_binfmt_init+0x0/0x14()
Calling initcall 0xffffffff808d453a: sysenter_setup+0x0/0x2ac()
initcall 0xffffffff808d453a: sysenter_setup+0x0/0x2ac() returned 0.
initcall 0xffffffff808d453a ran for 0 msecs: sysenter_setup+0x0/0x2ac()
Calling initcall 0xffffffff808d4fa9: create_proc_profile+0x0/0x46()
initcall 0xffffffff808d4fa9: create_proc_profile+0x0/0x46() returned 0.
initcall 0xffffffff808d4fa9 ran for 0 msecs: create_proc_profile+0x0/0x46()
Calling initcall 0xffffffff808d50b0: ioresources_init+0x0/0x42()
initcall 0xffffffff808d50b0: ioresources_init+0x0/0x42() returned 0.
initcall 0xffffffff808d50b0 ran for 0 msecs: ioresources_init+0x0/0x42()
Calling initcall 0xffffffff808d5237: uid_cache_init+0x0/0x8d()
initcall 0xffffffff808d5237: uid_cache_init+0x0/0x8d() returned 0.
initcall 0xffffffff808d5237 ran for 0 msecs: uid_cache_init+0x0/0x8d()
Calling initcall 0xffffffff808d580f: init_posix_timers+0x0/0xa6()
initcall 0xffffffff808d580f: init_posix_timers+0x0/0xa6() returned 0.
initcall 0xffffffff808d580f ran for 0 msecs: init_posix_timers+0x0/0xa6()
Calling initcall 0xffffffff808d58b5: init_posix_cpu_timers+0x0/0xc6()
initcall 0xffffffff808d58b5: init_posix_cpu_timers+0x0/0xc6() returned 0.
initcall 0xffffffff808d58b5 ran for 0 msecs: init_posix_cpu_timers+0x0/0xc6()
Calling initcall 0xffffffff808d598e: latency_init+0x0/0x23()
initcall 0xffffffff808d598e: latency_init+0x0/0x23() returned 0.
initcall 0xffffffff808d598e ran for 0 msecs: latency_init+0x0/0x23()
Calling initcall 0xffffffff808d59b1: nsproxy_cache_init+0x0/0x2d()
initcall 0xffffffff808d59b1: nsproxy_cache_init+0x0/0x2d() returned 0.
initcall 0xffffffff808d59b1 ran for 0 msecs: nsproxy_cache_init+0x0/0x2d()
Calling initcall 0xffffffff808d59de: timekeeping_init_device+0x0/0x23()
initcall 0xffffffff808d59de: timekeeping_init_device+0x0/0x23() returned 0.
initcall 0xffffffff808d59de ran for 0 msecs: timekeeping_init_device+0x0/0x23()
Calling initcall 0xffffffff808d5aed: init_clocksource_sysfs+0x0/0x51()
initcall 0xffffffff808d5aed: init_clocksource_sysfs+0x0/0x51() returned 0.
initcall 0xffffffff808d5aed ran for 0 msecs: init_clocksource_sysfs+0x0/0x51()
Calling initcall 0xffffffff808d5be5: init_timer_list_procfs+0x0/0x2f()
initcall 0xffffffff808d5be5: init_timer_list_procfs+0x0/0x2f() returned 0.
initcall 0xffffffff808d5be5 ran for 0 msecs: init_timer_list_procfs+0x0/0x2f()
Calling initcall 0xffffffff808d5c20: init+0x0/0x8b()
initcall 0xffffffff808d5c20: init+0x0/0x8b() returned 0.
initcall 0xffffffff808d5c20 ran for 0 msecs: init+0x0/0x8b()
Calling initcall 0xffffffff808d5cab: proc_dma_init+0x0/0x25()
initcall 0xffffffff808d5cab: proc_dma_init+0x0/0x25() returned 0.
initcall 0xffffffff808d5cab ran for 0 msecs: proc_dma_init+0x0/0x25()
Calling initcall 0xffffffff808d5cd0: kallsyms_init+0x0/0x28()
initcall 0xffffffff808d5cd0: kallsyms_init+0x0/0x28() returned 0.
initcall 0xffffffff808d5cd0 ran for 0 msecs: kallsyms_init+0x0/0x28()
Calling initcall 0xffffffff808d5f36: ikconfig_init+0x0/0x3c()
initcall 0xffffffff808d5f36: ikconfig_init+0x0/0x3c() returned 0.
initcall 0xffffffff808d5f36 ran for 0 msecs: ikconfig_init+0x0/0x3c()
Calling initcall 0xffffffff808d5fe4: audit_init+0x0/0xfb()
audit: initializing netlink socket (disabled)
audit(1199838294.750:1): initialized
audit: cannot initialize inotify handle
initcall 0xffffffff808d5fe4: audit_init+0x0/0xfb() returned 0.
initcall 0xffffffff808d5fe4 ran for 10 msecs: audit_init+0x0/0xfb()
Calling initcall 0xffffffff808d621c: utsname_sysctl_init+0x0/0x14()
initcall 0xffffffff808d621c: utsname_sysctl_init+0x0/0x14() returned 0.
initcall 0xffffffff808d621c ran for 0 msecs: utsname_sysctl_init+0x0/0x14()
Calling initcall 0xffffffff808d6e1b: init_per_zone_pages_min+0x0/0x42()
initcall 0xffffffff808d6e1b: init_per_zone_pages_min+0x0/0x42() returned 0.
initcall 0xffffffff808d6e1b ran for 0 msecs: init_per_zone_pages_min+0x0/0x42()
Calling initcall 0xffffffff808d75ae: pdflush_init+0x0/0x13()
initcall 0xffffffff808d75ae: pdflush_init+0x0/0x13() returned 0.
initcall 0xffffffff808d75ae ran for 0 msecs: pdflush_init+0x0/0x13()
Calling initcall 0xffffffff808d75e8: kswapd_init+0x0/0x14()
initcall 0xffffffff808d75e8: kswapd_init+0x0/0x14() returned 0.
initcall 0xffffffff808d75e8 ran for 0 msecs: kswapd_init+0x0/0x14()
Calling initcall 0xffffffff808d7639: hugetlb_init+0x0/0x8d()
Total HugeTLB memory allocated, 0
initcall 0xffffffff808d7639: hugetlb_init+0x0/0x8d() returned 0.
initcall 0xffffffff808d7639 ran for 2 msecs: hugetlb_init+0x0/0x8d()
Calling initcall 0xffffffff808d794c: init_tmpfs+0x0/0xd5()
initcall 0xffffffff808d794c: init_tmpfs+0x0/0xd5() returned 0.
initcall 0xffffffff808d794c ran for 0 msecs: init_tmpfs+0x0/0xd5()
Calling initcall 0xffffffff808d7b70: slab_sysfs_init+0x0/0xc4()
initcall 0xffffffff808d7b70: slab_sysfs_init+0x0/0xc4() returned 0.
initcall 0xffffffff808d7b70 ran for 1 msecs: slab_sysfs_init+0x0/0xc4()
Calling initcall 0xffffffff808d7dfc: fasync_init+0x0/0x2a()
initcall 0xffffffff808d7dfc: fasync_init+0x0/0x2a() returned 0.
initcall 0xffffffff808d7dfc ran for 0 msecs: fasync_init+0x0/0x2a()
Calling initcall 0xffffffff808d838f: aio_setup+0x0/0x6b()
initcall 0xffffffff808d838f: aio_setup+0x0/0x6b() returned 0.
initcall 0xffffffff808d838f ran for 0 msecs: aio_setup+0x0/0x6b()
Calling initcall 0xffffffff808d86fe: init_sys32_ioctl+0x0/0x85()
initcall 0xffffffff808d86fe: init_sys32_ioctl+0x0/0x85() returned 0.
initcall 0xffffffff808d86fe ran for 0 msecs: init_sys32_ioctl+0x0/0x85()
Calling initcall 0xffffffff808d87a7: init_mbcache+0x0/0x14()
initcall 0xffffffff808d87a7: init_mbcache+0x0/0x14() returned 0.
initcall 0xffffffff808d87a7 ran for 0 msecs: init_mbcache+0x0/0x14()
Calling initcall 0xffffffff808d87bb: dnotify_init+0x0/0x2a()
initcall 0xffffffff808d87bb: dnotify_init+0x0/0x2a() returned 0.
initcall 0xffffffff808d87bb ran for 0 msecs: dnotify_init+0x0/0x2a()
Calling initcall 0xffffffff808d8cea: configfs_init+0x0/0xa7()
initcall 0xffffffff808d8cea: configfs_init+0x0/0xa7() returned 0.
initcall 0xffffffff808d8cea ran for 0 msecs: configfs_init+0x0/0xa7()
Calling initcall 0xffffffff808d8d91: init_devpts_fs+0x0/0x35()
initcall 0xffffffff808d8d91: init_devpts_fs+0x0/0x35() returned 0.
initcall 0xffffffff808d8d91 ran for 0 msecs: init_devpts_fs+0x0/0x35()
Calling initcall 0xffffffff808d8dc6: init_dlm+0x0/0x6e()
DLM (built Jan 9 2008 00:22:03) installed
initcall 0xffffffff808d8dc6: init_dlm+0x0/0x6e() returned 0.
initcall 0xffffffff808d8dc6 ran for 3 msecs: init_dlm+0x0/0x6e()
Calling initcall 0xffffffff808d8e34: init_reiserfs_fs+0x0/0x8b()
initcall 0xffffffff808d8e34: init_reiserfs_fs+0x0/0x8b() returned 0.
initcall 0xffffffff808d8e34 ran for 0 msecs: init_reiserfs_fs+0x0/0x8b()
Calling initcall 0xffffffff808d8fcd: init_ext3_fs+0x0/0x60()
initcall 0xffffffff808d8fcd: init_ext3_fs+0x0/0x60() returned 0.
initcall 0xffffffff808d8fcd ran for 0 msecs: init_ext3_fs+0x0/0x60()
Calling initcall 0xffffffff808d90da: journal_init+0x0/0x89()
initcall 0xffffffff808d90da: journal_init+0x0/0x89() returned 0.
initcall 0xffffffff808d90da ran for 0 msecs: journal_init+0x0/0x89()
Calling initcall 0xffffffff808d9163: init_ramfs_fs+0x0/0xc()
initcall 0xffffffff808d9163: init_ramfs_fs+0x0/0xc() returned 0.
initcall 0xffffffff808d9163 ran for 0 msecs: init_ramfs_fs+0x0/0xc()
Calling initcall 0xffffffff808d91a4: init_hugetlbfs_fs+0x0/0x8e()
initcall 0xffffffff808d91a4: init_hugetlbfs_fs+0x0/0x8e() returned 0.
initcall 0xffffffff808d91a4 ran for 0 msecs: init_hugetlbfs_fs+0x0/0x8e()
Calling initcall 0xffffffff808d9267: init_fat_fs+0x0/0x45()
initcall 0xffffffff808d9267: init_fat_fs+0x0/0x45() returned 0.
initcall 0xffffffff808d9267 ran for 0 msecs: init_fat_fs+0x0/0x45()
Calling initcall 0xffffffff808d92ac: init_vfat_fs+0x0/0xc()
initcall 0xffffffff808d92ac: init_vfat_fs+0x0/0xc() returned 0.
initcall 0xffffffff808d92ac ran for 0 msecs: init_vfat_fs+0x0/0xc()
Calling initcall 0xffffffff808d92b8: init_bfs_fs+0x0/0x50()
initcall 0xffffffff808d92b8: init_bfs_fs+0x0/0x50() returned 0.
initcall 0xffffffff808d92b8 ran for 0 msecs: init_bfs_fs+0x0/0x50()
Calling initcall 0xffffffff808d9308: init_nls_cp737+0x0/0xc()
initcall 0xffffffff808d9308: init_nls_cp737+0x0/0xc() returned 0.
initcall 0xffffffff808d9308 ran for 0 msecs: init_nls_cp737+0x0/0xc()
Calling initcall 0xffffffff808d9314: init_nls_cp860+0x0/0xc()
initcall 0xffffffff808d9314: init_nls_cp860+0x0/0xc() returned 0.
initcall 0xffffffff808d9314 ran for 0 msecs: init_nls_cp860+0x0/0xc()
Calling initcall 0xffffffff808d9320: init_nls_cp861+0x0/0xc()
initcall 0xffffffff808d9320: init_nls_cp861+0x0/0xc() returned 0.
initcall 0xffffffff808d9320 ran for 0 msecs: init_nls_cp861+0x0/0xc()
Calling initcall 0xffffffff808d932c: init_nls_cp862+0x0/0xc()
initcall 0xffffffff808d932c: init_nls_cp862+0x0/0xc() returned 0.
initcall 0xffffffff808d932c ran for 0 msecs: init_nls_cp862+0x0/0xc()
Calling initcall 0xffffffff808d9338: init_nls_cp863+0x0/0xc()
initcall 0xffffffff808d9338: init_nls_cp863+0x0/0xc() returned 0.
initcall 0xffffffff808d9338 ran for 0 msecs: init_nls_cp863+0x0/0xc()
Calling initcall 0xffffffff808d9344: init_nls_cp866+0x0/0xc()
initcall 0xffffffff808d9344: init_nls_cp866+0x0/0xc() returned 0.
initcall 0xffffffff808d9344 ran for 0 msecs: init_nls_cp866+0x0/0xc()
Calling initcall 0xffffffff808d9350: init_nls_cp936+0x0/0xc()
initcall 0xffffffff808d9350: init_nls_cp936+0x0/0xc() returned 0.
initcall 0xffffffff808d9350 ran for 0 msecs: init_nls_cp936+0x0/0xc()
Calling initcall 0xffffffff808d935c: init_nls_cp950+0x0/0xc()
initcall 0xffffffff808d935c: init_nls_cp950+0x0/0xc() returned 0.
initcall 0xffffffff808d935c ran for 0 msecs: init_nls_cp950+0x0/0xc()
Calling initcall 0xffffffff808d9368: init_nls_cp1251+0x0/0xc()
initcall 0xffffffff808d9368: init_nls_cp1251+0x0/0xc() returned 0.
initcall 0xffffffff808d9368 ran for 0 msecs: init_nls_cp1251+0x0/0xc()
Calling initcall 0xffffffff808d9374: init_nls_iso8859_1+0x0/0xc()
initcall 0xffffffff808d9374: init_nls_iso8859_1+0x0/0xc() returned 0.
initcall 0xffffffff808d9374 ran for 0 msecs: init_nls_iso8859_1+0x0/0xc()
Calling initcall 0xffffffff808d9380: init_nls_iso8859_2+0x0/0xc()
initcall 0xffffffff808d9380: init_nls_iso8859_2+0x0/0xc() returned 0.
initcall 0xffffffff808d9380 ran for 0 msecs: init_nls_iso8859_2+0x0/0xc()
Calling initcall 0xffffffff808d938c: init_nls_cp1255+0x0/0xc()
initcall 0xffffffff808d938c: init_nls_cp1255+0x0/0xc() returned 0.
initcall 0xffffffff808d938c ran for 0 msecs: init_nls_cp1255+0x0/0xc()
Calling initcall 0xffffffff808d9398: init_nls_iso8859_14+0x0/0xc()
initcall 0xffffffff808d9398: init_nls_iso8859_14+0x0/0xc() returned 0.
initcall 0xffffffff808d9398 ran for 0 msecs: init_nls_iso8859_14+0x0/0xc()
Calling initcall 0xffffffff808d93a4: init_ufs_fs+0x0/0x50()
initcall 0xffffffff808d93a4: init_ufs_fs+0x0/0x50() returned 0.
initcall 0xffffffff808d93a4 ran for 0 msecs: init_ufs_fs+0x0/0x50()
Calling initcall 0xffffffff808d93f4: init_autofs_fs+0x0/0xc()
initcall 0xffffffff808d93f4: init_autofs_fs+0x0/0xc() returned 0.
initcall 0xffffffff808d93f4 ran for 0 msecs: init_autofs_fs+0x0/0xc()
Calling initcall 0xffffffff808d9400: init_befs_fs+0x0/0x71()
BeFS version: 0.9.3
initcall 0xffffffff808d9400: init_befs_fs+0x0/0x71() returned 0.
initcall 0xffffffff808d9400 ran for 1 msecs: init_befs_fs+0x0/0x71()
Calling initcall 0xffffffff808d954d: init_gfs2_fs+0x0/0x135()
GFS2 (built Jan 9 2008 00:22:04) installed
initcall 0xffffffff808d954d: init_gfs2_fs+0x0/0x135() returned 0.
initcall 0xffffffff808d954d ran for 4 msecs: init_gfs2_fs+0x0/0x135()
Calling initcall 0xffffffff808d9682: init_lock_dlm+0x0/0x6e()
Lock_DLM (built Jan 9 2008 00:22:07) installed
initcall 0xffffffff808d9682: init_lock_dlm+0x0/0x6e() returned 0.
initcall 0xffffffff808d9682 ran for 4 msecs: init_lock_dlm+0x0/0x6e()
Calling initcall 0xffffffff808d96f0: ipc_init+0x0/0x17()
initcall 0xffffffff808d96f0: ipc_init+0x0/0x17() returned 0.
initcall 0xffffffff808d96f0 ran for 0 msecs: ipc_init+0x0/0x17()
Calling initcall 0xffffffff808d9822: ipc_sysctl_init+0x0/0x14()
initcall 0xffffffff808d9822: ipc_sysctl_init+0x0/0x14() returned 0.
initcall 0xffffffff808d9822 ran for 0 msecs: ipc_sysctl_init+0x0/0x14()
Calling initcall 0xffffffff808d9989: key_proc_init+0x0/0x55()
initcall 0xffffffff808d9989: key_proc_init+0x0/0x55() returned 0.
initcall 0xffffffff808d9989 ran for 0 msecs: key_proc_init+0x0/0x55()
Calling initcall 0xffffffff808d9aee: crypto_algapi_init+0x0/0xd()
initcall 0xffffffff808d9aee: crypto_algapi_init+0x0/0xd() returned 0.
initcall 0xffffffff808d9aee ran for 0 msecs: crypto_algapi_init+0x0/0xd()
Calling initcall 0xffffffff808d9b1e: cryptomgr_init+0x0/0xc()
initcall 0xffffffff808d9b1e: cryptomgr_init+0x0/0xc() returned 0.
initcall 0xffffffff808d9b1e ran for 0 msecs: cryptomgr_init+0x0/0xc()
Calling initcall 0xffffffff808d9b2a: hmac_module_init+0x0/0xc()
initcall 0xffffffff808d9b2a: hmac_module_init+0x0/0xc() returned 0.
initcall 0xffffffff808d9b2a ran for 0 msecs: hmac_module_init+0x0/0xc()
Calling initcall 0xffffffff808d9b36: init+0x0/0xc()
initcall 0xffffffff808d9b36: init+0x0/0xc() returned 0.
initcall 0xffffffff808d9b36 ran for 0 msecs: init+0x0/0xc()
Calling initcall 0xffffffff808d9b42: init+0x0/0xc()
initcall 0xffffffff808d9b42: init+0x0/0xc() returned 0.
initcall 0xffffffff808d9b42 ran for 0 msecs: init+0x0/0xc()
Calling initcall 0xffffffff808d9b4e: crypto_ecb_module_init+0x0/0xc()
initcall 0xffffffff808d9b4e: crypto_ecb_module_init+0x0/0xc() returned 0.
initcall 0xffffffff808d9b4e ran for 0 msecs: crypto_ecb_module_init+0x0/0xc()
Calling initcall 0xffffffff808d9b5a: crypto_cbc_module_init+0x0/0xc()
initcall 0xffffffff808d9b5a: crypto_cbc_module_init+0x0/0xc() returned 0.
initcall 0xffffffff808d9b5a ran for 0 msecs: crypto_cbc_module_init+0x0/0xc()
Calling initcall 0xffffffff808d9b66: crypto_pcbc_module_init+0x0/0xc()
initcall 0xffffffff808d9b66: crypto_pcbc_module_init+0x0/0xc() returned 0.
initcall 0xffffffff808d9b66 ran for 0 msecs: crypto_pcbc_module_init+0x0/0xc()
Calling initcall 0xffffffff808d9b72: crypto_module_init+0x0/0xc()
initcall 0xffffffff808d9b72: crypto_module_init+0x0/0xc() returned 0.
initcall 0xffffffff808d9b72 ran for 0 msecs: crypto_module_init+0x0/0xc()
Calling initcall 0xffffffff808d9b7e: init+0x0/0x35()
initcall 0xffffffff808d9b7e: init+0x0/0x35() returned 0.
initcall 0xffffffff808d9b7e ran for 0 msecs: init+0x0/0x35()
Calling initcall 0xffffffff808d9bb3: init+0x0/0xc()
initcall 0xffffffff808d9bb3: init+0x0/0xc() returned 0.
initcall 0xffffffff808d9bb3 ran for 0 msecs: init+0x0/0xc()
Calling initcall 0xffffffff808d9bbf: init+0x0/0x35()
initcall 0xffffffff808d9bbf: init+0x0/0x35() returned 0.
initcall 0xffffffff808d9bbf ran for 0 msecs: init+0x0/0x35()
Calling initcall 0xffffffff808d9bf4: camellia_init+0x0/0xc()
initcall 0xffffffff808d9bf4: camellia_init+0x0/0xc() returned 0.
initcall 0xffffffff808d9bf4 ran for 0 msecs: camellia_init+0x0/0xc()
Calling initcall 0xffffffff808d9c00: init+0x0/0xc()
initcall 0xffffffff808d9c00: init+0x0/0xc() returned 0.
initcall 0xffffffff808d9c00 ran for 0 msecs: init+0x0/0xc()
Calling initcall 0xffffffff808d9c0c: arc4_init+0x0/0xc()
initcall 0xffffffff808d9c0c: arc4_init+0x0/0xc() returned 0.
initcall 0xffffffff808d9c0c ran for 0 msecs: arc4_init+0x0/0xc()
Calling initcall 0xffffffff808d9c18: init+0x0/0xc()
initcall 0xffffffff808d9c18: init+0x0/0xc() returned 0.
initcall 0xffffffff808d9c18 ran for 0 msecs: init+0x0/0xc()
Calling initcall 0xffffffff808d9c24: init+0x0/0xc()
initcall 0xffffffff808d9c24: init+0x0/0xc() returned 0.
initcall 0xffffffff808d9c24 ran for 0 msecs: init+0x0/0xc()
Calling initcall 0xffffffff808d9ee5: bsg_init+0x0/0x11a()
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
initcall 0xffffffff808d9ee5: bsg_init+0x0/0x11a() returned 0.
initcall 0xffffffff808d9ee5 ran for 5 msecs: bsg_init+0x0/0x11a()
Calling initcall 0xffffffff808d9fff: noop_init+0x0/0x14()
io scheduler noop registered
initcall 0xffffffff808d9fff: noop_init+0x0/0x14() returned 0.
initcall 0xffffffff808d9fff ran for 2 msecs: noop_init+0x0/0x14()
Calling initcall 0xffffffff808da013: cfq_init+0x0/0x9d()
io scheduler cfq registered (default)
initcall 0xffffffff808da013: cfq_init+0x0/0x9d() returned 0.
initcall 0xffffffff808da013 ran for 3 msecs: cfq_init+0x0/0x9d()
Calling initcall 0xffffffff808da1c4: init_kmp+0x0/0xc()
initcall 0xffffffff808da1c4: init_kmp+0x0/0xc() returned 0.
initcall 0xffffffff808da1c4 ran for 0 msecs: init_kmp+0x0/0xc()
Calling initcall 0xffffffff808da1d0: init_bm+0x0/0xc()
initcall 0xffffffff808da1d0: init_bm+0x0/0xc() returned 0.
initcall 0xffffffff808da1d0 ran for 0 msecs: init_bm+0x0/0xc()
Calling initcall 0xffffffff808da1dc: init_fsm+0x0/0xc()
initcall 0xffffffff808da1dc: init_fsm+0x0/0xc() returned 0.
initcall 0xffffffff808da1dc ran for 0 msecs: init_fsm+0x0/0xc()
Calling initcall 0xffffffff80395877: pci_init+0x0/0x2b()
------------[ cut here ]------------
kernel BUG at arch/x86/mm/pageattr_64.c:176!
invalid opcode: 0000 [1] PREEMPT
CPU 0
Modules linked in:
Pid: 1, comm: swapper Not tainted 2.6.24-rc7 #5
RIP: 0010:[<ffffffff8021d9be>] [<ffffffff8021d9be>] __change_page_attr+0x23b/0x347
RSP: 0000:ffff81003f843d90 EFLAGS: 00010282
RAX: 0000000000000400 RBX: 00000000000da103 RCX: ffff810001001230
RDX: 80000000da0001e3 RSI: 000000000000000a RDI: ffff81000000a000
RBP: 8000000000000163 R08: 00003ffffffff000 R09: 00000000000da102
R10: 0000000000000000 R11: ffffffff808c7f38 R12: ffff81000000a680
R13: ffff8100da103000 R14: 8000000000000163 R15: 0000000000000002
FS: 0000000000000000(0000) GS:ffffffff808bb000(0000) knlGS:0000000000000000
CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 0000000000f06f53 CR3: 0000000000201000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process swapper (pid: 1, threadinfo ffff81003f842000, task ffff81003f840000)
Stack: ffffffffffffff10 ffff81003f843db0 ffff81003f840000 ffffffff80840310
ffff81003f843dc0 ffff8100da103000 00000000000da103 0000000000000000
8000000000000163 0000000000000001 0000000000000002 ffffffff8021db68
Call Trace:
[<ffffffff8021db68>] change_page_attr_addr+0x9e/0x119
[<ffffffff8021d44f>] ioremap_change_attr+0x49/0x58
[<ffffffff8021d626>] iounmap+0xbe/0xe0
[<ffffffff804dfc95>] quirk_usb_early_handoff+0x396/0x3a5
[<ffffffff80396ea0>] pci_fixup_device+0x90/0x9e
[<ffffffff80395889>] pci_init+0x12/0x2b
[<ffffffff808c9545>] kernel_init+0xd0/0x23c
[<ffffffff8020bec8>] child_rip+0xa/0x12
[<ffffffff808c9475>] kernel_init+0x0/0x23c
[<ffffffff8020bebe>] child_rip+0x0/0x12
Code: 0f 0b eb fe f6 41 01 04 74 04 0f 0b eb fe 0f ba 29 09 19 c0
RIP [<ffffffff8021d9be>] __change_page_attr+0x23b/0x347
RSP <ffff81003f843d90>
---[ end trace 778e504de7e3b1e3 ]---
Kernel panic - not syncing: Attempted to kill init!
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-08 23:28 ` Ingo Molnar
@ 2008-01-08 23:44 ` Ingo Molnar
2008-01-08 23:51 ` Ingo Molnar
2008-01-09 0:01 ` Ingo Molnar
2008-01-09 0:07 ` Jeremy Fitzhardinge
1 sibling, 2 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-08 23:44 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Ingo Molnar <mingo@elte.hu> wrote:
> it's one of these patches:
>
> Subject: x86: move all asm/pgtable constants into one place
> Subject: x86: avoid name conflict for Voyager leave_mm
> Subject: x86/pgtable: unify pagetable accessors
it's the first one that causes the crash.
reviewed it carefully and found the bug below. Checking now whether it
fixes the crash.
Ingo
---
include/asm-x86/pgtable.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-x86.q/include/asm-x86/pgtable.h
===================================================================
--- linux-x86.q.orig/include/asm-x86/pgtable.h
+++ linux-x86.q/include/asm-x86/pgtable.h
@@ -68,7 +68,7 @@ extern unsigned long long __PAGE_KERNEL,
#endif /* __ASSEMBLER__ */
#else
#define __PAGE_KERNEL_EXEC \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
+ (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
#endif
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-08 23:44 ` Ingo Molnar
@ 2008-01-08 23:51 ` Ingo Molnar
2008-01-09 0:01 ` Ingo Molnar
1 sibling, 0 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-08 23:51 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Ingo Molnar <mingo@elte.hu> wrote:
> > it's one of these patches:
> >
> > Subject: x86: move all asm/pgtable constants into one place
> > Subject: x86: avoid name conflict for Voyager leave_mm
> > Subject: x86/pgtable: unify pagetable accessors
>
> it's the first one that causes the crash.
>
> reviewed it carefully and found the bug below. Checking now whether it
> fixes the crash.
hm, doesnt fix it. Weird.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-08 23:44 ` Ingo Molnar
2008-01-08 23:51 ` Ingo Molnar
@ 2008-01-09 0:01 ` Ingo Molnar
2008-01-09 0:13 ` Jeremy Fitzhardinge
1 sibling, 1 reply; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 0:01 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Ingo Molnar <mingo@elte.hu> wrote:
> #define __PAGE_KERNEL_EXEC \
> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
btw., __PAGE_KERNEL_EXEC should probably be _PAGE_GLOBAL - but it wasnt
before.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-08 23:28 ` Ingo Molnar
2008-01-08 23:44 ` Ingo Molnar
@ 2008-01-09 0:07 ` Jeremy Fitzhardinge
1 sibling, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 0:07 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Ingo Molnar wrote:
> right now i'm trying to bisect this crash on 64-bit:
>
> Calling initcall 0xffffffff80395877: pci_init+0x0/0x2b()
> ------------[ cut here ]------------
> kernel BUG at arch/x86/mm/pageattr_64.c:176!
> [...]
> Call Trace:
> [<ffffffff8021db68>] change_page_attr_addr+0x9e/0x119
> [<ffffffff8021d44f>] ioremap_change_attr+0x49/0x58
> [<ffffffff8021d626>] iounmap+0xbe/0xe0
> [<ffffffff804dfc95>] quirk_usb_early_handoff+0x396/0x3a5
> [<ffffffff80396ea0>] pci_fixup_device+0x90/0x9e
> [<ffffffff80395889>] pci_init+0x12/0x2b
> [<ffffffff808c9545>] kernel_init+0xd0/0x23c
> [<ffffffff8020bec8>] child_rip+0xa/0x12
> [<ffffffff808c9475>] kernel_init+0x0/0x23c
> [<ffffffff8020bebe>] child_rip+0x0/0x12
>
> config and bootlog attached.
>
> it's one of these patches:
>
> Subject: x86: move all asm/pgtable constants into one place
> Subject: x86: avoid name conflict for Voyager leave_mm
> Subject: x86/pgtable: unify pagetable accessors
>
Hm, you got the same crash the with my last attempt at this. I'll take
a closer look at that first patch. The global flag differences between
32 and 64 bit was a bit weird.
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:01 ` Ingo Molnar
@ 2008-01-09 0:13 ` Jeremy Fitzhardinge
2008-01-09 0:20 ` Ingo Molnar
0 siblings, 1 reply; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 0:13 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
>
>
>> #define __PAGE_KERNEL_EXEC \
>> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
>> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
>>
This shouldn't be necessary. The old 64-bit code defined everything
without _PAGE_GLOBAL, but then used a MAKE_GLOBAL() macro to OR it in
later. This seemed a bit roundabout to me, so I just put it in from the
outset.
> btw., __PAGE_KERNEL_EXEC should probably be _PAGE_GLOBAL - but it wasnt
> before.
>
You mean _PAGE_KERNEL_EXEC, which is assigned to the 32-bit
__PAGE_KERNEL_EXEC variable? It gets ORed in when it determines that
the processor has the global capability.
If not, I'm not sure what you mean.
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:13 ` Jeremy Fitzhardinge
@ 2008-01-09 0:20 ` Ingo Molnar
2008-01-09 0:28 ` Ingo Molnar
0 siblings, 1 reply; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 0:20 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> Ingo Molnar wrote:
>> * Ingo Molnar <mingo@elte.hu> wrote:
>>
>>
>>> #define __PAGE_KERNEL_EXEC \
>>> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
>>> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
>>>
>
> This shouldn't be necessary. The old 64-bit code defined everything
> without _PAGE_GLOBAL, but then used a MAKE_GLOBAL() macro to OR it in
> later. This seemed a bit roundabout to me, so I just put it in from
> the outset.
yeah, just noticed it - and the cleanup you did certainly improves it.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:20 ` Ingo Molnar
@ 2008-01-09 0:28 ` Ingo Molnar
2008-01-09 0:30 ` Ingo Molnar
0 siblings, 1 reply; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 0:28 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
> >>> #define __PAGE_KERNEL_EXEC \
> >>> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
> >>> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
> >>>
> >
> > This shouldn't be necessary. The old 64-bit code defined everything
> > without _PAGE_GLOBAL, but then used a MAKE_GLOBAL() macro to OR it
> > in later. This seemed a bit roundabout to me, so I just put it in
> > from the outset.
actually, this is wrong.
a couple of places use __PAGE_* values, which you've now changed to
include the _PAGE_GLOBAL flag.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:28 ` Ingo Molnar
@ 2008-01-09 0:30 ` Ingo Molnar
2008-01-09 0:43 ` Ingo Molnar
2008-01-09 0:53 ` Jeremy Fitzhardinge
0 siblings, 2 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 0:30 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Ingo Molnar <mingo@elte.hu> wrote:
> > >>> #define __PAGE_KERNEL_EXEC \
> > >>> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
> > >>> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
> > >>>
> > >
> > > This shouldn't be necessary. The old 64-bit code defined everything
> > > without _PAGE_GLOBAL, but then used a MAKE_GLOBAL() macro to OR it
> > > in later. This seemed a bit roundabout to me, so I just put it in
> > > from the outset.
>
> actually, this is wrong.
>
> a couple of places use __PAGE_* values, which you've now changed to
> include the _PAGE_GLOBAL flag.
yep, fixing this resolves the crash.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:30 ` Ingo Molnar
@ 2008-01-09 0:43 ` Ingo Molnar
2008-01-09 0:55 ` Jeremy Fitzhardinge
2008-01-09 1:09 ` Jeremy Fitzhardinge
2008-01-09 0:53 ` Jeremy Fitzhardinge
1 sibling, 2 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 0:43 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Ingo Molnar <mingo@elte.hu> wrote:
>
> * Ingo Molnar <mingo@elte.hu> wrote:
>
> > > >>> #define __PAGE_KERNEL_EXEC \
> > > >>> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
> > > >>> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
> > > >>>
> > > >
> > > > This shouldn't be necessary. The old 64-bit code defined everything
> > > > without _PAGE_GLOBAL, but then used a MAKE_GLOBAL() macro to OR it
> > > > in later. This seemed a bit roundabout to me, so I just put it in
> > > > from the outset.
> >
> > actually, this is wrong.
> >
> > a couple of places use __PAGE_* values, which you've now changed to
> > include the _PAGE_GLOBAL flag.
>
> yep, fixing this resolves the crash.
but then it crashes init:
init[1]: segfault at ffffffffff600400 ip ffffffffff600400 sp
7fff81bedda8 error5printk: 7740690 messages suppressed.
because you changed __PAGE_KERNEL_VSYSCALL as well, from:
#define __PAGE_KERNEL_VSYSCALL \
(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
to:
#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
but __PAGE_KERNEL_RO is an NX one, so the vsyscall cannot execute
instructions.
so this wants to be:
#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
this was the last bug and the resulting kernel boots fine. 3 nasty bugs
in one patch :-/
Ingo
---------------->
Subject: x86: move all asm/pgtable constants into one place, fix
From: Ingo Molnar <mingo@elte.hu>
fix.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
include/asm-x86/pgtable.h | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
Index: linux-x86.q/include/asm-x86/pgtable.h
===================================================================
--- linux-x86.q.orig/include/asm-x86/pgtable.h
+++ linux-x86.q/include/asm-x86/pgtable.h
@@ -68,27 +68,27 @@ extern unsigned long long __PAGE_KERNEL,
#endif /* __ASSEMBLER__ */
#else
#define __PAGE_KERNEL_EXEC \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
+ (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
#endif
#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
#define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
#define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
-#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
+#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
#define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT)
#define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
-#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
-#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
-#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
-#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
-#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
-#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
-#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
-#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL)
-#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE)
+#define PAGE_KERNEL __pgprot(__PAGE_KERNEL | _PAGE_GLOBAL)
+#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO | _PAGE_GLOBAL)
+#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC | _PAGE_GLOBAL)
+#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX | _PAGE_GLOBAL)
+#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE | _PAGE_GLOBAL)
+#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE | _PAGE_GLOBAL)
+#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC | _PAGE_GLOBAL)
+#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL | _PAGE_GLOBAL)
+#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE | _PAGE_GLOBAL)
/* xwr */
#define __P000 PAGE_NONE
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:30 ` Ingo Molnar
2008-01-09 0:43 ` Ingo Molnar
@ 2008-01-09 0:53 ` Jeremy Fitzhardinge
2008-01-09 0:59 ` Ingo Molnar
2008-01-09 1:11 ` Andi Kleen
1 sibling, 2 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 0:53 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
>
>
>>>>>> #define __PAGE_KERNEL_EXEC \
>>>>>> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
>>>>>> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
>>>>>>
>>>>>>
>>>> This shouldn't be necessary. The old 64-bit code defined everything
>>>> without _PAGE_GLOBAL, but then used a MAKE_GLOBAL() macro to OR it
>>>> in later. This seemed a bit roundabout to me, so I just put it in
>>>> from the outset.
>>>>
>> actually, this is wrong.
>>
>> a couple of places use __PAGE_* values, which you've now changed to
>> include the _PAGE_GLOBAL flag.
>>
>
> yep, fixing this resolves the crash.
>
Bugger. OK.
And I don't see quite how the global flag is causing the BUG bug in
change_page_attr(). The logic is:
if (pgprot_val(prot) != pgprot_val(ref_prot)) {
...
} else {
if (!pte_huge(*kpte)) {
...
} else
BUG();
}
Is _PAGE_GLOBAL causing the first if() to fall through to the second
clause? Because otherwise it shouldn't have any effect on the
pte_huge() test.
But given that ref_prot is set to PAGE_KERNEL or PAGE_KERNEL_EXEC, which
will have _PAGE_GLOBAL in it either way, I don't see where the problem
is coming from.
Gah! This can't be right! I think the original change_page_attr() code
is plain buggy.
The crash call chain is:
[<ffffffff8021db68>] change_page_attr_addr+0x9e/0x119
[<ffffffff8021d44f>] ioremap_change_attr+0x49/0x58
[<ffffffff8021d626>] iounmap+0xbe/0xe0
...
ioremap_change_attr does:
err = change_page_attr_addr(vaddr,npages,__pgprot(__PAGE_KERNEL|flags));
Now, in the current code (ie, before my patch), __PAGE_KERNEL doesn't
have _PAGE_GLOBAL set, but PAGE_KERNEL does. Therefore,
change_page_attr_addr calls
__change_page_attr(address, pfn, prot, PAGE_KERNEL);
which means:
__change_page_attr(address, pfn, pgprot(__PAGE_KERNEL), PAGE_KERNEL);
(iounmap always passes flags of 0) which just happens to fail the test:
if (pgprot_val(prot) != pgprot_val(ref_prot)) {
because prot doesn't contain _PAGE_GLOBAL and ref_prot does.
In other words, prot and ref_prot can never be equal, so this path is
always taken, and the other branch which tests pte_huge() is never run.
Andi? Jan? Is this code just buggy, or is there something else going
on here?
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:43 ` Ingo Molnar
@ 2008-01-09 0:55 ` Jeremy Fitzhardinge
2008-01-09 1:09 ` Jeremy Fitzhardinge
1 sibling, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 0:55 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
>
>
>> * Ingo Molnar <mingo@elte.hu> wrote:
>>
>>
>>>>>>> #define __PAGE_KERNEL_EXEC \
>>>>>>> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
>>>>>>> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
>>>>>>>
>>>>>>>
>>>>> This shouldn't be necessary. The old 64-bit code defined everything
>>>>> without _PAGE_GLOBAL, but then used a MAKE_GLOBAL() macro to OR it
>>>>> in later. This seemed a bit roundabout to me, so I just put it in
>>>>> from the outset.
>>>>>
>>> actually, this is wrong.
>>>
>>> a couple of places use __PAGE_* values, which you've now changed to
>>> include the _PAGE_GLOBAL flag.
>>>
>> yep, fixing this resolves the crash.
>>
>
> but then it crashes init:
>
> init[1]: segfault at ffffffffff600400 ip ffffffffff600400 sp
> 7fff81bedda8 error5printk: 7740690 messages suppressed.
>
> because you changed __PAGE_KERNEL_VSYSCALL as well, from:
>
> #define __PAGE_KERNEL_VSYSCALL \
> (_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
>
> to:
>
> #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
>
> but __PAGE_KERNEL_RO is an NX one, so the vsyscall cannot execute
> instructions.
>
> so this wants to be:
>
> #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
>
> this was the last bug and the resulting kernel boots fine. 3 nasty bugs
> in one patch :-/
>
:-/ indeed. One #ifdef/include-hell bug, one typo, and one... well, see
my other mail. I think my _PAGE_GLOBAL change is actually valid, and
the bug is in change_page_attr after all.
J
> Ingo
>
> ---------------->
> Subject: x86: move all asm/pgtable constants into one place, fix
> From: Ingo Molnar <mingo@elte.hu>
>
> fix.
>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
> ---
> include/asm-x86/pgtable.h | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> Index: linux-x86.q/include/asm-x86/pgtable.h
> ===================================================================
> --- linux-x86.q.orig/include/asm-x86/pgtable.h
> +++ linux-x86.q/include/asm-x86/pgtable.h
> @@ -68,27 +68,27 @@ extern unsigned long long __PAGE_KERNEL,
> #endif /* __ASSEMBLER__ */
> #else
> #define __PAGE_KERNEL_EXEC \
> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
> #define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
> #endif
>
> #define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
> #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
> #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
> -#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
> +#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
> #define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT)
> #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
> #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
>
> -#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
> -#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
> -#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
> -#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
> -#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
> -#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
> -#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
> -#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL)
> -#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE)
> +#define PAGE_KERNEL __pgprot(__PAGE_KERNEL | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE | _PAGE_GLOBAL)
>
> /* xwr */
> #define __P000 PAGE_NONE
>
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:53 ` Jeremy Fitzhardinge
@ 2008-01-09 0:59 ` Ingo Molnar
2008-01-09 1:07 ` Jeremy Fitzhardinge
2008-01-09 1:11 ` Andi Kleen
1 sibling, 1 reply; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 0:59 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> In other words, prot and ref_prot can never be equal, so this path is
> always taken, and the other branch which tests pte_huge() is never
> run.
>
> Andi? Jan? Is this code just buggy, or is there something else going
> on here?
this code is plain buggy but fixing it triggered driver bugs in the past
so we've been procrastinating it forever ...
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:59 ` Ingo Molnar
@ 2008-01-09 1:07 ` Jeremy Fitzhardinge
2008-01-09 1:12 ` Andi Kleen
0 siblings, 1 reply; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 1:07 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Ingo Molnar wrote:
> * Jeremy Fitzhardinge <jeremy@goop.org> wrote:
>
>
>> In other words, prot and ref_prot can never be equal, so this path is
>> always taken, and the other branch which tests pte_huge() is never
>> run.
>>
>> Andi? Jan? Is this code just buggy, or is there something else going
>> on here?
>>
>
> this code is plain buggy but fixing it triggered driver bugs in the past
> so we've been procrastinating it forever ...
>
What kind of driver bugs? Do drivers manage to get into the other
branch of the if()? If not, can't we just remove it and avoid this
present problem?
Of course, there are a couple of other places which use naked
__PAGE_KERNEL_* constants, most significantly in head_64.S's initial
pagetable setup. Does that rely _PAGE_GLOBAL not being set? Also
early_io_remap().
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:43 ` Ingo Molnar
2008-01-09 0:55 ` Jeremy Fitzhardinge
@ 2008-01-09 1:09 ` Jeremy Fitzhardinge
2008-01-09 1:16 ` Ingo Molnar
1 sibling, 1 reply; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 1:09 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Ingo Molnar wrote:
> * Ingo Molnar <mingo@elte.hu> wrote:
>
>
>> * Ingo Molnar <mingo@elte.hu> wrote:
>>
>>
>>>>>>> #define __PAGE_KERNEL_EXEC \
>>>>>>> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
>>>>>>> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
>>>>>>>
>>>>>>>
>>>>> This shouldn't be necessary. The old 64-bit code defined everything
>>>>> without _PAGE_GLOBAL, but then used a MAKE_GLOBAL() macro to OR it
>>>>> in later. This seemed a bit roundabout to me, so I just put it in
>>>>> from the outset.
>>>>>
>>> actually, this is wrong.
>>>
>>> a couple of places use __PAGE_* values, which you've now changed to
>>> include the _PAGE_GLOBAL flag.
>>>
>> yep, fixing this resolves the crash.
>>
>
> but then it crashes init:
>
> init[1]: segfault at ffffffffff600400 ip ffffffffff600400 sp
> 7fff81bedda8 error5printk: 7740690 messages suppressed.
>
> because you changed __PAGE_KERNEL_VSYSCALL as well, from:
>
> #define __PAGE_KERNEL_VSYSCALL \
> (_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
>
> to:
>
> #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
>
> but __PAGE_KERNEL_RO is an NX one, so the vsyscall cannot execute
> instructions.
>
> so this wants to be:
>
> #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
>
> this was the last bug and the resulting kernel boots fine. 3 nasty bugs
> in one patch :-/
>
> Ingo
>
> ---------------->
> Subject: x86: move all asm/pgtable constants into one place, fix
> From: Ingo Molnar <mingo@elte.hu>
>
> fix.
>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
> ---
> include/asm-x86/pgtable.h | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> Index: linux-x86.q/include/asm-x86/pgtable.h
> ===================================================================
> --- linux-x86.q.orig/include/asm-x86/pgtable.h
> +++ linux-x86.q/include/asm-x86/pgtable.h
> @@ -68,27 +68,27 @@ extern unsigned long long __PAGE_KERNEL,
> #endif /* __ASSEMBLER__ */
> #else
> #define __PAGE_KERNEL_EXEC \
> - (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
> + (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
> #define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
> #endif
>
> #define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
> #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
> #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT)
> -#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RO | _PAGE_USER)
> +#define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER)
> #define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT)
> #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
> #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
>
> -#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
> -#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
> -#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
> -#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
> -#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
> -#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
> -#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
> -#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL)
> -#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE)
> +#define PAGE_KERNEL __pgprot(__PAGE_KERNEL | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL | _PAGE_GLOBAL)
> +#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE | _PAGE_GLOBAL)
>
This isn't correct, because it will set _PAGE_GLOBAL on 32-bit
unconditionally. It needs to be something like:
diff -r a6d5e9e1a81d include/asm-x86/pgtable.h
--- a/include/asm-x86/pgtable.h Tue Jan 08 13:59:42 2008 -0800
+++ b/include/asm-x86/pgtable.h Tue Jan 08 16:37:19 2008 -0800
@@ -68,7 +68,7 @@ extern unsigned long long __PAGE_KERNEL,
#endif /* __ASSEMBLER__ */
#else
#define __PAGE_KERNEL_EXEC \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
+ (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
#endif
@@ -80,15 +80,17 @@ extern unsigned long long __PAGE_KERNEL,
#define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
-#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
-#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
-#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
-#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
-#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
-#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
-#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
-#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL)
-#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE)
+#define GLOBAL_PGPROT(prot) __pgprot(prot | _PAGE_GLOBAL)
+
+#define PAGE_KERNEL GLOBAL_PGPROT(__PAGE_KERNEL)
+#define PAGE_KERNEL_RO GLOBAL_PGPROT(__PAGE_KERNEL_RO)
+#define PAGE_KERNEL_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_EXEC)
+#define PAGE_KERNEL_RX GLOBAL_PGPROT(__PAGE_KERNEL_RX)
+#define PAGE_KERNEL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_NOCACHE)
+#define PAGE_KERNEL_LARGE GLOBAL_PGPROT(__PAGE_KERNEL_LARGE)
+#define PAGE_KERNEL_LARGE_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_LARGE_EXEC)
+#define PAGE_KERNEL_VSYSCALL GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL)
+#define PAGE_KERNEL_VSYSCALL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL_NOCACHE)
/* xwr */
#define __P000 PAGE_NONE
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 0:53 ` Jeremy Fitzhardinge
2008-01-09 0:59 ` Ingo Molnar
@ 2008-01-09 1:11 ` Andi Kleen
1 sibling, 0 replies; 49+ messages in thread
From: Andi Kleen @ 2008-01-09 1:11 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Ingo Molnar, LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
> Is _PAGE_GLOBAL causing the first if() to fall through to the second
Yes it obviously is.
> clause? Because otherwise it shouldn't have any effect on the pte_huge()
> test.
>
> Gah! This can't be right! I think the original change_page_attr() code is
> plain buggy.
It has a few rough edges. I was fixing various issues in the c_p_a() patch
series I posted recently.
The code bugs when you set the same area to the same protection several
times. That likely happens here.
The cpa series adds a helpful comment explaining this.
/*
* When you're here you either set the same page to PAGE_KERNEL
* two times in a row or the page table reference counting is
* broken again. To catch the later bug for now (sorry)
*/
printk(KERN_ERR "address %lx\n", address);
dump_pagetable(address);
BUG();
I've been considering taking it out, but is there ever a good reason
to do that? I left it in because it catches bugs in c_p_a itself.
-Andi
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:07 ` Jeremy Fitzhardinge
@ 2008-01-09 1:12 ` Andi Kleen
2008-01-09 1:20 ` Ingo Molnar
2008-01-09 1:35 ` Jeremy Fitzhardinge
0 siblings, 2 replies; 49+ messages in thread
From: Andi Kleen @ 2008-01-09 1:12 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Ingo Molnar, LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
On Tue, Jan 08, 2008 at 05:07:08PM -0800, Jeremy Fitzhardinge wrote:
> Ingo Molnar wrote:
>> * Jeremy Fitzhardinge <jeremy@goop.org> wrote:
>>
>>
>>> In other words, prot and ref_prot can never be equal, so this path is
>>> always taken, and the other branch which tests pte_huge() is never run.
>>>
>>> Andi? Jan? Is this code just buggy, or is there something else going on
>>> here?
>>>
>>
>> this code is plain buggy but fixing it triggered driver bugs in the past
>> so we've been procrastinating it forever ...
>>
>
> What kind of driver bugs? Do drivers manage to get into the other branch
That was just the return value issue that caused drivers to fail through
ioremap() iirc. It would error out for unmapped holes and then fail
ioremap I don't think it's related.
> of the if()? If not, can't we just remove it and avoid this present
> problem?
That would just hide your problem.
-Andi
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:09 ` Jeremy Fitzhardinge
@ 2008-01-09 1:16 ` Ingo Molnar
2008-01-09 1:18 ` Andi Kleen
2008-01-09 1:21 ` Jeremy Fitzhardinge
0 siblings, 2 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 1:16 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> This isn't correct, because it will set _PAGE_GLOBAL on 32-bit
> unconditionally. It needs to be something like:
hm, why is that a problem? Ah, the VDSO page must not be global-mapped,
right? It's getting late here, i should stop modifying the kernel ;)
> +#define GLOBAL_PGPROT(prot) __pgprot(prot | _PAGE_GLOBAL)
> +
> +#define PAGE_KERNEL GLOBAL_PGPROT(__PAGE_KERNEL)
> +#define PAGE_KERNEL_RO GLOBAL_PGPROT(__PAGE_KERNEL_RO)
> +#define PAGE_KERNEL_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_EXEC)
> +#define PAGE_KERNEL_RX GLOBAL_PGPROT(__PAGE_KERNEL_RX)
> +#define PAGE_KERNEL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_NOCACHE)
> +#define PAGE_KERNEL_LARGE GLOBAL_PGPROT(__PAGE_KERNEL_LARGE)
> +#define PAGE_KERNEL_LARGE_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_LARGE_EXEC)
> +#define PAGE_KERNEL_VSYSCALL GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL)
> +#define PAGE_KERNEL_VSYSCALL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL_NOCACHE)
i suspect you wanted to make GLOBAL_PGPROT a NOP on 32-bit?
but i think it would be better to just do this distinction for the
PAGE_KERNEL_VSYSCALL?
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:16 ` Ingo Molnar
@ 2008-01-09 1:18 ` Andi Kleen
2008-01-09 1:22 ` Ingo Molnar
2008-01-09 1:21 ` Jeremy Fitzhardinge
1 sibling, 1 reply; 49+ messages in thread
From: Andi Kleen @ 2008-01-09 1:18 UTC (permalink / raw)
To: Ingo Molnar
Cc: Jeremy Fitzhardinge, LKML, Andi Kleen, Glauber de Oliveira Costa,
Jan Beulich
On Wed, Jan 09, 2008 at 02:16:09AM +0100, Ingo Molnar wrote:
>
> * Jeremy Fitzhardinge <jeremy@goop.org> wrote:
>
> > This isn't correct, because it will set _PAGE_GLOBAL on 32-bit
> > unconditionally. It needs to be something like:
>
> hm, why is that a problem?
Not so ancient 32bit CPUs didn't support global.
> Ah, the VDSO page must not be global-mapped,
That too.
-Andi
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:12 ` Andi Kleen
@ 2008-01-09 1:20 ` Ingo Molnar
2008-01-09 1:35 ` Jeremy Fitzhardinge
1 sibling, 0 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 1:20 UTC (permalink / raw)
To: Andi Kleen
Cc: Jeremy Fitzhardinge, LKML, Glauber de Oliveira Costa, Jan Beulich
* Andi Kleen <ak@suse.de> wrote:
> >> this code is plain buggy but fixing it triggered driver bugs in the
> >> past so we've been procrastinating it forever ...
> >>
> >
> > What kind of driver bugs? Do drivers manage to get into the other
> > branch
>
> That was just the return value issue that caused drivers to fail
> through ioremap() iirc. It would error out for unmapped holes and then
> fail ioremap I don't think it's related.
in -mm we had a patch where the error behavior was consolidated but it
broke on some boxes.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:16 ` Ingo Molnar
2008-01-09 1:18 ` Andi Kleen
@ 2008-01-09 1:21 ` Jeremy Fitzhardinge
2008-01-09 1:37 ` Ingo Molnar
1 sibling, 1 reply; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 1:21 UTC (permalink / raw)
To: Ingo Molnar; +Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich
Ingo Molnar wrote:
> * Jeremy Fitzhardinge <jeremy@goop.org> wrote:
>
>
>> This isn't correct, because it will set _PAGE_GLOBAL on 32-bit
>> unconditionally. It needs to be something like:
>>
>
> hm, why is that a problem? Ah, the VDSO page must not be global-mapped,
> right? It's getting late here, i should stop modifying the kernel ;)
>
No, because old processors don't support global pages, and the 32-bit
setup code makes sure to only set _PAGE_GLOBAL in __PAGE_KERNEL once it
has been identified, whereas 64-bit can assume its always present.
Erk. Hm. The old pgtable_64.h defines both PAGE_KERNEL_VSYSCALL, which
is global, and PAGE_KERNEL_VSYSCALL32 which is not. However, it looks
like PAGE_KERNEL_VSYSCALL is used exactly once in setting up a fixmap,
and PAGE_KERNEL_VSYSCALL32 is not used at all.
>> +#define GLOBAL_PGPROT(prot) __pgprot(prot | _PAGE_GLOBAL)
>> +
>> +#define PAGE_KERNEL GLOBAL_PGPROT(__PAGE_KERNEL)
>> +#define PAGE_KERNEL_RO GLOBAL_PGPROT(__PAGE_KERNEL_RO)
>> +#define PAGE_KERNEL_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_EXEC)
>> +#define PAGE_KERNEL_RX GLOBAL_PGPROT(__PAGE_KERNEL_RX)
>> +#define PAGE_KERNEL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_NOCACHE)
>> +#define PAGE_KERNEL_LARGE GLOBAL_PGPROT(__PAGE_KERNEL_LARGE)
>> +#define PAGE_KERNEL_LARGE_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_LARGE_EXEC)
>> +#define PAGE_KERNEL_VSYSCALL GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL)
>> +#define PAGE_KERNEL_VSYSCALL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL_NOCACHE)
>>
>
> i suspect you wanted to make GLOBAL_PGPROT a NOP on 32-bit?
>
Yeah, cut'n'paste from a stale buffer.
> but i think it would be better to just do this distinction for the
> PAGE_KERNEL_VSYSCALL?
>
? The _PAGE_GLOBAL issue is distinct from the VSYSCALL one.
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:18 ` Andi Kleen
@ 2008-01-09 1:22 ` Ingo Molnar
2008-01-09 1:37 ` Andi Kleen
0 siblings, 1 reply; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 1:22 UTC (permalink / raw)
To: Andi Kleen
Cc: Jeremy Fitzhardinge, LKML, Glauber de Oliveira Costa, Jan Beulich
* Andi Kleen <ak@suse.de> wrote:
> On Wed, Jan 09, 2008 at 02:16:09AM +0100, Ingo Molnar wrote:
> >
> > * Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> >
> > > This isn't correct, because it will set _PAGE_GLOBAL on 32-bit
> > > unconditionally. It needs to be something like:
> >
> > hm, why is that a problem?
>
> Not so ancient 32bit CPUs didn't support global.
'not so ancient' like: pre-PPro ones? But we mark the ptes PAGE_GLOBAL
during pagetable init so we should be fine performance-wise.
but yeah, it shouldnt be turned on unconditionally indeed.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:12 ` Andi Kleen
2008-01-09 1:20 ` Ingo Molnar
@ 2008-01-09 1:35 ` Jeremy Fitzhardinge
2008-01-09 1:42 ` Andi Kleen
2008-01-09 9:37 ` Jan Beulich
1 sibling, 2 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 1:35 UTC (permalink / raw)
To: Andi Kleen; +Cc: Ingo Molnar, LKML, Glauber de Oliveira Costa, Jan Beulich
Andi Kleen wrote:
>> of the if()? If not, can't we just remove it and avoid this present
>> problem?
>>
>
> That would just hide your problem.
>
The "problem" is a BUG() in pageattr_64.c:change_page_attr(), which to
me looks spurious. It arises because __PAGE_KERNEL_* doesn't contain
_PAGE_GLOBAL, but PAGE_KERNEL_* does. When ioremap()
change_page_attr(), it does so in a way that guarentees that the test
if (pgprot_val(prot) != pgprot_val(ref_prot)) {
in __change_page_attr() always succeeds. When I folded _PAGE_GLOBAL
into the __PAGE_KERNEL_* definitions, it mostly works except it causes
this if() to fail, falling into the otherwise dead else clause and
triggers a BUG().
I'm not really sure what the logic in here is supposed to be doing, but
it seems to me that it isn't the difference between global and
non-global mappings (I guess its really testing for cached vs uncached
mappings).
Or to put it another way, what's the underlying rationale for making
__PAGE_KERNEL_* not include the GLOBAL flag, but including it in the
pgprot versions? It means that code like this in ioremap_64.c:
err = change_page_attr_addr(vaddr,npages,__pgprot(__PAGE_KERNEL|flags));
is subtly different from using PAGE_KERNEL | flags, because the latter
also includes _PAGE_GLOBAL.
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:21 ` Jeremy Fitzhardinge
@ 2008-01-09 1:37 ` Ingo Molnar
0 siblings, 0 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 1:37 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: LKML, Andi Kleen, Glauber de Oliveira Costa, Jan Beulich,
Thomas Gleixner, H. Peter Anvin
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
>>> +#define GLOBAL_PGPROT(prot) __pgprot(prot | _PAGE_GLOBAL)
>>> +
>>> +#define PAGE_KERNEL GLOBAL_PGPROT(__PAGE_KERNEL)
>>> +#define PAGE_KERNEL_RO GLOBAL_PGPROT(__PAGE_KERNEL_RO)
>>> +#define PAGE_KERNEL_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_EXEC)
>>> +#define PAGE_KERNEL_RX GLOBAL_PGPROT(__PAGE_KERNEL_RX)
>>> +#define PAGE_KERNEL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_NOCACHE)
>>> +#define PAGE_KERNEL_LARGE GLOBAL_PGPROT(__PAGE_KERNEL_LARGE)
>>> +#define PAGE_KERNEL_LARGE_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_LARGE_EXEC)
>>> +#define PAGE_KERNEL_VSYSCALL GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL)
>>> +#define PAGE_KERNEL_VSYSCALL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL_NOCACHE)
>>>
>>
>> i suspect you wanted to make GLOBAL_PGPROT a NOP on 32-bit?
>>
>
> Yeah, cut'n'paste from a stale buffer.
ok.
i've updated x86.git with the latest bits, could you double-check it?
Havent applied any pgattr*.c changes yet. Note, it's not fully tested
through yet, so it might have a few rough edges, but wanted to get the
current stuff out.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:22 ` Ingo Molnar
@ 2008-01-09 1:37 ` Andi Kleen
0 siblings, 0 replies; 49+ messages in thread
From: Andi Kleen @ 2008-01-09 1:37 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andi Kleen, Jeremy Fitzhardinge, LKML, Glauber de Oliveira Costa,
Jan Beulich
On Wed, Jan 09, 2008 at 02:22:57AM +0100, Ingo Molnar wrote:
>
> * Andi Kleen <ak@suse.de> wrote:
>
> > On Wed, Jan 09, 2008 at 02:16:09AM +0100, Ingo Molnar wrote:
> > >
> > > * Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> > >
> > > > This isn't correct, because it will set _PAGE_GLOBAL on 32-bit
> > > > unconditionally. It needs to be something like:
> > >
> > > hm, why is that a problem?
> >
> > Not so ancient 32bit CPUs didn't support global.
>
> 'not so ancient' like: pre-PPro ones? But we mark the ptes PAGE_GLOBAL
AMD K6 at least AFAIK -- that's not ancient. I still got one of those.
-Andi
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:35 ` Jeremy Fitzhardinge
@ 2008-01-09 1:42 ` Andi Kleen
2008-01-09 1:56 ` Jeremy Fitzhardinge
2008-01-09 9:37 ` Jan Beulich
1 sibling, 1 reply; 49+ messages in thread
From: Andi Kleen @ 2008-01-09 1:42 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Andi Kleen, Ingo Molnar, LKML, Glauber de Oliveira Costa, Jan Beulich
On Tue, Jan 08, 2008 at 05:35:26PM -0800, Jeremy Fitzhardinge wrote:
> Andi Kleen wrote:
>>> of the if()? If not, can't we just remove it and avoid this present
>>> problem?
>>>
>>
>> That would just hide your problem.
>>
>
> The "problem" is a BUG() in pageattr_64.c:change_page_attr(), which to me
> looks spurious. It arises because __PAGE_KERNEL_* doesn't contain
> _PAGE_GLOBAL, but PAGE_KERNEL_* does. When ioremap() change_page_attr(),
> it does so in a way that guarentees that the test
>
> if (pgprot_val(prot) != pgprot_val(ref_prot)) {
>
> in __change_page_attr() always succeeds. When I folded _PAGE_GLOBAL into
> the __PAGE_KERNEL_* definitions, it mostly works except it causes this if()
> to fail, falling into the otherwise dead else clause and triggers a BUG().
That means your callers pass in the wrong values.
> I'm not really sure what the logic in here is supposed to be doing, but it
> seems to me that it isn't the difference between global and non-global
> mappings (I guess its really testing for cached vs uncached mappings).
No it is testing for all page attributes. That can be cached vs uncached
but also rw vs ro and nx vs non nx and everything else you can set
as bits on ptes.
While changing global sounds weird the pageattr-test code I recently
submitted does just that for test purposes.
> Or to put it another way, what's the underlying rationale for making
> __PAGE_KERNEL_* not include the GLOBAL flag, but including it in the pgprot
> versions? It means that code like this in ioremap_64.c:
There is none, but that is not what change_page_attr() cares about.
It just cares that you pass in the correct bits and you don't currently.
I think you're missing the forrest because of all the trees currently.
-Andi
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:42 ` Andi Kleen
@ 2008-01-09 1:56 ` Jeremy Fitzhardinge
2008-01-09 2:11 ` Andi Kleen
0 siblings, 1 reply; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 1:56 UTC (permalink / raw)
To: Andi Kleen; +Cc: Ingo Molnar, LKML, Glauber de Oliveira Costa, Jan Beulich
Andi Kleen wrote:
>> Or to put it another way, what's the underlying rationale for making
>> __PAGE_KERNEL_* not include the GLOBAL flag, but including it in the pgprot
>> versions? It means that code like this in ioremap_64.c:
>>
>
> There is none, but that is not what change_page_attr() cares about.
> It just cares that you pass in the correct bits and you don't currently.
>
> I think you're missing the forrest because of all the trees currently.
>
Yeah, that may be true, but this particular tree is weird, and I'm
trying to understand what's going on here. Specifically, 64-bit
ioremap()s *don't* set _PAGE_GLOBAL, which appears to be an accident
resulting from the strange definitions of __PAGE_KERNEL_* vs
PAGE_KERNEL_*.
For example, ioremap_64.c:__ioremap() creates a vma for the io mapping,
and explicitly sets _PAGE_GLOBAL in the vma's version of pgprot - but
then it calls ioremap_page_range() to actually create the mapping, which
ends up making a non-global mapping, because its rolling its own version
of PAGE_KERNEL by using pgprot(__PAGE_KERNEL) - which is not the actual
definition of PAGE_KERNEL.
I think there's a bug around here, but I think its currently being
hidden by accident. I think my changes are correct, and they're
exposing some other bug. But I don't really understand how all this
stuff is supposed to fit together, so I'm looking for an explanation of
what's supposed to be happening - and ideally - why the current code
isn't actually buggy.
For example: is ioremap_change_attr() actually *deliberately* creating
non-global mappings? Or is it an accident? And if it really intends to
create non-global mappings, why? And why is it buggy for it to create
global mappings?
J
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:56 ` Jeremy Fitzhardinge
@ 2008-01-09 2:11 ` Andi Kleen
2008-01-09 3:22 ` Jeremy Fitzhardinge
2008-01-09 10:47 ` Ingo Molnar
0 siblings, 2 replies; 49+ messages in thread
From: Andi Kleen @ 2008-01-09 2:11 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Andi Kleen, Ingo Molnar, LKML, Glauber de Oliveira Costa, Jan Beulich
> Yeah, that may be true, but this particular tree is weird, and I'm trying
> to understand what's going on here. Specifically, 64-bit ioremap()s
> *don't* set _PAGE_GLOBAL, which appears to be an accident resulting from
> the strange definitions of __PAGE_KERNEL_* vs PAGE_KERNEL_*.
ioremap() should set G agreed.
> For example, ioremap_64.c:__ioremap() creates a vma for the io mapping, and
> explicitly sets _PAGE_GLOBAL in the vma's version of pgprot - but then it
> calls ioremap_page_range() to actually create the mapping, which ends up
> making a non-global mapping, because its rolling its own version of
> PAGE_KERNEL by using pgprot(__PAGE_KERNEL) - which is not the actual
> definition of PAGE_KERNEL.
That should not really matter because ioremap_change_attr()->c_p_a is only called
when flags is != 0 and that means it is already different from PAGE_KERNEL.
>
> I think there's a bug around here, but I think its currently being hidden
There's one Jan pointed out: iounmap does not subtract the guard page size
so it ends up resetting one page too much. That is probably what causes your
problem. But again you should be passing in G in the first place.
-Andi
Here was Jan's patch; it incidently fixes the G problem too
snip
Additionally I found it necessary to fix ioremap_64.c's use of
change_page_attr_addr():
--- a/arch/x86/mm/ioremap_64.c
+++ b/arch/x86/mm/ioremap_64.c
@@ -48,7 +48,7 @@ ioremap_change_attr(unsigned long phys_a
* Must use a address here and not struct page because the phys addr
* can be a in hole between nodes and not have an memmap entry.
*/
- err = change_page_attr_addr(vaddr,npages,__pgprot(__PAGE_KERNEL|flags));
+ err = change_page_attr_addr(vaddr,npages,MAKE_GLOBAL(__PAGE_KERNEL|flags));
if (!err)
global_flush_tlb();
}
@@ -199,7 +199,7 @@ void iounmap(volatile void __iomem *addr
/* Reset the direct mapping. Can block */
if (p->flags >> 20)
- ioremap_change_attr(p->phys_addr, p->size, 0);
+ ioremap_change_attr(p->phys_addr, get_vm_area_size(p), 0);
/* Finally remove it */
o = remove_vm_area((void *)addr);
Other extra changes I had in my version could possibly be counted as enhancements...
Jan
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 2:11 ` Andi Kleen
@ 2008-01-09 3:22 ` Jeremy Fitzhardinge
2008-01-09 10:48 ` Ingo Molnar
2008-01-09 10:47 ` Ingo Molnar
1 sibling, 1 reply; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 3:22 UTC (permalink / raw)
To: Andi Kleen; +Cc: Ingo Molnar, LKML, Glauber de Oliveira Costa, Jan Beulich
Andi Kleen wrote:
>> Yeah, that may be true, but this particular tree is weird, and I'm trying
>> to understand what's going on here. Specifically, 64-bit ioremap()s
>> *don't* set _PAGE_GLOBAL, which appears to be an accident resulting from
>> the strange definitions of __PAGE_KERNEL_* vs PAGE_KERNEL_*.
>>
>
> ioremap() should set G agreed.
>
>
>> For example, ioremap_64.c:__ioremap() creates a vma for the io mapping, and
>> explicitly sets _PAGE_GLOBAL in the vma's version of pgprot - but then it
>> calls ioremap_page_range() to actually create the mapping, which ends up
>> making a non-global mapping, because its rolling its own version of
>> PAGE_KERNEL by using pgprot(__PAGE_KERNEL) - which is not the actual
>> definition of PAGE_KERNEL.
>>
>
> That should not really matter because ioremap_change_attr()->c_p_a is only called
> when flags is != 0 and that means it is already different from PAGE_KERNEL.
>
>
>> I think there's a bug around here, but I think its currently being hidden
>>
>
> There's one Jan pointed out: iounmap does not subtract the guard page size
> so it ends up resetting one page too much. That is probably what causes your
> problem. But again you should be passing in G in the first place.
>
> -Andi
>
> Here was Jan's patch; it incidently fixes the G problem too
>
OK, great. Ingo, that means we can use this and go back to folding
_PAGE_GLOBAL into __PAGE_KERNEL_*. Well, at least give it a try.
J
> snip
>
> Additionally I found it necessary to fix ioremap_64.c's use of
> change_page_attr_addr():
>
> --- a/arch/x86/mm/ioremap_64.c
> +++ b/arch/x86/mm/ioremap_64.c
> @@ -48,7 +48,7 @@ ioremap_change_attr(unsigned long phys_a
> * Must use a address here and not struct page because the phys addr
> * can be a in hole between nodes and not have an memmap entry.
> */
> - err = change_page_attr_addr(vaddr,npages,__pgprot(__PAGE_KERNEL|flags));
> + err = change_page_attr_addr(vaddr,npages,MAKE_GLOBAL(__PAGE_KERNEL|flags));
> if (!err)
> global_flush_tlb();
> }
> @@ -199,7 +199,7 @@ void iounmap(volatile void __iomem *addr
>
> /* Reset the direct mapping. Can block */
> if (p->flags >> 20)
> - ioremap_change_attr(p->phys_addr, p->size, 0);
> + ioremap_change_attr(p->phys_addr, get_vm_area_size(p), 0);
>
> /* Finally remove it */
> o = remove_vm_area((void *)addr);
>
> Other extra changes I had in my version could possibly be counted as enhancements...
>
> Jan
>
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 10 of 10] xen: mask out PWT too
2008-01-08 22:00 ` [PATCH 10 of 10] xen: mask out PWT too Jeremy Fitzhardinge
@ 2008-01-09 9:17 ` Jan Beulich
2008-01-09 19:04 ` Jeremy Fitzhardinge
0 siblings, 1 reply; 49+ messages in thread
From: Jan Beulich @ 2008-01-09 9:17 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Ingo Molnar, Glauber de Oliveira Costa, Andi Kleen, LKML
That's somewhat ugly, as it will need to be undone/modified for Dom0 and
physical device access support. Jan
>>> Jeremy Fitzhardinge <jeremy@goop.org> 08.01.08 23:00 >>>
The hypervisor doesn't allow PCD or PWT to be set on guest ptes, so
make sure they're masked out. Also, fix up some previous mispatching.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
---
arch/x86/xen/mmu.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -244,7 +244,7 @@ pte_t xen_make_pte(unsigned long long pt
if (pte & 1)
pte = phys_to_machine(XPADDR(pte)).maddr;
- pte &= ~_PAGE_PCD;
+ pte &= ~(_PAGE_PCD | _PAGE_PWT);
return (pte_t){ .pte = pte };
}
@@ -293,9 +293,7 @@ pte_t xen_make_pte(unsigned long pte)
if (pte & _PAGE_PRESENT)
pte = phys_to_machine(XPADDR(pte)).maddr;
- pte &= ~_PAGE_PCD;
-
- pte &= ~_PAGE_PCD;
+ pte &= ~(_PAGE_PCD | _PAGE_PWT);
return (pte_t){ pte };
}
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 1:35 ` Jeremy Fitzhardinge
2008-01-09 1:42 ` Andi Kleen
@ 2008-01-09 9:37 ` Jan Beulich
1 sibling, 0 replies; 49+ messages in thread
From: Jan Beulich @ 2008-01-09 9:37 UTC (permalink / raw)
To: Jeremy Fitzhardinge, Andi Kleen
Cc: Ingo Molnar, Glauber de Oliveira Costa, LKML
>The "problem" is a BUG() in pageattr_64.c:change_page_attr(), which to
>me looks spurious. It arises because __PAGE_KERNEL_* doesn't contain
>_PAGE_GLOBAL, but PAGE_KERNEL_* does. When ioremap()
>change_page_attr(), it does so in a way that guarentees that the test
>
> if (pgprot_val(prot) != pgprot_val(ref_prot)) {
>
>in __change_page_attr() always succeeds. When I folded _PAGE_GLOBAL
>into the __PAGE_KERNEL_* definitions, it mostly works except it causes
>this if() to fail, falling into the otherwise dead else clause and
>triggers a BUG().
Indeed, and my patch version for fixing the ref-counting problem does
away with that (I don't recall whether Andi's version did, too):
if (!pgprot_match(prot, ref_prot)) {
if (!pte_huge(*kpte)) {
set_pte(kpte, pfn_pte(pfn, prot));
} else {
BUG_ON(!pgprot_match(old_prot, ref_prot));
kpte_page = split_large_page(address, prot, ref_prot);
if (!kpte_page)
return -ENOMEM;
set_pte(kpte, mk_pte(kpte_page, PAGE_KERNEL_EXEC));
}
if (pgprot_match(old_prot, ref_prot))
page_private(kpte_page)++;
} else if (!pgprot_match(ref_prot, old_prot)) {
BUG_ON(pte_huge(*kpte));
set_pte(kpte, pfn_pte(pfn, ref_prot));
BUG_ON(page_private(kpte_page) == 0);
page_private(kpte_page)--;
} else
return 0;
Jan
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 2:11 ` Andi Kleen
2008-01-09 3:22 ` Jeremy Fitzhardinge
@ 2008-01-09 10:47 ` Ingo Molnar
2008-01-09 14:26 ` Andi Kleen
1 sibling, 1 reply; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 10:47 UTC (permalink / raw)
To: Andi Kleen
Cc: Jeremy Fitzhardinge, LKML, Glauber de Oliveira Costa, Jan Beulich
* Andi Kleen <ak@suse.de> wrote:
> There's one Jan pointed out: iounmap does not subtract the guard page
> size so it ends up resetting one page too much. That is probably what
> causes your problem. But again you should be passing in G in the first
> place.
>
> -Andi
>
> Here was Jan's patch; it incidently fixes the G problem too
thanks, applied. I changed:
From: Andi Kleen <ak@suse.de>
to:
From: Jan Beulich <jbeulich@novell.com>
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 3:22 ` Jeremy Fitzhardinge
@ 2008-01-09 10:48 ` Ingo Molnar
0 siblings, 0 replies; 49+ messages in thread
From: Ingo Molnar @ 2008-01-09 10:48 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Andi Kleen, LKML, Glauber de Oliveira Costa, Jan Beulich
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> OK, great. Ingo, that means we can use this and go back to folding
> _PAGE_GLOBAL into __PAGE_KERNEL_*. Well, at least give it a try.
ok but please send a delta patch for that - the current stuff is
reasonably stable for the time being.
Ingo
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 00 of 10] x86: unify asm/pgtable.h
2008-01-09 10:47 ` Ingo Molnar
@ 2008-01-09 14:26 ` Andi Kleen
0 siblings, 0 replies; 49+ messages in thread
From: Andi Kleen @ 2008-01-09 14:26 UTC (permalink / raw)
To: Ingo Molnar
Cc: Jeremy Fitzhardinge, LKML, Glauber de Oliveira Costa, Jan Beulich
On Wednesday 09 January 2008 11:47:11 Ingo Molnar wrote:
> * Andi Kleen <ak@suse.de> wrote:
> > There's one Jan pointed out: iounmap does not subtract the guard page
> > size so it ends up resetting one page too much. That is probably what
> > causes your problem. But again you should be passing in G in the first
> > place.
> >
> > -Andi
> >
> > Here was Jan's patch; it incidently fixes the G problem too
>
> thanks, applied. I changed:
FWIW Without the reference counting fixes in the cpa series that will
likely cause leaked small page mappings at boot because the reference
counting cannot deal with it.
-Andi
^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [PATCH 10 of 10] xen: mask out PWT too
2008-01-09 9:17 ` Jan Beulich
@ 2008-01-09 19:04 ` Jeremy Fitzhardinge
0 siblings, 0 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2008-01-09 19:04 UTC (permalink / raw)
To: Jan Beulich; +Cc: Ingo Molnar, Glauber de Oliveira Costa, Andi Kleen, LKML
Jan Beulich wrote:
> That's somewhat ugly, as it will need to be undone/modified for Dom0 and
> physical device access support. Jan
>
Yes, I know, but its a quick workaround for a silent change in
hypervisor behaviour.
The proper fix would probably mask them out of the supported_pte_flags,
but that's a little more subtle to get right.
J
^ permalink raw reply [flat|nested] 49+ messages in thread
end of thread, other threads:[~2008-01-09 19:05 UTC | newest]
Thread overview: 49+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-08 22:00 [PATCH 00 of 10] x86: unify asm/pgtable.h Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 01 of 10] x86: move all asm/pgtable constants into one place Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 02 of 10] x86: avoid name conflict for Voyager leave_mm Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 03 of 10] x86/pgtable: unify pagetable accessors Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 04 of 10] x86: unify pgtable accessors which use supported_pte_mask Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 05 of 10] x86: page.h: make pte_t a union to always include pte element Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 06 of 10] x86/vmi: fix compilation as a result of pte_t changes Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 07 of 10] x86: pgtable: unify pte accessors Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 08 of 10] x86: unify zero_page definition Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 09 of 10] x86: unify paravirt pagetable accessors Jeremy Fitzhardinge
2008-01-08 22:00 ` [PATCH 10 of 10] xen: mask out PWT too Jeremy Fitzhardinge
2008-01-09 9:17 ` Jan Beulich
2008-01-09 19:04 ` Jeremy Fitzhardinge
2008-01-08 22:42 ` [PATCH 00 of 10] x86: unify asm/pgtable.h Ingo Molnar
2008-01-08 23:12 ` Ingo Molnar
2008-01-08 23:23 ` Jeremy Fitzhardinge
2008-01-08 23:28 ` Ingo Molnar
2008-01-08 23:44 ` Ingo Molnar
2008-01-08 23:51 ` Ingo Molnar
2008-01-09 0:01 ` Ingo Molnar
2008-01-09 0:13 ` Jeremy Fitzhardinge
2008-01-09 0:20 ` Ingo Molnar
2008-01-09 0:28 ` Ingo Molnar
2008-01-09 0:30 ` Ingo Molnar
2008-01-09 0:43 ` Ingo Molnar
2008-01-09 0:55 ` Jeremy Fitzhardinge
2008-01-09 1:09 ` Jeremy Fitzhardinge
2008-01-09 1:16 ` Ingo Molnar
2008-01-09 1:18 ` Andi Kleen
2008-01-09 1:22 ` Ingo Molnar
2008-01-09 1:37 ` Andi Kleen
2008-01-09 1:21 ` Jeremy Fitzhardinge
2008-01-09 1:37 ` Ingo Molnar
2008-01-09 0:53 ` Jeremy Fitzhardinge
2008-01-09 0:59 ` Ingo Molnar
2008-01-09 1:07 ` Jeremy Fitzhardinge
2008-01-09 1:12 ` Andi Kleen
2008-01-09 1:20 ` Ingo Molnar
2008-01-09 1:35 ` Jeremy Fitzhardinge
2008-01-09 1:42 ` Andi Kleen
2008-01-09 1:56 ` Jeremy Fitzhardinge
2008-01-09 2:11 ` Andi Kleen
2008-01-09 3:22 ` Jeremy Fitzhardinge
2008-01-09 10:48 ` Ingo Molnar
2008-01-09 10:47 ` Ingo Molnar
2008-01-09 14:26 ` Andi Kleen
2008-01-09 9:37 ` Jan Beulich
2008-01-09 1:11 ` Andi Kleen
2008-01-09 0:07 ` Jeremy Fitzhardinge
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).