diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-29 12:07:15 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-29 12:07:15 -0400 |
| commit | 0d43f5123d1456669b3bbc69854faf6fd5b14caa (patch) | |
| tree | e69d4418d579e55a004c2263ac49a46aac161a54 | |
| parent | fb3165b59f9ce510fed07262db20fdb799f88fa6 (diff) | |
| parent | ffb4a73d8906f71910e6c83ec2b499e70025ee8e (diff) | |
Merge branch 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
sh: Fix hugetlbfs dependencies for SH-3 && MMU configurations.
sh: Document uImage.bin target in archhelp.
sh: add uImage.bin target
sh: rsk7203 CONFIG_MTD=n fix
sh: Check for return_to_handler when unwinding the stack
sh: Build fix: define more __movmem* symbols
sh: __irq_entry annotate do_IRQ().
Fix up sh/powerpc conflicts in fs/Kconfig
| -rw-r--r-- | arch/sh/Kconfig | 5 | ||||
| -rw-r--r-- | arch/sh/Makefile | 3 | ||||
| -rw-r--r-- | arch/sh/boards/mach-rsk/devices-rsk7203.c | 4 | ||||
| -rw-r--r-- | arch/sh/boards/mach-rsk/setup.c | 23 | ||||
| -rw-r--r-- | arch/sh/boot/Makefile | 6 | ||||
| -rw-r--r-- | arch/sh/kernel/dwarf.c | 22 | ||||
| -rw-r--r-- | arch/sh/kernel/irq.c | 3 | ||||
| -rw-r--r-- | arch/sh/kernel/sh_ksyms_32.c | 14 | ||||
| -rw-r--r-- | arch/sh/mm/Kconfig | 2 | ||||
| -rw-r--r-- | fs/Kconfig | 4 |
10 files changed, 67 insertions, 19 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 0dc7e3cbeffa..88cdeb9f72d9 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
| @@ -121,6 +121,9 @@ config SYS_SUPPORTS_APM_EMULATION | |||
| 121 | bool | 121 | bool |
| 122 | select ARCH_SUSPEND_POSSIBLE | 122 | select ARCH_SUSPEND_POSSIBLE |
| 123 | 123 | ||
| 124 | config SYS_SUPPORTS_HUGETLBFS | ||
| 125 | bool | ||
| 126 | |||
| 124 | config SYS_SUPPORTS_SMP | 127 | config SYS_SUPPORTS_SMP |
| 125 | bool | 128 | bool |
| 126 | 129 | ||
| @@ -195,6 +198,7 @@ config CPU_SH4 | |||
| 195 | select CPU_HAS_SR_RB | 198 | select CPU_HAS_SR_RB |
| 196 | select CPU_HAS_FPU if !CPU_SH4AL_DSP | 199 | select CPU_HAS_FPU if !CPU_SH4AL_DSP |
| 197 | select SYS_SUPPORTS_TMU | 200 | select SYS_SUPPORTS_TMU |
| 201 | select SYS_SUPPORTS_HUGETLBFS if MMU | ||
| 198 | 202 | ||
| 199 | config CPU_SH4A | 203 | config CPU_SH4A |
| 200 | bool | 204 | bool |
| @@ -209,6 +213,7 @@ config CPU_SH5 | |||
| 209 | bool | 213 | bool |
| 210 | select CPU_HAS_FPU | 214 | select CPU_HAS_FPU |
| 211 | select SYS_SUPPORTS_TMU | 215 | select SYS_SUPPORTS_TMU |
| 216 | select SYS_SUPPORTS_HUGETLBFS if MMU | ||
| 212 | 217 | ||
| 213 | config CPU_SHX2 | 218 | config CPU_SHX2 |
| 214 | bool | 219 | bool |
diff --git a/arch/sh/Makefile b/arch/sh/Makefile index fc51a918b31a..66e40aabc600 100644 --- a/arch/sh/Makefile +++ b/arch/sh/Makefile | |||
| @@ -199,7 +199,7 @@ endif | |||
| 199 | libs-$(CONFIG_SUPERH32) := arch/sh/lib/ $(libs-y) | 199 | libs-$(CONFIG_SUPERH32) := arch/sh/lib/ $(libs-y) |
| 200 | libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y) | 200 | libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y) |
| 201 | 201 | ||
| 202 | BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.srec \ | 202 | BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.srec uImage.bin \ |
| 203 | zImage vmlinux.srec romImage | 203 | zImage vmlinux.srec romImage |
| 204 | PHONY += maketools $(BOOT_TARGETS) FORCE | 204 | PHONY += maketools $(BOOT_TARGETS) FORCE |
| 205 | 205 | ||
| @@ -225,6 +225,7 @@ define archhelp | |||
| 225 | @echo ' vmlinux.srec - Create an ELF S-record' | 225 | @echo ' vmlinux.srec - Create an ELF S-record' |
| 226 | @echo '* uImage - Alias to bootable U-Boot image' | 226 | @echo '* uImage - Alias to bootable U-Boot image' |
| 227 | @echo ' uImage.srec - Create an S-record for U-Boot' | 227 | @echo ' uImage.srec - Create an S-record for U-Boot' |
| 228 | @echo ' uImage.bin - Kernel-only image for U-Boot (bin)' | ||
| 228 | @echo '* uImage.gz - Kernel-only image for U-Boot (gzip)' | 229 | @echo '* uImage.gz - Kernel-only image for U-Boot (gzip)' |
| 229 | @echo ' uImage.bz2 - Kernel-only image for U-Boot (bzip2)' | 230 | @echo ' uImage.bz2 - Kernel-only image for U-Boot (bzip2)' |
| 230 | @echo ' uImage.lzma - Kernel-only image for U-Boot (lzma)' | 231 | @echo ' uImage.lzma - Kernel-only image for U-Boot (lzma)' |
diff --git a/arch/sh/boards/mach-rsk/devices-rsk7203.c b/arch/sh/boards/mach-rsk/devices-rsk7203.c index 4af3a771c058..c37617e63220 100644 --- a/arch/sh/boards/mach-rsk/devices-rsk7203.c +++ b/arch/sh/boards/mach-rsk/devices-rsk7203.c | |||
| @@ -11,10 +11,6 @@ | |||
| 11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
| 12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
| 13 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
| 14 | #include <linux/mtd/mtd.h> | ||
| 15 | #include <linux/mtd/partitions.h> | ||
| 16 | #include <linux/mtd/physmap.h> | ||
| 17 | #include <linux/mtd/map.h> | ||
| 18 | #include <linux/smsc911x.h> | 14 | #include <linux/smsc911x.h> |
| 19 | #include <linux/gpio.h> | 15 | #include <linux/gpio.h> |
| 20 | #include <linux/leds.h> | 16 | #include <linux/leds.h> |
diff --git a/arch/sh/boards/mach-rsk/setup.c b/arch/sh/boards/mach-rsk/setup.c index af64d030a5c7..a5c0df785bfe 100644 --- a/arch/sh/boards/mach-rsk/setup.c +++ b/arch/sh/boards/mach-rsk/setup.c | |||
| @@ -15,14 +15,12 @@ | |||
| 15 | #include <linux/mtd/mtd.h> | 15 | #include <linux/mtd/mtd.h> |
| 16 | #include <linux/mtd/partitions.h> | 16 | #include <linux/mtd/partitions.h> |
| 17 | #include <linux/mtd/physmap.h> | 17 | #include <linux/mtd/physmap.h> |
| 18 | #ifdef CONFIG_MTD | ||
| 18 | #include <linux/mtd/map.h> | 19 | #include <linux/mtd/map.h> |
| 20 | #endif | ||
| 19 | #include <asm/machvec.h> | 21 | #include <asm/machvec.h> |
| 20 | #include <asm/io.h> | 22 | #include <asm/io.h> |
| 21 | 23 | ||
| 22 | static const char *probes[] = { "cmdlinepart", NULL }; | ||
| 23 | |||
| 24 | static struct mtd_partition *parsed_partitions; | ||
| 25 | |||
| 26 | static struct mtd_partition rsk_partitions[] = { | 24 | static struct mtd_partition rsk_partitions[] = { |
| 27 | { | 25 | { |
| 28 | .name = "Bootloader", | 26 | .name = "Bootloader", |
| @@ -41,6 +39,8 @@ static struct mtd_partition rsk_partitions[] = { | |||
| 41 | }; | 39 | }; |
| 42 | 40 | ||
| 43 | static struct physmap_flash_data flash_data = { | 41 | static struct physmap_flash_data flash_data = { |
| 42 | .parts = rsk_partitions, | ||
| 43 | .nr_parts = ARRAY_SIZE(rsk_partitions), | ||
| 44 | .width = 2, | 44 | .width = 2, |
| 45 | }; | 45 | }; |
| 46 | 46 | ||
| @@ -60,7 +60,8 @@ static struct platform_device flash_device = { | |||
| 60 | }, | 60 | }, |
| 61 | }; | 61 | }; |
| 62 | 62 | ||
| 63 | static struct mtd_info *flash_mtd; | 63 | #ifdef CONFIG_MTD |
| 64 | static const char *probes[] = { "cmdlinepart", NULL }; | ||
| 64 | 65 | ||
| 65 | static struct map_info rsk_flash_map = { | 66 | static struct map_info rsk_flash_map = { |
| 66 | .name = "RSK+ Flash", | 67 | .name = "RSK+ Flash", |
| @@ -68,6 +69,10 @@ static struct map_info rsk_flash_map = { | |||
| 68 | .bankwidth = 2, | 69 | .bankwidth = 2, |
| 69 | }; | 70 | }; |
| 70 | 71 | ||
| 72 | static struct mtd_info *flash_mtd; | ||
| 73 | |||
| 74 | static struct mtd_partition *parsed_partitions; | ||
| 75 | |||
| 71 | static void __init set_mtd_partitions(void) | 76 | static void __init set_mtd_partitions(void) |
| 72 | { | 77 | { |
| 73 | int nr_parts = 0; | 78 | int nr_parts = 0; |
| @@ -77,14 +82,14 @@ static void __init set_mtd_partitions(void) | |||
| 77 | nr_parts = parse_mtd_partitions(flash_mtd, probes, | 82 | nr_parts = parse_mtd_partitions(flash_mtd, probes, |
| 78 | &parsed_partitions, 0); | 83 | &parsed_partitions, 0); |
| 79 | /* If there is no partition table, used the hard coded table */ | 84 | /* If there is no partition table, used the hard coded table */ |
| 80 | if (nr_parts <= 0) { | 85 | if (nr_parts > 0) { |
| 81 | flash_data.parts = rsk_partitions; | ||
| 82 | flash_data.nr_parts = ARRAY_SIZE(rsk_partitions); | ||
| 83 | } else { | ||
| 84 | flash_data.nr_parts = nr_parts; | 86 | flash_data.nr_parts = nr_parts; |
| 85 | flash_data.parts = parsed_partitions; | 87 | flash_data.parts = parsed_partitions; |
| 86 | } | 88 | } |
| 87 | } | 89 | } |
| 90 | #else | ||
| 91 | static inline void set_mtd_partitions(void) {} | ||
| 92 | #endif | ||
| 88 | 93 | ||
| 89 | static struct platform_device *rsk_devices[] __initdata = { | 94 | static struct platform_device *rsk_devices[] __initdata = { |
| 90 | &flash_device, | 95 | &flash_device, |
diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile index a1316872be6f..cb8cf5572e79 100644 --- a/arch/sh/boot/Makefile +++ b/arch/sh/boot/Makefile | |||
| @@ -20,11 +20,12 @@ CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 | |||
| 20 | CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 | 20 | CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 |
| 21 | CONFIG_ENTRY_OFFSET ?= 0x00001000 | 21 | CONFIG_ENTRY_OFFSET ?= 0x00001000 |
| 22 | 22 | ||
| 23 | suffix-y := bin | ||
| 23 | suffix-$(CONFIG_KERNEL_GZIP) := gz | 24 | suffix-$(CONFIG_KERNEL_GZIP) := gz |
| 24 | suffix-$(CONFIG_KERNEL_BZIP2) := bz2 | 25 | suffix-$(CONFIG_KERNEL_BZIP2) := bz2 |
| 25 | suffix-$(CONFIG_KERNEL_LZMA) := lzma | 26 | suffix-$(CONFIG_KERNEL_LZMA) := lzma |
| 26 | 27 | ||
| 27 | targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz uImage.bz2 uImage.lzma | 28 | targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz uImage.bz2 uImage.lzma uImage.bin |
| 28 | extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma | 29 | extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma |
| 29 | subdir- := compressed romimage | 30 | subdir- := compressed romimage |
| 30 | 31 | ||
| @@ -88,6 +89,9 @@ $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz | |||
| 88 | $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma | 89 | $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma |
| 89 | $(call if_changed,uimage,lzma) | 90 | $(call if_changed,uimage,lzma) |
| 90 | 91 | ||
| 92 | $(obj)/uImage.bin: $(obj)/vmlinux.bin | ||
| 93 | $(call if_changed,uimage,none) | ||
| 94 | |||
| 91 | OBJCOPYFLAGS_vmlinux.srec := -I binary -O srec | 95 | OBJCOPYFLAGS_vmlinux.srec := -I binary -O srec |
| 92 | $(obj)/vmlinux.srec: $(obj)/compressed/vmlinux | 96 | $(obj)/vmlinux.srec: $(obj)/compressed/vmlinux |
| 93 | $(call if_changed,objcopy) | 97 | $(call if_changed,objcopy) |
diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c index 03b3616c80a5..2d07084e4882 100644 --- a/arch/sh/kernel/dwarf.c +++ b/arch/sh/kernel/dwarf.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/list.h> | 20 | #include <linux/list.h> |
| 21 | #include <linux/mempool.h> | 21 | #include <linux/mempool.h> |
| 22 | #include <linux/mm.h> | 22 | #include <linux/mm.h> |
| 23 | #include <linux/ftrace.h> | ||
| 23 | #include <asm/dwarf.h> | 24 | #include <asm/dwarf.h> |
| 24 | #include <asm/unwinder.h> | 25 | #include <asm/unwinder.h> |
| 25 | #include <asm/sections.h> | 26 | #include <asm/sections.h> |
| @@ -557,6 +558,27 @@ struct dwarf_frame * dwarf_unwind_stack(unsigned long pc, | |||
| 557 | if (!pc && !prev) | 558 | if (!pc && !prev) |
| 558 | pc = (unsigned long)current_text_addr(); | 559 | pc = (unsigned long)current_text_addr(); |
| 559 | 560 | ||
| 561 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | ||
| 562 | /* | ||
| 563 | * If our stack has been patched by the function graph tracer | ||
| 564 | * then we might see the address of return_to_handler() where we | ||
| 565 | * expected to find the real return address. | ||
| 566 | */ | ||
| 567 | if (pc == (unsigned long)&return_to_handler) { | ||
| 568 | int index = current->curr_ret_stack; | ||
| 569 | |||
| 570 | /* | ||
| 571 | * We currently have no way of tracking how many | ||
| 572 | * return_to_handler()'s we've seen. If there is more | ||
| 573 | * than one patched return address on our stack, | ||
| 574 | * complain loudly. | ||
| 575 | */ | ||
| 576 | WARN_ON(index > 0); | ||
| 577 | |||
| 578 | pc = current->ret_stack[index].ret; | ||
| 579 | } | ||
| 580 | #endif | ||
| 581 | |||
| 560 | frame = mempool_alloc(dwarf_frame_pool, GFP_ATOMIC); | 582 | frame = mempool_alloc(dwarf_frame_pool, GFP_ATOMIC); |
| 561 | if (!frame) { | 583 | if (!frame) { |
| 562 | printk(KERN_ERR "Unable to allocate a dwarf frame\n"); | 584 | printk(KERN_ERR "Unable to allocate a dwarf frame\n"); |
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c index 7cb933ba4957..eac7da772fc2 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
| 12 | #include <linux/kernel_stat.h> | 12 | #include <linux/kernel_stat.h> |
| 13 | #include <linux/seq_file.h> | 13 | #include <linux/seq_file.h> |
| 14 | #include <linux/ftrace.h> | ||
| 14 | #include <asm/processor.h> | 15 | #include <asm/processor.h> |
| 15 | #include <asm/machvec.h> | 16 | #include <asm/machvec.h> |
| 16 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
| @@ -106,7 +107,7 @@ static union irq_ctx *hardirq_ctx[NR_CPUS] __read_mostly; | |||
| 106 | static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; | 107 | static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; |
| 107 | #endif | 108 | #endif |
| 108 | 109 | ||
| 109 | asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs) | 110 | asmlinkage __irq_entry int do_IRQ(unsigned int irq, struct pt_regs *regs) |
| 110 | { | 111 | { |
| 111 | struct pt_regs *old_regs = set_irq_regs(regs); | 112 | struct pt_regs *old_regs = set_irq_regs(regs); |
| 112 | #ifdef CONFIG_IRQSTACKS | 113 | #ifdef CONFIG_IRQSTACKS |
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c index 86c270428357..444cce3ae921 100644 --- a/arch/sh/kernel/sh_ksyms_32.c +++ b/arch/sh/kernel/sh_ksyms_32.c | |||
| @@ -85,6 +85,20 @@ DECLARE_EXPORT(__movstr_i4_even); | |||
| 85 | DECLARE_EXPORT(__movstr_i4_odd); | 85 | DECLARE_EXPORT(__movstr_i4_odd); |
| 86 | DECLARE_EXPORT(__movstrSI12_i4); | 86 | DECLARE_EXPORT(__movstrSI12_i4); |
| 87 | DECLARE_EXPORT(__movmem); | 87 | DECLARE_EXPORT(__movmem); |
| 88 | DECLARE_EXPORT(__movmemSI8); | ||
| 89 | DECLARE_EXPORT(__movmemSI12); | ||
| 90 | DECLARE_EXPORT(__movmemSI16); | ||
| 91 | DECLARE_EXPORT(__movmemSI20); | ||
| 92 | DECLARE_EXPORT(__movmemSI24); | ||
| 93 | DECLARE_EXPORT(__movmemSI28); | ||
| 94 | DECLARE_EXPORT(__movmemSI32); | ||
| 95 | DECLARE_EXPORT(__movmemSI36); | ||
| 96 | DECLARE_EXPORT(__movmemSI40); | ||
| 97 | DECLARE_EXPORT(__movmemSI44); | ||
| 98 | DECLARE_EXPORT(__movmemSI48); | ||
| 99 | DECLARE_EXPORT(__movmemSI52); | ||
| 100 | DECLARE_EXPORT(__movmemSI56); | ||
| 101 | DECLARE_EXPORT(__movmemSI60); | ||
| 88 | DECLARE_EXPORT(__movmem_i4_even); | 102 | DECLARE_EXPORT(__movmem_i4_even); |
| 89 | DECLARE_EXPORT(__movmem_i4_odd); | 103 | DECLARE_EXPORT(__movmem_i4_odd); |
| 90 | DECLARE_EXPORT(__movmemSI12_i4); | 104 | DECLARE_EXPORT(__movmemSI12_i4); |
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig index 64dc1ad59801..7f7b52f9beba 100644 --- a/arch/sh/mm/Kconfig +++ b/arch/sh/mm/Kconfig | |||
| @@ -227,7 +227,7 @@ endchoice | |||
| 227 | 227 | ||
| 228 | choice | 228 | choice |
| 229 | prompt "HugeTLB page size" | 229 | prompt "HugeTLB page size" |
| 230 | depends on HUGETLB_PAGE && (CPU_SH4 || CPU_SH5) && MMU | 230 | depends on HUGETLB_PAGE |
| 231 | default HUGETLB_PAGE_SIZE_1MB if PAGE_SIZE_64KB | 231 | default HUGETLB_PAGE_SIZE_1MB if PAGE_SIZE_64KB |
| 232 | default HUGETLB_PAGE_SIZE_64K | 232 | default HUGETLB_PAGE_SIZE_64K |
| 233 | 233 | ||
diff --git a/fs/Kconfig b/fs/Kconfig index f93d0ed4fe0c..2126078a38ed 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
| @@ -135,8 +135,8 @@ config TMPFS_POSIX_ACL | |||
| 135 | 135 | ||
| 136 | config HUGETLBFS | 136 | config HUGETLBFS |
| 137 | bool "HugeTLB file system support" | 137 | bool "HugeTLB file system support" |
| 138 | depends on X86 || IA64 || PPC_BOOK3S_64 || SPARC64 || (SUPERH && MMU) || \ | 138 | depends on X86 || IA64 || PPC_BOOK3S_64 || SPARC64 || (S390 && 64BIT) || \ |
| 139 | (S390 && 64BIT) || SYS_SUPPORTS_HUGETLBFS || BROKEN | 139 | SYS_SUPPORTS_HUGETLBFS || BROKEN |
| 140 | help | 140 | help |
| 141 | hugetlbfs is a filesystem backing for HugeTLB pages, based on | 141 | hugetlbfs is a filesystem backing for HugeTLB pages, based on |
| 142 | ramfs. For architectures that support it, say Y here and read | 142 | ramfs. For architectures that support it, say Y here and read |
