Skip to content

Commit

Permalink
[PATCH] ppc64: global interrupt queue cleanup
Browse files Browse the repository at this point in the history
Move the code to set global interrupt queue membership to xics.c,
and remove no longer needed extern declarations.  Also call it on
all cpus (even the boot cpu) to prepare for kexec.

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: R Sharada <sharada@in.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
paulusmack authored and Linus Torvalds committed May 6, 2005
1 parent 2512809 commit 6c80a21
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 14 deletions.
7 changes: 0 additions & 7 deletions arch/ppc64/kernel/pSeries_smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -326,13 +326,6 @@ static void __devinit smp_xics_setup_cpu(int cpu)

cpu_clear(cpu, of_spin_map);

/*
* Put the calling processor into the GIQ. This is really only
* necessary from a secondary thread as the OF start-cpu interface
* performs this function for us on primary threads.
*/
rtas_set_indicator(GLOBAL_INTERRUPT_QUEUE,
(1UL << interrupt_server_size) - 1 - default_distrib_server, 1);
}

static DEFINE_SPINLOCK(timebase_lock);
Expand Down
16 changes: 12 additions & 4 deletions arch/ppc64/kernel/xics.c
Original file line number Diff line number Diff line change
Expand Up @@ -432,16 +432,25 @@ void xics_cause_IPI(int cpu)
{
ops->qirr_info(cpu, IPI_PRIORITY);
}
#endif /* CONFIG_SMP */

void xics_setup_cpu(void)
{
int cpu = smp_processor_id();

ops->cppr_info(cpu, 0xff);
iosync();
}

#endif /* CONFIG_SMP */
/*
* Put the calling processor into the GIQ. This is really only
* necessary from a secondary thread as the OF start-cpu interface
* performs this function for us on primary threads.
*
* XXX: undo of teardown on kexec needs this too, as may hotplug
*/
rtas_set_indicator(GLOBAL_INTERRUPT_QUEUE,
(1UL << interrupt_server_size) - 1 - default_distrib_server, 1);
}

void xics_init_IRQ(void)
{
Expand Down Expand Up @@ -563,8 +572,7 @@ void xics_init_IRQ(void)
for (; i < NR_IRQS; ++i)
get_irq_desc(i)->handler = &xics_pic;

ops->cppr_info(boot_cpuid, 0xff);
iosync();
xics_setup_cpu();

ppc64_boot_msg(0x21, "XICS Done");
}
Expand Down
3 changes: 0 additions & 3 deletions include/asm-ppc64/xics.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,4 @@ struct xics_ipi_struct {

extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned;

extern unsigned int default_distrib_server;
extern unsigned int interrupt_server_size;

#endif /* _PPC64_KERNEL_XICS_H */

0 comments on commit 6c80a21

Please sign in to comment.