diff options
Diffstat (limited to 'arch/powerpc/sysdev/mpic.c')
| -rw-r--r-- | arch/powerpc/sysdev/mpic.c | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index d30e6a676c8..ee21b5e71ae 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c @@ -1001,8 +1001,12 @@ static int mpic_host_map(struct irq_domain *h, unsigned int virq,  	if (hw == mpic->spurious_vec)  		return -EINVAL; -	if (mpic->protected && test_bit(hw, mpic->protected)) -		return -EINVAL; +	if (mpic->protected && test_bit(hw, mpic->protected)) { +		pr_warning("mpic: Mapping of source 0x%x failed, " +			   "source protected by firmware !\n",\ +			   (unsigned int)hw); +		return -EPERM; +	}  #ifdef CONFIG_SMP  	else if (hw >= mpic->ipi_vecs[0]) { @@ -1029,8 +1033,12 @@ static int mpic_host_map(struct irq_domain *h, unsigned int virq,  	if (mpic_map_error_int(mpic, virq, hw))  		return 0; -	if (hw >= mpic->num_sources) +	if (hw >= mpic->num_sources) { +		pr_warning("mpic: Mapping of source 0x%x failed, " +			   "source out of range !\n",\ +			   (unsigned int)hw);  		return -EINVAL; +	}  	mpic_msi_reserve_hwirq(mpic, hw);  |