diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-11 17:08:08 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-11 17:08:08 -0400 |
| commit | 1604d9c8f8dffafe3a077dc5ae7c935d2318bcf6 (patch) | |
| tree | 176e2dd02e60942bd1afc7ec45bbb18939461424 | |
| parent | a8400986fb0bff251ac4dd9e2188cf0b59443d3f (diff) | |
| parent | 3b5cc09033f49d004006acf44e5b05036bd46a85 (diff) | |
Merge master.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6
| -rw-r--r-- | Documentation/kernel-parameters.txt | 3 | ||||
| -rw-r--r-- | arch/ia64/hp/sim/simeth.c | 6 | ||||
| -rw-r--r-- | arch/ia64/hp/sim/simserial.c | 7 | ||||
| -rw-r--r-- | arch/ia64/kernel/entry.S | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/iosapic.c | 13 | ||||
| -rw-r--r-- | arch/ia64/kernel/irq_ia64.c | 15 | ||||
| -rw-r--r-- | arch/ia64/kernel/perfmon.c | 1 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/tiocx.c | 1 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/xpc_main.c | 16 | ||||
| -rw-r--r-- | include/asm-ia64/hw_irq.h | 1 | ||||
| -rw-r--r-- | include/asm-ia64/sn/xp.h | 1 |
11 files changed, 29 insertions, 37 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 4ec75c06bca4..753db6d8b745 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -758,6 +758,9 @@ running once the system is up. | |||
| 758 | maxcpus= [SMP] Maximum number of processors that an SMP kernel | 758 | maxcpus= [SMP] Maximum number of processors that an SMP kernel |
| 759 | should make use of | 759 | should make use of |
| 760 | 760 | ||
| 761 | max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or | ||
| 762 | equal to this physical address is ignored. | ||
| 763 | |||
| 761 | max_luns= [SCSI] Maximum number of LUNs to probe | 764 | max_luns= [SCSI] Maximum number of LUNs to probe |
| 762 | Should be between 1 and 2^32-1. | 765 | Should be between 1 and 2^32-1. |
| 763 | 766 | ||
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c index ae84a1018a89..0639ec0ed015 100644 --- a/arch/ia64/hp/sim/simeth.c +++ b/arch/ia64/hp/sim/simeth.c | |||
| @@ -191,7 +191,7 @@ simeth_probe1(void) | |||
| 191 | unsigned char mac_addr[ETH_ALEN]; | 191 | unsigned char mac_addr[ETH_ALEN]; |
| 192 | struct simeth_local *local; | 192 | struct simeth_local *local; |
| 193 | struct net_device *dev; | 193 | struct net_device *dev; |
| 194 | int fd, i, err; | 194 | int fd, i, err, rc; |
| 195 | 195 | ||
| 196 | /* | 196 | /* |
| 197 | * XXX Fix me | 197 | * XXX Fix me |
| @@ -228,7 +228,9 @@ simeth_probe1(void) | |||
| 228 | return err; | 228 | return err; |
| 229 | } | 229 | } |
| 230 | 230 | ||
| 231 | dev->irq = assign_irq_vector(AUTO_ASSIGN); | 231 | if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0) |
| 232 | panic("%s: out of interrupt vectors!\n", __FUNCTION__); | ||
| 233 | dev->irq = rc; | ||
| 232 | 234 | ||
| 233 | /* | 235 | /* |
| 234 | * attach the interrupt in the simulator, this does enable interrupts | 236 | * attach the interrupt in the simulator, this does enable interrupts |
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c index 7a8ae0f4b387..7dcb8582ae0d 100644 --- a/arch/ia64/hp/sim/simserial.c +++ b/arch/ia64/hp/sim/simserial.c | |||
| @@ -982,7 +982,7 @@ static struct tty_operations hp_ops = { | |||
| 982 | static int __init | 982 | static int __init |
| 983 | simrs_init (void) | 983 | simrs_init (void) |
| 984 | { | 984 | { |
| 985 | int i; | 985 | int i, rc; |
| 986 | struct serial_state *state; | 986 | struct serial_state *state; |
| 987 | 987 | ||
| 988 | if (!ia64_platform_is("hpsim")) | 988 | if (!ia64_platform_is("hpsim")) |
| @@ -1017,7 +1017,10 @@ simrs_init (void) | |||
| 1017 | if (state->type == PORT_UNKNOWN) continue; | 1017 | if (state->type == PORT_UNKNOWN) continue; |
| 1018 | 1018 | ||
| 1019 | if (!state->irq) { | 1019 | if (!state->irq) { |
| 1020 | state->irq = assign_irq_vector(AUTO_ASSIGN); | 1020 | if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0) |
| 1021 | panic("%s: out of interrupt vectors!\n", | ||
| 1022 | __FUNCTION__); | ||
| 1023 | state->irq = rc; | ||
| 1021 | ia64_ssc_connect_irq(KEYBOARD_INTR, state->irq); | 1024 | ia64_ssc_connect_irq(KEYBOARD_INTR, state->irq); |
| 1022 | } | 1025 | } |
| 1023 | 1026 | ||
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index 69f88d561d62..bb9a506deb78 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S | |||
| @@ -1249,7 +1249,7 @@ ENTRY(sys_rt_sigreturn) | |||
| 1249 | stf.spill [r17]=f11 | 1249 | stf.spill [r17]=f11 |
| 1250 | adds out0=16,sp // out0 = &sigscratch | 1250 | adds out0=16,sp // out0 = &sigscratch |
| 1251 | br.call.sptk.many rp=ia64_rt_sigreturn | 1251 | br.call.sptk.many rp=ia64_rt_sigreturn |
| 1252 | .ret19: .restore sp 0 | 1252 | .ret19: .restore sp,0 |
| 1253 | adds sp=16,sp | 1253 | adds sp=16,sp |
| 1254 | ;; | 1254 | ;; |
| 1255 | ld8 r9=[sp] // load new ar.unat | 1255 | ld8 r9=[sp] // load new ar.unat |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index c170be095ccd..7936b62f7a2e 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
| @@ -489,8 +489,6 @@ static int iosapic_find_sharable_vector (unsigned long trigger, unsigned long po | |||
| 489 | } | 489 | } |
| 490 | } | 490 | } |
| 491 | } | 491 | } |
| 492 | if (vector < 0) | ||
| 493 | panic("%s: out of interrupt vectors!\n", __FUNCTION__); | ||
| 494 | 492 | ||
| 495 | return vector; | 493 | return vector; |
| 496 | } | 494 | } |
| @@ -506,6 +504,8 @@ iosapic_reassign_vector (int vector) | |||
| 506 | 504 | ||
| 507 | if (!list_empty(&iosapic_intr_info[vector].rtes)) { | 505 | if (!list_empty(&iosapic_intr_info[vector].rtes)) { |
| 508 | new_vector = assign_irq_vector(AUTO_ASSIGN); | 506 | new_vector = assign_irq_vector(AUTO_ASSIGN); |
| 507 | if (new_vector < 0) | ||
| 508 | panic("%s: out of interrupt vectors!\n", __FUNCTION__); | ||
| 509 | printk(KERN_INFO "Reassigning vector %d to %d\n", vector, new_vector); | 509 | printk(KERN_INFO "Reassigning vector %d to %d\n", vector, new_vector); |
| 510 | memcpy(&iosapic_intr_info[new_vector], &iosapic_intr_info[vector], | 510 | memcpy(&iosapic_intr_info[new_vector], &iosapic_intr_info[vector], |
| 511 | sizeof(struct iosapic_intr_info)); | 511 | sizeof(struct iosapic_intr_info)); |
| @@ -734,9 +734,12 @@ again: | |||
| 734 | spin_unlock_irqrestore(&iosapic_lock, flags); | 734 | spin_unlock_irqrestore(&iosapic_lock, flags); |
| 735 | 735 | ||
| 736 | /* If vector is running out, we try to find a sharable vector */ | 736 | /* If vector is running out, we try to find a sharable vector */ |
| 737 | vector = assign_irq_vector_nopanic(AUTO_ASSIGN); | 737 | vector = assign_irq_vector(AUTO_ASSIGN); |
| 738 | if (vector < 0) | 738 | if (vector < 0) { |
| 739 | vector = iosapic_find_sharable_vector(trigger, polarity); | 739 | vector = iosapic_find_sharable_vector(trigger, polarity); |
| 740 | if (vector < 0) | ||
| 741 | panic("%s: out of interrupt vectors!\n", __FUNCTION__); | ||
| 742 | } | ||
| 740 | 743 | ||
| 741 | spin_lock_irqsave(&irq_descp(vector)->lock, flags); | 744 | spin_lock_irqsave(&irq_descp(vector)->lock, flags); |
| 742 | spin_lock(&iosapic_lock); | 745 | spin_lock(&iosapic_lock); |
| @@ -884,6 +887,8 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi, | |||
| 884 | break; | 887 | break; |
| 885 | case ACPI_INTERRUPT_INIT: | 888 | case ACPI_INTERRUPT_INIT: |
| 886 | vector = assign_irq_vector(AUTO_ASSIGN); | 889 | vector = assign_irq_vector(AUTO_ASSIGN); |
| 890 | if (vector < 0) | ||
| 891 | panic("%s: out of interrupt vectors!\n", __FUNCTION__); | ||
| 887 | delivery = IOSAPIC_INIT; | 892 | delivery = IOSAPIC_INIT; |
| 888 | break; | 893 | break; |
| 889 | case ACPI_INTERRUPT_CPEI: | 894 | case ACPI_INTERRUPT_CPEI: |
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 4fe60c7a2e90..6c4d59fd0364 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
| @@ -63,30 +63,19 @@ EXPORT_SYMBOL(isa_irq_to_vector_map); | |||
| 63 | static unsigned long ia64_vector_mask[BITS_TO_LONGS(IA64_NUM_DEVICE_VECTORS)]; | 63 | static unsigned long ia64_vector_mask[BITS_TO_LONGS(IA64_NUM_DEVICE_VECTORS)]; |
| 64 | 64 | ||
| 65 | int | 65 | int |
| 66 | assign_irq_vector_nopanic (int irq) | 66 | assign_irq_vector (int irq) |
| 67 | { | 67 | { |
| 68 | int pos, vector; | 68 | int pos, vector; |
| 69 | again: | 69 | again: |
| 70 | pos = find_first_zero_bit(ia64_vector_mask, IA64_NUM_DEVICE_VECTORS); | 70 | pos = find_first_zero_bit(ia64_vector_mask, IA64_NUM_DEVICE_VECTORS); |
| 71 | vector = IA64_FIRST_DEVICE_VECTOR + pos; | 71 | vector = IA64_FIRST_DEVICE_VECTOR + pos; |
| 72 | if (vector > IA64_LAST_DEVICE_VECTOR) | 72 | if (vector > IA64_LAST_DEVICE_VECTOR) |
| 73 | return -1; | 73 | return -ENOSPC; |
| 74 | if (test_and_set_bit(pos, ia64_vector_mask)) | 74 | if (test_and_set_bit(pos, ia64_vector_mask)) |
| 75 | goto again; | 75 | goto again; |
| 76 | return vector; | 76 | return vector; |
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | int | ||
| 80 | assign_irq_vector (int irq) | ||
| 81 | { | ||
| 82 | int vector = assign_irq_vector_nopanic(irq); | ||
| 83 | |||
| 84 | if (vector < 0) | ||
| 85 | panic("assign_irq_vector: out of interrupt vectors!"); | ||
| 86 | |||
| 87 | return vector; | ||
| 88 | } | ||
| 89 | |||
| 90 | void | 79 | void |
| 91 | free_irq_vector (int vector) | 80 | free_irq_vector (int vector) |
| 92 | { | 81 | { |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index 6407bff6bfd7..b8ebb8e427ef 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
| @@ -37,7 +37,6 @@ | |||
| 37 | #include <linux/vfs.h> | 37 | #include <linux/vfs.h> |
| 38 | #include <linux/pagemap.h> | 38 | #include <linux/pagemap.h> |
| 39 | #include <linux/mount.h> | 39 | #include <linux/mount.h> |
| 40 | #include <linux/version.h> | ||
| 41 | #include <linux/bitops.h> | 40 | #include <linux/bitops.h> |
| 42 | 41 | ||
| 43 | #include <asm/errno.h> | 42 | #include <asm/errno.h> |
diff --git a/arch/ia64/sn/kernel/tiocx.c b/arch/ia64/sn/kernel/tiocx.c index c1cbcd1a1398..254fe15c064b 100644 --- a/arch/ia64/sn/kernel/tiocx.c +++ b/arch/ia64/sn/kernel/tiocx.c | |||
| @@ -8,7 +8,6 @@ | |||
| 8 | 8 | ||
| 9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
| 10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
| 11 | #include <linux/version.h> | ||
| 12 | #include <linux/slab.h> | 11 | #include <linux/slab.h> |
| 13 | #include <linux/spinlock.h> | 12 | #include <linux/spinlock.h> |
| 14 | #include <linux/proc_fs.h> | 13 | #include <linux/proc_fs.h> |
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c index 177ddb748ebe..d580adcad927 100644 --- a/arch/ia64/sn/kernel/xpc_main.c +++ b/arch/ia64/sn/kernel/xpc_main.c | |||
| @@ -53,6 +53,7 @@ | |||
| 53 | #include <linux/cache.h> | 53 | #include <linux/cache.h> |
| 54 | #include <linux/interrupt.h> | 54 | #include <linux/interrupt.h> |
| 55 | #include <linux/slab.h> | 55 | #include <linux/slab.h> |
| 56 | #include <linux/delay.h> | ||
| 56 | #include <asm/sn/intr.h> | 57 | #include <asm/sn/intr.h> |
| 57 | #include <asm/sn/sn_sal.h> | 58 | #include <asm/sn/sn_sal.h> |
| 58 | #include <asm/uaccess.h> | 59 | #include <asm/uaccess.h> |
| @@ -308,8 +309,7 @@ xpc_make_first_contact(struct xpc_partition *part) | |||
| 308 | "partition %d\n", XPC_PARTID(part)); | 309 | "partition %d\n", XPC_PARTID(part)); |
| 309 | 310 | ||
| 310 | /* wait a 1/4 of a second or so */ | 311 | /* wait a 1/4 of a second or so */ |
| 311 | set_current_state(TASK_INTERRUPTIBLE); | 312 | msleep_interruptible(250); |
| 312 | (void) schedule_timeout(0.25 * HZ); | ||
| 313 | 313 | ||
| 314 | if (part->act_state == XPC_P_DEACTIVATING) { | 314 | if (part->act_state == XPC_P_DEACTIVATING) { |
| 315 | return part->reason; | 315 | return part->reason; |
| @@ -841,9 +841,7 @@ xpc_do_exit(void) | |||
| 841 | down(&xpc_discovery_exited); | 841 | down(&xpc_discovery_exited); |
| 842 | 842 | ||
| 843 | 843 | ||
| 844 | set_current_state(TASK_INTERRUPTIBLE); | 844 | msleep_interruptible(300); |
| 845 | schedule_timeout(0.3 * HZ); | ||
| 846 | set_current_state(TASK_RUNNING); | ||
| 847 | 845 | ||
| 848 | 846 | ||
| 849 | /* wait for all partitions to become inactive */ | 847 | /* wait for all partitions to become inactive */ |
| @@ -860,12 +858,8 @@ xpc_do_exit(void) | |||
| 860 | } | 858 | } |
| 861 | } | 859 | } |
| 862 | 860 | ||
| 863 | if (active_part_count) { | 861 | if (active_part_count) |
| 864 | set_current_state(TASK_INTERRUPTIBLE); | 862 | msleep_interruptible(300); |
| 865 | schedule_timeout(0.3 * HZ); | ||
| 866 | set_current_state(TASK_RUNNING); | ||
| 867 | } | ||
| 868 | |||
| 869 | } while (active_part_count > 0); | 863 | } while (active_part_count > 0); |
| 870 | 864 | ||
| 871 | 865 | ||
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h index cd4e06b74ab6..041ab8c51a64 100644 --- a/include/asm-ia64/hw_irq.h +++ b/include/asm-ia64/hw_irq.h | |||
| @@ -81,7 +81,6 @@ extern __u8 isa_irq_to_vector_map[16]; | |||
| 81 | 81 | ||
| 82 | extern struct hw_interrupt_type irq_type_ia64_lsapic; /* CPU-internal interrupt controller */ | 82 | extern struct hw_interrupt_type irq_type_ia64_lsapic; /* CPU-internal interrupt controller */ |
| 83 | 83 | ||
| 84 | extern int assign_irq_vector_nopanic (int irq); /* allocate a free vector without panic */ | ||
| 85 | extern int assign_irq_vector (int irq); /* allocate a free vector */ | 84 | extern int assign_irq_vector (int irq); /* allocate a free vector */ |
| 86 | extern void free_irq_vector (int vector); | 85 | extern void free_irq_vector (int vector); |
| 87 | extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect); | 86 | extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect); |
diff --git a/include/asm-ia64/sn/xp.h b/include/asm-ia64/sn/xp.h index 9902185c0288..1df1c9f61a65 100644 --- a/include/asm-ia64/sn/xp.h +++ b/include/asm-ia64/sn/xp.h | |||
| @@ -16,7 +16,6 @@ | |||
| 16 | #define _ASM_IA64_SN_XP_H | 16 | #define _ASM_IA64_SN_XP_H |
| 17 | 17 | ||
| 18 | 18 | ||
| 19 | #include <linux/version.h> | ||
| 20 | #include <linux/cache.h> | 19 | #include <linux/cache.h> |
| 21 | #include <linux/hardirq.h> | 20 | #include <linux/hardirq.h> |
| 22 | #include <asm/sn/types.h> | 21 | #include <asm/sn/types.h> |
