Merge master.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6
This commit is contained in:
commit
1604d9c8f8
|
@ -758,6 +758,9 @@ running once the system is up.
|
||||||
maxcpus= [SMP] Maximum number of processors that an SMP kernel
|
maxcpus= [SMP] Maximum number of processors that an SMP kernel
|
||||||
should make use of
|
should make use of
|
||||||
|
|
||||||
|
max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
|
||||||
|
equal to this physical address is ignored.
|
||||||
|
|
||||||
max_luns= [SCSI] Maximum number of LUNs to probe
|
max_luns= [SCSI] Maximum number of LUNs to probe
|
||||||
Should be between 1 and 2^32-1.
|
Should be between 1 and 2^32-1.
|
||||||
|
|
||||||
|
|
|
@ -191,7 +191,7 @@ simeth_probe1(void)
|
||||||
unsigned char mac_addr[ETH_ALEN];
|
unsigned char mac_addr[ETH_ALEN];
|
||||||
struct simeth_local *local;
|
struct simeth_local *local;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
int fd, i, err;
|
int fd, i, err, rc;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX Fix me
|
* XXX Fix me
|
||||||
|
@ -228,7 +228,9 @@ simeth_probe1(void)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->irq = assign_irq_vector(AUTO_ASSIGN);
|
if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0)
|
||||||
|
panic("%s: out of interrupt vectors!\n", __FUNCTION__);
|
||||||
|
dev->irq = rc;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* attach the interrupt in the simulator, this does enable interrupts
|
* attach the interrupt in the simulator, this does enable interrupts
|
||||||
|
|
|
@ -982,7 +982,7 @@ static struct tty_operations hp_ops = {
|
||||||
static int __init
|
static int __init
|
||||||
simrs_init (void)
|
simrs_init (void)
|
||||||
{
|
{
|
||||||
int i;
|
int i, rc;
|
||||||
struct serial_state *state;
|
struct serial_state *state;
|
||||||
|
|
||||||
if (!ia64_platform_is("hpsim"))
|
if (!ia64_platform_is("hpsim"))
|
||||||
|
@ -1017,7 +1017,10 @@ simrs_init (void)
|
||||||
if (state->type == PORT_UNKNOWN) continue;
|
if (state->type == PORT_UNKNOWN) continue;
|
||||||
|
|
||||||
if (!state->irq) {
|
if (!state->irq) {
|
||||||
state->irq = assign_irq_vector(AUTO_ASSIGN);
|
if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0)
|
||||||
|
panic("%s: out of interrupt vectors!\n",
|
||||||
|
__FUNCTION__);
|
||||||
|
state->irq = rc;
|
||||||
ia64_ssc_connect_irq(KEYBOARD_INTR, state->irq);
|
ia64_ssc_connect_irq(KEYBOARD_INTR, state->irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1249,7 +1249,7 @@ ENTRY(sys_rt_sigreturn)
|
||||||
stf.spill [r17]=f11
|
stf.spill [r17]=f11
|
||||||
adds out0=16,sp // out0 = &sigscratch
|
adds out0=16,sp // out0 = &sigscratch
|
||||||
br.call.sptk.many rp=ia64_rt_sigreturn
|
br.call.sptk.many rp=ia64_rt_sigreturn
|
||||||
.ret19: .restore sp 0
|
.ret19: .restore sp,0
|
||||||
adds sp=16,sp
|
adds sp=16,sp
|
||||||
;;
|
;;
|
||||||
ld8 r9=[sp] // load new ar.unat
|
ld8 r9=[sp] // load new ar.unat
|
||||||
|
|
|
@ -489,8 +489,6 @@ static int iosapic_find_sharable_vector (unsigned long trigger, unsigned long po
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (vector < 0)
|
|
||||||
panic("%s: out of interrupt vectors!\n", __FUNCTION__);
|
|
||||||
|
|
||||||
return vector;
|
return vector;
|
||||||
}
|
}
|
||||||
|
@ -506,6 +504,8 @@ iosapic_reassign_vector (int vector)
|
||||||
|
|
||||||
if (!list_empty(&iosapic_intr_info[vector].rtes)) {
|
if (!list_empty(&iosapic_intr_info[vector].rtes)) {
|
||||||
new_vector = assign_irq_vector(AUTO_ASSIGN);
|
new_vector = assign_irq_vector(AUTO_ASSIGN);
|
||||||
|
if (new_vector < 0)
|
||||||
|
panic("%s: out of interrupt vectors!\n", __FUNCTION__);
|
||||||
printk(KERN_INFO "Reassigning vector %d to %d\n", vector, new_vector);
|
printk(KERN_INFO "Reassigning vector %d to %d\n", vector, new_vector);
|
||||||
memcpy(&iosapic_intr_info[new_vector], &iosapic_intr_info[vector],
|
memcpy(&iosapic_intr_info[new_vector], &iosapic_intr_info[vector],
|
||||||
sizeof(struct iosapic_intr_info));
|
sizeof(struct iosapic_intr_info));
|
||||||
|
@ -734,9 +734,12 @@ again:
|
||||||
spin_unlock_irqrestore(&iosapic_lock, flags);
|
spin_unlock_irqrestore(&iosapic_lock, flags);
|
||||||
|
|
||||||
/* If vector is running out, we try to find a sharable vector */
|
/* If vector is running out, we try to find a sharable vector */
|
||||||
vector = assign_irq_vector_nopanic(AUTO_ASSIGN);
|
vector = assign_irq_vector(AUTO_ASSIGN);
|
||||||
if (vector < 0)
|
if (vector < 0) {
|
||||||
vector = iosapic_find_sharable_vector(trigger, polarity);
|
vector = iosapic_find_sharable_vector(trigger, polarity);
|
||||||
|
if (vector < 0)
|
||||||
|
panic("%s: out of interrupt vectors!\n", __FUNCTION__);
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock_irqsave(&irq_descp(vector)->lock, flags);
|
spin_lock_irqsave(&irq_descp(vector)->lock, flags);
|
||||||
spin_lock(&iosapic_lock);
|
spin_lock(&iosapic_lock);
|
||||||
|
@ -884,6 +887,8 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
|
||||||
break;
|
break;
|
||||||
case ACPI_INTERRUPT_INIT:
|
case ACPI_INTERRUPT_INIT:
|
||||||
vector = assign_irq_vector(AUTO_ASSIGN);
|
vector = assign_irq_vector(AUTO_ASSIGN);
|
||||||
|
if (vector < 0)
|
||||||
|
panic("%s: out of interrupt vectors!\n", __FUNCTION__);
|
||||||
delivery = IOSAPIC_INIT;
|
delivery = IOSAPIC_INIT;
|
||||||
break;
|
break;
|
||||||
case ACPI_INTERRUPT_CPEI:
|
case ACPI_INTERRUPT_CPEI:
|
||||||
|
|
|
@ -63,30 +63,19 @@ EXPORT_SYMBOL(isa_irq_to_vector_map);
|
||||||
static unsigned long ia64_vector_mask[BITS_TO_LONGS(IA64_NUM_DEVICE_VECTORS)];
|
static unsigned long ia64_vector_mask[BITS_TO_LONGS(IA64_NUM_DEVICE_VECTORS)];
|
||||||
|
|
||||||
int
|
int
|
||||||
assign_irq_vector_nopanic (int irq)
|
assign_irq_vector (int irq)
|
||||||
{
|
{
|
||||||
int pos, vector;
|
int pos, vector;
|
||||||
again:
|
again:
|
||||||
pos = find_first_zero_bit(ia64_vector_mask, IA64_NUM_DEVICE_VECTORS);
|
pos = find_first_zero_bit(ia64_vector_mask, IA64_NUM_DEVICE_VECTORS);
|
||||||
vector = IA64_FIRST_DEVICE_VECTOR + pos;
|
vector = IA64_FIRST_DEVICE_VECTOR + pos;
|
||||||
if (vector > IA64_LAST_DEVICE_VECTOR)
|
if (vector > IA64_LAST_DEVICE_VECTOR)
|
||||||
return -1;
|
return -ENOSPC;
|
||||||
if (test_and_set_bit(pos, ia64_vector_mask))
|
if (test_and_set_bit(pos, ia64_vector_mask))
|
||||||
goto again;
|
goto again;
|
||||||
return vector;
|
return vector;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
assign_irq_vector (int irq)
|
|
||||||
{
|
|
||||||
int vector = assign_irq_vector_nopanic(irq);
|
|
||||||
|
|
||||||
if (vector < 0)
|
|
||||||
panic("assign_irq_vector: out of interrupt vectors!");
|
|
||||||
|
|
||||||
return vector;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
free_irq_vector (int vector)
|
free_irq_vector (int vector)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,7 +37,6 @@
|
||||||
#include <linux/vfs.h>
|
#include <linux/vfs.h>
|
||||||
#include <linux/pagemap.h>
|
#include <linux/pagemap.h>
|
||||||
#include <linux/mount.h>
|
#include <linux/mount.h>
|
||||||
#include <linux/version.h>
|
|
||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
|
|
||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/version.h>
|
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
#include <linux/cache.h>
|
#include <linux/cache.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <asm/sn/intr.h>
|
#include <asm/sn/intr.h>
|
||||||
#include <asm/sn/sn_sal.h>
|
#include <asm/sn/sn_sal.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
@ -308,8 +309,7 @@ xpc_make_first_contact(struct xpc_partition *part)
|
||||||
"partition %d\n", XPC_PARTID(part));
|
"partition %d\n", XPC_PARTID(part));
|
||||||
|
|
||||||
/* wait a 1/4 of a second or so */
|
/* wait a 1/4 of a second or so */
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
msleep_interruptible(250);
|
||||||
(void) schedule_timeout(0.25 * HZ);
|
|
||||||
|
|
||||||
if (part->act_state == XPC_P_DEACTIVATING) {
|
if (part->act_state == XPC_P_DEACTIVATING) {
|
||||||
return part->reason;
|
return part->reason;
|
||||||
|
@ -841,9 +841,7 @@ xpc_do_exit(void)
|
||||||
down(&xpc_discovery_exited);
|
down(&xpc_discovery_exited);
|
||||||
|
|
||||||
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
msleep_interruptible(300);
|
||||||
schedule_timeout(0.3 * HZ);
|
|
||||||
set_current_state(TASK_RUNNING);
|
|
||||||
|
|
||||||
|
|
||||||
/* wait for all partitions to become inactive */
|
/* wait for all partitions to become inactive */
|
||||||
|
@ -860,12 +858,8 @@ xpc_do_exit(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (active_part_count) {
|
if (active_part_count)
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
msleep_interruptible(300);
|
||||||
schedule_timeout(0.3 * HZ);
|
|
||||||
set_current_state(TASK_RUNNING);
|
|
||||||
}
|
|
||||||
|
|
||||||
} while (active_part_count > 0);
|
} while (active_part_count > 0);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,6 @@ extern __u8 isa_irq_to_vector_map[16];
|
||||||
|
|
||||||
extern struct hw_interrupt_type irq_type_ia64_lsapic; /* CPU-internal interrupt controller */
|
extern struct hw_interrupt_type irq_type_ia64_lsapic; /* CPU-internal interrupt controller */
|
||||||
|
|
||||||
extern int assign_irq_vector_nopanic (int irq); /* allocate a free vector without panic */
|
|
||||||
extern int assign_irq_vector (int irq); /* allocate a free vector */
|
extern int assign_irq_vector (int irq); /* allocate a free vector */
|
||||||
extern void free_irq_vector (int vector);
|
extern void free_irq_vector (int vector);
|
||||||
extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect);
|
extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect);
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
#define _ASM_IA64_SN_XP_H
|
#define _ASM_IA64_SN_XP_H
|
||||||
|
|
||||||
|
|
||||||
#include <linux/version.h>
|
|
||||||
#include <linux/cache.h>
|
#include <linux/cache.h>
|
||||||
#include <linux/hardirq.h>
|
#include <linux/hardirq.h>
|
||||||
#include <asm/sn/types.h>
|
#include <asm/sn/types.h>
|
||||||
|
|
Loading…
Reference in New Issue