aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-12-10 17:40:46 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-12-10 17:40:46 -0500
commit437105f2a7f23899fd647e7ada683ba8dacf11ba (patch)
treecadcd8cb2b778e9e5c86e24526e814bdf27fc6c4 /arch
parent41f81e88e01eb959f439f8537c58078e4bfc5291 (diff)
parentaa0ebec9cfb8a3fab966db75ac21d05a43f312a1 (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/Makefile2
-rw-r--r--arch/ia64/hp/sim/boot/Makefile2
-rw-r--r--arch/ia64/hp/sim/boot/bootloader.lds3
-rw-r--r--arch/ia64/kernel/acpi.c2
-rw-r--r--arch/ia64/kernel/efi.c10
-rw-r--r--arch/ia64/kernel/gate.lds.S2
-rw-r--r--arch/ia64/kernel/ia64_ksyms.c3
-rw-r--r--arch/ia64/kernel/iosapic.c21
-rw-r--r--arch/ia64/kernel/kprobes.c29
-rw-r--r--arch/ia64/kernel/setup.c3
-rw-r--r--arch/ia64/kernel/signal.c8
-rw-r--r--arch/ia64/kernel/vmlinux.lds.S3
-rw-r--r--arch/ia64/lib/Makefile4
-rw-r--r--arch/ia64/mm/tlb.c2
-rw-r--r--[-rwxr-xr-x]arch/ia64/scripts/unwcheck.py0
-rw-r--r--arch/ia64/sn/kernel/io_common.c13
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
79unwcheck: vmlinux 79unwcheck: vmlinux
80 -$(Q)READELF=$(READELF) $(srctree)/arch/ia64/scripts/unwcheck.py $< 80 -$(Q)READELF=$(READELF) python $(srctree)/arch/ia64/scripts/unwcheck.py $<
81 81
82archclean: 82archclean:
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
33LDFLAGS_bootloader = -static -T 33LDFLAGS_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);
63EXPORT_SYMBOL(__moddi3); 63EXPORT_SYMBOL(__moddi3);
64EXPORT_SYMBOL(__umoddi3); 64EXPORT_SYMBOL(__umoddi3);
65 65
66#include <asm/page.h>
67EXPORT_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)
67extern void xor_ia64_2(void); 70extern void xor_ia64_2(void);
68extern void xor_ia64_3(void); 71extern 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 */
206inline int
207gsi_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
215int 202int
216gsi_to_irq (unsigned int gsi) 203gsi_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
432struct irq_chip irq_type_iosapic_level = { 419static 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
481struct irq_chip irq_type_iosapic_edge = { 468static 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
494unsigned int 481static unsigned int
495iosapic_version (char __iomem *addr) 482iosapic_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};
98extern char _text[], _end[], _etext[], _edata[], _bss[];
99 98
100unsigned long ia64_max_cacheline_size; 99unsigned 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
244setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratch *scr) 244setup_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
14lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o 14obj-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o
15lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o 15obj-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o
16lib-$(CONFIG_PERFMON) += carta_random.o 16lib-$(CONFIG_PERFMON) += carta_random.o
17 17
18AFLAGS___divdi3.o = 18AFLAGS___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