Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[POWERPC] Avoid calling get_irq_server() with a real, not virtual irq.

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>

authored by

Michal Ostrowski and committed by
Paul Mackerras
673aeb76 5e264a52

+2 -3
+2 -3
arch/powerpc/platforms/pseries/xics.c
··· 224 224 static void xics_mask_real_irq(unsigned int irq) 225 225 { 226 226 int call_status; 227 - unsigned int server; 228 227 229 228 if (irq == XICS_IPI) 230 229 return; ··· 235 236 return; 236 237 } 237 238 238 - server = get_irq_server(irq); 239 239 /* Have to set XIVE to 0xff to be able to remove a slot */ 240 - call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server, 0xff); 240 + call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, 241 + default_server, 0xff); 241 242 if (call_status != 0) { 242 243 printk(KERN_ERR "xics_disable_irq: irq=%u: ibm_set_xive(0xff)" 243 244 " returned %d\n", irq, call_status);