Skip to content

Commit

Permalink
[POWERPC] Avoid calling get_irq_server() with a real, not virtual irq.
Browse files Browse the repository at this point in the history
We can use default_server when masking an interrupt vector.
get_irq_server() assumes a virtual irq, so badness may happen if we
give it a real one.

Signed-off-by: Michal Ostrowski <mostrows@watson.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Michal Ostrowski authored and Paul Mackerras committed Jan 9, 2007
1 parent 5e264a5 commit 673aeb7
Showing 1 changed file with 2 additions and 3 deletions.
5 changes: 2 additions & 3 deletions arch/powerpc/platforms/pseries/xics.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,6 @@ static void xics_unmask_irq(unsigned int virq)
static void xics_mask_real_irq(unsigned int irq)
{
int call_status;
unsigned int server;

if (irq == XICS_IPI)
return;
Expand All @@ -236,9 +235,9 @@ static void xics_mask_real_irq(unsigned int irq)
return;
}

server = get_irq_server(irq);
/* Have to set XIVE to 0xff to be able to remove a slot */
call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server, 0xff);
call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq,
default_server, 0xff);
if (call_status != 0) {
printk(KERN_ERR "xics_disable_irq: irq=%u: ibm_set_xive(0xff)"
" returned %d\n", irq, call_status);
Expand Down

0 comments on commit 673aeb7

Please sign in to comment.