Commit 1daa1f21 authored by Linus Torvalds's avatar Linus Torvalds

Merge http://lia64.bkbits.net/to-linus-2.5

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents bbf2b79a 1014e334
......@@ -308,6 +308,8 @@ smp_call_function (void (*func) (void *info), void *info, int nonatomic, int wai
if (!cpus)
return 0;
BUG_ON(irqs_disabled());
data.func = func;
data.info = info;
atomic_set(&data.started, 0);
......
......@@ -529,7 +529,11 @@ hub_dmaaddr_drain( vertex_hdl_t vhdl,
void
hub_provider_startup(vertex_hdl_t hubv)
{
hubinfo_t hubinfo;
hubinfo_get(hubv, &hubinfo);
hub_pio_init(hubv);
intr_init_vecblk(nasid_to_cnodeid(hubinfo->h_nasid));
}
/*
......
......@@ -813,11 +813,6 @@ sn_pci_init (void)
*/
sgi_master_io_infr_init();
for (cnode = 0; cnode < numnodes; cnode++) {
extern void intr_init_vecblk(cnodeid_t);
intr_init_vecblk(cnode);
}
sn_init_cpei_timer();
#ifdef CONFIG_PROC_FS
......
......@@ -40,6 +40,7 @@
static void force_interrupt(int irq);
extern void pcibr_force_interrupt(pcibr_intr_t intr);
extern int sn_force_interrupt_flag;
struct irq_desc * sn_irq_desc(unsigned int irq);
struct sn_intr_list_t {
struct sn_intr_list_t *next;
......@@ -101,6 +102,8 @@ sn_end_irq(unsigned int irq)
int nasid;
int ivec;
unsigned long event_occurred;
irq_desc_t *desc = sn_irq_desc(irq);
unsigned int status = desc->status;
ivec = irq & 0xff;
if (ivec == SGI_UART_VECTOR) {
......@@ -115,7 +118,8 @@ sn_end_irq(unsigned int irq)
}
__clear_bit(ivec, (volatile void *)pda->sn_in_service_ivecs);
if (sn_force_interrupt_flag)
force_interrupt(irq);
if (!(status & (IRQ_DISABLED | IRQ_INPROGRESS)))
force_interrupt(irq);
}
static void
......
......@@ -147,8 +147,8 @@
#define __P011 PAGE_READONLY /* ditto */
#define __P100 __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_X_RX)
#define __P101 __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX)
#define __P110 PAGE_COPY
#define __P111 PAGE_COPY
#define __P110 PAGE_COPY_EXEC
#define __P111 PAGE_COPY_EXEC
#define __S000 PAGE_NONE
#define __S001 PAGE_READONLY
......
......@@ -288,7 +288,7 @@ ia64_sn_plat_specific_err_print(int (*hook)(const char*, ...), char *rec)
ret_stuff.v0 = 0;
ret_stuff.v1 = 0;
ret_stuff.v2 = 0;
SAL_CALL_NOLOCK(ret_stuff, SN_SAL_PRINT_ERROR, (uint64_t)hook, (uint64_t)rec, 0, 0, 0, 0, 0);
SAL_CALL_REENTRANT(ret_stuff, SN_SAL_PRINT_ERROR, (uint64_t)hook, (uint64_t)rec, 0, 0, 0, 0, 0);
return ret_stuff.status;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment