[v3, 5/8] powernv/opal: Convert opal message events to opal irq domain

Michael Ellerman mpe at ellerman.id.au
Mon May 11 19:18:47 AEST 2015


On Thu, 2015-07-05 at 03:16:15 UTC, Alistair Popple wrote:
> diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
> index 4399ff2..0196220 100644
> --- a/arch/powerpc/platforms/powernv/opal.c
> +++ b/arch/powerpc/platforms/powernv/opal.c
> @@ -362,33 +362,34 @@ static void opal_handle_message(void)
>  	opal_message_do_notify(type, (void *)&msg);
>  }
>  
> -static int opal_message_notify(struct notifier_block *nb,
> -			  unsigned long events, void *change)
> +static irqreturn_t opal_message_notify(int irq, void *data)
>  {
> -	if (events & OPAL_EVENT_MSG_PENDING)
> -		opal_handle_message();
> -	return 0;
> +	opal_handle_message();
> +	return IRQ_HANDLED;
>  }
>  
> -static struct notifier_block opal_message_nb = {
> -	.notifier_call	= opal_message_notify,
> -	.next		= NULL,
> -	.priority	= 0,
> -};
> -
>  static int __init opal_message_init(void)
>  {
> -	int ret, i;
> +	int ret, i, irq;
>  
>  	for (i = 0; i < OPAL_MSG_TYPE_MAX; i++)
>  		ATOMIC_INIT_NOTIFIER_HEAD(&opal_msg_notifier_head[i]);
>  
> -	ret = opal_notifier_register(&opal_message_nb);
> +	irq = opal_event_request(ilog2(OPAL_EVENT_MSG_PENDING));
> +	if (!irq) {
> +		pr_err("%s: Can't register OPAL event irq (%d)\n",
> +		       __func__, irq);
> +		return irq;
> +	}


On mambo this is giving me:

  irq: XICS didn't like hwirq-0xb to VIRQ17 mapping (rc=-22)
  opal: opal_message_init: Can't register OPAL event irq (0)


Which suggests your irq domain is NULL and it's falling back to XICS?

And it never gets to userspace, which I guess is related, but might not be.

cheers


More information about the Linuxppc-dev mailing list