diff options
Diffstat (limited to 'arch')
330 files changed, 5237 insertions, 4301 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index dd0e8eb8042f..a4429bcd609e 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
@@ -213,6 +213,9 @@ config USE_GENERIC_SMP_HELPERS | |||
213 | config GENERIC_SMP_IDLE_THREAD | 213 | config GENERIC_SMP_IDLE_THREAD |
214 | bool | 214 | bool |
215 | 215 | ||
216 | config GENERIC_IDLE_POLL_SETUP | ||
217 | bool | ||
218 | |||
216 | # Select if arch init_task initializer is different to init/init_task.c | 219 | # Select if arch init_task initializer is different to init/init_task.c |
217 | config ARCH_INIT_TASK | 220 | config ARCH_INIT_TASK |
218 | bool | 221 | bool |
diff --git a/arch/arc/boot/dts/abilis_tb100_dvk.dts b/arch/arc/boot/dts/abilis_tb100_dvk.dts index c0fd3623c393..0fa0d4abe795 100644 --- a/arch/arc/boot/dts/abilis_tb100_dvk.dts +++ b/arch/arc/boot/dts/abilis_tb100_dvk.dts | |||
@@ -37,7 +37,7 @@ | |||
37 | 37 | ||
38 | soc100 { | 38 | soc100 { |
39 | uart@FF100000 { | 39 | uart@FF100000 { |
40 | pinctrl-names = "abilis,simple-default"; | 40 | pinctrl-names = "default"; |
41 | pinctrl-0 = <&pctl_uart0>; | 41 | pinctrl-0 = <&pctl_uart0>; |
42 | }; | 42 | }; |
43 | ethernet@FE100000 { | 43 | ethernet@FE100000 { |
diff --git a/arch/arc/boot/dts/abilis_tb101_dvk.dts b/arch/arc/boot/dts/abilis_tb101_dvk.dts index 6f8c381f6268..a4d80ce283ae 100644 --- a/arch/arc/boot/dts/abilis_tb101_dvk.dts +++ b/arch/arc/boot/dts/abilis_tb101_dvk.dts | |||
@@ -37,7 +37,7 @@ | |||
37 | 37 | ||
38 | soc100 { | 38 | soc100 { |
39 | uart@FF100000 { | 39 | uart@FF100000 { |
40 | pinctrl-names = "abilis,simple-default"; | 40 | pinctrl-names = "default"; |
41 | pinctrl-0 = <&pctl_uart0>; | 41 | pinctrl-0 = <&pctl_uart0>; |
42 | }; | 42 | }; |
43 | ethernet@FE100000 { | 43 | ethernet@FE100000 { |
diff --git a/arch/arc/boot/dts/abilis_tb10x.dtsi b/arch/arc/boot/dts/abilis_tb10x.dtsi index a6139fc5aaa3..b97e3051ba4b 100644 --- a/arch/arc/boot/dts/abilis_tb10x.dtsi +++ b/arch/arc/boot/dts/abilis_tb10x.dtsi | |||
@@ -88,8 +88,7 @@ | |||
88 | }; | 88 | }; |
89 | 89 | ||
90 | uart@FF100000 { | 90 | uart@FF100000 { |
91 | compatible = "snps,dw-apb-uart", | 91 | compatible = "snps,dw-apb-uart"; |
92 | "abilis,simple-pinctrl"; | ||
93 | reg = <0xFF100000 0x100>; | 92 | reg = <0xFF100000 0x100>; |
94 | clock-frequency = <166666666>; | 93 | clock-frequency = <166666666>; |
95 | interrupts = <25 1>; | 94 | interrupts = <25 1>; |
@@ -184,8 +183,7 @@ | |||
184 | #address-cells = <1>; | 183 | #address-cells = <1>; |
185 | #size-cells = <0>; | 184 | #size-cells = <0>; |
186 | cell-index = <1>; | 185 | cell-index = <1>; |
187 | compatible = "abilis,tb100-spi", | 186 | compatible = "abilis,tb100-spi"; |
188 | "abilis,simple-pinctrl"; | ||
189 | num-cs = <2>; | 187 | num-cs = <2>; |
190 | reg = <0xFE011000 0x20>; | 188 | reg = <0xFE011000 0x20>; |
191 | interrupt-parent = <&tb10x_ictl>; | 189 | interrupt-parent = <&tb10x_ictl>; |
diff --git a/arch/arc/include/asm/cacheflush.h b/arch/arc/include/asm/cacheflush.h index 9f841af41092..ef62682e8d95 100644 --- a/arch/arc/include/asm/cacheflush.h +++ b/arch/arc/include/asm/cacheflush.h | |||
@@ -93,14 +93,16 @@ static inline int cache_is_vipt_aliasing(void) | |||
93 | #endif | 93 | #endif |
94 | } | 94 | } |
95 | 95 | ||
96 | #define CACHE_COLOR(addr) (((unsigned long)(addr) >> (PAGE_SHIFT)) & 3) | 96 | #define CACHE_COLOR(addr) (((unsigned long)(addr) >> (PAGE_SHIFT)) & 1) |
97 | 97 | ||
98 | /* | 98 | /* |
99 | * checks if two addresses (after page aligning) index into same cache set | 99 | * checks if two addresses (after page aligning) index into same cache set |
100 | */ | 100 | */ |
101 | #define addr_not_cache_congruent(addr1, addr2) \ | 101 | #define addr_not_cache_congruent(addr1, addr2) \ |
102 | ({ \ | ||
102 | cache_is_vipt_aliasing() ? \ | 103 | cache_is_vipt_aliasing() ? \ |
103 | (CACHE_COLOR(addr1) != CACHE_COLOR(addr2)) : 0 \ | 104 | (CACHE_COLOR(addr1) != CACHE_COLOR(addr2)) : 0; \ |
105 | }) | ||
104 | 106 | ||
105 | #define copy_to_user_page(vma, page, vaddr, dst, src, len) \ | 107 | #define copy_to_user_page(vma, page, vaddr, dst, src, len) \ |
106 | do { \ | 108 | do { \ |
diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h index 374a35514116..ab84bf131fe1 100644 --- a/arch/arc/include/asm/page.h +++ b/arch/arc/include/asm/page.h | |||
@@ -19,13 +19,6 @@ | |||
19 | #define clear_page(paddr) memset((paddr), 0, PAGE_SIZE) | 19 | #define clear_page(paddr) memset((paddr), 0, PAGE_SIZE) |
20 | #define copy_page(to, from) memcpy((to), (from), PAGE_SIZE) | 20 | #define copy_page(to, from) memcpy((to), (from), PAGE_SIZE) |
21 | 21 | ||
22 | #ifndef CONFIG_ARC_CACHE_VIPT_ALIASING | ||
23 | |||
24 | #define clear_user_page(addr, vaddr, pg) clear_page(addr) | ||
25 | #define copy_user_page(vto, vfrom, vaddr, pg) copy_page(vto, vfrom) | ||
26 | |||
27 | #else /* VIPT aliasing dcache */ | ||
28 | |||
29 | struct vm_area_struct; | 22 | struct vm_area_struct; |
30 | struct page; | 23 | struct page; |
31 | 24 | ||
@@ -35,8 +28,6 @@ void copy_user_highpage(struct page *to, struct page *from, | |||
35 | unsigned long u_vaddr, struct vm_area_struct *vma); | 28 | unsigned long u_vaddr, struct vm_area_struct *vma); |
36 | void clear_user_page(void *to, unsigned long u_vaddr, struct page *page); | 29 | void clear_user_page(void *to, unsigned long u_vaddr, struct page *page); |
37 | 30 | ||
38 | #endif /* CONFIG_ARC_CACHE_VIPT_ALIASING */ | ||
39 | |||
40 | #undef STRICT_MM_TYPECHECKS | 31 | #undef STRICT_MM_TYPECHECKS |
41 | 32 | ||
42 | #ifdef STRICT_MM_TYPECHECKS | 33 | #ifdef STRICT_MM_TYPECHECKS |
diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h index 1cc4720faccb..95b1522212a7 100644 --- a/arch/arc/include/asm/pgtable.h +++ b/arch/arc/include/asm/pgtable.h | |||
@@ -57,9 +57,9 @@ | |||
57 | 57 | ||
58 | #define _PAGE_ACCESSED (1<<1) /* Page is accessed (S) */ | 58 | #define _PAGE_ACCESSED (1<<1) /* Page is accessed (S) */ |
59 | #define _PAGE_CACHEABLE (1<<2) /* Page is cached (H) */ | 59 | #define _PAGE_CACHEABLE (1<<2) /* Page is cached (H) */ |
60 | #define _PAGE_EXECUTE (1<<3) /* Page has user execute perm (H) */ | 60 | #define _PAGE_U_EXECUTE (1<<3) /* Page has user execute perm (H) */ |
61 | #define _PAGE_WRITE (1<<4) /* Page has user write perm (H) */ | 61 | #define _PAGE_U_WRITE (1<<4) /* Page has user write perm (H) */ |
62 | #define _PAGE_READ (1<<5) /* Page has user read perm (H) */ | 62 | #define _PAGE_U_READ (1<<5) /* Page has user read perm (H) */ |
63 | #define _PAGE_K_EXECUTE (1<<6) /* Page has kernel execute perm (H) */ | 63 | #define _PAGE_K_EXECUTE (1<<6) /* Page has kernel execute perm (H) */ |
64 | #define _PAGE_K_WRITE (1<<7) /* Page has kernel write perm (H) */ | 64 | #define _PAGE_K_WRITE (1<<7) /* Page has kernel write perm (H) */ |
65 | #define _PAGE_K_READ (1<<8) /* Page has kernel perm (H) */ | 65 | #define _PAGE_K_READ (1<<8) /* Page has kernel perm (H) */ |
@@ -72,9 +72,9 @@ | |||
72 | 72 | ||
73 | /* PD1 */ | 73 | /* PD1 */ |
74 | #define _PAGE_CACHEABLE (1<<0) /* Page is cached (H) */ | 74 | #define _PAGE_CACHEABLE (1<<0) /* Page is cached (H) */ |
75 | #define _PAGE_EXECUTE (1<<1) /* Page has user execute perm (H) */ | 75 | #define _PAGE_U_EXECUTE (1<<1) /* Page has user execute perm (H) */ |
76 | #define _PAGE_WRITE (1<<2) /* Page has user write perm (H) */ | 76 | #define _PAGE_U_WRITE (1<<2) /* Page has user write perm (H) */ |
77 | #define _PAGE_READ (1<<3) /* Page has user read perm (H) */ | 77 | #define _PAGE_U_READ (1<<3) /* Page has user read perm (H) */ |
78 | #define _PAGE_K_EXECUTE (1<<4) /* Page has kernel execute perm (H) */ | 78 | #define _PAGE_K_EXECUTE (1<<4) /* Page has kernel execute perm (H) */ |
79 | #define _PAGE_K_WRITE (1<<5) /* Page has kernel write perm (H) */ | 79 | #define _PAGE_K_WRITE (1<<5) /* Page has kernel write perm (H) */ |
80 | #define _PAGE_K_READ (1<<6) /* Page has kernel perm (H) */ | 80 | #define _PAGE_K_READ (1<<6) /* Page has kernel perm (H) */ |
@@ -93,7 +93,8 @@ | |||
93 | #endif | 93 | #endif |
94 | 94 | ||
95 | /* Kernel allowed all permissions for all pages */ | 95 | /* Kernel allowed all permissions for all pages */ |
96 | #define _K_PAGE_PERMS (_PAGE_K_EXECUTE | _PAGE_K_WRITE | _PAGE_K_READ) | 96 | #define _K_PAGE_PERMS (_PAGE_K_EXECUTE | _PAGE_K_WRITE | _PAGE_K_READ | \ |
97 | _PAGE_GLOBAL | _PAGE_PRESENT) | ||
97 | 98 | ||
98 | #ifdef CONFIG_ARC_CACHE_PAGES | 99 | #ifdef CONFIG_ARC_CACHE_PAGES |
99 | #define _PAGE_DEF_CACHEABLE _PAGE_CACHEABLE | 100 | #define _PAGE_DEF_CACHEABLE _PAGE_CACHEABLE |
@@ -106,7 +107,11 @@ | |||
106 | * -by default cached, unless config otherwise | 107 | * -by default cached, unless config otherwise |
107 | * -present in memory | 108 | * -present in memory |
108 | */ | 109 | */ |
109 | #define ___DEF (_PAGE_PRESENT | _K_PAGE_PERMS | _PAGE_DEF_CACHEABLE) | 110 | #define ___DEF (_PAGE_PRESENT | _PAGE_DEF_CACHEABLE) |
111 | |||
112 | #define _PAGE_READ (_PAGE_U_READ | _PAGE_K_READ) | ||
113 | #define _PAGE_WRITE (_PAGE_U_WRITE | _PAGE_K_WRITE) | ||
114 | #define _PAGE_EXECUTE (_PAGE_U_EXECUTE | _PAGE_K_EXECUTE) | ||
110 | 115 | ||
111 | /* Set of bits not changed in pte_modify */ | 116 | /* Set of bits not changed in pte_modify */ |
112 | #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_MODIFIED) | 117 | #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_MODIFIED) |
@@ -125,11 +130,10 @@ | |||
125 | * kernel vaddr space - visible in all addr spaces, but kernel mode only | 130 | * kernel vaddr space - visible in all addr spaces, but kernel mode only |
126 | * Thus Global, all-kernel-access, no-user-access, cached | 131 | * Thus Global, all-kernel-access, no-user-access, cached |
127 | */ | 132 | */ |
128 | #define PAGE_KERNEL __pgprot(___DEF | _PAGE_GLOBAL) | 133 | #define PAGE_KERNEL __pgprot(_K_PAGE_PERMS | _PAGE_DEF_CACHEABLE) |
129 | 134 | ||
130 | /* ioremap */ | 135 | /* ioremap */ |
131 | #define PAGE_KERNEL_NO_CACHE __pgprot(_PAGE_PRESENT | _K_PAGE_PERMS | \ | 136 | #define PAGE_KERNEL_NO_CACHE __pgprot(_K_PAGE_PERMS) |
132 | _PAGE_GLOBAL) | ||
133 | 137 | ||
134 | /************************************************************************** | 138 | /************************************************************************** |
135 | * Mapping of vm_flags (Generic VM) to PTE flags (arch specific) | 139 | * Mapping of vm_flags (Generic VM) to PTE flags (arch specific) |
diff --git a/arch/arc/include/asm/tlb.h b/arch/arc/include/asm/tlb.h index 85b6df839bd7..cb0c708ca665 100644 --- a/arch/arc/include/asm/tlb.h +++ b/arch/arc/include/asm/tlb.h | |||
@@ -16,7 +16,7 @@ | |||
16 | /* Masks for actual TLB "PD"s */ | 16 | /* Masks for actual TLB "PD"s */ |
17 | #define PTE_BITS_IN_PD0 (_PAGE_GLOBAL | _PAGE_PRESENT) | 17 | #define PTE_BITS_IN_PD0 (_PAGE_GLOBAL | _PAGE_PRESENT) |
18 | #define PTE_BITS_IN_PD1 (PAGE_MASK | _PAGE_CACHEABLE | \ | 18 | #define PTE_BITS_IN_PD1 (PAGE_MASK | _PAGE_CACHEABLE | \ |
19 | _PAGE_EXECUTE | _PAGE_WRITE | _PAGE_READ | \ | 19 | _PAGE_U_EXECUTE | _PAGE_U_WRITE | _PAGE_U_READ | \ |
20 | _PAGE_K_EXECUTE | _PAGE_K_WRITE | _PAGE_K_READ) | 20 | _PAGE_K_EXECUTE | _PAGE_K_WRITE | _PAGE_K_READ) |
21 | 21 | ||
22 | #ifndef __ASSEMBLY__ | 22 | #ifndef __ASSEMBLY__ |
diff --git a/arch/arc/mm/cache_arc700.c b/arch/arc/mm/cache_arc700.c index 2f12bca8aef3..aedce1905441 100644 --- a/arch/arc/mm/cache_arc700.c +++ b/arch/arc/mm/cache_arc700.c | |||
@@ -610,7 +610,7 @@ void __sync_icache_dcache(unsigned long paddr, unsigned long vaddr, int len) | |||
610 | 610 | ||
611 | local_irq_save(flags); | 611 | local_irq_save(flags); |
612 | __ic_line_inv_vaddr(paddr, vaddr, len); | 612 | __ic_line_inv_vaddr(paddr, vaddr, len); |
613 | __dc_line_op(paddr, vaddr, len, OP_FLUSH); | 613 | __dc_line_op(paddr, vaddr, len, OP_FLUSH_N_INV); |
614 | local_irq_restore(flags); | 614 | local_irq_restore(flags); |
615 | } | 615 | } |
616 | 616 | ||
@@ -676,6 +676,17 @@ void flush_cache_range(struct vm_area_struct *vma, unsigned long start, | |||
676 | flush_cache_all(); | 676 | flush_cache_all(); |
677 | } | 677 | } |
678 | 678 | ||
679 | void flush_anon_page(struct vm_area_struct *vma, struct page *page, | ||
680 | unsigned long u_vaddr) | ||
681 | { | ||
682 | /* TBD: do we really need to clear the kernel mapping */ | ||
683 | __flush_dcache_page(page_address(page), u_vaddr); | ||
684 | __flush_dcache_page(page_address(page), page_address(page)); | ||
685 | |||
686 | } | ||
687 | |||
688 | #endif | ||
689 | |||
679 | void copy_user_highpage(struct page *to, struct page *from, | 690 | void copy_user_highpage(struct page *to, struct page *from, |
680 | unsigned long u_vaddr, struct vm_area_struct *vma) | 691 | unsigned long u_vaddr, struct vm_area_struct *vma) |
681 | { | 692 | { |
@@ -725,16 +736,6 @@ void clear_user_page(void *to, unsigned long u_vaddr, struct page *page) | |||
725 | set_bit(PG_arch_1, &page->flags); | 736 | set_bit(PG_arch_1, &page->flags); |
726 | } | 737 | } |
727 | 738 | ||
728 | void flush_anon_page(struct vm_area_struct *vma, struct page *page, | ||
729 | unsigned long u_vaddr) | ||
730 | { | ||
731 | /* TBD: do we really need to clear the kernel mapping */ | ||
732 | __flush_dcache_page(page_address(page), u_vaddr); | ||
733 | __flush_dcache_page(page_address(page), page_address(page)); | ||
734 | |||
735 | } | ||
736 | |||
737 | #endif | ||
738 | 739 | ||
739 | /********************************************************************** | 740 | /********************************************************************** |
740 | * Explicit Cache flush request from user space via syscall | 741 | * Explicit Cache flush request from user space via syscall |
diff --git a/arch/arc/mm/tlb.c b/arch/arc/mm/tlb.c index 066145b5f348..fe1c5a073afe 100644 --- a/arch/arc/mm/tlb.c +++ b/arch/arc/mm/tlb.c | |||
@@ -444,7 +444,8 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr_unaligned, | |||
444 | * so userspace sees the right data. | 444 | * so userspace sees the right data. |
445 | * (Avoids the flush for Non-exec + congruent mapping case) | 445 | * (Avoids the flush for Non-exec + congruent mapping case) |
446 | */ | 446 | */ |
447 | if (vma->vm_flags & VM_EXEC || addr_not_cache_congruent(paddr, vaddr)) { | 447 | if ((vma->vm_flags & VM_EXEC) || |
448 | addr_not_cache_congruent(paddr, vaddr)) { | ||
448 | struct page *page = pfn_to_page(pte_pfn(*ptep)); | 449 | struct page *page = pfn_to_page(pte_pfn(*ptep)); |
449 | 450 | ||
450 | int dirty = test_and_clear_bit(PG_arch_1, &page->flags); | 451 | int dirty = test_and_clear_bit(PG_arch_1, &page->flags); |
diff --git a/arch/arc/mm/tlbex.S b/arch/arc/mm/tlbex.S index 9df765dc7c3a..3357d26ffe54 100644 --- a/arch/arc/mm/tlbex.S +++ b/arch/arc/mm/tlbex.S | |||
@@ -277,7 +277,7 @@ ARC_ENTRY EV_TLBMissI | |||
277 | ;---------------------------------------------------------------- | 277 | ;---------------------------------------------------------------- |
278 | ; VERIFY_PTE: Check if PTE permissions approp for executing code | 278 | ; VERIFY_PTE: Check if PTE permissions approp for executing code |
279 | cmp_s r2, VMALLOC_START | 279 | cmp_s r2, VMALLOC_START |
280 | mov.lo r2, (_PAGE_PRESENT | _PAGE_READ | _PAGE_EXECUTE) | 280 | mov.lo r2, (_PAGE_PRESENT | _PAGE_U_READ | _PAGE_U_EXECUTE) |
281 | mov.hs r2, (_PAGE_PRESENT | _PAGE_K_READ | _PAGE_K_EXECUTE) | 281 | mov.hs r2, (_PAGE_PRESENT | _PAGE_K_READ | _PAGE_K_EXECUTE) |
282 | 282 | ||
283 | and r3, r0, r2 ; Mask out NON Flag bits from PTE | 283 | and r3, r0, r2 ; Mask out NON Flag bits from PTE |
@@ -320,9 +320,9 @@ ARC_ENTRY EV_TLBMissD | |||
320 | mov_s r2, 0 | 320 | mov_s r2, 0 |
321 | lr r3, [ecr] | 321 | lr r3, [ecr] |
322 | btst_s r3, ECR_C_BIT_DTLB_LD_MISS ; Read Access | 322 | btst_s r3, ECR_C_BIT_DTLB_LD_MISS ; Read Access |
323 | or.nz r2, r2, _PAGE_READ ; chk for Read flag in PTE | 323 | or.nz r2, r2, _PAGE_U_READ ; chk for Read flag in PTE |
324 | btst_s r3, ECR_C_BIT_DTLB_ST_MISS ; Write Access | 324 | btst_s r3, ECR_C_BIT_DTLB_ST_MISS ; Write Access |
325 | or.nz r2, r2, _PAGE_WRITE ; chk for Write flag in PTE | 325 | or.nz r2, r2, _PAGE_U_WRITE ; chk for Write flag in PTE |
326 | ; Above laddering takes care of XCHG access | 326 | ; Above laddering takes care of XCHG access |
327 | ; which is both Read and Write | 327 | ; which is both Read and Write |
328 | 328 | ||
diff --git a/arch/arc/plat-tb10x/tb10x.c b/arch/arc/plat-tb10x/tb10x.c index d3567691c7e1..06cb30929460 100644 --- a/arch/arc/plat-tb10x/tb10x.c +++ b/arch/arc/plat-tb10x/tb10x.c | |||
@@ -34,31 +34,6 @@ static void __init tb10x_platform_init(void) | |||
34 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | 34 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
35 | } | 35 | } |
36 | 36 | ||
37 | static void __init tb10x_platform_late_init(void) | ||
38 | { | ||
39 | struct device_node *dn; | ||
40 | |||
41 | /* | ||
42 | * Pinctrl documentation recommends setting up the iomux here for | ||
43 | * all modules which don't require control over the pins themselves. | ||
44 | * Modules which need this kind of assistance are compatible with | ||
45 | * "abilis,simple-pinctrl", i.e. we can easily iterate over them. | ||
46 | * TODO: Does this recommended method work cleanly with pins required | ||
47 | * by modules? | ||
48 | */ | ||
49 | for_each_compatible_node(dn, NULL, "abilis,simple-pinctrl") { | ||
50 | struct platform_device *pd = of_find_device_by_node(dn); | ||
51 | struct pinctrl *pctl; | ||
52 | |||
53 | pctl = pinctrl_get_select(&pd->dev, "abilis,simple-default"); | ||
54 | if (IS_ERR(pctl)) { | ||
55 | int ret = PTR_ERR(pctl); | ||
56 | dev_err(&pd->dev, "Could not set up pinctrl: %d\n", | ||
57 | ret); | ||
58 | } | ||
59 | } | ||
60 | } | ||
61 | |||
62 | static const char *tb10x_compat[] __initdata = { | 37 | static const char *tb10x_compat[] __initdata = { |
63 | "abilis,arc-tb10x", | 38 | "abilis,arc-tb10x", |
64 | NULL, | 39 | NULL, |
@@ -67,5 +42,4 @@ static const char *tb10x_compat[] __initdata = { | |||
67 | MACHINE_START(TB10x, "tb10x") | 42 | MACHINE_START(TB10x, "tb10x") |
68 | .dt_compat = tb10x_compat, | 43 | .dt_compat = tb10x_compat, |
69 | .init_machine = tb10x_platform_init, | 44 | .init_machine = tb10x_platform_init, |
70 | .init_late = tb10x_platform_late_init, | ||
71 | MACHINE_END | 45 | MACHINE_END |
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index d423d58f938d..0574901dd744 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -38,6 +38,7 @@ config ARM | |||
38 | select HAVE_GENERIC_HARDIRQS | 38 | select HAVE_GENERIC_HARDIRQS |
39 | select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)) | 39 | select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)) |
40 | select HAVE_IDE if PCI || ISA || PCMCIA | 40 | select HAVE_IDE if PCI || ISA || PCMCIA |
41 | select HAVE_IRQ_TIME_ACCOUNTING | ||
41 | select HAVE_KERNEL_GZIP | 42 | select HAVE_KERNEL_GZIP |
42 | select HAVE_KERNEL_LZMA | 43 | select HAVE_KERNEL_LZMA |
43 | select HAVE_KERNEL_LZO | 44 | select HAVE_KERNEL_LZO |
@@ -488,7 +489,7 @@ config ARCH_IXP4XX | |||
488 | config ARCH_DOVE | 489 | config ARCH_DOVE |
489 | bool "Marvell Dove" | 490 | bool "Marvell Dove" |
490 | select ARCH_REQUIRE_GPIOLIB | 491 | select ARCH_REQUIRE_GPIOLIB |
491 | select CPU_V7 | 492 | select CPU_PJ4 |
492 | select GENERIC_CLOCKEVENTS | 493 | select GENERIC_CLOCKEVENTS |
493 | select MIGHT_HAVE_PCI | 494 | select MIGHT_HAVE_PCI |
494 | select PINCTRL | 495 | select PINCTRL |
@@ -2053,53 +2054,6 @@ menu "CPU Power Management" | |||
2053 | 2054 | ||
2054 | if ARCH_HAS_CPUFREQ | 2055 | if ARCH_HAS_CPUFREQ |
2055 | source "drivers/cpufreq/Kconfig" | 2056 | source "drivers/cpufreq/Kconfig" |
2056 | |||
2057 | config CPU_FREQ_S3C | ||
2058 | bool | ||
2059 | help | ||
2060 | Internal configuration node for common cpufreq on Samsung SoC | ||
2061 | |||
2062 | config CPU_FREQ_S3C24XX | ||
2063 | bool "CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL)" | ||
2064 | depends on ARCH_S3C24XX && CPU_FREQ | ||
2065 | select CPU_FREQ_S3C | ||
2066 | help | ||
2067 | This enables the CPUfreq driver for the Samsung S3C24XX family | ||
2068 | of CPUs. | ||
2069 | |||
2070 | For details, take a look at <file:Documentation/cpu-freq>. | ||
2071 | |||
2072 | If in doubt, say N. | ||
2073 | |||
2074 | config CPU_FREQ_S3C24XX_PLL | ||
2075 | bool "Support CPUfreq changing of PLL frequency (EXPERIMENTAL)" | ||
2076 | depends on CPU_FREQ_S3C24XX | ||
2077 | help | ||
2078 | Compile in support for changing the PLL frequency from the | ||
2079 | S3C24XX series CPUfreq driver. The PLL takes time to settle | ||
2080 | after a frequency change, so by default it is not enabled. | ||
2081 | |||
2082 | This also means that the PLL tables for the selected CPU(s) will | ||
2083 | be built which may increase the size of the kernel image. | ||
2084 | |||
2085 | config CPU_FREQ_S3C24XX_DEBUG | ||
2086 | bool "Debug CPUfreq Samsung driver core" | ||
2087 | depends on CPU_FREQ_S3C24XX | ||
2088 | help | ||
2089 | Enable s3c_freq_dbg for the Samsung S3C CPUfreq core | ||
2090 | |||
2091 | config CPU_FREQ_S3C24XX_IODEBUG | ||
2092 | bool "Debug CPUfreq Samsung driver IO timing" | ||
2093 | depends on CPU_FREQ_S3C24XX | ||
2094 | help | ||
2095 | Enable s3c_freq_iodbg for the Samsung S3C CPUfreq core | ||
2096 | |||
2097 | config CPU_FREQ_S3C24XX_DEBUGFS | ||
2098 | bool "Export debugfs for CPUFreq" | ||
2099 | depends on CPU_FREQ_S3C24XX && DEBUG_FS | ||
2100 | help | ||
2101 | Export status information via debugfs. | ||
2102 | |||
2103 | endif | 2057 | endif |
2104 | 2058 | ||
2105 | source "drivers/cpuidle/Kconfig" | 2059 | source "drivers/cpuidle/Kconfig" |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 47374085befd..1ba358ba16b8 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -309,7 +309,7 @@ define archhelp | |||
309 | echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' | 309 | echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' |
310 | echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)' | 310 | echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)' |
311 | echo ' uImage - U-Boot wrapped zImage' | 311 | echo ' uImage - U-Boot wrapped zImage' |
312 | echo ' bootpImage - Combined zImage and initial RAM disk' | 312 | echo ' bootpImage - Combined zImage and initial RAM disk' |
313 | echo ' (supply initrd image via make variable INITRD=<path>)' | 313 | echo ' (supply initrd image via make variable INITRD=<path>)' |
314 | echo '* dtbs - Build device tree blobs for enabled boards' | 314 | echo '* dtbs - Build device tree blobs for enabled boards' |
315 | echo ' install - Install uncompressed kernel' | 315 | echo ' install - Install uncompressed kernel' |
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index b9f7121e6ecf..f0895c581a89 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
@@ -177,7 +177,9 @@ dtb-$(CONFIG_ARCH_SPEAR3XX)+= spear300-evb.dtb \ | |||
177 | spear320-evb.dtb \ | 177 | spear320-evb.dtb \ |
178 | spear320-hmi.dtb | 178 | spear320-hmi.dtb |
179 | dtb-$(CONFIG_ARCH_SPEAR6XX)+= spear600-evb.dtb | 179 | dtb-$(CONFIG_ARCH_SPEAR6XX)+= spear600-evb.dtb |
180 | dtb-$(CONFIG_ARCH_SUNXI) += sun4i-a10-cubieboard.dtb \ | 180 | dtb-$(CONFIG_ARCH_SUNXI) += \ |
181 | sun4i-a10-cubieboard.dtb \ | ||
182 | sun4i-a10-mini-xplus.dtb \ | ||
181 | sun4i-a10-hackberry.dtb \ | 183 | sun4i-a10-hackberry.dtb \ |
182 | sun5i-a13-olinuxino.dtb | 184 | sun5i-a13-olinuxino.dtb |
183 | dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \ | 185 | dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \ |
diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi index 272bbc65fab0..550eb772c30e 100644 --- a/arch/arm/boot/dts/armada-370-xp.dtsi +++ b/arch/arm/boot/dts/armada-370-xp.dtsi | |||
@@ -33,7 +33,8 @@ | |||
33 | #size-cells = <1>; | 33 | #size-cells = <1>; |
34 | compatible = "simple-bus"; | 34 | compatible = "simple-bus"; |
35 | interrupt-parent = <&mpic>; | 35 | interrupt-parent = <&mpic>; |
36 | ranges = <0 0 0xd0000000 0x100000>; | 36 | ranges = <0 0 0xd0000000 0x0100000 /* internal registers */ |
37 | 0xe0000000 0 0xe0000000 0x8100000 /* PCIe */>; | ||
37 | 38 | ||
38 | internal-regs { | 39 | internal-regs { |
39 | compatible = "simple-bus"; | 40 | compatible = "simple-bus"; |
diff --git a/arch/arm/boot/dts/armada-370.dtsi b/arch/arm/boot/dts/armada-370.dtsi index b2c1b5af9749..aee2b1866ce2 100644 --- a/arch/arm/boot/dts/armada-370.dtsi +++ b/arch/arm/boot/dts/armada-370.dtsi | |||
@@ -29,7 +29,8 @@ | |||
29 | }; | 29 | }; |
30 | 30 | ||
31 | soc { | 31 | soc { |
32 | ranges = <0 0xd0000000 0x100000>; | 32 | ranges = <0 0xd0000000 0x0100000 /* internal registers */ |
33 | 0xe0000000 0xe0000000 0x8100000 /* PCIe */>; | ||
33 | internal-regs { | 34 | internal-regs { |
34 | system-controller@18200 { | 35 | system-controller@18200 { |
35 | compatible = "marvell,armada-370-xp-system-controller"; | 36 | compatible = "marvell,armada-370-xp-system-controller"; |
@@ -38,12 +39,12 @@ | |||
38 | 39 | ||
39 | L2: l2-cache { | 40 | L2: l2-cache { |
40 | compatible = "marvell,aurora-outer-cache"; | 41 | compatible = "marvell,aurora-outer-cache"; |
41 | reg = <0xd0008000 0x1000>; | 42 | reg = <0x08000 0x1000>; |
42 | cache-id-part = <0x100>; | 43 | cache-id-part = <0x100>; |
43 | wt-override; | 44 | wt-override; |
44 | }; | 45 | }; |
45 | 46 | ||
46 | mpic: interrupt-controller@20000 { | 47 | interrupt-controller@20000 { |
47 | reg = <0x20a00 0x1d0>, <0x21870 0x58>; | 48 | reg = <0x20a00 0x1d0>, <0x21870 0x58>; |
48 | }; | 49 | }; |
49 | 50 | ||
diff --git a/arch/arm/boot/dts/armada-xp-gp.dts b/arch/arm/boot/dts/armada-xp-gp.dts index 26ad06fc147e..3ee63d128e27 100644 --- a/arch/arm/boot/dts/armada-xp-gp.dts +++ b/arch/arm/boot/dts/armada-xp-gp.dts | |||
@@ -39,6 +39,9 @@ | |||
39 | }; | 39 | }; |
40 | 40 | ||
41 | soc { | 41 | soc { |
42 | ranges = <0 0 0xd0000000 0x100000 | ||
43 | 0xf0000000 0 0xf0000000 0x1000000>; | ||
44 | |||
42 | internal-regs { | 45 | internal-regs { |
43 | serial@12000 { | 46 | serial@12000 { |
44 | clock-frequency = <250000000>; | 47 | clock-frequency = <250000000>; |
diff --git a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts index f14d36c46159..46b785064dd8 100644 --- a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts +++ b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts | |||
@@ -27,6 +27,9 @@ | |||
27 | }; | 27 | }; |
28 | 28 | ||
29 | soc { | 29 | soc { |
30 | ranges = <0 0 0xd0000000 0x100000 | ||
31 | 0xf0000000 0 0xf0000000 0x8000000>; | ||
32 | |||
30 | internal-regs { | 33 | internal-regs { |
31 | serial@12000 { | 34 | serial@12000 { |
32 | clock-frequency = <250000000>; | 35 | clock-frequency = <250000000>; |
diff --git a/arch/arm/boot/dts/armada-xp.dtsi b/arch/arm/boot/dts/armada-xp.dtsi index bacab11c10dc..5b902f9a3af2 100644 --- a/arch/arm/boot/dts/armada-xp.dtsi +++ b/arch/arm/boot/dts/armada-xp.dtsi | |||
@@ -31,7 +31,7 @@ | |||
31 | wt-override; | 31 | wt-override; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | mpic: interrupt-controller@20000 { | 34 | interrupt-controller@20000 { |
35 | reg = <0x20a00 0x2d0>, <0x21070 0x58>; | 35 | reg = <0x20a00 0x2d0>, <0x21070 0x58>; |
36 | }; | 36 | }; |
37 | 37 | ||
diff --git a/arch/arm/boot/dts/at91sam9260.dtsi b/arch/arm/boot/dts/at91sam9260.dtsi index 70b5ccbac234..84c4bef2d726 100644 --- a/arch/arm/boot/dts/at91sam9260.dtsi +++ b/arch/arm/boot/dts/at91sam9260.dtsi | |||
@@ -264,7 +264,7 @@ | |||
264 | atmel,pins = | 264 | atmel,pins = |
265 | <0 10 0x2 0x0 /* PA10 periph B */ | 265 | <0 10 0x2 0x0 /* PA10 periph B */ |
266 | 0 11 0x2 0x0 /* PA11 periph B */ | 266 | 0 11 0x2 0x0 /* PA11 periph B */ |
267 | 0 24 0x2 0x0 /* PA24 periph B */ | 267 | 0 22 0x2 0x0 /* PA22 periph B */ |
268 | 0 25 0x2 0x0 /* PA25 periph B */ | 268 | 0 25 0x2 0x0 /* PA25 periph B */ |
269 | 0 26 0x2 0x0 /* PA26 periph B */ | 269 | 0 26 0x2 0x0 /* PA26 periph B */ |
270 | 0 27 0x2 0x0 /* PA27 periph B */ | 270 | 0 27 0x2 0x0 /* PA27 periph B */ |
diff --git a/arch/arm/boot/dts/at91sam9n12.dtsi b/arch/arm/boot/dts/at91sam9n12.dtsi index 3de8e6dfbcb1..8d25f889928e 100644 --- a/arch/arm/boot/dts/at91sam9n12.dtsi +++ b/arch/arm/boot/dts/at91sam9n12.dtsi | |||
@@ -57,6 +57,7 @@ | |||
57 | compatible = "atmel,at91rm9200-aic"; | 57 | compatible = "atmel,at91rm9200-aic"; |
58 | interrupt-controller; | 58 | interrupt-controller; |
59 | reg = <0xfffff000 0x200>; | 59 | reg = <0xfffff000 0x200>; |
60 | atmel,external-irqs = <31>; | ||
60 | }; | 61 | }; |
61 | 62 | ||
62 | ramc0: ramc@ffffe800 { | 63 | ramc0: ramc@ffffe800 { |
diff --git a/arch/arm/boot/dts/at91sam9x25ek.dts b/arch/arm/boot/dts/at91sam9x25ek.dts index 3b40d11d65e7..315250b4995e 100644 --- a/arch/arm/boot/dts/at91sam9x25ek.dts +++ b/arch/arm/boot/dts/at91sam9x25ek.dts | |||
@@ -11,7 +11,7 @@ | |||
11 | /include/ "at91sam9x5ek.dtsi" | 11 | /include/ "at91sam9x5ek.dtsi" |
12 | 12 | ||
13 | / { | 13 | / { |
14 | model = "Atmel AT91SAM9G25-EK"; | 14 | model = "Atmel AT91SAM9X25-EK"; |
15 | compatible = "atmel,at91sam9x25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; | 15 | compatible = "atmel,at91sam9x25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; |
16 | 16 | ||
17 | ahb { | 17 | ahb { |
diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi index f0052dccf9a8..1e12aeff403b 100644 --- a/arch/arm/boot/dts/bcm2835.dtsi +++ b/arch/arm/boot/dts/bcm2835.dtsi | |||
@@ -44,6 +44,7 @@ | |||
44 | reg = <0x7e201000 0x1000>; | 44 | reg = <0x7e201000 0x1000>; |
45 | interrupts = <2 25>; | 45 | interrupts = <2 25>; |
46 | clock-frequency = <3000000>; | 46 | clock-frequency = <3000000>; |
47 | arm,primecell-periphid = <0x00241011>; | ||
47 | }; | 48 | }; |
48 | 49 | ||
49 | gpio: gpio { | 50 | gpio: gpio { |
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index 98dfc3ea5c0b..0673524238a6 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi | |||
@@ -497,6 +497,21 @@ | |||
497 | clock-names = "usbhost"; | 497 | clock-names = "usbhost"; |
498 | }; | 498 | }; |
499 | 499 | ||
500 | usbphy@12130000 { | ||
501 | compatible = "samsung,exynos5250-usb2phy"; | ||
502 | reg = <0x12130000 0x100>; | ||
503 | clocks = <&clock 1>, <&clock 285>; | ||
504 | clock-names = "ext_xtal", "usbhost"; | ||
505 | #address-cells = <1>; | ||
506 | #size-cells = <1>; | ||
507 | ranges; | ||
508 | |||
509 | usbphy-sys { | ||
510 | reg = <0x10040704 0x8>, | ||
511 | <0x10050230 0x4>; | ||
512 | }; | ||
513 | }; | ||
514 | |||
500 | amba { | 515 | amba { |
501 | #address-cells = <1>; | 516 | #address-cells = <1>; |
502 | #size-cells = <1>; | 517 | #size-cells = <1>; |
diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi index d2550e0bca24..701153992c69 100644 --- a/arch/arm/boot/dts/imx25.dtsi +++ b/arch/arm/boot/dts/imx25.dtsi | |||
@@ -141,8 +141,8 @@ | |||
141 | #size-cells = <0>; | 141 | #size-cells = <0>; |
142 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; | 142 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; |
143 | reg = <0x43fa4000 0x4000>; | 143 | reg = <0x43fa4000 0x4000>; |
144 | clocks = <&clks 62>; | 144 | clocks = <&clks 62>, <&clks 62>; |
145 | clock-names = "ipg"; | 145 | clock-names = "ipg", "per"; |
146 | interrupts = <14>; | 146 | interrupts = <14>; |
147 | status = "disabled"; | 147 | status = "disabled"; |
148 | }; | 148 | }; |
@@ -182,8 +182,8 @@ | |||
182 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; | 182 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; |
183 | reg = <0x50004000 0x4000>; | 183 | reg = <0x50004000 0x4000>; |
184 | interrupts = <0>; | 184 | interrupts = <0>; |
185 | clocks = <&clks 80>; | 185 | clocks = <&clks 80>, <&clks 80>; |
186 | clock-names = "ipg"; | 186 | clock-names = "ipg", "per"; |
187 | status = "disabled"; | 187 | status = "disabled"; |
188 | }; | 188 | }; |
189 | 189 | ||
@@ -210,8 +210,8 @@ | |||
210 | #size-cells = <0>; | 210 | #size-cells = <0>; |
211 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; | 211 | compatible = "fsl,imx25-cspi", "fsl,imx35-cspi"; |
212 | reg = <0x50010000 0x4000>; | 212 | reg = <0x50010000 0x4000>; |
213 | clocks = <&clks 79>; | 213 | clocks = <&clks 79>, <&clks 79>; |
214 | clock-names = "ipg"; | 214 | clock-names = "ipg", "per"; |
215 | interrupts = <13>; | 215 | interrupts = <13>; |
216 | status = "disabled"; | 216 | status = "disabled"; |
217 | }; | 217 | }; |
diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi index ff4bd4873edf..75bd11386516 100644 --- a/arch/arm/boot/dts/imx27.dtsi +++ b/arch/arm/boot/dts/imx27.dtsi | |||
@@ -131,7 +131,7 @@ | |||
131 | compatible = "fsl,imx27-cspi"; | 131 | compatible = "fsl,imx27-cspi"; |
132 | reg = <0x1000e000 0x1000>; | 132 | reg = <0x1000e000 0x1000>; |
133 | interrupts = <16>; | 133 | interrupts = <16>; |
134 | clocks = <&clks 53>, <&clks 0>; | 134 | clocks = <&clks 53>, <&clks 53>; |
135 | clock-names = "ipg", "per"; | 135 | clock-names = "ipg", "per"; |
136 | status = "disabled"; | 136 | status = "disabled"; |
137 | }; | 137 | }; |
@@ -142,7 +142,7 @@ | |||
142 | compatible = "fsl,imx27-cspi"; | 142 | compatible = "fsl,imx27-cspi"; |
143 | reg = <0x1000f000 0x1000>; | 143 | reg = <0x1000f000 0x1000>; |
144 | interrupts = <15>; | 144 | interrupts = <15>; |
145 | clocks = <&clks 52>, <&clks 0>; | 145 | clocks = <&clks 52>, <&clks 52>; |
146 | clock-names = "ipg", "per"; | 146 | clock-names = "ipg", "per"; |
147 | status = "disabled"; | 147 | status = "disabled"; |
148 | }; | 148 | }; |
@@ -223,7 +223,7 @@ | |||
223 | compatible = "fsl,imx27-cspi"; | 223 | compatible = "fsl,imx27-cspi"; |
224 | reg = <0x10017000 0x1000>; | 224 | reg = <0x10017000 0x1000>; |
225 | interrupts = <6>; | 225 | interrupts = <6>; |
226 | clocks = <&clks 51>, <&clks 0>; | 226 | clocks = <&clks 51>, <&clks 51>; |
227 | clock-names = "ipg", "per"; | 227 | clock-names = "ipg", "per"; |
228 | status = "disabled"; | 228 | status = "disabled"; |
229 | }; | 229 | }; |
diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi index 21bb786c5b31..53fdde69bbf4 100644 --- a/arch/arm/boot/dts/imx51.dtsi +++ b/arch/arm/boot/dts/imx51.dtsi | |||
@@ -631,7 +631,7 @@ | |||
631 | compatible = "fsl,imx51-cspi", "fsl,imx35-cspi"; | 631 | compatible = "fsl,imx51-cspi", "fsl,imx35-cspi"; |
632 | reg = <0x83fc0000 0x4000>; | 632 | reg = <0x83fc0000 0x4000>; |
633 | interrupts = <38>; | 633 | interrupts = <38>; |
634 | clocks = <&clks 55>, <&clks 0>; | 634 | clocks = <&clks 55>, <&clks 55>; |
635 | clock-names = "ipg", "per"; | 635 | clock-names = "ipg", "per"; |
636 | status = "disabled"; | 636 | status = "disabled"; |
637 | }; | 637 | }; |
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi index 845982eaac22..eb83aa039b8b 100644 --- a/arch/arm/boot/dts/imx53.dtsi +++ b/arch/arm/boot/dts/imx53.dtsi | |||
@@ -714,7 +714,7 @@ | |||
714 | compatible = "fsl,imx53-cspi", "fsl,imx35-cspi"; | 714 | compatible = "fsl,imx53-cspi", "fsl,imx35-cspi"; |
715 | reg = <0x63fc0000 0x4000>; | 715 | reg = <0x63fc0000 0x4000>; |
716 | interrupts = <38>; | 716 | interrupts = <38>; |
717 | clocks = <&clks 55>, <&clks 0>; | 717 | clocks = <&clks 55>, <&clks 55>; |
718 | clock-names = "ipg", "per"; | 718 | clock-names = "ipg", "per"; |
719 | status = "disabled"; | 719 | status = "disabled"; |
720 | }; | 720 | }; |
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi index 82a404da1c0d..99ba6e14ebf3 100644 --- a/arch/arm/boot/dts/omap3.dtsi +++ b/arch/arm/boot/dts/omap3.dtsi | |||
@@ -516,7 +516,7 @@ | |||
516 | usb_otg_hs: usb_otg_hs@480ab000 { | 516 | usb_otg_hs: usb_otg_hs@480ab000 { |
517 | compatible = "ti,omap3-musb"; | 517 | compatible = "ti,omap3-musb"; |
518 | reg = <0x480ab000 0x1000>; | 518 | reg = <0x480ab000 0x1000>; |
519 | interrupts = <0 92 0x4>, <0 93 0x4>; | 519 | interrupts = <92>, <93>; |
520 | interrupt-names = "mc", "dma"; | 520 | interrupt-names = "mc", "dma"; |
521 | ti,hwmods = "usb_otg_hs"; | 521 | ti,hwmods = "usb_otg_hs"; |
522 | multipoint = <1>; | 522 | multipoint = <1>; |
diff --git a/arch/arm/boot/dts/omap3430-sdp.dts b/arch/arm/boot/dts/omap3430-sdp.dts index 144ae43453c4..6076d016b479 100644 --- a/arch/arm/boot/dts/omap3430-sdp.dts +++ b/arch/arm/boot/dts/omap3430-sdp.dts | |||
@@ -105,7 +105,6 @@ | |||
105 | nand-bus-width = <8>; | 105 | nand-bus-width = <8>; |
106 | 106 | ||
107 | ti,nand-ecc-opt = "sw"; | 107 | ti,nand-ecc-opt = "sw"; |
108 | gpmc,device-nand; | ||
109 | gpmc,cs-on-ns = <0>; | 108 | gpmc,cs-on-ns = <0>; |
110 | gpmc,cs-rd-off-ns = <36>; | 109 | gpmc,cs-rd-off-ns = <36>; |
111 | gpmc,cs-wr-off-ns = <36>; | 110 | gpmc,cs-wr-off-ns = <36>; |
diff --git a/arch/arm/boot/dts/sama5d3.dtsi b/arch/arm/boot/dts/sama5d3.dtsi index 2e643ea51cce..5000e0d42849 100644 --- a/arch/arm/boot/dts/sama5d3.dtsi +++ b/arch/arm/boot/dts/sama5d3.dtsi | |||
@@ -75,11 +75,6 @@ | |||
75 | compatible = "atmel,at91sam9x5-spi"; | 75 | compatible = "atmel,at91sam9x5-spi"; |
76 | reg = <0xf0004000 0x100>; | 76 | reg = <0xf0004000 0x100>; |
77 | interrupts = <24 4 3>; | 77 | interrupts = <24 4 3>; |
78 | cs-gpios = <&pioD 13 0 | ||
79 | &pioD 14 0 /* conflicts with SCK0 and CANRX0 */ | ||
80 | &pioD 15 0 /* conflicts with CTS0 and CANTX0 */ | ||
81 | &pioD 16 0 /* conflicts with RTS0 and PWMFI3 */ | ||
82 | >; | ||
83 | pinctrl-names = "default"; | 78 | pinctrl-names = "default"; |
84 | pinctrl-0 = <&pinctrl_spi0>; | 79 | pinctrl-0 = <&pinctrl_spi0>; |
85 | status = "disabled"; | 80 | status = "disabled"; |
@@ -156,7 +151,7 @@ | |||
156 | }; | 151 | }; |
157 | 152 | ||
158 | macb0: ethernet@f0028000 { | 153 | macb0: ethernet@f0028000 { |
159 | compatible = "cnds,pc302-gem", "cdns,gem"; | 154 | compatible = "cdns,pc302-gem", "cdns,gem"; |
160 | reg = <0xf0028000 0x100>; | 155 | reg = <0xf0028000 0x100>; |
161 | interrupts = <34 4 3>; | 156 | interrupts = <34 4 3>; |
162 | pinctrl-names = "default"; | 157 | pinctrl-names = "default"; |
@@ -203,11 +198,6 @@ | |||
203 | compatible = "atmel,at91sam9x5-spi"; | 198 | compatible = "atmel,at91sam9x5-spi"; |
204 | reg = <0xf8008000 0x100>; | 199 | reg = <0xf8008000 0x100>; |
205 | interrupts = <25 4 3>; | 200 | interrupts = <25 4 3>; |
206 | cs-gpios = <&pioC 25 0 | ||
207 | &pioC 26 0 /* conflitcs with TWD1 and ISI_D11 */ | ||
208 | &pioC 27 0 /* conflitcs with TWCK1 and ISI_D10 */ | ||
209 | &pioC 28 0 /* conflitcs with PWMFI0 and ISI_D9 */ | ||
210 | >; | ||
211 | pinctrl-names = "default"; | 201 | pinctrl-names = "default"; |
212 | pinctrl-0 = <&pinctrl_spi1>; | 202 | pinctrl-0 = <&pinctrl_spi1>; |
213 | status = "disabled"; | 203 | status = "disabled"; |
diff --git a/arch/arm/boot/dts/sama5d3xcm.dtsi b/arch/arm/boot/dts/sama5d3xcm.dtsi index 1f8ed404626c..b336e7787cb3 100644 --- a/arch/arm/boot/dts/sama5d3xcm.dtsi +++ b/arch/arm/boot/dts/sama5d3xcm.dtsi | |||
@@ -32,6 +32,10 @@ | |||
32 | 32 | ||
33 | ahb { | 33 | ahb { |
34 | apb { | 34 | apb { |
35 | spi0: spi@f0004000 { | ||
36 | cs-gpios = <&pioD 13 0>, <0>, <0>, <0>; | ||
37 | }; | ||
38 | |||
35 | macb0: ethernet@f0028000 { | 39 | macb0: ethernet@f0028000 { |
36 | phy-mode = "rgmii"; | 40 | phy-mode = "rgmii"; |
37 | }; | 41 | }; |
diff --git a/arch/arm/boot/dts/ste-nomadik-s8815.dts b/arch/arm/boot/dts/ste-nomadik-s8815.dts index b28fbf3408e3..6f82d9368948 100644 --- a/arch/arm/boot/dts/ste-nomadik-s8815.dts +++ b/arch/arm/boot/dts/ste-nomadik-s8815.dts | |||
@@ -14,13 +14,19 @@ | |||
14 | bootargs = "root=/dev/ram0 console=ttyAMA1,115200n8 earlyprintk"; | 14 | bootargs = "root=/dev/ram0 console=ttyAMA1,115200n8 earlyprintk"; |
15 | }; | 15 | }; |
16 | 16 | ||
17 | /* This is where the interrupt is routed on the S8815 board */ | ||
18 | external-bus@34000000 { | ||
19 | ethernet@300 { | ||
20 | interrupt-parent = <&gpio3>; | ||
21 | interrupts = <8 0x1>; | ||
22 | }; | ||
23 | }; | ||
24 | |||
17 | /* Custom board node with GPIO pins to active etc */ | 25 | /* Custom board node with GPIO pins to active etc */ |
18 | usb-s8815 { | 26 | usb-s8815 { |
19 | /* The S8815 is using this very GPIO pin for the SMSC91x IRQs */ | 27 | /* The S8815 is using this very GPIO pin for the SMSC91x IRQs */ |
20 | ethernet-gpio { | 28 | ethernet-gpio { |
21 | gpios = <&gpio3 19 0x1>; | 29 | gpios = <&gpio3 8 0x1>; |
22 | interrupts = <19 0x1>; | ||
23 | interrupt-parent = <&gpio3>; | ||
24 | }; | 30 | }; |
25 | /* This will bias the MMC/SD card detect line */ | 31 | /* This will bias the MMC/SD card detect line */ |
26 | mmcsd-gpio { | 32 | mmcsd-gpio { |
diff --git a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts index 4a7c35d6726a..078ed7f618d7 100644 --- a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts +++ b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts | |||
@@ -22,8 +22,8 @@ | |||
22 | bootargs = "earlyprintk console=ttyS0,115200"; | 22 | bootargs = "earlyprintk console=ttyS0,115200"; |
23 | }; | 23 | }; |
24 | 24 | ||
25 | soc { | 25 | soc@01c20000 { |
26 | uart0: uart@01c28000 { | 26 | uart0: serial@01c28000 { |
27 | pinctrl-names = "default"; | 27 | pinctrl-names = "default"; |
28 | pinctrl-0 = <&uart0_pins_a>; | 28 | pinctrl-0 = <&uart0_pins_a>; |
29 | status = "okay"; | 29 | status = "okay"; |
diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c index 52b88d81b7bb..3caed0db6986 100644 --- a/arch/arm/common/mcpm_platsmp.c +++ b/arch/arm/common/mcpm_platsmp.c | |||
@@ -15,8 +15,6 @@ | |||
15 | #include <linux/smp.h> | 15 | #include <linux/smp.h> |
16 | #include <linux/spinlock.h> | 16 | #include <linux/spinlock.h> |
17 | 17 | ||
18 | #include <linux/irqchip/arm-gic.h> | ||
19 | |||
20 | #include <asm/mcpm.h> | 18 | #include <asm/mcpm.h> |
21 | #include <asm/smp.h> | 19 | #include <asm/smp.h> |
22 | #include <asm/smp_plat.h> | 20 | #include <asm/smp_plat.h> |
@@ -49,7 +47,6 @@ static int __cpuinit mcpm_boot_secondary(unsigned int cpu, struct task_struct *i | |||
49 | static void __cpuinit mcpm_secondary_init(unsigned int cpu) | 47 | static void __cpuinit mcpm_secondary_init(unsigned int cpu) |
50 | { | 48 | { |
51 | mcpm_cpu_powered_up(); | 49 | mcpm_cpu_powered_up(); |
52 | gic_secondary_init(0); | ||
53 | } | 50 | } |
54 | 51 | ||
55 | #ifdef CONFIG_HOTPLUG_CPU | 52 | #ifdef CONFIG_HOTPLUG_CPU |
diff --git a/arch/arm/configs/exynos_defconfig b/arch/arm/configs/exynos_defconfig index e40b435d204e..227abf9cc601 100644 --- a/arch/arm/configs/exynos_defconfig +++ b/arch/arm/configs/exynos_defconfig | |||
@@ -1,4 +1,4 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | 1 | CONFIG_SYSVIPC=y |
2 | CONFIG_NO_HZ=y | 2 | CONFIG_NO_HZ=y |
3 | CONFIG_HIGH_RES_TIMERS=y | 3 | CONFIG_HIGH_RES_TIMERS=y |
4 | CONFIG_BLK_DEV_INITRD=y | 4 | CONFIG_BLK_DEV_INITRD=y |
@@ -7,17 +7,18 @@ CONFIG_MODULES=y | |||
7 | CONFIG_MODULE_UNLOAD=y | 7 | CONFIG_MODULE_UNLOAD=y |
8 | # CONFIG_BLK_DEV_BSG is not set | 8 | # CONFIG_BLK_DEV_BSG is not set |
9 | CONFIG_PARTITION_ADVANCED=y | 9 | CONFIG_PARTITION_ADVANCED=y |
10 | CONFIG_EFI_PARTITION=y | ||
11 | CONFIG_ARCH_EXYNOS=y | 10 | CONFIG_ARCH_EXYNOS=y |
12 | CONFIG_S3C_LOWLEVEL_UART_PORT=1 | 11 | CONFIG_S3C_LOWLEVEL_UART_PORT=3 |
13 | CONFIG_S3C24XX_PWM=y | 12 | CONFIG_S3C24XX_PWM=y |
14 | CONFIG_ARCH_EXYNOS5=y | 13 | CONFIG_ARCH_EXYNOS5=y |
15 | CONFIG_MACH_EXYNOS4_DT=y | 14 | CONFIG_MACH_EXYNOS4_DT=y |
16 | CONFIG_MACH_EXYNOS5_DT=y | ||
17 | CONFIG_SMP=y | 15 | CONFIG_SMP=y |
18 | CONFIG_NR_CPUS=2 | 16 | CONFIG_NR_CPUS=2 |
19 | CONFIG_PREEMPT=y | 17 | CONFIG_PREEMPT=y |
20 | CONFIG_AEABI=y | 18 | CONFIG_AEABI=y |
19 | CONFIG_HIGHMEM=y | ||
20 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
21 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
21 | CONFIG_ARM_APPENDED_DTB=y | 22 | CONFIG_ARM_APPENDED_DTB=y |
22 | CONFIG_ARM_ATAG_DTB_COMPAT=y | 23 | CONFIG_ARM_ATAG_DTB_COMPAT=y |
23 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc mem=256M" | 24 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc mem=256M" |
@@ -30,35 +31,58 @@ CONFIG_NET_KEY=y | |||
30 | CONFIG_INET=y | 31 | CONFIG_INET=y |
31 | CONFIG_RFKILL_REGULATOR=y | 32 | CONFIG_RFKILL_REGULATOR=y |
32 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 33 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
34 | CONFIG_DEVTMPFS=y | ||
35 | CONFIG_DEVTMPFS_MOUNT=y | ||
33 | CONFIG_PROC_DEVICETREE=y | 36 | CONFIG_PROC_DEVICETREE=y |
34 | CONFIG_BLK_DEV_LOOP=y | 37 | CONFIG_BLK_DEV_LOOP=y |
38 | CONFIG_BLK_DEV_CRYPTOLOOP=y | ||
35 | CONFIG_BLK_DEV_RAM=y | 39 | CONFIG_BLK_DEV_RAM=y |
36 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 40 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
37 | CONFIG_SCSI=y | 41 | CONFIG_SCSI=y |
38 | CONFIG_BLK_DEV_SD=y | 42 | CONFIG_BLK_DEV_SD=y |
39 | CONFIG_CHR_DEV_SG=y | 43 | CONFIG_CHR_DEV_SG=y |
44 | CONFIG_MD=y | ||
45 | CONFIG_BLK_DEV_DM=y | ||
46 | CONFIG_DM_CRYPT=m | ||
40 | CONFIG_NETDEVICES=y | 47 | CONFIG_NETDEVICES=y |
41 | CONFIG_SMSC911X=y | 48 | CONFIG_SMSC911X=y |
42 | CONFIG_USB_USBNET=y | 49 | CONFIG_USB_USBNET=y |
43 | CONFIG_USB_NET_SMSC75XX=y | 50 | CONFIG_USB_NET_SMSC75XX=y |
44 | CONFIG_USB_NET_SMSC95XX=y | 51 | CONFIG_USB_NET_SMSC95XX=y |
45 | CONFIG_INPUT_EVDEV=y | 52 | CONFIG_INPUT_EVDEV=y |
46 | # CONFIG_INPUT_KEYBOARD is not set | 53 | CONFIG_KEYBOARD_CROS_EC=y |
47 | # CONFIG_INPUT_MOUSE is not set | 54 | # CONFIG_MOUSE_PS2 is not set |
55 | CONFIG_MOUSE_CYAPA=y | ||
48 | CONFIG_INPUT_TOUCHSCREEN=y | 56 | CONFIG_INPUT_TOUCHSCREEN=y |
49 | CONFIG_SERIAL_8250=y | 57 | CONFIG_SERIAL_8250=y |
50 | CONFIG_SERIAL_SAMSUNG=y | 58 | CONFIG_SERIAL_SAMSUNG=y |
51 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y | 59 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y |
52 | CONFIG_SERIAL_OF_PLATFORM=y | 60 | CONFIG_SERIAL_OF_PLATFORM=y |
53 | CONFIG_HW_RANDOM=y | 61 | CONFIG_HW_RANDOM=y |
62 | CONFIG_TCG_TPM=y | ||
63 | CONFIG_TCG_TIS_I2C_INFINEON=y | ||
54 | CONFIG_I2C=y | 64 | CONFIG_I2C=y |
65 | CONFIG_I2C_MUX=y | ||
66 | CONFIG_I2C_ARB_GPIO_CHALLENGE=y | ||
67 | CONFIG_I2C_S3C2410=y | ||
68 | CONFIG_DEBUG_GPIO=y | ||
55 | # CONFIG_HWMON is not set | 69 | # CONFIG_HWMON is not set |
70 | CONFIG_MFD_CROS_EC=y | ||
71 | CONFIG_MFD_CROS_EC_I2C=y | ||
72 | CONFIG_MFD_MAX77686=y | ||
73 | CONFIG_MFD_MAX8997=y | ||
74 | CONFIG_MFD_SEC_CORE=y | ||
56 | CONFIG_MFD_TPS65090=y | 75 | CONFIG_MFD_TPS65090=y |
57 | CONFIG_REGULATOR=y | 76 | CONFIG_REGULATOR=y |
58 | CONFIG_REGULATOR_FIXED_VOLTAGE=y | 77 | CONFIG_REGULATOR_FIXED_VOLTAGE=y |
59 | CONFIG_REGULATOR_GPIO=y | 78 | CONFIG_REGULATOR_GPIO=y |
79 | CONFIG_REGULATOR_MAX8997=y | ||
80 | CONFIG_REGULATOR_MAX77686=y | ||
81 | CONFIG_REGULATOR_S5M8767=y | ||
60 | CONFIG_REGULATOR_TPS65090=y | 82 | CONFIG_REGULATOR_TPS65090=y |
61 | CONFIG_FB=y | 83 | CONFIG_FB=y |
84 | CONFIG_FB_MODE_HELPERS=y | ||
85 | CONFIG_FB_SIMPLE=y | ||
62 | CONFIG_EXYNOS_VIDEO=y | 86 | CONFIG_EXYNOS_VIDEO=y |
63 | CONFIG_EXYNOS_MIPI_DSI=y | 87 | CONFIG_EXYNOS_MIPI_DSI=y |
64 | CONFIG_EXYNOS_DP=y | 88 | CONFIG_EXYNOS_DP=y |
@@ -67,6 +91,20 @@ CONFIG_FONTS=y | |||
67 | CONFIG_FONT_7x14=y | 91 | CONFIG_FONT_7x14=y |
68 | CONFIG_LOGO=y | 92 | CONFIG_LOGO=y |
69 | CONFIG_USB=y | 93 | CONFIG_USB=y |
94 | CONFIG_USB_EHCI_HCD=y | ||
95 | CONFIG_USB_EHCI_S5P=y | ||
96 | CONFIG_USB_STORAGE=y | ||
97 | CONFIG_USB_DWC3=y | ||
98 | CONFIG_USB_PHY=y | ||
99 | CONFIG_SAMSUNG_USB2PHY=y | ||
100 | CONFIG_SAMSUNG_USB3PHY=y | ||
101 | CONFIG_MMC=y | ||
102 | CONFIG_MMC_SDHCI=y | ||
103 | CONFIG_MMC_SDHCI_S3C=y | ||
104 | CONFIG_MMC_DW=y | ||
105 | CONFIG_MMC_DW_IDMAC=y | ||
106 | CONFIG_MMC_DW_EXYNOS=y | ||
107 | CONFIG_COMMON_CLK_MAX77686=y | ||
70 | CONFIG_EXT2_FS=y | 108 | CONFIG_EXT2_FS=y |
71 | CONFIG_EXT3_FS=y | 109 | CONFIG_EXT3_FS=y |
72 | CONFIG_EXT4_FS=y | 110 | CONFIG_EXT4_FS=y |
@@ -79,6 +117,7 @@ CONFIG_ROMFS_FS=y | |||
79 | CONFIG_NLS_CODEPAGE_437=y | 117 | CONFIG_NLS_CODEPAGE_437=y |
80 | CONFIG_NLS_ASCII=y | 118 | CONFIG_NLS_ASCII=y |
81 | CONFIG_NLS_ISO8859_1=y | 119 | CONFIG_NLS_ISO8859_1=y |
120 | CONFIG_PRINTK_TIME=y | ||
82 | CONFIG_MAGIC_SYSRQ=y | 121 | CONFIG_MAGIC_SYSRQ=y |
83 | CONFIG_DEBUG_KERNEL=y | 122 | CONFIG_DEBUG_KERNEL=y |
84 | CONFIG_DETECT_HUNG_TASK=y | 123 | CONFIG_DETECT_HUNG_TASK=y |
@@ -87,6 +126,5 @@ CONFIG_DEBUG_SPINLOCK=y | |||
87 | CONFIG_DEBUG_MUTEXES=y | 126 | CONFIG_DEBUG_MUTEXES=y |
88 | CONFIG_DEBUG_INFO=y | 127 | CONFIG_DEBUG_INFO=y |
89 | CONFIG_DEBUG_USER=y | 128 | CONFIG_DEBUG_USER=y |
90 | CONFIG_DEBUG_LL=y | 129 | CONFIG_CRYPTO_SHA256=y |
91 | CONFIG_EARLY_PRINTK=y | ||
92 | CONFIG_CRC_CCITT=y | 130 | CONFIG_CRC_CCITT=y |
diff --git a/arch/arm/configs/omap1_defconfig b/arch/arm/configs/omap1_defconfig index 7e0ebb64a7f9..9940f7b4e438 100644 --- a/arch/arm/configs/omap1_defconfig +++ b/arch/arm/configs/omap1_defconfig | |||
@@ -199,7 +199,6 @@ CONFIG_USB_PHY=y | |||
199 | CONFIG_USB_DEBUG=y | 199 | CONFIG_USB_DEBUG=y |
200 | CONFIG_USB_DEVICEFS=y | 200 | CONFIG_USB_DEVICEFS=y |
201 | # CONFIG_USB_DEVICE_CLASS is not set | 201 | # CONFIG_USB_DEVICE_CLASS is not set |
202 | CONFIG_USB_SUSPEND=y | ||
203 | CONFIG_USB_MON=y | 202 | CONFIG_USB_MON=y |
204 | CONFIG_USB_OHCI_HCD=y | 203 | CONFIG_USB_OHCI_HCD=y |
205 | CONFIG_USB_STORAGE=y | 204 | CONFIG_USB_STORAGE=y |
diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig index c1ef64bc5abd..abbe31937c65 100644 --- a/arch/arm/configs/omap2plus_defconfig +++ b/arch/arm/configs/omap2plus_defconfig | |||
@@ -20,6 +20,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y | |||
20 | CONFIG_MODVERSIONS=y | 20 | CONFIG_MODVERSIONS=y |
21 | CONFIG_MODULE_SRCVERSION_ALL=y | 21 | CONFIG_MODULE_SRCVERSION_ALL=y |
22 | # CONFIG_BLK_DEV_BSG is not set | 22 | # CONFIG_BLK_DEV_BSG is not set |
23 | CONFIG_ARCH_MULTI_V6=y | ||
23 | CONFIG_ARCH_OMAP2PLUS=y | 24 | CONFIG_ARCH_OMAP2PLUS=y |
24 | CONFIG_OMAP_RESET_CLOCKS=y | 25 | CONFIG_OMAP_RESET_CLOCKS=y |
25 | CONFIG_OMAP_MUX_DEBUG=y | 26 | CONFIG_OMAP_MUX_DEBUG=y |
@@ -204,7 +205,6 @@ CONFIG_USB=y | |||
204 | CONFIG_USB_DEBUG=y | 205 | CONFIG_USB_DEBUG=y |
205 | CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | 206 | CONFIG_USB_ANNOUNCE_NEW_DEVICES=y |
206 | CONFIG_USB_DEVICEFS=y | 207 | CONFIG_USB_DEVICEFS=y |
207 | CONFIG_USB_SUSPEND=y | ||
208 | CONFIG_USB_MON=y | 208 | CONFIG_USB_MON=y |
209 | CONFIG_USB_WDM=y | 209 | CONFIG_USB_WDM=y |
210 | CONFIG_USB_STORAGE=y | 210 | CONFIG_USB_STORAGE=y |
diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig index a5f0485133cf..f7ba316164d4 100644 --- a/arch/arm/configs/tegra_defconfig +++ b/arch/arm/configs/tegra_defconfig | |||
@@ -153,6 +153,7 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y | |||
153 | CONFIG_MEDIA_USB_SUPPORT=y | 153 | CONFIG_MEDIA_USB_SUPPORT=y |
154 | CONFIG_USB_VIDEO_CLASS=m | 154 | CONFIG_USB_VIDEO_CLASS=m |
155 | CONFIG_DRM=y | 155 | CONFIG_DRM=y |
156 | CONFIG_TEGRA_HOST1X=y | ||
156 | CONFIG_DRM_TEGRA=y | 157 | CONFIG_DRM_TEGRA=y |
157 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | 158 | CONFIG_BACKLIGHT_LCD_SUPPORT=y |
158 | # CONFIG_LCD_CLASS_DEVICE is not set | 159 | # CONFIG_LCD_CLASS_DEVICE is not set |
@@ -202,7 +203,7 @@ CONFIG_TEGRA20_APB_DMA=y | |||
202 | CONFIG_STAGING=y | 203 | CONFIG_STAGING=y |
203 | CONFIG_SENSORS_ISL29018=y | 204 | CONFIG_SENSORS_ISL29018=y |
204 | CONFIG_SENSORS_ISL29028=y | 205 | CONFIG_SENSORS_ISL29028=y |
205 | CONFIG_SENSORS_AK8975=y | 206 | CONFIG_AK8975=y |
206 | CONFIG_MFD_NVEC=y | 207 | CONFIG_MFD_NVEC=y |
207 | CONFIG_KEYBOARD_NVEC=y | 208 | CONFIG_KEYBOARD_NVEC=y |
208 | CONFIG_SERIO_NVEC_PS2=y | 209 | CONFIG_SERIO_NVEC_PS2=y |
diff --git a/arch/arm/crypto/sha1-armv4-large.S b/arch/arm/crypto/sha1-armv4-large.S index 92c6eed7aac9..99207c45ec10 100644 --- a/arch/arm/crypto/sha1-armv4-large.S +++ b/arch/arm/crypto/sha1-armv4-large.S | |||
@@ -195,6 +195,7 @@ ENTRY(sha1_block_data_order) | |||
195 | add r3,r3,r10 @ E+=F_00_19(B,C,D) | 195 | add r3,r3,r10 @ E+=F_00_19(B,C,D) |
196 | cmp r14,sp | 196 | cmp r14,sp |
197 | bne .L_00_15 @ [((11+4)*5+2)*3] | 197 | bne .L_00_15 @ [((11+4)*5+2)*3] |
198 | sub sp,sp,#25*4 | ||
198 | #if __ARM_ARCH__<7 | 199 | #if __ARM_ARCH__<7 |
199 | ldrb r10,[r1,#2] | 200 | ldrb r10,[r1,#2] |
200 | ldrb r9,[r1,#3] | 201 | ldrb r9,[r1,#3] |
@@ -290,7 +291,6 @@ ENTRY(sha1_block_data_order) | |||
290 | add r3,r3,r10 @ E+=F_00_19(B,C,D) | 291 | add r3,r3,r10 @ E+=F_00_19(B,C,D) |
291 | 292 | ||
292 | ldr r8,.LK_20_39 @ [+15+16*4] | 293 | ldr r8,.LK_20_39 @ [+15+16*4] |
293 | sub sp,sp,#25*4 | ||
294 | cmn sp,#0 @ [+3], clear carry to denote 20_39 | 294 | cmn sp,#0 @ [+3], clear carry to denote 20_39 |
295 | .L_20_39_or_60_79: | 295 | .L_20_39_or_60_79: |
296 | ldr r9,[r14,#15*4] | 296 | ldr r9,[r14,#15*4] |
diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h index 7eb18c1d8d6c..4f009c10540d 100644 --- a/arch/arm/include/asm/cmpxchg.h +++ b/arch/arm/include/asm/cmpxchg.h | |||
@@ -233,15 +233,15 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr, | |||
233 | ((__typeof__(*(ptr)))atomic64_cmpxchg(container_of((ptr), \ | 233 | ((__typeof__(*(ptr)))atomic64_cmpxchg(container_of((ptr), \ |
234 | atomic64_t, \ | 234 | atomic64_t, \ |
235 | counter), \ | 235 | counter), \ |
236 | (unsigned long)(o), \ | 236 | (unsigned long long)(o), \ |
237 | (unsigned long)(n))) | 237 | (unsigned long long)(n))) |
238 | 238 | ||
239 | #define cmpxchg64_local(ptr, o, n) \ | 239 | #define cmpxchg64_local(ptr, o, n) \ |
240 | ((__typeof__(*(ptr)))local64_cmpxchg(container_of((ptr), \ | 240 | ((__typeof__(*(ptr)))local64_cmpxchg(container_of((ptr), \ |
241 | local64_t, \ | 241 | local64_t, \ |
242 | a), \ | 242 | a), \ |
243 | (unsigned long)(o), \ | 243 | (unsigned long long)(o), \ |
244 | (unsigned long)(n))) | 244 | (unsigned long long)(n))) |
245 | 245 | ||
246 | #endif /* __LINUX_ARM_ARCH__ >= 6 */ | 246 | #endif /* __LINUX_ARM_ARCH__ >= 6 */ |
247 | 247 | ||
diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h index 99a19512ee26..bdf2b8458ec1 100644 --- a/arch/arm/include/asm/tlb.h +++ b/arch/arm/include/asm/tlb.h | |||
@@ -33,18 +33,6 @@ | |||
33 | #include <asm/pgalloc.h> | 33 | #include <asm/pgalloc.h> |
34 | #include <asm/tlbflush.h> | 34 | #include <asm/tlbflush.h> |
35 | 35 | ||
36 | /* | ||
37 | * We need to delay page freeing for SMP as other CPUs can access pages | ||
38 | * which have been removed but not yet had their TLB entries invalidated. | ||
39 | * Also, as ARMv7 speculative prefetch can drag new entries into the TLB, | ||
40 | * we need to apply this same delaying tactic to ensure correct operation. | ||
41 | */ | ||
42 | #if defined(CONFIG_SMP) || defined(CONFIG_CPU_32v7) | ||
43 | #define tlb_fast_mode(tlb) 0 | ||
44 | #else | ||
45 | #define tlb_fast_mode(tlb) 1 | ||
46 | #endif | ||
47 | |||
48 | #define MMU_GATHER_BUNDLE 8 | 36 | #define MMU_GATHER_BUNDLE 8 |
49 | 37 | ||
50 | /* | 38 | /* |
@@ -112,12 +100,10 @@ static inline void __tlb_alloc_page(struct mmu_gather *tlb) | |||
112 | static inline void tlb_flush_mmu(struct mmu_gather *tlb) | 100 | static inline void tlb_flush_mmu(struct mmu_gather *tlb) |
113 | { | 101 | { |
114 | tlb_flush(tlb); | 102 | tlb_flush(tlb); |
115 | if (!tlb_fast_mode(tlb)) { | 103 | free_pages_and_swap_cache(tlb->pages, tlb->nr); |
116 | free_pages_and_swap_cache(tlb->pages, tlb->nr); | 104 | tlb->nr = 0; |
117 | tlb->nr = 0; | 105 | if (tlb->pages == tlb->local) |
118 | if (tlb->pages == tlb->local) | 106 | __tlb_alloc_page(tlb); |
119 | __tlb_alloc_page(tlb); | ||
120 | } | ||
121 | } | 107 | } |
122 | 108 | ||
123 | static inline void | 109 | static inline void |
@@ -178,11 +164,6 @@ tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma) | |||
178 | 164 | ||
179 | static inline int __tlb_remove_page(struct mmu_gather *tlb, struct page *page) | 165 | static inline int __tlb_remove_page(struct mmu_gather *tlb, struct page *page) |
180 | { | 166 | { |
181 | if (tlb_fast_mode(tlb)) { | ||
182 | free_page_and_swap_cache(page); | ||
183 | return 1; /* avoid calling tlb_flush_mmu */ | ||
184 | } | ||
185 | |||
186 | tlb->pages[tlb->nr++] = page; | 167 | tlb->pages[tlb->nr++] = page; |
187 | VM_BUG_ON(tlb->nr > tlb->max); | 168 | VM_BUG_ON(tlb->nr > tlb->max); |
188 | return tlb->max - tlb->nr; | 169 | return tlb->max - tlb->nr; |
diff --git a/arch/arm/include/debug/ux500.S b/arch/arm/include/debug/ux500.S index 2848857f5b62..fbd24beeb1fa 100644 --- a/arch/arm/include/debug/ux500.S +++ b/arch/arm/include/debug/ux500.S | |||
@@ -24,9 +24,9 @@ | |||
24 | #define U8500_UART0_PHYS_BASE (0x80120000) | 24 | #define U8500_UART0_PHYS_BASE (0x80120000) |
25 | #define U8500_UART1_PHYS_BASE (0x80121000) | 25 | #define U8500_UART1_PHYS_BASE (0x80121000) |
26 | #define U8500_UART2_PHYS_BASE (0x80007000) | 26 | #define U8500_UART2_PHYS_BASE (0x80007000) |
27 | #define U8500_UART0_VIRT_BASE (0xa8120000) | 27 | #define U8500_UART0_VIRT_BASE (0xf8120000) |
28 | #define U8500_UART1_VIRT_BASE (0xa8121000) | 28 | #define U8500_UART1_VIRT_BASE (0xf8121000) |
29 | #define U8500_UART2_VIRT_BASE (0xa8007000) | 29 | #define U8500_UART2_VIRT_BASE (0xf8007000) |
30 | #define __UX500_PHYS_UART(n) U8500_UART##n##_PHYS_BASE | 30 | #define __UX500_PHYS_UART(n) U8500_UART##n##_PHYS_BASE |
31 | #define __UX500_VIRT_UART(n) U8500_UART##n##_VIRT_BASE | 31 | #define __UX500_VIRT_UART(n) U8500_UART##n##_VIRT_BASE |
32 | #endif | 32 | #endif |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index f21970316836..282de4826abb 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -411,7 +411,6 @@ static struct vm_area_struct gate_vma = { | |||
411 | .vm_start = 0xffff0000, | 411 | .vm_start = 0xffff0000, |
412 | .vm_end = 0xffff0000 + PAGE_SIZE, | 412 | .vm_end = 0xffff0000 + PAGE_SIZE, |
413 | .vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC, | 413 | .vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC, |
414 | .vm_mm = &init_mm, | ||
415 | }; | 414 | }; |
416 | 415 | ||
417 | static int __init gate_vma_init(void) | 416 | static int __init gate_vma_init(void) |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 47ab90563bf4..550d63cef68e 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -251,7 +251,7 @@ void __ref cpu_die(void) | |||
251 | * this returns, power and/or clocks can be removed at any point | 251 | * this returns, power and/or clocks can be removed at any point |
252 | * from this CPU and its cache by platform_cpu_kill(). | 252 | * from this CPU and its cache by platform_cpu_kill(). |
253 | */ | 253 | */ |
254 | RCU_NONIDLE(complete(&cpu_died)); | 254 | complete(&cpu_died); |
255 | 255 | ||
256 | /* | 256 | /* |
257 | * Ensure that the cache lines associated with that completion are | 257 | * Ensure that the cache lines associated with that completion are |
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c index 37d216d814cd..ef1703b9587b 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c | |||
@@ -492,6 +492,11 @@ static void vcpu_pause(struct kvm_vcpu *vcpu) | |||
492 | wait_event_interruptible(*wq, !vcpu->arch.pause); | 492 | wait_event_interruptible(*wq, !vcpu->arch.pause); |
493 | } | 493 | } |
494 | 494 | ||
495 | static int kvm_vcpu_initialized(struct kvm_vcpu *vcpu) | ||
496 | { | ||
497 | return vcpu->arch.target >= 0; | ||
498 | } | ||
499 | |||
495 | /** | 500 | /** |
496 | * kvm_arch_vcpu_ioctl_run - the main VCPU run function to execute guest code | 501 | * kvm_arch_vcpu_ioctl_run - the main VCPU run function to execute guest code |
497 | * @vcpu: The VCPU pointer | 502 | * @vcpu: The VCPU pointer |
@@ -508,8 +513,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) | |||
508 | int ret; | 513 | int ret; |
509 | sigset_t sigsaved; | 514 | sigset_t sigsaved; |
510 | 515 | ||
511 | /* Make sure they initialize the vcpu with KVM_ARM_VCPU_INIT */ | 516 | if (unlikely(!kvm_vcpu_initialized(vcpu))) |
512 | if (unlikely(vcpu->arch.target < 0)) | ||
513 | return -ENOEXEC; | 517 | return -ENOEXEC; |
514 | 518 | ||
515 | ret = kvm_vcpu_first_run_init(vcpu); | 519 | ret = kvm_vcpu_first_run_init(vcpu); |
@@ -710,6 +714,10 @@ long kvm_arch_vcpu_ioctl(struct file *filp, | |||
710 | case KVM_SET_ONE_REG: | 714 | case KVM_SET_ONE_REG: |
711 | case KVM_GET_ONE_REG: { | 715 | case KVM_GET_ONE_REG: { |
712 | struct kvm_one_reg reg; | 716 | struct kvm_one_reg reg; |
717 | |||
718 | if (unlikely(!kvm_vcpu_initialized(vcpu))) | ||
719 | return -ENOEXEC; | ||
720 | |||
713 | if (copy_from_user(®, argp, sizeof(reg))) | 721 | if (copy_from_user(®, argp, sizeof(reg))) |
714 | return -EFAULT; | 722 | return -EFAULT; |
715 | if (ioctl == KVM_SET_ONE_REG) | 723 | if (ioctl == KVM_SET_ONE_REG) |
@@ -722,6 +730,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp, | |||
722 | struct kvm_reg_list reg_list; | 730 | struct kvm_reg_list reg_list; |
723 | unsigned n; | 731 | unsigned n; |
724 | 732 | ||
733 | if (unlikely(!kvm_vcpu_initialized(vcpu))) | ||
734 | return -ENOEXEC; | ||
735 | |||
725 | if (copy_from_user(®_list, user_list, sizeof(reg_list))) | 736 | if (copy_from_user(®_list, user_list, sizeof(reg_list))) |
726 | return -EFAULT; | 737 | return -EFAULT; |
727 | n = reg_list.n; | 738 | n = reg_list.n; |
diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c index 965706578f13..84ba67b982c0 100644 --- a/arch/arm/kvm/mmu.c +++ b/arch/arm/kvm/mmu.c | |||
@@ -43,7 +43,14 @@ static phys_addr_t hyp_idmap_vector; | |||
43 | 43 | ||
44 | static void kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa) | 44 | static void kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa) |
45 | { | 45 | { |
46 | kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, kvm, ipa); | 46 | /* |
47 | * This function also gets called when dealing with HYP page | ||
48 | * tables. As HYP doesn't have an associated struct kvm (and | ||
49 | * the HYP page tables are fairly static), we don't do | ||
50 | * anything there. | ||
51 | */ | ||
52 | if (kvm) | ||
53 | kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, kvm, ipa); | ||
47 | } | 54 | } |
48 | 55 | ||
49 | static int mmu_topup_memory_cache(struct kvm_mmu_memory_cache *cache, | 56 | static int mmu_topup_memory_cache(struct kvm_mmu_memory_cache *cache, |
@@ -78,18 +85,20 @@ static void *mmu_memory_cache_alloc(struct kvm_mmu_memory_cache *mc) | |||
78 | return p; | 85 | return p; |
79 | } | 86 | } |
80 | 87 | ||
81 | static void clear_pud_entry(pud_t *pud) | 88 | static void clear_pud_entry(struct kvm *kvm, pud_t *pud, phys_addr_t addr) |
82 | { | 89 | { |
83 | pmd_t *pmd_table = pmd_offset(pud, 0); | 90 | pmd_t *pmd_table = pmd_offset(pud, 0); |
84 | pud_clear(pud); | 91 | pud_clear(pud); |
92 | kvm_tlb_flush_vmid_ipa(kvm, addr); | ||
85 | pmd_free(NULL, pmd_table); | 93 | pmd_free(NULL, pmd_table); |
86 | put_page(virt_to_page(pud)); | 94 | put_page(virt_to_page(pud)); |
87 | } | 95 | } |
88 | 96 | ||
89 | static void clear_pmd_entry(pmd_t *pmd) | 97 | static void clear_pmd_entry(struct kvm *kvm, pmd_t *pmd, phys_addr_t addr) |
90 | { | 98 | { |
91 | pte_t *pte_table = pte_offset_kernel(pmd, 0); | 99 | pte_t *pte_table = pte_offset_kernel(pmd, 0); |
92 | pmd_clear(pmd); | 100 | pmd_clear(pmd); |
101 | kvm_tlb_flush_vmid_ipa(kvm, addr); | ||
93 | pte_free_kernel(NULL, pte_table); | 102 | pte_free_kernel(NULL, pte_table); |
94 | put_page(virt_to_page(pmd)); | 103 | put_page(virt_to_page(pmd)); |
95 | } | 104 | } |
@@ -100,11 +109,12 @@ static bool pmd_empty(pmd_t *pmd) | |||
100 | return page_count(pmd_page) == 1; | 109 | return page_count(pmd_page) == 1; |
101 | } | 110 | } |
102 | 111 | ||
103 | static void clear_pte_entry(pte_t *pte) | 112 | static void clear_pte_entry(struct kvm *kvm, pte_t *pte, phys_addr_t addr) |
104 | { | 113 | { |
105 | if (pte_present(*pte)) { | 114 | if (pte_present(*pte)) { |
106 | kvm_set_pte(pte, __pte(0)); | 115 | kvm_set_pte(pte, __pte(0)); |
107 | put_page(virt_to_page(pte)); | 116 | put_page(virt_to_page(pte)); |
117 | kvm_tlb_flush_vmid_ipa(kvm, addr); | ||
108 | } | 118 | } |
109 | } | 119 | } |
110 | 120 | ||
@@ -114,7 +124,8 @@ static bool pte_empty(pte_t *pte) | |||
114 | return page_count(pte_page) == 1; | 124 | return page_count(pte_page) == 1; |
115 | } | 125 | } |
116 | 126 | ||
117 | static void unmap_range(pgd_t *pgdp, unsigned long long start, u64 size) | 127 | static void unmap_range(struct kvm *kvm, pgd_t *pgdp, |
128 | unsigned long long start, u64 size) | ||
118 | { | 129 | { |
119 | pgd_t *pgd; | 130 | pgd_t *pgd; |
120 | pud_t *pud; | 131 | pud_t *pud; |
@@ -138,15 +149,15 @@ static void unmap_range(pgd_t *pgdp, unsigned long long start, u64 size) | |||
138 | } | 149 | } |
139 | 150 | ||
140 | pte = pte_offset_kernel(pmd, addr); | 151 | pte = pte_offset_kernel(pmd, addr); |
141 | clear_pte_entry(pte); | 152 | clear_pte_entry(kvm, pte, addr); |
142 | range = PAGE_SIZE; | 153 | range = PAGE_SIZE; |
143 | 154 | ||
144 | /* If we emptied the pte, walk back up the ladder */ | 155 | /* If we emptied the pte, walk back up the ladder */ |
145 | if (pte_empty(pte)) { | 156 | if (pte_empty(pte)) { |
146 | clear_pmd_entry(pmd); | 157 | clear_pmd_entry(kvm, pmd, addr); |
147 | range = PMD_SIZE; | 158 | range = PMD_SIZE; |
148 | if (pmd_empty(pmd)) { | 159 | if (pmd_empty(pmd)) { |
149 | clear_pud_entry(pud); | 160 | clear_pud_entry(kvm, pud, addr); |
150 | range = PUD_SIZE; | 161 | range = PUD_SIZE; |
151 | } | 162 | } |
152 | } | 163 | } |
@@ -165,14 +176,14 @@ void free_boot_hyp_pgd(void) | |||
165 | mutex_lock(&kvm_hyp_pgd_mutex); | 176 | mutex_lock(&kvm_hyp_pgd_mutex); |
166 | 177 | ||
167 | if (boot_hyp_pgd) { | 178 | if (boot_hyp_pgd) { |
168 | unmap_range(boot_hyp_pgd, hyp_idmap_start, PAGE_SIZE); | 179 | unmap_range(NULL, boot_hyp_pgd, hyp_idmap_start, PAGE_SIZE); |
169 | unmap_range(boot_hyp_pgd, TRAMPOLINE_VA, PAGE_SIZE); | 180 | unmap_range(NULL, boot_hyp_pgd, TRAMPOLINE_VA, PAGE_SIZE); |
170 | kfree(boot_hyp_pgd); | 181 | kfree(boot_hyp_pgd); |
171 | boot_hyp_pgd = NULL; | 182 | boot_hyp_pgd = NULL; |
172 | } | 183 | } |
173 | 184 | ||
174 | if (hyp_pgd) | 185 | if (hyp_pgd) |
175 | unmap_range(hyp_pgd, TRAMPOLINE_VA, PAGE_SIZE); | 186 | unmap_range(NULL, hyp_pgd, TRAMPOLINE_VA, PAGE_SIZE); |
176 | 187 | ||
177 | kfree(init_bounce_page); | 188 | kfree(init_bounce_page); |
178 | init_bounce_page = NULL; | 189 | init_bounce_page = NULL; |
@@ -200,9 +211,10 @@ void free_hyp_pgds(void) | |||
200 | 211 | ||
201 | if (hyp_pgd) { | 212 | if (hyp_pgd) { |
202 | for (addr = PAGE_OFFSET; virt_addr_valid(addr); addr += PGDIR_SIZE) | 213 | for (addr = PAGE_OFFSET; virt_addr_valid(addr); addr += PGDIR_SIZE) |
203 | unmap_range(hyp_pgd, KERN_TO_HYP(addr), PGDIR_SIZE); | 214 | unmap_range(NULL, hyp_pgd, KERN_TO_HYP(addr), PGDIR_SIZE); |
204 | for (addr = VMALLOC_START; is_vmalloc_addr((void*)addr); addr += PGDIR_SIZE) | 215 | for (addr = VMALLOC_START; is_vmalloc_addr((void*)addr); addr += PGDIR_SIZE) |
205 | unmap_range(hyp_pgd, KERN_TO_HYP(addr), PGDIR_SIZE); | 216 | unmap_range(NULL, hyp_pgd, KERN_TO_HYP(addr), PGDIR_SIZE); |
217 | |||
206 | kfree(hyp_pgd); | 218 | kfree(hyp_pgd); |
207 | hyp_pgd = NULL; | 219 | hyp_pgd = NULL; |
208 | } | 220 | } |
@@ -393,7 +405,7 @@ int kvm_alloc_stage2_pgd(struct kvm *kvm) | |||
393 | */ | 405 | */ |
394 | static void unmap_stage2_range(struct kvm *kvm, phys_addr_t start, u64 size) | 406 | static void unmap_stage2_range(struct kvm *kvm, phys_addr_t start, u64 size) |
395 | { | 407 | { |
396 | unmap_range(kvm->arch.pgd, start, size); | 408 | unmap_range(kvm, kvm->arch.pgd, start, size); |
397 | } | 409 | } |
398 | 410 | ||
399 | /** | 411 | /** |
@@ -675,7 +687,6 @@ static void handle_hva_to_gpa(struct kvm *kvm, | |||
675 | static void kvm_unmap_hva_handler(struct kvm *kvm, gpa_t gpa, void *data) | 687 | static void kvm_unmap_hva_handler(struct kvm *kvm, gpa_t gpa, void *data) |
676 | { | 688 | { |
677 | unmap_stage2_range(kvm, gpa, PAGE_SIZE); | 689 | unmap_stage2_range(kvm, gpa, PAGE_SIZE); |
678 | kvm_tlb_flush_vmid_ipa(kvm, gpa); | ||
679 | } | 690 | } |
680 | 691 | ||
681 | int kvm_unmap_hva(struct kvm *kvm, unsigned long hva) | 692 | int kvm_unmap_hva(struct kvm *kvm, unsigned long hva) |
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c index 2acdff4c1dfe..180b3024bec3 100644 --- a/arch/arm/mach-at91/at91rm9200_time.c +++ b/arch/arm/mach-at91/at91rm9200_time.c | |||
@@ -174,6 +174,7 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev) | |||
174 | static struct clock_event_device clkevt = { | 174 | static struct clock_event_device clkevt = { |
175 | .name = "at91_tick", | 175 | .name = "at91_tick", |
176 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, | 176 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, |
177 | .shift = 32, | ||
177 | .rating = 150, | 178 | .rating = 150, |
178 | .set_next_event = clkevt32k_next_event, | 179 | .set_next_event = clkevt32k_next_event, |
179 | .set_mode = clkevt32k_mode, | 180 | .set_mode = clkevt32k_mode, |
@@ -264,9 +265,11 @@ void __init at91rm9200_timer_init(void) | |||
264 | at91_st_write(AT91_ST_RTMR, 1); | 265 | at91_st_write(AT91_ST_RTMR, 1); |
265 | 266 | ||
266 | /* Setup timer clockevent, with minimum of two ticks (important!!) */ | 267 | /* Setup timer clockevent, with minimum of two ticks (important!!) */ |
268 | clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift); | ||
269 | clkevt.max_delta_ns = clockevent_delta2ns(AT91_ST_ALMV, &clkevt); | ||
270 | clkevt.min_delta_ns = clockevent_delta2ns(2, &clkevt) + 1; | ||
267 | clkevt.cpumask = cpumask_of(0); | 271 | clkevt.cpumask = cpumask_of(0); |
268 | clockevents_config_and_register(&clkevt, AT91_SLOW_CLOCK, | 272 | clockevents_register_device(&clkevt); |
269 | 2, AT91_ST_ALMV); | ||
270 | 273 | ||
271 | /* register clocksource */ | 274 | /* register clocksource */ |
272 | clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); | 275 | clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); |
diff --git a/arch/arm/mach-at91/at91sam9n12.c b/arch/arm/mach-at91/at91sam9n12.c index 13cdbcd48f51..c7d670d11802 100644 --- a/arch/arm/mach-at91/at91sam9n12.c +++ b/arch/arm/mach-at91/at91sam9n12.c | |||
@@ -223,13 +223,7 @@ static void __init at91sam9n12_map_io(void) | |||
223 | at91_init_sram(0, AT91SAM9N12_SRAM_BASE, AT91SAM9N12_SRAM_SIZE); | 223 | at91_init_sram(0, AT91SAM9N12_SRAM_BASE, AT91SAM9N12_SRAM_SIZE); |
224 | } | 224 | } |
225 | 225 | ||
226 | void __init at91sam9n12_initialize(void) | ||
227 | { | ||
228 | at91_extern_irq = (1 << AT91SAM9N12_ID_IRQ0); | ||
229 | } | ||
230 | |||
231 | AT91_SOC_START(at91sam9n12) | 226 | AT91_SOC_START(at91sam9n12) |
232 | .map_io = at91sam9n12_map_io, | 227 | .map_io = at91sam9n12_map_io, |
233 | .register_clocks = at91sam9n12_register_clocks, | 228 | .register_clocks = at91sam9n12_register_clocks, |
234 | .init = at91sam9n12_initialize, | ||
235 | AT91_SOC_END | 229 | AT91_SOC_END |
diff --git a/arch/arm/mach-at91/include/mach/at91_pmc.h b/arch/arm/mach-at91/include/mach/at91_pmc.h index 31df12029c4e..2bd7f51b0b82 100644 --- a/arch/arm/mach-at91/include/mach/at91_pmc.h +++ b/arch/arm/mach-at91/include/mach/at91_pmc.h | |||
@@ -179,9 +179,9 @@ extern void __iomem *at91_pmc_base; | |||
179 | #define AT91_PMC_PCR_CMD (0x1 << 12) /* Command (read=0, write=1) */ | 179 | #define AT91_PMC_PCR_CMD (0x1 << 12) /* Command (read=0, write=1) */ |
180 | #define AT91_PMC_PCR_DIV(n) ((n) << 16) /* Divisor Value */ | 180 | #define AT91_PMC_PCR_DIV(n) ((n) << 16) /* Divisor Value */ |
181 | #define AT91_PMC_PCR_DIV0 0x0 /* Peripheral clock is MCK */ | 181 | #define AT91_PMC_PCR_DIV0 0x0 /* Peripheral clock is MCK */ |
182 | #define AT91_PMC_PCR_DIV2 0x2 /* Peripheral clock is MCK/2 */ | 182 | #define AT91_PMC_PCR_DIV2 0x1 /* Peripheral clock is MCK/2 */ |
183 | #define AT91_PMC_PCR_DIV4 0x4 /* Peripheral clock is MCK/4 */ | 183 | #define AT91_PMC_PCR_DIV4 0x2 /* Peripheral clock is MCK/4 */ |
184 | #define AT91_PMC_PCR_DIV8 0x8 /* Peripheral clock is MCK/8 */ | 184 | #define AT91_PMC_PCR_DIV8 0x3 /* Peripheral clock is MCK/8 */ |
185 | #define AT91_PMC_PCR_EN (0x1 << 28) /* Enable */ | 185 | #define AT91_PMC_PCR_EN (0x1 << 28) /* Enable */ |
186 | 186 | ||
187 | #endif | 187 | #endif |
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index d19edff0ea6e..ff18fc2ea46f 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
@@ -250,6 +250,7 @@ config MACH_ARMLEX4210 | |||
250 | config MACH_UNIVERSAL_C210 | 250 | config MACH_UNIVERSAL_C210 |
251 | bool "Mobile UNIVERSAL_C210 Board" | 251 | bool "Mobile UNIVERSAL_C210 Board" |
252 | select CLKSRC_MMIO | 252 | select CLKSRC_MMIO |
253 | select CLKSRC_SAMSUNG_PWM | ||
253 | select CPU_EXYNOS4210 | 254 | select CPU_EXYNOS4210 |
254 | select EXYNOS4_SETUP_FIMC | 255 | select EXYNOS4_SETUP_FIMC |
255 | select EXYNOS4_SETUP_FIMD0 | 256 | select EXYNOS4_SETUP_FIMD0 |
@@ -281,7 +282,6 @@ config MACH_UNIVERSAL_C210 | |||
281 | select S5P_DEV_TV | 282 | select S5P_DEV_TV |
282 | select S5P_GPIO_INT | 283 | select S5P_GPIO_INT |
283 | select S5P_SETUP_MIPIPHY | 284 | select S5P_SETUP_MIPIPHY |
284 | select SAMSUNG_HRT | ||
285 | help | 285 | help |
286 | Machine support for Samsung Mobile Universal S5PC210 Reference | 286 | Machine support for Samsung Mobile Universal S5PC210 Reference |
287 | Board. | 287 | Board. |
@@ -410,6 +410,7 @@ config MACH_EXYNOS4_DT | |||
410 | depends on ARCH_EXYNOS4 | 410 | depends on ARCH_EXYNOS4 |
411 | select ARM_AMBA | 411 | select ARM_AMBA |
412 | select CLKSRC_OF | 412 | select CLKSRC_OF |
413 | select CLKSRC_SAMSUNG_PWM if CPU_EXYNOS4210 | ||
413 | select CPU_EXYNOS4210 | 414 | select CPU_EXYNOS4210 |
414 | select KEYBOARD_SAMSUNG if INPUT_KEYBOARD | 415 | select KEYBOARD_SAMSUNG if INPUT_KEYBOARD |
415 | select PINCTRL | 416 | select PINCTRL |
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 745e304ad0de..f7e504b7874d 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c | |||
@@ -10,12 +10,14 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/bitops.h> | ||
13 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
14 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
15 | #include <linux/irqchip.h> | 16 | #include <linux/irqchip.h> |
16 | #include <linux/io.h> | 17 | #include <linux/io.h> |
17 | #include <linux/device.h> | 18 | #include <linux/device.h> |
18 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
20 | #include <clocksource/samsung_pwm.h> | ||
19 | #include <linux/sched.h> | 21 | #include <linux/sched.h> |
20 | #include <linux/serial_core.h> | 22 | #include <linux/serial_core.h> |
21 | #include <linux/of.h> | 23 | #include <linux/of.h> |
@@ -302,6 +304,13 @@ static struct map_desc exynos5440_iodesc0[] __initdata = { | |||
302 | }, | 304 | }, |
303 | }; | 305 | }; |
304 | 306 | ||
307 | static struct samsung_pwm_variant exynos4_pwm_variant = { | ||
308 | .bits = 32, | ||
309 | .div_base = 0, | ||
310 | .has_tint_cstat = true, | ||
311 | .tclk_mask = 0, | ||
312 | }; | ||
313 | |||
305 | void exynos4_restart(char mode, const char *cmd) | 314 | void exynos4_restart(char mode, const char *cmd) |
306 | { | 315 | { |
307 | __raw_writel(0x1, S5P_SWRESET); | 316 | __raw_writel(0x1, S5P_SWRESET); |
@@ -317,9 +326,16 @@ void exynos5_restart(char mode, const char *cmd) | |||
317 | val = 0x1; | 326 | val = 0x1; |
318 | addr = EXYNOS_SWRESET; | 327 | addr = EXYNOS_SWRESET; |
319 | } else if (of_machine_is_compatible("samsung,exynos5440")) { | 328 | } else if (of_machine_is_compatible("samsung,exynos5440")) { |
329 | u32 status; | ||
320 | np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock"); | 330 | np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock"); |
331 | |||
332 | addr = of_iomap(np, 0) + 0xbc; | ||
333 | status = __raw_readl(addr); | ||
334 | |||
321 | addr = of_iomap(np, 0) + 0xcc; | 335 | addr = of_iomap(np, 0) + 0xcc; |
322 | val = (0xfff << 20) | (0x1 << 16); | 336 | val = __raw_readl(addr); |
337 | |||
338 | val = (val & 0xffff0000) | (status & 0xffff); | ||
323 | } else { | 339 | } else { |
324 | pr_err("%s: cannot support non-DT\n", __func__); | 340 | pr_err("%s: cannot support non-DT\n", __func__); |
325 | return; | 341 | return; |
@@ -370,6 +386,8 @@ int __init exynos_fdt_map_chipid(unsigned long node, const char *uname, | |||
370 | 386 | ||
371 | void __init exynos_init_io(struct map_desc *mach_desc, int size) | 387 | void __init exynos_init_io(struct map_desc *mach_desc, int size) |
372 | { | 388 | { |
389 | debug_ll_io_init(); | ||
390 | |||
373 | #ifdef CONFIG_OF | 391 | #ifdef CONFIG_OF |
374 | if (initial_boot_params) | 392 | if (initial_boot_params) |
375 | of_scan_flat_dt(exynos_fdt_map_chipid, NULL); | 393 | of_scan_flat_dt(exynos_fdt_map_chipid, NULL); |
@@ -442,8 +460,20 @@ static void __init exynos5440_map_io(void) | |||
442 | iotable_init(exynos5440_iodesc0, ARRAY_SIZE(exynos5440_iodesc0)); | 460 | iotable_init(exynos5440_iodesc0, ARRAY_SIZE(exynos5440_iodesc0)); |
443 | } | 461 | } |
444 | 462 | ||
463 | void __init exynos_set_timer_source(u8 channels) | ||
464 | { | ||
465 | exynos4_pwm_variant.output_mask = BIT(SAMSUNG_PWM_NUM) - 1; | ||
466 | exynos4_pwm_variant.output_mask &= ~channels; | ||
467 | } | ||
468 | |||
445 | void __init exynos_init_time(void) | 469 | void __init exynos_init_time(void) |
446 | { | 470 | { |
471 | unsigned int timer_irqs[SAMSUNG_PWM_NUM] = { | ||
472 | EXYNOS4_IRQ_TIMER0_VIC, EXYNOS4_IRQ_TIMER1_VIC, | ||
473 | EXYNOS4_IRQ_TIMER2_VIC, EXYNOS4_IRQ_TIMER3_VIC, | ||
474 | EXYNOS4_IRQ_TIMER4_VIC, | ||
475 | }; | ||
476 | |||
447 | if (of_have_populated_dt()) { | 477 | if (of_have_populated_dt()) { |
448 | #ifdef CONFIG_OF | 478 | #ifdef CONFIG_OF |
449 | of_clk_init(NULL); | 479 | of_clk_init(NULL); |
@@ -455,7 +485,14 @@ void __init exynos_init_time(void) | |||
455 | exynos4_clk_init(NULL, !soc_is_exynos4210(), S5P_VA_CMU, readl(S5P_VA_CHIPID + 8) & 1); | 485 | exynos4_clk_init(NULL, !soc_is_exynos4210(), S5P_VA_CMU, readl(S5P_VA_CHIPID + 8) & 1); |
456 | exynos4_clk_register_fixed_ext(xxti_f, xusbxti_f); | 486 | exynos4_clk_register_fixed_ext(xxti_f, xusbxti_f); |
457 | #endif | 487 | #endif |
458 | mct_init(S5P_VA_SYSTIMER, EXYNOS4_IRQ_MCT_G0, EXYNOS4_IRQ_MCT_L0, EXYNOS4_IRQ_MCT_L1); | 488 | #ifdef CONFIG_CLKSRC_SAMSUNG_PWM |
489 | if (soc_is_exynos4210() && samsung_rev() == EXYNOS4210_REV_0) | ||
490 | samsung_pwm_clocksource_init(S3C_VA_TIMER, | ||
491 | timer_irqs, &exynos4_pwm_variant); | ||
492 | else | ||
493 | #endif | ||
494 | mct_init(S5P_VA_SYSTIMER, EXYNOS4_IRQ_MCT_G0, | ||
495 | EXYNOS4_IRQ_MCT_L0, EXYNOS4_IRQ_MCT_L1); | ||
459 | } | 496 | } |
460 | } | 497 | } |
461 | 498 | ||
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index 60dd35cc01a6..11fc1e29819b 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h | |||
@@ -32,6 +32,8 @@ void exynos4_clk_register_fixed_ext(unsigned long, unsigned long); | |||
32 | 32 | ||
33 | void exynos_firmware_init(void); | 33 | void exynos_firmware_init(void); |
34 | 34 | ||
35 | void exynos_set_timer_source(u8 channels); | ||
36 | |||
35 | #ifdef CONFIG_PM_GENERIC_DOMAINS | 37 | #ifdef CONFIG_PM_GENERIC_DOMAINS |
36 | int exynos_pm_late_initcall(void); | 38 | int exynos_pm_late_initcall(void); |
37 | #else | 39 | #else |
diff --git a/arch/arm/mach-exynos/include/mach/pm-core.h b/arch/arm/mach-exynos/include/mach/pm-core.h index 7dbbfec13ea5..296090e7f423 100644 --- a/arch/arm/mach-exynos/include/mach/pm-core.h +++ b/arch/arm/mach-exynos/include/mach/pm-core.h | |||
@@ -18,8 +18,15 @@ | |||
18 | #ifndef __ASM_ARCH_PM_CORE_H | 18 | #ifndef __ASM_ARCH_PM_CORE_H |
19 | #define __ASM_ARCH_PM_CORE_H __FILE__ | 19 | #define __ASM_ARCH_PM_CORE_H __FILE__ |
20 | 20 | ||
21 | #include <linux/of.h> | ||
21 | #include <mach/regs-pmu.h> | 22 | #include <mach/regs-pmu.h> |
22 | 23 | ||
24 | #ifdef CONFIG_PINCTRL_EXYNOS | ||
25 | extern u32 exynos_get_eint_wake_mask(void); | ||
26 | #else | ||
27 | static inline u32 exynos_get_eint_wake_mask(void) { return 0xffffffff; } | ||
28 | #endif | ||
29 | |||
23 | static inline void s3c_pm_debug_init_uart(void) | 30 | static inline void s3c_pm_debug_init_uart(void) |
24 | { | 31 | { |
25 | /* nothing here yet */ | 32 | /* nothing here yet */ |
@@ -27,7 +34,12 @@ static inline void s3c_pm_debug_init_uart(void) | |||
27 | 34 | ||
28 | static inline void s3c_pm_arch_prepare_irqs(void) | 35 | static inline void s3c_pm_arch_prepare_irqs(void) |
29 | { | 36 | { |
30 | __raw_writel(s3c_irqwake_eintmask, S5P_EINT_WAKEUP_MASK); | 37 | u32 eintmask = s3c_irqwake_eintmask; |
38 | |||
39 | if (of_have_populated_dt()) | ||
40 | eintmask = exynos_get_eint_wake_mask(); | ||
41 | |||
42 | __raw_writel(eintmask, S5P_EINT_WAKEUP_MASK); | ||
31 | __raw_writel(s3c_irqwake_intmask & ~(1 << 31), S5P_WAKEUP_MASK); | 43 | __raw_writel(s3c_irqwake_intmask & ~(1 << 31), S5P_WAKEUP_MASK); |
32 | } | 44 | } |
33 | 45 | ||
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index 327d50d4681d..74ddb2b55614 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -41,7 +41,6 @@ | |||
41 | #include <plat/mfc.h> | 41 | #include <plat/mfc.h> |
42 | #include <plat/sdhci.h> | 42 | #include <plat/sdhci.h> |
43 | #include <plat/fimc-core.h> | 43 | #include <plat/fimc-core.h> |
44 | #include <plat/samsung-time.h> | ||
45 | #include <plat/camport.h> | 44 | #include <plat/camport.h> |
46 | 45 | ||
47 | #include <mach/map.h> | 46 | #include <mach/map.h> |
@@ -1094,7 +1093,7 @@ static void __init universal_map_io(void) | |||
1094 | { | 1093 | { |
1095 | exynos_init_io(NULL, 0); | 1094 | exynos_init_io(NULL, 0); |
1096 | s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs)); | 1095 | s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs)); |
1097 | samsung_set_timer_source(SAMSUNG_PWM2, SAMSUNG_PWM4); | 1096 | exynos_set_timer_source(BIT(2) | BIT(4)); |
1098 | xxti_f = 0; | 1097 | xxti_f = 0; |
1099 | xusbxti_f = 24000000; | 1098 | xusbxti_f = 24000000; |
1100 | } | 1099 | } |
@@ -1154,7 +1153,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210") | |||
1154 | .map_io = universal_map_io, | 1153 | .map_io = universal_map_io, |
1155 | .init_machine = universal_machine_init, | 1154 | .init_machine = universal_machine_init, |
1156 | .init_late = exynos_init_late, | 1155 | .init_late = exynos_init_late, |
1157 | .init_time = samsung_timer_init, | 1156 | .init_time = exynos_init_time, |
1158 | .reserve = &universal_reserve, | 1157 | .reserve = &universal_reserve, |
1159 | .restart = exynos4_restart, | 1158 | .restart = exynos4_restart, |
1160 | MACHINE_END | 1159 | MACHINE_END |
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 151259003086..4e3148ce852d 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
@@ -177,17 +177,18 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode) | |||
177 | static const char *step_sels[] = { "osc", "pll2_pfd2_396m", }; | 177 | static const char *step_sels[] = { "osc", "pll2_pfd2_396m", }; |
178 | static const char *pll1_sw_sels[] = { "pll1_sys", "step", }; | 178 | static const char *pll1_sw_sels[] = { "pll1_sys", "step", }; |
179 | static const char *periph_pre_sels[] = { "pll2_bus", "pll2_pfd2_396m", "pll2_pfd0_352m", "pll2_198m", }; | 179 | static const char *periph_pre_sels[] = { "pll2_bus", "pll2_pfd2_396m", "pll2_pfd0_352m", "pll2_198m", }; |
180 | static const char *periph_clk2_sels[] = { "pll3_usb_otg", "osc", }; | 180 | static const char *periph_clk2_sels[] = { "pll3_usb_otg", "osc", "osc", "dummy", }; |
181 | static const char *periph2_clk2_sels[] = { "pll3_usb_otg", "pll2_bus", }; | ||
181 | static const char *periph_sels[] = { "periph_pre", "periph_clk2", }; | 182 | static const char *periph_sels[] = { "periph_pre", "periph_clk2", }; |
182 | static const char *periph2_sels[] = { "periph2_pre", "periph2_clk2", }; | 183 | static const char *periph2_sels[] = { "periph2_pre", "periph2_clk2", }; |
183 | static const char *axi_sels[] = { "periph", "pll2_pfd2_396m", "pll3_pfd1_540m", }; | 184 | static const char *axi_sels[] = { "periph", "pll2_pfd2_396m", "periph", "pll3_pfd1_540m", }; |
184 | static const char *audio_sels[] = { "pll4_post_div", "pll3_pfd2_508m", "pll3_pfd3_454m", "pll3_usb_otg", }; | 185 | static const char *audio_sels[] = { "pll4_post_div", "pll3_pfd2_508m", "pll3_pfd3_454m", "pll3_usb_otg", }; |
185 | static const char *gpu_axi_sels[] = { "axi", "ahb", }; | 186 | static const char *gpu_axi_sels[] = { "axi", "ahb", }; |
186 | static const char *gpu2d_core_sels[] = { "axi", "pll3_usb_otg", "pll2_pfd0_352m", "pll2_pfd2_396m", }; | 187 | static const char *gpu2d_core_sels[] = { "axi", "pll3_usb_otg", "pll2_pfd0_352m", "pll2_pfd2_396m", }; |
187 | static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", }; | 188 | static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", }; |
188 | static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd9_720m", }; | 189 | static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll3_pfd0_720m", }; |
189 | static const char *ipu_sels[] = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", }; | 190 | static const char *ipu_sels[] = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", }; |
190 | static const char *ldb_di_sels[] = { "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_usb_otg", }; | 191 | static const char *ldb_di_sels[] = { "pll5_video_div", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_usb_otg", }; |
191 | static const char *ipu_di_pre_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll5_video_div", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", }; | 192 | static const char *ipu_di_pre_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll5_video_div", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", }; |
192 | static const char *ipu1_di0_sels[] = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; | 193 | static const char *ipu1_di0_sels[] = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; |
193 | static const char *ipu1_di1_sels[] = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; | 194 | static const char *ipu1_di1_sels[] = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; |
@@ -369,8 +370,8 @@ int __init mx6q_clocks_init(void) | |||
369 | clk[pll1_sw] = imx_clk_mux("pll1_sw", base + 0xc, 2, 1, pll1_sw_sels, ARRAY_SIZE(pll1_sw_sels)); | 370 | clk[pll1_sw] = imx_clk_mux("pll1_sw", base + 0xc, 2, 1, pll1_sw_sels, ARRAY_SIZE(pll1_sw_sels)); |
370 | clk[periph_pre] = imx_clk_mux("periph_pre", base + 0x18, 18, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels)); | 371 | clk[periph_pre] = imx_clk_mux("periph_pre", base + 0x18, 18, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels)); |
371 | clk[periph2_pre] = imx_clk_mux("periph2_pre", base + 0x18, 21, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels)); | 372 | clk[periph2_pre] = imx_clk_mux("periph2_pre", base + 0x18, 21, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels)); |
372 | clk[periph_clk2_sel] = imx_clk_mux("periph_clk2_sel", base + 0x18, 12, 1, periph_clk2_sels, ARRAY_SIZE(periph_clk2_sels)); | 373 | clk[periph_clk2_sel] = imx_clk_mux("periph_clk2_sel", base + 0x18, 12, 2, periph_clk2_sels, ARRAY_SIZE(periph_clk2_sels)); |
373 | clk[periph2_clk2_sel] = imx_clk_mux("periph2_clk2_sel", base + 0x18, 20, 1, periph_clk2_sels, ARRAY_SIZE(periph_clk2_sels)); | 374 | clk[periph2_clk2_sel] = imx_clk_mux("periph2_clk2_sel", base + 0x18, 20, 1, periph2_clk2_sels, ARRAY_SIZE(periph2_clk2_sels)); |
374 | clk[axi_sel] = imx_clk_mux("axi_sel", base + 0x14, 6, 2, axi_sels, ARRAY_SIZE(axi_sels)); | 375 | clk[axi_sel] = imx_clk_mux("axi_sel", base + 0x14, 6, 2, axi_sels, ARRAY_SIZE(axi_sels)); |
375 | clk[esai_sel] = imx_clk_mux("esai_sel", base + 0x20, 19, 2, audio_sels, ARRAY_SIZE(audio_sels)); | 376 | clk[esai_sel] = imx_clk_mux("esai_sel", base + 0x20, 19, 2, audio_sels, ARRAY_SIZE(audio_sels)); |
376 | clk[asrc_sel] = imx_clk_mux("asrc_sel", base + 0x30, 7, 2, audio_sels, ARRAY_SIZE(audio_sels)); | 377 | clk[asrc_sel] = imx_clk_mux("asrc_sel", base + 0x30, 7, 2, audio_sels, ARRAY_SIZE(audio_sels)); |
@@ -498,7 +499,7 @@ int __init mx6q_clocks_init(void) | |||
498 | clk[ldb_di1] = imx_clk_gate2("ldb_di1", "ldb_di1_podf", base + 0x74, 14); | 499 | clk[ldb_di1] = imx_clk_gate2("ldb_di1", "ldb_di1_podf", base + 0x74, 14); |
499 | clk[ipu2_di1] = imx_clk_gate2("ipu2_di1", "ipu2_di1_sel", base + 0x74, 10); | 500 | clk[ipu2_di1] = imx_clk_gate2("ipu2_di1", "ipu2_di1_sel", base + 0x74, 10); |
500 | clk[hsi_tx] = imx_clk_gate2("hsi_tx", "hsi_tx_podf", base + 0x74, 16); | 501 | clk[hsi_tx] = imx_clk_gate2("hsi_tx", "hsi_tx_podf", base + 0x74, 16); |
501 | clk[mlb] = imx_clk_gate2("mlb", "pll8_mlb", base + 0x74, 18); | 502 | clk[mlb] = imx_clk_gate2("mlb", "axi", base + 0x74, 18); |
502 | clk[mmdc_ch0_axi] = imx_clk_gate2("mmdc_ch0_axi", "mmdc_ch0_axi_podf", base + 0x74, 20); | 503 | clk[mmdc_ch0_axi] = imx_clk_gate2("mmdc_ch0_axi", "mmdc_ch0_axi_podf", base + 0x74, 20); |
503 | clk[mmdc_ch1_axi] = imx_clk_gate2("mmdc_ch1_axi", "mmdc_ch1_axi_podf", base + 0x74, 22); | 504 | clk[mmdc_ch1_axi] = imx_clk_gate2("mmdc_ch1_axi", "mmdc_ch1_axi_podf", base + 0x74, 22); |
504 | clk[ocram] = imx_clk_gate2("ocram", "ahb", base + 0x74, 28); | 505 | clk[ocram] = imx_clk_gate2("ocram", "ahb", base + 0x74, 28); |
diff --git a/arch/arm/mach-imx/headsmp.S b/arch/arm/mach-imx/headsmp.S index 67b9c48dcafe..627f16f0e9d1 100644 --- a/arch/arm/mach-imx/headsmp.S +++ b/arch/arm/mach-imx/headsmp.S | |||
@@ -18,8 +18,20 @@ | |||
18 | .section ".text.head", "ax" | 18 | .section ".text.head", "ax" |
19 | 19 | ||
20 | #ifdef CONFIG_SMP | 20 | #ifdef CONFIG_SMP |
21 | diag_reg_offset: | ||
22 | .word g_diag_reg - . | ||
23 | |||
24 | .macro set_diag_reg | ||
25 | adr r0, diag_reg_offset | ||
26 | ldr r1, [r0] | ||
27 | add r1, r1, r0 @ r1 = physical &g_diag_reg | ||
28 | ldr r0, [r1] | ||
29 | mcr p15, 0, r0, c15, c0, 1 @ write diagnostic register | ||
30 | .endm | ||
31 | |||
21 | ENTRY(v7_secondary_startup) | 32 | ENTRY(v7_secondary_startup) |
22 | bl v7_invalidate_l1 | 33 | bl v7_invalidate_l1 |
34 | set_diag_reg | ||
23 | b secondary_startup | 35 | b secondary_startup |
24 | ENDPROC(v7_secondary_startup) | 36 | ENDPROC(v7_secondary_startup) |
25 | #endif | 37 | #endif |
diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c index 4a69305db65e..c6e1ab544882 100644 --- a/arch/arm/mach-imx/platsmp.c +++ b/arch/arm/mach-imx/platsmp.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/smp.h> | 14 | #include <linux/smp.h> |
15 | #include <asm/cacheflush.h> | ||
15 | #include <asm/page.h> | 16 | #include <asm/page.h> |
16 | #include <asm/smp_scu.h> | 17 | #include <asm/smp_scu.h> |
17 | #include <asm/mach/map.h> | 18 | #include <asm/mach/map.h> |
@@ -21,6 +22,7 @@ | |||
21 | 22 | ||
22 | #define SCU_STANDBY_ENABLE (1 << 5) | 23 | #define SCU_STANDBY_ENABLE (1 << 5) |
23 | 24 | ||
25 | u32 g_diag_reg; | ||
24 | static void __iomem *scu_base; | 26 | static void __iomem *scu_base; |
25 | 27 | ||
26 | static struct map_desc scu_io_desc __initdata = { | 28 | static struct map_desc scu_io_desc __initdata = { |
@@ -80,6 +82,18 @@ void imx_smp_prepare(void) | |||
80 | static void __init imx_smp_prepare_cpus(unsigned int max_cpus) | 82 | static void __init imx_smp_prepare_cpus(unsigned int max_cpus) |
81 | { | 83 | { |
82 | imx_smp_prepare(); | 84 | imx_smp_prepare(); |
85 | |||
86 | /* | ||
87 | * The diagnostic register holds the errata bits. Mostly bootloader | ||
88 | * does not bring up secondary cores, so that when errata bits are set | ||
89 | * in bootloader, they are set only for boot cpu. But on a SMP | ||
90 | * configuration, it should be equally done on every single core. | ||
91 | * Read the register from boot cpu here, and will replicate it into | ||
92 | * secondary cores when booting them. | ||
93 | */ | ||
94 | asm("mrc p15, 0, %0, c15, c0, 1" : "=r" (g_diag_reg) : : "cc"); | ||
95 | __cpuc_flush_dcache_area(&g_diag_reg, sizeof(g_diag_reg)); | ||
96 | outer_clean_range(__pa(&g_diag_reg), __pa(&g_diag_reg + 1)); | ||
83 | } | 97 | } |
84 | 98 | ||
85 | struct smp_operations imx_smp_ops __initdata = { | 99 | struct smp_operations imx_smp_ops __initdata = { |
diff --git a/arch/arm/mach-kirkwood/board-ts219.c b/arch/arm/mach-kirkwood/board-ts219.c index acb0187c7ee1..4695d5f35fc9 100644 --- a/arch/arm/mach-kirkwood/board-ts219.c +++ b/arch/arm/mach-kirkwood/board-ts219.c | |||
@@ -41,13 +41,3 @@ void __init qnap_dt_ts219_init(void) | |||
41 | 41 | ||
42 | pm_power_off = qnap_tsx1x_power_off; | 42 | pm_power_off = qnap_tsx1x_power_off; |
43 | } | 43 | } |
44 | |||
45 | /* FIXME: Will not work with DT. Maybe use MPP40_GPIO? */ | ||
46 | static int __init ts219_pci_init(void) | ||
47 | { | ||
48 | if (machine_is_ts219()) | ||
49 | kirkwood_pcie_init(KW_PCIE0); | ||
50 | |||
51 | return 0; | ||
52 | } | ||
53 | subsys_initcall(ts219_pci_init); | ||
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index c2cae69e6d2b..f38922897563 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c | |||
@@ -528,12 +528,6 @@ void __init kirkwood_init_early(void) | |||
528 | { | 528 | { |
529 | orion_time_set_base(TIMER_VIRT_BASE); | 529 | orion_time_set_base(TIMER_VIRT_BASE); |
530 | 530 | ||
531 | /* | ||
532 | * Some Kirkwood devices allocate their coherent buffers from atomic | ||
533 | * context. Increase size of atomic coherent pool to make sure such | ||
534 | * the allocations won't fail. | ||
535 | */ | ||
536 | init_dma_coherent_pool_size(SZ_1M); | ||
537 | mvebu_mbus_init("marvell,kirkwood-mbus", | 531 | mvebu_mbus_init("marvell,kirkwood-mbus", |
538 | BRIDGE_WINS_BASE, BRIDGE_WINS_SZ, | 532 | BRIDGE_WINS_BASE, BRIDGE_WINS_SZ, |
539 | DDR_WINDOW_CPU_BASE, DDR_WINDOW_CPU_SZ); | 533 | DDR_WINDOW_CPU_BASE, DDR_WINDOW_CPU_SZ); |
diff --git a/arch/arm/mach-kirkwood/ts219-setup.c b/arch/arm/mach-kirkwood/ts219-setup.c index 283abff90228..e1267d6b468f 100644 --- a/arch/arm/mach-kirkwood/ts219-setup.c +++ b/arch/arm/mach-kirkwood/ts219-setup.c | |||
@@ -124,7 +124,7 @@ static void __init qnap_ts219_init(void) | |||
124 | static int __init ts219_pci_init(void) | 124 | static int __init ts219_pci_init(void) |
125 | { | 125 | { |
126 | if (machine_is_ts219()) | 126 | if (machine_is_ts219()) |
127 | kirkwood_pcie_init(KW_PCIE0); | 127 | kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0); |
128 | 128 | ||
129 | return 0; | 129 | return 0; |
130 | } | 130 | } |
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig index e11acbb0a46d..80a8bcacd9d5 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig | |||
@@ -15,6 +15,7 @@ config ARCH_MVEBU | |||
15 | select MVEBU_CLK_GATING | 15 | select MVEBU_CLK_GATING |
16 | select MVEBU_MBUS | 16 | select MVEBU_MBUS |
17 | select ZONE_DMA if ARM_LPAE | 17 | select ZONE_DMA if ARM_LPAE |
18 | select ARCH_REQUIRE_GPIOLIB | ||
18 | 19 | ||
19 | if ARCH_MVEBU | 20 | if ARCH_MVEBU |
20 | 21 | ||
diff --git a/arch/arm/mach-mvebu/armada-370-xp.c b/arch/arm/mach-mvebu/armada-370-xp.c index 42a4cb3087e2..1c48890bb72b 100644 --- a/arch/arm/mach-mvebu/armada-370-xp.c +++ b/arch/arm/mach-mvebu/armada-370-xp.c | |||
@@ -54,13 +54,6 @@ void __init armada_370_xp_init_early(void) | |||
54 | char *mbus_soc_name; | 54 | char *mbus_soc_name; |
55 | 55 | ||
56 | /* | 56 | /* |
57 | * Some Armada 370/XP devices allocate their coherent buffers | ||
58 | * from atomic context. Increase size of atomic coherent pool | ||
59 | * to make sure such the allocations won't fail. | ||
60 | */ | ||
61 | init_dma_coherent_pool_size(SZ_1M); | ||
62 | |||
63 | /* | ||
64 | * This initialization will be replaced by a DT-based | 57 | * This initialization will be replaced by a DT-based |
65 | * initialization once the mvebu-mbus driver gains DT support. | 58 | * initialization once the mvebu-mbus driver gains DT support. |
66 | */ | 59 | */ |
diff --git a/arch/arm/mach-mvebu/coherency_ll.S b/arch/arm/mach-mvebu/coherency_ll.S index 53e8391192cd..5476669ba905 100644 --- a/arch/arm/mach-mvebu/coherency_ll.S +++ b/arch/arm/mach-mvebu/coherency_ll.S | |||
@@ -32,15 +32,21 @@ ENTRY(ll_set_cpu_coherent) | |||
32 | 32 | ||
33 | /* Add CPU to SMP group - Atomic */ | 33 | /* Add CPU to SMP group - Atomic */ |
34 | add r3, r0, #ARMADA_XP_CFB_CTL_REG_OFFSET | 34 | add r3, r0, #ARMADA_XP_CFB_CTL_REG_OFFSET |
35 | ldr r2, [r3] | 35 | 1: |
36 | ldrex r2, [r3] | ||
36 | orr r2, r2, r1 | 37 | orr r2, r2, r1 |
37 | str r2, [r3] | 38 | strex r0, r2, [r3] |
39 | cmp r0, #0 | ||
40 | bne 1b | ||
38 | 41 | ||
39 | /* Enable coherency on CPU - Atomic */ | 42 | /* Enable coherency on CPU - Atomic */ |
40 | add r3, r0, #ARMADA_XP_CFB_CFG_REG_OFFSET | 43 | add r3, r3, #ARMADA_XP_CFB_CFG_REG_OFFSET |
41 | ldr r2, [r3] | 44 | 1: |
45 | ldrex r2, [r3] | ||
42 | orr r2, r2, r1 | 46 | orr r2, r2, r1 |
43 | str r2, [r3] | 47 | strex r0, r2, [r3] |
48 | cmp r0, #0 | ||
49 | bne 1b | ||
44 | 50 | ||
45 | dsb | 51 | dsb |
46 | 52 | ||
diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c index 68ab858e27b7..a94b3a718d1a 100644 --- a/arch/arm/mach-omap1/dma.c +++ b/arch/arm/mach-omap1/dma.c | |||
@@ -345,6 +345,7 @@ static int __init omap1_system_dma_init(void) | |||
345 | dev_err(&pdev->dev, | 345 | dev_err(&pdev->dev, |
346 | "%s: Memory allocation failed for d->chan!\n", | 346 | "%s: Memory allocation failed for d->chan!\n", |
347 | __func__); | 347 | __func__); |
348 | ret = -ENOMEM; | ||
348 | goto exit_release_d; | 349 | goto exit_release_d; |
349 | } | 350 | } |
350 | 351 | ||
diff --git a/arch/arm/mach-omap2/board-flash.c b/arch/arm/mach-omap2/board-flash.c index c33adea0247c..fc20a61f6b2a 100644 --- a/arch/arm/mach-omap2/board-flash.c +++ b/arch/arm/mach-omap2/board-flash.c | |||
@@ -112,6 +112,9 @@ struct gpmc_timings nand_default_timings[1] = { | |||
112 | .cs_rd_off = 36, | 112 | .cs_rd_off = 36, |
113 | .cs_wr_off = 36, | 113 | .cs_wr_off = 36, |
114 | 114 | ||
115 | .we_on = 6, | ||
116 | .oe_on = 6, | ||
117 | |||
115 | .adv_on = 6, | 118 | .adv_on = 6, |
116 | .adv_rd_off = 24, | 119 | .adv_rd_off = 24, |
117 | .adv_wr_off = 36, | 120 | .adv_wr_off = 36, |
diff --git a/arch/arm/mach-omap2/cclock33xx_data.c b/arch/arm/mach-omap2/cclock33xx_data.c index 6ebc7803bc3e..af3544ce4f02 100644 --- a/arch/arm/mach-omap2/cclock33xx_data.c +++ b/arch/arm/mach-omap2/cclock33xx_data.c | |||
@@ -454,9 +454,29 @@ DEFINE_CLK_GATE(cefuse_fck, "sys_clkin_ck", &sys_clkin_ck, 0x0, | |||
454 | */ | 454 | */ |
455 | DEFINE_CLK_FIXED_FACTOR(clkdiv32k_ck, "clk_24mhz", &clk_24mhz, 0x0, 1, 732); | 455 | DEFINE_CLK_FIXED_FACTOR(clkdiv32k_ck, "clk_24mhz", &clk_24mhz, 0x0, 1, 732); |
456 | 456 | ||
457 | DEFINE_CLK_GATE(clkdiv32k_ick, "clkdiv32k_ck", &clkdiv32k_ck, 0x0, | 457 | static struct clk clkdiv32k_ick; |
458 | AM33XX_CM_PER_CLKDIV32K_CLKCTRL, AM33XX_MODULEMODE_SWCTRL_SHIFT, | 458 | |
459 | 0x0, NULL); | 459 | static const char *clkdiv32k_ick_parent_names[] = { |
460 | "clkdiv32k_ck", | ||
461 | }; | ||
462 | |||
463 | static const struct clk_ops clkdiv32k_ick_ops = { | ||
464 | .enable = &omap2_dflt_clk_enable, | ||
465 | .disable = &omap2_dflt_clk_disable, | ||
466 | .is_enabled = &omap2_dflt_clk_is_enabled, | ||
467 | .init = &omap2_init_clk_clkdm, | ||
468 | }; | ||
469 | |||
470 | static struct clk_hw_omap clkdiv32k_ick_hw = { | ||
471 | .hw = { | ||
472 | .clk = &clkdiv32k_ick, | ||
473 | }, | ||
474 | .enable_reg = AM33XX_CM_PER_CLKDIV32K_CLKCTRL, | ||
475 | .enable_bit = AM33XX_MODULEMODE_SWCTRL_SHIFT, | ||
476 | .clkdm_name = "clk_24mhz_clkdm", | ||
477 | }; | ||
478 | |||
479 | DEFINE_STRUCT_CLK(clkdiv32k_ick, clkdiv32k_ick_parent_names, clkdiv32k_ick_ops); | ||
460 | 480 | ||
461 | /* "usbotg_fck" is an additional clock and not really a modulemode */ | 481 | /* "usbotg_fck" is an additional clock and not really a modulemode */ |
462 | DEFINE_CLK_GATE(usbotg_fck, "dpll_per_ck", &dpll_per_ck, 0x0, | 482 | DEFINE_CLK_GATE(usbotg_fck, "dpll_per_ck", &dpll_per_ck, 0x0, |
diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c index d9c27195caf0..662c7fd633cc 100644 --- a/arch/arm/mach-omap2/gpmc-nand.c +++ b/arch/arm/mach-omap2/gpmc-nand.c | |||
@@ -43,44 +43,6 @@ static struct platform_device gpmc_nand_device = { | |||
43 | .resource = gpmc_nand_resource, | 43 | .resource = gpmc_nand_resource, |
44 | }; | 44 | }; |
45 | 45 | ||
46 | static int omap2_nand_gpmc_retime( | ||
47 | struct omap_nand_platform_data *gpmc_nand_data, | ||
48 | struct gpmc_timings *gpmc_t) | ||
49 | { | ||
50 | struct gpmc_timings t; | ||
51 | int err; | ||
52 | |||
53 | memset(&t, 0, sizeof(t)); | ||
54 | t.sync_clk = gpmc_t->sync_clk; | ||
55 | t.cs_on = gpmc_t->cs_on; | ||
56 | t.adv_on = gpmc_t->adv_on; | ||
57 | |||
58 | /* Read */ | ||
59 | t.adv_rd_off = gpmc_t->adv_rd_off; | ||
60 | t.oe_on = t.adv_on; | ||
61 | t.access = gpmc_t->access; | ||
62 | t.oe_off = gpmc_t->oe_off; | ||
63 | t.cs_rd_off = gpmc_t->cs_rd_off; | ||
64 | t.rd_cycle = gpmc_t->rd_cycle; | ||
65 | |||
66 | /* Write */ | ||
67 | t.adv_wr_off = gpmc_t->adv_wr_off; | ||
68 | t.we_on = t.oe_on; | ||
69 | if (cpu_is_omap34xx()) { | ||
70 | t.wr_data_mux_bus = gpmc_t->wr_data_mux_bus; | ||
71 | t.wr_access = gpmc_t->wr_access; | ||
72 | } | ||
73 | t.we_off = gpmc_t->we_off; | ||
74 | t.cs_wr_off = gpmc_t->cs_wr_off; | ||
75 | t.wr_cycle = gpmc_t->wr_cycle; | ||
76 | |||
77 | err = gpmc_cs_set_timings(gpmc_nand_data->cs, &t); | ||
78 | if (err) | ||
79 | return err; | ||
80 | |||
81 | return 0; | ||
82 | } | ||
83 | |||
84 | static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt) | 46 | static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt) |
85 | { | 47 | { |
86 | /* support only OMAP3 class */ | 48 | /* support only OMAP3 class */ |
@@ -131,7 +93,7 @@ int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, | |||
131 | gpmc_get_client_irq(GPMC_IRQ_COUNT_EVENT); | 93 | gpmc_get_client_irq(GPMC_IRQ_COUNT_EVENT); |
132 | 94 | ||
133 | if (gpmc_t) { | 95 | if (gpmc_t) { |
134 | err = omap2_nand_gpmc_retime(gpmc_nand_data, gpmc_t); | 96 | err = gpmc_cs_set_timings(gpmc_nand_data->cs, gpmc_t); |
135 | if (err < 0) { | 97 | if (err < 0) { |
136 | dev_err(dev, "Unable to set gpmc timings: %d\n", err); | 98 | dev_err(dev, "Unable to set gpmc timings: %d\n", err); |
137 | return err; | 99 | return err; |
@@ -140,8 +102,6 @@ int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, | |||
140 | if (gpmc_nand_data->of_node) { | 102 | if (gpmc_nand_data->of_node) { |
141 | gpmc_read_settings_dt(gpmc_nand_data->of_node, &s); | 103 | gpmc_read_settings_dt(gpmc_nand_data->of_node, &s); |
142 | } else { | 104 | } else { |
143 | s.device_nand = true; | ||
144 | |||
145 | /* Enable RD PIN Monitoring Reg */ | 105 | /* Enable RD PIN Monitoring Reg */ |
146 | if (gpmc_nand_data->dev_ready) { | 106 | if (gpmc_nand_data->dev_ready) { |
147 | s.wait_on_read = true; | 107 | s.wait_on_read = true; |
@@ -149,6 +109,8 @@ int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, | |||
149 | } | 109 | } |
150 | } | 110 | } |
151 | 111 | ||
112 | s.device_nand = true; | ||
113 | |||
152 | if (gpmc_nand_data->devsize == NAND_BUSWIDTH_16) | 114 | if (gpmc_nand_data->devsize == NAND_BUSWIDTH_16) |
153 | s.device_width = GPMC_DEVWIDTH_16BIT; | 115 | s.device_width = GPMC_DEVWIDTH_16BIT; |
154 | else | 116 | else |
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 6c4da1254f53..bac18b3ebbfb 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/of_mtd.h> | 30 | #include <linux/of_mtd.h> |
31 | #include <linux/of_device.h> | 31 | #include <linux/of_device.h> |
32 | #include <linux/mtd/nand.h> | 32 | #include <linux/mtd/nand.h> |
33 | #include <linux/pm_runtime.h> | ||
33 | 34 | ||
34 | #include <linux/platform_data/mtd-nand-omap2.h> | 35 | #include <linux/platform_data/mtd-nand-omap2.h> |
35 | 36 | ||
@@ -155,6 +156,7 @@ static struct resource gpmc_cs_mem[GPMC_CS_NUM]; | |||
155 | static DEFINE_SPINLOCK(gpmc_mem_lock); | 156 | static DEFINE_SPINLOCK(gpmc_mem_lock); |
156 | /* Define chip-selects as reserved by default until probe completes */ | 157 | /* Define chip-selects as reserved by default until probe completes */ |
157 | static unsigned int gpmc_cs_map = ((1 << GPMC_CS_NUM) - 1); | 158 | static unsigned int gpmc_cs_map = ((1 << GPMC_CS_NUM) - 1); |
159 | static unsigned int gpmc_cs_num = GPMC_CS_NUM; | ||
158 | static unsigned int gpmc_nr_waitpins; | 160 | static unsigned int gpmc_nr_waitpins; |
159 | static struct device *gpmc_dev; | 161 | static struct device *gpmc_dev; |
160 | static int gpmc_irq; | 162 | static int gpmc_irq; |
@@ -521,8 +523,10 @@ static int gpmc_cs_remap(int cs, u32 base) | |||
521 | int ret; | 523 | int ret; |
522 | u32 old_base, size; | 524 | u32 old_base, size; |
523 | 525 | ||
524 | if (cs > GPMC_CS_NUM) | 526 | if (cs > gpmc_cs_num) { |
527 | pr_err("%s: requested chip-select is disabled\n", __func__); | ||
525 | return -ENODEV; | 528 | return -ENODEV; |
529 | } | ||
526 | gpmc_cs_get_memconf(cs, &old_base, &size); | 530 | gpmc_cs_get_memconf(cs, &old_base, &size); |
527 | if (base == old_base) | 531 | if (base == old_base) |
528 | return 0; | 532 | return 0; |
@@ -545,9 +549,10 @@ int gpmc_cs_request(int cs, unsigned long size, unsigned long *base) | |||
545 | struct resource *res = &gpmc_cs_mem[cs]; | 549 | struct resource *res = &gpmc_cs_mem[cs]; |
546 | int r = -1; | 550 | int r = -1; |
547 | 551 | ||
548 | if (cs > GPMC_CS_NUM) | 552 | if (cs > gpmc_cs_num) { |
553 | pr_err("%s: requested chip-select is disabled\n", __func__); | ||
549 | return -ENODEV; | 554 | return -ENODEV; |
550 | 555 | } | |
551 | size = gpmc_mem_align(size); | 556 | size = gpmc_mem_align(size); |
552 | if (size > (1 << GPMC_SECTION_SHIFT)) | 557 | if (size > (1 << GPMC_SECTION_SHIFT)) |
553 | return -ENOMEM; | 558 | return -ENOMEM; |
@@ -582,7 +587,7 @@ EXPORT_SYMBOL(gpmc_cs_request); | |||
582 | void gpmc_cs_free(int cs) | 587 | void gpmc_cs_free(int cs) |
583 | { | 588 | { |
584 | spin_lock(&gpmc_mem_lock); | 589 | spin_lock(&gpmc_mem_lock); |
585 | if (cs >= GPMC_CS_NUM || cs < 0 || !gpmc_cs_reserved(cs)) { | 590 | if (cs >= gpmc_cs_num || cs < 0 || !gpmc_cs_reserved(cs)) { |
586 | printk(KERN_ERR "Trying to free non-reserved GPMC CS%d\n", cs); | 591 | printk(KERN_ERR "Trying to free non-reserved GPMC CS%d\n", cs); |
587 | BUG(); | 592 | BUG(); |
588 | spin_unlock(&gpmc_mem_lock); | 593 | spin_unlock(&gpmc_mem_lock); |
@@ -777,7 +782,7 @@ static void gpmc_mem_exit(void) | |||
777 | { | 782 | { |
778 | int cs; | 783 | int cs; |
779 | 784 | ||
780 | for (cs = 0; cs < GPMC_CS_NUM; cs++) { | 785 | for (cs = 0; cs < gpmc_cs_num; cs++) { |
781 | if (!gpmc_cs_mem_enabled(cs)) | 786 | if (!gpmc_cs_mem_enabled(cs)) |
782 | continue; | 787 | continue; |
783 | gpmc_cs_delete_mem(cs); | 788 | gpmc_cs_delete_mem(cs); |
@@ -798,7 +803,7 @@ static void gpmc_mem_init(void) | |||
798 | gpmc_mem_root.end = GPMC_MEM_END; | 803 | gpmc_mem_root.end = GPMC_MEM_END; |
799 | 804 | ||
800 | /* Reserve all regions that has been set up by bootloader */ | 805 | /* Reserve all regions that has been set up by bootloader */ |
801 | for (cs = 0; cs < GPMC_CS_NUM; cs++) { | 806 | for (cs = 0; cs < gpmc_cs_num; cs++) { |
802 | u32 base, size; | 807 | u32 base, size; |
803 | 808 | ||
804 | if (!gpmc_cs_mem_enabled(cs)) | 809 | if (!gpmc_cs_mem_enabled(cs)) |
@@ -1245,7 +1250,6 @@ void gpmc_read_settings_dt(struct device_node *np, struct gpmc_settings *p) | |||
1245 | 1250 | ||
1246 | p->sync_read = of_property_read_bool(np, "gpmc,sync-read"); | 1251 | p->sync_read = of_property_read_bool(np, "gpmc,sync-read"); |
1247 | p->sync_write = of_property_read_bool(np, "gpmc,sync-write"); | 1252 | p->sync_write = of_property_read_bool(np, "gpmc,sync-write"); |
1248 | p->device_nand = of_property_read_bool(np, "gpmc,device-nand"); | ||
1249 | of_property_read_u32(np, "gpmc,device-width", &p->device_width); | 1253 | of_property_read_u32(np, "gpmc,device-width", &p->device_width); |
1250 | of_property_read_u32(np, "gpmc,mux-add-data", &p->mux_add_data); | 1254 | of_property_read_u32(np, "gpmc,mux-add-data", &p->mux_add_data); |
1251 | 1255 | ||
@@ -1345,6 +1349,13 @@ static const char * const nand_ecc_opts[] = { | |||
1345 | [OMAP_ECC_BCH8_CODE_HW] = "bch8", | 1349 | [OMAP_ECC_BCH8_CODE_HW] = "bch8", |
1346 | }; | 1350 | }; |
1347 | 1351 | ||
1352 | static const char * const nand_xfer_types[] = { | ||
1353 | [NAND_OMAP_PREFETCH_POLLED] = "prefetch-polled", | ||
1354 | [NAND_OMAP_POLLED] = "polled", | ||
1355 | [NAND_OMAP_PREFETCH_DMA] = "prefetch-dma", | ||
1356 | [NAND_OMAP_PREFETCH_IRQ] = "prefetch-irq", | ||
1357 | }; | ||
1358 | |||
1348 | static int gpmc_probe_nand_child(struct platform_device *pdev, | 1359 | static int gpmc_probe_nand_child(struct platform_device *pdev, |
1349 | struct device_node *child) | 1360 | struct device_node *child) |
1350 | { | 1361 | { |
@@ -1374,6 +1385,13 @@ static int gpmc_probe_nand_child(struct platform_device *pdev, | |||
1374 | break; | 1385 | break; |
1375 | } | 1386 | } |
1376 | 1387 | ||
1388 | if (!of_property_read_string(child, "ti,nand-xfer-type", &s)) | ||
1389 | for (val = 0; val < ARRAY_SIZE(nand_xfer_types); val++) | ||
1390 | if (!strcasecmp(s, nand_xfer_types[val])) { | ||
1391 | gpmc_nand_data->xfer_type = val; | ||
1392 | break; | ||
1393 | } | ||
1394 | |||
1377 | val = of_get_nand_bus_width(child); | 1395 | val = of_get_nand_bus_width(child); |
1378 | if (val == 16) | 1396 | if (val == 16) |
1379 | gpmc_nand_data->devsize = NAND_BUSWIDTH_16; | 1397 | gpmc_nand_data->devsize = NAND_BUSWIDTH_16; |
@@ -1513,6 +1531,20 @@ static int gpmc_probe_dt(struct platform_device *pdev) | |||
1513 | if (!of_id) | 1531 | if (!of_id) |
1514 | return 0; | 1532 | return 0; |
1515 | 1533 | ||
1534 | ret = of_property_read_u32(pdev->dev.of_node, "gpmc,num-cs", | ||
1535 | &gpmc_cs_num); | ||
1536 | if (ret < 0) { | ||
1537 | pr_err("%s: number of chip-selects not defined\n", __func__); | ||
1538 | return ret; | ||
1539 | } else if (gpmc_cs_num < 1) { | ||
1540 | pr_err("%s: all chip-selects are disabled\n", __func__); | ||
1541 | return -EINVAL; | ||
1542 | } else if (gpmc_cs_num > GPMC_CS_NUM) { | ||
1543 | pr_err("%s: number of supported chip-selects cannot be > %d\n", | ||
1544 | __func__, GPMC_CS_NUM); | ||
1545 | return -EINVAL; | ||
1546 | } | ||
1547 | |||
1516 | ret = of_property_read_u32(pdev->dev.of_node, "gpmc,num-waitpins", | 1548 | ret = of_property_read_u32(pdev->dev.of_node, "gpmc,num-waitpins", |
1517 | &gpmc_nr_waitpins); | 1549 | &gpmc_nr_waitpins); |
1518 | if (ret < 0) { | 1550 | if (ret < 0) { |
@@ -1577,7 +1609,8 @@ static int gpmc_probe(struct platform_device *pdev) | |||
1577 | return PTR_ERR(gpmc_l3_clk); | 1609 | return PTR_ERR(gpmc_l3_clk); |
1578 | } | 1610 | } |
1579 | 1611 | ||
1580 | clk_prepare_enable(gpmc_l3_clk); | 1612 | pm_runtime_enable(&pdev->dev); |
1613 | pm_runtime_get_sync(&pdev->dev); | ||
1581 | 1614 | ||
1582 | gpmc_dev = &pdev->dev; | 1615 | gpmc_dev = &pdev->dev; |
1583 | 1616 | ||
@@ -1610,12 +1643,14 @@ static int gpmc_probe(struct platform_device *pdev) | |||
1610 | /* Now the GPMC is initialised, unreserve the chip-selects */ | 1643 | /* Now the GPMC is initialised, unreserve the chip-selects */ |
1611 | gpmc_cs_map = 0; | 1644 | gpmc_cs_map = 0; |
1612 | 1645 | ||
1613 | if (!pdev->dev.of_node) | 1646 | if (!pdev->dev.of_node) { |
1647 | gpmc_cs_num = GPMC_CS_NUM; | ||
1614 | gpmc_nr_waitpins = GPMC_NR_WAITPINS; | 1648 | gpmc_nr_waitpins = GPMC_NR_WAITPINS; |
1649 | } | ||
1615 | 1650 | ||
1616 | rc = gpmc_probe_dt(pdev); | 1651 | rc = gpmc_probe_dt(pdev); |
1617 | if (rc < 0) { | 1652 | if (rc < 0) { |
1618 | clk_disable_unprepare(gpmc_l3_clk); | 1653 | pm_runtime_put_sync(&pdev->dev); |
1619 | clk_put(gpmc_l3_clk); | 1654 | clk_put(gpmc_l3_clk); |
1620 | dev_err(gpmc_dev, "failed to probe DT parameters\n"); | 1655 | dev_err(gpmc_dev, "failed to probe DT parameters\n"); |
1621 | return rc; | 1656 | return rc; |
@@ -1628,6 +1663,8 @@ static int gpmc_remove(struct platform_device *pdev) | |||
1628 | { | 1663 | { |
1629 | gpmc_free_irq(); | 1664 | gpmc_free_irq(); |
1630 | gpmc_mem_exit(); | 1665 | gpmc_mem_exit(); |
1666 | pm_runtime_put_sync(&pdev->dev); | ||
1667 | pm_runtime_disable(&pdev->dev); | ||
1631 | gpmc_dev = NULL; | 1668 | gpmc_dev = NULL; |
1632 | return 0; | 1669 | return 0; |
1633 | } | 1670 | } |
@@ -1715,7 +1752,7 @@ void omap3_gpmc_save_context(void) | |||
1715 | gpmc_context.prefetch_config1 = gpmc_read_reg(GPMC_PREFETCH_CONFIG1); | 1752 | gpmc_context.prefetch_config1 = gpmc_read_reg(GPMC_PREFETCH_CONFIG1); |
1716 | gpmc_context.prefetch_config2 = gpmc_read_reg(GPMC_PREFETCH_CONFIG2); | 1753 | gpmc_context.prefetch_config2 = gpmc_read_reg(GPMC_PREFETCH_CONFIG2); |
1717 | gpmc_context.prefetch_control = gpmc_read_reg(GPMC_PREFETCH_CONTROL); | 1754 | gpmc_context.prefetch_control = gpmc_read_reg(GPMC_PREFETCH_CONTROL); |
1718 | for (i = 0; i < GPMC_CS_NUM; i++) { | 1755 | for (i = 0; i < gpmc_cs_num; i++) { |
1719 | gpmc_context.cs_context[i].is_valid = gpmc_cs_mem_enabled(i); | 1756 | gpmc_context.cs_context[i].is_valid = gpmc_cs_mem_enabled(i); |
1720 | if (gpmc_context.cs_context[i].is_valid) { | 1757 | if (gpmc_context.cs_context[i].is_valid) { |
1721 | gpmc_context.cs_context[i].config1 = | 1758 | gpmc_context.cs_context[i].config1 = |
@@ -1747,7 +1784,7 @@ void omap3_gpmc_restore_context(void) | |||
1747 | gpmc_write_reg(GPMC_PREFETCH_CONFIG1, gpmc_context.prefetch_config1); | 1784 | gpmc_write_reg(GPMC_PREFETCH_CONFIG1, gpmc_context.prefetch_config1); |
1748 | gpmc_write_reg(GPMC_PREFETCH_CONFIG2, gpmc_context.prefetch_config2); | 1785 | gpmc_write_reg(GPMC_PREFETCH_CONFIG2, gpmc_context.prefetch_config2); |
1749 | gpmc_write_reg(GPMC_PREFETCH_CONTROL, gpmc_context.prefetch_control); | 1786 | gpmc_write_reg(GPMC_PREFETCH_CONTROL, gpmc_context.prefetch_control); |
1750 | for (i = 0; i < GPMC_CS_NUM; i++) { | 1787 | for (i = 0; i < gpmc_cs_num; i++) { |
1751 | if (gpmc_context.cs_context[i].is_valid) { | 1788 | if (gpmc_context.cs_context[i].is_valid) { |
1752 | gpmc_cs_write_reg(i, GPMC_CS_CONFIG1, | 1789 | gpmc_cs_write_reg(i, GPMC_CS_CONFIG1, |
1753 | gpmc_context.cs_context[i].config1); | 1790 | gpmc_context.cs_context[i].config1); |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index d25a95fe9921..7341eff63f56 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -1356,13 +1356,27 @@ static void _enable_sysc(struct omap_hwmod *oh) | |||
1356 | 1356 | ||
1357 | clkdm = _get_clkdm(oh); | 1357 | clkdm = _get_clkdm(oh); |
1358 | if (sf & SYSC_HAS_SIDLEMODE) { | 1358 | if (sf & SYSC_HAS_SIDLEMODE) { |
1359 | if (oh->flags & HWMOD_SWSUP_SIDLE || | ||
1360 | oh->flags & HWMOD_SWSUP_SIDLE_ACT) { | ||
1361 | idlemode = HWMOD_IDLEMODE_NO; | ||
1362 | } else { | ||
1363 | if (sf & SYSC_HAS_ENAWAKEUP) | ||
1364 | _enable_wakeup(oh, &v); | ||
1365 | if (oh->class->sysc->idlemodes & SIDLE_SMART_WKUP) | ||
1366 | idlemode = HWMOD_IDLEMODE_SMART_WKUP; | ||
1367 | else | ||
1368 | idlemode = HWMOD_IDLEMODE_SMART; | ||
1369 | } | ||
1370 | |||
1371 | /* | ||
1372 | * This is special handling for some IPs like | ||
1373 | * 32k sync timer. Force them to idle! | ||
1374 | */ | ||
1359 | clkdm_act = (clkdm && clkdm->flags & CLKDM_ACTIVE_WITH_MPU); | 1375 | clkdm_act = (clkdm && clkdm->flags & CLKDM_ACTIVE_WITH_MPU); |
1360 | if (clkdm_act && !(oh->class->sysc->idlemodes & | 1376 | if (clkdm_act && !(oh->class->sysc->idlemodes & |
1361 | (SIDLE_SMART | SIDLE_SMART_WKUP))) | 1377 | (SIDLE_SMART | SIDLE_SMART_WKUP))) |
1362 | idlemode = HWMOD_IDLEMODE_FORCE; | 1378 | idlemode = HWMOD_IDLEMODE_FORCE; |
1363 | else | 1379 | |
1364 | idlemode = (oh->flags & HWMOD_SWSUP_SIDLE) ? | ||
1365 | HWMOD_IDLEMODE_NO : HWMOD_IDLEMODE_SMART; | ||
1366 | _set_slave_idlemode(oh, idlemode, &v); | 1380 | _set_slave_idlemode(oh, idlemode, &v); |
1367 | } | 1381 | } |
1368 | 1382 | ||
@@ -1391,10 +1405,6 @@ static void _enable_sysc(struct omap_hwmod *oh) | |||
1391 | (sf & SYSC_HAS_CLOCKACTIVITY)) | 1405 | (sf & SYSC_HAS_CLOCKACTIVITY)) |
1392 | _set_clockactivity(oh, oh->class->sysc->clockact, &v); | 1406 | _set_clockactivity(oh, oh->class->sysc->clockact, &v); |
1393 | 1407 | ||
1394 | /* If slave is in SMARTIDLE, also enable wakeup */ | ||
1395 | if ((sf & SYSC_HAS_SIDLEMODE) && !(oh->flags & HWMOD_SWSUP_SIDLE)) | ||
1396 | _enable_wakeup(oh, &v); | ||
1397 | |||
1398 | _write_sysconfig(v, oh); | 1408 | _write_sysconfig(v, oh); |
1399 | 1409 | ||
1400 | /* | 1410 | /* |
@@ -1430,13 +1440,16 @@ static void _idle_sysc(struct omap_hwmod *oh) | |||
1430 | sf = oh->class->sysc->sysc_flags; | 1440 | sf = oh->class->sysc->sysc_flags; |
1431 | 1441 | ||
1432 | if (sf & SYSC_HAS_SIDLEMODE) { | 1442 | if (sf & SYSC_HAS_SIDLEMODE) { |
1433 | /* XXX What about HWMOD_IDLEMODE_SMART_WKUP? */ | 1443 | if (oh->flags & HWMOD_SWSUP_SIDLE) { |
1434 | if (oh->flags & HWMOD_SWSUP_SIDLE || | ||
1435 | !(oh->class->sysc->idlemodes & | ||
1436 | (SIDLE_SMART | SIDLE_SMART_WKUP))) | ||
1437 | idlemode = HWMOD_IDLEMODE_FORCE; | 1444 | idlemode = HWMOD_IDLEMODE_FORCE; |
1438 | else | 1445 | } else { |
1439 | idlemode = HWMOD_IDLEMODE_SMART; | 1446 | if (sf & SYSC_HAS_ENAWAKEUP) |
1447 | _enable_wakeup(oh, &v); | ||
1448 | if (oh->class->sysc->idlemodes & SIDLE_SMART_WKUP) | ||
1449 | idlemode = HWMOD_IDLEMODE_SMART_WKUP; | ||
1450 | else | ||
1451 | idlemode = HWMOD_IDLEMODE_SMART; | ||
1452 | } | ||
1440 | _set_slave_idlemode(oh, idlemode, &v); | 1453 | _set_slave_idlemode(oh, idlemode, &v); |
1441 | } | 1454 | } |
1442 | 1455 | ||
@@ -1455,10 +1468,6 @@ static void _idle_sysc(struct omap_hwmod *oh) | |||
1455 | _set_master_standbymode(oh, idlemode, &v); | 1468 | _set_master_standbymode(oh, idlemode, &v); |
1456 | } | 1469 | } |
1457 | 1470 | ||
1458 | /* If slave is in SMARTIDLE, also enable wakeup */ | ||
1459 | if ((sf & SYSC_HAS_SIDLEMODE) && !(oh->flags & HWMOD_SWSUP_SIDLE)) | ||
1460 | _enable_wakeup(oh, &v); | ||
1461 | |||
1462 | _write_sysconfig(v, oh); | 1471 | _write_sysconfig(v, oh); |
1463 | } | 1472 | } |
1464 | 1473 | ||
@@ -2065,7 +2074,7 @@ static int _omap4_get_context_lost(struct omap_hwmod *oh) | |||
2065 | * do so is present in the hwmod data, then call it and pass along the | 2074 | * do so is present in the hwmod data, then call it and pass along the |
2066 | * return value; otherwise, return 0. | 2075 | * return value; otherwise, return 0. |
2067 | */ | 2076 | */ |
2068 | static int __init _enable_preprogram(struct omap_hwmod *oh) | 2077 | static int _enable_preprogram(struct omap_hwmod *oh) |
2069 | { | 2078 | { |
2070 | if (!oh->class->enable_preprogram) | 2079 | if (!oh->class->enable_preprogram) |
2071 | return 0; | 2080 | return 0; |
@@ -2246,42 +2255,6 @@ static int _idle(struct omap_hwmod *oh) | |||
2246 | } | 2255 | } |
2247 | 2256 | ||
2248 | /** | 2257 | /** |
2249 | * omap_hwmod_set_ocp_autoidle - set the hwmod's OCP autoidle bit | ||
2250 | * @oh: struct omap_hwmod * | ||
2251 | * @autoidle: desired AUTOIDLE bitfield value (0 or 1) | ||
2252 | * | ||
2253 | * Sets the IP block's OCP autoidle bit in hardware, and updates our | ||
2254 | * local copy. Intended to be used by drivers that require | ||
2255 | * direct manipulation of the AUTOIDLE bits. | ||
2256 | * Returns -EINVAL if @oh is null or is not in the ENABLED state, or passes | ||
2257 | * along the return value from _set_module_autoidle(). | ||
2258 | * | ||
2259 | * Any users of this function should be scrutinized carefully. | ||
2260 | */ | ||
2261 | int omap_hwmod_set_ocp_autoidle(struct omap_hwmod *oh, u8 autoidle) | ||
2262 | { | ||
2263 | u32 v; | ||
2264 | int retval = 0; | ||
2265 | unsigned long flags; | ||
2266 | |||
2267 | if (!oh || oh->_state != _HWMOD_STATE_ENABLED) | ||
2268 | return -EINVAL; | ||
2269 | |||
2270 | spin_lock_irqsave(&oh->_lock, flags); | ||
2271 | |||
2272 | v = oh->_sysc_cache; | ||
2273 | |||
2274 | retval = _set_module_autoidle(oh, autoidle, &v); | ||
2275 | |||
2276 | if (!retval) | ||
2277 | _write_sysconfig(v, oh); | ||
2278 | |||
2279 | spin_unlock_irqrestore(&oh->_lock, flags); | ||
2280 | |||
2281 | return retval; | ||
2282 | } | ||
2283 | |||
2284 | /** | ||
2285 | * _shutdown - shutdown an omap_hwmod | 2258 | * _shutdown - shutdown an omap_hwmod |
2286 | * @oh: struct omap_hwmod * | 2259 | * @oh: struct omap_hwmod * |
2287 | * | 2260 | * |
@@ -3180,38 +3153,6 @@ error: | |||
3180 | } | 3153 | } |
3181 | 3154 | ||
3182 | /** | 3155 | /** |
3183 | * omap_hwmod_set_slave_idlemode - set the hwmod's OCP slave idlemode | ||
3184 | * @oh: struct omap_hwmod * | ||
3185 | * @idlemode: SIDLEMODE field bits (shifted to bit 0) | ||
3186 | * | ||
3187 | * Sets the IP block's OCP slave idlemode in hardware, and updates our | ||
3188 | * local copy. Intended to be used by drivers that have some erratum | ||
3189 | * that requires direct manipulation of the SIDLEMODE bits. Returns | ||
3190 | * -EINVAL if @oh is null, or passes along the return value from | ||
3191 | * _set_slave_idlemode(). | ||
3192 | * | ||
3193 | * XXX Does this function have any current users? If not, we should | ||
3194 | * remove it; it is better to let the rest of the hwmod code handle this. | ||
3195 | * Any users of this function should be scrutinized carefully. | ||
3196 | */ | ||
3197 | int omap_hwmod_set_slave_idlemode(struct omap_hwmod *oh, u8 idlemode) | ||
3198 | { | ||
3199 | u32 v; | ||
3200 | int retval = 0; | ||
3201 | |||
3202 | if (!oh) | ||
3203 | return -EINVAL; | ||
3204 | |||
3205 | v = oh->_sysc_cache; | ||
3206 | |||
3207 | retval = _set_slave_idlemode(oh, idlemode, &v); | ||
3208 | if (!retval) | ||
3209 | _write_sysconfig(v, oh); | ||
3210 | |||
3211 | return retval; | ||
3212 | } | ||
3213 | |||
3214 | /** | ||
3215 | * omap_hwmod_lookup - look up a registered omap_hwmod by name | 3156 | * omap_hwmod_lookup - look up a registered omap_hwmod by name |
3216 | * @name: name of the omap_hwmod to look up | 3157 | * @name: name of the omap_hwmod to look up |
3217 | * | 3158 | * |
diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h index fe5962921f07..0c898f58ac9b 100644 --- a/arch/arm/mach-omap2/omap_hwmod.h +++ b/arch/arm/mach-omap2/omap_hwmod.h | |||
@@ -463,6 +463,9 @@ struct omap_hwmod_omap4_prcm { | |||
463 | * is kept in force-standby mode. Failing to do so causes PM problems | 463 | * is kept in force-standby mode. Failing to do so causes PM problems |
464 | * with musb on OMAP3630 at least. Note that musb has a dedicated register | 464 | * with musb on OMAP3630 at least. Note that musb has a dedicated register |
465 | * to control MSTANDBY signal when MIDLEMODE is set to force-standby. | 465 | * to control MSTANDBY signal when MIDLEMODE is set to force-standby. |
466 | * HWMOD_SWSUP_SIDLE_ACT: omap_hwmod code should manually bring the module | ||
467 | * out of idle, but rely on smart-idle to the put it back in idle, | ||
468 | * so the wakeups are still functional (Only known case for now is UART) | ||
466 | */ | 469 | */ |
467 | #define HWMOD_SWSUP_SIDLE (1 << 0) | 470 | #define HWMOD_SWSUP_SIDLE (1 << 0) |
468 | #define HWMOD_SWSUP_MSTANDBY (1 << 1) | 471 | #define HWMOD_SWSUP_MSTANDBY (1 << 1) |
@@ -476,6 +479,7 @@ struct omap_hwmod_omap4_prcm { | |||
476 | #define HWMOD_EXT_OPT_MAIN_CLK (1 << 9) | 479 | #define HWMOD_EXT_OPT_MAIN_CLK (1 << 9) |
477 | #define HWMOD_BLOCK_WFI (1 << 10) | 480 | #define HWMOD_BLOCK_WFI (1 << 10) |
478 | #define HWMOD_FORCE_MSTANDBY (1 << 11) | 481 | #define HWMOD_FORCE_MSTANDBY (1 << 11) |
482 | #define HWMOD_SWSUP_SIDLE_ACT (1 << 12) | ||
479 | 483 | ||
480 | /* | 484 | /* |
481 | * omap_hwmod._int_flags definitions | 485 | * omap_hwmod._int_flags definitions |
@@ -641,9 +645,6 @@ int omap_hwmod_read_hardreset(struct omap_hwmod *oh, const char *name); | |||
641 | int omap_hwmod_enable_clocks(struct omap_hwmod *oh); | 645 | int omap_hwmod_enable_clocks(struct omap_hwmod *oh); |
642 | int omap_hwmod_disable_clocks(struct omap_hwmod *oh); | 646 | int omap_hwmod_disable_clocks(struct omap_hwmod *oh); |
643 | 647 | ||
644 | int omap_hwmod_set_slave_idlemode(struct omap_hwmod *oh, u8 idlemode); | ||
645 | int omap_hwmod_set_ocp_autoidle(struct omap_hwmod *oh, u8 autoidle); | ||
646 | |||
647 | int omap_hwmod_reset(struct omap_hwmod *oh); | 648 | int omap_hwmod_reset(struct omap_hwmod *oh); |
648 | void omap_hwmod_ocp_barrier(struct omap_hwmod *oh); | 649 | void omap_hwmod_ocp_barrier(struct omap_hwmod *oh); |
649 | 650 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c index c8c64b3e1acc..d05fc7b54567 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | |||
@@ -512,6 +512,7 @@ struct omap_hwmod omap2xxx_uart1_hwmod = { | |||
512 | .mpu_irqs = omap2_uart1_mpu_irqs, | 512 | .mpu_irqs = omap2_uart1_mpu_irqs, |
513 | .sdma_reqs = omap2_uart1_sdma_reqs, | 513 | .sdma_reqs = omap2_uart1_sdma_reqs, |
514 | .main_clk = "uart1_fck", | 514 | .main_clk = "uart1_fck", |
515 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
515 | .prcm = { | 516 | .prcm = { |
516 | .omap2 = { | 517 | .omap2 = { |
517 | .module_offs = CORE_MOD, | 518 | .module_offs = CORE_MOD, |
@@ -531,6 +532,7 @@ struct omap_hwmod omap2xxx_uart2_hwmod = { | |||
531 | .mpu_irqs = omap2_uart2_mpu_irqs, | 532 | .mpu_irqs = omap2_uart2_mpu_irqs, |
532 | .sdma_reqs = omap2_uart2_sdma_reqs, | 533 | .sdma_reqs = omap2_uart2_sdma_reqs, |
533 | .main_clk = "uart2_fck", | 534 | .main_clk = "uart2_fck", |
535 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
534 | .prcm = { | 536 | .prcm = { |
535 | .omap2 = { | 537 | .omap2 = { |
536 | .module_offs = CORE_MOD, | 538 | .module_offs = CORE_MOD, |
@@ -550,6 +552,7 @@ struct omap_hwmod omap2xxx_uart3_hwmod = { | |||
550 | .mpu_irqs = omap2_uart3_mpu_irqs, | 552 | .mpu_irqs = omap2_uart3_mpu_irqs, |
551 | .sdma_reqs = omap2_uart3_sdma_reqs, | 553 | .sdma_reqs = omap2_uart3_sdma_reqs, |
552 | .main_clk = "uart3_fck", | 554 | .main_clk = "uart3_fck", |
555 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
553 | .prcm = { | 556 | .prcm = { |
554 | .omap2 = { | 557 | .omap2 = { |
555 | .module_offs = CORE_MOD, | 558 | .module_offs = CORE_MOD, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c index 01d8f324450a..075f7cc51026 100644 --- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c | |||
@@ -1995,6 +1995,7 @@ static struct omap_hwmod am33xx_uart1_hwmod = { | |||
1995 | .name = "uart1", | 1995 | .name = "uart1", |
1996 | .class = &uart_class, | 1996 | .class = &uart_class, |
1997 | .clkdm_name = "l4_wkup_clkdm", | 1997 | .clkdm_name = "l4_wkup_clkdm", |
1998 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
1998 | .mpu_irqs = am33xx_uart1_irqs, | 1999 | .mpu_irqs = am33xx_uart1_irqs, |
1999 | .sdma_reqs = uart1_edma_reqs, | 2000 | .sdma_reqs = uart1_edma_reqs, |
2000 | .main_clk = "dpll_per_m2_div4_wkupdm_ck", | 2001 | .main_clk = "dpll_per_m2_div4_wkupdm_ck", |
@@ -2015,6 +2016,7 @@ static struct omap_hwmod am33xx_uart2_hwmod = { | |||
2015 | .name = "uart2", | 2016 | .name = "uart2", |
2016 | .class = &uart_class, | 2017 | .class = &uart_class, |
2017 | .clkdm_name = "l4ls_clkdm", | 2018 | .clkdm_name = "l4ls_clkdm", |
2019 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
2018 | .mpu_irqs = am33xx_uart2_irqs, | 2020 | .mpu_irqs = am33xx_uart2_irqs, |
2019 | .sdma_reqs = uart1_edma_reqs, | 2021 | .sdma_reqs = uart1_edma_reqs, |
2020 | .main_clk = "dpll_per_m2_div4_ck", | 2022 | .main_clk = "dpll_per_m2_div4_ck", |
@@ -2042,6 +2044,7 @@ static struct omap_hwmod am33xx_uart3_hwmod = { | |||
2042 | .name = "uart3", | 2044 | .name = "uart3", |
2043 | .class = &uart_class, | 2045 | .class = &uart_class, |
2044 | .clkdm_name = "l4ls_clkdm", | 2046 | .clkdm_name = "l4ls_clkdm", |
2047 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
2045 | .mpu_irqs = am33xx_uart3_irqs, | 2048 | .mpu_irqs = am33xx_uart3_irqs, |
2046 | .sdma_reqs = uart3_edma_reqs, | 2049 | .sdma_reqs = uart3_edma_reqs, |
2047 | .main_clk = "dpll_per_m2_div4_ck", | 2050 | .main_clk = "dpll_per_m2_div4_ck", |
@@ -2062,6 +2065,7 @@ static struct omap_hwmod am33xx_uart4_hwmod = { | |||
2062 | .name = "uart4", | 2065 | .name = "uart4", |
2063 | .class = &uart_class, | 2066 | .class = &uart_class, |
2064 | .clkdm_name = "l4ls_clkdm", | 2067 | .clkdm_name = "l4ls_clkdm", |
2068 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
2065 | .mpu_irqs = am33xx_uart4_irqs, | 2069 | .mpu_irqs = am33xx_uart4_irqs, |
2066 | .sdma_reqs = uart1_edma_reqs, | 2070 | .sdma_reqs = uart1_edma_reqs, |
2067 | .main_clk = "dpll_per_m2_div4_ck", | 2071 | .main_clk = "dpll_per_m2_div4_ck", |
@@ -2082,6 +2086,7 @@ static struct omap_hwmod am33xx_uart5_hwmod = { | |||
2082 | .name = "uart5", | 2086 | .name = "uart5", |
2083 | .class = &uart_class, | 2087 | .class = &uart_class, |
2084 | .clkdm_name = "l4ls_clkdm", | 2088 | .clkdm_name = "l4ls_clkdm", |
2089 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
2085 | .mpu_irqs = am33xx_uart5_irqs, | 2090 | .mpu_irqs = am33xx_uart5_irqs, |
2086 | .sdma_reqs = uart1_edma_reqs, | 2091 | .sdma_reqs = uart1_edma_reqs, |
2087 | .main_clk = "dpll_per_m2_div4_ck", | 2092 | .main_clk = "dpll_per_m2_div4_ck", |
@@ -2102,6 +2107,7 @@ static struct omap_hwmod am33xx_uart6_hwmod = { | |||
2102 | .name = "uart6", | 2107 | .name = "uart6", |
2103 | .class = &uart_class, | 2108 | .class = &uart_class, |
2104 | .clkdm_name = "l4ls_clkdm", | 2109 | .clkdm_name = "l4ls_clkdm", |
2110 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
2105 | .mpu_irqs = am33xx_uart6_irqs, | 2111 | .mpu_irqs = am33xx_uart6_irqs, |
2106 | .sdma_reqs = uart1_edma_reqs, | 2112 | .sdma_reqs = uart1_edma_reqs, |
2107 | .main_clk = "dpll_per_m2_div4_ck", | 2113 | .main_clk = "dpll_per_m2_div4_ck", |
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 4083606ea1da..31c7126eb3bb 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | |||
@@ -490,6 +490,7 @@ static struct omap_hwmod omap3xxx_uart1_hwmod = { | |||
490 | .mpu_irqs = omap2_uart1_mpu_irqs, | 490 | .mpu_irqs = omap2_uart1_mpu_irqs, |
491 | .sdma_reqs = omap2_uart1_sdma_reqs, | 491 | .sdma_reqs = omap2_uart1_sdma_reqs, |
492 | .main_clk = "uart1_fck", | 492 | .main_clk = "uart1_fck", |
493 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
493 | .prcm = { | 494 | .prcm = { |
494 | .omap2 = { | 495 | .omap2 = { |
495 | .module_offs = CORE_MOD, | 496 | .module_offs = CORE_MOD, |
@@ -508,6 +509,7 @@ static struct omap_hwmod omap3xxx_uart2_hwmod = { | |||
508 | .mpu_irqs = omap2_uart2_mpu_irqs, | 509 | .mpu_irqs = omap2_uart2_mpu_irqs, |
509 | .sdma_reqs = omap2_uart2_sdma_reqs, | 510 | .sdma_reqs = omap2_uart2_sdma_reqs, |
510 | .main_clk = "uart2_fck", | 511 | .main_clk = "uart2_fck", |
512 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
511 | .prcm = { | 513 | .prcm = { |
512 | .omap2 = { | 514 | .omap2 = { |
513 | .module_offs = CORE_MOD, | 515 | .module_offs = CORE_MOD, |
@@ -526,6 +528,7 @@ static struct omap_hwmod omap3xxx_uart3_hwmod = { | |||
526 | .mpu_irqs = omap2_uart3_mpu_irqs, | 528 | .mpu_irqs = omap2_uart3_mpu_irqs, |
527 | .sdma_reqs = omap2_uart3_sdma_reqs, | 529 | .sdma_reqs = omap2_uart3_sdma_reqs, |
528 | .main_clk = "uart3_fck", | 530 | .main_clk = "uart3_fck", |
531 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
529 | .prcm = { | 532 | .prcm = { |
530 | .omap2 = { | 533 | .omap2 = { |
531 | .module_offs = OMAP3430_PER_MOD, | 534 | .module_offs = OMAP3430_PER_MOD, |
@@ -555,6 +558,7 @@ static struct omap_hwmod omap36xx_uart4_hwmod = { | |||
555 | .mpu_irqs = uart4_mpu_irqs, | 558 | .mpu_irqs = uart4_mpu_irqs, |
556 | .sdma_reqs = uart4_sdma_reqs, | 559 | .sdma_reqs = uart4_sdma_reqs, |
557 | .main_clk = "uart4_fck", | 560 | .main_clk = "uart4_fck", |
561 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
558 | .prcm = { | 562 | .prcm = { |
559 | .omap2 = { | 563 | .omap2 = { |
560 | .module_offs = OMAP3430_PER_MOD, | 564 | .module_offs = OMAP3430_PER_MOD, |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index eaba9dc91a0d..848b6dc67590 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -3434,6 +3434,7 @@ static struct omap_hwmod omap44xx_uart1_hwmod = { | |||
3434 | .name = "uart1", | 3434 | .name = "uart1", |
3435 | .class = &omap44xx_uart_hwmod_class, | 3435 | .class = &omap44xx_uart_hwmod_class, |
3436 | .clkdm_name = "l4_per_clkdm", | 3436 | .clkdm_name = "l4_per_clkdm", |
3437 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
3437 | .mpu_irqs = omap44xx_uart1_irqs, | 3438 | .mpu_irqs = omap44xx_uart1_irqs, |
3438 | .sdma_reqs = omap44xx_uart1_sdma_reqs, | 3439 | .sdma_reqs = omap44xx_uart1_sdma_reqs, |
3439 | .main_clk = "func_48m_fclk", | 3440 | .main_clk = "func_48m_fclk", |
@@ -3462,6 +3463,7 @@ static struct omap_hwmod omap44xx_uart2_hwmod = { | |||
3462 | .name = "uart2", | 3463 | .name = "uart2", |
3463 | .class = &omap44xx_uart_hwmod_class, | 3464 | .class = &omap44xx_uart_hwmod_class, |
3464 | .clkdm_name = "l4_per_clkdm", | 3465 | .clkdm_name = "l4_per_clkdm", |
3466 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
3465 | .mpu_irqs = omap44xx_uart2_irqs, | 3467 | .mpu_irqs = omap44xx_uart2_irqs, |
3466 | .sdma_reqs = omap44xx_uart2_sdma_reqs, | 3468 | .sdma_reqs = omap44xx_uart2_sdma_reqs, |
3467 | .main_clk = "func_48m_fclk", | 3469 | .main_clk = "func_48m_fclk", |
@@ -3490,7 +3492,8 @@ static struct omap_hwmod omap44xx_uart3_hwmod = { | |||
3490 | .name = "uart3", | 3492 | .name = "uart3", |
3491 | .class = &omap44xx_uart_hwmod_class, | 3493 | .class = &omap44xx_uart_hwmod_class, |
3492 | .clkdm_name = "l4_per_clkdm", | 3494 | .clkdm_name = "l4_per_clkdm", |
3493 | .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, | 3495 | .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET | |
3496 | HWMOD_SWSUP_SIDLE_ACT, | ||
3494 | .mpu_irqs = omap44xx_uart3_irqs, | 3497 | .mpu_irqs = omap44xx_uart3_irqs, |
3495 | .sdma_reqs = omap44xx_uart3_sdma_reqs, | 3498 | .sdma_reqs = omap44xx_uart3_sdma_reqs, |
3496 | .main_clk = "func_48m_fclk", | 3499 | .main_clk = "func_48m_fclk", |
@@ -3519,6 +3522,7 @@ static struct omap_hwmod omap44xx_uart4_hwmod = { | |||
3519 | .name = "uart4", | 3522 | .name = "uart4", |
3520 | .class = &omap44xx_uart_hwmod_class, | 3523 | .class = &omap44xx_uart_hwmod_class, |
3521 | .clkdm_name = "l4_per_clkdm", | 3524 | .clkdm_name = "l4_per_clkdm", |
3525 | .flags = HWMOD_SWSUP_SIDLE_ACT, | ||
3522 | .mpu_irqs = omap44xx_uart4_irqs, | 3526 | .mpu_irqs = omap44xx_uart4_irqs, |
3523 | .sdma_reqs = omap44xx_uart4_sdma_reqs, | 3527 | .sdma_reqs = omap44xx_uart4_sdma_reqs, |
3524 | .main_clk = "func_48m_fclk", | 3528 | .main_clk = "func_48m_fclk", |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index 8396b5b7e912..f6601563aa69 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -95,38 +95,9 @@ static void omap_uart_enable_wakeup(struct device *dev, bool enable) | |||
95 | omap_hwmod_disable_wakeup(od->hwmods[0]); | 95 | omap_hwmod_disable_wakeup(od->hwmods[0]); |
96 | } | 96 | } |
97 | 97 | ||
98 | /* | ||
99 | * Errata i291: [UART]:Cannot Acknowledge Idle Requests | ||
100 | * in Smartidle Mode When Configured for DMA Operations. | ||
101 | * WA: configure uart in force idle mode. | ||
102 | */ | ||
103 | static void omap_uart_set_noidle(struct device *dev) | ||
104 | { | ||
105 | struct platform_device *pdev = to_platform_device(dev); | ||
106 | struct omap_device *od = to_omap_device(pdev); | ||
107 | |||
108 | omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO); | ||
109 | } | ||
110 | |||
111 | static void omap_uart_set_smartidle(struct device *dev) | ||
112 | { | ||
113 | struct platform_device *pdev = to_platform_device(dev); | ||
114 | struct omap_device *od = to_omap_device(pdev); | ||
115 | u8 idlemode; | ||
116 | |||
117 | if (od->hwmods[0]->class->sysc->idlemodes & SIDLE_SMART_WKUP) | ||
118 | idlemode = HWMOD_IDLEMODE_SMART_WKUP; | ||
119 | else | ||
120 | idlemode = HWMOD_IDLEMODE_SMART; | ||
121 | |||
122 | omap_hwmod_set_slave_idlemode(od->hwmods[0], idlemode); | ||
123 | } | ||
124 | |||
125 | #else | 98 | #else |
126 | static void omap_uart_enable_wakeup(struct device *dev, bool enable) | 99 | static void omap_uart_enable_wakeup(struct device *dev, bool enable) |
127 | {} | 100 | {} |
128 | static void omap_uart_set_noidle(struct device *dev) {} | ||
129 | static void omap_uart_set_smartidle(struct device *dev) {} | ||
130 | #endif /* CONFIG_PM */ | 101 | #endif /* CONFIG_PM */ |
131 | 102 | ||
132 | #ifdef CONFIG_OMAP_MUX | 103 | #ifdef CONFIG_OMAP_MUX |
@@ -299,8 +270,6 @@ void __init omap_serial_init_port(struct omap_board_data *bdata, | |||
299 | omap_up.uartclk = OMAP24XX_BASE_BAUD * 16; | 270 | omap_up.uartclk = OMAP24XX_BASE_BAUD * 16; |
300 | omap_up.flags = UPF_BOOT_AUTOCONF; | 271 | omap_up.flags = UPF_BOOT_AUTOCONF; |
301 | omap_up.get_context_loss_count = omap_pm_get_dev_context_loss_count; | 272 | omap_up.get_context_loss_count = omap_pm_get_dev_context_loss_count; |
302 | omap_up.set_forceidle = omap_uart_set_smartidle; | ||
303 | omap_up.set_noidle = omap_uart_set_noidle; | ||
304 | omap_up.enable_wakeup = omap_uart_enable_wakeup; | 273 | omap_up.enable_wakeup = omap_uart_enable_wakeup; |
305 | omap_up.dma_rx_buf_size = info->dma_rx_buf_size; | 274 | omap_up.dma_rx_buf_size = info->dma_rx_buf_size; |
306 | omap_up.dma_rx_timeout = info->dma_rx_timeout; | 275 | omap_up.dma_rx_timeout = info->dma_rx_timeout; |
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index b97fd672e89d..f8a6db9239bf 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c | |||
@@ -199,13 +199,6 @@ void __init orion5x_init_early(void) | |||
199 | 199 | ||
200 | orion_time_set_base(TIMER_VIRT_BASE); | 200 | orion_time_set_base(TIMER_VIRT_BASE); |
201 | 201 | ||
202 | /* | ||
203 | * Some Orion5x devices allocate their coherent buffers from atomic | ||
204 | * context. Increase size of atomic coherent pool to make sure such | ||
205 | * the allocations won't fail. | ||
206 | */ | ||
207 | init_dma_coherent_pool_size(SZ_1M); | ||
208 | |||
209 | /* Initialize the MBUS driver */ | 202 | /* Initialize the MBUS driver */ |
210 | orion5x_pcie_id(&dev, &rev); | 203 | orion5x_pcie_id(&dev, &rev); |
211 | if (dev == MV88F5281_DEV_ID) | 204 | if (dev == MV88F5281_DEV_ID) |
diff --git a/arch/arm/mach-picoxcell/Kconfig b/arch/arm/mach-picoxcell/Kconfig index 13bae78b215a..b1022f4315f7 100644 --- a/arch/arm/mach-picoxcell/Kconfig +++ b/arch/arm/mach-picoxcell/Kconfig | |||
@@ -4,7 +4,6 @@ config ARCH_PICOXCELL | |||
4 | select ARM_PATCH_PHYS_VIRT | 4 | select ARM_PATCH_PHYS_VIRT |
5 | select ARM_VIC | 5 | select ARM_VIC |
6 | select CPU_V6K | 6 | select CPU_V6K |
7 | select DW_APB_TIMER | ||
8 | select DW_APB_TIMER_OF | 7 | select DW_APB_TIMER_OF |
9 | select GENERIC_CLOCKEVENTS | 8 | select GENERIC_CLOCKEVENTS |
10 | select HAVE_TCM | 9 | select HAVE_TCM |
diff --git a/arch/arm/mach-picoxcell/common.c b/arch/arm/mach-picoxcell/common.c index 70b441ad1d18..7cde0424d33c 100644 --- a/arch/arm/mach-picoxcell/common.c +++ b/arch/arm/mach-picoxcell/common.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/of_address.h> | 15 | #include <linux/of_address.h> |
16 | #include <linux/of_irq.h> | 16 | #include <linux/of_irq.h> |
17 | #include <linux/of_platform.h> | 17 | #include <linux/of_platform.h> |
18 | #include <linux/dw_apb_timer.h> | ||
19 | 18 | ||
20 | #include <asm/mach/arch.h> | 19 | #include <asm/mach/arch.h> |
21 | #include <asm/mach/map.h> | 20 | #include <asm/mach/map.h> |
@@ -88,7 +87,6 @@ DT_MACHINE_START(PICOXCELL, "Picochip picoXcell") | |||
88 | .map_io = picoxcell_map_io, | 87 | .map_io = picoxcell_map_io, |
89 | .nr_irqs = NR_IRQS_LEGACY, | 88 | .nr_irqs = NR_IRQS_LEGACY, |
90 | .init_irq = irqchip_init, | 89 | .init_irq = irqchip_init, |
91 | .init_time = dw_apb_timer_init, | ||
92 | .init_machine = picoxcell_init_machine, | 90 | .init_machine = picoxcell_init_machine, |
93 | .dt_compat = picoxcell_dt_match, | 91 | .dt_compat = picoxcell_dt_match, |
94 | .restart = picoxcell_wdt_restart, | 92 | .restart = picoxcell_wdt_restart, |
diff --git a/arch/arm/mach-s3c24xx/Kconfig b/arch/arm/mach-s3c24xx/Kconfig index f2f7088bfd22..ed8aadc646f9 100644 --- a/arch/arm/mach-s3c24xx/Kconfig +++ b/arch/arm/mach-s3c24xx/Kconfig | |||
@@ -28,7 +28,7 @@ config CPU_S3C2410 | |||
28 | select CPU_ARM920T | 28 | select CPU_ARM920T |
29 | select CPU_LLSERIAL_S3C2410 | 29 | select CPU_LLSERIAL_S3C2410 |
30 | select S3C2410_CLOCK | 30 | select S3C2410_CLOCK |
31 | select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX | 31 | select ARM_S3C2410_CPUFREQ if ARM_S3C24XX_CPUFREQ |
32 | select S3C2410_PM if PM | 32 | select S3C2410_PM if PM |
33 | select SAMSUNG_HRT | 33 | select SAMSUNG_HRT |
34 | help | 34 | help |
@@ -204,27 +204,38 @@ config S3C24XX_GPIO_EXTRA128 | |||
204 | Add an extra 128 gpio numbers to the available GPIO pool. This is | 204 | Add an extra 128 gpio numbers to the available GPIO pool. This is |
205 | available for boards that need extra gpios for external devices. | 205 | available for boards that need extra gpios for external devices. |
206 | 206 | ||
207 | config S3C24XX_PLL | ||
208 | bool "Support CPUfreq changing of PLL frequency (EXPERIMENTAL)" | ||
209 | depends on ARM_S3C24XX | ||
210 | help | ||
211 | Compile in support for changing the PLL frequency from the | ||
212 | S3C24XX series CPUfreq driver. The PLL takes time to settle | ||
213 | after a frequency change, so by default it is not enabled. | ||
214 | |||
215 | This also means that the PLL tables for the selected CPU(s) will | ||
216 | be built which may increase the size of the kernel image. | ||
217 | |||
207 | # cpu frequency items common between s3c2410 and s3c2440/s3c2442 | 218 | # cpu frequency items common between s3c2410 and s3c2440/s3c2442 |
208 | 219 | ||
209 | config S3C2410_IOTIMING | 220 | config S3C2410_IOTIMING |
210 | bool | 221 | bool |
211 | depends on CPU_FREQ_S3C24XX | 222 | depends on ARM_S3C24XX_CPUFREQ |
212 | help | 223 | help |
213 | Internal node to select io timing code that is common to the s3c2410 | 224 | Internal node to select io timing code that is common to the s3c2410 |
214 | and s3c2440/s3c2442 cpu frequency support. | 225 | and s3c2440/s3c2442 cpu frequency support. |
215 | 226 | ||
216 | config S3C2410_CPUFREQ_UTILS | 227 | config S3C2410_CPUFREQ_UTILS |
217 | bool | 228 | bool |
218 | depends on CPU_FREQ_S3C24XX | 229 | depends on ARM_S3C24XX_CPUFREQ |
219 | help | 230 | help |
220 | Internal node to select timing code that is common to the s3c2410 | 231 | Internal node to select timing code that is common to the s3c2410 |
221 | and s3c2440/s3c244 cpu frequency support. | 232 | and s3c2440/s3c244 cpu frequency support. |
222 | 233 | ||
223 | # cpu frequency support common to s3c2412, s3c2413 and s3c2442 | 234 | # cpu frequency support common to s3c2412, s3c2413 and s3c2442 |
224 | 235 | ||
225 | config S3C2412_IOTIMING | 236 | config S3C2412_IOTIMING |
226 | bool | 237 | bool |
227 | depends on CPU_FREQ_S3C24XX && (CPU_S3C2412 || CPU_S3C2443) | 238 | depends on ARM_S3C24XX_CPUFREQ && (CPU_S3C2412 || CPU_S3C2443) |
228 | help | 239 | help |
229 | Intel node to select io timing code that is common to the s3c2412 | 240 | Intel node to select io timing code that is common to the s3c2412 |
230 | and the s3c2443. | 241 | and the s3c2443. |
@@ -233,16 +244,9 @@ config S3C2412_IOTIMING | |||
233 | 244 | ||
234 | if CPU_S3C2410 | 245 | if CPU_S3C2410 |
235 | 246 | ||
236 | config S3C2410_CPUFREQ | ||
237 | bool | ||
238 | depends on CPU_FREQ_S3C24XX | ||
239 | select S3C2410_CPUFREQ_UTILS | ||
240 | help | ||
241 | CPU Frequency scaling support for S3C2410 | ||
242 | |||
243 | config S3C2410_PLL | 247 | config S3C2410_PLL |
244 | bool | 248 | bool |
245 | depends on S3C2410_CPUFREQ && CPU_FREQ_S3C24XX_PLL | 249 | depends on ARM_S3C2410_CPUFREQ && S3C24XX_PLL |
246 | default y | 250 | default y |
247 | help | 251 | help |
248 | Select the PLL table for the S3C2410 | 252 | Select the PLL table for the S3C2410 |
@@ -278,7 +282,7 @@ config ARCH_BAST | |||
278 | bool "Simtec Electronics BAST (EB2410ITX)" | 282 | bool "Simtec Electronics BAST (EB2410ITX)" |
279 | select ISA | 283 | select ISA |
280 | select MACH_BAST_IDE | 284 | select MACH_BAST_IDE |
281 | select S3C2410_IOTIMING if S3C2410_CPUFREQ | 285 | select S3C2410_IOTIMING if ARM_S3C2410_CPUFREQ |
282 | select S3C24XX_DCLK | 286 | select S3C24XX_DCLK |
283 | select S3C24XX_SIMTEC_NOR | 287 | select S3C24XX_SIMTEC_NOR |
284 | select S3C24XX_SIMTEC_PM if PM | 288 | select S3C24XX_SIMTEC_PM if PM |
@@ -385,14 +389,6 @@ config CPU_S3C2412_ONLY | |||
385 | !CPU_S3C2442 && !CPU_S3C2443 | 389 | !CPU_S3C2442 && !CPU_S3C2443 |
386 | default y | 390 | default y |
387 | 391 | ||
388 | config S3C2412_CPUFREQ | ||
389 | bool | ||
390 | depends on CPU_FREQ_S3C24XX | ||
391 | default y | ||
392 | select S3C2412_IOTIMING | ||
393 | help | ||
394 | CPU Frequency scaling support for S3C2412 and S3C2413 SoC CPUs. | ||
395 | |||
396 | config S3C2412_DMA | 392 | config S3C2412_DMA |
397 | bool | 393 | bool |
398 | help | 394 | help |
@@ -494,14 +490,6 @@ endif # CPU_S3C2416 | |||
494 | 490 | ||
495 | if CPU_S3C2440 | 491 | if CPU_S3C2440 |
496 | 492 | ||
497 | config S3C2440_CPUFREQ | ||
498 | bool "S3C2440/S3C2442 CPU Frequency scaling support" | ||
499 | depends on CPU_FREQ_S3C24XX && (CPU_S3C2440 || CPU_S3C2442) | ||
500 | default y | ||
501 | select S3C2410_CPUFREQ_UTILS | ||
502 | help | ||
503 | CPU Frequency scaling support for S3C2440 and S3C2442 SoC CPUs. | ||
504 | |||
505 | config S3C2440_DMA | 493 | config S3C2440_DMA |
506 | bool | 494 | bool |
507 | help | 495 | help |
@@ -521,15 +509,15 @@ config S3C2440_XTAL_16934400 | |||
521 | 509 | ||
522 | config S3C2440_PLL_12000000 | 510 | config S3C2440_PLL_12000000 |
523 | bool | 511 | bool |
524 | depends on S3C2440_CPUFREQ && S3C2440_XTAL_12000000 | 512 | depends on ARM_S3C2440_CPUFREQ && S3C2440_XTAL_12000000 |
525 | default y if CPU_FREQ_S3C24XX_PLL | 513 | default y if S3C24XX_PLL |
526 | help | 514 | help |
527 | PLL tables for S3C2440 or S3C2442 CPUs with 12MHz crystals. | 515 | PLL tables for S3C2440 or S3C2442 CPUs with 12MHz crystals. |
528 | 516 | ||
529 | config S3C2440_PLL_16934400 | 517 | config S3C2440_PLL_16934400 |
530 | bool | 518 | bool |
531 | depends on S3C2440_CPUFREQ && S3C2440_XTAL_16934400 | 519 | depends on ARM_S3C2440_CPUFREQ && S3C2440_XTAL_16934400 |
532 | default y if CPU_FREQ_S3C24XX_PLL | 520 | default y if S3C24XX_PLL |
533 | help | 521 | help |
534 | PLL tables for S3C2440 or S3C2442 CPUs with 16.934MHz crystals. | 522 | PLL tables for S3C2440 or S3C2442 CPUs with 16.934MHz crystals. |
535 | 523 | ||
@@ -583,7 +571,7 @@ config MACH_NEXCODER_2440 | |||
583 | 571 | ||
584 | config MACH_OSIRIS | 572 | config MACH_OSIRIS |
585 | bool "Simtec IM2440D20 (OSIRIS) module" | 573 | bool "Simtec IM2440D20 (OSIRIS) module" |
586 | select S3C2410_IOTIMING if S3C2440_CPUFREQ | 574 | select S3C2410_IOTIMING if ARM_S3C2440_CPUFREQ |
587 | select S3C2440_XTAL_12000000 | 575 | select S3C2440_XTAL_12000000 |
588 | select S3C24XX_DCLK | 576 | select S3C24XX_DCLK |
589 | select S3C24XX_GPIO_EXTRA128 | 577 | select S3C24XX_GPIO_EXTRA128 |
@@ -655,7 +643,7 @@ config MACH_RX1950 | |||
655 | bool "HP iPAQ rx1950" | 643 | bool "HP iPAQ rx1950" |
656 | select I2C | 644 | select I2C |
657 | select PM_H1940 if PM | 645 | select PM_H1940 if PM |
658 | select S3C2410_IOTIMING if S3C2440_CPUFREQ | 646 | select S3C2410_IOTIMING if ARM_S3C2440_CPUFREQ |
659 | select S3C2440_XTAL_16934400 | 647 | select S3C2440_XTAL_16934400 |
660 | select S3C24XX_DCLK | 648 | select S3C24XX_DCLK |
661 | select S3C24XX_PWM | 649 | select S3C24XX_PWM |
diff --git a/arch/arm/mach-s3c24xx/Makefile b/arch/arm/mach-s3c24xx/Makefile index 6f46ecfc8396..a3b495a4bba0 100644 --- a/arch/arm/mach-s3c24xx/Makefile +++ b/arch/arm/mach-s3c24xx/Makefile | |||
@@ -17,13 +17,11 @@ obj- := | |||
17 | obj-y += common.o | 17 | obj-y += common.o |
18 | 18 | ||
19 | obj-$(CONFIG_CPU_S3C2410) += s3c2410.o | 19 | obj-$(CONFIG_CPU_S3C2410) += s3c2410.o |
20 | obj-$(CONFIG_S3C2410_CPUFREQ) += cpufreq-s3c2410.o | ||
21 | obj-$(CONFIG_S3C2410_DMA) += dma-s3c2410.o | 20 | obj-$(CONFIG_S3C2410_DMA) += dma-s3c2410.o |
22 | obj-$(CONFIG_S3C2410_PLL) += pll-s3c2410.o | 21 | obj-$(CONFIG_S3C2410_PLL) += pll-s3c2410.o |
23 | obj-$(CONFIG_S3C2410_PM) += pm-s3c2410.o sleep-s3c2410.o | 22 | obj-$(CONFIG_S3C2410_PM) += pm-s3c2410.o sleep-s3c2410.o |
24 | 23 | ||
25 | obj-$(CONFIG_CPU_S3C2412) += s3c2412.o clock-s3c2412.o | 24 | obj-$(CONFIG_CPU_S3C2412) += s3c2412.o clock-s3c2412.o |
26 | obj-$(CONFIG_S3C2412_CPUFREQ) += cpufreq-s3c2412.o | ||
27 | obj-$(CONFIG_S3C2412_DMA) += dma-s3c2412.o | 25 | obj-$(CONFIG_S3C2412_DMA) += dma-s3c2412.o |
28 | obj-$(CONFIG_S3C2412_PM) += pm-s3c2412.o | 26 | obj-$(CONFIG_S3C2412_PM) += pm-s3c2412.o |
29 | obj-$(CONFIG_S3C2412_PM_SLEEP) += sleep-s3c2412.o | 27 | obj-$(CONFIG_S3C2412_PM_SLEEP) += sleep-s3c2412.o |
@@ -34,7 +32,6 @@ obj-$(CONFIG_S3C2416_PM) += pm-s3c2416.o | |||
34 | obj-$(CONFIG_CPU_S3C2440) += s3c2440.o clock-s3c2440.o | 32 | obj-$(CONFIG_CPU_S3C2440) += s3c2440.o clock-s3c2440.o |
35 | obj-$(CONFIG_CPU_S3C2442) += s3c2442.o | 33 | obj-$(CONFIG_CPU_S3C2442) += s3c2442.o |
36 | obj-$(CONFIG_CPU_S3C244X) += s3c244x.o clock-s3c244x.o | 34 | obj-$(CONFIG_CPU_S3C244X) += s3c244x.o clock-s3c244x.o |
37 | obj-$(CONFIG_S3C2440_CPUFREQ) += cpufreq-s3c2440.o | ||
38 | obj-$(CONFIG_S3C2440_DMA) += dma-s3c2440.o | 35 | obj-$(CONFIG_S3C2440_DMA) += dma-s3c2440.o |
39 | obj-$(CONFIG_S3C2440_PLL_12000000) += pll-s3c2440-12000000.o | 36 | obj-$(CONFIG_S3C2440_PLL_12000000) += pll-s3c2440-12000000.o |
40 | obj-$(CONFIG_S3C2440_PLL_16934400) += pll-s3c2440-16934400.o | 37 | obj-$(CONFIG_S3C2440_PLL_16934400) += pll-s3c2440-16934400.o |
@@ -59,9 +56,6 @@ obj-$(CONFIG_S3C2412_IOTIMING) += iotiming-s3c2412.o | |||
59 | obj-$(CONFIG_S3C2443_COMMON) += common-s3c2443.o | 56 | obj-$(CONFIG_S3C2443_COMMON) += common-s3c2443.o |
60 | obj-$(CONFIG_S3C2443_DMA) += dma-s3c2443.o | 57 | obj-$(CONFIG_S3C2443_DMA) += dma-s3c2443.o |
61 | 58 | ||
62 | obj-$(CONFIG_CPU_FREQ_S3C24XX) += cpufreq.o | ||
63 | obj-$(CONFIG_CPU_FREQ_S3C24XX_DEBUGFS) += cpufreq-debugfs.o | ||
64 | |||
65 | # | 59 | # |
66 | # machine support | 60 | # machine support |
67 | # following is ordered alphabetically by option text. | 61 | # following is ordered alphabetically by option text. |
diff --git a/arch/arm/mach-s3c24xx/cpufreq-debugfs.c b/arch/arm/mach-s3c24xx/cpufreq-debugfs.c deleted file mode 100644 index 9b7b4289d66c..000000000000 --- a/arch/arm/mach-s3c24xx/cpufreq-debugfs.c +++ /dev/null | |||
@@ -1,198 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2009 Simtec Electronics | ||
3 | * http://armlinux.simtec.co.uk/ | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * S3C24XX CPU Frequency scaling - debugfs status support | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/export.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <linux/ioport.h> | ||
17 | #include <linux/cpufreq.h> | ||
18 | #include <linux/debugfs.h> | ||
19 | #include <linux/seq_file.h> | ||
20 | #include <linux/err.h> | ||
21 | |||
22 | #include <plat/cpu-freq-core.h> | ||
23 | |||
24 | static struct dentry *dbgfs_root; | ||
25 | static struct dentry *dbgfs_file_io; | ||
26 | static struct dentry *dbgfs_file_info; | ||
27 | static struct dentry *dbgfs_file_board; | ||
28 | |||
29 | #define print_ns(x) ((x) / 10), ((x) % 10) | ||
30 | |||
31 | static void show_max(struct seq_file *seq, struct s3c_freq *f) | ||
32 | { | ||
33 | seq_printf(seq, "MAX: F=%lu, H=%lu, P=%lu, A=%lu\n", | ||
34 | f->fclk, f->hclk, f->pclk, f->armclk); | ||
35 | } | ||
36 | |||
37 | static int board_show(struct seq_file *seq, void *p) | ||
38 | { | ||
39 | struct s3c_cpufreq_config *cfg; | ||
40 | struct s3c_cpufreq_board *brd; | ||
41 | |||
42 | cfg = s3c_cpufreq_getconfig(); | ||
43 | if (!cfg) { | ||
44 | seq_printf(seq, "no configuration registered\n"); | ||
45 | return 0; | ||
46 | } | ||
47 | |||
48 | brd = cfg->board; | ||
49 | if (!brd) { | ||
50 | seq_printf(seq, "no board definition set?\n"); | ||
51 | return 0; | ||
52 | } | ||
53 | |||
54 | seq_printf(seq, "SDRAM refresh %u ns\n", brd->refresh); | ||
55 | seq_printf(seq, "auto_io=%u\n", brd->auto_io); | ||
56 | seq_printf(seq, "need_io=%u\n", brd->need_io); | ||
57 | |||
58 | show_max(seq, &brd->max); | ||
59 | |||
60 | |||
61 | return 0; | ||
62 | } | ||
63 | |||
64 | static int fops_board_open(struct inode *inode, struct file *file) | ||
65 | { | ||
66 | return single_open(file, board_show, NULL); | ||
67 | } | ||
68 | |||
69 | static const struct file_operations fops_board = { | ||
70 | .open = fops_board_open, | ||
71 | .read = seq_read, | ||
72 | .llseek = seq_lseek, | ||
73 | .release = single_release, | ||
74 | .owner = THIS_MODULE, | ||
75 | }; | ||
76 | |||
77 | static int info_show(struct seq_file *seq, void *p) | ||
78 | { | ||
79 | struct s3c_cpufreq_config *cfg; | ||
80 | |||
81 | cfg = s3c_cpufreq_getconfig(); | ||
82 | if (!cfg) { | ||
83 | seq_printf(seq, "no configuration registered\n"); | ||
84 | return 0; | ||
85 | } | ||
86 | |||
87 | seq_printf(seq, " FCLK %ld Hz\n", cfg->freq.fclk); | ||
88 | seq_printf(seq, " HCLK %ld Hz (%lu.%lu ns)\n", | ||
89 | cfg->freq.hclk, print_ns(cfg->freq.hclk_tns)); | ||
90 | seq_printf(seq, " PCLK %ld Hz\n", cfg->freq.hclk); | ||
91 | seq_printf(seq, "ARMCLK %ld Hz\n", cfg->freq.armclk); | ||
92 | seq_printf(seq, "\n"); | ||
93 | |||
94 | show_max(seq, &cfg->max); | ||
95 | |||
96 | seq_printf(seq, "Divisors: P=%d, H=%d, A=%d, dvs=%s\n", | ||
97 | cfg->divs.h_divisor, cfg->divs.p_divisor, | ||
98 | cfg->divs.arm_divisor, cfg->divs.dvs ? "on" : "off"); | ||
99 | seq_printf(seq, "\n"); | ||
100 | |||
101 | seq_printf(seq, "lock_pll=%u\n", cfg->lock_pll); | ||
102 | |||
103 | return 0; | ||
104 | } | ||
105 | |||
106 | static int fops_info_open(struct inode *inode, struct file *file) | ||
107 | { | ||
108 | return single_open(file, info_show, NULL); | ||
109 | } | ||
110 | |||
111 | static const struct file_operations fops_info = { | ||
112 | .open = fops_info_open, | ||
113 | .read = seq_read, | ||
114 | .llseek = seq_lseek, | ||
115 | .release = single_release, | ||
116 | .owner = THIS_MODULE, | ||
117 | }; | ||
118 | |||
119 | static int io_show(struct seq_file *seq, void *p) | ||
120 | { | ||
121 | void (*show_bank)(struct seq_file *, struct s3c_cpufreq_config *, union s3c_iobank *); | ||
122 | struct s3c_cpufreq_config *cfg; | ||
123 | struct s3c_iotimings *iot; | ||
124 | union s3c_iobank *iob; | ||
125 | int bank; | ||
126 | |||
127 | cfg = s3c_cpufreq_getconfig(); | ||
128 | if (!cfg) { | ||
129 | seq_printf(seq, "no configuration registered\n"); | ||
130 | return 0; | ||
131 | } | ||
132 | |||
133 | show_bank = cfg->info->debug_io_show; | ||
134 | if (!show_bank) { | ||
135 | seq_printf(seq, "no code to show bank timing\n"); | ||
136 | return 0; | ||
137 | } | ||
138 | |||
139 | iot = s3c_cpufreq_getiotimings(); | ||
140 | if (!iot) { | ||
141 | seq_printf(seq, "no io timings registered\n"); | ||
142 | return 0; | ||
143 | } | ||
144 | |||
145 | seq_printf(seq, "hclk period is %lu.%lu ns\n", print_ns(cfg->freq.hclk_tns)); | ||
146 | |||
147 | for (bank = 0; bank < MAX_BANKS; bank++) { | ||
148 | iob = &iot->bank[bank]; | ||
149 | |||
150 | seq_printf(seq, "bank %d: ", bank); | ||
151 | |||
152 | if (!iob->io_2410) { | ||
153 | seq_printf(seq, "nothing set\n"); | ||
154 | continue; | ||
155 | } | ||
156 | |||
157 | show_bank(seq, cfg, iob); | ||
158 | } | ||
159 | |||
160 | return 0; | ||
161 | } | ||
162 | |||
163 | static int fops_io_open(struct inode *inode, struct file *file) | ||
164 | { | ||
165 | return single_open(file, io_show, NULL); | ||
166 | } | ||
167 | |||
168 | static const struct file_operations fops_io = { | ||
169 | .open = fops_io_open, | ||
170 | .read = seq_read, | ||
171 | .llseek = seq_lseek, | ||
172 | .release = single_release, | ||
173 | .owner = THIS_MODULE, | ||
174 | }; | ||
175 | |||
176 | |||
177 | static int __init s3c_freq_debugfs_init(void) | ||
178 | { | ||
179 | dbgfs_root = debugfs_create_dir("s3c-cpufreq", NULL); | ||
180 | if (IS_ERR(dbgfs_root)) { | ||
181 | printk(KERN_ERR "%s: error creating debugfs root\n", __func__); | ||
182 | return PTR_ERR(dbgfs_root); | ||
183 | } | ||
184 | |||
185 | dbgfs_file_io = debugfs_create_file("io-timing", S_IRUGO, dbgfs_root, | ||
186 | NULL, &fops_io); | ||
187 | |||
188 | dbgfs_file_info = debugfs_create_file("info", S_IRUGO, dbgfs_root, | ||
189 | NULL, &fops_info); | ||
190 | |||
191 | dbgfs_file_board = debugfs_create_file("board", S_IRUGO, dbgfs_root, | ||
192 | NULL, &fops_board); | ||
193 | |||
194 | return 0; | ||
195 | } | ||
196 | |||
197 | late_initcall(s3c_freq_debugfs_init); | ||
198 | |||
diff --git a/arch/arm/mach-s3c24xx/cpufreq-s3c2410.c b/arch/arm/mach-s3c24xx/cpufreq-s3c2410.c deleted file mode 100644 index cfa0dd8723ec..000000000000 --- a/arch/arm/mach-s3c24xx/cpufreq-s3c2410.c +++ /dev/null | |||
@@ -1,160 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2006-2008 Simtec Electronics | ||
3 | * http://armlinux.simtec.co.uk/ | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * S3C2410 CPU Frequency scaling | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/module.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <linux/ioport.h> | ||
17 | #include <linux/cpufreq.h> | ||
18 | #include <linux/device.h> | ||
19 | #include <linux/clk.h> | ||
20 | #include <linux/err.h> | ||
21 | #include <linux/io.h> | ||
22 | |||
23 | #include <asm/mach/arch.h> | ||
24 | #include <asm/mach/map.h> | ||
25 | |||
26 | #include <mach/regs-clock.h> | ||
27 | |||
28 | #include <plat/cpu.h> | ||
29 | #include <plat/clock.h> | ||
30 | #include <plat/cpu-freq-core.h> | ||
31 | |||
32 | /* Note, 2410A has an extra mode for 1:4:4 ratio, bit 2 of CLKDIV */ | ||
33 | |||
34 | static void s3c2410_cpufreq_setdivs(struct s3c_cpufreq_config *cfg) | ||
35 | { | ||
36 | u32 clkdiv = 0; | ||
37 | |||
38 | if (cfg->divs.h_divisor == 2) | ||
39 | clkdiv |= S3C2410_CLKDIVN_HDIVN; | ||
40 | |||
41 | if (cfg->divs.p_divisor != cfg->divs.h_divisor) | ||
42 | clkdiv |= S3C2410_CLKDIVN_PDIVN; | ||
43 | |||
44 | __raw_writel(clkdiv, S3C2410_CLKDIVN); | ||
45 | } | ||
46 | |||
47 | static int s3c2410_cpufreq_calcdivs(struct s3c_cpufreq_config *cfg) | ||
48 | { | ||
49 | unsigned long hclk, fclk, pclk; | ||
50 | unsigned int hdiv, pdiv; | ||
51 | unsigned long hclk_max; | ||
52 | |||
53 | fclk = cfg->freq.fclk; | ||
54 | hclk_max = cfg->max.hclk; | ||
55 | |||
56 | cfg->freq.armclk = fclk; | ||
57 | |||
58 | s3c_freq_dbg("%s: fclk is %lu, max hclk %lu\n", | ||
59 | __func__, fclk, hclk_max); | ||
60 | |||
61 | hdiv = (fclk > cfg->max.hclk) ? 2 : 1; | ||
62 | hclk = fclk / hdiv; | ||
63 | |||
64 | if (hclk > cfg->max.hclk) { | ||
65 | s3c_freq_dbg("%s: hclk too big\n", __func__); | ||
66 | return -EINVAL; | ||
67 | } | ||
68 | |||
69 | pdiv = (hclk > cfg->max.pclk) ? 2 : 1; | ||
70 | pclk = hclk / pdiv; | ||
71 | |||
72 | if (pclk > cfg->max.pclk) { | ||
73 | s3c_freq_dbg("%s: pclk too big\n", __func__); | ||
74 | return -EINVAL; | ||
75 | } | ||
76 | |||
77 | pdiv *= hdiv; | ||
78 | |||
79 | /* record the result */ | ||
80 | cfg->divs.p_divisor = pdiv; | ||
81 | cfg->divs.h_divisor = hdiv; | ||
82 | |||
83 | return 0; | ||
84 | } | ||
85 | |||
86 | static struct s3c_cpufreq_info s3c2410_cpufreq_info = { | ||
87 | .max = { | ||
88 | .fclk = 200000000, | ||
89 | .hclk = 100000000, | ||
90 | .pclk = 50000000, | ||
91 | }, | ||
92 | |||
93 | /* transition latency is about 5ms worst-case, so | ||
94 | * set 10ms to be sure */ | ||
95 | .latency = 10000000, | ||
96 | |||
97 | .locktime_m = 150, | ||
98 | .locktime_u = 150, | ||
99 | .locktime_bits = 12, | ||
100 | |||
101 | .need_pll = 1, | ||
102 | |||
103 | .name = "s3c2410", | ||
104 | .calc_iotiming = s3c2410_iotiming_calc, | ||
105 | .set_iotiming = s3c2410_iotiming_set, | ||
106 | .get_iotiming = s3c2410_iotiming_get, | ||
107 | .resume_clocks = s3c2410_setup_clocks, | ||
108 | |||
109 | .set_fvco = s3c2410_set_fvco, | ||
110 | .set_refresh = s3c2410_cpufreq_setrefresh, | ||
111 | .set_divs = s3c2410_cpufreq_setdivs, | ||
112 | .calc_divs = s3c2410_cpufreq_calcdivs, | ||
113 | |||
114 | .debug_io_show = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs), | ||
115 | }; | ||
116 | |||
117 | static int s3c2410_cpufreq_add(struct device *dev, | ||
118 | struct subsys_interface *sif) | ||
119 | { | ||
120 | return s3c_cpufreq_register(&s3c2410_cpufreq_info); | ||
121 | } | ||
122 | |||
123 | static struct subsys_interface s3c2410_cpufreq_interface = { | ||
124 | .name = "s3c2410_cpufreq", | ||
125 | .subsys = &s3c2410_subsys, | ||
126 | .add_dev = s3c2410_cpufreq_add, | ||
127 | }; | ||
128 | |||
129 | static int __init s3c2410_cpufreq_init(void) | ||
130 | { | ||
131 | return subsys_interface_register(&s3c2410_cpufreq_interface); | ||
132 | } | ||
133 | arch_initcall(s3c2410_cpufreq_init); | ||
134 | |||
135 | static int s3c2410a_cpufreq_add(struct device *dev, | ||
136 | struct subsys_interface *sif) | ||
137 | { | ||
138 | /* alter the maximum freq settings for S3C2410A. If a board knows | ||
139 | * it only has a maximum of 200, then it should register its own | ||
140 | * limits. */ | ||
141 | |||
142 | s3c2410_cpufreq_info.max.fclk = 266000000; | ||
143 | s3c2410_cpufreq_info.max.hclk = 133000000; | ||
144 | s3c2410_cpufreq_info.max.pclk = 66500000; | ||
145 | s3c2410_cpufreq_info.name = "s3c2410a"; | ||
146 | |||
147 | return s3c2410_cpufreq_add(dev, sif); | ||
148 | } | ||
149 | |||
150 | static struct subsys_interface s3c2410a_cpufreq_interface = { | ||
151 | .name = "s3c2410a_cpufreq", | ||
152 | .subsys = &s3c2410a_subsys, | ||
153 | .add_dev = s3c2410a_cpufreq_add, | ||
154 | }; | ||
155 | |||
156 | static int __init s3c2410a_cpufreq_init(void) | ||
157 | { | ||
158 | return subsys_interface_register(&s3c2410a_cpufreq_interface); | ||
159 | } | ||
160 | arch_initcall(s3c2410a_cpufreq_init); | ||
diff --git a/arch/arm/mach-s3c24xx/cpufreq-s3c2412.c b/arch/arm/mach-s3c24xx/cpufreq-s3c2412.c deleted file mode 100644 index 8bf0f3a77476..000000000000 --- a/arch/arm/mach-s3c24xx/cpufreq-s3c2412.c +++ /dev/null | |||
@@ -1,258 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2008 Simtec Electronics | ||
3 | * http://armlinux.simtec.co.uk/ | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * S3C2412 CPU Frequency scalling | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/module.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <linux/ioport.h> | ||
17 | #include <linux/cpufreq.h> | ||
18 | #include <linux/device.h> | ||
19 | #include <linux/delay.h> | ||
20 | #include <linux/clk.h> | ||
21 | #include <linux/err.h> | ||
22 | #include <linux/io.h> | ||
23 | |||
24 | #include <asm/mach/arch.h> | ||
25 | #include <asm/mach/map.h> | ||
26 | |||
27 | #include <mach/regs-clock.h> | ||
28 | |||
29 | #include <plat/cpu.h> | ||
30 | #include <plat/clock.h> | ||
31 | #include <plat/cpu-freq-core.h> | ||
32 | |||
33 | #include "s3c2412.h" | ||
34 | |||
35 | /* our clock resources. */ | ||
36 | static struct clk *xtal; | ||
37 | static struct clk *fclk; | ||
38 | static struct clk *hclk; | ||
39 | static struct clk *armclk; | ||
40 | |||
41 | /* HDIV: 1, 2, 3, 4, 6, 8 */ | ||
42 | |||
43 | static int s3c2412_cpufreq_calcdivs(struct s3c_cpufreq_config *cfg) | ||
44 | { | ||
45 | unsigned int hdiv, pdiv, armdiv, dvs; | ||
46 | unsigned long hclk, fclk, armclk, armdiv_clk; | ||
47 | unsigned long hclk_max; | ||
48 | |||
49 | fclk = cfg->freq.fclk; | ||
50 | armclk = cfg->freq.armclk; | ||
51 | hclk_max = cfg->max.hclk; | ||
52 | |||
53 | /* We can't run hclk above armclk as at the best we have to | ||
54 | * have armclk and hclk in dvs mode. */ | ||
55 | |||
56 | if (hclk_max > armclk) | ||
57 | hclk_max = armclk; | ||
58 | |||
59 | s3c_freq_dbg("%s: fclk=%lu, armclk=%lu, hclk_max=%lu\n", | ||
60 | __func__, fclk, armclk, hclk_max); | ||
61 | s3c_freq_dbg("%s: want f=%lu, arm=%lu, h=%lu, p=%lu\n", | ||
62 | __func__, cfg->freq.fclk, cfg->freq.armclk, | ||
63 | cfg->freq.hclk, cfg->freq.pclk); | ||
64 | |||
65 | armdiv = fclk / armclk; | ||
66 | |||
67 | if (armdiv < 1) | ||
68 | armdiv = 1; | ||
69 | if (armdiv > 2) | ||
70 | armdiv = 2; | ||
71 | |||
72 | cfg->divs.arm_divisor = armdiv; | ||
73 | armdiv_clk = fclk / armdiv; | ||
74 | |||
75 | hdiv = armdiv_clk / hclk_max; | ||
76 | if (hdiv < 1) | ||
77 | hdiv = 1; | ||
78 | |||
79 | cfg->freq.hclk = hclk = armdiv_clk / hdiv; | ||
80 | |||
81 | /* set dvs depending on whether we reached armclk or not. */ | ||
82 | cfg->divs.dvs = dvs = armclk < armdiv_clk; | ||
83 | |||
84 | /* update the actual armclk we achieved. */ | ||
85 | cfg->freq.armclk = dvs ? hclk : armdiv_clk; | ||
86 | |||
87 | s3c_freq_dbg("%s: armclk %lu, hclk %lu, armdiv %d, hdiv %d, dvs %d\n", | ||
88 | __func__, armclk, hclk, armdiv, hdiv, cfg->divs.dvs); | ||
89 | |||
90 | if (hdiv > 4) | ||
91 | goto invalid; | ||
92 | |||
93 | pdiv = (hclk > cfg->max.pclk) ? 2 : 1; | ||
94 | |||
95 | if ((hclk / pdiv) > cfg->max.pclk) | ||
96 | pdiv++; | ||
97 | |||
98 | cfg->freq.pclk = hclk / pdiv; | ||
99 | |||
100 | s3c_freq_dbg("%s: pdiv %d\n", __func__, pdiv); | ||
101 | |||
102 | if (pdiv > 2) | ||
103 | goto invalid; | ||
104 | |||
105 | pdiv *= hdiv; | ||
106 | |||
107 | /* store the result, and then return */ | ||
108 | |||
109 | cfg->divs.h_divisor = hdiv * armdiv; | ||
110 | cfg->divs.p_divisor = pdiv * armdiv; | ||
111 | |||
112 | return 0; | ||
113 | |||
114 | invalid: | ||
115 | return -EINVAL; | ||
116 | } | ||
117 | |||
118 | static void s3c2412_cpufreq_setdivs(struct s3c_cpufreq_config *cfg) | ||
119 | { | ||
120 | unsigned long clkdiv; | ||
121 | unsigned long olddiv; | ||
122 | |||
123 | olddiv = clkdiv = __raw_readl(S3C2410_CLKDIVN); | ||
124 | |||
125 | /* clear off current clock info */ | ||
126 | |||
127 | clkdiv &= ~S3C2412_CLKDIVN_ARMDIVN; | ||
128 | clkdiv &= ~S3C2412_CLKDIVN_HDIVN_MASK; | ||
129 | clkdiv &= ~S3C2412_CLKDIVN_PDIVN; | ||
130 | |||
131 | if (cfg->divs.arm_divisor == 2) | ||
132 | clkdiv |= S3C2412_CLKDIVN_ARMDIVN; | ||
133 | |||
134 | clkdiv |= ((cfg->divs.h_divisor / cfg->divs.arm_divisor) - 1); | ||
135 | |||
136 | if (cfg->divs.p_divisor != cfg->divs.h_divisor) | ||
137 | clkdiv |= S3C2412_CLKDIVN_PDIVN; | ||
138 | |||
139 | s3c_freq_dbg("%s: div %08lx => %08lx\n", __func__, olddiv, clkdiv); | ||
140 | __raw_writel(clkdiv, S3C2410_CLKDIVN); | ||
141 | |||
142 | clk_set_parent(armclk, cfg->divs.dvs ? hclk : fclk); | ||
143 | } | ||
144 | |||
145 | static void s3c2412_cpufreq_setrefresh(struct s3c_cpufreq_config *cfg) | ||
146 | { | ||
147 | struct s3c_cpufreq_board *board = cfg->board; | ||
148 | unsigned long refresh; | ||
149 | |||
150 | s3c_freq_dbg("%s: refresh %u ns, hclk %lu\n", __func__, | ||
151 | board->refresh, cfg->freq.hclk); | ||
152 | |||
153 | /* Reduce both the refresh time (in ns) and the frequency (in MHz) | ||
154 | * by 10 each to ensure that we do not overflow 32 bit numbers. This | ||
155 | * should work for HCLK up to 133MHz and refresh period up to 30usec. | ||
156 | */ | ||
157 | |||
158 | refresh = (board->refresh / 10); | ||
159 | refresh *= (cfg->freq.hclk / 100); | ||
160 | refresh /= (1 * 1000 * 1000); /* 10^6 */ | ||
161 | |||
162 | s3c_freq_dbg("%s: setting refresh 0x%08lx\n", __func__, refresh); | ||
163 | __raw_writel(refresh, S3C2412_REFRESH); | ||
164 | } | ||
165 | |||
166 | /* set the default cpu frequency information, based on an 200MHz part | ||
167 | * as we have no other way of detecting the speed rating in software. | ||
168 | */ | ||
169 | |||
170 | static struct s3c_cpufreq_info s3c2412_cpufreq_info = { | ||
171 | .max = { | ||
172 | .fclk = 200000000, | ||
173 | .hclk = 100000000, | ||
174 | .pclk = 50000000, | ||
175 | }, | ||
176 | |||
177 | .latency = 5000000, /* 5ms */ | ||
178 | |||
179 | .locktime_m = 150, | ||
180 | .locktime_u = 150, | ||
181 | .locktime_bits = 16, | ||
182 | |||
183 | .name = "s3c2412", | ||
184 | .set_refresh = s3c2412_cpufreq_setrefresh, | ||
185 | .set_divs = s3c2412_cpufreq_setdivs, | ||
186 | .calc_divs = s3c2412_cpufreq_calcdivs, | ||
187 | |||
188 | .calc_iotiming = s3c2412_iotiming_calc, | ||
189 | .set_iotiming = s3c2412_iotiming_set, | ||
190 | .get_iotiming = s3c2412_iotiming_get, | ||
191 | |||
192 | .resume_clocks = s3c2412_setup_clocks, | ||
193 | |||
194 | .debug_io_show = s3c_cpufreq_debugfs_call(s3c2412_iotiming_debugfs), | ||
195 | }; | ||
196 | |||
197 | static int s3c2412_cpufreq_add(struct device *dev, | ||
198 | struct subsys_interface *sif) | ||
199 | { | ||
200 | unsigned long fclk_rate; | ||
201 | |||
202 | hclk = clk_get(NULL, "hclk"); | ||
203 | if (IS_ERR(hclk)) { | ||
204 | printk(KERN_ERR "%s: cannot find hclk clock\n", __func__); | ||
205 | return -ENOENT; | ||
206 | } | ||
207 | |||
208 | fclk = clk_get(NULL, "fclk"); | ||
209 | if (IS_ERR(fclk)) { | ||
210 | printk(KERN_ERR "%s: cannot find fclk clock\n", __func__); | ||
211 | goto err_fclk; | ||
212 | } | ||
213 | |||
214 | fclk_rate = clk_get_rate(fclk); | ||
215 | if (fclk_rate > 200000000) { | ||
216 | printk(KERN_INFO | ||
217 | "%s: fclk %ld MHz, assuming 266MHz capable part\n", | ||
218 | __func__, fclk_rate / 1000000); | ||
219 | s3c2412_cpufreq_info.max.fclk = 266000000; | ||
220 | s3c2412_cpufreq_info.max.hclk = 133000000; | ||
221 | s3c2412_cpufreq_info.max.pclk = 66000000; | ||
222 | } | ||
223 | |||
224 | armclk = clk_get(NULL, "armclk"); | ||
225 | if (IS_ERR(armclk)) { | ||
226 | printk(KERN_ERR "%s: cannot find arm clock\n", __func__); | ||
227 | goto err_armclk; | ||
228 | } | ||
229 | |||
230 | xtal = clk_get(NULL, "xtal"); | ||
231 | if (IS_ERR(xtal)) { | ||
232 | printk(KERN_ERR "%s: cannot find xtal clock\n", __func__); | ||
233 | goto err_xtal; | ||
234 | } | ||
235 | |||
236 | return s3c_cpufreq_register(&s3c2412_cpufreq_info); | ||
237 | |||
238 | err_xtal: | ||
239 | clk_put(armclk); | ||
240 | err_armclk: | ||
241 | clk_put(fclk); | ||
242 | err_fclk: | ||
243 | clk_put(hclk); | ||
244 | |||
245 | return -ENOENT; | ||
246 | } | ||
247 | |||
248 | static struct subsys_interface s3c2412_cpufreq_interface = { | ||
249 | .name = "s3c2412_cpufreq", | ||
250 | .subsys = &s3c2412_subsys, | ||
251 | .add_dev = s3c2412_cpufreq_add, | ||
252 | }; | ||
253 | |||
254 | static int s3c2412_cpufreq_init(void) | ||
255 | { | ||
256 | return subsys_interface_register(&s3c2412_cpufreq_interface); | ||
257 | } | ||
258 | arch_initcall(s3c2412_cpufreq_init); | ||
diff --git a/arch/arm/mach-s3c24xx/cpufreq-s3c2440.c b/arch/arm/mach-s3c24xx/cpufreq-s3c2440.c deleted file mode 100644 index 72b2cc8a5a85..000000000000 --- a/arch/arm/mach-s3c24xx/cpufreq-s3c2440.c +++ /dev/null | |||
@@ -1,312 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2006-2009 Simtec Electronics | ||
3 | * http://armlinux.simtec.co.uk/ | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * Vincent Sanders <vince@simtec.co.uk> | ||
6 | * | ||
7 | * S3C2440/S3C2442 CPU Frequency scaling | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #include <linux/init.h> | ||
15 | #include <linux/module.h> | ||
16 | #include <linux/interrupt.h> | ||
17 | #include <linux/ioport.h> | ||
18 | #include <linux/cpufreq.h> | ||
19 | #include <linux/device.h> | ||
20 | #include <linux/delay.h> | ||
21 | #include <linux/clk.h> | ||
22 | #include <linux/err.h> | ||
23 | #include <linux/io.h> | ||
24 | |||
25 | #include <mach/hardware.h> | ||
26 | |||
27 | #include <asm/mach/arch.h> | ||
28 | #include <asm/mach/map.h> | ||
29 | |||
30 | #include <mach/regs-clock.h> | ||
31 | |||
32 | #include <plat/cpu.h> | ||
33 | #include <plat/cpu-freq-core.h> | ||
34 | #include <plat/clock.h> | ||
35 | |||
36 | static struct clk *xtal; | ||
37 | static struct clk *fclk; | ||
38 | static struct clk *hclk; | ||
39 | static struct clk *armclk; | ||
40 | |||
41 | /* HDIV: 1, 2, 3, 4, 6, 8 */ | ||
42 | |||
43 | static inline int within_khz(unsigned long a, unsigned long b) | ||
44 | { | ||
45 | long diff = a - b; | ||
46 | |||
47 | return (diff >= -1000 && diff <= 1000); | ||
48 | } | ||
49 | |||
50 | /** | ||
51 | * s3c2440_cpufreq_calcdivs - calculate divider settings | ||
52 | * @cfg: The cpu frequency settings. | ||
53 | * | ||
54 | * Calcualte the divider values for the given frequency settings | ||
55 | * specified in @cfg. The values are stored in @cfg for later use | ||
56 | * by the relevant set routine if the request settings can be reached. | ||
57 | */ | ||
58 | int s3c2440_cpufreq_calcdivs(struct s3c_cpufreq_config *cfg) | ||
59 | { | ||
60 | unsigned int hdiv, pdiv; | ||
61 | unsigned long hclk, fclk, armclk; | ||
62 | unsigned long hclk_max; | ||
63 | |||
64 | fclk = cfg->freq.fclk; | ||
65 | armclk = cfg->freq.armclk; | ||
66 | hclk_max = cfg->max.hclk; | ||
67 | |||
68 | s3c_freq_dbg("%s: fclk is %lu, armclk %lu, max hclk %lu\n", | ||
69 | __func__, fclk, armclk, hclk_max); | ||
70 | |||
71 | if (armclk > fclk) { | ||
72 | printk(KERN_WARNING "%s: armclk > fclk\n", __func__); | ||
73 | armclk = fclk; | ||
74 | } | ||
75 | |||
76 | /* if we are in DVS, we need HCLK to be <= ARMCLK */ | ||
77 | if (armclk < fclk && armclk < hclk_max) | ||
78 | hclk_max = armclk; | ||
79 | |||
80 | for (hdiv = 1; hdiv < 9; hdiv++) { | ||
81 | if (hdiv == 5 || hdiv == 7) | ||
82 | hdiv++; | ||
83 | |||
84 | hclk = (fclk / hdiv); | ||
85 | if (hclk <= hclk_max || within_khz(hclk, hclk_max)) | ||
86 | break; | ||
87 | } | ||
88 | |||
89 | s3c_freq_dbg("%s: hclk %lu, div %d\n", __func__, hclk, hdiv); | ||
90 | |||
91 | if (hdiv > 8) | ||
92 | goto invalid; | ||
93 | |||
94 | pdiv = (hclk > cfg->max.pclk) ? 2 : 1; | ||
95 | |||
96 | if ((hclk / pdiv) > cfg->max.pclk) | ||
97 | pdiv++; | ||
98 | |||
99 | s3c_freq_dbg("%s: pdiv %d\n", __func__, pdiv); | ||
100 | |||
101 | if (pdiv > 2) | ||
102 | goto invalid; | ||
103 | |||
104 | pdiv *= hdiv; | ||
105 | |||
106 | /* calculate a valid armclk */ | ||
107 | |||
108 | if (armclk < hclk) | ||
109 | armclk = hclk; | ||
110 | |||
111 | /* if we're running armclk lower than fclk, this really means | ||
112 | * that the system should go into dvs mode, which means that | ||
113 | * armclk is connected to hclk. */ | ||
114 | if (armclk < fclk) { | ||
115 | cfg->divs.dvs = 1; | ||
116 | armclk = hclk; | ||
117 | } else | ||
118 | cfg->divs.dvs = 0; | ||
119 | |||
120 | cfg->freq.armclk = armclk; | ||
121 | |||
122 | /* store the result, and then return */ | ||
123 | |||
124 | cfg->divs.h_divisor = hdiv; | ||
125 | cfg->divs.p_divisor = pdiv; | ||
126 | |||
127 | return 0; | ||
128 | |||
129 | invalid: | ||
130 | return -EINVAL; | ||
131 | } | ||
132 | |||
133 | #define CAMDIVN_HCLK_HALF (S3C2440_CAMDIVN_HCLK3_HALF | \ | ||
134 | S3C2440_CAMDIVN_HCLK4_HALF) | ||
135 | |||
136 | /** | ||
137 | * s3c2440_cpufreq_setdivs - set the cpu frequency divider settings | ||
138 | * @cfg: The cpu frequency settings. | ||
139 | * | ||
140 | * Set the divisors from the settings in @cfg, which where generated | ||
141 | * during the calculation phase by s3c2440_cpufreq_calcdivs(). | ||
142 | */ | ||
143 | static void s3c2440_cpufreq_setdivs(struct s3c_cpufreq_config *cfg) | ||
144 | { | ||
145 | unsigned long clkdiv, camdiv; | ||
146 | |||
147 | s3c_freq_dbg("%s: divsiors: h=%d, p=%d\n", __func__, | ||
148 | cfg->divs.h_divisor, cfg->divs.p_divisor); | ||
149 | |||
150 | clkdiv = __raw_readl(S3C2410_CLKDIVN); | ||
151 | camdiv = __raw_readl(S3C2440_CAMDIVN); | ||
152 | |||
153 | clkdiv &= ~(S3C2440_CLKDIVN_HDIVN_MASK | S3C2440_CLKDIVN_PDIVN); | ||
154 | camdiv &= ~CAMDIVN_HCLK_HALF; | ||
155 | |||
156 | switch (cfg->divs.h_divisor) { | ||
157 | case 1: | ||
158 | clkdiv |= S3C2440_CLKDIVN_HDIVN_1; | ||
159 | break; | ||
160 | |||
161 | case 2: | ||
162 | clkdiv |= S3C2440_CLKDIVN_HDIVN_2; | ||
163 | break; | ||
164 | |||
165 | case 6: | ||
166 | camdiv |= S3C2440_CAMDIVN_HCLK3_HALF; | ||
167 | case 3: | ||
168 | clkdiv |= S3C2440_CLKDIVN_HDIVN_3_6; | ||
169 | break; | ||
170 | |||
171 | case 8: | ||
172 | camdiv |= S3C2440_CAMDIVN_HCLK4_HALF; | ||
173 | case 4: | ||
174 | clkdiv |= S3C2440_CLKDIVN_HDIVN_4_8; | ||
175 | break; | ||
176 | |||
177 | default: | ||
178 | BUG(); /* we don't expect to get here. */ | ||
179 | } | ||
180 | |||
181 | if (cfg->divs.p_divisor != cfg->divs.h_divisor) | ||
182 | clkdiv |= S3C2440_CLKDIVN_PDIVN; | ||
183 | |||
184 | /* todo - set pclk. */ | ||
185 | |||
186 | /* Write the divisors first with hclk intentionally halved so that | ||
187 | * when we write clkdiv we will under-frequency instead of over. We | ||
188 | * then make a short delay and remove the hclk halving if necessary. | ||
189 | */ | ||
190 | |||
191 | __raw_writel(camdiv | CAMDIVN_HCLK_HALF, S3C2440_CAMDIVN); | ||
192 | __raw_writel(clkdiv, S3C2410_CLKDIVN); | ||
193 | |||
194 | ndelay(20); | ||
195 | __raw_writel(camdiv, S3C2440_CAMDIVN); | ||
196 | |||
197 | clk_set_parent(armclk, cfg->divs.dvs ? hclk : fclk); | ||
198 | } | ||
199 | |||
200 | static int run_freq_for(unsigned long max_hclk, unsigned long fclk, | ||
201 | int *divs, | ||
202 | struct cpufreq_frequency_table *table, | ||
203 | size_t table_size) | ||
204 | { | ||
205 | unsigned long freq; | ||
206 | int index = 0; | ||
207 | int div; | ||
208 | |||
209 | for (div = *divs; div > 0; div = *divs++) { | ||
210 | freq = fclk / div; | ||
211 | |||
212 | if (freq > max_hclk && div != 1) | ||
213 | continue; | ||
214 | |||
215 | freq /= 1000; /* table is in kHz */ | ||
216 | index = s3c_cpufreq_addfreq(table, index, table_size, freq); | ||
217 | if (index < 0) | ||
218 | break; | ||
219 | } | ||
220 | |||
221 | return index; | ||
222 | } | ||
223 | |||
224 | static int hclk_divs[] = { 1, 2, 3, 4, 6, 8, -1 }; | ||
225 | |||
226 | static int s3c2440_cpufreq_calctable(struct s3c_cpufreq_config *cfg, | ||
227 | struct cpufreq_frequency_table *table, | ||
228 | size_t table_size) | ||
229 | { | ||
230 | int ret; | ||
231 | |||
232 | WARN_ON(cfg->info == NULL); | ||
233 | WARN_ON(cfg->board == NULL); | ||
234 | |||
235 | ret = run_freq_for(cfg->info->max.hclk, | ||
236 | cfg->info->max.fclk, | ||
237 | hclk_divs, | ||
238 | table, table_size); | ||
239 | |||
240 | s3c_freq_dbg("%s: returning %d\n", __func__, ret); | ||
241 | |||
242 | return ret; | ||
243 | } | ||
244 | |||
245 | struct s3c_cpufreq_info s3c2440_cpufreq_info = { | ||
246 | .max = { | ||
247 | .fclk = 400000000, | ||
248 | .hclk = 133333333, | ||
249 | .pclk = 66666666, | ||
250 | }, | ||
251 | |||
252 | .locktime_m = 300, | ||
253 | .locktime_u = 300, | ||
254 | .locktime_bits = 16, | ||
255 | |||
256 | .name = "s3c244x", | ||
257 | .calc_iotiming = s3c2410_iotiming_calc, | ||
258 | .set_iotiming = s3c2410_iotiming_set, | ||
259 | .get_iotiming = s3c2410_iotiming_get, | ||
260 | .set_fvco = s3c2410_set_fvco, | ||
261 | |||
262 | .set_refresh = s3c2410_cpufreq_setrefresh, | ||
263 | .set_divs = s3c2440_cpufreq_setdivs, | ||
264 | .calc_divs = s3c2440_cpufreq_calcdivs, | ||
265 | .calc_freqtable = s3c2440_cpufreq_calctable, | ||
266 | |||
267 | .resume_clocks = s3c244x_setup_clocks, | ||
268 | |||
269 | .debug_io_show = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs), | ||
270 | }; | ||
271 | |||
272 | static int s3c2440_cpufreq_add(struct device *dev, | ||
273 | struct subsys_interface *sif) | ||
274 | { | ||
275 | xtal = s3c_cpufreq_clk_get(NULL, "xtal"); | ||
276 | hclk = s3c_cpufreq_clk_get(NULL, "hclk"); | ||
277 | fclk = s3c_cpufreq_clk_get(NULL, "fclk"); | ||
278 | armclk = s3c_cpufreq_clk_get(NULL, "armclk"); | ||
279 | |||
280 | if (IS_ERR(xtal) || IS_ERR(hclk) || IS_ERR(fclk) || IS_ERR(armclk)) { | ||
281 | printk(KERN_ERR "%s: failed to get clocks\n", __func__); | ||
282 | return -ENOENT; | ||
283 | } | ||
284 | |||
285 | return s3c_cpufreq_register(&s3c2440_cpufreq_info); | ||
286 | } | ||
287 | |||
288 | static struct subsys_interface s3c2440_cpufreq_interface = { | ||
289 | .name = "s3c2440_cpufreq", | ||
290 | .subsys = &s3c2440_subsys, | ||
291 | .add_dev = s3c2440_cpufreq_add, | ||
292 | }; | ||
293 | |||
294 | static int s3c2440_cpufreq_init(void) | ||
295 | { | ||
296 | return subsys_interface_register(&s3c2440_cpufreq_interface); | ||
297 | } | ||
298 | |||
299 | /* arch_initcall adds the clocks we need, so use subsys_initcall. */ | ||
300 | subsys_initcall(s3c2440_cpufreq_init); | ||
301 | |||
302 | static struct subsys_interface s3c2442_cpufreq_interface = { | ||
303 | .name = "s3c2442_cpufreq", | ||
304 | .subsys = &s3c2442_subsys, | ||
305 | .add_dev = s3c2440_cpufreq_add, | ||
306 | }; | ||
307 | |||
308 | static int s3c2442_cpufreq_init(void) | ||
309 | { | ||
310 | return subsys_interface_register(&s3c2442_cpufreq_interface); | ||
311 | } | ||
312 | subsys_initcall(s3c2442_cpufreq_init); | ||
diff --git a/arch/arm/mach-s3c24xx/cpufreq.c b/arch/arm/mach-s3c24xx/cpufreq.c deleted file mode 100644 index 3c0e78ede0da..000000000000 --- a/arch/arm/mach-s3c24xx/cpufreq.c +++ /dev/null | |||
@@ -1,711 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2006-2008 Simtec Electronics | ||
3 | * http://armlinux.simtec.co.uk/ | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * S3C24XX CPU Frequency scaling | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/module.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <linux/ioport.h> | ||
17 | #include <linux/cpufreq.h> | ||
18 | #include <linux/cpu.h> | ||
19 | #include <linux/clk.h> | ||
20 | #include <linux/err.h> | ||
21 | #include <linux/io.h> | ||
22 | #include <linux/device.h> | ||
23 | #include <linux/sysfs.h> | ||
24 | #include <linux/slab.h> | ||
25 | |||
26 | #include <asm/mach/arch.h> | ||
27 | #include <asm/mach/map.h> | ||
28 | |||
29 | #include <plat/cpu.h> | ||
30 | #include <plat/clock.h> | ||
31 | #include <plat/cpu-freq-core.h> | ||
32 | |||
33 | #include <mach/regs-clock.h> | ||
34 | |||
35 | /* note, cpufreq support deals in kHz, no Hz */ | ||
36 | |||
37 | static struct cpufreq_driver s3c24xx_driver; | ||
38 | static struct s3c_cpufreq_config cpu_cur; | ||
39 | static struct s3c_iotimings s3c24xx_iotiming; | ||
40 | static struct cpufreq_frequency_table *pll_reg; | ||
41 | static unsigned int last_target = ~0; | ||
42 | static unsigned int ftab_size; | ||
43 | static struct cpufreq_frequency_table *ftab; | ||
44 | |||
45 | static struct clk *_clk_mpll; | ||
46 | static struct clk *_clk_xtal; | ||
47 | static struct clk *clk_fclk; | ||
48 | static struct clk *clk_hclk; | ||
49 | static struct clk *clk_pclk; | ||
50 | static struct clk *clk_arm; | ||
51 | |||
52 | #ifdef CONFIG_CPU_FREQ_S3C24XX_DEBUGFS | ||
53 | struct s3c_cpufreq_config *s3c_cpufreq_getconfig(void) | ||
54 | { | ||
55 | return &cpu_cur; | ||
56 | } | ||
57 | |||
58 | struct s3c_iotimings *s3c_cpufreq_getiotimings(void) | ||
59 | { | ||
60 | return &s3c24xx_iotiming; | ||
61 | } | ||
62 | #endif /* CONFIG_CPU_FREQ_S3C24XX_DEBUGFS */ | ||
63 | |||
64 | static void s3c_cpufreq_getcur(struct s3c_cpufreq_config *cfg) | ||
65 | { | ||
66 | unsigned long fclk, pclk, hclk, armclk; | ||
67 | |||
68 | cfg->freq.fclk = fclk = clk_get_rate(clk_fclk); | ||
69 | cfg->freq.hclk = hclk = clk_get_rate(clk_hclk); | ||
70 | cfg->freq.pclk = pclk = clk_get_rate(clk_pclk); | ||
71 | cfg->freq.armclk = armclk = clk_get_rate(clk_arm); | ||
72 | |||
73 | cfg->pll.index = __raw_readl(S3C2410_MPLLCON); | ||
74 | cfg->pll.frequency = fclk; | ||
75 | |||
76 | cfg->freq.hclk_tns = 1000000000 / (cfg->freq.hclk / 10); | ||
77 | |||
78 | cfg->divs.h_divisor = fclk / hclk; | ||
79 | cfg->divs.p_divisor = fclk / pclk; | ||
80 | } | ||
81 | |||
82 | static inline void s3c_cpufreq_calc(struct s3c_cpufreq_config *cfg) | ||
83 | { | ||
84 | unsigned long pll = cfg->pll.frequency; | ||
85 | |||
86 | cfg->freq.fclk = pll; | ||
87 | cfg->freq.hclk = pll / cfg->divs.h_divisor; | ||
88 | cfg->freq.pclk = pll / cfg->divs.p_divisor; | ||
89 | |||
90 | /* convert hclk into 10ths of nanoseconds for io calcs */ | ||
91 | cfg->freq.hclk_tns = 1000000000 / (cfg->freq.hclk / 10); | ||
92 | } | ||
93 | |||
94 | static inline int closer(unsigned int target, unsigned int n, unsigned int c) | ||
95 | { | ||
96 | int diff_cur = abs(target - c); | ||
97 | int diff_new = abs(target - n); | ||
98 | |||
99 | return (diff_new < diff_cur); | ||
100 | } | ||
101 | |||
102 | static void s3c_cpufreq_show(const char *pfx, | ||
103 | struct s3c_cpufreq_config *cfg) | ||
104 | { | ||
105 | s3c_freq_dbg("%s: Fvco=%u, F=%lu, A=%lu, H=%lu (%u), P=%lu (%u)\n", | ||
106 | pfx, cfg->pll.frequency, cfg->freq.fclk, cfg->freq.armclk, | ||
107 | cfg->freq.hclk, cfg->divs.h_divisor, | ||
108 | cfg->freq.pclk, cfg->divs.p_divisor); | ||
109 | } | ||
110 | |||
111 | /* functions to wrapper the driver info calls to do the cpu specific work */ | ||
112 | |||
113 | static void s3c_cpufreq_setio(struct s3c_cpufreq_config *cfg) | ||
114 | { | ||
115 | if (cfg->info->set_iotiming) | ||
116 | (cfg->info->set_iotiming)(cfg, &s3c24xx_iotiming); | ||
117 | } | ||
118 | |||
119 | static int s3c_cpufreq_calcio(struct s3c_cpufreq_config *cfg) | ||
120 | { | ||
121 | if (cfg->info->calc_iotiming) | ||
122 | return (cfg->info->calc_iotiming)(cfg, &s3c24xx_iotiming); | ||
123 | |||
124 | return 0; | ||
125 | } | ||
126 | |||
127 | static void s3c_cpufreq_setrefresh(struct s3c_cpufreq_config *cfg) | ||
128 | { | ||
129 | (cfg->info->set_refresh)(cfg); | ||
130 | } | ||
131 | |||
132 | static void s3c_cpufreq_setdivs(struct s3c_cpufreq_config *cfg) | ||
133 | { | ||
134 | (cfg->info->set_divs)(cfg); | ||
135 | } | ||
136 | |||
137 | static int s3c_cpufreq_calcdivs(struct s3c_cpufreq_config *cfg) | ||
138 | { | ||
139 | return (cfg->info->calc_divs)(cfg); | ||
140 | } | ||
141 | |||
142 | static void s3c_cpufreq_setfvco(struct s3c_cpufreq_config *cfg) | ||
143 | { | ||
144 | (cfg->info->set_fvco)(cfg); | ||
145 | } | ||
146 | |||
147 | static inline void s3c_cpufreq_resume_clocks(void) | ||
148 | { | ||
149 | cpu_cur.info->resume_clocks(); | ||
150 | } | ||
151 | |||
152 | static inline void s3c_cpufreq_updateclk(struct clk *clk, | ||
153 | unsigned int freq) | ||
154 | { | ||
155 | clk_set_rate(clk, freq); | ||
156 | } | ||
157 | |||
158 | static int s3c_cpufreq_settarget(struct cpufreq_policy *policy, | ||
159 | unsigned int target_freq, | ||
160 | struct cpufreq_frequency_table *pll) | ||
161 | { | ||
162 | struct s3c_cpufreq_freqs freqs; | ||
163 | struct s3c_cpufreq_config cpu_new; | ||
164 | unsigned long flags; | ||
165 | |||
166 | cpu_new = cpu_cur; /* copy new from current */ | ||
167 | |||
168 | s3c_cpufreq_show("cur", &cpu_cur); | ||
169 | |||
170 | /* TODO - check for DMA currently outstanding */ | ||
171 | |||
172 | cpu_new.pll = pll ? *pll : cpu_cur.pll; | ||
173 | |||
174 | if (pll) | ||
175 | freqs.pll_changing = 1; | ||
176 | |||
177 | /* update our frequencies */ | ||
178 | |||
179 | cpu_new.freq.armclk = target_freq; | ||
180 | cpu_new.freq.fclk = cpu_new.pll.frequency; | ||
181 | |||
182 | if (s3c_cpufreq_calcdivs(&cpu_new) < 0) { | ||
183 | printk(KERN_ERR "no divisors for %d\n", target_freq); | ||
184 | goto err_notpossible; | ||
185 | } | ||
186 | |||
187 | s3c_freq_dbg("%s: got divs\n", __func__); | ||
188 | |||
189 | s3c_cpufreq_calc(&cpu_new); | ||
190 | |||
191 | s3c_freq_dbg("%s: calculated frequencies for new\n", __func__); | ||
192 | |||
193 | if (cpu_new.freq.hclk != cpu_cur.freq.hclk) { | ||
194 | if (s3c_cpufreq_calcio(&cpu_new) < 0) { | ||
195 | printk(KERN_ERR "%s: no IO timings\n", __func__); | ||
196 | goto err_notpossible; | ||
197 | } | ||
198 | } | ||
199 | |||
200 | s3c_cpufreq_show("new", &cpu_new); | ||
201 | |||
202 | /* setup our cpufreq parameters */ | ||
203 | |||
204 | freqs.old = cpu_cur.freq; | ||
205 | freqs.new = cpu_new.freq; | ||
206 | |||
207 | freqs.freqs.old = cpu_cur.freq.armclk / 1000; | ||
208 | freqs.freqs.new = cpu_new.freq.armclk / 1000; | ||
209 | |||
210 | /* update f/h/p clock settings before we issue the change | ||
211 | * notification, so that drivers do not need to do anything | ||
212 | * special if they want to recalculate on CPUFREQ_PRECHANGE. */ | ||
213 | |||
214 | s3c_cpufreq_updateclk(_clk_mpll, cpu_new.pll.frequency); | ||
215 | s3c_cpufreq_updateclk(clk_fclk, cpu_new.freq.fclk); | ||
216 | s3c_cpufreq_updateclk(clk_hclk, cpu_new.freq.hclk); | ||
217 | s3c_cpufreq_updateclk(clk_pclk, cpu_new.freq.pclk); | ||
218 | |||
219 | /* start the frequency change */ | ||
220 | cpufreq_notify_transition(policy, &freqs.freqs, CPUFREQ_PRECHANGE); | ||
221 | |||
222 | /* If hclk is staying the same, then we do not need to | ||
223 | * re-write the IO or the refresh timings whilst we are changing | ||
224 | * speed. */ | ||
225 | |||
226 | local_irq_save(flags); | ||
227 | |||
228 | /* is our memory clock slowing down? */ | ||
229 | if (cpu_new.freq.hclk < cpu_cur.freq.hclk) { | ||
230 | s3c_cpufreq_setrefresh(&cpu_new); | ||
231 | s3c_cpufreq_setio(&cpu_new); | ||
232 | } | ||
233 | |||
234 | if (cpu_new.freq.fclk == cpu_cur.freq.fclk) { | ||
235 | /* not changing PLL, just set the divisors */ | ||
236 | |||
237 | s3c_cpufreq_setdivs(&cpu_new); | ||
238 | } else { | ||
239 | if (cpu_new.freq.fclk < cpu_cur.freq.fclk) { | ||
240 | /* slow the cpu down, then set divisors */ | ||
241 | |||
242 | s3c_cpufreq_setfvco(&cpu_new); | ||
243 | s3c_cpufreq_setdivs(&cpu_new); | ||
244 | } else { | ||
245 | /* set the divisors, then speed up */ | ||
246 | |||
247 | s3c_cpufreq_setdivs(&cpu_new); | ||
248 | s3c_cpufreq_setfvco(&cpu_new); | ||
249 | } | ||
250 | } | ||
251 | |||
252 | /* did our memory clock speed up */ | ||
253 | if (cpu_new.freq.hclk > cpu_cur.freq.hclk) { | ||
254 | s3c_cpufreq_setrefresh(&cpu_new); | ||
255 | s3c_cpufreq_setio(&cpu_new); | ||
256 | } | ||
257 | |||
258 | /* update our current settings */ | ||
259 | cpu_cur = cpu_new; | ||
260 | |||
261 | local_irq_restore(flags); | ||
262 | |||
263 | /* notify everyone we've done this */ | ||
264 | cpufreq_notify_transition(policy, &freqs.freqs, CPUFREQ_POSTCHANGE); | ||
265 | |||
266 | s3c_freq_dbg("%s: finished\n", __func__); | ||
267 | return 0; | ||
268 | |||
269 | err_notpossible: | ||
270 | printk(KERN_ERR "no compatible settings for %d\n", target_freq); | ||
271 | return -EINVAL; | ||
272 | } | ||
273 | |||
274 | /* s3c_cpufreq_target | ||
275 | * | ||
276 | * called by the cpufreq core to adjust the frequency that the CPU | ||
277 | * is currently running at. | ||
278 | */ | ||
279 | |||
280 | static int s3c_cpufreq_target(struct cpufreq_policy *policy, | ||
281 | unsigned int target_freq, | ||
282 | unsigned int relation) | ||
283 | { | ||
284 | struct cpufreq_frequency_table *pll; | ||
285 | unsigned int index; | ||
286 | |||
287 | /* avoid repeated calls which cause a needless amout of duplicated | ||
288 | * logging output (and CPU time as the calculation process is | ||
289 | * done) */ | ||
290 | if (target_freq == last_target) | ||
291 | return 0; | ||
292 | |||
293 | last_target = target_freq; | ||
294 | |||
295 | s3c_freq_dbg("%s: policy %p, target %u, relation %u\n", | ||
296 | __func__, policy, target_freq, relation); | ||
297 | |||
298 | if (ftab) { | ||
299 | if (cpufreq_frequency_table_target(policy, ftab, | ||
300 | target_freq, relation, | ||
301 | &index)) { | ||
302 | s3c_freq_dbg("%s: table failed\n", __func__); | ||
303 | return -EINVAL; | ||
304 | } | ||
305 | |||
306 | s3c_freq_dbg("%s: adjust %d to entry %d (%u)\n", __func__, | ||
307 | target_freq, index, ftab[index].frequency); | ||
308 | target_freq = ftab[index].frequency; | ||
309 | } | ||
310 | |||
311 | target_freq *= 1000; /* convert target to Hz */ | ||
312 | |||
313 | /* find the settings for our new frequency */ | ||
314 | |||
315 | if (!pll_reg || cpu_cur.lock_pll) { | ||
316 | /* either we've not got any PLL values, or we've locked | ||
317 | * to the current one. */ | ||
318 | pll = NULL; | ||
319 | } else { | ||
320 | struct cpufreq_policy tmp_policy; | ||
321 | int ret; | ||
322 | |||
323 | /* we keep the cpu pll table in Hz, to ensure we get an | ||
324 | * accurate value for the PLL output. */ | ||
325 | |||
326 | tmp_policy.min = policy->min * 1000; | ||
327 | tmp_policy.max = policy->max * 1000; | ||
328 | tmp_policy.cpu = policy->cpu; | ||
329 | |||
330 | /* cpufreq_frequency_table_target uses a pointer to 'index' | ||
331 | * which is the number of the table entry, not the value of | ||
332 | * the table entry's index field. */ | ||
333 | |||
334 | ret = cpufreq_frequency_table_target(&tmp_policy, pll_reg, | ||
335 | target_freq, relation, | ||
336 | &index); | ||
337 | |||
338 | if (ret < 0) { | ||
339 | printk(KERN_ERR "%s: no PLL available\n", __func__); | ||
340 | goto err_notpossible; | ||
341 | } | ||
342 | |||
343 | pll = pll_reg + index; | ||
344 | |||
345 | s3c_freq_dbg("%s: target %u => %u\n", | ||
346 | __func__, target_freq, pll->frequency); | ||
347 | |||
348 | target_freq = pll->frequency; | ||
349 | } | ||
350 | |||
351 | return s3c_cpufreq_settarget(policy, target_freq, pll); | ||
352 | |||
353 | err_notpossible: | ||
354 | printk(KERN_ERR "no compatible settings for %d\n", target_freq); | ||
355 | return -EINVAL; | ||
356 | } | ||
357 | |||
358 | static unsigned int s3c_cpufreq_get(unsigned int cpu) | ||
359 | { | ||
360 | return clk_get_rate(clk_arm) / 1000; | ||
361 | } | ||
362 | |||
363 | struct clk *s3c_cpufreq_clk_get(struct device *dev, const char *name) | ||
364 | { | ||
365 | struct clk *clk; | ||
366 | |||
367 | clk = clk_get(dev, name); | ||
368 | if (IS_ERR(clk)) | ||
369 | printk(KERN_ERR "cpufreq: failed to get clock '%s'\n", name); | ||
370 | |||
371 | return clk; | ||
372 | } | ||
373 | |||
374 | static int s3c_cpufreq_init(struct cpufreq_policy *policy) | ||
375 | { | ||
376 | printk(KERN_INFO "%s: initialising policy %p\n", __func__, policy); | ||
377 | |||
378 | if (policy->cpu != 0) | ||
379 | return -EINVAL; | ||
380 | |||
381 | policy->cur = s3c_cpufreq_get(0); | ||
382 | policy->min = policy->cpuinfo.min_freq = 0; | ||
383 | policy->max = policy->cpuinfo.max_freq = cpu_cur.info->max.fclk / 1000; | ||
384 | policy->governor = CPUFREQ_DEFAULT_GOVERNOR; | ||
385 | |||
386 | /* feed the latency information from the cpu driver */ | ||
387 | policy->cpuinfo.transition_latency = cpu_cur.info->latency; | ||
388 | |||
389 | if (ftab) | ||
390 | cpufreq_frequency_table_cpuinfo(policy, ftab); | ||
391 | |||
392 | return 0; | ||
393 | } | ||
394 | |||
395 | static __init int s3c_cpufreq_initclks(void) | ||
396 | { | ||
397 | _clk_mpll = s3c_cpufreq_clk_get(NULL, "mpll"); | ||
398 | _clk_xtal = s3c_cpufreq_clk_get(NULL, "xtal"); | ||
399 | clk_fclk = s3c_cpufreq_clk_get(NULL, "fclk"); | ||
400 | clk_hclk = s3c_cpufreq_clk_get(NULL, "hclk"); | ||
401 | clk_pclk = s3c_cpufreq_clk_get(NULL, "pclk"); | ||
402 | clk_arm = s3c_cpufreq_clk_get(NULL, "armclk"); | ||
403 | |||
404 | if (IS_ERR(clk_fclk) || IS_ERR(clk_hclk) || IS_ERR(clk_pclk) || | ||
405 | IS_ERR(_clk_mpll) || IS_ERR(clk_arm) || IS_ERR(_clk_xtal)) { | ||
406 | printk(KERN_ERR "%s: could not get clock(s)\n", __func__); | ||
407 | return -ENOENT; | ||
408 | } | ||
409 | |||
410 | printk(KERN_INFO "%s: clocks f=%lu,h=%lu,p=%lu,a=%lu\n", __func__, | ||
411 | clk_get_rate(clk_fclk) / 1000, | ||
412 | clk_get_rate(clk_hclk) / 1000, | ||
413 | clk_get_rate(clk_pclk) / 1000, | ||
414 | clk_get_rate(clk_arm) / 1000); | ||
415 | |||
416 | return 0; | ||
417 | } | ||
418 | |||
419 | static int s3c_cpufreq_verify(struct cpufreq_policy *policy) | ||
420 | { | ||
421 | if (policy->cpu != 0) | ||
422 | return -EINVAL; | ||
423 | |||
424 | return 0; | ||
425 | } | ||
426 | |||
427 | #ifdef CONFIG_PM | ||
428 | static struct cpufreq_frequency_table suspend_pll; | ||
429 | static unsigned int suspend_freq; | ||
430 | |||
431 | static int s3c_cpufreq_suspend(struct cpufreq_policy *policy) | ||
432 | { | ||
433 | suspend_pll.frequency = clk_get_rate(_clk_mpll); | ||
434 | suspend_pll.index = __raw_readl(S3C2410_MPLLCON); | ||
435 | suspend_freq = s3c_cpufreq_get(0) * 1000; | ||
436 | |||
437 | return 0; | ||
438 | } | ||
439 | |||
440 | static int s3c_cpufreq_resume(struct cpufreq_policy *policy) | ||
441 | { | ||
442 | int ret; | ||
443 | |||
444 | s3c_freq_dbg("%s: resuming with policy %p\n", __func__, policy); | ||
445 | |||
446 | last_target = ~0; /* invalidate last_target setting */ | ||
447 | |||
448 | /* first, find out what speed we resumed at. */ | ||
449 | s3c_cpufreq_resume_clocks(); | ||
450 | |||
451 | /* whilst we will be called later on, we try and re-set the | ||
452 | * cpu frequencies as soon as possible so that we do not end | ||
453 | * up resuming devices and then immediately having to re-set | ||
454 | * a number of settings once these devices have restarted. | ||
455 | * | ||
456 | * as a note, it is expected devices are not used until they | ||
457 | * have been un-suspended and at that time they should have | ||
458 | * used the updated clock settings. | ||
459 | */ | ||
460 | |||
461 | ret = s3c_cpufreq_settarget(NULL, suspend_freq, &suspend_pll); | ||
462 | if (ret) { | ||
463 | printk(KERN_ERR "%s: failed to reset pll/freq\n", __func__); | ||
464 | return ret; | ||
465 | } | ||
466 | |||
467 | return 0; | ||
468 | } | ||
469 | #else | ||
470 | #define s3c_cpufreq_resume NULL | ||
471 | #define s3c_cpufreq_suspend NULL | ||
472 | #endif | ||
473 | |||
474 | static struct cpufreq_driver s3c24xx_driver = { | ||
475 | .flags = CPUFREQ_STICKY, | ||
476 | .verify = s3c_cpufreq_verify, | ||
477 | .target = s3c_cpufreq_target, | ||
478 | .get = s3c_cpufreq_get, | ||
479 | .init = s3c_cpufreq_init, | ||
480 | .suspend = s3c_cpufreq_suspend, | ||
481 | .resume = s3c_cpufreq_resume, | ||
482 | .name = "s3c24xx", | ||
483 | }; | ||
484 | |||
485 | |||
486 | int __init s3c_cpufreq_register(struct s3c_cpufreq_info *info) | ||
487 | { | ||
488 | if (!info || !info->name) { | ||
489 | printk(KERN_ERR "%s: failed to pass valid information\n", | ||
490 | __func__); | ||
491 | return -EINVAL; | ||
492 | } | ||
493 | |||
494 | printk(KERN_INFO "S3C24XX CPU Frequency driver, %s cpu support\n", | ||
495 | info->name); | ||
496 | |||
497 | /* check our driver info has valid data */ | ||
498 | |||
499 | BUG_ON(info->set_refresh == NULL); | ||
500 | BUG_ON(info->set_divs == NULL); | ||
501 | BUG_ON(info->calc_divs == NULL); | ||
502 | |||
503 | /* info->set_fvco is optional, depending on whether there | ||
504 | * is a need to set the clock code. */ | ||
505 | |||
506 | cpu_cur.info = info; | ||
507 | |||
508 | /* Note, driver registering should probably update locktime */ | ||
509 | |||
510 | return 0; | ||
511 | } | ||
512 | |||
513 | int __init s3c_cpufreq_setboard(struct s3c_cpufreq_board *board) | ||
514 | { | ||
515 | struct s3c_cpufreq_board *ours; | ||
516 | |||
517 | if (!board) { | ||
518 | printk(KERN_INFO "%s: no board data\n", __func__); | ||
519 | return -EINVAL; | ||
520 | } | ||
521 | |||
522 | /* Copy the board information so that each board can make this | ||
523 | * initdata. */ | ||
524 | |||
525 | ours = kzalloc(sizeof(struct s3c_cpufreq_board), GFP_KERNEL); | ||
526 | if (ours == NULL) { | ||
527 | printk(KERN_ERR "%s: no memory\n", __func__); | ||
528 | return -ENOMEM; | ||
529 | } | ||
530 | |||
531 | *ours = *board; | ||
532 | cpu_cur.board = ours; | ||
533 | |||
534 | return 0; | ||
535 | } | ||
536 | |||
537 | int __init s3c_cpufreq_auto_io(void) | ||
538 | { | ||
539 | int ret; | ||
540 | |||
541 | if (!cpu_cur.info->get_iotiming) { | ||
542 | printk(KERN_ERR "%s: get_iotiming undefined\n", __func__); | ||
543 | return -ENOENT; | ||
544 | } | ||
545 | |||
546 | printk(KERN_INFO "%s: working out IO settings\n", __func__); | ||
547 | |||
548 | ret = (cpu_cur.info->get_iotiming)(&cpu_cur, &s3c24xx_iotiming); | ||
549 | if (ret) | ||
550 | printk(KERN_ERR "%s: failed to get timings\n", __func__); | ||
551 | |||
552 | return ret; | ||
553 | } | ||
554 | |||
555 | /* if one or is zero, then return the other, otherwise return the min */ | ||
556 | #define do_min(_a, _b) ((_a) == 0 ? (_b) : (_b) == 0 ? (_a) : min(_a, _b)) | ||
557 | |||
558 | /** | ||
559 | * s3c_cpufreq_freq_min - find the minimum settings for the given freq. | ||
560 | * @dst: The destination structure | ||
561 | * @a: One argument. | ||
562 | * @b: The other argument. | ||
563 | * | ||
564 | * Create a minimum of each frequency entry in the 'struct s3c_freq', | ||
565 | * unless the entry is zero when it is ignored and the non-zero argument | ||
566 | * used. | ||
567 | */ | ||
568 | static void s3c_cpufreq_freq_min(struct s3c_freq *dst, | ||
569 | struct s3c_freq *a, struct s3c_freq *b) | ||
570 | { | ||
571 | dst->fclk = do_min(a->fclk, b->fclk); | ||
572 | dst->hclk = do_min(a->hclk, b->hclk); | ||
573 | dst->pclk = do_min(a->pclk, b->pclk); | ||
574 | dst->armclk = do_min(a->armclk, b->armclk); | ||
575 | } | ||
576 | |||
577 | static inline u32 calc_locktime(u32 freq, u32 time_us) | ||
578 | { | ||
579 | u32 result; | ||
580 | |||
581 | result = freq * time_us; | ||
582 | result = DIV_ROUND_UP(result, 1000 * 1000); | ||
583 | |||
584 | return result; | ||
585 | } | ||
586 | |||
587 | static void s3c_cpufreq_update_loctkime(void) | ||
588 | { | ||
589 | unsigned int bits = cpu_cur.info->locktime_bits; | ||
590 | u32 rate = (u32)clk_get_rate(_clk_xtal); | ||
591 | u32 val; | ||
592 | |||
593 | if (bits == 0) { | ||
594 | WARN_ON(1); | ||
595 | return; | ||
596 | } | ||
597 | |||
598 | val = calc_locktime(rate, cpu_cur.info->locktime_u) << bits; | ||
599 | val |= calc_locktime(rate, cpu_cur.info->locktime_m); | ||
600 | |||
601 | printk(KERN_INFO "%s: new locktime is 0x%08x\n", __func__, val); | ||
602 | __raw_writel(val, S3C2410_LOCKTIME); | ||
603 | } | ||
604 | |||
605 | static int s3c_cpufreq_build_freq(void) | ||
606 | { | ||
607 | int size, ret; | ||
608 | |||
609 | if (!cpu_cur.info->calc_freqtable) | ||
610 | return -EINVAL; | ||
611 | |||
612 | kfree(ftab); | ||
613 | ftab = NULL; | ||
614 | |||
615 | size = cpu_cur.info->calc_freqtable(&cpu_cur, NULL, 0); | ||
616 | size++; | ||
617 | |||
618 | ftab = kmalloc(sizeof(struct cpufreq_frequency_table) * size, GFP_KERNEL); | ||
619 | if (!ftab) { | ||
620 | printk(KERN_ERR "%s: no memory for tables\n", __func__); | ||
621 | return -ENOMEM; | ||
622 | } | ||
623 | |||
624 | ftab_size = size; | ||
625 | |||
626 | ret = cpu_cur.info->calc_freqtable(&cpu_cur, ftab, size); | ||
627 | s3c_cpufreq_addfreq(ftab, ret, size, CPUFREQ_TABLE_END); | ||
628 | |||
629 | return 0; | ||
630 | } | ||
631 | |||
632 | static int __init s3c_cpufreq_initcall(void) | ||
633 | { | ||
634 | int ret = 0; | ||
635 | |||
636 | if (cpu_cur.info && cpu_cur.board) { | ||
637 | ret = s3c_cpufreq_initclks(); | ||
638 | if (ret) | ||
639 | goto out; | ||
640 | |||
641 | /* get current settings */ | ||
642 | s3c_cpufreq_getcur(&cpu_cur); | ||
643 | s3c_cpufreq_show("cur", &cpu_cur); | ||
644 | |||
645 | if (cpu_cur.board->auto_io) { | ||
646 | ret = s3c_cpufreq_auto_io(); | ||
647 | if (ret) { | ||
648 | printk(KERN_ERR "%s: failed to get io timing\n", | ||
649 | __func__); | ||
650 | goto out; | ||
651 | } | ||
652 | } | ||
653 | |||
654 | if (cpu_cur.board->need_io && !cpu_cur.info->set_iotiming) { | ||
655 | printk(KERN_ERR "%s: no IO support registered\n", | ||
656 | __func__); | ||
657 | ret = -EINVAL; | ||
658 | goto out; | ||
659 | } | ||
660 | |||
661 | if (!cpu_cur.info->need_pll) | ||
662 | cpu_cur.lock_pll = 1; | ||
663 | |||
664 | s3c_cpufreq_update_loctkime(); | ||
665 | |||
666 | s3c_cpufreq_freq_min(&cpu_cur.max, &cpu_cur.board->max, | ||
667 | &cpu_cur.info->max); | ||
668 | |||
669 | if (cpu_cur.info->calc_freqtable) | ||
670 | s3c_cpufreq_build_freq(); | ||
671 | |||
672 | ret = cpufreq_register_driver(&s3c24xx_driver); | ||
673 | } | ||
674 | |||
675 | out: | ||
676 | return ret; | ||
677 | } | ||
678 | |||
679 | late_initcall(s3c_cpufreq_initcall); | ||
680 | |||
681 | /** | ||
682 | * s3c_plltab_register - register CPU PLL table. | ||
683 | * @plls: The list of PLL entries. | ||
684 | * @plls_no: The size of the PLL entries @plls. | ||
685 | * | ||
686 | * Register the given set of PLLs with the system. | ||
687 | */ | ||
688 | int __init s3c_plltab_register(struct cpufreq_frequency_table *plls, | ||
689 | unsigned int plls_no) | ||
690 | { | ||
691 | struct cpufreq_frequency_table *vals; | ||
692 | unsigned int size; | ||
693 | |||
694 | size = sizeof(struct cpufreq_frequency_table) * (plls_no + 1); | ||
695 | |||
696 | vals = kmalloc(size, GFP_KERNEL); | ||
697 | if (vals) { | ||
698 | memcpy(vals, plls, size); | ||
699 | pll_reg = vals; | ||
700 | |||
701 | /* write a terminating entry, we don't store it in the | ||
702 | * table that is stored in the kernel */ | ||
703 | vals += plls_no; | ||
704 | vals->frequency = CPUFREQ_TABLE_END; | ||
705 | |||
706 | printk(KERN_INFO "cpufreq: %d PLL entries\n", plls_no); | ||
707 | } else | ||
708 | printk(KERN_ERR "cpufreq: no memory for PLL tables\n"); | ||
709 | |||
710 | return vals ? 0 : -ENOMEM; | ||
711 | } | ||
diff --git a/arch/arm/mach-s3c24xx/s3c2412.h b/arch/arm/mach-s3c24xx/include/mach/s3c2412.h index 548ced42cbb7..548ced42cbb7 100644 --- a/arch/arm/mach-s3c24xx/s3c2412.h +++ b/arch/arm/mach-s3c24xx/include/mach/s3c2412.h | |||
diff --git a/arch/arm/mach-s3c24xx/iotiming-s3c2412.c b/arch/arm/mach-s3c24xx/iotiming-s3c2412.c index 663436d9db01..bd064c05c473 100644 --- a/arch/arm/mach-s3c24xx/iotiming-s3c2412.c +++ b/arch/arm/mach-s3c24xx/iotiming-s3c2412.c | |||
@@ -31,7 +31,7 @@ | |||
31 | #include <plat/cpu-freq-core.h> | 31 | #include <plat/cpu-freq-core.h> |
32 | #include <plat/clock.h> | 32 | #include <plat/clock.h> |
33 | 33 | ||
34 | #include "s3c2412.h" | 34 | #include <mach/s3c2412.h> |
35 | 35 | ||
36 | #define print_ns(x) ((x) / 10), ((x) % 10) | 36 | #define print_ns(x) ((x) / 10), ((x) % 10) |
37 | 37 | ||
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c index 91052855cc12..b9594e911ce7 100644 --- a/arch/arm/mach-shmobile/board-marzen.c +++ b/arch/arm/mach-shmobile/board-marzen.c | |||
@@ -212,8 +212,8 @@ static struct platform_device *marzen_devices[] __initdata = { | |||
212 | static struct usb_phy *phy; | 212 | static struct usb_phy *phy; |
213 | static int usb_power_on(struct platform_device *pdev) | 213 | static int usb_power_on(struct platform_device *pdev) |
214 | { | 214 | { |
215 | if (!phy) | 215 | if (IS_ERR(phy)) |
216 | return -EIO; | 216 | return PTR_ERR(phy); |
217 | 217 | ||
218 | pm_runtime_enable(&pdev->dev); | 218 | pm_runtime_enable(&pdev->dev); |
219 | pm_runtime_get_sync(&pdev->dev); | 219 | pm_runtime_get_sync(&pdev->dev); |
@@ -225,7 +225,7 @@ static int usb_power_on(struct platform_device *pdev) | |||
225 | 225 | ||
226 | static void usb_power_off(struct platform_device *pdev) | 226 | static void usb_power_off(struct platform_device *pdev) |
227 | { | 227 | { |
228 | if (!phy) | 228 | if (IS_ERR(phy)) |
229 | return; | 229 | return; |
230 | 230 | ||
231 | usb_phy_shutdown(phy); | 231 | usb_phy_shutdown(phy); |
diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c b/arch/arm/mach-shmobile/setup-sh73a0.c index fdf3894b1cc3..9696f3646864 100644 --- a/arch/arm/mach-shmobile/setup-sh73a0.c +++ b/arch/arm/mach-shmobile/setup-sh73a0.c | |||
@@ -252,7 +252,7 @@ static struct sh_timer_config cmt10_platform_data = { | |||
252 | .name = "CMT10", | 252 | .name = "CMT10", |
253 | .channel_offset = 0x10, | 253 | .channel_offset = 0x10, |
254 | .timer_bit = 0, | 254 | .timer_bit = 0, |
255 | .clockevent_rating = 125, | 255 | .clockevent_rating = 80, |
256 | .clocksource_rating = 125, | 256 | .clocksource_rating = 125, |
257 | }; | 257 | }; |
258 | 258 | ||
diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig index 566e804d4036..a279fb315069 100644 --- a/arch/arm/mach-socfpga/Kconfig +++ b/arch/arm/mach-socfpga/Kconfig | |||
@@ -7,7 +7,6 @@ config ARCH_SOCFPGA | |||
7 | select CLKDEV_LOOKUP | 7 | select CLKDEV_LOOKUP |
8 | select COMMON_CLK | 8 | select COMMON_CLK |
9 | select CPU_V7 | 9 | select CPU_V7 |
10 | select DW_APB_TIMER | ||
11 | select DW_APB_TIMER_OF | 10 | select DW_APB_TIMER_OF |
12 | select GENERIC_CLOCKEVENTS | 11 | select GENERIC_CLOCKEVENTS |
13 | select GPIO_PL061 if GPIOLIB | 12 | select GPIO_PL061 if GPIOLIB |
diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c index 46a051359f02..8ea11b472b91 100644 --- a/arch/arm/mach-socfpga/socfpga.c +++ b/arch/arm/mach-socfpga/socfpga.c | |||
@@ -14,7 +14,6 @@ | |||
14 | * You should have received a copy of the GNU General Public License | 14 | * You should have received a copy of the GNU General Public License |
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | */ | 16 | */ |
17 | #include <linux/dw_apb_timer.h> | ||
18 | #include <linux/clk-provider.h> | 17 | #include <linux/clk-provider.h> |
19 | #include <linux/irqchip.h> | 18 | #include <linux/irqchip.h> |
20 | #include <linux/of_address.h> | 19 | #include <linux/of_address.h> |
@@ -120,7 +119,6 @@ DT_MACHINE_START(SOCFPGA, "Altera SOCFPGA") | |||
120 | .smp = smp_ops(socfpga_smp_ops), | 119 | .smp = smp_ops(socfpga_smp_ops), |
121 | .map_io = socfpga_map_io, | 120 | .map_io = socfpga_map_io, |
122 | .init_irq = socfpga_init_irq, | 121 | .init_irq = socfpga_init_irq, |
123 | .init_time = dw_apb_timer_init, | ||
124 | .init_machine = socfpga_cyclone5_init, | 122 | .init_machine = socfpga_cyclone5_init, |
125 | .restart = socfpga_cyclone5_restart, | 123 | .restart = socfpga_cyclone5_restart, |
126 | .dt_compat = altera_dt_match, | 124 | .dt_compat = altera_dt_match, |
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig index d259c782d742..5b045e302b43 100644 --- a/arch/arm/mach-sunxi/Kconfig +++ b/arch/arm/mach-sunxi/Kconfig | |||
@@ -1,5 +1,6 @@ | |||
1 | config ARCH_SUNXI | 1 | config ARCH_SUNXI |
2 | bool "Allwinner A1X SOCs" if ARCH_MULTI_V7 | 2 | bool "Allwinner A1X SOCs" if ARCH_MULTI_V7 |
3 | select ARCH_REQUIRE_GPIOLIB | ||
3 | select CLKSRC_MMIO | 4 | select CLKSRC_MMIO |
4 | select CLKSRC_OF | 5 | select CLKSRC_OF |
5 | select COMMON_CLK | 6 | select COMMON_CLK |
diff --git a/arch/arm/mach-tegra/tegra2_emc.c b/arch/arm/mach-tegra/tegra2_emc.c index 9e8bdfa2b369..31e69a019bdd 100644 --- a/arch/arm/mach-tegra/tegra2_emc.c +++ b/arch/arm/mach-tegra/tegra2_emc.c | |||
@@ -307,11 +307,6 @@ static int tegra_emc_probe(struct platform_device *pdev) | |||
307 | } | 307 | } |
308 | 308 | ||
309 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 309 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
310 | if (!res) { | ||
311 | dev_err(&pdev->dev, "missing register base\n"); | ||
312 | return -ENOMEM; | ||
313 | } | ||
314 | |||
315 | emc_regbase = devm_ioremap_resource(&pdev->dev, res); | 310 | emc_regbase = devm_ioremap_resource(&pdev->dev, res); |
316 | if (IS_ERR(emc_regbase)) | 311 | if (IS_ERR(emc_regbase)) |
317 | return PTR_ERR(emc_regbase); | 312 | return PTR_ERR(emc_regbase); |
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index 6a4387e39df8..b19b07204aaf 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig | |||
@@ -51,6 +51,7 @@ config MACH_MOP500 | |||
51 | bool "U8500 Development platform, MOP500 versions" | 51 | bool "U8500 Development platform, MOP500 versions" |
52 | select I2C | 52 | select I2C |
53 | select I2C_NOMADIK | 53 | select I2C_NOMADIK |
54 | select REGULATOR | ||
54 | select REGULATOR_FIXED_VOLTAGE | 55 | select REGULATOR_FIXED_VOLTAGE |
55 | select SOC_BUS | 56 | select SOC_BUS |
56 | select UX500_SOC_DB8500 | 57 | select UX500_SOC_DB8500 |
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c index 33c353bc1c4a..d6b7c8556fa1 100644 --- a/arch/arm/mach-ux500/board-mop500-regulators.c +++ b/arch/arm/mach-ux500/board-mop500-regulators.c | |||
@@ -374,6 +374,7 @@ static struct ab8500_regulator_reg_init ab8500_reg_init[] = { | |||
374 | static struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { | 374 | static struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { |
375 | /* supplies to the display/camera */ | 375 | /* supplies to the display/camera */ |
376 | [AB8500_LDO_AUX1] = { | 376 | [AB8500_LDO_AUX1] = { |
377 | .supply_regulator = "ab8500-ext-supply3", | ||
377 | .constraints = { | 378 | .constraints = { |
378 | .name = "V-DISPLAY", | 379 | .name = "V-DISPLAY", |
379 | .min_uV = 2800000, | 380 | .min_uV = 2800000, |
@@ -387,6 +388,7 @@ static struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { | |||
387 | }, | 388 | }, |
388 | /* supplies to the on-board eMMC */ | 389 | /* supplies to the on-board eMMC */ |
389 | [AB8500_LDO_AUX2] = { | 390 | [AB8500_LDO_AUX2] = { |
391 | .supply_regulator = "ab8500-ext-supply3", | ||
390 | .constraints = { | 392 | .constraints = { |
391 | .name = "V-eMMC1", | 393 | .name = "V-eMMC1", |
392 | .min_uV = 1100000, | 394 | .min_uV = 1100000, |
@@ -402,6 +404,7 @@ static struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { | |||
402 | }, | 404 | }, |
403 | /* supply for VAUX3, supplies to SDcard slots */ | 405 | /* supply for VAUX3, supplies to SDcard slots */ |
404 | [AB8500_LDO_AUX3] = { | 406 | [AB8500_LDO_AUX3] = { |
407 | .supply_regulator = "ab8500-ext-supply3", | ||
405 | .constraints = { | 408 | .constraints = { |
406 | .name = "V-MMC-SD", | 409 | .name = "V-MMC-SD", |
407 | .min_uV = 1100000, | 410 | .min_uV = 1100000, |
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index fcf06accb66c..2d70e2b45660 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -584,7 +584,7 @@ static void __init mop500_init_machine(void) | |||
584 | sdi0_reg_info.gpios[0].gpio = GPIO_SDMMC_1V8_3V_SEL; | 584 | sdi0_reg_info.gpios[0].gpio = GPIO_SDMMC_1V8_3V_SEL; |
585 | 585 | ||
586 | mop500_pinmaps_init(); | 586 | mop500_pinmaps_init(); |
587 | parent = u8500_init_devices(&ab8500_platdata); | 587 | parent = u8500_init_devices(); |
588 | 588 | ||
589 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | 589 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) |
590 | mop500_platform_devs[i]->dev.parent = parent; | 590 | mop500_platform_devs[i]->dev.parent = parent; |
@@ -621,7 +621,7 @@ static void __init snowball_init_machine(void) | |||
621 | sdi0_reg_info.gpios[0].gpio = SNOWBALL_SDMMC_1V8_3V_GPIO; | 621 | sdi0_reg_info.gpios[0].gpio = SNOWBALL_SDMMC_1V8_3V_GPIO; |
622 | 622 | ||
623 | snowball_pinmaps_init(); | 623 | snowball_pinmaps_init(); |
624 | parent = u8500_init_devices(&ab8500_platdata); | 624 | parent = u8500_init_devices(); |
625 | 625 | ||
626 | for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++) | 626 | for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++) |
627 | snowball_platform_devs[i]->dev.parent = parent; | 627 | snowball_platform_devs[i]->dev.parent = parent; |
@@ -661,7 +661,7 @@ static void __init hrefv60_init_machine(void) | |||
661 | sdi0_reg_info.gpios[0].gpio = HREFV60_SDMMC_1V8_3V_GPIO; | 661 | sdi0_reg_info.gpios[0].gpio = HREFV60_SDMMC_1V8_3V_GPIO; |
662 | 662 | ||
663 | hrefv60_pinmaps_init(); | 663 | hrefv60_pinmaps_init(); |
664 | parent = u8500_init_devices(&ab8500_platdata); | 664 | parent = u8500_init_devices(); |
665 | 665 | ||
666 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | 666 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) |
667 | mop500_platform_devs[i]->dev.parent = parent; | 667 | mop500_platform_devs[i]->dev.parent = parent; |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index a40afd9d6e92..f63847dabe7d 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -195,7 +195,7 @@ static struct device * __init db8500_soc_device_init(void) | |||
195 | /* | 195 | /* |
196 | * This function is called from the board init | 196 | * This function is called from the board init |
197 | */ | 197 | */ |
198 | struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500) | 198 | struct device * __init u8500_init_devices(void) |
199 | { | 199 | { |
200 | struct device *parent; | 200 | struct device *parent; |
201 | int i; | 201 | int i; |
@@ -209,8 +209,6 @@ struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500) | |||
209 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) | 209 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) |
210 | platform_devs[i]->dev.parent = parent; | 210 | platform_devs[i]->dev.parent = parent; |
211 | 211 | ||
212 | db8500_prcmu_device.dev.platform_data = ab8500; | ||
213 | |||
214 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); | 212 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); |
215 | 213 | ||
216 | return parent; | 214 | return parent; |
@@ -246,7 +244,7 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | |||
246 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL), | 244 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL), |
247 | OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu", | 245 | OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu", |
248 | &db8500_prcmu_pdata), | 246 | &db8500_prcmu_pdata), |
249 | OF_DEV_AUXDATA("smsc,lan9115", 0x50000000, "smsc911x", NULL), | 247 | OF_DEV_AUXDATA("smsc,lan9115", 0x50000000, "smsc911x.0", NULL), |
250 | /* Requires device name bindings. */ | 248 | /* Requires device name bindings. */ |
251 | OF_DEV_AUXDATA("stericsson,nmk-pinctrl", U8500_PRCMU_BASE, | 249 | OF_DEV_AUXDATA("stericsson,nmk-pinctrl", U8500_PRCMU_BASE, |
252 | "pinctrl-db8500", NULL), | 250 | "pinctrl-db8500", NULL), |
diff --git a/arch/arm/mach-ux500/cpuidle.c b/arch/arm/mach-ux500/cpuidle.c index 317a2be129fb..a45dd09daed9 100644 --- a/arch/arm/mach-ux500/cpuidle.c +++ b/arch/arm/mach-ux500/cpuidle.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <asm/proc-fns.h> | 21 | #include <asm/proc-fns.h> |
22 | 22 | ||
23 | #include "db8500-regs.h" | 23 | #include "db8500-regs.h" |
24 | #include "id.h" | ||
24 | 25 | ||
25 | static atomic_t master = ATOMIC_INIT(0); | 26 | static atomic_t master = ATOMIC_INIT(0); |
26 | static DEFINE_SPINLOCK(master_lock); | 27 | static DEFINE_SPINLOCK(master_lock); |
@@ -114,6 +115,9 @@ static struct cpuidle_driver ux500_idle_driver = { | |||
114 | 115 | ||
115 | int __init ux500_idle_init(void) | 116 | int __init ux500_idle_init(void) |
116 | { | 117 | { |
118 | if (!(cpu_is_u8500_family() || cpu_is_ux540_family())) | ||
119 | return -ENODEV; | ||
120 | |||
117 | /* Configure wake up reasons */ | 121 | /* Configure wake up reasons */ |
118 | prcmu_enable_wakeups(PRCMU_WAKEUP(ARM) | PRCMU_WAKEUP(RTC) | | 122 | prcmu_enable_wakeups(PRCMU_WAKEUP(ARM) | PRCMU_WAKEUP(RTC) | |
119 | PRCMU_WAKEUP(ABB)); | 123 | PRCMU_WAKEUP(ABB)); |
diff --git a/arch/arm/mach-ux500/setup.h b/arch/arm/mach-ux500/setup.h index bddce2b49372..cad3ca86c540 100644 --- a/arch/arm/mach-ux500/setup.h +++ b/arch/arm/mach-ux500/setup.h | |||
@@ -18,7 +18,7 @@ | |||
18 | void __init ux500_map_io(void); | 18 | void __init ux500_map_io(void); |
19 | extern void __init u8500_map_io(void); | 19 | extern void __init u8500_map_io(void); |
20 | 20 | ||
21 | extern struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500); | 21 | extern struct device * __init u8500_init_devices(void); |
22 | 22 | ||
23 | extern void __init ux500_init_irq(void); | 23 | extern void __init ux500_init_irq(void); |
24 | extern void __init ux500_init_late(void); | 24 | extern void __init ux500_init_late(void); |
diff --git a/arch/arm/mach-vt8500/vt8500.c b/arch/arm/mach-vt8500/vt8500.c index 1dd281efc020..f5c33df7a597 100644 --- a/arch/arm/mach-vt8500/vt8500.c +++ b/arch/arm/mach-vt8500/vt8500.c | |||
@@ -173,6 +173,7 @@ static const char * const vt8500_dt_compat[] = { | |||
173 | "wm,wm8505", | 173 | "wm,wm8505", |
174 | "wm,wm8750", | 174 | "wm,wm8750", |
175 | "wm,wm8850", | 175 | "wm,wm8850", |
176 | NULL | ||
176 | }; | 177 | }; |
177 | 178 | ||
178 | DT_MACHINE_START(WMT_DT, "VIA/Wondermedia SoC (Device Tree Support)") | 179 | DT_MACHINE_START(WMT_DT, "VIA/Wondermedia SoC (Device Tree Support)") |
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c index 251f827271e9..c019b7aaf776 100644 --- a/arch/arm/plat-orion/common.c +++ b/arch/arm/plat-orion/common.c | |||
@@ -383,7 +383,7 @@ static struct resource orion_ge10_shared_resources[] = { | |||
383 | 383 | ||
384 | static struct platform_device orion_ge10_shared = { | 384 | static struct platform_device orion_ge10_shared = { |
385 | .name = MV643XX_ETH_SHARED_NAME, | 385 | .name = MV643XX_ETH_SHARED_NAME, |
386 | .id = 1, | 386 | .id = 2, |
387 | .dev = { | 387 | .dev = { |
388 | .platform_data = &orion_ge10_shared_data, | 388 | .platform_data = &orion_ge10_shared_data, |
389 | }, | 389 | }, |
@@ -398,8 +398,8 @@ static struct resource orion_ge10_resources[] = { | |||
398 | 398 | ||
399 | static struct platform_device orion_ge10 = { | 399 | static struct platform_device orion_ge10 = { |
400 | .name = MV643XX_ETH_NAME, | 400 | .name = MV643XX_ETH_NAME, |
401 | .id = 1, | 401 | .id = 2, |
402 | .num_resources = 2, | 402 | .num_resources = 1, |
403 | .resource = orion_ge10_resources, | 403 | .resource = orion_ge10_resources, |
404 | .dev = { | 404 | .dev = { |
405 | .coherent_dma_mask = DMA_BIT_MASK(32), | 405 | .coherent_dma_mask = DMA_BIT_MASK(32), |
@@ -432,7 +432,7 @@ static struct resource orion_ge11_shared_resources[] = { | |||
432 | 432 | ||
433 | static struct platform_device orion_ge11_shared = { | 433 | static struct platform_device orion_ge11_shared = { |
434 | .name = MV643XX_ETH_SHARED_NAME, | 434 | .name = MV643XX_ETH_SHARED_NAME, |
435 | .id = 1, | 435 | .id = 3, |
436 | .dev = { | 436 | .dev = { |
437 | .platform_data = &orion_ge11_shared_data, | 437 | .platform_data = &orion_ge11_shared_data, |
438 | }, | 438 | }, |
@@ -447,8 +447,8 @@ static struct resource orion_ge11_resources[] = { | |||
447 | 447 | ||
448 | static struct platform_device orion_ge11 = { | 448 | static struct platform_device orion_ge11 = { |
449 | .name = MV643XX_ETH_NAME, | 449 | .name = MV643XX_ETH_NAME, |
450 | .id = 1, | 450 | .id = 3, |
451 | .num_resources = 2, | 451 | .num_resources = 1, |
452 | .resource = orion_ge11_resources, | 452 | .resource = orion_ge11_resources, |
453 | .dev = { | 453 | .dev = { |
454 | .coherent_dma_mask = DMA_BIT_MASK(32), | 454 | .coherent_dma_mask = DMA_BIT_MASK(32), |
diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h index e06fc5fefa14..d9a24f605a2b 100644 --- a/arch/arm/plat-orion/include/plat/common.h +++ b/arch/arm/plat-orion/include/plat/common.h | |||
@@ -10,6 +10,7 @@ | |||
10 | 10 | ||
11 | #ifndef __PLAT_COMMON_H | 11 | #ifndef __PLAT_COMMON_H |
12 | #include <linux/mv643xx_eth.h> | 12 | #include <linux/mv643xx_eth.h> |
13 | #include <linux/platform_data/usb-ehci-orion.h> | ||
13 | 14 | ||
14 | struct dsa_platform_data; | 15 | struct dsa_platform_data; |
15 | struct mv_sata_platform_data; | 16 | struct mv_sata_platform_data; |
diff --git a/arch/arm/plat-samsung/adc.c b/arch/arm/plat-samsung/adc.c index ca07cb1b155a..79690f2f6d3f 100644 --- a/arch/arm/plat-samsung/adc.c +++ b/arch/arm/plat-samsung/adc.c | |||
@@ -381,11 +381,6 @@ static int s3c_adc_probe(struct platform_device *pdev) | |||
381 | } | 381 | } |
382 | 382 | ||
383 | regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 383 | regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
384 | if (!regs) { | ||
385 | dev_err(dev, "failed to find registers\n"); | ||
386 | return -ENXIO; | ||
387 | } | ||
388 | |||
389 | adc->regs = devm_ioremap_resource(dev, regs); | 384 | adc->regs = devm_ioremap_resource(dev, regs); |
390 | if (IS_ERR(adc->regs)) | 385 | if (IS_ERR(adc->regs)) |
391 | return PTR_ERR(adc->regs); | 386 | return PTR_ERR(adc->regs); |
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c index 30c2fe243f76..0f9c3f431a5f 100644 --- a/arch/arm/plat-samsung/devs.c +++ b/arch/arm/plat-samsung/devs.c | |||
@@ -311,9 +311,9 @@ struct platform_device s5p_device_jpeg = { | |||
311 | #ifdef CONFIG_S5P_DEV_FIMD0 | 311 | #ifdef CONFIG_S5P_DEV_FIMD0 |
312 | static struct resource s5p_fimd0_resource[] = { | 312 | static struct resource s5p_fimd0_resource[] = { |
313 | [0] = DEFINE_RES_MEM(S5P_PA_FIMD0, SZ_32K), | 313 | [0] = DEFINE_RES_MEM(S5P_PA_FIMD0, SZ_32K), |
314 | [1] = DEFINE_RES_IRQ(IRQ_FIMD0_VSYNC), | 314 | [1] = DEFINE_RES_IRQ_NAMED(IRQ_FIMD0_VSYNC, "vsync"), |
315 | [2] = DEFINE_RES_IRQ(IRQ_FIMD0_FIFO), | 315 | [2] = DEFINE_RES_IRQ_NAMED(IRQ_FIMD0_FIFO, "fifo"), |
316 | [3] = DEFINE_RES_IRQ(IRQ_FIMD0_SYSTEM), | 316 | [3] = DEFINE_RES_IRQ_NAMED(IRQ_FIMD0_SYSTEM, "lcd_sys"), |
317 | }; | 317 | }; |
318 | 318 | ||
319 | struct platform_device s5p_device_fimd0 = { | 319 | struct platform_device s5p_device_fimd0 = { |
diff --git a/arch/arm/plat-samsung/include/plat/cpu-freq-core.h b/arch/arm/plat-samsung/include/plat/cpu-freq-core.h index 95509d8eb140..d7e17150028a 100644 --- a/arch/arm/plat-samsung/include/plat/cpu-freq-core.h +++ b/arch/arm/plat-samsung/include/plat/cpu-freq-core.h | |||
@@ -202,7 +202,7 @@ extern int s3c_plltab_register(struct cpufreq_frequency_table *plls, | |||
202 | extern struct s3c_cpufreq_config *s3c_cpufreq_getconfig(void); | 202 | extern struct s3c_cpufreq_config *s3c_cpufreq_getconfig(void); |
203 | extern struct s3c_iotimings *s3c_cpufreq_getiotimings(void); | 203 | extern struct s3c_iotimings *s3c_cpufreq_getiotimings(void); |
204 | 204 | ||
205 | #ifdef CONFIG_CPU_FREQ_S3C24XX_DEBUGFS | 205 | #ifdef CONFIG_ARM_S3C24XX_CPUFREQ_DEBUGFS |
206 | #define s3c_cpufreq_debugfs_call(x) x | 206 | #define s3c_cpufreq_debugfs_call(x) x |
207 | #else | 207 | #else |
208 | #define s3c_cpufreq_debugfs_call(x) NULL | 208 | #define s3c_cpufreq_debugfs_call(x) NULL |
@@ -259,17 +259,17 @@ extern void s3c2412_iotiming_set(struct s3c_cpufreq_config *cfg, | |||
259 | #define s3c2412_iotiming_set NULL | 259 | #define s3c2412_iotiming_set NULL |
260 | #endif /* CONFIG_S3C2412_IOTIMING */ | 260 | #endif /* CONFIG_S3C2412_IOTIMING */ |
261 | 261 | ||
262 | #ifdef CONFIG_CPU_FREQ_S3C24XX_DEBUG | 262 | #ifdef CONFIG_ARM_S3C24XX_CPUFREQ_DEBUG |
263 | #define s3c_freq_dbg(x...) printk(KERN_INFO x) | 263 | #define s3c_freq_dbg(x...) printk(KERN_INFO x) |
264 | #else | 264 | #else |
265 | #define s3c_freq_dbg(x...) do { if (0) printk(x); } while (0) | 265 | #define s3c_freq_dbg(x...) do { if (0) printk(x); } while (0) |
266 | #endif /* CONFIG_CPU_FREQ_S3C24XX_DEBUG */ | 266 | #endif /* CONFIG_ARM_S3C24XX_CPUFREQ_DEBUG */ |
267 | 267 | ||
268 | #ifdef CONFIG_CPU_FREQ_S3C24XX_IODEBUG | 268 | #ifdef CONFIG_ARM_S3C24XX_CPUFREQ_IODEBUG |
269 | #define s3c_freq_iodbg(x...) printk(KERN_INFO x) | 269 | #define s3c_freq_iodbg(x...) printk(KERN_INFO x) |
270 | #else | 270 | #else |
271 | #define s3c_freq_iodbg(x...) do { if (0) printk(x); } while (0) | 271 | #define s3c_freq_iodbg(x...) do { if (0) printk(x); } while (0) |
272 | #endif /* CONFIG_CPU_FREQ_S3C24XX_IODEBUG */ | 272 | #endif /* CONFIG_ARM_S3C24XX_CPUFREQ_IODEBUG */ |
273 | 273 | ||
274 | static inline int s3c_cpufreq_addfreq(struct cpufreq_frequency_table *table, | 274 | static inline int s3c_cpufreq_addfreq(struct cpufreq_frequency_table *table, |
275 | int index, size_t table_size, | 275 | int index, size_t table_size, |
diff --git a/arch/arm/plat-samsung/include/plat/cpu-freq.h b/arch/arm/plat-samsung/include/plat/cpu-freq.h index 80c4a809c721..85517ab962ae 100644 --- a/arch/arm/plat-samsung/include/plat/cpu-freq.h +++ b/arch/arm/plat-samsung/include/plat/cpu-freq.h | |||
@@ -126,7 +126,7 @@ struct s3c_cpufreq_board { | |||
126 | }; | 126 | }; |
127 | 127 | ||
128 | /* Things depending on frequency scaling. */ | 128 | /* Things depending on frequency scaling. */ |
129 | #ifdef CONFIG_CPU_FREQ_S3C | 129 | #ifdef CONFIG_ARM_S3C_CPUFREQ |
130 | #define __init_or_cpufreq | 130 | #define __init_or_cpufreq |
131 | #else | 131 | #else |
132 | #define __init_or_cpufreq __init | 132 | #define __init_or_cpufreq __init |
@@ -134,7 +134,7 @@ struct s3c_cpufreq_board { | |||
134 | 134 | ||
135 | /* Board functions */ | 135 | /* Board functions */ |
136 | 136 | ||
137 | #ifdef CONFIG_CPU_FREQ_S3C | 137 | #ifdef CONFIG_ARM_S3C_CPUFREQ |
138 | extern int s3c_cpufreq_setboard(struct s3c_cpufreq_board *board); | 138 | extern int s3c_cpufreq_setboard(struct s3c_cpufreq_board *board); |
139 | #else | 139 | #else |
140 | 140 | ||
@@ -142,4 +142,4 @@ static inline int s3c_cpufreq_setboard(struct s3c_cpufreq_board *board) | |||
142 | { | 142 | { |
143 | return 0; | 143 | return 0; |
144 | } | 144 | } |
145 | #endif /* CONFIG_CPU_FREQ_S3C */ | 145 | #endif /* CONFIG_ARM_S3C_CPUFREQ */ |
diff --git a/arch/arm/plat-samsung/include/plat/uncompress.h b/arch/arm/plat-samsung/include/plat/uncompress.h index 438b24846e7f..02b66d723d1a 100644 --- a/arch/arm/plat-samsung/include/plat/uncompress.h +++ b/arch/arm/plat-samsung/include/plat/uncompress.h | |||
@@ -66,6 +66,9 @@ uart_rd(unsigned int reg) | |||
66 | 66 | ||
67 | static void putc(int ch) | 67 | static void putc(int ch) |
68 | { | 68 | { |
69 | if (!config_enabled(CONFIG_DEBUG_LL)) | ||
70 | return; | ||
71 | |||
69 | if (uart_rd(S3C2410_UFCON) & S3C2410_UFCON_FIFOMODE) { | 72 | if (uart_rd(S3C2410_UFCON) & S3C2410_UFCON_FIFOMODE) { |
70 | int level; | 73 | int level; |
71 | 74 | ||
@@ -118,7 +121,12 @@ static void arch_decomp_error(const char *x) | |||
118 | #ifdef CONFIG_S3C_BOOT_UART_FORCE_FIFO | 121 | #ifdef CONFIG_S3C_BOOT_UART_FORCE_FIFO |
119 | static inline void arch_enable_uart_fifo(void) | 122 | static inline void arch_enable_uart_fifo(void) |
120 | { | 123 | { |
121 | u32 fifocon = uart_rd(S3C2410_UFCON); | 124 | u32 fifocon; |
125 | |||
126 | if (!config_enabled(CONFIG_DEBUG_LL)) | ||
127 | return; | ||
128 | |||
129 | fifocon = uart_rd(S3C2410_UFCON); | ||
122 | 130 | ||
123 | if (!(fifocon & S3C2410_UFCON_FIFOMODE)) { | 131 | if (!(fifocon & S3C2410_UFCON_FIFOMODE)) { |
124 | fifocon |= S3C2410_UFCON_RESETBOTH; | 132 | fifocon |= S3C2410_UFCON_RESETBOTH; |
diff --git a/arch/arm/vfp/entry.S b/arch/arm/vfp/entry.S index 323ce1a62bbf..46e17492fd1f 100644 --- a/arch/arm/vfp/entry.S +++ b/arch/arm/vfp/entry.S | |||
@@ -60,7 +60,7 @@ ENTRY(vfp_testing_entry) | |||
60 | str r11, [r10, #TI_PREEMPT] | 60 | str r11, [r10, #TI_PREEMPT] |
61 | #endif | 61 | #endif |
62 | ldr r0, VFP_arch_address | 62 | ldr r0, VFP_arch_address |
63 | str r5, [r0] @ known non-zero value | 63 | str r0, [r0] @ set to non-zero value |
64 | mov pc, r9 @ we have handled the fault | 64 | mov pc, r9 @ we have handled the fault |
65 | ENDPROC(vfp_testing_entry) | 65 | ENDPROC(vfp_testing_entry) |
66 | 66 | ||
diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c index d30042e39974..13609e01f4b7 100644 --- a/arch/arm/xen/enlighten.c +++ b/arch/arm/xen/enlighten.c | |||
@@ -152,11 +152,12 @@ int xen_unmap_domain_mfn_range(struct vm_area_struct *vma, | |||
152 | } | 152 | } |
153 | EXPORT_SYMBOL_GPL(xen_unmap_domain_mfn_range); | 153 | EXPORT_SYMBOL_GPL(xen_unmap_domain_mfn_range); |
154 | 154 | ||
155 | static int __init xen_secondary_init(unsigned int cpu) | 155 | static void __init xen_percpu_init(void *unused) |
156 | { | 156 | { |
157 | struct vcpu_register_vcpu_info info; | 157 | struct vcpu_register_vcpu_info info; |
158 | struct vcpu_info *vcpup; | 158 | struct vcpu_info *vcpup; |
159 | int err; | 159 | int err; |
160 | int cpu = get_cpu(); | ||
160 | 161 | ||
161 | pr_info("Xen: initializing cpu%d\n", cpu); | 162 | pr_info("Xen: initializing cpu%d\n", cpu); |
162 | vcpup = per_cpu_ptr(xen_vcpu_info, cpu); | 163 | vcpup = per_cpu_ptr(xen_vcpu_info, cpu); |
@@ -165,14 +166,10 @@ static int __init xen_secondary_init(unsigned int cpu) | |||
165 | info.offset = offset_in_page(vcpup); | 166 | info.offset = offset_in_page(vcpup); |
166 | 167 | ||
167 | err = HYPERVISOR_vcpu_op(VCPUOP_register_vcpu_info, cpu, &info); | 168 | err = HYPERVISOR_vcpu_op(VCPUOP_register_vcpu_info, cpu, &info); |
168 | if (err) { | 169 | BUG_ON(err); |
169 | pr_debug("register_vcpu_info failed: err=%d\n", err); | 170 | per_cpu(xen_vcpu, cpu) = vcpup; |
170 | } else { | 171 | |
171 | /* This cpu is using the registered vcpu info, even if | 172 | enable_percpu_irq(xen_events_irq, 0); |
172 | later ones fail to. */ | ||
173 | per_cpu(xen_vcpu, cpu) = vcpup; | ||
174 | } | ||
175 | return 0; | ||
176 | } | 173 | } |
177 | 174 | ||
178 | static void xen_restart(char str, const char *cmd) | 175 | static void xen_restart(char str, const char *cmd) |
@@ -208,7 +205,6 @@ static int __init xen_guest_init(void) | |||
208 | const char *version = NULL; | 205 | const char *version = NULL; |
209 | const char *xen_prefix = "xen,xen-"; | 206 | const char *xen_prefix = "xen,xen-"; |
210 | struct resource res; | 207 | struct resource res; |
211 | int i; | ||
212 | 208 | ||
213 | node = of_find_compatible_node(NULL, NULL, "xen,xen"); | 209 | node = of_find_compatible_node(NULL, NULL, "xen,xen"); |
214 | if (!node) { | 210 | if (!node) { |
@@ -265,19 +261,23 @@ static int __init xen_guest_init(void) | |||
265 | sizeof(struct vcpu_info)); | 261 | sizeof(struct vcpu_info)); |
266 | if (xen_vcpu_info == NULL) | 262 | if (xen_vcpu_info == NULL) |
267 | return -ENOMEM; | 263 | return -ENOMEM; |
268 | for_each_online_cpu(i) | ||
269 | xen_secondary_init(i); | ||
270 | 264 | ||
271 | gnttab_init(); | 265 | gnttab_init(); |
272 | if (!xen_initial_domain()) | 266 | if (!xen_initial_domain()) |
273 | xenbus_probe(NULL); | 267 | xenbus_probe(NULL); |
274 | 268 | ||
269 | return 0; | ||
270 | } | ||
271 | core_initcall(xen_guest_init); | ||
272 | |||
273 | static int __init xen_pm_init(void) | ||
274 | { | ||
275 | pm_power_off = xen_power_off; | 275 | pm_power_off = xen_power_off; |
276 | arm_pm_restart = xen_restart; | 276 | arm_pm_restart = xen_restart; |
277 | 277 | ||
278 | return 0; | 278 | return 0; |
279 | } | 279 | } |
280 | core_initcall(xen_guest_init); | 280 | subsys_initcall(xen_pm_init); |
281 | 281 | ||
282 | static irqreturn_t xen_arm_callback(int irq, void *arg) | 282 | static irqreturn_t xen_arm_callback(int irq, void *arg) |
283 | { | 283 | { |
@@ -285,11 +285,6 @@ static irqreturn_t xen_arm_callback(int irq, void *arg) | |||
285 | return IRQ_HANDLED; | 285 | return IRQ_HANDLED; |
286 | } | 286 | } |
287 | 287 | ||
288 | static __init void xen_percpu_enable_events(void *unused) | ||
289 | { | ||
290 | enable_percpu_irq(xen_events_irq, 0); | ||
291 | } | ||
292 | |||
293 | static int __init xen_init_events(void) | 288 | static int __init xen_init_events(void) |
294 | { | 289 | { |
295 | if (!xen_domain() || xen_events_irq < 0) | 290 | if (!xen_domain() || xen_events_irq < 0) |
@@ -303,7 +298,7 @@ static int __init xen_init_events(void) | |||
303 | return -EINVAL; | 298 | return -EINVAL; |
304 | } | 299 | } |
305 | 300 | ||
306 | on_each_cpu(xen_percpu_enable_events, NULL, 0); | 301 | on_each_cpu(xen_percpu_init, NULL, 0); |
307 | 302 | ||
308 | return 0; | 303 | return 0; |
309 | } | 304 | } |
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 48347dcf0566..56b3f6d447ae 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig | |||
@@ -122,8 +122,6 @@ endmenu | |||
122 | 122 | ||
123 | menu "Kernel Features" | 123 | menu "Kernel Features" |
124 | 124 | ||
125 | source "kernel/time/Kconfig" | ||
126 | |||
127 | config ARM64_64K_PAGES | 125 | config ARM64_64K_PAGES |
128 | bool "Enable 64KB pages support" | 126 | bool "Enable 64KB pages support" |
129 | help | 127 | help |
diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h index c8eedc604984..5aceb83b3f5c 100644 --- a/arch/arm64/include/asm/assembler.h +++ b/arch/arm64/include/asm/assembler.h | |||
@@ -82,7 +82,7 @@ | |||
82 | 82 | ||
83 | .macro enable_dbg_if_not_stepping, tmp | 83 | .macro enable_dbg_if_not_stepping, tmp |
84 | mrs \tmp, mdscr_el1 | 84 | mrs \tmp, mdscr_el1 |
85 | tbnz \tmp, #1, 9990f | 85 | tbnz \tmp, #0, 9990f |
86 | enable_dbg | 86 | enable_dbg |
87 | 9990: | 87 | 9990: |
88 | .endm | 88 | .endm |
diff --git a/arch/arm64/kernel/arm64ksyms.c b/arch/arm64/kernel/arm64ksyms.c index 7df1aad29b67..41b4f626d554 100644 --- a/arch/arm64/kernel/arm64ksyms.c +++ b/arch/arm64/kernel/arm64ksyms.c | |||
@@ -34,6 +34,7 @@ EXPORT_SYMBOL(__strnlen_user); | |||
34 | EXPORT_SYMBOL(__strncpy_from_user); | 34 | EXPORT_SYMBOL(__strncpy_from_user); |
35 | 35 | ||
36 | EXPORT_SYMBOL(copy_page); | 36 | EXPORT_SYMBOL(copy_page); |
37 | EXPORT_SYMBOL(clear_page); | ||
37 | 38 | ||
38 | EXPORT_SYMBOL(__copy_from_user); | 39 | EXPORT_SYMBOL(__copy_from_user); |
39 | EXPORT_SYMBOL(__copy_to_user); | 40 | EXPORT_SYMBOL(__copy_to_user); |
diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c index 0c3ba9f51376..f4726dc054b3 100644 --- a/arch/arm64/kernel/debug-monitors.c +++ b/arch/arm64/kernel/debug-monitors.c | |||
@@ -136,8 +136,6 @@ void disable_debug_monitors(enum debug_el el) | |||
136 | */ | 136 | */ |
137 | static void clear_os_lock(void *unused) | 137 | static void clear_os_lock(void *unused) |
138 | { | 138 | { |
139 | asm volatile("msr mdscr_el1, %0" : : "r" (0)); | ||
140 | isb(); | ||
141 | asm volatile("msr oslar_el1, %0" : : "r" (0)); | 139 | asm volatile("msr oslar_el1, %0" : : "r" (0)); |
142 | isb(); | 140 | isb(); |
143 | } | 141 | } |
diff --git a/arch/arm64/kernel/early_printk.c b/arch/arm64/kernel/early_printk.c index ac974f48a7a2..fbb6e1843659 100644 --- a/arch/arm64/kernel/early_printk.c +++ b/arch/arm64/kernel/early_printk.c | |||
@@ -95,7 +95,7 @@ static void early_write(struct console *con, const char *s, unsigned n) | |||
95 | } | 95 | } |
96 | } | 96 | } |
97 | 97 | ||
98 | static struct console early_console = { | 98 | static struct console early_console_dev = { |
99 | .name = "earlycon", | 99 | .name = "earlycon", |
100 | .write = early_write, | 100 | .write = early_write, |
101 | .flags = CON_PRINTBUFFER | CON_BOOT, | 101 | .flags = CON_PRINTBUFFER | CON_BOOT, |
@@ -145,7 +145,8 @@ static int __init setup_early_printk(char *buf) | |||
145 | early_base = early_io_map(paddr, EARLYCON_IOBASE); | 145 | early_base = early_io_map(paddr, EARLYCON_IOBASE); |
146 | 146 | ||
147 | printch = match->printch; | 147 | printch = match->printch; |
148 | register_console(&early_console); | 148 | early_console = &early_console_dev; |
149 | register_console(&early_console_dev); | ||
149 | 150 | ||
150 | return 0; | 151 | return 0; |
151 | } | 152 | } |
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index c7e047049f2c..1d1314280a03 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S | |||
@@ -390,6 +390,16 @@ el0_sync_compat: | |||
390 | b.eq el0_fpsimd_exc | 390 | b.eq el0_fpsimd_exc |
391 | cmp x24, #ESR_EL1_EC_UNKNOWN // unknown exception in EL0 | 391 | cmp x24, #ESR_EL1_EC_UNKNOWN // unknown exception in EL0 |
392 | b.eq el0_undef | 392 | b.eq el0_undef |
393 | cmp x24, #ESR_EL1_EC_CP15_32 // CP15 MRC/MCR trap | ||
394 | b.eq el0_undef | ||
395 | cmp x24, #ESR_EL1_EC_CP15_64 // CP15 MRRC/MCRR trap | ||
396 | b.eq el0_undef | ||
397 | cmp x24, #ESR_EL1_EC_CP14_MR // CP14 MRC/MCR trap | ||
398 | b.eq el0_undef | ||
399 | cmp x24, #ESR_EL1_EC_CP14_LS // CP14 LDC/STC trap | ||
400 | b.eq el0_undef | ||
401 | cmp x24, #ESR_EL1_EC_CP14_64 // CP14 MRRC/MCRR trap | ||
402 | b.eq el0_undef | ||
393 | cmp x24, #ESR_EL1_EC_BREAKPT_EL0 // debug exception in EL0 | 403 | cmp x24, #ESR_EL1_EC_BREAKPT_EL0 // debug exception in EL0 |
394 | b.ge el0_dbg | 404 | b.ge el0_dbg |
395 | b el0_inv | 405 | b el0_inv |
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 6a9a53292590..add6ea616843 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c | |||
@@ -282,12 +282,13 @@ void __init setup_arch(char **cmdline_p) | |||
282 | #endif | 282 | #endif |
283 | } | 283 | } |
284 | 284 | ||
285 | static int __init arm64_of_clk_init(void) | 285 | static int __init arm64_device_init(void) |
286 | { | 286 | { |
287 | of_clk_init(NULL); | 287 | of_clk_init(NULL); |
288 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
288 | return 0; | 289 | return 0; |
289 | } | 290 | } |
290 | arch_initcall(arm64_of_clk_init); | 291 | arch_initcall(arm64_device_init); |
291 | 292 | ||
292 | static DEFINE_PER_CPU(struct cpu, cpu_data); | 293 | static DEFINE_PER_CPU(struct cpu, cpu_data); |
293 | 294 | ||
@@ -305,13 +306,6 @@ static int __init topology_init(void) | |||
305 | } | 306 | } |
306 | subsys_initcall(topology_init); | 307 | subsys_initcall(topology_init); |
307 | 308 | ||
308 | static int __init arm64_device_probe(void) | ||
309 | { | ||
310 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
311 | return 0; | ||
312 | } | ||
313 | device_initcall(arm64_device_probe); | ||
314 | |||
315 | static const char *hwcap_str[] = { | 309 | static const char *hwcap_str[] = { |
316 | "fp", | 310 | "fp", |
317 | "asimd", | 311 | "asimd", |
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index 61d7dd29f756..f30852d28590 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c | |||
@@ -267,7 +267,8 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) | |||
267 | return; | 267 | return; |
268 | #endif | 268 | #endif |
269 | 269 | ||
270 | if (show_unhandled_signals) { | 270 | if (show_unhandled_signals && unhandled_signal(current, SIGILL) && |
271 | printk_ratelimit()) { | ||
271 | pr_info("%s[%d]: undefined instruction: pc=%p\n", | 272 | pr_info("%s[%d]: undefined instruction: pc=%p\n", |
272 | current->comm, task_pid_nr(current), pc); | 273 | current->comm, task_pid_nr(current), pc); |
273 | dump_instr(KERN_INFO, regs); | 274 | dump_instr(KERN_INFO, regs); |
@@ -294,7 +295,7 @@ asmlinkage long do_ni_syscall(struct pt_regs *regs) | |||
294 | } | 295 | } |
295 | #endif | 296 | #endif |
296 | 297 | ||
297 | if (show_unhandled_signals) { | 298 | if (show_unhandled_signals && printk_ratelimit()) { |
298 | pr_info("%s[%d]: syscall %d\n", current->comm, | 299 | pr_info("%s[%d]: syscall %d\n", current->comm, |
299 | task_pid_nr(current), (int)regs->syscallno); | 300 | task_pid_nr(current), (int)regs->syscallno); |
300 | dump_instr("", regs); | 301 | dump_instr("", regs); |
@@ -310,14 +311,20 @@ asmlinkage long do_ni_syscall(struct pt_regs *regs) | |||
310 | */ | 311 | */ |
311 | asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr) | 312 | asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr) |
312 | { | 313 | { |
314 | siginfo_t info; | ||
315 | void __user *pc = (void __user *)instruction_pointer(regs); | ||
313 | console_verbose(); | 316 | console_verbose(); |
314 | 317 | ||
315 | pr_crit("Bad mode in %s handler detected, code 0x%08x\n", | 318 | pr_crit("Bad mode in %s handler detected, code 0x%08x\n", |
316 | handler[reason], esr); | 319 | handler[reason], esr); |
320 | __show_regs(regs); | ||
321 | |||
322 | info.si_signo = SIGILL; | ||
323 | info.si_errno = 0; | ||
324 | info.si_code = ILL_ILLOPC; | ||
325 | info.si_addr = pc; | ||
317 | 326 | ||
318 | die("Oops - bad mode", regs, 0); | 327 | arm64_notify_die("Oops - bad mode", regs, &info, 0); |
319 | local_irq_disable(); | ||
320 | panic("bad mode"); | ||
321 | } | 328 | } |
322 | 329 | ||
323 | void __pte_error(const char *file, int line, unsigned long val) | 330 | void __pte_error(const char *file, int line, unsigned long val) |
diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S index abe69b80cf7f..48a386094fa3 100644 --- a/arch/arm64/mm/cache.S +++ b/arch/arm64/mm/cache.S | |||
@@ -52,7 +52,7 @@ loop1: | |||
52 | add x2, x2, #4 // add 4 (line length offset) | 52 | add x2, x2, #4 // add 4 (line length offset) |
53 | mov x4, #0x3ff | 53 | mov x4, #0x3ff |
54 | and x4, x4, x1, lsr #3 // find maximum number on the way size | 54 | and x4, x4, x1, lsr #3 // find maximum number on the way size |
55 | clz x5, x4 // find bit position of way size increment | 55 | clz w5, w4 // find bit position of way size increment |
56 | mov x7, #0x7fff | 56 | mov x7, #0x7fff |
57 | and x7, x7, x1, lsr #13 // extract max number of the index size | 57 | and x7, x7, x1, lsr #13 // extract max number of the index size |
58 | loop2: | 58 | loop2: |
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 98af6e760cce..1426468b77f3 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c | |||
@@ -113,7 +113,8 @@ static void __do_user_fault(struct task_struct *tsk, unsigned long addr, | |||
113 | { | 113 | { |
114 | struct siginfo si; | 114 | struct siginfo si; |
115 | 115 | ||
116 | if (show_unhandled_signals) { | 116 | if (show_unhandled_signals && unhandled_signal(tsk, sig) && |
117 | printk_ratelimit()) { | ||
117 | pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n", | 118 | pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n", |
118 | tsk->comm, task_pid_nr(tsk), fault_name(esr), sig, | 119 | tsk->comm, task_pid_nr(tsk), fault_name(esr), sig, |
119 | addr, esr); | 120 | addr, esr); |
diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S index f1d8b9bbfdad..a82ae8868077 100644 --- a/arch/arm64/mm/proc.S +++ b/arch/arm64/mm/proc.S | |||
@@ -119,8 +119,7 @@ ENTRY(__cpu_setup) | |||
119 | 119 | ||
120 | mov x0, #3 << 20 | 120 | mov x0, #3 << 20 |
121 | msr cpacr_el1, x0 // Enable FP/ASIMD | 121 | msr cpacr_el1, x0 // Enable FP/ASIMD |
122 | mov x0, #1 | 122 | msr mdscr_el1, xzr // Reset mdscr_el1 |
123 | msr oslar_el1, x0 // Set the debug OS lock | ||
124 | tlbi vmalle1is // invalidate I + D TLBs | 123 | tlbi vmalle1is // invalidate I + D TLBs |
125 | /* | 124 | /* |
126 | * Memory region attributes for LPAE: | 125 | * Memory region attributes for LPAE: |
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index bdc35589277f..549903cfc2cb 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig | |||
@@ -205,6 +205,11 @@ config ARCH_DISCONTIGMEM_ENABLE | |||
205 | config ARCH_SPARSEMEM_ENABLE | 205 | config ARCH_SPARSEMEM_ENABLE |
206 | def_bool n | 206 | def_bool n |
207 | 207 | ||
208 | config NODES_SHIFT | ||
209 | int | ||
210 | default "2" | ||
211 | depends on NEED_MULTIPLE_NODES | ||
212 | |||
208 | source "mm/Kconfig" | 213 | source "mm/Kconfig" |
209 | 214 | ||
210 | config OWNERSHIP_TRACE | 215 | config OWNERSHIP_TRACE |
diff --git a/arch/avr32/include/asm/Kbuild b/arch/avr32/include/asm/Kbuild index 4dd4f78d3dcc..d22af851f3f6 100644 --- a/arch/avr32/include/asm/Kbuild +++ b/arch/avr32/include/asm/Kbuild | |||
@@ -2,3 +2,4 @@ | |||
2 | generic-y += clkdev.h | 2 | generic-y += clkdev.h |
3 | generic-y += exec.h | 3 | generic-y += exec.h |
4 | generic-y += trace_clock.h | 4 | generic-y += trace_clock.h |
5 | generic-y += param.h | ||
diff --git a/arch/avr32/include/asm/numnodes.h b/arch/avr32/include/asm/numnodes.h deleted file mode 100644 index 0b864d7ce330..000000000000 --- a/arch/avr32/include/asm/numnodes.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef __ASM_AVR32_NUMNODES_H | ||
2 | #define __ASM_AVR32_NUMNODES_H | ||
3 | |||
4 | /* Max 4 nodes */ | ||
5 | #define NODES_SHIFT 2 | ||
6 | |||
7 | #endif /* __ASM_AVR32_NUMNODES_H */ | ||
diff --git a/arch/avr32/include/asm/param.h b/arch/avr32/include/asm/param.h deleted file mode 100644 index 009a167aea1f..000000000000 --- a/arch/avr32/include/asm/param.h +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | #ifndef __ASM_AVR32_PARAM_H | ||
2 | #define __ASM_AVR32_PARAM_H | ||
3 | |||
4 | #include <uapi/asm/param.h> | ||
5 | |||
6 | # define HZ CONFIG_HZ | ||
7 | # define USER_HZ 100 /* User interfaces are in "ticks" */ | ||
8 | # define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */ | ||
9 | #endif /* __ASM_AVR32_PARAM_H */ | ||
diff --git a/arch/avr32/include/uapi/asm/Kbuild b/arch/avr32/include/uapi/asm/Kbuild index df53e7a46774..3b85eaddf525 100644 --- a/arch/avr32/include/uapi/asm/Kbuild +++ b/arch/avr32/include/uapi/asm/Kbuild | |||
@@ -33,3 +33,4 @@ header-y += termbits.h | |||
33 | header-y += termios.h | 33 | header-y += termios.h |
34 | header-y += types.h | 34 | header-y += types.h |
35 | header-y += unistd.h | 35 | header-y += unistd.h |
36 | generic-y += param.h | ||
diff --git a/arch/avr32/include/uapi/asm/param.h b/arch/avr32/include/uapi/asm/param.h deleted file mode 100644 index d28aa5ee6d37..000000000000 --- a/arch/avr32/include/uapi/asm/param.h +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | #ifndef _UAPI__ASM_AVR32_PARAM_H | ||
2 | #define _UAPI__ASM_AVR32_PARAM_H | ||
3 | |||
4 | |||
5 | #ifndef HZ | ||
6 | # define HZ 100 | ||
7 | #endif | ||
8 | |||
9 | /* TODO: Should be configurable */ | ||
10 | #define EXEC_PAGESIZE 4096 | ||
11 | |||
12 | #ifndef NOGROUP | ||
13 | # define NOGROUP (-1) | ||
14 | #endif | ||
15 | |||
16 | #define MAXHOSTNAMELEN 64 | ||
17 | |||
18 | #endif /* _UAPI__ASM_AVR32_PARAM_H */ | ||
diff --git a/arch/avr32/kernel/module.c b/arch/avr32/kernel/module.c index 596f7305d93f..2c9412908024 100644 --- a/arch/avr32/kernel/module.c +++ b/arch/avr32/kernel/module.c | |||
@@ -264,7 +264,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, | |||
264 | break; | 264 | break; |
265 | case R_AVR32_GOT18SW: | 265 | case R_AVR32_GOT18SW: |
266 | if ((relocation & 0xfffe0003) != 0 | 266 | if ((relocation & 0xfffe0003) != 0 |
267 | && (relocation & 0xfffc0003) != 0xffff0000) | 267 | && (relocation & 0xfffc0000) != 0xfffc0000) |
268 | return reloc_overflow(module, "R_AVR32_GOT18SW", | 268 | return reloc_overflow(module, "R_AVR32_GOT18SW", |
269 | relocation); | 269 | relocation); |
270 | relocation >>= 2; | 270 | relocation >>= 2; |
diff --git a/arch/ia64/include/asm/tlb.h b/arch/ia64/include/asm/tlb.h index c3ffe3e54edc..ef3a9de01954 100644 --- a/arch/ia64/include/asm/tlb.h +++ b/arch/ia64/include/asm/tlb.h | |||
@@ -46,12 +46,6 @@ | |||
46 | #include <asm/tlbflush.h> | 46 | #include <asm/tlbflush.h> |
47 | #include <asm/machvec.h> | 47 | #include <asm/machvec.h> |
48 | 48 | ||
49 | #ifdef CONFIG_SMP | ||
50 | # define tlb_fast_mode(tlb) ((tlb)->nr == ~0U) | ||
51 | #else | ||
52 | # define tlb_fast_mode(tlb) (1) | ||
53 | #endif | ||
54 | |||
55 | /* | 49 | /* |
56 | * If we can't allocate a page to make a big batch of page pointers | 50 | * If we can't allocate a page to make a big batch of page pointers |
57 | * to work on, then just handle a few from the on-stack structure. | 51 | * to work on, then just handle a few from the on-stack structure. |
@@ -60,7 +54,7 @@ | |||
60 | 54 | ||
61 | struct mmu_gather { | 55 | struct mmu_gather { |
62 | struct mm_struct *mm; | 56 | struct mm_struct *mm; |
63 | unsigned int nr; /* == ~0U => fast mode */ | 57 | unsigned int nr; |
64 | unsigned int max; | 58 | unsigned int max; |
65 | unsigned char fullmm; /* non-zero means full mm flush */ | 59 | unsigned char fullmm; /* non-zero means full mm flush */ |
66 | unsigned char need_flush; /* really unmapped some PTEs? */ | 60 | unsigned char need_flush; /* really unmapped some PTEs? */ |
@@ -103,6 +97,7 @@ extern struct ia64_tr_entry *ia64_idtrs[NR_CPUS]; | |||
103 | static inline void | 97 | static inline void |
104 | ia64_tlb_flush_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long end) | 98 | ia64_tlb_flush_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long end) |
105 | { | 99 | { |
100 | unsigned long i; | ||
106 | unsigned int nr; | 101 | unsigned int nr; |
107 | 102 | ||
108 | if (!tlb->need_flush) | 103 | if (!tlb->need_flush) |
@@ -141,13 +136,11 @@ ia64_tlb_flush_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long e | |||
141 | 136 | ||
142 | /* lastly, release the freed pages */ | 137 | /* lastly, release the freed pages */ |
143 | nr = tlb->nr; | 138 | nr = tlb->nr; |
144 | if (!tlb_fast_mode(tlb)) { | 139 | |
145 | unsigned long i; | 140 | tlb->nr = 0; |
146 | tlb->nr = 0; | 141 | tlb->start_addr = ~0UL; |
147 | tlb->start_addr = ~0UL; | 142 | for (i = 0; i < nr; ++i) |
148 | for (i = 0; i < nr; ++i) | 143 | free_page_and_swap_cache(tlb->pages[i]); |
149 | free_page_and_swap_cache(tlb->pages[i]); | ||
150 | } | ||
151 | } | 144 | } |
152 | 145 | ||
153 | static inline void __tlb_alloc_page(struct mmu_gather *tlb) | 146 | static inline void __tlb_alloc_page(struct mmu_gather *tlb) |
@@ -167,20 +160,7 @@ tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned int full_m | |||
167 | tlb->mm = mm; | 160 | tlb->mm = mm; |
168 | tlb->max = ARRAY_SIZE(tlb->local); | 161 | tlb->max = ARRAY_SIZE(tlb->local); |
169 | tlb->pages = tlb->local; | 162 | tlb->pages = tlb->local; |
170 | /* | 163 | tlb->nr = 0; |
171 | * Use fast mode if only 1 CPU is online. | ||
172 | * | ||
173 | * It would be tempting to turn on fast-mode for full_mm_flush as well. But this | ||
174 | * doesn't work because of speculative accesses and software prefetching: the page | ||
175 | * table of "mm" may (and usually is) the currently active page table and even | ||
176 | * though the kernel won't do any user-space accesses during the TLB shoot down, a | ||
177 | * compiler might use speculation or lfetch.fault on what happens to be a valid | ||
178 | * user-space address. This in turn could trigger a TLB miss fault (or a VHPT | ||
179 | * walk) and re-insert a TLB entry we just removed. Slow mode avoids such | ||
180 | * problems. (We could make fast-mode work by switching the current task to a | ||
181 | * different "mm" during the shootdown.) --davidm 08/02/2002 | ||
182 | */ | ||
183 | tlb->nr = (num_online_cpus() == 1) ? ~0U : 0; | ||
184 | tlb->fullmm = full_mm_flush; | 164 | tlb->fullmm = full_mm_flush; |
185 | tlb->start_addr = ~0UL; | 165 | tlb->start_addr = ~0UL; |
186 | } | 166 | } |
@@ -214,11 +194,6 @@ static inline int __tlb_remove_page(struct mmu_gather *tlb, struct page *page) | |||
214 | { | 194 | { |
215 | tlb->need_flush = 1; | 195 | tlb->need_flush = 1; |
216 | 196 | ||
217 | if (tlb_fast_mode(tlb)) { | ||
218 | free_page_and_swap_cache(page); | ||
219 | return 1; /* avoid calling tlb_flush_mmu */ | ||
220 | } | ||
221 | |||
222 | if (!tlb->nr && tlb->pages == tlb->local) | 197 | if (!tlb->nr && tlb->pages == tlb->local) |
223 | __tlb_alloc_page(tlb); | 198 | __tlb_alloc_page(tlb); |
224 | 199 | ||
diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_defconfig index 90d3109c82f4..19325e117eea 100644 --- a/arch/m68k/configs/amiga_defconfig +++ b/arch/m68k/configs/amiga_defconfig | |||
@@ -1,55 +1,78 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-amiga" | 1 | CONFIG_LOCALVERSION="-amiga" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
13 | CONFIG_AMIGA=y | 16 | CONFIG_PARTITION_ADVANCED=y |
17 | CONFIG_ATARI_PARTITION=y | ||
18 | CONFIG_MAC_PARTITION=y | ||
19 | CONFIG_BSD_DISKLABEL=y | ||
20 | CONFIG_MINIX_SUBPARTITION=y | ||
21 | CONFIG_SOLARIS_X86_PARTITION=y | ||
22 | CONFIG_UNIXWARE_DISKLABEL=y | ||
23 | CONFIG_SUN_PARTITION=y | ||
24 | # CONFIG_EFI_PARTITION is not set | ||
25 | CONFIG_SYSV68_PARTITION=y | ||
26 | CONFIG_IOSCHED_DEADLINE=m | ||
14 | CONFIG_M68020=y | 27 | CONFIG_M68020=y |
15 | CONFIG_M68030=y | 28 | CONFIG_M68030=y |
16 | CONFIG_M68040=y | 29 | CONFIG_M68040=y |
17 | CONFIG_M68060=y | 30 | CONFIG_M68060=y |
18 | CONFIG_BINFMT_AOUT=m | 31 | CONFIG_AMIGA=y |
19 | CONFIG_BINFMT_MISC=m | ||
20 | CONFIG_ZORRO=y | 32 | CONFIG_ZORRO=y |
21 | CONFIG_AMIGA_PCMCIA=y | 33 | CONFIG_AMIGA_PCMCIA=y |
22 | CONFIG_HEARTBEAT=y | ||
23 | CONFIG_PROC_HARDWARE=y | ||
24 | CONFIG_ZORRO_NAMES=y | 34 | CONFIG_ZORRO_NAMES=y |
35 | # CONFIG_COMPACTION is not set | ||
36 | CONFIG_CLEANCACHE=y | ||
37 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
38 | CONFIG_BINFMT_AOUT=m | ||
39 | CONFIG_BINFMT_MISC=m | ||
25 | CONFIG_NET=y | 40 | CONFIG_NET=y |
26 | CONFIG_PACKET=y | 41 | CONFIG_PACKET=y |
42 | CONFIG_PACKET_DIAG=m | ||
27 | CONFIG_UNIX=y | 43 | CONFIG_UNIX=y |
44 | CONFIG_UNIX_DIAG=m | ||
45 | CONFIG_XFRM_MIGRATE=y | ||
28 | CONFIG_NET_KEY=y | 46 | CONFIG_NET_KEY=y |
29 | CONFIG_NET_KEY_MIGRATE=y | ||
30 | CONFIG_INET=y | 47 | CONFIG_INET=y |
31 | CONFIG_IP_PNP=y | 48 | CONFIG_IP_PNP=y |
49 | CONFIG_IP_PNP_DHCP=y | ||
50 | CONFIG_IP_PNP_BOOTP=y | ||
51 | CONFIG_IP_PNP_RARP=y | ||
32 | CONFIG_NET_IPIP=m | 52 | CONFIG_NET_IPIP=m |
53 | CONFIG_NET_IPGRE_DEMUX=m | ||
33 | CONFIG_NET_IPGRE=m | 54 | CONFIG_NET_IPGRE=m |
34 | CONFIG_SYN_COOKIES=y | 55 | CONFIG_SYN_COOKIES=y |
56 | CONFIG_NET_IPVTI=m | ||
35 | CONFIG_INET_AH=m | 57 | CONFIG_INET_AH=m |
36 | CONFIG_INET_ESP=m | 58 | CONFIG_INET_ESP=m |
37 | CONFIG_INET_IPCOMP=m | 59 | CONFIG_INET_IPCOMP=m |
38 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 60 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
39 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 61 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
40 | CONFIG_INET_XFRM_MODE_BEET=m | 62 | CONFIG_INET_XFRM_MODE_BEET=m |
63 | # CONFIG_INET_LRO is not set | ||
41 | CONFIG_INET_DIAG=m | 64 | CONFIG_INET_DIAG=m |
65 | CONFIG_INET_UDP_DIAG=m | ||
42 | CONFIG_IPV6_PRIVACY=y | 66 | CONFIG_IPV6_PRIVACY=y |
43 | CONFIG_IPV6_ROUTER_PREF=y | 67 | CONFIG_IPV6_ROUTER_PREF=y |
44 | CONFIG_IPV6_ROUTE_INFO=y | ||
45 | CONFIG_INET6_AH=m | 68 | CONFIG_INET6_AH=m |
46 | CONFIG_INET6_ESP=m | 69 | CONFIG_INET6_ESP=m |
47 | CONFIG_INET6_IPCOMP=m | 70 | CONFIG_INET6_IPCOMP=m |
48 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 71 | CONFIG_IPV6_GRE=m |
49 | CONFIG_IPV6_TUNNEL=m | ||
50 | CONFIG_NETFILTER=y | 72 | CONFIG_NETFILTER=y |
51 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
52 | CONFIG_NF_CONNTRACK=m | 73 | CONFIG_NF_CONNTRACK=m |
74 | CONFIG_NF_CONNTRACK_ZONES=y | ||
75 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
53 | # CONFIG_NF_CT_PROTO_DCCP is not set | 76 | # CONFIG_NF_CT_PROTO_DCCP is not set |
54 | CONFIG_NF_CT_PROTO_UDPLITE=m | 77 | CONFIG_NF_CT_PROTO_UDPLITE=m |
55 | CONFIG_NF_CONNTRACK_AMANDA=m | 78 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -57,25 +80,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
57 | CONFIG_NF_CONNTRACK_H323=m | 80 | CONFIG_NF_CONNTRACK_H323=m |
58 | CONFIG_NF_CONNTRACK_IRC=m | 81 | CONFIG_NF_CONNTRACK_IRC=m |
59 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 82 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
83 | CONFIG_NF_CONNTRACK_SNMP=m | ||
60 | CONFIG_NF_CONNTRACK_PPTP=m | 84 | CONFIG_NF_CONNTRACK_PPTP=m |
61 | CONFIG_NF_CONNTRACK_SANE=m | 85 | CONFIG_NF_CONNTRACK_SANE=m |
62 | CONFIG_NF_CONNTRACK_SIP=m | 86 | CONFIG_NF_CONNTRACK_SIP=m |
63 | CONFIG_NF_CONNTRACK_TFTP=m | 87 | CONFIG_NF_CONNTRACK_TFTP=m |
88 | CONFIG_NETFILTER_XT_SET=m | ||
89 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
64 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 90 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
65 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 91 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
66 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 92 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
93 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
94 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
95 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
67 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 96 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
68 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 97 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
69 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 98 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
99 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
100 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
70 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 101 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
71 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 102 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
72 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 103 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
104 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
105 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
73 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 106 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
74 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 107 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
75 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 108 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
109 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
76 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 110 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
77 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 111 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
78 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 112 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
113 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
79 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 114 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
80 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 115 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
81 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 116 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -86,6 +121,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
86 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 121 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
87 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 122 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
88 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 123 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
124 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
125 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
89 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 126 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
90 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 127 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
91 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 128 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -99,22 +136,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
99 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 136 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
100 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 137 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
101 | CONFIG_NETFILTER_XT_MATCH_U32=m | 138 | CONFIG_NETFILTER_XT_MATCH_U32=m |
139 | CONFIG_IP_SET=m | ||
140 | CONFIG_IP_SET_BITMAP_IP=m | ||
141 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
142 | CONFIG_IP_SET_BITMAP_PORT=m | ||
143 | CONFIG_IP_SET_HASH_IP=m | ||
144 | CONFIG_IP_SET_HASH_IPPORT=m | ||
145 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
146 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
147 | CONFIG_IP_SET_HASH_NET=m | ||
148 | CONFIG_IP_SET_HASH_NETPORT=m | ||
149 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
150 | CONFIG_IP_SET_LIST_SET=m | ||
102 | CONFIG_NF_CONNTRACK_IPV4=m | 151 | CONFIG_NF_CONNTRACK_IPV4=m |
103 | CONFIG_IP_NF_QUEUE=m | ||
104 | CONFIG_IP_NF_IPTABLES=m | 152 | CONFIG_IP_NF_IPTABLES=m |
105 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
106 | CONFIG_IP_NF_MATCH_AH=m | 153 | CONFIG_IP_NF_MATCH_AH=m |
107 | CONFIG_IP_NF_MATCH_ECN=m | 154 | CONFIG_IP_NF_MATCH_ECN=m |
155 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
108 | CONFIG_IP_NF_MATCH_TTL=m | 156 | CONFIG_IP_NF_MATCH_TTL=m |
109 | CONFIG_IP_NF_FILTER=m | 157 | CONFIG_IP_NF_FILTER=m |
110 | CONFIG_IP_NF_TARGET_REJECT=m | 158 | CONFIG_IP_NF_TARGET_REJECT=m |
111 | CONFIG_IP_NF_TARGET_LOG=m | ||
112 | CONFIG_IP_NF_TARGET_ULOG=m | 159 | CONFIG_IP_NF_TARGET_ULOG=m |
113 | CONFIG_NF_NAT=m | 160 | CONFIG_NF_NAT_IPV4=m |
114 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 161 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
115 | CONFIG_IP_NF_TARGET_NETMAP=m | 162 | CONFIG_IP_NF_TARGET_NETMAP=m |
116 | CONFIG_IP_NF_TARGET_REDIRECT=m | 163 | CONFIG_IP_NF_TARGET_REDIRECT=m |
117 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
118 | CONFIG_IP_NF_MANGLE=m | 164 | CONFIG_IP_NF_MANGLE=m |
119 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 165 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
120 | CONFIG_IP_NF_TARGET_ECN=m | 166 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -124,7 +170,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
124 | CONFIG_IP_NF_ARPFILTER=m | 170 | CONFIG_IP_NF_ARPFILTER=m |
125 | CONFIG_IP_NF_ARP_MANGLE=m | 171 | CONFIG_IP_NF_ARP_MANGLE=m |
126 | CONFIG_NF_CONNTRACK_IPV6=m | 172 | CONFIG_NF_CONNTRACK_IPV6=m |
127 | CONFIG_IP6_NF_QUEUE=m | ||
128 | CONFIG_IP6_NF_IPTABLES=m | 173 | CONFIG_IP6_NF_IPTABLES=m |
129 | CONFIG_IP6_NF_MATCH_AH=m | 174 | CONFIG_IP6_NF_MATCH_AH=m |
130 | CONFIG_IP6_NF_MATCH_EUI64=m | 175 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -133,18 +178,30 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
133 | CONFIG_IP6_NF_MATCH_HL=m | 178 | CONFIG_IP6_NF_MATCH_HL=m |
134 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 179 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
135 | CONFIG_IP6_NF_MATCH_MH=m | 180 | CONFIG_IP6_NF_MATCH_MH=m |
181 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
136 | CONFIG_IP6_NF_MATCH_RT=m | 182 | CONFIG_IP6_NF_MATCH_RT=m |
137 | CONFIG_IP6_NF_TARGET_HL=m | 183 | CONFIG_IP6_NF_TARGET_HL=m |
138 | CONFIG_IP6_NF_TARGET_LOG=m | ||
139 | CONFIG_IP6_NF_FILTER=m | 184 | CONFIG_IP6_NF_FILTER=m |
140 | CONFIG_IP6_NF_TARGET_REJECT=m | 185 | CONFIG_IP6_NF_TARGET_REJECT=m |
141 | CONFIG_IP6_NF_MANGLE=m | 186 | CONFIG_IP6_NF_MANGLE=m |
142 | CONFIG_IP6_NF_RAW=m | 187 | CONFIG_IP6_NF_RAW=m |
188 | CONFIG_NF_NAT_IPV6=m | ||
189 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
190 | CONFIG_IP6_NF_TARGET_NPT=m | ||
143 | CONFIG_IP_DCCP=m | 191 | CONFIG_IP_DCCP=m |
144 | # CONFIG_IP_DCCP_CCID3 is not set | 192 | # CONFIG_IP_DCCP_CCID3 is not set |
193 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
194 | CONFIG_RDS=m | ||
195 | CONFIG_RDS_TCP=m | ||
196 | CONFIG_L2TP=m | ||
145 | CONFIG_ATALK=m | 197 | CONFIG_ATALK=m |
198 | CONFIG_BATMAN_ADV=m | ||
199 | CONFIG_BATMAN_ADV_DAT=y | ||
200 | # CONFIG_WIRELESS is not set | ||
146 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 201 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
202 | CONFIG_DEVTMPFS=y | ||
147 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 203 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
204 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
148 | CONFIG_CONNECTOR=m | 205 | CONFIG_CONNECTOR=m |
149 | CONFIG_PARPORT=m | 206 | CONFIG_PARPORT=m |
150 | CONFIG_PARPORT_AMIGA=m | 207 | CONFIG_PARPORT_AMIGA=m |
@@ -154,11 +211,13 @@ CONFIG_AMIGA_FLOPPY=y | |||
154 | CONFIG_AMIGA_Z2RAM=y | 211 | CONFIG_AMIGA_Z2RAM=y |
155 | CONFIG_BLK_DEV_LOOP=y | 212 | CONFIG_BLK_DEV_LOOP=y |
156 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 213 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
214 | CONFIG_BLK_DEV_DRBD=m | ||
157 | CONFIG_BLK_DEV_NBD=m | 215 | CONFIG_BLK_DEV_NBD=m |
158 | CONFIG_BLK_DEV_RAM=y | 216 | CONFIG_BLK_DEV_RAM=y |
159 | CONFIG_CDROM_PKTCDVD=m | 217 | CONFIG_CDROM_PKTCDVD=m |
160 | CONFIG_ATA_OVER_ETH=m | 218 | CONFIG_ATA_OVER_ETH=m |
161 | CONFIG_IDE=y | 219 | CONFIG_IDE=y |
220 | CONFIG_IDE_GD_ATAPI=y | ||
162 | CONFIG_BLK_DEV_IDECD=y | 221 | CONFIG_BLK_DEV_IDECD=y |
163 | CONFIG_BLK_DEV_GAYLE=y | 222 | CONFIG_BLK_DEV_GAYLE=y |
164 | CONFIG_BLK_DEV_BUDDHA=y | 223 | CONFIG_BLK_DEV_BUDDHA=y |
@@ -172,57 +231,77 @@ CONFIG_BLK_DEV_SR=y | |||
172 | CONFIG_BLK_DEV_SR_VENDOR=y | 231 | CONFIG_BLK_DEV_SR_VENDOR=y |
173 | CONFIG_CHR_DEV_SG=m | 232 | CONFIG_CHR_DEV_SG=m |
174 | CONFIG_SCSI_CONSTANTS=y | 233 | CONFIG_SCSI_CONSTANTS=y |
175 | CONFIG_SCSI_SAS_LIBSAS=m | 234 | CONFIG_SCSI_SAS_ATTRS=m |
176 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
177 | CONFIG_SCSI_SRP_ATTRS=m | ||
178 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
179 | CONFIG_ISCSI_TCP=m | 235 | CONFIG_ISCSI_TCP=m |
236 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
180 | CONFIG_A3000_SCSI=y | 237 | CONFIG_A3000_SCSI=y |
181 | CONFIG_A2091_SCSI=y | 238 | CONFIG_A2091_SCSI=y |
182 | CONFIG_GVP11_SCSI=y | 239 | CONFIG_GVP11_SCSI=y |
183 | CONFIG_SCSI_A4000T=y | 240 | CONFIG_SCSI_A4000T=y |
184 | CONFIG_SCSI_ZORRO7XX=y | 241 | CONFIG_SCSI_ZORRO7XX=y |
185 | CONFIG_MD=y | 242 | CONFIG_MD=y |
186 | CONFIG_BLK_DEV_MD=m | ||
187 | CONFIG_MD_LINEAR=m | 243 | CONFIG_MD_LINEAR=m |
188 | CONFIG_MD_RAID0=m | 244 | CONFIG_MD_RAID0=m |
189 | CONFIG_MD_RAID1=m | ||
190 | CONFIG_MD_RAID456=m | ||
191 | CONFIG_BLK_DEV_DM=m | 245 | CONFIG_BLK_DEV_DM=m |
192 | CONFIG_DM_CRYPT=m | 246 | CONFIG_DM_CRYPT=m |
193 | CONFIG_DM_SNAPSHOT=m | 247 | CONFIG_DM_SNAPSHOT=m |
248 | CONFIG_DM_THIN_PROVISIONING=m | ||
249 | CONFIG_DM_CACHE=m | ||
194 | CONFIG_DM_MIRROR=m | 250 | CONFIG_DM_MIRROR=m |
251 | CONFIG_DM_RAID=m | ||
195 | CONFIG_DM_ZERO=m | 252 | CONFIG_DM_ZERO=m |
196 | CONFIG_DM_MULTIPATH=m | 253 | CONFIG_DM_MULTIPATH=m |
197 | CONFIG_DM_UEVENT=y | 254 | CONFIG_DM_UEVENT=y |
255 | CONFIG_TARGET_CORE=m | ||
256 | CONFIG_TCM_IBLOCK=m | ||
257 | CONFIG_TCM_FILEIO=m | ||
258 | CONFIG_TCM_PSCSI=m | ||
198 | CONFIG_NETDEVICES=y | 259 | CONFIG_NETDEVICES=y |
199 | CONFIG_DUMMY=m | 260 | CONFIG_DUMMY=m |
200 | CONFIG_MACVLAN=m | ||
201 | CONFIG_EQUALIZER=m | 261 | CONFIG_EQUALIZER=m |
262 | CONFIG_NET_TEAM=m | ||
263 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
264 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
265 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
266 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
267 | CONFIG_VXLAN=m | ||
268 | CONFIG_NETCONSOLE=m | ||
269 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
202 | CONFIG_VETH=m | 270 | CONFIG_VETH=m |
203 | CONFIG_NET_ETHERNET=y | 271 | # CONFIG_NET_VENDOR_3COM is not set |
204 | CONFIG_ARIADNE=y | ||
205 | CONFIG_A2065=y | 272 | CONFIG_A2065=y |
273 | CONFIG_ARIADNE=y | ||
274 | # CONFIG_NET_CADENCE is not set | ||
275 | # CONFIG_NET_VENDOR_BROADCOM is not set | ||
276 | # CONFIG_NET_VENDOR_CIRRUS is not set | ||
277 | # CONFIG_NET_VENDOR_FUJITSU is not set | ||
278 | # CONFIG_NET_VENDOR_HP is not set | ||
279 | # CONFIG_NET_VENDOR_INTEL is not set | ||
280 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
281 | # CONFIG_NET_VENDOR_MICREL is not set | ||
206 | CONFIG_HYDRA=y | 282 | CONFIG_HYDRA=y |
207 | CONFIG_ZORRO8390=y | ||
208 | CONFIG_APNE=y | 283 | CONFIG_APNE=y |
209 | # CONFIG_NETDEV_1000 is not set | 284 | CONFIG_ZORRO8390=y |
210 | # CONFIG_NETDEV_10000 is not set | 285 | # CONFIG_NET_VENDOR_SEEQ is not set |
286 | # CONFIG_NET_VENDOR_SMSC is not set | ||
287 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
288 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
211 | CONFIG_PPP=m | 289 | CONFIG_PPP=m |
212 | CONFIG_PPP_FILTER=y | ||
213 | CONFIG_PPP_ASYNC=m | ||
214 | CONFIG_PPP_SYNC_TTY=m | ||
215 | CONFIG_PPP_DEFLATE=m | ||
216 | CONFIG_PPP_BSDCOMP=m | 290 | CONFIG_PPP_BSDCOMP=m |
291 | CONFIG_PPP_DEFLATE=m | ||
292 | CONFIG_PPP_FILTER=y | ||
217 | CONFIG_PPP_MPPE=m | 293 | CONFIG_PPP_MPPE=m |
218 | CONFIG_PPPOE=m | 294 | CONFIG_PPPOE=m |
295 | CONFIG_PPTP=m | ||
296 | CONFIG_PPPOL2TP=m | ||
297 | CONFIG_PPP_ASYNC=m | ||
298 | CONFIG_PPP_SYNC_TTY=m | ||
219 | CONFIG_SLIP=m | 299 | CONFIG_SLIP=m |
220 | CONFIG_SLIP_COMPRESSED=y | 300 | CONFIG_SLIP_COMPRESSED=y |
221 | CONFIG_SLIP_SMART=y | 301 | CONFIG_SLIP_SMART=y |
222 | CONFIG_SLIP_MODE_SLIP6=y | 302 | CONFIG_SLIP_MODE_SLIP6=y |
223 | CONFIG_NETCONSOLE=m | 303 | # CONFIG_WLAN is not set |
224 | CONFIG_NETCONSOLE_DYNAMIC=y | 304 | CONFIG_INPUT_EVDEV=m |
225 | CONFIG_INPUT_FF_MEMLESS=m | ||
226 | CONFIG_KEYBOARD_AMIGA=y | 305 | CONFIG_KEYBOARD_AMIGA=y |
227 | # CONFIG_KEYBOARD_ATKBD is not set | 306 | # CONFIG_KEYBOARD_ATKBD is not set |
228 | # CONFIG_MOUSE_PS2 is not set | 307 | # CONFIG_MOUSE_PS2 is not set |
@@ -233,11 +312,14 @@ CONFIG_INPUT_MISC=y | |||
233 | CONFIG_INPUT_M68K_BEEP=m | 312 | CONFIG_INPUT_M68K_BEEP=m |
234 | # CONFIG_SERIO is not set | 313 | # CONFIG_SERIO is not set |
235 | CONFIG_VT_HW_CONSOLE_BINDING=y | 314 | CONFIG_VT_HW_CONSOLE_BINDING=y |
315 | # CONFIG_LEGACY_PTYS is not set | ||
236 | # CONFIG_DEVKMEM is not set | 316 | # CONFIG_DEVKMEM is not set |
237 | CONFIG_PRINTER=m | 317 | CONFIG_PRINTER=m |
238 | # CONFIG_HW_RANDOM is not set | 318 | # CONFIG_HW_RANDOM is not set |
239 | CONFIG_GEN_RTC=m | 319 | CONFIG_NTP_PPS=y |
240 | CONFIG_GEN_RTC_X=y | 320 | CONFIG_PPS_CLIENT_LDISC=m |
321 | CONFIG_PPS_CLIENT_PARPORT=m | ||
322 | CONFIG_PTP_1588_CLOCK=m | ||
241 | # CONFIG_HWMON is not set | 323 | # CONFIG_HWMON is not set |
242 | CONFIG_FB=y | 324 | CONFIG_FB=y |
243 | CONFIG_FB_CIRRUS=y | 325 | CONFIG_FB_CIRRUS=y |
@@ -252,48 +334,64 @@ CONFIG_SOUND=m | |||
252 | CONFIG_DMASOUND_PAULA=m | 334 | CONFIG_DMASOUND_PAULA=m |
253 | CONFIG_HID=m | 335 | CONFIG_HID=m |
254 | CONFIG_HIDRAW=y | 336 | CONFIG_HIDRAW=y |
337 | CONFIG_UHID=m | ||
338 | # CONFIG_HID_GENERIC is not set | ||
255 | # CONFIG_USB_SUPPORT is not set | 339 | # CONFIG_USB_SUPPORT is not set |
340 | CONFIG_RTC_CLASS=y | ||
341 | CONFIG_RTC_DRV_MSM6242=m | ||
342 | CONFIG_RTC_DRV_RP5C01=m | ||
343 | # CONFIG_IOMMU_SUPPORT is not set | ||
344 | CONFIG_HEARTBEAT=y | ||
345 | CONFIG_PROC_HARDWARE=y | ||
256 | CONFIG_AMIGA_BUILTIN_SERIAL=y | 346 | CONFIG_AMIGA_BUILTIN_SERIAL=y |
257 | CONFIG_SERIAL_CONSOLE=y | 347 | CONFIG_SERIAL_CONSOLE=y |
258 | CONFIG_EXT2_FS=y | 348 | CONFIG_EXT2_FS=y |
259 | CONFIG_EXT3_FS=y | 349 | CONFIG_EXT3_FS=y |
260 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 350 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
261 | # CONFIG_EXT3_FS_XATTR is not set | 351 | # CONFIG_EXT3_FS_XATTR is not set |
352 | CONFIG_EXT4_FS=y | ||
262 | CONFIG_REISERFS_FS=m | 353 | CONFIG_REISERFS_FS=m |
263 | CONFIG_JFS_FS=m | 354 | CONFIG_JFS_FS=m |
264 | CONFIG_XFS_FS=m | 355 | CONFIG_XFS_FS=m |
265 | CONFIG_OCFS2_FS=m | 356 | CONFIG_OCFS2_FS=m |
266 | # CONFIG_OCFS2_FS_STATS is not set | ||
267 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 357 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
358 | CONFIG_FANOTIFY=y | ||
268 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 359 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
269 | # CONFIG_PRINT_QUOTA_WARNING is not set | 360 | # CONFIG_PRINT_QUOTA_WARNING is not set |
270 | CONFIG_AUTOFS_FS=m | ||
271 | CONFIG_AUTOFS4_FS=m | 361 | CONFIG_AUTOFS4_FS=m |
272 | CONFIG_FUSE_FS=m | 362 | CONFIG_FUSE_FS=m |
363 | CONFIG_CUSE=m | ||
273 | CONFIG_ISO9660_FS=y | 364 | CONFIG_ISO9660_FS=y |
274 | CONFIG_JOLIET=y | 365 | CONFIG_JOLIET=y |
275 | CONFIG_ZISOFS=y | 366 | CONFIG_ZISOFS=y |
276 | CONFIG_UDF_FS=m | 367 | CONFIG_UDF_FS=m |
277 | CONFIG_MSDOS_FS=y | 368 | CONFIG_MSDOS_FS=m |
278 | CONFIG_VFAT_FS=m | 369 | CONFIG_VFAT_FS=m |
279 | CONFIG_PROC_KCORE=y | 370 | CONFIG_PROC_KCORE=y |
280 | CONFIG_TMPFS=y | 371 | CONFIG_TMPFS=y |
281 | CONFIG_AFFS_FS=m | 372 | CONFIG_AFFS_FS=m |
373 | CONFIG_ECRYPT_FS=m | ||
374 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
282 | CONFIG_HFS_FS=m | 375 | CONFIG_HFS_FS=m |
283 | CONFIG_HFSPLUS_FS=m | 376 | CONFIG_HFSPLUS_FS=m |
284 | CONFIG_CRAMFS=m | 377 | CONFIG_CRAMFS=m |
285 | CONFIG_SQUASHFS=m | 378 | CONFIG_SQUASHFS=m |
286 | CONFIG_MINIX_FS=y | 379 | CONFIG_SQUASHFS_LZO=y |
380 | CONFIG_MINIX_FS=m | ||
381 | CONFIG_OMFS_FS=m | ||
287 | CONFIG_HPFS_FS=m | 382 | CONFIG_HPFS_FS=m |
383 | CONFIG_QNX4FS_FS=m | ||
384 | CONFIG_QNX6FS_FS=m | ||
288 | CONFIG_SYSV_FS=m | 385 | CONFIG_SYSV_FS=m |
289 | CONFIG_UFS_FS=m | 386 | CONFIG_UFS_FS=m |
290 | CONFIG_NFS_FS=y | 387 | CONFIG_NFS_FS=y |
291 | CONFIG_NFS_V3=y | ||
292 | CONFIG_NFS_V4=y | 388 | CONFIG_NFS_V4=y |
389 | CONFIG_NFS_SWAP=y | ||
390 | CONFIG_ROOT_NFS=y | ||
293 | CONFIG_NFSD=m | 391 | CONFIG_NFSD=m |
294 | CONFIG_NFSD_V3=y | 392 | CONFIG_NFSD_V3=y |
295 | CONFIG_SMB_FS=m | 393 | CONFIG_CIFS=m |
296 | CONFIG_SMB_NLS_DEFAULT=y | 394 | # CONFIG_CIFS_DEBUG is not set |
297 | CONFIG_CODA_FS=m | 395 | CONFIG_CODA_FS=m |
298 | CONFIG_NLS_CODEPAGE_437=y | 396 | CONFIG_NLS_CODEPAGE_437=y |
299 | CONFIG_NLS_CODEPAGE_737=m | 397 | CONFIG_NLS_CODEPAGE_737=m |
@@ -332,10 +430,23 @@ CONFIG_NLS_ISO8859_14=m | |||
332 | CONFIG_NLS_ISO8859_15=m | 430 | CONFIG_NLS_ISO8859_15=m |
333 | CONFIG_NLS_KOI8_R=m | 431 | CONFIG_NLS_KOI8_R=m |
334 | CONFIG_NLS_KOI8_U=m | 432 | CONFIG_NLS_KOI8_U=m |
433 | CONFIG_NLS_MAC_ROMAN=m | ||
434 | CONFIG_NLS_MAC_CELTIC=m | ||
435 | CONFIG_NLS_MAC_CENTEURO=m | ||
436 | CONFIG_NLS_MAC_CROATIAN=m | ||
437 | CONFIG_NLS_MAC_CYRILLIC=m | ||
438 | CONFIG_NLS_MAC_GAELIC=m | ||
439 | CONFIG_NLS_MAC_GREEK=m | ||
440 | CONFIG_NLS_MAC_ICELAND=m | ||
441 | CONFIG_NLS_MAC_INUIT=m | ||
442 | CONFIG_NLS_MAC_ROMANIAN=m | ||
443 | CONFIG_NLS_MAC_TURKISH=m | ||
335 | CONFIG_DLM=m | 444 | CONFIG_DLM=m |
336 | CONFIG_MAGIC_SYSRQ=y | 445 | CONFIG_MAGIC_SYSRQ=y |
337 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 446 | CONFIG_ASYNC_RAID6_TEST=m |
338 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 447 | CONFIG_ENCRYPTED_KEYS=m |
448 | CONFIG_CRYPTO_MANAGER=y | ||
449 | CONFIG_CRYPTO_USER=m | ||
339 | CONFIG_CRYPTO_NULL=m | 450 | CONFIG_CRYPTO_NULL=m |
340 | CONFIG_CRYPTO_CRYPTD=m | 451 | CONFIG_CRYPTO_CRYPTD=m |
341 | CONFIG_CRYPTO_TEST=m | 452 | CONFIG_CRYPTO_TEST=m |
@@ -345,19 +456,16 @@ CONFIG_CRYPTO_CTS=m | |||
345 | CONFIG_CRYPTO_LRW=m | 456 | CONFIG_CRYPTO_LRW=m |
346 | CONFIG_CRYPTO_PCBC=m | 457 | CONFIG_CRYPTO_PCBC=m |
347 | CONFIG_CRYPTO_XTS=m | 458 | CONFIG_CRYPTO_XTS=m |
348 | CONFIG_CRYPTO_HMAC=y | ||
349 | CONFIG_CRYPTO_XCBC=m | 459 | CONFIG_CRYPTO_XCBC=m |
350 | CONFIG_CRYPTO_MD4=m | 460 | CONFIG_CRYPTO_VMAC=m |
351 | CONFIG_CRYPTO_MICHAEL_MIC=m | 461 | CONFIG_CRYPTO_MICHAEL_MIC=m |
352 | CONFIG_CRYPTO_RMD128=m | 462 | CONFIG_CRYPTO_RMD128=m |
353 | CONFIG_CRYPTO_RMD160=m | 463 | CONFIG_CRYPTO_RMD160=m |
354 | CONFIG_CRYPTO_RMD256=m | 464 | CONFIG_CRYPTO_RMD256=m |
355 | CONFIG_CRYPTO_RMD320=m | 465 | CONFIG_CRYPTO_RMD320=m |
356 | CONFIG_CRYPTO_SHA256=m | ||
357 | CONFIG_CRYPTO_SHA512=m | 466 | CONFIG_CRYPTO_SHA512=m |
358 | CONFIG_CRYPTO_TGR192=m | 467 | CONFIG_CRYPTO_TGR192=m |
359 | CONFIG_CRYPTO_WP512=m | 468 | CONFIG_CRYPTO_WP512=m |
360 | CONFIG_CRYPTO_AES=m | ||
361 | CONFIG_CRYPTO_ANUBIS=m | 469 | CONFIG_CRYPTO_ANUBIS=m |
362 | CONFIG_CRYPTO_BLOWFISH=m | 470 | CONFIG_CRYPTO_BLOWFISH=m |
363 | CONFIG_CRYPTO_CAMELLIA=m | 471 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -373,6 +481,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
373 | CONFIG_CRYPTO_ZLIB=m | 481 | CONFIG_CRYPTO_ZLIB=m |
374 | CONFIG_CRYPTO_LZO=m | 482 | CONFIG_CRYPTO_LZO=m |
375 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 483 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
484 | CONFIG_CRYPTO_USER_API_HASH=m | ||
485 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
376 | # CONFIG_CRYPTO_HW is not set | 486 | # CONFIG_CRYPTO_HW is not set |
377 | CONFIG_CRC16=m | ||
378 | CONFIG_CRC_T10DIF=y | 487 | CONFIG_CRC_T10DIF=y |
488 | CONFIG_XZ_DEC_X86=y | ||
489 | CONFIG_XZ_DEC_POWERPC=y | ||
490 | CONFIG_XZ_DEC_IA64=y | ||
491 | CONFIG_XZ_DEC_ARM=y | ||
492 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
493 | CONFIG_XZ_DEC_SPARC=y | ||
494 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_defconfig index 8f4f657fdbc6..14dc6ccda7f4 100644 --- a/arch/m68k/configs/apollo_defconfig +++ b/arch/m68k/configs/apollo_defconfig | |||
@@ -1,55 +1,76 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-apollo" | 1 | CONFIG_LOCALVERSION="-apollo" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
13 | CONFIG_APOLLO=y | 16 | CONFIG_PARTITION_ADVANCED=y |
17 | CONFIG_AMIGA_PARTITION=y | ||
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_MAC_PARTITION=y | ||
20 | CONFIG_BSD_DISKLABEL=y | ||
21 | CONFIG_MINIX_SUBPARTITION=y | ||
22 | CONFIG_SOLARIS_X86_PARTITION=y | ||
23 | CONFIG_UNIXWARE_DISKLABEL=y | ||
24 | CONFIG_SUN_PARTITION=y | ||
25 | # CONFIG_EFI_PARTITION is not set | ||
26 | CONFIG_SYSV68_PARTITION=y | ||
27 | CONFIG_IOSCHED_DEADLINE=m | ||
14 | CONFIG_M68020=y | 28 | CONFIG_M68020=y |
15 | CONFIG_M68030=y | 29 | CONFIG_M68030=y |
16 | CONFIG_M68040=y | 30 | CONFIG_M68040=y |
17 | CONFIG_M68060=y | 31 | CONFIG_M68060=y |
32 | CONFIG_APOLLO=y | ||
33 | # CONFIG_COMPACTION is not set | ||
34 | CONFIG_CLEANCACHE=y | ||
35 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
18 | CONFIG_BINFMT_AOUT=m | 36 | CONFIG_BINFMT_AOUT=m |
19 | CONFIG_BINFMT_MISC=m | 37 | CONFIG_BINFMT_MISC=m |
20 | CONFIG_HEARTBEAT=y | ||
21 | CONFIG_PROC_HARDWARE=y | ||
22 | CONFIG_NET=y | 38 | CONFIG_NET=y |
23 | CONFIG_PACKET=y | 39 | CONFIG_PACKET=y |
40 | CONFIG_PACKET_DIAG=m | ||
24 | CONFIG_UNIX=y | 41 | CONFIG_UNIX=y |
42 | CONFIG_UNIX_DIAG=m | ||
43 | CONFIG_XFRM_MIGRATE=y | ||
25 | CONFIG_NET_KEY=y | 44 | CONFIG_NET_KEY=y |
26 | CONFIG_NET_KEY_MIGRATE=y | ||
27 | CONFIG_INET=y | 45 | CONFIG_INET=y |
28 | CONFIG_IP_PNP=y | 46 | CONFIG_IP_PNP=y |
29 | CONFIG_IP_PNP_DHCP=y | 47 | CONFIG_IP_PNP_DHCP=y |
30 | CONFIG_IP_PNP_BOOTP=y | 48 | CONFIG_IP_PNP_BOOTP=y |
31 | CONFIG_IP_PNP_RARP=y | 49 | CONFIG_IP_PNP_RARP=y |
32 | CONFIG_NET_IPIP=m | 50 | CONFIG_NET_IPIP=m |
51 | CONFIG_NET_IPGRE_DEMUX=m | ||
33 | CONFIG_NET_IPGRE=m | 52 | CONFIG_NET_IPGRE=m |
34 | CONFIG_SYN_COOKIES=y | 53 | CONFIG_SYN_COOKIES=y |
54 | CONFIG_NET_IPVTI=m | ||
35 | CONFIG_INET_AH=m | 55 | CONFIG_INET_AH=m |
36 | CONFIG_INET_ESP=m | 56 | CONFIG_INET_ESP=m |
37 | CONFIG_INET_IPCOMP=m | 57 | CONFIG_INET_IPCOMP=m |
38 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 58 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
39 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 59 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
40 | CONFIG_INET_XFRM_MODE_BEET=m | 60 | CONFIG_INET_XFRM_MODE_BEET=m |
61 | # CONFIG_INET_LRO is not set | ||
41 | CONFIG_INET_DIAG=m | 62 | CONFIG_INET_DIAG=m |
63 | CONFIG_INET_UDP_DIAG=m | ||
42 | CONFIG_IPV6_PRIVACY=y | 64 | CONFIG_IPV6_PRIVACY=y |
43 | CONFIG_IPV6_ROUTER_PREF=y | 65 | CONFIG_IPV6_ROUTER_PREF=y |
44 | CONFIG_IPV6_ROUTE_INFO=y | ||
45 | CONFIG_INET6_AH=m | 66 | CONFIG_INET6_AH=m |
46 | CONFIG_INET6_ESP=m | 67 | CONFIG_INET6_ESP=m |
47 | CONFIG_INET6_IPCOMP=m | 68 | CONFIG_INET6_IPCOMP=m |
48 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 69 | CONFIG_IPV6_GRE=m |
49 | CONFIG_IPV6_TUNNEL=m | ||
50 | CONFIG_NETFILTER=y | 70 | CONFIG_NETFILTER=y |
51 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
52 | CONFIG_NF_CONNTRACK=m | 71 | CONFIG_NF_CONNTRACK=m |
72 | CONFIG_NF_CONNTRACK_ZONES=y | ||
73 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
53 | # CONFIG_NF_CT_PROTO_DCCP is not set | 74 | # CONFIG_NF_CT_PROTO_DCCP is not set |
54 | CONFIG_NF_CT_PROTO_UDPLITE=m | 75 | CONFIG_NF_CT_PROTO_UDPLITE=m |
55 | CONFIG_NF_CONNTRACK_AMANDA=m | 76 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -57,25 +78,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
57 | CONFIG_NF_CONNTRACK_H323=m | 78 | CONFIG_NF_CONNTRACK_H323=m |
58 | CONFIG_NF_CONNTRACK_IRC=m | 79 | CONFIG_NF_CONNTRACK_IRC=m |
59 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 80 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
81 | CONFIG_NF_CONNTRACK_SNMP=m | ||
60 | CONFIG_NF_CONNTRACK_PPTP=m | 82 | CONFIG_NF_CONNTRACK_PPTP=m |
61 | CONFIG_NF_CONNTRACK_SANE=m | 83 | CONFIG_NF_CONNTRACK_SANE=m |
62 | CONFIG_NF_CONNTRACK_SIP=m | 84 | CONFIG_NF_CONNTRACK_SIP=m |
63 | CONFIG_NF_CONNTRACK_TFTP=m | 85 | CONFIG_NF_CONNTRACK_TFTP=m |
86 | CONFIG_NETFILTER_XT_SET=m | ||
87 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
64 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 88 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
65 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 89 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
66 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 90 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
91 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
92 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
93 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
67 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 94 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
68 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 95 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
69 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 96 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
97 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
98 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
70 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 99 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
71 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 100 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
72 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 101 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
102 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
103 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
73 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 104 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
74 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 105 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
75 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 106 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
107 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
76 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 108 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
77 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 109 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
78 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 110 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
111 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
79 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 112 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
80 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 113 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
81 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 114 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -86,6 +119,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
86 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 119 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
87 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 120 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
88 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 121 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
122 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
123 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
89 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 124 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
90 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 125 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
91 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 126 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -99,22 +134,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
99 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 134 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
100 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 135 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
101 | CONFIG_NETFILTER_XT_MATCH_U32=m | 136 | CONFIG_NETFILTER_XT_MATCH_U32=m |
137 | CONFIG_IP_SET=m | ||
138 | CONFIG_IP_SET_BITMAP_IP=m | ||
139 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
140 | CONFIG_IP_SET_BITMAP_PORT=m | ||
141 | CONFIG_IP_SET_HASH_IP=m | ||
142 | CONFIG_IP_SET_HASH_IPPORT=m | ||
143 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
144 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
145 | CONFIG_IP_SET_HASH_NET=m | ||
146 | CONFIG_IP_SET_HASH_NETPORT=m | ||
147 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
148 | CONFIG_IP_SET_LIST_SET=m | ||
102 | CONFIG_NF_CONNTRACK_IPV4=m | 149 | CONFIG_NF_CONNTRACK_IPV4=m |
103 | CONFIG_IP_NF_QUEUE=m | ||
104 | CONFIG_IP_NF_IPTABLES=m | 150 | CONFIG_IP_NF_IPTABLES=m |
105 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
106 | CONFIG_IP_NF_MATCH_AH=m | 151 | CONFIG_IP_NF_MATCH_AH=m |
107 | CONFIG_IP_NF_MATCH_ECN=m | 152 | CONFIG_IP_NF_MATCH_ECN=m |
153 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
108 | CONFIG_IP_NF_MATCH_TTL=m | 154 | CONFIG_IP_NF_MATCH_TTL=m |
109 | CONFIG_IP_NF_FILTER=m | 155 | CONFIG_IP_NF_FILTER=m |
110 | CONFIG_IP_NF_TARGET_REJECT=m | 156 | CONFIG_IP_NF_TARGET_REJECT=m |
111 | CONFIG_IP_NF_TARGET_LOG=m | ||
112 | CONFIG_IP_NF_TARGET_ULOG=m | 157 | CONFIG_IP_NF_TARGET_ULOG=m |
113 | CONFIG_NF_NAT=m | 158 | CONFIG_NF_NAT_IPV4=m |
114 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 159 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
115 | CONFIG_IP_NF_TARGET_NETMAP=m | 160 | CONFIG_IP_NF_TARGET_NETMAP=m |
116 | CONFIG_IP_NF_TARGET_REDIRECT=m | 161 | CONFIG_IP_NF_TARGET_REDIRECT=m |
117 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
118 | CONFIG_IP_NF_MANGLE=m | 162 | CONFIG_IP_NF_MANGLE=m |
119 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 163 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
120 | CONFIG_IP_NF_TARGET_ECN=m | 164 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -124,7 +168,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
124 | CONFIG_IP_NF_ARPFILTER=m | 168 | CONFIG_IP_NF_ARPFILTER=m |
125 | CONFIG_IP_NF_ARP_MANGLE=m | 169 | CONFIG_IP_NF_ARP_MANGLE=m |
126 | CONFIG_NF_CONNTRACK_IPV6=m | 170 | CONFIG_NF_CONNTRACK_IPV6=m |
127 | CONFIG_IP6_NF_QUEUE=m | ||
128 | CONFIG_IP6_NF_IPTABLES=m | 171 | CONFIG_IP6_NF_IPTABLES=m |
129 | CONFIG_IP6_NF_MATCH_AH=m | 172 | CONFIG_IP6_NF_MATCH_AH=m |
130 | CONFIG_IP6_NF_MATCH_EUI64=m | 173 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -133,21 +176,34 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
133 | CONFIG_IP6_NF_MATCH_HL=m | 176 | CONFIG_IP6_NF_MATCH_HL=m |
134 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 177 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
135 | CONFIG_IP6_NF_MATCH_MH=m | 178 | CONFIG_IP6_NF_MATCH_MH=m |
179 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
136 | CONFIG_IP6_NF_MATCH_RT=m | 180 | CONFIG_IP6_NF_MATCH_RT=m |
137 | CONFIG_IP6_NF_TARGET_HL=m | 181 | CONFIG_IP6_NF_TARGET_HL=m |
138 | CONFIG_IP6_NF_TARGET_LOG=m | ||
139 | CONFIG_IP6_NF_FILTER=m | 182 | CONFIG_IP6_NF_FILTER=m |
140 | CONFIG_IP6_NF_TARGET_REJECT=m | 183 | CONFIG_IP6_NF_TARGET_REJECT=m |
141 | CONFIG_IP6_NF_MANGLE=m | 184 | CONFIG_IP6_NF_MANGLE=m |
142 | CONFIG_IP6_NF_RAW=m | 185 | CONFIG_IP6_NF_RAW=m |
186 | CONFIG_NF_NAT_IPV6=m | ||
187 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
188 | CONFIG_IP6_NF_TARGET_NPT=m | ||
143 | CONFIG_IP_DCCP=m | 189 | CONFIG_IP_DCCP=m |
144 | # CONFIG_IP_DCCP_CCID3 is not set | 190 | # CONFIG_IP_DCCP_CCID3 is not set |
191 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
192 | CONFIG_RDS=m | ||
193 | CONFIG_RDS_TCP=m | ||
194 | CONFIG_L2TP=m | ||
145 | CONFIG_ATALK=m | 195 | CONFIG_ATALK=m |
196 | CONFIG_BATMAN_ADV=m | ||
197 | CONFIG_BATMAN_ADV_DAT=y | ||
198 | # CONFIG_WIRELESS is not set | ||
146 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 199 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
200 | CONFIG_DEVTMPFS=y | ||
147 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 201 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
202 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
148 | CONFIG_CONNECTOR=m | 203 | CONFIG_CONNECTOR=m |
149 | CONFIG_BLK_DEV_LOOP=y | 204 | CONFIG_BLK_DEV_LOOP=y |
150 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 205 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
206 | CONFIG_BLK_DEV_DRBD=m | ||
151 | CONFIG_BLK_DEV_NBD=m | 207 | CONFIG_BLK_DEV_NBD=m |
152 | CONFIG_BLK_DEV_RAM=y | 208 | CONFIG_BLK_DEV_RAM=y |
153 | CONFIG_CDROM_PKTCDVD=m | 209 | CONFIG_CDROM_PKTCDVD=m |
@@ -162,57 +218,74 @@ CONFIG_BLK_DEV_SR=y | |||
162 | CONFIG_BLK_DEV_SR_VENDOR=y | 218 | CONFIG_BLK_DEV_SR_VENDOR=y |
163 | CONFIG_CHR_DEV_SG=m | 219 | CONFIG_CHR_DEV_SG=m |
164 | CONFIG_SCSI_CONSTANTS=y | 220 | CONFIG_SCSI_CONSTANTS=y |
165 | CONFIG_SCSI_SAS_LIBSAS=m | 221 | CONFIG_SCSI_SAS_ATTRS=m |
166 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
167 | CONFIG_SCSI_SRP_ATTRS=m | ||
168 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
169 | CONFIG_ISCSI_TCP=m | 222 | CONFIG_ISCSI_TCP=m |
223 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
170 | CONFIG_MD=y | 224 | CONFIG_MD=y |
171 | CONFIG_BLK_DEV_MD=m | ||
172 | CONFIG_MD_LINEAR=m | 225 | CONFIG_MD_LINEAR=m |
173 | CONFIG_MD_RAID0=m | 226 | CONFIG_MD_RAID0=m |
174 | CONFIG_MD_RAID1=m | ||
175 | CONFIG_MD_RAID456=m | ||
176 | CONFIG_BLK_DEV_DM=m | 227 | CONFIG_BLK_DEV_DM=m |
177 | CONFIG_DM_CRYPT=m | 228 | CONFIG_DM_CRYPT=m |
178 | CONFIG_DM_SNAPSHOT=m | 229 | CONFIG_DM_SNAPSHOT=m |
230 | CONFIG_DM_THIN_PROVISIONING=m | ||
231 | CONFIG_DM_CACHE=m | ||
179 | CONFIG_DM_MIRROR=m | 232 | CONFIG_DM_MIRROR=m |
233 | CONFIG_DM_RAID=m | ||
180 | CONFIG_DM_ZERO=m | 234 | CONFIG_DM_ZERO=m |
181 | CONFIG_DM_MULTIPATH=m | 235 | CONFIG_DM_MULTIPATH=m |
182 | CONFIG_DM_UEVENT=y | 236 | CONFIG_DM_UEVENT=y |
237 | CONFIG_TARGET_CORE=m | ||
238 | CONFIG_TCM_IBLOCK=m | ||
239 | CONFIG_TCM_FILEIO=m | ||
240 | CONFIG_TCM_PSCSI=m | ||
183 | CONFIG_NETDEVICES=y | 241 | CONFIG_NETDEVICES=y |
184 | CONFIG_DUMMY=m | 242 | CONFIG_DUMMY=m |
185 | CONFIG_MACVLAN=m | ||
186 | CONFIG_EQUALIZER=m | 243 | CONFIG_EQUALIZER=m |
244 | CONFIG_NET_TEAM=m | ||
245 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
246 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
247 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
248 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
249 | CONFIG_VXLAN=m | ||
250 | CONFIG_NETCONSOLE=m | ||
251 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
187 | CONFIG_VETH=m | 252 | CONFIG_VETH=m |
188 | CONFIG_NET_ETHERNET=y | 253 | # CONFIG_NET_CADENCE is not set |
189 | # CONFIG_NETDEV_1000 is not set | 254 | # CONFIG_NET_VENDOR_BROADCOM is not set |
190 | # CONFIG_NETDEV_10000 is not set | 255 | # CONFIG_NET_VENDOR_INTEL is not set |
256 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
257 | # CONFIG_NET_VENDOR_MICREL is not set | ||
258 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
259 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
260 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
261 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
191 | CONFIG_PPP=m | 262 | CONFIG_PPP=m |
192 | CONFIG_PPP_FILTER=y | ||
193 | CONFIG_PPP_ASYNC=m | ||
194 | CONFIG_PPP_SYNC_TTY=m | ||
195 | CONFIG_PPP_DEFLATE=m | ||
196 | CONFIG_PPP_BSDCOMP=m | 263 | CONFIG_PPP_BSDCOMP=m |
264 | CONFIG_PPP_DEFLATE=m | ||
265 | CONFIG_PPP_FILTER=y | ||
197 | CONFIG_PPP_MPPE=m | 266 | CONFIG_PPP_MPPE=m |
198 | CONFIG_PPPOE=m | 267 | CONFIG_PPPOE=m |
268 | CONFIG_PPTP=m | ||
269 | CONFIG_PPPOL2TP=m | ||
270 | CONFIG_PPP_ASYNC=m | ||
271 | CONFIG_PPP_SYNC_TTY=m | ||
199 | CONFIG_SLIP=m | 272 | CONFIG_SLIP=m |
200 | CONFIG_SLIP_COMPRESSED=y | 273 | CONFIG_SLIP_COMPRESSED=y |
201 | CONFIG_SLIP_SMART=y | 274 | CONFIG_SLIP_SMART=y |
202 | CONFIG_SLIP_MODE_SLIP6=y | 275 | CONFIG_SLIP_MODE_SLIP6=y |
203 | CONFIG_NETCONSOLE=m | 276 | # CONFIG_WLAN is not set |
204 | CONFIG_NETCONSOLE_DYNAMIC=y | 277 | CONFIG_INPUT_EVDEV=m |
205 | CONFIG_INPUT_FF_MEMLESS=m | ||
206 | # CONFIG_KEYBOARD_ATKBD is not set | 278 | # CONFIG_KEYBOARD_ATKBD is not set |
207 | CONFIG_MOUSE_PS2=m | 279 | # CONFIG_MOUSE_PS2 is not set |
208 | CONFIG_MOUSE_SERIAL=m | 280 | CONFIG_MOUSE_SERIAL=m |
209 | CONFIG_SERIO=m | 281 | CONFIG_SERIO=m |
210 | # CONFIG_SERIO_SERPORT is not set | ||
211 | CONFIG_VT_HW_CONSOLE_BINDING=y | 282 | CONFIG_VT_HW_CONSOLE_BINDING=y |
283 | # CONFIG_LEGACY_PTYS is not set | ||
212 | # CONFIG_DEVKMEM is not set | 284 | # CONFIG_DEVKMEM is not set |
213 | # CONFIG_HW_RANDOM is not set | 285 | # CONFIG_HW_RANDOM is not set |
214 | CONFIG_GEN_RTC=m | 286 | CONFIG_NTP_PPS=y |
215 | CONFIG_GEN_RTC_X=y | 287 | CONFIG_PPS_CLIENT_LDISC=m |
288 | CONFIG_PTP_1588_CLOCK=m | ||
216 | # CONFIG_HWMON is not set | 289 | # CONFIG_HWMON is not set |
217 | CONFIG_FB=y | 290 | CONFIG_FB=y |
218 | CONFIG_FRAMEBUFFER_CONSOLE=y | 291 | CONFIG_FRAMEBUFFER_CONSOLE=y |
@@ -221,47 +294,61 @@ CONFIG_LOGO=y | |||
221 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 294 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
222 | CONFIG_HID=m | 295 | CONFIG_HID=m |
223 | CONFIG_HIDRAW=y | 296 | CONFIG_HIDRAW=y |
297 | CONFIG_UHID=m | ||
298 | # CONFIG_HID_GENERIC is not set | ||
224 | # CONFIG_USB_SUPPORT is not set | 299 | # CONFIG_USB_SUPPORT is not set |
300 | CONFIG_RTC_CLASS=y | ||
301 | CONFIG_RTC_DRV_GENERIC=m | ||
302 | # CONFIG_IOMMU_SUPPORT is not set | ||
303 | CONFIG_HEARTBEAT=y | ||
304 | CONFIG_PROC_HARDWARE=y | ||
225 | CONFIG_EXT2_FS=y | 305 | CONFIG_EXT2_FS=y |
226 | CONFIG_EXT3_FS=y | 306 | CONFIG_EXT3_FS=y |
227 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 307 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
228 | # CONFIG_EXT3_FS_XATTR is not set | 308 | # CONFIG_EXT3_FS_XATTR is not set |
309 | CONFIG_EXT4_FS=y | ||
229 | CONFIG_REISERFS_FS=m | 310 | CONFIG_REISERFS_FS=m |
230 | CONFIG_JFS_FS=m | 311 | CONFIG_JFS_FS=m |
231 | CONFIG_XFS_FS=m | 312 | CONFIG_XFS_FS=m |
232 | CONFIG_OCFS2_FS=m | 313 | CONFIG_OCFS2_FS=m |
233 | # CONFIG_OCFS2_FS_STATS is not set | ||
234 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 314 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
315 | CONFIG_FANOTIFY=y | ||
235 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 316 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
236 | # CONFIG_PRINT_QUOTA_WARNING is not set | 317 | # CONFIG_PRINT_QUOTA_WARNING is not set |
237 | CONFIG_AUTOFS_FS=m | ||
238 | CONFIG_AUTOFS4_FS=m | 318 | CONFIG_AUTOFS4_FS=m |
239 | CONFIG_FUSE_FS=m | 319 | CONFIG_FUSE_FS=m |
320 | CONFIG_CUSE=m | ||
240 | CONFIG_ISO9660_FS=y | 321 | CONFIG_ISO9660_FS=y |
241 | CONFIG_JOLIET=y | 322 | CONFIG_JOLIET=y |
242 | CONFIG_ZISOFS=y | 323 | CONFIG_ZISOFS=y |
243 | CONFIG_UDF_FS=m | 324 | CONFIG_UDF_FS=m |
244 | CONFIG_MSDOS_FS=y | 325 | CONFIG_MSDOS_FS=m |
245 | CONFIG_VFAT_FS=m | 326 | CONFIG_VFAT_FS=m |
246 | CONFIG_PROC_KCORE=y | 327 | CONFIG_PROC_KCORE=y |
247 | CONFIG_TMPFS=y | 328 | CONFIG_TMPFS=y |
248 | CONFIG_AFFS_FS=m | 329 | CONFIG_AFFS_FS=m |
330 | CONFIG_ECRYPT_FS=m | ||
331 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
249 | CONFIG_HFS_FS=m | 332 | CONFIG_HFS_FS=m |
250 | CONFIG_HFSPLUS_FS=m | 333 | CONFIG_HFSPLUS_FS=m |
251 | CONFIG_CRAMFS=m | 334 | CONFIG_CRAMFS=m |
252 | CONFIG_SQUASHFS=m | 335 | CONFIG_SQUASHFS=m |
253 | CONFIG_MINIX_FS=y | 336 | CONFIG_SQUASHFS_LZO=y |
337 | CONFIG_MINIX_FS=m | ||
338 | CONFIG_OMFS_FS=m | ||
254 | CONFIG_HPFS_FS=m | 339 | CONFIG_HPFS_FS=m |
340 | CONFIG_QNX4FS_FS=m | ||
341 | CONFIG_QNX6FS_FS=m | ||
255 | CONFIG_SYSV_FS=m | 342 | CONFIG_SYSV_FS=m |
256 | CONFIG_UFS_FS=m | 343 | CONFIG_UFS_FS=m |
257 | CONFIG_NFS_FS=y | 344 | CONFIG_NFS_FS=y |
258 | CONFIG_NFS_V3=y | ||
259 | CONFIG_NFS_V4=y | 345 | CONFIG_NFS_V4=y |
346 | CONFIG_NFS_SWAP=y | ||
260 | CONFIG_ROOT_NFS=y | 347 | CONFIG_ROOT_NFS=y |
261 | CONFIG_NFSD=m | 348 | CONFIG_NFSD=m |
262 | CONFIG_NFSD_V3=y | 349 | CONFIG_NFSD_V3=y |
263 | CONFIG_SMB_FS=m | 350 | CONFIG_CIFS=m |
264 | CONFIG_SMB_NLS_DEFAULT=y | 351 | # CONFIG_CIFS_DEBUG is not set |
265 | CONFIG_CODA_FS=m | 352 | CONFIG_CODA_FS=m |
266 | CONFIG_NLS_CODEPAGE_437=y | 353 | CONFIG_NLS_CODEPAGE_437=y |
267 | CONFIG_NLS_CODEPAGE_737=m | 354 | CONFIG_NLS_CODEPAGE_737=m |
@@ -300,10 +387,23 @@ CONFIG_NLS_ISO8859_14=m | |||
300 | CONFIG_NLS_ISO8859_15=m | 387 | CONFIG_NLS_ISO8859_15=m |
301 | CONFIG_NLS_KOI8_R=m | 388 | CONFIG_NLS_KOI8_R=m |
302 | CONFIG_NLS_KOI8_U=m | 389 | CONFIG_NLS_KOI8_U=m |
390 | CONFIG_NLS_MAC_ROMAN=m | ||
391 | CONFIG_NLS_MAC_CELTIC=m | ||
392 | CONFIG_NLS_MAC_CENTEURO=m | ||
393 | CONFIG_NLS_MAC_CROATIAN=m | ||
394 | CONFIG_NLS_MAC_CYRILLIC=m | ||
395 | CONFIG_NLS_MAC_GAELIC=m | ||
396 | CONFIG_NLS_MAC_GREEK=m | ||
397 | CONFIG_NLS_MAC_ICELAND=m | ||
398 | CONFIG_NLS_MAC_INUIT=m | ||
399 | CONFIG_NLS_MAC_ROMANIAN=m | ||
400 | CONFIG_NLS_MAC_TURKISH=m | ||
303 | CONFIG_DLM=m | 401 | CONFIG_DLM=m |
304 | CONFIG_MAGIC_SYSRQ=y | 402 | CONFIG_MAGIC_SYSRQ=y |
305 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 403 | CONFIG_ASYNC_RAID6_TEST=m |
306 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 404 | CONFIG_ENCRYPTED_KEYS=m |
405 | CONFIG_CRYPTO_MANAGER=y | ||
406 | CONFIG_CRYPTO_USER=m | ||
307 | CONFIG_CRYPTO_NULL=m | 407 | CONFIG_CRYPTO_NULL=m |
308 | CONFIG_CRYPTO_CRYPTD=m | 408 | CONFIG_CRYPTO_CRYPTD=m |
309 | CONFIG_CRYPTO_TEST=m | 409 | CONFIG_CRYPTO_TEST=m |
@@ -313,19 +413,16 @@ CONFIG_CRYPTO_CTS=m | |||
313 | CONFIG_CRYPTO_LRW=m | 413 | CONFIG_CRYPTO_LRW=m |
314 | CONFIG_CRYPTO_PCBC=m | 414 | CONFIG_CRYPTO_PCBC=m |
315 | CONFIG_CRYPTO_XTS=m | 415 | CONFIG_CRYPTO_XTS=m |
316 | CONFIG_CRYPTO_HMAC=y | ||
317 | CONFIG_CRYPTO_XCBC=m | 416 | CONFIG_CRYPTO_XCBC=m |
318 | CONFIG_CRYPTO_MD4=m | 417 | CONFIG_CRYPTO_VMAC=m |
319 | CONFIG_CRYPTO_MICHAEL_MIC=m | 418 | CONFIG_CRYPTO_MICHAEL_MIC=m |
320 | CONFIG_CRYPTO_RMD128=m | 419 | CONFIG_CRYPTO_RMD128=m |
321 | CONFIG_CRYPTO_RMD160=m | 420 | CONFIG_CRYPTO_RMD160=m |
322 | CONFIG_CRYPTO_RMD256=m | 421 | CONFIG_CRYPTO_RMD256=m |
323 | CONFIG_CRYPTO_RMD320=m | 422 | CONFIG_CRYPTO_RMD320=m |
324 | CONFIG_CRYPTO_SHA256=m | ||
325 | CONFIG_CRYPTO_SHA512=m | 423 | CONFIG_CRYPTO_SHA512=m |
326 | CONFIG_CRYPTO_TGR192=m | 424 | CONFIG_CRYPTO_TGR192=m |
327 | CONFIG_CRYPTO_WP512=m | 425 | CONFIG_CRYPTO_WP512=m |
328 | CONFIG_CRYPTO_AES=m | ||
329 | CONFIG_CRYPTO_ANUBIS=m | 426 | CONFIG_CRYPTO_ANUBIS=m |
330 | CONFIG_CRYPTO_BLOWFISH=m | 427 | CONFIG_CRYPTO_BLOWFISH=m |
331 | CONFIG_CRYPTO_CAMELLIA=m | 428 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -341,6 +438,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
341 | CONFIG_CRYPTO_ZLIB=m | 438 | CONFIG_CRYPTO_ZLIB=m |
342 | CONFIG_CRYPTO_LZO=m | 439 | CONFIG_CRYPTO_LZO=m |
343 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 440 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
441 | CONFIG_CRYPTO_USER_API_HASH=m | ||
442 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
344 | # CONFIG_CRYPTO_HW is not set | 443 | # CONFIG_CRYPTO_HW is not set |
345 | CONFIG_CRC16=m | ||
346 | CONFIG_CRC_T10DIF=y | 444 | CONFIG_CRC_T10DIF=y |
445 | CONFIG_XZ_DEC_X86=y | ||
446 | CONFIG_XZ_DEC_POWERPC=y | ||
447 | CONFIG_XZ_DEC_IA64=y | ||
448 | CONFIG_XZ_DEC_ARM=y | ||
449 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
450 | CONFIG_XZ_DEC_SPARC=y | ||
451 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_defconfig index 4571d33903fe..6d5370c914b2 100644 --- a/arch/m68k/configs/atari_defconfig +++ b/arch/m68k/configs/atari_defconfig | |||
@@ -1,53 +1,75 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-atari" | 1 | CONFIG_LOCALVERSION="-atari" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
13 | CONFIG_ATARI=y | 16 | CONFIG_PARTITION_ADVANCED=y |
17 | CONFIG_AMIGA_PARTITION=y | ||
18 | CONFIG_MAC_PARTITION=y | ||
19 | CONFIG_BSD_DISKLABEL=y | ||
20 | CONFIG_MINIX_SUBPARTITION=y | ||
21 | CONFIG_SOLARIS_X86_PARTITION=y | ||
22 | CONFIG_UNIXWARE_DISKLABEL=y | ||
23 | CONFIG_SUN_PARTITION=y | ||
24 | # CONFIG_EFI_PARTITION is not set | ||
25 | CONFIG_SYSV68_PARTITION=y | ||
26 | CONFIG_IOSCHED_DEADLINE=m | ||
14 | CONFIG_M68020=y | 27 | CONFIG_M68020=y |
15 | CONFIG_M68030=y | 28 | CONFIG_M68030=y |
16 | CONFIG_M68040=y | 29 | CONFIG_M68040=y |
17 | CONFIG_M68060=y | 30 | CONFIG_M68060=y |
31 | CONFIG_ATARI=y | ||
32 | # CONFIG_COMPACTION is not set | ||
33 | CONFIG_CLEANCACHE=y | ||
34 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
18 | CONFIG_BINFMT_AOUT=m | 35 | CONFIG_BINFMT_AOUT=m |
19 | CONFIG_BINFMT_MISC=m | 36 | CONFIG_BINFMT_MISC=m |
20 | CONFIG_STRAM_PROC=y | ||
21 | CONFIG_HEARTBEAT=y | ||
22 | CONFIG_PROC_HARDWARE=y | ||
23 | CONFIG_NET=y | 37 | CONFIG_NET=y |
24 | CONFIG_PACKET=y | 38 | CONFIG_PACKET=y |
39 | CONFIG_PACKET_DIAG=m | ||
25 | CONFIG_UNIX=y | 40 | CONFIG_UNIX=y |
41 | CONFIG_UNIX_DIAG=m | ||
42 | CONFIG_XFRM_MIGRATE=y | ||
26 | CONFIG_NET_KEY=y | 43 | CONFIG_NET_KEY=y |
27 | CONFIG_NET_KEY_MIGRATE=y | ||
28 | CONFIG_INET=y | 44 | CONFIG_INET=y |
29 | CONFIG_IP_PNP=y | 45 | CONFIG_IP_PNP=y |
46 | CONFIG_IP_PNP_DHCP=y | ||
47 | CONFIG_IP_PNP_BOOTP=y | ||
48 | CONFIG_IP_PNP_RARP=y | ||
30 | CONFIG_NET_IPIP=m | 49 | CONFIG_NET_IPIP=m |
50 | CONFIG_NET_IPGRE_DEMUX=m | ||
31 | CONFIG_NET_IPGRE=m | 51 | CONFIG_NET_IPGRE=m |
32 | CONFIG_SYN_COOKIES=y | 52 | CONFIG_SYN_COOKIES=y |
53 | CONFIG_NET_IPVTI=m | ||
33 | CONFIG_INET_AH=m | 54 | CONFIG_INET_AH=m |
34 | CONFIG_INET_ESP=m | 55 | CONFIG_INET_ESP=m |
35 | CONFIG_INET_IPCOMP=m | 56 | CONFIG_INET_IPCOMP=m |
36 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 57 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
37 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 58 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
38 | CONFIG_INET_XFRM_MODE_BEET=m | 59 | CONFIG_INET_XFRM_MODE_BEET=m |
60 | # CONFIG_INET_LRO is not set | ||
39 | CONFIG_INET_DIAG=m | 61 | CONFIG_INET_DIAG=m |
62 | CONFIG_INET_UDP_DIAG=m | ||
40 | CONFIG_IPV6_PRIVACY=y | 63 | CONFIG_IPV6_PRIVACY=y |
41 | CONFIG_IPV6_ROUTER_PREF=y | 64 | CONFIG_IPV6_ROUTER_PREF=y |
42 | CONFIG_IPV6_ROUTE_INFO=y | ||
43 | CONFIG_INET6_AH=m | 65 | CONFIG_INET6_AH=m |
44 | CONFIG_INET6_ESP=m | 66 | CONFIG_INET6_ESP=m |
45 | CONFIG_INET6_IPCOMP=m | 67 | CONFIG_INET6_IPCOMP=m |
46 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 68 | CONFIG_IPV6_GRE=m |
47 | CONFIG_IPV6_TUNNEL=m | ||
48 | CONFIG_NETFILTER=y | 69 | CONFIG_NETFILTER=y |
49 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
50 | CONFIG_NF_CONNTRACK=m | 70 | CONFIG_NF_CONNTRACK=m |
71 | CONFIG_NF_CONNTRACK_ZONES=y | ||
72 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
51 | # CONFIG_NF_CT_PROTO_DCCP is not set | 73 | # CONFIG_NF_CT_PROTO_DCCP is not set |
52 | CONFIG_NF_CT_PROTO_UDPLITE=m | 74 | CONFIG_NF_CT_PROTO_UDPLITE=m |
53 | CONFIG_NF_CONNTRACK_AMANDA=m | 75 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -55,25 +77,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
55 | CONFIG_NF_CONNTRACK_H323=m | 77 | CONFIG_NF_CONNTRACK_H323=m |
56 | CONFIG_NF_CONNTRACK_IRC=m | 78 | CONFIG_NF_CONNTRACK_IRC=m |
57 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 79 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
80 | CONFIG_NF_CONNTRACK_SNMP=m | ||
58 | CONFIG_NF_CONNTRACK_PPTP=m | 81 | CONFIG_NF_CONNTRACK_PPTP=m |
59 | CONFIG_NF_CONNTRACK_SANE=m | 82 | CONFIG_NF_CONNTRACK_SANE=m |
60 | CONFIG_NF_CONNTRACK_SIP=m | 83 | CONFIG_NF_CONNTRACK_SIP=m |
61 | CONFIG_NF_CONNTRACK_TFTP=m | 84 | CONFIG_NF_CONNTRACK_TFTP=m |
85 | CONFIG_NETFILTER_XT_SET=m | ||
86 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
62 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 87 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
63 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 88 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
64 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 89 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
90 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
91 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
92 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
65 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 93 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
66 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 94 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
67 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 95 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
96 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
97 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
68 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 98 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
69 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 99 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
70 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 100 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
101 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
102 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
71 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 103 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
72 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 104 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
73 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 105 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
106 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
74 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 107 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
75 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 108 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
76 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 109 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
110 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
77 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 111 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
78 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 112 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
79 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 113 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -84,6 +118,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
84 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 118 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
85 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 119 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
86 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 120 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
121 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
122 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
87 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 123 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
88 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 124 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
89 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 125 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -97,22 +133,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
97 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 133 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
98 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 134 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
99 | CONFIG_NETFILTER_XT_MATCH_U32=m | 135 | CONFIG_NETFILTER_XT_MATCH_U32=m |
136 | CONFIG_IP_SET=m | ||
137 | CONFIG_IP_SET_BITMAP_IP=m | ||
138 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
139 | CONFIG_IP_SET_BITMAP_PORT=m | ||
140 | CONFIG_IP_SET_HASH_IP=m | ||
141 | CONFIG_IP_SET_HASH_IPPORT=m | ||
142 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
143 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
144 | CONFIG_IP_SET_HASH_NET=m | ||
145 | CONFIG_IP_SET_HASH_NETPORT=m | ||
146 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
147 | CONFIG_IP_SET_LIST_SET=m | ||
100 | CONFIG_NF_CONNTRACK_IPV4=m | 148 | CONFIG_NF_CONNTRACK_IPV4=m |
101 | CONFIG_IP_NF_QUEUE=m | ||
102 | CONFIG_IP_NF_IPTABLES=m | 149 | CONFIG_IP_NF_IPTABLES=m |
103 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
104 | CONFIG_IP_NF_MATCH_AH=m | 150 | CONFIG_IP_NF_MATCH_AH=m |
105 | CONFIG_IP_NF_MATCH_ECN=m | 151 | CONFIG_IP_NF_MATCH_ECN=m |
152 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
106 | CONFIG_IP_NF_MATCH_TTL=m | 153 | CONFIG_IP_NF_MATCH_TTL=m |
107 | CONFIG_IP_NF_FILTER=m | 154 | CONFIG_IP_NF_FILTER=m |
108 | CONFIG_IP_NF_TARGET_REJECT=m | 155 | CONFIG_IP_NF_TARGET_REJECT=m |
109 | CONFIG_IP_NF_TARGET_LOG=m | ||
110 | CONFIG_IP_NF_TARGET_ULOG=m | 156 | CONFIG_IP_NF_TARGET_ULOG=m |
111 | CONFIG_NF_NAT=m | 157 | CONFIG_NF_NAT_IPV4=m |
112 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 158 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
113 | CONFIG_IP_NF_TARGET_NETMAP=m | 159 | CONFIG_IP_NF_TARGET_NETMAP=m |
114 | CONFIG_IP_NF_TARGET_REDIRECT=m | 160 | CONFIG_IP_NF_TARGET_REDIRECT=m |
115 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
116 | CONFIG_IP_NF_MANGLE=m | 161 | CONFIG_IP_NF_MANGLE=m |
117 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 162 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
118 | CONFIG_IP_NF_TARGET_ECN=m | 163 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -122,7 +167,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
122 | CONFIG_IP_NF_ARPFILTER=m | 167 | CONFIG_IP_NF_ARPFILTER=m |
123 | CONFIG_IP_NF_ARP_MANGLE=m | 168 | CONFIG_IP_NF_ARP_MANGLE=m |
124 | CONFIG_NF_CONNTRACK_IPV6=m | 169 | CONFIG_NF_CONNTRACK_IPV6=m |
125 | CONFIG_IP6_NF_QUEUE=m | ||
126 | CONFIG_IP6_NF_IPTABLES=m | 170 | CONFIG_IP6_NF_IPTABLES=m |
127 | CONFIG_IP6_NF_MATCH_AH=m | 171 | CONFIG_IP6_NF_MATCH_AH=m |
128 | CONFIG_IP6_NF_MATCH_EUI64=m | 172 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -131,18 +175,30 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
131 | CONFIG_IP6_NF_MATCH_HL=m | 175 | CONFIG_IP6_NF_MATCH_HL=m |
132 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 176 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
133 | CONFIG_IP6_NF_MATCH_MH=m | 177 | CONFIG_IP6_NF_MATCH_MH=m |
178 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
134 | CONFIG_IP6_NF_MATCH_RT=m | 179 | CONFIG_IP6_NF_MATCH_RT=m |
135 | CONFIG_IP6_NF_TARGET_HL=m | 180 | CONFIG_IP6_NF_TARGET_HL=m |
136 | CONFIG_IP6_NF_TARGET_LOG=m | ||
137 | CONFIG_IP6_NF_FILTER=m | 181 | CONFIG_IP6_NF_FILTER=m |
138 | CONFIG_IP6_NF_TARGET_REJECT=m | 182 | CONFIG_IP6_NF_TARGET_REJECT=m |
139 | CONFIG_IP6_NF_MANGLE=m | 183 | CONFIG_IP6_NF_MANGLE=m |
140 | CONFIG_IP6_NF_RAW=m | 184 | CONFIG_IP6_NF_RAW=m |
185 | CONFIG_NF_NAT_IPV6=m | ||
186 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
187 | CONFIG_IP6_NF_TARGET_NPT=m | ||
141 | CONFIG_IP_DCCP=m | 188 | CONFIG_IP_DCCP=m |
142 | # CONFIG_IP_DCCP_CCID3 is not set | 189 | # CONFIG_IP_DCCP_CCID3 is not set |
190 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
191 | CONFIG_RDS=m | ||
192 | CONFIG_RDS_TCP=m | ||
193 | CONFIG_L2TP=m | ||
143 | CONFIG_ATALK=m | 194 | CONFIG_ATALK=m |
195 | CONFIG_BATMAN_ADV=m | ||
196 | CONFIG_BATMAN_ADV_DAT=y | ||
197 | # CONFIG_WIRELESS is not set | ||
144 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 198 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
199 | CONFIG_DEVTMPFS=y | ||
145 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 200 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
201 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
146 | CONFIG_CONNECTOR=m | 202 | CONFIG_CONNECTOR=m |
147 | CONFIG_PARPORT=m | 203 | CONFIG_PARPORT=m |
148 | CONFIG_PARPORT_ATARI=m | 204 | CONFIG_PARPORT_ATARI=m |
@@ -150,11 +206,13 @@ CONFIG_PARPORT_1284=y | |||
150 | CONFIG_ATARI_FLOPPY=y | 206 | CONFIG_ATARI_FLOPPY=y |
151 | CONFIG_BLK_DEV_LOOP=y | 207 | CONFIG_BLK_DEV_LOOP=y |
152 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 208 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
209 | CONFIG_BLK_DEV_DRBD=m | ||
153 | CONFIG_BLK_DEV_NBD=m | 210 | CONFIG_BLK_DEV_NBD=m |
154 | CONFIG_BLK_DEV_RAM=y | 211 | CONFIG_BLK_DEV_RAM=y |
155 | CONFIG_CDROM_PKTCDVD=m | 212 | CONFIG_CDROM_PKTCDVD=m |
156 | CONFIG_ATA_OVER_ETH=m | 213 | CONFIG_ATA_OVER_ETH=m |
157 | CONFIG_IDE=y | 214 | CONFIG_IDE=y |
215 | CONFIG_IDE_GD_ATAPI=y | ||
158 | CONFIG_BLK_DEV_IDECD=y | 216 | CONFIG_BLK_DEV_IDECD=y |
159 | CONFIG_BLK_DEV_FALCON_IDE=y | 217 | CONFIG_BLK_DEV_FALCON_IDE=y |
160 | CONFIG_RAID_ATTRS=m | 218 | CONFIG_RAID_ATTRS=m |
@@ -167,63 +225,81 @@ CONFIG_BLK_DEV_SR=y | |||
167 | CONFIG_BLK_DEV_SR_VENDOR=y | 225 | CONFIG_BLK_DEV_SR_VENDOR=y |
168 | CONFIG_CHR_DEV_SG=m | 226 | CONFIG_CHR_DEV_SG=m |
169 | CONFIG_SCSI_CONSTANTS=y | 227 | CONFIG_SCSI_CONSTANTS=y |
170 | CONFIG_SCSI_SAS_LIBSAS=m | 228 | CONFIG_SCSI_SAS_ATTRS=m |
171 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
172 | CONFIG_SCSI_SRP_ATTRS=m | ||
173 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
174 | CONFIG_ISCSI_TCP=m | 229 | CONFIG_ISCSI_TCP=m |
230 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
175 | CONFIG_ATARI_SCSI=y | 231 | CONFIG_ATARI_SCSI=y |
176 | CONFIG_MD=y | 232 | CONFIG_MD=y |
177 | CONFIG_BLK_DEV_MD=m | ||
178 | CONFIG_MD_LINEAR=m | 233 | CONFIG_MD_LINEAR=m |
179 | CONFIG_MD_RAID0=m | 234 | CONFIG_MD_RAID0=m |
180 | CONFIG_MD_RAID1=m | ||
181 | CONFIG_MD_RAID456=m | ||
182 | CONFIG_BLK_DEV_DM=m | 235 | CONFIG_BLK_DEV_DM=m |
183 | CONFIG_DM_CRYPT=m | 236 | CONFIG_DM_CRYPT=m |
184 | CONFIG_DM_SNAPSHOT=m | 237 | CONFIG_DM_SNAPSHOT=m |
238 | CONFIG_DM_THIN_PROVISIONING=m | ||
239 | CONFIG_DM_CACHE=m | ||
185 | CONFIG_DM_MIRROR=m | 240 | CONFIG_DM_MIRROR=m |
241 | CONFIG_DM_RAID=m | ||
186 | CONFIG_DM_ZERO=m | 242 | CONFIG_DM_ZERO=m |
187 | CONFIG_DM_MULTIPATH=m | 243 | CONFIG_DM_MULTIPATH=m |
188 | CONFIG_DM_UEVENT=y | 244 | CONFIG_DM_UEVENT=y |
245 | CONFIG_TARGET_CORE=m | ||
246 | CONFIG_TCM_IBLOCK=m | ||
247 | CONFIG_TCM_FILEIO=m | ||
248 | CONFIG_TCM_PSCSI=m | ||
189 | CONFIG_NETDEVICES=y | 249 | CONFIG_NETDEVICES=y |
190 | CONFIG_DUMMY=m | 250 | CONFIG_DUMMY=m |
191 | CONFIG_MACVLAN=m | ||
192 | CONFIG_EQUALIZER=m | 251 | CONFIG_EQUALIZER=m |
193 | CONFIG_VETH=m | ||
194 | CONFIG_NET_ETHERNET=y | ||
195 | CONFIG_MII=y | 252 | CONFIG_MII=y |
253 | CONFIG_NET_TEAM=m | ||
254 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
255 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
256 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
257 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
258 | CONFIG_VXLAN=m | ||
259 | CONFIG_NETCONSOLE=m | ||
260 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
261 | CONFIG_VETH=m | ||
196 | CONFIG_ATARILANCE=y | 262 | CONFIG_ATARILANCE=y |
197 | # CONFIG_NETDEV_1000 is not set | 263 | # CONFIG_NET_CADENCE is not set |
198 | # CONFIG_NETDEV_10000 is not set | 264 | # CONFIG_NET_VENDOR_BROADCOM is not set |
265 | # CONFIG_NET_VENDOR_INTEL is not set | ||
266 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
267 | # CONFIG_NET_VENDOR_MICREL is not set | ||
268 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
269 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
270 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
199 | CONFIG_PPP=m | 271 | CONFIG_PPP=m |
200 | CONFIG_PPP_FILTER=y | ||
201 | CONFIG_PPP_ASYNC=m | ||
202 | CONFIG_PPP_SYNC_TTY=m | ||
203 | CONFIG_PPP_DEFLATE=m | ||
204 | CONFIG_PPP_BSDCOMP=m | 272 | CONFIG_PPP_BSDCOMP=m |
273 | CONFIG_PPP_DEFLATE=m | ||
274 | CONFIG_PPP_FILTER=y | ||
205 | CONFIG_PPP_MPPE=m | 275 | CONFIG_PPP_MPPE=m |
206 | CONFIG_PPPOE=m | 276 | CONFIG_PPPOE=m |
277 | CONFIG_PPTP=m | ||
278 | CONFIG_PPPOL2TP=m | ||
279 | CONFIG_PPP_ASYNC=m | ||
280 | CONFIG_PPP_SYNC_TTY=m | ||
207 | CONFIG_SLIP=m | 281 | CONFIG_SLIP=m |
208 | CONFIG_SLIP_COMPRESSED=y | 282 | CONFIG_SLIP_COMPRESSED=y |
209 | CONFIG_SLIP_SMART=y | 283 | CONFIG_SLIP_SMART=y |
210 | CONFIG_SLIP_MODE_SLIP6=y | 284 | CONFIG_SLIP_MODE_SLIP6=y |
211 | CONFIG_NETCONSOLE=m | 285 | # CONFIG_WLAN is not set |
212 | CONFIG_NETCONSOLE_DYNAMIC=y | 286 | CONFIG_INPUT_EVDEV=m |
213 | CONFIG_INPUT_FF_MEMLESS=m | ||
214 | CONFIG_KEYBOARD_ATARI=y | 287 | CONFIG_KEYBOARD_ATARI=y |
215 | # CONFIG_KEYBOARD_ATKBD is not set | 288 | # CONFIG_KEYBOARD_ATKBD is not set |
216 | CONFIG_MOUSE_PS2=m | 289 | # CONFIG_MOUSE_PS2 is not set |
217 | CONFIG_MOUSE_ATARI=m | 290 | CONFIG_MOUSE_ATARI=m |
218 | CONFIG_INPUT_MISC=y | 291 | CONFIG_INPUT_MISC=y |
219 | CONFIG_INPUT_M68K_BEEP=m | 292 | CONFIG_INPUT_M68K_BEEP=m |
220 | # CONFIG_SERIO_SERPORT is not set | 293 | # CONFIG_SERIO is not set |
221 | CONFIG_VT_HW_CONSOLE_BINDING=y | 294 | CONFIG_VT_HW_CONSOLE_BINDING=y |
295 | # CONFIG_LEGACY_PTYS is not set | ||
222 | # CONFIG_DEVKMEM is not set | 296 | # CONFIG_DEVKMEM is not set |
223 | CONFIG_PRINTER=m | 297 | CONFIG_PRINTER=m |
224 | # CONFIG_HW_RANDOM is not set | 298 | # CONFIG_HW_RANDOM is not set |
225 | CONFIG_GEN_RTC=m | 299 | CONFIG_NTP_PPS=y |
226 | CONFIG_GEN_RTC_X=y | 300 | CONFIG_PPS_CLIENT_LDISC=m |
301 | CONFIG_PPS_CLIENT_PARPORT=m | ||
302 | CONFIG_PTP_1588_CLOCK=m | ||
227 | # CONFIG_HWMON is not set | 303 | # CONFIG_HWMON is not set |
228 | CONFIG_FB=y | 304 | CONFIG_FB=y |
229 | CONFIG_FB_ATARI=y | 305 | CONFIG_FB_ATARI=y |
@@ -233,47 +309,64 @@ CONFIG_SOUND=m | |||
233 | CONFIG_DMASOUND_ATARI=m | 309 | CONFIG_DMASOUND_ATARI=m |
234 | CONFIG_HID=m | 310 | CONFIG_HID=m |
235 | CONFIG_HIDRAW=y | 311 | CONFIG_HIDRAW=y |
236 | # CONFIG_USB_SUPPORT is not set | 312 | CONFIG_UHID=m |
313 | CONFIG_RTC_CLASS=y | ||
314 | CONFIG_RTC_DRV_GENERIC=m | ||
315 | # CONFIG_IOMMU_SUPPORT is not set | ||
316 | CONFIG_HEARTBEAT=y | ||
317 | CONFIG_PROC_HARDWARE=y | ||
318 | CONFIG_NATFEAT=y | ||
319 | CONFIG_NFBLOCK=y | ||
320 | CONFIG_NFCON=y | ||
321 | CONFIG_NFETH=y | ||
237 | CONFIG_ATARI_DSP56K=m | 322 | CONFIG_ATARI_DSP56K=m |
238 | CONFIG_EXT2_FS=y | 323 | CONFIG_EXT2_FS=y |
239 | CONFIG_EXT3_FS=y | 324 | CONFIG_EXT3_FS=y |
240 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 325 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
241 | # CONFIG_EXT3_FS_XATTR is not set | 326 | # CONFIG_EXT3_FS_XATTR is not set |
327 | CONFIG_EXT4_FS=y | ||
242 | CONFIG_REISERFS_FS=m | 328 | CONFIG_REISERFS_FS=m |
243 | CONFIG_JFS_FS=m | 329 | CONFIG_JFS_FS=m |
244 | CONFIG_XFS_FS=m | 330 | CONFIG_XFS_FS=m |
245 | CONFIG_OCFS2_FS=m | 331 | CONFIG_OCFS2_FS=m |
246 | # CONFIG_OCFS2_FS_STATS is not set | ||
247 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 332 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
333 | CONFIG_FANOTIFY=y | ||
248 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 334 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
249 | # CONFIG_PRINT_QUOTA_WARNING is not set | 335 | # CONFIG_PRINT_QUOTA_WARNING is not set |
250 | CONFIG_AUTOFS_FS=m | ||
251 | CONFIG_AUTOFS4_FS=m | 336 | CONFIG_AUTOFS4_FS=m |
252 | CONFIG_FUSE_FS=m | 337 | CONFIG_FUSE_FS=m |
338 | CONFIG_CUSE=m | ||
253 | CONFIG_ISO9660_FS=y | 339 | CONFIG_ISO9660_FS=y |
254 | CONFIG_JOLIET=y | 340 | CONFIG_JOLIET=y |
255 | CONFIG_ZISOFS=y | 341 | CONFIG_ZISOFS=y |
256 | CONFIG_UDF_FS=m | 342 | CONFIG_UDF_FS=m |
257 | CONFIG_MSDOS_FS=y | 343 | CONFIG_MSDOS_FS=m |
258 | CONFIG_VFAT_FS=m | 344 | CONFIG_VFAT_FS=m |
259 | CONFIG_PROC_KCORE=y | 345 | CONFIG_PROC_KCORE=y |
260 | CONFIG_TMPFS=y | 346 | CONFIG_TMPFS=y |
261 | CONFIG_AFFS_FS=m | 347 | CONFIG_AFFS_FS=m |
348 | CONFIG_ECRYPT_FS=m | ||
349 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
262 | CONFIG_HFS_FS=m | 350 | CONFIG_HFS_FS=m |
263 | CONFIG_HFSPLUS_FS=m | 351 | CONFIG_HFSPLUS_FS=m |
264 | CONFIG_CRAMFS=m | 352 | CONFIG_CRAMFS=m |
265 | CONFIG_SQUASHFS=m | 353 | CONFIG_SQUASHFS=m |
266 | CONFIG_MINIX_FS=y | 354 | CONFIG_SQUASHFS_LZO=y |
355 | CONFIG_MINIX_FS=m | ||
356 | CONFIG_OMFS_FS=m | ||
267 | CONFIG_HPFS_FS=m | 357 | CONFIG_HPFS_FS=m |
358 | CONFIG_QNX4FS_FS=m | ||
359 | CONFIG_QNX6FS_FS=m | ||
268 | CONFIG_SYSV_FS=m | 360 | CONFIG_SYSV_FS=m |
269 | CONFIG_UFS_FS=m | 361 | CONFIG_UFS_FS=m |
270 | CONFIG_NFS_FS=y | 362 | CONFIG_NFS_FS=y |
271 | CONFIG_NFS_V3=y | ||
272 | CONFIG_NFS_V4=y | 363 | CONFIG_NFS_V4=y |
364 | CONFIG_NFS_SWAP=y | ||
365 | CONFIG_ROOT_NFS=y | ||
273 | CONFIG_NFSD=m | 366 | CONFIG_NFSD=m |
274 | CONFIG_NFSD_V3=y | 367 | CONFIG_NFSD_V3=y |
275 | CONFIG_SMB_FS=m | 368 | CONFIG_CIFS=m |
276 | CONFIG_SMB_NLS_DEFAULT=y | 369 | # CONFIG_CIFS_DEBUG is not set |
277 | CONFIG_CODA_FS=m | 370 | CONFIG_CODA_FS=m |
278 | CONFIG_NLS_CODEPAGE_437=y | 371 | CONFIG_NLS_CODEPAGE_437=y |
279 | CONFIG_NLS_CODEPAGE_737=m | 372 | CONFIG_NLS_CODEPAGE_737=m |
@@ -312,10 +405,23 @@ CONFIG_NLS_ISO8859_14=m | |||
312 | CONFIG_NLS_ISO8859_15=m | 405 | CONFIG_NLS_ISO8859_15=m |
313 | CONFIG_NLS_KOI8_R=m | 406 | CONFIG_NLS_KOI8_R=m |
314 | CONFIG_NLS_KOI8_U=m | 407 | CONFIG_NLS_KOI8_U=m |
408 | CONFIG_NLS_MAC_ROMAN=m | ||
409 | CONFIG_NLS_MAC_CELTIC=m | ||
410 | CONFIG_NLS_MAC_CENTEURO=m | ||
411 | CONFIG_NLS_MAC_CROATIAN=m | ||
412 | CONFIG_NLS_MAC_CYRILLIC=m | ||
413 | CONFIG_NLS_MAC_GAELIC=m | ||
414 | CONFIG_NLS_MAC_GREEK=m | ||
415 | CONFIG_NLS_MAC_ICELAND=m | ||
416 | CONFIG_NLS_MAC_INUIT=m | ||
417 | CONFIG_NLS_MAC_ROMANIAN=m | ||
418 | CONFIG_NLS_MAC_TURKISH=m | ||
315 | CONFIG_DLM=m | 419 | CONFIG_DLM=m |
316 | CONFIG_MAGIC_SYSRQ=y | 420 | CONFIG_MAGIC_SYSRQ=y |
317 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 421 | CONFIG_ASYNC_RAID6_TEST=m |
318 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 422 | CONFIG_ENCRYPTED_KEYS=m |
423 | CONFIG_CRYPTO_MANAGER=y | ||
424 | CONFIG_CRYPTO_USER=m | ||
319 | CONFIG_CRYPTO_NULL=m | 425 | CONFIG_CRYPTO_NULL=m |
320 | CONFIG_CRYPTO_CRYPTD=m | 426 | CONFIG_CRYPTO_CRYPTD=m |
321 | CONFIG_CRYPTO_TEST=m | 427 | CONFIG_CRYPTO_TEST=m |
@@ -325,19 +431,16 @@ CONFIG_CRYPTO_CTS=m | |||
325 | CONFIG_CRYPTO_LRW=m | 431 | CONFIG_CRYPTO_LRW=m |
326 | CONFIG_CRYPTO_PCBC=m | 432 | CONFIG_CRYPTO_PCBC=m |
327 | CONFIG_CRYPTO_XTS=m | 433 | CONFIG_CRYPTO_XTS=m |
328 | CONFIG_CRYPTO_HMAC=y | ||
329 | CONFIG_CRYPTO_XCBC=m | 434 | CONFIG_CRYPTO_XCBC=m |
330 | CONFIG_CRYPTO_MD4=m | 435 | CONFIG_CRYPTO_VMAC=m |
331 | CONFIG_CRYPTO_MICHAEL_MIC=m | 436 | CONFIG_CRYPTO_MICHAEL_MIC=m |
332 | CONFIG_CRYPTO_RMD128=m | 437 | CONFIG_CRYPTO_RMD128=m |
333 | CONFIG_CRYPTO_RMD160=m | 438 | CONFIG_CRYPTO_RMD160=m |
334 | CONFIG_CRYPTO_RMD256=m | 439 | CONFIG_CRYPTO_RMD256=m |
335 | CONFIG_CRYPTO_RMD320=m | 440 | CONFIG_CRYPTO_RMD320=m |
336 | CONFIG_CRYPTO_SHA256=m | ||
337 | CONFIG_CRYPTO_SHA512=m | 441 | CONFIG_CRYPTO_SHA512=m |
338 | CONFIG_CRYPTO_TGR192=m | 442 | CONFIG_CRYPTO_TGR192=m |
339 | CONFIG_CRYPTO_WP512=m | 443 | CONFIG_CRYPTO_WP512=m |
340 | CONFIG_CRYPTO_AES=m | ||
341 | CONFIG_CRYPTO_ANUBIS=m | 444 | CONFIG_CRYPTO_ANUBIS=m |
342 | CONFIG_CRYPTO_BLOWFISH=m | 445 | CONFIG_CRYPTO_BLOWFISH=m |
343 | CONFIG_CRYPTO_CAMELLIA=m | 446 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -353,6 +456,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
353 | CONFIG_CRYPTO_ZLIB=m | 456 | CONFIG_CRYPTO_ZLIB=m |
354 | CONFIG_CRYPTO_LZO=m | 457 | CONFIG_CRYPTO_LZO=m |
355 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 458 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
459 | CONFIG_CRYPTO_USER_API_HASH=m | ||
460 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
356 | # CONFIG_CRYPTO_HW is not set | 461 | # CONFIG_CRYPTO_HW is not set |
357 | CONFIG_CRC16=y | ||
358 | CONFIG_CRC_T10DIF=y | 462 | CONFIG_CRC_T10DIF=y |
463 | CONFIG_XZ_DEC_X86=y | ||
464 | CONFIG_XZ_DEC_POWERPC=y | ||
465 | CONFIG_XZ_DEC_IA64=y | ||
466 | CONFIG_XZ_DEC_ARM=y | ||
467 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
468 | CONFIG_XZ_DEC_SPARC=y | ||
469 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6000_defconfig index 12f211733ba0..c015ddb6fd80 100644 --- a/arch/m68k/configs/bvme6000_defconfig +++ b/arch/m68k/configs/bvme6000_defconfig | |||
@@ -1,53 +1,74 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-bvme6000" | 1 | CONFIG_LOCALVERSION="-bvme6000" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
13 | CONFIG_VME=y | 16 | CONFIG_PARTITION_ADVANCED=y |
14 | CONFIG_BVME6000=y | 17 | CONFIG_AMIGA_PARTITION=y |
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_MAC_PARTITION=y | ||
20 | CONFIG_BSD_DISKLABEL=y | ||
21 | CONFIG_MINIX_SUBPARTITION=y | ||
22 | CONFIG_SOLARIS_X86_PARTITION=y | ||
23 | CONFIG_UNIXWARE_DISKLABEL=y | ||
24 | CONFIG_SUN_PARTITION=y | ||
25 | # CONFIG_EFI_PARTITION is not set | ||
26 | CONFIG_IOSCHED_DEADLINE=m | ||
15 | CONFIG_M68040=y | 27 | CONFIG_M68040=y |
16 | CONFIG_M68060=y | 28 | CONFIG_M68060=y |
29 | CONFIG_VME=y | ||
30 | CONFIG_BVME6000=y | ||
31 | # CONFIG_COMPACTION is not set | ||
32 | CONFIG_CLEANCACHE=y | ||
33 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
17 | CONFIG_BINFMT_AOUT=m | 34 | CONFIG_BINFMT_AOUT=m |
18 | CONFIG_BINFMT_MISC=m | 35 | CONFIG_BINFMT_MISC=m |
19 | CONFIG_PROC_HARDWARE=y | ||
20 | CONFIG_NET=y | 36 | CONFIG_NET=y |
21 | CONFIG_PACKET=y | 37 | CONFIG_PACKET=y |
38 | CONFIG_PACKET_DIAG=m | ||
22 | CONFIG_UNIX=y | 39 | CONFIG_UNIX=y |
40 | CONFIG_UNIX_DIAG=m | ||
41 | CONFIG_XFRM_MIGRATE=y | ||
23 | CONFIG_NET_KEY=y | 42 | CONFIG_NET_KEY=y |
24 | CONFIG_NET_KEY_MIGRATE=y | ||
25 | CONFIG_INET=y | 43 | CONFIG_INET=y |
26 | CONFIG_IP_PNP=y | 44 | CONFIG_IP_PNP=y |
27 | CONFIG_IP_PNP_DHCP=y | 45 | CONFIG_IP_PNP_DHCP=y |
28 | CONFIG_IP_PNP_BOOTP=y | 46 | CONFIG_IP_PNP_BOOTP=y |
29 | CONFIG_IP_PNP_RARP=y | 47 | CONFIG_IP_PNP_RARP=y |
30 | CONFIG_NET_IPIP=m | 48 | CONFIG_NET_IPIP=m |
49 | CONFIG_NET_IPGRE_DEMUX=m | ||
31 | CONFIG_NET_IPGRE=m | 50 | CONFIG_NET_IPGRE=m |
32 | CONFIG_SYN_COOKIES=y | 51 | CONFIG_SYN_COOKIES=y |
52 | CONFIG_NET_IPVTI=m | ||
33 | CONFIG_INET_AH=m | 53 | CONFIG_INET_AH=m |
34 | CONFIG_INET_ESP=m | 54 | CONFIG_INET_ESP=m |
35 | CONFIG_INET_IPCOMP=m | 55 | CONFIG_INET_IPCOMP=m |
36 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 56 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
37 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 57 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
38 | CONFIG_INET_XFRM_MODE_BEET=m | 58 | CONFIG_INET_XFRM_MODE_BEET=m |
59 | # CONFIG_INET_LRO is not set | ||
39 | CONFIG_INET_DIAG=m | 60 | CONFIG_INET_DIAG=m |
61 | CONFIG_INET_UDP_DIAG=m | ||
40 | CONFIG_IPV6_PRIVACY=y | 62 | CONFIG_IPV6_PRIVACY=y |
41 | CONFIG_IPV6_ROUTER_PREF=y | 63 | CONFIG_IPV6_ROUTER_PREF=y |
42 | CONFIG_IPV6_ROUTE_INFO=y | ||
43 | CONFIG_INET6_AH=m | 64 | CONFIG_INET6_AH=m |
44 | CONFIG_INET6_ESP=m | 65 | CONFIG_INET6_ESP=m |
45 | CONFIG_INET6_IPCOMP=m | 66 | CONFIG_INET6_IPCOMP=m |
46 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 67 | CONFIG_IPV6_GRE=m |
47 | CONFIG_IPV6_TUNNEL=m | ||
48 | CONFIG_NETFILTER=y | 68 | CONFIG_NETFILTER=y |
49 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
50 | CONFIG_NF_CONNTRACK=m | 69 | CONFIG_NF_CONNTRACK=m |
70 | CONFIG_NF_CONNTRACK_ZONES=y | ||
71 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
51 | # CONFIG_NF_CT_PROTO_DCCP is not set | 72 | # CONFIG_NF_CT_PROTO_DCCP is not set |
52 | CONFIG_NF_CT_PROTO_UDPLITE=m | 73 | CONFIG_NF_CT_PROTO_UDPLITE=m |
53 | CONFIG_NF_CONNTRACK_AMANDA=m | 74 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -55,25 +76,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
55 | CONFIG_NF_CONNTRACK_H323=m | 76 | CONFIG_NF_CONNTRACK_H323=m |
56 | CONFIG_NF_CONNTRACK_IRC=m | 77 | CONFIG_NF_CONNTRACK_IRC=m |
57 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 78 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
79 | CONFIG_NF_CONNTRACK_SNMP=m | ||
58 | CONFIG_NF_CONNTRACK_PPTP=m | 80 | CONFIG_NF_CONNTRACK_PPTP=m |
59 | CONFIG_NF_CONNTRACK_SANE=m | 81 | CONFIG_NF_CONNTRACK_SANE=m |
60 | CONFIG_NF_CONNTRACK_SIP=m | 82 | CONFIG_NF_CONNTRACK_SIP=m |
61 | CONFIG_NF_CONNTRACK_TFTP=m | 83 | CONFIG_NF_CONNTRACK_TFTP=m |
84 | CONFIG_NETFILTER_XT_SET=m | ||
85 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
62 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 86 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
63 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 87 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
64 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 88 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
89 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
90 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
91 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
65 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 92 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
66 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 93 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
67 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 94 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
95 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
96 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
68 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 97 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
69 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 98 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
70 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 99 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
100 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
101 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
71 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 102 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
72 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 103 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
73 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 104 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
105 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
74 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 106 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
75 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 107 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
76 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 108 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
109 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
77 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 110 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
78 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 111 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
79 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 112 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -84,6 +117,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
84 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 117 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
85 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 118 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
86 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 119 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
120 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
121 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
87 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 122 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
88 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 123 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
89 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 124 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -97,22 +132,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
97 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 132 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
98 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 133 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
99 | CONFIG_NETFILTER_XT_MATCH_U32=m | 134 | CONFIG_NETFILTER_XT_MATCH_U32=m |
135 | CONFIG_IP_SET=m | ||
136 | CONFIG_IP_SET_BITMAP_IP=m | ||
137 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
138 | CONFIG_IP_SET_BITMAP_PORT=m | ||
139 | CONFIG_IP_SET_HASH_IP=m | ||
140 | CONFIG_IP_SET_HASH_IPPORT=m | ||
141 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
142 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
143 | CONFIG_IP_SET_HASH_NET=m | ||
144 | CONFIG_IP_SET_HASH_NETPORT=m | ||
145 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
146 | CONFIG_IP_SET_LIST_SET=m | ||
100 | CONFIG_NF_CONNTRACK_IPV4=m | 147 | CONFIG_NF_CONNTRACK_IPV4=m |
101 | CONFIG_IP_NF_QUEUE=m | ||
102 | CONFIG_IP_NF_IPTABLES=m | 148 | CONFIG_IP_NF_IPTABLES=m |
103 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
104 | CONFIG_IP_NF_MATCH_AH=m | 149 | CONFIG_IP_NF_MATCH_AH=m |
105 | CONFIG_IP_NF_MATCH_ECN=m | 150 | CONFIG_IP_NF_MATCH_ECN=m |
151 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
106 | CONFIG_IP_NF_MATCH_TTL=m | 152 | CONFIG_IP_NF_MATCH_TTL=m |
107 | CONFIG_IP_NF_FILTER=m | 153 | CONFIG_IP_NF_FILTER=m |
108 | CONFIG_IP_NF_TARGET_REJECT=m | 154 | CONFIG_IP_NF_TARGET_REJECT=m |
109 | CONFIG_IP_NF_TARGET_LOG=m | ||
110 | CONFIG_IP_NF_TARGET_ULOG=m | 155 | CONFIG_IP_NF_TARGET_ULOG=m |
111 | CONFIG_NF_NAT=m | 156 | CONFIG_NF_NAT_IPV4=m |
112 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 157 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
113 | CONFIG_IP_NF_TARGET_NETMAP=m | 158 | CONFIG_IP_NF_TARGET_NETMAP=m |
114 | CONFIG_IP_NF_TARGET_REDIRECT=m | 159 | CONFIG_IP_NF_TARGET_REDIRECT=m |
115 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
116 | CONFIG_IP_NF_MANGLE=m | 160 | CONFIG_IP_NF_MANGLE=m |
117 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 161 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
118 | CONFIG_IP_NF_TARGET_ECN=m | 162 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -122,7 +166,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
122 | CONFIG_IP_NF_ARPFILTER=m | 166 | CONFIG_IP_NF_ARPFILTER=m |
123 | CONFIG_IP_NF_ARP_MANGLE=m | 167 | CONFIG_IP_NF_ARP_MANGLE=m |
124 | CONFIG_NF_CONNTRACK_IPV6=m | 168 | CONFIG_NF_CONNTRACK_IPV6=m |
125 | CONFIG_IP6_NF_QUEUE=m | ||
126 | CONFIG_IP6_NF_IPTABLES=m | 169 | CONFIG_IP6_NF_IPTABLES=m |
127 | CONFIG_IP6_NF_MATCH_AH=m | 170 | CONFIG_IP6_NF_MATCH_AH=m |
128 | CONFIG_IP6_NF_MATCH_EUI64=m | 171 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -131,21 +174,34 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
131 | CONFIG_IP6_NF_MATCH_HL=m | 174 | CONFIG_IP6_NF_MATCH_HL=m |
132 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 175 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
133 | CONFIG_IP6_NF_MATCH_MH=m | 176 | CONFIG_IP6_NF_MATCH_MH=m |
177 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
134 | CONFIG_IP6_NF_MATCH_RT=m | 178 | CONFIG_IP6_NF_MATCH_RT=m |
135 | CONFIG_IP6_NF_TARGET_HL=m | 179 | CONFIG_IP6_NF_TARGET_HL=m |
136 | CONFIG_IP6_NF_TARGET_LOG=m | ||
137 | CONFIG_IP6_NF_FILTER=m | 180 | CONFIG_IP6_NF_FILTER=m |
138 | CONFIG_IP6_NF_TARGET_REJECT=m | 181 | CONFIG_IP6_NF_TARGET_REJECT=m |
139 | CONFIG_IP6_NF_MANGLE=m | 182 | CONFIG_IP6_NF_MANGLE=m |
140 | CONFIG_IP6_NF_RAW=m | 183 | CONFIG_IP6_NF_RAW=m |
184 | CONFIG_NF_NAT_IPV6=m | ||
185 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
186 | CONFIG_IP6_NF_TARGET_NPT=m | ||
141 | CONFIG_IP_DCCP=m | 187 | CONFIG_IP_DCCP=m |
142 | # CONFIG_IP_DCCP_CCID3 is not set | 188 | # CONFIG_IP_DCCP_CCID3 is not set |
189 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
190 | CONFIG_RDS=m | ||
191 | CONFIG_RDS_TCP=m | ||
192 | CONFIG_L2TP=m | ||
143 | CONFIG_ATALK=m | 193 | CONFIG_ATALK=m |
194 | CONFIG_BATMAN_ADV=m | ||
195 | CONFIG_BATMAN_ADV_DAT=y | ||
196 | # CONFIG_WIRELESS is not set | ||
144 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 197 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
198 | CONFIG_DEVTMPFS=y | ||
145 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 199 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
200 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
146 | CONFIG_CONNECTOR=m | 201 | CONFIG_CONNECTOR=m |
147 | CONFIG_BLK_DEV_LOOP=y | 202 | CONFIG_BLK_DEV_LOOP=y |
148 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 203 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
204 | CONFIG_BLK_DEV_DRBD=m | ||
149 | CONFIG_BLK_DEV_NBD=m | 205 | CONFIG_BLK_DEV_NBD=m |
150 | CONFIG_BLK_DEV_RAM=y | 206 | CONFIG_BLK_DEV_RAM=y |
151 | CONFIG_CDROM_PKTCDVD=m | 207 | CONFIG_CDROM_PKTCDVD=m |
@@ -160,103 +216,131 @@ CONFIG_BLK_DEV_SR=y | |||
160 | CONFIG_BLK_DEV_SR_VENDOR=y | 216 | CONFIG_BLK_DEV_SR_VENDOR=y |
161 | CONFIG_CHR_DEV_SG=m | 217 | CONFIG_CHR_DEV_SG=m |
162 | CONFIG_SCSI_CONSTANTS=y | 218 | CONFIG_SCSI_CONSTANTS=y |
163 | CONFIG_SCSI_SAS_LIBSAS=m | 219 | CONFIG_SCSI_SAS_ATTRS=m |
164 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
165 | CONFIG_SCSI_SRP_ATTRS=m | ||
166 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
167 | CONFIG_ISCSI_TCP=m | 220 | CONFIG_ISCSI_TCP=m |
221 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
168 | CONFIG_BVME6000_SCSI=y | 222 | CONFIG_BVME6000_SCSI=y |
169 | CONFIG_MD=y | 223 | CONFIG_MD=y |
170 | CONFIG_BLK_DEV_MD=m | ||
171 | CONFIG_MD_LINEAR=m | 224 | CONFIG_MD_LINEAR=m |
172 | CONFIG_MD_RAID0=m | 225 | CONFIG_MD_RAID0=m |
173 | CONFIG_MD_RAID1=m | ||
174 | CONFIG_MD_RAID456=m | ||
175 | CONFIG_BLK_DEV_DM=m | 226 | CONFIG_BLK_DEV_DM=m |
176 | CONFIG_DM_CRYPT=m | 227 | CONFIG_DM_CRYPT=m |
177 | CONFIG_DM_SNAPSHOT=m | 228 | CONFIG_DM_SNAPSHOT=m |
229 | CONFIG_DM_THIN_PROVISIONING=m | ||
230 | CONFIG_DM_CACHE=m | ||
178 | CONFIG_DM_MIRROR=m | 231 | CONFIG_DM_MIRROR=m |
232 | CONFIG_DM_RAID=m | ||
179 | CONFIG_DM_ZERO=m | 233 | CONFIG_DM_ZERO=m |
180 | CONFIG_DM_MULTIPATH=m | 234 | CONFIG_DM_MULTIPATH=m |
181 | CONFIG_DM_UEVENT=y | 235 | CONFIG_DM_UEVENT=y |
236 | CONFIG_TARGET_CORE=m | ||
237 | CONFIG_TCM_IBLOCK=m | ||
238 | CONFIG_TCM_FILEIO=m | ||
239 | CONFIG_TCM_PSCSI=m | ||
182 | CONFIG_NETDEVICES=y | 240 | CONFIG_NETDEVICES=y |
183 | CONFIG_DUMMY=m | 241 | CONFIG_DUMMY=m |
184 | CONFIG_MACVLAN=m | ||
185 | CONFIG_EQUALIZER=m | 242 | CONFIG_EQUALIZER=m |
243 | CONFIG_NET_TEAM=m | ||
244 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
245 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
246 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
247 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
248 | CONFIG_VXLAN=m | ||
249 | CONFIG_NETCONSOLE=m | ||
250 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
186 | CONFIG_VETH=m | 251 | CONFIG_VETH=m |
187 | CONFIG_NET_ETHERNET=y | 252 | # CONFIG_NET_CADENCE is not set |
253 | # CONFIG_NET_VENDOR_BROADCOM is not set | ||
188 | CONFIG_BVME6000_NET=y | 254 | CONFIG_BVME6000_NET=y |
189 | # CONFIG_NETDEV_1000 is not set | 255 | # CONFIG_NET_VENDOR_MARVELL is not set |
190 | # CONFIG_NETDEV_10000 is not set | 256 | # CONFIG_NET_VENDOR_MICREL is not set |
257 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
258 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
259 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
260 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
191 | CONFIG_PPP=m | 261 | CONFIG_PPP=m |
192 | CONFIG_PPP_FILTER=y | ||
193 | CONFIG_PPP_ASYNC=m | ||
194 | CONFIG_PPP_SYNC_TTY=m | ||
195 | CONFIG_PPP_DEFLATE=m | ||
196 | CONFIG_PPP_BSDCOMP=m | 262 | CONFIG_PPP_BSDCOMP=m |
263 | CONFIG_PPP_DEFLATE=m | ||
264 | CONFIG_PPP_FILTER=y | ||
197 | CONFIG_PPP_MPPE=m | 265 | CONFIG_PPP_MPPE=m |
198 | CONFIG_PPPOE=m | 266 | CONFIG_PPPOE=m |
267 | CONFIG_PPTP=m | ||
268 | CONFIG_PPPOL2TP=m | ||
269 | CONFIG_PPP_ASYNC=m | ||
270 | CONFIG_PPP_SYNC_TTY=m | ||
199 | CONFIG_SLIP=m | 271 | CONFIG_SLIP=m |
200 | CONFIG_SLIP_COMPRESSED=y | 272 | CONFIG_SLIP_COMPRESSED=y |
201 | CONFIG_SLIP_SMART=y | 273 | CONFIG_SLIP_SMART=y |
202 | CONFIG_SLIP_MODE_SLIP6=y | 274 | CONFIG_SLIP_MODE_SLIP6=y |
203 | CONFIG_NETCONSOLE=m | 275 | # CONFIG_WLAN is not set |
204 | CONFIG_NETCONSOLE_DYNAMIC=y | 276 | CONFIG_INPUT_EVDEV=m |
205 | CONFIG_INPUT_FF_MEMLESS=m | ||
206 | # CONFIG_KEYBOARD_ATKBD is not set | 277 | # CONFIG_KEYBOARD_ATKBD is not set |
207 | CONFIG_MOUSE_PS2=m | 278 | # CONFIG_MOUSE_PS2 is not set |
208 | CONFIG_MOUSE_SERIAL=m | 279 | # CONFIG_SERIO is not set |
209 | CONFIG_SERIO=m | ||
210 | # CONFIG_SERIO_SERPORT is not set | ||
211 | CONFIG_VT_HW_CONSOLE_BINDING=y | 280 | CONFIG_VT_HW_CONSOLE_BINDING=y |
281 | # CONFIG_LEGACY_PTYS is not set | ||
212 | # CONFIG_DEVKMEM is not set | 282 | # CONFIG_DEVKMEM is not set |
213 | # CONFIG_HW_RANDOM is not set | 283 | # CONFIG_HW_RANDOM is not set |
214 | CONFIG_GEN_RTC=m | 284 | CONFIG_NTP_PPS=y |
215 | CONFIG_GEN_RTC_X=y | 285 | CONFIG_PPS_CLIENT_LDISC=m |
286 | CONFIG_PTP_1588_CLOCK=m | ||
216 | # CONFIG_HWMON is not set | 287 | # CONFIG_HWMON is not set |
217 | CONFIG_HID=m | 288 | CONFIG_HID=m |
218 | CONFIG_HIDRAW=y | 289 | CONFIG_HIDRAW=y |
290 | CONFIG_UHID=m | ||
291 | # CONFIG_HID_GENERIC is not set | ||
219 | # CONFIG_USB_SUPPORT is not set | 292 | # CONFIG_USB_SUPPORT is not set |
293 | CONFIG_RTC_CLASS=y | ||
294 | CONFIG_RTC_DRV_GENERIC=m | ||
295 | # CONFIG_IOMMU_SUPPORT is not set | ||
296 | CONFIG_PROC_HARDWARE=y | ||
220 | CONFIG_EXT2_FS=y | 297 | CONFIG_EXT2_FS=y |
221 | CONFIG_EXT3_FS=y | 298 | CONFIG_EXT3_FS=y |
222 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 299 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
223 | # CONFIG_EXT3_FS_XATTR is not set | 300 | # CONFIG_EXT3_FS_XATTR is not set |
301 | CONFIG_EXT4_FS=y | ||
224 | CONFIG_REISERFS_FS=m | 302 | CONFIG_REISERFS_FS=m |
225 | CONFIG_JFS_FS=m | 303 | CONFIG_JFS_FS=m |
226 | CONFIG_XFS_FS=m | 304 | CONFIG_XFS_FS=m |
227 | CONFIG_OCFS2_FS=m | 305 | CONFIG_OCFS2_FS=m |
228 | # CONFIG_OCFS2_FS_STATS is not set | ||
229 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 306 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
307 | CONFIG_FANOTIFY=y | ||
230 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 308 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
231 | # CONFIG_PRINT_QUOTA_WARNING is not set | 309 | # CONFIG_PRINT_QUOTA_WARNING is not set |
232 | CONFIG_AUTOFS_FS=m | ||
233 | CONFIG_AUTOFS4_FS=m | 310 | CONFIG_AUTOFS4_FS=m |
234 | CONFIG_FUSE_FS=m | 311 | CONFIG_FUSE_FS=m |
312 | CONFIG_CUSE=m | ||
235 | CONFIG_ISO9660_FS=y | 313 | CONFIG_ISO9660_FS=y |
236 | CONFIG_JOLIET=y | 314 | CONFIG_JOLIET=y |
237 | CONFIG_ZISOFS=y | 315 | CONFIG_ZISOFS=y |
238 | CONFIG_UDF_FS=m | 316 | CONFIG_UDF_FS=m |
239 | CONFIG_MSDOS_FS=y | 317 | CONFIG_MSDOS_FS=m |
240 | CONFIG_VFAT_FS=m | 318 | CONFIG_VFAT_FS=m |
241 | CONFIG_PROC_KCORE=y | 319 | CONFIG_PROC_KCORE=y |
242 | CONFIG_TMPFS=y | 320 | CONFIG_TMPFS=y |
243 | CONFIG_AFFS_FS=m | 321 | CONFIG_AFFS_FS=m |
322 | CONFIG_ECRYPT_FS=m | ||
323 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
244 | CONFIG_HFS_FS=m | 324 | CONFIG_HFS_FS=m |
245 | CONFIG_HFSPLUS_FS=m | 325 | CONFIG_HFSPLUS_FS=m |
246 | CONFIG_CRAMFS=m | 326 | CONFIG_CRAMFS=m |
247 | CONFIG_SQUASHFS=m | 327 | CONFIG_SQUASHFS=m |
248 | CONFIG_MINIX_FS=y | 328 | CONFIG_SQUASHFS_LZO=y |
329 | CONFIG_MINIX_FS=m | ||
330 | CONFIG_OMFS_FS=m | ||
249 | CONFIG_HPFS_FS=m | 331 | CONFIG_HPFS_FS=m |
332 | CONFIG_QNX4FS_FS=m | ||
333 | CONFIG_QNX6FS_FS=m | ||
250 | CONFIG_SYSV_FS=m | 334 | CONFIG_SYSV_FS=m |
251 | CONFIG_UFS_FS=m | 335 | CONFIG_UFS_FS=m |
252 | CONFIG_NFS_FS=y | 336 | CONFIG_NFS_FS=y |
253 | CONFIG_NFS_V3=y | ||
254 | CONFIG_NFS_V4=y | 337 | CONFIG_NFS_V4=y |
338 | CONFIG_NFS_SWAP=y | ||
255 | CONFIG_ROOT_NFS=y | 339 | CONFIG_ROOT_NFS=y |
256 | CONFIG_NFSD=m | 340 | CONFIG_NFSD=m |
257 | CONFIG_NFSD_V3=y | 341 | CONFIG_NFSD_V3=y |
258 | CONFIG_SMB_FS=m | 342 | CONFIG_CIFS=m |
259 | CONFIG_SMB_NLS_DEFAULT=y | 343 | # CONFIG_CIFS_DEBUG is not set |
260 | CONFIG_CODA_FS=m | 344 | CONFIG_CODA_FS=m |
261 | CONFIG_NLS_CODEPAGE_437=y | 345 | CONFIG_NLS_CODEPAGE_437=y |
262 | CONFIG_NLS_CODEPAGE_737=m | 346 | CONFIG_NLS_CODEPAGE_737=m |
@@ -295,10 +379,23 @@ CONFIG_NLS_ISO8859_14=m | |||
295 | CONFIG_NLS_ISO8859_15=m | 379 | CONFIG_NLS_ISO8859_15=m |
296 | CONFIG_NLS_KOI8_R=m | 380 | CONFIG_NLS_KOI8_R=m |
297 | CONFIG_NLS_KOI8_U=m | 381 | CONFIG_NLS_KOI8_U=m |
382 | CONFIG_NLS_MAC_ROMAN=m | ||
383 | CONFIG_NLS_MAC_CELTIC=m | ||
384 | CONFIG_NLS_MAC_CENTEURO=m | ||
385 | CONFIG_NLS_MAC_CROATIAN=m | ||
386 | CONFIG_NLS_MAC_CYRILLIC=m | ||
387 | CONFIG_NLS_MAC_GAELIC=m | ||
388 | CONFIG_NLS_MAC_GREEK=m | ||
389 | CONFIG_NLS_MAC_ICELAND=m | ||
390 | CONFIG_NLS_MAC_INUIT=m | ||
391 | CONFIG_NLS_MAC_ROMANIAN=m | ||
392 | CONFIG_NLS_MAC_TURKISH=m | ||
298 | CONFIG_DLM=m | 393 | CONFIG_DLM=m |
299 | CONFIG_MAGIC_SYSRQ=y | 394 | CONFIG_MAGIC_SYSRQ=y |
300 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 395 | CONFIG_ASYNC_RAID6_TEST=m |
301 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 396 | CONFIG_ENCRYPTED_KEYS=m |
397 | CONFIG_CRYPTO_MANAGER=y | ||
398 | CONFIG_CRYPTO_USER=m | ||
302 | CONFIG_CRYPTO_NULL=m | 399 | CONFIG_CRYPTO_NULL=m |
303 | CONFIG_CRYPTO_CRYPTD=m | 400 | CONFIG_CRYPTO_CRYPTD=m |
304 | CONFIG_CRYPTO_TEST=m | 401 | CONFIG_CRYPTO_TEST=m |
@@ -308,19 +405,16 @@ CONFIG_CRYPTO_CTS=m | |||
308 | CONFIG_CRYPTO_LRW=m | 405 | CONFIG_CRYPTO_LRW=m |
309 | CONFIG_CRYPTO_PCBC=m | 406 | CONFIG_CRYPTO_PCBC=m |
310 | CONFIG_CRYPTO_XTS=m | 407 | CONFIG_CRYPTO_XTS=m |
311 | CONFIG_CRYPTO_HMAC=y | ||
312 | CONFIG_CRYPTO_XCBC=m | 408 | CONFIG_CRYPTO_XCBC=m |
313 | CONFIG_CRYPTO_MD4=m | 409 | CONFIG_CRYPTO_VMAC=m |
314 | CONFIG_CRYPTO_MICHAEL_MIC=m | 410 | CONFIG_CRYPTO_MICHAEL_MIC=m |
315 | CONFIG_CRYPTO_RMD128=m | 411 | CONFIG_CRYPTO_RMD128=m |
316 | CONFIG_CRYPTO_RMD160=m | 412 | CONFIG_CRYPTO_RMD160=m |
317 | CONFIG_CRYPTO_RMD256=m | 413 | CONFIG_CRYPTO_RMD256=m |
318 | CONFIG_CRYPTO_RMD320=m | 414 | CONFIG_CRYPTO_RMD320=m |
319 | CONFIG_CRYPTO_SHA256=m | ||
320 | CONFIG_CRYPTO_SHA512=m | 415 | CONFIG_CRYPTO_SHA512=m |
321 | CONFIG_CRYPTO_TGR192=m | 416 | CONFIG_CRYPTO_TGR192=m |
322 | CONFIG_CRYPTO_WP512=m | 417 | CONFIG_CRYPTO_WP512=m |
323 | CONFIG_CRYPTO_AES=m | ||
324 | CONFIG_CRYPTO_ANUBIS=m | 418 | CONFIG_CRYPTO_ANUBIS=m |
325 | CONFIG_CRYPTO_BLOWFISH=m | 419 | CONFIG_CRYPTO_BLOWFISH=m |
326 | CONFIG_CRYPTO_CAMELLIA=m | 420 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -336,7 +430,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
336 | CONFIG_CRYPTO_ZLIB=m | 430 | CONFIG_CRYPTO_ZLIB=m |
337 | CONFIG_CRYPTO_LZO=m | 431 | CONFIG_CRYPTO_LZO=m |
338 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 432 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
433 | CONFIG_CRYPTO_USER_API_HASH=m | ||
434 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
339 | # CONFIG_CRYPTO_HW is not set | 435 | # CONFIG_CRYPTO_HW is not set |
340 | CONFIG_CRC16=m | ||
341 | CONFIG_CRC_T10DIF=y | 436 | CONFIG_CRC_T10DIF=y |
342 | CONFIG_CRC32=m | 437 | CONFIG_XZ_DEC_X86=y |
438 | CONFIG_XZ_DEC_POWERPC=y | ||
439 | CONFIG_XZ_DEC_IA64=y | ||
440 | CONFIG_XZ_DEC_ARM=y | ||
441 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
442 | CONFIG_XZ_DEC_SPARC=y | ||
443 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_defconfig index 215389a5407f..ec7382d8afff 100644 --- a/arch/m68k/configs/hp300_defconfig +++ b/arch/m68k/configs/hp300_defconfig | |||
@@ -1,54 +1,76 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-hp300" | 1 | CONFIG_LOCALVERSION="-hp300" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
13 | CONFIG_HP300=y | 16 | CONFIG_PARTITION_ADVANCED=y |
17 | CONFIG_AMIGA_PARTITION=y | ||
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_MAC_PARTITION=y | ||
20 | CONFIG_BSD_DISKLABEL=y | ||
21 | CONFIG_MINIX_SUBPARTITION=y | ||
22 | CONFIG_SOLARIS_X86_PARTITION=y | ||
23 | CONFIG_UNIXWARE_DISKLABEL=y | ||
24 | CONFIG_SUN_PARTITION=y | ||
25 | # CONFIG_EFI_PARTITION is not set | ||
26 | CONFIG_SYSV68_PARTITION=y | ||
27 | CONFIG_IOSCHED_DEADLINE=m | ||
14 | CONFIG_M68020=y | 28 | CONFIG_M68020=y |
15 | CONFIG_M68030=y | 29 | CONFIG_M68030=y |
16 | CONFIG_M68040=y | 30 | CONFIG_M68040=y |
17 | CONFIG_M68060=y | 31 | CONFIG_M68060=y |
32 | CONFIG_HP300=y | ||
33 | # CONFIG_COMPACTION is not set | ||
34 | CONFIG_CLEANCACHE=y | ||
35 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
18 | CONFIG_BINFMT_AOUT=m | 36 | CONFIG_BINFMT_AOUT=m |
19 | CONFIG_BINFMT_MISC=m | 37 | CONFIG_BINFMT_MISC=m |
20 | CONFIG_PROC_HARDWARE=y | ||
21 | CONFIG_NET=y | 38 | CONFIG_NET=y |
22 | CONFIG_PACKET=y | 39 | CONFIG_PACKET=y |
40 | CONFIG_PACKET_DIAG=m | ||
23 | CONFIG_UNIX=y | 41 | CONFIG_UNIX=y |
42 | CONFIG_UNIX_DIAG=m | ||
43 | CONFIG_XFRM_MIGRATE=y | ||
24 | CONFIG_NET_KEY=y | 44 | CONFIG_NET_KEY=y |
25 | CONFIG_NET_KEY_MIGRATE=y | ||
26 | CONFIG_INET=y | 45 | CONFIG_INET=y |
27 | CONFIG_IP_PNP=y | 46 | CONFIG_IP_PNP=y |
28 | CONFIG_IP_PNP_DHCP=y | 47 | CONFIG_IP_PNP_DHCP=y |
29 | CONFIG_IP_PNP_BOOTP=y | 48 | CONFIG_IP_PNP_BOOTP=y |
30 | CONFIG_IP_PNP_RARP=y | 49 | CONFIG_IP_PNP_RARP=y |
31 | CONFIG_NET_IPIP=m | 50 | CONFIG_NET_IPIP=m |
51 | CONFIG_NET_IPGRE_DEMUX=m | ||
32 | CONFIG_NET_IPGRE=m | 52 | CONFIG_NET_IPGRE=m |
33 | CONFIG_SYN_COOKIES=y | 53 | CONFIG_SYN_COOKIES=y |
54 | CONFIG_NET_IPVTI=m | ||
34 | CONFIG_INET_AH=m | 55 | CONFIG_INET_AH=m |
35 | CONFIG_INET_ESP=m | 56 | CONFIG_INET_ESP=m |
36 | CONFIG_INET_IPCOMP=m | 57 | CONFIG_INET_IPCOMP=m |
37 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 58 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
38 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 59 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
39 | CONFIG_INET_XFRM_MODE_BEET=m | 60 | CONFIG_INET_XFRM_MODE_BEET=m |
61 | # CONFIG_INET_LRO is not set | ||
40 | CONFIG_INET_DIAG=m | 62 | CONFIG_INET_DIAG=m |
63 | CONFIG_INET_UDP_DIAG=m | ||
41 | CONFIG_IPV6_PRIVACY=y | 64 | CONFIG_IPV6_PRIVACY=y |
42 | CONFIG_IPV6_ROUTER_PREF=y | 65 | CONFIG_IPV6_ROUTER_PREF=y |
43 | CONFIG_IPV6_ROUTE_INFO=y | ||
44 | CONFIG_INET6_AH=m | 66 | CONFIG_INET6_AH=m |
45 | CONFIG_INET6_ESP=m | 67 | CONFIG_INET6_ESP=m |
46 | CONFIG_INET6_IPCOMP=m | 68 | CONFIG_INET6_IPCOMP=m |
47 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 69 | CONFIG_IPV6_GRE=m |
48 | CONFIG_IPV6_TUNNEL=m | ||
49 | CONFIG_NETFILTER=y | 70 | CONFIG_NETFILTER=y |
50 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
51 | CONFIG_NF_CONNTRACK=m | 71 | CONFIG_NF_CONNTRACK=m |
72 | CONFIG_NF_CONNTRACK_ZONES=y | ||
73 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
52 | # CONFIG_NF_CT_PROTO_DCCP is not set | 74 | # CONFIG_NF_CT_PROTO_DCCP is not set |
53 | CONFIG_NF_CT_PROTO_UDPLITE=m | 75 | CONFIG_NF_CT_PROTO_UDPLITE=m |
54 | CONFIG_NF_CONNTRACK_AMANDA=m | 76 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -56,25 +78,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
56 | CONFIG_NF_CONNTRACK_H323=m | 78 | CONFIG_NF_CONNTRACK_H323=m |
57 | CONFIG_NF_CONNTRACK_IRC=m | 79 | CONFIG_NF_CONNTRACK_IRC=m |
58 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 80 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
81 | CONFIG_NF_CONNTRACK_SNMP=m | ||
59 | CONFIG_NF_CONNTRACK_PPTP=m | 82 | CONFIG_NF_CONNTRACK_PPTP=m |
60 | CONFIG_NF_CONNTRACK_SANE=m | 83 | CONFIG_NF_CONNTRACK_SANE=m |
61 | CONFIG_NF_CONNTRACK_SIP=m | 84 | CONFIG_NF_CONNTRACK_SIP=m |
62 | CONFIG_NF_CONNTRACK_TFTP=m | 85 | CONFIG_NF_CONNTRACK_TFTP=m |
86 | CONFIG_NETFILTER_XT_SET=m | ||
87 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
63 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 88 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
64 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 89 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
65 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 90 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
91 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
92 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
93 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
66 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 94 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
67 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 95 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
68 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 96 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
97 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
98 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
69 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 99 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
70 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 100 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
71 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 101 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
102 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
103 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
72 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 104 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
73 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 105 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
74 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 106 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
107 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
75 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 108 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
76 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 109 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
77 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 110 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
111 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
78 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 112 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
79 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 113 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
80 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 114 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -85,6 +119,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
85 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 119 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
86 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 120 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
87 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 121 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
122 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
123 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
88 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 124 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
89 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 125 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
90 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 126 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -98,22 +134,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
98 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 134 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
99 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 135 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
100 | CONFIG_NETFILTER_XT_MATCH_U32=m | 136 | CONFIG_NETFILTER_XT_MATCH_U32=m |
137 | CONFIG_IP_SET=m | ||
138 | CONFIG_IP_SET_BITMAP_IP=m | ||
139 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
140 | CONFIG_IP_SET_BITMAP_PORT=m | ||
141 | CONFIG_IP_SET_HASH_IP=m | ||
142 | CONFIG_IP_SET_HASH_IPPORT=m | ||
143 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
144 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
145 | CONFIG_IP_SET_HASH_NET=m | ||
146 | CONFIG_IP_SET_HASH_NETPORT=m | ||
147 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
148 | CONFIG_IP_SET_LIST_SET=m | ||
101 | CONFIG_NF_CONNTRACK_IPV4=m | 149 | CONFIG_NF_CONNTRACK_IPV4=m |
102 | CONFIG_IP_NF_QUEUE=m | ||
103 | CONFIG_IP_NF_IPTABLES=m | 150 | CONFIG_IP_NF_IPTABLES=m |
104 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
105 | CONFIG_IP_NF_MATCH_AH=m | 151 | CONFIG_IP_NF_MATCH_AH=m |
106 | CONFIG_IP_NF_MATCH_ECN=m | 152 | CONFIG_IP_NF_MATCH_ECN=m |
153 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
107 | CONFIG_IP_NF_MATCH_TTL=m | 154 | CONFIG_IP_NF_MATCH_TTL=m |
108 | CONFIG_IP_NF_FILTER=m | 155 | CONFIG_IP_NF_FILTER=m |
109 | CONFIG_IP_NF_TARGET_REJECT=m | 156 | CONFIG_IP_NF_TARGET_REJECT=m |
110 | CONFIG_IP_NF_TARGET_LOG=m | ||
111 | CONFIG_IP_NF_TARGET_ULOG=m | 157 | CONFIG_IP_NF_TARGET_ULOG=m |
112 | CONFIG_NF_NAT=m | 158 | CONFIG_NF_NAT_IPV4=m |
113 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 159 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
114 | CONFIG_IP_NF_TARGET_NETMAP=m | 160 | CONFIG_IP_NF_TARGET_NETMAP=m |
115 | CONFIG_IP_NF_TARGET_REDIRECT=m | 161 | CONFIG_IP_NF_TARGET_REDIRECT=m |
116 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
117 | CONFIG_IP_NF_MANGLE=m | 162 | CONFIG_IP_NF_MANGLE=m |
118 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 163 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
119 | CONFIG_IP_NF_TARGET_ECN=m | 164 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -123,7 +168,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
123 | CONFIG_IP_NF_ARPFILTER=m | 168 | CONFIG_IP_NF_ARPFILTER=m |
124 | CONFIG_IP_NF_ARP_MANGLE=m | 169 | CONFIG_IP_NF_ARP_MANGLE=m |
125 | CONFIG_NF_CONNTRACK_IPV6=m | 170 | CONFIG_NF_CONNTRACK_IPV6=m |
126 | CONFIG_IP6_NF_QUEUE=m | ||
127 | CONFIG_IP6_NF_IPTABLES=m | 171 | CONFIG_IP6_NF_IPTABLES=m |
128 | CONFIG_IP6_NF_MATCH_AH=m | 172 | CONFIG_IP6_NF_MATCH_AH=m |
129 | CONFIG_IP6_NF_MATCH_EUI64=m | 173 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -132,21 +176,34 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
132 | CONFIG_IP6_NF_MATCH_HL=m | 176 | CONFIG_IP6_NF_MATCH_HL=m |
133 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 177 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
134 | CONFIG_IP6_NF_MATCH_MH=m | 178 | CONFIG_IP6_NF_MATCH_MH=m |
179 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
135 | CONFIG_IP6_NF_MATCH_RT=m | 180 | CONFIG_IP6_NF_MATCH_RT=m |
136 | CONFIG_IP6_NF_TARGET_HL=m | 181 | CONFIG_IP6_NF_TARGET_HL=m |
137 | CONFIG_IP6_NF_TARGET_LOG=m | ||
138 | CONFIG_IP6_NF_FILTER=m | 182 | CONFIG_IP6_NF_FILTER=m |
139 | CONFIG_IP6_NF_TARGET_REJECT=m | 183 | CONFIG_IP6_NF_TARGET_REJECT=m |
140 | CONFIG_IP6_NF_MANGLE=m | 184 | CONFIG_IP6_NF_MANGLE=m |
141 | CONFIG_IP6_NF_RAW=m | 185 | CONFIG_IP6_NF_RAW=m |
186 | CONFIG_NF_NAT_IPV6=m | ||
187 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
188 | CONFIG_IP6_NF_TARGET_NPT=m | ||
142 | CONFIG_IP_DCCP=m | 189 | CONFIG_IP_DCCP=m |
143 | # CONFIG_IP_DCCP_CCID3 is not set | 190 | # CONFIG_IP_DCCP_CCID3 is not set |
191 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
192 | CONFIG_RDS=m | ||
193 | CONFIG_RDS_TCP=m | ||
194 | CONFIG_L2TP=m | ||
144 | CONFIG_ATALK=m | 195 | CONFIG_ATALK=m |
196 | CONFIG_BATMAN_ADV=m | ||
197 | CONFIG_BATMAN_ADV_DAT=y | ||
198 | # CONFIG_WIRELESS is not set | ||
145 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 199 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
200 | CONFIG_DEVTMPFS=y | ||
146 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 201 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
202 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
147 | CONFIG_CONNECTOR=m | 203 | CONFIG_CONNECTOR=m |
148 | CONFIG_BLK_DEV_LOOP=y | 204 | CONFIG_BLK_DEV_LOOP=y |
149 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 205 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
206 | CONFIG_BLK_DEV_DRBD=m | ||
150 | CONFIG_BLK_DEV_NBD=m | 207 | CONFIG_BLK_DEV_NBD=m |
151 | CONFIG_BLK_DEV_RAM=y | 208 | CONFIG_BLK_DEV_RAM=y |
152 | CONFIG_CDROM_PKTCDVD=m | 209 | CONFIG_CDROM_PKTCDVD=m |
@@ -161,59 +218,77 @@ CONFIG_BLK_DEV_SR=y | |||
161 | CONFIG_BLK_DEV_SR_VENDOR=y | 218 | CONFIG_BLK_DEV_SR_VENDOR=y |
162 | CONFIG_CHR_DEV_SG=m | 219 | CONFIG_CHR_DEV_SG=m |
163 | CONFIG_SCSI_CONSTANTS=y | 220 | CONFIG_SCSI_CONSTANTS=y |
164 | CONFIG_SCSI_SAS_LIBSAS=m | 221 | CONFIG_SCSI_SAS_ATTRS=m |
165 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
166 | CONFIG_SCSI_SRP_ATTRS=m | ||
167 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
168 | CONFIG_ISCSI_TCP=m | 222 | CONFIG_ISCSI_TCP=m |
223 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
169 | CONFIG_MD=y | 224 | CONFIG_MD=y |
170 | CONFIG_BLK_DEV_MD=m | ||
171 | CONFIG_MD_LINEAR=m | 225 | CONFIG_MD_LINEAR=m |
172 | CONFIG_MD_RAID0=m | 226 | CONFIG_MD_RAID0=m |
173 | CONFIG_MD_RAID1=m | ||
174 | CONFIG_MD_RAID456=m | ||
175 | CONFIG_BLK_DEV_DM=m | 227 | CONFIG_BLK_DEV_DM=m |
176 | CONFIG_DM_CRYPT=m | 228 | CONFIG_DM_CRYPT=m |
177 | CONFIG_DM_SNAPSHOT=m | 229 | CONFIG_DM_SNAPSHOT=m |
230 | CONFIG_DM_THIN_PROVISIONING=m | ||
231 | CONFIG_DM_CACHE=m | ||
178 | CONFIG_DM_MIRROR=m | 232 | CONFIG_DM_MIRROR=m |
233 | CONFIG_DM_RAID=m | ||
179 | CONFIG_DM_ZERO=m | 234 | CONFIG_DM_ZERO=m |
180 | CONFIG_DM_MULTIPATH=m | 235 | CONFIG_DM_MULTIPATH=m |
181 | CONFIG_DM_UEVENT=y | 236 | CONFIG_DM_UEVENT=y |
237 | CONFIG_TARGET_CORE=m | ||
238 | CONFIG_TCM_IBLOCK=m | ||
239 | CONFIG_TCM_FILEIO=m | ||
240 | CONFIG_TCM_PSCSI=m | ||
182 | CONFIG_NETDEVICES=y | 241 | CONFIG_NETDEVICES=y |
183 | CONFIG_DUMMY=m | 242 | CONFIG_DUMMY=m |
184 | CONFIG_MACVLAN=m | ||
185 | CONFIG_EQUALIZER=m | 243 | CONFIG_EQUALIZER=m |
244 | CONFIG_NET_TEAM=m | ||
245 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
246 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
247 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
248 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
249 | CONFIG_VXLAN=m | ||
250 | CONFIG_NETCONSOLE=m | ||
251 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
186 | CONFIG_VETH=m | 252 | CONFIG_VETH=m |
187 | CONFIG_NET_ETHERNET=y | ||
188 | CONFIG_HPLANCE=y | 253 | CONFIG_HPLANCE=y |
189 | # CONFIG_NETDEV_1000 is not set | 254 | # CONFIG_NET_CADENCE is not set |
190 | # CONFIG_NETDEV_10000 is not set | 255 | # CONFIG_NET_VENDOR_BROADCOM is not set |
256 | # CONFIG_NET_VENDOR_INTEL is not set | ||
257 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
258 | # CONFIG_NET_VENDOR_MICREL is not set | ||
259 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
260 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
261 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
262 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
191 | CONFIG_PPP=m | 263 | CONFIG_PPP=m |
192 | CONFIG_PPP_FILTER=y | ||
193 | CONFIG_PPP_ASYNC=m | ||
194 | CONFIG_PPP_SYNC_TTY=m | ||
195 | CONFIG_PPP_DEFLATE=m | ||
196 | CONFIG_PPP_BSDCOMP=m | 264 | CONFIG_PPP_BSDCOMP=m |
265 | CONFIG_PPP_DEFLATE=m | ||
266 | CONFIG_PPP_FILTER=y | ||
197 | CONFIG_PPP_MPPE=m | 267 | CONFIG_PPP_MPPE=m |
198 | CONFIG_PPPOE=m | 268 | CONFIG_PPPOE=m |
269 | CONFIG_PPTP=m | ||
270 | CONFIG_PPPOL2TP=m | ||
271 | CONFIG_PPP_ASYNC=m | ||
272 | CONFIG_PPP_SYNC_TTY=m | ||
199 | CONFIG_SLIP=m | 273 | CONFIG_SLIP=m |
200 | CONFIG_SLIP_COMPRESSED=y | 274 | CONFIG_SLIP_COMPRESSED=y |
201 | CONFIG_SLIP_SMART=y | 275 | CONFIG_SLIP_SMART=y |
202 | CONFIG_SLIP_MODE_SLIP6=y | 276 | CONFIG_SLIP_MODE_SLIP6=y |
203 | CONFIG_NETCONSOLE=m | 277 | # CONFIG_WLAN is not set |
204 | CONFIG_NETCONSOLE_DYNAMIC=y | 278 | CONFIG_INPUT_EVDEV=m |
205 | CONFIG_INPUT_FF_MEMLESS=m | ||
206 | # CONFIG_KEYBOARD_ATKBD is not set | 279 | # CONFIG_KEYBOARD_ATKBD is not set |
207 | CONFIG_MOUSE_PS2=m | 280 | # CONFIG_MOUSE_PS2 is not set |
208 | CONFIG_MOUSE_SERIAL=m | 281 | CONFIG_MOUSE_SERIAL=m |
209 | CONFIG_INPUT_MISC=y | 282 | CONFIG_INPUT_MISC=y |
210 | CONFIG_HP_SDC_RTC=m | 283 | CONFIG_HP_SDC_RTC=m |
211 | # CONFIG_SERIO_SERPORT is not set | 284 | CONFIG_SERIO_SERPORT=m |
212 | CONFIG_VT_HW_CONSOLE_BINDING=y | 285 | CONFIG_VT_HW_CONSOLE_BINDING=y |
286 | # CONFIG_LEGACY_PTYS is not set | ||
213 | # CONFIG_DEVKMEM is not set | 287 | # CONFIG_DEVKMEM is not set |
214 | # CONFIG_HW_RANDOM is not set | 288 | # CONFIG_HW_RANDOM is not set |
215 | CONFIG_GEN_RTC=m | 289 | CONFIG_NTP_PPS=y |
216 | CONFIG_GEN_RTC_X=y | 290 | CONFIG_PPS_CLIENT_LDISC=m |
291 | CONFIG_PTP_1588_CLOCK=m | ||
217 | # CONFIG_HWMON is not set | 292 | # CONFIG_HWMON is not set |
218 | CONFIG_FB=y | 293 | CONFIG_FB=y |
219 | CONFIG_FRAMEBUFFER_CONSOLE=y | 294 | CONFIG_FRAMEBUFFER_CONSOLE=y |
@@ -222,47 +297,60 @@ CONFIG_LOGO=y | |||
222 | # CONFIG_LOGO_LINUX_VGA16 is not set | 297 | # CONFIG_LOGO_LINUX_VGA16 is not set |
223 | CONFIG_HID=m | 298 | CONFIG_HID=m |
224 | CONFIG_HIDRAW=y | 299 | CONFIG_HIDRAW=y |
300 | CONFIG_UHID=m | ||
301 | # CONFIG_HID_GENERIC is not set | ||
225 | # CONFIG_USB_SUPPORT is not set | 302 | # CONFIG_USB_SUPPORT is not set |
303 | CONFIG_RTC_CLASS=y | ||
304 | CONFIG_RTC_DRV_GENERIC=m | ||
305 | # CONFIG_IOMMU_SUPPORT is not set | ||
306 | CONFIG_PROC_HARDWARE=y | ||
226 | CONFIG_EXT2_FS=y | 307 | CONFIG_EXT2_FS=y |
227 | CONFIG_EXT3_FS=y | 308 | CONFIG_EXT3_FS=y |
228 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 309 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
229 | # CONFIG_EXT3_FS_XATTR is not set | 310 | # CONFIG_EXT3_FS_XATTR is not set |
311 | CONFIG_EXT4_FS=y | ||
230 | CONFIG_REISERFS_FS=m | 312 | CONFIG_REISERFS_FS=m |
231 | CONFIG_JFS_FS=m | 313 | CONFIG_JFS_FS=m |
232 | CONFIG_XFS_FS=m | 314 | CONFIG_XFS_FS=m |
233 | CONFIG_OCFS2_FS=m | 315 | CONFIG_OCFS2_FS=m |
234 | # CONFIG_OCFS2_FS_STATS is not set | ||
235 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 316 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
317 | CONFIG_FANOTIFY=y | ||
236 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 318 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
237 | # CONFIG_PRINT_QUOTA_WARNING is not set | 319 | # CONFIG_PRINT_QUOTA_WARNING is not set |
238 | CONFIG_AUTOFS_FS=m | ||
239 | CONFIG_AUTOFS4_FS=m | 320 | CONFIG_AUTOFS4_FS=m |
240 | CONFIG_FUSE_FS=m | 321 | CONFIG_FUSE_FS=m |
322 | CONFIG_CUSE=m | ||
241 | CONFIG_ISO9660_FS=y | 323 | CONFIG_ISO9660_FS=y |
242 | CONFIG_JOLIET=y | 324 | CONFIG_JOLIET=y |
243 | CONFIG_ZISOFS=y | 325 | CONFIG_ZISOFS=y |
244 | CONFIG_UDF_FS=m | 326 | CONFIG_UDF_FS=m |
245 | CONFIG_MSDOS_FS=y | 327 | CONFIG_MSDOS_FS=m |
246 | CONFIG_VFAT_FS=m | 328 | CONFIG_VFAT_FS=m |
247 | CONFIG_PROC_KCORE=y | 329 | CONFIG_PROC_KCORE=y |
248 | CONFIG_TMPFS=y | 330 | CONFIG_TMPFS=y |
249 | CONFIG_AFFS_FS=m | 331 | CONFIG_AFFS_FS=m |
332 | CONFIG_ECRYPT_FS=m | ||
333 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
250 | CONFIG_HFS_FS=m | 334 | CONFIG_HFS_FS=m |
251 | CONFIG_HFSPLUS_FS=m | 335 | CONFIG_HFSPLUS_FS=m |
252 | CONFIG_CRAMFS=m | 336 | CONFIG_CRAMFS=m |
253 | CONFIG_SQUASHFS=m | 337 | CONFIG_SQUASHFS=m |
254 | CONFIG_MINIX_FS=y | 338 | CONFIG_SQUASHFS_LZO=y |
339 | CONFIG_MINIX_FS=m | ||
340 | CONFIG_OMFS_FS=m | ||
255 | CONFIG_HPFS_FS=m | 341 | CONFIG_HPFS_FS=m |
342 | CONFIG_QNX4FS_FS=m | ||
343 | CONFIG_QNX6FS_FS=m | ||
256 | CONFIG_SYSV_FS=m | 344 | CONFIG_SYSV_FS=m |
257 | CONFIG_UFS_FS=m | 345 | CONFIG_UFS_FS=m |
258 | CONFIG_NFS_FS=y | 346 | CONFIG_NFS_FS=y |
259 | CONFIG_NFS_V3=y | ||
260 | CONFIG_NFS_V4=y | 347 | CONFIG_NFS_V4=y |
348 | CONFIG_NFS_SWAP=y | ||
261 | CONFIG_ROOT_NFS=y | 349 | CONFIG_ROOT_NFS=y |
262 | CONFIG_NFSD=m | 350 | CONFIG_NFSD=m |
263 | CONFIG_NFSD_V3=y | 351 | CONFIG_NFSD_V3=y |
264 | CONFIG_SMB_FS=m | 352 | CONFIG_CIFS=m |
265 | CONFIG_SMB_NLS_DEFAULT=y | 353 | # CONFIG_CIFS_DEBUG is not set |
266 | CONFIG_CODA_FS=m | 354 | CONFIG_CODA_FS=m |
267 | CONFIG_NLS_CODEPAGE_437=y | 355 | CONFIG_NLS_CODEPAGE_437=y |
268 | CONFIG_NLS_CODEPAGE_737=m | 356 | CONFIG_NLS_CODEPAGE_737=m |
@@ -301,10 +389,23 @@ CONFIG_NLS_ISO8859_14=m | |||
301 | CONFIG_NLS_ISO8859_15=m | 389 | CONFIG_NLS_ISO8859_15=m |
302 | CONFIG_NLS_KOI8_R=m | 390 | CONFIG_NLS_KOI8_R=m |
303 | CONFIG_NLS_KOI8_U=m | 391 | CONFIG_NLS_KOI8_U=m |
392 | CONFIG_NLS_MAC_ROMAN=m | ||
393 | CONFIG_NLS_MAC_CELTIC=m | ||
394 | CONFIG_NLS_MAC_CENTEURO=m | ||
395 | CONFIG_NLS_MAC_CROATIAN=m | ||
396 | CONFIG_NLS_MAC_CYRILLIC=m | ||
397 | CONFIG_NLS_MAC_GAELIC=m | ||
398 | CONFIG_NLS_MAC_GREEK=m | ||
399 | CONFIG_NLS_MAC_ICELAND=m | ||
400 | CONFIG_NLS_MAC_INUIT=m | ||
401 | CONFIG_NLS_MAC_ROMANIAN=m | ||
402 | CONFIG_NLS_MAC_TURKISH=m | ||
304 | CONFIG_DLM=m | 403 | CONFIG_DLM=m |
305 | CONFIG_MAGIC_SYSRQ=y | 404 | CONFIG_MAGIC_SYSRQ=y |
306 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 405 | CONFIG_ASYNC_RAID6_TEST=m |
307 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 406 | CONFIG_ENCRYPTED_KEYS=m |
407 | CONFIG_CRYPTO_MANAGER=y | ||
408 | CONFIG_CRYPTO_USER=m | ||
308 | CONFIG_CRYPTO_NULL=m | 409 | CONFIG_CRYPTO_NULL=m |
309 | CONFIG_CRYPTO_CRYPTD=m | 410 | CONFIG_CRYPTO_CRYPTD=m |
310 | CONFIG_CRYPTO_TEST=m | 411 | CONFIG_CRYPTO_TEST=m |
@@ -314,19 +415,16 @@ CONFIG_CRYPTO_CTS=m | |||
314 | CONFIG_CRYPTO_LRW=m | 415 | CONFIG_CRYPTO_LRW=m |
315 | CONFIG_CRYPTO_PCBC=m | 416 | CONFIG_CRYPTO_PCBC=m |
316 | CONFIG_CRYPTO_XTS=m | 417 | CONFIG_CRYPTO_XTS=m |
317 | CONFIG_CRYPTO_HMAC=y | ||
318 | CONFIG_CRYPTO_XCBC=m | 418 | CONFIG_CRYPTO_XCBC=m |
319 | CONFIG_CRYPTO_MD4=m | 419 | CONFIG_CRYPTO_VMAC=m |
320 | CONFIG_CRYPTO_MICHAEL_MIC=m | 420 | CONFIG_CRYPTO_MICHAEL_MIC=m |
321 | CONFIG_CRYPTO_RMD128=m | 421 | CONFIG_CRYPTO_RMD128=m |
322 | CONFIG_CRYPTO_RMD160=m | 422 | CONFIG_CRYPTO_RMD160=m |
323 | CONFIG_CRYPTO_RMD256=m | 423 | CONFIG_CRYPTO_RMD256=m |
324 | CONFIG_CRYPTO_RMD320=m | 424 | CONFIG_CRYPTO_RMD320=m |
325 | CONFIG_CRYPTO_SHA256=m | ||
326 | CONFIG_CRYPTO_SHA512=m | 425 | CONFIG_CRYPTO_SHA512=m |
327 | CONFIG_CRYPTO_TGR192=m | 426 | CONFIG_CRYPTO_TGR192=m |
328 | CONFIG_CRYPTO_WP512=m | 427 | CONFIG_CRYPTO_WP512=m |
329 | CONFIG_CRYPTO_AES=m | ||
330 | CONFIG_CRYPTO_ANUBIS=m | 428 | CONFIG_CRYPTO_ANUBIS=m |
331 | CONFIG_CRYPTO_BLOWFISH=m | 429 | CONFIG_CRYPTO_BLOWFISH=m |
332 | CONFIG_CRYPTO_CAMELLIA=m | 430 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -342,6 +440,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
342 | CONFIG_CRYPTO_ZLIB=m | 440 | CONFIG_CRYPTO_ZLIB=m |
343 | CONFIG_CRYPTO_LZO=m | 441 | CONFIG_CRYPTO_LZO=m |
344 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 442 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
443 | CONFIG_CRYPTO_USER_API_HASH=m | ||
444 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
345 | # CONFIG_CRYPTO_HW is not set | 445 | # CONFIG_CRYPTO_HW is not set |
346 | CONFIG_CRC16=m | ||
347 | CONFIG_CRC_T10DIF=y | 446 | CONFIG_CRC_T10DIF=y |
447 | CONFIG_XZ_DEC_X86=y | ||
448 | CONFIG_XZ_DEC_POWERPC=y | ||
449 | CONFIG_XZ_DEC_IA64=y | ||
450 | CONFIG_XZ_DEC_ARM=y | ||
451 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
452 | CONFIG_XZ_DEC_SPARC=y | ||
453 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defconfig index cb9dfb30b674..7d46fbec7042 100644 --- a/arch/m68k/configs/mac_defconfig +++ b/arch/m68k/configs/mac_defconfig | |||
@@ -1,49 +1,75 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-mac" | 1 | CONFIG_LOCALVERSION="-mac" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
13 | CONFIG_MAC=y | 16 | CONFIG_PARTITION_ADVANCED=y |
17 | CONFIG_AMIGA_PARTITION=y | ||
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_BSD_DISKLABEL=y | ||
20 | CONFIG_MINIX_SUBPARTITION=y | ||
21 | CONFIG_SOLARIS_X86_PARTITION=y | ||
22 | CONFIG_UNIXWARE_DISKLABEL=y | ||
23 | CONFIG_SUN_PARTITION=y | ||
24 | # CONFIG_EFI_PARTITION is not set | ||
25 | CONFIG_SYSV68_PARTITION=y | ||
26 | CONFIG_IOSCHED_DEADLINE=m | ||
14 | CONFIG_M68020=y | 27 | CONFIG_M68020=y |
15 | CONFIG_M68030=y | 28 | CONFIG_M68030=y |
16 | CONFIG_M68040=y | 29 | CONFIG_M68040=y |
30 | CONFIG_M68KFPU_EMU=y | ||
31 | CONFIG_MAC=y | ||
32 | # CONFIG_COMPACTION is not set | ||
33 | CONFIG_CLEANCACHE=y | ||
34 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
17 | CONFIG_BINFMT_AOUT=m | 35 | CONFIG_BINFMT_AOUT=m |
18 | CONFIG_BINFMT_MISC=m | 36 | CONFIG_BINFMT_MISC=m |
19 | CONFIG_PROC_HARDWARE=y | ||
20 | CONFIG_NET=y | 37 | CONFIG_NET=y |
21 | CONFIG_PACKET=y | 38 | CONFIG_PACKET=y |
39 | CONFIG_PACKET_DIAG=m | ||
22 | CONFIG_UNIX=y | 40 | CONFIG_UNIX=y |
41 | CONFIG_UNIX_DIAG=m | ||
42 | CONFIG_XFRM_MIGRATE=y | ||
23 | CONFIG_NET_KEY=y | 43 | CONFIG_NET_KEY=y |
24 | CONFIG_NET_KEY_MIGRATE=y | ||
25 | CONFIG_INET=y | 44 | CONFIG_INET=y |
45 | CONFIG_IP_PNP=y | ||
46 | CONFIG_IP_PNP_DHCP=y | ||
47 | CONFIG_IP_PNP_BOOTP=y | ||
48 | CONFIG_IP_PNP_RARP=y | ||
26 | CONFIG_NET_IPIP=m | 49 | CONFIG_NET_IPIP=m |
50 | CONFIG_NET_IPGRE_DEMUX=m | ||
27 | CONFIG_NET_IPGRE=m | 51 | CONFIG_NET_IPGRE=m |
28 | CONFIG_SYN_COOKIES=y | 52 | CONFIG_SYN_COOKIES=y |
53 | CONFIG_NET_IPVTI=m | ||
29 | CONFIG_INET_AH=m | 54 | CONFIG_INET_AH=m |
30 | CONFIG_INET_ESP=m | 55 | CONFIG_INET_ESP=m |
31 | CONFIG_INET_IPCOMP=m | 56 | CONFIG_INET_IPCOMP=m |
32 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 57 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
33 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 58 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
34 | CONFIG_INET_XFRM_MODE_BEET=m | 59 | CONFIG_INET_XFRM_MODE_BEET=m |
60 | # CONFIG_INET_LRO is not set | ||
35 | CONFIG_INET_DIAG=m | 61 | CONFIG_INET_DIAG=m |
62 | CONFIG_INET_UDP_DIAG=m | ||
36 | CONFIG_IPV6_PRIVACY=y | 63 | CONFIG_IPV6_PRIVACY=y |
37 | CONFIG_IPV6_ROUTER_PREF=y | 64 | CONFIG_IPV6_ROUTER_PREF=y |
38 | CONFIG_IPV6_ROUTE_INFO=y | ||
39 | CONFIG_INET6_AH=m | 65 | CONFIG_INET6_AH=m |
40 | CONFIG_INET6_ESP=m | 66 | CONFIG_INET6_ESP=m |
41 | CONFIG_INET6_IPCOMP=m | 67 | CONFIG_INET6_IPCOMP=m |
42 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 68 | CONFIG_IPV6_GRE=m |
43 | CONFIG_IPV6_TUNNEL=m | ||
44 | CONFIG_NETFILTER=y | 69 | CONFIG_NETFILTER=y |
45 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
46 | CONFIG_NF_CONNTRACK=m | 70 | CONFIG_NF_CONNTRACK=m |
71 | CONFIG_NF_CONNTRACK_ZONES=y | ||
72 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
47 | # CONFIG_NF_CT_PROTO_DCCP is not set | 73 | # CONFIG_NF_CT_PROTO_DCCP is not set |
48 | CONFIG_NF_CT_PROTO_UDPLITE=m | 74 | CONFIG_NF_CT_PROTO_UDPLITE=m |
49 | CONFIG_NF_CONNTRACK_AMANDA=m | 75 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -51,25 +77,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
51 | CONFIG_NF_CONNTRACK_H323=m | 77 | CONFIG_NF_CONNTRACK_H323=m |
52 | CONFIG_NF_CONNTRACK_IRC=m | 78 | CONFIG_NF_CONNTRACK_IRC=m |
53 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 79 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
80 | CONFIG_NF_CONNTRACK_SNMP=m | ||
54 | CONFIG_NF_CONNTRACK_PPTP=m | 81 | CONFIG_NF_CONNTRACK_PPTP=m |
55 | CONFIG_NF_CONNTRACK_SANE=m | 82 | CONFIG_NF_CONNTRACK_SANE=m |
56 | CONFIG_NF_CONNTRACK_SIP=m | 83 | CONFIG_NF_CONNTRACK_SIP=m |
57 | CONFIG_NF_CONNTRACK_TFTP=m | 84 | CONFIG_NF_CONNTRACK_TFTP=m |
85 | CONFIG_NETFILTER_XT_SET=m | ||
86 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
58 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 87 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
59 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 88 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
60 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 89 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
90 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
91 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
92 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
61 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 93 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
62 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 94 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
63 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 95 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
96 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
97 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
64 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 98 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
65 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 99 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
66 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 100 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
101 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
102 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
67 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 103 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
68 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 104 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
69 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 105 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
106 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
70 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 107 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
71 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 108 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
72 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 109 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
110 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
73 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 111 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
74 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 112 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
75 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 113 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -80,6 +118,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
80 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 118 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
81 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 119 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
82 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 120 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
121 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
122 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
83 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 123 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
84 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 124 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
85 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 125 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -93,22 +133,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
93 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 133 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
94 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 134 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
95 | CONFIG_NETFILTER_XT_MATCH_U32=m | 135 | CONFIG_NETFILTER_XT_MATCH_U32=m |
136 | CONFIG_IP_SET=m | ||
137 | CONFIG_IP_SET_BITMAP_IP=m | ||
138 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
139 | CONFIG_IP_SET_BITMAP_PORT=m | ||
140 | CONFIG_IP_SET_HASH_IP=m | ||
141 | CONFIG_IP_SET_HASH_IPPORT=m | ||
142 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
143 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
144 | CONFIG_IP_SET_HASH_NET=m | ||
145 | CONFIG_IP_SET_HASH_NETPORT=m | ||
146 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
147 | CONFIG_IP_SET_LIST_SET=m | ||
96 | CONFIG_NF_CONNTRACK_IPV4=m | 148 | CONFIG_NF_CONNTRACK_IPV4=m |
97 | CONFIG_IP_NF_QUEUE=m | ||
98 | CONFIG_IP_NF_IPTABLES=m | 149 | CONFIG_IP_NF_IPTABLES=m |
99 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
100 | CONFIG_IP_NF_MATCH_AH=m | 150 | CONFIG_IP_NF_MATCH_AH=m |
101 | CONFIG_IP_NF_MATCH_ECN=m | 151 | CONFIG_IP_NF_MATCH_ECN=m |
152 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
102 | CONFIG_IP_NF_MATCH_TTL=m | 153 | CONFIG_IP_NF_MATCH_TTL=m |
103 | CONFIG_IP_NF_FILTER=m | 154 | CONFIG_IP_NF_FILTER=m |
104 | CONFIG_IP_NF_TARGET_REJECT=m | 155 | CONFIG_IP_NF_TARGET_REJECT=m |
105 | CONFIG_IP_NF_TARGET_LOG=m | ||
106 | CONFIG_IP_NF_TARGET_ULOG=m | 156 | CONFIG_IP_NF_TARGET_ULOG=m |
107 | CONFIG_NF_NAT=m | 157 | CONFIG_NF_NAT_IPV4=m |
108 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 158 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
109 | CONFIG_IP_NF_TARGET_NETMAP=m | 159 | CONFIG_IP_NF_TARGET_NETMAP=m |
110 | CONFIG_IP_NF_TARGET_REDIRECT=m | 160 | CONFIG_IP_NF_TARGET_REDIRECT=m |
111 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
112 | CONFIG_IP_NF_MANGLE=m | 161 | CONFIG_IP_NF_MANGLE=m |
113 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 162 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
114 | CONFIG_IP_NF_TARGET_ECN=m | 163 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -118,7 +167,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
118 | CONFIG_IP_NF_ARPFILTER=m | 167 | CONFIG_IP_NF_ARPFILTER=m |
119 | CONFIG_IP_NF_ARP_MANGLE=m | 168 | CONFIG_IP_NF_ARP_MANGLE=m |
120 | CONFIG_NF_CONNTRACK_IPV6=m | 169 | CONFIG_NF_CONNTRACK_IPV6=m |
121 | CONFIG_IP6_NF_QUEUE=m | ||
122 | CONFIG_IP6_NF_IPTABLES=m | 170 | CONFIG_IP6_NF_IPTABLES=m |
123 | CONFIG_IP6_NF_MATCH_AH=m | 171 | CONFIG_IP6_NF_MATCH_AH=m |
124 | CONFIG_IP6_NF_MATCH_EUI64=m | 172 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -127,31 +175,45 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
127 | CONFIG_IP6_NF_MATCH_HL=m | 175 | CONFIG_IP6_NF_MATCH_HL=m |
128 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 176 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
129 | CONFIG_IP6_NF_MATCH_MH=m | 177 | CONFIG_IP6_NF_MATCH_MH=m |
178 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
130 | CONFIG_IP6_NF_MATCH_RT=m | 179 | CONFIG_IP6_NF_MATCH_RT=m |
131 | CONFIG_IP6_NF_TARGET_HL=m | 180 | CONFIG_IP6_NF_TARGET_HL=m |
132 | CONFIG_IP6_NF_TARGET_LOG=m | ||
133 | CONFIG_IP6_NF_FILTER=m | 181 | CONFIG_IP6_NF_FILTER=m |
134 | CONFIG_IP6_NF_TARGET_REJECT=m | 182 | CONFIG_IP6_NF_TARGET_REJECT=m |
135 | CONFIG_IP6_NF_MANGLE=m | 183 | CONFIG_IP6_NF_MANGLE=m |
136 | CONFIG_IP6_NF_RAW=m | 184 | CONFIG_IP6_NF_RAW=m |
185 | CONFIG_NF_NAT_IPV6=m | ||
186 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
187 | CONFIG_IP6_NF_TARGET_NPT=m | ||
137 | CONFIG_IP_DCCP=m | 188 | CONFIG_IP_DCCP=m |
138 | # CONFIG_IP_DCCP_CCID3 is not set | 189 | # CONFIG_IP_DCCP_CCID3 is not set |
190 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
191 | CONFIG_RDS=m | ||
192 | CONFIG_RDS_TCP=m | ||
193 | CONFIG_L2TP=m | ||
139 | CONFIG_ATALK=m | 194 | CONFIG_ATALK=m |
140 | CONFIG_DEV_APPLETALK=m | 195 | CONFIG_DEV_APPLETALK=m |
141 | CONFIG_IPDDP=m | 196 | CONFIG_IPDDP=m |
142 | CONFIG_IPDDP_ENCAP=y | 197 | CONFIG_IPDDP_ENCAP=y |
143 | CONFIG_IPDDP_DECAP=y | 198 | CONFIG_IPDDP_DECAP=y |
199 | CONFIG_BATMAN_ADV=m | ||
200 | CONFIG_BATMAN_ADV_DAT=y | ||
201 | # CONFIG_WIRELESS is not set | ||
144 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 202 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
203 | CONFIG_DEVTMPFS=y | ||
145 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 204 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
205 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
146 | CONFIG_CONNECTOR=m | 206 | CONFIG_CONNECTOR=m |
147 | CONFIG_BLK_DEV_SWIM=y | 207 | CONFIG_BLK_DEV_SWIM=m |
148 | CONFIG_BLK_DEV_LOOP=y | 208 | CONFIG_BLK_DEV_LOOP=y |
149 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 209 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
210 | CONFIG_BLK_DEV_DRBD=m | ||
150 | CONFIG_BLK_DEV_NBD=m | 211 | CONFIG_BLK_DEV_NBD=m |
151 | CONFIG_BLK_DEV_RAM=y | 212 | CONFIG_BLK_DEV_RAM=y |
152 | CONFIG_CDROM_PKTCDVD=m | 213 | CONFIG_CDROM_PKTCDVD=m |
153 | CONFIG_ATA_OVER_ETH=m | 214 | CONFIG_ATA_OVER_ETH=m |
154 | CONFIG_IDE=y | 215 | CONFIG_IDE=y |
216 | CONFIG_IDE_GD_ATAPI=y | ||
155 | CONFIG_BLK_DEV_IDECD=y | 217 | CONFIG_BLK_DEV_IDECD=y |
156 | CONFIG_BLK_DEV_MAC_IDE=y | 218 | CONFIG_BLK_DEV_MAC_IDE=y |
157 | CONFIG_RAID_ATTRS=m | 219 | CONFIG_RAID_ATTRS=m |
@@ -164,29 +226,30 @@ CONFIG_BLK_DEV_SR=y | |||
164 | CONFIG_BLK_DEV_SR_VENDOR=y | 226 | CONFIG_BLK_DEV_SR_VENDOR=y |
165 | CONFIG_CHR_DEV_SG=m | 227 | CONFIG_CHR_DEV_SG=m |
166 | CONFIG_SCSI_CONSTANTS=y | 228 | CONFIG_SCSI_CONSTANTS=y |
167 | CONFIG_SCSI_SAS_LIBSAS=m | 229 | CONFIG_SCSI_SAS_ATTRS=m |
168 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
169 | CONFIG_SCSI_SRP_ATTRS=m | ||
170 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
171 | CONFIG_ISCSI_TCP=m | 230 | CONFIG_ISCSI_TCP=m |
231 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
172 | CONFIG_MAC_SCSI=y | 232 | CONFIG_MAC_SCSI=y |
173 | CONFIG_SCSI_MAC_ESP=y | 233 | CONFIG_SCSI_MAC_ESP=y |
174 | CONFIG_MD=y | 234 | CONFIG_MD=y |
175 | CONFIG_BLK_DEV_MD=m | ||
176 | CONFIG_MD_LINEAR=m | 235 | CONFIG_MD_LINEAR=m |
177 | CONFIG_MD_RAID0=m | 236 | CONFIG_MD_RAID0=m |
178 | CONFIG_MD_RAID1=m | ||
179 | CONFIG_MD_RAID456=m | ||
180 | CONFIG_BLK_DEV_DM=m | 237 | CONFIG_BLK_DEV_DM=m |
181 | CONFIG_DM_CRYPT=m | 238 | CONFIG_DM_CRYPT=m |
182 | CONFIG_DM_SNAPSHOT=m | 239 | CONFIG_DM_SNAPSHOT=m |
240 | CONFIG_DM_THIN_PROVISIONING=m | ||
241 | CONFIG_DM_CACHE=m | ||
183 | CONFIG_DM_MIRROR=m | 242 | CONFIG_DM_MIRROR=m |
243 | CONFIG_DM_RAID=m | ||
184 | CONFIG_DM_ZERO=m | 244 | CONFIG_DM_ZERO=m |
185 | CONFIG_DM_MULTIPATH=m | 245 | CONFIG_DM_MULTIPATH=m |
186 | CONFIG_DM_UEVENT=y | 246 | CONFIG_DM_UEVENT=y |
247 | CONFIG_TARGET_CORE=m | ||
248 | CONFIG_TCM_IBLOCK=m | ||
249 | CONFIG_TCM_FILEIO=m | ||
250 | CONFIG_TCM_PSCSI=m | ||
187 | CONFIG_ADB=y | 251 | CONFIG_ADB=y |
188 | CONFIG_ADB_MACII=y | 252 | CONFIG_ADB_MACII=y |
189 | CONFIG_ADB_MACIISI=y | ||
190 | CONFIG_ADB_IOP=y | 253 | CONFIG_ADB_IOP=y |
191 | CONFIG_ADB_PMU68K=y | 254 | CONFIG_ADB_PMU68K=y |
192 | CONFIG_ADB_CUDA=y | 255 | CONFIG_ADB_CUDA=y |
@@ -194,46 +257,61 @@ CONFIG_INPUT_ADBHID=y | |||
194 | CONFIG_MAC_EMUMOUSEBTN=y | 257 | CONFIG_MAC_EMUMOUSEBTN=y |
195 | CONFIG_NETDEVICES=y | 258 | CONFIG_NETDEVICES=y |
196 | CONFIG_DUMMY=m | 259 | CONFIG_DUMMY=m |
197 | CONFIG_MACVLAN=m | ||
198 | CONFIG_EQUALIZER=m | 260 | CONFIG_EQUALIZER=m |
261 | CONFIG_NET_TEAM=m | ||
262 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
263 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
264 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
265 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
266 | CONFIG_VXLAN=m | ||
267 | CONFIG_NETCONSOLE=m | ||
268 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
199 | CONFIG_VETH=m | 269 | CONFIG_VETH=m |
200 | CONFIG_NET_ETHERNET=y | ||
201 | CONFIG_MAC8390=y | ||
202 | CONFIG_MAC89x0=m | ||
203 | CONFIG_MACSONIC=m | ||
204 | CONFIG_MACMACE=y | 270 | CONFIG_MACMACE=y |
205 | # CONFIG_NETDEV_1000 is not set | 271 | # CONFIG_NET_CADENCE is not set |
206 | # CONFIG_NETDEV_10000 is not set | 272 | # CONFIG_NET_VENDOR_BROADCOM is not set |
273 | CONFIG_MAC89x0=y | ||
274 | # CONFIG_NET_VENDOR_INTEL is not set | ||
275 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
276 | # CONFIG_NET_VENDOR_MICREL is not set | ||
277 | CONFIG_MACSONIC=y | ||
278 | CONFIG_MAC8390=y | ||
279 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
280 | # CONFIG_NET_VENDOR_SMSC is not set | ||
281 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
282 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
207 | CONFIG_PPP=m | 283 | CONFIG_PPP=m |
208 | CONFIG_PPP_FILTER=y | ||
209 | CONFIG_PPP_ASYNC=m | ||
210 | CONFIG_PPP_SYNC_TTY=m | ||
211 | CONFIG_PPP_DEFLATE=m | ||
212 | CONFIG_PPP_BSDCOMP=m | 284 | CONFIG_PPP_BSDCOMP=m |
285 | CONFIG_PPP_DEFLATE=m | ||
286 | CONFIG_PPP_FILTER=y | ||
213 | CONFIG_PPP_MPPE=m | 287 | CONFIG_PPP_MPPE=m |
214 | CONFIG_PPPOE=m | 288 | CONFIG_PPPOE=m |
289 | CONFIG_PPTP=m | ||
290 | CONFIG_PPPOL2TP=m | ||
291 | CONFIG_PPP_ASYNC=m | ||
292 | CONFIG_PPP_SYNC_TTY=m | ||
215 | CONFIG_SLIP=m | 293 | CONFIG_SLIP=m |
216 | CONFIG_SLIP_COMPRESSED=y | 294 | CONFIG_SLIP_COMPRESSED=y |
217 | CONFIG_SLIP_SMART=y | 295 | CONFIG_SLIP_SMART=y |
218 | CONFIG_SLIP_MODE_SLIP6=y | 296 | CONFIG_SLIP_MODE_SLIP6=y |
219 | CONFIG_NETCONSOLE=m | 297 | # CONFIG_WLAN is not set |
220 | CONFIG_NETCONSOLE_DYNAMIC=y | 298 | CONFIG_INPUT_EVDEV=m |
221 | CONFIG_INPUT_FF_MEMLESS=m | ||
222 | # CONFIG_KEYBOARD_ATKBD is not set | 299 | # CONFIG_KEYBOARD_ATKBD is not set |
223 | CONFIG_MOUSE_PS2=m | 300 | # CONFIG_MOUSE_PS2 is not set |
224 | CONFIG_MOUSE_SERIAL=m | 301 | CONFIG_MOUSE_SERIAL=m |
225 | CONFIG_INPUT_MISC=y | 302 | CONFIG_INPUT_MISC=y |
226 | CONFIG_INPUT_M68K_BEEP=m | 303 | CONFIG_INPUT_M68K_BEEP=m |
227 | CONFIG_SERIO=m | 304 | CONFIG_SERIO=m |
228 | # CONFIG_SERIO_SERPORT is not set | ||
229 | CONFIG_VT_HW_CONSOLE_BINDING=y | 305 | CONFIG_VT_HW_CONSOLE_BINDING=y |
306 | # CONFIG_LEGACY_PTYS is not set | ||
230 | # CONFIG_DEVKMEM is not set | 307 | # CONFIG_DEVKMEM is not set |
231 | CONFIG_SERIAL_PMACZILOG=y | 308 | CONFIG_SERIAL_PMACZILOG=y |
232 | CONFIG_SERIAL_PMACZILOG_TTYS=y | 309 | CONFIG_SERIAL_PMACZILOG_TTYS=y |
233 | CONFIG_SERIAL_PMACZILOG_CONSOLE=y | 310 | CONFIG_SERIAL_PMACZILOG_CONSOLE=y |
234 | # CONFIG_HW_RANDOM is not set | 311 | # CONFIG_HW_RANDOM is not set |
235 | CONFIG_GEN_RTC=m | 312 | CONFIG_NTP_PPS=y |
236 | CONFIG_GEN_RTC_X=y | 313 | CONFIG_PPS_CLIENT_LDISC=m |
314 | CONFIG_PTP_1588_CLOCK=m | ||
237 | # CONFIG_HWMON is not set | 315 | # CONFIG_HWMON is not set |
238 | CONFIG_FB=y | 316 | CONFIG_FB=y |
239 | CONFIG_FB_VALKYRIE=y | 317 | CONFIG_FB_VALKYRIE=y |
@@ -242,46 +320,60 @@ CONFIG_FRAMEBUFFER_CONSOLE=y | |||
242 | CONFIG_LOGO=y | 320 | CONFIG_LOGO=y |
243 | CONFIG_HID=m | 321 | CONFIG_HID=m |
244 | CONFIG_HIDRAW=y | 322 | CONFIG_HIDRAW=y |
323 | CONFIG_UHID=m | ||
324 | # CONFIG_HID_GENERIC is not set | ||
245 | # CONFIG_USB_SUPPORT is not set | 325 | # CONFIG_USB_SUPPORT is not set |
326 | CONFIG_RTC_CLASS=y | ||
327 | CONFIG_RTC_DRV_GENERIC=m | ||
328 | # CONFIG_IOMMU_SUPPORT is not set | ||
329 | CONFIG_PROC_HARDWARE=y | ||
246 | CONFIG_EXT2_FS=y | 330 | CONFIG_EXT2_FS=y |
247 | CONFIG_EXT3_FS=y | 331 | CONFIG_EXT3_FS=y |
248 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 332 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
249 | # CONFIG_EXT3_FS_XATTR is not set | 333 | # CONFIG_EXT3_FS_XATTR is not set |
334 | CONFIG_EXT4_FS=y | ||
250 | CONFIG_REISERFS_FS=m | 335 | CONFIG_REISERFS_FS=m |
251 | CONFIG_JFS_FS=m | 336 | CONFIG_JFS_FS=m |
252 | CONFIG_XFS_FS=m | 337 | CONFIG_XFS_FS=m |
253 | CONFIG_OCFS2_FS=m | 338 | CONFIG_OCFS2_FS=m |
254 | # CONFIG_OCFS2_FS_STATS is not set | ||
255 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 339 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
340 | CONFIG_FANOTIFY=y | ||
256 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 341 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
257 | # CONFIG_PRINT_QUOTA_WARNING is not set | 342 | # CONFIG_PRINT_QUOTA_WARNING is not set |
258 | CONFIG_AUTOFS_FS=m | ||
259 | CONFIG_AUTOFS4_FS=m | 343 | CONFIG_AUTOFS4_FS=m |
260 | CONFIG_FUSE_FS=m | 344 | CONFIG_FUSE_FS=m |
345 | CONFIG_CUSE=m | ||
261 | CONFIG_ISO9660_FS=y | 346 | CONFIG_ISO9660_FS=y |
262 | CONFIG_JOLIET=y | 347 | CONFIG_JOLIET=y |
263 | CONFIG_ZISOFS=y | 348 | CONFIG_ZISOFS=y |
264 | CONFIG_UDF_FS=m | 349 | CONFIG_UDF_FS=m |
265 | CONFIG_MSDOS_FS=y | 350 | CONFIG_MSDOS_FS=m |
266 | CONFIG_VFAT_FS=m | 351 | CONFIG_VFAT_FS=m |
267 | CONFIG_PROC_KCORE=y | 352 | CONFIG_PROC_KCORE=y |
268 | CONFIG_TMPFS=y | 353 | CONFIG_TMPFS=y |
269 | CONFIG_AFFS_FS=m | 354 | CONFIG_AFFS_FS=m |
270 | CONFIG_HFS_FS=y | 355 | CONFIG_ECRYPT_FS=m |
271 | CONFIG_HFSPLUS_FS=y | 356 | CONFIG_ECRYPT_FS_MESSAGING=y |
357 | CONFIG_HFS_FS=m | ||
358 | CONFIG_HFSPLUS_FS=m | ||
272 | CONFIG_CRAMFS=m | 359 | CONFIG_CRAMFS=m |
273 | CONFIG_SQUASHFS=m | 360 | CONFIG_SQUASHFS=m |
274 | CONFIG_MINIX_FS=y | 361 | CONFIG_SQUASHFS_LZO=y |
362 | CONFIG_MINIX_FS=m | ||
363 | CONFIG_OMFS_FS=m | ||
275 | CONFIG_HPFS_FS=m | 364 | CONFIG_HPFS_FS=m |
365 | CONFIG_QNX4FS_FS=m | ||
366 | CONFIG_QNX6FS_FS=m | ||
276 | CONFIG_SYSV_FS=m | 367 | CONFIG_SYSV_FS=m |
277 | CONFIG_UFS_FS=m | 368 | CONFIG_UFS_FS=m |
278 | CONFIG_NFS_FS=m | 369 | CONFIG_NFS_FS=y |
279 | CONFIG_NFS_V3=y | ||
280 | CONFIG_NFS_V4=y | 370 | CONFIG_NFS_V4=y |
371 | CONFIG_NFS_SWAP=y | ||
372 | CONFIG_ROOT_NFS=y | ||
281 | CONFIG_NFSD=m | 373 | CONFIG_NFSD=m |
282 | CONFIG_NFSD_V3=y | 374 | CONFIG_NFSD_V3=y |
283 | CONFIG_SMB_FS=m | 375 | CONFIG_CIFS=m |
284 | CONFIG_SMB_NLS_DEFAULT=y | 376 | # CONFIG_CIFS_DEBUG is not set |
285 | CONFIG_CODA_FS=m | 377 | CONFIG_CODA_FS=m |
286 | CONFIG_NLS_CODEPAGE_437=y | 378 | CONFIG_NLS_CODEPAGE_437=y |
287 | CONFIG_NLS_CODEPAGE_737=m | 379 | CONFIG_NLS_CODEPAGE_737=m |
@@ -320,10 +412,23 @@ CONFIG_NLS_ISO8859_14=m | |||
320 | CONFIG_NLS_ISO8859_15=m | 412 | CONFIG_NLS_ISO8859_15=m |
321 | CONFIG_NLS_KOI8_R=m | 413 | CONFIG_NLS_KOI8_R=m |
322 | CONFIG_NLS_KOI8_U=m | 414 | CONFIG_NLS_KOI8_U=m |
415 | CONFIG_NLS_MAC_ROMAN=m | ||
416 | CONFIG_NLS_MAC_CELTIC=m | ||
417 | CONFIG_NLS_MAC_CENTEURO=m | ||
418 | CONFIG_NLS_MAC_CROATIAN=m | ||
419 | CONFIG_NLS_MAC_CYRILLIC=m | ||
420 | CONFIG_NLS_MAC_GAELIC=m | ||
421 | CONFIG_NLS_MAC_GREEK=m | ||
422 | CONFIG_NLS_MAC_ICELAND=m | ||
423 | CONFIG_NLS_MAC_INUIT=m | ||
424 | CONFIG_NLS_MAC_ROMANIAN=m | ||
425 | CONFIG_NLS_MAC_TURKISH=m | ||
323 | CONFIG_DLM=m | 426 | CONFIG_DLM=m |
324 | CONFIG_MAGIC_SYSRQ=y | 427 | CONFIG_MAGIC_SYSRQ=y |
325 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 428 | CONFIG_ASYNC_RAID6_TEST=m |
326 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 429 | CONFIG_ENCRYPTED_KEYS=m |
430 | CONFIG_CRYPTO_MANAGER=y | ||
431 | CONFIG_CRYPTO_USER=m | ||
327 | CONFIG_CRYPTO_NULL=m | 432 | CONFIG_CRYPTO_NULL=m |
328 | CONFIG_CRYPTO_CRYPTD=m | 433 | CONFIG_CRYPTO_CRYPTD=m |
329 | CONFIG_CRYPTO_TEST=m | 434 | CONFIG_CRYPTO_TEST=m |
@@ -333,19 +438,16 @@ CONFIG_CRYPTO_CTS=m | |||
333 | CONFIG_CRYPTO_LRW=m | 438 | CONFIG_CRYPTO_LRW=m |
334 | CONFIG_CRYPTO_PCBC=m | 439 | CONFIG_CRYPTO_PCBC=m |
335 | CONFIG_CRYPTO_XTS=m | 440 | CONFIG_CRYPTO_XTS=m |
336 | CONFIG_CRYPTO_HMAC=y | ||
337 | CONFIG_CRYPTO_XCBC=m | 441 | CONFIG_CRYPTO_XCBC=m |
338 | CONFIG_CRYPTO_MD4=m | 442 | CONFIG_CRYPTO_VMAC=m |
339 | CONFIG_CRYPTO_MICHAEL_MIC=m | 443 | CONFIG_CRYPTO_MICHAEL_MIC=m |
340 | CONFIG_CRYPTO_RMD128=m | 444 | CONFIG_CRYPTO_RMD128=m |
341 | CONFIG_CRYPTO_RMD160=m | 445 | CONFIG_CRYPTO_RMD160=m |
342 | CONFIG_CRYPTO_RMD256=m | 446 | CONFIG_CRYPTO_RMD256=m |
343 | CONFIG_CRYPTO_RMD320=m | 447 | CONFIG_CRYPTO_RMD320=m |
344 | CONFIG_CRYPTO_SHA256=m | ||
345 | CONFIG_CRYPTO_SHA512=m | 448 | CONFIG_CRYPTO_SHA512=m |
346 | CONFIG_CRYPTO_TGR192=m | 449 | CONFIG_CRYPTO_TGR192=m |
347 | CONFIG_CRYPTO_WP512=m | 450 | CONFIG_CRYPTO_WP512=m |
348 | CONFIG_CRYPTO_AES=m | ||
349 | CONFIG_CRYPTO_ANUBIS=m | 451 | CONFIG_CRYPTO_ANUBIS=m |
350 | CONFIG_CRYPTO_BLOWFISH=m | 452 | CONFIG_CRYPTO_BLOWFISH=m |
351 | CONFIG_CRYPTO_CAMELLIA=m | 453 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -361,6 +463,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
361 | CONFIG_CRYPTO_ZLIB=m | 463 | CONFIG_CRYPTO_ZLIB=m |
362 | CONFIG_CRYPTO_LZO=m | 464 | CONFIG_CRYPTO_LZO=m |
363 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 465 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
466 | CONFIG_CRYPTO_USER_API_HASH=m | ||
467 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
364 | # CONFIG_CRYPTO_HW is not set | 468 | # CONFIG_CRYPTO_HW is not set |
365 | CONFIG_CRC16=m | ||
366 | CONFIG_CRC_T10DIF=y | 469 | CONFIG_CRC_T10DIF=y |
470 | CONFIG_XZ_DEC_X86=y | ||
471 | CONFIG_XZ_DEC_POWERPC=y | ||
472 | CONFIG_XZ_DEC_IA64=y | ||
473 | CONFIG_XZ_DEC_ARM=y | ||
474 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
475 | CONFIG_XZ_DEC_SPARC=y | ||
476 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_defconfig index 8d5def4a31e0..0f795d8e65fa 100644 --- a/arch/m68k/configs/multi_defconfig +++ b/arch/m68k/configs/multi_defconfig | |||
@@ -1,15 +1,29 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-multi" | 1 | CONFIG_LOCALVERSION="-multi" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
16 | CONFIG_PARTITION_ADVANCED=y | ||
17 | CONFIG_BSD_DISKLABEL=y | ||
18 | CONFIG_MINIX_SUBPARTITION=y | ||
19 | CONFIG_SOLARIS_X86_PARTITION=y | ||
20 | CONFIG_UNIXWARE_DISKLABEL=y | ||
21 | # CONFIG_EFI_PARTITION is not set | ||
22 | CONFIG_IOSCHED_DEADLINE=m | ||
23 | CONFIG_M68020=y | ||
24 | CONFIG_M68040=y | ||
25 | CONFIG_M68060=y | ||
26 | CONFIG_M68KFPU_EMU=y | ||
13 | CONFIG_AMIGA=y | 27 | CONFIG_AMIGA=y |
14 | CONFIG_ATARI=y | 28 | CONFIG_ATARI=y |
15 | CONFIG_MAC=y | 29 | CONFIG_MAC=y |
@@ -21,48 +35,50 @@ CONFIG_BVME6000=y | |||
21 | CONFIG_HP300=y | 35 | CONFIG_HP300=y |
22 | CONFIG_SUN3X=y | 36 | CONFIG_SUN3X=y |
23 | CONFIG_Q40=y | 37 | CONFIG_Q40=y |
24 | CONFIG_M68020=y | ||
25 | CONFIG_M68040=y | ||
26 | CONFIG_M68060=y | ||
27 | CONFIG_BINFMT_AOUT=m | ||
28 | CONFIG_BINFMT_MISC=m | ||
29 | CONFIG_ZORRO=y | 38 | CONFIG_ZORRO=y |
30 | CONFIG_AMIGA_PCMCIA=y | 39 | CONFIG_AMIGA_PCMCIA=y |
31 | CONFIG_STRAM_PROC=y | ||
32 | CONFIG_HEARTBEAT=y | ||
33 | CONFIG_PROC_HARDWARE=y | ||
34 | CONFIG_ZORRO_NAMES=y | 40 | CONFIG_ZORRO_NAMES=y |
41 | # CONFIG_COMPACTION is not set | ||
42 | CONFIG_CLEANCACHE=y | ||
43 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
44 | CONFIG_BINFMT_AOUT=m | ||
45 | CONFIG_BINFMT_MISC=m | ||
35 | CONFIG_NET=y | 46 | CONFIG_NET=y |
36 | CONFIG_PACKET=y | 47 | CONFIG_PACKET=y |
48 | CONFIG_PACKET_DIAG=m | ||
37 | CONFIG_UNIX=y | 49 | CONFIG_UNIX=y |
50 | CONFIG_UNIX_DIAG=m | ||
51 | CONFIG_XFRM_MIGRATE=y | ||
38 | CONFIG_NET_KEY=y | 52 | CONFIG_NET_KEY=y |
39 | CONFIG_NET_KEY_MIGRATE=y | ||
40 | CONFIG_INET=y | 53 | CONFIG_INET=y |
41 | CONFIG_IP_PNP=y | 54 | CONFIG_IP_PNP=y |
42 | CONFIG_IP_PNP_DHCP=y | 55 | CONFIG_IP_PNP_DHCP=y |
43 | CONFIG_IP_PNP_BOOTP=y | 56 | CONFIG_IP_PNP_BOOTP=y |
44 | CONFIG_IP_PNP_RARP=y | 57 | CONFIG_IP_PNP_RARP=y |
45 | CONFIG_NET_IPIP=m | 58 | CONFIG_NET_IPIP=m |
59 | CONFIG_NET_IPGRE_DEMUX=m | ||
46 | CONFIG_NET_IPGRE=m | 60 | CONFIG_NET_IPGRE=m |
47 | CONFIG_SYN_COOKIES=y | 61 | CONFIG_SYN_COOKIES=y |
62 | CONFIG_NET_IPVTI=m | ||
48 | CONFIG_INET_AH=m | 63 | CONFIG_INET_AH=m |
49 | CONFIG_INET_ESP=m | 64 | CONFIG_INET_ESP=m |
50 | CONFIG_INET_IPCOMP=m | 65 | CONFIG_INET_IPCOMP=m |
51 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 66 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
52 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 67 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
53 | CONFIG_INET_XFRM_MODE_BEET=m | 68 | CONFIG_INET_XFRM_MODE_BEET=m |
69 | # CONFIG_INET_LRO is not set | ||
54 | CONFIG_INET_DIAG=m | 70 | CONFIG_INET_DIAG=m |
71 | CONFIG_INET_UDP_DIAG=m | ||
55 | CONFIG_IPV6_PRIVACY=y | 72 | CONFIG_IPV6_PRIVACY=y |
56 | CONFIG_IPV6_ROUTER_PREF=y | 73 | CONFIG_IPV6_ROUTER_PREF=y |
57 | CONFIG_IPV6_ROUTE_INFO=y | ||
58 | CONFIG_INET6_AH=m | 74 | CONFIG_INET6_AH=m |
59 | CONFIG_INET6_ESP=m | 75 | CONFIG_INET6_ESP=m |
60 | CONFIG_INET6_IPCOMP=m | 76 | CONFIG_INET6_IPCOMP=m |
61 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 77 | CONFIG_IPV6_GRE=m |
62 | CONFIG_IPV6_TUNNEL=m | ||
63 | CONFIG_NETFILTER=y | 78 | CONFIG_NETFILTER=y |
64 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
65 | CONFIG_NF_CONNTRACK=m | 79 | CONFIG_NF_CONNTRACK=m |
80 | CONFIG_NF_CONNTRACK_ZONES=y | ||
81 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
66 | # CONFIG_NF_CT_PROTO_DCCP is not set | 82 | # CONFIG_NF_CT_PROTO_DCCP is not set |
67 | CONFIG_NF_CT_PROTO_UDPLITE=m | 83 | CONFIG_NF_CT_PROTO_UDPLITE=m |
68 | CONFIG_NF_CONNTRACK_AMANDA=m | 84 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -70,25 +86,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
70 | CONFIG_NF_CONNTRACK_H323=m | 86 | CONFIG_NF_CONNTRACK_H323=m |
71 | CONFIG_NF_CONNTRACK_IRC=m | 87 | CONFIG_NF_CONNTRACK_IRC=m |
72 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 88 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
89 | CONFIG_NF_CONNTRACK_SNMP=m | ||
73 | CONFIG_NF_CONNTRACK_PPTP=m | 90 | CONFIG_NF_CONNTRACK_PPTP=m |
74 | CONFIG_NF_CONNTRACK_SANE=m | 91 | CONFIG_NF_CONNTRACK_SANE=m |
75 | CONFIG_NF_CONNTRACK_SIP=m | 92 | CONFIG_NF_CONNTRACK_SIP=m |
76 | CONFIG_NF_CONNTRACK_TFTP=m | 93 | CONFIG_NF_CONNTRACK_TFTP=m |
94 | CONFIG_NETFILTER_XT_SET=m | ||
95 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
77 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 96 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
78 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 97 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
79 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 98 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
99 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
100 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
101 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
80 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 102 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
81 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 103 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
82 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 104 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
105 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
106 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
83 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 107 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
84 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 108 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
85 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 109 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
110 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
111 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
86 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 112 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
87 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 113 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
88 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 114 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
115 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
89 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 116 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
90 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 117 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
91 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 118 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
119 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
92 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 120 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
93 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 121 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
94 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 122 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -99,6 +127,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
99 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 127 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
100 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 128 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
101 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 129 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
130 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
131 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
102 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 132 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
103 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 133 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
104 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 134 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -112,22 +142,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
112 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 142 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
113 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 143 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
114 | CONFIG_NETFILTER_XT_MATCH_U32=m | 144 | CONFIG_NETFILTER_XT_MATCH_U32=m |
145 | CONFIG_IP_SET=m | ||
146 | CONFIG_IP_SET_BITMAP_IP=m | ||
147 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
148 | CONFIG_IP_SET_BITMAP_PORT=m | ||
149 | CONFIG_IP_SET_HASH_IP=m | ||
150 | CONFIG_IP_SET_HASH_IPPORT=m | ||
151 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
152 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
153 | CONFIG_IP_SET_HASH_NET=m | ||
154 | CONFIG_IP_SET_HASH_NETPORT=m | ||
155 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
156 | CONFIG_IP_SET_LIST_SET=m | ||
115 | CONFIG_NF_CONNTRACK_IPV4=m | 157 | CONFIG_NF_CONNTRACK_IPV4=m |
116 | CONFIG_IP_NF_QUEUE=m | ||
117 | CONFIG_IP_NF_IPTABLES=m | 158 | CONFIG_IP_NF_IPTABLES=m |
118 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
119 | CONFIG_IP_NF_MATCH_AH=m | 159 | CONFIG_IP_NF_MATCH_AH=m |
120 | CONFIG_IP_NF_MATCH_ECN=m | 160 | CONFIG_IP_NF_MATCH_ECN=m |
161 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
121 | CONFIG_IP_NF_MATCH_TTL=m | 162 | CONFIG_IP_NF_MATCH_TTL=m |
122 | CONFIG_IP_NF_FILTER=m | 163 | CONFIG_IP_NF_FILTER=m |
123 | CONFIG_IP_NF_TARGET_REJECT=m | 164 | CONFIG_IP_NF_TARGET_REJECT=m |
124 | CONFIG_IP_NF_TARGET_LOG=m | ||
125 | CONFIG_IP_NF_TARGET_ULOG=m | 165 | CONFIG_IP_NF_TARGET_ULOG=m |
126 | CONFIG_NF_NAT=m | 166 | CONFIG_NF_NAT_IPV4=m |
127 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 167 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
128 | CONFIG_IP_NF_TARGET_NETMAP=m | 168 | CONFIG_IP_NF_TARGET_NETMAP=m |
129 | CONFIG_IP_NF_TARGET_REDIRECT=m | 169 | CONFIG_IP_NF_TARGET_REDIRECT=m |
130 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
131 | CONFIG_IP_NF_MANGLE=m | 170 | CONFIG_IP_NF_MANGLE=m |
132 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 171 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
133 | CONFIG_IP_NF_TARGET_ECN=m | 172 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -137,7 +176,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
137 | CONFIG_IP_NF_ARPFILTER=m | 176 | CONFIG_IP_NF_ARPFILTER=m |
138 | CONFIG_IP_NF_ARP_MANGLE=m | 177 | CONFIG_IP_NF_ARP_MANGLE=m |
139 | CONFIG_NF_CONNTRACK_IPV6=m | 178 | CONFIG_NF_CONNTRACK_IPV6=m |
140 | CONFIG_IP6_NF_QUEUE=m | ||
141 | CONFIG_IP6_NF_IPTABLES=m | 179 | CONFIG_IP6_NF_IPTABLES=m |
142 | CONFIG_IP6_NF_MATCH_AH=m | 180 | CONFIG_IP6_NF_MATCH_AH=m |
143 | CONFIG_IP6_NF_MATCH_EUI64=m | 181 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -146,22 +184,34 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
146 | CONFIG_IP6_NF_MATCH_HL=m | 184 | CONFIG_IP6_NF_MATCH_HL=m |
147 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 185 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
148 | CONFIG_IP6_NF_MATCH_MH=m | 186 | CONFIG_IP6_NF_MATCH_MH=m |
187 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
149 | CONFIG_IP6_NF_MATCH_RT=m | 188 | CONFIG_IP6_NF_MATCH_RT=m |
150 | CONFIG_IP6_NF_TARGET_HL=m | 189 | CONFIG_IP6_NF_TARGET_HL=m |
151 | CONFIG_IP6_NF_TARGET_LOG=m | ||
152 | CONFIG_IP6_NF_FILTER=m | 190 | CONFIG_IP6_NF_FILTER=m |
153 | CONFIG_IP6_NF_TARGET_REJECT=m | 191 | CONFIG_IP6_NF_TARGET_REJECT=m |
154 | CONFIG_IP6_NF_MANGLE=m | 192 | CONFIG_IP6_NF_MANGLE=m |
155 | CONFIG_IP6_NF_RAW=m | 193 | CONFIG_IP6_NF_RAW=m |
194 | CONFIG_NF_NAT_IPV6=m | ||
195 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
196 | CONFIG_IP6_NF_TARGET_NPT=m | ||
156 | CONFIG_IP_DCCP=m | 197 | CONFIG_IP_DCCP=m |
157 | # CONFIG_IP_DCCP_CCID3 is not set | 198 | # CONFIG_IP_DCCP_CCID3 is not set |
199 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
200 | CONFIG_RDS=m | ||
201 | CONFIG_RDS_TCP=m | ||
202 | CONFIG_L2TP=m | ||
158 | CONFIG_ATALK=m | 203 | CONFIG_ATALK=m |
159 | CONFIG_DEV_APPLETALK=m | 204 | CONFIG_DEV_APPLETALK=m |
160 | CONFIG_IPDDP=m | 205 | CONFIG_IPDDP=m |
161 | CONFIG_IPDDP_ENCAP=y | 206 | CONFIG_IPDDP_ENCAP=y |
162 | CONFIG_IPDDP_DECAP=y | 207 | CONFIG_IPDDP_DECAP=y |
208 | CONFIG_BATMAN_ADV=m | ||
209 | CONFIG_BATMAN_ADV_DAT=y | ||
210 | # CONFIG_WIRELESS is not set | ||
163 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 211 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
212 | CONFIG_DEVTMPFS=y | ||
164 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 213 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
214 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
165 | CONFIG_CONNECTOR=m | 215 | CONFIG_CONNECTOR=m |
166 | CONFIG_PARPORT=m | 216 | CONFIG_PARPORT=m |
167 | CONFIG_PARPORT_AMIGA=m | 217 | CONFIG_PARPORT_AMIGA=m |
@@ -170,15 +220,17 @@ CONFIG_PARPORT_ATARI=m | |||
170 | CONFIG_PARPORT_1284=y | 220 | CONFIG_PARPORT_1284=y |
171 | CONFIG_AMIGA_FLOPPY=y | 221 | CONFIG_AMIGA_FLOPPY=y |
172 | CONFIG_ATARI_FLOPPY=y | 222 | CONFIG_ATARI_FLOPPY=y |
173 | CONFIG_BLK_DEV_SWIM=y | 223 | CONFIG_BLK_DEV_SWIM=m |
174 | CONFIG_AMIGA_Z2RAM=y | 224 | CONFIG_AMIGA_Z2RAM=y |
175 | CONFIG_BLK_DEV_LOOP=y | 225 | CONFIG_BLK_DEV_LOOP=y |
176 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 226 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
227 | CONFIG_BLK_DEV_DRBD=m | ||
177 | CONFIG_BLK_DEV_NBD=m | 228 | CONFIG_BLK_DEV_NBD=m |
178 | CONFIG_BLK_DEV_RAM=y | 229 | CONFIG_BLK_DEV_RAM=y |
179 | CONFIG_CDROM_PKTCDVD=m | 230 | CONFIG_CDROM_PKTCDVD=m |
180 | CONFIG_ATA_OVER_ETH=m | 231 | CONFIG_ATA_OVER_ETH=m |
181 | CONFIG_IDE=y | 232 | CONFIG_IDE=y |
233 | CONFIG_IDE_GD_ATAPI=y | ||
182 | CONFIG_BLK_DEV_IDECD=y | 234 | CONFIG_BLK_DEV_IDECD=y |
183 | CONFIG_BLK_DEV_GAYLE=y | 235 | CONFIG_BLK_DEV_GAYLE=y |
184 | CONFIG_BLK_DEV_BUDDHA=y | 236 | CONFIG_BLK_DEV_BUDDHA=y |
@@ -195,11 +247,9 @@ CONFIG_BLK_DEV_SR=y | |||
195 | CONFIG_BLK_DEV_SR_VENDOR=y | 247 | CONFIG_BLK_DEV_SR_VENDOR=y |
196 | CONFIG_CHR_DEV_SG=m | 248 | CONFIG_CHR_DEV_SG=m |
197 | CONFIG_SCSI_CONSTANTS=y | 249 | CONFIG_SCSI_CONSTANTS=y |
198 | CONFIG_SCSI_SAS_LIBSAS=m | 250 | CONFIG_SCSI_SAS_ATTRS=m |
199 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
200 | CONFIG_SCSI_SRP_ATTRS=m | ||
201 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
202 | CONFIG_ISCSI_TCP=m | 251 | CONFIG_ISCSI_TCP=m |
252 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
203 | CONFIG_A3000_SCSI=y | 253 | CONFIG_A3000_SCSI=y |
204 | CONFIG_A2091_SCSI=y | 254 | CONFIG_A2091_SCSI=y |
205 | CONFIG_GVP11_SCSI=y | 255 | CONFIG_GVP11_SCSI=y |
@@ -213,21 +263,24 @@ CONFIG_MVME16x_SCSI=y | |||
213 | CONFIG_BVME6000_SCSI=y | 263 | CONFIG_BVME6000_SCSI=y |
214 | CONFIG_SUN3X_ESP=y | 264 | CONFIG_SUN3X_ESP=y |
215 | CONFIG_MD=y | 265 | CONFIG_MD=y |
216 | CONFIG_BLK_DEV_MD=m | ||
217 | CONFIG_MD_LINEAR=m | 266 | CONFIG_MD_LINEAR=m |
218 | CONFIG_MD_RAID0=m | 267 | CONFIG_MD_RAID0=m |
219 | CONFIG_MD_RAID1=m | ||
220 | CONFIG_MD_RAID456=m | ||
221 | CONFIG_BLK_DEV_DM=m | 268 | CONFIG_BLK_DEV_DM=m |
222 | CONFIG_DM_CRYPT=m | 269 | CONFIG_DM_CRYPT=m |
223 | CONFIG_DM_SNAPSHOT=m | 270 | CONFIG_DM_SNAPSHOT=m |
271 | CONFIG_DM_THIN_PROVISIONING=m | ||
272 | CONFIG_DM_CACHE=m | ||
224 | CONFIG_DM_MIRROR=m | 273 | CONFIG_DM_MIRROR=m |
274 | CONFIG_DM_RAID=m | ||
225 | CONFIG_DM_ZERO=m | 275 | CONFIG_DM_ZERO=m |
226 | CONFIG_DM_MULTIPATH=m | 276 | CONFIG_DM_MULTIPATH=m |
227 | CONFIG_DM_UEVENT=y | 277 | CONFIG_DM_UEVENT=y |
278 | CONFIG_TARGET_CORE=m | ||
279 | CONFIG_TCM_IBLOCK=m | ||
280 | CONFIG_TCM_FILEIO=m | ||
281 | CONFIG_TCM_PSCSI=m | ||
228 | CONFIG_ADB=y | 282 | CONFIG_ADB=y |
229 | CONFIG_ADB_MACII=y | 283 | CONFIG_ADB_MACII=y |
230 | CONFIG_ADB_MACIISI=y | ||
231 | CONFIG_ADB_IOP=y | 284 | CONFIG_ADB_IOP=y |
232 | CONFIG_ADB_PMU68K=y | 285 | CONFIG_ADB_PMU68K=y |
233 | CONFIG_ADB_CUDA=y | 286 | CONFIG_ADB_CUDA=y |
@@ -235,49 +288,64 @@ CONFIG_INPUT_ADBHID=y | |||
235 | CONFIG_MAC_EMUMOUSEBTN=y | 288 | CONFIG_MAC_EMUMOUSEBTN=y |
236 | CONFIG_NETDEVICES=y | 289 | CONFIG_NETDEVICES=y |
237 | CONFIG_DUMMY=m | 290 | CONFIG_DUMMY=m |
238 | CONFIG_MACVLAN=m | ||
239 | CONFIG_EQUALIZER=m | 291 | CONFIG_EQUALIZER=m |
240 | CONFIG_VETH=m | ||
241 | CONFIG_NET_ETHERNET=y | ||
242 | CONFIG_MII=y | 292 | CONFIG_MII=y |
243 | CONFIG_ARIADNE=y | 293 | CONFIG_NET_TEAM=m |
294 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
295 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
296 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
297 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
298 | CONFIG_VXLAN=m | ||
299 | CONFIG_NETCONSOLE=m | ||
300 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
301 | CONFIG_VETH=m | ||
302 | # CONFIG_NET_VENDOR_3COM is not set | ||
244 | CONFIG_A2065=y | 303 | CONFIG_A2065=y |
245 | CONFIG_HYDRA=y | 304 | CONFIG_ARIADNE=y |
246 | CONFIG_ZORRO8390=y | ||
247 | CONFIG_APNE=y | ||
248 | CONFIG_MAC8390=y | ||
249 | CONFIG_MAC89x0=y | ||
250 | CONFIG_MACSONIC=y | ||
251 | CONFIG_MACMACE=y | ||
252 | CONFIG_MVME147_NET=y | ||
253 | CONFIG_MVME16x_NET=y | ||
254 | CONFIG_BVME6000_NET=y | ||
255 | CONFIG_ATARILANCE=y | 305 | CONFIG_ATARILANCE=y |
256 | CONFIG_SUN3LANCE=y | ||
257 | CONFIG_HPLANCE=y | 306 | CONFIG_HPLANCE=y |
307 | CONFIG_MVME147_NET=y | ||
308 | CONFIG_SUN3LANCE=y | ||
309 | CONFIG_MACMACE=y | ||
310 | # CONFIG_NET_CADENCE is not set | ||
311 | # CONFIG_NET_VENDOR_BROADCOM is not set | ||
312 | CONFIG_MAC89x0=y | ||
313 | # CONFIG_NET_VENDOR_FUJITSU is not set | ||
314 | # CONFIG_NET_VENDOR_HP is not set | ||
315 | CONFIG_BVME6000_NET=y | ||
316 | CONFIG_MVME16x_NET=y | ||
317 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
318 | # CONFIG_NET_VENDOR_MICREL is not set | ||
319 | CONFIG_MACSONIC=y | ||
320 | CONFIG_HYDRA=y | ||
321 | CONFIG_MAC8390=y | ||
258 | CONFIG_NE2000=m | 322 | CONFIG_NE2000=m |
259 | # CONFIG_NETDEV_1000 is not set | 323 | CONFIG_APNE=y |
260 | # CONFIG_NETDEV_10000 is not set | 324 | CONFIG_ZORRO8390=y |
325 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
326 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
327 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
261 | CONFIG_PPP=m | 328 | CONFIG_PPP=m |
262 | CONFIG_PPP_FILTER=y | ||
263 | CONFIG_PPP_ASYNC=m | ||
264 | CONFIG_PPP_SYNC_TTY=m | ||
265 | CONFIG_PPP_DEFLATE=m | ||
266 | CONFIG_PPP_BSDCOMP=m | 329 | CONFIG_PPP_BSDCOMP=m |
330 | CONFIG_PPP_DEFLATE=m | ||
331 | CONFIG_PPP_FILTER=y | ||
267 | CONFIG_PPP_MPPE=m | 332 | CONFIG_PPP_MPPE=m |
268 | CONFIG_PPPOE=m | 333 | CONFIG_PPPOE=m |
334 | CONFIG_PPTP=m | ||
335 | CONFIG_PPPOL2TP=m | ||
336 | CONFIG_PPP_ASYNC=m | ||
337 | CONFIG_PPP_SYNC_TTY=m | ||
269 | CONFIG_SLIP=m | 338 | CONFIG_SLIP=m |
270 | CONFIG_SLIP_COMPRESSED=y | 339 | CONFIG_SLIP_COMPRESSED=y |
271 | CONFIG_SLIP_SMART=y | 340 | CONFIG_SLIP_SMART=y |
272 | CONFIG_SLIP_MODE_SLIP6=y | 341 | CONFIG_SLIP_MODE_SLIP6=y |
273 | CONFIG_NETCONSOLE=m | 342 | # CONFIG_WLAN is not set |
274 | CONFIG_NETCONSOLE_DYNAMIC=y | 343 | CONFIG_INPUT_EVDEV=m |
275 | CONFIG_INPUT_FF_MEMLESS=m | ||
276 | CONFIG_KEYBOARD_AMIGA=y | 344 | CONFIG_KEYBOARD_AMIGA=y |
277 | CONFIG_KEYBOARD_ATARI=y | 345 | CONFIG_KEYBOARD_ATARI=y |
278 | # CONFIG_KEYBOARD_ATKBD is not set | 346 | # CONFIG_KEYBOARD_ATKBD is not set |
279 | CONFIG_KEYBOARD_SUNKBD=y | 347 | CONFIG_KEYBOARD_SUNKBD=y |
280 | CONFIG_MOUSE_PS2=m | 348 | # CONFIG_MOUSE_PS2 is not set |
281 | CONFIG_MOUSE_SERIAL=m | 349 | CONFIG_MOUSE_SERIAL=m |
282 | CONFIG_MOUSE_AMIGA=m | 350 | CONFIG_MOUSE_AMIGA=m |
283 | CONFIG_MOUSE_ATARI=m | 351 | CONFIG_MOUSE_ATARI=m |
@@ -285,18 +353,20 @@ CONFIG_INPUT_JOYSTICK=y | |||
285 | CONFIG_JOYSTICK_AMIGA=m | 353 | CONFIG_JOYSTICK_AMIGA=m |
286 | CONFIG_INPUT_MISC=y | 354 | CONFIG_INPUT_MISC=y |
287 | CONFIG_INPUT_M68K_BEEP=m | 355 | CONFIG_INPUT_M68K_BEEP=m |
288 | CONFIG_HP_SDC_RTC=y | 356 | CONFIG_HP_SDC_RTC=m |
289 | # CONFIG_SERIO_SERPORT is not set | ||
290 | CONFIG_SERIO_Q40KBD=y | 357 | CONFIG_SERIO_Q40KBD=y |
291 | CONFIG_VT_HW_CONSOLE_BINDING=y | 358 | CONFIG_VT_HW_CONSOLE_BINDING=y |
359 | # CONFIG_LEGACY_PTYS is not set | ||
292 | # CONFIG_DEVKMEM is not set | 360 | # CONFIG_DEVKMEM is not set |
293 | CONFIG_SERIAL_PMACZILOG=y | 361 | CONFIG_SERIAL_PMACZILOG=y |
294 | CONFIG_SERIAL_PMACZILOG_TTYS=y | 362 | CONFIG_SERIAL_PMACZILOG_TTYS=y |
295 | CONFIG_SERIAL_PMACZILOG_CONSOLE=y | 363 | CONFIG_SERIAL_PMACZILOG_CONSOLE=y |
296 | CONFIG_PRINTER=m | 364 | CONFIG_PRINTER=m |
297 | # CONFIG_HW_RANDOM is not set | 365 | # CONFIG_HW_RANDOM is not set |
298 | CONFIG_GEN_RTC=y | 366 | CONFIG_NTP_PPS=y |
299 | CONFIG_GEN_RTC_X=y | 367 | CONFIG_PPS_CLIENT_LDISC=m |
368 | CONFIG_PPS_CLIENT_PARPORT=m | ||
369 | CONFIG_PTP_1588_CLOCK=m | ||
300 | # CONFIG_HWMON is not set | 370 | # CONFIG_HWMON is not set |
301 | CONFIG_FB=y | 371 | CONFIG_FB=y |
302 | CONFIG_FB_CIRRUS=y | 372 | CONFIG_FB_CIRRUS=y |
@@ -316,7 +386,20 @@ CONFIG_DMASOUND_PAULA=m | |||
316 | CONFIG_DMASOUND_Q40=m | 386 | CONFIG_DMASOUND_Q40=m |
317 | CONFIG_HID=m | 387 | CONFIG_HID=m |
318 | CONFIG_HIDRAW=y | 388 | CONFIG_HIDRAW=y |
389 | CONFIG_UHID=m | ||
390 | # CONFIG_HID_GENERIC is not set | ||
319 | # CONFIG_USB_SUPPORT is not set | 391 | # CONFIG_USB_SUPPORT is not set |
392 | CONFIG_RTC_CLASS=y | ||
393 | CONFIG_RTC_DRV_MSM6242=m | ||
394 | CONFIG_RTC_DRV_RP5C01=m | ||
395 | CONFIG_RTC_DRV_GENERIC=m | ||
396 | # CONFIG_IOMMU_SUPPORT is not set | ||
397 | CONFIG_HEARTBEAT=y | ||
398 | CONFIG_PROC_HARDWARE=y | ||
399 | CONFIG_NATFEAT=y | ||
400 | CONFIG_NFBLOCK=y | ||
401 | CONFIG_NFCON=y | ||
402 | CONFIG_NFETH=y | ||
320 | CONFIG_ATARI_DSP56K=m | 403 | CONFIG_ATARI_DSP56K=m |
321 | CONFIG_AMIGA_BUILTIN_SERIAL=y | 404 | CONFIG_AMIGA_BUILTIN_SERIAL=y |
322 | CONFIG_SERIAL_CONSOLE=y | 405 | CONFIG_SERIAL_CONSOLE=y |
@@ -324,42 +407,49 @@ CONFIG_EXT2_FS=y | |||
324 | CONFIG_EXT3_FS=y | 407 | CONFIG_EXT3_FS=y |
325 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 408 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
326 | # CONFIG_EXT3_FS_XATTR is not set | 409 | # CONFIG_EXT3_FS_XATTR is not set |
410 | CONFIG_EXT4_FS=y | ||
327 | CONFIG_REISERFS_FS=m | 411 | CONFIG_REISERFS_FS=m |
328 | CONFIG_JFS_FS=m | 412 | CONFIG_JFS_FS=m |
329 | CONFIG_XFS_FS=m | 413 | CONFIG_XFS_FS=m |
330 | CONFIG_OCFS2_FS=m | 414 | CONFIG_OCFS2_FS=m |
331 | # CONFIG_OCFS2_FS_STATS is not set | ||
332 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 415 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
416 | CONFIG_FANOTIFY=y | ||
333 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 417 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
334 | # CONFIG_PRINT_QUOTA_WARNING is not set | 418 | # CONFIG_PRINT_QUOTA_WARNING is not set |
335 | CONFIG_AUTOFS_FS=m | ||
336 | CONFIG_AUTOFS4_FS=m | 419 | CONFIG_AUTOFS4_FS=m |
337 | CONFIG_FUSE_FS=m | 420 | CONFIG_FUSE_FS=m |
421 | CONFIG_CUSE=m | ||
338 | CONFIG_ISO9660_FS=y | 422 | CONFIG_ISO9660_FS=y |
339 | CONFIG_JOLIET=y | 423 | CONFIG_JOLIET=y |
340 | CONFIG_ZISOFS=y | 424 | CONFIG_ZISOFS=y |
341 | CONFIG_UDF_FS=m | 425 | CONFIG_UDF_FS=m |
342 | CONFIG_MSDOS_FS=y | 426 | CONFIG_MSDOS_FS=m |
343 | CONFIG_VFAT_FS=m | 427 | CONFIG_VFAT_FS=m |
344 | CONFIG_PROC_KCORE=y | 428 | CONFIG_PROC_KCORE=y |
345 | CONFIG_TMPFS=y | 429 | CONFIG_TMPFS=y |
346 | CONFIG_AFFS_FS=m | 430 | CONFIG_AFFS_FS=m |
347 | CONFIG_HFS_FS=y | 431 | CONFIG_ECRYPT_FS=m |
348 | CONFIG_HFSPLUS_FS=y | 432 | CONFIG_ECRYPT_FS_MESSAGING=y |
433 | CONFIG_HFS_FS=m | ||
434 | CONFIG_HFSPLUS_FS=m | ||
349 | CONFIG_CRAMFS=m | 435 | CONFIG_CRAMFS=m |
350 | CONFIG_SQUASHFS=m | 436 | CONFIG_SQUASHFS=m |
351 | CONFIG_MINIX_FS=y | 437 | CONFIG_SQUASHFS_LZO=y |
438 | CONFIG_MINIX_FS=m | ||
439 | CONFIG_OMFS_FS=m | ||
352 | CONFIG_HPFS_FS=m | 440 | CONFIG_HPFS_FS=m |
441 | CONFIG_QNX4FS_FS=m | ||
442 | CONFIG_QNX6FS_FS=m | ||
353 | CONFIG_SYSV_FS=m | 443 | CONFIG_SYSV_FS=m |
354 | CONFIG_UFS_FS=m | 444 | CONFIG_UFS_FS=m |
355 | CONFIG_NFS_FS=y | 445 | CONFIG_NFS_FS=y |
356 | CONFIG_NFS_V3=y | ||
357 | CONFIG_NFS_V4=y | 446 | CONFIG_NFS_V4=y |
447 | CONFIG_NFS_SWAP=y | ||
358 | CONFIG_ROOT_NFS=y | 448 | CONFIG_ROOT_NFS=y |
359 | CONFIG_NFSD=m | 449 | CONFIG_NFSD=m |
360 | CONFIG_NFSD_V3=y | 450 | CONFIG_NFSD_V3=y |
361 | CONFIG_SMB_FS=m | 451 | CONFIG_CIFS=m |
362 | CONFIG_SMB_NLS_DEFAULT=y | 452 | # CONFIG_CIFS_DEBUG is not set |
363 | CONFIG_CODA_FS=m | 453 | CONFIG_CODA_FS=m |
364 | CONFIG_NLS_CODEPAGE_437=y | 454 | CONFIG_NLS_CODEPAGE_437=y |
365 | CONFIG_NLS_CODEPAGE_737=m | 455 | CONFIG_NLS_CODEPAGE_737=m |
@@ -398,10 +488,23 @@ CONFIG_NLS_ISO8859_14=m | |||
398 | CONFIG_NLS_ISO8859_15=m | 488 | CONFIG_NLS_ISO8859_15=m |
399 | CONFIG_NLS_KOI8_R=m | 489 | CONFIG_NLS_KOI8_R=m |
400 | CONFIG_NLS_KOI8_U=m | 490 | CONFIG_NLS_KOI8_U=m |
491 | CONFIG_NLS_MAC_ROMAN=m | ||
492 | CONFIG_NLS_MAC_CELTIC=m | ||
493 | CONFIG_NLS_MAC_CENTEURO=m | ||
494 | CONFIG_NLS_MAC_CROATIAN=m | ||
495 | CONFIG_NLS_MAC_CYRILLIC=m | ||
496 | CONFIG_NLS_MAC_GAELIC=m | ||
497 | CONFIG_NLS_MAC_GREEK=m | ||
498 | CONFIG_NLS_MAC_ICELAND=m | ||
499 | CONFIG_NLS_MAC_INUIT=m | ||
500 | CONFIG_NLS_MAC_ROMANIAN=m | ||
501 | CONFIG_NLS_MAC_TURKISH=m | ||
401 | CONFIG_DLM=m | 502 | CONFIG_DLM=m |
402 | CONFIG_MAGIC_SYSRQ=y | 503 | CONFIG_MAGIC_SYSRQ=y |
403 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 504 | CONFIG_ASYNC_RAID6_TEST=m |
404 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 505 | CONFIG_ENCRYPTED_KEYS=m |
506 | CONFIG_CRYPTO_MANAGER=y | ||
507 | CONFIG_CRYPTO_USER=m | ||
405 | CONFIG_CRYPTO_NULL=m | 508 | CONFIG_CRYPTO_NULL=m |
406 | CONFIG_CRYPTO_CRYPTD=m | 509 | CONFIG_CRYPTO_CRYPTD=m |
407 | CONFIG_CRYPTO_TEST=m | 510 | CONFIG_CRYPTO_TEST=m |
@@ -411,19 +514,16 @@ CONFIG_CRYPTO_CTS=m | |||
411 | CONFIG_CRYPTO_LRW=m | 514 | CONFIG_CRYPTO_LRW=m |
412 | CONFIG_CRYPTO_PCBC=m | 515 | CONFIG_CRYPTO_PCBC=m |
413 | CONFIG_CRYPTO_XTS=m | 516 | CONFIG_CRYPTO_XTS=m |
414 | CONFIG_CRYPTO_HMAC=y | ||
415 | CONFIG_CRYPTO_XCBC=m | 517 | CONFIG_CRYPTO_XCBC=m |
416 | CONFIG_CRYPTO_MD4=m | 518 | CONFIG_CRYPTO_VMAC=m |
417 | CONFIG_CRYPTO_MICHAEL_MIC=m | 519 | CONFIG_CRYPTO_MICHAEL_MIC=m |
418 | CONFIG_CRYPTO_RMD128=m | 520 | CONFIG_CRYPTO_RMD128=m |
419 | CONFIG_CRYPTO_RMD160=m | 521 | CONFIG_CRYPTO_RMD160=m |
420 | CONFIG_CRYPTO_RMD256=m | 522 | CONFIG_CRYPTO_RMD256=m |
421 | CONFIG_CRYPTO_RMD320=m | 523 | CONFIG_CRYPTO_RMD320=m |
422 | CONFIG_CRYPTO_SHA256=m | ||
423 | CONFIG_CRYPTO_SHA512=m | 524 | CONFIG_CRYPTO_SHA512=m |
424 | CONFIG_CRYPTO_TGR192=m | 525 | CONFIG_CRYPTO_TGR192=m |
425 | CONFIG_CRYPTO_WP512=m | 526 | CONFIG_CRYPTO_WP512=m |
426 | CONFIG_CRYPTO_AES=m | ||
427 | CONFIG_CRYPTO_ANUBIS=m | 527 | CONFIG_CRYPTO_ANUBIS=m |
428 | CONFIG_CRYPTO_BLOWFISH=m | 528 | CONFIG_CRYPTO_BLOWFISH=m |
429 | CONFIG_CRYPTO_CAMELLIA=m | 529 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -439,6 +539,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
439 | CONFIG_CRYPTO_ZLIB=m | 539 | CONFIG_CRYPTO_ZLIB=m |
440 | CONFIG_CRYPTO_LZO=m | 540 | CONFIG_CRYPTO_LZO=m |
441 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 541 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
542 | CONFIG_CRYPTO_USER_API_HASH=m | ||
543 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
442 | # CONFIG_CRYPTO_HW is not set | 544 | # CONFIG_CRYPTO_HW is not set |
443 | CONFIG_CRC16=y | ||
444 | CONFIG_CRC_T10DIF=y | 545 | CONFIG_CRC_T10DIF=y |
546 | CONFIG_XZ_DEC_X86=y | ||
547 | CONFIG_XZ_DEC_POWERPC=y | ||
548 | CONFIG_XZ_DEC_IA64=y | ||
549 | CONFIG_XZ_DEC_ARM=y | ||
550 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
551 | CONFIG_XZ_DEC_SPARC=y | ||
552 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme147_defconfig index e2af46f530c1..5586c6529fce 100644 --- a/arch/m68k/configs/mvme147_defconfig +++ b/arch/m68k/configs/mvme147_defconfig | |||
@@ -1,52 +1,73 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-mvme147" | 1 | CONFIG_LOCALVERSION="-mvme147" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
16 | CONFIG_PARTITION_ADVANCED=y | ||
17 | CONFIG_AMIGA_PARTITION=y | ||
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_MAC_PARTITION=y | ||
20 | CONFIG_BSD_DISKLABEL=y | ||
21 | CONFIG_MINIX_SUBPARTITION=y | ||
22 | CONFIG_SOLARIS_X86_PARTITION=y | ||
23 | CONFIG_UNIXWARE_DISKLABEL=y | ||
24 | CONFIG_SUN_PARTITION=y | ||
25 | # CONFIG_EFI_PARTITION is not set | ||
26 | CONFIG_IOSCHED_DEADLINE=m | ||
27 | CONFIG_M68030=y | ||
13 | CONFIG_VME=y | 28 | CONFIG_VME=y |
14 | CONFIG_MVME147=y | 29 | CONFIG_MVME147=y |
15 | CONFIG_M68030=y | 30 | # CONFIG_COMPACTION is not set |
31 | CONFIG_CLEANCACHE=y | ||
32 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
16 | CONFIG_BINFMT_AOUT=m | 33 | CONFIG_BINFMT_AOUT=m |
17 | CONFIG_BINFMT_MISC=m | 34 | CONFIG_BINFMT_MISC=m |
18 | CONFIG_PROC_HARDWARE=y | ||
19 | CONFIG_NET=y | 35 | CONFIG_NET=y |
20 | CONFIG_PACKET=y | 36 | CONFIG_PACKET=y |
37 | CONFIG_PACKET_DIAG=m | ||
21 | CONFIG_UNIX=y | 38 | CONFIG_UNIX=y |
39 | CONFIG_UNIX_DIAG=m | ||
40 | CONFIG_XFRM_MIGRATE=y | ||
22 | CONFIG_NET_KEY=y | 41 | CONFIG_NET_KEY=y |
23 | CONFIG_NET_KEY_MIGRATE=y | ||
24 | CONFIG_INET=y | 42 | CONFIG_INET=y |
25 | CONFIG_IP_PNP=y | 43 | CONFIG_IP_PNP=y |
26 | CONFIG_IP_PNP_DHCP=y | 44 | CONFIG_IP_PNP_DHCP=y |
27 | CONFIG_IP_PNP_BOOTP=y | 45 | CONFIG_IP_PNP_BOOTP=y |
28 | CONFIG_IP_PNP_RARP=y | 46 | CONFIG_IP_PNP_RARP=y |
29 | CONFIG_NET_IPIP=m | 47 | CONFIG_NET_IPIP=m |
48 | CONFIG_NET_IPGRE_DEMUX=m | ||
30 | CONFIG_NET_IPGRE=m | 49 | CONFIG_NET_IPGRE=m |
31 | CONFIG_SYN_COOKIES=y | 50 | CONFIG_SYN_COOKIES=y |
51 | CONFIG_NET_IPVTI=m | ||
32 | CONFIG_INET_AH=m | 52 | CONFIG_INET_AH=m |
33 | CONFIG_INET_ESP=m | 53 | CONFIG_INET_ESP=m |
34 | CONFIG_INET_IPCOMP=m | 54 | CONFIG_INET_IPCOMP=m |
35 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 55 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
36 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 56 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
37 | CONFIG_INET_XFRM_MODE_BEET=m | 57 | CONFIG_INET_XFRM_MODE_BEET=m |
58 | # CONFIG_INET_LRO is not set | ||
38 | CONFIG_INET_DIAG=m | 59 | CONFIG_INET_DIAG=m |
60 | CONFIG_INET_UDP_DIAG=m | ||
39 | CONFIG_IPV6_PRIVACY=y | 61 | CONFIG_IPV6_PRIVACY=y |
40 | CONFIG_IPV6_ROUTER_PREF=y | 62 | CONFIG_IPV6_ROUTER_PREF=y |
41 | CONFIG_IPV6_ROUTE_INFO=y | ||
42 | CONFIG_INET6_AH=m | 63 | CONFIG_INET6_AH=m |
43 | CONFIG_INET6_ESP=m | 64 | CONFIG_INET6_ESP=m |
44 | CONFIG_INET6_IPCOMP=m | 65 | CONFIG_INET6_IPCOMP=m |
45 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 66 | CONFIG_IPV6_GRE=m |
46 | CONFIG_IPV6_TUNNEL=m | ||
47 | CONFIG_NETFILTER=y | 67 | CONFIG_NETFILTER=y |
48 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
49 | CONFIG_NF_CONNTRACK=m | 68 | CONFIG_NF_CONNTRACK=m |
69 | CONFIG_NF_CONNTRACK_ZONES=y | ||
70 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
50 | # CONFIG_NF_CT_PROTO_DCCP is not set | 71 | # CONFIG_NF_CT_PROTO_DCCP is not set |
51 | CONFIG_NF_CT_PROTO_UDPLITE=m | 72 | CONFIG_NF_CT_PROTO_UDPLITE=m |
52 | CONFIG_NF_CONNTRACK_AMANDA=m | 73 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -54,25 +75,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
54 | CONFIG_NF_CONNTRACK_H323=m | 75 | CONFIG_NF_CONNTRACK_H323=m |
55 | CONFIG_NF_CONNTRACK_IRC=m | 76 | CONFIG_NF_CONNTRACK_IRC=m |
56 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 77 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
78 | CONFIG_NF_CONNTRACK_SNMP=m | ||
57 | CONFIG_NF_CONNTRACK_PPTP=m | 79 | CONFIG_NF_CONNTRACK_PPTP=m |
58 | CONFIG_NF_CONNTRACK_SANE=m | 80 | CONFIG_NF_CONNTRACK_SANE=m |
59 | CONFIG_NF_CONNTRACK_SIP=m | 81 | CONFIG_NF_CONNTRACK_SIP=m |
60 | CONFIG_NF_CONNTRACK_TFTP=m | 82 | CONFIG_NF_CONNTRACK_TFTP=m |
83 | CONFIG_NETFILTER_XT_SET=m | ||
84 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
61 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 85 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
62 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 86 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
63 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 87 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
88 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
89 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
90 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
64 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 91 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
65 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 92 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
66 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 93 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
94 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
95 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
67 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 96 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
68 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 97 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
69 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 98 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
99 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
100 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
70 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 101 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
71 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 102 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
72 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 103 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
104 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
73 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 105 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
74 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 106 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
75 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 107 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
108 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
76 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 109 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
77 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 110 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
78 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 111 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -83,6 +116,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
83 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 116 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
84 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 117 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
85 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 118 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
119 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
120 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
86 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 121 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
87 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 122 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
88 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 123 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -96,22 +131,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
96 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 131 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
97 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 132 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
98 | CONFIG_NETFILTER_XT_MATCH_U32=m | 133 | CONFIG_NETFILTER_XT_MATCH_U32=m |
134 | CONFIG_IP_SET=m | ||
135 | CONFIG_IP_SET_BITMAP_IP=m | ||
136 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
137 | CONFIG_IP_SET_BITMAP_PORT=m | ||
138 | CONFIG_IP_SET_HASH_IP=m | ||
139 | CONFIG_IP_SET_HASH_IPPORT=m | ||
140 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
141 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
142 | CONFIG_IP_SET_HASH_NET=m | ||
143 | CONFIG_IP_SET_HASH_NETPORT=m | ||
144 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
145 | CONFIG_IP_SET_LIST_SET=m | ||
99 | CONFIG_NF_CONNTRACK_IPV4=m | 146 | CONFIG_NF_CONNTRACK_IPV4=m |
100 | CONFIG_IP_NF_QUEUE=m | ||
101 | CONFIG_IP_NF_IPTABLES=m | 147 | CONFIG_IP_NF_IPTABLES=m |
102 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
103 | CONFIG_IP_NF_MATCH_AH=m | 148 | CONFIG_IP_NF_MATCH_AH=m |
104 | CONFIG_IP_NF_MATCH_ECN=m | 149 | CONFIG_IP_NF_MATCH_ECN=m |
150 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
105 | CONFIG_IP_NF_MATCH_TTL=m | 151 | CONFIG_IP_NF_MATCH_TTL=m |
106 | CONFIG_IP_NF_FILTER=m | 152 | CONFIG_IP_NF_FILTER=m |
107 | CONFIG_IP_NF_TARGET_REJECT=m | 153 | CONFIG_IP_NF_TARGET_REJECT=m |
108 | CONFIG_IP_NF_TARGET_LOG=m | ||
109 | CONFIG_IP_NF_TARGET_ULOG=m | 154 | CONFIG_IP_NF_TARGET_ULOG=m |
110 | CONFIG_NF_NAT=m | 155 | CONFIG_NF_NAT_IPV4=m |
111 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 156 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
112 | CONFIG_IP_NF_TARGET_NETMAP=m | 157 | CONFIG_IP_NF_TARGET_NETMAP=m |
113 | CONFIG_IP_NF_TARGET_REDIRECT=m | 158 | CONFIG_IP_NF_TARGET_REDIRECT=m |
114 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
115 | CONFIG_IP_NF_MANGLE=m | 159 | CONFIG_IP_NF_MANGLE=m |
116 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 160 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
117 | CONFIG_IP_NF_TARGET_ECN=m | 161 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -121,7 +165,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
121 | CONFIG_IP_NF_ARPFILTER=m | 165 | CONFIG_IP_NF_ARPFILTER=m |
122 | CONFIG_IP_NF_ARP_MANGLE=m | 166 | CONFIG_IP_NF_ARP_MANGLE=m |
123 | CONFIG_NF_CONNTRACK_IPV6=m | 167 | CONFIG_NF_CONNTRACK_IPV6=m |
124 | CONFIG_IP6_NF_QUEUE=m | ||
125 | CONFIG_IP6_NF_IPTABLES=m | 168 | CONFIG_IP6_NF_IPTABLES=m |
126 | CONFIG_IP6_NF_MATCH_AH=m | 169 | CONFIG_IP6_NF_MATCH_AH=m |
127 | CONFIG_IP6_NF_MATCH_EUI64=m | 170 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -130,21 +173,34 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
130 | CONFIG_IP6_NF_MATCH_HL=m | 173 | CONFIG_IP6_NF_MATCH_HL=m |
131 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 174 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
132 | CONFIG_IP6_NF_MATCH_MH=m | 175 | CONFIG_IP6_NF_MATCH_MH=m |
176 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
133 | CONFIG_IP6_NF_MATCH_RT=m | 177 | CONFIG_IP6_NF_MATCH_RT=m |
134 | CONFIG_IP6_NF_TARGET_HL=m | 178 | CONFIG_IP6_NF_TARGET_HL=m |
135 | CONFIG_IP6_NF_TARGET_LOG=m | ||
136 | CONFIG_IP6_NF_FILTER=m | 179 | CONFIG_IP6_NF_FILTER=m |
137 | CONFIG_IP6_NF_TARGET_REJECT=m | 180 | CONFIG_IP6_NF_TARGET_REJECT=m |
138 | CONFIG_IP6_NF_MANGLE=m | 181 | CONFIG_IP6_NF_MANGLE=m |
139 | CONFIG_IP6_NF_RAW=m | 182 | CONFIG_IP6_NF_RAW=m |
183 | CONFIG_NF_NAT_IPV6=m | ||
184 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
185 | CONFIG_IP6_NF_TARGET_NPT=m | ||
140 | CONFIG_IP_DCCP=m | 186 | CONFIG_IP_DCCP=m |
141 | # CONFIG_IP_DCCP_CCID3 is not set | 187 | # CONFIG_IP_DCCP_CCID3 is not set |
188 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
189 | CONFIG_RDS=m | ||
190 | CONFIG_RDS_TCP=m | ||
191 | CONFIG_L2TP=m | ||
142 | CONFIG_ATALK=m | 192 | CONFIG_ATALK=m |
193 | CONFIG_BATMAN_ADV=m | ||
194 | CONFIG_BATMAN_ADV_DAT=y | ||
195 | # CONFIG_WIRELESS is not set | ||
143 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 196 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
197 | CONFIG_DEVTMPFS=y | ||
144 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 198 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
199 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
145 | CONFIG_CONNECTOR=m | 200 | CONFIG_CONNECTOR=m |
146 | CONFIG_BLK_DEV_LOOP=y | 201 | CONFIG_BLK_DEV_LOOP=y |
147 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 202 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
203 | CONFIG_BLK_DEV_DRBD=m | ||
148 | CONFIG_BLK_DEV_NBD=m | 204 | CONFIG_BLK_DEV_NBD=m |
149 | CONFIG_BLK_DEV_RAM=y | 205 | CONFIG_BLK_DEV_RAM=y |
150 | CONFIG_CDROM_PKTCDVD=m | 206 | CONFIG_CDROM_PKTCDVD=m |
@@ -159,103 +215,132 @@ CONFIG_BLK_DEV_SR=y | |||
159 | CONFIG_BLK_DEV_SR_VENDOR=y | 215 | CONFIG_BLK_DEV_SR_VENDOR=y |
160 | CONFIG_CHR_DEV_SG=m | 216 | CONFIG_CHR_DEV_SG=m |
161 | CONFIG_SCSI_CONSTANTS=y | 217 | CONFIG_SCSI_CONSTANTS=y |
162 | CONFIG_SCSI_SAS_LIBSAS=m | 218 | CONFIG_SCSI_SAS_ATTRS=m |
163 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
164 | CONFIG_SCSI_SRP_ATTRS=m | ||
165 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
166 | CONFIG_ISCSI_TCP=m | 219 | CONFIG_ISCSI_TCP=m |
220 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
167 | CONFIG_MVME147_SCSI=y | 221 | CONFIG_MVME147_SCSI=y |
168 | CONFIG_MD=y | 222 | CONFIG_MD=y |
169 | CONFIG_BLK_DEV_MD=m | ||
170 | CONFIG_MD_LINEAR=m | 223 | CONFIG_MD_LINEAR=m |
171 | CONFIG_MD_RAID0=m | 224 | CONFIG_MD_RAID0=m |
172 | CONFIG_MD_RAID1=m | ||
173 | CONFIG_MD_RAID456=m | ||
174 | CONFIG_BLK_DEV_DM=m | 225 | CONFIG_BLK_DEV_DM=m |
175 | CONFIG_DM_CRYPT=m | 226 | CONFIG_DM_CRYPT=m |
176 | CONFIG_DM_SNAPSHOT=m | 227 | CONFIG_DM_SNAPSHOT=m |
228 | CONFIG_DM_THIN_PROVISIONING=m | ||
229 | CONFIG_DM_CACHE=m | ||
177 | CONFIG_DM_MIRROR=m | 230 | CONFIG_DM_MIRROR=m |
231 | CONFIG_DM_RAID=m | ||
178 | CONFIG_DM_ZERO=m | 232 | CONFIG_DM_ZERO=m |
179 | CONFIG_DM_MULTIPATH=m | 233 | CONFIG_DM_MULTIPATH=m |
180 | CONFIG_DM_UEVENT=y | 234 | CONFIG_DM_UEVENT=y |
235 | CONFIG_TARGET_CORE=m | ||
236 | CONFIG_TCM_IBLOCK=m | ||
237 | CONFIG_TCM_FILEIO=m | ||
238 | CONFIG_TCM_PSCSI=m | ||
181 | CONFIG_NETDEVICES=y | 239 | CONFIG_NETDEVICES=y |
182 | CONFIG_DUMMY=m | 240 | CONFIG_DUMMY=m |
183 | CONFIG_MACVLAN=m | ||
184 | CONFIG_EQUALIZER=m | 241 | CONFIG_EQUALIZER=m |
242 | CONFIG_NET_TEAM=m | ||
243 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
244 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
245 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
246 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
247 | CONFIG_VXLAN=m | ||
248 | CONFIG_NETCONSOLE=m | ||
249 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
185 | CONFIG_VETH=m | 250 | CONFIG_VETH=m |
186 | CONFIG_NET_ETHERNET=y | ||
187 | CONFIG_MVME147_NET=y | 251 | CONFIG_MVME147_NET=y |
188 | # CONFIG_NETDEV_1000 is not set | 252 | # CONFIG_NET_CADENCE is not set |
189 | # CONFIG_NETDEV_10000 is not set | 253 | # CONFIG_NET_VENDOR_BROADCOM is not set |
254 | # CONFIG_NET_VENDOR_INTEL is not set | ||
255 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
256 | # CONFIG_NET_VENDOR_MICREL is not set | ||
257 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
258 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
259 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
260 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
190 | CONFIG_PPP=m | 261 | CONFIG_PPP=m |
191 | CONFIG_PPP_FILTER=y | ||
192 | CONFIG_PPP_ASYNC=m | ||
193 | CONFIG_PPP_SYNC_TTY=m | ||
194 | CONFIG_PPP_DEFLATE=m | ||
195 | CONFIG_PPP_BSDCOMP=m | 262 | CONFIG_PPP_BSDCOMP=m |
263 | CONFIG_PPP_DEFLATE=m | ||
264 | CONFIG_PPP_FILTER=y | ||
196 | CONFIG_PPP_MPPE=m | 265 | CONFIG_PPP_MPPE=m |
197 | CONFIG_PPPOE=m | 266 | CONFIG_PPPOE=m |
267 | CONFIG_PPTP=m | ||
268 | CONFIG_PPPOL2TP=m | ||
269 | CONFIG_PPP_ASYNC=m | ||
270 | CONFIG_PPP_SYNC_TTY=m | ||
198 | CONFIG_SLIP=m | 271 | CONFIG_SLIP=m |
199 | CONFIG_SLIP_COMPRESSED=y | 272 | CONFIG_SLIP_COMPRESSED=y |
200 | CONFIG_SLIP_SMART=y | 273 | CONFIG_SLIP_SMART=y |
201 | CONFIG_SLIP_MODE_SLIP6=y | 274 | CONFIG_SLIP_MODE_SLIP6=y |
202 | CONFIG_NETCONSOLE=m | 275 | # CONFIG_WLAN is not set |
203 | CONFIG_NETCONSOLE_DYNAMIC=y | 276 | CONFIG_INPUT_EVDEV=m |
204 | CONFIG_INPUT_FF_MEMLESS=m | ||
205 | # CONFIG_KEYBOARD_ATKBD is not set | 277 | # CONFIG_KEYBOARD_ATKBD is not set |
206 | CONFIG_MOUSE_PS2=m | 278 | # CONFIG_MOUSE_PS2 is not set |
207 | CONFIG_MOUSE_SERIAL=m | 279 | # CONFIG_SERIO is not set |
208 | CONFIG_SERIO=m | ||
209 | # CONFIG_SERIO_SERPORT is not set | ||
210 | CONFIG_VT_HW_CONSOLE_BINDING=y | 280 | CONFIG_VT_HW_CONSOLE_BINDING=y |
281 | # CONFIG_LEGACY_PTYS is not set | ||
211 | # CONFIG_DEVKMEM is not set | 282 | # CONFIG_DEVKMEM is not set |
212 | # CONFIG_HW_RANDOM is not set | 283 | # CONFIG_HW_RANDOM is not set |
213 | CONFIG_GEN_RTC=m | 284 | CONFIG_NTP_PPS=y |
214 | CONFIG_GEN_RTC_X=y | 285 | CONFIG_PPS_CLIENT_LDISC=m |
286 | CONFIG_PTP_1588_CLOCK=m | ||
215 | # CONFIG_HWMON is not set | 287 | # CONFIG_HWMON is not set |
216 | CONFIG_HID=m | 288 | CONFIG_HID=m |
217 | CONFIG_HIDRAW=y | 289 | CONFIG_HIDRAW=y |
290 | CONFIG_UHID=m | ||
291 | # CONFIG_HID_GENERIC is not set | ||
218 | # CONFIG_USB_SUPPORT is not set | 292 | # CONFIG_USB_SUPPORT is not set |
293 | CONFIG_RTC_CLASS=y | ||
294 | CONFIG_RTC_DRV_GENERIC=m | ||
295 | # CONFIG_IOMMU_SUPPORT is not set | ||
296 | CONFIG_PROC_HARDWARE=y | ||
219 | CONFIG_EXT2_FS=y | 297 | CONFIG_EXT2_FS=y |
220 | CONFIG_EXT3_FS=y | 298 | CONFIG_EXT3_FS=y |
221 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 299 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
222 | # CONFIG_EXT3_FS_XATTR is not set | 300 | # CONFIG_EXT3_FS_XATTR is not set |
301 | CONFIG_EXT4_FS=y | ||
223 | CONFIG_REISERFS_FS=m | 302 | CONFIG_REISERFS_FS=m |
224 | CONFIG_JFS_FS=m | 303 | CONFIG_JFS_FS=m |
225 | CONFIG_XFS_FS=m | 304 | CONFIG_XFS_FS=m |
226 | CONFIG_OCFS2_FS=m | 305 | CONFIG_OCFS2_FS=m |
227 | # CONFIG_OCFS2_FS_STATS is not set | ||
228 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 306 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
307 | CONFIG_FANOTIFY=y | ||
229 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 308 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
230 | # CONFIG_PRINT_QUOTA_WARNING is not set | 309 | # CONFIG_PRINT_QUOTA_WARNING is not set |
231 | CONFIG_AUTOFS_FS=m | ||
232 | CONFIG_AUTOFS4_FS=m | 310 | CONFIG_AUTOFS4_FS=m |
233 | CONFIG_FUSE_FS=m | 311 | CONFIG_FUSE_FS=m |
312 | CONFIG_CUSE=m | ||
234 | CONFIG_ISO9660_FS=y | 313 | CONFIG_ISO9660_FS=y |
235 | CONFIG_JOLIET=y | 314 | CONFIG_JOLIET=y |
236 | CONFIG_ZISOFS=y | 315 | CONFIG_ZISOFS=y |
237 | CONFIG_UDF_FS=m | 316 | CONFIG_UDF_FS=m |
238 | CONFIG_MSDOS_FS=y | 317 | CONFIG_MSDOS_FS=m |
239 | CONFIG_VFAT_FS=m | 318 | CONFIG_VFAT_FS=m |
240 | CONFIG_PROC_KCORE=y | 319 | CONFIG_PROC_KCORE=y |
241 | CONFIG_TMPFS=y | 320 | CONFIG_TMPFS=y |
242 | CONFIG_AFFS_FS=m | 321 | CONFIG_AFFS_FS=m |
322 | CONFIG_ECRYPT_FS=m | ||
323 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
243 | CONFIG_HFS_FS=m | 324 | CONFIG_HFS_FS=m |
244 | CONFIG_HFSPLUS_FS=m | 325 | CONFIG_HFSPLUS_FS=m |
245 | CONFIG_CRAMFS=m | 326 | CONFIG_CRAMFS=m |
246 | CONFIG_SQUASHFS=m | 327 | CONFIG_SQUASHFS=m |
247 | CONFIG_MINIX_FS=y | 328 | CONFIG_SQUASHFS_LZO=y |
329 | CONFIG_MINIX_FS=m | ||
330 | CONFIG_OMFS_FS=m | ||
248 | CONFIG_HPFS_FS=m | 331 | CONFIG_HPFS_FS=m |
332 | CONFIG_QNX4FS_FS=m | ||
333 | CONFIG_QNX6FS_FS=m | ||
249 | CONFIG_SYSV_FS=m | 334 | CONFIG_SYSV_FS=m |
250 | CONFIG_UFS_FS=m | 335 | CONFIG_UFS_FS=m |
251 | CONFIG_NFS_FS=y | 336 | CONFIG_NFS_FS=y |
252 | CONFIG_NFS_V3=y | ||
253 | CONFIG_NFS_V4=y | 337 | CONFIG_NFS_V4=y |
338 | CONFIG_NFS_SWAP=y | ||
254 | CONFIG_ROOT_NFS=y | 339 | CONFIG_ROOT_NFS=y |
255 | CONFIG_NFSD=m | 340 | CONFIG_NFSD=m |
256 | CONFIG_NFSD_V3=y | 341 | CONFIG_NFSD_V3=y |
257 | CONFIG_SMB_FS=m | 342 | CONFIG_CIFS=m |
258 | CONFIG_SMB_NLS_DEFAULT=y | 343 | # CONFIG_CIFS_DEBUG is not set |
259 | CONFIG_CODA_FS=m | 344 | CONFIG_CODA_FS=m |
260 | CONFIG_NLS_CODEPAGE_437=y | 345 | CONFIG_NLS_CODEPAGE_437=y |
261 | CONFIG_NLS_CODEPAGE_737=m | 346 | CONFIG_NLS_CODEPAGE_737=m |
@@ -294,10 +379,23 @@ CONFIG_NLS_ISO8859_14=m | |||
294 | CONFIG_NLS_ISO8859_15=m | 379 | CONFIG_NLS_ISO8859_15=m |
295 | CONFIG_NLS_KOI8_R=m | 380 | CONFIG_NLS_KOI8_R=m |
296 | CONFIG_NLS_KOI8_U=m | 381 | CONFIG_NLS_KOI8_U=m |
382 | CONFIG_NLS_MAC_ROMAN=m | ||
383 | CONFIG_NLS_MAC_CELTIC=m | ||
384 | CONFIG_NLS_MAC_CENTEURO=m | ||
385 | CONFIG_NLS_MAC_CROATIAN=m | ||
386 | CONFIG_NLS_MAC_CYRILLIC=m | ||
387 | CONFIG_NLS_MAC_GAELIC=m | ||
388 | CONFIG_NLS_MAC_GREEK=m | ||
389 | CONFIG_NLS_MAC_ICELAND=m | ||
390 | CONFIG_NLS_MAC_INUIT=m | ||
391 | CONFIG_NLS_MAC_ROMANIAN=m | ||
392 | CONFIG_NLS_MAC_TURKISH=m | ||
297 | CONFIG_DLM=m | 393 | CONFIG_DLM=m |
298 | CONFIG_MAGIC_SYSRQ=y | 394 | CONFIG_MAGIC_SYSRQ=y |
299 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 395 | CONFIG_ASYNC_RAID6_TEST=m |
300 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 396 | CONFIG_ENCRYPTED_KEYS=m |
397 | CONFIG_CRYPTO_MANAGER=y | ||
398 | CONFIG_CRYPTO_USER=m | ||
301 | CONFIG_CRYPTO_NULL=m | 399 | CONFIG_CRYPTO_NULL=m |
302 | CONFIG_CRYPTO_CRYPTD=m | 400 | CONFIG_CRYPTO_CRYPTD=m |
303 | CONFIG_CRYPTO_TEST=m | 401 | CONFIG_CRYPTO_TEST=m |
@@ -307,19 +405,16 @@ CONFIG_CRYPTO_CTS=m | |||
307 | CONFIG_CRYPTO_LRW=m | 405 | CONFIG_CRYPTO_LRW=m |
308 | CONFIG_CRYPTO_PCBC=m | 406 | CONFIG_CRYPTO_PCBC=m |
309 | CONFIG_CRYPTO_XTS=m | 407 | CONFIG_CRYPTO_XTS=m |
310 | CONFIG_CRYPTO_HMAC=y | ||
311 | CONFIG_CRYPTO_XCBC=m | 408 | CONFIG_CRYPTO_XCBC=m |
312 | CONFIG_CRYPTO_MD4=m | 409 | CONFIG_CRYPTO_VMAC=m |
313 | CONFIG_CRYPTO_MICHAEL_MIC=m | 410 | CONFIG_CRYPTO_MICHAEL_MIC=m |
314 | CONFIG_CRYPTO_RMD128=m | 411 | CONFIG_CRYPTO_RMD128=m |
315 | CONFIG_CRYPTO_RMD160=m | 412 | CONFIG_CRYPTO_RMD160=m |
316 | CONFIG_CRYPTO_RMD256=m | 413 | CONFIG_CRYPTO_RMD256=m |
317 | CONFIG_CRYPTO_RMD320=m | 414 | CONFIG_CRYPTO_RMD320=m |
318 | CONFIG_CRYPTO_SHA256=m | ||
319 | CONFIG_CRYPTO_SHA512=m | 415 | CONFIG_CRYPTO_SHA512=m |
320 | CONFIG_CRYPTO_TGR192=m | 416 | CONFIG_CRYPTO_TGR192=m |
321 | CONFIG_CRYPTO_WP512=m | 417 | CONFIG_CRYPTO_WP512=m |
322 | CONFIG_CRYPTO_AES=m | ||
323 | CONFIG_CRYPTO_ANUBIS=m | 418 | CONFIG_CRYPTO_ANUBIS=m |
324 | CONFIG_CRYPTO_BLOWFISH=m | 419 | CONFIG_CRYPTO_BLOWFISH=m |
325 | CONFIG_CRYPTO_CAMELLIA=m | 420 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -335,6 +430,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
335 | CONFIG_CRYPTO_ZLIB=m | 430 | CONFIG_CRYPTO_ZLIB=m |
336 | CONFIG_CRYPTO_LZO=m | 431 | CONFIG_CRYPTO_LZO=m |
337 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 432 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
433 | CONFIG_CRYPTO_USER_API_HASH=m | ||
434 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
338 | # CONFIG_CRYPTO_HW is not set | 435 | # CONFIG_CRYPTO_HW is not set |
339 | CONFIG_CRC16=m | ||
340 | CONFIG_CRC_T10DIF=y | 436 | CONFIG_CRC_T10DIF=y |
437 | CONFIG_XZ_DEC_X86=y | ||
438 | CONFIG_XZ_DEC_POWERPC=y | ||
439 | CONFIG_XZ_DEC_IA64=y | ||
440 | CONFIG_XZ_DEC_ARM=y | ||
441 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
442 | CONFIG_XZ_DEC_SPARC=y | ||
443 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16x_defconfig index 7c9402b2097f..e5e8262bbacd 100644 --- a/arch/m68k/configs/mvme16x_defconfig +++ b/arch/m68k/configs/mvme16x_defconfig | |||
@@ -1,53 +1,74 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-mvme16x" | 1 | CONFIG_LOCALVERSION="-mvme16x" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
13 | CONFIG_VME=y | 16 | CONFIG_PARTITION_ADVANCED=y |
14 | CONFIG_MVME16x=y | 17 | CONFIG_AMIGA_PARTITION=y |
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_MAC_PARTITION=y | ||
20 | CONFIG_BSD_DISKLABEL=y | ||
21 | CONFIG_MINIX_SUBPARTITION=y | ||
22 | CONFIG_SOLARIS_X86_PARTITION=y | ||
23 | CONFIG_UNIXWARE_DISKLABEL=y | ||
24 | CONFIG_SUN_PARTITION=y | ||
25 | # CONFIG_EFI_PARTITION is not set | ||
26 | CONFIG_IOSCHED_DEADLINE=m | ||
15 | CONFIG_M68040=y | 27 | CONFIG_M68040=y |
16 | CONFIG_M68060=y | 28 | CONFIG_M68060=y |
29 | CONFIG_VME=y | ||
30 | CONFIG_MVME16x=y | ||
31 | # CONFIG_COMPACTION is not set | ||
32 | CONFIG_CLEANCACHE=y | ||
33 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
17 | CONFIG_BINFMT_AOUT=m | 34 | CONFIG_BINFMT_AOUT=m |
18 | CONFIG_BINFMT_MISC=m | 35 | CONFIG_BINFMT_MISC=m |
19 | CONFIG_PROC_HARDWARE=y | ||
20 | CONFIG_NET=y | 36 | CONFIG_NET=y |
21 | CONFIG_PACKET=y | 37 | CONFIG_PACKET=y |
38 | CONFIG_PACKET_DIAG=m | ||
22 | CONFIG_UNIX=y | 39 | CONFIG_UNIX=y |
40 | CONFIG_UNIX_DIAG=m | ||
41 | CONFIG_XFRM_MIGRATE=y | ||
23 | CONFIG_NET_KEY=y | 42 | CONFIG_NET_KEY=y |
24 | CONFIG_NET_KEY_MIGRATE=y | ||
25 | CONFIG_INET=y | 43 | CONFIG_INET=y |
26 | CONFIG_IP_PNP=y | 44 | CONFIG_IP_PNP=y |
27 | CONFIG_IP_PNP_DHCP=y | 45 | CONFIG_IP_PNP_DHCP=y |
28 | CONFIG_IP_PNP_BOOTP=y | 46 | CONFIG_IP_PNP_BOOTP=y |
29 | CONFIG_IP_PNP_RARP=y | 47 | CONFIG_IP_PNP_RARP=y |
30 | CONFIG_NET_IPIP=m | 48 | CONFIG_NET_IPIP=m |
49 | CONFIG_NET_IPGRE_DEMUX=m | ||
31 | CONFIG_NET_IPGRE=m | 50 | CONFIG_NET_IPGRE=m |
32 | CONFIG_SYN_COOKIES=y | 51 | CONFIG_SYN_COOKIES=y |
52 | CONFIG_NET_IPVTI=m | ||
33 | CONFIG_INET_AH=m | 53 | CONFIG_INET_AH=m |
34 | CONFIG_INET_ESP=m | 54 | CONFIG_INET_ESP=m |
35 | CONFIG_INET_IPCOMP=m | 55 | CONFIG_INET_IPCOMP=m |
36 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 56 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
37 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 57 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
38 | CONFIG_INET_XFRM_MODE_BEET=m | 58 | CONFIG_INET_XFRM_MODE_BEET=m |
59 | # CONFIG_INET_LRO is not set | ||
39 | CONFIG_INET_DIAG=m | 60 | CONFIG_INET_DIAG=m |
61 | CONFIG_INET_UDP_DIAG=m | ||
40 | CONFIG_IPV6_PRIVACY=y | 62 | CONFIG_IPV6_PRIVACY=y |
41 | CONFIG_IPV6_ROUTER_PREF=y | 63 | CONFIG_IPV6_ROUTER_PREF=y |
42 | CONFIG_IPV6_ROUTE_INFO=y | ||
43 | CONFIG_INET6_AH=m | 64 | CONFIG_INET6_AH=m |
44 | CONFIG_INET6_ESP=m | 65 | CONFIG_INET6_ESP=m |
45 | CONFIG_INET6_IPCOMP=m | 66 | CONFIG_INET6_IPCOMP=m |
46 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 67 | CONFIG_IPV6_GRE=m |
47 | CONFIG_IPV6_TUNNEL=m | ||
48 | CONFIG_NETFILTER=y | 68 | CONFIG_NETFILTER=y |
49 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
50 | CONFIG_NF_CONNTRACK=m | 69 | CONFIG_NF_CONNTRACK=m |
70 | CONFIG_NF_CONNTRACK_ZONES=y | ||
71 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
51 | # CONFIG_NF_CT_PROTO_DCCP is not set | 72 | # CONFIG_NF_CT_PROTO_DCCP is not set |
52 | CONFIG_NF_CT_PROTO_UDPLITE=m | 73 | CONFIG_NF_CT_PROTO_UDPLITE=m |
53 | CONFIG_NF_CONNTRACK_AMANDA=m | 74 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -55,25 +76,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
55 | CONFIG_NF_CONNTRACK_H323=m | 76 | CONFIG_NF_CONNTRACK_H323=m |
56 | CONFIG_NF_CONNTRACK_IRC=m | 77 | CONFIG_NF_CONNTRACK_IRC=m |
57 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 78 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
79 | CONFIG_NF_CONNTRACK_SNMP=m | ||
58 | CONFIG_NF_CONNTRACK_PPTP=m | 80 | CONFIG_NF_CONNTRACK_PPTP=m |
59 | CONFIG_NF_CONNTRACK_SANE=m | 81 | CONFIG_NF_CONNTRACK_SANE=m |
60 | CONFIG_NF_CONNTRACK_SIP=m | 82 | CONFIG_NF_CONNTRACK_SIP=m |
61 | CONFIG_NF_CONNTRACK_TFTP=m | 83 | CONFIG_NF_CONNTRACK_TFTP=m |
84 | CONFIG_NETFILTER_XT_SET=m | ||
85 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
62 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 86 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
63 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 87 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
64 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 88 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
89 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
90 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
91 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
65 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 92 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
66 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 93 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
67 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 94 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
95 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
96 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
68 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 97 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
69 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 98 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
70 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 99 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
100 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
101 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
71 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 102 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
72 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 103 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
73 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 104 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
105 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
74 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 106 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
75 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 107 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
76 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 108 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
109 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
77 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 110 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
78 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 111 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
79 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 112 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -84,6 +117,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
84 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 117 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
85 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 118 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
86 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 119 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
120 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
121 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
87 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 122 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
88 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 123 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
89 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 124 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -97,22 +132,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
97 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 132 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
98 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 133 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
99 | CONFIG_NETFILTER_XT_MATCH_U32=m | 134 | CONFIG_NETFILTER_XT_MATCH_U32=m |
135 | CONFIG_IP_SET=m | ||
136 | CONFIG_IP_SET_BITMAP_IP=m | ||
137 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
138 | CONFIG_IP_SET_BITMAP_PORT=m | ||
139 | CONFIG_IP_SET_HASH_IP=m | ||
140 | CONFIG_IP_SET_HASH_IPPORT=m | ||
141 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
142 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
143 | CONFIG_IP_SET_HASH_NET=m | ||
144 | CONFIG_IP_SET_HASH_NETPORT=m | ||
145 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
146 | CONFIG_IP_SET_LIST_SET=m | ||
100 | CONFIG_NF_CONNTRACK_IPV4=m | 147 | CONFIG_NF_CONNTRACK_IPV4=m |
101 | CONFIG_IP_NF_QUEUE=m | ||
102 | CONFIG_IP_NF_IPTABLES=m | 148 | CONFIG_IP_NF_IPTABLES=m |
103 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
104 | CONFIG_IP_NF_MATCH_AH=m | 149 | CONFIG_IP_NF_MATCH_AH=m |
105 | CONFIG_IP_NF_MATCH_ECN=m | 150 | CONFIG_IP_NF_MATCH_ECN=m |
151 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
106 | CONFIG_IP_NF_MATCH_TTL=m | 152 | CONFIG_IP_NF_MATCH_TTL=m |
107 | CONFIG_IP_NF_FILTER=m | 153 | CONFIG_IP_NF_FILTER=m |
108 | CONFIG_IP_NF_TARGET_REJECT=m | 154 | CONFIG_IP_NF_TARGET_REJECT=m |
109 | CONFIG_IP_NF_TARGET_LOG=m | ||
110 | CONFIG_IP_NF_TARGET_ULOG=m | 155 | CONFIG_IP_NF_TARGET_ULOG=m |
111 | CONFIG_NF_NAT=m | 156 | CONFIG_NF_NAT_IPV4=m |
112 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 157 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
113 | CONFIG_IP_NF_TARGET_NETMAP=m | 158 | CONFIG_IP_NF_TARGET_NETMAP=m |
114 | CONFIG_IP_NF_TARGET_REDIRECT=m | 159 | CONFIG_IP_NF_TARGET_REDIRECT=m |
115 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
116 | CONFIG_IP_NF_MANGLE=m | 160 | CONFIG_IP_NF_MANGLE=m |
117 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 161 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
118 | CONFIG_IP_NF_TARGET_ECN=m | 162 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -122,7 +166,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
122 | CONFIG_IP_NF_ARPFILTER=m | 166 | CONFIG_IP_NF_ARPFILTER=m |
123 | CONFIG_IP_NF_ARP_MANGLE=m | 167 | CONFIG_IP_NF_ARP_MANGLE=m |
124 | CONFIG_NF_CONNTRACK_IPV6=m | 168 | CONFIG_NF_CONNTRACK_IPV6=m |
125 | CONFIG_IP6_NF_QUEUE=m | ||
126 | CONFIG_IP6_NF_IPTABLES=m | 169 | CONFIG_IP6_NF_IPTABLES=m |
127 | CONFIG_IP6_NF_MATCH_AH=m | 170 | CONFIG_IP6_NF_MATCH_AH=m |
128 | CONFIG_IP6_NF_MATCH_EUI64=m | 171 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -131,21 +174,34 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
131 | CONFIG_IP6_NF_MATCH_HL=m | 174 | CONFIG_IP6_NF_MATCH_HL=m |
132 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 175 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
133 | CONFIG_IP6_NF_MATCH_MH=m | 176 | CONFIG_IP6_NF_MATCH_MH=m |
177 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
134 | CONFIG_IP6_NF_MATCH_RT=m | 178 | CONFIG_IP6_NF_MATCH_RT=m |
135 | CONFIG_IP6_NF_TARGET_HL=m | 179 | CONFIG_IP6_NF_TARGET_HL=m |
136 | CONFIG_IP6_NF_TARGET_LOG=m | ||
137 | CONFIG_IP6_NF_FILTER=m | 180 | CONFIG_IP6_NF_FILTER=m |
138 | CONFIG_IP6_NF_TARGET_REJECT=m | 181 | CONFIG_IP6_NF_TARGET_REJECT=m |
139 | CONFIG_IP6_NF_MANGLE=m | 182 | CONFIG_IP6_NF_MANGLE=m |
140 | CONFIG_IP6_NF_RAW=m | 183 | CONFIG_IP6_NF_RAW=m |
184 | CONFIG_NF_NAT_IPV6=m | ||
185 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
186 | CONFIG_IP6_NF_TARGET_NPT=m | ||
141 | CONFIG_IP_DCCP=m | 187 | CONFIG_IP_DCCP=m |
142 | # CONFIG_IP_DCCP_CCID3 is not set | 188 | # CONFIG_IP_DCCP_CCID3 is not set |
189 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
190 | CONFIG_RDS=m | ||
191 | CONFIG_RDS_TCP=m | ||
192 | CONFIG_L2TP=m | ||
143 | CONFIG_ATALK=m | 193 | CONFIG_ATALK=m |
194 | CONFIG_BATMAN_ADV=m | ||
195 | CONFIG_BATMAN_ADV_DAT=y | ||
196 | # CONFIG_WIRELESS is not set | ||
144 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 197 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
198 | CONFIG_DEVTMPFS=y | ||
145 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 199 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
200 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
146 | CONFIG_CONNECTOR=m | 201 | CONFIG_CONNECTOR=m |
147 | CONFIG_BLK_DEV_LOOP=y | 202 | CONFIG_BLK_DEV_LOOP=y |
148 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 203 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
204 | CONFIG_BLK_DEV_DRBD=m | ||
149 | CONFIG_BLK_DEV_NBD=m | 205 | CONFIG_BLK_DEV_NBD=m |
150 | CONFIG_BLK_DEV_RAM=y | 206 | CONFIG_BLK_DEV_RAM=y |
151 | CONFIG_CDROM_PKTCDVD=m | 207 | CONFIG_CDROM_PKTCDVD=m |
@@ -160,103 +216,131 @@ CONFIG_BLK_DEV_SR=y | |||
160 | CONFIG_BLK_DEV_SR_VENDOR=y | 216 | CONFIG_BLK_DEV_SR_VENDOR=y |
161 | CONFIG_CHR_DEV_SG=m | 217 | CONFIG_CHR_DEV_SG=m |
162 | CONFIG_SCSI_CONSTANTS=y | 218 | CONFIG_SCSI_CONSTANTS=y |
163 | CONFIG_SCSI_SAS_LIBSAS=m | 219 | CONFIG_SCSI_SAS_ATTRS=m |
164 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
165 | CONFIG_SCSI_SRP_ATTRS=m | ||
166 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
167 | CONFIG_ISCSI_TCP=m | 220 | CONFIG_ISCSI_TCP=m |
221 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
168 | CONFIG_MVME16x_SCSI=y | 222 | CONFIG_MVME16x_SCSI=y |
169 | CONFIG_MD=y | 223 | CONFIG_MD=y |
170 | CONFIG_BLK_DEV_MD=m | ||
171 | CONFIG_MD_LINEAR=m | 224 | CONFIG_MD_LINEAR=m |
172 | CONFIG_MD_RAID0=m | 225 | CONFIG_MD_RAID0=m |
173 | CONFIG_MD_RAID1=m | ||
174 | CONFIG_MD_RAID456=m | ||
175 | CONFIG_BLK_DEV_DM=m | 226 | CONFIG_BLK_DEV_DM=m |
176 | CONFIG_DM_CRYPT=m | 227 | CONFIG_DM_CRYPT=m |
177 | CONFIG_DM_SNAPSHOT=m | 228 | CONFIG_DM_SNAPSHOT=m |
229 | CONFIG_DM_THIN_PROVISIONING=m | ||
230 | CONFIG_DM_CACHE=m | ||
178 | CONFIG_DM_MIRROR=m | 231 | CONFIG_DM_MIRROR=m |
232 | CONFIG_DM_RAID=m | ||
179 | CONFIG_DM_ZERO=m | 233 | CONFIG_DM_ZERO=m |
180 | CONFIG_DM_MULTIPATH=m | 234 | CONFIG_DM_MULTIPATH=m |
181 | CONFIG_DM_UEVENT=y | 235 | CONFIG_DM_UEVENT=y |
236 | CONFIG_TARGET_CORE=m | ||
237 | CONFIG_TCM_IBLOCK=m | ||
238 | CONFIG_TCM_FILEIO=m | ||
239 | CONFIG_TCM_PSCSI=m | ||
182 | CONFIG_NETDEVICES=y | 240 | CONFIG_NETDEVICES=y |
183 | CONFIG_DUMMY=m | 241 | CONFIG_DUMMY=m |
184 | CONFIG_MACVLAN=m | ||
185 | CONFIG_EQUALIZER=m | 242 | CONFIG_EQUALIZER=m |
243 | CONFIG_NET_TEAM=m | ||
244 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
245 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
246 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
247 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
248 | CONFIG_VXLAN=m | ||
249 | CONFIG_NETCONSOLE=m | ||
250 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
186 | CONFIG_VETH=m | 251 | CONFIG_VETH=m |
187 | CONFIG_NET_ETHERNET=y | 252 | # CONFIG_NET_CADENCE is not set |
253 | # CONFIG_NET_VENDOR_BROADCOM is not set | ||
188 | CONFIG_MVME16x_NET=y | 254 | CONFIG_MVME16x_NET=y |
189 | # CONFIG_NETDEV_1000 is not set | 255 | # CONFIG_NET_VENDOR_MARVELL is not set |
190 | # CONFIG_NETDEV_10000 is not set | 256 | # CONFIG_NET_VENDOR_MICREL is not set |
257 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
258 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
259 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
260 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
191 | CONFIG_PPP=m | 261 | CONFIG_PPP=m |
192 | CONFIG_PPP_FILTER=y | ||
193 | CONFIG_PPP_ASYNC=m | ||
194 | CONFIG_PPP_SYNC_TTY=m | ||
195 | CONFIG_PPP_DEFLATE=m | ||
196 | CONFIG_PPP_BSDCOMP=m | 262 | CONFIG_PPP_BSDCOMP=m |
263 | CONFIG_PPP_DEFLATE=m | ||
264 | CONFIG_PPP_FILTER=y | ||
197 | CONFIG_PPP_MPPE=m | 265 | CONFIG_PPP_MPPE=m |
198 | CONFIG_PPPOE=m | 266 | CONFIG_PPPOE=m |
267 | CONFIG_PPTP=m | ||
268 | CONFIG_PPPOL2TP=m | ||
269 | CONFIG_PPP_ASYNC=m | ||
270 | CONFIG_PPP_SYNC_TTY=m | ||
199 | CONFIG_SLIP=m | 271 | CONFIG_SLIP=m |
200 | CONFIG_SLIP_COMPRESSED=y | 272 | CONFIG_SLIP_COMPRESSED=y |
201 | CONFIG_SLIP_SMART=y | 273 | CONFIG_SLIP_SMART=y |
202 | CONFIG_SLIP_MODE_SLIP6=y | 274 | CONFIG_SLIP_MODE_SLIP6=y |
203 | CONFIG_NETCONSOLE=m | 275 | # CONFIG_WLAN is not set |
204 | CONFIG_NETCONSOLE_DYNAMIC=y | 276 | CONFIG_INPUT_EVDEV=m |
205 | CONFIG_INPUT_FF_MEMLESS=m | ||
206 | # CONFIG_KEYBOARD_ATKBD is not set | 277 | # CONFIG_KEYBOARD_ATKBD is not set |
207 | CONFIG_MOUSE_PS2=m | 278 | # CONFIG_MOUSE_PS2 is not set |
208 | CONFIG_MOUSE_SERIAL=m | 279 | # CONFIG_SERIO is not set |
209 | CONFIG_SERIO=m | ||
210 | # CONFIG_SERIO_SERPORT is not set | ||
211 | CONFIG_VT_HW_CONSOLE_BINDING=y | 280 | CONFIG_VT_HW_CONSOLE_BINDING=y |
281 | # CONFIG_LEGACY_PTYS is not set | ||
212 | # CONFIG_DEVKMEM is not set | 282 | # CONFIG_DEVKMEM is not set |
213 | # CONFIG_HW_RANDOM is not set | 283 | # CONFIG_HW_RANDOM is not set |
214 | CONFIG_GEN_RTC=m | 284 | CONFIG_NTP_PPS=y |
215 | CONFIG_GEN_RTC_X=y | 285 | CONFIG_PPS_CLIENT_LDISC=m |
286 | CONFIG_PTP_1588_CLOCK=m | ||
216 | # CONFIG_HWMON is not set | 287 | # CONFIG_HWMON is not set |
217 | CONFIG_HID=m | 288 | CONFIG_HID=m |
218 | CONFIG_HIDRAW=y | 289 | CONFIG_HIDRAW=y |
290 | CONFIG_UHID=m | ||
291 | # CONFIG_HID_GENERIC is not set | ||
219 | # CONFIG_USB_SUPPORT is not set | 292 | # CONFIG_USB_SUPPORT is not set |
293 | CONFIG_RTC_CLASS=y | ||
294 | CONFIG_RTC_DRV_GENERIC=m | ||
295 | # CONFIG_IOMMU_SUPPORT is not set | ||
296 | CONFIG_PROC_HARDWARE=y | ||
220 | CONFIG_EXT2_FS=y | 297 | CONFIG_EXT2_FS=y |
221 | CONFIG_EXT3_FS=y | 298 | CONFIG_EXT3_FS=y |
222 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 299 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
223 | # CONFIG_EXT3_FS_XATTR is not set | 300 | # CONFIG_EXT3_FS_XATTR is not set |
301 | CONFIG_EXT4_FS=y | ||
224 | CONFIG_REISERFS_FS=m | 302 | CONFIG_REISERFS_FS=m |
225 | CONFIG_JFS_FS=m | 303 | CONFIG_JFS_FS=m |
226 | CONFIG_XFS_FS=m | 304 | CONFIG_XFS_FS=m |
227 | CONFIG_OCFS2_FS=m | 305 | CONFIG_OCFS2_FS=m |
228 | # CONFIG_OCFS2_FS_STATS is not set | ||
229 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 306 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
307 | CONFIG_FANOTIFY=y | ||
230 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 308 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
231 | # CONFIG_PRINT_QUOTA_WARNING is not set | 309 | # CONFIG_PRINT_QUOTA_WARNING is not set |
232 | CONFIG_AUTOFS_FS=m | ||
233 | CONFIG_AUTOFS4_FS=m | 310 | CONFIG_AUTOFS4_FS=m |
234 | CONFIG_FUSE_FS=m | 311 | CONFIG_FUSE_FS=m |
312 | CONFIG_CUSE=m | ||
235 | CONFIG_ISO9660_FS=y | 313 | CONFIG_ISO9660_FS=y |
236 | CONFIG_JOLIET=y | 314 | CONFIG_JOLIET=y |
237 | CONFIG_ZISOFS=y | 315 | CONFIG_ZISOFS=y |
238 | CONFIG_UDF_FS=m | 316 | CONFIG_UDF_FS=m |
239 | CONFIG_MSDOS_FS=y | 317 | CONFIG_MSDOS_FS=m |
240 | CONFIG_VFAT_FS=m | 318 | CONFIG_VFAT_FS=m |
241 | CONFIG_PROC_KCORE=y | 319 | CONFIG_PROC_KCORE=y |
242 | CONFIG_TMPFS=y | 320 | CONFIG_TMPFS=y |
243 | CONFIG_AFFS_FS=m | 321 | CONFIG_AFFS_FS=m |
322 | CONFIG_ECRYPT_FS=m | ||
323 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
244 | CONFIG_HFS_FS=m | 324 | CONFIG_HFS_FS=m |
245 | CONFIG_HFSPLUS_FS=m | 325 | CONFIG_HFSPLUS_FS=m |
246 | CONFIG_CRAMFS=m | 326 | CONFIG_CRAMFS=m |
247 | CONFIG_SQUASHFS=m | 327 | CONFIG_SQUASHFS=m |
248 | CONFIG_MINIX_FS=y | 328 | CONFIG_SQUASHFS_LZO=y |
329 | CONFIG_MINIX_FS=m | ||
330 | CONFIG_OMFS_FS=m | ||
249 | CONFIG_HPFS_FS=m | 331 | CONFIG_HPFS_FS=m |
332 | CONFIG_QNX4FS_FS=m | ||
333 | CONFIG_QNX6FS_FS=m | ||
250 | CONFIG_SYSV_FS=m | 334 | CONFIG_SYSV_FS=m |
251 | CONFIG_UFS_FS=m | 335 | CONFIG_UFS_FS=m |
252 | CONFIG_NFS_FS=y | 336 | CONFIG_NFS_FS=y |
253 | CONFIG_NFS_V3=y | ||
254 | CONFIG_NFS_V4=y | 337 | CONFIG_NFS_V4=y |
338 | CONFIG_NFS_SWAP=y | ||
255 | CONFIG_ROOT_NFS=y | 339 | CONFIG_ROOT_NFS=y |
256 | CONFIG_NFSD=m | 340 | CONFIG_NFSD=m |
257 | CONFIG_NFSD_V3=y | 341 | CONFIG_NFSD_V3=y |
258 | CONFIG_SMB_FS=m | 342 | CONFIG_CIFS=m |
259 | CONFIG_SMB_NLS_DEFAULT=y | 343 | # CONFIG_CIFS_DEBUG is not set |
260 | CONFIG_CODA_FS=m | 344 | CONFIG_CODA_FS=m |
261 | CONFIG_NLS_CODEPAGE_437=y | 345 | CONFIG_NLS_CODEPAGE_437=y |
262 | CONFIG_NLS_CODEPAGE_737=m | 346 | CONFIG_NLS_CODEPAGE_737=m |
@@ -295,10 +379,23 @@ CONFIG_NLS_ISO8859_14=m | |||
295 | CONFIG_NLS_ISO8859_15=m | 379 | CONFIG_NLS_ISO8859_15=m |
296 | CONFIG_NLS_KOI8_R=m | 380 | CONFIG_NLS_KOI8_R=m |
297 | CONFIG_NLS_KOI8_U=m | 381 | CONFIG_NLS_KOI8_U=m |
382 | CONFIG_NLS_MAC_ROMAN=m | ||
383 | CONFIG_NLS_MAC_CELTIC=m | ||
384 | CONFIG_NLS_MAC_CENTEURO=m | ||
385 | CONFIG_NLS_MAC_CROATIAN=m | ||
386 | CONFIG_NLS_MAC_CYRILLIC=m | ||
387 | CONFIG_NLS_MAC_GAELIC=m | ||
388 | CONFIG_NLS_MAC_GREEK=m | ||
389 | CONFIG_NLS_MAC_ICELAND=m | ||
390 | CONFIG_NLS_MAC_INUIT=m | ||
391 | CONFIG_NLS_MAC_ROMANIAN=m | ||
392 | CONFIG_NLS_MAC_TURKISH=m | ||
298 | CONFIG_DLM=m | 393 | CONFIG_DLM=m |
299 | CONFIG_MAGIC_SYSRQ=y | 394 | CONFIG_MAGIC_SYSRQ=y |
300 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 395 | CONFIG_ASYNC_RAID6_TEST=m |
301 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 396 | CONFIG_ENCRYPTED_KEYS=m |
397 | CONFIG_CRYPTO_MANAGER=y | ||
398 | CONFIG_CRYPTO_USER=m | ||
302 | CONFIG_CRYPTO_NULL=m | 399 | CONFIG_CRYPTO_NULL=m |
303 | CONFIG_CRYPTO_CRYPTD=m | 400 | CONFIG_CRYPTO_CRYPTD=m |
304 | CONFIG_CRYPTO_TEST=m | 401 | CONFIG_CRYPTO_TEST=m |
@@ -308,19 +405,16 @@ CONFIG_CRYPTO_CTS=m | |||
308 | CONFIG_CRYPTO_LRW=m | 405 | CONFIG_CRYPTO_LRW=m |
309 | CONFIG_CRYPTO_PCBC=m | 406 | CONFIG_CRYPTO_PCBC=m |
310 | CONFIG_CRYPTO_XTS=m | 407 | CONFIG_CRYPTO_XTS=m |
311 | CONFIG_CRYPTO_HMAC=y | ||
312 | CONFIG_CRYPTO_XCBC=m | 408 | CONFIG_CRYPTO_XCBC=m |
313 | CONFIG_CRYPTO_MD4=m | 409 | CONFIG_CRYPTO_VMAC=m |
314 | CONFIG_CRYPTO_MICHAEL_MIC=m | 410 | CONFIG_CRYPTO_MICHAEL_MIC=m |
315 | CONFIG_CRYPTO_RMD128=m | 411 | CONFIG_CRYPTO_RMD128=m |
316 | CONFIG_CRYPTO_RMD160=m | 412 | CONFIG_CRYPTO_RMD160=m |
317 | CONFIG_CRYPTO_RMD256=m | 413 | CONFIG_CRYPTO_RMD256=m |
318 | CONFIG_CRYPTO_RMD320=m | 414 | CONFIG_CRYPTO_RMD320=m |
319 | CONFIG_CRYPTO_SHA256=m | ||
320 | CONFIG_CRYPTO_SHA512=m | 415 | CONFIG_CRYPTO_SHA512=m |
321 | CONFIG_CRYPTO_TGR192=m | 416 | CONFIG_CRYPTO_TGR192=m |
322 | CONFIG_CRYPTO_WP512=m | 417 | CONFIG_CRYPTO_WP512=m |
323 | CONFIG_CRYPTO_AES=m | ||
324 | CONFIG_CRYPTO_ANUBIS=m | 418 | CONFIG_CRYPTO_ANUBIS=m |
325 | CONFIG_CRYPTO_BLOWFISH=m | 419 | CONFIG_CRYPTO_BLOWFISH=m |
326 | CONFIG_CRYPTO_CAMELLIA=m | 420 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -336,6 +430,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
336 | CONFIG_CRYPTO_ZLIB=m | 430 | CONFIG_CRYPTO_ZLIB=m |
337 | CONFIG_CRYPTO_LZO=m | 431 | CONFIG_CRYPTO_LZO=m |
338 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 432 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
433 | CONFIG_CRYPTO_USER_API_HASH=m | ||
434 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
339 | # CONFIG_CRYPTO_HW is not set | 435 | # CONFIG_CRYPTO_HW is not set |
340 | CONFIG_CRC16=m | ||
341 | CONFIG_CRC_T10DIF=y | 436 | CONFIG_CRC_T10DIF=y |
437 | CONFIG_XZ_DEC_X86=y | ||
438 | CONFIG_XZ_DEC_POWERPC=y | ||
439 | CONFIG_XZ_DEC_IA64=y | ||
440 | CONFIG_XZ_DEC_ARM=y | ||
441 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
442 | CONFIG_XZ_DEC_SPARC=y | ||
443 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defconfig index 19d23db690a4..8982370e8b42 100644 --- a/arch/m68k/configs/q40_defconfig +++ b/arch/m68k/configs/q40_defconfig | |||
@@ -1,49 +1,74 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-q40" | 1 | CONFIG_LOCALVERSION="-q40" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
13 | CONFIG_Q40=y | 16 | CONFIG_PARTITION_ADVANCED=y |
17 | CONFIG_AMIGA_PARTITION=y | ||
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_MAC_PARTITION=y | ||
20 | CONFIG_BSD_DISKLABEL=y | ||
21 | CONFIG_MINIX_SUBPARTITION=y | ||
22 | CONFIG_SOLARIS_X86_PARTITION=y | ||
23 | CONFIG_UNIXWARE_DISKLABEL=y | ||
24 | CONFIG_SUN_PARTITION=y | ||
25 | # CONFIG_EFI_PARTITION is not set | ||
26 | CONFIG_SYSV68_PARTITION=y | ||
27 | CONFIG_IOSCHED_DEADLINE=m | ||
14 | CONFIG_M68040=y | 28 | CONFIG_M68040=y |
15 | CONFIG_M68060=y | 29 | CONFIG_M68060=y |
30 | CONFIG_Q40=y | ||
31 | # CONFIG_COMPACTION is not set | ||
32 | CONFIG_CLEANCACHE=y | ||
33 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
16 | CONFIG_BINFMT_AOUT=m | 34 | CONFIG_BINFMT_AOUT=m |
17 | CONFIG_BINFMT_MISC=m | 35 | CONFIG_BINFMT_MISC=m |
18 | CONFIG_HEARTBEAT=y | ||
19 | CONFIG_PROC_HARDWARE=y | ||
20 | CONFIG_NET=y | 36 | CONFIG_NET=y |
21 | CONFIG_PACKET=y | 37 | CONFIG_PACKET=y |
38 | CONFIG_PACKET_DIAG=m | ||
22 | CONFIG_UNIX=y | 39 | CONFIG_UNIX=y |
40 | CONFIG_UNIX_DIAG=m | ||
41 | CONFIG_XFRM_MIGRATE=y | ||
23 | CONFIG_NET_KEY=y | 42 | CONFIG_NET_KEY=y |
24 | CONFIG_NET_KEY_MIGRATE=y | ||
25 | CONFIG_INET=y | 43 | CONFIG_INET=y |
44 | CONFIG_IP_PNP=y | ||
45 | CONFIG_IP_PNP_DHCP=y | ||
46 | CONFIG_IP_PNP_BOOTP=y | ||
47 | CONFIG_IP_PNP_RARP=y | ||
26 | CONFIG_NET_IPIP=m | 48 | CONFIG_NET_IPIP=m |
49 | CONFIG_NET_IPGRE_DEMUX=m | ||
27 | CONFIG_NET_IPGRE=m | 50 | CONFIG_NET_IPGRE=m |
28 | CONFIG_SYN_COOKIES=y | 51 | CONFIG_SYN_COOKIES=y |
52 | CONFIG_NET_IPVTI=m | ||
29 | CONFIG_INET_AH=m | 53 | CONFIG_INET_AH=m |
30 | CONFIG_INET_ESP=m | 54 | CONFIG_INET_ESP=m |
31 | CONFIG_INET_IPCOMP=m | 55 | CONFIG_INET_IPCOMP=m |
32 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 56 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
33 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 57 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
34 | CONFIG_INET_XFRM_MODE_BEET=m | 58 | CONFIG_INET_XFRM_MODE_BEET=m |
59 | # CONFIG_INET_LRO is not set | ||
35 | CONFIG_INET_DIAG=m | 60 | CONFIG_INET_DIAG=m |
61 | CONFIG_INET_UDP_DIAG=m | ||
36 | CONFIG_IPV6_PRIVACY=y | 62 | CONFIG_IPV6_PRIVACY=y |
37 | CONFIG_IPV6_ROUTER_PREF=y | 63 | CONFIG_IPV6_ROUTER_PREF=y |
38 | CONFIG_IPV6_ROUTE_INFO=y | ||
39 | CONFIG_INET6_AH=m | 64 | CONFIG_INET6_AH=m |
40 | CONFIG_INET6_ESP=m | 65 | CONFIG_INET6_ESP=m |
41 | CONFIG_INET6_IPCOMP=m | 66 | CONFIG_INET6_IPCOMP=m |
42 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 67 | CONFIG_IPV6_GRE=m |
43 | CONFIG_IPV6_TUNNEL=m | ||
44 | CONFIG_NETFILTER=y | 68 | CONFIG_NETFILTER=y |
45 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
46 | CONFIG_NF_CONNTRACK=m | 69 | CONFIG_NF_CONNTRACK=m |
70 | CONFIG_NF_CONNTRACK_ZONES=y | ||
71 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
47 | # CONFIG_NF_CT_PROTO_DCCP is not set | 72 | # CONFIG_NF_CT_PROTO_DCCP is not set |
48 | CONFIG_NF_CT_PROTO_UDPLITE=m | 73 | CONFIG_NF_CT_PROTO_UDPLITE=m |
49 | CONFIG_NF_CONNTRACK_AMANDA=m | 74 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -51,25 +76,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
51 | CONFIG_NF_CONNTRACK_H323=m | 76 | CONFIG_NF_CONNTRACK_H323=m |
52 | CONFIG_NF_CONNTRACK_IRC=m | 77 | CONFIG_NF_CONNTRACK_IRC=m |
53 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 78 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
79 | CONFIG_NF_CONNTRACK_SNMP=m | ||
54 | CONFIG_NF_CONNTRACK_PPTP=m | 80 | CONFIG_NF_CONNTRACK_PPTP=m |
55 | CONFIG_NF_CONNTRACK_SANE=m | 81 | CONFIG_NF_CONNTRACK_SANE=m |
56 | CONFIG_NF_CONNTRACK_SIP=m | 82 | CONFIG_NF_CONNTRACK_SIP=m |
57 | CONFIG_NF_CONNTRACK_TFTP=m | 83 | CONFIG_NF_CONNTRACK_TFTP=m |
84 | CONFIG_NETFILTER_XT_SET=m | ||
85 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
58 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 86 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
59 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 87 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
60 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 88 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
89 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
90 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
91 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
61 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 92 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
62 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 93 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
63 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 94 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
95 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
96 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
64 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 97 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
65 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 98 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
66 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 99 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
100 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
101 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
67 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 102 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
68 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 103 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
69 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 104 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
105 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
70 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 106 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
71 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 107 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
72 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 108 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
109 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
73 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 110 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
74 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 111 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
75 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 112 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -80,6 +117,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
80 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 117 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
81 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 118 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
82 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 119 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
120 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
121 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
83 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 122 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
84 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 123 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
85 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 124 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -93,22 +132,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
93 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 132 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
94 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 133 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
95 | CONFIG_NETFILTER_XT_MATCH_U32=m | 134 | CONFIG_NETFILTER_XT_MATCH_U32=m |
135 | CONFIG_IP_SET=m | ||
136 | CONFIG_IP_SET_BITMAP_IP=m | ||
137 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
138 | CONFIG_IP_SET_BITMAP_PORT=m | ||
139 | CONFIG_IP_SET_HASH_IP=m | ||
140 | CONFIG_IP_SET_HASH_IPPORT=m | ||
141 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
142 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
143 | CONFIG_IP_SET_HASH_NET=m | ||
144 | CONFIG_IP_SET_HASH_NETPORT=m | ||
145 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
146 | CONFIG_IP_SET_LIST_SET=m | ||
96 | CONFIG_NF_CONNTRACK_IPV4=m | 147 | CONFIG_NF_CONNTRACK_IPV4=m |
97 | CONFIG_IP_NF_QUEUE=m | ||
98 | CONFIG_IP_NF_IPTABLES=m | 148 | CONFIG_IP_NF_IPTABLES=m |
99 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
100 | CONFIG_IP_NF_MATCH_AH=m | 149 | CONFIG_IP_NF_MATCH_AH=m |
101 | CONFIG_IP_NF_MATCH_ECN=m | 150 | CONFIG_IP_NF_MATCH_ECN=m |
151 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
102 | CONFIG_IP_NF_MATCH_TTL=m | 152 | CONFIG_IP_NF_MATCH_TTL=m |
103 | CONFIG_IP_NF_FILTER=m | 153 | CONFIG_IP_NF_FILTER=m |
104 | CONFIG_IP_NF_TARGET_REJECT=m | 154 | CONFIG_IP_NF_TARGET_REJECT=m |
105 | CONFIG_IP_NF_TARGET_LOG=m | ||
106 | CONFIG_IP_NF_TARGET_ULOG=m | 155 | CONFIG_IP_NF_TARGET_ULOG=m |
107 | CONFIG_NF_NAT=m | 156 | CONFIG_NF_NAT_IPV4=m |
108 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 157 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
109 | CONFIG_IP_NF_TARGET_NETMAP=m | 158 | CONFIG_IP_NF_TARGET_NETMAP=m |
110 | CONFIG_IP_NF_TARGET_REDIRECT=m | 159 | CONFIG_IP_NF_TARGET_REDIRECT=m |
111 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
112 | CONFIG_IP_NF_MANGLE=m | 160 | CONFIG_IP_NF_MANGLE=m |
113 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 161 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
114 | CONFIG_IP_NF_TARGET_ECN=m | 162 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -118,7 +166,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
118 | CONFIG_IP_NF_ARPFILTER=m | 166 | CONFIG_IP_NF_ARPFILTER=m |
119 | CONFIG_IP_NF_ARP_MANGLE=m | 167 | CONFIG_IP_NF_ARP_MANGLE=m |
120 | CONFIG_NF_CONNTRACK_IPV6=m | 168 | CONFIG_NF_CONNTRACK_IPV6=m |
121 | CONFIG_IP6_NF_QUEUE=m | ||
122 | CONFIG_IP6_NF_IPTABLES=m | 169 | CONFIG_IP6_NF_IPTABLES=m |
123 | CONFIG_IP6_NF_MATCH_AH=m | 170 | CONFIG_IP6_NF_MATCH_AH=m |
124 | CONFIG_IP6_NF_MATCH_EUI64=m | 171 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -127,26 +174,40 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
127 | CONFIG_IP6_NF_MATCH_HL=m | 174 | CONFIG_IP6_NF_MATCH_HL=m |
128 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 175 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
129 | CONFIG_IP6_NF_MATCH_MH=m | 176 | CONFIG_IP6_NF_MATCH_MH=m |
177 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
130 | CONFIG_IP6_NF_MATCH_RT=m | 178 | CONFIG_IP6_NF_MATCH_RT=m |
131 | CONFIG_IP6_NF_TARGET_HL=m | 179 | CONFIG_IP6_NF_TARGET_HL=m |
132 | CONFIG_IP6_NF_TARGET_LOG=m | ||
133 | CONFIG_IP6_NF_FILTER=m | 180 | CONFIG_IP6_NF_FILTER=m |
134 | CONFIG_IP6_NF_TARGET_REJECT=m | 181 | CONFIG_IP6_NF_TARGET_REJECT=m |
135 | CONFIG_IP6_NF_MANGLE=m | 182 | CONFIG_IP6_NF_MANGLE=m |
136 | CONFIG_IP6_NF_RAW=m | 183 | CONFIG_IP6_NF_RAW=m |
184 | CONFIG_NF_NAT_IPV6=m | ||
185 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
186 | CONFIG_IP6_NF_TARGET_NPT=m | ||
137 | CONFIG_IP_DCCP=m | 187 | CONFIG_IP_DCCP=m |
138 | # CONFIG_IP_DCCP_CCID3 is not set | 188 | # CONFIG_IP_DCCP_CCID3 is not set |
189 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
190 | CONFIG_RDS=m | ||
191 | CONFIG_RDS_TCP=m | ||
192 | CONFIG_L2TP=m | ||
139 | CONFIG_ATALK=m | 193 | CONFIG_ATALK=m |
194 | CONFIG_BATMAN_ADV=m | ||
195 | CONFIG_BATMAN_ADV_DAT=y | ||
196 | # CONFIG_WIRELESS is not set | ||
140 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 197 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
198 | CONFIG_DEVTMPFS=y | ||
141 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 199 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
200 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
142 | CONFIG_CONNECTOR=m | 201 | CONFIG_CONNECTOR=m |
143 | CONFIG_BLK_DEV_LOOP=y | 202 | CONFIG_BLK_DEV_LOOP=y |
144 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 203 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
204 | CONFIG_BLK_DEV_DRBD=m | ||
145 | CONFIG_BLK_DEV_NBD=m | 205 | CONFIG_BLK_DEV_NBD=m |
146 | CONFIG_BLK_DEV_RAM=y | 206 | CONFIG_BLK_DEV_RAM=y |
147 | CONFIG_CDROM_PKTCDVD=m | 207 | CONFIG_CDROM_PKTCDVD=m |
148 | CONFIG_ATA_OVER_ETH=m | 208 | CONFIG_ATA_OVER_ETH=m |
149 | CONFIG_IDE=y | 209 | CONFIG_IDE=y |
210 | CONFIG_IDE_GD_ATAPI=y | ||
150 | CONFIG_BLK_DEV_IDECD=y | 211 | CONFIG_BLK_DEV_IDECD=y |
151 | CONFIG_BLK_DEV_Q40IDE=y | 212 | CONFIG_BLK_DEV_Q40IDE=y |
152 | CONFIG_RAID_ATTRS=m | 213 | CONFIG_RAID_ATTRS=m |
@@ -159,61 +220,82 @@ CONFIG_BLK_DEV_SR=y | |||
159 | CONFIG_BLK_DEV_SR_VENDOR=y | 220 | CONFIG_BLK_DEV_SR_VENDOR=y |
160 | CONFIG_CHR_DEV_SG=m | 221 | CONFIG_CHR_DEV_SG=m |
161 | CONFIG_SCSI_CONSTANTS=y | 222 | CONFIG_SCSI_CONSTANTS=y |
162 | CONFIG_SCSI_SAS_LIBSAS=m | 223 | CONFIG_SCSI_SAS_ATTRS=m |
163 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
164 | CONFIG_SCSI_SRP_ATTRS=m | ||
165 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
166 | CONFIG_ISCSI_TCP=m | 224 | CONFIG_ISCSI_TCP=m |
225 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
167 | CONFIG_MD=y | 226 | CONFIG_MD=y |
168 | CONFIG_BLK_DEV_MD=m | ||
169 | CONFIG_MD_LINEAR=m | 227 | CONFIG_MD_LINEAR=m |
170 | CONFIG_MD_RAID0=m | 228 | CONFIG_MD_RAID0=m |
171 | CONFIG_MD_RAID1=m | ||
172 | CONFIG_MD_RAID456=m | ||
173 | CONFIG_BLK_DEV_DM=m | 229 | CONFIG_BLK_DEV_DM=m |
174 | CONFIG_DM_CRYPT=m | 230 | CONFIG_DM_CRYPT=m |
175 | CONFIG_DM_SNAPSHOT=m | 231 | CONFIG_DM_SNAPSHOT=m |
232 | CONFIG_DM_THIN_PROVISIONING=m | ||
233 | CONFIG_DM_CACHE=m | ||
176 | CONFIG_DM_MIRROR=m | 234 | CONFIG_DM_MIRROR=m |
235 | CONFIG_DM_RAID=m | ||
177 | CONFIG_DM_ZERO=m | 236 | CONFIG_DM_ZERO=m |
178 | CONFIG_DM_MULTIPATH=m | 237 | CONFIG_DM_MULTIPATH=m |
179 | CONFIG_DM_UEVENT=y | 238 | CONFIG_DM_UEVENT=y |
239 | CONFIG_TARGET_CORE=m | ||
240 | CONFIG_TCM_IBLOCK=m | ||
241 | CONFIG_TCM_FILEIO=m | ||
242 | CONFIG_TCM_PSCSI=m | ||
180 | CONFIG_NETDEVICES=y | 243 | CONFIG_NETDEVICES=y |
181 | CONFIG_DUMMY=m | 244 | CONFIG_DUMMY=m |
182 | CONFIG_MACVLAN=m | ||
183 | CONFIG_EQUALIZER=m | 245 | CONFIG_EQUALIZER=m |
246 | CONFIG_NET_TEAM=m | ||
247 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
248 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
249 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
250 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
251 | CONFIG_VXLAN=m | ||
252 | CONFIG_NETCONSOLE=m | ||
253 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
184 | CONFIG_VETH=m | 254 | CONFIG_VETH=m |
185 | CONFIG_NET_ETHERNET=y | 255 | # CONFIG_NET_VENDOR_3COM is not set |
256 | # CONFIG_NET_VENDOR_AMD is not set | ||
257 | # CONFIG_NET_CADENCE is not set | ||
258 | # CONFIG_NET_VENDOR_BROADCOM is not set | ||
259 | # CONFIG_NET_VENDOR_CIRRUS is not set | ||
260 | # CONFIG_NET_VENDOR_FUJITSU is not set | ||
261 | # CONFIG_NET_VENDOR_HP is not set | ||
262 | # CONFIG_NET_VENDOR_INTEL is not set | ||
263 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
264 | # CONFIG_NET_VENDOR_MICREL is not set | ||
186 | CONFIG_NE2000=m | 265 | CONFIG_NE2000=m |
187 | # CONFIG_NETDEV_1000 is not set | 266 | # CONFIG_NET_VENDOR_SEEQ is not set |
188 | # CONFIG_NETDEV_10000 is not set | 267 | # CONFIG_NET_VENDOR_SMSC is not set |
268 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
269 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
189 | CONFIG_PPP=m | 270 | CONFIG_PPP=m |
190 | CONFIG_PPP_FILTER=y | ||
191 | CONFIG_PPP_ASYNC=m | ||
192 | CONFIG_PPP_SYNC_TTY=m | ||
193 | CONFIG_PPP_DEFLATE=m | ||
194 | CONFIG_PPP_BSDCOMP=m | 271 | CONFIG_PPP_BSDCOMP=m |
272 | CONFIG_PPP_DEFLATE=m | ||
273 | CONFIG_PPP_FILTER=y | ||
195 | CONFIG_PPP_MPPE=m | 274 | CONFIG_PPP_MPPE=m |
196 | CONFIG_PPPOE=m | 275 | CONFIG_PPPOE=m |
276 | CONFIG_PPTP=m | ||
277 | CONFIG_PPPOL2TP=m | ||
278 | CONFIG_PPP_ASYNC=m | ||
279 | CONFIG_PPP_SYNC_TTY=m | ||
197 | CONFIG_SLIP=m | 280 | CONFIG_SLIP=m |
198 | CONFIG_SLIP_COMPRESSED=y | 281 | CONFIG_SLIP_COMPRESSED=y |
199 | CONFIG_SLIP_SMART=y | 282 | CONFIG_SLIP_SMART=y |
200 | CONFIG_SLIP_MODE_SLIP6=y | 283 | CONFIG_SLIP_MODE_SLIP6=y |
201 | CONFIG_NETCONSOLE=m | 284 | # CONFIG_WLAN is not set |
202 | CONFIG_NETCONSOLE_DYNAMIC=y | 285 | CONFIG_INPUT_EVDEV=m |
203 | CONFIG_INPUT_FF_MEMLESS=m | ||
204 | # CONFIG_KEYBOARD_ATKBD is not set | 286 | # CONFIG_KEYBOARD_ATKBD is not set |
205 | CONFIG_MOUSE_PS2=m | 287 | # CONFIG_MOUSE_PS2 is not set |
206 | CONFIG_MOUSE_SERIAL=m | 288 | CONFIG_MOUSE_SERIAL=m |
207 | CONFIG_INPUT_MISC=y | 289 | CONFIG_INPUT_MISC=y |
208 | CONFIG_INPUT_M68K_BEEP=m | 290 | CONFIG_INPUT_M68K_BEEP=m |
209 | CONFIG_SERIO=m | 291 | CONFIG_SERIO_Q40KBD=y |
210 | # CONFIG_SERIO_SERPORT is not set | ||
211 | CONFIG_SERIO_Q40KBD=m | ||
212 | CONFIG_VT_HW_CONSOLE_BINDING=y | 292 | CONFIG_VT_HW_CONSOLE_BINDING=y |
293 | # CONFIG_LEGACY_PTYS is not set | ||
213 | # CONFIG_DEVKMEM is not set | 294 | # CONFIG_DEVKMEM is not set |
214 | # CONFIG_HW_RANDOM is not set | 295 | # CONFIG_HW_RANDOM is not set |
215 | CONFIG_GEN_RTC=m | 296 | CONFIG_NTP_PPS=y |
216 | CONFIG_GEN_RTC_X=y | 297 | CONFIG_PPS_CLIENT_LDISC=m |
298 | CONFIG_PTP_1588_CLOCK=m | ||
217 | # CONFIG_HWMON is not set | 299 | # CONFIG_HWMON is not set |
218 | CONFIG_FB=y | 300 | CONFIG_FB=y |
219 | CONFIG_FRAMEBUFFER_CONSOLE=y | 301 | CONFIG_FRAMEBUFFER_CONSOLE=y |
@@ -222,46 +304,61 @@ CONFIG_SOUND=m | |||
222 | CONFIG_DMASOUND_Q40=m | 304 | CONFIG_DMASOUND_Q40=m |
223 | CONFIG_HID=m | 305 | CONFIG_HID=m |
224 | CONFIG_HIDRAW=y | 306 | CONFIG_HIDRAW=y |
307 | CONFIG_UHID=m | ||
308 | # CONFIG_HID_GENERIC is not set | ||
225 | # CONFIG_USB_SUPPORT is not set | 309 | # CONFIG_USB_SUPPORT is not set |
310 | CONFIG_RTC_CLASS=y | ||
311 | CONFIG_RTC_DRV_GENERIC=m | ||
312 | # CONFIG_IOMMU_SUPPORT is not set | ||
313 | CONFIG_HEARTBEAT=y | ||
314 | CONFIG_PROC_HARDWARE=y | ||
226 | CONFIG_EXT2_FS=y | 315 | CONFIG_EXT2_FS=y |
227 | CONFIG_EXT3_FS=y | 316 | CONFIG_EXT3_FS=y |
228 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 317 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
229 | # CONFIG_EXT3_FS_XATTR is not set | 318 | # CONFIG_EXT3_FS_XATTR is not set |
319 | CONFIG_EXT4_FS=y | ||
230 | CONFIG_REISERFS_FS=m | 320 | CONFIG_REISERFS_FS=m |
231 | CONFIG_JFS_FS=m | 321 | CONFIG_JFS_FS=m |
232 | CONFIG_XFS_FS=m | 322 | CONFIG_XFS_FS=m |
233 | CONFIG_OCFS2_FS=m | 323 | CONFIG_OCFS2_FS=m |
234 | # CONFIG_OCFS2_FS_STATS is not set | ||
235 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 324 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
325 | CONFIG_FANOTIFY=y | ||
236 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 326 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
237 | # CONFIG_PRINT_QUOTA_WARNING is not set | 327 | # CONFIG_PRINT_QUOTA_WARNING is not set |
238 | CONFIG_AUTOFS_FS=m | ||
239 | CONFIG_AUTOFS4_FS=m | 328 | CONFIG_AUTOFS4_FS=m |
240 | CONFIG_FUSE_FS=m | 329 | CONFIG_FUSE_FS=m |
330 | CONFIG_CUSE=m | ||
241 | CONFIG_ISO9660_FS=y | 331 | CONFIG_ISO9660_FS=y |
242 | CONFIG_JOLIET=y | 332 | CONFIG_JOLIET=y |
243 | CONFIG_ZISOFS=y | 333 | CONFIG_ZISOFS=y |
244 | CONFIG_UDF_FS=m | 334 | CONFIG_UDF_FS=m |
245 | CONFIG_MSDOS_FS=y | 335 | CONFIG_MSDOS_FS=m |
246 | CONFIG_VFAT_FS=m | 336 | CONFIG_VFAT_FS=m |
247 | CONFIG_PROC_KCORE=y | 337 | CONFIG_PROC_KCORE=y |
248 | CONFIG_TMPFS=y | 338 | CONFIG_TMPFS=y |
249 | CONFIG_AFFS_FS=m | 339 | CONFIG_AFFS_FS=m |
340 | CONFIG_ECRYPT_FS=m | ||
341 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
250 | CONFIG_HFS_FS=m | 342 | CONFIG_HFS_FS=m |
251 | CONFIG_HFSPLUS_FS=m | 343 | CONFIG_HFSPLUS_FS=m |
252 | CONFIG_CRAMFS=m | 344 | CONFIG_CRAMFS=m |
253 | CONFIG_SQUASHFS=m | 345 | CONFIG_SQUASHFS=m |
254 | CONFIG_MINIX_FS=y | 346 | CONFIG_SQUASHFS_LZO=y |
347 | CONFIG_MINIX_FS=m | ||
348 | CONFIG_OMFS_FS=m | ||
255 | CONFIG_HPFS_FS=m | 349 | CONFIG_HPFS_FS=m |
350 | CONFIG_QNX4FS_FS=m | ||
351 | CONFIG_QNX6FS_FS=m | ||
256 | CONFIG_SYSV_FS=m | 352 | CONFIG_SYSV_FS=m |
257 | CONFIG_UFS_FS=m | 353 | CONFIG_UFS_FS=m |
258 | CONFIG_NFS_FS=y | 354 | CONFIG_NFS_FS=y |
259 | CONFIG_NFS_V3=y | ||
260 | CONFIG_NFS_V4=y | 355 | CONFIG_NFS_V4=y |
356 | CONFIG_NFS_SWAP=y | ||
357 | CONFIG_ROOT_NFS=y | ||
261 | CONFIG_NFSD=m | 358 | CONFIG_NFSD=m |
262 | CONFIG_NFSD_V3=y | 359 | CONFIG_NFSD_V3=y |
263 | CONFIG_SMB_FS=m | 360 | CONFIG_CIFS=m |
264 | CONFIG_SMB_NLS_DEFAULT=y | 361 | # CONFIG_CIFS_DEBUG is not set |
265 | CONFIG_CODA_FS=m | 362 | CONFIG_CODA_FS=m |
266 | CONFIG_NLS_CODEPAGE_437=y | 363 | CONFIG_NLS_CODEPAGE_437=y |
267 | CONFIG_NLS_CODEPAGE_737=m | 364 | CONFIG_NLS_CODEPAGE_737=m |
@@ -300,10 +397,23 @@ CONFIG_NLS_ISO8859_14=m | |||
300 | CONFIG_NLS_ISO8859_15=m | 397 | CONFIG_NLS_ISO8859_15=m |
301 | CONFIG_NLS_KOI8_R=m | 398 | CONFIG_NLS_KOI8_R=m |
302 | CONFIG_NLS_KOI8_U=m | 399 | CONFIG_NLS_KOI8_U=m |
400 | CONFIG_NLS_MAC_ROMAN=m | ||
401 | CONFIG_NLS_MAC_CELTIC=m | ||
402 | CONFIG_NLS_MAC_CENTEURO=m | ||
403 | CONFIG_NLS_MAC_CROATIAN=m | ||
404 | CONFIG_NLS_MAC_CYRILLIC=m | ||
405 | CONFIG_NLS_MAC_GAELIC=m | ||
406 | CONFIG_NLS_MAC_GREEK=m | ||
407 | CONFIG_NLS_MAC_ICELAND=m | ||
408 | CONFIG_NLS_MAC_INUIT=m | ||
409 | CONFIG_NLS_MAC_ROMANIAN=m | ||
410 | CONFIG_NLS_MAC_TURKISH=m | ||
303 | CONFIG_DLM=m | 411 | CONFIG_DLM=m |
304 | CONFIG_MAGIC_SYSRQ=y | 412 | CONFIG_MAGIC_SYSRQ=y |
305 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 413 | CONFIG_ASYNC_RAID6_TEST=m |
306 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 414 | CONFIG_ENCRYPTED_KEYS=m |
415 | CONFIG_CRYPTO_MANAGER=y | ||
416 | CONFIG_CRYPTO_USER=m | ||
307 | CONFIG_CRYPTO_NULL=m | 417 | CONFIG_CRYPTO_NULL=m |
308 | CONFIG_CRYPTO_CRYPTD=m | 418 | CONFIG_CRYPTO_CRYPTD=m |
309 | CONFIG_CRYPTO_TEST=m | 419 | CONFIG_CRYPTO_TEST=m |
@@ -313,19 +423,16 @@ CONFIG_CRYPTO_CTS=m | |||
313 | CONFIG_CRYPTO_LRW=m | 423 | CONFIG_CRYPTO_LRW=m |
314 | CONFIG_CRYPTO_PCBC=m | 424 | CONFIG_CRYPTO_PCBC=m |
315 | CONFIG_CRYPTO_XTS=m | 425 | CONFIG_CRYPTO_XTS=m |
316 | CONFIG_CRYPTO_HMAC=y | ||
317 | CONFIG_CRYPTO_XCBC=m | 426 | CONFIG_CRYPTO_XCBC=m |
318 | CONFIG_CRYPTO_MD4=m | 427 | CONFIG_CRYPTO_VMAC=m |
319 | CONFIG_CRYPTO_MICHAEL_MIC=m | 428 | CONFIG_CRYPTO_MICHAEL_MIC=m |
320 | CONFIG_CRYPTO_RMD128=m | 429 | CONFIG_CRYPTO_RMD128=m |
321 | CONFIG_CRYPTO_RMD160=m | 430 | CONFIG_CRYPTO_RMD160=m |
322 | CONFIG_CRYPTO_RMD256=m | 431 | CONFIG_CRYPTO_RMD256=m |
323 | CONFIG_CRYPTO_RMD320=m | 432 | CONFIG_CRYPTO_RMD320=m |
324 | CONFIG_CRYPTO_SHA256=m | ||
325 | CONFIG_CRYPTO_SHA512=m | 433 | CONFIG_CRYPTO_SHA512=m |
326 | CONFIG_CRYPTO_TGR192=m | 434 | CONFIG_CRYPTO_TGR192=m |
327 | CONFIG_CRYPTO_WP512=m | 435 | CONFIG_CRYPTO_WP512=m |
328 | CONFIG_CRYPTO_AES=m | ||
329 | CONFIG_CRYPTO_ANUBIS=m | 436 | CONFIG_CRYPTO_ANUBIS=m |
330 | CONFIG_CRYPTO_BLOWFISH=m | 437 | CONFIG_CRYPTO_BLOWFISH=m |
331 | CONFIG_CRYPTO_CAMELLIA=m | 438 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -341,6 +448,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
341 | CONFIG_CRYPTO_ZLIB=m | 448 | CONFIG_CRYPTO_ZLIB=m |
342 | CONFIG_CRYPTO_LZO=m | 449 | CONFIG_CRYPTO_LZO=m |
343 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 450 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
451 | CONFIG_CRYPTO_USER_API_HASH=m | ||
452 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
344 | # CONFIG_CRYPTO_HW is not set | 453 | # CONFIG_CRYPTO_HW is not set |
345 | CONFIG_CRC16=m | ||
346 | CONFIG_CRC_T10DIF=y | 454 | CONFIG_CRC_T10DIF=y |
455 | CONFIG_XZ_DEC_X86=y | ||
456 | CONFIG_XZ_DEC_POWERPC=y | ||
457 | CONFIG_XZ_DEC_IA64=y | ||
458 | CONFIG_XZ_DEC_ARM=y | ||
459 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
460 | CONFIG_XZ_DEC_SPARC=y | ||
461 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defconfig index ca6c0b4cab77..54674d61e001 100644 --- a/arch/m68k/configs/sun3_defconfig +++ b/arch/m68k/configs/sun3_defconfig | |||
@@ -1,50 +1,71 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-sun3" | 1 | CONFIG_LOCALVERSION="-sun3" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
16 | CONFIG_PARTITION_ADVANCED=y | ||
17 | CONFIG_AMIGA_PARTITION=y | ||
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_MAC_PARTITION=y | ||
20 | CONFIG_BSD_DISKLABEL=y | ||
21 | CONFIG_MINIX_SUBPARTITION=y | ||
22 | CONFIG_SOLARIS_X86_PARTITION=y | ||
23 | CONFIG_UNIXWARE_DISKLABEL=y | ||
24 | # CONFIG_EFI_PARTITION is not set | ||
25 | CONFIG_SYSV68_PARTITION=y | ||
26 | CONFIG_IOSCHED_DEADLINE=m | ||
13 | CONFIG_SUN3=y | 27 | CONFIG_SUN3=y |
28 | # CONFIG_COMPACTION is not set | ||
29 | CONFIG_CLEANCACHE=y | ||
30 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
14 | CONFIG_BINFMT_AOUT=m | 31 | CONFIG_BINFMT_AOUT=m |
15 | CONFIG_BINFMT_MISC=m | 32 | CONFIG_BINFMT_MISC=m |
16 | CONFIG_PROC_HARDWARE=y | ||
17 | CONFIG_NET=y | 33 | CONFIG_NET=y |
18 | CONFIG_PACKET=y | 34 | CONFIG_PACKET=y |
35 | CONFIG_PACKET_DIAG=m | ||
19 | CONFIG_UNIX=y | 36 | CONFIG_UNIX=y |
37 | CONFIG_UNIX_DIAG=m | ||
38 | CONFIG_XFRM_MIGRATE=y | ||
20 | CONFIG_NET_KEY=y | 39 | CONFIG_NET_KEY=y |
21 | CONFIG_NET_KEY_MIGRATE=y | ||
22 | CONFIG_INET=y | 40 | CONFIG_INET=y |
23 | CONFIG_IP_PNP=y | 41 | CONFIG_IP_PNP=y |
24 | CONFIG_IP_PNP_DHCP=y | 42 | CONFIG_IP_PNP_DHCP=y |
25 | CONFIG_IP_PNP_BOOTP=y | 43 | CONFIG_IP_PNP_BOOTP=y |
26 | CONFIG_IP_PNP_RARP=y | 44 | CONFIG_IP_PNP_RARP=y |
27 | CONFIG_NET_IPIP=m | 45 | CONFIG_NET_IPIP=m |
46 | CONFIG_NET_IPGRE_DEMUX=m | ||
28 | CONFIG_NET_IPGRE=m | 47 | CONFIG_NET_IPGRE=m |
29 | CONFIG_SYN_COOKIES=y | 48 | CONFIG_SYN_COOKIES=y |
49 | CONFIG_NET_IPVTI=m | ||
30 | CONFIG_INET_AH=m | 50 | CONFIG_INET_AH=m |
31 | CONFIG_INET_ESP=m | 51 | CONFIG_INET_ESP=m |
32 | CONFIG_INET_IPCOMP=m | 52 | CONFIG_INET_IPCOMP=m |
33 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 53 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
34 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 54 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
35 | CONFIG_INET_XFRM_MODE_BEET=m | 55 | CONFIG_INET_XFRM_MODE_BEET=m |
56 | # CONFIG_INET_LRO is not set | ||
36 | CONFIG_INET_DIAG=m | 57 | CONFIG_INET_DIAG=m |
58 | CONFIG_INET_UDP_DIAG=m | ||
37 | CONFIG_IPV6_PRIVACY=y | 59 | CONFIG_IPV6_PRIVACY=y |
38 | CONFIG_IPV6_ROUTER_PREF=y | 60 | CONFIG_IPV6_ROUTER_PREF=y |
39 | CONFIG_IPV6_ROUTE_INFO=y | ||
40 | CONFIG_INET6_AH=m | 61 | CONFIG_INET6_AH=m |
41 | CONFIG_INET6_ESP=m | 62 | CONFIG_INET6_ESP=m |
42 | CONFIG_INET6_IPCOMP=m | 63 | CONFIG_INET6_IPCOMP=m |
43 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 64 | CONFIG_IPV6_GRE=m |
44 | CONFIG_IPV6_TUNNEL=m | ||
45 | CONFIG_NETFILTER=y | 65 | CONFIG_NETFILTER=y |
46 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
47 | CONFIG_NF_CONNTRACK=m | 66 | CONFIG_NF_CONNTRACK=m |
67 | CONFIG_NF_CONNTRACK_ZONES=y | ||
68 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
48 | # CONFIG_NF_CT_PROTO_DCCP is not set | 69 | # CONFIG_NF_CT_PROTO_DCCP is not set |
49 | CONFIG_NF_CT_PROTO_UDPLITE=m | 70 | CONFIG_NF_CT_PROTO_UDPLITE=m |
50 | CONFIG_NF_CONNTRACK_AMANDA=m | 71 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -52,25 +73,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
52 | CONFIG_NF_CONNTRACK_H323=m | 73 | CONFIG_NF_CONNTRACK_H323=m |
53 | CONFIG_NF_CONNTRACK_IRC=m | 74 | CONFIG_NF_CONNTRACK_IRC=m |
54 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 75 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
76 | CONFIG_NF_CONNTRACK_SNMP=m | ||
55 | CONFIG_NF_CONNTRACK_PPTP=m | 77 | CONFIG_NF_CONNTRACK_PPTP=m |
56 | CONFIG_NF_CONNTRACK_SANE=m | 78 | CONFIG_NF_CONNTRACK_SANE=m |
57 | CONFIG_NF_CONNTRACK_SIP=m | 79 | CONFIG_NF_CONNTRACK_SIP=m |
58 | CONFIG_NF_CONNTRACK_TFTP=m | 80 | CONFIG_NF_CONNTRACK_TFTP=m |
81 | CONFIG_NETFILTER_XT_SET=m | ||
82 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
59 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 83 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
60 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 84 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
61 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 85 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
86 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
87 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
88 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
62 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 89 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
63 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 90 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
64 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 91 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
92 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
93 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
65 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 94 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
66 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 95 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
67 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 96 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
97 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
98 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
68 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 99 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
69 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 100 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
70 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 101 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
102 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
71 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 103 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
72 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 104 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
73 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 105 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
106 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
74 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 107 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
75 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 108 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
76 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 109 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -81,6 +114,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
81 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 114 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
82 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 115 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
83 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 116 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
117 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
118 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
84 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 119 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
85 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 120 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
86 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 121 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -94,22 +129,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
94 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 129 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
95 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 130 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
96 | CONFIG_NETFILTER_XT_MATCH_U32=m | 131 | CONFIG_NETFILTER_XT_MATCH_U32=m |
132 | CONFIG_IP_SET=m | ||
133 | CONFIG_IP_SET_BITMAP_IP=m | ||
134 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
135 | CONFIG_IP_SET_BITMAP_PORT=m | ||
136 | CONFIG_IP_SET_HASH_IP=m | ||
137 | CONFIG_IP_SET_HASH_IPPORT=m | ||
138 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
139 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
140 | CONFIG_IP_SET_HASH_NET=m | ||
141 | CONFIG_IP_SET_HASH_NETPORT=m | ||
142 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
143 | CONFIG_IP_SET_LIST_SET=m | ||
97 | CONFIG_NF_CONNTRACK_IPV4=m | 144 | CONFIG_NF_CONNTRACK_IPV4=m |
98 | CONFIG_IP_NF_QUEUE=m | ||
99 | CONFIG_IP_NF_IPTABLES=m | 145 | CONFIG_IP_NF_IPTABLES=m |
100 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
101 | CONFIG_IP_NF_MATCH_AH=m | 146 | CONFIG_IP_NF_MATCH_AH=m |
102 | CONFIG_IP_NF_MATCH_ECN=m | 147 | CONFIG_IP_NF_MATCH_ECN=m |
148 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
103 | CONFIG_IP_NF_MATCH_TTL=m | 149 | CONFIG_IP_NF_MATCH_TTL=m |
104 | CONFIG_IP_NF_FILTER=m | 150 | CONFIG_IP_NF_FILTER=m |
105 | CONFIG_IP_NF_TARGET_REJECT=m | 151 | CONFIG_IP_NF_TARGET_REJECT=m |
106 | CONFIG_IP_NF_TARGET_LOG=m | ||
107 | CONFIG_IP_NF_TARGET_ULOG=m | 152 | CONFIG_IP_NF_TARGET_ULOG=m |
108 | CONFIG_NF_NAT=m | 153 | CONFIG_NF_NAT_IPV4=m |
109 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 154 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
110 | CONFIG_IP_NF_TARGET_NETMAP=m | 155 | CONFIG_IP_NF_TARGET_NETMAP=m |
111 | CONFIG_IP_NF_TARGET_REDIRECT=m | 156 | CONFIG_IP_NF_TARGET_REDIRECT=m |
112 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
113 | CONFIG_IP_NF_MANGLE=m | 157 | CONFIG_IP_NF_MANGLE=m |
114 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 158 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
115 | CONFIG_IP_NF_TARGET_ECN=m | 159 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -119,7 +163,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
119 | CONFIG_IP_NF_ARPFILTER=m | 163 | CONFIG_IP_NF_ARPFILTER=m |
120 | CONFIG_IP_NF_ARP_MANGLE=m | 164 | CONFIG_IP_NF_ARP_MANGLE=m |
121 | CONFIG_NF_CONNTRACK_IPV6=m | 165 | CONFIG_NF_CONNTRACK_IPV6=m |
122 | CONFIG_IP6_NF_QUEUE=m | ||
123 | CONFIG_IP6_NF_IPTABLES=m | 166 | CONFIG_IP6_NF_IPTABLES=m |
124 | CONFIG_IP6_NF_MATCH_AH=m | 167 | CONFIG_IP6_NF_MATCH_AH=m |
125 | CONFIG_IP6_NF_MATCH_EUI64=m | 168 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -128,21 +171,34 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
128 | CONFIG_IP6_NF_MATCH_HL=m | 171 | CONFIG_IP6_NF_MATCH_HL=m |
129 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 172 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
130 | CONFIG_IP6_NF_MATCH_MH=m | 173 | CONFIG_IP6_NF_MATCH_MH=m |
174 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
131 | CONFIG_IP6_NF_MATCH_RT=m | 175 | CONFIG_IP6_NF_MATCH_RT=m |
132 | CONFIG_IP6_NF_TARGET_HL=m | 176 | CONFIG_IP6_NF_TARGET_HL=m |
133 | CONFIG_IP6_NF_TARGET_LOG=m | ||
134 | CONFIG_IP6_NF_FILTER=m | 177 | CONFIG_IP6_NF_FILTER=m |
135 | CONFIG_IP6_NF_TARGET_REJECT=m | 178 | CONFIG_IP6_NF_TARGET_REJECT=m |
136 | CONFIG_IP6_NF_MANGLE=m | 179 | CONFIG_IP6_NF_MANGLE=m |
137 | CONFIG_IP6_NF_RAW=m | 180 | CONFIG_IP6_NF_RAW=m |
181 | CONFIG_NF_NAT_IPV6=m | ||
182 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
183 | CONFIG_IP6_NF_TARGET_NPT=m | ||
138 | CONFIG_IP_DCCP=m | 184 | CONFIG_IP_DCCP=m |
139 | # CONFIG_IP_DCCP_CCID3 is not set | 185 | # CONFIG_IP_DCCP_CCID3 is not set |
186 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
187 | CONFIG_RDS=m | ||
188 | CONFIG_RDS_TCP=m | ||
189 | CONFIG_L2TP=m | ||
140 | CONFIG_ATALK=m | 190 | CONFIG_ATALK=m |
191 | CONFIG_BATMAN_ADV=m | ||
192 | CONFIG_BATMAN_ADV_DAT=y | ||
193 | # CONFIG_WIRELESS is not set | ||
141 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 194 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
195 | CONFIG_DEVTMPFS=y | ||
142 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 196 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
197 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
143 | CONFIG_CONNECTOR=m | 198 | CONFIG_CONNECTOR=m |
144 | CONFIG_BLK_DEV_LOOP=y | 199 | CONFIG_BLK_DEV_LOOP=y |
145 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 200 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
201 | CONFIG_BLK_DEV_DRBD=m | ||
146 | CONFIG_BLK_DEV_NBD=m | 202 | CONFIG_BLK_DEV_NBD=m |
147 | CONFIG_BLK_DEV_RAM=y | 203 | CONFIG_BLK_DEV_RAM=y |
148 | CONFIG_CDROM_PKTCDVD=m | 204 | CONFIG_CDROM_PKTCDVD=m |
@@ -157,107 +213,136 @@ CONFIG_BLK_DEV_SR=y | |||
157 | CONFIG_BLK_DEV_SR_VENDOR=y | 213 | CONFIG_BLK_DEV_SR_VENDOR=y |
158 | CONFIG_CHR_DEV_SG=m | 214 | CONFIG_CHR_DEV_SG=m |
159 | CONFIG_SCSI_CONSTANTS=y | 215 | CONFIG_SCSI_CONSTANTS=y |
160 | CONFIG_SCSI_SAS_LIBSAS=m | 216 | CONFIG_SCSI_SAS_ATTRS=m |
161 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
162 | CONFIG_SCSI_SRP_ATTRS=m | ||
163 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
164 | CONFIG_ISCSI_TCP=m | 217 | CONFIG_ISCSI_TCP=m |
218 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
165 | CONFIG_SUN3_SCSI=y | 219 | CONFIG_SUN3_SCSI=y |
166 | CONFIG_MD=y | 220 | CONFIG_MD=y |
167 | CONFIG_BLK_DEV_MD=m | ||
168 | CONFIG_MD_LINEAR=m | 221 | CONFIG_MD_LINEAR=m |
169 | CONFIG_MD_RAID0=m | 222 | CONFIG_MD_RAID0=m |
170 | CONFIG_MD_RAID1=m | ||
171 | CONFIG_MD_RAID456=m | ||
172 | CONFIG_BLK_DEV_DM=m | 223 | CONFIG_BLK_DEV_DM=m |
173 | CONFIG_DM_CRYPT=m | 224 | CONFIG_DM_CRYPT=m |
174 | CONFIG_DM_SNAPSHOT=m | 225 | CONFIG_DM_SNAPSHOT=m |
226 | CONFIG_DM_THIN_PROVISIONING=m | ||
227 | CONFIG_DM_CACHE=m | ||
175 | CONFIG_DM_MIRROR=m | 228 | CONFIG_DM_MIRROR=m |
229 | CONFIG_DM_RAID=m | ||
176 | CONFIG_DM_ZERO=m | 230 | CONFIG_DM_ZERO=m |
177 | CONFIG_DM_MULTIPATH=m | 231 | CONFIG_DM_MULTIPATH=m |
178 | CONFIG_DM_UEVENT=y | 232 | CONFIG_DM_UEVENT=y |
233 | CONFIG_TARGET_CORE=m | ||
234 | CONFIG_TCM_IBLOCK=m | ||
235 | CONFIG_TCM_FILEIO=m | ||
236 | CONFIG_TCM_PSCSI=m | ||
179 | CONFIG_NETDEVICES=y | 237 | CONFIG_NETDEVICES=y |
180 | CONFIG_DUMMY=m | 238 | CONFIG_DUMMY=m |
181 | CONFIG_MACVLAN=m | ||
182 | CONFIG_EQUALIZER=m | 239 | CONFIG_EQUALIZER=m |
240 | CONFIG_NET_TEAM=m | ||
241 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
242 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
243 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
244 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
245 | CONFIG_VXLAN=m | ||
246 | CONFIG_NETCONSOLE=m | ||
247 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
183 | CONFIG_VETH=m | 248 | CONFIG_VETH=m |
184 | CONFIG_NET_ETHERNET=y | ||
185 | CONFIG_SUN3LANCE=y | 249 | CONFIG_SUN3LANCE=y |
250 | # CONFIG_NET_CADENCE is not set | ||
186 | CONFIG_SUN3_82586=y | 251 | CONFIG_SUN3_82586=y |
187 | # CONFIG_NETDEV_1000 is not set | 252 | # CONFIG_NET_VENDOR_MARVELL is not set |
188 | # CONFIG_NETDEV_10000 is not set | 253 | # CONFIG_NET_VENDOR_MICREL is not set |
254 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
255 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
256 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
257 | # CONFIG_NET_VENDOR_SUN is not set | ||
258 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
189 | CONFIG_PPP=m | 259 | CONFIG_PPP=m |
190 | CONFIG_PPP_FILTER=y | ||
191 | CONFIG_PPP_ASYNC=m | ||
192 | CONFIG_PPP_SYNC_TTY=m | ||
193 | CONFIG_PPP_DEFLATE=m | ||
194 | CONFIG_PPP_BSDCOMP=m | 260 | CONFIG_PPP_BSDCOMP=m |
261 | CONFIG_PPP_DEFLATE=m | ||
262 | CONFIG_PPP_FILTER=y | ||
195 | CONFIG_PPP_MPPE=m | 263 | CONFIG_PPP_MPPE=m |
196 | CONFIG_PPPOE=m | 264 | CONFIG_PPPOE=m |
265 | CONFIG_PPTP=m | ||
266 | CONFIG_PPPOL2TP=m | ||
267 | CONFIG_PPP_ASYNC=m | ||
268 | CONFIG_PPP_SYNC_TTY=m | ||
197 | CONFIG_SLIP=m | 269 | CONFIG_SLIP=m |
198 | CONFIG_SLIP_COMPRESSED=y | 270 | CONFIG_SLIP_COMPRESSED=y |
199 | CONFIG_SLIP_SMART=y | 271 | CONFIG_SLIP_SMART=y |
200 | CONFIG_SLIP_MODE_SLIP6=y | 272 | CONFIG_SLIP_MODE_SLIP6=y |
201 | CONFIG_NETCONSOLE=m | 273 | # CONFIG_WLAN is not set |
202 | CONFIG_NETCONSOLE_DYNAMIC=y | 274 | CONFIG_INPUT_EVDEV=m |
203 | CONFIG_INPUT_FF_MEMLESS=m | ||
204 | # CONFIG_KEYBOARD_ATKBD is not set | 275 | # CONFIG_KEYBOARD_ATKBD is not set |
205 | CONFIG_KEYBOARD_SUNKBD=y | 276 | CONFIG_KEYBOARD_SUNKBD=y |
206 | CONFIG_MOUSE_PS2=m | 277 | # CONFIG_MOUSE_PS2 is not set |
207 | CONFIG_MOUSE_SERIAL=m | 278 | CONFIG_MOUSE_SERIAL=m |
208 | # CONFIG_SERIO_SERPORT is not set | ||
209 | CONFIG_VT_HW_CONSOLE_BINDING=y | 279 | CONFIG_VT_HW_CONSOLE_BINDING=y |
280 | # CONFIG_LEGACY_PTYS is not set | ||
210 | # CONFIG_DEVKMEM is not set | 281 | # CONFIG_DEVKMEM is not set |
211 | # CONFIG_HW_RANDOM is not set | 282 | # CONFIG_HW_RANDOM is not set |
212 | CONFIG_GEN_RTC=m | 283 | CONFIG_NTP_PPS=y |
213 | CONFIG_GEN_RTC_X=y | 284 | CONFIG_PPS_CLIENT_LDISC=m |
285 | CONFIG_PTP_1588_CLOCK=m | ||
214 | # CONFIG_HWMON is not set | 286 | # CONFIG_HWMON is not set |
215 | CONFIG_FB=y | 287 | CONFIG_FB=y |
216 | CONFIG_FRAMEBUFFER_CONSOLE=y | 288 | CONFIG_FRAMEBUFFER_CONSOLE=y |
217 | CONFIG_LOGO=y | 289 | CONFIG_LOGO=y |
218 | CONFIG_HID=m | 290 | CONFIG_HID=m |
219 | CONFIG_HIDRAW=y | 291 | CONFIG_HIDRAW=y |
292 | CONFIG_UHID=m | ||
293 | # CONFIG_HID_GENERIC is not set | ||
220 | # CONFIG_USB_SUPPORT is not set | 294 | # CONFIG_USB_SUPPORT is not set |
295 | CONFIG_RTC_CLASS=y | ||
296 | CONFIG_RTC_DRV_GENERIC=m | ||
297 | # CONFIG_IOMMU_SUPPORT is not set | ||
298 | CONFIG_PROC_HARDWARE=y | ||
221 | CONFIG_EXT2_FS=y | 299 | CONFIG_EXT2_FS=y |
222 | CONFIG_EXT3_FS=y | 300 | CONFIG_EXT3_FS=y |
223 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 301 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
224 | # CONFIG_EXT3_FS_XATTR is not set | 302 | # CONFIG_EXT3_FS_XATTR is not set |
303 | CONFIG_EXT4_FS=y | ||
225 | CONFIG_REISERFS_FS=m | 304 | CONFIG_REISERFS_FS=m |
226 | CONFIG_JFS_FS=m | 305 | CONFIG_JFS_FS=m |
227 | CONFIG_XFS_FS=m | 306 | CONFIG_XFS_FS=m |
228 | CONFIG_OCFS2_FS=m | 307 | CONFIG_OCFS2_FS=m |
229 | # CONFIG_OCFS2_FS_STATS is not set | ||
230 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 308 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
309 | CONFIG_FANOTIFY=y | ||
231 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 310 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
232 | # CONFIG_PRINT_QUOTA_WARNING is not set | 311 | # CONFIG_PRINT_QUOTA_WARNING is not set |
233 | CONFIG_AUTOFS_FS=m | ||
234 | CONFIG_AUTOFS4_FS=m | 312 | CONFIG_AUTOFS4_FS=m |
235 | CONFIG_FUSE_FS=m | 313 | CONFIG_FUSE_FS=m |
314 | CONFIG_CUSE=m | ||
236 | CONFIG_ISO9660_FS=y | 315 | CONFIG_ISO9660_FS=y |
237 | CONFIG_JOLIET=y | 316 | CONFIG_JOLIET=y |
238 | CONFIG_ZISOFS=y | 317 | CONFIG_ZISOFS=y |
239 | CONFIG_UDF_FS=m | 318 | CONFIG_UDF_FS=m |
240 | CONFIG_MSDOS_FS=y | 319 | CONFIG_MSDOS_FS=m |
241 | CONFIG_VFAT_FS=m | 320 | CONFIG_VFAT_FS=m |
242 | CONFIG_PROC_KCORE=y | 321 | CONFIG_PROC_KCORE=y |
243 | CONFIG_TMPFS=y | 322 | CONFIG_TMPFS=y |
244 | CONFIG_AFFS_FS=m | 323 | CONFIG_AFFS_FS=m |
324 | CONFIG_ECRYPT_FS=m | ||
325 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
245 | CONFIG_HFS_FS=m | 326 | CONFIG_HFS_FS=m |
246 | CONFIG_HFSPLUS_FS=m | 327 | CONFIG_HFSPLUS_FS=m |
247 | CONFIG_CRAMFS=m | 328 | CONFIG_CRAMFS=m |
248 | CONFIG_SQUASHFS=m | 329 | CONFIG_SQUASHFS=m |
249 | CONFIG_MINIX_FS=y | 330 | CONFIG_SQUASHFS_LZO=y |
331 | CONFIG_MINIX_FS=m | ||
332 | CONFIG_OMFS_FS=m | ||
250 | CONFIG_HPFS_FS=m | 333 | CONFIG_HPFS_FS=m |
334 | CONFIG_QNX4FS_FS=m | ||
335 | CONFIG_QNX6FS_FS=m | ||
251 | CONFIG_SYSV_FS=m | 336 | CONFIG_SYSV_FS=m |
252 | CONFIG_UFS_FS=m | 337 | CONFIG_UFS_FS=m |
253 | CONFIG_NFS_FS=y | 338 | CONFIG_NFS_FS=y |
254 | CONFIG_NFS_V3=y | ||
255 | CONFIG_NFS_V4=y | 339 | CONFIG_NFS_V4=y |
340 | CONFIG_NFS_SWAP=y | ||
256 | CONFIG_ROOT_NFS=y | 341 | CONFIG_ROOT_NFS=y |
257 | CONFIG_NFSD=m | 342 | CONFIG_NFSD=m |
258 | CONFIG_NFSD_V3=y | 343 | CONFIG_NFSD_V3=y |
259 | CONFIG_SMB_FS=m | 344 | CONFIG_CIFS=m |
260 | CONFIG_SMB_NLS_DEFAULT=y | 345 | # CONFIG_CIFS_DEBUG is not set |
261 | CONFIG_CODA_FS=m | 346 | CONFIG_CODA_FS=m |
262 | CONFIG_NLS_CODEPAGE_437=y | 347 | CONFIG_NLS_CODEPAGE_437=y |
263 | CONFIG_NLS_CODEPAGE_737=m | 348 | CONFIG_NLS_CODEPAGE_737=m |
@@ -296,10 +381,23 @@ CONFIG_NLS_ISO8859_14=m | |||
296 | CONFIG_NLS_ISO8859_15=m | 381 | CONFIG_NLS_ISO8859_15=m |
297 | CONFIG_NLS_KOI8_R=m | 382 | CONFIG_NLS_KOI8_R=m |
298 | CONFIG_NLS_KOI8_U=m | 383 | CONFIG_NLS_KOI8_U=m |
384 | CONFIG_NLS_MAC_ROMAN=m | ||
385 | CONFIG_NLS_MAC_CELTIC=m | ||
386 | CONFIG_NLS_MAC_CENTEURO=m | ||
387 | CONFIG_NLS_MAC_CROATIAN=m | ||
388 | CONFIG_NLS_MAC_CYRILLIC=m | ||
389 | CONFIG_NLS_MAC_GAELIC=m | ||
390 | CONFIG_NLS_MAC_GREEK=m | ||
391 | CONFIG_NLS_MAC_ICELAND=m | ||
392 | CONFIG_NLS_MAC_INUIT=m | ||
393 | CONFIG_NLS_MAC_ROMANIAN=m | ||
394 | CONFIG_NLS_MAC_TURKISH=m | ||
299 | CONFIG_DLM=m | 395 | CONFIG_DLM=m |
300 | CONFIG_MAGIC_SYSRQ=y | 396 | CONFIG_MAGIC_SYSRQ=y |
301 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 397 | CONFIG_ASYNC_RAID6_TEST=m |
302 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 398 | CONFIG_ENCRYPTED_KEYS=m |
399 | CONFIG_CRYPTO_MANAGER=y | ||
400 | CONFIG_CRYPTO_USER=m | ||
303 | CONFIG_CRYPTO_NULL=m | 401 | CONFIG_CRYPTO_NULL=m |
304 | CONFIG_CRYPTO_CRYPTD=m | 402 | CONFIG_CRYPTO_CRYPTD=m |
305 | CONFIG_CRYPTO_TEST=m | 403 | CONFIG_CRYPTO_TEST=m |
@@ -309,19 +407,16 @@ CONFIG_CRYPTO_CTS=m | |||
309 | CONFIG_CRYPTO_LRW=m | 407 | CONFIG_CRYPTO_LRW=m |
310 | CONFIG_CRYPTO_PCBC=m | 408 | CONFIG_CRYPTO_PCBC=m |
311 | CONFIG_CRYPTO_XTS=m | 409 | CONFIG_CRYPTO_XTS=m |
312 | CONFIG_CRYPTO_HMAC=y | ||
313 | CONFIG_CRYPTO_XCBC=m | 410 | CONFIG_CRYPTO_XCBC=m |
314 | CONFIG_CRYPTO_MD4=m | 411 | CONFIG_CRYPTO_VMAC=m |
315 | CONFIG_CRYPTO_MICHAEL_MIC=m | 412 | CONFIG_CRYPTO_MICHAEL_MIC=m |
316 | CONFIG_CRYPTO_RMD128=m | 413 | CONFIG_CRYPTO_RMD128=m |
317 | CONFIG_CRYPTO_RMD160=m | 414 | CONFIG_CRYPTO_RMD160=m |
318 | CONFIG_CRYPTO_RMD256=m | 415 | CONFIG_CRYPTO_RMD256=m |
319 | CONFIG_CRYPTO_RMD320=m | 416 | CONFIG_CRYPTO_RMD320=m |
320 | CONFIG_CRYPTO_SHA256=m | ||
321 | CONFIG_CRYPTO_SHA512=m | 417 | CONFIG_CRYPTO_SHA512=m |
322 | CONFIG_CRYPTO_TGR192=m | 418 | CONFIG_CRYPTO_TGR192=m |
323 | CONFIG_CRYPTO_WP512=m | 419 | CONFIG_CRYPTO_WP512=m |
324 | CONFIG_CRYPTO_AES=m | ||
325 | CONFIG_CRYPTO_ANUBIS=m | 420 | CONFIG_CRYPTO_ANUBIS=m |
326 | CONFIG_CRYPTO_BLOWFISH=m | 421 | CONFIG_CRYPTO_BLOWFISH=m |
327 | CONFIG_CRYPTO_CAMELLIA=m | 422 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -337,6 +432,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
337 | CONFIG_CRYPTO_ZLIB=m | 432 | CONFIG_CRYPTO_ZLIB=m |
338 | CONFIG_CRYPTO_LZO=m | 433 | CONFIG_CRYPTO_LZO=m |
339 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 434 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
435 | CONFIG_CRYPTO_USER_API_HASH=m | ||
436 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
340 | # CONFIG_CRYPTO_HW is not set | 437 | # CONFIG_CRYPTO_HW is not set |
341 | CONFIG_CRC16=m | ||
342 | CONFIG_CRC_T10DIF=y | 438 | CONFIG_CRC_T10DIF=y |
439 | CONFIG_XZ_DEC_X86=y | ||
440 | CONFIG_XZ_DEC_POWERPC=y | ||
441 | CONFIG_XZ_DEC_IA64=y | ||
442 | CONFIG_XZ_DEC_ARM=y | ||
443 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
444 | CONFIG_XZ_DEC_SPARC=y | ||
445 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_defconfig index c80941c7759e..832d9539f441 100644 --- a/arch/m68k/configs/sun3x_defconfig +++ b/arch/m68k/configs/sun3x_defconfig | |||
@@ -1,50 +1,71 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | ||
2 | CONFIG_LOCALVERSION="-sun3x" | 1 | CONFIG_LOCALVERSION="-sun3x" |
3 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
4 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_FHANDLE=y | ||
5 | CONFIG_BSD_PROCESS_ACCT=y | 5 | CONFIG_BSD_PROCESS_ACCT=y |
6 | CONFIG_LOG_BUF_SHIFT=14 | 6 | CONFIG_BSD_PROCESS_ACCT_V3=y |
7 | CONFIG_RELAY=y | 7 | CONFIG_LOG_BUF_SHIFT=16 |
8 | # CONFIG_UTS_NS is not set | ||
9 | # CONFIG_IPC_NS is not set | ||
10 | # CONFIG_PID_NS is not set | ||
11 | # CONFIG_NET_NS is not set | ||
8 | CONFIG_BLK_DEV_INITRD=y | 12 | CONFIG_BLK_DEV_INITRD=y |
9 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
10 | CONFIG_SLAB=y | 13 | CONFIG_SLAB=y |
11 | CONFIG_MODULES=y | 14 | CONFIG_MODULES=y |
12 | CONFIG_MODULE_UNLOAD=y | 15 | CONFIG_MODULE_UNLOAD=y |
16 | CONFIG_PARTITION_ADVANCED=y | ||
17 | CONFIG_AMIGA_PARTITION=y | ||
18 | CONFIG_ATARI_PARTITION=y | ||
19 | CONFIG_MAC_PARTITION=y | ||
20 | CONFIG_BSD_DISKLABEL=y | ||
21 | CONFIG_MINIX_SUBPARTITION=y | ||
22 | CONFIG_SOLARIS_X86_PARTITION=y | ||
23 | CONFIG_UNIXWARE_DISKLABEL=y | ||
24 | # CONFIG_EFI_PARTITION is not set | ||
25 | CONFIG_SYSV68_PARTITION=y | ||
26 | CONFIG_IOSCHED_DEADLINE=m | ||
13 | CONFIG_SUN3X=y | 27 | CONFIG_SUN3X=y |
28 | # CONFIG_COMPACTION is not set | ||
29 | CONFIG_CLEANCACHE=y | ||
30 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
14 | CONFIG_BINFMT_AOUT=m | 31 | CONFIG_BINFMT_AOUT=m |
15 | CONFIG_BINFMT_MISC=m | 32 | CONFIG_BINFMT_MISC=m |
16 | CONFIG_PROC_HARDWARE=y | ||
17 | CONFIG_NET=y | 33 | CONFIG_NET=y |
18 | CONFIG_PACKET=y | 34 | CONFIG_PACKET=y |
35 | CONFIG_PACKET_DIAG=m | ||
19 | CONFIG_UNIX=y | 36 | CONFIG_UNIX=y |
37 | CONFIG_UNIX_DIAG=m | ||
38 | CONFIG_XFRM_MIGRATE=y | ||
20 | CONFIG_NET_KEY=y | 39 | CONFIG_NET_KEY=y |
21 | CONFIG_NET_KEY_MIGRATE=y | ||
22 | CONFIG_INET=y | 40 | CONFIG_INET=y |
23 | CONFIG_IP_PNP=y | 41 | CONFIG_IP_PNP=y |
24 | CONFIG_IP_PNP_DHCP=y | 42 | CONFIG_IP_PNP_DHCP=y |
25 | CONFIG_IP_PNP_BOOTP=y | 43 | CONFIG_IP_PNP_BOOTP=y |
26 | CONFIG_IP_PNP_RARP=y | 44 | CONFIG_IP_PNP_RARP=y |
27 | CONFIG_NET_IPIP=m | 45 | CONFIG_NET_IPIP=m |
46 | CONFIG_NET_IPGRE_DEMUX=m | ||
28 | CONFIG_NET_IPGRE=m | 47 | CONFIG_NET_IPGRE=m |
29 | CONFIG_SYN_COOKIES=y | 48 | CONFIG_SYN_COOKIES=y |
49 | CONFIG_NET_IPVTI=m | ||
30 | CONFIG_INET_AH=m | 50 | CONFIG_INET_AH=m |
31 | CONFIG_INET_ESP=m | 51 | CONFIG_INET_ESP=m |
32 | CONFIG_INET_IPCOMP=m | 52 | CONFIG_INET_IPCOMP=m |
33 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 53 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
34 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 54 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
35 | CONFIG_INET_XFRM_MODE_BEET=m | 55 | CONFIG_INET_XFRM_MODE_BEET=m |
56 | # CONFIG_INET_LRO is not set | ||
36 | CONFIG_INET_DIAG=m | 57 | CONFIG_INET_DIAG=m |
58 | CONFIG_INET_UDP_DIAG=m | ||
37 | CONFIG_IPV6_PRIVACY=y | 59 | CONFIG_IPV6_PRIVACY=y |
38 | CONFIG_IPV6_ROUTER_PREF=y | 60 | CONFIG_IPV6_ROUTER_PREF=y |
39 | CONFIG_IPV6_ROUTE_INFO=y | ||
40 | CONFIG_INET6_AH=m | 61 | CONFIG_INET6_AH=m |
41 | CONFIG_INET6_ESP=m | 62 | CONFIG_INET6_ESP=m |
42 | CONFIG_INET6_IPCOMP=m | 63 | CONFIG_INET6_IPCOMP=m |
43 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 64 | CONFIG_IPV6_GRE=m |
44 | CONFIG_IPV6_TUNNEL=m | ||
45 | CONFIG_NETFILTER=y | 65 | CONFIG_NETFILTER=y |
46 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
47 | CONFIG_NF_CONNTRACK=m | 66 | CONFIG_NF_CONNTRACK=m |
67 | CONFIG_NF_CONNTRACK_ZONES=y | ||
68 | # CONFIG_NF_CONNTRACK_PROCFS is not set | ||
48 | # CONFIG_NF_CT_PROTO_DCCP is not set | 69 | # CONFIG_NF_CT_PROTO_DCCP is not set |
49 | CONFIG_NF_CT_PROTO_UDPLITE=m | 70 | CONFIG_NF_CT_PROTO_UDPLITE=m |
50 | CONFIG_NF_CONNTRACK_AMANDA=m | 71 | CONFIG_NF_CONNTRACK_AMANDA=m |
@@ -52,25 +73,37 @@ CONFIG_NF_CONNTRACK_FTP=m | |||
52 | CONFIG_NF_CONNTRACK_H323=m | 73 | CONFIG_NF_CONNTRACK_H323=m |
53 | CONFIG_NF_CONNTRACK_IRC=m | 74 | CONFIG_NF_CONNTRACK_IRC=m |
54 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | 75 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m |
76 | CONFIG_NF_CONNTRACK_SNMP=m | ||
55 | CONFIG_NF_CONNTRACK_PPTP=m | 77 | CONFIG_NF_CONNTRACK_PPTP=m |
56 | CONFIG_NF_CONNTRACK_SANE=m | 78 | CONFIG_NF_CONNTRACK_SANE=m |
57 | CONFIG_NF_CONNTRACK_SIP=m | 79 | CONFIG_NF_CONNTRACK_SIP=m |
58 | CONFIG_NF_CONNTRACK_TFTP=m | 80 | CONFIG_NF_CONNTRACK_TFTP=m |
81 | CONFIG_NETFILTER_XT_SET=m | ||
82 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m | ||
59 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 83 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
60 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 84 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
61 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | 85 | CONFIG_NETFILTER_XT_TARGET_DSCP=m |
86 | CONFIG_NETFILTER_XT_TARGET_HMARK=m | ||
87 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m | ||
88 | CONFIG_NETFILTER_XT_TARGET_LOG=m | ||
62 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 89 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
63 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 90 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
64 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 91 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
92 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
93 | CONFIG_NETFILTER_XT_TARGET_TEE=m | ||
65 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 94 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
66 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 95 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
67 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | 96 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m |
97 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m | ||
98 | CONFIG_NETFILTER_XT_MATCH_BPF=m | ||
68 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 99 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
69 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 100 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
70 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 101 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
102 | CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m | ||
71 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 103 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
72 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 104 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
73 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 105 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
106 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m | ||
74 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 107 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
75 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 108 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
76 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 109 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
@@ -81,6 +114,8 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
81 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 114 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
82 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 115 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
83 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 116 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
117 | CONFIG_NETFILTER_XT_MATCH_NFACCT=m | ||
118 | CONFIG_NETFILTER_XT_MATCH_OSF=m | ||
84 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 119 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
85 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 120 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
86 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 121 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -94,22 +129,31 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
94 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 129 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
95 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 130 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
96 | CONFIG_NETFILTER_XT_MATCH_U32=m | 131 | CONFIG_NETFILTER_XT_MATCH_U32=m |
132 | CONFIG_IP_SET=m | ||
133 | CONFIG_IP_SET_BITMAP_IP=m | ||
134 | CONFIG_IP_SET_BITMAP_IPMAC=m | ||
135 | CONFIG_IP_SET_BITMAP_PORT=m | ||
136 | CONFIG_IP_SET_HASH_IP=m | ||
137 | CONFIG_IP_SET_HASH_IPPORT=m | ||
138 | CONFIG_IP_SET_HASH_IPPORTIP=m | ||
139 | CONFIG_IP_SET_HASH_IPPORTNET=m | ||
140 | CONFIG_IP_SET_HASH_NET=m | ||
141 | CONFIG_IP_SET_HASH_NETPORT=m | ||
142 | CONFIG_IP_SET_HASH_NETIFACE=m | ||
143 | CONFIG_IP_SET_LIST_SET=m | ||
97 | CONFIG_NF_CONNTRACK_IPV4=m | 144 | CONFIG_NF_CONNTRACK_IPV4=m |
98 | CONFIG_IP_NF_QUEUE=m | ||
99 | CONFIG_IP_NF_IPTABLES=m | 145 | CONFIG_IP_NF_IPTABLES=m |
100 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
101 | CONFIG_IP_NF_MATCH_AH=m | 146 | CONFIG_IP_NF_MATCH_AH=m |
102 | CONFIG_IP_NF_MATCH_ECN=m | 147 | CONFIG_IP_NF_MATCH_ECN=m |
148 | CONFIG_IP_NF_MATCH_RPFILTER=m | ||
103 | CONFIG_IP_NF_MATCH_TTL=m | 149 | CONFIG_IP_NF_MATCH_TTL=m |
104 | CONFIG_IP_NF_FILTER=m | 150 | CONFIG_IP_NF_FILTER=m |
105 | CONFIG_IP_NF_TARGET_REJECT=m | 151 | CONFIG_IP_NF_TARGET_REJECT=m |
106 | CONFIG_IP_NF_TARGET_LOG=m | ||
107 | CONFIG_IP_NF_TARGET_ULOG=m | 152 | CONFIG_IP_NF_TARGET_ULOG=m |
108 | CONFIG_NF_NAT=m | 153 | CONFIG_NF_NAT_IPV4=m |
109 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 154 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
110 | CONFIG_IP_NF_TARGET_NETMAP=m | 155 | CONFIG_IP_NF_TARGET_NETMAP=m |
111 | CONFIG_IP_NF_TARGET_REDIRECT=m | 156 | CONFIG_IP_NF_TARGET_REDIRECT=m |
112 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
113 | CONFIG_IP_NF_MANGLE=m | 157 | CONFIG_IP_NF_MANGLE=m |
114 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 158 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
115 | CONFIG_IP_NF_TARGET_ECN=m | 159 | CONFIG_IP_NF_TARGET_ECN=m |
@@ -119,7 +163,6 @@ CONFIG_IP_NF_ARPTABLES=m | |||
119 | CONFIG_IP_NF_ARPFILTER=m | 163 | CONFIG_IP_NF_ARPFILTER=m |
120 | CONFIG_IP_NF_ARP_MANGLE=m | 164 | CONFIG_IP_NF_ARP_MANGLE=m |
121 | CONFIG_NF_CONNTRACK_IPV6=m | 165 | CONFIG_NF_CONNTRACK_IPV6=m |
122 | CONFIG_IP6_NF_QUEUE=m | ||
123 | CONFIG_IP6_NF_IPTABLES=m | 166 | CONFIG_IP6_NF_IPTABLES=m |
124 | CONFIG_IP6_NF_MATCH_AH=m | 167 | CONFIG_IP6_NF_MATCH_AH=m |
125 | CONFIG_IP6_NF_MATCH_EUI64=m | 168 | CONFIG_IP6_NF_MATCH_EUI64=m |
@@ -128,21 +171,34 @@ CONFIG_IP6_NF_MATCH_OPTS=m | |||
128 | CONFIG_IP6_NF_MATCH_HL=m | 171 | CONFIG_IP6_NF_MATCH_HL=m |
129 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 172 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
130 | CONFIG_IP6_NF_MATCH_MH=m | 173 | CONFIG_IP6_NF_MATCH_MH=m |
174 | CONFIG_IP6_NF_MATCH_RPFILTER=m | ||
131 | CONFIG_IP6_NF_MATCH_RT=m | 175 | CONFIG_IP6_NF_MATCH_RT=m |
132 | CONFIG_IP6_NF_TARGET_HL=m | 176 | CONFIG_IP6_NF_TARGET_HL=m |
133 | CONFIG_IP6_NF_TARGET_LOG=m | ||
134 | CONFIG_IP6_NF_FILTER=m | 177 | CONFIG_IP6_NF_FILTER=m |
135 | CONFIG_IP6_NF_TARGET_REJECT=m | 178 | CONFIG_IP6_NF_TARGET_REJECT=m |
136 | CONFIG_IP6_NF_MANGLE=m | 179 | CONFIG_IP6_NF_MANGLE=m |
137 | CONFIG_IP6_NF_RAW=m | 180 | CONFIG_IP6_NF_RAW=m |
181 | CONFIG_NF_NAT_IPV6=m | ||
182 | CONFIG_IP6_NF_TARGET_MASQUERADE=m | ||
183 | CONFIG_IP6_NF_TARGET_NPT=m | ||
138 | CONFIG_IP_DCCP=m | 184 | CONFIG_IP_DCCP=m |
139 | # CONFIG_IP_DCCP_CCID3 is not set | 185 | # CONFIG_IP_DCCP_CCID3 is not set |
186 | CONFIG_SCTP_COOKIE_HMAC_SHA1=y | ||
187 | CONFIG_RDS=m | ||
188 | CONFIG_RDS_TCP=m | ||
189 | CONFIG_L2TP=m | ||
140 | CONFIG_ATALK=m | 190 | CONFIG_ATALK=m |
191 | CONFIG_BATMAN_ADV=m | ||
192 | CONFIG_BATMAN_ADV_DAT=y | ||
193 | # CONFIG_WIRELESS is not set | ||
141 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 194 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
195 | CONFIG_DEVTMPFS=y | ||
142 | # CONFIG_FIRMWARE_IN_KERNEL is not set | 196 | # CONFIG_FIRMWARE_IN_KERNEL is not set |
197 | # CONFIG_FW_LOADER_USER_HELPER is not set | ||
143 | CONFIG_CONNECTOR=m | 198 | CONFIG_CONNECTOR=m |
144 | CONFIG_BLK_DEV_LOOP=y | 199 | CONFIG_BLK_DEV_LOOP=y |
145 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 200 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
201 | CONFIG_BLK_DEV_DRBD=m | ||
146 | CONFIG_BLK_DEV_NBD=m | 202 | CONFIG_BLK_DEV_NBD=m |
147 | CONFIG_BLK_DEV_RAM=y | 203 | CONFIG_BLK_DEV_RAM=y |
148 | CONFIG_CDROM_PKTCDVD=m | 204 | CONFIG_CDROM_PKTCDVD=m |
@@ -157,106 +213,136 @@ CONFIG_BLK_DEV_SR=y | |||
157 | CONFIG_BLK_DEV_SR_VENDOR=y | 213 | CONFIG_BLK_DEV_SR_VENDOR=y |
158 | CONFIG_CHR_DEV_SG=m | 214 | CONFIG_CHR_DEV_SG=m |
159 | CONFIG_SCSI_CONSTANTS=y | 215 | CONFIG_SCSI_CONSTANTS=y |
160 | CONFIG_SCSI_SAS_LIBSAS=m | 216 | CONFIG_SCSI_SAS_ATTRS=m |
161 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
162 | CONFIG_SCSI_SRP_ATTRS=m | ||
163 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
164 | CONFIG_ISCSI_TCP=m | 217 | CONFIG_ISCSI_TCP=m |
218 | CONFIG_ISCSI_BOOT_SYSFS=m | ||
165 | CONFIG_SUN3X_ESP=y | 219 | CONFIG_SUN3X_ESP=y |
166 | CONFIG_MD=y | 220 | CONFIG_MD=y |
167 | CONFIG_BLK_DEV_MD=m | ||
168 | CONFIG_MD_LINEAR=m | 221 | CONFIG_MD_LINEAR=m |
169 | CONFIG_MD_RAID0=m | 222 | CONFIG_MD_RAID0=m |
170 | CONFIG_MD_RAID1=m | ||
171 | CONFIG_MD_RAID456=m | ||
172 | CONFIG_BLK_DEV_DM=m | 223 | CONFIG_BLK_DEV_DM=m |
173 | CONFIG_DM_CRYPT=m | 224 | CONFIG_DM_CRYPT=m |
174 | CONFIG_DM_SNAPSHOT=m | 225 | CONFIG_DM_SNAPSHOT=m |
226 | CONFIG_DM_THIN_PROVISIONING=m | ||
227 | CONFIG_DM_CACHE=m | ||
175 | CONFIG_DM_MIRROR=m | 228 | CONFIG_DM_MIRROR=m |
229 | CONFIG_DM_RAID=m | ||
176 | CONFIG_DM_ZERO=m | 230 | CONFIG_DM_ZERO=m |
177 | CONFIG_DM_MULTIPATH=m | 231 | CONFIG_DM_MULTIPATH=m |
178 | CONFIG_DM_UEVENT=y | 232 | CONFIG_DM_UEVENT=y |
233 | CONFIG_TARGET_CORE=m | ||
234 | CONFIG_TCM_IBLOCK=m | ||
235 | CONFIG_TCM_FILEIO=m | ||
236 | CONFIG_TCM_PSCSI=m | ||
179 | CONFIG_NETDEVICES=y | 237 | CONFIG_NETDEVICES=y |
180 | CONFIG_DUMMY=m | 238 | CONFIG_DUMMY=m |
181 | CONFIG_MACVLAN=m | ||
182 | CONFIG_EQUALIZER=m | 239 | CONFIG_EQUALIZER=m |
240 | CONFIG_NET_TEAM=m | ||
241 | CONFIG_NET_TEAM_MODE_BROADCAST=m | ||
242 | CONFIG_NET_TEAM_MODE_ROUNDROBIN=m | ||
243 | CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m | ||
244 | CONFIG_NET_TEAM_MODE_LOADBALANCE=m | ||
245 | CONFIG_VXLAN=m | ||
246 | CONFIG_NETCONSOLE=m | ||
247 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
183 | CONFIG_VETH=m | 248 | CONFIG_VETH=m |
184 | CONFIG_NET_ETHERNET=y | ||
185 | CONFIG_SUN3LANCE=y | 249 | CONFIG_SUN3LANCE=y |
186 | # CONFIG_NETDEV_1000 is not set | 250 | # CONFIG_NET_CADENCE is not set |
187 | # CONFIG_NETDEV_10000 is not set | 251 | # CONFIG_NET_VENDOR_BROADCOM is not set |
252 | # CONFIG_NET_VENDOR_INTEL is not set | ||
253 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
254 | # CONFIG_NET_VENDOR_MICREL is not set | ||
255 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
256 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
257 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
258 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
188 | CONFIG_PPP=m | 259 | CONFIG_PPP=m |
189 | CONFIG_PPP_FILTER=y | ||
190 | CONFIG_PPP_ASYNC=m | ||
191 | CONFIG_PPP_SYNC_TTY=m | ||
192 | CONFIG_PPP_DEFLATE=m | ||
193 | CONFIG_PPP_BSDCOMP=m | 260 | CONFIG_PPP_BSDCOMP=m |
261 | CONFIG_PPP_DEFLATE=m | ||
262 | CONFIG_PPP_FILTER=y | ||
194 | CONFIG_PPP_MPPE=m | 263 | CONFIG_PPP_MPPE=m |
195 | CONFIG_PPPOE=m | 264 | CONFIG_PPPOE=m |
265 | CONFIG_PPTP=m | ||
266 | CONFIG_PPPOL2TP=m | ||
267 | CONFIG_PPP_ASYNC=m | ||
268 | CONFIG_PPP_SYNC_TTY=m | ||
196 | CONFIG_SLIP=m | 269 | CONFIG_SLIP=m |
197 | CONFIG_SLIP_COMPRESSED=y | 270 | CONFIG_SLIP_COMPRESSED=y |
198 | CONFIG_SLIP_SMART=y | 271 | CONFIG_SLIP_SMART=y |
199 | CONFIG_SLIP_MODE_SLIP6=y | 272 | CONFIG_SLIP_MODE_SLIP6=y |
200 | CONFIG_NETCONSOLE=m | 273 | # CONFIG_WLAN is not set |
201 | CONFIG_NETCONSOLE_DYNAMIC=y | 274 | CONFIG_INPUT_EVDEV=m |
202 | CONFIG_INPUT_FF_MEMLESS=m | ||
203 | # CONFIG_KEYBOARD_ATKBD is not set | 275 | # CONFIG_KEYBOARD_ATKBD is not set |
204 | CONFIG_KEYBOARD_SUNKBD=y | 276 | CONFIG_KEYBOARD_SUNKBD=y |
205 | CONFIG_MOUSE_PS2=m | 277 | # CONFIG_MOUSE_PS2 is not set |
206 | CONFIG_MOUSE_SERIAL=m | 278 | CONFIG_MOUSE_SERIAL=m |
207 | # CONFIG_SERIO_SERPORT is not set | ||
208 | CONFIG_VT_HW_CONSOLE_BINDING=y | 279 | CONFIG_VT_HW_CONSOLE_BINDING=y |
280 | # CONFIG_LEGACY_PTYS is not set | ||
209 | # CONFIG_DEVKMEM is not set | 281 | # CONFIG_DEVKMEM is not set |
210 | # CONFIG_HW_RANDOM is not set | 282 | # CONFIG_HW_RANDOM is not set |
211 | CONFIG_GEN_RTC=m | 283 | CONFIG_NTP_PPS=y |
212 | CONFIG_GEN_RTC_X=y | 284 | CONFIG_PPS_CLIENT_LDISC=m |
285 | CONFIG_PTP_1588_CLOCK=m | ||
213 | # CONFIG_HWMON is not set | 286 | # CONFIG_HWMON is not set |
214 | CONFIG_FB=y | 287 | CONFIG_FB=y |
215 | CONFIG_FRAMEBUFFER_CONSOLE=y | 288 | CONFIG_FRAMEBUFFER_CONSOLE=y |
216 | CONFIG_LOGO=y | 289 | CONFIG_LOGO=y |
217 | CONFIG_HID=m | 290 | CONFIG_HID=m |
218 | CONFIG_HIDRAW=y | 291 | CONFIG_HIDRAW=y |
292 | CONFIG_UHID=m | ||
293 | # CONFIG_HID_GENERIC is not set | ||
219 | # CONFIG_USB_SUPPORT is not set | 294 | # CONFIG_USB_SUPPORT is not set |
295 | CONFIG_RTC_CLASS=y | ||
296 | CONFIG_RTC_DRV_GENERIC=m | ||
297 | # CONFIG_IOMMU_SUPPORT is not set | ||
298 | CONFIG_PROC_HARDWARE=y | ||
220 | CONFIG_EXT2_FS=y | 299 | CONFIG_EXT2_FS=y |
221 | CONFIG_EXT3_FS=y | 300 | CONFIG_EXT3_FS=y |
222 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | 301 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set |
223 | # CONFIG_EXT3_FS_XATTR is not set | 302 | # CONFIG_EXT3_FS_XATTR is not set |
303 | CONFIG_EXT4_FS=y | ||
224 | CONFIG_REISERFS_FS=m | 304 | CONFIG_REISERFS_FS=m |
225 | CONFIG_JFS_FS=m | 305 | CONFIG_JFS_FS=m |
226 | CONFIG_XFS_FS=m | 306 | CONFIG_XFS_FS=m |
227 | CONFIG_OCFS2_FS=m | 307 | CONFIG_OCFS2_FS=m |
228 | # CONFIG_OCFS2_FS_STATS is not set | ||
229 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 308 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
309 | CONFIG_FANOTIFY=y | ||
230 | CONFIG_QUOTA_NETLINK_INTERFACE=y | 310 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
231 | # CONFIG_PRINT_QUOTA_WARNING is not set | 311 | # CONFIG_PRINT_QUOTA_WARNING is not set |
232 | CONFIG_AUTOFS_FS=m | ||
233 | CONFIG_AUTOFS4_FS=m | 312 | CONFIG_AUTOFS4_FS=m |
234 | CONFIG_FUSE_FS=m | 313 | CONFIG_FUSE_FS=m |
314 | CONFIG_CUSE=m | ||
235 | CONFIG_ISO9660_FS=y | 315 | CONFIG_ISO9660_FS=y |
236 | CONFIG_JOLIET=y | 316 | CONFIG_JOLIET=y |
237 | CONFIG_ZISOFS=y | 317 | CONFIG_ZISOFS=y |
238 | CONFIG_UDF_FS=m | 318 | CONFIG_UDF_FS=m |
239 | CONFIG_MSDOS_FS=y | 319 | CONFIG_MSDOS_FS=m |
240 | CONFIG_VFAT_FS=m | 320 | CONFIG_VFAT_FS=m |
241 | CONFIG_PROC_KCORE=y | 321 | CONFIG_PROC_KCORE=y |
242 | CONFIG_TMPFS=y | 322 | CONFIG_TMPFS=y |
243 | CONFIG_AFFS_FS=m | 323 | CONFIG_AFFS_FS=m |
324 | CONFIG_ECRYPT_FS=m | ||
325 | CONFIG_ECRYPT_FS_MESSAGING=y | ||
244 | CONFIG_HFS_FS=m | 326 | CONFIG_HFS_FS=m |
245 | CONFIG_HFSPLUS_FS=m | 327 | CONFIG_HFSPLUS_FS=m |
246 | CONFIG_CRAMFS=m | 328 | CONFIG_CRAMFS=m |
247 | CONFIG_SQUASHFS=m | 329 | CONFIG_SQUASHFS=m |
248 | CONFIG_MINIX_FS=y | 330 | CONFIG_SQUASHFS_LZO=y |
331 | CONFIG_MINIX_FS=m | ||
332 | CONFIG_OMFS_FS=m | ||
249 | CONFIG_HPFS_FS=m | 333 | CONFIG_HPFS_FS=m |
334 | CONFIG_QNX4FS_FS=m | ||
335 | CONFIG_QNX6FS_FS=m | ||
250 | CONFIG_SYSV_FS=m | 336 | CONFIG_SYSV_FS=m |
251 | CONFIG_UFS_FS=m | 337 | CONFIG_UFS_FS=m |
252 | CONFIG_NFS_FS=y | 338 | CONFIG_NFS_FS=y |
253 | CONFIG_NFS_V3=y | ||
254 | CONFIG_NFS_V4=y | 339 | CONFIG_NFS_V4=y |
340 | CONFIG_NFS_SWAP=y | ||
255 | CONFIG_ROOT_NFS=y | 341 | CONFIG_ROOT_NFS=y |
256 | CONFIG_NFSD=m | 342 | CONFIG_NFSD=m |
257 | CONFIG_NFSD_V3=y | 343 | CONFIG_NFSD_V3=y |
258 | CONFIG_SMB_FS=m | 344 | CONFIG_CIFS=m |
259 | CONFIG_SMB_NLS_DEFAULT=y | 345 | # CONFIG_CIFS_DEBUG is not set |
260 | CONFIG_CODA_FS=m | 346 | CONFIG_CODA_FS=m |
261 | CONFIG_NLS_CODEPAGE_437=y | 347 | CONFIG_NLS_CODEPAGE_437=y |
262 | CONFIG_NLS_CODEPAGE_737=m | 348 | CONFIG_NLS_CODEPAGE_737=m |
@@ -295,10 +381,23 @@ CONFIG_NLS_ISO8859_14=m | |||
295 | CONFIG_NLS_ISO8859_15=m | 381 | CONFIG_NLS_ISO8859_15=m |
296 | CONFIG_NLS_KOI8_R=m | 382 | CONFIG_NLS_KOI8_R=m |
297 | CONFIG_NLS_KOI8_U=m | 383 | CONFIG_NLS_KOI8_U=m |
384 | CONFIG_NLS_MAC_ROMAN=m | ||
385 | CONFIG_NLS_MAC_CELTIC=m | ||
386 | CONFIG_NLS_MAC_CENTEURO=m | ||
387 | CONFIG_NLS_MAC_CROATIAN=m | ||
388 | CONFIG_NLS_MAC_CYRILLIC=m | ||
389 | CONFIG_NLS_MAC_GAELIC=m | ||
390 | CONFIG_NLS_MAC_GREEK=m | ||
391 | CONFIG_NLS_MAC_ICELAND=m | ||
392 | CONFIG_NLS_MAC_INUIT=m | ||
393 | CONFIG_NLS_MAC_ROMANIAN=m | ||
394 | CONFIG_NLS_MAC_TURKISH=m | ||
298 | CONFIG_DLM=m | 395 | CONFIG_DLM=m |
299 | CONFIG_MAGIC_SYSRQ=y | 396 | CONFIG_MAGIC_SYSRQ=y |
300 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 397 | CONFIG_ASYNC_RAID6_TEST=m |
301 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 398 | CONFIG_ENCRYPTED_KEYS=m |
399 | CONFIG_CRYPTO_MANAGER=y | ||
400 | CONFIG_CRYPTO_USER=m | ||
302 | CONFIG_CRYPTO_NULL=m | 401 | CONFIG_CRYPTO_NULL=m |
303 | CONFIG_CRYPTO_CRYPTD=m | 402 | CONFIG_CRYPTO_CRYPTD=m |
304 | CONFIG_CRYPTO_TEST=m | 403 | CONFIG_CRYPTO_TEST=m |
@@ -308,19 +407,16 @@ CONFIG_CRYPTO_CTS=m | |||
308 | CONFIG_CRYPTO_LRW=m | 407 | CONFIG_CRYPTO_LRW=m |
309 | CONFIG_CRYPTO_PCBC=m | 408 | CONFIG_CRYPTO_PCBC=m |
310 | CONFIG_CRYPTO_XTS=m | 409 | CONFIG_CRYPTO_XTS=m |
311 | CONFIG_CRYPTO_HMAC=y | ||
312 | CONFIG_CRYPTO_XCBC=m | 410 | CONFIG_CRYPTO_XCBC=m |
313 | CONFIG_CRYPTO_MD4=m | 411 | CONFIG_CRYPTO_VMAC=m |
314 | CONFIG_CRYPTO_MICHAEL_MIC=m | 412 | CONFIG_CRYPTO_MICHAEL_MIC=m |
315 | CONFIG_CRYPTO_RMD128=m | 413 | CONFIG_CRYPTO_RMD128=m |
316 | CONFIG_CRYPTO_RMD160=m | 414 | CONFIG_CRYPTO_RMD160=m |
317 | CONFIG_CRYPTO_RMD256=m | 415 | CONFIG_CRYPTO_RMD256=m |
318 | CONFIG_CRYPTO_RMD320=m | 416 | CONFIG_CRYPTO_RMD320=m |
319 | CONFIG_CRYPTO_SHA256=m | ||
320 | CONFIG_CRYPTO_SHA512=m | 417 | CONFIG_CRYPTO_SHA512=m |
321 | CONFIG_CRYPTO_TGR192=m | 418 | CONFIG_CRYPTO_TGR192=m |
322 | CONFIG_CRYPTO_WP512=m | 419 | CONFIG_CRYPTO_WP512=m |
323 | CONFIG_CRYPTO_AES=m | ||
324 | CONFIG_CRYPTO_ANUBIS=m | 420 | CONFIG_CRYPTO_ANUBIS=m |
325 | CONFIG_CRYPTO_BLOWFISH=m | 421 | CONFIG_CRYPTO_BLOWFISH=m |
326 | CONFIG_CRYPTO_CAMELLIA=m | 422 | CONFIG_CRYPTO_CAMELLIA=m |
@@ -336,6 +432,14 @@ CONFIG_CRYPTO_TWOFISH=m | |||
336 | CONFIG_CRYPTO_ZLIB=m | 432 | CONFIG_CRYPTO_ZLIB=m |
337 | CONFIG_CRYPTO_LZO=m | 433 | CONFIG_CRYPTO_LZO=m |
338 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 434 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
435 | CONFIG_CRYPTO_USER_API_HASH=m | ||
436 | CONFIG_CRYPTO_USER_API_SKCIPHER=m | ||
339 | # CONFIG_CRYPTO_HW is not set | 437 | # CONFIG_CRYPTO_HW is not set |
340 | CONFIG_CRC16=m | ||
341 | CONFIG_CRC_T10DIF=y | 438 | CONFIG_CRC_T10DIF=y |
439 | CONFIG_XZ_DEC_X86=y | ||
440 | CONFIG_XZ_DEC_POWERPC=y | ||
441 | CONFIG_XZ_DEC_IA64=y | ||
442 | CONFIG_XZ_DEC_ARM=y | ||
443 | CONFIG_XZ_DEC_ARMTHUMB=y | ||
444 | CONFIG_XZ_DEC_SPARC=y | ||
445 | CONFIG_XZ_DEC_TEST=m | ||
diff --git a/arch/m68k/include/asm/Kbuild b/arch/m68k/include/asm/Kbuild index c7933e41f10d..09d77a862da3 100644 --- a/arch/m68k/include/asm/Kbuild +++ b/arch/m68k/include/asm/Kbuild | |||
@@ -6,7 +6,6 @@ generic-y += device.h | |||
6 | generic-y += emergency-restart.h | 6 | generic-y += emergency-restart.h |
7 | generic-y += errno.h | 7 | generic-y += errno.h |
8 | generic-y += exec.h | 8 | generic-y += exec.h |
9 | generic-y += futex.h | ||
10 | generic-y += hw_irq.h | 9 | generic-y += hw_irq.h |
11 | generic-y += ioctl.h | 10 | generic-y += ioctl.h |
12 | generic-y += ipcbuf.h | 11 | generic-y += ipcbuf.h |
diff --git a/arch/m68k/include/asm/futex.h b/arch/m68k/include/asm/futex.h new file mode 100644 index 000000000000..bc868af10c96 --- /dev/null +++ b/arch/m68k/include/asm/futex.h | |||
@@ -0,0 +1,94 @@ | |||
1 | #ifndef _ASM_M68K_FUTEX_H | ||
2 | #define _ASM_M68K_FUTEX_H | ||
3 | |||
4 | #ifdef __KERNEL__ | ||
5 | #if !defined(CONFIG_MMU) | ||
6 | #include <asm-generic/futex.h> | ||
7 | #else /* CONFIG_MMU */ | ||
8 | |||
9 | #include <linux/futex.h> | ||
10 | #include <linux/uaccess.h> | ||
11 | #include <asm/errno.h> | ||
12 | |||
13 | static inline int | ||
14 | futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, | ||
15 | u32 oldval, u32 newval) | ||
16 | { | ||
17 | u32 val; | ||
18 | |||
19 | if (unlikely(get_user(val, uaddr) != 0)) | ||
20 | return -EFAULT; | ||
21 | |||
22 | if (val == oldval && unlikely(put_user(newval, uaddr) != 0)) | ||
23 | return -EFAULT; | ||
24 | |||
25 | *uval = val; | ||
26 | |||
27 | return 0; | ||
28 | } | ||
29 | |||
30 | static inline int | ||
31 | futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr) | ||
32 | { | ||
33 | int op = (encoded_op >> 28) & 7; | ||
34 | int cmp = (encoded_op >> 24) & 15; | ||
35 | int oparg = (encoded_op << 8) >> 20; | ||
36 | int cmparg = (encoded_op << 20) >> 20; | ||
37 | int oldval, ret; | ||
38 | u32 tmp; | ||
39 | |||
40 | if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) | ||
41 | oparg = 1 << oparg; | ||
42 | |||
43 | pagefault_disable(); /* implies preempt_disable() */ | ||
44 | |||
45 | ret = -EFAULT; | ||
46 | if (unlikely(get_user(oldval, uaddr) != 0)) | ||
47 | goto out_pagefault_enable; | ||
48 | |||
49 | ret = 0; | ||
50 | tmp = oldval; | ||
51 | |||
52 | switch (op) { | ||
53 | case FUTEX_OP_SET: | ||
54 | tmp = oparg; | ||
55 | break; | ||
56 | case FUTEX_OP_ADD: | ||
57 | tmp += oparg; | ||
58 | break; | ||
59 | case FUTEX_OP_OR: | ||
60 | tmp |= oparg; | ||
61 | break; | ||
62 | case FUTEX_OP_ANDN: | ||
63 | tmp &= ~oparg; | ||
64 | break; | ||
65 | case FUTEX_OP_XOR: | ||
66 | tmp ^= oparg; | ||
67 | break; | ||
68 | default: | ||
69 | ret = -ENOSYS; | ||
70 | } | ||
71 | |||
72 | if (ret == 0 && unlikely(put_user(tmp, uaddr) != 0)) | ||
73 | ret = -EFAULT; | ||
74 | |||
75 | out_pagefault_enable: | ||
76 | pagefault_enable(); /* subsumes preempt_enable() */ | ||
77 | |||
78 | if (ret == 0) { | ||
79 | switch (cmp) { | ||
80 | case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break; | ||
81 | case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break; | ||
82 | case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break; | ||
83 | case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break; | ||
84 | case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break; | ||
85 | case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break; | ||
86 | default: ret = -ENOSYS; | ||
87 | } | ||
88 | } | ||
89 | return ret; | ||
90 | } | ||
91 | |||
92 | #endif /* CONFIG_MMU */ | ||
93 | #endif /* __KERNEL__ */ | ||
94 | #endif /* _ASM_M68K_FUTEX_H */ | ||
diff --git a/arch/m68k/include/asm/gpio.h b/arch/m68k/include/asm/gpio.h index 8cc83431805b..2f6eec1e34b4 100644 --- a/arch/m68k/include/asm/gpio.h +++ b/arch/m68k/include/asm/gpio.h | |||
@@ -86,6 +86,7 @@ static inline int gpio_cansleep(unsigned gpio) | |||
86 | return gpio < MCFGPIO_PIN_MAX ? 0 : __gpio_cansleep(gpio); | 86 | return gpio < MCFGPIO_PIN_MAX ? 0 : __gpio_cansleep(gpio); |
87 | } | 87 | } |
88 | 88 | ||
89 | #ifndef CONFIG_GPIOLIB | ||
89 | static inline int gpio_request_one(unsigned gpio, unsigned long flags, const char *label) | 90 | static inline int gpio_request_one(unsigned gpio, unsigned long flags, const char *label) |
90 | { | 91 | { |
91 | int err; | 92 | int err; |
@@ -105,5 +106,5 @@ static inline int gpio_request_one(unsigned gpio, unsigned long flags, const cha | |||
105 | 106 | ||
106 | return err; | 107 | return err; |
107 | } | 108 | } |
108 | 109 | #endif /* !CONFIG_GPIOLIB */ | |
109 | #endif | 110 | #endif |
diff --git a/arch/m68k/kernel/head.S b/arch/m68k/kernel/head.S index d197e7ff62c5..ac85f16534af 100644 --- a/arch/m68k/kernel/head.S +++ b/arch/m68k/kernel/head.S | |||
@@ -2752,11 +2752,9 @@ func_return get_new_page | |||
2752 | #ifdef CONFIG_MAC | 2752 | #ifdef CONFIG_MAC |
2753 | 2753 | ||
2754 | L(scc_initable_mac): | 2754 | L(scc_initable_mac): |
2755 | .byte 9,12 /* Reset */ | ||
2756 | .byte 4,0x44 /* x16, 1 stopbit, no parity */ | 2755 | .byte 4,0x44 /* x16, 1 stopbit, no parity */ |
2757 | .byte 3,0xc0 /* receiver: 8 bpc */ | 2756 | .byte 3,0xc0 /* receiver: 8 bpc */ |
2758 | .byte 5,0xe2 /* transmitter: 8 bpc, assert dtr/rts */ | 2757 | .byte 5,0xe2 /* transmitter: 8 bpc, assert dtr/rts */ |
2759 | .byte 9,0 /* no interrupts */ | ||
2760 | .byte 10,0 /* NRZ */ | 2758 | .byte 10,0 /* NRZ */ |
2761 | .byte 11,0x50 /* use baud rate generator */ | 2759 | .byte 11,0x50 /* use baud rate generator */ |
2762 | .byte 12,1,13,0 /* 38400 baud */ | 2760 | .byte 12,1,13,0 /* 38400 baud */ |
@@ -2899,6 +2897,7 @@ func_start serial_init,%d0/%d1/%a0/%a1 | |||
2899 | is_not_mac(L(serial_init_not_mac)) | 2897 | is_not_mac(L(serial_init_not_mac)) |
2900 | 2898 | ||
2901 | #ifdef SERIAL_DEBUG | 2899 | #ifdef SERIAL_DEBUG |
2900 | |||
2902 | /* You may define either or both of these. */ | 2901 | /* You may define either or both of these. */ |
2903 | #define MAC_USE_SCC_A /* Modem port */ | 2902 | #define MAC_USE_SCC_A /* Modem port */ |
2904 | #define MAC_USE_SCC_B /* Printer port */ | 2903 | #define MAC_USE_SCC_B /* Printer port */ |
@@ -2908,9 +2907,21 @@ func_start serial_init,%d0/%d1/%a0/%a1 | |||
2908 | #define mac_scc_cha_b_data_offset 0x4 | 2907 | #define mac_scc_cha_b_data_offset 0x4 |
2909 | #define mac_scc_cha_a_data_offset 0x6 | 2908 | #define mac_scc_cha_a_data_offset 0x6 |
2910 | 2909 | ||
2910 | #if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B) | ||
2911 | movel %pc@(L(mac_sccbase)),%a0 | ||
2912 | /* Reset SCC device */ | ||
2913 | moveb #9,%a0@(mac_scc_cha_a_ctrl_offset) | ||
2914 | moveb #0xc0,%a0@(mac_scc_cha_a_ctrl_offset) | ||
2915 | /* Wait for 5 PCLK cycles, which is about 68 CPU cycles */ | ||
2916 | /* 5 / 3.6864 MHz = approx. 1.36 us = 68 / 50 MHz */ | ||
2917 | movel #35,%d0 | ||
2918 | 5: | ||
2919 | subq #1,%d0 | ||
2920 | jne 5b | ||
2921 | #endif | ||
2922 | |||
2911 | #ifdef MAC_USE_SCC_A | 2923 | #ifdef MAC_USE_SCC_A |
2912 | /* Initialize channel A */ | 2924 | /* Initialize channel A */ |
2913 | movel %pc@(L(mac_sccbase)),%a0 | ||
2914 | lea %pc@(L(scc_initable_mac)),%a1 | 2925 | lea %pc@(L(scc_initable_mac)),%a1 |
2915 | 5: moveb %a1@+,%d0 | 2926 | 5: moveb %a1@+,%d0 |
2916 | jmi 6f | 2927 | jmi 6f |
@@ -2922,9 +2933,6 @@ func_start serial_init,%d0/%d1/%a0/%a1 | |||
2922 | 2933 | ||
2923 | #ifdef MAC_USE_SCC_B | 2934 | #ifdef MAC_USE_SCC_B |
2924 | /* Initialize channel B */ | 2935 | /* Initialize channel B */ |
2925 | #ifndef MAC_USE_SCC_A /* Load mac_sccbase only if needed */ | ||
2926 | movel %pc@(L(mac_sccbase)),%a0 | ||
2927 | #endif /* MAC_USE_SCC_A */ | ||
2928 | lea %pc@(L(scc_initable_mac)),%a1 | 2936 | lea %pc@(L(scc_initable_mac)),%a1 |
2929 | 7: moveb %a1@+,%d0 | 2937 | 7: moveb %a1@+,%d0 |
2930 | jmi 8f | 2938 | jmi 8f |
@@ -2933,6 +2941,7 @@ func_start serial_init,%d0/%d1/%a0/%a1 | |||
2933 | jra 7b | 2941 | jra 7b |
2934 | 8: | 2942 | 8: |
2935 | #endif /* MAC_USE_SCC_B */ | 2943 | #endif /* MAC_USE_SCC_B */ |
2944 | |||
2936 | #endif /* SERIAL_DEBUG */ | 2945 | #endif /* SERIAL_DEBUG */ |
2937 | 2946 | ||
2938 | jra L(serial_init_done) | 2947 | jra L(serial_init_done) |
@@ -3006,17 +3015,17 @@ func_start serial_putc,%d0/%d1/%a0/%a1 | |||
3006 | 3015 | ||
3007 | #ifdef SERIAL_DEBUG | 3016 | #ifdef SERIAL_DEBUG |
3008 | 3017 | ||
3009 | #ifdef MAC_USE_SCC_A | 3018 | #if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B) |
3010 | movel %pc@(L(mac_sccbase)),%a1 | 3019 | movel %pc@(L(mac_sccbase)),%a1 |
3020 | #endif | ||
3021 | |||
3022 | #ifdef MAC_USE_SCC_A | ||
3011 | 3: btst #2,%a1@(mac_scc_cha_a_ctrl_offset) | 3023 | 3: btst #2,%a1@(mac_scc_cha_a_ctrl_offset) |
3012 | jeq 3b | 3024 | jeq 3b |
3013 | moveb %d0,%a1@(mac_scc_cha_a_data_offset) | 3025 | moveb %d0,%a1@(mac_scc_cha_a_data_offset) |
3014 | #endif /* MAC_USE_SCC_A */ | 3026 | #endif /* MAC_USE_SCC_A */ |
3015 | 3027 | ||
3016 | #ifdef MAC_USE_SCC_B | 3028 | #ifdef MAC_USE_SCC_B |
3017 | #ifndef MAC_USE_SCC_A /* Load mac_sccbase only if needed */ | ||
3018 | movel %pc@(L(mac_sccbase)),%a1 | ||
3019 | #endif /* MAC_USE_SCC_A */ | ||
3020 | 4: btst #2,%a1@(mac_scc_cha_b_ctrl_offset) | 3029 | 4: btst #2,%a1@(mac_scc_cha_b_ctrl_offset) |
3021 | jeq 4b | 3030 | jeq 4b |
3022 | moveb %d0,%a1@(mac_scc_cha_b_data_offset) | 3031 | moveb %d0,%a1@(mac_scc_cha_b_data_offset) |
diff --git a/arch/microblaze/include/asm/cacheflush.h b/arch/microblaze/include/asm/cacheflush.h index 0f553bc009a0..ffea82a16d2c 100644 --- a/arch/microblaze/include/asm/cacheflush.h +++ b/arch/microblaze/include/asm/cacheflush.h | |||
@@ -102,21 +102,23 @@ do { \ | |||
102 | 102 | ||
103 | #define flush_cache_range(vma, start, len) do { } while (0) | 103 | #define flush_cache_range(vma, start, len) do { } while (0) |
104 | 104 | ||
105 | #define copy_to_user_page(vma, page, vaddr, dst, src, len) \ | 105 | static inline void copy_to_user_page(struct vm_area_struct *vma, |
106 | do { \ | 106 | struct page *page, unsigned long vaddr, |
107 | u32 addr = virt_to_phys(dst); \ | 107 | void *dst, void *src, int len) |
108 | memcpy((dst), (src), (len)); \ | 108 | { |
109 | if (vma->vm_flags & VM_EXEC) { \ | 109 | u32 addr = virt_to_phys(dst); |
110 | invalidate_icache_range((unsigned) (addr), \ | 110 | memcpy(dst, src, len); |
111 | (unsigned) (addr) + PAGE_SIZE); \ | 111 | if (vma->vm_flags & VM_EXEC) { |
112 | flush_dcache_range((unsigned) (addr), \ | 112 | invalidate_icache_range(addr, addr + PAGE_SIZE); |
113 | (unsigned) (addr) + PAGE_SIZE); \ | 113 | flush_dcache_range(addr, addr + PAGE_SIZE); |
114 | } \ | 114 | } |
115 | } while (0) | 115 | } |
116 | 116 | ||
117 | #define copy_from_user_page(vma, page, vaddr, dst, src, len) \ | 117 | static inline void copy_from_user_page(struct vm_area_struct *vma, |
118 | do { \ | 118 | struct page *page, unsigned long vaddr, |
119 | memcpy((dst), (src), (len)); \ | 119 | void *dst, void *src, int len) |
120 | } while (0) | 120 | { |
121 | memcpy(dst, src, len); | ||
122 | } | ||
121 | 123 | ||
122 | #endif /* _ASM_MICROBLAZE_CACHEFLUSH_H */ | 124 | #endif /* _ASM_MICROBLAZE_CACHEFLUSH_H */ |
diff --git a/arch/microblaze/include/asm/futex.h b/arch/microblaze/include/asm/futex.h index ff8cde159d9a..01848f056f43 100644 --- a/arch/microblaze/include/asm/futex.h +++ b/arch/microblaze/include/asm/futex.h | |||
@@ -105,7 +105,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, | |||
105 | 105 | ||
106 | __asm__ __volatile__ ("1: lwx %1, %3, r0; \ | 106 | __asm__ __volatile__ ("1: lwx %1, %3, r0; \ |
107 | cmp %2, %1, %4; \ | 107 | cmp %2, %1, %4; \ |
108 | beqi %2, 3f; \ | 108 | bnei %2, 3f; \ |
109 | 2: swx %5, %3, r0; \ | 109 | 2: swx %5, %3, r0; \ |
110 | addic %2, r0, 0; \ | 110 | addic %2, r0, 0; \ |
111 | bnei %2, 1b; \ | 111 | bnei %2, 1b; \ |
diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h index 8cb8a8566ede..2565cb94f32f 100644 --- a/arch/microblaze/include/asm/io.h +++ b/arch/microblaze/include/asm/io.h | |||
@@ -123,11 +123,11 @@ static inline void writel(unsigned int v, volatile void __iomem *addr) | |||
123 | * inb_p/inw_p/... | 123 | * inb_p/inw_p/... |
124 | * The macros don't do byte-swapping. | 124 | * The macros don't do byte-swapping. |
125 | */ | 125 | */ |
126 | #define inb(port) readb((u8 *)((port))) | 126 | #define inb(port) readb((u8 *)((unsigned long)(port))) |
127 | #define outb(val, port) writeb((val), (u8 *)((unsigned long)(port))) | 127 | #define outb(val, port) writeb((val), (u8 *)((unsigned long)(port))) |
128 | #define inw(port) readw((u16 *)((port))) | 128 | #define inw(port) readw((u16 *)((unsigned long)(port))) |
129 | #define outw(val, port) writew((val), (u16 *)((unsigned long)(port))) | 129 | #define outw(val, port) writew((val), (u16 *)((unsigned long)(port))) |
130 | #define inl(port) readl((u32 *)((port))) | 130 | #define inl(port) readl((u32 *)((unsigned long)(port))) |
131 | #define outl(val, port) writel((val), (u32 *)((unsigned long)(port))) | 131 | #define outl(val, port) writel((val), (u32 *)((unsigned long)(port))) |
132 | 132 | ||
133 | #define inb_p(port) inb((port)) | 133 | #define inb_p(port) inb((port)) |
diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h index efe59d881789..04e49553bdf9 100644 --- a/arch/microblaze/include/asm/uaccess.h +++ b/arch/microblaze/include/asm/uaccess.h | |||
@@ -99,13 +99,13 @@ static inline int access_ok(int type, const void __user *addr, | |||
99 | if ((get_fs().seg < ((unsigned long)addr)) || | 99 | if ((get_fs().seg < ((unsigned long)addr)) || |
100 | (get_fs().seg < ((unsigned long)addr + size - 1))) { | 100 | (get_fs().seg < ((unsigned long)addr + size - 1))) { |
101 | pr_debug("ACCESS fail: %s at 0x%08x (size 0x%x), seg 0x%08x\n", | 101 | pr_debug("ACCESS fail: %s at 0x%08x (size 0x%x), seg 0x%08x\n", |
102 | type ? "WRITE" : "READ ", (u32)addr, (u32)size, | 102 | type ? "WRITE" : "READ ", (__force u32)addr, (u32)size, |
103 | (u32)get_fs().seg); | 103 | (u32)get_fs().seg); |
104 | return 0; | 104 | return 0; |
105 | } | 105 | } |
106 | ok: | 106 | ok: |
107 | pr_debug("ACCESS OK: %s at 0x%08x (size 0x%x), seg 0x%08x\n", | 107 | pr_debug("ACCESS OK: %s at 0x%08x (size 0x%x), seg 0x%08x\n", |
108 | type ? "WRITE" : "READ ", (u32)addr, (u32)size, | 108 | type ? "WRITE" : "READ ", (__force u32)addr, (u32)size, |
109 | (u32)get_fs().seg); | 109 | (u32)get_fs().seg); |
110 | return 1; | 110 | return 1; |
111 | } | 111 | } |
diff --git a/arch/microblaze/kernel/cpu/cache.c b/arch/microblaze/kernel/cpu/cache.c index 4254514b4c8c..a6e44410672d 100644 --- a/arch/microblaze/kernel/cpu/cache.c +++ b/arch/microblaze/kernel/cpu/cache.c | |||
@@ -140,7 +140,7 @@ do { \ | |||
140 | /* It is used only first parameter for OP - for wic, wdc */ | 140 | /* It is used only first parameter for OP - for wic, wdc */ |
141 | #define CACHE_RANGE_LOOP_1(start, end, line_length, op) \ | 141 | #define CACHE_RANGE_LOOP_1(start, end, line_length, op) \ |
142 | do { \ | 142 | do { \ |
143 | int volatile temp; \ | 143 | int volatile temp = 0; \ |
144 | int align = ~(line_length - 1); \ | 144 | int align = ~(line_length - 1); \ |
145 | end = ((end & align) == end) ? end - line_length : end & align; \ | 145 | end = ((end & align) == end) ? end - line_length : end & align; \ |
146 | WARN_ON(end - start < 0); \ | 146 | WARN_ON(end - start < 0); \ |
diff --git a/arch/mips/alchemy/board-gpr.c b/arch/mips/alchemy/board-gpr.c index cb0f6afb7389..9edc35ff8cf1 100644 --- a/arch/mips/alchemy/board-gpr.c +++ b/arch/mips/alchemy/board-gpr.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/i2c.h> | 31 | #include <linux/i2c.h> |
32 | #include <linux/i2c-gpio.h> | 32 | #include <linux/i2c-gpio.h> |
33 | #include <asm/bootinfo.h> | 33 | #include <asm/bootinfo.h> |
34 | #include <asm/idle.h> | ||
34 | #include <asm/reboot.h> | 35 | #include <asm/reboot.h> |
35 | #include <asm/mach-au1x00/au1000.h> | 36 | #include <asm/mach-au1x00/au1000.h> |
36 | #include <prom.h> | 37 | #include <prom.h> |
diff --git a/arch/mips/alchemy/common/time.c b/arch/mips/alchemy/common/time.c index 38afb11ba2c4..93fa586d52e2 100644 --- a/arch/mips/alchemy/common/time.c +++ b/arch/mips/alchemy/common/time.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/interrupt.h> | 36 | #include <linux/interrupt.h> |
37 | #include <linux/spinlock.h> | 37 | #include <linux/spinlock.h> |
38 | 38 | ||
39 | #include <asm/idle.h> | ||
39 | #include <asm/processor.h> | 40 | #include <asm/processor.h> |
40 | #include <asm/time.h> | 41 | #include <asm/time.h> |
41 | #include <asm/mach-au1x00/au1000.h> | 42 | #include <asm/mach-au1x00/au1000.h> |
diff --git a/arch/mips/ath79/setup.c b/arch/mips/ath79/setup.c index a0233a2c1988..8be4e856b8b8 100644 --- a/arch/mips/ath79/setup.c +++ b/arch/mips/ath79/setup.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
20 | 20 | ||
21 | #include <asm/bootinfo.h> | 21 | #include <asm/bootinfo.h> |
22 | #include <asm/idle.h> | ||
22 | #include <asm/time.h> /* for mips_hpt_frequency */ | 23 | #include <asm/time.h> /* for mips_hpt_frequency */ |
23 | #include <asm/reboot.h> /* for _machine_{restart,halt} */ | 24 | #include <asm/reboot.h> /* for _machine_{restart,halt} */ |
24 | #include <asm/mips_machine.h> | 25 | #include <asm/mips_machine.h> |
diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c index b0baa299f899..01b1b3f94feb 100644 --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c | |||
@@ -428,13 +428,16 @@ static void octeon_restart(char *command) | |||
428 | */ | 428 | */ |
429 | static void octeon_kill_core(void *arg) | 429 | static void octeon_kill_core(void *arg) |
430 | { | 430 | { |
431 | mb(); | 431 | if (octeon_is_simulation()) |
432 | if (octeon_is_simulation()) { | ||
433 | /* The simulator needs the watchdog to stop for dead cores */ | ||
434 | cvmx_write_csr(CVMX_CIU_WDOGX(cvmx_get_core_num()), 0); | ||
435 | /* A break instruction causes the simulator stop a core */ | 432 | /* A break instruction causes the simulator stop a core */ |
436 | asm volatile ("sync\nbreak"); | 433 | asm volatile ("break" ::: "memory"); |
437 | } | 434 | |
435 | local_irq_disable(); | ||
436 | /* Disable watchdog on this core. */ | ||
437 | cvmx_write_csr(CVMX_CIU_WDOGX(cvmx_get_core_num()), 0); | ||
438 | /* Spin in a low power mode. */ | ||
439 | while (true) | ||
440 | asm volatile ("wait" ::: "memory"); | ||
438 | } | 441 | } |
439 | 442 | ||
440 | 443 | ||
diff --git a/arch/mips/cobalt/reset.c b/arch/mips/cobalt/reset.c index 516b4428df4e..4eedd481dd00 100644 --- a/arch/mips/cobalt/reset.c +++ b/arch/mips/cobalt/reset.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/io.h> | 12 | #include <linux/io.h> |
13 | #include <linux/leds.h> | 13 | #include <linux/leds.h> |
14 | 14 | ||
15 | #include <asm/idle.h> | ||
15 | #include <asm/processor.h> | 16 | #include <asm/processor.h> |
16 | 17 | ||
17 | #include <cobalt.h> | 18 | #include <cobalt.h> |
diff --git a/arch/mips/configs/db1000_defconfig b/arch/mips/configs/db1000_defconfig index face9d26e6d5..bac26b971c5e 100644 --- a/arch/mips/configs/db1000_defconfig +++ b/arch/mips/configs/db1000_defconfig | |||
@@ -228,7 +228,6 @@ CONFIG_HIDRAW=y | |||
228 | CONFIG_USB_HID=y | 228 | CONFIG_USB_HID=y |
229 | CONFIG_USB_SUPPORT=y | 229 | CONFIG_USB_SUPPORT=y |
230 | CONFIG_USB=y | 230 | CONFIG_USB=y |
231 | CONFIG_USB_SUSPEND=y | ||
232 | CONFIG_USB_EHCI_HCD=y | 231 | CONFIG_USB_EHCI_HCD=y |
233 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 232 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
234 | CONFIG_USB_EHCI_TT_NEWSCHED=y | 233 | CONFIG_USB_EHCI_TT_NEWSCHED=y |
diff --git a/arch/mips/configs/db1235_defconfig b/arch/mips/configs/db1235_defconfig index 14752dde7540..e2b4ad55462f 100644 --- a/arch/mips/configs/db1235_defconfig +++ b/arch/mips/configs/db1235_defconfig | |||
@@ -344,7 +344,6 @@ CONFIG_UHID=y | |||
344 | CONFIG_USB_HIDDEV=y | 344 | CONFIG_USB_HIDDEV=y |
345 | CONFIG_USB=y | 345 | CONFIG_USB=y |
346 | CONFIG_USB_DYNAMIC_MINORS=y | 346 | CONFIG_USB_DYNAMIC_MINORS=y |
347 | CONFIG_USB_SUSPEND=y | ||
348 | CONFIG_USB_EHCI_HCD=y | 347 | CONFIG_USB_EHCI_HCD=y |
349 | CONFIG_USB_EHCI_HCD_PLATFORM=y | 348 | CONFIG_USB_EHCI_HCD_PLATFORM=y |
350 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 349 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
diff --git a/arch/mips/configs/lemote2f_defconfig b/arch/mips/configs/lemote2f_defconfig index b6acd2f256b6..343bebc4b63b 100644 --- a/arch/mips/configs/lemote2f_defconfig +++ b/arch/mips/configs/lemote2f_defconfig | |||
@@ -300,7 +300,6 @@ CONFIG_USB=y | |||
300 | CONFIG_USB_DEVICEFS=y | 300 | CONFIG_USB_DEVICEFS=y |
301 | # CONFIG_USB_DEVICE_CLASS is not set | 301 | # CONFIG_USB_DEVICE_CLASS is not set |
302 | CONFIG_USB_DYNAMIC_MINORS=y | 302 | CONFIG_USB_DYNAMIC_MINORS=y |
303 | CONFIG_USB_SUSPEND=y | ||
304 | CONFIG_USB_OTG_WHITELIST=y | 303 | CONFIG_USB_OTG_WHITELIST=y |
305 | CONFIG_USB_MON=y | 304 | CONFIG_USB_MON=y |
306 | CONFIG_USB_EHCI_HCD=y | 305 | CONFIG_USB_EHCI_HCD=y |
diff --git a/arch/mips/include/asm/clock.h b/arch/mips/include/asm/clock.h index c9456e7a7283..778e32d817bc 100644 --- a/arch/mips/include/asm/clock.h +++ b/arch/mips/include/asm/clock.h | |||
@@ -6,8 +6,6 @@ | |||
6 | #include <linux/seq_file.h> | 6 | #include <linux/seq_file.h> |
7 | #include <linux/clk.h> | 7 | #include <linux/clk.h> |
8 | 8 | ||
9 | extern void (*cpu_wait) (void); | ||
10 | |||
11 | struct clk; | 9 | struct clk; |
12 | 10 | ||
13 | struct clk_ops { | 11 | struct clk_ops { |
diff --git a/arch/mips/include/asm/idle.h b/arch/mips/include/asm/idle.h new file mode 100644 index 000000000000..d192158886b1 --- /dev/null +++ b/arch/mips/include/asm/idle.h | |||
@@ -0,0 +1,23 @@ | |||
1 | #ifndef __ASM_IDLE_H | ||
2 | #define __ASM_IDLE_H | ||
3 | |||
4 | #include <linux/linkage.h> | ||
5 | |||
6 | extern void (*cpu_wait)(void); | ||
7 | extern void r4k_wait(void); | ||
8 | extern asmlinkage void __r4k_wait(void); | ||
9 | extern void r4k_wait_irqoff(void); | ||
10 | extern void __pastwait(void); | ||
11 | |||
12 | static inline int using_rollback_handler(void) | ||
13 | { | ||
14 | return cpu_wait == r4k_wait; | ||
15 | } | ||
16 | |||
17 | static inline int address_is_in_r4k_wait_irqoff(unsigned long addr) | ||
18 | { | ||
19 | return addr >= (unsigned long)r4k_wait_irqoff && | ||
20 | addr < (unsigned long)__pastwait; | ||
21 | } | ||
22 | |||
23 | #endif /* __ASM_IDLE_H */ | ||
diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h index 1be13727323f..b7e59853fd33 100644 --- a/arch/mips/include/asm/io.h +++ b/arch/mips/include/asm/io.h | |||
@@ -118,7 +118,7 @@ static inline void set_io_port_base(unsigned long base) | |||
118 | */ | 118 | */ |
119 | static inline unsigned long virt_to_phys(volatile const void *address) | 119 | static inline unsigned long virt_to_phys(volatile const void *address) |
120 | { | 120 | { |
121 | return (unsigned long)address - PAGE_OFFSET + PHYS_OFFSET; | 121 | return __pa(address); |
122 | } | 122 | } |
123 | 123 | ||
124 | /* | 124 | /* |
diff --git a/arch/mips/include/asm/kvm.h b/arch/mips/include/asm/kvm.h deleted file mode 100644 index 85789eacbf18..000000000000 --- a/arch/mips/include/asm/kvm.h +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. | ||
7 | * Authors: Sanjay Lal <sanjayl@kymasys.com> | ||
8 | */ | ||
9 | |||
10 | #ifndef __LINUX_KVM_MIPS_H | ||
11 | #define __LINUX_KVM_MIPS_H | ||
12 | |||
13 | #include <linux/types.h> | ||
14 | |||
15 | #define __KVM_MIPS | ||
16 | |||
17 | #define N_MIPS_COPROC_REGS 32 | ||
18 | #define N_MIPS_COPROC_SEL 8 | ||
19 | |||
20 | /* for KVM_GET_REGS and KVM_SET_REGS */ | ||
21 | struct kvm_regs { | ||
22 | __u32 gprs[32]; | ||
23 | __u32 hi; | ||
24 | __u32 lo; | ||
25 | __u32 pc; | ||
26 | |||
27 | __u32 cp0reg[N_MIPS_COPROC_REGS][N_MIPS_COPROC_SEL]; | ||
28 | }; | ||
29 | |||
30 | /* for KVM_GET_SREGS and KVM_SET_SREGS */ | ||
31 | struct kvm_sregs { | ||
32 | }; | ||
33 | |||
34 | /* for KVM_GET_FPU and KVM_SET_FPU */ | ||
35 | struct kvm_fpu { | ||
36 | }; | ||
37 | |||
38 | struct kvm_debug_exit_arch { | ||
39 | }; | ||
40 | |||
41 | /* for KVM_SET_GUEST_DEBUG */ | ||
42 | struct kvm_guest_debug_arch { | ||
43 | }; | ||
44 | |||
45 | struct kvm_mips_interrupt { | ||
46 | /* in */ | ||
47 | __u32 cpu; | ||
48 | __u32 irq; | ||
49 | }; | ||
50 | |||
51 | /* definition of registers in kvm_run */ | ||
52 | struct kvm_sync_regs { | ||
53 | }; | ||
54 | |||
55 | #endif /* __LINUX_KVM_MIPS_H */ | ||
diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h index e68781e18387..4d6fa0bf1305 100644 --- a/arch/mips/include/asm/kvm_host.h +++ b/arch/mips/include/asm/kvm_host.h | |||
@@ -336,7 +336,7 @@ enum emulation_result { | |||
336 | #define VPN2_MASK 0xffffe000 | 336 | #define VPN2_MASK 0xffffe000 |
337 | #define TLB_IS_GLOBAL(x) (((x).tlb_lo0 & MIPS3_PG_G) && ((x).tlb_lo1 & MIPS3_PG_G)) | 337 | #define TLB_IS_GLOBAL(x) (((x).tlb_lo0 & MIPS3_PG_G) && ((x).tlb_lo1 & MIPS3_PG_G)) |
338 | #define TLB_VPN2(x) ((x).tlb_hi & VPN2_MASK) | 338 | #define TLB_VPN2(x) ((x).tlb_hi & VPN2_MASK) |
339 | #define TLB_ASID(x) (ASID_MASK((x).tlb_hi)) | 339 | #define TLB_ASID(x) ((x).tlb_hi & ASID_MASK) |
340 | #define TLB_IS_VALID(x, va) (((va) & (1 << PAGE_SHIFT)) ? ((x).tlb_lo1 & MIPS3_PG_V) : ((x).tlb_lo0 & MIPS3_PG_V)) | 340 | #define TLB_IS_VALID(x, va) (((va) & (1 << PAGE_SHIFT)) ? ((x).tlb_lo1 & MIPS3_PG_V) : ((x).tlb_lo0 & MIPS3_PG_V)) |
341 | 341 | ||
342 | struct kvm_mips_tlb { | 342 | struct kvm_mips_tlb { |
@@ -496,10 +496,6 @@ struct kvm_mips_callbacks { | |||
496 | uint32_t cause); | 496 | uint32_t cause); |
497 | int (*irq_clear) (struct kvm_vcpu *vcpu, unsigned int priority, | 497 | int (*irq_clear) (struct kvm_vcpu *vcpu, unsigned int priority, |
498 | uint32_t cause); | 498 | uint32_t cause); |
499 | int (*vcpu_ioctl_get_regs) (struct kvm_vcpu *vcpu, | ||
500 | struct kvm_regs *regs); | ||
501 | int (*vcpu_ioctl_set_regs) (struct kvm_vcpu *vcpu, | ||
502 | struct kvm_regs *regs); | ||
503 | }; | 499 | }; |
504 | extern struct kvm_mips_callbacks *kvm_mips_callbacks; | 500 | extern struct kvm_mips_callbacks *kvm_mips_callbacks; |
505 | int kvm_mips_emulation_init(struct kvm_mips_callbacks **install_callbacks); | 501 | int kvm_mips_emulation_init(struct kvm_mips_callbacks **install_callbacks); |
diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h index 1554721e4808..820116067c10 100644 --- a/arch/mips/include/asm/mmu_context.h +++ b/arch/mips/include/asm/mmu_context.h | |||
@@ -67,68 +67,45 @@ extern unsigned long pgd_current[]; | |||
67 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) | 67 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) |
68 | #endif | 68 | #endif |
69 | #endif /* CONFIG_MIPS_PGD_C0_CONTEXT*/ | 69 | #endif /* CONFIG_MIPS_PGD_C0_CONTEXT*/ |
70 | #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) | ||
70 | 71 | ||
71 | #define ASID_INC(asid) \ | 72 | #define ASID_INC 0x40 |
72 | ({ \ | 73 | #define ASID_MASK 0xfc0 |
73 | unsigned long __asid = asid; \ | 74 | |
74 | __asm__("1:\taddiu\t%0,1\t\t\t\t# patched\n\t" \ | 75 | #elif defined(CONFIG_CPU_R8000) |
75 | ".section\t__asid_inc,\"a\"\n\t" \ | 76 | |
76 | ".word\t1b\n\t" \ | 77 | #define ASID_INC 0x10 |
77 | ".previous" \ | 78 | #define ASID_MASK 0xff0 |
78 | :"=r" (__asid) \ | 79 | |
79 | :"0" (__asid)); \ | 80 | #elif defined(CONFIG_MIPS_MT_SMTC) |
80 | __asid; \ | 81 | |
81 | }) | 82 | #define ASID_INC 0x1 |
82 | #define ASID_MASK(asid) \ | 83 | extern unsigned long smtc_asid_mask; |
83 | ({ \ | 84 | #define ASID_MASK (smtc_asid_mask) |
84 | unsigned long __asid = asid; \ | 85 | #define HW_ASID_MASK 0xff |
85 | __asm__("1:\tandi\t%0,%1,0xfc0\t\t\t# patched\n\t" \ | 86 | /* End SMTC/34K debug hack */ |
86 | ".section\t__asid_mask,\"a\"\n\t" \ | 87 | #else /* FIXME: not correct for R6000 */ |
87 | ".word\t1b\n\t" \ | 88 | |
88 | ".previous" \ | 89 | #define ASID_INC 0x1 |
89 | :"=r" (__asid) \ | 90 | #define ASID_MASK 0xff |
90 | :"r" (__asid)); \ | ||
91 | __asid; \ | ||
92 | }) | ||
93 | #define ASID_VERSION_MASK \ | ||
94 | ({ \ | ||
95 | unsigned long __asid; \ | ||
96 | __asm__("1:\taddiu\t%0,$0,0xff00\t\t\t\t# patched\n\t" \ | ||
97 | ".section\t__asid_version_mask,\"a\"\n\t" \ | ||
98 | ".word\t1b\n\t" \ | ||
99 | ".previous" \ | ||
100 | :"=r" (__asid)); \ | ||
101 | __asid; \ | ||
102 | }) | ||
103 | #define ASID_FIRST_VERSION \ | ||
104 | ({ \ | ||
105 | unsigned long __asid = asid; \ | ||
106 | __asm__("1:\tli\t%0,0x100\t\t\t\t# patched\n\t" \ | ||
107 | ".section\t__asid_first_version,\"a\"\n\t" \ | ||
108 | ".word\t1b\n\t" \ | ||
109 | ".previous" \ | ||
110 | :"=r" (__asid)); \ | ||
111 | __asid; \ | ||
112 | }) | ||
113 | |||
114 | #define ASID_FIRST_VERSION_R3000 0x1000 | ||
115 | #define ASID_FIRST_VERSION_R4000 0x100 | ||
116 | #define ASID_FIRST_VERSION_R8000 0x1000 | ||
117 | #define ASID_FIRST_VERSION_RM9000 0x1000 | ||
118 | 91 | ||
119 | #ifdef CONFIG_MIPS_MT_SMTC | ||
120 | #define SMTC_HW_ASID_MASK 0xff | ||
121 | extern unsigned int smtc_asid_mask; | ||
122 | #endif | 92 | #endif |
123 | 93 | ||
124 | #define cpu_context(cpu, mm) ((mm)->context.asid[cpu]) | 94 | #define cpu_context(cpu, mm) ((mm)->context.asid[cpu]) |
125 | #define cpu_asid(cpu, mm) ASID_MASK(cpu_context((cpu), (mm))) | 95 | #define cpu_asid(cpu, mm) (cpu_context((cpu), (mm)) & ASID_MASK) |
126 | #define asid_cache(cpu) (cpu_data[cpu].asid_cache) | 96 | #define asid_cache(cpu) (cpu_data[cpu].asid_cache) |
127 | 97 | ||
128 | static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) | 98 | static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) |
129 | { | 99 | { |
130 | } | 100 | } |
131 | 101 | ||
102 | /* | ||
103 | * All unused by hardware upper bits will be considered | ||
104 | * as a software asid extension. | ||
105 | */ | ||
106 | #define ASID_VERSION_MASK ((unsigned long)~(ASID_MASK|(ASID_MASK-1))) | ||
107 | #define ASID_FIRST_VERSION ((unsigned long)(~ASID_VERSION_MASK) + 1) | ||
108 | |||
132 | #ifndef CONFIG_MIPS_MT_SMTC | 109 | #ifndef CONFIG_MIPS_MT_SMTC |
133 | /* Normal, classic MIPS get_new_mmu_context */ | 110 | /* Normal, classic MIPS get_new_mmu_context */ |
134 | static inline void | 111 | static inline void |
@@ -137,7 +114,7 @@ get_new_mmu_context(struct mm_struct *mm, unsigned long cpu) | |||
137 | extern void kvm_local_flush_tlb_all(void); | 114 | extern void kvm_local_flush_tlb_all(void); |
138 | unsigned long asid = asid_cache(cpu); | 115 | unsigned long asid = asid_cache(cpu); |
139 | 116 | ||
140 | if (!ASID_MASK((asid = ASID_INC(asid)))) { | 117 | if (! ((asid += ASID_INC) & ASID_MASK) ) { |
141 | if (cpu_has_vtag_icache) | 118 | if (cpu_has_vtag_icache) |
142 | flush_icache_all(); | 119 | flush_icache_all(); |
143 | #ifdef CONFIG_VIRTUALIZATION | 120 | #ifdef CONFIG_VIRTUALIZATION |
@@ -200,7 +177,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, | |||
200 | * free up the ASID value for use and flush any old | 177 | * free up the ASID value for use and flush any old |
201 | * instances of it from the TLB. | 178 | * instances of it from the TLB. |
202 | */ | 179 | */ |
203 | oldasid = ASID_MASK(read_c0_entryhi()); | 180 | oldasid = (read_c0_entryhi() & ASID_MASK); |
204 | if(smtc_live_asid[mytlb][oldasid]) { | 181 | if(smtc_live_asid[mytlb][oldasid]) { |
205 | smtc_live_asid[mytlb][oldasid] &= ~(0x1 << cpu); | 182 | smtc_live_asid[mytlb][oldasid] &= ~(0x1 << cpu); |
206 | if(smtc_live_asid[mytlb][oldasid] == 0) | 183 | if(smtc_live_asid[mytlb][oldasid] == 0) |
@@ -211,7 +188,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, | |||
211 | * having ASID_MASK smaller than the hardware maximum, | 188 | * having ASID_MASK smaller than the hardware maximum, |
212 | * make sure no "soft" bits become "hard"... | 189 | * make sure no "soft" bits become "hard"... |
213 | */ | 190 | */ |
214 | write_c0_entryhi((read_c0_entryhi() & ~SMTC_HW_ASID_MASK) | | 191 | write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) | |
215 | cpu_asid(cpu, next)); | 192 | cpu_asid(cpu, next)); |
216 | ehb(); /* Make sure it propagates to TCStatus */ | 193 | ehb(); /* Make sure it propagates to TCStatus */ |
217 | evpe(mtflags); | 194 | evpe(mtflags); |
@@ -264,15 +241,15 @@ activate_mm(struct mm_struct *prev, struct mm_struct *next) | |||
264 | #ifdef CONFIG_MIPS_MT_SMTC | 241 | #ifdef CONFIG_MIPS_MT_SMTC |
265 | /* See comments for similar code above */ | 242 | /* See comments for similar code above */ |
266 | mtflags = dvpe(); | 243 | mtflags = dvpe(); |
267 | oldasid = ASID_MASK(read_c0_entryhi()); | 244 | oldasid = read_c0_entryhi() & ASID_MASK; |
268 | if(smtc_live_asid[mytlb][oldasid]) { | 245 | if(smtc_live_asid[mytlb][oldasid]) { |
269 | smtc_live_asid[mytlb][oldasid] &= ~(0x1 << cpu); | 246 | smtc_live_asid[mytlb][oldasid] &= ~(0x1 << cpu); |
270 | if(smtc_live_asid[mytlb][oldasid] == 0) | 247 | if(smtc_live_asid[mytlb][oldasid] == 0) |
271 | smtc_flush_tlb_asid(oldasid); | 248 | smtc_flush_tlb_asid(oldasid); |
272 | } | 249 | } |
273 | /* See comments for similar code above */ | 250 | /* See comments for similar code above */ |
274 | write_c0_entryhi((read_c0_entryhi() & ~SMTC_HW_ASID_MASK) | | 251 | write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) | |
275 | cpu_asid(cpu, next)); | 252 | cpu_asid(cpu, next)); |
276 | ehb(); /* Make sure it propagates to TCStatus */ | 253 | ehb(); /* Make sure it propagates to TCStatus */ |
277 | evpe(mtflags); | 254 | evpe(mtflags); |
278 | #else | 255 | #else |
@@ -309,14 +286,14 @@ drop_mmu_context(struct mm_struct *mm, unsigned cpu) | |||
309 | #ifdef CONFIG_MIPS_MT_SMTC | 286 | #ifdef CONFIG_MIPS_MT_SMTC |
310 | /* See comments for similar code above */ | 287 | /* See comments for similar code above */ |
311 | prevvpe = dvpe(); | 288 | prevvpe = dvpe(); |
312 | oldasid = ASID_MASK(read_c0_entryhi()); | 289 | oldasid = (read_c0_entryhi() & ASID_MASK); |
313 | if (smtc_live_asid[mytlb][oldasid]) { | 290 | if (smtc_live_asid[mytlb][oldasid]) { |
314 | smtc_live_asid[mytlb][oldasid] &= ~(0x1 << cpu); | 291 | smtc_live_asid[mytlb][oldasid] &= ~(0x1 << cpu); |
315 | if(smtc_live_asid[mytlb][oldasid] == 0) | 292 | if(smtc_live_asid[mytlb][oldasid] == 0) |
316 | smtc_flush_tlb_asid(oldasid); | 293 | smtc_flush_tlb_asid(oldasid); |
317 | } | 294 | } |
318 | /* See comments for similar code above */ | 295 | /* See comments for similar code above */ |
319 | write_c0_entryhi((read_c0_entryhi() & ~SMTC_HW_ASID_MASK) | 296 | write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) |
320 | | cpu_asid(cpu, mm)); | 297 | | cpu_asid(cpu, mm)); |
321 | ehb(); /* Make sure it propagates to TCStatus */ | 298 | ehb(); /* Make sure it propagates to TCStatus */ |
322 | evpe(prevvpe); | 299 | evpe(prevvpe); |
diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h index eab99e536b5c..f59552fae917 100644 --- a/arch/mips/include/asm/page.h +++ b/arch/mips/include/asm/page.h | |||
@@ -46,7 +46,6 @@ | |||
46 | #endif /* CONFIG_MIPS_HUGE_TLB_SUPPORT */ | 46 | #endif /* CONFIG_MIPS_HUGE_TLB_SUPPORT */ |
47 | 47 | ||
48 | #include <linux/pfn.h> | 48 | #include <linux/pfn.h> |
49 | #include <asm/io.h> | ||
50 | 49 | ||
51 | extern void build_clear_page(void); | 50 | extern void build_clear_page(void); |
52 | extern void build_copy_page(void); | 51 | extern void build_copy_page(void); |
@@ -151,6 +150,7 @@ typedef struct { unsigned long pgprot; } pgprot_t; | |||
151 | ((unsigned long)(x) - PAGE_OFFSET + PHYS_OFFSET) | 150 | ((unsigned long)(x) - PAGE_OFFSET + PHYS_OFFSET) |
152 | #endif | 151 | #endif |
153 | #define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET - PHYS_OFFSET)) | 152 | #define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET - PHYS_OFFSET)) |
153 | #include <asm/io.h> | ||
154 | 154 | ||
155 | /* | 155 | /* |
156 | * RELOC_HIDE was originally added by 6007b903dfe5f1d13e0c711ac2894bdd4a61b1ad | 156 | * RELOC_HIDE was originally added by 6007b903dfe5f1d13e0c711ac2894bdd4a61b1ad |
@@ -171,14 +171,13 @@ typedef struct { unsigned long pgprot; } pgprot_t; | |||
171 | 171 | ||
172 | #ifdef CONFIG_FLATMEM | 172 | #ifdef CONFIG_FLATMEM |
173 | 173 | ||
174 | #define pfn_valid(pfn) \ | 174 | static inline int pfn_valid(unsigned long pfn) |
175 | ({ \ | 175 | { |
176 | unsigned long __pfn = (pfn); \ | 176 | /* avoid <linux/mm.h> include hell */ |
177 | /* avoid <linux/bootmem.h> include hell */ \ | 177 | extern unsigned long max_mapnr; |
178 | extern unsigned long min_low_pfn; \ | 178 | |
179 | \ | 179 | return pfn >= ARCH_PFN_OFFSET && pfn < max_mapnr; |
180 | __pfn >= min_low_pfn && __pfn < max_mapnr; \ | 180 | } |
181 | }) | ||
182 | 181 | ||
183 | #elif defined(CONFIG_SPARSEMEM) | 182 | #elif defined(CONFIG_SPARSEMEM) |
184 | 183 | ||
diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h index 71686c897dea..1470b7b68b0e 100644 --- a/arch/mips/include/asm/processor.h +++ b/arch/mips/include/asm/processor.h | |||
@@ -28,7 +28,6 @@ | |||
28 | /* | 28 | /* |
29 | * System setup and hardware flags.. | 29 | * System setup and hardware flags.. |
30 | */ | 30 | */ |
31 | extern void (*cpu_wait)(void); | ||
32 | 31 | ||
33 | extern unsigned int vced_count, vcei_count; | 32 | extern unsigned int vced_count, vcei_count; |
34 | 33 | ||
diff --git a/arch/mips/include/asm/ptrace.h b/arch/mips/include/asm/ptrace.h index a3186f2bb8a0..5e6cd0947393 100644 --- a/arch/mips/include/asm/ptrace.h +++ b/arch/mips/include/asm/ptrace.h | |||
@@ -16,6 +16,38 @@ | |||
16 | #include <asm/isadep.h> | 16 | #include <asm/isadep.h> |
17 | #include <uapi/asm/ptrace.h> | 17 | #include <uapi/asm/ptrace.h> |
18 | 18 | ||
19 | /* | ||
20 | * This struct defines the way the registers are stored on the stack during a | ||
21 | * system call/exception. As usual the registers k0/k1 aren't being saved. | ||
22 | */ | ||
23 | struct pt_regs { | ||
24 | #ifdef CONFIG_32BIT | ||
25 | /* Pad bytes for argument save space on the stack. */ | ||
26 | unsigned long pad0[6]; | ||
27 | #endif | ||
28 | |||
29 | /* Saved main processor registers. */ | ||
30 | unsigned long regs[32]; | ||
31 | |||
32 | /* Saved special registers. */ | ||
33 | unsigned long cp0_status; | ||
34 | unsigned long hi; | ||
35 | unsigned long lo; | ||
36 | #ifdef CONFIG_CPU_HAS_SMARTMIPS | ||
37 | unsigned long acx; | ||
38 | #endif | ||
39 | unsigned long cp0_badvaddr; | ||
40 | unsigned long cp0_cause; | ||
41 | unsigned long cp0_epc; | ||
42 | #ifdef CONFIG_MIPS_MT_SMTC | ||
43 | unsigned long cp0_tcstatus; | ||
44 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
45 | #ifdef CONFIG_CPU_CAVIUM_OCTEON | ||
46 | unsigned long long mpl[3]; /* MTM{0,1,2} */ | ||
47 | unsigned long long mtp[3]; /* MTP{0,1,2} */ | ||
48 | #endif | ||
49 | } __aligned(8); | ||
50 | |||
19 | struct task_struct; | 51 | struct task_struct; |
20 | 52 | ||
21 | extern int ptrace_getregs(struct task_struct *child, __s64 __user *data); | 53 | extern int ptrace_getregs(struct task_struct *child, __s64 __user *data); |
diff --git a/arch/mips/include/uapi/asm/kvm.h b/arch/mips/include/uapi/asm/kvm.h new file mode 100644 index 000000000000..3f424f5217da --- /dev/null +++ b/arch/mips/include/uapi/asm/kvm.h | |||
@@ -0,0 +1,138 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. | ||
7 | * Copyright (C) 2013 Cavium, Inc. | ||
8 | * Authors: Sanjay Lal <sanjayl@kymasys.com> | ||
9 | */ | ||
10 | |||
11 | #ifndef __LINUX_KVM_MIPS_H | ||
12 | #define __LINUX_KVM_MIPS_H | ||
13 | |||
14 | #include <linux/types.h> | ||
15 | |||
16 | /* | ||
17 | * KVM MIPS specific structures and definitions. | ||
18 | * | ||
19 | * Some parts derived from the x86 version of this file. | ||
20 | */ | ||
21 | |||
22 | /* | ||
23 | * for KVM_GET_REGS and KVM_SET_REGS | ||
24 | * | ||
25 | * If Config[AT] is zero (32-bit CPU), the register contents are | ||
26 | * stored in the lower 32-bits of the struct kvm_regs fields and sign | ||
27 | * extended to 64-bits. | ||
28 | */ | ||
29 | struct kvm_regs { | ||
30 | /* out (KVM_GET_REGS) / in (KVM_SET_REGS) */ | ||
31 | __u64 gpr[32]; | ||
32 | __u64 hi; | ||
33 | __u64 lo; | ||
34 | __u64 pc; | ||
35 | }; | ||
36 | |||
37 | /* | ||
38 | * for KVM_GET_FPU and KVM_SET_FPU | ||
39 | * | ||
40 | * If Status[FR] is zero (32-bit FPU), the upper 32-bits of the FPRs | ||
41 | * are zero filled. | ||
42 | */ | ||
43 | struct kvm_fpu { | ||
44 | __u64 fpr[32]; | ||
45 | __u32 fir; | ||
46 | __u32 fccr; | ||
47 | __u32 fexr; | ||
48 | __u32 fenr; | ||
49 | __u32 fcsr; | ||
50 | __u32 pad; | ||
51 | }; | ||
52 | |||
53 | |||
54 | /* | ||
55 | * For MIPS, we use KVM_SET_ONE_REG and KVM_GET_ONE_REG to access CP0 | ||
56 | * registers. The id field is broken down as follows: | ||
57 | * | ||
58 | * bits[2..0] - Register 'sel' index. | ||
59 | * bits[7..3] - Register 'rd' index. | ||
60 | * bits[15..8] - Must be zero. | ||
61 | * bits[63..16] - 1 -> CP0 registers. | ||
62 | * | ||
63 | * Other sets registers may be added in the future. Each set would | ||
64 | * have its own identifier in bits[63..16]. | ||
65 | * | ||
66 | * The addr field of struct kvm_one_reg must point to an aligned | ||
67 | * 64-bit wide location. For registers that are narrower than | ||
68 | * 64-bits, the value is stored in the low order bits of the location, | ||
69 | * and sign extended to 64-bits. | ||
70 | * | ||
71 | * The registers defined in struct kvm_regs are also accessible, the | ||
72 | * id values for these are below. | ||
73 | */ | ||
74 | |||
75 | #define KVM_REG_MIPS_R0 0 | ||
76 | #define KVM_REG_MIPS_R1 1 | ||
77 | #define KVM_REG_MIPS_R2 2 | ||
78 | #define KVM_REG_MIPS_R3 3 | ||
79 | #define KVM_REG_MIPS_R4 4 | ||
80 | #define KVM_REG_MIPS_R5 5 | ||
81 | #define KVM_REG_MIPS_R6 6 | ||
82 | #define KVM_REG_MIPS_R7 7 | ||
83 | #define KVM_REG_MIPS_R8 8 | ||
84 | #define KVM_REG_MIPS_R9 9 | ||
85 | #define KVM_REG_MIPS_R10 10 | ||
86 | #define KVM_REG_MIPS_R11 11 | ||
87 | #define KVM_REG_MIPS_R12 12 | ||
88 | #define KVM_REG_MIPS_R13 13 | ||
89 | #define KVM_REG_MIPS_R14 14 | ||
90 | #define KVM_REG_MIPS_R15 15 | ||
91 | #define KVM_REG_MIPS_R16 16 | ||
92 | #define KVM_REG_MIPS_R17 17 | ||
93 | #define KVM_REG_MIPS_R18 18 | ||
94 | #define KVM_REG_MIPS_R19 19 | ||
95 | #define KVM_REG_MIPS_R20 20 | ||
96 | #define KVM_REG_MIPS_R21 21 | ||
97 | #define KVM_REG_MIPS_R22 22 | ||
98 | #define KVM_REG_MIPS_R23 23 | ||
99 | #define KVM_REG_MIPS_R24 24 | ||
100 | #define KVM_REG_MIPS_R25 25 | ||
101 | #define KVM_REG_MIPS_R26 26 | ||
102 | #define KVM_REG_MIPS_R27 27 | ||
103 | #define KVM_REG_MIPS_R28 28 | ||
104 | #define KVM_REG_MIPS_R29 29 | ||
105 | #define KVM_REG_MIPS_R30 30 | ||
106 | #define KVM_REG_MIPS_R31 31 | ||
107 | |||
108 | #define KVM_REG_MIPS_HI 32 | ||
109 | #define KVM_REG_MIPS_LO 33 | ||
110 | #define KVM_REG_MIPS_PC 34 | ||
111 | |||
112 | /* | ||
113 | * KVM MIPS specific structures and definitions | ||
114 | * | ||
115 | */ | ||
116 | struct kvm_debug_exit_arch { | ||
117 | __u64 epc; | ||
118 | }; | ||
119 | |||
120 | /* for KVM_SET_GUEST_DEBUG */ | ||
121 | struct kvm_guest_debug_arch { | ||
122 | }; | ||
123 | |||
124 | /* definition of registers in kvm_run */ | ||
125 | struct kvm_sync_regs { | ||
126 | }; | ||
127 | |||
128 | /* dummy definition */ | ||
129 | struct kvm_sregs { | ||
130 | }; | ||
131 | |||
132 | struct kvm_mips_interrupt { | ||
133 | /* in */ | ||
134 | __u32 cpu; | ||
135 | __u32 irq; | ||
136 | }; | ||
137 | |||
138 | #endif /* __LINUX_KVM_MIPS_H */ | ||
diff --git a/arch/mips/include/uapi/asm/ptrace.h b/arch/mips/include/uapi/asm/ptrace.h index 4d58d8468705..b26f7e317279 100644 --- a/arch/mips/include/uapi/asm/ptrace.h +++ b/arch/mips/include/uapi/asm/ptrace.h | |||
@@ -22,16 +22,12 @@ | |||
22 | #define DSP_CONTROL 77 | 22 | #define DSP_CONTROL 77 |
23 | #define ACX 78 | 23 | #define ACX 78 |
24 | 24 | ||
25 | #ifndef __KERNEL__ | ||
25 | /* | 26 | /* |
26 | * This struct defines the way the registers are stored on the stack during a | 27 | * This struct defines the way the registers are stored on the stack during a |
27 | * system call/exception. As usual the registers k0/k1 aren't being saved. | 28 | * system call/exception. As usual the registers k0/k1 aren't being saved. |
28 | */ | 29 | */ |
29 | struct pt_regs { | 30 | struct pt_regs { |
30 | #ifdef CONFIG_32BIT | ||
31 | /* Pad bytes for argument save space on the stack. */ | ||
32 | unsigned long pad0[6]; | ||
33 | #endif | ||
34 | |||
35 | /* Saved main processor registers. */ | 31 | /* Saved main processor registers. */ |
36 | unsigned long regs[32]; | 32 | unsigned long regs[32]; |
37 | 33 | ||
@@ -39,20 +35,11 @@ struct pt_regs { | |||
39 | unsigned long cp0_status; | 35 | unsigned long cp0_status; |
40 | unsigned long hi; | 36 | unsigned long hi; |
41 | unsigned long lo; | 37 | unsigned long lo; |
42 | #ifdef CONFIG_CPU_HAS_SMARTMIPS | ||
43 | unsigned long acx; | ||
44 | #endif | ||
45 | unsigned long cp0_badvaddr; | 38 | unsigned long cp0_badvaddr; |
46 | unsigned long cp0_cause; | 39 | unsigned long cp0_cause; |
47 | unsigned long cp0_epc; | 40 | unsigned long cp0_epc; |
48 | #ifdef CONFIG_MIPS_MT_SMTC | ||
49 | unsigned long cp0_tcstatus; | ||
50 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
51 | #ifdef CONFIG_CPU_CAVIUM_OCTEON | ||
52 | unsigned long long mpl[3]; /* MTM{0,1,2} */ | ||
53 | unsigned long long mtp[3]; /* MTP{0,1,2} */ | ||
54 | #endif | ||
55 | } __attribute__ ((aligned (8))); | 41 | } __attribute__ ((aligned (8))); |
42 | #endif /* __KERNEL__ */ | ||
56 | 43 | ||
57 | /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ | 44 | /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ |
58 | #define PTRACE_GETREGS 12 | 45 | #define PTRACE_GETREGS 12 |
diff --git a/arch/mips/include/uapi/asm/unistd.h b/arch/mips/include/uapi/asm/unistd.h index 16338b84fa79..1dee279f9665 100644 --- a/arch/mips/include/uapi/asm/unistd.h +++ b/arch/mips/include/uapi/asm/unistd.h | |||
@@ -694,16 +694,17 @@ | |||
694 | #define __NR_process_vm_writev (__NR_Linux + 305) | 694 | #define __NR_process_vm_writev (__NR_Linux + 305) |
695 | #define __NR_kcmp (__NR_Linux + 306) | 695 | #define __NR_kcmp (__NR_Linux + 306) |
696 | #define __NR_finit_module (__NR_Linux + 307) | 696 | #define __NR_finit_module (__NR_Linux + 307) |
697 | #define __NR_getdents64 (__NR_Linux + 308) | ||
697 | 698 | ||
698 | /* | 699 | /* |
699 | * Offset of the last Linux 64-bit flavoured syscall | 700 | * Offset of the last Linux 64-bit flavoured syscall |
700 | */ | 701 | */ |
701 | #define __NR_Linux_syscalls 307 | 702 | #define __NR_Linux_syscalls 308 |
702 | 703 | ||
703 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ | 704 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ |
704 | 705 | ||
705 | #define __NR_64_Linux 5000 | 706 | #define __NR_64_Linux 5000 |
706 | #define __NR_64_Linux_syscalls 307 | 707 | #define __NR_64_Linux_syscalls 308 |
707 | 708 | ||
708 | #if _MIPS_SIM == _MIPS_SIM_NABI32 | 709 | #if _MIPS_SIM == _MIPS_SIM_NABI32 |
709 | 710 | ||
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile index 6ad9e04bdf62..423d871a946b 100644 --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | extra-y := head.o vmlinux.lds | 5 | extra-y := head.o vmlinux.lds |
6 | 6 | ||
7 | obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \ | 7 | obj-y += cpu-probe.o branch.o entry.o genex.o idle.o irq.o process.o \ |
8 | prom.o ptrace.o reset.o setup.o signal.o syscall.o \ | 8 | prom.o ptrace.o reset.o setup.o signal.o syscall.o \ |
9 | time.o topology.o traps.o unaligned.o watch.o vdso.o | 9 | time.o topology.o traps.o unaligned.o watch.o vdso.o |
10 | 10 | ||
diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c index e06f777e9c49..1188e00bb120 100644 --- a/arch/mips/kernel/binfmt_elfn32.c +++ b/arch/mips/kernel/binfmt_elfn32.c | |||
@@ -119,4 +119,15 @@ MODULE_AUTHOR("Ralf Baechle (ralf@linux-mips.org)"); | |||
119 | #undef TASK_SIZE | 119 | #undef TASK_SIZE |
120 | #define TASK_SIZE TASK_SIZE32 | 120 | #define TASK_SIZE TASK_SIZE32 |
121 | 121 | ||
122 | #undef cputime_to_timeval | ||
123 | #define cputime_to_timeval cputime_to_compat_timeval | ||
124 | static __inline__ void | ||
125 | cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value) | ||
126 | { | ||
127 | unsigned long jiffies = cputime_to_jiffies(cputime); | ||
128 | |||
129 | value->tv_usec = (jiffies % HZ) * (1000000L / HZ); | ||
130 | value->tv_sec = jiffies / HZ; | ||
131 | } | ||
132 | |||
122 | #include "../../../fs/binfmt_elf.c" | 133 | #include "../../../fs/binfmt_elf.c" |
diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c index 97c5a1668e53..202e581e6096 100644 --- a/arch/mips/kernel/binfmt_elfo32.c +++ b/arch/mips/kernel/binfmt_elfo32.c | |||
@@ -162,4 +162,15 @@ MODULE_AUTHOR("Ralf Baechle (ralf@linux-mips.org)"); | |||
162 | #undef TASK_SIZE | 162 | #undef TASK_SIZE |
163 | #define TASK_SIZE TASK_SIZE32 | 163 | #define TASK_SIZE TASK_SIZE32 |
164 | 164 | ||
165 | #undef cputime_to_timeval | ||
166 | #define cputime_to_timeval cputime_to_compat_timeval | ||
167 | static __inline__ void | ||
168 | cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value) | ||
169 | { | ||
170 | unsigned long jiffies = cputime_to_jiffies(cputime); | ||
171 | |||
172 | value->tv_usec = (jiffies % HZ) * (1000000L / HZ); | ||
173 | value->tv_sec = jiffies / HZ; | ||
174 | } | ||
175 | |||
165 | #include "../../../fs/binfmt_elf.c" | 176 | #include "../../../fs/binfmt_elf.c" |
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index 4bbffdb9024f..c6568bf4b1b0 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -27,105 +27,6 @@ | |||
27 | #include <asm/spram.h> | 27 | #include <asm/spram.h> |
28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
29 | 29 | ||
30 | /* | ||
31 | * Not all of the MIPS CPUs have the "wait" instruction available. Moreover, | ||
32 | * the implementation of the "wait" feature differs between CPU families. This | ||
33 | * points to the function that implements CPU specific wait. | ||
34 | * The wait instruction stops the pipeline and reduces the power consumption of | ||
35 | * the CPU very much. | ||
36 | */ | ||
37 | void (*cpu_wait)(void); | ||
38 | EXPORT_SYMBOL(cpu_wait); | ||
39 | |||
40 | static void r3081_wait(void) | ||
41 | { | ||
42 | unsigned long cfg = read_c0_conf(); | ||
43 | write_c0_conf(cfg | R30XX_CONF_HALT); | ||
44 | } | ||
45 | |||
46 | static void r39xx_wait(void) | ||
47 | { | ||
48 | local_irq_disable(); | ||
49 | if (!need_resched()) | ||
50 | write_c0_conf(read_c0_conf() | TX39_CONF_HALT); | ||
51 | local_irq_enable(); | ||
52 | } | ||
53 | |||
54 | extern void r4k_wait(void); | ||
55 | |||
56 | /* | ||
57 | * This variant is preferable as it allows testing need_resched and going to | ||
58 | * sleep depending on the outcome atomically. Unfortunately the "It is | ||
59 | * implementation-dependent whether the pipeline restarts when a non-enabled | ||
60 | * interrupt is requested" restriction in the MIPS32/MIPS64 architecture makes | ||
61 | * using this version a gamble. | ||
62 | */ | ||
63 | void r4k_wait_irqoff(void) | ||
64 | { | ||
65 | local_irq_disable(); | ||
66 | if (!need_resched()) | ||
67 | __asm__(" .set push \n" | ||
68 | " .set mips3 \n" | ||
69 | " wait \n" | ||
70 | " .set pop \n"); | ||
71 | local_irq_enable(); | ||
72 | __asm__(" .globl __pastwait \n" | ||
73 | "__pastwait: \n"); | ||
74 | } | ||
75 | |||
76 | /* | ||
77 | * The RM7000 variant has to handle erratum 38. The workaround is to not | ||
78 | * have any pending stores when the WAIT instruction is executed. | ||
79 | */ | ||
80 | static void rm7k_wait_irqoff(void) | ||
81 | { | ||
82 | local_irq_disable(); | ||
83 | if (!need_resched()) | ||
84 | __asm__( | ||
85 | " .set push \n" | ||
86 | " .set mips3 \n" | ||
87 | " .set noat \n" | ||
88 | " mfc0 $1, $12 \n" | ||
89 | " sync \n" | ||
90 | " mtc0 $1, $12 # stalls until W stage \n" | ||
91 | " wait \n" | ||
92 | " mtc0 $1, $12 # stalls until W stage \n" | ||
93 | " .set pop \n"); | ||
94 | local_irq_enable(); | ||
95 | } | ||
96 | |||
97 | /* | ||
98 | * The Au1xxx wait is available only if using 32khz counter or | ||
99 | * external timer source, but specifically not CP0 Counter. | ||
100 | * alchemy/common/time.c may override cpu_wait! | ||
101 | */ | ||
102 | static void au1k_wait(void) | ||
103 | { | ||
104 | __asm__(" .set mips3 \n" | ||
105 | " cache 0x14, 0(%0) \n" | ||
106 | " cache 0x14, 32(%0) \n" | ||
107 | " sync \n" | ||
108 | " nop \n" | ||
109 | " wait \n" | ||
110 | " nop \n" | ||
111 | " nop \n" | ||
112 | " nop \n" | ||
113 | " nop \n" | ||
114 | " .set mips0 \n" | ||
115 | : : "r" (au1k_wait)); | ||
116 | } | ||
117 | |||
118 | static int __initdata nowait; | ||
119 | |||
120 | static int __init wait_disable(char *s) | ||
121 | { | ||
122 | nowait = 1; | ||
123 | |||
124 | return 1; | ||
125 | } | ||
126 | |||
127 | __setup("nowait", wait_disable); | ||
128 | |||
129 | static int __cpuinitdata mips_fpu_disabled; | 30 | static int __cpuinitdata mips_fpu_disabled; |
130 | 31 | ||
131 | static int __init fpu_disable(char *s) | 32 | static int __init fpu_disable(char *s) |
@@ -150,105 +51,6 @@ static int __init dsp_disable(char *s) | |||
150 | 51 | ||
151 | __setup("nodsp", dsp_disable); | 52 | __setup("nodsp", dsp_disable); |
152 | 53 | ||
153 | void __init check_wait(void) | ||
154 | { | ||
155 | struct cpuinfo_mips *c = ¤t_cpu_data; | ||
156 | |||
157 | if (nowait) { | ||
158 | printk("Wait instruction disabled.\n"); | ||
159 | return; | ||
160 | } | ||
161 | |||
162 | switch (c->cputype) { | ||
163 | case CPU_R3081: | ||
164 | case CPU_R3081E: | ||
165 | cpu_wait = r3081_wait; | ||
166 | break; | ||
167 | case CPU_TX3927: | ||
168 | cpu_wait = r39xx_wait; | ||
169 | break; | ||
170 | case CPU_R4200: | ||
171 | /* case CPU_R4300: */ | ||
172 | case CPU_R4600: | ||
173 | case CPU_R4640: | ||
174 | case CPU_R4650: | ||
175 | case CPU_R4700: | ||
176 | case CPU_R5000: | ||
177 | case CPU_R5500: | ||
178 | case CPU_NEVADA: | ||
179 | case CPU_4KC: | ||
180 | case CPU_4KEC: | ||
181 | case CPU_4KSC: | ||
182 | case CPU_5KC: | ||
183 | case CPU_25KF: | ||
184 | case CPU_PR4450: | ||
185 | case CPU_BMIPS3300: | ||
186 | case CPU_BMIPS4350: | ||
187 | case CPU_BMIPS4380: | ||
188 | case CPU_BMIPS5000: | ||
189 | case CPU_CAVIUM_OCTEON: | ||
190 | case CPU_CAVIUM_OCTEON_PLUS: | ||
191 | case CPU_CAVIUM_OCTEON2: | ||
192 | case CPU_JZRISC: | ||
193 | case CPU_LOONGSON1: | ||
194 | case CPU_XLR: | ||
195 | case CPU_XLP: | ||
196 | cpu_wait = r4k_wait; | ||
197 | break; | ||
198 | |||
199 | case CPU_RM7000: | ||
200 | cpu_wait = rm7k_wait_irqoff; | ||
201 | break; | ||
202 | |||
203 | case CPU_M14KC: | ||
204 | case CPU_M14KEC: | ||
205 | case CPU_24K: | ||
206 | case CPU_34K: | ||
207 | case CPU_1004K: | ||
208 | cpu_wait = r4k_wait; | ||
209 | if (read_c0_config7() & MIPS_CONF7_WII) | ||
210 | cpu_wait = r4k_wait_irqoff; | ||
211 | break; | ||
212 | |||
213 | case CPU_74K: | ||
214 | cpu_wait = r4k_wait; | ||
215 | if ((c->processor_id & 0xff) >= PRID_REV_ENCODE_332(2, 1, 0)) | ||
216 | cpu_wait = r4k_wait_irqoff; | ||
217 | break; | ||
218 | |||
219 | case CPU_TX49XX: | ||
220 | cpu_wait = r4k_wait_irqoff; | ||
221 | break; | ||
222 | case CPU_ALCHEMY: | ||
223 | cpu_wait = au1k_wait; | ||
224 | break; | ||
225 | case CPU_20KC: | ||
226 | /* | ||
227 | * WAIT on Rev1.0 has E1, E2, E3 and E16. | ||
228 | * WAIT on Rev2.0 and Rev3.0 has E16. | ||
229 | * Rev3.1 WAIT is nop, why bother | ||
230 | */ | ||
231 | if ((c->processor_id & 0xff) <= 0x64) | ||
232 | break; | ||
233 | |||
234 | /* | ||
235 | * Another rev is incremeting c0_count at a reduced clock | ||
236 | * rate while in WAIT mode. So we basically have the choice | ||
237 | * between using the cp0 timer as clocksource or avoiding | ||
238 | * the WAIT instruction. Until more details are known, | ||
239 | * disable the use of WAIT for 20Kc entirely. | ||
240 | cpu_wait = r4k_wait; | ||
241 | */ | ||
242 | break; | ||
243 | case CPU_RM9000: | ||
244 | if ((c->processor_id & 0x00ff) >= 0x40) | ||
245 | cpu_wait = r4k_wait; | ||
246 | break; | ||
247 | default: | ||
248 | break; | ||
249 | } | ||
250 | } | ||
251 | |||
252 | static inline void check_errata(void) | 54 | static inline void check_errata(void) |
253 | { | 55 | { |
254 | struct cpuinfo_mips *c = ¤t_cpu_data; | 56 | struct cpuinfo_mips *c = ¤t_cpu_data; |
diff --git a/arch/mips/kernel/crash_dump.c b/arch/mips/kernel/crash_dump.c index 35bed0d2342c..3be9e7bb30ff 100644 --- a/arch/mips/kernel/crash_dump.c +++ b/arch/mips/kernel/crash_dump.c | |||
@@ -2,6 +2,7 @@ | |||
2 | #include <linux/bootmem.h> | 2 | #include <linux/bootmem.h> |
3 | #include <linux/crash_dump.h> | 3 | #include <linux/crash_dump.h> |
4 | #include <asm/uaccess.h> | 4 | #include <asm/uaccess.h> |
5 | #include <linux/slab.h> | ||
5 | 6 | ||
6 | static int __init parse_savemaxmem(char *p) | 7 | static int __init parse_savemaxmem(char *p) |
7 | { | 8 | { |
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S index 5c2ba9f08a80..31fa856829cb 100644 --- a/arch/mips/kernel/genex.S +++ b/arch/mips/kernel/genex.S | |||
@@ -122,7 +122,7 @@ handle_vcei: | |||
122 | __FINIT | 122 | __FINIT |
123 | 123 | ||
124 | .align 5 /* 32 byte rollback region */ | 124 | .align 5 /* 32 byte rollback region */ |
125 | LEAF(r4k_wait) | 125 | LEAF(__r4k_wait) |
126 | .set push | 126 | .set push |
127 | .set noreorder | 127 | .set noreorder |
128 | /* start of rollback region */ | 128 | /* start of rollback region */ |
@@ -146,14 +146,14 @@ LEAF(r4k_wait) | |||
146 | jr ra | 146 | jr ra |
147 | nop | 147 | nop |
148 | .set pop | 148 | .set pop |
149 | END(r4k_wait) | 149 | END(__r4k_wait) |
150 | 150 | ||
151 | .macro BUILD_ROLLBACK_PROLOGUE handler | 151 | .macro BUILD_ROLLBACK_PROLOGUE handler |
152 | FEXPORT(rollback_\handler) | 152 | FEXPORT(rollback_\handler) |
153 | .set push | 153 | .set push |
154 | .set noat | 154 | .set noat |
155 | MFC0 k0, CP0_EPC | 155 | MFC0 k0, CP0_EPC |
156 | PTR_LA k1, r4k_wait | 156 | PTR_LA k1, __r4k_wait |
157 | ori k0, 0x1f /* 32 byte rollback region */ | 157 | ori k0, 0x1f /* 32 byte rollback region */ |
158 | xori k0, 0x1f | 158 | xori k0, 0x1f |
159 | bne k0, k1, 9f | 159 | bne k0, k1, 9f |
@@ -493,7 +493,7 @@ NESTED(nmi_handler, PT_SIZE, sp) | |||
493 | .set noreorder | 493 | .set noreorder |
494 | /* check if TLB contains a entry for EPC */ | 494 | /* check if TLB contains a entry for EPC */ |
495 | MFC0 k1, CP0_ENTRYHI | 495 | MFC0 k1, CP0_ENTRYHI |
496 | andi k1, 0xff /* ASID_MASK patched at run-time!! */ | 496 | andi k1, 0xff /* ASID_MASK */ |
497 | MFC0 k0, CP0_EPC | 497 | MFC0 k0, CP0_EPC |
498 | PTR_SRL k0, _PAGE_SHIFT + 1 | 498 | PTR_SRL k0, _PAGE_SHIFT + 1 |
499 | PTR_SLL k0, _PAGE_SHIFT + 1 | 499 | PTR_SLL k0, _PAGE_SHIFT + 1 |
diff --git a/arch/mips/kernel/idle.c b/arch/mips/kernel/idle.c new file mode 100644 index 000000000000..3b09b888afa9 --- /dev/null +++ b/arch/mips/kernel/idle.c | |||
@@ -0,0 +1,244 @@ | |||
1 | /* | ||
2 | * MIPS idle loop and WAIT instruction support. | ||
3 | * | ||
4 | * Copyright (C) xxxx the Anonymous | ||
5 | * Copyright (C) 1994 - 2006 Ralf Baechle | ||
6 | * Copyright (C) 2003, 2004 Maciej W. Rozycki | ||
7 | * Copyright (C) 2001, 2004, 2011, 2012 MIPS Technologies, Inc. | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License | ||
11 | * as published by the Free Software Foundation; either version | ||
12 | * 2 of the License, or (at your option) any later version. | ||
13 | */ | ||
14 | #include <linux/export.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/irqflags.h> | ||
17 | #include <linux/printk.h> | ||
18 | #include <linux/sched.h> | ||
19 | #include <asm/cpu.h> | ||
20 | #include <asm/cpu-info.h> | ||
21 | #include <asm/idle.h> | ||
22 | #include <asm/mipsregs.h> | ||
23 | |||
24 | /* | ||
25 | * Not all of the MIPS CPUs have the "wait" instruction available. Moreover, | ||
26 | * the implementation of the "wait" feature differs between CPU families. This | ||
27 | * points to the function that implements CPU specific wait. | ||
28 | * The wait instruction stops the pipeline and reduces the power consumption of | ||
29 | * the CPU very much. | ||
30 | */ | ||
31 | void (*cpu_wait)(void); | ||
32 | EXPORT_SYMBOL(cpu_wait); | ||
33 | |||
34 | static void r3081_wait(void) | ||
35 | { | ||
36 | unsigned long cfg = read_c0_conf(); | ||
37 | write_c0_conf(cfg | R30XX_CONF_HALT); | ||
38 | local_irq_enable(); | ||
39 | } | ||
40 | |||
41 | static void r39xx_wait(void) | ||
42 | { | ||
43 | if (!need_resched()) | ||
44 | write_c0_conf(read_c0_conf() | TX39_CONF_HALT); | ||
45 | local_irq_enable(); | ||
46 | } | ||
47 | |||
48 | void r4k_wait(void) | ||
49 | { | ||
50 | local_irq_enable(); | ||
51 | __r4k_wait(); | ||
52 | } | ||
53 | |||
54 | /* | ||
55 | * This variant is preferable as it allows testing need_resched and going to | ||
56 | * sleep depending on the outcome atomically. Unfortunately the "It is | ||
57 | * implementation-dependent whether the pipeline restarts when a non-enabled | ||
58 | * interrupt is requested" restriction in the MIPS32/MIPS64 architecture makes | ||
59 | * using this version a gamble. | ||
60 | */ | ||
61 | void r4k_wait_irqoff(void) | ||
62 | { | ||
63 | if (!need_resched()) | ||
64 | __asm__( | ||
65 | " .set push \n" | ||
66 | " .set mips3 \n" | ||
67 | " wait \n" | ||
68 | " .set pop \n"); | ||
69 | local_irq_enable(); | ||
70 | __asm__( | ||
71 | " .globl __pastwait \n" | ||
72 | "__pastwait: \n"); | ||
73 | } | ||
74 | |||
75 | /* | ||
76 | * The RM7000 variant has to handle erratum 38. The workaround is to not | ||
77 | * have any pending stores when the WAIT instruction is executed. | ||
78 | */ | ||
79 | static void rm7k_wait_irqoff(void) | ||
80 | { | ||
81 | if (!need_resched()) | ||
82 | __asm__( | ||
83 | " .set push \n" | ||
84 | " .set mips3 \n" | ||
85 | " .set noat \n" | ||
86 | " mfc0 $1, $12 \n" | ||
87 | " sync \n" | ||
88 | " mtc0 $1, $12 # stalls until W stage \n" | ||
89 | " wait \n" | ||
90 | " mtc0 $1, $12 # stalls until W stage \n" | ||
91 | " .set pop \n"); | ||
92 | local_irq_enable(); | ||
93 | } | ||
94 | |||
95 | /* | ||
96 | * The Au1xxx wait is available only if using 32khz counter or | ||
97 | * external timer source, but specifically not CP0 Counter. | ||
98 | * alchemy/common/time.c may override cpu_wait! | ||
99 | */ | ||
100 | static void au1k_wait(void) | ||
101 | { | ||
102 | __asm__( | ||
103 | " .set mips3 \n" | ||
104 | " cache 0x14, 0(%0) \n" | ||
105 | " cache 0x14, 32(%0) \n" | ||
106 | " sync \n" | ||
107 | " nop \n" | ||
108 | " wait \n" | ||
109 | " nop \n" | ||
110 | " nop \n" | ||
111 | " nop \n" | ||
112 | " nop \n" | ||
113 | " .set mips0 \n" | ||
114 | : : "r" (au1k_wait)); | ||
115 | local_irq_enable(); | ||
116 | } | ||
117 | |||
118 | static int __initdata nowait; | ||
119 | |||
120 | static int __init wait_disable(char *s) | ||
121 | { | ||
122 | nowait = 1; | ||
123 | |||
124 | return 1; | ||
125 | } | ||
126 | |||
127 | __setup("nowait", wait_disable); | ||
128 | |||
129 | void __init check_wait(void) | ||
130 | { | ||
131 | struct cpuinfo_mips *c = ¤t_cpu_data; | ||
132 | |||
133 | if (nowait) { | ||
134 | printk("Wait instruction disabled.\n"); | ||
135 | return; | ||
136 | } | ||
137 | |||
138 | switch (c->cputype) { | ||
139 | case CPU_R3081: | ||
140 | case CPU_R3081E: | ||
141 | cpu_wait = r3081_wait; | ||
142 | break; | ||
143 | case CPU_TX3927: | ||
144 | cpu_wait = r39xx_wait; | ||
145 | break; | ||
146 | case CPU_R4200: | ||
147 | /* case CPU_R4300: */ | ||
148 | case CPU_R4600: | ||
149 | case CPU_R4640: | ||
150 | case CPU_R4650: | ||
151 | case CPU_R4700: | ||
152 | case CPU_R5000: | ||
153 | case CPU_R5500: | ||
154 | case CPU_NEVADA: | ||
155 | case CPU_4KC: | ||
156 | case CPU_4KEC: | ||
157 | case CPU_4KSC: | ||
158 | case CPU_5KC: | ||
159 | case CPU_25KF: | ||
160 | case CPU_PR4450: | ||
161 | case CPU_BMIPS3300: | ||
162 | case CPU_BMIPS4350: | ||
163 | case CPU_BMIPS4380: | ||
164 | case CPU_BMIPS5000: | ||
165 | case CPU_CAVIUM_OCTEON: | ||
166 | case CPU_CAVIUM_OCTEON_PLUS: | ||
167 | case CPU_CAVIUM_OCTEON2: | ||
168 | case CPU_JZRISC: | ||
169 | case CPU_LOONGSON1: | ||
170 | case CPU_XLR: | ||
171 | case CPU_XLP: | ||
172 | cpu_wait = r4k_wait; | ||
173 | break; | ||
174 | |||
175 | case CPU_RM7000: | ||
176 | cpu_wait = rm7k_wait_irqoff; | ||
177 | break; | ||
178 | |||
179 | case CPU_M14KC: | ||
180 | case CPU_M14KEC: | ||
181 | case CPU_24K: | ||
182 | case CPU_34K: | ||
183 | case CPU_1004K: | ||
184 | cpu_wait = r4k_wait; | ||
185 | if (read_c0_config7() & MIPS_CONF7_WII) | ||
186 | cpu_wait = r4k_wait_irqoff; | ||
187 | break; | ||
188 | |||
189 | case CPU_74K: | ||
190 | cpu_wait = r4k_wait; | ||
191 | if ((c->processor_id & 0xff) >= PRID_REV_ENCODE_332(2, 1, 0)) | ||
192 | cpu_wait = r4k_wait_irqoff; | ||
193 | break; | ||
194 | |||
195 | case CPU_TX49XX: | ||
196 | cpu_wait = r4k_wait_irqoff; | ||
197 | break; | ||
198 | case CPU_ALCHEMY: | ||
199 | cpu_wait = au1k_wait; | ||
200 | break; | ||
201 | case CPU_20KC: | ||
202 | /* | ||
203 | * WAIT on Rev1.0 has E1, E2, E3 and E16. | ||
204 | * WAIT on Rev2.0 and Rev3.0 has E16. | ||
205 | * Rev3.1 WAIT is nop, why bother | ||
206 | */ | ||
207 | if ((c->processor_id & 0xff) <= 0x64) | ||
208 | break; | ||
209 | |||
210 | /* | ||
211 | * Another rev is incremeting c0_count at a reduced clock | ||
212 | * rate while in WAIT mode. So we basically have the choice | ||
213 | * between using the cp0 timer as clocksource or avoiding | ||
214 | * the WAIT instruction. Until more details are known, | ||
215 | * disable the use of WAIT for 20Kc entirely. | ||
216 | cpu_wait = r4k_wait; | ||
217 | */ | ||
218 | break; | ||
219 | case CPU_RM9000: | ||
220 | if ((c->processor_id & 0x00ff) >= 0x40) | ||
221 | cpu_wait = r4k_wait; | ||
222 | break; | ||
223 | default: | ||
224 | break; | ||
225 | } | ||
226 | } | ||
227 | |||
228 | static void smtc_idle_hook(void) | ||
229 | { | ||
230 | #ifdef CONFIG_MIPS_MT_SMTC | ||
231 | void smtc_idle_loop_hook(void); | ||
232 | |||
233 | smtc_idle_loop_hook(); | ||
234 | #endif | ||
235 | } | ||
236 | |||
237 | void arch_cpu_idle(void) | ||
238 | { | ||
239 | smtc_idle_hook(); | ||
240 | if (cpu_wait) | ||
241 | cpu_wait(); | ||
242 | else | ||
243 | local_irq_enable(); | ||
244 | } | ||
diff --git a/arch/mips/kernel/kprobes.c b/arch/mips/kernel/kprobes.c index 12bc4ebdf55b..1f8187ab0997 100644 --- a/arch/mips/kernel/kprobes.c +++ b/arch/mips/kernel/kprobes.c | |||
@@ -207,7 +207,10 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p) | |||
207 | 207 | ||
208 | void __kprobes arch_remove_kprobe(struct kprobe *p) | 208 | void __kprobes arch_remove_kprobe(struct kprobe *p) |
209 | { | 209 | { |
210 | free_insn_slot(p->ainsn.insn, 0); | 210 | if (p->ainsn.insn) { |
211 | free_insn_slot(p->ainsn.insn, 0); | ||
212 | p->ainsn.insn = NULL; | ||
213 | } | ||
211 | } | 214 | } |
212 | 215 | ||
213 | static void save_previous_kprobe(struct kprobe_ctlblk *kcb) | 216 | static void save_previous_kprobe(struct kprobe_ctlblk *kcb) |
diff --git a/arch/mips/kernel/proc.c b/arch/mips/kernel/proc.c index a3e461408b7e..acb34373679e 100644 --- a/arch/mips/kernel/proc.c +++ b/arch/mips/kernel/proc.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <asm/bootinfo.h> | 10 | #include <asm/bootinfo.h> |
11 | #include <asm/cpu.h> | 11 | #include <asm/cpu.h> |
12 | #include <asm/cpu-features.h> | 12 | #include <asm/cpu-features.h> |
13 | #include <asm/idle.h> | ||
13 | #include <asm/mipsregs.h> | 14 | #include <asm/mipsregs.h> |
14 | #include <asm/processor.h> | 15 | #include <asm/processor.h> |
15 | #include <asm/prom.h> | 16 | #include <asm/prom.h> |
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index eb902c1f0cad..c6a041d9d05d 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c | |||
@@ -51,19 +51,6 @@ void arch_cpu_idle_dead(void) | |||
51 | } | 51 | } |
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | void arch_cpu_idle(void) | ||
55 | { | ||
56 | #ifdef CONFIG_MIPS_MT_SMTC | ||
57 | extern void smtc_idle_loop_hook(void); | ||
58 | |||
59 | smtc_idle_loop_hook(); | ||
60 | #endif | ||
61 | if (cpu_wait) | ||
62 | (*cpu_wait)(); | ||
63 | else | ||
64 | local_irq_enable(); | ||
65 | } | ||
66 | |||
67 | asmlinkage void ret_from_fork(void); | 54 | asmlinkage void ret_from_fork(void); |
68 | asmlinkage void ret_from_kernel_thread(void); | 55 | asmlinkage void ret_from_kernel_thread(void); |
69 | 56 | ||
@@ -224,6 +211,9 @@ struct mips_frame_info { | |||
224 | int pc_offset; | 211 | int pc_offset; |
225 | }; | 212 | }; |
226 | 213 | ||
214 | #define J_TARGET(pc,target) \ | ||
215 | (((unsigned long)(pc) & 0xf0000000) | ((target) << 2)) | ||
216 | |||
227 | static inline int is_ra_save_ins(union mips_instruction *ip) | 217 | static inline int is_ra_save_ins(union mips_instruction *ip) |
228 | { | 218 | { |
229 | #ifdef CONFIG_CPU_MICROMIPS | 219 | #ifdef CONFIG_CPU_MICROMIPS |
@@ -264,7 +254,7 @@ static inline int is_ra_save_ins(union mips_instruction *ip) | |||
264 | #endif | 254 | #endif |
265 | } | 255 | } |
266 | 256 | ||
267 | static inline int is_jal_jalr_jr_ins(union mips_instruction *ip) | 257 | static inline int is_jump_ins(union mips_instruction *ip) |
268 | { | 258 | { |
269 | #ifdef CONFIG_CPU_MICROMIPS | 259 | #ifdef CONFIG_CPU_MICROMIPS |
270 | /* | 260 | /* |
@@ -288,6 +278,8 @@ static inline int is_jal_jalr_jr_ins(union mips_instruction *ip) | |||
288 | return 0; | 278 | return 0; |
289 | return (((ip->u_format.uimmediate >> 6) & mm_jalr_op) == mm_jalr_op); | 279 | return (((ip->u_format.uimmediate >> 6) & mm_jalr_op) == mm_jalr_op); |
290 | #else | 280 | #else |
281 | if (ip->j_format.opcode == j_op) | ||
282 | return 1; | ||
291 | if (ip->j_format.opcode == jal_op) | 283 | if (ip->j_format.opcode == jal_op) |
292 | return 1; | 284 | return 1; |
293 | if (ip->r_format.opcode != spec_op) | 285 | if (ip->r_format.opcode != spec_op) |
@@ -350,7 +342,7 @@ static int get_frame_info(struct mips_frame_info *info) | |||
350 | 342 | ||
351 | for (i = 0; i < max_insns; i++, ip++) { | 343 | for (i = 0; i < max_insns; i++, ip++) { |
352 | 344 | ||
353 | if (is_jal_jalr_jr_ins(ip)) | 345 | if (is_jump_ins(ip)) |
354 | break; | 346 | break; |
355 | if (!info->frame_size) { | 347 | if (!info->frame_size) { |
356 | if (is_sp_move_ins(ip)) | 348 | if (is_sp_move_ins(ip)) |
@@ -393,15 +385,42 @@ err: | |||
393 | 385 | ||
394 | static struct mips_frame_info schedule_mfi __read_mostly; | 386 | static struct mips_frame_info schedule_mfi __read_mostly; |
395 | 387 | ||
388 | #ifdef CONFIG_KALLSYMS | ||
389 | static unsigned long get___schedule_addr(void) | ||
390 | { | ||
391 | return kallsyms_lookup_name("__schedule"); | ||
392 | } | ||
393 | #else | ||
394 | static unsigned long get___schedule_addr(void) | ||
395 | { | ||
396 | union mips_instruction *ip = (void *)schedule; | ||
397 | int max_insns = 8; | ||
398 | int i; | ||
399 | |||
400 | for (i = 0; i < max_insns; i++, ip++) { | ||
401 | if (ip->j_format.opcode == j_op) | ||
402 | return J_TARGET(ip, ip->j_format.target); | ||
403 | } | ||
404 | return 0; | ||
405 | } | ||
406 | #endif | ||
407 | |||
396 | static int __init frame_info_init(void) | 408 | static int __init frame_info_init(void) |
397 | { | 409 | { |
398 | unsigned long size = 0; | 410 | unsigned long size = 0; |
399 | #ifdef CONFIG_KALLSYMS | 411 | #ifdef CONFIG_KALLSYMS |
400 | unsigned long ofs; | 412 | unsigned long ofs; |
413 | #endif | ||
414 | unsigned long addr; | ||
415 | |||
416 | addr = get___schedule_addr(); | ||
417 | if (!addr) | ||
418 | addr = (unsigned long)schedule; | ||
401 | 419 | ||
402 | kallsyms_lookup_size_offset((unsigned long)schedule, &size, &ofs); | 420 | #ifdef CONFIG_KALLSYMS |
421 | kallsyms_lookup_size_offset(addr, &size, &ofs); | ||
403 | #endif | 422 | #endif |
404 | schedule_mfi.func = schedule; | 423 | schedule_mfi.func = (void *)addr; |
405 | schedule_mfi.func_size = size; | 424 | schedule_mfi.func_size = size; |
406 | 425 | ||
407 | get_frame_info(&schedule_mfi); | 426 | get_frame_info(&schedule_mfi); |
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c index 93c070b41b0d..6fa198db8999 100644 --- a/arch/mips/kernel/rtlx.c +++ b/arch/mips/kernel/rtlx.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <asm/processor.h> | 40 | #include <asm/processor.h> |
41 | #include <asm/vpe.h> | 41 | #include <asm/vpe.h> |
42 | #include <asm/rtlx.h> | 42 | #include <asm/rtlx.h> |
43 | #include <asm/setup.h> | ||
43 | 44 | ||
44 | static struct rtlx_info *rtlx; | 45 | static struct rtlx_info *rtlx; |
45 | static int major; | 46 | static int major; |
diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S index 36cfd4060e1f..97a5909a61cf 100644 --- a/arch/mips/kernel/scall64-64.S +++ b/arch/mips/kernel/scall64-64.S | |||
@@ -423,4 +423,5 @@ sys_call_table: | |||
423 | PTR sys_process_vm_writev /* 5305 */ | 423 | PTR sys_process_vm_writev /* 5305 */ |
424 | PTR sys_kcmp | 424 | PTR sys_kcmp |
425 | PTR sys_finit_module | 425 | PTR sys_finit_module |
426 | PTR sys_getdents64 | ||
426 | .size sys_call_table,.-sys_call_table | 427 | .size sys_call_table,.-sys_call_table |
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index c17619fe18e3..6e7862ab46cc 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/atomic.h> | 37 | #include <linux/atomic.h> |
38 | #include <asm/cpu.h> | 38 | #include <asm/cpu.h> |
39 | #include <asm/processor.h> | 39 | #include <asm/processor.h> |
40 | #include <asm/idle.h> | ||
40 | #include <asm/r4k-timer.h> | 41 | #include <asm/r4k-timer.h> |
41 | #include <asm/mmu_context.h> | 42 | #include <asm/mmu_context.h> |
42 | #include <asm/time.h> | 43 | #include <asm/time.h> |
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 31d22f3121c9..75a4fd709841 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/hardirq.h> | 34 | #include <asm/hardirq.h> |
35 | #include <asm/hazards.h> | 35 | #include <asm/hazards.h> |
36 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
37 | #include <asm/idle.h> | ||
37 | #include <asm/mmu_context.h> | 38 | #include <asm/mmu_context.h> |
38 | #include <asm/mipsregs.h> | 39 | #include <asm/mipsregs.h> |
39 | #include <asm/cacheflush.h> | 40 | #include <asm/cacheflush.h> |
@@ -111,7 +112,7 @@ static int vpe0limit; | |||
111 | static int ipibuffers; | 112 | static int ipibuffers; |
112 | static int nostlb; | 113 | static int nostlb; |
113 | static int asidmask; | 114 | static int asidmask; |
114 | unsigned int smtc_asid_mask = 0xff; | 115 | unsigned long smtc_asid_mask = 0xff; |
115 | 116 | ||
116 | static int __init vpe0tcs(char *str) | 117 | static int __init vpe0tcs(char *str) |
117 | { | 118 | { |
@@ -858,7 +859,6 @@ void smtc_send_ipi(int cpu, int type, unsigned int action) | |||
858 | unsigned long flags; | 859 | unsigned long flags; |
859 | int mtflags; | 860 | int mtflags; |
860 | unsigned long tcrestart; | 861 | unsigned long tcrestart; |
861 | extern void r4k_wait_irqoff(void), __pastwait(void); | ||
862 | int set_resched_flag = (type == LINUX_SMP_IPI && | 862 | int set_resched_flag = (type == LINUX_SMP_IPI && |
863 | action == SMP_RESCHEDULE_YOURSELF); | 863 | action == SMP_RESCHEDULE_YOURSELF); |
864 | 864 | ||
@@ -914,8 +914,7 @@ void smtc_send_ipi(int cpu, int type, unsigned int action) | |||
914 | */ | 914 | */ |
915 | if (cpu_wait == r4k_wait_irqoff) { | 915 | if (cpu_wait == r4k_wait_irqoff) { |
916 | tcrestart = read_tc_c0_tcrestart(); | 916 | tcrestart = read_tc_c0_tcrestart(); |
917 | if (tcrestart >= (unsigned long)r4k_wait_irqoff | 917 | if (address_is_in_r4k_wait_irqoff(tcrestart)) { |
918 | && tcrestart < (unsigned long)__pastwait) { | ||
919 | write_tc_c0_tcrestart(__pastwait); | 918 | write_tc_c0_tcrestart(__pastwait); |
920 | tcstatus &= ~TCSTATUS_IXMT; | 919 | tcstatus &= ~TCSTATUS_IXMT; |
921 | write_tc_c0_tcstatus(tcstatus); | 920 | write_tc_c0_tcstatus(tcstatus); |
@@ -1395,7 +1394,7 @@ void smtc_get_new_mmu_context(struct mm_struct *mm, unsigned long cpu) | |||
1395 | asid = asid_cache(cpu); | 1394 | asid = asid_cache(cpu); |
1396 | 1395 | ||
1397 | do { | 1396 | do { |
1398 | if (!ASID_MASK(ASID_INC(asid))) { | 1397 | if (!((asid += ASID_INC) & ASID_MASK) ) { |
1399 | if (cpu_has_vtag_icache) | 1398 | if (cpu_has_vtag_icache) |
1400 | flush_icache_all(); | 1399 | flush_icache_all(); |
1401 | /* Traverse all online CPUs (hack requires contiguous range) */ | 1400 | /* Traverse all online CPUs (hack requires contiguous range) */ |
@@ -1414,7 +1413,7 @@ void smtc_get_new_mmu_context(struct mm_struct *mm, unsigned long cpu) | |||
1414 | mips_ihb(); | 1413 | mips_ihb(); |
1415 | } | 1414 | } |
1416 | tcstat = read_tc_c0_tcstatus(); | 1415 | tcstat = read_tc_c0_tcstatus(); |
1417 | smtc_live_asid[tlb][ASID_MASK(tcstat)] |= (asiduse)(0x1 << i); | 1416 | smtc_live_asid[tlb][(tcstat & ASID_MASK)] |= (asiduse)(0x1 << i); |
1418 | if (!prevhalt) | 1417 | if (!prevhalt) |
1419 | write_tc_c0_tchalt(0); | 1418 | write_tc_c0_tchalt(0); |
1420 | } | 1419 | } |
@@ -1423,7 +1422,7 @@ void smtc_get_new_mmu_context(struct mm_struct *mm, unsigned long cpu) | |||
1423 | asid = ASID_FIRST_VERSION; | 1422 | asid = ASID_FIRST_VERSION; |
1424 | local_flush_tlb_all(); /* start new asid cycle */ | 1423 | local_flush_tlb_all(); /* start new asid cycle */ |
1425 | } | 1424 | } |
1426 | } while (smtc_live_asid[tlb][ASID_MASK(asid)]); | 1425 | } while (smtc_live_asid[tlb][(asid & ASID_MASK)]); |
1427 | 1426 | ||
1428 | /* | 1427 | /* |
1429 | * SMTC shares the TLB within VPEs and possibly across all VPEs. | 1428 | * SMTC shares the TLB within VPEs and possibly across all VPEs. |
@@ -1461,7 +1460,7 @@ void smtc_flush_tlb_asid(unsigned long asid) | |||
1461 | tlb_read(); | 1460 | tlb_read(); |
1462 | ehb(); | 1461 | ehb(); |
1463 | ehi = read_c0_entryhi(); | 1462 | ehi = read_c0_entryhi(); |
1464 | if (ASID_MASK(ehi) == asid) { | 1463 | if ((ehi & ASID_MASK) == asid) { |
1465 | /* | 1464 | /* |
1466 | * Invalidate only entries with specified ASID, | 1465 | * Invalidate only entries with specified ASID, |
1467 | * makiing sure all entries differ. | 1466 | * makiing sure all entries differ. |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 77cff1f6d050..a75ae40184aa 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <asm/dsp.h> | 41 | #include <asm/dsp.h> |
42 | #include <asm/fpu.h> | 42 | #include <asm/fpu.h> |
43 | #include <asm/fpu_emulator.h> | 43 | #include <asm/fpu_emulator.h> |
44 | #include <asm/idle.h> | ||
44 | #include <asm/mipsregs.h> | 45 | #include <asm/mipsregs.h> |
45 | #include <asm/mipsmtregs.h> | 46 | #include <asm/mipsmtregs.h> |
46 | #include <asm/module.h> | 47 | #include <asm/module.h> |
@@ -57,7 +58,6 @@ | |||
57 | #include <asm/uasm.h> | 58 | #include <asm/uasm.h> |
58 | 59 | ||
59 | extern void check_wait(void); | 60 | extern void check_wait(void); |
60 | extern asmlinkage void r4k_wait(void); | ||
61 | extern asmlinkage void rollback_handle_int(void); | 61 | extern asmlinkage void rollback_handle_int(void); |
62 | extern asmlinkage void handle_int(void); | 62 | extern asmlinkage void handle_int(void); |
63 | extern u32 handle_tlbl[]; | 63 | extern u32 handle_tlbl[]; |
@@ -897,22 +897,24 @@ out_sigsegv: | |||
897 | 897 | ||
898 | asmlinkage void do_tr(struct pt_regs *regs) | 898 | asmlinkage void do_tr(struct pt_regs *regs) |
899 | { | 899 | { |
900 | unsigned int opcode, tcode = 0; | 900 | u32 opcode, tcode = 0; |
901 | u16 instr[2]; | 901 | u16 instr[2]; |
902 | unsigned long epc = exception_epc(regs); | 902 | unsigned long epc = msk_isa16_mode(exception_epc(regs)); |
903 | 903 | ||
904 | if ((__get_user(instr[0], (u16 __user *)msk_isa16_mode(epc))) || | 904 | if (get_isa16_mode(regs->cp0_epc)) { |
905 | (__get_user(instr[1], (u16 __user *)msk_isa16_mode(epc + 2)))) | 905 | if (__get_user(instr[0], (u16 __user *)(epc + 0)) || |
906 | __get_user(instr[1], (u16 __user *)(epc + 2))) | ||
906 | goto out_sigsegv; | 907 | goto out_sigsegv; |
907 | opcode = (instr[0] << 16) | instr[1]; | 908 | opcode = (instr[0] << 16) | instr[1]; |
908 | 909 | /* Immediate versions don't provide a code. */ | |
909 | /* Immediate versions don't provide a code. */ | 910 | if (!(opcode & OPCODE)) |
910 | if (!(opcode & OPCODE)) { | 911 | tcode = (opcode >> 12) & ((1 << 4) - 1); |
911 | if (get_isa16_mode(regs->cp0_epc)) | 912 | } else { |
912 | /* microMIPS */ | 913 | if (__get_user(opcode, (u32 __user *)epc)) |
913 | tcode = (opcode >> 12) & 0x1f; | 914 | goto out_sigsegv; |
914 | else | 915 | /* Immediate versions don't provide a code. */ |
915 | tcode = ((opcode >> 6) & ((1 << 10) - 1)); | 916 | if (!(opcode & OPCODE)) |
917 | tcode = (opcode >> 6) & ((1 << 10) - 1); | ||
916 | } | 918 | } |
917 | 919 | ||
918 | do_trap_or_bp(regs, tcode, "Trap"); | 920 | do_trap_or_bp(regs, tcode, "Trap"); |
@@ -1542,7 +1544,7 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs) | |||
1542 | extern char except_vec_vi, except_vec_vi_lui; | 1544 | extern char except_vec_vi, except_vec_vi_lui; |
1543 | extern char except_vec_vi_ori, except_vec_vi_end; | 1545 | extern char except_vec_vi_ori, except_vec_vi_end; |
1544 | extern char rollback_except_vec_vi; | 1546 | extern char rollback_except_vec_vi; |
1545 | char *vec_start = (cpu_wait == r4k_wait) ? | 1547 | char *vec_start = using_rollback_handler() ? |
1546 | &rollback_except_vec_vi : &except_vec_vi; | 1548 | &rollback_except_vec_vi : &except_vec_vi; |
1547 | #ifdef CONFIG_MIPS_MT_SMTC | 1549 | #ifdef CONFIG_MIPS_MT_SMTC |
1548 | /* | 1550 | /* |
@@ -1656,7 +1658,6 @@ void __cpuinit per_cpu_trap_init(bool is_boot_cpu) | |||
1656 | unsigned int cpu = smp_processor_id(); | 1658 | unsigned int cpu = smp_processor_id(); |
1657 | unsigned int status_set = ST0_CU0; | 1659 | unsigned int status_set = ST0_CU0; |
1658 | unsigned int hwrena = cpu_hwrena_impl_bits; | 1660 | unsigned int hwrena = cpu_hwrena_impl_bits; |
1659 | unsigned long asid = 0; | ||
1660 | #ifdef CONFIG_MIPS_MT_SMTC | 1661 | #ifdef CONFIG_MIPS_MT_SMTC |
1661 | int secondaryTC = 0; | 1662 | int secondaryTC = 0; |
1662 | int bootTC = (cpu == 0); | 1663 | int bootTC = (cpu == 0); |
@@ -1740,9 +1741,8 @@ void __cpuinit per_cpu_trap_init(bool is_boot_cpu) | |||
1740 | } | 1741 | } |
1741 | #endif /* CONFIG_MIPS_MT_SMTC */ | 1742 | #endif /* CONFIG_MIPS_MT_SMTC */ |
1742 | 1743 | ||
1743 | asid = ASID_FIRST_VERSION; | 1744 | if (!cpu_data[cpu].asid_cache) |
1744 | cpu_data[cpu].asid_cache = asid; | 1745 | cpu_data[cpu].asid_cache = ASID_FIRST_VERSION; |
1745 | TLBMISS_HANDLER_SETUP(); | ||
1746 | 1746 | ||
1747 | atomic_inc(&init_mm.mm_count); | 1747 | atomic_inc(&init_mm.mm_count); |
1748 | current->active_mm = &init_mm; | 1748 | current->active_mm = &init_mm; |
@@ -1814,10 +1814,8 @@ void __init trap_init(void) | |||
1814 | extern char except_vec4; | 1814 | extern char except_vec4; |
1815 | extern char except_vec3_r4000; | 1815 | extern char except_vec3_r4000; |
1816 | unsigned long i; | 1816 | unsigned long i; |
1817 | int rollback; | ||
1818 | 1817 | ||
1819 | check_wait(); | 1818 | check_wait(); |
1820 | rollback = (cpu_wait == r4k_wait); | ||
1821 | 1819 | ||
1822 | #if defined(CONFIG_KGDB) | 1820 | #if defined(CONFIG_KGDB) |
1823 | if (kgdb_early_setup) | 1821 | if (kgdb_early_setup) |
@@ -1894,7 +1892,8 @@ void __init trap_init(void) | |||
1894 | if (board_be_init) | 1892 | if (board_be_init) |
1895 | board_be_init(); | 1893 | board_be_init(); |
1896 | 1894 | ||
1897 | set_except_vector(0, rollback ? rollback_handle_int : handle_int); | 1895 | set_except_vector(0, using_rollback_handler() ? rollback_handle_int |
1896 | : handle_int); | ||
1898 | set_except_vector(1, handle_tlbm); | 1897 | set_except_vector(1, handle_tlbm); |
1899 | set_except_vector(2, handle_tlbl); | 1898 | set_except_vector(2, handle_tlbl); |
1900 | set_except_vector(3, handle_tlbs); | 1899 | set_except_vector(3, handle_tlbs); |
diff --git a/arch/mips/kvm/kvm_mips.c b/arch/mips/kvm/kvm_mips.c index e0dad0289797..d934b017f479 100644 --- a/arch/mips/kvm/kvm_mips.c +++ b/arch/mips/kvm/kvm_mips.c | |||
@@ -195,7 +195,7 @@ void kvm_arch_destroy_vm(struct kvm *kvm) | |||
195 | long | 195 | long |
196 | kvm_arch_dev_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) | 196 | kvm_arch_dev_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) |
197 | { | 197 | { |
198 | return -EINVAL; | 198 | return -ENOIOCTLCMD; |
199 | } | 199 | } |
200 | 200 | ||
201 | void kvm_arch_free_memslot(struct kvm_memory_slot *free, | 201 | void kvm_arch_free_memslot(struct kvm_memory_slot *free, |
@@ -401,7 +401,7 @@ int | |||
401 | kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, | 401 | kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, |
402 | struct kvm_guest_debug *dbg) | 402 | struct kvm_guest_debug *dbg) |
403 | { | 403 | { |
404 | return -EINVAL; | 404 | return -ENOIOCTLCMD; |
405 | } | 405 | } |
406 | 406 | ||
407 | int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) | 407 | int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) |
@@ -475,14 +475,223 @@ int | |||
475 | kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu, | 475 | kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu, |
476 | struct kvm_mp_state *mp_state) | 476 | struct kvm_mp_state *mp_state) |
477 | { | 477 | { |
478 | return -EINVAL; | 478 | return -ENOIOCTLCMD; |
479 | } | 479 | } |
480 | 480 | ||
481 | int | 481 | int |
482 | kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, | 482 | kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, |
483 | struct kvm_mp_state *mp_state) | 483 | struct kvm_mp_state *mp_state) |
484 | { | 484 | { |
485 | return -EINVAL; | 485 | return -ENOIOCTLCMD; |
486 | } | ||
487 | |||
488 | #define KVM_REG_MIPS_CP0_INDEX (0x10000 + 8 * 0 + 0) | ||
489 | #define KVM_REG_MIPS_CP0_ENTRYLO0 (0x10000 + 8 * 2 + 0) | ||
490 | #define KVM_REG_MIPS_CP0_ENTRYLO1 (0x10000 + 8 * 3 + 0) | ||
491 | #define KVM_REG_MIPS_CP0_CONTEXT (0x10000 + 8 * 4 + 0) | ||
492 | #define KVM_REG_MIPS_CP0_USERLOCAL (0x10000 + 8 * 4 + 2) | ||
493 | #define KVM_REG_MIPS_CP0_PAGEMASK (0x10000 + 8 * 5 + 0) | ||
494 | #define KVM_REG_MIPS_CP0_PAGEGRAIN (0x10000 + 8 * 5 + 1) | ||
495 | #define KVM_REG_MIPS_CP0_WIRED (0x10000 + 8 * 6 + 0) | ||
496 | #define KVM_REG_MIPS_CP0_HWRENA (0x10000 + 8 * 7 + 0) | ||
497 | #define KVM_REG_MIPS_CP0_BADVADDR (0x10000 + 8 * 8 + 0) | ||
498 | #define KVM_REG_MIPS_CP0_COUNT (0x10000 + 8 * 9 + 0) | ||
499 | #define KVM_REG_MIPS_CP0_ENTRYHI (0x10000 + 8 * 10 + 0) | ||
500 | #define KVM_REG_MIPS_CP0_COMPARE (0x10000 + 8 * 11 + 0) | ||
501 | #define KVM_REG_MIPS_CP0_STATUS (0x10000 + 8 * 12 + 0) | ||
502 | #define KVM_REG_MIPS_CP0_CAUSE (0x10000 + 8 * 13 + 0) | ||
503 | #define KVM_REG_MIPS_CP0_EBASE (0x10000 + 8 * 15 + 1) | ||
504 | #define KVM_REG_MIPS_CP0_CONFIG (0x10000 + 8 * 16 + 0) | ||
505 | #define KVM_REG_MIPS_CP0_CONFIG1 (0x10000 + 8 * 16 + 1) | ||
506 | #define KVM_REG_MIPS_CP0_CONFIG2 (0x10000 + 8 * 16 + 2) | ||
507 | #define KVM_REG_MIPS_CP0_CONFIG3 (0x10000 + 8 * 16 + 3) | ||
508 | #define KVM_REG_MIPS_CP0_CONFIG7 (0x10000 + 8 * 16 + 7) | ||
509 | #define KVM_REG_MIPS_CP0_XCONTEXT (0x10000 + 8 * 20 + 0) | ||
510 | #define KVM_REG_MIPS_CP0_ERROREPC (0x10000 + 8 * 30 + 0) | ||
511 | |||
512 | static u64 kvm_mips_get_one_regs[] = { | ||
513 | KVM_REG_MIPS_R0, | ||
514 | KVM_REG_MIPS_R1, | ||
515 | KVM_REG_MIPS_R2, | ||
516 | KVM_REG_MIPS_R3, | ||
517 | KVM_REG_MIPS_R4, | ||
518 | KVM_REG_MIPS_R5, | ||
519 | KVM_REG_MIPS_R6, | ||
520 | KVM_REG_MIPS_R7, | ||
521 | KVM_REG_MIPS_R8, | ||
522 | KVM_REG_MIPS_R9, | ||
523 | KVM_REG_MIPS_R10, | ||
524 | KVM_REG_MIPS_R11, | ||
525 | KVM_REG_MIPS_R12, | ||
526 | KVM_REG_MIPS_R13, | ||
527 | KVM_REG_MIPS_R14, | ||
528 | KVM_REG_MIPS_R15, | ||
529 | KVM_REG_MIPS_R16, | ||
530 | KVM_REG_MIPS_R17, | ||
531 | KVM_REG_MIPS_R18, | ||
532 | KVM_REG_MIPS_R19, | ||
533 | KVM_REG_MIPS_R20, | ||
534 | KVM_REG_MIPS_R21, | ||
535 | KVM_REG_MIPS_R22, | ||
536 | KVM_REG_MIPS_R23, | ||
537 | KVM_REG_MIPS_R24, | ||
538 | KVM_REG_MIPS_R25, | ||
539 | KVM_REG_MIPS_R26, | ||
540 | KVM_REG_MIPS_R27, | ||
541 | KVM_REG_MIPS_R28, | ||
542 | KVM_REG_MIPS_R29, | ||
543 | KVM_REG_MIPS_R30, | ||
544 | KVM_REG_MIPS_R31, | ||
545 | |||
546 | KVM_REG_MIPS_HI, | ||
547 | KVM_REG_MIPS_LO, | ||
548 | KVM_REG_MIPS_PC, | ||
549 | |||
550 | KVM_REG_MIPS_CP0_INDEX, | ||
551 | KVM_REG_MIPS_CP0_CONTEXT, | ||
552 | KVM_REG_MIPS_CP0_PAGEMASK, | ||
553 | KVM_REG_MIPS_CP0_WIRED, | ||
554 | KVM_REG_MIPS_CP0_BADVADDR, | ||
555 | KVM_REG_MIPS_CP0_ENTRYHI, | ||
556 | KVM_REG_MIPS_CP0_STATUS, | ||
557 | KVM_REG_MIPS_CP0_CAUSE, | ||
558 | /* EPC set via kvm_regs, et al. */ | ||
559 | KVM_REG_MIPS_CP0_CONFIG, | ||
560 | KVM_REG_MIPS_CP0_CONFIG1, | ||
561 | KVM_REG_MIPS_CP0_CONFIG2, | ||
562 | KVM_REG_MIPS_CP0_CONFIG3, | ||
563 | KVM_REG_MIPS_CP0_CONFIG7, | ||
564 | KVM_REG_MIPS_CP0_ERROREPC | ||
565 | }; | ||
566 | |||
567 | static int kvm_mips_get_reg(struct kvm_vcpu *vcpu, | ||
568 | const struct kvm_one_reg *reg) | ||
569 | { | ||
570 | u64 __user *uaddr = (u64 __user *)(long)reg->addr; | ||
571 | |||
572 | struct mips_coproc *cop0 = vcpu->arch.cop0; | ||
573 | s64 v; | ||
574 | |||
575 | switch (reg->id) { | ||
576 | case KVM_REG_MIPS_R0 ... KVM_REG_MIPS_R31: | ||
577 | v = (long)vcpu->arch.gprs[reg->id - KVM_REG_MIPS_R0]; | ||
578 | break; | ||
579 | case KVM_REG_MIPS_HI: | ||
580 | v = (long)vcpu->arch.hi; | ||
581 | break; | ||
582 | case KVM_REG_MIPS_LO: | ||
583 | v = (long)vcpu->arch.lo; | ||
584 | break; | ||
585 | case KVM_REG_MIPS_PC: | ||
586 | v = (long)vcpu->arch.pc; | ||
587 | break; | ||
588 | |||
589 | case KVM_REG_MIPS_CP0_INDEX: | ||
590 | v = (long)kvm_read_c0_guest_index(cop0); | ||
591 | break; | ||
592 | case KVM_REG_MIPS_CP0_CONTEXT: | ||
593 | v = (long)kvm_read_c0_guest_context(cop0); | ||
594 | break; | ||
595 | case KVM_REG_MIPS_CP0_PAGEMASK: | ||
596 | v = (long)kvm_read_c0_guest_pagemask(cop0); | ||
597 | break; | ||
598 | case KVM_REG_MIPS_CP0_WIRED: | ||
599 | v = (long)kvm_read_c0_guest_wired(cop0); | ||
600 | break; | ||
601 | case KVM_REG_MIPS_CP0_BADVADDR: | ||
602 | v = (long)kvm_read_c0_guest_badvaddr(cop0); | ||
603 | break; | ||
604 | case KVM_REG_MIPS_CP0_ENTRYHI: | ||
605 | v = (long)kvm_read_c0_guest_entryhi(cop0); | ||
606 | break; | ||
607 | case KVM_REG_MIPS_CP0_STATUS: | ||
608 | v = (long)kvm_read_c0_guest_status(cop0); | ||
609 | break; | ||
610 | case KVM_REG_MIPS_CP0_CAUSE: | ||
611 | v = (long)kvm_read_c0_guest_cause(cop0); | ||
612 | break; | ||
613 | case KVM_REG_MIPS_CP0_ERROREPC: | ||
614 | v = (long)kvm_read_c0_guest_errorepc(cop0); | ||
615 | break; | ||
616 | case KVM_REG_MIPS_CP0_CONFIG: | ||
617 | v = (long)kvm_read_c0_guest_config(cop0); | ||
618 | break; | ||
619 | case KVM_REG_MIPS_CP0_CONFIG1: | ||
620 | v = (long)kvm_read_c0_guest_config1(cop0); | ||
621 | break; | ||
622 | case KVM_REG_MIPS_CP0_CONFIG2: | ||
623 | v = (long)kvm_read_c0_guest_config2(cop0); | ||
624 | break; | ||
625 | case KVM_REG_MIPS_CP0_CONFIG3: | ||
626 | v = (long)kvm_read_c0_guest_config3(cop0); | ||
627 | break; | ||
628 | case KVM_REG_MIPS_CP0_CONFIG7: | ||
629 | v = (long)kvm_read_c0_guest_config7(cop0); | ||
630 | break; | ||
631 | default: | ||
632 | return -EINVAL; | ||
633 | } | ||
634 | return put_user(v, uaddr); | ||
635 | } | ||
636 | |||
637 | static int kvm_mips_set_reg(struct kvm_vcpu *vcpu, | ||
638 | const struct kvm_one_reg *reg) | ||
639 | { | ||
640 | u64 __user *uaddr = (u64 __user *)(long)reg->addr; | ||
641 | struct mips_coproc *cop0 = vcpu->arch.cop0; | ||
642 | u64 v; | ||
643 | |||
644 | if (get_user(v, uaddr) != 0) | ||
645 | return -EFAULT; | ||
646 | |||
647 | switch (reg->id) { | ||
648 | case KVM_REG_MIPS_R0: | ||
649 | /* Silently ignore requests to set $0 */ | ||
650 | break; | ||
651 | case KVM_REG_MIPS_R1 ... KVM_REG_MIPS_R31: | ||
652 | vcpu->arch.gprs[reg->id - KVM_REG_MIPS_R0] = v; | ||
653 | break; | ||
654 | case KVM_REG_MIPS_HI: | ||
655 | vcpu->arch.hi = v; | ||
656 | break; | ||
657 | case KVM_REG_MIPS_LO: | ||
658 | vcpu->arch.lo = v; | ||
659 | break; | ||
660 | case KVM_REG_MIPS_PC: | ||
661 | vcpu->arch.pc = v; | ||
662 | break; | ||
663 | |||
664 | case KVM_REG_MIPS_CP0_INDEX: | ||
665 | kvm_write_c0_guest_index(cop0, v); | ||
666 | break; | ||
667 | case KVM_REG_MIPS_CP0_CONTEXT: | ||
668 | kvm_write_c0_guest_context(cop0, v); | ||
669 | break; | ||
670 | case KVM_REG_MIPS_CP0_PAGEMASK: | ||
671 | kvm_write_c0_guest_pagemask(cop0, v); | ||
672 | break; | ||
673 | case KVM_REG_MIPS_CP0_WIRED: | ||
674 | kvm_write_c0_guest_wired(cop0, v); | ||
675 | break; | ||
676 | case KVM_REG_MIPS_CP0_BADVADDR: | ||
677 | kvm_write_c0_guest_badvaddr(cop0, v); | ||
678 | break; | ||
679 | case KVM_REG_MIPS_CP0_ENTRYHI: | ||
680 | kvm_write_c0_guest_entryhi(cop0, v); | ||
681 | break; | ||
682 | case KVM_REG_MIPS_CP0_STATUS: | ||
683 | kvm_write_c0_guest_status(cop0, v); | ||
684 | break; | ||
685 | case KVM_REG_MIPS_CP0_CAUSE: | ||
686 | kvm_write_c0_guest_cause(cop0, v); | ||
687 | break; | ||
688 | case KVM_REG_MIPS_CP0_ERROREPC: | ||
689 | kvm_write_c0_guest_errorepc(cop0, v); | ||
690 | break; | ||
691 | default: | ||
692 | return -EINVAL; | ||
693 | } | ||
694 | return 0; | ||
486 | } | 695 | } |
487 | 696 | ||
488 | long | 697 | long |
@@ -491,9 +700,38 @@ kvm_arch_vcpu_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) | |||
491 | struct kvm_vcpu *vcpu = filp->private_data; | 700 | struct kvm_vcpu *vcpu = filp->private_data; |
492 | void __user *argp = (void __user *)arg; | 701 | void __user *argp = (void __user *)arg; |
493 | long r; | 702 | long r; |
494 | int intr; | ||
495 | 703 | ||
496 | switch (ioctl) { | 704 | switch (ioctl) { |
705 | case KVM_SET_ONE_REG: | ||
706 | case KVM_GET_ONE_REG: { | ||
707 | struct kvm_one_reg reg; | ||
708 | if (copy_from_user(®, argp, sizeof(reg))) | ||
709 | return -EFAULT; | ||
710 | if (ioctl == KVM_SET_ONE_REG) | ||
711 | return kvm_mips_set_reg(vcpu, ®); | ||
712 | else | ||
713 | return kvm_mips_get_reg(vcpu, ®); | ||
714 | } | ||
715 | case KVM_GET_REG_LIST: { | ||
716 | struct kvm_reg_list __user *user_list = argp; | ||
717 | u64 __user *reg_dest; | ||
718 | struct kvm_reg_list reg_list; | ||
719 | unsigned n; | ||
720 | |||
721 | if (copy_from_user(®_list, user_list, sizeof(reg_list))) | ||
722 | return -EFAULT; | ||
723 | n = reg_list.n; | ||
724 | reg_list.n = ARRAY_SIZE(kvm_mips_get_one_regs); | ||
725 | if (copy_to_user(user_list, ®_list, sizeof(reg_list))) | ||
726 | return -EFAULT; | ||
727 | if (n < reg_list.n) | ||
728 | return -E2BIG; | ||
729 | reg_dest = user_list->reg; | ||
730 | if (copy_to_user(reg_dest, kvm_mips_get_one_regs, | ||
731 | sizeof(kvm_mips_get_one_regs))) | ||
732 | return -EFAULT; | ||
733 | return 0; | ||
734 | } | ||
497 | case KVM_NMI: | 735 | case KVM_NMI: |
498 | /* Treat the NMI as a CPU reset */ | 736 | /* Treat the NMI as a CPU reset */ |
499 | r = kvm_mips_reset_vcpu(vcpu); | 737 | r = kvm_mips_reset_vcpu(vcpu); |
@@ -505,8 +743,6 @@ kvm_arch_vcpu_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) | |||
505 | if (copy_from_user(&irq, argp, sizeof(irq))) | 743 | if (copy_from_user(&irq, argp, sizeof(irq))) |
506 | goto out; | 744 | goto out; |
507 | 745 | ||
508 | intr = (int)irq.irq; | ||
509 | |||
510 | kvm_debug("[%d] %s: irq: %d\n", vcpu->vcpu_id, __func__, | 746 | kvm_debug("[%d] %s: irq: %d\n", vcpu->vcpu_id, __func__, |
511 | irq.irq); | 747 | irq.irq); |
512 | 748 | ||
@@ -514,7 +750,7 @@ kvm_arch_vcpu_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) | |||
514 | break; | 750 | break; |
515 | } | 751 | } |
516 | default: | 752 | default: |
517 | r = -EINVAL; | 753 | r = -ENOIOCTLCMD; |
518 | } | 754 | } |
519 | 755 | ||
520 | out: | 756 | out: |
@@ -565,7 +801,7 @@ long kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) | |||
565 | 801 | ||
566 | switch (ioctl) { | 802 | switch (ioctl) { |
567 | default: | 803 | default: |
568 | r = -EINVAL; | 804 | r = -ENOIOCTLCMD; |
569 | } | 805 | } |
570 | 806 | ||
571 | return r; | 807 | return r; |
@@ -593,13 +829,13 @@ void kvm_arch_exit(void) | |||
593 | int | 829 | int |
594 | kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs) | 830 | kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs) |
595 | { | 831 | { |
596 | return -ENOTSUPP; | 832 | return -ENOIOCTLCMD; |
597 | } | 833 | } |
598 | 834 | ||
599 | int | 835 | int |
600 | kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs) | 836 | kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs) |
601 | { | 837 | { |
602 | return -ENOTSUPP; | 838 | return -ENOIOCTLCMD; |
603 | } | 839 | } |
604 | 840 | ||
605 | int kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) | 841 | int kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) |
@@ -609,12 +845,12 @@ int kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) | |||
609 | 845 | ||
610 | int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) | 846 | int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) |
611 | { | 847 | { |
612 | return -ENOTSUPP; | 848 | return -ENOIOCTLCMD; |
613 | } | 849 | } |
614 | 850 | ||
615 | int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) | 851 | int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) |
616 | { | 852 | { |
617 | return -ENOTSUPP; | 853 | return -ENOIOCTLCMD; |
618 | } | 854 | } |
619 | 855 | ||
620 | int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf) | 856 | int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf) |
@@ -627,6 +863,9 @@ int kvm_dev_ioctl_check_extension(long ext) | |||
627 | int r; | 863 | int r; |
628 | 864 | ||
629 | switch (ext) { | 865 | switch (ext) { |
866 | case KVM_CAP_ONE_REG: | ||
867 | r = 1; | ||
868 | break; | ||
630 | case KVM_CAP_COALESCED_MMIO: | 869 | case KVM_CAP_COALESCED_MMIO: |
631 | r = KVM_COALESCED_MMIO_PAGE_OFFSET; | 870 | r = KVM_COALESCED_MMIO_PAGE_OFFSET; |
632 | break; | 871 | break; |
@@ -635,7 +874,6 @@ int kvm_dev_ioctl_check_extension(long ext) | |||
635 | break; | 874 | break; |
636 | } | 875 | } |
637 | return r; | 876 | return r; |
638 | |||
639 | } | 877 | } |
640 | 878 | ||
641 | int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu) | 879 | int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu) |
@@ -677,28 +915,28 @@ int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) | |||
677 | { | 915 | { |
678 | int i; | 916 | int i; |
679 | 917 | ||
680 | for (i = 0; i < 32; i++) | 918 | for (i = 1; i < ARRAY_SIZE(vcpu->arch.gprs); i++) |
681 | vcpu->arch.gprs[i] = regs->gprs[i]; | 919 | vcpu->arch.gprs[i] = regs->gpr[i]; |
682 | 920 | vcpu->arch.gprs[0] = 0; /* zero is special, and cannot be set. */ | |
683 | vcpu->arch.hi = regs->hi; | 921 | vcpu->arch.hi = regs->hi; |
684 | vcpu->arch.lo = regs->lo; | 922 | vcpu->arch.lo = regs->lo; |
685 | vcpu->arch.pc = regs->pc; | 923 | vcpu->arch.pc = regs->pc; |
686 | 924 | ||
687 | return kvm_mips_callbacks->vcpu_ioctl_set_regs(vcpu, regs); | 925 | return 0; |
688 | } | 926 | } |
689 | 927 | ||
690 | int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) | 928 | int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) |
691 | { | 929 | { |
692 | int i; | 930 | int i; |
693 | 931 | ||
694 | for (i = 0; i < 32; i++) | 932 | for (i = 0; i < ARRAY_SIZE(vcpu->arch.gprs); i++) |
695 | regs->gprs[i] = vcpu->arch.gprs[i]; | 933 | regs->gpr[i] = vcpu->arch.gprs[i]; |
696 | 934 | ||
697 | regs->hi = vcpu->arch.hi; | 935 | regs->hi = vcpu->arch.hi; |
698 | regs->lo = vcpu->arch.lo; | 936 | regs->lo = vcpu->arch.lo; |
699 | regs->pc = vcpu->arch.pc; | 937 | regs->pc = vcpu->arch.pc; |
700 | 938 | ||
701 | return kvm_mips_callbacks->vcpu_ioctl_get_regs(vcpu, regs); | 939 | return 0; |
702 | } | 940 | } |
703 | 941 | ||
704 | void kvm_mips_comparecount_func(unsigned long data) | 942 | void kvm_mips_comparecount_func(unsigned long data) |
diff --git a/arch/mips/kvm/kvm_mips_emul.c b/arch/mips/kvm/kvm_mips_emul.c index 2b2bac9a40aa..4b6274b47f33 100644 --- a/arch/mips/kvm/kvm_mips_emul.c +++ b/arch/mips/kvm/kvm_mips_emul.c | |||
@@ -525,16 +525,18 @@ kvm_mips_emulate_CP0(uint32_t inst, uint32_t *opc, uint32_t cause, | |||
525 | printk("MTCz, cop0->reg[EBASE]: %#lx\n", | 525 | printk("MTCz, cop0->reg[EBASE]: %#lx\n", |
526 | kvm_read_c0_guest_ebase(cop0)); | 526 | kvm_read_c0_guest_ebase(cop0)); |
527 | } else if (rd == MIPS_CP0_TLB_HI && sel == 0) { | 527 | } else if (rd == MIPS_CP0_TLB_HI && sel == 0) { |
528 | uint32_t nasid = ASID_MASK(vcpu->arch.gprs[rt]); | 528 | uint32_t nasid = |
529 | vcpu->arch.gprs[rt] & ASID_MASK; | ||
529 | if ((KSEGX(vcpu->arch.gprs[rt]) != CKSEG0) | 530 | if ((KSEGX(vcpu->arch.gprs[rt]) != CKSEG0) |
530 | && | 531 | && |
531 | (ASID_MASK(kvm_read_c0_guest_entryhi(cop0)) | 532 | ((kvm_read_c0_guest_entryhi(cop0) & |
532 | != nasid)) { | 533 | ASID_MASK) != nasid)) { |
533 | 534 | ||
534 | kvm_debug | 535 | kvm_debug |
535 | ("MTCz, change ASID from %#lx to %#lx\n", | 536 | ("MTCz, change ASID from %#lx to %#lx\n", |
536 | ASID_MASK(kvm_read_c0_guest_entryhi(cop0)), | 537 | kvm_read_c0_guest_entryhi(cop0) & |
537 | ASID_MASK(vcpu->arch.gprs[rt])); | 538 | ASID_MASK, |
539 | vcpu->arch.gprs[rt] & ASID_MASK); | ||
538 | 540 | ||
539 | /* Blow away the shadow host TLBs */ | 541 | /* Blow away the shadow host TLBs */ |
540 | kvm_mips_flush_host_tlb(1); | 542 | kvm_mips_flush_host_tlb(1); |
@@ -986,7 +988,8 @@ kvm_mips_emulate_cache(uint32_t inst, uint32_t *opc, uint32_t cause, | |||
986 | * resulting handler will do the right thing | 988 | * resulting handler will do the right thing |
987 | */ | 989 | */ |
988 | index = kvm_mips_guest_tlb_lookup(vcpu, (va & VPN2_MASK) | | 990 | index = kvm_mips_guest_tlb_lookup(vcpu, (va & VPN2_MASK) | |
989 | ASID_MASK(kvm_read_c0_guest_entryhi(cop0))); | 991 | (kvm_read_c0_guest_entryhi |
992 | (cop0) & ASID_MASK)); | ||
990 | 993 | ||
991 | if (index < 0) { | 994 | if (index < 0) { |
992 | vcpu->arch.host_cp0_entryhi = (va & VPN2_MASK); | 995 | vcpu->arch.host_cp0_entryhi = (va & VPN2_MASK); |
@@ -1151,7 +1154,7 @@ kvm_mips_emulate_tlbmiss_ld(unsigned long cause, uint32_t *opc, | |||
1151 | struct kvm_vcpu_arch *arch = &vcpu->arch; | 1154 | struct kvm_vcpu_arch *arch = &vcpu->arch; |
1152 | enum emulation_result er = EMULATE_DONE; | 1155 | enum emulation_result er = EMULATE_DONE; |
1153 | unsigned long entryhi = (vcpu->arch. host_cp0_badvaddr & VPN2_MASK) | | 1156 | unsigned long entryhi = (vcpu->arch. host_cp0_badvaddr & VPN2_MASK) | |
1154 | ASID_MASK(kvm_read_c0_guest_entryhi(cop0)); | 1157 | (kvm_read_c0_guest_entryhi(cop0) & ASID_MASK); |
1155 | 1158 | ||
1156 | if ((kvm_read_c0_guest_status(cop0) & ST0_EXL) == 0) { | 1159 | if ((kvm_read_c0_guest_status(cop0) & ST0_EXL) == 0) { |
1157 | /* save old pc */ | 1160 | /* save old pc */ |
@@ -1198,7 +1201,7 @@ kvm_mips_emulate_tlbinv_ld(unsigned long cause, uint32_t *opc, | |||
1198 | enum emulation_result er = EMULATE_DONE; | 1201 | enum emulation_result er = EMULATE_DONE; |
1199 | unsigned long entryhi = | 1202 | unsigned long entryhi = |
1200 | (vcpu->arch.host_cp0_badvaddr & VPN2_MASK) | | 1203 | (vcpu->arch.host_cp0_badvaddr & VPN2_MASK) | |
1201 | ASID_MASK(kvm_read_c0_guest_entryhi(cop0)); | 1204 | (kvm_read_c0_guest_entryhi(cop0) & ASID_MASK); |
1202 | 1205 | ||
1203 | if ((kvm_read_c0_guest_status(cop0) & ST0_EXL) == 0) { | 1206 | if ((kvm_read_c0_guest_status(cop0) & ST0_EXL) == 0) { |
1204 | /* save old pc */ | 1207 | /* save old pc */ |
@@ -1243,7 +1246,7 @@ kvm_mips_emulate_tlbmiss_st(unsigned long cause, uint32_t *opc, | |||
1243 | struct kvm_vcpu_arch *arch = &vcpu->arch; | 1246 | struct kvm_vcpu_arch *arch = &vcpu->arch; |
1244 | enum emulation_result er = EMULATE_DONE; | 1247 | enum emulation_result er = EMULATE_DONE; |
1245 | unsigned long entryhi = (vcpu->arch.host_cp0_badvaddr & VPN2_MASK) | | 1248 | unsigned long entryhi = (vcpu->arch.host_cp0_badvaddr & VPN2_MASK) | |
1246 | ASID_MASK(kvm_read_c0_guest_entryhi(cop0)); | 1249 | (kvm_read_c0_guest_entryhi(cop0) & ASID_MASK); |
1247 | 1250 | ||
1248 | if ((kvm_read_c0_guest_status(cop0) & ST0_EXL) == 0) { | 1251 | if ((kvm_read_c0_guest_status(cop0) & ST0_EXL) == 0) { |
1249 | /* save old pc */ | 1252 | /* save old pc */ |
@@ -1287,7 +1290,7 @@ kvm_mips_emulate_tlbinv_st(unsigned long cause, uint32_t *opc, | |||
1287 | struct kvm_vcpu_arch *arch = &vcpu->arch; | 1290 | struct kvm_vcpu_arch *arch = &vcpu->arch; |
1288 | enum emulation_result er = EMULATE_DONE; | 1291 | enum emulation_result er = EMULATE_DONE; |
1289 | unsigned long entryhi = (vcpu->arch.host_cp0_badvaddr & VPN2_MASK) | | 1292 | unsigned long entryhi = (vcpu->arch.host_cp0_badvaddr & VPN2_MASK) | |
1290 | ASID_MASK(kvm_read_c0_guest_entryhi(cop0)); | 1293 | (kvm_read_c0_guest_entryhi(cop0) & ASID_MASK); |
1291 | 1294 | ||
1292 | if ((kvm_read_c0_guest_status(cop0) & ST0_EXL) == 0) { | 1295 | if ((kvm_read_c0_guest_status(cop0) & ST0_EXL) == 0) { |
1293 | /* save old pc */ | 1296 | /* save old pc */ |
@@ -1356,7 +1359,7 @@ kvm_mips_emulate_tlbmod(unsigned long cause, uint32_t *opc, | |||
1356 | { | 1359 | { |
1357 | struct mips_coproc *cop0 = vcpu->arch.cop0; | 1360 | struct mips_coproc *cop0 = vcpu->arch.cop0; |
1358 | unsigned long entryhi = (vcpu->arch.host_cp0_badvaddr & VPN2_MASK) | | 1361 | unsigned long entryhi = (vcpu->arch.host_cp0_badvaddr & VPN2_MASK) | |
1359 | ASID_MASK(kvm_read_c0_guest_entryhi(cop0)); | 1362 | (kvm_read_c0_guest_entryhi(cop0) & ASID_MASK); |
1360 | struct kvm_vcpu_arch *arch = &vcpu->arch; | 1363 | struct kvm_vcpu_arch *arch = &vcpu->arch; |
1361 | enum emulation_result er = EMULATE_DONE; | 1364 | enum emulation_result er = EMULATE_DONE; |
1362 | 1365 | ||
@@ -1783,8 +1786,8 @@ kvm_mips_handle_tlbmiss(unsigned long cause, uint32_t *opc, | |||
1783 | */ | 1786 | */ |
1784 | index = kvm_mips_guest_tlb_lookup(vcpu, | 1787 | index = kvm_mips_guest_tlb_lookup(vcpu, |
1785 | (va & VPN2_MASK) | | 1788 | (va & VPN2_MASK) | |
1786 | ASID_MASK(kvm_read_c0_guest_entryhi | 1789 | (kvm_read_c0_guest_entryhi |
1787 | (vcpu->arch.cop0))); | 1790 | (vcpu->arch.cop0) & ASID_MASK)); |
1788 | if (index < 0) { | 1791 | if (index < 0) { |
1789 | if (exccode == T_TLB_LD_MISS) { | 1792 | if (exccode == T_TLB_LD_MISS) { |
1790 | er = kvm_mips_emulate_tlbmiss_ld(cause, opc, run, vcpu); | 1793 | er = kvm_mips_emulate_tlbmiss_ld(cause, opc, run, vcpu); |
diff --git a/arch/mips/kvm/kvm_tlb.c b/arch/mips/kvm/kvm_tlb.c index 89511a9258d3..c777dd36d4a8 100644 --- a/arch/mips/kvm/kvm_tlb.c +++ b/arch/mips/kvm/kvm_tlb.c | |||
@@ -17,6 +17,8 @@ | |||
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <linux/kvm_host.h> | 19 | #include <linux/kvm_host.h> |
20 | #include <linux/srcu.h> | ||
21 | |||
20 | 22 | ||
21 | #include <asm/cpu.h> | 23 | #include <asm/cpu.h> |
22 | #include <asm/bootinfo.h> | 24 | #include <asm/bootinfo.h> |
@@ -51,13 +53,13 @@ EXPORT_SYMBOL(kvm_mips_is_error_pfn); | |||
51 | 53 | ||
52 | uint32_t kvm_mips_get_kernel_asid(struct kvm_vcpu *vcpu) | 54 | uint32_t kvm_mips_get_kernel_asid(struct kvm_vcpu *vcpu) |
53 | { | 55 | { |
54 | return ASID_MASK(vcpu->arch.guest_kernel_asid[smp_processor_id()]); | 56 | return vcpu->arch.guest_kernel_asid[smp_processor_id()] & ASID_MASK; |
55 | } | 57 | } |
56 | 58 | ||
57 | 59 | ||
58 | uint32_t kvm_mips_get_user_asid(struct kvm_vcpu *vcpu) | 60 | uint32_t kvm_mips_get_user_asid(struct kvm_vcpu *vcpu) |
59 | { | 61 | { |
60 | return ASID_MASK(vcpu->arch.guest_user_asid[smp_processor_id()]); | 62 | return vcpu->arch.guest_user_asid[smp_processor_id()] & ASID_MASK; |
61 | } | 63 | } |
62 | 64 | ||
63 | inline uint32_t kvm_mips_get_commpage_asid (struct kvm_vcpu *vcpu) | 65 | inline uint32_t kvm_mips_get_commpage_asid (struct kvm_vcpu *vcpu) |
@@ -84,7 +86,7 @@ void kvm_mips_dump_host_tlbs(void) | |||
84 | old_pagemask = read_c0_pagemask(); | 86 | old_pagemask = read_c0_pagemask(); |
85 | 87 | ||
86 | printk("HOST TLBs:\n"); | 88 | printk("HOST TLBs:\n"); |
87 | printk("ASID: %#lx\n", ASID_MASK(read_c0_entryhi())); | 89 | printk("ASID: %#lx\n", read_c0_entryhi() & ASID_MASK); |
88 | 90 | ||
89 | for (i = 0; i < current_cpu_data.tlbsize; i++) { | 91 | for (i = 0; i < current_cpu_data.tlbsize; i++) { |
90 | write_c0_index(i); | 92 | write_c0_index(i); |
@@ -169,21 +171,27 @@ void kvm_mips_dump_shadow_tlbs(struct kvm_vcpu *vcpu) | |||
169 | } | 171 | } |
170 | } | 172 | } |
171 | 173 | ||
172 | static void kvm_mips_map_page(struct kvm *kvm, gfn_t gfn) | 174 | static int kvm_mips_map_page(struct kvm *kvm, gfn_t gfn) |
173 | { | 175 | { |
176 | int srcu_idx, err = 0; | ||
174 | pfn_t pfn; | 177 | pfn_t pfn; |
175 | 178 | ||
176 | if (kvm->arch.guest_pmap[gfn] != KVM_INVALID_PAGE) | 179 | if (kvm->arch.guest_pmap[gfn] != KVM_INVALID_PAGE) |
177 | return; | 180 | return 0; |
178 | 181 | ||
182 | srcu_idx = srcu_read_lock(&kvm->srcu); | ||
179 | pfn = kvm_mips_gfn_to_pfn(kvm, gfn); | 183 | pfn = kvm_mips_gfn_to_pfn(kvm, gfn); |
180 | 184 | ||
181 | if (kvm_mips_is_error_pfn(pfn)) { | 185 | if (kvm_mips_is_error_pfn(pfn)) { |
182 | panic("Couldn't get pfn for gfn %#" PRIx64 "!\n", gfn); | 186 | kvm_err("Couldn't get pfn for gfn %#" PRIx64 "!\n", gfn); |
187 | err = -EFAULT; | ||
188 | goto out; | ||
183 | } | 189 | } |
184 | 190 | ||
185 | kvm->arch.guest_pmap[gfn] = pfn; | 191 | kvm->arch.guest_pmap[gfn] = pfn; |
186 | return; | 192 | out: |
193 | srcu_read_unlock(&kvm->srcu, srcu_idx); | ||
194 | return err; | ||
187 | } | 195 | } |
188 | 196 | ||
189 | /* Translate guest KSEG0 addresses to Host PA */ | 197 | /* Translate guest KSEG0 addresses to Host PA */ |
@@ -207,7 +215,10 @@ unsigned long kvm_mips_translate_guest_kseg0_to_hpa(struct kvm_vcpu *vcpu, | |||
207 | gva); | 215 | gva); |
208 | return KVM_INVALID_PAGE; | 216 | return KVM_INVALID_PAGE; |
209 | } | 217 | } |
210 | kvm_mips_map_page(vcpu->kvm, gfn); | 218 | |
219 | if (kvm_mips_map_page(vcpu->kvm, gfn) < 0) | ||
220 | return KVM_INVALID_ADDR; | ||
221 | |||
211 | return (kvm->arch.guest_pmap[gfn] << PAGE_SHIFT) + offset; | 222 | return (kvm->arch.guest_pmap[gfn] << PAGE_SHIFT) + offset; |
212 | } | 223 | } |
213 | 224 | ||
@@ -310,8 +321,11 @@ int kvm_mips_handle_kseg0_tlb_fault(unsigned long badvaddr, | |||
310 | even = !(gfn & 0x1); | 321 | even = !(gfn & 0x1); |
311 | vaddr = badvaddr & (PAGE_MASK << 1); | 322 | vaddr = badvaddr & (PAGE_MASK << 1); |
312 | 323 | ||
313 | kvm_mips_map_page(vcpu->kvm, gfn); | 324 | if (kvm_mips_map_page(vcpu->kvm, gfn) < 0) |
314 | kvm_mips_map_page(vcpu->kvm, gfn ^ 0x1); | 325 | return -1; |
326 | |||
327 | if (kvm_mips_map_page(vcpu->kvm, gfn ^ 0x1) < 0) | ||
328 | return -1; | ||
315 | 329 | ||
316 | if (even) { | 330 | if (even) { |
317 | pfn0 = kvm->arch.guest_pmap[gfn]; | 331 | pfn0 = kvm->arch.guest_pmap[gfn]; |
@@ -389,8 +403,11 @@ kvm_mips_handle_mapped_seg_tlb_fault(struct kvm_vcpu *vcpu, | |||
389 | pfn0 = 0; | 403 | pfn0 = 0; |
390 | pfn1 = 0; | 404 | pfn1 = 0; |
391 | } else { | 405 | } else { |
392 | kvm_mips_map_page(kvm, mips3_tlbpfn_to_paddr(tlb->tlb_lo0) >> PAGE_SHIFT); | 406 | if (kvm_mips_map_page(kvm, mips3_tlbpfn_to_paddr(tlb->tlb_lo0) >> PAGE_SHIFT) < 0) |
393 | kvm_mips_map_page(kvm, mips3_tlbpfn_to_paddr(tlb->tlb_lo1) >> PAGE_SHIFT); | 407 | return -1; |
408 | |||
409 | if (kvm_mips_map_page(kvm, mips3_tlbpfn_to_paddr(tlb->tlb_lo1) >> PAGE_SHIFT) < 0) | ||
410 | return -1; | ||
394 | 411 | ||
395 | pfn0 = kvm->arch.guest_pmap[mips3_tlbpfn_to_paddr(tlb->tlb_lo0) >> PAGE_SHIFT]; | 412 | pfn0 = kvm->arch.guest_pmap[mips3_tlbpfn_to_paddr(tlb->tlb_lo0) >> PAGE_SHIFT]; |
396 | pfn1 = kvm->arch.guest_pmap[mips3_tlbpfn_to_paddr(tlb->tlb_lo1) >> PAGE_SHIFT]; | 413 | pfn1 = kvm->arch.guest_pmap[mips3_tlbpfn_to_paddr(tlb->tlb_lo1) >> PAGE_SHIFT]; |
@@ -428,7 +445,7 @@ int kvm_mips_guest_tlb_lookup(struct kvm_vcpu *vcpu, unsigned long entryhi) | |||
428 | 445 | ||
429 | for (i = 0; i < KVM_MIPS_GUEST_TLB_SIZE; i++) { | 446 | for (i = 0; i < KVM_MIPS_GUEST_TLB_SIZE; i++) { |
430 | if (((TLB_VPN2(tlb[i]) & ~tlb[i].tlb_mask) == ((entryhi & VPN2_MASK) & ~tlb[i].tlb_mask)) && | 447 | if (((TLB_VPN2(tlb[i]) & ~tlb[i].tlb_mask) == ((entryhi & VPN2_MASK) & ~tlb[i].tlb_mask)) && |
431 | (TLB_IS_GLOBAL(tlb[i]) || (TLB_ASID(tlb[i]) == ASID_MASK(entryhi)))) { | 448 | (TLB_IS_GLOBAL(tlb[i]) || (TLB_ASID(tlb[i]) == (entryhi & ASID_MASK)))) { |
432 | index = i; | 449 | index = i; |
433 | break; | 450 | break; |
434 | } | 451 | } |
@@ -626,7 +643,7 @@ kvm_get_new_mmu_context(struct mm_struct *mm, unsigned long cpu, | |||
626 | { | 643 | { |
627 | unsigned long asid = asid_cache(cpu); | 644 | unsigned long asid = asid_cache(cpu); |
628 | 645 | ||
629 | if (!(ASID_MASK(ASID_INC(asid)))) { | 646 | if (!((asid += ASID_INC) & ASID_MASK)) { |
630 | if (cpu_has_vtag_icache) { | 647 | if (cpu_has_vtag_icache) { |
631 | flush_icache_all(); | 648 | flush_icache_all(); |
632 | } | 649 | } |
@@ -804,7 +821,8 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) | |||
804 | if (!newasid) { | 821 | if (!newasid) { |
805 | /* If we preempted while the guest was executing, then reload the pre-empted ASID */ | 822 | /* If we preempted while the guest was executing, then reload the pre-empted ASID */ |
806 | if (current->flags & PF_VCPU) { | 823 | if (current->flags & PF_VCPU) { |
807 | write_c0_entryhi(ASID_MASK(vcpu->arch.preempt_entryhi)); | 824 | write_c0_entryhi(vcpu->arch. |
825 | preempt_entryhi & ASID_MASK); | ||
808 | ehb(); | 826 | ehb(); |
809 | } | 827 | } |
810 | } else { | 828 | } else { |
@@ -816,11 +834,13 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) | |||
816 | */ | 834 | */ |
817 | if (current->flags & PF_VCPU) { | 835 | if (current->flags & PF_VCPU) { |
818 | if (KVM_GUEST_KERNEL_MODE(vcpu)) | 836 | if (KVM_GUEST_KERNEL_MODE(vcpu)) |
819 | write_c0_entryhi(ASID_MASK(vcpu->arch. | 837 | write_c0_entryhi(vcpu->arch. |
820 | guest_kernel_asid[cpu])); | 838 | guest_kernel_asid[cpu] & |
839 | ASID_MASK); | ||
821 | else | 840 | else |
822 | write_c0_entryhi(ASID_MASK(vcpu->arch. | 841 | write_c0_entryhi(vcpu->arch. |
823 | guest_user_asid[cpu])); | 842 | guest_user_asid[cpu] & |
843 | ASID_MASK); | ||
824 | ehb(); | 844 | ehb(); |
825 | } | 845 | } |
826 | } | 846 | } |
@@ -879,7 +899,8 @@ uint32_t kvm_get_inst(uint32_t *opc, struct kvm_vcpu *vcpu) | |||
879 | kvm_mips_guest_tlb_lookup(vcpu, | 899 | kvm_mips_guest_tlb_lookup(vcpu, |
880 | ((unsigned long) opc & VPN2_MASK) | 900 | ((unsigned long) opc & VPN2_MASK) |
881 | | | 901 | | |
882 | ASID_MASK(kvm_read_c0_guest_entryhi(cop0))); | 902 | (kvm_read_c0_guest_entryhi |
903 | (cop0) & ASID_MASK)); | ||
883 | if (index < 0) { | 904 | if (index < 0) { |
884 | kvm_err | 905 | kvm_err |
885 | ("%s: get_user_failed for %p, vcpu: %p, ASID: %#lx\n", | 906 | ("%s: get_user_failed for %p, vcpu: %p, ASID: %#lx\n", |
diff --git a/arch/mips/kvm/kvm_trap_emul.c b/arch/mips/kvm/kvm_trap_emul.c index 466aeef044bd..30d725321db1 100644 --- a/arch/mips/kvm/kvm_trap_emul.c +++ b/arch/mips/kvm/kvm_trap_emul.c | |||
@@ -345,54 +345,6 @@ static int kvm_trap_emul_handle_break(struct kvm_vcpu *vcpu) | |||
345 | return ret; | 345 | return ret; |
346 | } | 346 | } |
347 | 347 | ||
348 | static int | ||
349 | kvm_trap_emul_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) | ||
350 | { | ||
351 | struct mips_coproc *cop0 = vcpu->arch.cop0; | ||
352 | |||
353 | kvm_write_c0_guest_index(cop0, regs->cp0reg[MIPS_CP0_TLB_INDEX][0]); | ||
354 | kvm_write_c0_guest_context(cop0, regs->cp0reg[MIPS_CP0_TLB_CONTEXT][0]); | ||
355 | kvm_write_c0_guest_badvaddr(cop0, regs->cp0reg[MIPS_CP0_BAD_VADDR][0]); | ||
356 | kvm_write_c0_guest_entryhi(cop0, regs->cp0reg[MIPS_CP0_TLB_HI][0]); | ||
357 | kvm_write_c0_guest_epc(cop0, regs->cp0reg[MIPS_CP0_EXC_PC][0]); | ||
358 | |||
359 | kvm_write_c0_guest_status(cop0, regs->cp0reg[MIPS_CP0_STATUS][0]); | ||
360 | kvm_write_c0_guest_cause(cop0, regs->cp0reg[MIPS_CP0_CAUSE][0]); | ||
361 | kvm_write_c0_guest_pagemask(cop0, | ||
362 | regs->cp0reg[MIPS_CP0_TLB_PG_MASK][0]); | ||
363 | kvm_write_c0_guest_wired(cop0, regs->cp0reg[MIPS_CP0_TLB_WIRED][0]); | ||
364 | kvm_write_c0_guest_errorepc(cop0, regs->cp0reg[MIPS_CP0_ERROR_PC][0]); | ||
365 | |||
366 | return 0; | ||
367 | } | ||
368 | |||
369 | static int | ||
370 | kvm_trap_emul_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) | ||
371 | { | ||
372 | struct mips_coproc *cop0 = vcpu->arch.cop0; | ||
373 | |||
374 | regs->cp0reg[MIPS_CP0_TLB_INDEX][0] = kvm_read_c0_guest_index(cop0); | ||
375 | regs->cp0reg[MIPS_CP0_TLB_CONTEXT][0] = kvm_read_c0_guest_context(cop0); | ||
376 | regs->cp0reg[MIPS_CP0_BAD_VADDR][0] = kvm_read_c0_guest_badvaddr(cop0); | ||
377 | regs->cp0reg[MIPS_CP0_TLB_HI][0] = kvm_read_c0_guest_entryhi(cop0); | ||
378 | regs->cp0reg[MIPS_CP0_EXC_PC][0] = kvm_read_c0_guest_epc(cop0); | ||
379 | |||
380 | regs->cp0reg[MIPS_CP0_STATUS][0] = kvm_read_c0_guest_status(cop0); | ||
381 | regs->cp0reg[MIPS_CP0_CAUSE][0] = kvm_read_c0_guest_cause(cop0); | ||
382 | regs->cp0reg[MIPS_CP0_TLB_PG_MASK][0] = | ||
383 | kvm_read_c0_guest_pagemask(cop0); | ||
384 | regs->cp0reg[MIPS_CP0_TLB_WIRED][0] = kvm_read_c0_guest_wired(cop0); | ||
385 | regs->cp0reg[MIPS_CP0_ERROR_PC][0] = kvm_read_c0_guest_errorepc(cop0); | ||
386 | |||
387 | regs->cp0reg[MIPS_CP0_CONFIG][0] = kvm_read_c0_guest_config(cop0); | ||
388 | regs->cp0reg[MIPS_CP0_CONFIG][1] = kvm_read_c0_guest_config1(cop0); | ||
389 | regs->cp0reg[MIPS_CP0_CONFIG][2] = kvm_read_c0_guest_config2(cop0); | ||
390 | regs->cp0reg[MIPS_CP0_CONFIG][3] = kvm_read_c0_guest_config3(cop0); | ||
391 | regs->cp0reg[MIPS_CP0_CONFIG][7] = kvm_read_c0_guest_config7(cop0); | ||
392 | |||
393 | return 0; | ||
394 | } | ||
395 | |||
396 | static int kvm_trap_emul_vm_init(struct kvm *kvm) | 348 | static int kvm_trap_emul_vm_init(struct kvm *kvm) |
397 | { | 349 | { |
398 | return 0; | 350 | return 0; |
@@ -471,8 +423,6 @@ static struct kvm_mips_callbacks kvm_trap_emul_callbacks = { | |||
471 | .dequeue_io_int = kvm_mips_dequeue_io_int_cb, | 423 | .dequeue_io_int = kvm_mips_dequeue_io_int_cb, |
472 | .irq_deliver = kvm_mips_irq_deliver_cb, | 424 | .irq_deliver = kvm_mips_irq_deliver_cb, |
473 | .irq_clear = kvm_mips_irq_clear_cb, | 425 | .irq_clear = kvm_mips_irq_clear_cb, |
474 | .vcpu_ioctl_get_regs = kvm_trap_emul_ioctl_get_regs, | ||
475 | .vcpu_ioctl_set_regs = kvm_trap_emul_ioctl_set_regs, | ||
476 | }; | 426 | }; |
477 | 427 | ||
478 | int kvm_mips_emulation_init(struct kvm_mips_callbacks **install_callbacks) | 428 | int kvm_mips_emulation_init(struct kvm_mips_callbacks **install_callbacks) |
diff --git a/arch/mips/lantiq/xway/gptu.c b/arch/mips/lantiq/xway/gptu.c index 9861c8669fab..850821df924c 100644 --- a/arch/mips/lantiq/xway/gptu.c +++ b/arch/mips/lantiq/xway/gptu.c | |||
@@ -144,10 +144,6 @@ static int gptu_probe(struct platform_device *pdev) | |||
144 | } | 144 | } |
145 | 145 | ||
146 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 146 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
147 | if (!res) { | ||
148 | dev_err(&pdev->dev, "Failed to get resource\n"); | ||
149 | return -ENOMEM; | ||
150 | } | ||
151 | 147 | ||
152 | /* remap gptu register range */ | 148 | /* remap gptu register range */ |
153 | gptu_membase = devm_ioremap_resource(&pdev->dev, res); | 149 | gptu_membase = devm_ioremap_resource(&pdev->dev, res); |
@@ -169,6 +165,8 @@ static int gptu_probe(struct platform_device *pdev) | |||
169 | if (((gptu_r32(GPTU_ID) >> 8) & 0xff) != GPTU_MAGIC) { | 165 | if (((gptu_r32(GPTU_ID) >> 8) & 0xff) != GPTU_MAGIC) { |
170 | dev_err(&pdev->dev, "Failed to find magic\n"); | 166 | dev_err(&pdev->dev, "Failed to find magic\n"); |
171 | gptu_hwexit(); | 167 | gptu_hwexit(); |
168 | clk_disable(clk); | ||
169 | clk_put(clk); | ||
172 | return -ENAVAIL; | 170 | return -ENAVAIL; |
173 | } | 171 | } |
174 | 172 | ||
diff --git a/arch/mips/lib/dump_tlb.c b/arch/mips/lib/dump_tlb.c index 8a12d00908e0..32b9f21bfd85 100644 --- a/arch/mips/lib/dump_tlb.c +++ b/arch/mips/lib/dump_tlb.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <asm/page.h> | 11 | #include <asm/page.h> |
12 | #include <asm/pgtable.h> | 12 | #include <asm/pgtable.h> |
13 | #include <asm/tlbdebug.h> | 13 | #include <asm/tlbdebug.h> |
14 | #include <asm/mmu_context.h> | ||
15 | 14 | ||
16 | static inline const char *msk2str(unsigned int mask) | 15 | static inline const char *msk2str(unsigned int mask) |
17 | { | 16 | { |
@@ -56,7 +55,7 @@ static void dump_tlb(int first, int last) | |||
56 | s_pagemask = read_c0_pagemask(); | 55 | s_pagemask = read_c0_pagemask(); |
57 | s_entryhi = read_c0_entryhi(); | 56 | s_entryhi = read_c0_entryhi(); |
58 | s_index = read_c0_index(); | 57 | s_index = read_c0_index(); |
59 | asid = ASID_MASK(s_entryhi); | 58 | asid = s_entryhi & 0xff; |
60 | 59 | ||
61 | for (i = first; i <= last; i++) { | 60 | for (i = first; i <= last; i++) { |
62 | write_c0_index(i); | 61 | write_c0_index(i); |
@@ -86,7 +85,7 @@ static void dump_tlb(int first, int last) | |||
86 | 85 | ||
87 | printk("va=%0*lx asid=%02lx\n", | 86 | printk("va=%0*lx asid=%02lx\n", |
88 | width, (entryhi & ~0x1fffUL), | 87 | width, (entryhi & ~0x1fffUL), |
89 | ASID_MASK(entryhi)); | 88 | entryhi & 0xff); |
90 | printk("\t[pa=%0*llx c=%d d=%d v=%d g=%d] ", | 89 | printk("\t[pa=%0*llx c=%d d=%d v=%d g=%d] ", |
91 | width, | 90 | width, |
92 | (entrylo0 << 6) & PAGE_MASK, c0, | 91 | (entrylo0 << 6) & PAGE_MASK, c0, |
diff --git a/arch/mips/lib/r3k_dump_tlb.c b/arch/mips/lib/r3k_dump_tlb.c index 8327698b9937..91615c2ef0cf 100644 --- a/arch/mips/lib/r3k_dump_tlb.c +++ b/arch/mips/lib/r3k_dump_tlb.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/mm.h> | 9 | #include <linux/mm.h> |
10 | 10 | ||
11 | #include <asm/mipsregs.h> | 11 | #include <asm/mipsregs.h> |
12 | #include <asm/mmu_context.h> | ||
13 | #include <asm/page.h> | 12 | #include <asm/page.h> |
14 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
15 | #include <asm/tlbdebug.h> | 14 | #include <asm/tlbdebug.h> |
@@ -22,7 +21,7 @@ static void dump_tlb(int first, int last) | |||
22 | unsigned int asid; | 21 | unsigned int asid; |
23 | unsigned long entryhi, entrylo0; | 22 | unsigned long entryhi, entrylo0; |
24 | 23 | ||
25 | asid = ASID_MASK(read_c0_entryhi()); | 24 | asid = read_c0_entryhi() & 0xfc0; |
26 | 25 | ||
27 | for (i = first; i <= last; i++) { | 26 | for (i = first; i <= last; i++) { |
28 | write_c0_index(i<<8); | 27 | write_c0_index(i<<8); |
@@ -36,7 +35,7 @@ static void dump_tlb(int first, int last) | |||
36 | 35 | ||
37 | /* Unused entries have a virtual address of KSEG0. */ | 36 | /* Unused entries have a virtual address of KSEG0. */ |
38 | if ((entryhi & 0xffffe000) != 0x80000000 | 37 | if ((entryhi & 0xffffe000) != 0x80000000 |
39 | && (ASID_MASK(entryhi) == asid)) { | 38 | && (entryhi & 0xfc0) == asid) { |
40 | /* | 39 | /* |
41 | * Only print entries in use | 40 | * Only print entries in use |
42 | */ | 41 | */ |
@@ -45,7 +44,7 @@ static void dump_tlb(int first, int last) | |||
45 | printk("va=%08lx asid=%08lx" | 44 | printk("va=%08lx asid=%08lx" |
46 | " [pa=%06lx n=%d d=%d v=%d g=%d]", | 45 | " [pa=%06lx n=%d d=%d v=%d g=%d]", |
47 | (entryhi & 0xffffe000), | 46 | (entryhi & 0xffffe000), |
48 | ASID_MASK(entryhi), | 47 | entryhi & 0xfc0, |
49 | entrylo0 & PAGE_MASK, | 48 | entrylo0 & PAGE_MASK, |
50 | (entrylo0 & (1 << 11)) ? 1 : 0, | 49 | (entrylo0 & (1 << 11)) ? 1 : 0, |
51 | (entrylo0 & (1 << 10)) ? 1 : 0, | 50 | (entrylo0 & (1 << 10)) ? 1 : 0, |
diff --git a/arch/mips/loongson/common/reset.c b/arch/mips/loongson/common/reset.c index 35c8c6468494..65bfbb5d06f4 100644 --- a/arch/mips/loongson/common/reset.c +++ b/arch/mips/loongson/common/reset.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/pm.h> | 13 | #include <linux/pm.h> |
14 | 14 | ||
15 | #include <asm/idle.h> | ||
15 | #include <asm/reboot.h> | 16 | #include <asm/reboot.h> |
16 | 17 | ||
17 | #include <loongson.h> | 18 | #include <loongson.h> |
diff --git a/arch/mips/loongson1/common/reset.c b/arch/mips/loongson1/common/reset.c index d4f610f9604a..547f34b69e4c 100644 --- a/arch/mips/loongson1/common/reset.c +++ b/arch/mips/loongson1/common/reset.c | |||
@@ -9,6 +9,7 @@ | |||
9 | 9 | ||
10 | #include <linux/io.h> | 10 | #include <linux/io.h> |
11 | #include <linux/pm.h> | 11 | #include <linux/pm.h> |
12 | #include <asm/idle.h> | ||
12 | #include <asm/reboot.h> | 13 | #include <asm/reboot.h> |
13 | 14 | ||
14 | #include <loongson1.h> | 15 | #include <loongson1.h> |
diff --git a/arch/mips/mm/tlb-r3k.c b/arch/mips/mm/tlb-r3k.c index 4a13c150f31b..a63d1ed0827f 100644 --- a/arch/mips/mm/tlb-r3k.c +++ b/arch/mips/mm/tlb-r3k.c | |||
@@ -51,7 +51,7 @@ void local_flush_tlb_all(void) | |||
51 | #endif | 51 | #endif |
52 | 52 | ||
53 | local_irq_save(flags); | 53 | local_irq_save(flags); |
54 | old_ctx = ASID_MASK(read_c0_entryhi()); | 54 | old_ctx = read_c0_entryhi() & ASID_MASK; |
55 | write_c0_entrylo0(0); | 55 | write_c0_entrylo0(0); |
56 | entry = r3k_have_wired_reg ? read_c0_wired() : 8; | 56 | entry = r3k_have_wired_reg ? read_c0_wired() : 8; |
57 | for (; entry < current_cpu_data.tlbsize; entry++) { | 57 | for (; entry < current_cpu_data.tlbsize; entry++) { |
@@ -87,13 +87,13 @@ void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, | |||
87 | 87 | ||
88 | #ifdef DEBUG_TLB | 88 | #ifdef DEBUG_TLB |
89 | printk("[tlbrange<%lu,0x%08lx,0x%08lx>]", | 89 | printk("[tlbrange<%lu,0x%08lx,0x%08lx>]", |
90 | ASID_MASK(cpu_context(cpu, mm)), start, end); | 90 | cpu_context(cpu, mm) & ASID_MASK, start, end); |
91 | #endif | 91 | #endif |
92 | local_irq_save(flags); | 92 | local_irq_save(flags); |
93 | size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; | 93 | size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT; |
94 | if (size <= current_cpu_data.tlbsize) { | 94 | if (size <= current_cpu_data.tlbsize) { |
95 | int oldpid = ASID_MASK(read_c0_entryhi()); | 95 | int oldpid = read_c0_entryhi() & ASID_MASK; |
96 | int newpid = ASID_MASK(cpu_context(cpu, mm)); | 96 | int newpid = cpu_context(cpu, mm) & ASID_MASK; |
97 | 97 | ||
98 | start &= PAGE_MASK; | 98 | start &= PAGE_MASK; |
99 | end += PAGE_SIZE - 1; | 99 | end += PAGE_SIZE - 1; |
@@ -166,10 +166,10 @@ void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page) | |||
166 | #ifdef DEBUG_TLB | 166 | #ifdef DEBUG_TLB |
167 | printk("[tlbpage<%lu,0x%08lx>]", cpu_context(cpu, vma->vm_mm), page); | 167 | printk("[tlbpage<%lu,0x%08lx>]", cpu_context(cpu, vma->vm_mm), page); |
168 | #endif | 168 | #endif |
169 | newpid = ASID_MASK(cpu_context(cpu, vma->vm_mm)); | 169 | newpid = cpu_context(cpu, vma->vm_mm) & ASID_MASK; |
170 | page &= PAGE_MASK; | 170 | page &= PAGE_MASK; |
171 | local_irq_save(flags); | 171 | local_irq_save(flags); |
172 | oldpid = ASID_MASK(read_c0_entryhi()); | 172 | oldpid = read_c0_entryhi() & ASID_MASK; |
173 | write_c0_entryhi(page | newpid); | 173 | write_c0_entryhi(page | newpid); |
174 | BARRIER; | 174 | BARRIER; |
175 | tlb_probe(); | 175 | tlb_probe(); |
@@ -197,10 +197,10 @@ void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte) | |||
197 | if (current->active_mm != vma->vm_mm) | 197 | if (current->active_mm != vma->vm_mm) |
198 | return; | 198 | return; |
199 | 199 | ||
200 | pid = ASID_MASK(read_c0_entryhi()); | 200 | pid = read_c0_entryhi() & ASID_MASK; |
201 | 201 | ||
202 | #ifdef DEBUG_TLB | 202 | #ifdef DEBUG_TLB |
203 | if ((pid != ASID_MASK(cpu_context(cpu, vma->vm_mm))) || (cpu_context(cpu, vma->vm_mm) == 0)) { | 203 | if ((pid != (cpu_context(cpu, vma->vm_mm) & ASID_MASK)) || (cpu_context(cpu, vma->vm_mm) == 0)) { |
204 | printk("update_mmu_cache: Wheee, bogus tlbpid mmpid=%lu tlbpid=%d\n", | 204 | printk("update_mmu_cache: Wheee, bogus tlbpid mmpid=%lu tlbpid=%d\n", |
205 | (cpu_context(cpu, vma->vm_mm)), pid); | 205 | (cpu_context(cpu, vma->vm_mm)), pid); |
206 | } | 206 | } |
@@ -241,7 +241,7 @@ void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1, | |||
241 | 241 | ||
242 | local_irq_save(flags); | 242 | local_irq_save(flags); |
243 | /* Save old context and create impossible VPN2 value */ | 243 | /* Save old context and create impossible VPN2 value */ |
244 | old_ctx = ASID_MASK(read_c0_entryhi()); | 244 | old_ctx = read_c0_entryhi() & ASID_MASK; |
245 | old_pagemask = read_c0_pagemask(); | 245 | old_pagemask = read_c0_pagemask(); |
246 | w = read_c0_wired(); | 246 | w = read_c0_wired(); |
247 | write_c0_wired(w + 1); | 247 | write_c0_wired(w + 1); |
@@ -264,7 +264,7 @@ void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1, | |||
264 | #endif | 264 | #endif |
265 | 265 | ||
266 | local_irq_save(flags); | 266 | local_irq_save(flags); |
267 | old_ctx = ASID_MASK(read_c0_entryhi()); | 267 | old_ctx = read_c0_entryhi() & ASID_MASK; |
268 | write_c0_entrylo0(entrylo0); | 268 | write_c0_entrylo0(entrylo0); |
269 | write_c0_entryhi(entryhi); | 269 | write_c0_entryhi(entryhi); |
270 | write_c0_index(wired); | 270 | write_c0_index(wired); |
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c index 09653b290d53..c643de4c473a 100644 --- a/arch/mips/mm/tlb-r4k.c +++ b/arch/mips/mm/tlb-r4k.c | |||
@@ -287,7 +287,7 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte) | |||
287 | 287 | ||
288 | ENTER_CRITICAL(flags); | 288 | ENTER_CRITICAL(flags); |
289 | 289 | ||
290 | pid = ASID_MASK(read_c0_entryhi()); | 290 | pid = read_c0_entryhi() & ASID_MASK; |
291 | address &= (PAGE_MASK << 1); | 291 | address &= (PAGE_MASK << 1); |
292 | write_c0_entryhi(address | pid); | 292 | write_c0_entryhi(address | pid); |
293 | pgdp = pgd_offset(vma->vm_mm, address); | 293 | pgdp = pgd_offset(vma->vm_mm, address); |
diff --git a/arch/mips/mm/tlb-r8k.c b/arch/mips/mm/tlb-r8k.c index 122f9207f49e..91c2499f806a 100644 --- a/arch/mips/mm/tlb-r8k.c +++ b/arch/mips/mm/tlb-r8k.c | |||
@@ -195,7 +195,7 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte) | |||
195 | if (current->active_mm != vma->vm_mm) | 195 | if (current->active_mm != vma->vm_mm) |
196 | return; | 196 | return; |
197 | 197 | ||
198 | pid = ASID_MASK(read_c0_entryhi()); | 198 | pid = read_c0_entryhi() & ASID_MASK; |
199 | 199 | ||
200 | local_irq_save(flags); | 200 | local_irq_save(flags); |
201 | address &= PAGE_MASK; | 201 | address &= PAGE_MASK; |
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c index 4d46d3787576..afeef93f81a7 100644 --- a/arch/mips/mm/tlbex.c +++ b/arch/mips/mm/tlbex.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <linux/cache.h> | 30 | #include <linux/cache.h> |
31 | 31 | ||
32 | #include <asm/mmu_context.h> | ||
33 | #include <asm/cacheflush.h> | 32 | #include <asm/cacheflush.h> |
34 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
35 | #include <asm/war.h> | 34 | #include <asm/war.h> |
@@ -302,82 +301,6 @@ static u32 tlb_handler[128] __cpuinitdata; | |||
302 | static struct uasm_label labels[128] __cpuinitdata; | 301 | static struct uasm_label labels[128] __cpuinitdata; |
303 | static struct uasm_reloc relocs[128] __cpuinitdata; | 302 | static struct uasm_reloc relocs[128] __cpuinitdata; |
304 | 303 | ||
305 | #ifdef CONFIG_64BIT | ||
306 | static int check_for_high_segbits __cpuinitdata; | ||
307 | #endif | ||
308 | |||
309 | static void __cpuinit insn_fixup(unsigned int **start, unsigned int **stop, | ||
310 | unsigned int i_const) | ||
311 | { | ||
312 | unsigned int **p; | ||
313 | |||
314 | for (p = start; p < stop; p++) { | ||
315 | #ifndef CONFIG_CPU_MICROMIPS | ||
316 | unsigned int *ip; | ||
317 | |||
318 | ip = *p; | ||
319 | *ip = (*ip & 0xffff0000) | i_const; | ||
320 | #else | ||
321 | unsigned short *ip; | ||
322 | |||
323 | ip = ((unsigned short *)((unsigned int)*p - 1)); | ||
324 | if ((*ip & 0xf000) == 0x4000) { | ||
325 | *ip &= 0xfff1; | ||
326 | *ip |= (i_const << 1); | ||
327 | } else if ((*ip & 0xf000) == 0x6000) { | ||
328 | *ip &= 0xfff1; | ||
329 | *ip |= ((i_const >> 2) << 1); | ||
330 | } else { | ||
331 | ip++; | ||
332 | *ip = i_const; | ||
333 | } | ||
334 | #endif | ||
335 | local_flush_icache_range((unsigned long)ip, | ||
336 | (unsigned long)ip + sizeof(*ip)); | ||
337 | } | ||
338 | } | ||
339 | |||
340 | #define asid_insn_fixup(section, const) \ | ||
341 | do { \ | ||
342 | extern unsigned int *__start_ ## section; \ | ||
343 | extern unsigned int *__stop_ ## section; \ | ||
344 | insn_fixup(&__start_ ## section, &__stop_ ## section, const); \ | ||
345 | } while(0) | ||
346 | |||
347 | /* | ||
348 | * Caller is assumed to flush the caches before the first context switch. | ||
349 | */ | ||
350 | static void __cpuinit setup_asid(unsigned int inc, unsigned int mask, | ||
351 | unsigned int version_mask, | ||
352 | unsigned int first_version) | ||
353 | { | ||
354 | extern asmlinkage void handle_ri_rdhwr_vivt(void); | ||
355 | unsigned long *vivt_exc; | ||
356 | |||
357 | #ifdef CONFIG_CPU_MICROMIPS | ||
358 | /* | ||
359 | * Worst case optimised microMIPS addiu instructions support | ||
360 | * only a 3-bit immediate value. | ||
361 | */ | ||
362 | if(inc > 7) | ||
363 | panic("Invalid ASID increment value!"); | ||
364 | #endif | ||
365 | asid_insn_fixup(__asid_inc, inc); | ||
366 | asid_insn_fixup(__asid_mask, mask); | ||
367 | asid_insn_fixup(__asid_version_mask, version_mask); | ||
368 | asid_insn_fixup(__asid_first_version, first_version); | ||
369 | |||
370 | /* Patch up the 'handle_ri_rdhwr_vivt' handler. */ | ||
371 | vivt_exc = (unsigned long *) &handle_ri_rdhwr_vivt; | ||
372 | #ifdef CONFIG_CPU_MICROMIPS | ||
373 | vivt_exc = (unsigned long *)((unsigned long) vivt_exc - 1); | ||
374 | #endif | ||
375 | vivt_exc++; | ||
376 | *vivt_exc = (*vivt_exc & ~mask) | mask; | ||
377 | |||
378 | current_cpu_data.asid_cache = first_version; | ||
379 | } | ||
380 | |||
381 | static int check_for_high_segbits __cpuinitdata; | 304 | static int check_for_high_segbits __cpuinitdata; |
382 | 305 | ||
383 | static unsigned int kscratch_used_mask __cpuinitdata; | 306 | static unsigned int kscratch_used_mask __cpuinitdata; |
@@ -2256,7 +2179,6 @@ void __cpuinit build_tlb_refill_handler(void) | |||
2256 | case CPU_TX3922: | 2179 | case CPU_TX3922: |
2257 | case CPU_TX3927: | 2180 | case CPU_TX3927: |
2258 | #ifndef CONFIG_MIPS_PGD_C0_CONTEXT | 2181 | #ifndef CONFIG_MIPS_PGD_C0_CONTEXT |
2259 | setup_asid(0x40, 0xfc0, 0xf000, ASID_FIRST_VERSION_R3000); | ||
2260 | if (cpu_has_local_ebase) | 2182 | if (cpu_has_local_ebase) |
2261 | build_r3000_tlb_refill_handler(); | 2183 | build_r3000_tlb_refill_handler(); |
2262 | if (!run_once) { | 2184 | if (!run_once) { |
@@ -2282,11 +2204,6 @@ void __cpuinit build_tlb_refill_handler(void) | |||
2282 | break; | 2204 | break; |
2283 | 2205 | ||
2284 | default: | 2206 | default: |
2285 | #ifndef CONFIG_MIPS_MT_SMTC | ||
2286 | setup_asid(0x1, 0xff, 0xff00, ASID_FIRST_VERSION_R4000); | ||
2287 | #else | ||
2288 | setup_asid(0x1, smtc_asid_mask, 0xff00, ASID_FIRST_VERSION_R4000); | ||
2289 | #endif | ||
2290 | if (!run_once) { | 2207 | if (!run_once) { |
2291 | scratch_reg = allocate_kscratch(); | 2208 | scratch_reg = allocate_kscratch(); |
2292 | #ifdef CONFIG_MIPS_PGD_C0_CONTEXT | 2209 | #ifdef CONFIG_MIPS_PGD_C0_CONTEXT |
diff --git a/arch/mips/netlogic/xlp/setup.c b/arch/mips/netlogic/xlp/setup.c index af319143b591..eaa99d28cb8e 100644 --- a/arch/mips/netlogic/xlp/setup.c +++ b/arch/mips/netlogic/xlp/setup.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/pm.h> | 37 | #include <linux/pm.h> |
38 | #include <linux/bootmem.h> | 38 | #include <linux/bootmem.h> |
39 | 39 | ||
40 | #include <asm/idle.h> | ||
40 | #include <asm/reboot.h> | 41 | #include <asm/reboot.h> |
41 | #include <asm/time.h> | 42 | #include <asm/time.h> |
42 | #include <asm/bootinfo.h> | 43 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/netlogic/xlr/setup.c b/arch/mips/netlogic/xlr/setup.c index e3e094100e3e..89c8c1066632 100644 --- a/arch/mips/netlogic/xlr/setup.c +++ b/arch/mips/netlogic/xlr/setup.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/serial_8250.h> | 36 | #include <linux/serial_8250.h> |
37 | #include <linux/pm.h> | 37 | #include <linux/pm.h> |
38 | 38 | ||
39 | #include <asm/idle.h> | ||
39 | #include <asm/reboot.h> | 40 | #include <asm/reboot.h> |
40 | #include <asm/time.h> | 41 | #include <asm/time.h> |
41 | #include <asm/bootinfo.h> | 42 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/pmcs-msp71xx/msp_prom.c b/arch/mips/pmcs-msp71xx/msp_prom.c index 0edb89a63516..1c9897531660 100644 --- a/arch/mips/pmcs-msp71xx/msp_prom.c +++ b/arch/mips/pmcs-msp71xx/msp_prom.c | |||
@@ -83,7 +83,7 @@ static inline unsigned char str2hexnum(unsigned char c) | |||
83 | return 0; /* foo */ | 83 | return 0; /* foo */ |
84 | } | 84 | } |
85 | 85 | ||
86 | static inline int str2eaddr(unsigned char *ea, unsigned char *str) | 86 | int str2eaddr(unsigned char *ea, unsigned char *str) |
87 | { | 87 | { |
88 | int index = 0; | 88 | int index = 0; |
89 | unsigned char num = 0; | 89 | unsigned char num = 0; |
diff --git a/arch/mips/pmcs-msp71xx/msp_setup.c b/arch/mips/pmcs-msp71xx/msp_setup.c index 1651cfdbfe7b..396b2967ad85 100644 --- a/arch/mips/pmcs-msp71xx/msp_setup.c +++ b/arch/mips/pmcs-msp71xx/msp_setup.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <asm/bootinfo.h> | 13 | #include <asm/bootinfo.h> |
14 | #include <asm/cacheflush.h> | 14 | #include <asm/cacheflush.h> |
15 | #include <asm/idle.h> | ||
15 | #include <asm/r4kcache.h> | 16 | #include <asm/r4kcache.h> |
16 | #include <asm/reboot.h> | 17 | #include <asm/reboot.h> |
17 | #include <asm/smp-ops.h> | 18 | #include <asm/smp-ops.h> |
diff --git a/arch/mips/ralink/dts/rt3050.dtsi b/arch/mips/ralink/dts/rt3050.dtsi index ef7da1e227e6..e3203d414fee 100644 --- a/arch/mips/ralink/dts/rt3050.dtsi +++ b/arch/mips/ralink/dts/rt3050.dtsi | |||
@@ -55,4 +55,14 @@ | |||
55 | reg-shift = <2>; | 55 | reg-shift = <2>; |
56 | }; | 56 | }; |
57 | }; | 57 | }; |
58 | |||
59 | usb@101c0000 { | ||
60 | compatible = "ralink,rt3050-usb", "snps,dwc2"; | ||
61 | reg = <0x101c0000 40000>; | ||
62 | |||
63 | interrupt-parent = <&intc>; | ||
64 | interrupts = <18>; | ||
65 | |||
66 | status = "disabled"; | ||
67 | }; | ||
58 | }; | 68 | }; |
diff --git a/arch/mips/ralink/dts/rt3052_eval.dts b/arch/mips/ralink/dts/rt3052_eval.dts index c18c9a84f4c4..0ac73ea28198 100644 --- a/arch/mips/ralink/dts/rt3052_eval.dts +++ b/arch/mips/ralink/dts/rt3052_eval.dts | |||
@@ -43,4 +43,8 @@ | |||
43 | reg = <0x50000 0x7b0000>; | 43 | reg = <0x50000 0x7b0000>; |
44 | }; | 44 | }; |
45 | }; | 45 | }; |
46 | |||
47 | usb@101c0000 { | ||
48 | status = "ok"; | ||
49 | }; | ||
46 | }; | 50 | }; |
diff --git a/arch/mips/ralink/of.c b/arch/mips/ralink/of.c index fb1569580def..6b5f3406f414 100644 --- a/arch/mips/ralink/of.c +++ b/arch/mips/ralink/of.c | |||
@@ -88,7 +88,7 @@ void __init plat_mem_setup(void) | |||
88 | __dt_setup_arch(&__dtb_start); | 88 | __dt_setup_arch(&__dtb_start); |
89 | 89 | ||
90 | if (soc_info.mem_size) | 90 | if (soc_info.mem_size) |
91 | add_memory_region(soc_info.mem_base, soc_info.mem_size, | 91 | add_memory_region(soc_info.mem_base, soc_info.mem_size * SZ_1M, |
92 | BOOT_MEM_RAM); | 92 | BOOT_MEM_RAM); |
93 | else | 93 | else |
94 | detect_memory_region(soc_info.mem_base, | 94 | detect_memory_region(soc_info.mem_base, |
diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c index 5364aabc2102..681e7f86c080 100644 --- a/arch/mips/txx9/generic/setup.c +++ b/arch/mips/txx9/generic/setup.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
27 | #include <linux/irq.h> | 27 | #include <linux/irq.h> |
28 | #include <asm/bootinfo.h> | 28 | #include <asm/bootinfo.h> |
29 | #include <asm/idle.h> | ||
29 | #include <asm/time.h> | 30 | #include <asm/time.h> |
30 | #include <asm/reboot.h> | 31 | #include <asm/reboot.h> |
31 | #include <asm/r4kcache.h> | 32 | #include <asm/r4kcache.h> |
diff --git a/arch/mips/vr41xx/common/pmu.c b/arch/mips/vr41xx/common/pmu.c index 70a3f90131d8..d7f755833c3f 100644 --- a/arch/mips/vr41xx/common/pmu.c +++ b/arch/mips/vr41xx/common/pmu.c | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | #include <asm/cacheflush.h> | 28 | #include <asm/cacheflush.h> |
29 | #include <asm/cpu.h> | 29 | #include <asm/cpu.h> |
30 | #include <asm/idle.h> | ||
30 | #include <asm/io.h> | 31 | #include <asm/io.h> |
31 | #include <asm/processor.h> | 32 | #include <asm/processor.h> |
32 | #include <asm/reboot.h> | 33 | #include <asm/reboot.h> |
diff --git a/arch/mips/wrppmc/reset.c b/arch/mips/wrppmc/reset.c index cc5474b24f06..80beb188ed47 100644 --- a/arch/mips/wrppmc/reset.c +++ b/arch/mips/wrppmc/reset.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | 10 | ||
11 | #include <asm/cacheflush.h> | 11 | #include <asm/cacheflush.h> |
12 | #include <asm/idle.h> | ||
12 | #include <asm/mipsregs.h> | 13 | #include <asm/mipsregs.h> |
13 | #include <asm/processor.h> | 14 | #include <asm/processor.h> |
14 | 15 | ||
diff --git a/arch/mn10300/include/asm/pci.h b/arch/mn10300/include/asm/pci.h index 8137c25c4e15..6f31cc0f1a87 100644 --- a/arch/mn10300/include/asm/pci.h +++ b/arch/mn10300/include/asm/pci.h | |||
@@ -103,4 +103,6 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | |||
103 | return channel ? 15 : 14; | 103 | return channel ? 15 : 14; |
104 | } | 104 | } |
105 | 105 | ||
106 | #include <asm-generic/pci_iomap.h> | ||
107 | |||
106 | #endif /* _ASM_PCI_H */ | 108 | #endif /* _ASM_PCI_H */ |
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S index 68fcab8f8f6f..222152a3f751 100644 --- a/arch/mn10300/kernel/entry.S +++ b/arch/mn10300/kernel/entry.S | |||
@@ -60,6 +60,7 @@ ENTRY(ret_from_kernel_thread) | |||
60 | mov (REG_D0,fp),d0 | 60 | mov (REG_D0,fp),d0 |
61 | mov (REG_A0,fp),a0 | 61 | mov (REG_A0,fp),a0 |
62 | calls (a0) | 62 | calls (a0) |
63 | GET_THREAD_INFO a2 # A2 must be set on return from sys_exit() | ||
63 | clr d0 | 64 | clr d0 |
64 | mov d0,(REG_D0,fp) | 65 | mov d0,(REG_D0,fp) |
65 | jmp syscall_exit | 66 | jmp syscall_exit |
@@ -107,10 +108,10 @@ syscall_exit_work: | |||
107 | and EPSW_nSL,d0 | 108 | and EPSW_nSL,d0 |
108 | beq resume_kernel # returning to supervisor mode | 109 | beq resume_kernel # returning to supervisor mode |
109 | 110 | ||
110 | btst _TIF_SYSCALL_TRACE,d2 | ||
111 | beq work_pending | ||
112 | LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call | 111 | LOCAL_IRQ_ENABLE # could let syscall_trace_exit() call |
113 | # schedule() instead | 112 | # schedule() instead |
113 | btst _TIF_SYSCALL_TRACE,d2 | ||
114 | beq work_pending | ||
114 | mov fp,d0 | 115 | mov fp,d0 |
115 | call syscall_trace_exit[],0 # do_syscall_trace(regs) | 116 | call syscall_trace_exit[],0 # do_syscall_trace(regs) |
116 | jmp resume_userspace | 117 | jmp resume_userspace |
@@ -123,6 +124,7 @@ work_pending: | |||
123 | work_resched: | 124 | work_resched: |
124 | call schedule[],0 | 125 | call schedule[],0 |
125 | 126 | ||
127 | resume_userspace: | ||
126 | # make sure we don't miss an interrupt setting need_resched or | 128 | # make sure we don't miss an interrupt setting need_resched or |
127 | # sigpending between sampling and the rti | 129 | # sigpending between sampling and the rti |
128 | LOCAL_IRQ_DISABLE | 130 | LOCAL_IRQ_DISABLE |
@@ -131,6 +133,8 @@ work_resched: | |||
131 | mov (TI_flags,a2),d2 | 133 | mov (TI_flags,a2),d2 |
132 | btst _TIF_WORK_MASK,d2 | 134 | btst _TIF_WORK_MASK,d2 |
133 | beq restore_all | 135 | beq restore_all |
136 | |||
137 | LOCAL_IRQ_ENABLE | ||
134 | btst _TIF_NEED_RESCHED,d2 | 138 | btst _TIF_NEED_RESCHED,d2 |
135 | bne work_resched | 139 | bne work_resched |
136 | 140 | ||
@@ -169,17 +173,6 @@ ret_from_intr: | |||
169 | and EPSW_nSL,d0 | 173 | and EPSW_nSL,d0 |
170 | beq resume_kernel # returning to supervisor mode | 174 | beq resume_kernel # returning to supervisor mode |
171 | 175 | ||
172 | ENTRY(resume_userspace) | ||
173 | # make sure we don't miss an interrupt setting need_resched or | ||
174 | # sigpending between sampling and the rti | ||
175 | LOCAL_IRQ_DISABLE | ||
176 | |||
177 | # is there any work to be done on int/exception return? | ||
178 | mov (TI_flags,a2),d2 | ||
179 | btst _TIF_WORK_MASK,d2 | ||
180 | bne work_pending | ||
181 | jmp restore_all | ||
182 | |||
183 | #ifdef CONFIG_PREEMPT | 176 | #ifdef CONFIG_PREEMPT |
184 | ENTRY(resume_kernel) | 177 | ENTRY(resume_kernel) |
185 | LOCAL_IRQ_DISABLE | 178 | LOCAL_IRQ_DISABLE |
diff --git a/arch/mn10300/unit-asb2305/pci.c b/arch/mn10300/unit-asb2305/pci.c index 1adcf024bb9a..e37fac0461f3 100644 --- a/arch/mn10300/unit-asb2305/pci.c +++ b/arch/mn10300/unit-asb2305/pci.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/irq.h> | 20 | #include <linux/irq.h> |
21 | #include <asm/io.h> | 21 | #include <asm/io.h> |
22 | #include <asm/irq.h> | ||
22 | #include "pci-asb2305.h" | 23 | #include "pci-asb2305.h" |
23 | 24 | ||
24 | unsigned int pci_probe = 1; | 25 | unsigned int pci_probe = 1; |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index cad060f288cf..6507dabdd5dd 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -245,7 +245,7 @@ config SMP | |||
245 | 245 | ||
246 | config IRQSTACKS | 246 | config IRQSTACKS |
247 | bool "Use separate kernel stacks when processing interrupts" | 247 | bool "Use separate kernel stacks when processing interrupts" |
248 | default n | 248 | default y |
249 | help | 249 | help |
250 | If you say Y here the kernel will use separate kernel stacks | 250 | If you say Y here the kernel will use separate kernel stacks |
251 | for handling hard and soft interrupts. This can help avoid | 251 | for handling hard and soft interrupts. This can help avoid |
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index 2f967cc6649e..96ec3982be8d 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile | |||
@@ -23,24 +23,21 @@ NM = sh $(srctree)/arch/parisc/nm | |||
23 | CHECKFLAGS += -D__hppa__=1 | 23 | CHECKFLAGS += -D__hppa__=1 |
24 | LIBGCC = $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) | 24 | LIBGCC = $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) |
25 | 25 | ||
26 | MACHINE := $(shell uname -m) | ||
27 | NATIVE := $(if $(filter parisc%,$(MACHINE)),1,0) | ||
28 | |||
29 | ifdef CONFIG_64BIT | 26 | ifdef CONFIG_64BIT |
30 | UTS_MACHINE := parisc64 | 27 | UTS_MACHINE := parisc64 |
31 | CHECKFLAGS += -D__LP64__=1 -m64 | 28 | CHECKFLAGS += -D__LP64__=1 -m64 |
32 | WIDTH := 64 | 29 | CC_ARCHES = hppa64 |
33 | else # 32-bit | 30 | else # 32-bit |
34 | WIDTH := | 31 | CC_ARCHES = hppa hppa2.0 hppa1.1 |
35 | endif | 32 | endif |
36 | 33 | ||
37 | # attempt to help out folks who are cross-compiling | 34 | ifneq ($(SUBARCH),$(UTS_MACHINE)) |
38 | ifeq ($(NATIVE),1) | 35 | ifeq ($(CROSS_COMPILE),) |
39 | CROSS_COMPILE := hppa$(WIDTH)-linux- | 36 | CC_SUFFIXES = linux linux-gnu unknown-linux-gnu |
40 | else | 37 | CROSS_COMPILE := $(call cc-cross-prefix, \ |
41 | ifeq ($(CROSS_COMPILE),) | 38 | $(foreach a,$(CC_ARCHES), \ |
42 | CROSS_COMPILE := hppa$(WIDTH)-linux-gnu- | 39 | $(foreach s,$(CC_SUFFIXES),$(a)-$(s)-))) |
43 | endif | 40 | endif |
44 | endif | 41 | endif |
45 | 42 | ||
46 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S | 43 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S |
@@ -69,7 +66,7 @@ KBUILD_CFLAGS_KERNEL += -mlong-calls | |||
69 | endif | 66 | endif |
70 | 67 | ||
71 | # select which processor to optimise for | 68 | # select which processor to optimise for |
72 | cflags-$(CONFIG_PA7100) += -march=1.1 -mschedule=7100 | 69 | cflags-$(CONFIG_PA7000) += -march=1.1 -mschedule=7100 |
73 | cflags-$(CONFIG_PA7200) += -march=1.1 -mschedule=7200 | 70 | cflags-$(CONFIG_PA7200) += -march=1.1 -mschedule=7200 |
74 | cflags-$(CONFIG_PA7100LC) += -march=1.1 -mschedule=7100LC | 71 | cflags-$(CONFIG_PA7100LC) += -march=1.1 -mschedule=7100LC |
75 | cflags-$(CONFIG_PA7300LC) += -march=1.1 -mschedule=7300 | 72 | cflags-$(CONFIG_PA7300LC) += -march=1.1 -mschedule=7300 |
diff --git a/arch/parisc/include/asm/assembly.h b/arch/parisc/include/asm/assembly.h index 89fb40005e3f..0da848232344 100644 --- a/arch/parisc/include/asm/assembly.h +++ b/arch/parisc/include/asm/assembly.h | |||
@@ -438,7 +438,6 @@ | |||
438 | SAVE_SP (%sr4, PT_SR4 (\regs)) | 438 | SAVE_SP (%sr4, PT_SR4 (\regs)) |
439 | SAVE_SP (%sr5, PT_SR5 (\regs)) | 439 | SAVE_SP (%sr5, PT_SR5 (\regs)) |
440 | SAVE_SP (%sr6, PT_SR6 (\regs)) | 440 | SAVE_SP (%sr6, PT_SR6 (\regs)) |
441 | SAVE_SP (%sr7, PT_SR7 (\regs)) | ||
442 | 441 | ||
443 | SAVE_CR (%cr17, PT_IASQ0(\regs)) | 442 | SAVE_CR (%cr17, PT_IASQ0(\regs)) |
444 | mtctl %r0, %cr17 | 443 | mtctl %r0, %cr17 |
diff --git a/arch/parisc/include/asm/hardirq.h b/arch/parisc/include/asm/hardirq.h index 12373c4dabab..241c34518465 100644 --- a/arch/parisc/include/asm/hardirq.h +++ b/arch/parisc/include/asm/hardirq.h | |||
@@ -11,15 +11,20 @@ | |||
11 | #include <linux/threads.h> | 11 | #include <linux/threads.h> |
12 | #include <linux/irq.h> | 12 | #include <linux/irq.h> |
13 | 13 | ||
14 | #ifdef CONFIG_IRQSTACKS | ||
15 | #define __ARCH_HAS_DO_SOFTIRQ | ||
16 | #endif | ||
17 | |||
14 | typedef struct { | 18 | typedef struct { |
15 | unsigned int __softirq_pending; | 19 | unsigned int __softirq_pending; |
16 | #ifdef CONFIG_DEBUG_STACKOVERFLOW | ||
17 | unsigned int kernel_stack_usage; | 20 | unsigned int kernel_stack_usage; |
18 | #endif | 21 | unsigned int irq_stack_usage; |
19 | #ifdef CONFIG_SMP | 22 | #ifdef CONFIG_SMP |
20 | unsigned int irq_resched_count; | 23 | unsigned int irq_resched_count; |
21 | unsigned int irq_call_count; | 24 | unsigned int irq_call_count; |
22 | #endif | 25 | #endif |
26 | unsigned int irq_unaligned_count; | ||
27 | unsigned int irq_fpassist_count; | ||
23 | unsigned int irq_tlb_count; | 28 | unsigned int irq_tlb_count; |
24 | } ____cacheline_aligned irq_cpustat_t; | 29 | } ____cacheline_aligned irq_cpustat_t; |
25 | 30 | ||
@@ -28,6 +33,7 @@ DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); | |||
28 | #define __ARCH_IRQ_STAT | 33 | #define __ARCH_IRQ_STAT |
29 | #define __IRQ_STAT(cpu, member) (irq_stat[cpu].member) | 34 | #define __IRQ_STAT(cpu, member) (irq_stat[cpu].member) |
30 | #define inc_irq_stat(member) this_cpu_inc(irq_stat.member) | 35 | #define inc_irq_stat(member) this_cpu_inc(irq_stat.member) |
36 | #define __inc_irq_stat(member) __this_cpu_inc(irq_stat.member) | ||
31 | #define local_softirq_pending() this_cpu_read(irq_stat.__softirq_pending) | 37 | #define local_softirq_pending() this_cpu_read(irq_stat.__softirq_pending) |
32 | 38 | ||
33 | #define __ARCH_SET_SOFTIRQ_PENDING | 39 | #define __ARCH_SET_SOFTIRQ_PENDING |
diff --git a/arch/parisc/include/asm/mmzone.h b/arch/parisc/include/asm/mmzone.h index 0e625ab9aaec..cc50d33b7b88 100644 --- a/arch/parisc/include/asm/mmzone.h +++ b/arch/parisc/include/asm/mmzone.h | |||
@@ -39,17 +39,14 @@ extern unsigned char pfnnid_map[PFNNID_MAP_MAX]; | |||
39 | static inline int pfn_to_nid(unsigned long pfn) | 39 | static inline int pfn_to_nid(unsigned long pfn) |
40 | { | 40 | { |
41 | unsigned int i; | 41 | unsigned int i; |
42 | unsigned char r; | ||
43 | 42 | ||
44 | if (unlikely(pfn_is_io(pfn))) | 43 | if (unlikely(pfn_is_io(pfn))) |
45 | return 0; | 44 | return 0; |
46 | 45 | ||
47 | i = pfn >> PFNNID_SHIFT; | 46 | i = pfn >> PFNNID_SHIFT; |
48 | BUG_ON(i >= ARRAY_SIZE(pfnnid_map)); | 47 | BUG_ON(i >= ARRAY_SIZE(pfnnid_map)); |
49 | r = pfnnid_map[i]; | ||
50 | BUG_ON(r == 0xff); | ||
51 | 48 | ||
52 | return (int)r; | 49 | return (int)pfnnid_map[i]; |
53 | } | 50 | } |
54 | 51 | ||
55 | static inline int pfn_valid(int pfn) | 52 | static inline int pfn_valid(int pfn) |
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h index 064015547d1e..cc2290a3cace 100644 --- a/arch/parisc/include/asm/processor.h +++ b/arch/parisc/include/asm/processor.h | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/ptrace.h> | 17 | #include <asm/ptrace.h> |
18 | #include <asm/types.h> | 18 | #include <asm/types.h> |
19 | #include <asm/percpu.h> | 19 | #include <asm/percpu.h> |
20 | |||
21 | #endif /* __ASSEMBLY__ */ | 20 | #endif /* __ASSEMBLY__ */ |
22 | 21 | ||
23 | /* | 22 | /* |
@@ -59,23 +58,6 @@ | |||
59 | #ifndef __ASSEMBLY__ | 58 | #ifndef __ASSEMBLY__ |
60 | 59 | ||
61 | /* | 60 | /* |
62 | * IRQ STACK - used for irq handler | ||
63 | */ | ||
64 | #ifdef __KERNEL__ | ||
65 | |||
66 | #define IRQ_STACK_SIZE (4096 << 2) /* 16k irq stack size */ | ||
67 | |||
68 | union irq_stack_union { | ||
69 | unsigned long stack[IRQ_STACK_SIZE/sizeof(unsigned long)]; | ||
70 | }; | ||
71 | |||
72 | DECLARE_PER_CPU(union irq_stack_union, irq_stack_union); | ||
73 | |||
74 | void call_on_stack(unsigned long p1, void *func, unsigned long new_stack); | ||
75 | |||
76 | #endif /* __KERNEL__ */ | ||
77 | |||
78 | /* | ||
79 | * Data detected about CPUs at boot time which is the same for all CPU's. | 61 | * Data detected about CPUs at boot time which is the same for all CPU's. |
80 | * HP boxes are SMP - ie identical processors. | 62 | * HP boxes are SMP - ie identical processors. |
81 | * | 63 | * |
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c index 5709c5e59be8..14285caec71a 100644 --- a/arch/parisc/kernel/drivers.c +++ b/arch/parisc/kernel/drivers.c | |||
@@ -394,7 +394,7 @@ EXPORT_SYMBOL(print_pci_hwpath); | |||
394 | static void setup_bus_id(struct parisc_device *padev) | 394 | static void setup_bus_id(struct parisc_device *padev) |
395 | { | 395 | { |
396 | struct hardware_path path; | 396 | struct hardware_path path; |
397 | char name[20]; | 397 | char name[28]; |
398 | char *output = name; | 398 | char *output = name; |
399 | int i; | 399 | int i; |
400 | 400 | ||
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 4bb96ad9b0b1..e8f07dd28401 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -65,15 +65,11 @@ | |||
65 | rsm PSW_SM_I, %r0 /* barrier for "Relied upon Translation */ | 65 | rsm PSW_SM_I, %r0 /* barrier for "Relied upon Translation */ |
66 | mtsp %r0, %sr4 | 66 | mtsp %r0, %sr4 |
67 | mtsp %r0, %sr5 | 67 | mtsp %r0, %sr5 |
68 | mfsp %sr7, %r1 | 68 | mtsp %r0, %sr6 |
69 | or,= %r0,%r1,%r0 /* Only save sr7 in sr3 if sr7 != 0 */ | ||
70 | mtsp %r1, %sr3 | ||
71 | tovirt_r1 %r29 | 69 | tovirt_r1 %r29 |
72 | load32 KERNEL_PSW, %r1 | 70 | load32 KERNEL_PSW, %r1 |
73 | 71 | ||
74 | rsm PSW_SM_QUIET,%r0 /* second "heavy weight" ctl op */ | 72 | rsm PSW_SM_QUIET,%r0 /* second "heavy weight" ctl op */ |
75 | mtsp %r0, %sr6 | ||
76 | mtsp %r0, %sr7 | ||
77 | mtctl %r0, %cr17 /* Clear IIASQ tail */ | 73 | mtctl %r0, %cr17 /* Clear IIASQ tail */ |
78 | mtctl %r0, %cr17 /* Clear IIASQ head */ | 74 | mtctl %r0, %cr17 /* Clear IIASQ head */ |
79 | mtctl %r1, %ipsw | 75 | mtctl %r1, %ipsw |
@@ -119,17 +115,20 @@ | |||
119 | 115 | ||
120 | /* we save the registers in the task struct */ | 116 | /* we save the registers in the task struct */ |
121 | 117 | ||
118 | copy %r30, %r17 | ||
122 | mfctl %cr30, %r1 | 119 | mfctl %cr30, %r1 |
120 | ldo THREAD_SZ_ALGN(%r1), %r30 | ||
121 | mtsp %r0,%sr7 | ||
122 | mtsp %r16,%sr3 | ||
123 | tophys %r1,%r9 | 123 | tophys %r1,%r9 |
124 | LDREG TI_TASK(%r9), %r1 /* thread_info -> task_struct */ | 124 | LDREG TI_TASK(%r9), %r1 /* thread_info -> task_struct */ |
125 | tophys %r1,%r9 | 125 | tophys %r1,%r9 |
126 | ldo TASK_REGS(%r9),%r9 | 126 | ldo TASK_REGS(%r9),%r9 |
127 | STREG %r30, PT_GR30(%r9) | 127 | STREG %r17,PT_GR30(%r9) |
128 | STREG %r29,PT_GR29(%r9) | 128 | STREG %r29,PT_GR29(%r9) |
129 | STREG %r26,PT_GR26(%r9) | 129 | STREG %r26,PT_GR26(%r9) |
130 | STREG %r16,PT_SR7(%r9) | ||
130 | copy %r9,%r29 | 131 | copy %r9,%r29 |
131 | mfctl %cr30, %r1 | ||
132 | ldo THREAD_SZ_ALGN(%r1), %r30 | ||
133 | .endm | 132 | .endm |
134 | 133 | ||
135 | .macro get_stack_use_r30 | 134 | .macro get_stack_use_r30 |
@@ -137,10 +136,12 @@ | |||
137 | /* we put a struct pt_regs on the stack and save the registers there */ | 136 | /* we put a struct pt_regs on the stack and save the registers there */ |
138 | 137 | ||
139 | tophys %r30,%r9 | 138 | tophys %r30,%r9 |
140 | STREG %r30,PT_GR30(%r9) | 139 | copy %r30,%r1 |
141 | ldo PT_SZ_ALGN(%r30),%r30 | 140 | ldo PT_SZ_ALGN(%r30),%r30 |
141 | STREG %r1,PT_GR30(%r9) | ||
142 | STREG %r29,PT_GR29(%r9) | 142 | STREG %r29,PT_GR29(%r9) |
143 | STREG %r26,PT_GR26(%r9) | 143 | STREG %r26,PT_GR26(%r9) |
144 | STREG %r16,PT_SR7(%r9) | ||
144 | copy %r9,%r29 | 145 | copy %r9,%r29 |
145 | .endm | 146 | .endm |
146 | 147 | ||
@@ -452,9 +453,41 @@ | |||
452 | L2_ptep \pgd,\pte,\index,\va,\fault | 453 | L2_ptep \pgd,\pte,\index,\va,\fault |
453 | .endm | 454 | .endm |
454 | 455 | ||
456 | /* Acquire pa_dbit_lock lock. */ | ||
457 | .macro dbit_lock spc,tmp,tmp1 | ||
458 | #ifdef CONFIG_SMP | ||
459 | cmpib,COND(=),n 0,\spc,2f | ||
460 | load32 PA(pa_dbit_lock),\tmp | ||
461 | 1: LDCW 0(\tmp),\tmp1 | ||
462 | cmpib,COND(=) 0,\tmp1,1b | ||
463 | nop | ||
464 | 2: | ||
465 | #endif | ||
466 | .endm | ||
467 | |||
468 | /* Release pa_dbit_lock lock without reloading lock address. */ | ||
469 | .macro dbit_unlock0 spc,tmp | ||
470 | #ifdef CONFIG_SMP | ||
471 | or,COND(=) %r0,\spc,%r0 | ||
472 | stw \spc,0(\tmp) | ||
473 | #endif | ||
474 | .endm | ||
475 | |||
476 | /* Release pa_dbit_lock lock. */ | ||
477 | .macro dbit_unlock1 spc,tmp | ||
478 | #ifdef CONFIG_SMP | ||
479 | load32 PA(pa_dbit_lock),\tmp | ||
480 | dbit_unlock0 \spc,\tmp | ||
481 | #endif | ||
482 | .endm | ||
483 | |||
455 | /* Set the _PAGE_ACCESSED bit of the PTE. Be clever and | 484 | /* Set the _PAGE_ACCESSED bit of the PTE. Be clever and |
456 | * don't needlessly dirty the cache line if it was already set */ | 485 | * don't needlessly dirty the cache line if it was already set */ |
457 | .macro update_ptep ptep,pte,tmp,tmp1 | 486 | .macro update_ptep spc,ptep,pte,tmp,tmp1 |
487 | #ifdef CONFIG_SMP | ||
488 | or,COND(=) %r0,\spc,%r0 | ||
489 | LDREG 0(\ptep),\pte | ||
490 | #endif | ||
458 | ldi _PAGE_ACCESSED,\tmp1 | 491 | ldi _PAGE_ACCESSED,\tmp1 |
459 | or \tmp1,\pte,\tmp | 492 | or \tmp1,\pte,\tmp |
460 | and,COND(<>) \tmp1,\pte,%r0 | 493 | and,COND(<>) \tmp1,\pte,%r0 |
@@ -463,7 +496,11 @@ | |||
463 | 496 | ||
464 | /* Set the dirty bit (and accessed bit). No need to be | 497 | /* Set the dirty bit (and accessed bit). No need to be |
465 | * clever, this is only used from the dirty fault */ | 498 | * clever, this is only used from the dirty fault */ |
466 | .macro update_dirty ptep,pte,tmp | 499 | .macro update_dirty spc,ptep,pte,tmp |
500 | #ifdef CONFIG_SMP | ||
501 | or,COND(=) %r0,\spc,%r0 | ||
502 | LDREG 0(\ptep),\pte | ||
503 | #endif | ||
467 | ldi _PAGE_ACCESSED|_PAGE_DIRTY,\tmp | 504 | ldi _PAGE_ACCESSED|_PAGE_DIRTY,\tmp |
468 | or \tmp,\pte,\pte | 505 | or \tmp,\pte,\pte |
469 | STREG \pte,0(\ptep) | 506 | STREG \pte,0(\ptep) |
@@ -1111,11 +1148,13 @@ dtlb_miss_20w: | |||
1111 | 1148 | ||
1112 | L3_ptep ptp,pte,t0,va,dtlb_check_alias_20w | 1149 | L3_ptep ptp,pte,t0,va,dtlb_check_alias_20w |
1113 | 1150 | ||
1114 | update_ptep ptp,pte,t0,t1 | 1151 | dbit_lock spc,t0,t1 |
1152 | update_ptep spc,ptp,pte,t0,t1 | ||
1115 | 1153 | ||
1116 | make_insert_tlb spc,pte,prot | 1154 | make_insert_tlb spc,pte,prot |
1117 | 1155 | ||
1118 | idtlbt pte,prot | 1156 | idtlbt pte,prot |
1157 | dbit_unlock1 spc,t0 | ||
1119 | 1158 | ||
1120 | rfir | 1159 | rfir |
1121 | nop | 1160 | nop |
@@ -1135,11 +1174,13 @@ nadtlb_miss_20w: | |||
1135 | 1174 | ||
1136 | L3_ptep ptp,pte,t0,va,nadtlb_check_alias_20w | 1175 | L3_ptep ptp,pte,t0,va,nadtlb_check_alias_20w |
1137 | 1176 | ||
1138 | update_ptep ptp,pte,t0,t1 | 1177 | dbit_lock spc,t0,t1 |
1178 | update_ptep spc,ptp,pte,t0,t1 | ||
1139 | 1179 | ||
1140 | make_insert_tlb spc,pte,prot | 1180 | make_insert_tlb spc,pte,prot |
1141 | 1181 | ||
1142 | idtlbt pte,prot | 1182 | idtlbt pte,prot |
1183 | dbit_unlock1 spc,t0 | ||
1143 | 1184 | ||
1144 | rfir | 1185 | rfir |
1145 | nop | 1186 | nop |
@@ -1161,7 +1202,8 @@ dtlb_miss_11: | |||
1161 | 1202 | ||
1162 | L2_ptep ptp,pte,t0,va,dtlb_check_alias_11 | 1203 | L2_ptep ptp,pte,t0,va,dtlb_check_alias_11 |
1163 | 1204 | ||
1164 | update_ptep ptp,pte,t0,t1 | 1205 | dbit_lock spc,t0,t1 |
1206 | update_ptep spc,ptp,pte,t0,t1 | ||
1165 | 1207 | ||
1166 | make_insert_tlb_11 spc,pte,prot | 1208 | make_insert_tlb_11 spc,pte,prot |
1167 | 1209 | ||
@@ -1172,6 +1214,7 @@ dtlb_miss_11: | |||
1172 | idtlbp prot,(%sr1,va) | 1214 | idtlbp prot,(%sr1,va) |
1173 | 1215 | ||
1174 | mtsp t0, %sr1 /* Restore sr1 */ | 1216 | mtsp t0, %sr1 /* Restore sr1 */ |
1217 | dbit_unlock1 spc,t0 | ||
1175 | 1218 | ||
1176 | rfir | 1219 | rfir |
1177 | nop | 1220 | nop |
@@ -1192,7 +1235,8 @@ nadtlb_miss_11: | |||
1192 | 1235 | ||
1193 | L2_ptep ptp,pte,t0,va,nadtlb_check_alias_11 | 1236 | L2_ptep ptp,pte,t0,va,nadtlb_check_alias_11 |
1194 | 1237 | ||
1195 | update_ptep ptp,pte,t0,t1 | 1238 | dbit_lock spc,t0,t1 |
1239 | update_ptep spc,ptp,pte,t0,t1 | ||
1196 | 1240 | ||
1197 | make_insert_tlb_11 spc,pte,prot | 1241 | make_insert_tlb_11 spc,pte,prot |
1198 | 1242 | ||
@@ -1204,6 +1248,7 @@ nadtlb_miss_11: | |||
1204 | idtlbp prot,(%sr1,va) | 1248 | idtlbp prot,(%sr1,va) |
1205 | 1249 | ||
1206 | mtsp t0, %sr1 /* Restore sr1 */ | 1250 | mtsp t0, %sr1 /* Restore sr1 */ |
1251 | dbit_unlock1 spc,t0 | ||
1207 | 1252 | ||
1208 | rfir | 1253 | rfir |
1209 | nop | 1254 | nop |
@@ -1224,13 +1269,15 @@ dtlb_miss_20: | |||
1224 | 1269 | ||
1225 | L2_ptep ptp,pte,t0,va,dtlb_check_alias_20 | 1270 | L2_ptep ptp,pte,t0,va,dtlb_check_alias_20 |
1226 | 1271 | ||
1227 | update_ptep ptp,pte,t0,t1 | 1272 | dbit_lock spc,t0,t1 |
1273 | update_ptep spc,ptp,pte,t0,t1 | ||
1228 | 1274 | ||
1229 | make_insert_tlb spc,pte,prot | 1275 | make_insert_tlb spc,pte,prot |
1230 | 1276 | ||
1231 | f_extend pte,t0 | 1277 | f_extend pte,t0 |
1232 | 1278 | ||
1233 | idtlbt pte,prot | 1279 | idtlbt pte,prot |
1280 | dbit_unlock1 spc,t0 | ||
1234 | 1281 | ||
1235 | rfir | 1282 | rfir |
1236 | nop | 1283 | nop |
@@ -1250,13 +1297,15 @@ nadtlb_miss_20: | |||
1250 | 1297 | ||
1251 | L2_ptep ptp,pte,t0,va,nadtlb_check_alias_20 | 1298 | L2_ptep ptp,pte,t0,va,nadtlb_check_alias_20 |
1252 | 1299 | ||
1253 | update_ptep ptp,pte,t0,t1 | 1300 | dbit_lock spc,t0,t1 |
1301 | update_ptep spc,ptp,pte,t0,t1 | ||
1254 | 1302 | ||
1255 | make_insert_tlb spc,pte,prot | 1303 | make_insert_tlb spc,pte,prot |
1256 | 1304 | ||
1257 | f_extend pte,t0 | 1305 | f_extend pte,t0 |
1258 | 1306 | ||
1259 | idtlbt pte,prot | 1307 | idtlbt pte,prot |
1308 | dbit_unlock1 spc,t0 | ||
1260 | 1309 | ||
1261 | rfir | 1310 | rfir |
1262 | nop | 1311 | nop |
@@ -1357,11 +1406,13 @@ itlb_miss_20w: | |||
1357 | 1406 | ||
1358 | L3_ptep ptp,pte,t0,va,itlb_fault | 1407 | L3_ptep ptp,pte,t0,va,itlb_fault |
1359 | 1408 | ||
1360 | update_ptep ptp,pte,t0,t1 | 1409 | dbit_lock spc,t0,t1 |
1410 | update_ptep spc,ptp,pte,t0,t1 | ||
1361 | 1411 | ||
1362 | make_insert_tlb spc,pte,prot | 1412 | make_insert_tlb spc,pte,prot |
1363 | 1413 | ||
1364 | iitlbt pte,prot | 1414 | iitlbt pte,prot |
1415 | dbit_unlock1 spc,t0 | ||
1365 | 1416 | ||
1366 | rfir | 1417 | rfir |
1367 | nop | 1418 | nop |
@@ -1379,11 +1430,13 @@ naitlb_miss_20w: | |||
1379 | 1430 | ||
1380 | L3_ptep ptp,pte,t0,va,naitlb_check_alias_20w | 1431 | L3_ptep ptp,pte,t0,va,naitlb_check_alias_20w |
1381 | 1432 | ||
1382 | update_ptep ptp,pte,t0,t1 | 1433 | dbit_lock spc,t0,t1 |
1434 | update_ptep spc,ptp,pte,t0,t1 | ||
1383 | 1435 | ||
1384 | make_insert_tlb spc,pte,prot | 1436 | make_insert_tlb spc,pte,prot |
1385 | 1437 | ||
1386 | iitlbt pte,prot | 1438 | iitlbt pte,prot |
1439 | dbit_unlock1 spc,t0 | ||
1387 | 1440 | ||
1388 | rfir | 1441 | rfir |
1389 | nop | 1442 | nop |
@@ -1405,7 +1458,8 @@ itlb_miss_11: | |||
1405 | 1458 | ||
1406 | L2_ptep ptp,pte,t0,va,itlb_fault | 1459 | L2_ptep ptp,pte,t0,va,itlb_fault |
1407 | 1460 | ||
1408 | update_ptep ptp,pte,t0,t1 | 1461 | dbit_lock spc,t0,t1 |
1462 | update_ptep spc,ptp,pte,t0,t1 | ||
1409 | 1463 | ||
1410 | make_insert_tlb_11 spc,pte,prot | 1464 | make_insert_tlb_11 spc,pte,prot |
1411 | 1465 | ||
@@ -1416,6 +1470,7 @@ itlb_miss_11: | |||
1416 | iitlbp prot,(%sr1,va) | 1470 | iitlbp prot,(%sr1,va) |
1417 | 1471 | ||
1418 | mtsp t0, %sr1 /* Restore sr1 */ | 1472 | mtsp t0, %sr1 /* Restore sr1 */ |
1473 | dbit_unlock1 spc,t0 | ||
1419 | 1474 | ||
1420 | rfir | 1475 | rfir |
1421 | nop | 1476 | nop |
@@ -1427,7 +1482,8 @@ naitlb_miss_11: | |||
1427 | 1482 | ||
1428 | L2_ptep ptp,pte,t0,va,naitlb_check_alias_11 | 1483 | L2_ptep ptp,pte,t0,va,naitlb_check_alias_11 |
1429 | 1484 | ||
1430 | update_ptep ptp,pte,t0,t1 | 1485 | dbit_lock spc,t0,t1 |
1486 | update_ptep spc,ptp,pte,t0,t1 | ||
1431 | 1487 | ||
1432 | make_insert_tlb_11 spc,pte,prot | 1488 | make_insert_tlb_11 spc,pte,prot |
1433 | 1489 | ||
@@ -1438,6 +1494,7 @@ naitlb_miss_11: | |||
1438 | iitlbp prot,(%sr1,va) | 1494 | iitlbp prot,(%sr1,va) |
1439 | 1495 | ||
1440 | mtsp t0, %sr1 /* Restore sr1 */ | 1496 | mtsp t0, %sr1 /* Restore sr1 */ |
1497 | dbit_unlock1 spc,t0 | ||
1441 | 1498 | ||
1442 | rfir | 1499 | rfir |
1443 | nop | 1500 | nop |
@@ -1459,13 +1516,15 @@ itlb_miss_20: | |||
1459 | 1516 | ||
1460 | L2_ptep ptp,pte,t0,va,itlb_fault | 1517 | L2_ptep ptp,pte,t0,va,itlb_fault |
1461 | 1518 | ||
1462 | update_ptep ptp,pte,t0,t1 | 1519 | dbit_lock spc,t0,t1 |
1520 | update_ptep spc,ptp,pte,t0,t1 | ||
1463 | 1521 | ||
1464 | make_insert_tlb spc,pte,prot | 1522 | make_insert_tlb spc,pte,prot |
1465 | 1523 | ||
1466 | f_extend pte,t0 | 1524 | f_extend pte,t0 |
1467 | 1525 | ||
1468 | iitlbt pte,prot | 1526 | iitlbt pte,prot |
1527 | dbit_unlock1 spc,t0 | ||
1469 | 1528 | ||
1470 | rfir | 1529 | rfir |
1471 | nop | 1530 | nop |
@@ -1477,13 +1536,15 @@ naitlb_miss_20: | |||
1477 | 1536 | ||
1478 | L2_ptep ptp,pte,t0,va,naitlb_check_alias_20 | 1537 | L2_ptep ptp,pte,t0,va,naitlb_check_alias_20 |
1479 | 1538 | ||
1480 | update_ptep ptp,pte,t0,t1 | 1539 | dbit_lock spc,t0,t1 |
1540 | update_ptep spc,ptp,pte,t0,t1 | ||
1481 | 1541 | ||
1482 | make_insert_tlb spc,pte,prot | 1542 | make_insert_tlb spc,pte,prot |
1483 | 1543 | ||
1484 | f_extend pte,t0 | 1544 | f_extend pte,t0 |
1485 | 1545 | ||
1486 | iitlbt pte,prot | 1546 | iitlbt pte,prot |
1547 | dbit_unlock1 spc,t0 | ||
1487 | 1548 | ||
1488 | rfir | 1549 | rfir |
1489 | nop | 1550 | nop |
@@ -1507,29 +1568,13 @@ dbit_trap_20w: | |||
1507 | 1568 | ||
1508 | L3_ptep ptp,pte,t0,va,dbit_fault | 1569 | L3_ptep ptp,pte,t0,va,dbit_fault |
1509 | 1570 | ||
1510 | #ifdef CONFIG_SMP | 1571 | dbit_lock spc,t0,t1 |
1511 | cmpib,COND(=),n 0,spc,dbit_nolock_20w | 1572 | update_dirty spc,ptp,pte,t1 |
1512 | load32 PA(pa_dbit_lock),t0 | ||
1513 | |||
1514 | dbit_spin_20w: | ||
1515 | LDCW 0(t0),t1 | ||
1516 | cmpib,COND(=) 0,t1,dbit_spin_20w | ||
1517 | nop | ||
1518 | |||
1519 | dbit_nolock_20w: | ||
1520 | #endif | ||
1521 | update_dirty ptp,pte,t1 | ||
1522 | 1573 | ||
1523 | make_insert_tlb spc,pte,prot | 1574 | make_insert_tlb spc,pte,prot |
1524 | 1575 | ||
1525 | idtlbt pte,prot | 1576 | idtlbt pte,prot |
1526 | #ifdef CONFIG_SMP | 1577 | dbit_unlock0 spc,t0 |
1527 | cmpib,COND(=),n 0,spc,dbit_nounlock_20w | ||
1528 | ldi 1,t1 | ||
1529 | stw t1,0(t0) | ||
1530 | |||
1531 | dbit_nounlock_20w: | ||
1532 | #endif | ||
1533 | 1578 | ||
1534 | rfir | 1579 | rfir |
1535 | nop | 1580 | nop |
@@ -1543,18 +1588,8 @@ dbit_trap_11: | |||
1543 | 1588 | ||
1544 | L2_ptep ptp,pte,t0,va,dbit_fault | 1589 | L2_ptep ptp,pte,t0,va,dbit_fault |
1545 | 1590 | ||
1546 | #ifdef CONFIG_SMP | 1591 | dbit_lock spc,t0,t1 |
1547 | cmpib,COND(=),n 0,spc,dbit_nolock_11 | 1592 | update_dirty spc,ptp,pte,t1 |
1548 | load32 PA(pa_dbit_lock),t0 | ||
1549 | |||
1550 | dbit_spin_11: | ||
1551 | LDCW 0(t0),t1 | ||
1552 | cmpib,= 0,t1,dbit_spin_11 | ||
1553 | nop | ||
1554 | |||
1555 | dbit_nolock_11: | ||
1556 | #endif | ||
1557 | update_dirty ptp,pte,t1 | ||
1558 | 1593 | ||
1559 | make_insert_tlb_11 spc,pte,prot | 1594 | make_insert_tlb_11 spc,pte,prot |
1560 | 1595 | ||
@@ -1565,13 +1600,7 @@ dbit_nolock_11: | |||
1565 | idtlbp prot,(%sr1,va) | 1600 | idtlbp prot,(%sr1,va) |
1566 | 1601 | ||
1567 | mtsp t1, %sr1 /* Restore sr1 */ | 1602 | mtsp t1, %sr1 /* Restore sr1 */ |
1568 | #ifdef CONFIG_SMP | 1603 | dbit_unlock0 spc,t0 |
1569 | cmpib,COND(=),n 0,spc,dbit_nounlock_11 | ||
1570 | ldi 1,t1 | ||
1571 | stw t1,0(t0) | ||
1572 | |||
1573 | dbit_nounlock_11: | ||
1574 | #endif | ||
1575 | 1604 | ||
1576 | rfir | 1605 | rfir |
1577 | nop | 1606 | nop |
@@ -1583,32 +1612,15 @@ dbit_trap_20: | |||
1583 | 1612 | ||
1584 | L2_ptep ptp,pte,t0,va,dbit_fault | 1613 | L2_ptep ptp,pte,t0,va,dbit_fault |
1585 | 1614 | ||
1586 | #ifdef CONFIG_SMP | 1615 | dbit_lock spc,t0,t1 |
1587 | cmpib,COND(=),n 0,spc,dbit_nolock_20 | 1616 | update_dirty spc,ptp,pte,t1 |
1588 | load32 PA(pa_dbit_lock),t0 | ||
1589 | |||
1590 | dbit_spin_20: | ||
1591 | LDCW 0(t0),t1 | ||
1592 | cmpib,= 0,t1,dbit_spin_20 | ||
1593 | nop | ||
1594 | |||
1595 | dbit_nolock_20: | ||
1596 | #endif | ||
1597 | update_dirty ptp,pte,t1 | ||
1598 | 1617 | ||
1599 | make_insert_tlb spc,pte,prot | 1618 | make_insert_tlb spc,pte,prot |
1600 | 1619 | ||
1601 | f_extend pte,t1 | 1620 | f_extend pte,t1 |
1602 | 1621 | ||
1603 | idtlbt pte,prot | 1622 | idtlbt pte,prot |
1604 | 1623 | dbit_unlock0 spc,t0 | |
1605 | #ifdef CONFIG_SMP | ||
1606 | cmpib,COND(=),n 0,spc,dbit_nounlock_20 | ||
1607 | ldi 1,t1 | ||
1608 | stw t1,0(t0) | ||
1609 | |||
1610 | dbit_nounlock_20: | ||
1611 | #endif | ||
1612 | 1624 | ||
1613 | rfir | 1625 | rfir |
1614 | nop | 1626 | nop |
diff --git a/arch/parisc/kernel/hardware.c b/arch/parisc/kernel/hardware.c index f7752f6af29e..9e2d2e408529 100644 --- a/arch/parisc/kernel/hardware.c +++ b/arch/parisc/kernel/hardware.c | |||
@@ -222,6 +222,7 @@ static struct hp_hardware hp_hardware_list[] = { | |||
222 | {HPHW_NPROC,0x5DD,0x4,0x81,"Duet W2"}, | 222 | {HPHW_NPROC,0x5DD,0x4,0x81,"Duet W2"}, |
223 | {HPHW_NPROC,0x5DE,0x4,0x81,"Piccolo W+"}, | 223 | {HPHW_NPROC,0x5DE,0x4,0x81,"Piccolo W+"}, |
224 | {HPHW_NPROC,0x5DF,0x4,0x81,"Cantata W2"}, | 224 | {HPHW_NPROC,0x5DF,0x4,0x81,"Cantata W2"}, |
225 | {HPHW_NPROC,0x5DF,0x0,0x00,"Marcato W+? (rp5470)"}, | ||
225 | {HPHW_NPROC,0x5E0,0x4,0x91,"Cantata DC- W2"}, | 226 | {HPHW_NPROC,0x5E0,0x4,0x91,"Cantata DC- W2"}, |
226 | {HPHW_NPROC,0x5E1,0x4,0x91,"Crescendo DC- W2"}, | 227 | {HPHW_NPROC,0x5E1,0x4,0x91,"Crescendo DC- W2"}, |
227 | {HPHW_NPROC,0x5E2,0x4,0x91,"Crescendo 650 W2"}, | 228 | {HPHW_NPROC,0x5E2,0x4,0x91,"Crescendo 650 W2"}, |
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index e255db0bb761..2e6443b1e922 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c | |||
@@ -27,11 +27,11 @@ | |||
27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
28 | #include <linux/kernel_stat.h> | 28 | #include <linux/kernel_stat.h> |
29 | #include <linux/seq_file.h> | 29 | #include <linux/seq_file.h> |
30 | #include <linux/spinlock.h> | ||
31 | #include <linux/types.h> | 30 | #include <linux/types.h> |
32 | #include <asm/io.h> | 31 | #include <asm/io.h> |
33 | 32 | ||
34 | #include <asm/smp.h> | 33 | #include <asm/smp.h> |
34 | #include <asm/ldcw.h> | ||
35 | 35 | ||
36 | #undef PARISC_IRQ_CR16_COUNTS | 36 | #undef PARISC_IRQ_CR16_COUNTS |
37 | 37 | ||
@@ -166,22 +166,36 @@ int arch_show_interrupts(struct seq_file *p, int prec) | |||
166 | seq_printf(p, "%*s: ", prec, "STK"); | 166 | seq_printf(p, "%*s: ", prec, "STK"); |
167 | for_each_online_cpu(j) | 167 | for_each_online_cpu(j) |
168 | seq_printf(p, "%10u ", irq_stats(j)->kernel_stack_usage); | 168 | seq_printf(p, "%10u ", irq_stats(j)->kernel_stack_usage); |
169 | seq_printf(p, " Kernel stack usage\n"); | 169 | seq_puts(p, " Kernel stack usage\n"); |
170 | # ifdef CONFIG_IRQSTACKS | ||
171 | seq_printf(p, "%*s: ", prec, "IST"); | ||
172 | for_each_online_cpu(j) | ||
173 | seq_printf(p, "%10u ", irq_stats(j)->irq_stack_usage); | ||
174 | seq_puts(p, " Interrupt stack usage\n"); | ||
175 | # endif | ||
170 | #endif | 176 | #endif |
171 | #ifdef CONFIG_SMP | 177 | #ifdef CONFIG_SMP |
172 | seq_printf(p, "%*s: ", prec, "RES"); | 178 | seq_printf(p, "%*s: ", prec, "RES"); |
173 | for_each_online_cpu(j) | 179 | for_each_online_cpu(j) |
174 | seq_printf(p, "%10u ", irq_stats(j)->irq_resched_count); | 180 | seq_printf(p, "%10u ", irq_stats(j)->irq_resched_count); |
175 | seq_printf(p, " Rescheduling interrupts\n"); | 181 | seq_puts(p, " Rescheduling interrupts\n"); |
176 | seq_printf(p, "%*s: ", prec, "CAL"); | 182 | seq_printf(p, "%*s: ", prec, "CAL"); |
177 | for_each_online_cpu(j) | 183 | for_each_online_cpu(j) |
178 | seq_printf(p, "%10u ", irq_stats(j)->irq_call_count); | 184 | seq_printf(p, "%10u ", irq_stats(j)->irq_call_count); |
179 | seq_printf(p, " Function call interrupts\n"); | 185 | seq_puts(p, " Function call interrupts\n"); |
180 | #endif | 186 | #endif |
187 | seq_printf(p, "%*s: ", prec, "UAH"); | ||
188 | for_each_online_cpu(j) | ||
189 | seq_printf(p, "%10u ", irq_stats(j)->irq_unaligned_count); | ||
190 | seq_puts(p, " Unaligned access handler traps\n"); | ||
191 | seq_printf(p, "%*s: ", prec, "FPA"); | ||
192 | for_each_online_cpu(j) | ||
193 | seq_printf(p, "%10u ", irq_stats(j)->irq_fpassist_count); | ||
194 | seq_puts(p, " Floating point assist traps\n"); | ||
181 | seq_printf(p, "%*s: ", prec, "TLB"); | 195 | seq_printf(p, "%*s: ", prec, "TLB"); |
182 | for_each_online_cpu(j) | 196 | for_each_online_cpu(j) |
183 | seq_printf(p, "%10u ", irq_stats(j)->irq_tlb_count); | 197 | seq_printf(p, "%10u ", irq_stats(j)->irq_tlb_count); |
184 | seq_printf(p, " TLB shootdowns\n"); | 198 | seq_puts(p, " TLB shootdowns\n"); |
185 | return 0; | 199 | return 0; |
186 | } | 200 | } |
187 | 201 | ||
@@ -366,6 +380,24 @@ static inline int eirr_to_irq(unsigned long eirr) | |||
366 | return (BITS_PER_LONG - bit) + TIMER_IRQ; | 380 | return (BITS_PER_LONG - bit) + TIMER_IRQ; |
367 | } | 381 | } |
368 | 382 | ||
383 | #ifdef CONFIG_IRQSTACKS | ||
384 | /* | ||
385 | * IRQ STACK - used for irq handler | ||
386 | */ | ||
387 | #define IRQ_STACK_SIZE (4096 << 2) /* 16k irq stack size */ | ||
388 | |||
389 | union irq_stack_union { | ||
390 | unsigned long stack[IRQ_STACK_SIZE/sizeof(unsigned long)]; | ||
391 | volatile unsigned int slock[4]; | ||
392 | volatile unsigned int lock[1]; | ||
393 | }; | ||
394 | |||
395 | DEFINE_PER_CPU(union irq_stack_union, irq_stack_union) = { | ||
396 | .slock = { 1,1,1,1 }, | ||
397 | }; | ||
398 | #endif | ||
399 | |||
400 | |||
369 | int sysctl_panic_on_stackoverflow = 1; | 401 | int sysctl_panic_on_stackoverflow = 1; |
370 | 402 | ||
371 | static inline void stack_overflow_check(struct pt_regs *regs) | 403 | static inline void stack_overflow_check(struct pt_regs *regs) |
@@ -378,6 +410,7 @@ static inline void stack_overflow_check(struct pt_regs *regs) | |||
378 | unsigned long sp = regs->gr[30]; | 410 | unsigned long sp = regs->gr[30]; |
379 | unsigned long stack_usage; | 411 | unsigned long stack_usage; |
380 | unsigned int *last_usage; | 412 | unsigned int *last_usage; |
413 | int cpu = smp_processor_id(); | ||
381 | 414 | ||
382 | /* if sr7 != 0, we interrupted a userspace process which we do not want | 415 | /* if sr7 != 0, we interrupted a userspace process which we do not want |
383 | * to check for stack overflow. We will only check the kernel stack. */ | 416 | * to check for stack overflow. We will only check the kernel stack. */ |
@@ -386,7 +419,31 @@ static inline void stack_overflow_check(struct pt_regs *regs) | |||
386 | 419 | ||
387 | /* calculate kernel stack usage */ | 420 | /* calculate kernel stack usage */ |
388 | stack_usage = sp - stack_start; | 421 | stack_usage = sp - stack_start; |
389 | last_usage = &per_cpu(irq_stat.kernel_stack_usage, smp_processor_id()); | 422 | #ifdef CONFIG_IRQSTACKS |
423 | if (likely(stack_usage <= THREAD_SIZE)) | ||
424 | goto check_kernel_stack; /* found kernel stack */ | ||
425 | |||
426 | /* check irq stack usage */ | ||
427 | stack_start = (unsigned long) &per_cpu(irq_stack_union, cpu).stack; | ||
428 | stack_usage = sp - stack_start; | ||
429 | |||
430 | last_usage = &per_cpu(irq_stat.irq_stack_usage, cpu); | ||
431 | if (unlikely(stack_usage > *last_usage)) | ||
432 | *last_usage = stack_usage; | ||
433 | |||
434 | if (likely(stack_usage < (IRQ_STACK_SIZE - STACK_MARGIN))) | ||
435 | return; | ||
436 | |||
437 | pr_emerg("stackcheck: %s will most likely overflow irq stack " | ||
438 | "(sp:%lx, stk bottom-top:%lx-%lx)\n", | ||
439 | current->comm, sp, stack_start, stack_start + IRQ_STACK_SIZE); | ||
440 | goto panic_check; | ||
441 | |||
442 | check_kernel_stack: | ||
443 | #endif | ||
444 | |||
445 | /* check kernel stack usage */ | ||
446 | last_usage = &per_cpu(irq_stat.kernel_stack_usage, cpu); | ||
390 | 447 | ||
391 | if (unlikely(stack_usage > *last_usage)) | 448 | if (unlikely(stack_usage > *last_usage)) |
392 | *last_usage = stack_usage; | 449 | *last_usage = stack_usage; |
@@ -398,31 +455,66 @@ static inline void stack_overflow_check(struct pt_regs *regs) | |||
398 | "(sp:%lx, stk bottom-top:%lx-%lx)\n", | 455 | "(sp:%lx, stk bottom-top:%lx-%lx)\n", |
399 | current->comm, sp, stack_start, stack_start + THREAD_SIZE); | 456 | current->comm, sp, stack_start, stack_start + THREAD_SIZE); |
400 | 457 | ||
458 | #ifdef CONFIG_IRQSTACKS | ||
459 | panic_check: | ||
460 | #endif | ||
401 | if (sysctl_panic_on_stackoverflow) | 461 | if (sysctl_panic_on_stackoverflow) |
402 | panic("low stack detected by irq handler - check messages\n"); | 462 | panic("low stack detected by irq handler - check messages\n"); |
403 | #endif | 463 | #endif |
404 | } | 464 | } |
405 | 465 | ||
406 | #ifdef CONFIG_IRQSTACKS | 466 | #ifdef CONFIG_IRQSTACKS |
407 | DEFINE_PER_CPU(union irq_stack_union, irq_stack_union); | 467 | /* in entry.S: */ |
468 | void call_on_stack(unsigned long p1, void *func, unsigned long new_stack); | ||
408 | 469 | ||
409 | static void execute_on_irq_stack(void *func, unsigned long param1) | 470 | static void execute_on_irq_stack(void *func, unsigned long param1) |
410 | { | 471 | { |
411 | unsigned long *irq_stack_start; | 472 | union irq_stack_union *union_ptr; |
412 | unsigned long irq_stack; | 473 | unsigned long irq_stack; |
413 | int cpu = smp_processor_id(); | 474 | volatile unsigned int *irq_stack_in_use; |
475 | |||
476 | union_ptr = &per_cpu(irq_stack_union, smp_processor_id()); | ||
477 | irq_stack = (unsigned long) &union_ptr->stack; | ||
478 | irq_stack = ALIGN(irq_stack + sizeof(irq_stack_union.slock), | ||
479 | 64); /* align for stack frame usage */ | ||
414 | 480 | ||
415 | irq_stack_start = &per_cpu(irq_stack_union, cpu).stack[0]; | 481 | /* We may be called recursive. If we are already using the irq stack, |
416 | irq_stack = (unsigned long) irq_stack_start; | 482 | * just continue to use it. Use spinlocks to serialize |
417 | irq_stack = ALIGN(irq_stack, 16); /* align for stack frame usage */ | 483 | * the irq stack usage. |
484 | */ | ||
485 | irq_stack_in_use = (volatile unsigned int *)__ldcw_align(union_ptr); | ||
486 | if (!__ldcw(irq_stack_in_use)) { | ||
487 | void (*direct_call)(unsigned long p1) = func; | ||
418 | 488 | ||
419 | BUG_ON(*irq_stack_start); /* report bug if we were called recursive. */ | 489 | /* We are using the IRQ stack already. |
420 | *irq_stack_start = 1; | 490 | * Do direct call on current stack. */ |
491 | direct_call(param1); | ||
492 | return; | ||
493 | } | ||
421 | 494 | ||
422 | /* This is where we switch to the IRQ stack. */ | 495 | /* This is where we switch to the IRQ stack. */ |
423 | call_on_stack(param1, func, irq_stack); | 496 | call_on_stack(param1, func, irq_stack); |
424 | 497 | ||
425 | *irq_stack_start = 0; | 498 | /* free up irq stack usage. */ |
499 | *irq_stack_in_use = 1; | ||
500 | } | ||
501 | |||
502 | asmlinkage void do_softirq(void) | ||
503 | { | ||
504 | __u32 pending; | ||
505 | unsigned long flags; | ||
506 | |||
507 | if (in_interrupt()) | ||
508 | return; | ||
509 | |||
510 | local_irq_save(flags); | ||
511 | |||
512 | pending = local_softirq_pending(); | ||
513 | |||
514 | if (pending) | ||
515 | execute_on_irq_stack(__do_softirq, 0); | ||
516 | |||
517 | local_irq_restore(flags); | ||
426 | } | 518 | } |
427 | #endif /* CONFIG_IRQSTACKS */ | 519 | #endif /* CONFIG_IRQSTACKS */ |
428 | 520 | ||
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 5e1de6072be5..36d7f402e48e 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
@@ -605,14 +605,14 @@ ENTRY(copy_user_page_asm) | |||
605 | convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ | 605 | convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ |
606 | convert_phys_for_tlb_insert20 %r23 /* convert phys addr to tlb insert format */ | 606 | convert_phys_for_tlb_insert20 %r23 /* convert phys addr to tlb insert format */ |
607 | depd %r24,63,22, %r28 /* Form aliased virtual address 'to' */ | 607 | depd %r24,63,22, %r28 /* Form aliased virtual address 'to' */ |
608 | depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ | 608 | depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ |
609 | copy %r28, %r29 | 609 | copy %r28, %r29 |
610 | depdi 1, 41,1, %r29 /* Form aliased virtual address 'from' */ | 610 | depdi 1, 41,1, %r29 /* Form aliased virtual address 'from' */ |
611 | #else | 611 | #else |
612 | extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ | 612 | extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ |
613 | extrw,u %r23, 24,25, %r23 /* convert phys addr to tlb insert format */ | 613 | extrw,u %r23, 24,25, %r23 /* convert phys addr to tlb insert format */ |
614 | depw %r24, 31,22, %r28 /* Form aliased virtual address 'to' */ | 614 | depw %r24, 31,22, %r28 /* Form aliased virtual address 'to' */ |
615 | depwi 0, 31,12, %r28 /* Clear any offset bits */ | 615 | depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ |
616 | copy %r28, %r29 | 616 | copy %r28, %r29 |
617 | depwi 1, 9,1, %r29 /* Form aliased virtual address 'from' */ | 617 | depwi 1, 9,1, %r29 /* Form aliased virtual address 'from' */ |
618 | #endif | 618 | #endif |
@@ -762,7 +762,7 @@ ENTRY(clear_user_page_asm) | |||
762 | #else | 762 | #else |
763 | extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ | 763 | extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ |
764 | depw %r25, 31,22, %r28 /* Form aliased virtual address 'to' */ | 764 | depw %r25, 31,22, %r28 /* Form aliased virtual address 'to' */ |
765 | depwi 0, 31,12, %r28 /* Clear any offset bits */ | 765 | depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ |
766 | #endif | 766 | #endif |
767 | 767 | ||
768 | /* Purge any old translation */ | 768 | /* Purge any old translation */ |
@@ -846,7 +846,7 @@ ENTRY(flush_dcache_page_asm) | |||
846 | #else | 846 | #else |
847 | extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ | 847 | extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ |
848 | depw %r25, 31,22, %r28 /* Form aliased virtual address 'to' */ | 848 | depw %r25, 31,22, %r28 /* Form aliased virtual address 'to' */ |
849 | depwi 0, 31,12, %r28 /* Clear any offset bits */ | 849 | depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ |
850 | #endif | 850 | #endif |
851 | 851 | ||
852 | /* Purge any old translation */ | 852 | /* Purge any old translation */ |
@@ -918,11 +918,11 @@ ENTRY(flush_icache_page_asm) | |||
918 | #endif | 918 | #endif |
919 | convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ | 919 | convert_phys_for_tlb_insert20 %r26 /* convert phys addr to tlb insert format */ |
920 | depd %r25, 63,22, %r28 /* Form aliased virtual address 'to' */ | 920 | depd %r25, 63,22, %r28 /* Form aliased virtual address 'to' */ |
921 | depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ | 921 | depdi 0, 63,PAGE_SHIFT, %r28 /* Clear any offset bits */ |
922 | #else | 922 | #else |
923 | extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ | 923 | extrw,u %r26, 24,25, %r26 /* convert phys addr to tlb insert format */ |
924 | depw %r25, 31,22, %r28 /* Form aliased virtual address 'to' */ | 924 | depw %r25, 31,22, %r28 /* Form aliased virtual address 'to' */ |
925 | depwi 0, 31,12, %r28 /* Clear any offset bits */ | 925 | depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ |
926 | #endif | 926 | #endif |
927 | 927 | ||
928 | /* Purge any old translation */ | 928 | /* Purge any old translation */ |
diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c index 76b63e726a53..1e95b2000ce8 100644 --- a/arch/parisc/kernel/setup.c +++ b/arch/parisc/kernel/setup.c | |||
@@ -69,7 +69,8 @@ void __init setup_cmdline(char **cmdline_p) | |||
69 | /* called from hpux boot loader */ | 69 | /* called from hpux boot loader */ |
70 | boot_command_line[0] = '\0'; | 70 | boot_command_line[0] = '\0'; |
71 | } else { | 71 | } else { |
72 | strcpy(boot_command_line, (char *)__va(boot_args[1])); | 72 | strlcpy(boot_command_line, (char *)__va(boot_args[1]), |
73 | COMMAND_LINE_SIZE); | ||
73 | 74 | ||
74 | #ifdef CONFIG_BLK_DEV_INITRD | 75 | #ifdef CONFIG_BLK_DEV_INITRD |
75 | if (boot_args[2] != 0) /* did palo pass us a ramdisk? */ | 76 | if (boot_args[2] != 0) /* did palo pass us a ramdisk? */ |
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index fe41a98043bb..04e47c6a4562 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
@@ -646,6 +646,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs) | |||
646 | case 14: | 646 | case 14: |
647 | /* Assist Exception Trap, i.e. floating point exception. */ | 647 | /* Assist Exception Trap, i.e. floating point exception. */ |
648 | die_if_kernel("Floating point exception", regs, 0); /* quiet */ | 648 | die_if_kernel("Floating point exception", regs, 0); /* quiet */ |
649 | __inc_irq_stat(irq_fpassist_count); | ||
649 | handle_fpe(regs); | 650 | handle_fpe(regs); |
650 | return; | 651 | return; |
651 | 652 | ||
diff --git a/arch/parisc/kernel/unaligned.c b/arch/parisc/kernel/unaligned.c index 234e3682cf09..d7c0acb35ec2 100644 --- a/arch/parisc/kernel/unaligned.c +++ b/arch/parisc/kernel/unaligned.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/signal.h> | 27 | #include <linux/signal.h> |
28 | #include <linux/ratelimit.h> | 28 | #include <linux/ratelimit.h> |
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/hardirq.h> | ||
30 | 31 | ||
31 | /* #define DEBUG_UNALIGNED 1 */ | 32 | /* #define DEBUG_UNALIGNED 1 */ |
32 | 33 | ||
@@ -454,6 +455,8 @@ void handle_unaligned(struct pt_regs *regs) | |||
454 | struct siginfo si; | 455 | struct siginfo si; |
455 | register int flop=0; /* true if this is a flop */ | 456 | register int flop=0; /* true if this is a flop */ |
456 | 457 | ||
458 | __inc_irq_stat(irq_unaligned_count); | ||
459 | |||
457 | /* log a message with pacing */ | 460 | /* log a message with pacing */ |
458 | if (user_mode(regs)) { | 461 | if (user_mode(regs)) { |
459 | if (current->thread.flags & PARISC_UAC_SIGBUS) { | 462 | if (current->thread.flags & PARISC_UAC_SIGBUS) { |
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index ce939ac8622b..1c965642068b 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c | |||
@@ -1069,7 +1069,7 @@ void flush_tlb_all(void) | |||
1069 | { | 1069 | { |
1070 | int do_recycle; | 1070 | int do_recycle; |
1071 | 1071 | ||
1072 | inc_irq_stat(irq_tlb_count); | 1072 | __inc_irq_stat(irq_tlb_count); |
1073 | do_recycle = 0; | 1073 | do_recycle = 0; |
1074 | spin_lock(&sid_lock); | 1074 | spin_lock(&sid_lock); |
1075 | if (dirty_space_ids > RECYCLE_THRESHOLD) { | 1075 | if (dirty_space_ids > RECYCLE_THRESHOLD) { |
@@ -1090,7 +1090,7 @@ void flush_tlb_all(void) | |||
1090 | #else | 1090 | #else |
1091 | void flush_tlb_all(void) | 1091 | void flush_tlb_all(void) |
1092 | { | 1092 | { |
1093 | inc_irq_stat(irq_tlb_count); | 1093 | __inc_irq_stat(irq_tlb_count); |
1094 | spin_lock(&sid_lock); | 1094 | spin_lock(&sid_lock); |
1095 | flush_tlb_all_local(NULL); | 1095 | flush_tlb_all_local(NULL); |
1096 | recycle_sids(); | 1096 | recycle_sids(); |
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug index 5416e28a7538..863d877e0b5f 100644 --- a/arch/powerpc/Kconfig.debug +++ b/arch/powerpc/Kconfig.debug | |||
@@ -262,8 +262,31 @@ config PPC_EARLY_DEBUG_OPAL_HVSI | |||
262 | Select this to enable early debugging for the PowerNV platform | 262 | Select this to enable early debugging for the PowerNV platform |
263 | using an "hvsi" console | 263 | using an "hvsi" console |
264 | 264 | ||
265 | config PPC_EARLY_DEBUG_MEMCONS | ||
266 | bool "In memory console" | ||
267 | help | ||
268 | Select this to enable early debugging using an in memory console. | ||
269 | This console provides input and output buffers stored within the | ||
270 | kernel BSS and should be safe to select on any system. A debugger | ||
271 | can then be used to read kernel output or send input to the console. | ||
265 | endchoice | 272 | endchoice |
266 | 273 | ||
274 | config PPC_MEMCONS_OUTPUT_SIZE | ||
275 | int "In memory console output buffer size" | ||
276 | depends on PPC_EARLY_DEBUG_MEMCONS | ||
277 | default 4096 | ||
278 | help | ||
279 | Selects the size of the output buffer (in bytes) of the in memory | ||
280 | console. | ||
281 | |||
282 | config PPC_MEMCONS_INPUT_SIZE | ||
283 | int "In memory console input buffer size" | ||
284 | depends on PPC_EARLY_DEBUG_MEMCONS | ||
285 | default 128 | ||
286 | help | ||
287 | Selects the size of the input buffer (in bytes) of the in memory | ||
288 | console. | ||
289 | |||
267 | config PPC_EARLY_DEBUG_OPAL | 290 | config PPC_EARLY_DEBUG_OPAL |
268 | def_bool y | 291 | def_bool y |
269 | depends on PPC_EARLY_DEBUG_OPAL_RAW || PPC_EARLY_DEBUG_OPAL_HVSI | 292 | depends on PPC_EARLY_DEBUG_OPAL_RAW || PPC_EARLY_DEBUG_OPAL_HVSI |
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig index f79196232917..139a8308070c 100644 --- a/arch/powerpc/configs/ps3_defconfig +++ b/arch/powerpc/configs/ps3_defconfig | |||
@@ -136,7 +136,6 @@ CONFIG_HID_SMARTJOYPLUS=m | |||
136 | CONFIG_USB_HIDDEV=y | 136 | CONFIG_USB_HIDDEV=y |
137 | CONFIG_USB=m | 137 | CONFIG_USB=m |
138 | CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | 138 | CONFIG_USB_ANNOUNCE_NEW_DEVICES=y |
139 | CONFIG_USB_SUSPEND=y | ||
140 | CONFIG_USB_MON=m | 139 | CONFIG_USB_MON=m |
141 | CONFIG_USB_EHCI_HCD=m | 140 | CONFIG_USB_EHCI_HCD=m |
142 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 141 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
diff --git a/arch/powerpc/include/asm/context_tracking.h b/arch/powerpc/include/asm/context_tracking.h new file mode 100644 index 000000000000..b6f5a33b8ee2 --- /dev/null +++ b/arch/powerpc/include/asm/context_tracking.h | |||
@@ -0,0 +1,10 @@ | |||
1 | #ifndef _ASM_POWERPC_CONTEXT_TRACKING_H | ||
2 | #define _ASM_POWERPC_CONTEXT_TRACKING_H | ||
3 | |||
4 | #ifdef CONFIG_CONTEXT_TRACKING | ||
5 | #define SCHEDULE_USER bl .schedule_user | ||
6 | #else | ||
7 | #define SCHEDULE_USER bl .schedule | ||
8 | #endif | ||
9 | |||
10 | #endif | ||
diff --git a/arch/powerpc/include/asm/firmware.h b/arch/powerpc/include/asm/firmware.h index 0df54646f968..681bc0314b6b 100644 --- a/arch/powerpc/include/asm/firmware.h +++ b/arch/powerpc/include/asm/firmware.h | |||
@@ -52,6 +52,7 @@ | |||
52 | #define FW_FEATURE_BEST_ENERGY ASM_CONST(0x0000000080000000) | 52 | #define FW_FEATURE_BEST_ENERGY ASM_CONST(0x0000000080000000) |
53 | #define FW_FEATURE_TYPE1_AFFINITY ASM_CONST(0x0000000100000000) | 53 | #define FW_FEATURE_TYPE1_AFFINITY ASM_CONST(0x0000000100000000) |
54 | #define FW_FEATURE_PRRN ASM_CONST(0x0000000200000000) | 54 | #define FW_FEATURE_PRRN ASM_CONST(0x0000000200000000) |
55 | #define FW_FEATURE_OPALv3 ASM_CONST(0x0000000400000000) | ||
55 | 56 | ||
56 | #ifndef __ASSEMBLY__ | 57 | #ifndef __ASSEMBLY__ |
57 | 58 | ||
@@ -69,7 +70,8 @@ enum { | |||
69 | FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY | | 70 | FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY | |
70 | FW_FEATURE_TYPE1_AFFINITY | FW_FEATURE_PRRN, | 71 | FW_FEATURE_TYPE1_AFFINITY | FW_FEATURE_PRRN, |
71 | FW_FEATURE_PSERIES_ALWAYS = 0, | 72 | FW_FEATURE_PSERIES_ALWAYS = 0, |
72 | FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL | FW_FEATURE_OPALv2, | 73 | FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL | FW_FEATURE_OPALv2 | |
74 | FW_FEATURE_OPALv3, | ||
73 | FW_FEATURE_POWERNV_ALWAYS = 0, | 75 | FW_FEATURE_POWERNV_ALWAYS = 0, |
74 | FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1, | 76 | FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1, |
75 | FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1, | 77 | FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1, |
diff --git a/arch/powerpc/include/asm/hvcall.h b/arch/powerpc/include/asm/hvcall.h index cf4df8e2139a..0c7f2bfcf134 100644 --- a/arch/powerpc/include/asm/hvcall.h +++ b/arch/powerpc/include/asm/hvcall.h | |||
@@ -264,6 +264,7 @@ | |||
264 | #define H_GET_MPP 0x2D4 | 264 | #define H_GET_MPP 0x2D4 |
265 | #define H_HOME_NODE_ASSOCIATIVITY 0x2EC | 265 | #define H_HOME_NODE_ASSOCIATIVITY 0x2EC |
266 | #define H_BEST_ENERGY 0x2F4 | 266 | #define H_BEST_ENERGY 0x2F4 |
267 | #define H_XIRR_X 0x2FC | ||
267 | #define H_RANDOM 0x300 | 268 | #define H_RANDOM 0x300 |
268 | #define H_COP 0x304 | 269 | #define H_COP 0x304 |
269 | #define H_GET_MPP_X 0x314 | 270 | #define H_GET_MPP_X 0x314 |
diff --git a/arch/powerpc/include/asm/hw_irq.h b/arch/powerpc/include/asm/hw_irq.h index d615b28dda82..ba713f166fa5 100644 --- a/arch/powerpc/include/asm/hw_irq.h +++ b/arch/powerpc/include/asm/hw_irq.h | |||
@@ -96,11 +96,12 @@ static inline bool arch_irqs_disabled(void) | |||
96 | #endif | 96 | #endif |
97 | 97 | ||
98 | #define hard_irq_disable() do { \ | 98 | #define hard_irq_disable() do { \ |
99 | u8 _was_enabled = get_paca()->soft_enabled; \ | ||
99 | __hard_irq_disable(); \ | 100 | __hard_irq_disable(); \ |
100 | if (local_paca->soft_enabled) \ | ||
101 | trace_hardirqs_off(); \ | ||
102 | get_paca()->soft_enabled = 0; \ | 101 | get_paca()->soft_enabled = 0; \ |
103 | get_paca()->irq_happened |= PACA_IRQ_HARD_DIS; \ | 102 | get_paca()->irq_happened |= PACA_IRQ_HARD_DIS; \ |
103 | if (_was_enabled) \ | ||
104 | trace_hardirqs_off(); \ | ||
104 | } while(0) | 105 | } while(0) |
105 | 106 | ||
106 | static inline bool lazy_irq_pending(void) | 107 | static inline bool lazy_irq_pending(void) |
diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h index b6c8b58b1d76..cbb9305ab15a 100644 --- a/arch/powerpc/include/asm/opal.h +++ b/arch/powerpc/include/asm/opal.h | |||
@@ -243,7 +243,8 @@ enum OpalMCE_TlbErrorType { | |||
243 | 243 | ||
244 | enum OpalThreadStatus { | 244 | enum OpalThreadStatus { |
245 | OPAL_THREAD_INACTIVE = 0x0, | 245 | OPAL_THREAD_INACTIVE = 0x0, |
246 | OPAL_THREAD_STARTED = 0x1 | 246 | OPAL_THREAD_STARTED = 0x1, |
247 | OPAL_THREAD_UNAVAILABLE = 0x2 /* opal-v3 */ | ||
247 | }; | 248 | }; |
248 | 249 | ||
249 | enum OpalPciBusCompare { | 250 | enum OpalPciBusCompare { |
@@ -563,6 +564,8 @@ extern void opal_nvram_init(void); | |||
563 | 564 | ||
564 | extern int opal_machine_check(struct pt_regs *regs); | 565 | extern int opal_machine_check(struct pt_regs *regs); |
565 | 566 | ||
567 | extern void opal_shutdown(void); | ||
568 | |||
566 | #endif /* __ASSEMBLY__ */ | 569 | #endif /* __ASSEMBLY__ */ |
567 | 570 | ||
568 | #endif /* __OPAL_H */ | 571 | #endif /* __OPAL_H */ |
diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h index 8b11b5bd9938..2c1d8cb9b265 100644 --- a/arch/powerpc/include/asm/pci-bridge.h +++ b/arch/powerpc/include/asm/pci-bridge.h | |||
@@ -174,6 +174,8 @@ struct pci_dn { | |||
174 | /* Get the pointer to a device_node's pci_dn */ | 174 | /* Get the pointer to a device_node's pci_dn */ |
175 | #define PCI_DN(dn) ((struct pci_dn *) (dn)->data) | 175 | #define PCI_DN(dn) ((struct pci_dn *) (dn)->data) |
176 | 176 | ||
177 | extern struct pci_dn *pci_get_pdn(struct pci_dev *pdev); | ||
178 | |||
177 | extern void * update_dn_pci_info(struct device_node *dn, void *data); | 179 | extern void * update_dn_pci_info(struct device_node *dn, void *data); |
178 | 180 | ||
179 | static inline int pci_device_from_OF_node(struct device_node *np, | 181 | static inline int pci_device_from_OF_node(struct device_node *np, |
diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h index 91acb12bac92..b66ae722a8e9 100644 --- a/arch/powerpc/include/asm/pgalloc-64.h +++ b/arch/powerpc/include/asm/pgalloc-64.h | |||
@@ -186,7 +186,7 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, | |||
186 | 186 | ||
187 | static inline pgtable_t pmd_pgtable(pmd_t pmd) | 187 | static inline pgtable_t pmd_pgtable(pmd_t pmd) |
188 | { | 188 | { |
189 | return (pgtable_t)(pmd_val(pmd) & -sizeof(pte_t)*PTRS_PER_PTE); | 189 | return (pgtable_t)(pmd_val(pmd) & ~PMD_MASKED_BITS); |
190 | } | 190 | } |
191 | 191 | ||
192 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, | 192 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, |
diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h index cea8496091ff..2f1b6c5f8174 100644 --- a/arch/powerpc/include/asm/ppc_asm.h +++ b/arch/powerpc/include/asm/ppc_asm.h | |||
@@ -523,6 +523,17 @@ END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,946) | |||
523 | #define PPC440EP_ERR42 | 523 | #define PPC440EP_ERR42 |
524 | #endif | 524 | #endif |
525 | 525 | ||
526 | /* The following stops all load and store data streams associated with stream | ||
527 | * ID (ie. streams created explicitly). The embedded and server mnemonics for | ||
528 | * dcbt are different so we use machine "power4" here explicitly. | ||
529 | */ | ||
530 | #define DCBT_STOP_ALL_STREAM_IDS(scratch) \ | ||
531 | .machine push ; \ | ||
532 | .machine "power4" ; \ | ||
533 | lis scratch,0x60000000@h; \ | ||
534 | dcbt r0,scratch,0b01010; \ | ||
535 | .machine pop | ||
536 | |||
526 | /* | 537 | /* |
527 | * toreal/fromreal/tophys/tovirt macros. 32-bit BookE makes them | 538 | * toreal/fromreal/tophys/tovirt macros. 32-bit BookE makes them |
528 | * keep the address intact to be compatible with code shared with | 539 | * keep the address intact to be compatible with code shared with |
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h index d7e67ca8b4a6..14a658363698 100644 --- a/arch/powerpc/include/asm/processor.h +++ b/arch/powerpc/include/asm/processor.h | |||
@@ -284,6 +284,12 @@ struct thread_struct { | |||
284 | unsigned long ebbrr; | 284 | unsigned long ebbrr; |
285 | unsigned long ebbhr; | 285 | unsigned long ebbhr; |
286 | unsigned long bescr; | 286 | unsigned long bescr; |
287 | unsigned long siar; | ||
288 | unsigned long sdar; | ||
289 | unsigned long sier; | ||
290 | unsigned long mmcr0; | ||
291 | unsigned long mmcr2; | ||
292 | unsigned long mmcra; | ||
287 | #endif | 293 | #endif |
288 | }; | 294 | }; |
289 | 295 | ||
@@ -403,21 +409,16 @@ static inline void prefetchw(const void *x) | |||
403 | #endif | 409 | #endif |
404 | 410 | ||
405 | #ifdef CONFIG_PPC64 | 411 | #ifdef CONFIG_PPC64 |
406 | static inline unsigned long get_clean_sp(struct pt_regs *regs, int is_32) | 412 | static inline unsigned long get_clean_sp(unsigned long sp, int is_32) |
407 | { | 413 | { |
408 | unsigned long sp; | ||
409 | |||
410 | if (is_32) | 414 | if (is_32) |
411 | sp = regs->gpr[1] & 0x0ffffffffUL; | 415 | return sp & 0x0ffffffffUL; |
412 | else | ||
413 | sp = regs->gpr[1]; | ||
414 | |||
415 | return sp; | 416 | return sp; |
416 | } | 417 | } |
417 | #else | 418 | #else |
418 | static inline unsigned long get_clean_sp(struct pt_regs *regs, int is_32) | 419 | static inline unsigned long get_clean_sp(unsigned long sp, int is_32) |
419 | { | 420 | { |
420 | return regs->gpr[1]; | 421 | return sp; |
421 | } | 422 | } |
422 | #endif | 423 | #endif |
423 | 424 | ||
diff --git a/arch/powerpc/include/asm/pte-hash64-64k.h b/arch/powerpc/include/asm/pte-hash64-64k.h index 3e13e23e4fdf..d836d945068d 100644 --- a/arch/powerpc/include/asm/pte-hash64-64k.h +++ b/arch/powerpc/include/asm/pte-hash64-64k.h | |||
@@ -47,7 +47,7 @@ | |||
47 | * generic accessors and iterators here | 47 | * generic accessors and iterators here |
48 | */ | 48 | */ |
49 | #define __real_pte(e,p) ((real_pte_t) { \ | 49 | #define __real_pte(e,p) ((real_pte_t) { \ |
50 | (e), ((e) & _PAGE_COMBO) ? \ | 50 | (e), (pte_val(e) & _PAGE_COMBO) ? \ |
51 | (pte_val(*((p) + PTRS_PER_PTE))) : 0 }) | 51 | (pte_val(*((p) + PTRS_PER_PTE))) : 0 }) |
52 | #define __rpte_to_hidx(r,index) ((pte_val((r).pte) & _PAGE_COMBO) ? \ | 52 | #define __rpte_to_hidx(r,index) ((pte_val((r).pte) & _PAGE_COMBO) ? \ |
53 | (((r).hidx >> ((index)<<2)) & 0xf) : ((pte_val((r).pte) >> 12) & 0xf)) | 53 | (((r).hidx >> ((index)<<2)) & 0xf) : ((pte_val((r).pte) >> 12) & 0xf)) |
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h index a6136515c7f2..4a9e408644fe 100644 --- a/arch/powerpc/include/asm/reg.h +++ b/arch/powerpc/include/asm/reg.h | |||
@@ -111,17 +111,6 @@ | |||
111 | #define MSR_TM_TRANSACTIONAL(x) (((x) & MSR_TS_MASK) == MSR_TS_T) | 111 | #define MSR_TM_TRANSACTIONAL(x) (((x) & MSR_TS_MASK) == MSR_TS_T) |
112 | #define MSR_TM_SUSPENDED(x) (((x) & MSR_TS_MASK) == MSR_TS_S) | 112 | #define MSR_TM_SUSPENDED(x) (((x) & MSR_TS_MASK) == MSR_TS_S) |
113 | 113 | ||
114 | /* Reason codes describing kernel causes for transaction aborts. By | ||
115 | convention, bit0 is copied to TEXASR[56] (IBM bit 7) which is set if | ||
116 | the failure is persistent. | ||
117 | */ | ||
118 | #define TM_CAUSE_RESCHED 0xfe | ||
119 | #define TM_CAUSE_TLBI 0xfc | ||
120 | #define TM_CAUSE_FAC_UNAV 0xfa | ||
121 | #define TM_CAUSE_SYSCALL 0xf9 /* Persistent */ | ||
122 | #define TM_CAUSE_MISC 0xf6 | ||
123 | #define TM_CAUSE_SIGNAL 0xf4 | ||
124 | |||
125 | #if defined(CONFIG_PPC_BOOK3S_64) | 114 | #if defined(CONFIG_PPC_BOOK3S_64) |
126 | #define MSR_64BIT MSR_SF | 115 | #define MSR_64BIT MSR_SF |
127 | 116 | ||
diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h index a8bc2bb4adc9..34fd70488d83 100644 --- a/arch/powerpc/include/asm/rtas.h +++ b/arch/powerpc/include/asm/rtas.h | |||
@@ -264,6 +264,8 @@ extern void rtas_progress(char *s, unsigned short hex); | |||
264 | extern void rtas_initialize(void); | 264 | extern void rtas_initialize(void); |
265 | extern int rtas_suspend_cpu(struct rtas_suspend_me_data *data); | 265 | extern int rtas_suspend_cpu(struct rtas_suspend_me_data *data); |
266 | extern int rtas_suspend_last_cpu(struct rtas_suspend_me_data *data); | 266 | extern int rtas_suspend_last_cpu(struct rtas_suspend_me_data *data); |
267 | extern int rtas_online_cpus_mask(cpumask_var_t cpus); | ||
268 | extern int rtas_offline_cpus_mask(cpumask_var_t cpus); | ||
267 | extern int rtas_ibm_suspend_me(struct rtas_args *); | 269 | extern int rtas_ibm_suspend_me(struct rtas_args *); |
268 | 270 | ||
269 | struct rtc_time; | 271 | struct rtc_time; |
diff --git a/arch/powerpc/include/asm/signal.h b/arch/powerpc/include/asm/signal.h index fbe66c463891..9322c28aebd2 100644 --- a/arch/powerpc/include/asm/signal.h +++ b/arch/powerpc/include/asm/signal.h | |||
@@ -3,5 +3,8 @@ | |||
3 | 3 | ||
4 | #define __ARCH_HAS_SA_RESTORER | 4 | #define __ARCH_HAS_SA_RESTORER |
5 | #include <uapi/asm/signal.h> | 5 | #include <uapi/asm/signal.h> |
6 | #include <uapi/asm/ptrace.h> | ||
7 | |||
8 | extern unsigned long get_tm_stackpointer(struct pt_regs *regs); | ||
6 | 9 | ||
7 | #endif /* _ASM_POWERPC_SIGNAL_H */ | 10 | #endif /* _ASM_POWERPC_SIGNAL_H */ |
diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h index 8ceea14d6fe4..ba7b1973866e 100644 --- a/arch/powerpc/include/asm/thread_info.h +++ b/arch/powerpc/include/asm/thread_info.h | |||
@@ -97,7 +97,7 @@ static inline struct thread_info *current_thread_info(void) | |||
97 | #define TIF_PERFMON_CTXSW 6 /* perfmon needs ctxsw calls */ | 97 | #define TIF_PERFMON_CTXSW 6 /* perfmon needs ctxsw calls */ |
98 | #define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */ | 98 | #define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */ |
99 | #define TIF_SINGLESTEP 8 /* singlestepping active */ | 99 | #define TIF_SINGLESTEP 8 /* singlestepping active */ |
100 | #define TIF_MEMDIE 9 /* is terminating due to OOM killer */ | 100 | #define TIF_NOHZ 9 /* in adaptive nohz mode */ |
101 | #define TIF_SECCOMP 10 /* secure computing */ | 101 | #define TIF_SECCOMP 10 /* secure computing */ |
102 | #define TIF_RESTOREALL 11 /* Restore all regs (implies NOERROR) */ | 102 | #define TIF_RESTOREALL 11 /* Restore all regs (implies NOERROR) */ |
103 | #define TIF_NOERROR 12 /* Force successful syscall return */ | 103 | #define TIF_NOERROR 12 /* Force successful syscall return */ |
@@ -106,6 +106,7 @@ static inline struct thread_info *current_thread_info(void) | |||
106 | #define TIF_SYSCALL_TRACEPOINT 15 /* syscall tracepoint instrumentation */ | 106 | #define TIF_SYSCALL_TRACEPOINT 15 /* syscall tracepoint instrumentation */ |
107 | #define TIF_EMULATE_STACK_STORE 16 /* Is an instruction emulation | 107 | #define TIF_EMULATE_STACK_STORE 16 /* Is an instruction emulation |
108 | for stack store? */ | 108 | for stack store? */ |
109 | #define TIF_MEMDIE 17 /* is terminating due to OOM killer */ | ||
109 | 110 | ||
110 | /* as above, but as bit values */ | 111 | /* as above, but as bit values */ |
111 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 112 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
@@ -124,8 +125,10 @@ static inline struct thread_info *current_thread_info(void) | |||
124 | #define _TIF_UPROBE (1<<TIF_UPROBE) | 125 | #define _TIF_UPROBE (1<<TIF_UPROBE) |
125 | #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) | 126 | #define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT) |
126 | #define _TIF_EMULATE_STACK_STORE (1<<TIF_EMULATE_STACK_STORE) | 127 | #define _TIF_EMULATE_STACK_STORE (1<<TIF_EMULATE_STACK_STORE) |
128 | #define _TIF_NOHZ (1<<TIF_NOHZ) | ||
127 | #define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ | 129 | #define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ |
128 | _TIF_SECCOMP | _TIF_SYSCALL_TRACEPOINT) | 130 | _TIF_SECCOMP | _TIF_SYSCALL_TRACEPOINT | \ |
131 | _TIF_NOHZ) | ||
129 | 132 | ||
130 | #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ | 133 | #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ |
131 | _TIF_NOTIFY_RESUME | _TIF_UPROBE) | 134 | _TIF_NOTIFY_RESUME | _TIF_UPROBE) |
diff --git a/arch/powerpc/include/asm/tm.h b/arch/powerpc/include/asm/tm.h index 4b4449abf3f8..9dfbc34bdbf5 100644 --- a/arch/powerpc/include/asm/tm.h +++ b/arch/powerpc/include/asm/tm.h | |||
@@ -5,6 +5,8 @@ | |||
5 | * Copyright 2012 Matt Evans & Michael Neuling, IBM Corporation. | 5 | * Copyright 2012 Matt Evans & Michael Neuling, IBM Corporation. |
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include <uapi/asm/tm.h> | ||
9 | |||
8 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM | 10 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM |
9 | extern void do_load_up_transact_fpu(struct thread_struct *thread); | 11 | extern void do_load_up_transact_fpu(struct thread_struct *thread); |
10 | extern void do_load_up_transact_altivec(struct thread_struct *thread); | 12 | extern void do_load_up_transact_altivec(struct thread_struct *thread); |
diff --git a/arch/powerpc/include/asm/udbg.h b/arch/powerpc/include/asm/udbg.h index 5a7510e9d09d..dc590919f8eb 100644 --- a/arch/powerpc/include/asm/udbg.h +++ b/arch/powerpc/include/asm/udbg.h | |||
@@ -52,6 +52,7 @@ extern void __init udbg_init_40x_realmode(void); | |||
52 | extern void __init udbg_init_cpm(void); | 52 | extern void __init udbg_init_cpm(void); |
53 | extern void __init udbg_init_usbgecko(void); | 53 | extern void __init udbg_init_usbgecko(void); |
54 | extern void __init udbg_init_wsp(void); | 54 | extern void __init udbg_init_wsp(void); |
55 | extern void __init udbg_init_memcons(void); | ||
55 | extern void __init udbg_init_ehv_bc(void); | 56 | extern void __init udbg_init_ehv_bc(void); |
56 | extern void __init udbg_init_ps3gelic(void); | 57 | extern void __init udbg_init_ps3gelic(void); |
57 | extern void __init udbg_init_debug_opal_raw(void); | 58 | extern void __init udbg_init_debug_opal_raw(void); |
diff --git a/arch/powerpc/include/uapi/asm/Kbuild b/arch/powerpc/include/uapi/asm/Kbuild index f7bca6370745..5182c8622b54 100644 --- a/arch/powerpc/include/uapi/asm/Kbuild +++ b/arch/powerpc/include/uapi/asm/Kbuild | |||
@@ -40,6 +40,7 @@ header-y += statfs.h | |||
40 | header-y += swab.h | 40 | header-y += swab.h |
41 | header-y += termbits.h | 41 | header-y += termbits.h |
42 | header-y += termios.h | 42 | header-y += termios.h |
43 | header-y += tm.h | ||
43 | header-y += types.h | 44 | header-y += types.h |
44 | header-y += ucontext.h | 45 | header-y += ucontext.h |
45 | header-y += unistd.h | 46 | header-y += unistd.h |
diff --git a/arch/powerpc/include/uapi/asm/tm.h b/arch/powerpc/include/uapi/asm/tm.h new file mode 100644 index 000000000000..85059a00f560 --- /dev/null +++ b/arch/powerpc/include/uapi/asm/tm.h | |||
@@ -0,0 +1,18 @@ | |||
1 | #ifndef _ASM_POWERPC_TM_H | ||
2 | #define _ASM_POWERPC_TM_H | ||
3 | |||
4 | /* Reason codes describing kernel causes for transaction aborts. By | ||
5 | * convention, bit0 is copied to TEXASR[56] (IBM bit 7) which is set if | ||
6 | * the failure is persistent. PAPR saves 0xff-0xe0 for the hypervisor. | ||
7 | */ | ||
8 | #define TM_CAUSE_PERSISTENT 0x01 | ||
9 | #define TM_CAUSE_RESCHED 0xde | ||
10 | #define TM_CAUSE_TLBI 0xdc | ||
11 | #define TM_CAUSE_FAC_UNAV 0xda | ||
12 | #define TM_CAUSE_SYSCALL 0xd8 /* future use */ | ||
13 | #define TM_CAUSE_MISC 0xd6 /* future use */ | ||
14 | #define TM_CAUSE_SIGNAL 0xd4 | ||
15 | #define TM_CAUSE_ALIGNMENT 0xd2 | ||
16 | #define TM_CAUSE_EMULATE 0xd0 | ||
17 | |||
18 | #endif | ||
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index b51a97cfedf8..6f16ffafa6f0 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -127,6 +127,12 @@ int main(void) | |||
127 | DEFINE(THREAD_BESCR, offsetof(struct thread_struct, bescr)); | 127 | DEFINE(THREAD_BESCR, offsetof(struct thread_struct, bescr)); |
128 | DEFINE(THREAD_EBBHR, offsetof(struct thread_struct, ebbhr)); | 128 | DEFINE(THREAD_EBBHR, offsetof(struct thread_struct, ebbhr)); |
129 | DEFINE(THREAD_EBBRR, offsetof(struct thread_struct, ebbrr)); | 129 | DEFINE(THREAD_EBBRR, offsetof(struct thread_struct, ebbrr)); |
130 | DEFINE(THREAD_SIAR, offsetof(struct thread_struct, siar)); | ||
131 | DEFINE(THREAD_SDAR, offsetof(struct thread_struct, sdar)); | ||
132 | DEFINE(THREAD_SIER, offsetof(struct thread_struct, sier)); | ||
133 | DEFINE(THREAD_MMCR0, offsetof(struct thread_struct, mmcr0)); | ||
134 | DEFINE(THREAD_MMCR2, offsetof(struct thread_struct, mmcr2)); | ||
135 | DEFINE(THREAD_MMCRA, offsetof(struct thread_struct, mmcra)); | ||
130 | #endif | 136 | #endif |
131 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM | 137 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM |
132 | DEFINE(PACATMSCRATCH, offsetof(struct paca_struct, tm_scratch)); | 138 | DEFINE(PACATMSCRATCH, offsetof(struct paca_struct, tm_scratch)); |
diff --git a/arch/powerpc/kernel/cpu_setup_power.S b/arch/powerpc/kernel/cpu_setup_power.S index a283b6442b26..18b5b9cf8e37 100644 --- a/arch/powerpc/kernel/cpu_setup_power.S +++ b/arch/powerpc/kernel/cpu_setup_power.S | |||
@@ -135,8 +135,12 @@ __init_HFSCR: | |||
135 | blr | 135 | blr |
136 | 136 | ||
137 | __init_TLB: | 137 | __init_TLB: |
138 | /* Clear the TLB */ | 138 | /* |
139 | li r6,128 | 139 | * Clear the TLB using the "IS 3" form of tlbiel instruction |
140 | * (invalidate by congruence class). P7 has 128 CCs, P8 has 512 | ||
141 | * so we just always do 512 | ||
142 | */ | ||
143 | li r6,512 | ||
140 | mtctr r6 | 144 | mtctr r6 |
141 | li r7,0xc00 /* IS field = 0b11 */ | 145 | li r7,0xc00 /* IS field = 0b11 */ |
142 | ptesync | 146 | ptesync |
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index c60bbec25c1f..1f0937d7d4b5 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -453,7 +453,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
453 | .icache_bsize = 128, | 453 | .icache_bsize = 128, |
454 | .dcache_bsize = 128, | 454 | .dcache_bsize = 128, |
455 | .oprofile_type = PPC_OPROFILE_POWER4, | 455 | .oprofile_type = PPC_OPROFILE_POWER4, |
456 | .oprofile_cpu_type = "ppc64/ibm-compat-v1", | 456 | .oprofile_cpu_type = 0, |
457 | .cpu_setup = __setup_cpu_power8, | 457 | .cpu_setup = __setup_cpu_power8, |
458 | .cpu_restore = __restore_cpu_power8, | 458 | .cpu_restore = __restore_cpu_power8, |
459 | .platform = "power8", | 459 | .platform = "power8", |
@@ -482,7 +482,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
482 | .cpu_name = "POWER7+ (raw)", | 482 | .cpu_name = "POWER7+ (raw)", |
483 | .cpu_features = CPU_FTRS_POWER7, | 483 | .cpu_features = CPU_FTRS_POWER7, |
484 | .cpu_user_features = COMMON_USER_POWER7, | 484 | .cpu_user_features = COMMON_USER_POWER7, |
485 | .cpu_user_features = COMMON_USER2_POWER7, | 485 | .cpu_user_features2 = COMMON_USER2_POWER7, |
486 | .mmu_features = MMU_FTRS_POWER7, | 486 | .mmu_features = MMU_FTRS_POWER7, |
487 | .icache_bsize = 128, | 487 | .icache_bsize = 128, |
488 | .dcache_bsize = 128, | 488 | .dcache_bsize = 128, |
@@ -506,7 +506,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
506 | .dcache_bsize = 128, | 506 | .dcache_bsize = 128, |
507 | .num_pmcs = 6, | 507 | .num_pmcs = 6, |
508 | .pmc_type = PPC_PMC_IBM, | 508 | .pmc_type = PPC_PMC_IBM, |
509 | .oprofile_cpu_type = "ppc64/power8", | 509 | .oprofile_cpu_type = 0, |
510 | .oprofile_type = PPC_OPROFILE_POWER4, | 510 | .oprofile_type = PPC_OPROFILE_POWER4, |
511 | .cpu_setup = __setup_cpu_power8, | 511 | .cpu_setup = __setup_cpu_power8, |
512 | .cpu_restore = __restore_cpu_power8, | 512 | .cpu_restore = __restore_cpu_power8, |
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index e514de57a125..22b45a4955cd 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S | |||
@@ -439,8 +439,6 @@ ret_from_fork: | |||
439 | ret_from_kernel_thread: | 439 | ret_from_kernel_thread: |
440 | REST_NVGPRS(r1) | 440 | REST_NVGPRS(r1) |
441 | bl schedule_tail | 441 | bl schedule_tail |
442 | li r3,0 | ||
443 | stw r3,0(r1) | ||
444 | mtlr r14 | 442 | mtlr r14 |
445 | mr r3,r15 | 443 | mr r3,r15 |
446 | PPC440EP_ERR42 | 444 | PPC440EP_ERR42 |
@@ -851,7 +849,7 @@ resume_kernel: | |||
851 | /* check current_thread_info, _TIF_EMULATE_STACK_STORE */ | 849 | /* check current_thread_info, _TIF_EMULATE_STACK_STORE */ |
852 | CURRENT_THREAD_INFO(r9, r1) | 850 | CURRENT_THREAD_INFO(r9, r1) |
853 | lwz r8,TI_FLAGS(r9) | 851 | lwz r8,TI_FLAGS(r9) |
854 | andis. r8,r8,_TIF_EMULATE_STACK_STORE@h | 852 | andis. r0,r8,_TIF_EMULATE_STACK_STORE@h |
855 | beq+ 1f | 853 | beq+ 1f |
856 | 854 | ||
857 | addi r8,r1,INT_FRAME_SIZE /* Get the kprobed function entry */ | 855 | addi r8,r1,INT_FRAME_SIZE /* Get the kprobed function entry */ |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 915fbb4fc2fe..246b11c4fe7e 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <asm/irqflags.h> | 33 | #include <asm/irqflags.h> |
34 | #include <asm/ftrace.h> | 34 | #include <asm/ftrace.h> |
35 | #include <asm/hw_irq.h> | 35 | #include <asm/hw_irq.h> |
36 | #include <asm/context_tracking.h> | ||
36 | 37 | ||
37 | /* | 38 | /* |
38 | * System calls. | 39 | * System calls. |
@@ -376,8 +377,6 @@ _GLOBAL(ret_from_fork) | |||
376 | _GLOBAL(ret_from_kernel_thread) | 377 | _GLOBAL(ret_from_kernel_thread) |
377 | bl .schedule_tail | 378 | bl .schedule_tail |
378 | REST_NVGPRS(r1) | 379 | REST_NVGPRS(r1) |
379 | li r3,0 | ||
380 | std r3,0(r1) | ||
381 | ld r14, 0(r14) | 380 | ld r14, 0(r14) |
382 | mtlr r14 | 381 | mtlr r14 |
383 | mr r3,r15 | 382 | mr r3,r15 |
@@ -466,6 +465,20 @@ BEGIN_FTR_SECTION | |||
466 | std r0, THREAD_EBBHR(r3) | 465 | std r0, THREAD_EBBHR(r3) |
467 | mfspr r0, SPRN_EBBRR | 466 | mfspr r0, SPRN_EBBRR |
468 | std r0, THREAD_EBBRR(r3) | 467 | std r0, THREAD_EBBRR(r3) |
468 | |||
469 | /* PMU registers made user read/(write) by EBB */ | ||
470 | mfspr r0, SPRN_SIAR | ||
471 | std r0, THREAD_SIAR(r3) | ||
472 | mfspr r0, SPRN_SDAR | ||
473 | std r0, THREAD_SDAR(r3) | ||
474 | mfspr r0, SPRN_SIER | ||
475 | std r0, THREAD_SIER(r3) | ||
476 | mfspr r0, SPRN_MMCR0 | ||
477 | std r0, THREAD_MMCR0(r3) | ||
478 | mfspr r0, SPRN_MMCR2 | ||
479 | std r0, THREAD_MMCR2(r3) | ||
480 | mfspr r0, SPRN_MMCRA | ||
481 | std r0, THREAD_MMCRA(r3) | ||
469 | END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) | 482 | END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) |
470 | #endif | 483 | #endif |
471 | 484 | ||
@@ -488,6 +501,13 @@ BEGIN_FTR_SECTION | |||
488 | ldarx r6,0,r1 | 501 | ldarx r6,0,r1 |
489 | END_FTR_SECTION_IFSET(CPU_FTR_STCX_CHECKS_ADDRESS) | 502 | END_FTR_SECTION_IFSET(CPU_FTR_STCX_CHECKS_ADDRESS) |
490 | 503 | ||
504 | #ifdef CONFIG_PPC_BOOK3S | ||
505 | /* Cancel all explict user streams as they will have no use after context | ||
506 | * switch and will stop the HW from creating streams itself | ||
507 | */ | ||
508 | DCBT_STOP_ALL_STREAM_IDS(r6) | ||
509 | #endif | ||
510 | |||
491 | addi r6,r4,-THREAD /* Convert THREAD to 'current' */ | 511 | addi r6,r4,-THREAD /* Convert THREAD to 'current' */ |
492 | std r6,PACACURRENT(r13) /* Set new 'current' */ | 512 | std r6,PACACURRENT(r13) /* Set new 'current' */ |
493 | 513 | ||
@@ -561,6 +581,20 @@ BEGIN_FTR_SECTION | |||
561 | ld r0, THREAD_EBBRR(r4) | 581 | ld r0, THREAD_EBBRR(r4) |
562 | mtspr SPRN_EBBRR, r0 | 582 | mtspr SPRN_EBBRR, r0 |
563 | 583 | ||
584 | /* PMU registers made user read/(write) by EBB */ | ||
585 | ld r0, THREAD_SIAR(r4) | ||
586 | mtspr SPRN_SIAR, r0 | ||
587 | ld r0, THREAD_SDAR(r4) | ||
588 | mtspr SPRN_SDAR, r0 | ||
589 | ld r0, THREAD_SIER(r4) | ||
590 | mtspr SPRN_SIER, r0 | ||
591 | ld r0, THREAD_MMCR0(r4) | ||
592 | mtspr SPRN_MMCR0, r0 | ||
593 | ld r0, THREAD_MMCR2(r4) | ||
594 | mtspr SPRN_MMCR2, r0 | ||
595 | ld r0, THREAD_MMCRA(r4) | ||
596 | mtspr SPRN_MMCRA, r0 | ||
597 | |||
564 | ld r0,THREAD_TAR(r4) | 598 | ld r0,THREAD_TAR(r4) |
565 | mtspr SPRN_TAR,r0 | 599 | mtspr SPRN_TAR,r0 |
566 | END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) | 600 | END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) |
@@ -634,7 +668,7 @@ _GLOBAL(ret_from_except_lite) | |||
634 | andi. r0,r4,_TIF_NEED_RESCHED | 668 | andi. r0,r4,_TIF_NEED_RESCHED |
635 | beq 1f | 669 | beq 1f |
636 | bl .restore_interrupts | 670 | bl .restore_interrupts |
637 | bl .schedule | 671 | SCHEDULE_USER |
638 | b .ret_from_except_lite | 672 | b .ret_from_except_lite |
639 | 673 | ||
640 | 1: bl .save_nvgprs | 674 | 1: bl .save_nvgprs |
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S index 42a756eec9ff..645170a07ada 100644 --- a/arch/powerpc/kernel/exceptions-64e.S +++ b/arch/powerpc/kernel/exceptions-64e.S | |||
@@ -489,7 +489,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) | |||
489 | */ | 489 | */ |
490 | 490 | ||
491 | mfspr r14,SPRN_DBSR /* check single-step/branch taken */ | 491 | mfspr r14,SPRN_DBSR /* check single-step/branch taken */ |
492 | andis. r15,r14,DBSR_IC@h | 492 | andis. r15,r14,(DBSR_IC|DBSR_BT)@h |
493 | beq+ 1f | 493 | beq+ 1f |
494 | 494 | ||
495 | LOAD_REG_IMMEDIATE(r14,interrupt_base_book3e) | 495 | LOAD_REG_IMMEDIATE(r14,interrupt_base_book3e) |
@@ -500,7 +500,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) | |||
500 | bge+ cr1,1f | 500 | bge+ cr1,1f |
501 | 501 | ||
502 | /* here it looks like we got an inappropriate debug exception. */ | 502 | /* here it looks like we got an inappropriate debug exception. */ |
503 | lis r14,DBSR_IC@h /* clear the IC event */ | 503 | lis r14,(DBSR_IC|DBSR_BT)@h /* clear the event */ |
504 | rlwinm r11,r11,0,~MSR_DE /* clear DE in the CSRR1 value */ | 504 | rlwinm r11,r11,0,~MSR_DE /* clear DE in the CSRR1 value */ |
505 | mtspr SPRN_DBSR,r14 | 505 | mtspr SPRN_DBSR,r14 |
506 | mtspr SPRN_CSRR1,r11 | 506 | mtspr SPRN_CSRR1,r11 |
@@ -555,7 +555,7 @@ kernel_dbg_exc: | |||
555 | */ | 555 | */ |
556 | 556 | ||
557 | mfspr r14,SPRN_DBSR /* check single-step/branch taken */ | 557 | mfspr r14,SPRN_DBSR /* check single-step/branch taken */ |
558 | andis. r15,r14,DBSR_IC@h | 558 | andis. r15,r14,(DBSR_IC|DBSR_BT)@h |
559 | beq+ 1f | 559 | beq+ 1f |
560 | 560 | ||
561 | LOAD_REG_IMMEDIATE(r14,interrupt_base_book3e) | 561 | LOAD_REG_IMMEDIATE(r14,interrupt_base_book3e) |
@@ -566,7 +566,7 @@ kernel_dbg_exc: | |||
566 | bge+ cr1,1f | 566 | bge+ cr1,1f |
567 | 567 | ||
568 | /* here it looks like we got an inappropriate debug exception. */ | 568 | /* here it looks like we got an inappropriate debug exception. */ |
569 | lis r14,DBSR_IC@h /* clear the IC event */ | 569 | lis r14,(DBSR_IC|DBSR_BT)@h /* clear the event */ |
570 | rlwinm r11,r11,0,~MSR_DE /* clear DE in the DSRR1 value */ | 570 | rlwinm r11,r11,0,~MSR_DE /* clear DE in the DSRR1 value */ |
571 | mtspr SPRN_DBSR,r14 | 571 | mtspr SPRN_DBSR,r14 |
572 | mtspr SPRN_DSRR1,r11 | 572 | mtspr SPRN_DSRR1,r11 |
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c index 466a2908bb63..611acdf30096 100644 --- a/arch/powerpc/kernel/machine_kexec_64.c +++ b/arch/powerpc/kernel/machine_kexec_64.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/cpu.h> | 19 | #include <linux/cpu.h> |
20 | #include <linux/hardirq.h> | ||
20 | 21 | ||
21 | #include <asm/page.h> | 22 | #include <asm/page.h> |
22 | #include <asm/current.h> | 23 | #include <asm/current.h> |
@@ -335,10 +336,13 @@ void default_machine_kexec(struct kimage *image) | |||
335 | pr_debug("kexec: Starting switchover sequence.\n"); | 336 | pr_debug("kexec: Starting switchover sequence.\n"); |
336 | 337 | ||
337 | /* switch to a staticly allocated stack. Based on irq stack code. | 338 | /* switch to a staticly allocated stack. Based on irq stack code. |
339 | * We setup preempt_count to avoid using VMX in memcpy. | ||
338 | * XXX: the task struct will likely be invalid once we do the copy! | 340 | * XXX: the task struct will likely be invalid once we do the copy! |
339 | */ | 341 | */ |
340 | kexec_stack.thread_info.task = current_thread_info()->task; | 342 | kexec_stack.thread_info.task = current_thread_info()->task; |
341 | kexec_stack.thread_info.flags = 0; | 343 | kexec_stack.thread_info.flags = 0; |
344 | kexec_stack.thread_info.preempt_count = HARDIRQ_OFFSET; | ||
345 | kexec_stack.thread_info.cpu = current_thread_info()->cpu; | ||
342 | 346 | ||
343 | /* We need a static PACA, too; copy this CPU's PACA over and switch to | 347 | /* We need a static PACA, too; copy this CPU's PACA over and switch to |
344 | * it. Also poison per_cpu_offset to catch anyone using non-static | 348 | * it. Also poison per_cpu_offset to catch anyone using non-static |
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S index 19e096bd0e73..e469f30e6eeb 100644 --- a/arch/powerpc/kernel/misc_32.S +++ b/arch/powerpc/kernel/misc_32.S | |||
@@ -657,6 +657,17 @@ _GLOBAL(__ucmpdi2) | |||
657 | li r3,2 | 657 | li r3,2 |
658 | blr | 658 | blr |
659 | 659 | ||
660 | _GLOBAL(__bswapdi2) | ||
661 | rotlwi r9,r4,8 | ||
662 | rotlwi r10,r3,8 | ||
663 | rlwimi r9,r4,24,0,7 | ||
664 | rlwimi r10,r3,24,0,7 | ||
665 | rlwimi r9,r4,24,16,23 | ||
666 | rlwimi r10,r3,24,16,23 | ||
667 | mr r3,r9 | ||
668 | mr r4,r10 | ||
669 | blr | ||
670 | |||
660 | _GLOBAL(abs) | 671 | _GLOBAL(abs) |
661 | srawi r4,r3,31 | 672 | srawi r4,r3,31 |
662 | xor r3,r3,r4 | 673 | xor r3,r3,r4 |
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S index 5cfa8008693b..6820e45f557b 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S | |||
@@ -234,6 +234,17 @@ _GLOBAL(__flush_dcache_icache) | |||
234 | isync | 234 | isync |
235 | blr | 235 | blr |
236 | 236 | ||
237 | _GLOBAL(__bswapdi2) | ||
238 | srdi r8,r3,32 | ||
239 | rlwinm r7,r3,8,0xffffffff | ||
240 | rlwimi r7,r3,24,0,7 | ||
241 | rlwinm r9,r8,8,0xffffffff | ||
242 | rlwimi r7,r3,24,16,23 | ||
243 | rlwimi r9,r8,24,0,7 | ||
244 | rlwimi r9,r8,24,16,23 | ||
245 | sldi r7,r7,32 | ||
246 | or r3,r7,r9 | ||
247 | blr | ||
237 | 248 | ||
238 | #if defined(CONFIG_PPC_PMAC) || defined(CONFIG_PPC_MAPLE) | 249 | #if defined(CONFIG_PPC_PMAC) || defined(CONFIG_PPC_MAPLE) |
239 | /* | 250 | /* |
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index f5c5c90799a7..7f2273cc3c7d 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
@@ -359,7 +359,6 @@ static pgprot_t __pci_mmap_set_pgprot(struct pci_dev *dev, struct resource *rp, | |||
359 | enum pci_mmap_state mmap_state, | 359 | enum pci_mmap_state mmap_state, |
360 | int write_combine) | 360 | int write_combine) |
361 | { | 361 | { |
362 | unsigned long prot = pgprot_val(protection); | ||
363 | 362 | ||
364 | /* Write combine is always 0 on non-memory space mappings. On | 363 | /* Write combine is always 0 on non-memory space mappings. On |
365 | * memory space, if the user didn't pass 1, we check for a | 364 | * memory space, if the user didn't pass 1, we check for a |
@@ -376,9 +375,9 @@ static pgprot_t __pci_mmap_set_pgprot(struct pci_dev *dev, struct resource *rp, | |||
376 | 375 | ||
377 | /* XXX would be nice to have a way to ask for write-through */ | 376 | /* XXX would be nice to have a way to ask for write-through */ |
378 | if (write_combine) | 377 | if (write_combine) |
379 | return pgprot_noncached_wc(prot); | 378 | return pgprot_noncached_wc(protection); |
380 | else | 379 | else |
381 | return pgprot_noncached(prot); | 380 | return pgprot_noncached(protection); |
382 | } | 381 | } |
383 | 382 | ||
384 | /* | 383 | /* |
@@ -658,15 +657,6 @@ void pci_resource_to_user(const struct pci_dev *dev, int bar, | |||
658 | * ranges. However, some machines (thanks Apple !) tend to split their | 657 | * ranges. However, some machines (thanks Apple !) tend to split their |
659 | * space into lots of small contiguous ranges. So we have to coalesce. | 658 | * space into lots of small contiguous ranges. So we have to coalesce. |
660 | * | 659 | * |
661 | * - We can only cope with all memory ranges having the same offset | ||
662 | * between CPU addresses and PCI addresses. Unfortunately, some bridges | ||
663 | * are setup for a large 1:1 mapping along with a small "window" which | ||
664 | * maps PCI address 0 to some arbitrary high address of the CPU space in | ||
665 | * order to give access to the ISA memory hole. | ||
666 | * The way out of here that I've chosen for now is to always set the | ||
667 | * offset based on the first resource found, then override it if we | ||
668 | * have a different offset and the previous was set by an ISA hole. | ||
669 | * | ||
670 | * - Some busses have IO space not starting at 0, which causes trouble with | 660 | * - Some busses have IO space not starting at 0, which causes trouble with |
671 | * the way we do our IO resource renumbering. The code somewhat deals with | 661 | * the way we do our IO resource renumbering. The code somewhat deals with |
672 | * it for 64 bits but I would expect problems on 32 bits. | 662 | * it for 64 bits but I would expect problems on 32 bits. |
@@ -681,10 +671,9 @@ void pci_process_bridge_OF_ranges(struct pci_controller *hose, | |||
681 | int rlen; | 671 | int rlen; |
682 | int pna = of_n_addr_cells(dev); | 672 | int pna = of_n_addr_cells(dev); |
683 | int np = pna + 5; | 673 | int np = pna + 5; |
684 | int memno = 0, isa_hole = -1; | 674 | int memno = 0; |
685 | u32 pci_space; | 675 | u32 pci_space; |
686 | unsigned long long pci_addr, cpu_addr, pci_next, cpu_next, size; | 676 | unsigned long long pci_addr, cpu_addr, pci_next, cpu_next, size; |
687 | unsigned long long isa_mb = 0; | ||
688 | struct resource *res; | 677 | struct resource *res; |
689 | 678 | ||
690 | printk(KERN_INFO "PCI host bridge %s %s ranges:\n", | 679 | printk(KERN_INFO "PCI host bridge %s %s ranges:\n", |
@@ -778,8 +767,6 @@ void pci_process_bridge_OF_ranges(struct pci_controller *hose, | |||
778 | } | 767 | } |
779 | /* Handles ISA memory hole space here */ | 768 | /* Handles ISA memory hole space here */ |
780 | if (pci_addr == 0) { | 769 | if (pci_addr == 0) { |
781 | isa_mb = cpu_addr; | ||
782 | isa_hole = memno; | ||
783 | if (primary || isa_mem_base == 0) | 770 | if (primary || isa_mem_base == 0) |
784 | isa_mem_base = cpu_addr; | 771 | isa_mem_base = cpu_addr; |
785 | hose->isa_mem_phys = cpu_addr; | 772 | hose->isa_mem_phys = cpu_addr; |
@@ -1521,9 +1508,10 @@ static void pcibios_setup_phb_resources(struct pci_controller *hose, | |||
1521 | for (i = 0; i < 3; ++i) { | 1508 | for (i = 0; i < 3; ++i) { |
1522 | res = &hose->mem_resources[i]; | 1509 | res = &hose->mem_resources[i]; |
1523 | if (!res->flags) { | 1510 | if (!res->flags) { |
1524 | printk(KERN_ERR "PCI: Memory resource 0 not set for " | 1511 | if (i == 0) |
1525 | "host bridge %s (domain %d)\n", | 1512 | printk(KERN_ERR "PCI: Memory resource 0 not set for " |
1526 | hose->dn->full_name, hose->global_number); | 1513 | "host bridge %s (domain %d)\n", |
1514 | hose->dn->full_name, hose->global_number); | ||
1527 | continue; | 1515 | continue; |
1528 | } | 1516 | } |
1529 | offset = hose->mem_offset[i]; | 1517 | offset = hose->mem_offset[i]; |
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index 873050d26840..2e8629654ca8 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c | |||
@@ -266,3 +266,13 @@ int pcibus_to_node(struct pci_bus *bus) | |||
266 | } | 266 | } |
267 | EXPORT_SYMBOL(pcibus_to_node); | 267 | EXPORT_SYMBOL(pcibus_to_node); |
268 | #endif | 268 | #endif |
269 | |||
270 | static void quirk_radeon_32bit_msi(struct pci_dev *dev) | ||
271 | { | ||
272 | struct pci_dn *pdn = pci_get_pdn(dev); | ||
273 | |||
274 | if (pdn) | ||
275 | pdn->force_32bit_msi = 1; | ||
276 | } | ||
277 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x68f2, quirk_radeon_32bit_msi); | ||
278 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0xaa68, quirk_radeon_32bit_msi); | ||
diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c index e7af165f8b9d..df038442548a 100644 --- a/arch/powerpc/kernel/pci_dn.c +++ b/arch/powerpc/kernel/pci_dn.c | |||
@@ -32,6 +32,14 @@ | |||
32 | #include <asm/ppc-pci.h> | 32 | #include <asm/ppc-pci.h> |
33 | #include <asm/firmware.h> | 33 | #include <asm/firmware.h> |
34 | 34 | ||
35 | struct pci_dn *pci_get_pdn(struct pci_dev *pdev) | ||
36 | { | ||
37 | struct device_node *dn = pci_device_to_OF_node(pdev); | ||
38 | if (!dn) | ||
39 | return NULL; | ||
40 | return PCI_DN(dn); | ||
41 | } | ||
42 | |||
35 | /* | 43 | /* |
36 | * Traverse_func that inits the PCI fields of the device node. | 44 | * Traverse_func that inits the PCI fields of the device node. |
37 | * NOTE: this *must* be done before read/write config to the device. | 45 | * NOTE: this *must* be done before read/write config to the device. |
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c index 78b8766fd79e..c29666586998 100644 --- a/arch/powerpc/kernel/ppc_ksyms.c +++ b/arch/powerpc/kernel/ppc_ksyms.c | |||
@@ -143,7 +143,8 @@ EXPORT_SYMBOL(__lshrdi3); | |||
143 | int __ucmpdi2(unsigned long long, unsigned long long); | 143 | int __ucmpdi2(unsigned long long, unsigned long long); |
144 | EXPORT_SYMBOL(__ucmpdi2); | 144 | EXPORT_SYMBOL(__ucmpdi2); |
145 | #endif | 145 | #endif |
146 | 146 | long long __bswapdi2(long long); | |
147 | EXPORT_SYMBOL(__bswapdi2); | ||
147 | EXPORT_SYMBOL(memcpy); | 148 | EXPORT_SYMBOL(memcpy); |
148 | EXPORT_SYMBOL(memset); | 149 | EXPORT_SYMBOL(memset); |
149 | EXPORT_SYMBOL(memmove); | 150 | EXPORT_SYMBOL(memmove); |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index ceb4e7b62cf4..a902723fdc69 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -339,6 +339,13 @@ static void set_debug_reg_defaults(struct thread_struct *thread) | |||
339 | 339 | ||
340 | static void prime_debug_regs(struct thread_struct *thread) | 340 | static void prime_debug_regs(struct thread_struct *thread) |
341 | { | 341 | { |
342 | /* | ||
343 | * We could have inherited MSR_DE from userspace, since | ||
344 | * it doesn't get cleared on exception entry. Make sure | ||
345 | * MSR_DE is clear before we enable any debug events. | ||
346 | */ | ||
347 | mtmsr(mfmsr() & ~MSR_DE); | ||
348 | |||
342 | mtspr(SPRN_IAC1, thread->iac1); | 349 | mtspr(SPRN_IAC1, thread->iac1); |
343 | mtspr(SPRN_IAC2, thread->iac2); | 350 | mtspr(SPRN_IAC2, thread->iac2); |
344 | #if CONFIG_PPC_ADV_DEBUG_IACS > 2 | 351 | #if CONFIG_PPC_ADV_DEBUG_IACS > 2 |
@@ -971,6 +978,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, | |||
971 | * do some house keeping and then return from the fork or clone | 978 | * do some house keeping and then return from the fork or clone |
972 | * system call, using the stack frame created above. | 979 | * system call, using the stack frame created above. |
973 | */ | 980 | */ |
981 | ((unsigned long *)sp)[0] = 0; | ||
974 | sp -= sizeof(struct pt_regs); | 982 | sp -= sizeof(struct pt_regs); |
975 | kregs = (struct pt_regs *) sp; | 983 | kregs = (struct pt_regs *) sp; |
976 | sp -= STACK_FRAME_OVERHEAD; | 984 | sp -= STACK_FRAME_OVERHEAD; |
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index 3b14d320e69f..98c2fc198712 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <trace/syscall.h> | 32 | #include <trace/syscall.h> |
33 | #include <linux/hw_breakpoint.h> | 33 | #include <linux/hw_breakpoint.h> |
34 | #include <linux/perf_event.h> | 34 | #include <linux/perf_event.h> |
35 | #include <linux/context_tracking.h> | ||
35 | 36 | ||
36 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
37 | #include <asm/page.h> | 38 | #include <asm/page.h> |
@@ -1788,6 +1789,8 @@ long do_syscall_trace_enter(struct pt_regs *regs) | |||
1788 | { | 1789 | { |
1789 | long ret = 0; | 1790 | long ret = 0; |
1790 | 1791 | ||
1792 | user_exit(); | ||
1793 | |||
1791 | secure_computing_strict(regs->gpr[0]); | 1794 | secure_computing_strict(regs->gpr[0]); |
1792 | 1795 | ||
1793 | if (test_thread_flag(TIF_SYSCALL_TRACE) && | 1796 | if (test_thread_flag(TIF_SYSCALL_TRACE) && |
@@ -1832,4 +1835,6 @@ void do_syscall_trace_leave(struct pt_regs *regs) | |||
1832 | step = test_thread_flag(TIF_SINGLESTEP); | 1835 | step = test_thread_flag(TIF_SINGLESTEP); |
1833 | if (step || test_thread_flag(TIF_SYSCALL_TRACE)) | 1836 | if (step || test_thread_flag(TIF_SYSCALL_TRACE)) |
1834 | tracehook_report_syscall_exit(regs, step); | 1837 | tracehook_report_syscall_exit(regs, step); |
1838 | |||
1839 | user_enter(); | ||
1835 | } | 1840 | } |
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 1fd6e7b2f390..52add6f3e201 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/capability.h> | 20 | #include <linux/capability.h> |
21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
22 | #include <linux/cpu.h> | ||
22 | #include <linux/smp.h> | 23 | #include <linux/smp.h> |
23 | #include <linux/completion.h> | 24 | #include <linux/completion.h> |
24 | #include <linux/cpumask.h> | 25 | #include <linux/cpumask.h> |
@@ -807,6 +808,95 @@ static void rtas_percpu_suspend_me(void *info) | |||
807 | __rtas_suspend_cpu((struct rtas_suspend_me_data *)info, 1); | 808 | __rtas_suspend_cpu((struct rtas_suspend_me_data *)info, 1); |
808 | } | 809 | } |
809 | 810 | ||
811 | enum rtas_cpu_state { | ||
812 | DOWN, | ||
813 | UP, | ||
814 | }; | ||
815 | |||
816 | #ifndef CONFIG_SMP | ||
817 | static int rtas_cpu_state_change_mask(enum rtas_cpu_state state, | ||
818 | cpumask_var_t cpus) | ||
819 | { | ||
820 | if (!cpumask_empty(cpus)) { | ||
821 | cpumask_clear(cpus); | ||
822 | return -EINVAL; | ||
823 | } else | ||
824 | return 0; | ||
825 | } | ||
826 | #else | ||
827 | /* On return cpumask will be altered to indicate CPUs changed. | ||
828 | * CPUs with states changed will be set in the mask, | ||
829 | * CPUs with status unchanged will be unset in the mask. */ | ||
830 | static int rtas_cpu_state_change_mask(enum rtas_cpu_state state, | ||
831 | cpumask_var_t cpus) | ||
832 | { | ||
833 | int cpu; | ||
834 | int cpuret = 0; | ||
835 | int ret = 0; | ||
836 | |||
837 | if (cpumask_empty(cpus)) | ||
838 | return 0; | ||
839 | |||
840 | for_each_cpu(cpu, cpus) { | ||
841 | switch (state) { | ||
842 | case DOWN: | ||
843 | cpuret = cpu_down(cpu); | ||
844 | break; | ||
845 | case UP: | ||
846 | cpuret = cpu_up(cpu); | ||
847 | break; | ||
848 | } | ||
849 | if (cpuret) { | ||
850 | pr_debug("%s: cpu_%s for cpu#%d returned %d.\n", | ||
851 | __func__, | ||
852 | ((state == UP) ? "up" : "down"), | ||
853 | cpu, cpuret); | ||
854 | if (!ret) | ||
855 | ret = cpuret; | ||
856 | if (state == UP) { | ||
857 | /* clear bits for unchanged cpus, return */ | ||
858 | cpumask_shift_right(cpus, cpus, cpu); | ||
859 | cpumask_shift_left(cpus, cpus, cpu); | ||
860 | break; | ||
861 | } else { | ||
862 | /* clear bit for unchanged cpu, continue */ | ||
863 | cpumask_clear_cpu(cpu, cpus); | ||
864 | } | ||
865 | } | ||
866 | } | ||
867 | |||
868 | return ret; | ||
869 | } | ||
870 | #endif | ||
871 | |||
872 | int rtas_online_cpus_mask(cpumask_var_t cpus) | ||
873 | { | ||
874 | int ret; | ||
875 | |||
876 | ret = rtas_cpu_state_change_mask(UP, cpus); | ||
877 | |||
878 | if (ret) { | ||
879 | cpumask_var_t tmp_mask; | ||
880 | |||
881 | if (!alloc_cpumask_var(&tmp_mask, GFP_TEMPORARY)) | ||
882 | return ret; | ||
883 | |||
884 | /* Use tmp_mask to preserve cpus mask from first failure */ | ||
885 | cpumask_copy(tmp_mask, cpus); | ||
886 | rtas_offline_cpus_mask(tmp_mask); | ||
887 | free_cpumask_var(tmp_mask); | ||
888 | } | ||
889 | |||
890 | return ret; | ||
891 | } | ||
892 | EXPORT_SYMBOL(rtas_online_cpus_mask); | ||
893 | |||
894 | int rtas_offline_cpus_mask(cpumask_var_t cpus) | ||
895 | { | ||
896 | return rtas_cpu_state_change_mask(DOWN, cpus); | ||
897 | } | ||
898 | EXPORT_SYMBOL(rtas_offline_cpus_mask); | ||
899 | |||
810 | int rtas_ibm_suspend_me(struct rtas_args *args) | 900 | int rtas_ibm_suspend_me(struct rtas_args *args) |
811 | { | 901 | { |
812 | long state; | 902 | long state; |
@@ -814,6 +904,8 @@ int rtas_ibm_suspend_me(struct rtas_args *args) | |||
814 | unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; | 904 | unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; |
815 | struct rtas_suspend_me_data data; | 905 | struct rtas_suspend_me_data data; |
816 | DECLARE_COMPLETION_ONSTACK(done); | 906 | DECLARE_COMPLETION_ONSTACK(done); |
907 | cpumask_var_t offline_mask; | ||
908 | int cpuret; | ||
817 | 909 | ||
818 | if (!rtas_service_present("ibm,suspend-me")) | 910 | if (!rtas_service_present("ibm,suspend-me")) |
819 | return -ENOSYS; | 911 | return -ENOSYS; |
@@ -837,11 +929,24 @@ int rtas_ibm_suspend_me(struct rtas_args *args) | |||
837 | return 0; | 929 | return 0; |
838 | } | 930 | } |
839 | 931 | ||
932 | if (!alloc_cpumask_var(&offline_mask, GFP_TEMPORARY)) | ||
933 | return -ENOMEM; | ||
934 | |||
840 | atomic_set(&data.working, 0); | 935 | atomic_set(&data.working, 0); |
841 | atomic_set(&data.done, 0); | 936 | atomic_set(&data.done, 0); |
842 | atomic_set(&data.error, 0); | 937 | atomic_set(&data.error, 0); |
843 | data.token = rtas_token("ibm,suspend-me"); | 938 | data.token = rtas_token("ibm,suspend-me"); |
844 | data.complete = &done; | 939 | data.complete = &done; |
940 | |||
941 | /* All present CPUs must be online */ | ||
942 | cpumask_andnot(offline_mask, cpu_present_mask, cpu_online_mask); | ||
943 | cpuret = rtas_online_cpus_mask(offline_mask); | ||
944 | if (cpuret) { | ||
945 | pr_err("%s: Could not bring present CPUs online.\n", __func__); | ||
946 | atomic_set(&data.error, cpuret); | ||
947 | goto out; | ||
948 | } | ||
949 | |||
845 | stop_topology_update(); | 950 | stop_topology_update(); |
846 | 951 | ||
847 | /* Call function on all CPUs. One of us will make the | 952 | /* Call function on all CPUs. One of us will make the |
@@ -857,6 +962,14 @@ int rtas_ibm_suspend_me(struct rtas_args *args) | |||
857 | 962 | ||
858 | start_topology_update(); | 963 | start_topology_update(); |
859 | 964 | ||
965 | /* Take down CPUs not online prior to suspend */ | ||
966 | cpuret = rtas_offline_cpus_mask(offline_mask); | ||
967 | if (cpuret) | ||
968 | pr_warn("%s: Could not restore CPUs to offline state.\n", | ||
969 | __func__); | ||
970 | |||
971 | out: | ||
972 | free_cpumask_var(offline_mask); | ||
860 | return atomic_read(&data.error); | 973 | return atomic_read(&data.error); |
861 | } | 974 | } |
862 | #else /* CONFIG_PPC_PSERIES */ | 975 | #else /* CONFIG_PPC_PSERIES */ |
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index 5b3022470126..2f3cdb01506d 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
@@ -89,6 +89,7 @@ | |||
89 | 89 | ||
90 | /* Array sizes */ | 90 | /* Array sizes */ |
91 | #define VALIDATE_BUF_SIZE 4096 | 91 | #define VALIDATE_BUF_SIZE 4096 |
92 | #define VALIDATE_MSG_LEN 256 | ||
92 | #define RTAS_MSG_MAXLEN 64 | 93 | #define RTAS_MSG_MAXLEN 64 |
93 | 94 | ||
94 | /* Quirk - RTAS requires 4k list length and block size */ | 95 | /* Quirk - RTAS requires 4k list length and block size */ |
@@ -466,7 +467,7 @@ static void validate_flash(struct rtas_validate_flash_t *args_buf) | |||
466 | } | 467 | } |
467 | 468 | ||
468 | static int get_validate_flash_msg(struct rtas_validate_flash_t *args_buf, | 469 | static int get_validate_flash_msg(struct rtas_validate_flash_t *args_buf, |
469 | char *msg) | 470 | char *msg, int msglen) |
470 | { | 471 | { |
471 | int n; | 472 | int n; |
472 | 473 | ||
@@ -474,7 +475,8 @@ static int get_validate_flash_msg(struct rtas_validate_flash_t *args_buf, | |||
474 | n = sprintf(msg, "%d\n", args_buf->update_results); | 475 | n = sprintf(msg, "%d\n", args_buf->update_results); |
475 | if ((args_buf->update_results >= VALIDATE_CUR_UNKNOWN) || | 476 | if ((args_buf->update_results >= VALIDATE_CUR_UNKNOWN) || |
476 | (args_buf->update_results == VALIDATE_TMP_UPDATE)) | 477 | (args_buf->update_results == VALIDATE_TMP_UPDATE)) |
477 | n += sprintf(msg + n, "%s\n", args_buf->buf); | 478 | n += snprintf(msg + n, msglen - n, "%s\n", |
479 | args_buf->buf); | ||
478 | } else { | 480 | } else { |
479 | n = sprintf(msg, "%d\n", args_buf->status); | 481 | n = sprintf(msg, "%d\n", args_buf->status); |
480 | } | 482 | } |
@@ -486,11 +488,11 @@ static ssize_t validate_flash_read(struct file *file, char __user *buf, | |||
486 | { | 488 | { |
487 | struct rtas_validate_flash_t *const args_buf = | 489 | struct rtas_validate_flash_t *const args_buf = |
488 | &rtas_validate_flash_data; | 490 | &rtas_validate_flash_data; |
489 | char msg[RTAS_MSG_MAXLEN]; | 491 | char msg[VALIDATE_MSG_LEN]; |
490 | int msglen; | 492 | int msglen; |
491 | 493 | ||
492 | mutex_lock(&rtas_validate_flash_mutex); | 494 | mutex_lock(&rtas_validate_flash_mutex); |
493 | msglen = get_validate_flash_msg(args_buf, msg); | 495 | msglen = get_validate_flash_msg(args_buf, msg, VALIDATE_MSG_LEN); |
494 | mutex_unlock(&rtas_validate_flash_mutex); | 496 | mutex_unlock(&rtas_validate_flash_mutex); |
495 | 497 | ||
496 | return simple_read_from_buffer(buf, count, ppos, msg, msglen); | 498 | return simple_read_from_buffer(buf, count, ppos, msg, msglen); |
diff --git a/arch/powerpc/kernel/signal.c b/arch/powerpc/kernel/signal.c index cf12eae02de5..457e97aa2945 100644 --- a/arch/powerpc/kernel/signal.c +++ b/arch/powerpc/kernel/signal.c | |||
@@ -13,10 +13,12 @@ | |||
13 | #include <linux/signal.h> | 13 | #include <linux/signal.h> |
14 | #include <linux/uprobes.h> | 14 | #include <linux/uprobes.h> |
15 | #include <linux/key.h> | 15 | #include <linux/key.h> |
16 | #include <linux/context_tracking.h> | ||
16 | #include <asm/hw_breakpoint.h> | 17 | #include <asm/hw_breakpoint.h> |
17 | #include <asm/uaccess.h> | 18 | #include <asm/uaccess.h> |
18 | #include <asm/unistd.h> | 19 | #include <asm/unistd.h> |
19 | #include <asm/debug.h> | 20 | #include <asm/debug.h> |
21 | #include <asm/tm.h> | ||
20 | 22 | ||
21 | #include "signal.h" | 23 | #include "signal.h" |
22 | 24 | ||
@@ -24,18 +26,18 @@ | |||
24 | * through debug.exception-trace sysctl. | 26 | * through debug.exception-trace sysctl. |
25 | */ | 27 | */ |
26 | 28 | ||
27 | int show_unhandled_signals = 0; | 29 | int show_unhandled_signals = 1; |
28 | 30 | ||
29 | /* | 31 | /* |
30 | * Allocate space for the signal frame | 32 | * Allocate space for the signal frame |
31 | */ | 33 | */ |
32 | void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, | 34 | void __user * get_sigframe(struct k_sigaction *ka, unsigned long sp, |
33 | size_t frame_size, int is_32) | 35 | size_t frame_size, int is_32) |
34 | { | 36 | { |
35 | unsigned long oldsp, newsp; | 37 | unsigned long oldsp, newsp; |
36 | 38 | ||
37 | /* Default to using normal stack */ | 39 | /* Default to using normal stack */ |
38 | oldsp = get_clean_sp(regs, is_32); | 40 | oldsp = get_clean_sp(sp, is_32); |
39 | 41 | ||
40 | /* Check for alt stack */ | 42 | /* Check for alt stack */ |
41 | if ((ka->sa.sa_flags & SA_ONSTACK) && | 43 | if ((ka->sa.sa_flags & SA_ONSTACK) && |
@@ -159,6 +161,8 @@ static int do_signal(struct pt_regs *regs) | |||
159 | 161 | ||
160 | void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags) | 162 | void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags) |
161 | { | 163 | { |
164 | user_exit(); | ||
165 | |||
162 | if (thread_info_flags & _TIF_UPROBE) | 166 | if (thread_info_flags & _TIF_UPROBE) |
163 | uprobe_notify_resume(regs); | 167 | uprobe_notify_resume(regs); |
164 | 168 | ||
@@ -169,4 +173,41 @@ void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags) | |||
169 | clear_thread_flag(TIF_NOTIFY_RESUME); | 173 | clear_thread_flag(TIF_NOTIFY_RESUME); |
170 | tracehook_notify_resume(regs); | 174 | tracehook_notify_resume(regs); |
171 | } | 175 | } |
176 | |||
177 | user_enter(); | ||
178 | } | ||
179 | |||
180 | unsigned long get_tm_stackpointer(struct pt_regs *regs) | ||
181 | { | ||
182 | /* When in an active transaction that takes a signal, we need to be | ||
183 | * careful with the stack. It's possible that the stack has moved back | ||
184 | * up after the tbegin. The obvious case here is when the tbegin is | ||
185 | * called inside a function that returns before a tend. In this case, | ||
186 | * the stack is part of the checkpointed transactional memory state. | ||
187 | * If we write over this non transactionally or in suspend, we are in | ||
188 | * trouble because if we get a tm abort, the program counter and stack | ||
189 | * pointer will be back at the tbegin but our in memory stack won't be | ||
190 | * valid anymore. | ||
191 | * | ||
192 | * To avoid this, when taking a signal in an active transaction, we | ||
193 | * need to use the stack pointer from the checkpointed state, rather | ||
194 | * than the speculated state. This ensures that the signal context | ||
195 | * (written tm suspended) will be written below the stack required for | ||
196 | * the rollback. The transaction is aborted becuase of the treclaim, | ||
197 | * so any memory written between the tbegin and the signal will be | ||
198 | * rolled back anyway. | ||
199 | * | ||
200 | * For signals taken in non-TM or suspended mode, we use the | ||
201 | * normal/non-checkpointed stack pointer. | ||
202 | */ | ||
203 | |||
204 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM | ||
205 | if (MSR_TM_ACTIVE(regs->msr)) { | ||
206 | tm_enable(); | ||
207 | tm_reclaim(¤t->thread, regs->msr, TM_CAUSE_SIGNAL); | ||
208 | if (MSR_TM_TRANSACTIONAL(regs->msr)) | ||
209 | return current->thread.ckpt_regs.gpr[1]; | ||
210 | } | ||
211 | #endif | ||
212 | return regs->gpr[1]; | ||
172 | } | 213 | } |
diff --git a/arch/powerpc/kernel/signal.h b/arch/powerpc/kernel/signal.h index ec84c901ceab..c69b9aeb9f23 100644 --- a/arch/powerpc/kernel/signal.h +++ b/arch/powerpc/kernel/signal.h | |||
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | extern void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags); | 13 | extern void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags); |
14 | 14 | ||
15 | extern void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, | 15 | extern void __user * get_sigframe(struct k_sigaction *ka, unsigned long sp, |
16 | size_t frame_size, int is_32); | 16 | size_t frame_size, int is_32); |
17 | 17 | ||
18 | extern int handle_signal32(unsigned long sig, struct k_sigaction *ka, | 18 | extern int handle_signal32(unsigned long sig, struct k_sigaction *ka, |
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index 95068bf569ad..201385c3a1ae 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
@@ -503,12 +503,6 @@ static int save_tm_user_regs(struct pt_regs *regs, | |||
503 | { | 503 | { |
504 | unsigned long msr = regs->msr; | 504 | unsigned long msr = regs->msr; |
505 | 505 | ||
506 | /* tm_reclaim rolls back all reg states, updating thread.ckpt_regs, | ||
507 | * thread.transact_fpr[], thread.transact_vr[], etc. | ||
508 | */ | ||
509 | tm_enable(); | ||
510 | tm_reclaim(¤t->thread, msr, TM_CAUSE_SIGNAL); | ||
511 | |||
512 | /* Make sure floating point registers are stored in regs */ | 506 | /* Make sure floating point registers are stored in regs */ |
513 | flush_fp_to_thread(current); | 507 | flush_fp_to_thread(current); |
514 | 508 | ||
@@ -965,7 +959,7 @@ int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka, | |||
965 | 959 | ||
966 | /* Set up Signal Frame */ | 960 | /* Set up Signal Frame */ |
967 | /* Put a Real Time Context onto stack */ | 961 | /* Put a Real Time Context onto stack */ |
968 | rt_sf = get_sigframe(ka, regs, sizeof(*rt_sf), 1); | 962 | rt_sf = get_sigframe(ka, get_tm_stackpointer(regs), sizeof(*rt_sf), 1); |
969 | addr = rt_sf; | 963 | addr = rt_sf; |
970 | if (unlikely(rt_sf == NULL)) | 964 | if (unlikely(rt_sf == NULL)) |
971 | goto badframe; | 965 | goto badframe; |
@@ -1403,7 +1397,7 @@ int handle_signal32(unsigned long sig, struct k_sigaction *ka, | |||
1403 | unsigned long tramp; | 1397 | unsigned long tramp; |
1404 | 1398 | ||
1405 | /* Set up Signal Frame */ | 1399 | /* Set up Signal Frame */ |
1406 | frame = get_sigframe(ka, regs, sizeof(*frame), 1); | 1400 | frame = get_sigframe(ka, get_tm_stackpointer(regs), sizeof(*frame), 1); |
1407 | if (unlikely(frame == NULL)) | 1401 | if (unlikely(frame == NULL)) |
1408 | goto badframe; | 1402 | goto badframe; |
1409 | sc = (struct sigcontext __user *) &frame->sctx; | 1403 | sc = (struct sigcontext __user *) &frame->sctx; |
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c index c1794286098c..345947367ec0 100644 --- a/arch/powerpc/kernel/signal_64.c +++ b/arch/powerpc/kernel/signal_64.c | |||
@@ -154,11 +154,12 @@ static long setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, | |||
154 | * As above, but Transactional Memory is in use, so deliver sigcontexts | 154 | * As above, but Transactional Memory is in use, so deliver sigcontexts |
155 | * containing checkpointed and transactional register states. | 155 | * containing checkpointed and transactional register states. |
156 | * | 156 | * |
157 | * To do this, we treclaim to gather both sets of registers and set up the | 157 | * To do this, we treclaim (done before entering here) to gather both sets of |
158 | * 'normal' sigcontext registers with rolled-back register values such that a | 158 | * registers and set up the 'normal' sigcontext registers with rolled-back |
159 | * simple signal handler sees a correct checkpointed register state. | 159 | * register values such that a simple signal handler sees a correct |
160 | * If interested, a TM-aware sighandler can examine the transactional registers | 160 | * checkpointed register state. If interested, a TM-aware sighandler can |
161 | * in the 2nd sigcontext to determine the real origin of the signal. | 161 | * examine the transactional registers in the 2nd sigcontext to determine the |
162 | * real origin of the signal. | ||
162 | */ | 163 | */ |
163 | static long setup_tm_sigcontexts(struct sigcontext __user *sc, | 164 | static long setup_tm_sigcontexts(struct sigcontext __user *sc, |
164 | struct sigcontext __user *tm_sc, | 165 | struct sigcontext __user *tm_sc, |
@@ -184,16 +185,6 @@ static long setup_tm_sigcontexts(struct sigcontext __user *sc, | |||
184 | 185 | ||
185 | BUG_ON(!MSR_TM_ACTIVE(regs->msr)); | 186 | BUG_ON(!MSR_TM_ACTIVE(regs->msr)); |
186 | 187 | ||
187 | /* tm_reclaim rolls back all reg states, saving checkpointed (older) | ||
188 | * GPRs to thread.ckpt_regs and (if used) FPRs to (newer) | ||
189 | * thread.transact_fp and/or VRs to (newer) thread.transact_vr. | ||
190 | * THEN we save out FP/VRs, if necessary, to the checkpointed (older) | ||
191 | * thread.fr[]/vr[]s. The transactional (newer) GPRs are on the | ||
192 | * stack, in *regs. | ||
193 | */ | ||
194 | tm_enable(); | ||
195 | tm_reclaim(¤t->thread, msr, TM_CAUSE_SIGNAL); | ||
196 | |||
197 | flush_fp_to_thread(current); | 188 | flush_fp_to_thread(current); |
198 | 189 | ||
199 | #ifdef CONFIG_ALTIVEC | 190 | #ifdef CONFIG_ALTIVEC |
@@ -711,7 +702,7 @@ int handle_rt_signal64(int signr, struct k_sigaction *ka, siginfo_t *info, | |||
711 | unsigned long newsp = 0; | 702 | unsigned long newsp = 0; |
712 | long err = 0; | 703 | long err = 0; |
713 | 704 | ||
714 | frame = get_sigframe(ka, regs, sizeof(*frame), 0); | 705 | frame = get_sigframe(ka, get_tm_stackpointer(regs), sizeof(*frame), 0); |
715 | if (unlikely(frame == NULL)) | 706 | if (unlikely(frame == NULL)) |
716 | goto badframe; | 707 | goto badframe; |
717 | 708 | ||
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 83efa2f7d926..f18c79c324ef 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/kdebug.h> | 35 | #include <linux/kdebug.h> |
36 | #include <linux/debugfs.h> | 36 | #include <linux/debugfs.h> |
37 | #include <linux/ratelimit.h> | 37 | #include <linux/ratelimit.h> |
38 | #include <linux/context_tracking.h> | ||
38 | 39 | ||
39 | #include <asm/emulated_ops.h> | 40 | #include <asm/emulated_ops.h> |
40 | #include <asm/pgtable.h> | 41 | #include <asm/pgtable.h> |
@@ -52,6 +53,7 @@ | |||
52 | #ifdef CONFIG_PPC64 | 53 | #ifdef CONFIG_PPC64 |
53 | #include <asm/firmware.h> | 54 | #include <asm/firmware.h> |
54 | #include <asm/processor.h> | 55 | #include <asm/processor.h> |
56 | #include <asm/tm.h> | ||
55 | #endif | 57 | #endif |
56 | #include <asm/kexec.h> | 58 | #include <asm/kexec.h> |
57 | #include <asm/ppc-opcode.h> | 59 | #include <asm/ppc-opcode.h> |
@@ -667,6 +669,7 @@ int machine_check_generic(struct pt_regs *regs) | |||
667 | 669 | ||
668 | void machine_check_exception(struct pt_regs *regs) | 670 | void machine_check_exception(struct pt_regs *regs) |
669 | { | 671 | { |
672 | enum ctx_state prev_state = exception_enter(); | ||
670 | int recover = 0; | 673 | int recover = 0; |
671 | 674 | ||
672 | __get_cpu_var(irq_stat).mce_exceptions++; | 675 | __get_cpu_var(irq_stat).mce_exceptions++; |
@@ -683,7 +686,7 @@ void machine_check_exception(struct pt_regs *regs) | |||
683 | recover = cur_cpu_spec->machine_check(regs); | 686 | recover = cur_cpu_spec->machine_check(regs); |
684 | 687 | ||
685 | if (recover > 0) | 688 | if (recover > 0) |
686 | return; | 689 | goto bail; |
687 | 690 | ||
688 | #if defined(CONFIG_8xx) && defined(CONFIG_PCI) | 691 | #if defined(CONFIG_8xx) && defined(CONFIG_PCI) |
689 | /* the qspan pci read routines can cause machine checks -- Cort | 692 | /* the qspan pci read routines can cause machine checks -- Cort |
@@ -693,20 +696,23 @@ void machine_check_exception(struct pt_regs *regs) | |||
693 | * -- BenH | 696 | * -- BenH |
694 | */ | 697 | */ |
695 | bad_page_fault(regs, regs->dar, SIGBUS); | 698 | bad_page_fault(regs, regs->dar, SIGBUS); |
696 | return; | 699 | goto bail; |
697 | #endif | 700 | #endif |
698 | 701 | ||
699 | if (debugger_fault_handler(regs)) | 702 | if (debugger_fault_handler(regs)) |
700 | return; | 703 | goto bail; |
701 | 704 | ||
702 | if (check_io_access(regs)) | 705 | if (check_io_access(regs)) |
703 | return; | 706 | goto bail; |
704 | 707 | ||
705 | die("Machine check", regs, SIGBUS); | 708 | die("Machine check", regs, SIGBUS); |
706 | 709 | ||
707 | /* Must die if the interrupt is not recoverable */ | 710 | /* Must die if the interrupt is not recoverable */ |
708 | if (!(regs->msr & MSR_RI)) | 711 | if (!(regs->msr & MSR_RI)) |
709 | panic("Unrecoverable Machine check"); | 712 | panic("Unrecoverable Machine check"); |
713 | |||
714 | bail: | ||
715 | exception_exit(prev_state); | ||
710 | } | 716 | } |
711 | 717 | ||
712 | void SMIException(struct pt_regs *regs) | 718 | void SMIException(struct pt_regs *regs) |
@@ -716,20 +722,29 @@ void SMIException(struct pt_regs *regs) | |||
716 | 722 | ||
717 | void unknown_exception(struct pt_regs *regs) | 723 | void unknown_exception(struct pt_regs *regs) |
718 | { | 724 | { |
725 | enum ctx_state prev_state = exception_enter(); | ||
726 | |||
719 | printk("Bad trap at PC: %lx, SR: %lx, vector=%lx\n", | 727 | printk("Bad trap at PC: %lx, SR: %lx, vector=%lx\n", |
720 | regs->nip, regs->msr, regs->trap); | 728 | regs->nip, regs->msr, regs->trap); |
721 | 729 | ||
722 | _exception(SIGTRAP, regs, 0, 0); | 730 | _exception(SIGTRAP, regs, 0, 0); |
731 | |||
732 | exception_exit(prev_state); | ||
723 | } | 733 | } |
724 | 734 | ||
725 | void instruction_breakpoint_exception(struct pt_regs *regs) | 735 | void instruction_breakpoint_exception(struct pt_regs *regs) |
726 | { | 736 | { |
737 | enum ctx_state prev_state = exception_enter(); | ||
738 | |||
727 | if (notify_die(DIE_IABR_MATCH, "iabr_match", regs, 5, | 739 | if (notify_die(DIE_IABR_MATCH, "iabr_match", regs, 5, |
728 | 5, SIGTRAP) == NOTIFY_STOP) | 740 | 5, SIGTRAP) == NOTIFY_STOP) |
729 | return; | 741 | goto bail; |
730 | if (debugger_iabr_match(regs)) | 742 | if (debugger_iabr_match(regs)) |
731 | return; | 743 | goto bail; |
732 | _exception(SIGTRAP, regs, TRAP_BRKPT, regs->nip); | 744 | _exception(SIGTRAP, regs, TRAP_BRKPT, regs->nip); |
745 | |||
746 | bail: | ||
747 | exception_exit(prev_state); | ||
733 | } | 748 | } |
734 | 749 | ||
735 | void RunModeException(struct pt_regs *regs) | 750 | void RunModeException(struct pt_regs *regs) |
@@ -739,15 +754,20 @@ void RunModeException(struct pt_regs *regs) | |||
739 | 754 | ||
740 | void __kprobes single_step_exception(struct pt_regs *regs) | 755 | void __kprobes single_step_exception(struct pt_regs *regs) |
741 | { | 756 | { |
757 | enum ctx_state prev_state = exception_enter(); | ||
758 | |||
742 | clear_single_step(regs); | 759 | clear_single_step(regs); |
743 | 760 | ||
744 | if (notify_die(DIE_SSTEP, "single_step", regs, 5, | 761 | if (notify_die(DIE_SSTEP, "single_step", regs, 5, |
745 | 5, SIGTRAP) == NOTIFY_STOP) | 762 | 5, SIGTRAP) == NOTIFY_STOP) |
746 | return; | 763 | goto bail; |
747 | if (debugger_sstep(regs)) | 764 | if (debugger_sstep(regs)) |
748 | return; | 765 | goto bail; |
749 | 766 | ||
750 | _exception(SIGTRAP, regs, TRAP_TRACE, regs->nip); | 767 | _exception(SIGTRAP, regs, TRAP_TRACE, regs->nip); |
768 | |||
769 | bail: | ||
770 | exception_exit(prev_state); | ||
751 | } | 771 | } |
752 | 772 | ||
753 | /* | 773 | /* |
@@ -913,6 +933,28 @@ static int emulate_isel(struct pt_regs *regs, u32 instword) | |||
913 | return 0; | 933 | return 0; |
914 | } | 934 | } |
915 | 935 | ||
936 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM | ||
937 | static inline bool tm_abort_check(struct pt_regs *regs, int cause) | ||
938 | { | ||
939 | /* If we're emulating a load/store in an active transaction, we cannot | ||
940 | * emulate it as the kernel operates in transaction suspended context. | ||
941 | * We need to abort the transaction. This creates a persistent TM | ||
942 | * abort so tell the user what caused it with a new code. | ||
943 | */ | ||
944 | if (MSR_TM_TRANSACTIONAL(regs->msr)) { | ||
945 | tm_enable(); | ||
946 | tm_abort(cause); | ||
947 | return true; | ||
948 | } | ||
949 | return false; | ||
950 | } | ||
951 | #else | ||
952 | static inline bool tm_abort_check(struct pt_regs *regs, int reason) | ||
953 | { | ||
954 | return false; | ||
955 | } | ||
956 | #endif | ||
957 | |||
916 | static int emulate_instruction(struct pt_regs *regs) | 958 | static int emulate_instruction(struct pt_regs *regs) |
917 | { | 959 | { |
918 | u32 instword; | 960 | u32 instword; |
@@ -952,6 +994,9 @@ static int emulate_instruction(struct pt_regs *regs) | |||
952 | 994 | ||
953 | /* Emulate load/store string insn. */ | 995 | /* Emulate load/store string insn. */ |
954 | if ((instword & PPC_INST_STRING_GEN_MASK) == PPC_INST_STRING) { | 996 | if ((instword & PPC_INST_STRING_GEN_MASK) == PPC_INST_STRING) { |
997 | if (tm_abort_check(regs, | ||
998 | TM_CAUSE_EMULATE | TM_CAUSE_PERSISTENT)) | ||
999 | return -EINVAL; | ||
955 | PPC_WARN_EMULATED(string, regs); | 1000 | PPC_WARN_EMULATED(string, regs); |
956 | return emulate_string_inst(regs, instword); | 1001 | return emulate_string_inst(regs, instword); |
957 | } | 1002 | } |
@@ -1005,6 +1050,7 @@ int is_valid_bugaddr(unsigned long addr) | |||
1005 | 1050 | ||
1006 | void __kprobes program_check_exception(struct pt_regs *regs) | 1051 | void __kprobes program_check_exception(struct pt_regs *regs) |
1007 | { | 1052 | { |
1053 | enum ctx_state prev_state = exception_enter(); | ||
1008 | unsigned int reason = get_reason(regs); | 1054 | unsigned int reason = get_reason(regs); |
1009 | extern int do_mathemu(struct pt_regs *regs); | 1055 | extern int do_mathemu(struct pt_regs *regs); |
1010 | 1056 | ||
@@ -1014,26 +1060,26 @@ void __kprobes program_check_exception(struct pt_regs *regs) | |||
1014 | if (reason & REASON_FP) { | 1060 | if (reason & REASON_FP) { |
1015 | /* IEEE FP exception */ | 1061 | /* IEEE FP exception */ |
1016 | parse_fpe(regs); | 1062 | parse_fpe(regs); |
1017 | return; | 1063 | goto bail; |
1018 | } | 1064 | } |
1019 | if (reason & REASON_TRAP) { | 1065 | if (reason & REASON_TRAP) { |
1020 | /* Debugger is first in line to stop recursive faults in | 1066 | /* Debugger is first in line to stop recursive faults in |
1021 | * rcu_lock, notify_die, or atomic_notifier_call_chain */ | 1067 | * rcu_lock, notify_die, or atomic_notifier_call_chain */ |
1022 | if (debugger_bpt(regs)) | 1068 | if (debugger_bpt(regs)) |
1023 | return; | 1069 | goto bail; |
1024 | 1070 | ||
1025 | /* trap exception */ | 1071 | /* trap exception */ |
1026 | if (notify_die(DIE_BPT, "breakpoint", regs, 5, 5, SIGTRAP) | 1072 | if (notify_die(DIE_BPT, "breakpoint", regs, 5, 5, SIGTRAP) |
1027 | == NOTIFY_STOP) | 1073 | == NOTIFY_STOP) |
1028 | return; | 1074 | goto bail; |
1029 | 1075 | ||
1030 | if (!(regs->msr & MSR_PR) && /* not user-mode */ | 1076 | if (!(regs->msr & MSR_PR) && /* not user-mode */ |
1031 | report_bug(regs->nip, regs) == BUG_TRAP_TYPE_WARN) { | 1077 | report_bug(regs->nip, regs) == BUG_TRAP_TYPE_WARN) { |
1032 | regs->nip += 4; | 1078 | regs->nip += 4; |
1033 | return; | 1079 | goto bail; |
1034 | } | 1080 | } |
1035 | _exception(SIGTRAP, regs, TRAP_BRKPT, regs->nip); | 1081 | _exception(SIGTRAP, regs, TRAP_BRKPT, regs->nip); |
1036 | return; | 1082 | goto bail; |
1037 | } | 1083 | } |
1038 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM | 1084 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM |
1039 | if (reason & REASON_TM) { | 1085 | if (reason & REASON_TM) { |
@@ -1049,7 +1095,7 @@ void __kprobes program_check_exception(struct pt_regs *regs) | |||
1049 | if (!user_mode(regs) && | 1095 | if (!user_mode(regs) && |
1050 | report_bug(regs->nip, regs) == BUG_TRAP_TYPE_WARN) { | 1096 | report_bug(regs->nip, regs) == BUG_TRAP_TYPE_WARN) { |
1051 | regs->nip += 4; | 1097 | regs->nip += 4; |
1052 | return; | 1098 | goto bail; |
1053 | } | 1099 | } |
1054 | /* If usermode caused this, it's done something illegal and | 1100 | /* If usermode caused this, it's done something illegal and |
1055 | * gets a SIGILL slap on the wrist. We call it an illegal | 1101 | * gets a SIGILL slap on the wrist. We call it an illegal |
@@ -1059,7 +1105,7 @@ void __kprobes program_check_exception(struct pt_regs *regs) | |||
1059 | */ | 1105 | */ |
1060 | if (user_mode(regs)) { | 1106 | if (user_mode(regs)) { |
1061 | _exception(SIGILL, regs, ILL_ILLOPN, regs->nip); | 1107 | _exception(SIGILL, regs, ILL_ILLOPN, regs->nip); |
1062 | return; | 1108 | goto bail; |
1063 | } else { | 1109 | } else { |
1064 | printk(KERN_EMERG "Unexpected TM Bad Thing exception " | 1110 | printk(KERN_EMERG "Unexpected TM Bad Thing exception " |
1065 | "at %lx (msr 0x%x)\n", regs->nip, reason); | 1111 | "at %lx (msr 0x%x)\n", regs->nip, reason); |
@@ -1083,16 +1129,16 @@ void __kprobes program_check_exception(struct pt_regs *regs) | |||
1083 | switch (do_mathemu(regs)) { | 1129 | switch (do_mathemu(regs)) { |
1084 | case 0: | 1130 | case 0: |
1085 | emulate_single_step(regs); | 1131 | emulate_single_step(regs); |
1086 | return; | 1132 | goto bail; |
1087 | case 1: { | 1133 | case 1: { |
1088 | int code = 0; | 1134 | int code = 0; |
1089 | code = __parse_fpscr(current->thread.fpscr.val); | 1135 | code = __parse_fpscr(current->thread.fpscr.val); |
1090 | _exception(SIGFPE, regs, code, regs->nip); | 1136 | _exception(SIGFPE, regs, code, regs->nip); |
1091 | return; | 1137 | goto bail; |
1092 | } | 1138 | } |
1093 | case -EFAULT: | 1139 | case -EFAULT: |
1094 | _exception(SIGSEGV, regs, SEGV_MAPERR, regs->nip); | 1140 | _exception(SIGSEGV, regs, SEGV_MAPERR, regs->nip); |
1095 | return; | 1141 | goto bail; |
1096 | } | 1142 | } |
1097 | /* fall through on any other errors */ | 1143 | /* fall through on any other errors */ |
1098 | #endif /* CONFIG_MATH_EMULATION */ | 1144 | #endif /* CONFIG_MATH_EMULATION */ |
@@ -1103,10 +1149,10 @@ void __kprobes program_check_exception(struct pt_regs *regs) | |||
1103 | case 0: | 1149 | case 0: |
1104 | regs->nip += 4; | 1150 | regs->nip += 4; |
1105 | emulate_single_step(regs); | 1151 | emulate_single_step(regs); |
1106 | return; | 1152 | goto bail; |
1107 | case -EFAULT: | 1153 | case -EFAULT: |
1108 | _exception(SIGSEGV, regs, SEGV_MAPERR, regs->nip); | 1154 | _exception(SIGSEGV, regs, SEGV_MAPERR, regs->nip); |
1109 | return; | 1155 | goto bail; |
1110 | } | 1156 | } |
1111 | } | 1157 | } |
1112 | 1158 | ||
@@ -1114,16 +1160,23 @@ void __kprobes program_check_exception(struct pt_regs *regs) | |||
1114 | _exception(SIGILL, regs, ILL_PRVOPC, regs->nip); | 1160 | _exception(SIGILL, regs, ILL_PRVOPC, regs->nip); |
1115 | else | 1161 | else |
1116 | _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); | 1162 | _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); |
1163 | |||
1164 | bail: | ||
1165 | exception_exit(prev_state); | ||
1117 | } | 1166 | } |
1118 | 1167 | ||
1119 | void alignment_exception(struct pt_regs *regs) | 1168 | void alignment_exception(struct pt_regs *regs) |
1120 | { | 1169 | { |
1170 | enum ctx_state prev_state = exception_enter(); | ||
1121 | int sig, code, fixed = 0; | 1171 | int sig, code, fixed = 0; |
1122 | 1172 | ||
1123 | /* We restore the interrupt state now */ | 1173 | /* We restore the interrupt state now */ |
1124 | if (!arch_irq_disabled_regs(regs)) | 1174 | if (!arch_irq_disabled_regs(regs)) |
1125 | local_irq_enable(); | 1175 | local_irq_enable(); |
1126 | 1176 | ||
1177 | if (tm_abort_check(regs, TM_CAUSE_ALIGNMENT | TM_CAUSE_PERSISTENT)) | ||
1178 | goto bail; | ||
1179 | |||
1127 | /* we don't implement logging of alignment exceptions */ | 1180 | /* we don't implement logging of alignment exceptions */ |
1128 | if (!(current->thread.align_ctl & PR_UNALIGN_SIGBUS)) | 1181 | if (!(current->thread.align_ctl & PR_UNALIGN_SIGBUS)) |
1129 | fixed = fix_alignment(regs); | 1182 | fixed = fix_alignment(regs); |
@@ -1131,7 +1184,7 @@ void alignment_exception(struct pt_regs *regs) | |||
1131 | if (fixed == 1) { | 1184 | if (fixed == 1) { |
1132 | regs->nip += 4; /* skip over emulated instruction */ | 1185 | regs->nip += 4; /* skip over emulated instruction */ |
1133 | emulate_single_step(regs); | 1186 | emulate_single_step(regs); |
1134 | return; | 1187 | goto bail; |
1135 | } | 1188 | } |
1136 | 1189 | ||
1137 | /* Operand address was bad */ | 1190 | /* Operand address was bad */ |
@@ -1146,6 +1199,9 @@ void alignment_exception(struct pt_regs *regs) | |||
1146 | _exception(sig, regs, code, regs->dar); | 1199 | _exception(sig, regs, code, regs->dar); |
1147 | else | 1200 | else |
1148 | bad_page_fault(regs, regs->dar, sig); | 1201 | bad_page_fault(regs, regs->dar, sig); |
1202 | |||
1203 | bail: | ||
1204 | exception_exit(prev_state); | ||
1149 | } | 1205 | } |
1150 | 1206 | ||
1151 | void StackOverflow(struct pt_regs *regs) | 1207 | void StackOverflow(struct pt_regs *regs) |
@@ -1174,23 +1230,32 @@ void trace_syscall(struct pt_regs *regs) | |||
1174 | 1230 | ||
1175 | void kernel_fp_unavailable_exception(struct pt_regs *regs) | 1231 | void kernel_fp_unavailable_exception(struct pt_regs *regs) |
1176 | { | 1232 | { |
1233 | enum ctx_state prev_state = exception_enter(); | ||
1234 | |||
1177 | printk(KERN_EMERG "Unrecoverable FP Unavailable Exception " | 1235 | printk(KERN_EMERG "Unrecoverable FP Unavailable Exception " |
1178 | "%lx at %lx\n", regs->trap, regs->nip); | 1236 | "%lx at %lx\n", regs->trap, regs->nip); |
1179 | die("Unrecoverable FP Unavailable Exception", regs, SIGABRT); | 1237 | die("Unrecoverable FP Unavailable Exception", regs, SIGABRT); |
1238 | |||
1239 | exception_exit(prev_state); | ||
1180 | } | 1240 | } |
1181 | 1241 | ||
1182 | void altivec_unavailable_exception(struct pt_regs *regs) | 1242 | void altivec_unavailable_exception(struct pt_regs *regs) |
1183 | { | 1243 | { |
1244 | enum ctx_state prev_state = exception_enter(); | ||
1245 | |||
1184 | if (user_mode(regs)) { | 1246 | if (user_mode(regs)) { |
1185 | /* A user program has executed an altivec instruction, | 1247 | /* A user program has executed an altivec instruction, |
1186 | but this kernel doesn't support altivec. */ | 1248 | but this kernel doesn't support altivec. */ |
1187 | _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); | 1249 | _exception(SIGILL, regs, ILL_ILLOPC, regs->nip); |
1188 | return; | 1250 | goto bail; |
1189 | } | 1251 | } |
1190 | 1252 | ||
1191 | printk(KERN_EMERG "Unrecoverable VMX/Altivec Unavailable Exception " | 1253 | printk(KERN_EMERG "Unrecoverable VMX/Altivec Unavailable Exception " |
1192 | "%lx at %lx\n", regs->trap, regs->nip); | 1254 | "%lx at %lx\n", regs->trap, regs->nip); |
1193 | die("Unrecoverable VMX/Altivec Unavailable Exception", regs, SIGABRT); | 1255 | die("Unrecoverable VMX/Altivec Unavailable Exception", regs, SIGABRT); |
1256 | |||
1257 | bail: | ||
1258 | exception_exit(prev_state); | ||
1194 | } | 1259 | } |
1195 | 1260 | ||
1196 | void vsx_unavailable_exception(struct pt_regs *regs) | 1261 | void vsx_unavailable_exception(struct pt_regs *regs) |
diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c index 13b867093499..9d3fdcd66290 100644 --- a/arch/powerpc/kernel/udbg.c +++ b/arch/powerpc/kernel/udbg.c | |||
@@ -64,6 +64,9 @@ void __init udbg_early_init(void) | |||
64 | udbg_init_usbgecko(); | 64 | udbg_init_usbgecko(); |
65 | #elif defined(CONFIG_PPC_EARLY_DEBUG_WSP) | 65 | #elif defined(CONFIG_PPC_EARLY_DEBUG_WSP) |
66 | udbg_init_wsp(); | 66 | udbg_init_wsp(); |
67 | #elif defined(CONFIG_PPC_EARLY_DEBUG_MEMCONS) | ||
68 | /* In memory console */ | ||
69 | udbg_init_memcons(); | ||
67 | #elif defined(CONFIG_PPC_EARLY_DEBUG_EHV_BC) | 70 | #elif defined(CONFIG_PPC_EARLY_DEBUG_EHV_BC) |
68 | udbg_init_ehv_bc(); | 71 | udbg_init_ehv_bc(); |
69 | #elif defined(CONFIG_PPC_EARLY_DEBUG_PS3GELIC) | 72 | #elif defined(CONFIG_PPC_EARLY_DEBUG_PS3GELIC) |
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index 9de24f8e03c7..550f5928b394 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c | |||
@@ -562,6 +562,8 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu) | |||
562 | case H_CPPR: | 562 | case H_CPPR: |
563 | case H_EOI: | 563 | case H_EOI: |
564 | case H_IPI: | 564 | case H_IPI: |
565 | case H_IPOLL: | ||
566 | case H_XIRR_X: | ||
565 | if (kvmppc_xics_enabled(vcpu)) { | 567 | if (kvmppc_xics_enabled(vcpu)) { |
566 | ret = kvmppc_xics_hcall(vcpu, req); | 568 | ret = kvmppc_xics_hcall(vcpu, req); |
567 | break; | 569 | break; |
diff --git a/arch/powerpc/kvm/book3s_pr_papr.c b/arch/powerpc/kvm/book3s_pr_papr.c index b24309c6c2d5..da0e0bc268bd 100644 --- a/arch/powerpc/kvm/book3s_pr_papr.c +++ b/arch/powerpc/kvm/book3s_pr_papr.c | |||
@@ -257,6 +257,8 @@ int kvmppc_h_pr(struct kvm_vcpu *vcpu, unsigned long cmd) | |||
257 | case H_CPPR: | 257 | case H_CPPR: |
258 | case H_EOI: | 258 | case H_EOI: |
259 | case H_IPI: | 259 | case H_IPI: |
260 | case H_IPOLL: | ||
261 | case H_XIRR_X: | ||
260 | if (kvmppc_xics_enabled(vcpu)) | 262 | if (kvmppc_xics_enabled(vcpu)) |
261 | return kvmppc_h_pr_xics_hcall(vcpu, cmd); | 263 | return kvmppc_h_pr_xics_hcall(vcpu, cmd); |
262 | break; | 264 | break; |
diff --git a/arch/powerpc/kvm/book3s_xics.c b/arch/powerpc/kvm/book3s_xics.c index f7a103756618..94c1dd46b83d 100644 --- a/arch/powerpc/kvm/book3s_xics.c +++ b/arch/powerpc/kvm/book3s_xics.c | |||
@@ -650,6 +650,23 @@ static noinline int kvmppc_h_ipi(struct kvm_vcpu *vcpu, unsigned long server, | |||
650 | return H_SUCCESS; | 650 | return H_SUCCESS; |
651 | } | 651 | } |
652 | 652 | ||
653 | static int kvmppc_h_ipoll(struct kvm_vcpu *vcpu, unsigned long server) | ||
654 | { | ||
655 | union kvmppc_icp_state state; | ||
656 | struct kvmppc_icp *icp; | ||
657 | |||
658 | icp = vcpu->arch.icp; | ||
659 | if (icp->server_num != server) { | ||
660 | icp = kvmppc_xics_find_server(vcpu->kvm, server); | ||
661 | if (!icp) | ||
662 | return H_PARAMETER; | ||
663 | } | ||
664 | state = ACCESS_ONCE(icp->state); | ||
665 | kvmppc_set_gpr(vcpu, 4, ((u32)state.cppr << 24) | state.xisr); | ||
666 | kvmppc_set_gpr(vcpu, 5, state.mfrr); | ||
667 | return H_SUCCESS; | ||
668 | } | ||
669 | |||
653 | static noinline void kvmppc_h_cppr(struct kvm_vcpu *vcpu, unsigned long cppr) | 670 | static noinline void kvmppc_h_cppr(struct kvm_vcpu *vcpu, unsigned long cppr) |
654 | { | 671 | { |
655 | union kvmppc_icp_state old_state, new_state; | 672 | union kvmppc_icp_state old_state, new_state; |
@@ -787,6 +804,18 @@ int kvmppc_xics_hcall(struct kvm_vcpu *vcpu, u32 req) | |||
787 | if (!xics || !vcpu->arch.icp) | 804 | if (!xics || !vcpu->arch.icp) |
788 | return H_HARDWARE; | 805 | return H_HARDWARE; |
789 | 806 | ||
807 | /* These requests don't have real-mode implementations at present */ | ||
808 | switch (req) { | ||
809 | case H_XIRR_X: | ||
810 | res = kvmppc_h_xirr(vcpu); | ||
811 | kvmppc_set_gpr(vcpu, 4, res); | ||
812 | kvmppc_set_gpr(vcpu, 5, get_tb()); | ||
813 | return rc; | ||
814 | case H_IPOLL: | ||
815 | rc = kvmppc_h_ipoll(vcpu, kvmppc_get_gpr(vcpu, 4)); | ||
816 | return rc; | ||
817 | } | ||
818 | |||
790 | /* Check for real mode returning too hard */ | 819 | /* Check for real mode returning too hard */ |
791 | if (xics->real_mode) | 820 | if (xics->real_mode) |
792 | return kvmppc_xics_rm_complete(vcpu, req); | 821 | return kvmppc_xics_rm_complete(vcpu, req); |
diff --git a/arch/powerpc/lib/copypage_power7.S b/arch/powerpc/lib/copypage_power7.S index 0ef75bf0695c..395c594722a2 100644 --- a/arch/powerpc/lib/copypage_power7.S +++ b/arch/powerpc/lib/copypage_power7.S | |||
@@ -28,13 +28,14 @@ _GLOBAL(copypage_power7) | |||
28 | * aligned we don't need to clear the bottom 7 bits of either | 28 | * aligned we don't need to clear the bottom 7 bits of either |
29 | * address. | 29 | * address. |
30 | */ | 30 | */ |
31 | ori r9,r3,1 /* stream=1 */ | 31 | ori r9,r3,1 /* stream=1 => to */ |
32 | 32 | ||
33 | #ifdef CONFIG_PPC_64K_PAGES | 33 | #ifdef CONFIG_PPC_64K_PAGES |
34 | lis r7,0x0E01 /* depth=7, units=512 */ | 34 | lis r7,0x0E01 /* depth=7 |
35 | * units/cachelines=512 */ | ||
35 | #else | 36 | #else |
36 | lis r7,0x0E00 /* depth=7 */ | 37 | lis r7,0x0E00 /* depth=7 */ |
37 | ori r7,r7,0x1000 /* units=32 */ | 38 | ori r7,r7,0x1000 /* units/cachelines=32 */ |
38 | #endif | 39 | #endif |
39 | ori r10,r7,1 /* stream=1 */ | 40 | ori r10,r7,1 /* stream=1 */ |
40 | 41 | ||
@@ -43,12 +44,14 @@ _GLOBAL(copypage_power7) | |||
43 | 44 | ||
44 | .machine push | 45 | .machine push |
45 | .machine "power4" | 46 | .machine "power4" |
46 | dcbt r0,r4,0b01000 | 47 | /* setup read stream 0 */ |
47 | dcbt r0,r7,0b01010 | 48 | dcbt r0,r4,0b01000 /* addr from */ |
48 | dcbtst r0,r9,0b01000 | 49 | dcbt r0,r7,0b01010 /* length and depth from */ |
49 | dcbtst r0,r10,0b01010 | 50 | /* setup write stream 1 */ |
51 | dcbtst r0,r9,0b01000 /* addr to */ | ||
52 | dcbtst r0,r10,0b01010 /* length and depth to */ | ||
50 | eieio | 53 | eieio |
51 | dcbt r0,r8,0b01010 /* GO */ | 54 | dcbt r0,r8,0b01010 /* all streams GO */ |
52 | .machine pop | 55 | .machine pop |
53 | 56 | ||
54 | #ifdef CONFIG_ALTIVEC | 57 | #ifdef CONFIG_ALTIVEC |
diff --git a/arch/powerpc/lib/copyuser_power7.S b/arch/powerpc/lib/copyuser_power7.S index 0d24ff15f5f6..d1f11795a7ad 100644 --- a/arch/powerpc/lib/copyuser_power7.S +++ b/arch/powerpc/lib/copyuser_power7.S | |||
@@ -318,12 +318,14 @@ err1; stb r0,0(r3) | |||
318 | 318 | ||
319 | .machine push | 319 | .machine push |
320 | .machine "power4" | 320 | .machine "power4" |
321 | dcbt r0,r6,0b01000 | 321 | /* setup read stream 0 */ |
322 | dcbt r0,r7,0b01010 | 322 | dcbt r0,r6,0b01000 /* addr from */ |
323 | dcbtst r0,r9,0b01000 | 323 | dcbt r0,r7,0b01010 /* length and depth from */ |
324 | dcbtst r0,r10,0b01010 | 324 | /* setup write stream 1 */ |
325 | dcbtst r0,r9,0b01000 /* addr to */ | ||
326 | dcbtst r0,r10,0b01010 /* length and depth to */ | ||
325 | eieio | 327 | eieio |
326 | dcbt r0,r8,0b01010 /* GO */ | 328 | dcbt r0,r8,0b01010 /* all streams GO */ |
327 | .machine pop | 329 | .machine pop |
328 | 330 | ||
329 | beq cr1,.Lunwind_stack_nonvmx_copy | 331 | beq cr1,.Lunwind_stack_nonvmx_copy |
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 229951ffc351..8726779e1409 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/perf_event.h> | 32 | #include <linux/perf_event.h> |
33 | #include <linux/magic.h> | 33 | #include <linux/magic.h> |
34 | #include <linux/ratelimit.h> | 34 | #include <linux/ratelimit.h> |
35 | #include <linux/context_tracking.h> | ||
35 | 36 | ||
36 | #include <asm/firmware.h> | 37 | #include <asm/firmware.h> |
37 | #include <asm/page.h> | 38 | #include <asm/page.h> |
@@ -196,6 +197,7 @@ static int mm_fault_error(struct pt_regs *regs, unsigned long addr, int fault) | |||
196 | int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, | 197 | int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, |
197 | unsigned long error_code) | 198 | unsigned long error_code) |
198 | { | 199 | { |
200 | enum ctx_state prev_state = exception_enter(); | ||
199 | struct vm_area_struct * vma; | 201 | struct vm_area_struct * vma; |
200 | struct mm_struct *mm = current->mm; | 202 | struct mm_struct *mm = current->mm; |
201 | unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; | 203 | unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; |
@@ -204,6 +206,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, | |||
204 | int trap = TRAP(regs); | 206 | int trap = TRAP(regs); |
205 | int is_exec = trap == 0x400; | 207 | int is_exec = trap == 0x400; |
206 | int fault; | 208 | int fault; |
209 | int rc = 0; | ||
207 | 210 | ||
208 | #if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE)) | 211 | #if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE)) |
209 | /* | 212 | /* |
@@ -230,28 +233,30 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, | |||
230 | * look at it | 233 | * look at it |
231 | */ | 234 | */ |
232 | if (error_code & ICSWX_DSI_UCT) { | 235 | if (error_code & ICSWX_DSI_UCT) { |
233 | int rc = acop_handle_fault(regs, address, error_code); | 236 | rc = acop_handle_fault(regs, address, error_code); |
234 | if (rc) | 237 | if (rc) |
235 | return rc; | 238 | goto bail; |
236 | } | 239 | } |
237 | #endif /* CONFIG_PPC_ICSWX */ | 240 | #endif /* CONFIG_PPC_ICSWX */ |
238 | 241 | ||
239 | if (notify_page_fault(regs)) | 242 | if (notify_page_fault(regs)) |
240 | return 0; | 243 | goto bail; |
241 | 244 | ||
242 | if (unlikely(debugger_fault_handler(regs))) | 245 | if (unlikely(debugger_fault_handler(regs))) |
243 | return 0; | 246 | goto bail; |
244 | 247 | ||
245 | /* On a kernel SLB miss we can only check for a valid exception entry */ | 248 | /* On a kernel SLB miss we can only check for a valid exception entry */ |
246 | if (!user_mode(regs) && (address >= TASK_SIZE)) | 249 | if (!user_mode(regs) && (address >= TASK_SIZE)) { |
247 | return SIGSEGV; | 250 | rc = SIGSEGV; |
251 | goto bail; | ||
252 | } | ||
248 | 253 | ||
249 | #if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE) || \ | 254 | #if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE) || \ |
250 | defined(CONFIG_PPC_BOOK3S_64)) | 255 | defined(CONFIG_PPC_BOOK3S_64)) |
251 | if (error_code & DSISR_DABRMATCH) { | 256 | if (error_code & DSISR_DABRMATCH) { |
252 | /* breakpoint match */ | 257 | /* breakpoint match */ |
253 | do_break(regs, address, error_code); | 258 | do_break(regs, address, error_code); |
254 | return 0; | 259 | goto bail; |
255 | } | 260 | } |
256 | #endif | 261 | #endif |
257 | 262 | ||
@@ -260,8 +265,10 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, | |||
260 | local_irq_enable(); | 265 | local_irq_enable(); |
261 | 266 | ||
262 | if (in_atomic() || mm == NULL) { | 267 | if (in_atomic() || mm == NULL) { |
263 | if (!user_mode(regs)) | 268 | if (!user_mode(regs)) { |
264 | return SIGSEGV; | 269 | rc = SIGSEGV; |
270 | goto bail; | ||
271 | } | ||
265 | /* in_atomic() in user mode is really bad, | 272 | /* in_atomic() in user mode is really bad, |
266 | as is current->mm == NULL. */ | 273 | as is current->mm == NULL. */ |
267 | printk(KERN_EMERG "Page fault in user mode with " | 274 | printk(KERN_EMERG "Page fault in user mode with " |
@@ -417,9 +424,11 @@ good_area: | |||
417 | */ | 424 | */ |
418 | fault = handle_mm_fault(mm, vma, address, flags); | 425 | fault = handle_mm_fault(mm, vma, address, flags); |
419 | if (unlikely(fault & (VM_FAULT_RETRY|VM_FAULT_ERROR))) { | 426 | if (unlikely(fault & (VM_FAULT_RETRY|VM_FAULT_ERROR))) { |
420 | int rc = mm_fault_error(regs, address, fault); | 427 | rc = mm_fault_error(regs, address, fault); |
421 | if (rc >= MM_FAULT_RETURN) | 428 | if (rc >= MM_FAULT_RETURN) |
422 | return rc; | 429 | goto bail; |
430 | else | ||
431 | rc = 0; | ||
423 | } | 432 | } |
424 | 433 | ||
425 | /* | 434 | /* |
@@ -454,7 +463,7 @@ good_area: | |||
454 | } | 463 | } |
455 | 464 | ||
456 | up_read(&mm->mmap_sem); | 465 | up_read(&mm->mmap_sem); |
457 | return 0; | 466 | goto bail; |
458 | 467 | ||
459 | bad_area: | 468 | bad_area: |
460 | up_read(&mm->mmap_sem); | 469 | up_read(&mm->mmap_sem); |
@@ -463,7 +472,7 @@ bad_area_nosemaphore: | |||
463 | /* User mode accesses cause a SIGSEGV */ | 472 | /* User mode accesses cause a SIGSEGV */ |
464 | if (user_mode(regs)) { | 473 | if (user_mode(regs)) { |
465 | _exception(SIGSEGV, regs, code, address); | 474 | _exception(SIGSEGV, regs, code, address); |
466 | return 0; | 475 | goto bail; |
467 | } | 476 | } |
468 | 477 | ||
469 | if (is_exec && (error_code & DSISR_PROTFAULT)) | 478 | if (is_exec && (error_code & DSISR_PROTFAULT)) |
@@ -471,7 +480,11 @@ bad_area_nosemaphore: | |||
471 | " page (%lx) - exploit attempt? (uid: %d)\n", | 480 | " page (%lx) - exploit attempt? (uid: %d)\n", |
472 | address, from_kuid(&init_user_ns, current_uid())); | 481 | address, from_kuid(&init_user_ns, current_uid())); |
473 | 482 | ||
474 | return SIGSEGV; | 483 | rc = SIGSEGV; |
484 | |||
485 | bail: | ||
486 | exception_exit(prev_state); | ||
487 | return rc; | ||
475 | 488 | ||
476 | } | 489 | } |
477 | 490 | ||
diff --git a/arch/powerpc/mm/hash_native_64.c b/arch/powerpc/mm/hash_native_64.c index 6a2aead5b0e5..4c122c3f1623 100644 --- a/arch/powerpc/mm/hash_native_64.c +++ b/arch/powerpc/mm/hash_native_64.c | |||
@@ -336,11 +336,18 @@ static long native_hpte_updatepp(unsigned long slot, unsigned long newpp, | |||
336 | 336 | ||
337 | hpte_v = hptep->v; | 337 | hpte_v = hptep->v; |
338 | actual_psize = hpte_actual_psize(hptep, psize); | 338 | actual_psize = hpte_actual_psize(hptep, psize); |
339 | /* | ||
340 | * We need to invalidate the TLB always because hpte_remove doesn't do | ||
341 | * a tlb invalidate. If a hash bucket gets full, we "evict" a more/less | ||
342 | * random entry from it. When we do that we don't invalidate the TLB | ||
343 | * (hpte_remove) because we assume the old translation is still | ||
344 | * technically "valid". | ||
345 | */ | ||
339 | if (actual_psize < 0) { | 346 | if (actual_psize < 0) { |
340 | native_unlock_hpte(hptep); | 347 | actual_psize = psize; |
341 | return -1; | 348 | ret = -1; |
349 | goto err_out; | ||
342 | } | 350 | } |
343 | /* Even if we miss, we need to invalidate the TLB */ | ||
344 | if (!HPTE_V_COMPARE(hpte_v, want_v)) { | 351 | if (!HPTE_V_COMPARE(hpte_v, want_v)) { |
345 | DBG_LOW(" -> miss\n"); | 352 | DBG_LOW(" -> miss\n"); |
346 | ret = -1; | 353 | ret = -1; |
@@ -350,6 +357,7 @@ static long native_hpte_updatepp(unsigned long slot, unsigned long newpp, | |||
350 | hptep->r = (hptep->r & ~(HPTE_R_PP | HPTE_R_N)) | | 357 | hptep->r = (hptep->r & ~(HPTE_R_PP | HPTE_R_N)) | |
351 | (newpp & (HPTE_R_PP | HPTE_R_N | HPTE_R_C)); | 358 | (newpp & (HPTE_R_PP | HPTE_R_N | HPTE_R_C)); |
352 | } | 359 | } |
360 | err_out: | ||
353 | native_unlock_hpte(hptep); | 361 | native_unlock_hpte(hptep); |
354 | 362 | ||
355 | /* Ensure it is out of the tlb too. */ | 363 | /* Ensure it is out of the tlb too. */ |
@@ -409,7 +417,7 @@ static void native_hpte_updateboltedpp(unsigned long newpp, unsigned long ea, | |||
409 | hptep = htab_address + slot; | 417 | hptep = htab_address + slot; |
410 | actual_psize = hpte_actual_psize(hptep, psize); | 418 | actual_psize = hpte_actual_psize(hptep, psize); |
411 | if (actual_psize < 0) | 419 | if (actual_psize < 0) |
412 | return; | 420 | actual_psize = psize; |
413 | 421 | ||
414 | /* Update the HPTE */ | 422 | /* Update the HPTE */ |
415 | hptep->r = (hptep->r & ~(HPTE_R_PP | HPTE_R_N)) | | 423 | hptep->r = (hptep->r & ~(HPTE_R_PP | HPTE_R_N)) | |
@@ -437,21 +445,27 @@ static void native_hpte_invalidate(unsigned long slot, unsigned long vpn, | |||
437 | hpte_v = hptep->v; | 445 | hpte_v = hptep->v; |
438 | 446 | ||
439 | actual_psize = hpte_actual_psize(hptep, psize); | 447 | actual_psize = hpte_actual_psize(hptep, psize); |
448 | /* | ||
449 | * We need to invalidate the TLB always because hpte_remove doesn't do | ||
450 | * a tlb invalidate. If a hash bucket gets full, we "evict" a more/less | ||
451 | * random entry from it. When we do that we don't invalidate the TLB | ||
452 | * (hpte_remove) because we assume the old translation is still | ||
453 | * technically "valid". | ||
454 | */ | ||
440 | if (actual_psize < 0) { | 455 | if (actual_psize < 0) { |
456 | actual_psize = psize; | ||
441 | native_unlock_hpte(hptep); | 457 | native_unlock_hpte(hptep); |
442 | local_irq_restore(flags); | 458 | goto err_out; |
443 | return; | ||
444 | } | 459 | } |
445 | /* Even if we miss, we need to invalidate the TLB */ | ||
446 | if (!HPTE_V_COMPARE(hpte_v, want_v)) | 460 | if (!HPTE_V_COMPARE(hpte_v, want_v)) |
447 | native_unlock_hpte(hptep); | 461 | native_unlock_hpte(hptep); |
448 | else | 462 | else |
449 | /* Invalidate the hpte. NOTE: this also unlocks it */ | 463 | /* Invalidate the hpte. NOTE: this also unlocks it */ |
450 | hptep->v = 0; | 464 | hptep->v = 0; |
451 | 465 | ||
466 | err_out: | ||
452 | /* Invalidate the TLB */ | 467 | /* Invalidate the TLB */ |
453 | tlbie(vpn, psize, actual_psize, ssize, local); | 468 | tlbie(vpn, psize, actual_psize, ssize, local); |
454 | |||
455 | local_irq_restore(flags); | 469 | local_irq_restore(flags); |
456 | } | 470 | } |
457 | 471 | ||
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 88ac0eeaadde..e303a6d74e3a 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/init.h> | 33 | #include <linux/init.h> |
34 | #include <linux/signal.h> | 34 | #include <linux/signal.h> |
35 | #include <linux/memblock.h> | 35 | #include <linux/memblock.h> |
36 | #include <linux/context_tracking.h> | ||
36 | 37 | ||
37 | #include <asm/processor.h> | 38 | #include <asm/processor.h> |
38 | #include <asm/pgtable.h> | 39 | #include <asm/pgtable.h> |
@@ -954,6 +955,7 @@ void hash_failure_debug(unsigned long ea, unsigned long access, | |||
954 | */ | 955 | */ |
955 | int hash_page(unsigned long ea, unsigned long access, unsigned long trap) | 956 | int hash_page(unsigned long ea, unsigned long access, unsigned long trap) |
956 | { | 957 | { |
958 | enum ctx_state prev_state = exception_enter(); | ||
957 | pgd_t *pgdir; | 959 | pgd_t *pgdir; |
958 | unsigned long vsid; | 960 | unsigned long vsid; |
959 | struct mm_struct *mm; | 961 | struct mm_struct *mm; |
@@ -973,7 +975,8 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap) | |||
973 | mm = current->mm; | 975 | mm = current->mm; |
974 | if (! mm) { | 976 | if (! mm) { |
975 | DBG_LOW(" user region with no mm !\n"); | 977 | DBG_LOW(" user region with no mm !\n"); |
976 | return 1; | 978 | rc = 1; |
979 | goto bail; | ||
977 | } | 980 | } |
978 | psize = get_slice_psize(mm, ea); | 981 | psize = get_slice_psize(mm, ea); |
979 | ssize = user_segment_size(ea); | 982 | ssize = user_segment_size(ea); |
@@ -992,19 +995,23 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap) | |||
992 | /* Not a valid range | 995 | /* Not a valid range |
993 | * Send the problem up to do_page_fault | 996 | * Send the problem up to do_page_fault |
994 | */ | 997 | */ |
995 | return 1; | 998 | rc = 1; |
999 | goto bail; | ||
996 | } | 1000 | } |
997 | DBG_LOW(" mm=%p, mm->pgdir=%p, vsid=%016lx\n", mm, mm->pgd, vsid); | 1001 | DBG_LOW(" mm=%p, mm->pgdir=%p, vsid=%016lx\n", mm, mm->pgd, vsid); |
998 | 1002 | ||
999 | /* Bad address. */ | 1003 | /* Bad address. */ |
1000 | if (!vsid) { | 1004 | if (!vsid) { |
1001 | DBG_LOW("Bad address!\n"); | 1005 | DBG_LOW("Bad address!\n"); |
1002 | return 1; | 1006 | rc = 1; |
1007 | goto bail; | ||
1003 | } | 1008 | } |
1004 | /* Get pgdir */ | 1009 | /* Get pgdir */ |
1005 | pgdir = mm->pgd; | 1010 | pgdir = mm->pgd; |
1006 | if (pgdir == NULL) | 1011 | if (pgdir == NULL) { |
1007 | return 1; | 1012 | rc = 1; |
1013 | goto bail; | ||
1014 | } | ||
1008 | 1015 | ||
1009 | /* Check CPU locality */ | 1016 | /* Check CPU locality */ |
1010 | tmp = cpumask_of(smp_processor_id()); | 1017 | tmp = cpumask_of(smp_processor_id()); |
@@ -1027,7 +1034,8 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap) | |||
1027 | ptep = find_linux_pte_or_hugepte(pgdir, ea, &hugeshift); | 1034 | ptep = find_linux_pte_or_hugepte(pgdir, ea, &hugeshift); |
1028 | if (ptep == NULL || !pte_present(*ptep)) { | 1035 | if (ptep == NULL || !pte_present(*ptep)) { |
1029 | DBG_LOW(" no PTE !\n"); | 1036 | DBG_LOW(" no PTE !\n"); |
1030 | return 1; | 1037 | rc = 1; |
1038 | goto bail; | ||
1031 | } | 1039 | } |
1032 | 1040 | ||
1033 | /* Add _PAGE_PRESENT to the required access perm */ | 1041 | /* Add _PAGE_PRESENT to the required access perm */ |
@@ -1038,13 +1046,16 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap) | |||
1038 | */ | 1046 | */ |
1039 | if (access & ~pte_val(*ptep)) { | 1047 | if (access & ~pte_val(*ptep)) { |
1040 | DBG_LOW(" no access !\n"); | 1048 | DBG_LOW(" no access !\n"); |
1041 | return 1; | 1049 | rc = 1; |
1050 | goto bail; | ||
1042 | } | 1051 | } |
1043 | 1052 | ||
1044 | #ifdef CONFIG_HUGETLB_PAGE | 1053 | #ifdef CONFIG_HUGETLB_PAGE |
1045 | if (hugeshift) | 1054 | if (hugeshift) { |
1046 | return __hash_page_huge(ea, access, vsid, ptep, trap, local, | 1055 | rc = __hash_page_huge(ea, access, vsid, ptep, trap, local, |
1047 | ssize, hugeshift, psize); | 1056 | ssize, hugeshift, psize); |
1057 | goto bail; | ||
1058 | } | ||
1048 | #endif /* CONFIG_HUGETLB_PAGE */ | 1059 | #endif /* CONFIG_HUGETLB_PAGE */ |
1049 | 1060 | ||
1050 | #ifndef CONFIG_PPC_64K_PAGES | 1061 | #ifndef CONFIG_PPC_64K_PAGES |
@@ -1124,6 +1135,9 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap) | |||
1124 | pte_val(*(ptep + PTRS_PER_PTE))); | 1135 | pte_val(*(ptep + PTRS_PER_PTE))); |
1125 | #endif | 1136 | #endif |
1126 | DBG_LOW(" -> rc=%d\n", rc); | 1137 | DBG_LOW(" -> rc=%d\n", rc); |
1138 | |||
1139 | bail: | ||
1140 | exception_exit(prev_state); | ||
1127 | return rc; | 1141 | return rc; |
1128 | } | 1142 | } |
1129 | EXPORT_SYMBOL_GPL(hash_page); | 1143 | EXPORT_SYMBOL_GPL(hash_page); |
@@ -1259,6 +1273,8 @@ void flush_hash_range(unsigned long number, int local) | |||
1259 | */ | 1273 | */ |
1260 | void low_hash_fault(struct pt_regs *regs, unsigned long address, int rc) | 1274 | void low_hash_fault(struct pt_regs *regs, unsigned long address, int rc) |
1261 | { | 1275 | { |
1276 | enum ctx_state prev_state = exception_enter(); | ||
1277 | |||
1262 | if (user_mode(regs)) { | 1278 | if (user_mode(regs)) { |
1263 | #ifdef CONFIG_PPC_SUBPAGE_PROT | 1279 | #ifdef CONFIG_PPC_SUBPAGE_PROT |
1264 | if (rc == -2) | 1280 | if (rc == -2) |
@@ -1268,6 +1284,8 @@ void low_hash_fault(struct pt_regs *regs, unsigned long address, int rc) | |||
1268 | _exception(SIGBUS, regs, BUS_ADRERR, address); | 1284 | _exception(SIGBUS, regs, BUS_ADRERR, address); |
1269 | } else | 1285 | } else |
1270 | bad_page_fault(regs, address, SIGBUS); | 1286 | bad_page_fault(regs, address, SIGBUS); |
1287 | |||
1288 | exception_exit(prev_state); | ||
1271 | } | 1289 | } |
1272 | 1290 | ||
1273 | long hpte_insert_repeating(unsigned long hash, unsigned long vpn, | 1291 | long hpte_insert_repeating(unsigned long hash, unsigned long vpn, |
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index c2787bf779ca..a90b9c458990 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -215,7 +215,8 @@ static void __meminit vmemmap_create_mapping(unsigned long start, | |||
215 | unsigned long phys) | 215 | unsigned long phys) |
216 | { | 216 | { |
217 | int mapped = htab_bolt_mapping(start, start + page_size, phys, | 217 | int mapped = htab_bolt_mapping(start, start + page_size, phys, |
218 | PAGE_KERNEL, mmu_vmemmap_psize, | 218 | pgprot_val(PAGE_KERNEL), |
219 | mmu_vmemmap_psize, | ||
219 | mmu_kernel_ssize); | 220 | mmu_kernel_ssize); |
220 | BUG_ON(mapped < 0); | 221 | BUG_ON(mapped < 0); |
221 | } | 222 | } |
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c index c627843c5b2e..845c867444e6 100644 --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c | |||
@@ -13,11 +13,13 @@ | |||
13 | #include <linux/perf_event.h> | 13 | #include <linux/perf_event.h> |
14 | #include <linux/percpu.h> | 14 | #include <linux/percpu.h> |
15 | #include <linux/hardirq.h> | 15 | #include <linux/hardirq.h> |
16 | #include <linux/uaccess.h> | ||
16 | #include <asm/reg.h> | 17 | #include <asm/reg.h> |
17 | #include <asm/pmc.h> | 18 | #include <asm/pmc.h> |
18 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
19 | #include <asm/firmware.h> | 20 | #include <asm/firmware.h> |
20 | #include <asm/ptrace.h> | 21 | #include <asm/ptrace.h> |
22 | #include <asm/code-patching.h> | ||
21 | 23 | ||
22 | #define BHRB_MAX_ENTRIES 32 | 24 | #define BHRB_MAX_ENTRIES 32 |
23 | #define BHRB_TARGET 0x0000000000000002 | 25 | #define BHRB_TARGET 0x0000000000000002 |
@@ -100,11 +102,15 @@ static inline int siar_valid(struct pt_regs *regs) | |||
100 | return 1; | 102 | return 1; |
101 | } | 103 | } |
102 | 104 | ||
105 | static inline void power_pmu_bhrb_enable(struct perf_event *event) {} | ||
106 | static inline void power_pmu_bhrb_disable(struct perf_event *event) {} | ||
107 | void power_pmu_flush_branch_stack(void) {} | ||
108 | static inline void power_pmu_bhrb_read(struct cpu_hw_events *cpuhw) {} | ||
103 | #endif /* CONFIG_PPC32 */ | 109 | #endif /* CONFIG_PPC32 */ |
104 | 110 | ||
105 | static bool regs_use_siar(struct pt_regs *regs) | 111 | static bool regs_use_siar(struct pt_regs *regs) |
106 | { | 112 | { |
107 | return !!(regs->result & 1); | 113 | return !!regs->result; |
108 | } | 114 | } |
109 | 115 | ||
110 | /* | 116 | /* |
@@ -130,22 +136,30 @@ static inline unsigned long perf_ip_adjust(struct pt_regs *regs) | |||
130 | * If we're not doing instruction sampling, give them the SDAR | 136 | * If we're not doing instruction sampling, give them the SDAR |
131 | * (sampled data address). If we are doing instruction sampling, then | 137 | * (sampled data address). If we are doing instruction sampling, then |
132 | * only give them the SDAR if it corresponds to the instruction | 138 | * only give them the SDAR if it corresponds to the instruction |
133 | * pointed to by SIAR; this is indicated by the [POWER6_]MMCRA_SDSYNC or | 139 | * pointed to by SIAR; this is indicated by the [POWER6_]MMCRA_SDSYNC, the |
134 | * the [POWER7P_]MMCRA_SDAR_VALID bit in MMCRA. | 140 | * [POWER7P_]MMCRA_SDAR_VALID bit in MMCRA, or the SDAR_VALID bit in SIER. |
135 | */ | 141 | */ |
136 | static inline void perf_get_data_addr(struct pt_regs *regs, u64 *addrp) | 142 | static inline void perf_get_data_addr(struct pt_regs *regs, u64 *addrp) |
137 | { | 143 | { |
138 | unsigned long mmcra = regs->dsisr; | 144 | unsigned long mmcra = regs->dsisr; |
139 | unsigned long sdsync; | 145 | bool sdar_valid; |
140 | 146 | ||
141 | if (ppmu->flags & PPMU_SIAR_VALID) | 147 | if (ppmu->flags & PPMU_HAS_SIER) |
142 | sdsync = POWER7P_MMCRA_SDAR_VALID; | 148 | sdar_valid = regs->dar & SIER_SDAR_VALID; |
143 | else if (ppmu->flags & PPMU_ALT_SIPR) | 149 | else { |
144 | sdsync = POWER6_MMCRA_SDSYNC; | 150 | unsigned long sdsync; |
145 | else | 151 | |
146 | sdsync = MMCRA_SDSYNC; | 152 | if (ppmu->flags & PPMU_SIAR_VALID) |
153 | sdsync = POWER7P_MMCRA_SDAR_VALID; | ||
154 | else if (ppmu->flags & PPMU_ALT_SIPR) | ||
155 | sdsync = POWER6_MMCRA_SDSYNC; | ||
156 | else | ||
157 | sdsync = MMCRA_SDSYNC; | ||
147 | 158 | ||
148 | if (!(mmcra & MMCRA_SAMPLE_ENABLE) || (mmcra & sdsync)) | 159 | sdar_valid = mmcra & sdsync; |
160 | } | ||
161 | |||
162 | if (!(mmcra & MMCRA_SAMPLE_ENABLE) || sdar_valid) | ||
149 | *addrp = mfspr(SPRN_SDAR); | 163 | *addrp = mfspr(SPRN_SDAR); |
150 | } | 164 | } |
151 | 165 | ||
@@ -175,11 +189,6 @@ static bool regs_sipr(struct pt_regs *regs) | |||
175 | return !!(regs->dsisr & sipr); | 189 | return !!(regs->dsisr & sipr); |
176 | } | 190 | } |
177 | 191 | ||
178 | static bool regs_no_sipr(struct pt_regs *regs) | ||
179 | { | ||
180 | return !!(regs->result & 2); | ||
181 | } | ||
182 | |||
183 | static inline u32 perf_flags_from_msr(struct pt_regs *regs) | 192 | static inline u32 perf_flags_from_msr(struct pt_regs *regs) |
184 | { | 193 | { |
185 | if (regs->msr & MSR_PR) | 194 | if (regs->msr & MSR_PR) |
@@ -202,7 +211,7 @@ static inline u32 perf_get_misc_flags(struct pt_regs *regs) | |||
202 | * SIAR which should give slightly more reliable | 211 | * SIAR which should give slightly more reliable |
203 | * results | 212 | * results |
204 | */ | 213 | */ |
205 | if (regs_no_sipr(regs)) { | 214 | if (ppmu->flags & PPMU_NO_SIPR) { |
206 | unsigned long siar = mfspr(SPRN_SIAR); | 215 | unsigned long siar = mfspr(SPRN_SIAR); |
207 | if (siar >= PAGE_OFFSET) | 216 | if (siar >= PAGE_OFFSET) |
208 | return PERF_RECORD_MISC_KERNEL; | 217 | return PERF_RECORD_MISC_KERNEL; |
@@ -233,22 +242,9 @@ static inline void perf_read_regs(struct pt_regs *regs) | |||
233 | int use_siar; | 242 | int use_siar; |
234 | 243 | ||
235 | regs->dsisr = mmcra; | 244 | regs->dsisr = mmcra; |
236 | regs->result = 0; | ||
237 | |||
238 | if (ppmu->flags & PPMU_NO_SIPR) | ||
239 | regs->result |= 2; | ||
240 | |||
241 | /* | ||
242 | * On power8 if we're in random sampling mode, the SIER is updated. | ||
243 | * If we're in continuous sampling mode, we don't have SIPR. | ||
244 | */ | ||
245 | if (ppmu->flags & PPMU_HAS_SIER) { | ||
246 | if (marked) | ||
247 | regs->dar = mfspr(SPRN_SIER); | ||
248 | else | ||
249 | regs->result |= 2; | ||
250 | } | ||
251 | 245 | ||
246 | if (ppmu->flags & PPMU_HAS_SIER) | ||
247 | regs->dar = mfspr(SPRN_SIER); | ||
252 | 248 | ||
253 | /* | 249 | /* |
254 | * If this isn't a PMU exception (eg a software event) the SIAR is | 250 | * If this isn't a PMU exception (eg a software event) the SIAR is |
@@ -273,12 +269,12 @@ static inline void perf_read_regs(struct pt_regs *regs) | |||
273 | use_siar = 1; | 269 | use_siar = 1; |
274 | else if ((ppmu->flags & PPMU_NO_CONT_SAMPLING)) | 270 | else if ((ppmu->flags & PPMU_NO_CONT_SAMPLING)) |
275 | use_siar = 0; | 271 | use_siar = 0; |
276 | else if (!regs_no_sipr(regs) && regs_sipr(regs)) | 272 | else if (!(ppmu->flags & PPMU_NO_SIPR) && regs_sipr(regs)) |
277 | use_siar = 0; | 273 | use_siar = 0; |
278 | else | 274 | else |
279 | use_siar = 1; | 275 | use_siar = 1; |
280 | 276 | ||
281 | regs->result |= use_siar; | 277 | regs->result = use_siar; |
282 | } | 278 | } |
283 | 279 | ||
284 | /* | 280 | /* |
@@ -302,12 +298,170 @@ static inline int siar_valid(struct pt_regs *regs) | |||
302 | unsigned long mmcra = regs->dsisr; | 298 | unsigned long mmcra = regs->dsisr; |
303 | int marked = mmcra & MMCRA_SAMPLE_ENABLE; | 299 | int marked = mmcra & MMCRA_SAMPLE_ENABLE; |
304 | 300 | ||
305 | if ((ppmu->flags & PPMU_SIAR_VALID) && marked) | 301 | if (marked) { |
306 | return mmcra & POWER7P_MMCRA_SIAR_VALID; | 302 | if (ppmu->flags & PPMU_HAS_SIER) |
303 | return regs->dar & SIER_SIAR_VALID; | ||
304 | |||
305 | if (ppmu->flags & PPMU_SIAR_VALID) | ||
306 | return mmcra & POWER7P_MMCRA_SIAR_VALID; | ||
307 | } | ||
307 | 308 | ||
308 | return 1; | 309 | return 1; |
309 | } | 310 | } |
310 | 311 | ||
312 | |||
313 | /* Reset all possible BHRB entries */ | ||
314 | static void power_pmu_bhrb_reset(void) | ||
315 | { | ||
316 | asm volatile(PPC_CLRBHRB); | ||
317 | } | ||
318 | |||
319 | static void power_pmu_bhrb_enable(struct perf_event *event) | ||
320 | { | ||
321 | struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events); | ||
322 | |||
323 | if (!ppmu->bhrb_nr) | ||
324 | return; | ||
325 | |||
326 | /* Clear BHRB if we changed task context to avoid data leaks */ | ||
327 | if (event->ctx->task && cpuhw->bhrb_context != event->ctx) { | ||
328 | power_pmu_bhrb_reset(); | ||
329 | cpuhw->bhrb_context = event->ctx; | ||
330 | } | ||
331 | cpuhw->bhrb_users++; | ||
332 | } | ||
333 | |||
334 | static void power_pmu_bhrb_disable(struct perf_event *event) | ||
335 | { | ||
336 | struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events); | ||
337 | |||
338 | if (!ppmu->bhrb_nr) | ||
339 | return; | ||
340 | |||
341 | cpuhw->bhrb_users--; | ||
342 | WARN_ON_ONCE(cpuhw->bhrb_users < 0); | ||
343 | |||
344 | if (!cpuhw->disabled && !cpuhw->bhrb_users) { | ||
345 | /* BHRB cannot be turned off when other | ||
346 | * events are active on the PMU. | ||
347 | */ | ||
348 | |||
349 | /* avoid stale pointer */ | ||
350 | cpuhw->bhrb_context = NULL; | ||
351 | } | ||
352 | } | ||
353 | |||
354 | /* Called from ctxsw to prevent one process's branch entries to | ||
355 | * mingle with the other process's entries during context switch. | ||
356 | */ | ||
357 | void power_pmu_flush_branch_stack(void) | ||
358 | { | ||
359 | if (ppmu->bhrb_nr) | ||
360 | power_pmu_bhrb_reset(); | ||
361 | } | ||
362 | /* Calculate the to address for a branch */ | ||
363 | static __u64 power_pmu_bhrb_to(u64 addr) | ||
364 | { | ||
365 | unsigned int instr; | ||
366 | int ret; | ||
367 | __u64 target; | ||
368 | |||
369 | if (is_kernel_addr(addr)) | ||
370 | return branch_target((unsigned int *)addr); | ||
371 | |||
372 | /* Userspace: need copy instruction here then translate it */ | ||
373 | pagefault_disable(); | ||
374 | ret = __get_user_inatomic(instr, (unsigned int __user *)addr); | ||
375 | if (ret) { | ||
376 | pagefault_enable(); | ||
377 | return 0; | ||
378 | } | ||
379 | pagefault_enable(); | ||
380 | |||
381 | target = branch_target(&instr); | ||
382 | if ((!target) || (instr & BRANCH_ABSOLUTE)) | ||
383 | return target; | ||
384 | |||
385 | /* Translate relative branch target from kernel to user address */ | ||
386 | return target - (unsigned long)&instr + addr; | ||
387 | } | ||
388 | |||
389 | /* Processing BHRB entries */ | ||
390 | void power_pmu_bhrb_read(struct cpu_hw_events *cpuhw) | ||
391 | { | ||
392 | u64 val; | ||
393 | u64 addr; | ||
394 | int r_index, u_index, pred; | ||
395 | |||
396 | r_index = 0; | ||
397 | u_index = 0; | ||
398 | while (r_index < ppmu->bhrb_nr) { | ||
399 | /* Assembly read function */ | ||
400 | val = read_bhrb(r_index++); | ||
401 | if (!val) | ||
402 | /* Terminal marker: End of valid BHRB entries */ | ||
403 | break; | ||
404 | else { | ||
405 | addr = val & BHRB_EA; | ||
406 | pred = val & BHRB_PREDICTION; | ||
407 | |||
408 | if (!addr) | ||
409 | /* invalid entry */ | ||
410 | continue; | ||
411 | |||
412 | /* Branches are read most recent first (ie. mfbhrb 0 is | ||
413 | * the most recent branch). | ||
414 | * There are two types of valid entries: | ||
415 | * 1) a target entry which is the to address of a | ||
416 | * computed goto like a blr,bctr,btar. The next | ||
417 | * entry read from the bhrb will be branch | ||
418 | * corresponding to this target (ie. the actual | ||
419 | * blr/bctr/btar instruction). | ||
420 | * 2) a from address which is an actual branch. If a | ||
421 | * target entry proceeds this, then this is the | ||
422 | * matching branch for that target. If this is not | ||
423 | * following a target entry, then this is a branch | ||
424 | * where the target is given as an immediate field | ||
425 | * in the instruction (ie. an i or b form branch). | ||
426 | * In this case we need to read the instruction from | ||
427 | * memory to determine the target/to address. | ||
428 | */ | ||
429 | |||
430 | if (val & BHRB_TARGET) { | ||
431 | /* Target branches use two entries | ||
432 | * (ie. computed gotos/XL form) | ||
433 | */ | ||
434 | cpuhw->bhrb_entries[u_index].to = addr; | ||
435 | cpuhw->bhrb_entries[u_index].mispred = pred; | ||
436 | cpuhw->bhrb_entries[u_index].predicted = ~pred; | ||
437 | |||
438 | /* Get from address in next entry */ | ||
439 | val = read_bhrb(r_index++); | ||
440 | addr = val & BHRB_EA; | ||
441 | if (val & BHRB_TARGET) { | ||
442 | /* Shouldn't have two targets in a | ||
443 | row.. Reset index and try again */ | ||
444 | r_index--; | ||
445 | addr = 0; | ||
446 | } | ||
447 | cpuhw->bhrb_entries[u_index].from = addr; | ||
448 | } else { | ||
449 | /* Branches to immediate field | ||
450 | (ie I or B form) */ | ||
451 | cpuhw->bhrb_entries[u_index].from = addr; | ||
452 | cpuhw->bhrb_entries[u_index].to = | ||
453 | power_pmu_bhrb_to(addr); | ||
454 | cpuhw->bhrb_entries[u_index].mispred = pred; | ||
455 | cpuhw->bhrb_entries[u_index].predicted = ~pred; | ||
456 | } | ||
457 | u_index++; | ||
458 | |||
459 | } | ||
460 | } | ||
461 | cpuhw->bhrb_stack.nr = u_index; | ||
462 | return; | ||
463 | } | ||
464 | |||
311 | #endif /* CONFIG_PPC64 */ | 465 | #endif /* CONFIG_PPC64 */ |
312 | 466 | ||
313 | static void perf_event_interrupt(struct pt_regs *regs); | 467 | static void perf_event_interrupt(struct pt_regs *regs); |
@@ -904,47 +1058,6 @@ static int collect_events(struct perf_event *group, int max_count, | |||
904 | return n; | 1058 | return n; |
905 | } | 1059 | } |
906 | 1060 | ||
907 | /* Reset all possible BHRB entries */ | ||
908 | static void power_pmu_bhrb_reset(void) | ||
909 | { | ||
910 | asm volatile(PPC_CLRBHRB); | ||
911 | } | ||
912 | |||
913 | void power_pmu_bhrb_enable(struct perf_event *event) | ||
914 | { | ||
915 | struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events); | ||
916 | |||
917 | if (!ppmu->bhrb_nr) | ||
918 | return; | ||
919 | |||
920 | /* Clear BHRB if we changed task context to avoid data leaks */ | ||
921 | if (event->ctx->task && cpuhw->bhrb_context != event->ctx) { | ||
922 | power_pmu_bhrb_reset(); | ||
923 | cpuhw->bhrb_context = event->ctx; | ||
924 | } | ||
925 | cpuhw->bhrb_users++; | ||
926 | } | ||
927 | |||
928 | void power_pmu_bhrb_disable(struct perf_event *event) | ||
929 | { | ||
930 | struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events); | ||
931 | |||
932 | if (!ppmu->bhrb_nr) | ||
933 | return; | ||
934 | |||
935 | cpuhw->bhrb_users--; | ||
936 | WARN_ON_ONCE(cpuhw->bhrb_users < 0); | ||
937 | |||
938 | if (!cpuhw->disabled && !cpuhw->bhrb_users) { | ||
939 | /* BHRB cannot be turned off when other | ||
940 | * events are active on the PMU. | ||
941 | */ | ||
942 | |||
943 | /* avoid stale pointer */ | ||
944 | cpuhw->bhrb_context = NULL; | ||
945 | } | ||
946 | } | ||
947 | |||
948 | /* | 1061 | /* |
949 | * Add a event to the PMU. | 1062 | * Add a event to the PMU. |
950 | * If all events are not already frozen, then we disable and | 1063 | * If all events are not already frozen, then we disable and |
@@ -1180,15 +1293,6 @@ int power_pmu_commit_txn(struct pmu *pmu) | |||
1180 | return 0; | 1293 | return 0; |
1181 | } | 1294 | } |
1182 | 1295 | ||
1183 | /* Called from ctxsw to prevent one process's branch entries to | ||
1184 | * mingle with the other process's entries during context switch. | ||
1185 | */ | ||
1186 | void power_pmu_flush_branch_stack(void) | ||
1187 | { | ||
1188 | if (ppmu->bhrb_nr) | ||
1189 | power_pmu_bhrb_reset(); | ||
1190 | } | ||
1191 | |||
1192 | /* | 1296 | /* |
1193 | * Return 1 if we might be able to put event on a limited PMC, | 1297 | * Return 1 if we might be able to put event on a limited PMC, |
1194 | * or 0 if not. | 1298 | * or 0 if not. |
@@ -1458,77 +1562,6 @@ struct pmu power_pmu = { | |||
1458 | .flush_branch_stack = power_pmu_flush_branch_stack, | 1562 | .flush_branch_stack = power_pmu_flush_branch_stack, |
1459 | }; | 1563 | }; |
1460 | 1564 | ||
1461 | /* Processing BHRB entries */ | ||
1462 | void power_pmu_bhrb_read(struct cpu_hw_events *cpuhw) | ||
1463 | { | ||
1464 | u64 val; | ||
1465 | u64 addr; | ||
1466 | int r_index, u_index, target, pred; | ||
1467 | |||
1468 | r_index = 0; | ||
1469 | u_index = 0; | ||
1470 | while (r_index < ppmu->bhrb_nr) { | ||
1471 | /* Assembly read function */ | ||
1472 | val = read_bhrb(r_index); | ||
1473 | |||
1474 | /* Terminal marker: End of valid BHRB entries */ | ||
1475 | if (val == 0) { | ||
1476 | break; | ||
1477 | } else { | ||
1478 | /* BHRB field break up */ | ||
1479 | addr = val & BHRB_EA; | ||
1480 | pred = val & BHRB_PREDICTION; | ||
1481 | target = val & BHRB_TARGET; | ||
1482 | |||
1483 | /* Probable Missed entry: Not applicable for POWER8 */ | ||
1484 | if ((addr == 0) && (target == 0) && (pred == 1)) { | ||
1485 | r_index++; | ||
1486 | continue; | ||
1487 | } | ||
1488 | |||
1489 | /* Real Missed entry: Power8 based missed entry */ | ||
1490 | if ((addr == 0) && (target == 1) && (pred == 1)) { | ||
1491 | r_index++; | ||
1492 | continue; | ||
1493 | } | ||
1494 | |||
1495 | /* Reserved condition: Not a valid entry */ | ||
1496 | if ((addr == 0) && (target == 1) && (pred == 0)) { | ||
1497 | r_index++; | ||
1498 | continue; | ||
1499 | } | ||
1500 | |||
1501 | /* Is a target address */ | ||
1502 | if (val & BHRB_TARGET) { | ||
1503 | /* First address cannot be a target address */ | ||
1504 | if (r_index == 0) { | ||
1505 | r_index++; | ||
1506 | continue; | ||
1507 | } | ||
1508 | |||
1509 | /* Update target address for the previous entry */ | ||
1510 | cpuhw->bhrb_entries[u_index - 1].to = addr; | ||
1511 | cpuhw->bhrb_entries[u_index - 1].mispred = pred; | ||
1512 | cpuhw->bhrb_entries[u_index - 1].predicted = ~pred; | ||
1513 | |||
1514 | /* Dont increment u_index */ | ||
1515 | r_index++; | ||
1516 | } else { | ||
1517 | /* Update address, flags for current entry */ | ||
1518 | cpuhw->bhrb_entries[u_index].from = addr; | ||
1519 | cpuhw->bhrb_entries[u_index].mispred = pred; | ||
1520 | cpuhw->bhrb_entries[u_index].predicted = ~pred; | ||
1521 | |||
1522 | /* Successfully popullated one entry */ | ||
1523 | u_index++; | ||
1524 | r_index++; | ||
1525 | } | ||
1526 | } | ||
1527 | } | ||
1528 | cpuhw->bhrb_stack.nr = u_index; | ||
1529 | return; | ||
1530 | } | ||
1531 | |||
1532 | /* | 1565 | /* |
1533 | * A counter has overflowed; update its count and record | 1566 | * A counter has overflowed; update its count and record |
1534 | * things if requested. Note that interrupts are hard-disabled | 1567 | * things if requested. Note that interrupts are hard-disabled |
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig index a881232a3cce..b62aab3e22ec 100644 --- a/arch/powerpc/platforms/Kconfig +++ b/arch/powerpc/platforms/Kconfig | |||
@@ -128,7 +128,7 @@ config PPC_RTAS_DAEMON | |||
128 | 128 | ||
129 | config RTAS_PROC | 129 | config RTAS_PROC |
130 | bool "Proc interface to RTAS" | 130 | bool "Proc interface to RTAS" |
131 | depends on PPC_RTAS | 131 | depends on PPC_RTAS && PROC_FS |
132 | default y | 132 | default y |
133 | 133 | ||
134 | config RTAS_FLASH | 134 | config RTAS_FLASH |
diff --git a/arch/powerpc/platforms/powernv/Kconfig b/arch/powerpc/platforms/powernv/Kconfig index d3e840d643af..c24684c818ab 100644 --- a/arch/powerpc/platforms/powernv/Kconfig +++ b/arch/powerpc/platforms/powernv/Kconfig | |||
@@ -6,6 +6,7 @@ config PPC_POWERNV | |||
6 | select PPC_ICP_NATIVE | 6 | select PPC_ICP_NATIVE |
7 | select PPC_P7_NAP | 7 | select PPC_P7_NAP |
8 | select PPC_PCI_CHOICE if EMBEDDED | 8 | select PPC_PCI_CHOICE if EMBEDDED |
9 | select EPAPR_BOOT | ||
9 | default y | 10 | default y |
10 | 11 | ||
11 | config POWERNV_MSI | 12 | config POWERNV_MSI |
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c index ade4463226c6..628c564ceadb 100644 --- a/arch/powerpc/platforms/powernv/opal.c +++ b/arch/powerpc/platforms/powernv/opal.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/of.h> | 15 | #include <linux/of.h> |
16 | #include <linux/of_platform.h> | 16 | #include <linux/of_platform.h> |
17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
18 | #include <linux/slab.h> | ||
18 | #include <asm/opal.h> | 19 | #include <asm/opal.h> |
19 | #include <asm/firmware.h> | 20 | #include <asm/firmware.h> |
20 | 21 | ||
@@ -28,6 +29,8 @@ struct opal { | |||
28 | static struct device_node *opal_node; | 29 | static struct device_node *opal_node; |
29 | static DEFINE_SPINLOCK(opal_write_lock); | 30 | static DEFINE_SPINLOCK(opal_write_lock); |
30 | extern u64 opal_mc_secondary_handler[]; | 31 | extern u64 opal_mc_secondary_handler[]; |
32 | static unsigned int *opal_irqs; | ||
33 | static unsigned int opal_irq_count; | ||
31 | 34 | ||
32 | int __init early_init_dt_scan_opal(unsigned long node, | 35 | int __init early_init_dt_scan_opal(unsigned long node, |
33 | const char *uname, int depth, void *data) | 36 | const char *uname, int depth, void *data) |
@@ -53,7 +56,11 @@ int __init early_init_dt_scan_opal(unsigned long node, | |||
53 | opal.entry, entryp, entrysz); | 56 | opal.entry, entryp, entrysz); |
54 | 57 | ||
55 | powerpc_firmware_features |= FW_FEATURE_OPAL; | 58 | powerpc_firmware_features |= FW_FEATURE_OPAL; |
56 | if (of_flat_dt_is_compatible(node, "ibm,opal-v2")) { | 59 | if (of_flat_dt_is_compatible(node, "ibm,opal-v3")) { |
60 | powerpc_firmware_features |= FW_FEATURE_OPALv2; | ||
61 | powerpc_firmware_features |= FW_FEATURE_OPALv3; | ||
62 | printk("OPAL V3 detected !\n"); | ||
63 | } else if (of_flat_dt_is_compatible(node, "ibm,opal-v2")) { | ||
57 | powerpc_firmware_features |= FW_FEATURE_OPALv2; | 64 | powerpc_firmware_features |= FW_FEATURE_OPALv2; |
58 | printk("OPAL V2 detected !\n"); | 65 | printk("OPAL V2 detected !\n"); |
59 | } else { | 66 | } else { |
@@ -144,6 +151,13 @@ int opal_put_chars(uint32_t vtermno, const char *data, int total_len) | |||
144 | rc == OPAL_BUSY_EVENT || rc == OPAL_SUCCESS)) { | 151 | rc == OPAL_BUSY_EVENT || rc == OPAL_SUCCESS)) { |
145 | len = total_len; | 152 | len = total_len; |
146 | rc = opal_console_write(vtermno, &len, data); | 153 | rc = opal_console_write(vtermno, &len, data); |
154 | |||
155 | /* Closed or other error drop */ | ||
156 | if (rc != OPAL_SUCCESS && rc != OPAL_BUSY && | ||
157 | rc != OPAL_BUSY_EVENT) { | ||
158 | written = total_len; | ||
159 | break; | ||
160 | } | ||
147 | if (rc == OPAL_SUCCESS) { | 161 | if (rc == OPAL_SUCCESS) { |
148 | total_len -= len; | 162 | total_len -= len; |
149 | data += len; | 163 | data += len; |
@@ -316,6 +330,8 @@ static int __init opal_init(void) | |||
316 | irqs = of_get_property(opal_node, "opal-interrupts", &irqlen); | 330 | irqs = of_get_property(opal_node, "opal-interrupts", &irqlen); |
317 | pr_debug("opal: Found %d interrupts reserved for OPAL\n", | 331 | pr_debug("opal: Found %d interrupts reserved for OPAL\n", |
318 | irqs ? (irqlen / 4) : 0); | 332 | irqs ? (irqlen / 4) : 0); |
333 | opal_irq_count = irqlen / 4; | ||
334 | opal_irqs = kzalloc(opal_irq_count * sizeof(unsigned int), GFP_KERNEL); | ||
319 | for (i = 0; irqs && i < (irqlen / 4); i++, irqs++) { | 335 | for (i = 0; irqs && i < (irqlen / 4); i++, irqs++) { |
320 | unsigned int hwirq = be32_to_cpup(irqs); | 336 | unsigned int hwirq = be32_to_cpup(irqs); |
321 | unsigned int irq = irq_create_mapping(NULL, hwirq); | 337 | unsigned int irq = irq_create_mapping(NULL, hwirq); |
@@ -327,7 +343,19 @@ static int __init opal_init(void) | |||
327 | if (rc) | 343 | if (rc) |
328 | pr_warning("opal: Error %d requesting irq %d" | 344 | pr_warning("opal: Error %d requesting irq %d" |
329 | " (0x%x)\n", rc, irq, hwirq); | 345 | " (0x%x)\n", rc, irq, hwirq); |
346 | opal_irqs[i] = irq; | ||
330 | } | 347 | } |
331 | return 0; | 348 | return 0; |
332 | } | 349 | } |
333 | subsys_initcall(opal_init); | 350 | subsys_initcall(opal_init); |
351 | |||
352 | void opal_shutdown(void) | ||
353 | { | ||
354 | unsigned int i; | ||
355 | |||
356 | for (i = 0; i < opal_irq_count; i++) { | ||
357 | if (opal_irqs[i]) | ||
358 | free_irq(opal_irqs[i], 0); | ||
359 | opal_irqs[i] = 0; | ||
360 | } | ||
361 | } | ||
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c index 1da578b7c1bf..9c9d15e4cdf2 100644 --- a/arch/powerpc/platforms/powernv/pci-ioda.c +++ b/arch/powerpc/platforms/powernv/pci-ioda.c | |||
@@ -68,16 +68,6 @@ define_pe_printk_level(pe_err, KERN_ERR); | |||
68 | define_pe_printk_level(pe_warn, KERN_WARNING); | 68 | define_pe_printk_level(pe_warn, KERN_WARNING); |
69 | define_pe_printk_level(pe_info, KERN_INFO); | 69 | define_pe_printk_level(pe_info, KERN_INFO); |
70 | 70 | ||
71 | static struct pci_dn *pnv_ioda_get_pdn(struct pci_dev *dev) | ||
72 | { | ||
73 | struct device_node *np; | ||
74 | |||
75 | np = pci_device_to_OF_node(dev); | ||
76 | if (!np) | ||
77 | return NULL; | ||
78 | return PCI_DN(np); | ||
79 | } | ||
80 | |||
81 | static int pnv_ioda_alloc_pe(struct pnv_phb *phb) | 71 | static int pnv_ioda_alloc_pe(struct pnv_phb *phb) |
82 | { | 72 | { |
83 | unsigned long pe; | 73 | unsigned long pe; |
@@ -110,7 +100,7 @@ static struct pnv_ioda_pe *pnv_ioda_get_pe(struct pci_dev *dev) | |||
110 | { | 100 | { |
111 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | 101 | struct pci_controller *hose = pci_bus_to_host(dev->bus); |
112 | struct pnv_phb *phb = hose->private_data; | 102 | struct pnv_phb *phb = hose->private_data; |
113 | struct pci_dn *pdn = pnv_ioda_get_pdn(dev); | 103 | struct pci_dn *pdn = pci_get_pdn(dev); |
114 | 104 | ||
115 | if (!pdn) | 105 | if (!pdn) |
116 | return NULL; | 106 | return NULL; |
@@ -173,7 +163,7 @@ static int pnv_ioda_configure_pe(struct pnv_phb *phb, struct pnv_ioda_pe *pe) | |||
173 | 163 | ||
174 | /* Add to all parents PELT-V */ | 164 | /* Add to all parents PELT-V */ |
175 | while (parent) { | 165 | while (parent) { |
176 | struct pci_dn *pdn = pnv_ioda_get_pdn(parent); | 166 | struct pci_dn *pdn = pci_get_pdn(parent); |
177 | if (pdn && pdn->pe_number != IODA_INVALID_PE) { | 167 | if (pdn && pdn->pe_number != IODA_INVALID_PE) { |
178 | rc = opal_pci_set_peltv(phb->opal_id, pdn->pe_number, | 168 | rc = opal_pci_set_peltv(phb->opal_id, pdn->pe_number, |
179 | pe->pe_number, OPAL_ADD_PE_TO_DOMAIN); | 169 | pe->pe_number, OPAL_ADD_PE_TO_DOMAIN); |
@@ -252,7 +242,7 @@ static struct pnv_ioda_pe *pnv_ioda_setup_dev_PE(struct pci_dev *dev) | |||
252 | { | 242 | { |
253 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | 243 | struct pci_controller *hose = pci_bus_to_host(dev->bus); |
254 | struct pnv_phb *phb = hose->private_data; | 244 | struct pnv_phb *phb = hose->private_data; |
255 | struct pci_dn *pdn = pnv_ioda_get_pdn(dev); | 245 | struct pci_dn *pdn = pci_get_pdn(dev); |
256 | struct pnv_ioda_pe *pe; | 246 | struct pnv_ioda_pe *pe; |
257 | int pe_num; | 247 | int pe_num; |
258 | 248 | ||
@@ -323,7 +313,7 @@ static void pnv_ioda_setup_same_PE(struct pci_bus *bus, struct pnv_ioda_pe *pe) | |||
323 | struct pci_dev *dev; | 313 | struct pci_dev *dev; |
324 | 314 | ||
325 | list_for_each_entry(dev, &bus->devices, bus_list) { | 315 | list_for_each_entry(dev, &bus->devices, bus_list) { |
326 | struct pci_dn *pdn = pnv_ioda_get_pdn(dev); | 316 | struct pci_dn *pdn = pci_get_pdn(dev); |
327 | 317 | ||
328 | if (pdn == NULL) { | 318 | if (pdn == NULL) { |
329 | pr_warn("%s: No device node associated with device !\n", | 319 | pr_warn("%s: No device node associated with device !\n", |
@@ -436,7 +426,7 @@ static void pnv_pci_ioda_setup_PEs(void) | |||
436 | 426 | ||
437 | static void pnv_pci_ioda_dma_dev_setup(struct pnv_phb *phb, struct pci_dev *pdev) | 427 | static void pnv_pci_ioda_dma_dev_setup(struct pnv_phb *phb, struct pci_dev *pdev) |
438 | { | 428 | { |
439 | struct pci_dn *pdn = pnv_ioda_get_pdn(pdev); | 429 | struct pci_dn *pdn = pci_get_pdn(pdev); |
440 | struct pnv_ioda_pe *pe; | 430 | struct pnv_ioda_pe *pe; |
441 | 431 | ||
442 | /* | 432 | /* |
@@ -768,6 +758,7 @@ static int pnv_pci_ioda_msi_setup(struct pnv_phb *phb, struct pci_dev *dev, | |||
768 | unsigned int is_64, struct msi_msg *msg) | 758 | unsigned int is_64, struct msi_msg *msg) |
769 | { | 759 | { |
770 | struct pnv_ioda_pe *pe = pnv_ioda_get_pe(dev); | 760 | struct pnv_ioda_pe *pe = pnv_ioda_get_pe(dev); |
761 | struct pci_dn *pdn = pci_get_pdn(dev); | ||
771 | struct irq_data *idata; | 762 | struct irq_data *idata; |
772 | struct irq_chip *ichip; | 763 | struct irq_chip *ichip; |
773 | unsigned int xive_num = hwirq - phb->msi_base; | 764 | unsigned int xive_num = hwirq - phb->msi_base; |
@@ -783,6 +774,10 @@ static int pnv_pci_ioda_msi_setup(struct pnv_phb *phb, struct pci_dev *dev, | |||
783 | if (pe->mve_number < 0) | 774 | if (pe->mve_number < 0) |
784 | return -ENXIO; | 775 | return -ENXIO; |
785 | 776 | ||
777 | /* Force 32-bit MSI on some broken devices */ | ||
778 | if (pdn && pdn->force_32bit_msi) | ||
779 | is_64 = 0; | ||
780 | |||
786 | /* Assign XIVE to PE */ | 781 | /* Assign XIVE to PE */ |
787 | rc = opal_pci_set_xive_pe(phb->opal_id, pe->pe_number, xive_num); | 782 | rc = opal_pci_set_xive_pe(phb->opal_id, pe->pe_number, xive_num); |
788 | if (rc) { | 783 | if (rc) { |
@@ -1035,7 +1030,7 @@ static int pnv_pci_enable_device_hook(struct pci_dev *dev) | |||
1035 | if (!phb->initialized) | 1030 | if (!phb->initialized) |
1036 | return 0; | 1031 | return 0; |
1037 | 1032 | ||
1038 | pdn = pnv_ioda_get_pdn(dev); | 1033 | pdn = pci_get_pdn(dev); |
1039 | if (!pdn || pdn->pe_number == IODA_INVALID_PE) | 1034 | if (!pdn || pdn->pe_number == IODA_INVALID_PE) |
1040 | return -EINVAL; | 1035 | return -EINVAL; |
1041 | 1036 | ||
@@ -1048,6 +1043,12 @@ static u32 pnv_ioda_bdfn_to_pe(struct pnv_phb *phb, struct pci_bus *bus, | |||
1048 | return phb->ioda.pe_rmap[(bus->number << 8) | devfn]; | 1043 | return phb->ioda.pe_rmap[(bus->number << 8) | devfn]; |
1049 | } | 1044 | } |
1050 | 1045 | ||
1046 | static void pnv_pci_ioda_shutdown(struct pnv_phb *phb) | ||
1047 | { | ||
1048 | opal_pci_reset(phb->opal_id, OPAL_PCI_IODA_TABLE_RESET, | ||
1049 | OPAL_ASSERT_RESET); | ||
1050 | } | ||
1051 | |||
1051 | void __init pnv_pci_init_ioda_phb(struct device_node *np, int ioda_type) | 1052 | void __init pnv_pci_init_ioda_phb(struct device_node *np, int ioda_type) |
1052 | { | 1053 | { |
1053 | struct pci_controller *hose; | 1054 | struct pci_controller *hose; |
@@ -1178,6 +1179,9 @@ void __init pnv_pci_init_ioda_phb(struct device_node *np, int ioda_type) | |||
1178 | /* Setup TCEs */ | 1179 | /* Setup TCEs */ |
1179 | phb->dma_dev_setup = pnv_pci_ioda_dma_dev_setup; | 1180 | phb->dma_dev_setup = pnv_pci_ioda_dma_dev_setup; |
1180 | 1181 | ||
1182 | /* Setup shutdown function for kexec */ | ||
1183 | phb->shutdown = pnv_pci_ioda_shutdown; | ||
1184 | |||
1181 | /* Setup MSI support */ | 1185 | /* Setup MSI support */ |
1182 | pnv_pci_init_ioda_msis(phb); | 1186 | pnv_pci_init_ioda_msis(phb); |
1183 | 1187 | ||
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c index 55dfca844ddf..277343cc6a3d 100644 --- a/arch/powerpc/platforms/powernv/pci.c +++ b/arch/powerpc/platforms/powernv/pci.c | |||
@@ -47,6 +47,10 @@ static int pnv_msi_check_device(struct pci_dev* pdev, int nvec, int type) | |||
47 | { | 47 | { |
48 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); | 48 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); |
49 | struct pnv_phb *phb = hose->private_data; | 49 | struct pnv_phb *phb = hose->private_data; |
50 | struct pci_dn *pdn = pci_get_pdn(pdev); | ||
51 | |||
52 | if (pdn && pdn->force_32bit_msi && !phb->msi32_support) | ||
53 | return -ENODEV; | ||
50 | 54 | ||
51 | return (phb && phb->msi_bmp.bitmap) ? 0 : -ENODEV; | 55 | return (phb && phb->msi_bmp.bitmap) ? 0 : -ENODEV; |
52 | } | 56 | } |
@@ -367,7 +371,7 @@ static void pnv_tce_free(struct iommu_table *tbl, long index, long npages) | |||
367 | while (npages--) | 371 | while (npages--) |
368 | *(tcep++) = 0; | 372 | *(tcep++) = 0; |
369 | 373 | ||
370 | if (tbl->it_type & TCE_PCI_SWINV_CREATE) | 374 | if (tbl->it_type & TCE_PCI_SWINV_FREE) |
371 | pnv_pci_ioda_tce_invalidate(tbl, tces, tcep - 1); | 375 | pnv_pci_ioda_tce_invalidate(tbl, tces, tcep - 1); |
372 | } | 376 | } |
373 | 377 | ||
@@ -450,6 +454,18 @@ static void pnv_pci_dma_dev_setup(struct pci_dev *pdev) | |||
450 | pnv_pci_dma_fallback_setup(hose, pdev); | 454 | pnv_pci_dma_fallback_setup(hose, pdev); |
451 | } | 455 | } |
452 | 456 | ||
457 | void pnv_pci_shutdown(void) | ||
458 | { | ||
459 | struct pci_controller *hose; | ||
460 | |||
461 | list_for_each_entry(hose, &hose_list, list_node) { | ||
462 | struct pnv_phb *phb = hose->private_data; | ||
463 | |||
464 | if (phb && phb->shutdown) | ||
465 | phb->shutdown(phb); | ||
466 | } | ||
467 | } | ||
468 | |||
453 | /* Fixup wrong class code in p7ioc and p8 root complex */ | 469 | /* Fixup wrong class code in p7ioc and p8 root complex */ |
454 | static void pnv_p7ioc_rc_quirk(struct pci_dev *dev) | 470 | static void pnv_p7ioc_rc_quirk(struct pci_dev *dev) |
455 | { | 471 | { |
diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h index 48dc4bb856a1..25d76c4df50b 100644 --- a/arch/powerpc/platforms/powernv/pci.h +++ b/arch/powerpc/platforms/powernv/pci.h | |||
@@ -86,6 +86,7 @@ struct pnv_phb { | |||
86 | void (*dma_dev_setup)(struct pnv_phb *phb, struct pci_dev *pdev); | 86 | void (*dma_dev_setup)(struct pnv_phb *phb, struct pci_dev *pdev); |
87 | void (*fixup_phb)(struct pci_controller *hose); | 87 | void (*fixup_phb)(struct pci_controller *hose); |
88 | u32 (*bdfn_to_pe)(struct pnv_phb *phb, struct pci_bus *bus, u32 devfn); | 88 | u32 (*bdfn_to_pe)(struct pnv_phb *phb, struct pci_bus *bus, u32 devfn); |
89 | void (*shutdown)(struct pnv_phb *phb); | ||
89 | 90 | ||
90 | union { | 91 | union { |
91 | struct { | 92 | struct { |
@@ -158,4 +159,5 @@ extern void pnv_pci_init_ioda_hub(struct device_node *np); | |||
158 | extern void pnv_pci_init_ioda2_phb(struct device_node *np); | 159 | extern void pnv_pci_init_ioda2_phb(struct device_node *np); |
159 | extern void pnv_pci_ioda_tce_invalidate(struct iommu_table *tbl, | 160 | extern void pnv_pci_ioda_tce_invalidate(struct iommu_table *tbl, |
160 | u64 *startp, u64 *endp); | 161 | u64 *startp, u64 *endp); |
162 | |||
161 | #endif /* __POWERNV_PCI_H */ | 163 | #endif /* __POWERNV_PCI_H */ |
diff --git a/arch/powerpc/platforms/powernv/powernv.h b/arch/powerpc/platforms/powernv/powernv.h index 8a9df7f9667e..a1c6f83fc391 100644 --- a/arch/powerpc/platforms/powernv/powernv.h +++ b/arch/powerpc/platforms/powernv/powernv.h | |||
@@ -9,8 +9,10 @@ static inline void pnv_smp_init(void) { } | |||
9 | 9 | ||
10 | #ifdef CONFIG_PCI | 10 | #ifdef CONFIG_PCI |
11 | extern void pnv_pci_init(void); | 11 | extern void pnv_pci_init(void); |
12 | extern void pnv_pci_shutdown(void); | ||
12 | #else | 13 | #else |
13 | static inline void pnv_pci_init(void) { } | 14 | static inline void pnv_pci_init(void) { } |
15 | static inline void pnv_pci_shutdown(void) { } | ||
14 | #endif | 16 | #endif |
15 | 17 | ||
16 | #endif /* _POWERNV_H */ | 18 | #endif /* _POWERNV_H */ |
diff --git a/arch/powerpc/platforms/powernv/setup.c b/arch/powerpc/platforms/powernv/setup.c index db1ad1c8f68f..d4459bfc92f7 100644 --- a/arch/powerpc/platforms/powernv/setup.c +++ b/arch/powerpc/platforms/powernv/setup.c | |||
@@ -78,7 +78,9 @@ static void pnv_show_cpuinfo(struct seq_file *m) | |||
78 | if (root) | 78 | if (root) |
79 | model = of_get_property(root, "model", NULL); | 79 | model = of_get_property(root, "model", NULL); |
80 | seq_printf(m, "machine\t\t: PowerNV %s\n", model); | 80 | seq_printf(m, "machine\t\t: PowerNV %s\n", model); |
81 | if (firmware_has_feature(FW_FEATURE_OPALv2)) | 81 | if (firmware_has_feature(FW_FEATURE_OPALv3)) |
82 | seq_printf(m, "firmware\t: OPAL v3\n"); | ||
83 | else if (firmware_has_feature(FW_FEATURE_OPALv2)) | ||
82 | seq_printf(m, "firmware\t: OPAL v2\n"); | 84 | seq_printf(m, "firmware\t: OPAL v2\n"); |
83 | else if (firmware_has_feature(FW_FEATURE_OPAL)) | 85 | else if (firmware_has_feature(FW_FEATURE_OPAL)) |
84 | seq_printf(m, "firmware\t: OPAL v1\n"); | 86 | seq_printf(m, "firmware\t: OPAL v1\n"); |
@@ -126,6 +128,17 @@ static void pnv_progress(char *s, unsigned short hex) | |||
126 | { | 128 | { |
127 | } | 129 | } |
128 | 130 | ||
131 | static void pnv_shutdown(void) | ||
132 | { | ||
133 | /* Let the PCI code clear up IODA tables */ | ||
134 | pnv_pci_shutdown(); | ||
135 | |||
136 | /* And unregister all OPAL interrupts so they don't fire | ||
137 | * up while we kexec | ||
138 | */ | ||
139 | opal_shutdown(); | ||
140 | } | ||
141 | |||
129 | #ifdef CONFIG_KEXEC | 142 | #ifdef CONFIG_KEXEC |
130 | static void pnv_kexec_cpu_down(int crash_shutdown, int secondary) | 143 | static void pnv_kexec_cpu_down(int crash_shutdown, int secondary) |
131 | { | 144 | { |
@@ -187,6 +200,7 @@ define_machine(powernv) { | |||
187 | .init_IRQ = pnv_init_IRQ, | 200 | .init_IRQ = pnv_init_IRQ, |
188 | .show_cpuinfo = pnv_show_cpuinfo, | 201 | .show_cpuinfo = pnv_show_cpuinfo, |
189 | .progress = pnv_progress, | 202 | .progress = pnv_progress, |
203 | .machine_shutdown = pnv_shutdown, | ||
190 | .power_save = power7_idle, | 204 | .power_save = power7_idle, |
191 | .calibrate_decr = generic_calibrate_decr, | 205 | .calibrate_decr = generic_calibrate_decr, |
192 | #ifdef CONFIG_KEXEC | 206 | #ifdef CONFIG_KEXEC |
diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c index 6a3ecca5b725..88c9459c3e07 100644 --- a/arch/powerpc/platforms/powernv/smp.c +++ b/arch/powerpc/platforms/powernv/smp.c | |||
@@ -71,18 +71,68 @@ int pnv_smp_kick_cpu(int nr) | |||
71 | 71 | ||
72 | BUG_ON(nr < 0 || nr >= NR_CPUS); | 72 | BUG_ON(nr < 0 || nr >= NR_CPUS); |
73 | 73 | ||
74 | /* On OPAL v2 the CPU are still spinning inside OPAL itself, | 74 | /* |
75 | * get them back now | 75 | * If we already started or OPALv2 is not supported, we just |
76 | * kick the CPU via the PACA | ||
76 | */ | 77 | */ |
77 | if (!paca[nr].cpu_start && firmware_has_feature(FW_FEATURE_OPALv2)) { | 78 | if (paca[nr].cpu_start || !firmware_has_feature(FW_FEATURE_OPALv2)) |
78 | pr_devel("OPAL: Starting CPU %d (HW 0x%x)...\n", nr, pcpu); | 79 | goto kick; |
79 | rc = opal_start_cpu(pcpu, start_here); | 80 | |
81 | /* | ||
82 | * At this point, the CPU can either be spinning on the way in | ||
83 | * from kexec or be inside OPAL waiting to be started for the | ||
84 | * first time. OPAL v3 allows us to query OPAL to know if it | ||
85 | * has the CPUs, so we do that | ||
86 | */ | ||
87 | if (firmware_has_feature(FW_FEATURE_OPALv3)) { | ||
88 | uint8_t status; | ||
89 | |||
90 | rc = opal_query_cpu_status(pcpu, &status); | ||
80 | if (rc != OPAL_SUCCESS) { | 91 | if (rc != OPAL_SUCCESS) { |
81 | pr_warn("OPAL Error %ld starting CPU %d\n", | 92 | pr_warn("OPAL Error %ld querying CPU %d state\n", |
82 | rc, nr); | 93 | rc, nr); |
83 | return -ENODEV; | 94 | return -ENODEV; |
84 | } | 95 | } |
96 | |||
97 | /* | ||
98 | * Already started, just kick it, probably coming from | ||
99 | * kexec and spinning | ||
100 | */ | ||
101 | if (status == OPAL_THREAD_STARTED) | ||
102 | goto kick; | ||
103 | |||
104 | /* | ||
105 | * Available/inactive, let's kick it | ||
106 | */ | ||
107 | if (status == OPAL_THREAD_INACTIVE) { | ||
108 | pr_devel("OPAL: Starting CPU %d (HW 0x%x)...\n", | ||
109 | nr, pcpu); | ||
110 | rc = opal_start_cpu(pcpu, start_here); | ||
111 | if (rc != OPAL_SUCCESS) { | ||
112 | pr_warn("OPAL Error %ld starting CPU %d\n", | ||
113 | rc, nr); | ||
114 | return -ENODEV; | ||
115 | } | ||
116 | } else { | ||
117 | /* | ||
118 | * An unavailable CPU (or any other unknown status) | ||
119 | * shouldn't be started. It should also | ||
120 | * not be in the possible map but currently it can | ||
121 | * happen | ||
122 | */ | ||
123 | pr_devel("OPAL: CPU %d (HW 0x%x) is unavailable" | ||
124 | " (status %d)...\n", nr, pcpu, status); | ||
125 | return -ENODEV; | ||
126 | } | ||
127 | } else { | ||
128 | /* | ||
129 | * On OPAL v2, we just kick it and hope for the best, | ||
130 | * we must not test the error from opal_start_cpu() or | ||
131 | * we would fail to get CPUs from kexec. | ||
132 | */ | ||
133 | opal_start_cpu(pcpu, start_here); | ||
85 | } | 134 | } |
135 | kick: | ||
86 | return smp_generic_kick_cpu(nr); | 136 | return smp_generic_kick_cpu(nr); |
87 | } | 137 | } |
88 | 138 | ||
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig index 9a0941bc4d31..4459eff7a75a 100644 --- a/arch/powerpc/platforms/pseries/Kconfig +++ b/arch/powerpc/platforms/pseries/Kconfig | |||
@@ -18,6 +18,9 @@ config PPC_PSERIES | |||
18 | select PPC_PCI_CHOICE if EXPERT | 18 | select PPC_PCI_CHOICE if EXPERT |
19 | select ZLIB_DEFLATE | 19 | select ZLIB_DEFLATE |
20 | select PPC_DOORBELL | 20 | select PPC_DOORBELL |
21 | select HAVE_CONTEXT_TRACKING | ||
22 | select HOTPLUG if SMP | ||
23 | select HOTPLUG_CPU if SMP | ||
21 | default y | 24 | default y |
22 | 25 | ||
23 | config PPC_SPLPAR | 26 | config PPC_SPLPAR |
diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c index 420524e6f8c9..6d2f0abce6fa 100644 --- a/arch/powerpc/platforms/pseries/msi.c +++ b/arch/powerpc/platforms/pseries/msi.c | |||
@@ -26,26 +26,6 @@ static int query_token, change_token; | |||
26 | #define RTAS_CHANGE_MSIX_FN 4 | 26 | #define RTAS_CHANGE_MSIX_FN 4 |
27 | #define RTAS_CHANGE_32MSI_FN 5 | 27 | #define RTAS_CHANGE_32MSI_FN 5 |
28 | 28 | ||
29 | static struct pci_dn *get_pdn(struct pci_dev *pdev) | ||
30 | { | ||
31 | struct device_node *dn; | ||
32 | struct pci_dn *pdn; | ||
33 | |||
34 | dn = pci_device_to_OF_node(pdev); | ||
35 | if (!dn) { | ||
36 | dev_dbg(&pdev->dev, "rtas_msi: No OF device node\n"); | ||
37 | return NULL; | ||
38 | } | ||
39 | |||
40 | pdn = PCI_DN(dn); | ||
41 | if (!pdn) { | ||
42 | dev_dbg(&pdev->dev, "rtas_msi: No PCI DN\n"); | ||
43 | return NULL; | ||
44 | } | ||
45 | |||
46 | return pdn; | ||
47 | } | ||
48 | |||
49 | /* RTAS Helpers */ | 29 | /* RTAS Helpers */ |
50 | 30 | ||
51 | static int rtas_change_msi(struct pci_dn *pdn, u32 func, u32 num_irqs) | 31 | static int rtas_change_msi(struct pci_dn *pdn, u32 func, u32 num_irqs) |
@@ -91,7 +71,7 @@ static void rtas_disable_msi(struct pci_dev *pdev) | |||
91 | { | 71 | { |
92 | struct pci_dn *pdn; | 72 | struct pci_dn *pdn; |
93 | 73 | ||
94 | pdn = get_pdn(pdev); | 74 | pdn = pci_get_pdn(pdev); |
95 | if (!pdn) | 75 | if (!pdn) |
96 | return; | 76 | return; |
97 | 77 | ||
@@ -152,7 +132,7 @@ static int check_req(struct pci_dev *pdev, int nvec, char *prop_name) | |||
152 | struct pci_dn *pdn; | 132 | struct pci_dn *pdn; |
153 | const u32 *req_msi; | 133 | const u32 *req_msi; |
154 | 134 | ||
155 | pdn = get_pdn(pdev); | 135 | pdn = pci_get_pdn(pdev); |
156 | if (!pdn) | 136 | if (!pdn) |
157 | return -ENODEV; | 137 | return -ENODEV; |
158 | 138 | ||
@@ -394,6 +374,23 @@ static int check_msix_entries(struct pci_dev *pdev) | |||
394 | return 0; | 374 | return 0; |
395 | } | 375 | } |
396 | 376 | ||
377 | static void rtas_hack_32bit_msi_gen2(struct pci_dev *pdev) | ||
378 | { | ||
379 | u32 addr_hi, addr_lo; | ||
380 | |||
381 | /* | ||
382 | * We should only get in here for IODA1 configs. This is based on the | ||
383 | * fact that we using RTAS for MSIs, we don't have the 32 bit MSI RTAS | ||
384 | * support, and we are in a PCIe Gen2 slot. | ||
385 | */ | ||
386 | dev_info(&pdev->dev, | ||
387 | "rtas_msi: No 32 bit MSI firmware support, forcing 32 bit MSI\n"); | ||
388 | pci_read_config_dword(pdev, pdev->msi_cap + PCI_MSI_ADDRESS_HI, &addr_hi); | ||
389 | addr_lo = 0xffff0000 | ((addr_hi >> (48 - 32)) << 4); | ||
390 | pci_write_config_dword(pdev, pdev->msi_cap + PCI_MSI_ADDRESS_LO, addr_lo); | ||
391 | pci_write_config_dword(pdev, pdev->msi_cap + PCI_MSI_ADDRESS_HI, 0); | ||
392 | } | ||
393 | |||
397 | static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec_in, int type) | 394 | static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec_in, int type) |
398 | { | 395 | { |
399 | struct pci_dn *pdn; | 396 | struct pci_dn *pdn; |
@@ -401,8 +398,9 @@ static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec_in, int type) | |||
401 | struct msi_desc *entry; | 398 | struct msi_desc *entry; |
402 | struct msi_msg msg; | 399 | struct msi_msg msg; |
403 | int nvec = nvec_in; | 400 | int nvec = nvec_in; |
401 | int use_32bit_msi_hack = 0; | ||
404 | 402 | ||
405 | pdn = get_pdn(pdev); | 403 | pdn = pci_get_pdn(pdev); |
406 | if (!pdn) | 404 | if (!pdn) |
407 | return -ENODEV; | 405 | return -ENODEV; |
408 | 406 | ||
@@ -428,15 +426,31 @@ static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec_in, int type) | |||
428 | */ | 426 | */ |
429 | again: | 427 | again: |
430 | if (type == PCI_CAP_ID_MSI) { | 428 | if (type == PCI_CAP_ID_MSI) { |
431 | if (pdn->force_32bit_msi) | 429 | if (pdn->force_32bit_msi) { |
432 | rc = rtas_change_msi(pdn, RTAS_CHANGE_32MSI_FN, nvec); | 430 | rc = rtas_change_msi(pdn, RTAS_CHANGE_32MSI_FN, nvec); |
433 | else | 431 | if (rc < 0) { |
432 | /* | ||
433 | * We only want to run the 32 bit MSI hack below if | ||
434 | * the max bus speed is Gen2 speed | ||
435 | */ | ||
436 | if (pdev->bus->max_bus_speed != PCIE_SPEED_5_0GT) | ||
437 | return rc; | ||
438 | |||
439 | use_32bit_msi_hack = 1; | ||
440 | } | ||
441 | } else | ||
442 | rc = -1; | ||
443 | |||
444 | if (rc < 0) | ||
434 | rc = rtas_change_msi(pdn, RTAS_CHANGE_MSI_FN, nvec); | 445 | rc = rtas_change_msi(pdn, RTAS_CHANGE_MSI_FN, nvec); |
435 | 446 | ||
436 | if (rc < 0 && !pdn->force_32bit_msi) { | 447 | if (rc < 0) { |
437 | pr_debug("rtas_msi: trying the old firmware call.\n"); | 448 | pr_debug("rtas_msi: trying the old firmware call.\n"); |
438 | rc = rtas_change_msi(pdn, RTAS_CHANGE_FN, nvec); | 449 | rc = rtas_change_msi(pdn, RTAS_CHANGE_FN, nvec); |
439 | } | 450 | } |
451 | |||
452 | if (use_32bit_msi_hack && rc > 0) | ||
453 | rtas_hack_32bit_msi_gen2(pdev); | ||
440 | } else | 454 | } else |
441 | rc = rtas_change_msi(pdn, RTAS_CHANGE_MSIX_FN, nvec); | 455 | rc = rtas_change_msi(pdn, RTAS_CHANGE_MSIX_FN, nvec); |
442 | 456 | ||
@@ -518,12 +532,3 @@ static int rtas_msi_init(void) | |||
518 | } | 532 | } |
519 | arch_initcall(rtas_msi_init); | 533 | arch_initcall(rtas_msi_init); |
520 | 534 | ||
521 | static void quirk_radeon(struct pci_dev *dev) | ||
522 | { | ||
523 | struct pci_dn *pdn = get_pdn(dev); | ||
524 | |||
525 | if (pdn) | ||
526 | pdn->force_32bit_msi = 1; | ||
527 | } | ||
528 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x68f2, quirk_radeon); | ||
529 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0xaa68, quirk_radeon); | ||
diff --git a/arch/powerpc/platforms/pseries/suspend.c b/arch/powerpc/platforms/pseries/suspend.c index 47226e04126d..5f997e79d570 100644 --- a/arch/powerpc/platforms/pseries/suspend.c +++ b/arch/powerpc/platforms/pseries/suspend.c | |||
@@ -16,6 +16,7 @@ | |||
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/cpu.h> | ||
19 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
20 | #include <linux/suspend.h> | 21 | #include <linux/suspend.h> |
21 | #include <linux/stat.h> | 22 | #include <linux/stat.h> |
@@ -126,11 +127,15 @@ static ssize_t store_hibernate(struct device *dev, | |||
126 | struct device_attribute *attr, | 127 | struct device_attribute *attr, |
127 | const char *buf, size_t count) | 128 | const char *buf, size_t count) |
128 | { | 129 | { |
130 | cpumask_var_t offline_mask; | ||
129 | int rc; | 131 | int rc; |
130 | 132 | ||
131 | if (!capable(CAP_SYS_ADMIN)) | 133 | if (!capable(CAP_SYS_ADMIN)) |
132 | return -EPERM; | 134 | return -EPERM; |
133 | 135 | ||
136 | if (!alloc_cpumask_var(&offline_mask, GFP_TEMPORARY)) | ||
137 | return -ENOMEM; | ||
138 | |||
134 | stream_id = simple_strtoul(buf, NULL, 16); | 139 | stream_id = simple_strtoul(buf, NULL, 16); |
135 | 140 | ||
136 | do { | 141 | do { |
@@ -140,15 +145,32 @@ static ssize_t store_hibernate(struct device *dev, | |||
140 | } while (rc == -EAGAIN); | 145 | } while (rc == -EAGAIN); |
141 | 146 | ||
142 | if (!rc) { | 147 | if (!rc) { |
148 | /* All present CPUs must be online */ | ||
149 | cpumask_andnot(offline_mask, cpu_present_mask, | ||
150 | cpu_online_mask); | ||
151 | rc = rtas_online_cpus_mask(offline_mask); | ||
152 | if (rc) { | ||
153 | pr_err("%s: Could not bring present CPUs online.\n", | ||
154 | __func__); | ||
155 | goto out; | ||
156 | } | ||
157 | |||
143 | stop_topology_update(); | 158 | stop_topology_update(); |
144 | rc = pm_suspend(PM_SUSPEND_MEM); | 159 | rc = pm_suspend(PM_SUSPEND_MEM); |
145 | start_topology_update(); | 160 | start_topology_update(); |
161 | |||
162 | /* Take down CPUs not online prior to suspend */ | ||
163 | if (!rtas_offline_cpus_mask(offline_mask)) | ||
164 | pr_warn("%s: Could not restore CPUs to offline " | ||
165 | "state.\n", __func__); | ||
146 | } | 166 | } |
147 | 167 | ||
148 | stream_id = 0; | 168 | stream_id = 0; |
149 | 169 | ||
150 | if (!rc) | 170 | if (!rc) |
151 | rc = count; | 171 | rc = count; |
172 | out: | ||
173 | free_cpumask_var(offline_mask); | ||
152 | return rc; | 174 | return rc; |
153 | } | 175 | } |
154 | 176 | ||
diff --git a/arch/powerpc/platforms/wsp/ics.c b/arch/powerpc/platforms/wsp/ics.c index 97fe82ee8633..2d3b1dd9571d 100644 --- a/arch/powerpc/platforms/wsp/ics.c +++ b/arch/powerpc/platforms/wsp/ics.c | |||
@@ -361,7 +361,7 @@ static int wsp_chip_set_affinity(struct irq_data *d, | |||
361 | xive = xive_set_server(xive, get_irq_server(ics, hw_irq)); | 361 | xive = xive_set_server(xive, get_irq_server(ics, hw_irq)); |
362 | wsp_ics_set_xive(ics, hw_irq, xive); | 362 | wsp_ics_set_xive(ics, hw_irq, xive); |
363 | 363 | ||
364 | return 0; | 364 | return IRQ_SET_MASK_OK; |
365 | } | 365 | } |
366 | 366 | ||
367 | static struct irq_chip wsp_irq_chip = { | 367 | static struct irq_chip wsp_irq_chip = { |
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile index b0a518e97599..99464a7bdb3b 100644 --- a/arch/powerpc/sysdev/Makefile +++ b/arch/powerpc/sysdev/Makefile | |||
@@ -64,6 +64,8 @@ endif | |||
64 | 64 | ||
65 | obj-$(CONFIG_PPC_SCOM) += scom.o | 65 | obj-$(CONFIG_PPC_SCOM) += scom.o |
66 | 66 | ||
67 | obj-$(CONFIG_PPC_EARLY_DEBUG_MEMCONS) += udbg_memcons.o | ||
68 | |||
67 | subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror | 69 | subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror |
68 | 70 | ||
69 | obj-$(CONFIG_PPC_XICS) += xics/ | 71 | obj-$(CONFIG_PPC_XICS) += xics/ |
diff --git a/arch/powerpc/sysdev/ehv_pic.c b/arch/powerpc/sysdev/ehv_pic.c index 6e0e1005227f..9cd0e60716fe 100644 --- a/arch/powerpc/sysdev/ehv_pic.c +++ b/arch/powerpc/sysdev/ehv_pic.c | |||
@@ -81,7 +81,7 @@ int ehv_pic_set_affinity(struct irq_data *d, const struct cpumask *dest, | |||
81 | ev_int_set_config(src, config, prio, cpuid); | 81 | ev_int_set_config(src, config, prio, cpuid); |
82 | spin_unlock_irqrestore(&ehv_pic_lock, flags); | 82 | spin_unlock_irqrestore(&ehv_pic_lock, flags); |
83 | 83 | ||
84 | return 0; | 84 | return IRQ_SET_MASK_OK; |
85 | } | 85 | } |
86 | 86 | ||
87 | static unsigned int ehv_pic_type_to_vecpri(unsigned int type) | 87 | static unsigned int ehv_pic_type_to_vecpri(unsigned int type) |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index ee21b5e71aec..3cc2f9159ab1 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -54,7 +54,7 @@ static DEFINE_RAW_SPINLOCK(mpic_lock); | |||
54 | 54 | ||
55 | #ifdef CONFIG_PPC32 /* XXX for now */ | 55 | #ifdef CONFIG_PPC32 /* XXX for now */ |
56 | #ifdef CONFIG_IRQ_ALL_CPUS | 56 | #ifdef CONFIG_IRQ_ALL_CPUS |
57 | #define distribute_irqs (!(mpic->flags & MPIC_SINGLE_DEST_CPU)) | 57 | #define distribute_irqs (1) |
58 | #else | 58 | #else |
59 | #define distribute_irqs (0) | 59 | #define distribute_irqs (0) |
60 | #endif | 60 | #endif |
@@ -836,7 +836,7 @@ int mpic_set_affinity(struct irq_data *d, const struct cpumask *cpumask, | |||
836 | mpic_physmask(mask)); | 836 | mpic_physmask(mask)); |
837 | } | 837 | } |
838 | 838 | ||
839 | return 0; | 839 | return IRQ_SET_MASK_OK; |
840 | } | 840 | } |
841 | 841 | ||
842 | static unsigned int mpic_type_to_vecpri(struct mpic *mpic, unsigned int type) | 842 | static unsigned int mpic_type_to_vecpri(struct mpic *mpic, unsigned int type) |
@@ -1703,7 +1703,7 @@ void mpic_setup_this_cpu(void) | |||
1703 | * it differently, then we should make sure we also change the default | 1703 | * it differently, then we should make sure we also change the default |
1704 | * values of irq_desc[].affinity in irq.c. | 1704 | * values of irq_desc[].affinity in irq.c. |
1705 | */ | 1705 | */ |
1706 | if (distribute_irqs) { | 1706 | if (distribute_irqs && !(mpic->flags & MPIC_SINGLE_DEST_CPU)) { |
1707 | for (i = 0; i < mpic->num_sources ; i++) | 1707 | for (i = 0; i < mpic->num_sources ; i++) |
1708 | mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION), | 1708 | mpic_irq_write(i, MPIC_INFO(IRQ_DESTINATION), |
1709 | mpic_irq_read(i, MPIC_INFO(IRQ_DESTINATION)) | msk); | 1709 | mpic_irq_read(i, MPIC_INFO(IRQ_DESTINATION)) | msk); |
diff --git a/arch/powerpc/sysdev/udbg_memcons.c b/arch/powerpc/sysdev/udbg_memcons.c new file mode 100644 index 000000000000..ce5a7b489e4b --- /dev/null +++ b/arch/powerpc/sysdev/udbg_memcons.c | |||
@@ -0,0 +1,105 @@ | |||
1 | /* | ||
2 | * A udbg backend which logs messages and reads input from in memory | ||
3 | * buffers. | ||
4 | * | ||
5 | * The console output can be read from memcons_output which is a | ||
6 | * circular buffer whose next write position is stored in memcons.output_pos. | ||
7 | * | ||
8 | * Input may be passed by writing into the memcons_input buffer when it is | ||
9 | * empty. The input buffer is empty when both input_pos == input_start and | ||
10 | * *input_start == '\0'. | ||
11 | * | ||
12 | * Copyright (C) 2003-2005 Anton Blanchard and Milton Miller, IBM Corp | ||
13 | * Copyright (C) 2013 Alistair Popple, IBM Corp | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or | ||
16 | * modify it under the terms of the GNU General Public License | ||
17 | * as published by the Free Software Foundation; either version | ||
18 | * 2 of the License, or (at your option) any later version. | ||
19 | */ | ||
20 | |||
21 | #include <linux/init.h> | ||
22 | #include <linux/kernel.h> | ||
23 | #include <asm/barrier.h> | ||
24 | #include <asm/page.h> | ||
25 | #include <asm/processor.h> | ||
26 | #include <asm/udbg.h> | ||
27 | |||
28 | struct memcons { | ||
29 | char *output_start; | ||
30 | char *output_pos; | ||
31 | char *output_end; | ||
32 | char *input_start; | ||
33 | char *input_pos; | ||
34 | char *input_end; | ||
35 | }; | ||
36 | |||
37 | static char memcons_output[CONFIG_PPC_MEMCONS_OUTPUT_SIZE]; | ||
38 | static char memcons_input[CONFIG_PPC_MEMCONS_INPUT_SIZE]; | ||
39 | |||
40 | struct memcons memcons = { | ||
41 | .output_start = memcons_output, | ||
42 | .output_pos = memcons_output, | ||
43 | .output_end = &memcons_output[CONFIG_PPC_MEMCONS_OUTPUT_SIZE], | ||
44 | .input_start = memcons_input, | ||
45 | .input_pos = memcons_input, | ||
46 | .input_end = &memcons_input[CONFIG_PPC_MEMCONS_INPUT_SIZE], | ||
47 | }; | ||
48 | |||
49 | void memcons_putc(char c) | ||
50 | { | ||
51 | char *new_output_pos; | ||
52 | |||
53 | *memcons.output_pos = c; | ||
54 | wmb(); | ||
55 | new_output_pos = memcons.output_pos + 1; | ||
56 | if (new_output_pos >= memcons.output_end) | ||
57 | new_output_pos = memcons.output_start; | ||
58 | |||
59 | memcons.output_pos = new_output_pos; | ||
60 | } | ||
61 | |||
62 | int memcons_getc_poll(void) | ||
63 | { | ||
64 | char c; | ||
65 | char *new_input_pos; | ||
66 | |||
67 | if (*memcons.input_pos) { | ||
68 | c = *memcons.input_pos; | ||
69 | |||
70 | new_input_pos = memcons.input_pos + 1; | ||
71 | if (new_input_pos >= memcons.input_end) | ||
72 | new_input_pos = memcons.input_start; | ||
73 | else if (*new_input_pos == '\0') | ||
74 | new_input_pos = memcons.input_start; | ||
75 | |||
76 | *memcons.input_pos = '\0'; | ||
77 | wmb(); | ||
78 | memcons.input_pos = new_input_pos; | ||
79 | return c; | ||
80 | } | ||
81 | |||
82 | return -1; | ||
83 | } | ||
84 | |||
85 | int memcons_getc(void) | ||
86 | { | ||
87 | int c; | ||
88 | |||
89 | while (1) { | ||
90 | c = memcons_getc_poll(); | ||
91 | if (c == -1) | ||
92 | cpu_relax(); | ||
93 | else | ||
94 | break; | ||
95 | } | ||
96 | |||
97 | return c; | ||
98 | } | ||
99 | |||
100 | void udbg_init_memcons(void) | ||
101 | { | ||
102 | udbg_putc = memcons_putc; | ||
103 | udbg_getc = memcons_getc; | ||
104 | udbg_getc_poll = memcons_getc_poll; | ||
105 | } | ||
diff --git a/arch/powerpc/sysdev/xics/ics-opal.c b/arch/powerpc/sysdev/xics/ics-opal.c index f7e8609df0d5..39d72212655e 100644 --- a/arch/powerpc/sysdev/xics/ics-opal.c +++ b/arch/powerpc/sysdev/xics/ics-opal.c | |||
@@ -148,7 +148,7 @@ static int ics_opal_set_affinity(struct irq_data *d, | |||
148 | __func__, d->irq, hw_irq, server, rc); | 148 | __func__, d->irq, hw_irq, server, rc); |
149 | return -1; | 149 | return -1; |
150 | } | 150 | } |
151 | return 0; | 151 | return IRQ_SET_MASK_OK; |
152 | } | 152 | } |
153 | 153 | ||
154 | static struct irq_chip ics_opal_irq_chip = { | 154 | static struct irq_chip ics_opal_irq_chip = { |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 2c9789da0e24..da183c5a103c 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -98,7 +98,6 @@ config S390 | |||
98 | select CLONE_BACKWARDS2 | 98 | select CLONE_BACKWARDS2 |
99 | select GENERIC_CLOCKEVENTS | 99 | select GENERIC_CLOCKEVENTS |
100 | select GENERIC_CPU_DEVICES if !SMP | 100 | select GENERIC_CPU_DEVICES if !SMP |
101 | select GENERIC_KERNEL_THREAD | ||
102 | select GENERIC_SMP_IDLE_THREAD | 101 | select GENERIC_SMP_IDLE_THREAD |
103 | select GENERIC_TIME_VSYSCALL_OLD | 102 | select GENERIC_TIME_VSYSCALL_OLD |
104 | select HAVE_ALIGNED_STRUCT_PAGE if SLUB | 103 | select HAVE_ALIGNED_STRUCT_PAGE if SLUB |
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index bae0f402bf2a..87a22092b68f 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
@@ -212,7 +212,9 @@ appldata_timer_handler(ctl_table *ctl, int write, | |||
212 | return 0; | 212 | return 0; |
213 | } | 213 | } |
214 | if (!write) { | 214 | if (!write) { |
215 | len = sprintf(buf, appldata_timer_active ? "1\n" : "0\n"); | 215 | strncpy(buf, appldata_timer_active ? "1\n" : "0\n", |
216 | ARRAY_SIZE(buf)); | ||
217 | len = strnlen(buf, ARRAY_SIZE(buf)); | ||
216 | if (len > *lenp) | 218 | if (len > *lenp) |
217 | len = *lenp; | 219 | len = *lenp; |
218 | if (copy_to_user(buffer, buf, len)) | 220 | if (copy_to_user(buffer, buf, len)) |
@@ -317,7 +319,8 @@ appldata_generic_handler(ctl_table *ctl, int write, | |||
317 | return 0; | 319 | return 0; |
318 | } | 320 | } |
319 | if (!write) { | 321 | if (!write) { |
320 | len = sprintf(buf, ops->active ? "1\n" : "0\n"); | 322 | strncpy(buf, ops->active ? "1\n" : "0\n", ARRAY_SIZE(buf)); |
323 | len = strnlen(buf, ARRAY_SIZE(buf)); | ||
321 | if (len > *lenp) | 324 | if (len > *lenp) |
322 | len = *lenp; | 325 | len = *lenp; |
323 | if (copy_to_user(buffer, buf, len)) { | 326 | if (copy_to_user(buffer, buf, len)) { |
diff --git a/arch/s390/include/asm/dma-mapping.h b/arch/s390/include/asm/dma-mapping.h index 9411db653bac..886ac7d4937a 100644 --- a/arch/s390/include/asm/dma-mapping.h +++ b/arch/s390/include/asm/dma-mapping.h | |||
@@ -71,8 +71,8 @@ static inline void dma_free_coherent(struct device *dev, size_t size, | |||
71 | { | 71 | { |
72 | struct dma_map_ops *dma_ops = get_dma_ops(dev); | 72 | struct dma_map_ops *dma_ops = get_dma_ops(dev); |
73 | 73 | ||
74 | dma_ops->free(dev, size, cpu_addr, dma_handle, NULL); | ||
75 | debug_dma_free_coherent(dev, size, cpu_addr, dma_handle); | 74 | debug_dma_free_coherent(dev, size, cpu_addr, dma_handle); |
75 | dma_ops->free(dev, size, cpu_addr, dma_handle, NULL); | ||
76 | } | 76 | } |
77 | 77 | ||
78 | #endif /* _ASM_S390_DMA_MAPPING_H */ | 78 | #endif /* _ASM_S390_DMA_MAPPING_H */ |
diff --git a/arch/s390/include/asm/ftrace.h b/arch/s390/include/asm/ftrace.h index b7931faaef6d..bf246dae1367 100644 --- a/arch/s390/include/asm/ftrace.h +++ b/arch/s390/include/asm/ftrace.h | |||
@@ -9,11 +9,6 @@ struct dyn_arch_ftrace { }; | |||
9 | 9 | ||
10 | #define MCOUNT_ADDR ((long)_mcount) | 10 | #define MCOUNT_ADDR ((long)_mcount) |
11 | 11 | ||
12 | #ifdef CONFIG_64BIT | ||
13 | #define MCOUNT_INSN_SIZE 12 | ||
14 | #else | ||
15 | #define MCOUNT_INSN_SIZE 20 | ||
16 | #endif | ||
17 | 12 | ||
18 | static inline unsigned long ftrace_call_adjust(unsigned long addr) | 13 | static inline unsigned long ftrace_call_adjust(unsigned long addr) |
19 | { | 14 | { |
@@ -21,4 +16,11 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr) | |||
21 | } | 16 | } |
22 | 17 | ||
23 | #endif /* __ASSEMBLY__ */ | 18 | #endif /* __ASSEMBLY__ */ |
19 | |||
20 | #ifdef CONFIG_64BIT | ||
21 | #define MCOUNT_INSN_SIZE 12 | ||
22 | #else | ||
23 | #define MCOUNT_INSN_SIZE 22 | ||
24 | #endif | ||
25 | |||
24 | #endif /* _ASM_S390_FTRACE_H */ | 26 | #endif /* _ASM_S390_FTRACE_H */ |
diff --git a/arch/s390/include/asm/io.h b/arch/s390/include/asm/io.h index 379d96e2105e..fd9be010f9b2 100644 --- a/arch/s390/include/asm/io.h +++ b/arch/s390/include/asm/io.h | |||
@@ -36,6 +36,7 @@ static inline void * phys_to_virt(unsigned long address) | |||
36 | } | 36 | } |
37 | 37 | ||
38 | void *xlate_dev_mem_ptr(unsigned long phys); | 38 | void *xlate_dev_mem_ptr(unsigned long phys); |
39 | #define xlate_dev_mem_ptr xlate_dev_mem_ptr | ||
39 | void unxlate_dev_mem_ptr(unsigned long phys, void *addr); | 40 | void unxlate_dev_mem_ptr(unsigned long phys, void *addr); |
40 | 41 | ||
41 | /* | 42 | /* |
diff --git a/arch/s390/include/asm/page.h b/arch/s390/include/asm/page.h index 75ce9b065f9f..5d64fb7619cc 100644 --- a/arch/s390/include/asm/page.h +++ b/arch/s390/include/asm/page.h | |||
@@ -32,7 +32,7 @@ | |||
32 | 32 | ||
33 | void storage_key_init_range(unsigned long start, unsigned long end); | 33 | void storage_key_init_range(unsigned long start, unsigned long end); |
34 | 34 | ||
35 | static unsigned long pfmf(unsigned long function, unsigned long address) | 35 | static inline unsigned long pfmf(unsigned long function, unsigned long address) |
36 | { | 36 | { |
37 | asm volatile( | 37 | asm volatile( |
38 | " .insn rre,0xb9af0000,%[function],%[address]" | 38 | " .insn rre,0xb9af0000,%[function],%[address]" |
@@ -44,17 +44,13 @@ static unsigned long pfmf(unsigned long function, unsigned long address) | |||
44 | 44 | ||
45 | static inline void clear_page(void *page) | 45 | static inline void clear_page(void *page) |
46 | { | 46 | { |
47 | if (MACHINE_HAS_PFMF) { | 47 | register unsigned long reg1 asm ("1") = 0; |
48 | pfmf(0x10000, (unsigned long)page); | 48 | register void *reg2 asm ("2") = page; |
49 | } else { | 49 | register unsigned long reg3 asm ("3") = 4096; |
50 | register unsigned long reg1 asm ("1") = 0; | 50 | asm volatile( |
51 | register void *reg2 asm ("2") = page; | 51 | " mvcl 2,0" |
52 | register unsigned long reg3 asm ("3") = 4096; | 52 | : "+d" (reg2), "+d" (reg3) : "d" (reg1) |
53 | asm volatile( | 53 | : "memory", "cc"); |
54 | " mvcl 2,0" | ||
55 | : "+d" (reg2), "+d" (reg3) : "d" (reg1) | ||
56 | : "memory", "cc"); | ||
57 | } | ||
58 | } | 54 | } |
59 | 55 | ||
60 | static inline void copy_page(void *to, void *from) | 56 | static inline void copy_page(void *to, void *from) |
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index 4105b8221fdd..ac01463038f1 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
@@ -306,7 +306,7 @@ extern unsigned long MODULES_END; | |||
306 | #define RCP_HC_BIT 0x00200000UL | 306 | #define RCP_HC_BIT 0x00200000UL |
307 | #define RCP_GR_BIT 0x00040000UL | 307 | #define RCP_GR_BIT 0x00040000UL |
308 | #define RCP_GC_BIT 0x00020000UL | 308 | #define RCP_GC_BIT 0x00020000UL |
309 | #define RCP_IN_BIT 0x00008000UL /* IPTE notify bit */ | 309 | #define RCP_IN_BIT 0x00002000UL /* IPTE notify bit */ |
310 | 310 | ||
311 | /* User dirty / referenced bit for KVM's migration feature */ | 311 | /* User dirty / referenced bit for KVM's migration feature */ |
312 | #define KVM_UR_BIT 0x00008000UL | 312 | #define KVM_UR_BIT 0x00008000UL |
@@ -374,7 +374,7 @@ extern unsigned long MODULES_END; | |||
374 | #define RCP_HC_BIT 0x0020000000000000UL | 374 | #define RCP_HC_BIT 0x0020000000000000UL |
375 | #define RCP_GR_BIT 0x0004000000000000UL | 375 | #define RCP_GR_BIT 0x0004000000000000UL |
376 | #define RCP_GC_BIT 0x0002000000000000UL | 376 | #define RCP_GC_BIT 0x0002000000000000UL |
377 | #define RCP_IN_BIT 0x0000800000000000UL /* IPTE notify bit */ | 377 | #define RCP_IN_BIT 0x0000200000000000UL /* IPTE notify bit */ |
378 | 378 | ||
379 | /* User dirty / referenced bit for KVM's migration feature */ | 379 | /* User dirty / referenced bit for KVM's migration feature */ |
380 | #define KVM_UR_BIT 0x0000800000000000UL | 380 | #define KVM_UR_BIT 0x0000800000000000UL |
@@ -646,7 +646,7 @@ static inline pgste_t pgste_update_all(pte_t *ptep, pgste_t pgste) | |||
646 | unsigned long address, bits; | 646 | unsigned long address, bits; |
647 | unsigned char skey; | 647 | unsigned char skey; |
648 | 648 | ||
649 | if (!pte_present(*ptep)) | 649 | if (pte_val(*ptep) & _PAGE_INVALID) |
650 | return pgste; | 650 | return pgste; |
651 | address = pte_val(*ptep) & PAGE_MASK; | 651 | address = pte_val(*ptep) & PAGE_MASK; |
652 | skey = page_get_storage_key(address); | 652 | skey = page_get_storage_key(address); |
@@ -680,7 +680,7 @@ static inline pgste_t pgste_update_young(pte_t *ptep, pgste_t pgste) | |||
680 | #ifdef CONFIG_PGSTE | 680 | #ifdef CONFIG_PGSTE |
681 | int young; | 681 | int young; |
682 | 682 | ||
683 | if (!pte_present(*ptep)) | 683 | if (pte_val(*ptep) & _PAGE_INVALID) |
684 | return pgste; | 684 | return pgste; |
685 | /* Get referenced bit from storage key */ | 685 | /* Get referenced bit from storage key */ |
686 | young = page_reset_referenced(pte_val(*ptep) & PAGE_MASK); | 686 | young = page_reset_referenced(pte_val(*ptep) & PAGE_MASK); |
@@ -706,7 +706,7 @@ static inline void pgste_set_key(pte_t *ptep, pgste_t pgste, pte_t entry) | |||
706 | unsigned long address; | 706 | unsigned long address; |
707 | unsigned long okey, nkey; | 707 | unsigned long okey, nkey; |
708 | 708 | ||
709 | if (!pte_present(entry)) | 709 | if (pte_val(entry) & _PAGE_INVALID) |
710 | return; | 710 | return; |
711 | address = pte_val(entry) & PAGE_MASK; | 711 | address = pte_val(entry) & PAGE_MASK; |
712 | okey = nkey = page_get_storage_key(address); | 712 | okey = nkey = page_get_storage_key(address); |
@@ -1098,6 +1098,9 @@ static inline pte_t ptep_modify_prot_start(struct mm_struct *mm, | |||
1098 | pte = *ptep; | 1098 | pte = *ptep; |
1099 | if (!mm_exclusive(mm)) | 1099 | if (!mm_exclusive(mm)) |
1100 | __ptep_ipte(address, ptep); | 1100 | __ptep_ipte(address, ptep); |
1101 | |||
1102 | if (mm_has_pgste(mm)) | ||
1103 | pgste = pgste_update_all(&pte, pgste); | ||
1101 | return pte; | 1104 | return pte; |
1102 | } | 1105 | } |
1103 | 1106 | ||
@@ -1105,9 +1108,13 @@ static inline void ptep_modify_prot_commit(struct mm_struct *mm, | |||
1105 | unsigned long address, | 1108 | unsigned long address, |
1106 | pte_t *ptep, pte_t pte) | 1109 | pte_t *ptep, pte_t pte) |
1107 | { | 1110 | { |
1111 | pgste_t pgste; | ||
1112 | |||
1108 | if (mm_has_pgste(mm)) { | 1113 | if (mm_has_pgste(mm)) { |
1114 | pgste = *(pgste_t *)(ptep + PTRS_PER_PTE); | ||
1115 | pgste_set_key(ptep, pgste, pte); | ||
1109 | pgste_set_pte(ptep, pte); | 1116 | pgste_set_pte(ptep, pte); |
1110 | pgste_set_unlock(ptep, *(pgste_t *)(ptep + PTRS_PER_PTE)); | 1117 | pgste_set_unlock(ptep, pgste); |
1111 | } else | 1118 | } else |
1112 | *ptep = pte; | 1119 | *ptep = pte; |
1113 | } | 1120 | } |
diff --git a/arch/s390/kernel/dis.c b/arch/s390/kernel/dis.c index 7f4a4a8c847c..be87d3e05a5b 100644 --- a/arch/s390/kernel/dis.c +++ b/arch/s390/kernel/dis.c | |||
@@ -1862,6 +1862,8 @@ void print_fn_code(unsigned char *code, unsigned long len) | |||
1862 | while (len) { | 1862 | while (len) { |
1863 | ptr = buffer; | 1863 | ptr = buffer; |
1864 | opsize = insn_length(*code); | 1864 | opsize = insn_length(*code); |
1865 | if (opsize > len) | ||
1866 | break; | ||
1865 | ptr += sprintf(ptr, "%p: ", code); | 1867 | ptr += sprintf(ptr, "%p: ", code); |
1866 | for (i = 0; i < opsize; i++) | 1868 | for (i = 0; i < opsize; i++) |
1867 | ptr += sprintf(ptr, "%02x", code[i]); | 1869 | ptr += sprintf(ptr, "%02x", code[i]); |
diff --git a/arch/s390/kernel/ftrace.c b/arch/s390/kernel/ftrace.c index 78bdf0e5dff7..e3043aef87a9 100644 --- a/arch/s390/kernel/ftrace.c +++ b/arch/s390/kernel/ftrace.c | |||
@@ -16,12 +16,6 @@ | |||
16 | #include <trace/syscall.h> | 16 | #include <trace/syscall.h> |
17 | #include <asm/asm-offsets.h> | 17 | #include <asm/asm-offsets.h> |
18 | 18 | ||
19 | #ifdef CONFIG_64BIT | ||
20 | #define MCOUNT_OFFSET_RET 12 | ||
21 | #else | ||
22 | #define MCOUNT_OFFSET_RET 22 | ||
23 | #endif | ||
24 | |||
25 | #ifdef CONFIG_DYNAMIC_FTRACE | 19 | #ifdef CONFIG_DYNAMIC_FTRACE |
26 | 20 | ||
27 | void ftrace_disable_code(void); | 21 | void ftrace_disable_code(void); |
@@ -155,9 +149,10 @@ unsigned long __kprobes prepare_ftrace_return(unsigned long parent, | |||
155 | 149 | ||
156 | if (unlikely(atomic_read(¤t->tracing_graph_pause))) | 150 | if (unlikely(atomic_read(¤t->tracing_graph_pause))) |
157 | goto out; | 151 | goto out; |
152 | ip = (ip & PSW_ADDR_INSN) - MCOUNT_INSN_SIZE; | ||
158 | if (ftrace_push_return_trace(parent, ip, &trace.depth, 0) == -EBUSY) | 153 | if (ftrace_push_return_trace(parent, ip, &trace.depth, 0) == -EBUSY) |
159 | goto out; | 154 | goto out; |
160 | trace.func = (ip & PSW_ADDR_INSN) - MCOUNT_OFFSET_RET; | 155 | trace.func = ip; |
161 | /* Only trace if the calling function expects to. */ | 156 | /* Only trace if the calling function expects to. */ |
162 | if (!ftrace_graph_entry(&trace)) { | 157 | if (!ftrace_graph_entry(&trace)) { |
163 | current->curr_ret_stack--; | 158 | current->curr_ret_stack--; |
diff --git a/arch/s390/kernel/mcount.S b/arch/s390/kernel/mcount.S index 4567ce20d900..08dcf21cb8df 100644 --- a/arch/s390/kernel/mcount.S +++ b/arch/s390/kernel/mcount.S | |||
@@ -7,6 +7,7 @@ | |||
7 | 7 | ||
8 | #include <linux/linkage.h> | 8 | #include <linux/linkage.h> |
9 | #include <asm/asm-offsets.h> | 9 | #include <asm/asm-offsets.h> |
10 | #include <asm/ftrace.h> | ||
10 | 11 | ||
11 | .section .kprobes.text, "ax" | 12 | .section .kprobes.text, "ax" |
12 | 13 | ||
@@ -33,6 +34,7 @@ ENTRY(ftrace_caller) | |||
33 | la %r2,0(%r14) | 34 | la %r2,0(%r14) |
34 | st %r0,__SF_BACKCHAIN(%r15) | 35 | st %r0,__SF_BACKCHAIN(%r15) |
35 | la %r3,0(%r3) | 36 | la %r3,0(%r3) |
37 | ahi %r2,-MCOUNT_INSN_SIZE | ||
36 | l %r14,0b-0b(%r1) | 38 | l %r14,0b-0b(%r1) |
37 | l %r14,0(%r14) | 39 | l %r14,0(%r14) |
38 | basr %r14,%r14 | 40 | basr %r14,%r14 |
diff --git a/arch/s390/kernel/mcount64.S b/arch/s390/kernel/mcount64.S index 11332193db30..1c52eae3396a 100644 --- a/arch/s390/kernel/mcount64.S +++ b/arch/s390/kernel/mcount64.S | |||
@@ -7,6 +7,7 @@ | |||
7 | 7 | ||
8 | #include <linux/linkage.h> | 8 | #include <linux/linkage.h> |
9 | #include <asm/asm-offsets.h> | 9 | #include <asm/asm-offsets.h> |
10 | #include <asm/ftrace.h> | ||
10 | 11 | ||
11 | .section .kprobes.text, "ax" | 12 | .section .kprobes.text, "ax" |
12 | 13 | ||
@@ -29,6 +30,7 @@ ENTRY(ftrace_caller) | |||
29 | stg %r1,__SF_BACKCHAIN(%r15) | 30 | stg %r1,__SF_BACKCHAIN(%r15) |
30 | lgr %r2,%r14 | 31 | lgr %r2,%r14 |
31 | lg %r3,168(%r15) | 32 | lg %r3,168(%r15) |
33 | aghi %r2,-MCOUNT_INSN_SIZE | ||
32 | larl %r14,ftrace_trace_function | 34 | larl %r14,ftrace_trace_function |
33 | lg %r14,0(%r14) | 35 | lg %r14,0(%r14) |
34 | basr %r14,%r14 | 36 | basr %r14,%r14 |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 8074cb4b7cbf..4f977d0d25c2 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -428,34 +428,27 @@ void smp_stop_cpu(void) | |||
428 | * This is the main routine where commands issued by other | 428 | * This is the main routine where commands issued by other |
429 | * cpus are handled. | 429 | * cpus are handled. |
430 | */ | 430 | */ |
431 | static void do_ext_call_interrupt(struct ext_code ext_code, | 431 | static void smp_handle_ext_call(void) |
432 | unsigned int param32, unsigned long param64) | ||
433 | { | 432 | { |
434 | unsigned long bits; | 433 | unsigned long bits; |
435 | int cpu; | ||
436 | |||
437 | cpu = smp_processor_id(); | ||
438 | if (ext_code.code == 0x1202) | ||
439 | inc_irq_stat(IRQEXT_EXC); | ||
440 | else | ||
441 | inc_irq_stat(IRQEXT_EMS); | ||
442 | /* | ||
443 | * handle bit signal external calls | ||
444 | */ | ||
445 | bits = xchg(&pcpu_devices[cpu].ec_mask, 0); | ||
446 | 434 | ||
435 | /* handle bit signal external calls */ | ||
436 | bits = xchg(&pcpu_devices[smp_processor_id()].ec_mask, 0); | ||
447 | if (test_bit(ec_stop_cpu, &bits)) | 437 | if (test_bit(ec_stop_cpu, &bits)) |
448 | smp_stop_cpu(); | 438 | smp_stop_cpu(); |
449 | |||
450 | if (test_bit(ec_schedule, &bits)) | 439 | if (test_bit(ec_schedule, &bits)) |
451 | scheduler_ipi(); | 440 | scheduler_ipi(); |
452 | |||
453 | if (test_bit(ec_call_function, &bits)) | 441 | if (test_bit(ec_call_function, &bits)) |
454 | generic_smp_call_function_interrupt(); | 442 | generic_smp_call_function_interrupt(); |
455 | |||
456 | if (test_bit(ec_call_function_single, &bits)) | 443 | if (test_bit(ec_call_function_single, &bits)) |
457 | generic_smp_call_function_single_interrupt(); | 444 | generic_smp_call_function_single_interrupt(); |
445 | } | ||
458 | 446 | ||
447 | static void do_ext_call_interrupt(struct ext_code ext_code, | ||
448 | unsigned int param32, unsigned long param64) | ||
449 | { | ||
450 | inc_irq_stat(ext_code.code == 0x1202 ? IRQEXT_EXC : IRQEXT_EMS); | ||
451 | smp_handle_ext_call(); | ||
459 | } | 452 | } |
460 | 453 | ||
461 | void arch_send_call_function_ipi_mask(const struct cpumask *mask) | 454 | void arch_send_call_function_ipi_mask(const struct cpumask *mask) |
@@ -645,7 +638,7 @@ static int __cpuinit __smp_rescan_cpus(struct sclp_cpu_info *info, | |||
645 | continue; | 638 | continue; |
646 | pcpu = pcpu_devices + cpu; | 639 | pcpu = pcpu_devices + cpu; |
647 | pcpu->address = info->cpu[i].address; | 640 | pcpu->address = info->cpu[i].address; |
648 | pcpu->state = (cpu >= info->configured) ? | 641 | pcpu->state = (i >= info->configured) ? |
649 | CPU_STATE_STANDBY : CPU_STATE_CONFIGURED; | 642 | CPU_STATE_STANDBY : CPU_STATE_CONFIGURED; |
650 | smp_cpu_set_polarization(cpu, POLARIZATION_UNKNOWN); | 643 | smp_cpu_set_polarization(cpu, POLARIZATION_UNKNOWN); |
651 | set_cpu_present(cpu, true); | 644 | set_cpu_present(cpu, true); |
@@ -760,6 +753,8 @@ int __cpu_disable(void) | |||
760 | { | 753 | { |
761 | unsigned long cregs[16]; | 754 | unsigned long cregs[16]; |
762 | 755 | ||
756 | /* Handle possible pending IPIs */ | ||
757 | smp_handle_ext_call(); | ||
763 | set_cpu_online(smp_processor_id(), false); | 758 | set_cpu_online(smp_processor_id(), false); |
764 | /* Disable pseudo page faults on this cpu. */ | 759 | /* Disable pseudo page faults on this cpu. */ |
765 | pfault_fini(); | 760 | pfault_fini(); |
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index 7805ddca833d..a938b548f07e 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c | |||
@@ -492,7 +492,7 @@ static int gmap_connect_pgtable(unsigned long address, unsigned long segment, | |||
492 | mp = (struct gmap_pgtable *) page->index; | 492 | mp = (struct gmap_pgtable *) page->index; |
493 | rmap->gmap = gmap; | 493 | rmap->gmap = gmap; |
494 | rmap->entry = segment_ptr; | 494 | rmap->entry = segment_ptr; |
495 | rmap->vmaddr = address; | 495 | rmap->vmaddr = address & PMD_MASK; |
496 | spin_lock(&mm->page_table_lock); | 496 | spin_lock(&mm->page_table_lock); |
497 | if (*segment_ptr == segment) { | 497 | if (*segment_ptr == segment) { |
498 | list_add(&rmap->list, &mp->mapper); | 498 | list_add(&rmap->list, &mp->mapper); |
@@ -677,8 +677,7 @@ int gmap_ipte_notify(struct gmap *gmap, unsigned long start, unsigned long len) | |||
677 | break; | 677 | break; |
678 | } | 678 | } |
679 | /* Get the page mapped */ | 679 | /* Get the page mapped */ |
680 | if (get_user_pages(current, gmap->mm, addr, 1, 1, 0, | 680 | if (fixup_user_fault(current, gmap->mm, addr, FAULT_FLAG_WRITE)) { |
681 | NULL, NULL) != 1) { | ||
682 | rc = -EFAULT; | 681 | rc = -EFAULT; |
683 | break; | 682 | break; |
684 | } | 683 | } |
diff --git a/arch/score/mm/init.c b/arch/score/mm/init.c index d8f988a37d16..0940682ab38b 100644 --- a/arch/score/mm/init.c +++ b/arch/score/mm/init.c | |||
@@ -41,8 +41,6 @@ | |||
41 | unsigned long empty_zero_page; | 41 | unsigned long empty_zero_page; |
42 | EXPORT_SYMBOL_GPL(empty_zero_page); | 42 | EXPORT_SYMBOL_GPL(empty_zero_page); |
43 | 43 | ||
44 | static struct kcore_list kcore_mem, kcore_vmalloc; | ||
45 | |||
46 | static void setup_zero_page(void) | 44 | static void setup_zero_page(void) |
47 | { | 45 | { |
48 | struct page *page; | 46 | struct page *page; |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 6a154a91c7e7..685692c94f05 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -108,7 +108,6 @@ config X86 | |||
108 | select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC) | 108 | select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC) |
109 | select GENERIC_TIME_VSYSCALL if X86_64 | 109 | select GENERIC_TIME_VSYSCALL if X86_64 |
110 | select KTIME_SCALAR if X86_32 | 110 | select KTIME_SCALAR if X86_32 |
111 | select ALWAYS_USE_PERSISTENT_CLOCK | ||
112 | select GENERIC_STRNCPY_FROM_USER | 111 | select GENERIC_STRNCPY_FROM_USER |
113 | select GENERIC_STRNLEN_USER | 112 | select GENERIC_STRNLEN_USER |
114 | select HAVE_CONTEXT_TRACKING if X86_64 | 113 | select HAVE_CONTEXT_TRACKING if X86_64 |
diff --git a/arch/x86/crypto/crc32-pclmul_asm.S b/arch/x86/crypto/crc32-pclmul_asm.S index 94c27df8a549..f247304299a2 100644 --- a/arch/x86/crypto/crc32-pclmul_asm.S +++ b/arch/x86/crypto/crc32-pclmul_asm.S | |||
@@ -240,7 +240,7 @@ fold_64: | |||
240 | pand %xmm3, %xmm1 | 240 | pand %xmm3, %xmm1 |
241 | PCLMULQDQ 0x00, CONSTANT, %xmm1 | 241 | PCLMULQDQ 0x00, CONSTANT, %xmm1 |
242 | pxor %xmm2, %xmm1 | 242 | pxor %xmm2, %xmm1 |
243 | pextrd $0x01, %xmm1, %eax | 243 | PEXTRD 0x01, %xmm1, %eax |
244 | 244 | ||
245 | ret | 245 | ret |
246 | ENDPROC(crc32_pclmul_le_16) | 246 | ENDPROC(crc32_pclmul_le_16) |
diff --git a/arch/x86/crypto/sha256-avx-asm.S b/arch/x86/crypto/sha256-avx-asm.S index 56610c4bf31b..642f15687a0a 100644 --- a/arch/x86/crypto/sha256-avx-asm.S +++ b/arch/x86/crypto/sha256-avx-asm.S | |||
@@ -118,7 +118,7 @@ y2 = %r15d | |||
118 | 118 | ||
119 | _INP_END_SIZE = 8 | 119 | _INP_END_SIZE = 8 |
120 | _INP_SIZE = 8 | 120 | _INP_SIZE = 8 |
121 | _XFER_SIZE = 8 | 121 | _XFER_SIZE = 16 |
122 | _XMM_SAVE_SIZE = 0 | 122 | _XMM_SAVE_SIZE = 0 |
123 | 123 | ||
124 | _INP_END = 0 | 124 | _INP_END = 0 |
diff --git a/arch/x86/crypto/sha256-ssse3-asm.S b/arch/x86/crypto/sha256-ssse3-asm.S index 98d3c391da81..f833b74d902b 100644 --- a/arch/x86/crypto/sha256-ssse3-asm.S +++ b/arch/x86/crypto/sha256-ssse3-asm.S | |||
@@ -111,7 +111,7 @@ y2 = %r15d | |||
111 | 111 | ||
112 | _INP_END_SIZE = 8 | 112 | _INP_END_SIZE = 8 |
113 | _INP_SIZE = 8 | 113 | _INP_SIZE = 8 |
114 | _XFER_SIZE = 8 | 114 | _XFER_SIZE = 16 |
115 | _XMM_SAVE_SIZE = 0 | 115 | _XMM_SAVE_SIZE = 0 |
116 | 116 | ||
117 | _INP_END = 0 | 117 | _INP_END = 0 |
diff --git a/arch/x86/include/asm/inst.h b/arch/x86/include/asm/inst.h index 280bf7fb6aba..3e115273ed88 100644 --- a/arch/x86/include/asm/inst.h +++ b/arch/x86/include/asm/inst.h | |||
@@ -9,12 +9,68 @@ | |||
9 | 9 | ||
10 | #define REG_NUM_INVALID 100 | 10 | #define REG_NUM_INVALID 100 |
11 | 11 | ||
12 | #define REG_TYPE_R64 0 | 12 | #define REG_TYPE_R32 0 |
13 | #define REG_TYPE_XMM 1 | 13 | #define REG_TYPE_R64 1 |
14 | #define REG_TYPE_XMM 2 | ||
14 | #define REG_TYPE_INVALID 100 | 15 | #define REG_TYPE_INVALID 100 |
15 | 16 | ||
17 | .macro R32_NUM opd r32 | ||
18 | \opd = REG_NUM_INVALID | ||
19 | .ifc \r32,%eax | ||
20 | \opd = 0 | ||
21 | .endif | ||
22 | .ifc \r32,%ecx | ||
23 | \opd = 1 | ||
24 | .endif | ||
25 | .ifc \r32,%edx | ||
26 | \opd = 2 | ||
27 | .endif | ||
28 | .ifc \r32,%ebx | ||
29 | \opd = 3 | ||
30 | .endif | ||
31 | .ifc \r32,%esp | ||
32 | \opd = 4 | ||
33 | .endif | ||
34 | .ifc \r32,%ebp | ||
35 | \opd = 5 | ||
36 | .endif | ||
37 | .ifc \r32,%esi | ||
38 | \opd = 6 | ||
39 | .endif | ||
40 | .ifc \r32,%edi | ||
41 | \opd = 7 | ||
42 | .endif | ||
43 | #ifdef CONFIG_X86_64 | ||
44 | .ifc \r32,%r8d | ||
45 | \opd = 8 | ||
46 | .endif | ||
47 | .ifc \r32,%r9d | ||
48 | \opd = 9 | ||
49 | .endif | ||
50 | .ifc \r32,%r10d | ||
51 | \opd = 10 | ||
52 | .endif | ||
53 | .ifc \r32,%r11d | ||
54 | \opd = 11 | ||
55 | .endif | ||
56 | .ifc \r32,%r12d | ||
57 | \opd = 12 | ||
58 | .endif | ||
59 | .ifc \r32,%r13d | ||
60 | \opd = 13 | ||
61 | .endif | ||
62 | .ifc \r32,%r14d | ||
63 | \opd = 14 | ||
64 | .endif | ||
65 | .ifc \r32,%r15d | ||
66 | \opd = 15 | ||
67 | .endif | ||
68 | #endif | ||
69 | .endm | ||
70 | |||
16 | .macro R64_NUM opd r64 | 71 | .macro R64_NUM opd r64 |
17 | \opd = REG_NUM_INVALID | 72 | \opd = REG_NUM_INVALID |
73 | #ifdef CONFIG_X86_64 | ||
18 | .ifc \r64,%rax | 74 | .ifc \r64,%rax |
19 | \opd = 0 | 75 | \opd = 0 |
20 | .endif | 76 | .endif |
@@ -63,6 +119,7 @@ | |||
63 | .ifc \r64,%r15 | 119 | .ifc \r64,%r15 |
64 | \opd = 15 | 120 | \opd = 15 |
65 | .endif | 121 | .endif |
122 | #endif | ||
66 | .endm | 123 | .endm |
67 | 124 | ||
68 | .macro XMM_NUM opd xmm | 125 | .macro XMM_NUM opd xmm |
@@ -118,10 +175,13 @@ | |||
118 | .endm | 175 | .endm |
119 | 176 | ||
120 | .macro REG_TYPE type reg | 177 | .macro REG_TYPE type reg |
178 | R32_NUM reg_type_r32 \reg | ||
121 | R64_NUM reg_type_r64 \reg | 179 | R64_NUM reg_type_r64 \reg |
122 | XMM_NUM reg_type_xmm \reg | 180 | XMM_NUM reg_type_xmm \reg |
123 | .if reg_type_r64 <> REG_NUM_INVALID | 181 | .if reg_type_r64 <> REG_NUM_INVALID |
124 | \type = REG_TYPE_R64 | 182 | \type = REG_TYPE_R64 |
183 | .elseif reg_type_r32 <> REG_NUM_INVALID | ||
184 | \type = REG_TYPE_R32 | ||
125 | .elseif reg_type_xmm <> REG_NUM_INVALID | 185 | .elseif reg_type_xmm <> REG_NUM_INVALID |
126 | \type = REG_TYPE_XMM | 186 | \type = REG_TYPE_XMM |
127 | .else | 187 | .else |
@@ -162,6 +222,16 @@ | |||
162 | .byte \imm8 | 222 | .byte \imm8 |
163 | .endm | 223 | .endm |
164 | 224 | ||
225 | .macro PEXTRD imm8 xmm gpr | ||
226 | R32_NUM extrd_opd1 \gpr | ||
227 | XMM_NUM extrd_opd2 \xmm | ||
228 | PFX_OPD_SIZE | ||
229 | PFX_REX extrd_opd1 extrd_opd2 | ||
230 | .byte 0x0f, 0x3a, 0x16 | ||
231 | MODRM 0xc0 extrd_opd1 extrd_opd2 | ||
232 | .byte \imm8 | ||
233 | .endm | ||
234 | |||
165 | .macro AESKEYGENASSIST rcon xmm1 xmm2 | 235 | .macro AESKEYGENASSIST rcon xmm1 xmm2 |
166 | XMM_NUM aeskeygen_opd1 \xmm1 | 236 | XMM_NUM aeskeygen_opd1 \xmm1 |
167 | XMM_NUM aeskeygen_opd2 \xmm2 | 237 | XMM_NUM aeskeygen_opd2 \xmm2 |
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index dab95a85f7f8..55b67614ed94 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c | |||
@@ -34,7 +34,7 @@ | |||
34 | extern pgd_t early_level4_pgt[PTRS_PER_PGD]; | 34 | extern pgd_t early_level4_pgt[PTRS_PER_PGD]; |
35 | extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD]; | 35 | extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD]; |
36 | static unsigned int __initdata next_early_pgt = 2; | 36 | static unsigned int __initdata next_early_pgt = 2; |
37 | pmdval_t __initdata early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX); | 37 | pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX); |
38 | 38 | ||
39 | /* Wipe all early page tables except for the kernel symbol map */ | 39 | /* Wipe all early page tables except for the kernel symbol map */ |
40 | static void __init reset_early_page_tables(void) | 40 | static void __init reset_early_page_tables(void) |
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 08f7e8039099..321d65ebaffe 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S | |||
@@ -115,8 +115,10 @@ startup_64: | |||
115 | movq %rdi, %rax | 115 | movq %rdi, %rax |
116 | shrq $PUD_SHIFT, %rax | 116 | shrq $PUD_SHIFT, %rax |
117 | andl $(PTRS_PER_PUD-1), %eax | 117 | andl $(PTRS_PER_PUD-1), %eax |
118 | movq %rdx, (4096+0)(%rbx,%rax,8) | 118 | movq %rdx, 4096(%rbx,%rax,8) |
119 | movq %rdx, (4096+8)(%rbx,%rax,8) | 119 | incl %eax |
120 | andl $(PTRS_PER_PUD-1), %eax | ||
121 | movq %rdx, 4096(%rbx,%rax,8) | ||
120 | 122 | ||
121 | addq $8192, %rbx | 123 | addq $8192, %rbx |
122 | movq %rdi, %rax | 124 | movq %rdi, %rax |
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c index 245a71db401a..cb339097b9ea 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c | |||
@@ -22,23 +22,19 @@ | |||
22 | /* | 22 | /* |
23 | * Were we in an interrupt that interrupted kernel mode? | 23 | * Were we in an interrupt that interrupted kernel mode? |
24 | * | 24 | * |
25 | * For now, with eagerfpu we will return interrupted kernel FPU | ||
26 | * state as not-idle. TBD: Ideally we can change the return value | ||
27 | * to something like __thread_has_fpu(current). But we need to | ||
28 | * be careful of doing __thread_clear_has_fpu() before saving | ||
29 | * the FPU etc for supporting nested uses etc. For now, take | ||
30 | * the simple route! | ||
31 | * | ||
32 | * On others, we can do a kernel_fpu_begin/end() pair *ONLY* if that | 25 | * On others, we can do a kernel_fpu_begin/end() pair *ONLY* if that |
33 | * pair does nothing at all: the thread must not have fpu (so | 26 | * pair does nothing at all: the thread must not have fpu (so |
34 | * that we don't try to save the FPU state), and TS must | 27 | * that we don't try to save the FPU state), and TS must |
35 | * be set (so that the clts/stts pair does nothing that is | 28 | * be set (so that the clts/stts pair does nothing that is |
36 | * visible in the interrupted kernel thread). | 29 | * visible in the interrupted kernel thread). |
30 | * | ||
31 | * Except for the eagerfpu case when we return 1 unless we've already | ||
32 | * been eager and saved the state in kernel_fpu_begin(). | ||
37 | */ | 33 | */ |
38 | static inline bool interrupted_kernel_fpu_idle(void) | 34 | static inline bool interrupted_kernel_fpu_idle(void) |
39 | { | 35 | { |
40 | if (use_eager_fpu()) | 36 | if (use_eager_fpu()) |
41 | return 0; | 37 | return __thread_has_fpu(current); |
42 | 38 | ||
43 | return !__thread_has_fpu(current) && | 39 | return !__thread_has_fpu(current) && |
44 | (read_cr0() & X86_CR0_TS); | 40 | (read_cr0() & X86_CR0_TS); |
@@ -78,8 +74,8 @@ void __kernel_fpu_begin(void) | |||
78 | struct task_struct *me = current; | 74 | struct task_struct *me = current; |
79 | 75 | ||
80 | if (__thread_has_fpu(me)) { | 76 | if (__thread_has_fpu(me)) { |
81 | __save_init_fpu(me); | ||
82 | __thread_clear_has_fpu(me); | 77 | __thread_clear_has_fpu(me); |
78 | __save_init_fpu(me); | ||
83 | /* We do 'stts()' in __kernel_fpu_end() */ | 79 | /* We do 'stts()' in __kernel_fpu_end() */ |
84 | } else if (!use_eager_fpu()) { | 80 | } else if (!use_eager_fpu()) { |
85 | this_cpu_write(fpu_owner_task, NULL); | 81 | this_cpu_write(fpu_owner_task, NULL); |
diff --git a/arch/x86/kernel/microcode_intel_early.c b/arch/x86/kernel/microcode_intel_early.c index d893e8ed8ac9..2e9e12871c2b 100644 --- a/arch/x86/kernel/microcode_intel_early.c +++ b/arch/x86/kernel/microcode_intel_early.c | |||
@@ -487,6 +487,7 @@ static inline void show_saved_mc(void) | |||
487 | #endif | 487 | #endif |
488 | 488 | ||
489 | #if defined(CONFIG_MICROCODE_INTEL_EARLY) && defined(CONFIG_HOTPLUG_CPU) | 489 | #if defined(CONFIG_MICROCODE_INTEL_EARLY) && defined(CONFIG_HOTPLUG_CPU) |
490 | static DEFINE_MUTEX(x86_cpu_microcode_mutex); | ||
490 | /* | 491 | /* |
491 | * Save this mc into mc_saved_data. So it will be loaded early when a CPU is | 492 | * Save this mc into mc_saved_data. So it will be loaded early when a CPU is |
492 | * hot added or resumes. | 493 | * hot added or resumes. |
@@ -507,7 +508,7 @@ int save_mc_for_early(u8 *mc) | |||
507 | * Hold hotplug lock so mc_saved_data is not accessed by a CPU in | 508 | * Hold hotplug lock so mc_saved_data is not accessed by a CPU in |
508 | * hotplug. | 509 | * hotplug. |
509 | */ | 510 | */ |
510 | cpu_hotplug_driver_lock(); | 511 | mutex_lock(&x86_cpu_microcode_mutex); |
511 | 512 | ||
512 | mc_saved_count_init = mc_saved_data.mc_saved_count; | 513 | mc_saved_count_init = mc_saved_data.mc_saved_count; |
513 | mc_saved_count = mc_saved_data.mc_saved_count; | 514 | mc_saved_count = mc_saved_data.mc_saved_count; |
@@ -544,7 +545,7 @@ int save_mc_for_early(u8 *mc) | |||
544 | } | 545 | } |
545 | 546 | ||
546 | out: | 547 | out: |
547 | cpu_hotplug_driver_unlock(); | 548 | mutex_unlock(&x86_cpu_microcode_mutex); |
548 | 549 | ||
549 | return ret; | 550 | return ret; |
550 | } | 551 | } |
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 607af0d4d5ef..4e7a37ff03ab 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
@@ -312,6 +312,8 @@ void arch_cpu_idle(void) | |||
312 | { | 312 | { |
313 | if (cpuidle_idle_call()) | 313 | if (cpuidle_idle_call()) |
314 | x86_idle(); | 314 | x86_idle(); |
315 | else | ||
316 | local_irq_enable(); | ||
315 | } | 317 | } |
316 | 318 | ||
317 | /* | 319 | /* |
@@ -368,9 +370,6 @@ void amd_e400_remove_cpu(int cpu) | |||
368 | */ | 370 | */ |
369 | static void amd_e400_idle(void) | 371 | static void amd_e400_idle(void) |
370 | { | 372 | { |
371 | if (need_resched()) | ||
372 | return; | ||
373 | |||
374 | if (!amd_e400_c1e_detected) { | 373 | if (!amd_e400_c1e_detected) { |
375 | u32 lo, hi; | 374 | u32 lo, hi; |
376 | 375 | ||
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 8db0010ed150..5953dcea752d 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c | |||
@@ -1240,9 +1240,12 @@ static int decode_modrm(struct x86_emulate_ctxt *ctxt, | |||
1240 | ctxt->modrm_seg = VCPU_SREG_DS; | 1240 | ctxt->modrm_seg = VCPU_SREG_DS; |
1241 | 1241 | ||
1242 | if (ctxt->modrm_mod == 3) { | 1242 | if (ctxt->modrm_mod == 3) { |
1243 | int highbyte_regs = ctxt->rex_prefix == 0; | ||
1244 | |||
1243 | op->type = OP_REG; | 1245 | op->type = OP_REG; |
1244 | op->bytes = (ctxt->d & ByteOp) ? 1 : ctxt->op_bytes; | 1246 | op->bytes = (ctxt->d & ByteOp) ? 1 : ctxt->op_bytes; |
1245 | op->addr.reg = decode_register(ctxt, ctxt->modrm_rm, ctxt->d & ByteOp); | 1247 | op->addr.reg = decode_register(ctxt, ctxt->modrm_rm, |
1248 | highbyte_regs && (ctxt->d & ByteOp)); | ||
1246 | if (ctxt->d & Sse) { | 1249 | if (ctxt->d & Sse) { |
1247 | op->type = OP_XMM; | 1250 | op->type = OP_XMM; |
1248 | op->bytes = 16; | 1251 | op->bytes = 16; |
@@ -3997,7 +4000,8 @@ static const struct opcode twobyte_table[256] = { | |||
3997 | DI(ImplicitOps | Priv, invd), DI(ImplicitOps | Priv, wbinvd), N, N, | 4000 | DI(ImplicitOps | Priv, invd), DI(ImplicitOps | Priv, wbinvd), N, N, |
3998 | N, D(ImplicitOps | ModRM), N, N, | 4001 | N, D(ImplicitOps | ModRM), N, N, |
3999 | /* 0x10 - 0x1F */ | 4002 | /* 0x10 - 0x1F */ |
4000 | N, N, N, N, N, N, N, N, D(ImplicitOps | ModRM), N, N, N, N, N, N, N, | 4003 | N, N, N, N, N, N, N, N, |
4004 | D(ImplicitOps | ModRM), N, N, N, N, N, N, D(ImplicitOps | ModRM), | ||
4001 | /* 0x20 - 0x2F */ | 4005 | /* 0x20 - 0x2F */ |
4002 | DIP(ModRM | DstMem | Priv | Op3264, cr_read, check_cr_read), | 4006 | DIP(ModRM | DstMem | Priv | Op3264, cr_read, check_cr_read), |
4003 | DIP(ModRM | DstMem | Priv | Op3264, dr_read, check_dr_read), | 4007 | DIP(ModRM | DstMem | Priv | Op3264, dr_read, check_dr_read), |
@@ -4836,6 +4840,7 @@ twobyte_insn: | |||
4836 | case 0x08: /* invd */ | 4840 | case 0x08: /* invd */ |
4837 | case 0x0d: /* GrpP (prefetch) */ | 4841 | case 0x0d: /* GrpP (prefetch) */ |
4838 | case 0x18: /* Grp16 (prefetch/nop) */ | 4842 | case 0x18: /* Grp16 (prefetch/nop) */ |
4843 | case 0x1f: /* nop */ | ||
4839 | break; | 4844 | break; |
4840 | case 0x20: /* mov cr, reg */ | 4845 | case 0x20: /* mov cr, reg */ |
4841 | ctxt->dst.val = ops->get_cr(ctxt, ctxt->modrm_reg); | 4846 | ctxt->dst.val = ops->get_cr(ctxt, ctxt->modrm_reg); |
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index e1adbb4aca75..0eee2c8b64d1 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
@@ -1861,11 +1861,14 @@ void kvm_apic_accept_events(struct kvm_vcpu *vcpu) | |||
1861 | { | 1861 | { |
1862 | struct kvm_lapic *apic = vcpu->arch.apic; | 1862 | struct kvm_lapic *apic = vcpu->arch.apic; |
1863 | unsigned int sipi_vector; | 1863 | unsigned int sipi_vector; |
1864 | unsigned long pe; | ||
1864 | 1865 | ||
1865 | if (!kvm_vcpu_has_lapic(vcpu)) | 1866 | if (!kvm_vcpu_has_lapic(vcpu) || !apic->pending_events) |
1866 | return; | 1867 | return; |
1867 | 1868 | ||
1868 | if (test_and_clear_bit(KVM_APIC_INIT, &apic->pending_events)) { | 1869 | pe = xchg(&apic->pending_events, 0); |
1870 | |||
1871 | if (test_bit(KVM_APIC_INIT, &pe)) { | ||
1869 | kvm_lapic_reset(vcpu); | 1872 | kvm_lapic_reset(vcpu); |
1870 | kvm_vcpu_reset(vcpu); | 1873 | kvm_vcpu_reset(vcpu); |
1871 | if (kvm_vcpu_is_bsp(apic->vcpu)) | 1874 | if (kvm_vcpu_is_bsp(apic->vcpu)) |
@@ -1873,7 +1876,7 @@ void kvm_apic_accept_events(struct kvm_vcpu *vcpu) | |||
1873 | else | 1876 | else |
1874 | vcpu->arch.mp_state = KVM_MP_STATE_INIT_RECEIVED; | 1877 | vcpu->arch.mp_state = KVM_MP_STATE_INIT_RECEIVED; |
1875 | } | 1878 | } |
1876 | if (test_and_clear_bit(KVM_APIC_SIPI, &apic->pending_events) && | 1879 | if (test_bit(KVM_APIC_SIPI, &pe) && |
1877 | vcpu->arch.mp_state == KVM_MP_STATE_INIT_RECEIVED) { | 1880 | vcpu->arch.mp_state == KVM_MP_STATE_INIT_RECEIVED) { |
1878 | /* evaluate pending_events before reading the vector */ | 1881 | /* evaluate pending_events before reading the vector */ |
1879 | smp_rmb(); | 1882 | smp_rmb(); |
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index fdc5dca14fb3..eaac1743def7 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c | |||
@@ -359,7 +359,17 @@ unsigned long __init_refok init_memory_mapping(unsigned long start, | |||
359 | } | 359 | } |
360 | 360 | ||
361 | /* | 361 | /* |
362 | * would have hole in the middle or ends, and only ram parts will be mapped. | 362 | * We need to iterate through the E820 memory map and create direct mappings |
363 | * for only E820_RAM and E820_KERN_RESERVED regions. We cannot simply | ||
364 | * create direct mappings for all pfns from [0 to max_low_pfn) and | ||
365 | * [4GB to max_pfn) because of possible memory holes in high addresses | ||
366 | * that cannot be marked as UC by fixed/variable range MTRRs. | ||
367 | * Depending on the alignment of E820 ranges, this may possibly result | ||
368 | * in using smaller size (i.e. 4K instead of 2M or 1G) page tables. | ||
369 | * | ||
370 | * init_mem_mapping() calls init_range_memory_mapping() with big range. | ||
371 | * That range would have hole in the middle or ends, and only ram parts | ||
372 | * will be mapped in init_range_memory_mapping(). | ||
363 | */ | 373 | */ |
364 | static unsigned long __init init_range_memory_mapping( | 374 | static unsigned long __init init_range_memory_mapping( |
365 | unsigned long r_start, | 375 | unsigned long r_start, |
@@ -419,6 +429,13 @@ void __init init_mem_mapping(void) | |||
419 | max_pfn_mapped = 0; /* will get exact value next */ | 429 | max_pfn_mapped = 0; /* will get exact value next */ |
420 | min_pfn_mapped = real_end >> PAGE_SHIFT; | 430 | min_pfn_mapped = real_end >> PAGE_SHIFT; |
421 | last_start = start = real_end; | 431 | last_start = start = real_end; |
432 | |||
433 | /* | ||
434 | * We start from the top (end of memory) and go to the bottom. | ||
435 | * The memblock_find_in_range() gets us a block of RAM from the | ||
436 | * end of RAM in [min_pfn_mapped, max_pfn_mapped) used as new pages | ||
437 | * for page table. | ||
438 | */ | ||
422 | while (last_start > ISA_END_ADDRESS) { | 439 | while (last_start > ISA_END_ADDRESS) { |
423 | if (last_start > step_size) { | 440 | if (last_start > step_size) { |
424 | start = round_down(last_start - 1, step_size); | 441 | start = round_down(last_start - 1, step_size); |
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index 305c68b8d538..981c2dbd72cc 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c | |||
@@ -628,7 +628,9 @@ int pcibios_add_device(struct pci_dev *dev) | |||
628 | 628 | ||
629 | pa_data = boot_params.hdr.setup_data; | 629 | pa_data = boot_params.hdr.setup_data; |
630 | while (pa_data) { | 630 | while (pa_data) { |
631 | data = phys_to_virt(pa_data); | 631 | data = ioremap(pa_data, sizeof(*rom)); |
632 | if (!data) | ||
633 | return -ENOMEM; | ||
632 | 634 | ||
633 | if (data->type == SETUP_PCI) { | 635 | if (data->type == SETUP_PCI) { |
634 | rom = (struct pci_setup_rom *)data; | 636 | rom = (struct pci_setup_rom *)data; |
@@ -645,6 +647,7 @@ int pcibios_add_device(struct pci_dev *dev) | |||
645 | } | 647 | } |
646 | } | 648 | } |
647 | pa_data = data->next; | 649 | pa_data = data->next; |
650 | iounmap(data); | ||
648 | } | 651 | } |
649 | return 0; | 652 | return 0; |
650 | } | 653 | } |
diff --git a/arch/x86/pci/mrst.c b/arch/x86/pci/mrst.c index 0e0fabf17342..6eb18c42a28a 100644 --- a/arch/x86/pci/mrst.c +++ b/arch/x86/pci/mrst.c | |||
@@ -141,11 +141,6 @@ static int pci_device_update_fixed(struct pci_bus *bus, unsigned int devfn, | |||
141 | */ | 141 | */ |
142 | static bool type1_access_ok(unsigned int bus, unsigned int devfn, int reg) | 142 | static bool type1_access_ok(unsigned int bus, unsigned int devfn, int reg) |
143 | { | 143 | { |
144 | if (bus == 0 && (devfn == PCI_DEVFN(2, 0) | ||
145 | || devfn == PCI_DEVFN(0, 0) | ||
146 | || devfn == PCI_DEVFN(3, 0))) | ||
147 | return 1; | ||
148 | |||
149 | /* This is a workaround for A0 LNC bug where PCI status register does | 144 | /* This is a workaround for A0 LNC bug where PCI status register does |
150 | * not have new CAP bit set. can not be written by SW either. | 145 | * not have new CAP bit set. can not be written by SW either. |
151 | * | 146 | * |
@@ -155,7 +150,10 @@ static bool type1_access_ok(unsigned int bus, unsigned int devfn, int reg) | |||
155 | */ | 150 | */ |
156 | if (reg >= 0x100 || reg == PCI_STATUS || reg == PCI_HEADER_TYPE) | 151 | if (reg >= 0x100 || reg == PCI_STATUS || reg == PCI_HEADER_TYPE) |
157 | return 0; | 152 | return 0; |
158 | 153 | if (bus == 0 && (devfn == PCI_DEVFN(2, 0) | |
154 | || devfn == PCI_DEVFN(0, 0) | ||
155 | || devfn == PCI_DEVFN(3, 0))) | ||
156 | return 1; | ||
159 | return 0; /* langwell on others */ | 157 | return 0; /* langwell on others */ |
160 | } | 158 | } |
161 | 159 | ||
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index 55856b2310d3..82089d8b1954 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c | |||
@@ -206,7 +206,7 @@ static efi_status_t virt_efi_get_next_variable(unsigned long *name_size, | |||
206 | } | 206 | } |
207 | 207 | ||
208 | if (boot_used_size && !finished) { | 208 | if (boot_used_size && !finished) { |
209 | unsigned long size; | 209 | unsigned long size = 0; |
210 | u32 attr; | 210 | u32 attr; |
211 | efi_status_t s; | 211 | efi_status_t s; |
212 | void *tmp; | 212 | void *tmp; |
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index 8ff37995d54e..fb44426fe931 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c | |||
@@ -576,24 +576,22 @@ void xen_send_IPI_mask_allbutself(const struct cpumask *mask, | |||
576 | { | 576 | { |
577 | unsigned cpu; | 577 | unsigned cpu; |
578 | unsigned int this_cpu = smp_processor_id(); | 578 | unsigned int this_cpu = smp_processor_id(); |
579 | int xen_vector = xen_map_vector(vector); | ||
579 | 580 | ||
580 | if (!(num_online_cpus() > 1)) | 581 | if (!(num_online_cpus() > 1) || (xen_vector < 0)) |
581 | return; | 582 | return; |
582 | 583 | ||
583 | for_each_cpu_and(cpu, mask, cpu_online_mask) { | 584 | for_each_cpu_and(cpu, mask, cpu_online_mask) { |
584 | if (this_cpu == cpu) | 585 | if (this_cpu == cpu) |
585 | continue; | 586 | continue; |
586 | 587 | ||
587 | xen_smp_send_call_function_single_ipi(cpu); | 588 | xen_send_IPI_one(cpu, xen_vector); |
588 | } | 589 | } |
589 | } | 590 | } |
590 | 591 | ||
591 | void xen_send_IPI_allbutself(int vector) | 592 | void xen_send_IPI_allbutself(int vector) |
592 | { | 593 | { |
593 | int xen_vector = xen_map_vector(vector); | 594 | xen_send_IPI_mask_allbutself(cpu_online_mask, vector); |
594 | |||
595 | if (xen_vector >= 0) | ||
596 | xen_send_IPI_mask_allbutself(cpu_online_mask, xen_vector); | ||
597 | } | 595 | } |
598 | 596 | ||
599 | static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id) | 597 | static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id) |
diff --git a/arch/x86/xen/smp.h b/arch/x86/xen/smp.h index 8981a76d081a..c7c2d89efd76 100644 --- a/arch/x86/xen/smp.h +++ b/arch/x86/xen/smp.h | |||
@@ -5,7 +5,6 @@ extern void xen_send_IPI_mask(const struct cpumask *mask, | |||
5 | extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask, | 5 | extern void xen_send_IPI_mask_allbutself(const struct cpumask *mask, |
6 | int vector); | 6 | int vector); |
7 | extern void xen_send_IPI_allbutself(int vector); | 7 | extern void xen_send_IPI_allbutself(int vector); |
8 | extern void physflat_send_IPI_allbutself(int vector); | ||
9 | extern void xen_send_IPI_all(int vector); | 8 | extern void xen_send_IPI_all(int vector); |
10 | extern void xen_send_IPI_self(int vector); | 9 | extern void xen_send_IPI_self(int vector); |
11 | 10 | ||