diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-12-10 17:40:46 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-12-10 17:40:46 -0500 |
commit | 437105f2a7f23899fd647e7ada683ba8dacf11ba (patch) | |
tree | cadcd8cb2b778e9e5c86e24526e814bdf27fc6c4 /arch | |
parent | 41f81e88e01eb959f439f8537c58078e4bfc5291 (diff) | |
parent | aa0ebec9cfb8a3fab966db75ac21d05a43f312a1 (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] Fix iosapic interrupt delivery mode for CPE
[IA64] kprobe: make kreturn probe handler stack unwind correct
[IA64] operator priority fix in acpi_map_lsapic()
[IA64] Add missing "space" to concatenated strings
[IA64] make full use of macro efi_md_size
[IA64] rename _bss to __bss_start
[IA64] SGI Altix : fix bug in sn_io_late_init()
[IA64] iosapic cleanup
[IA64] signal : fix missing error checkings
[IA64] export copy_page() to modules
[IA64] don't assume that unwcheck.py is executable
[IA64] increase .data.patch offset
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/Makefile | 2 | ||||
-rw-r--r-- | arch/ia64/hp/sim/boot/Makefile | 2 | ||||
-rw-r--r-- | arch/ia64/hp/sim/boot/bootloader.lds | 3 | ||||
-rw-r--r-- | arch/ia64/kernel/acpi.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/efi.c | 10 | ||||
-rw-r--r-- | arch/ia64/kernel/gate.lds.S | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/ia64_ksyms.c | 3 | ||||
-rw-r--r-- | arch/ia64/kernel/iosapic.c | 21 | ||||
-rw-r--r-- | arch/ia64/kernel/kprobes.c | 29 | ||||
-rw-r--r-- | arch/ia64/kernel/setup.c | 3 | ||||
-rw-r--r-- | arch/ia64/kernel/signal.c | 8 | ||||
-rw-r--r-- | arch/ia64/kernel/vmlinux.lds.S | 3 | ||||
-rw-r--r-- | arch/ia64/lib/Makefile | 4 | ||||
-rw-r--r-- | arch/ia64/mm/tlb.c | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | arch/ia64/scripts/unwcheck.py | 0 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/io_common.c | 13 |
16 files changed, 56 insertions, 51 deletions
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile index 34951aa2370b..b916ccfdef84 100644 --- a/arch/ia64/Makefile +++ b/arch/ia64/Makefile | |||
@@ -77,7 +77,7 @@ vmlinux.gz: vmlinux | |||
77 | $(Q)$(MAKE) $(build)=$(boot) $@ | 77 | $(Q)$(MAKE) $(build)=$(boot) $@ |
78 | 78 | ||
79 | unwcheck: vmlinux | 79 | unwcheck: vmlinux |
80 | -$(Q)READELF=$(READELF) $(srctree)/arch/ia64/scripts/unwcheck.py $< | 80 | -$(Q)READELF=$(READELF) python $(srctree)/arch/ia64/scripts/unwcheck.py $< |
81 | 81 | ||
82 | archclean: | 82 | archclean: |
83 | $(Q)$(MAKE) $(clean)=$(boot) | 83 | $(Q)$(MAKE) $(clean)=$(boot) |
diff --git a/arch/ia64/hp/sim/boot/Makefile b/arch/ia64/hp/sim/boot/Makefile index df6e9968c845..2e805e0cc560 100644 --- a/arch/ia64/hp/sim/boot/Makefile +++ b/arch/ia64/hp/sim/boot/Makefile | |||
@@ -33,5 +33,5 @@ $(obj)/vmlinux.bin: vmlinux FORCE | |||
33 | LDFLAGS_bootloader = -static -T | 33 | LDFLAGS_bootloader = -static -T |
34 | 34 | ||
35 | $(obj)/bootloader: $(src)/bootloader.lds $(obj)/bootloader.o $(obj)/boot_head.o $(obj)/fw-emu.o \ | 35 | $(obj)/bootloader: $(src)/bootloader.lds $(obj)/bootloader.o $(obj)/boot_head.o $(obj)/fw-emu.o \ |
36 | lib/lib.a arch/ia64/lib/lib.a FORCE | 36 | lib/lib.a arch/ia64/lib/built-in.o arch/ia64/lib/lib.a FORCE |
37 | $(call if_changed,ld) | 37 | $(call if_changed,ld) |
diff --git a/arch/ia64/hp/sim/boot/bootloader.lds b/arch/ia64/hp/sim/boot/bootloader.lds index 69ae58531033..3977f25a1265 100644 --- a/arch/ia64/hp/sim/boot/bootloader.lds +++ b/arch/ia64/hp/sim/boot/bootloader.lds | |||
@@ -22,10 +22,11 @@ SECTIONS | |||
22 | .sdata : { *(.sdata) } | 22 | .sdata : { *(.sdata) } |
23 | _edata = .; | 23 | _edata = .; |
24 | 24 | ||
25 | _bss = .; | 25 | __bss_start = .; |
26 | .sbss : { *(.sbss) *(.scommon) } | 26 | .sbss : { *(.sbss) *(.scommon) } |
27 | .bss : { *(.bss) *(COMMON) } | 27 | .bss : { *(.bss) *(COMMON) } |
28 | . = ALIGN(64 / 8); | 28 | . = ALIGN(64 / 8); |
29 | __bss_stop = .; | ||
29 | _end = . ; | 30 | _end = . ; |
30 | 31 | ||
31 | /* Stabs debugging sections. */ | 32 | /* Stabs debugging sections. */ |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 897e2083a3b1..00b5d08f6da8 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -860,7 +860,7 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu) | |||
860 | lsapic = (struct acpi_madt_local_sapic *)obj->buffer.pointer; | 860 | lsapic = (struct acpi_madt_local_sapic *)obj->buffer.pointer; |
861 | 861 | ||
862 | if ((lsapic->header.type != ACPI_MADT_TYPE_LOCAL_SAPIC) || | 862 | if ((lsapic->header.type != ACPI_MADT_TYPE_LOCAL_SAPIC) || |
863 | (!lsapic->lapic_flags & ACPI_MADT_ENABLED)) { | 863 | (!(lsapic->lapic_flags & ACPI_MADT_ENABLED))) { |
864 | kfree(buffer.pointer); | 864 | kfree(buffer.pointer); |
865 | return -EINVAL; | 865 | return -EINVAL; |
866 | } | 866 | } |
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c index 8e8f8b6193ee..242d79341120 100644 --- a/arch/ia64/kernel/efi.c +++ b/arch/ia64/kernel/efi.c | |||
@@ -370,7 +370,7 @@ efi_get_pal_addr (void) | |||
370 | continue; | 370 | continue; |
371 | } | 371 | } |
372 | 372 | ||
373 | if (md->num_pages << EFI_PAGE_SHIFT > IA64_GRANULE_SIZE) | 373 | if (efi_md_size(md) > IA64_GRANULE_SIZE) |
374 | panic("Woah! PAL code size bigger than a granule!"); | 374 | panic("Woah! PAL code size bigger than a granule!"); |
375 | 375 | ||
376 | #if EFI_DEBUG | 376 | #if EFI_DEBUG |
@@ -378,7 +378,7 @@ efi_get_pal_addr (void) | |||
378 | 378 | ||
379 | printk(KERN_INFO "CPU %d: mapping PAL code [0x%lx-0x%lx) into [0x%lx-0x%lx)\n", | 379 | printk(KERN_INFO "CPU %d: mapping PAL code [0x%lx-0x%lx) into [0x%lx-0x%lx)\n", |
380 | smp_processor_id(), md->phys_addr, | 380 | smp_processor_id(), md->phys_addr, |
381 | md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT), | 381 | md->phys_addr + efi_md_size(md), |
382 | vaddr & mask, (vaddr & mask) + IA64_GRANULE_SIZE); | 382 | vaddr & mask, (vaddr & mask) + IA64_GRANULE_SIZE); |
383 | #endif | 383 | #endif |
384 | return __va(md->phys_addr); | 384 | return __va(md->phys_addr); |
@@ -523,7 +523,7 @@ efi_init (void) | |||
523 | md = p; | 523 | md = p; |
524 | printk("mem%02u: type=%u, attr=0x%lx, range=[0x%016lx-0x%016lx) (%luMB)\n", | 524 | printk("mem%02u: type=%u, attr=0x%lx, range=[0x%016lx-0x%016lx) (%luMB)\n", |
525 | i, md->type, md->attribute, md->phys_addr, | 525 | i, md->type, md->attribute, md->phys_addr, |
526 | md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT), | 526 | md->phys_addr + efi_md_size(md), |
527 | md->num_pages >> (20 - EFI_PAGE_SHIFT)); | 527 | md->num_pages >> (20 - EFI_PAGE_SHIFT)); |
528 | } | 528 | } |
529 | } | 529 | } |
@@ -656,7 +656,7 @@ efi_memory_descriptor (unsigned long phys_addr) | |||
656 | for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) { | 656 | for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) { |
657 | md = p; | 657 | md = p; |
658 | 658 | ||
659 | if (phys_addr - md->phys_addr < (md->num_pages << EFI_PAGE_SHIFT)) | 659 | if (phys_addr - md->phys_addr < efi_md_size(md)) |
660 | return md; | 660 | return md; |
661 | } | 661 | } |
662 | return NULL; | 662 | return NULL; |
@@ -1158,7 +1158,7 @@ efi_initialize_iomem_resources(struct resource *code_resource, | |||
1158 | 1158 | ||
1159 | res->name = name; | 1159 | res->name = name; |
1160 | res->start = md->phys_addr; | 1160 | res->start = md->phys_addr; |
1161 | res->end = md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1; | 1161 | res->end = md->phys_addr + efi_md_size(md) - 1; |
1162 | res->flags = flags; | 1162 | res->flags = flags; |
1163 | 1163 | ||
1164 | if (insert_resource(&iomem_resource, res) < 0) | 1164 | if (insert_resource(&iomem_resource, res) < 0) |
diff --git a/arch/ia64/kernel/gate.lds.S b/arch/ia64/kernel/gate.lds.S index 454d7a7dfa9d..3cb1abc00e24 100644 --- a/arch/ia64/kernel/gate.lds.S +++ b/arch/ia64/kernel/gate.lds.S | |||
@@ -30,7 +30,7 @@ SECTIONS | |||
30 | * the dynamic symbol table et al. If this amount is insufficient, | 30 | * the dynamic symbol table et al. If this amount is insufficient, |
31 | * ld -shared will barf. Just increase it here. | 31 | * ld -shared will barf. Just increase it here. |
32 | */ | 32 | */ |
33 | . = GATE_ADDR + 0x500; | 33 | . = GATE_ADDR + 0x600; |
34 | 34 | ||
35 | .data.patch : { | 35 | .data.patch : { |
36 | __start_gate_mckinley_e9_patchlist = .; | 36 | __start_gate_mckinley_e9_patchlist = .; |
diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c index bd17190bebb6..c3b4412ccc67 100644 --- a/arch/ia64/kernel/ia64_ksyms.c +++ b/arch/ia64/kernel/ia64_ksyms.c | |||
@@ -63,6 +63,9 @@ EXPORT_SYMBOL(__udivdi3); | |||
63 | EXPORT_SYMBOL(__moddi3); | 63 | EXPORT_SYMBOL(__moddi3); |
64 | EXPORT_SYMBOL(__umoddi3); | 64 | EXPORT_SYMBOL(__umoddi3); |
65 | 65 | ||
66 | #include <asm/page.h> | ||
67 | EXPORT_SYMBOL(copy_page); | ||
68 | |||
66 | #if defined(CONFIG_MD_RAID456) || defined(CONFIG_MD_RAID456_MODULE) | 69 | #if defined(CONFIG_MD_RAID456) || defined(CONFIG_MD_RAID456_MODULE) |
67 | extern void xor_ia64_2(void); | 70 | extern void xor_ia64_2(void); |
68 | extern void xor_ia64_3(void); | 71 | extern void xor_ia64_3(void); |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index 274a59383043..398e2fd1cd25 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
@@ -199,19 +199,6 @@ static inline int __gsi_to_irq(unsigned int gsi) | |||
199 | return -1; | 199 | return -1; |
200 | } | 200 | } |
201 | 201 | ||
202 | /* | ||
203 | * Translate GSI number to the corresponding IA-64 interrupt vector. If no | ||
204 | * entry exists, return -1. | ||
205 | */ | ||
206 | inline int | ||
207 | gsi_to_vector (unsigned int gsi) | ||
208 | { | ||
209 | int irq = __gsi_to_irq(gsi); | ||
210 | if (check_irq_used(irq) < 0) | ||
211 | return -1; | ||
212 | return irq_to_vector(irq); | ||
213 | } | ||
214 | |||
215 | int | 202 | int |
216 | gsi_to_irq (unsigned int gsi) | 203 | gsi_to_irq (unsigned int gsi) |
217 | { | 204 | { |
@@ -429,7 +416,7 @@ iosapic_end_level_irq (unsigned int irq) | |||
429 | #define iosapic_disable_level_irq mask_irq | 416 | #define iosapic_disable_level_irq mask_irq |
430 | #define iosapic_ack_level_irq nop | 417 | #define iosapic_ack_level_irq nop |
431 | 418 | ||
432 | struct irq_chip irq_type_iosapic_level = { | 419 | static struct irq_chip irq_type_iosapic_level = { |
433 | .name = "IO-SAPIC-level", | 420 | .name = "IO-SAPIC-level", |
434 | .startup = iosapic_startup_level_irq, | 421 | .startup = iosapic_startup_level_irq, |
435 | .shutdown = iosapic_shutdown_level_irq, | 422 | .shutdown = iosapic_shutdown_level_irq, |
@@ -478,7 +465,7 @@ iosapic_ack_edge_irq (unsigned int irq) | |||
478 | #define iosapic_disable_edge_irq nop | 465 | #define iosapic_disable_edge_irq nop |
479 | #define iosapic_end_edge_irq nop | 466 | #define iosapic_end_edge_irq nop |
480 | 467 | ||
481 | struct irq_chip irq_type_iosapic_edge = { | 468 | static struct irq_chip irq_type_iosapic_edge = { |
482 | .name = "IO-SAPIC-edge", | 469 | .name = "IO-SAPIC-edge", |
483 | .startup = iosapic_startup_edge_irq, | 470 | .startup = iosapic_startup_edge_irq, |
484 | .shutdown = iosapic_disable_edge_irq, | 471 | .shutdown = iosapic_disable_edge_irq, |
@@ -491,7 +478,7 @@ struct irq_chip irq_type_iosapic_edge = { | |||
491 | .set_affinity = iosapic_set_affinity | 478 | .set_affinity = iosapic_set_affinity |
492 | }; | 479 | }; |
493 | 480 | ||
494 | unsigned int | 481 | static unsigned int |
495 | iosapic_version (char __iomem *addr) | 482 | iosapic_version (char __iomem *addr) |
496 | { | 483 | { |
497 | /* | 484 | /* |
@@ -938,7 +925,7 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi, | |||
938 | case ACPI_INTERRUPT_CPEI: | 925 | case ACPI_INTERRUPT_CPEI: |
939 | irq = vector = IA64_CPE_VECTOR; | 926 | irq = vector = IA64_CPE_VECTOR; |
940 | BUG_ON(bind_irq_vector(irq, vector, CPU_MASK_ALL)); | 927 | BUG_ON(bind_irq_vector(irq, vector, CPU_MASK_ALL)); |
941 | delivery = IOSAPIC_LOWEST_PRIORITY; | 928 | delivery = IOSAPIC_FIXED; |
942 | mask = 1; | 929 | mask = 1; |
943 | break; | 930 | break; |
944 | default: | 931 | default: |
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c index 5fd65d8302c8..fc4d2676264f 100644 --- a/arch/ia64/kernel/kprobes.c +++ b/arch/ia64/kernel/kprobes.c | |||
@@ -182,8 +182,8 @@ static int __kprobes unsupported_inst(uint template, uint slot, | |||
182 | qp = kprobe_inst & 0x3f; | 182 | qp = kprobe_inst & 0x3f; |
183 | if (is_cmp_ctype_unc_inst(template, slot, major_opcode, kprobe_inst)) { | 183 | if (is_cmp_ctype_unc_inst(template, slot, major_opcode, kprobe_inst)) { |
184 | if (slot == 1 && qp) { | 184 | if (slot == 1 && qp) { |
185 | printk(KERN_WARNING "Kprobes on cmp unc" | 185 | printk(KERN_WARNING "Kprobes on cmp unc " |
186 | "instruction on slot 1 at <0x%lx>" | 186 | "instruction on slot 1 at <0x%lx> " |
187 | "is not supported\n", addr); | 187 | "is not supported\n", addr); |
188 | return -EINVAL; | 188 | return -EINVAL; |
189 | 189 | ||
@@ -221,8 +221,8 @@ static int __kprobes unsupported_inst(uint template, uint slot, | |||
221 | * bit 12 to be equal to 1 | 221 | * bit 12 to be equal to 1 |
222 | */ | 222 | */ |
223 | if (slot == 1 && qp) { | 223 | if (slot == 1 && qp) { |
224 | printk(KERN_WARNING "Kprobes on test bit" | 224 | printk(KERN_WARNING "Kprobes on test bit " |
225 | "instruction on slot at <0x%lx>" | 225 | "instruction on slot at <0x%lx> " |
226 | "is not supported\n", addr); | 226 | "is not supported\n", addr); |
227 | return -EINVAL; | 227 | return -EINVAL; |
228 | } | 228 | } |
@@ -242,7 +242,7 @@ static int __kprobes unsupported_inst(uint template, uint slot, | |||
242 | */ | 242 | */ |
243 | int x6=(kprobe_inst >> 27) & 0x3F; | 243 | int x6=(kprobe_inst >> 27) & 0x3F; |
244 | if ((x6 == 0x10) || (x6 == 0x11)) { | 244 | if ((x6 == 0x10) || (x6 == 0x11)) { |
245 | printk(KERN_WARNING "Kprobes on" | 245 | printk(KERN_WARNING "Kprobes on " |
246 | "Indirect Predict is not supported\n"); | 246 | "Indirect Predict is not supported\n"); |
247 | return -EINVAL; | 247 | return -EINVAL; |
248 | } | 248 | } |
@@ -435,6 +435,23 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs) | |||
435 | /* another task is sharing our hash bucket */ | 435 | /* another task is sharing our hash bucket */ |
436 | continue; | 436 | continue; |
437 | 437 | ||
438 | orig_ret_address = (unsigned long)ri->ret_addr; | ||
439 | if (orig_ret_address != trampoline_address) | ||
440 | /* | ||
441 | * This is the real return address. Any other | ||
442 | * instances associated with this task are for | ||
443 | * other calls deeper on the call stack | ||
444 | */ | ||
445 | break; | ||
446 | } | ||
447 | |||
448 | regs->cr_iip = orig_ret_address; | ||
449 | |||
450 | hlist_for_each_entry_safe(ri, node, tmp, head, hlist) { | ||
451 | if (ri->task != current) | ||
452 | /* another task is sharing our hash bucket */ | ||
453 | continue; | ||
454 | |||
438 | if (ri->rp && ri->rp->handler) | 455 | if (ri->rp && ri->rp->handler) |
439 | ri->rp->handler(ri, regs); | 456 | ri->rp->handler(ri, regs); |
440 | 457 | ||
@@ -452,8 +469,6 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs) | |||
452 | 469 | ||
453 | kretprobe_assert(ri, orig_ret_address, trampoline_address); | 470 | kretprobe_assert(ri, orig_ret_address, trampoline_address); |
454 | 471 | ||
455 | regs->cr_iip = orig_ret_address; | ||
456 | |||
457 | reset_current_kprobe(); | 472 | reset_current_kprobe(); |
458 | spin_unlock_irqrestore(&kretprobe_lock, flags); | 473 | spin_unlock_irqrestore(&kretprobe_lock, flags); |
459 | preempt_enable_no_resched(); | 474 | preempt_enable_no_resched(); |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 2b3751eef5ce..4ac2b1f1bd3b 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -95,7 +95,6 @@ static struct resource bss_resource = { | |||
95 | .name = "Kernel bss", | 95 | .name = "Kernel bss", |
96 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM | 96 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM |
97 | }; | 97 | }; |
98 | extern char _text[], _end[], _etext[], _edata[], _bss[]; | ||
99 | 98 | ||
100 | unsigned long ia64_max_cacheline_size; | 99 | unsigned long ia64_max_cacheline_size; |
101 | 100 | ||
@@ -206,7 +205,7 @@ static int __init register_memory(void) | |||
206 | code_resource.end = ia64_tpa(_etext) - 1; | 205 | code_resource.end = ia64_tpa(_etext) - 1; |
207 | data_resource.start = ia64_tpa(_etext); | 206 | data_resource.start = ia64_tpa(_etext); |
208 | data_resource.end = ia64_tpa(_edata) - 1; | 207 | data_resource.end = ia64_tpa(_edata) - 1; |
209 | bss_resource.start = ia64_tpa(_bss); | 208 | bss_resource.start = ia64_tpa(__bss_start); |
210 | bss_resource.end = ia64_tpa(_end) - 1; | 209 | bss_resource.end = ia64_tpa(_end) - 1; |
211 | efi_initialize_iomem_resources(&code_resource, &data_resource, | 210 | efi_initialize_iomem_resources(&code_resource, &data_resource, |
212 | &bss_resource); | 211 | &bss_resource); |
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c index cdb64cc4d9c8..4c730099d58f 100644 --- a/arch/ia64/kernel/signal.c +++ b/arch/ia64/kernel/signal.c | |||
@@ -98,7 +98,7 @@ restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr) | |||
98 | if ((flags & IA64_SC_FLAG_FPH_VALID) != 0) { | 98 | if ((flags & IA64_SC_FLAG_FPH_VALID) != 0) { |
99 | struct ia64_psr *psr = ia64_psr(&scr->pt); | 99 | struct ia64_psr *psr = ia64_psr(&scr->pt); |
100 | 100 | ||
101 | __copy_from_user(current->thread.fph, &sc->sc_fr[32], 96*16); | 101 | err |= __copy_from_user(current->thread.fph, &sc->sc_fr[32], 96*16); |
102 | psr->mfh = 0; /* drop signal handler's fph contents... */ | 102 | psr->mfh = 0; /* drop signal handler's fph contents... */ |
103 | preempt_disable(); | 103 | preempt_disable(); |
104 | if (psr->dfh) | 104 | if (psr->dfh) |
@@ -244,7 +244,7 @@ static long | |||
244 | setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratch *scr) | 244 | setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratch *scr) |
245 | { | 245 | { |
246 | unsigned long flags = 0, ifs, cfm, nat; | 246 | unsigned long flags = 0, ifs, cfm, nat; |
247 | long err; | 247 | long err = 0; |
248 | 248 | ||
249 | ifs = scr->pt.cr_ifs; | 249 | ifs = scr->pt.cr_ifs; |
250 | 250 | ||
@@ -257,12 +257,12 @@ setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratc | |||
257 | ia64_flush_fph(current); | 257 | ia64_flush_fph(current); |
258 | if ((current->thread.flags & IA64_THREAD_FPH_VALID)) { | 258 | if ((current->thread.flags & IA64_THREAD_FPH_VALID)) { |
259 | flags |= IA64_SC_FLAG_FPH_VALID; | 259 | flags |= IA64_SC_FLAG_FPH_VALID; |
260 | __copy_to_user(&sc->sc_fr[32], current->thread.fph, 96*16); | 260 | err = __copy_to_user(&sc->sc_fr[32], current->thread.fph, 96*16); |
261 | } | 261 | } |
262 | 262 | ||
263 | nat = ia64_get_scratch_nat_bits(&scr->pt, scr->scratch_unat); | 263 | nat = ia64_get_scratch_nat_bits(&scr->pt, scr->scratch_unat); |
264 | 264 | ||
265 | err = __put_user(flags, &sc->sc_flags); | 265 | err |= __put_user(flags, &sc->sc_flags); |
266 | err |= __put_user(nat, &sc->sc_nat); | 266 | err |= __put_user(nat, &sc->sc_nat); |
267 | err |= PUT_SIGSET(mask, &sc->sc_mask); | 267 | err |= PUT_SIGSET(mask, &sc->sc_mask); |
268 | err |= __put_user(cfm, &sc->sc_cfm); | 268 | err |= __put_user(cfm, &sc->sc_cfm); |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 00232b4357ba..757e419ebcf8 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -240,11 +240,12 @@ SECTIONS | |||
240 | .sdata : AT(ADDR(.sdata) - LOAD_OFFSET) | 240 | .sdata : AT(ADDR(.sdata) - LOAD_OFFSET) |
241 | { *(.sdata) *(.sdata1) *(.srdata) } | 241 | { *(.sdata) *(.sdata1) *(.srdata) } |
242 | _edata = .; | 242 | _edata = .; |
243 | _bss = .; | 243 | __bss_start = .; |
244 | .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) | 244 | .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) |
245 | { *(.sbss) *(.scommon) } | 245 | { *(.sbss) *(.scommon) } |
246 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) | 246 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) |
247 | { *(.bss) *(COMMON) } | 247 | { *(.bss) *(COMMON) } |
248 | __bss_stop = .; | ||
248 | 249 | ||
249 | _end = .; | 250 | _end = .; |
250 | 251 | ||
diff --git a/arch/ia64/lib/Makefile b/arch/ia64/lib/Makefile index 46edf8444c7e..98771e2a78af 100644 --- a/arch/ia64/lib/Makefile +++ b/arch/ia64/lib/Makefile | |||
@@ -11,8 +11,8 @@ lib-y := __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \ | |||
11 | flush.o ip_fast_csum.o do_csum.o \ | 11 | flush.o ip_fast_csum.o do_csum.o \ |
12 | memset.o strlen.o xor.o | 12 | memset.o strlen.o xor.o |
13 | 13 | ||
14 | lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o | 14 | obj-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o |
15 | lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o | 15 | obj-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o |
16 | lib-$(CONFIG_PERFMON) += carta_random.o | 16 | lib-$(CONFIG_PERFMON) += carta_random.o |
17 | 17 | ||
18 | AFLAGS___divdi3.o = | 18 | AFLAGS___divdi3.o = |
diff --git a/arch/ia64/mm/tlb.c b/arch/ia64/mm/tlb.c index 1682fc639038..cef164729db7 100644 --- a/arch/ia64/mm/tlb.c +++ b/arch/ia64/mm/tlb.c | |||
@@ -180,7 +180,7 @@ ia64_tlb_init (void) | |||
180 | long status; | 180 | long status; |
181 | 181 | ||
182 | if ((status = ia64_pal_vm_page_size(&tr_pgbits, &purge.mask)) != 0) { | 182 | if ((status = ia64_pal_vm_page_size(&tr_pgbits, &purge.mask)) != 0) { |
183 | printk(KERN_ERR "PAL_VM_PAGE_SIZE failed with status=%ld;" | 183 | printk(KERN_ERR "PAL_VM_PAGE_SIZE failed with status=%ld; " |
184 | "defaulting to architected purge page-sizes.\n", status); | 184 | "defaulting to architected purge page-sizes.\n", status); |
185 | purge.mask = 0x115557000UL; | 185 | purge.mask = 0x115557000UL; |
186 | } | 186 | } |
diff --git a/arch/ia64/scripts/unwcheck.py b/arch/ia64/scripts/unwcheck.py index c27849889e19..c27849889e19 100755..100644 --- a/arch/ia64/scripts/unwcheck.py +++ b/arch/ia64/scripts/unwcheck.py | |||
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c index 4594770e685a..c4eb84f9e781 100644 --- a/arch/ia64/sn/kernel/io_common.c +++ b/arch/ia64/sn/kernel/io_common.c | |||
@@ -347,7 +347,7 @@ sn_common_bus_fixup(struct pci_bus *bus, | |||
347 | if (controller->node >= num_online_nodes()) { | 347 | if (controller->node >= num_online_nodes()) { |
348 | struct pcibus_bussoft *b = SN_PCIBUS_BUSSOFT(bus); | 348 | struct pcibus_bussoft *b = SN_PCIBUS_BUSSOFT(bus); |
349 | 349 | ||
350 | printk(KERN_WARNING "Device ASIC=%u XID=%u PBUSNUM=%u" | 350 | printk(KERN_WARNING "Device ASIC=%u XID=%u PBUSNUM=%u " |
351 | "L_IO=%lx L_MEM=%lx BASE=%lx\n", | 351 | "L_IO=%lx L_MEM=%lx BASE=%lx\n", |
352 | b->bs_asic_type, b->bs_xid, b->bs_persist_busnum, | 352 | b->bs_asic_type, b->bs_xid, b->bs_persist_busnum, |
353 | b->bs_legacy_io, b->bs_legacy_mem, b->bs_base); | 353 | b->bs_legacy_io, b->bs_legacy_mem, b->bs_base); |
@@ -545,19 +545,18 @@ sn_io_late_init(void) | |||
545 | nasid = NASID_GET(bussoft->bs_base); | 545 | nasid = NASID_GET(bussoft->bs_base); |
546 | cnode = nasid_to_cnodeid(nasid); | 546 | cnode = nasid_to_cnodeid(nasid); |
547 | if ((bussoft->bs_asic_type == PCIIO_ASIC_TYPE_TIOCP) || | 547 | if ((bussoft->bs_asic_type == PCIIO_ASIC_TYPE_TIOCP) || |
548 | (bussoft->bs_asic_type == PCIIO_ASIC_TYPE_TIOCE)) { | 548 | (bussoft->bs_asic_type == PCIIO_ASIC_TYPE_TIOCE) || |
549 | /* TIO PCI Bridge: find nearest node with CPUs */ | 549 | (bussoft->bs_asic_type == PCIIO_ASIC_TYPE_PIC)) { |
550 | /* PCI Bridge: find nearest node with CPUs */ | ||
550 | int e = sn_hwperf_get_nearest_node(cnode, NULL, | 551 | int e = sn_hwperf_get_nearest_node(cnode, NULL, |
551 | &near_cnode); | 552 | &near_cnode); |
552 | if (e < 0) { | 553 | if (e < 0) { |
553 | near_cnode = (cnodeid_t)-1; /* use any node */ | 554 | near_cnode = (cnodeid_t)-1; /* use any node */ |
554 | printk(KERN_WARNING "pcibr_bus_fixup: failed " | 555 | printk(KERN_WARNING "sn_io_late_init: failed " |
555 | "to find near node with CPUs to TIO " | 556 | "to find near node with CPUs for " |
556 | "node %d, err=%d\n", cnode, e); | 557 | "node %d, err=%d\n", cnode, e); |
557 | } | 558 | } |
558 | PCI_CONTROLLER(bus)->node = near_cnode; | 559 | PCI_CONTROLLER(bus)->node = near_cnode; |
559 | } else if (bussoft->bs_asic_type == PCIIO_ASIC_TYPE_PIC) { | ||
560 | PCI_CONTROLLER(bus)->node = cnode; | ||
561 | } | 560 | } |
562 | } | 561 | } |
563 | 562 | ||