aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/Kconfig8
-rw-r--r--arch/ia64/hp/sim/simeth.c5
-rw-r--r--arch/ia64/hp/sim/simscsi.c1
-rw-r--r--arch/ia64/ia32/binfmt_elf32.c3
-rw-r--r--arch/ia64/kernel/module.c2
-rw-r--r--arch/ia64/kernel/setup.c4
-rw-r--r--arch/ia64/kernel/time.c27
-rw-r--r--arch/ia64/kernel/topology.c26
-rw-r--r--arch/ia64/kernel/vmlinux.lds.S8
-rw-r--r--arch/ia64/sn/kernel/setup.c11
10 files changed, 28 insertions, 67 deletions
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index bef47725d4ad..5a41e75ae1fe 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -42,6 +42,11 @@ config MMU
42config SWIOTLB 42config SWIOTLB
43 bool 43 bool
44 44
45config GENERIC_LOCKBREAK
46 bool
47 default y
48 depends on SMP && PREEMPT
49
45config RWSEM_XCHGADD_ALGORITHM 50config RWSEM_XCHGADD_ALGORITHM
46 bool 51 bool
47 default y 52 default y
@@ -75,6 +80,9 @@ config GENERIC_TIME_VSYSCALL
75 bool 80 bool
76 default y 81 default y
77 82
83config ARCH_SETS_UP_PER_CPU_AREA
84 def_bool y
85
78config DMI 86config DMI
79 bool 87 bool
80 default y 88 default y
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c
index 08b117e2c54b..9898febf609a 100644
--- a/arch/ia64/hp/sim/simeth.c
+++ b/arch/ia64/hp/sim/simeth.c
@@ -497,11 +497,6 @@ simeth_interrupt(int irq, void *dev_id)
497{ 497{
498 struct net_device *dev = dev_id; 498 struct net_device *dev = dev_id;
499 499
500 if ( dev == NULL ) {
501 printk(KERN_WARNING "simeth: irq %d for unknown device\n", irq);
502 return IRQ_NONE;
503 }
504
505 /* 500 /*
506 * very simple loop because we get interrupts only when receiving 501 * very simple loop because we get interrupts only when receiving
507 */ 502 */
diff --git a/arch/ia64/hp/sim/simscsi.c b/arch/ia64/hp/sim/simscsi.c
index 6ef9b5219930..7661bb065fa5 100644
--- a/arch/ia64/hp/sim/simscsi.c
+++ b/arch/ia64/hp/sim/simscsi.c
@@ -360,7 +360,6 @@ static struct scsi_host_template driver_template = {
360 .max_sectors = 1024, 360 .max_sectors = 1024,
361 .cmd_per_lun = SIMSCSI_REQ_QUEUE_LEN, 361 .cmd_per_lun = SIMSCSI_REQ_QUEUE_LEN,
362 .use_clustering = DISABLE_CLUSTERING, 362 .use_clustering = DISABLE_CLUSTERING,
363 .use_sg_chaining = ENABLE_SG_CHAINING,
364}; 363};
365 364
366static int __init 365static int __init
diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c
index 3e35987af458..4f0c30c38e99 100644
--- a/arch/ia64/ia32/binfmt_elf32.c
+++ b/arch/ia64/ia32/binfmt_elf32.c
@@ -222,7 +222,8 @@ elf32_set_personality (void)
222} 222}
223 223
224static unsigned long 224static unsigned long
225elf32_map (struct file *filep, unsigned long addr, struct elf_phdr *eppnt, int prot, int type) 225elf32_map(struct file *filep, unsigned long addr, struct elf_phdr *eppnt,
226 int prot, int type, unsigned long unused)
226{ 227{
227 unsigned long pgoff = (eppnt->p_vaddr) & ~IA32_PAGE_MASK; 228 unsigned long pgoff = (eppnt->p_vaddr) & ~IA32_PAGE_MASK;
228 229
diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c
index 196287928bae..e699eb6c44be 100644
--- a/arch/ia64/kernel/module.c
+++ b/arch/ia64/kernel/module.c
@@ -947,7 +947,7 @@ percpu_modcopy (void *pcpudst, const void *src, unsigned long size)
947{ 947{
948 unsigned int i; 948 unsigned int i;
949 for_each_possible_cpu(i) { 949 for_each_possible_cpu(i) {
950 memcpy(pcpudst + __per_cpu_offset[i], src, size); 950 memcpy(pcpudst + per_cpu_offset(i), src, size);
951 } 951 }
952} 952}
953#endif /* CONFIG_SMP */ 953#endif /* CONFIG_SMP */
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 4ac2b1f1bd3b..86028c69861e 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -71,8 +71,6 @@ unsigned long __per_cpu_offset[NR_CPUS];
71EXPORT_SYMBOL(__per_cpu_offset); 71EXPORT_SYMBOL(__per_cpu_offset);
72#endif 72#endif
73 73
74extern void ia64_setup_printk_clock(void);
75
76DEFINE_PER_CPU(struct cpuinfo_ia64, cpu_info); 74DEFINE_PER_CPU(struct cpuinfo_ia64, cpu_info);
77DEFINE_PER_CPU(unsigned long, local_per_cpu_offset); 75DEFINE_PER_CPU(unsigned long, local_per_cpu_offset);
78unsigned long ia64_cycles_per_usec; 76unsigned long ia64_cycles_per_usec;
@@ -507,8 +505,6 @@ setup_arch (char **cmdline_p)
507 /* process SAL system table: */ 505 /* process SAL system table: */
508 ia64_sal_init(__va(efi.sal_systab)); 506 ia64_sal_init(__va(efi.sal_systab));
509 507
510 ia64_setup_printk_clock();
511
512#ifdef CONFIG_SMP 508#ifdef CONFIG_SMP
513 cpu_physical_id(0) = hard_smp_processor_id(); 509 cpu_physical_id(0) = hard_smp_processor_id();
514#endif 510#endif
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 2bb84214e5f1..3ab042720970 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -344,33 +344,6 @@ udelay (unsigned long usecs)
344} 344}
345EXPORT_SYMBOL(udelay); 345EXPORT_SYMBOL(udelay);
346 346
347static unsigned long long ia64_itc_printk_clock(void)
348{
349 if (ia64_get_kr(IA64_KR_PER_CPU_DATA))
350 return sched_clock();
351 return 0;
352}
353
354static unsigned long long ia64_default_printk_clock(void)
355{
356 return (unsigned long long)(jiffies_64 - INITIAL_JIFFIES) *
357 (1000000000/HZ);
358}
359
360unsigned long long (*ia64_printk_clock)(void) = &ia64_default_printk_clock;
361
362unsigned long long printk_clock(void)
363{
364 return ia64_printk_clock();
365}
366
367void __init
368ia64_setup_printk_clock(void)
369{
370 if (!(sal_platform_features & IA64_SAL_PLATFORM_FEATURE_ITC_DRIFT))
371 ia64_printk_clock = ia64_itc_printk_clock;
372}
373
374/* IA64 doesn't cache the timezone */ 347/* IA64 doesn't cache the timezone */
375void update_vsyscall_tz(void) 348void update_vsyscall_tz(void)
376{ 349{
diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c
index 14261fee5f4d..a2484fc1a06c 100644
--- a/arch/ia64/kernel/topology.c
+++ b/arch/ia64/kernel/topology.c
@@ -354,27 +354,27 @@ static int __cpuinit cache_add_dev(struct sys_device * sys_dev)
354 if (unlikely(retval < 0)) 354 if (unlikely(retval < 0))
355 return retval; 355 return retval;
356 356
357 all_cpu_cache_info[cpu].kobj.parent = &sys_dev->kobj; 357 retval = kobject_init_and_add(&all_cpu_cache_info[cpu].kobj,
358 kobject_set_name(&all_cpu_cache_info[cpu].kobj, "%s", "cache"); 358 &cache_ktype_percpu_entry, &sys_dev->kobj,
359 all_cpu_cache_info[cpu].kobj.ktype = &cache_ktype_percpu_entry; 359 "%s", "cache");
360 retval = kobject_register(&all_cpu_cache_info[cpu].kobj);
361 360
362 for (i = 0; i < all_cpu_cache_info[cpu].num_cache_leaves; i++) { 361 for (i = 0; i < all_cpu_cache_info[cpu].num_cache_leaves; i++) {
363 this_object = LEAF_KOBJECT_PTR(cpu,i); 362 this_object = LEAF_KOBJECT_PTR(cpu,i);
364 this_object->kobj.parent = &all_cpu_cache_info[cpu].kobj; 363 retval = kobject_init_and_add(&(this_object->kobj),
365 kobject_set_name(&(this_object->kobj), "index%1lu", i); 364 &cache_ktype,
366 this_object->kobj.ktype = &cache_ktype; 365 &all_cpu_cache_info[cpu].kobj,
367 retval = kobject_register(&(this_object->kobj)); 366 "index%1lu", i);
368 if (unlikely(retval)) { 367 if (unlikely(retval)) {
369 for (j = 0; j < i; j++) { 368 for (j = 0; j < i; j++) {
370 kobject_unregister( 369 kobject_put(&(LEAF_KOBJECT_PTR(cpu,j)->kobj));
371 &(LEAF_KOBJECT_PTR(cpu,j)->kobj));
372 } 370 }
373 kobject_unregister(&all_cpu_cache_info[cpu].kobj); 371 kobject_put(&all_cpu_cache_info[cpu].kobj);
374 cpu_cache_sysfs_exit(cpu); 372 cpu_cache_sysfs_exit(cpu);
375 break; 373 break;
376 } 374 }
375 kobject_uevent(&(this_object->kobj), KOBJ_ADD);
377 } 376 }
377 kobject_uevent(&all_cpu_cache_info[cpu].kobj, KOBJ_ADD);
378 return retval; 378 return retval;
379} 379}
380 380
@@ -385,10 +385,10 @@ static int __cpuinit cache_remove_dev(struct sys_device * sys_dev)
385 unsigned long i; 385 unsigned long i;
386 386
387 for (i = 0; i < all_cpu_cache_info[cpu].num_cache_leaves; i++) 387 for (i = 0; i < all_cpu_cache_info[cpu].num_cache_leaves; i++)
388 kobject_unregister(&(LEAF_KOBJECT_PTR(cpu,i)->kobj)); 388 kobject_put(&(LEAF_KOBJECT_PTR(cpu,i)->kobj));
389 389
390 if (all_cpu_cache_info[cpu].kobj.parent) { 390 if (all_cpu_cache_info[cpu].kobj.parent) {
391 kobject_unregister(&all_cpu_cache_info[cpu].kobj); 391 kobject_put(&all_cpu_cache_info[cpu].kobj);
392 memset(&all_cpu_cache_info[cpu].kobj, 392 memset(&all_cpu_cache_info[cpu].kobj,
393 0, 393 0,
394 sizeof(struct kobject)); 394 sizeof(struct kobject));
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
index 757e419ebcf8..80622acc95de 100644
--- a/arch/ia64/kernel/vmlinux.lds.S
+++ b/arch/ia64/kernel/vmlinux.lds.S
@@ -27,8 +27,8 @@ SECTIONS
27{ 27{
28 /* Sections to be discarded */ 28 /* Sections to be discarded */
29 /DISCARD/ : { 29 /DISCARD/ : {
30 *(.exit.text) 30 EXIT_TEXT
31 *(.exit.data) 31 EXIT_DATA
32 *(.exitcall.exit) 32 *(.exitcall.exit)
33 *(.IA_64.unwind.exit.text) 33 *(.IA_64.unwind.exit.text)
34 *(.IA_64.unwind_info.exit.text) 34 *(.IA_64.unwind_info.exit.text)
@@ -119,12 +119,12 @@ SECTIONS
119 .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) 119 .init.text : AT(ADDR(.init.text) - LOAD_OFFSET)
120 { 120 {
121 _sinittext = .; 121 _sinittext = .;
122 *(.init.text) 122 INIT_TEXT
123 _einittext = .; 123 _einittext = .;
124 } 124 }
125 125
126 .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) 126 .init.data : AT(ADDR(.init.data) - LOAD_OFFSET)
127 { *(.init.data) } 127 { INIT_DATA }
128 128
129#ifdef CONFIG_BLK_DEV_INITRD 129#ifdef CONFIG_BLK_DEV_INITRD
130 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) 130 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET)
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index 1f38a3a68390..bb1d24929640 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -64,7 +64,6 @@ extern void sn_timer_init(void);
64extern unsigned long last_time_offset; 64extern unsigned long last_time_offset;
65extern void (*ia64_mark_idle) (int); 65extern void (*ia64_mark_idle) (int);
66extern void snidle(int); 66extern void snidle(int);
67extern unsigned long long (*ia64_printk_clock)(void);
68 67
69unsigned long sn_rtc_cycles_per_second; 68unsigned long sn_rtc_cycles_per_second;
70EXPORT_SYMBOL(sn_rtc_cycles_per_second); 69EXPORT_SYMBOL(sn_rtc_cycles_per_second);
@@ -360,14 +359,6 @@ sn_scan_pcdp(void)
360 359
361static unsigned long sn2_rtc_initial; 360static unsigned long sn2_rtc_initial;
362 361
363static unsigned long long ia64_sn2_printk_clock(void)
364{
365 unsigned long rtc_now = rtc_time();
366
367 return (rtc_now - sn2_rtc_initial) *
368 (1000000000 / sn_rtc_cycles_per_second);
369}
370
371/** 362/**
372 * sn_setup - SN platform setup routine 363 * sn_setup - SN platform setup routine
373 * @cmdline_p: kernel command line 364 * @cmdline_p: kernel command line
@@ -468,8 +459,6 @@ void __init sn_setup(char **cmdline_p)
468 459
469 platform_intr_list[ACPI_INTERRUPT_CPEI] = IA64_CPE_VECTOR; 460 platform_intr_list[ACPI_INTERRUPT_CPEI] = IA64_CPE_VECTOR;
470 461
471 ia64_printk_clock = ia64_sn2_printk_clock;
472
473 printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF); 462 printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF);
474 463
475 /* 464 /*