*/
if ( desc->action != NULL )
{
- struct domain *ad = irq_get_domain(desc);
-
- if ( test_bit(_IRQ_GUEST, &desc->status) && d == ad )
+ if ( test_bit(_IRQ_GUEST, &desc->status) )
{
- if ( irq_get_guest_info(desc)->virq != virq )
+ struct domain *ad = irq_get_domain(desc);
+
+ if ( d == ad )
+ {
+ if ( irq_get_guest_info(desc)->virq != virq )
+ {
+ printk(XENLOG_G_ERR
+ "d%u: IRQ %u is already assigned to vIRQ %u\n",
+ d->domain_id, irq, irq_get_guest_info(desc)->virq);
+ retval = -EBUSY;
+ }
+ }
+ else
{
- printk(XENLOG_G_ERR
- "d%u: IRQ %u is already assigned to vIRQ %u\n",
- d->domain_id, irq, irq_get_guest_info(desc)->virq);
+ printk(XENLOG_G_ERR "IRQ %u is already used by domain %u\n",
+ irq, ad->domain_id);
retval = -EBUSY;
}
- goto out;
}
-
- if ( test_bit(_IRQ_GUEST, &desc->status) )
- printk(XENLOG_G_ERR "IRQ %u is already used by domain %u\n",
- irq, ad->domain_id);
else
+ {
printk(XENLOG_G_ERR "IRQ %u is already used by Xen\n", irq);
- retval = -EBUSY;
+ retval = -EBUSY;
+ }
goto out;
}