diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/Kconfig | 8 | ||||
-rw-r--r-- | arch/ia64/hp/sim/simeth.c | 5 | ||||
-rw-r--r-- | arch/ia64/hp/sim/simscsi.c | 1 | ||||
-rw-r--r-- | arch/ia64/ia32/binfmt_elf32.c | 3 | ||||
-rw-r--r-- | arch/ia64/kernel/module.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/setup.c | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/time.c | 27 | ||||
-rw-r--r-- | arch/ia64/kernel/topology.c | 26 | ||||
-rw-r--r-- | arch/ia64/kernel/vmlinux.lds.S | 8 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/setup.c | 11 |
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 | |||
42 | config SWIOTLB | 42 | config SWIOTLB |
43 | bool | 43 | bool |
44 | 44 | ||
45 | config GENERIC_LOCKBREAK | ||
46 | bool | ||
47 | default y | ||
48 | depends on SMP && PREEMPT | ||
49 | |||
45 | config RWSEM_XCHGADD_ALGORITHM | 50 | config 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 | ||
83 | config ARCH_SETS_UP_PER_CPU_AREA | ||
84 | def_bool y | ||
85 | |||
78 | config DMI | 86 | config 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 | ||
366 | static int __init | 365 | static 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 | ||
224 | static unsigned long | 224 | static unsigned long |
225 | elf32_map (struct file *filep, unsigned long addr, struct elf_phdr *eppnt, int prot, int type) | 225 | elf32_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]; | |||
71 | EXPORT_SYMBOL(__per_cpu_offset); | 71 | EXPORT_SYMBOL(__per_cpu_offset); |
72 | #endif | 72 | #endif |
73 | 73 | ||
74 | extern void ia64_setup_printk_clock(void); | ||
75 | |||
76 | DEFINE_PER_CPU(struct cpuinfo_ia64, cpu_info); | 74 | DEFINE_PER_CPU(struct cpuinfo_ia64, cpu_info); |
77 | DEFINE_PER_CPU(unsigned long, local_per_cpu_offset); | 75 | DEFINE_PER_CPU(unsigned long, local_per_cpu_offset); |
78 | unsigned long ia64_cycles_per_usec; | 76 | unsigned 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 | } |
345 | EXPORT_SYMBOL(udelay); | 345 | EXPORT_SYMBOL(udelay); |
346 | 346 | ||
347 | static 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 | |||
354 | static unsigned long long ia64_default_printk_clock(void) | ||
355 | { | ||
356 | return (unsigned long long)(jiffies_64 - INITIAL_JIFFIES) * | ||
357 | (1000000000/HZ); | ||
358 | } | ||
359 | |||
360 | unsigned long long (*ia64_printk_clock)(void) = &ia64_default_printk_clock; | ||
361 | |||
362 | unsigned long long printk_clock(void) | ||
363 | { | ||
364 | return ia64_printk_clock(); | ||
365 | } | ||
366 | |||
367 | void __init | ||
368 | ia64_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 */ |
375 | void update_vsyscall_tz(void) | 348 | void 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); | |||
64 | extern unsigned long last_time_offset; | 64 | extern unsigned long last_time_offset; |
65 | extern void (*ia64_mark_idle) (int); | 65 | extern void (*ia64_mark_idle) (int); |
66 | extern void snidle(int); | 66 | extern void snidle(int); |
67 | extern unsigned long long (*ia64_printk_clock)(void); | ||
68 | 67 | ||
69 | unsigned long sn_rtc_cycles_per_second; | 68 | unsigned long sn_rtc_cycles_per_second; |
70 | EXPORT_SYMBOL(sn_rtc_cycles_per_second); | 69 | EXPORT_SYMBOL(sn_rtc_cycles_per_second); |
@@ -360,14 +359,6 @@ sn_scan_pcdp(void) | |||
360 | 359 | ||
361 | static unsigned long sn2_rtc_initial; | 360 | static unsigned long sn2_rtc_initial; |
362 | 361 | ||
363 | static 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 | /* |