All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
@ 2015-07-08  8:56 Jan Beulich
  2015-07-08  9:03 ` Andrew Cooper
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Jan Beulich @ 2015-07-08  8:56 UTC (permalink / raw)
  To: xen-devel
  Cc: Keir Fraser, Stefano Stabellini, Andrew Cooper, Ian Jackson,
	Tim Deegan, Ian Campbell, Sander Eikelenboom

[-- Attachment #1: Type: text/plain, Size: 2803 bytes --]

Rather than assuming only PV guests need special treatment (and
dealing with that directly when an IRQ gets set up), keep all guest MSI
IRQs masked until either the (HVM) guest unmasks them via vMSI or the
(PV, PVHVM, or PVH) guest sets up an event channel for it.

To not further clutter the common evtchn_bind_pirq() with x86-specific
code, introduce an arch_evtchn_bind_pirq() hook instead.

Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Sander Eikelenboom <linux@eikelenboom.it>

--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -2502,6 +2502,25 @@ int unmap_domain_pirq_emuirq(struct doma
     return ret;
 }
 
+void arch_evtchn_bind_pirq(struct domain *d, int pirq)
+{
+    int irq = domain_pirq_to_irq(d, pirq);
+    struct irq_desc *desc;
+    unsigned long flags;
+
+    if ( irq <= 0 )
+        return;
+
+    if ( is_hvm_domain(d) )
+        map_domain_emuirq_pirq(d, pirq, IRQ_PT);
+
+    desc = irq_to_desc(irq);
+    spin_lock_irqsave(&desc->lock, flags);
+    if ( desc->msi_desc )
+        guest_mask_msi_irq(desc, 0);
+    spin_unlock_irqrestore(&desc->lock, flags);
+}
+
 bool_t hvm_domain_use_pirq(const struct domain *d, const struct pirq *pirq)
 {
     return is_hvm_domain(d) && pirq &&
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -422,10 +422,7 @@ void guest_mask_msi_irq(struct irq_desc 
 
 static unsigned int startup_msi_irq(struct irq_desc *desc)
 {
-    bool_t guest_masked = (desc->status & IRQ_GUEST) &&
-                          is_hvm_domain(desc->msi_desc->dev->domain);
-
-    msi_set_mask_bit(desc, 0, guest_masked);
+    msi_set_mask_bit(desc, 0, !!(desc->status & IRQ_GUEST));
     return 0;
 }
 
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -502,10 +502,7 @@ static long evtchn_bind_pirq(evtchn_bind
 
     bind->port = port;
 
-#ifdef CONFIG_X86
-    if ( is_hvm_domain(d) && domain_pirq_to_irq(d, pirq) > 0 )
-        map_domain_emuirq_pirq(d, pirq, IRQ_PT);
-#endif
+    arch_evtchn_bind_pirq(d, pirq);
 
  out:
     spin_unlock(&d->event_lock);
--- a/xen/include/asm-arm/irq.h
+++ b/xen/include/asm-arm/irq.h
@@ -47,6 +47,8 @@ int release_guest_irq(struct domain *d, 
 
 void arch_move_irqs(struct vcpu *v);
 
+#define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))
+
 /* Set IRQ type for an SPI */
 int irq_set_spi_type(unsigned int spi, unsigned int type);
 
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -172,4 +172,8 @@ unsigned int set_desc_affinity(struct ir
 unsigned int arch_hwdom_irqs(domid_t);
 #endif
 
+#ifndef arch_evtchn_bind_pirq
+void arch_evtchn_bind_pirq(struct domain *, int pirq);
+#endif
+
 #endif /* __XEN_IRQ_H__ */




[-- Attachment #2: x86-MSI-pv-unmask.patch --]
[-- Type: text/plain, Size: 2865 bytes --]

x86/MSI: fix guest unmasking when handling IRQ via event channel

Rather than assuming only PV guests need special treatment (and
dealing with that directly when an IRQ gets set up), keep all guest MSI
IRQs masked until either the (HVM) guest unmasks them via vMSI or the
(PV, PVHVM, or PVH) guest sets up an event channel for it.

To not further clutter the common evtchn_bind_pirq() with x86-specific
code, introduce an arch_evtchn_bind_pirq() hook instead.

Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Sander Eikelenboom <linux@eikelenboom.it>

--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -2502,6 +2502,25 @@ int unmap_domain_pirq_emuirq(struct doma
     return ret;
 }
 
+void arch_evtchn_bind_pirq(struct domain *d, int pirq)
+{
+    int irq = domain_pirq_to_irq(d, pirq);
+    struct irq_desc *desc;
+    unsigned long flags;
+
+    if ( irq <= 0 )
+        return;
+
+    if ( is_hvm_domain(d) )
+        map_domain_emuirq_pirq(d, pirq, IRQ_PT);
+
+    desc = irq_to_desc(irq);
+    spin_lock_irqsave(&desc->lock, flags);
+    if ( desc->msi_desc )
+        guest_mask_msi_irq(desc, 0);
+    spin_unlock_irqrestore(&desc->lock, flags);
+}
+
 bool_t hvm_domain_use_pirq(const struct domain *d, const struct pirq *pirq)
 {
     return is_hvm_domain(d) && pirq &&
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -422,10 +422,7 @@ void guest_mask_msi_irq(struct irq_desc 
 
 static unsigned int startup_msi_irq(struct irq_desc *desc)
 {
-    bool_t guest_masked = (desc->status & IRQ_GUEST) &&
-                          is_hvm_domain(desc->msi_desc->dev->domain);
-
-    msi_set_mask_bit(desc, 0, guest_masked);
+    msi_set_mask_bit(desc, 0, !!(desc->status & IRQ_GUEST));
     return 0;
 }
 
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -502,10 +502,7 @@ static long evtchn_bind_pirq(evtchn_bind
 
     bind->port = port;
 
-#ifdef CONFIG_X86
-    if ( is_hvm_domain(d) && domain_pirq_to_irq(d, pirq) > 0 )
-        map_domain_emuirq_pirq(d, pirq, IRQ_PT);
-#endif
+    arch_evtchn_bind_pirq(d, pirq);
 
  out:
     spin_unlock(&d->event_lock);
--- a/xen/include/asm-arm/irq.h
+++ b/xen/include/asm-arm/irq.h
@@ -47,6 +47,8 @@ int release_guest_irq(struct domain *d, 
 
 void arch_move_irqs(struct vcpu *v);
 
+#define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))
+
 /* Set IRQ type for an SPI */
 int irq_set_spi_type(unsigned int spi, unsigned int type);
 
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -172,4 +172,8 @@ unsigned int set_desc_affinity(struct ir
 unsigned int arch_hwdom_irqs(domid_t);
 #endif
 
+#ifndef arch_evtchn_bind_pirq
+void arch_evtchn_bind_pirq(struct domain *, int pirq);
+#endif
+
 #endif /* __XEN_IRQ_H__ */

[-- Attachment #3: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08  8:56 [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel Jan Beulich
@ 2015-07-08  9:03 ` Andrew Cooper
  2015-07-08  9:07 ` Julien Grall
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Andrew Cooper @ 2015-07-08  9:03 UTC (permalink / raw)
  To: Jan Beulich, xen-devel
  Cc: Keir Fraser, Stefano Stabellini, Tim Deegan, Ian Jackson,
	Ian Campbell, Sander Eikelenboom

On 08/07/2015 09:56, Jan Beulich wrote:
> Rather than assuming only PV guests need special treatment (and
> dealing with that directly when an IRQ gets set up), keep all guest MSI
> IRQs masked until either the (HVM) guest unmasks them via vMSI or the
> (PV, PVHVM, or PVH) guest sets up an event channel for it.
>
> To not further clutter the common evtchn_bind_pirq() with x86-specific
> code, introduce an arch_evtchn_bind_pirq() hook instead.
>
> Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> Tested-by: Sander Eikelenboom <linux@eikelenboom.it>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08  8:56 [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel Jan Beulich
  2015-07-08  9:03 ` Andrew Cooper
@ 2015-07-08  9:07 ` Julien Grall
  2015-07-08 10:55   ` Jan Beulich
  2015-07-08  9:39 ` David Vrabel
  2015-07-10 10:29 ` Ian Campbell
  3 siblings, 1 reply; 10+ messages in thread
From: Julien Grall @ 2015-07-08  9:07 UTC (permalink / raw)
  To: Jan Beulich, xen-devel
  Cc: Keir Fraser, Stefano Stabellini, Andrew Cooper, Tim Deegan,
	Ian Campbell, Sander Eikelenboom, Ian Jackson

Hi,

On 08/07/2015 09:56, Jan Beulich wrote:
> --- a/xen/include/asm-arm/irq.h
> +++ b/xen/include/asm-arm/irq.h
> @@ -47,6 +47,8 @@ int release_guest_irq(struct domain *d,
>
>   void arch_move_irqs(struct vcpu *v);
>
> +#define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))
> +

This addition is here in order to ensure that d and pirq are evaluated, 
right?

If so, I didn't find it obvious to understand. Why didn't you use a 
static inline? Or maybe add a comment explicitly say this is not 
implemented.

Regards,

-- 
Julien Grall

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08  8:56 [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel Jan Beulich
  2015-07-08  9:03 ` Andrew Cooper
  2015-07-08  9:07 ` Julien Grall
@ 2015-07-08  9:39 ` David Vrabel
  2015-07-08 10:58   ` Jan Beulich
  2015-07-10 10:29 ` Ian Campbell
  3 siblings, 1 reply; 10+ messages in thread
From: David Vrabel @ 2015-07-08  9:39 UTC (permalink / raw)
  To: Jan Beulich, xen-devel
  Cc: Keir Fraser, Stefano Stabellini, Andrew Cooper, Tim Deegan,
	Ian Campbell, Sander Eikelenboom, Ian Jackson

On 08/07/15 09:56, Jan Beulich wrote:
> Rather than assuming only PV guests need special treatment (and
> dealing with that directly when an IRQ gets set up), keep all guest MSI
> IRQs masked until either the (HVM) guest unmasks them via vMSI or the
> (PV, PVHVM, or PVH) guest sets up an event channel for it.
> 
> To not further clutter the common evtchn_bind_pirq() with x86-specific
> code, introduce an arch_evtchn_bind_pirq() hook instead.

Can you describe the symptoms of the bug being fixed here?

> --- a/xen/include/asm-arm/irq.h
> +++ b/xen/include/asm-arm/irq.h
> @@ -47,6 +47,8 @@ int release_guest_irq(struct domain *d, 
>  
>  void arch_move_irqs(struct vcpu *v);
>  
> +#define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))

Would this be better as a inline function?

> +
>  /* Set IRQ type for an SPI */
>  int irq_set_spi_type(unsigned int spi, unsigned int type);
>  
> --- a/xen/include/xen/irq.h
> +++ b/xen/include/xen/irq.h
> @@ -172,4 +172,8 @@ unsigned int set_desc_affinity(struct ir
>  unsigned int arch_hwdom_irqs(domid_t);
>  #endif
>  
> +#ifndef arch_evtchn_bind_pirq
> +void arch_evtchn_bind_pirq(struct domain *, int pirq);

... moving this into xen/include/asm-x86/irq.h

David

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08  9:07 ` Julien Grall
@ 2015-07-08 10:55   ` Jan Beulich
  2015-07-08 11:02     ` Julien Grall
  0 siblings, 1 reply; 10+ messages in thread
From: Jan Beulich @ 2015-07-08 10:55 UTC (permalink / raw)
  To: Julien Grall
  Cc: Keir Fraser, Stefano Stabellini, Andrew Cooper, Ian Jackson,
	TimDeegan, Ian Campbell, SanderEikelenboom, xen-devel

>>> On 08.07.15 at 11:07, <julien.grall@citrix.com> wrote:
> On 08/07/2015 09:56, Jan Beulich wrote:
>> --- a/xen/include/asm-arm/irq.h
>> +++ b/xen/include/asm-arm/irq.h
>> @@ -47,6 +47,8 @@ int release_guest_irq(struct domain *d,
>>
>>   void arch_move_irqs(struct vcpu *v);
>>
>> +#define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))
>> +
> 
> This addition is here in order to ensure that d and pirq are evaluated, 
> right?

Sure.

> If so, I didn't find it obvious to understand. Why didn't you use a 
> static inline? Or maybe add a comment explicitly say this is not 
> implemented.

A static inline could be used in this case, yes. But I see no
significant advantages. As to the comment - it is implemented,
it's just a no-op. And stating that it is a no-op would be
redundant with it obviously being so by looking at it.

Jan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08  9:39 ` David Vrabel
@ 2015-07-08 10:58   ` Jan Beulich
  2015-07-08 11:14     ` David Vrabel
  0 siblings, 1 reply; 10+ messages in thread
From: Jan Beulich @ 2015-07-08 10:58 UTC (permalink / raw)
  To: David Vrabel, Julien Grall
  Cc: Keir Fraser, Stefano Stabellini, Andrew Cooper, Ian Jackson,
	TimDeegan, Ian Campbell, SanderEikelenboom, xen-devel

>>> On 08.07.15 at 11:39, <david.vrabel@citrix.com> wrote:
> On 08/07/15 09:56, Jan Beulich wrote:
>> Rather than assuming only PV guests need special treatment (and
>> dealing with that directly when an IRQ gets set up), keep all guest MSI
>> IRQs masked until either the (HVM) guest unmasks them via vMSI or the
>> (PV, PVHVM, or PVH) guest sets up an event channel for it.
>> 
>> To not further clutter the common evtchn_bind_pirq() with x86-specific
>> code, introduce an arch_evtchn_bind_pirq() hook instead.
> 
> Can you describe the symptoms of the bug being fixed here?

Interrupts simply didn't get unmasked for PVHVM Linux guests.

>> --- a/xen/include/asm-arm/irq.h
>> +++ b/xen/include/asm-arm/irq.h
>> @@ -47,6 +47,8 @@ int release_guest_irq(struct domain *d, 
>>  
>>  void arch_move_irqs(struct vcpu *v);
>>  
>> +#define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))
> 
> Would this be better as a inline function?
> 
>> +
>>  /* Set IRQ type for an SPI */
>>  int irq_set_spi_type(unsigned int spi, unsigned int type);
>>  
>> --- a/xen/include/xen/irq.h
>> +++ b/xen/include/xen/irq.h
>> @@ -172,4 +172,8 @@ unsigned int set_desc_affinity(struct ir
>>  unsigned int arch_hwdom_irqs(domid_t);
>>  #endif
>>  
>> +#ifndef arch_evtchn_bind_pirq
>> +void arch_evtchn_bind_pirq(struct domain *, int pirq);
> 
> ... moving this into xen/include/asm-x86/irq.h

Oh, right, (also to Julien) - this is exactly the reason I do not want it
to be an inline function for ARM: I want the declaration here, not
replicated in every interested arch's header.

Jan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08 10:55   ` Jan Beulich
@ 2015-07-08 11:02     ` Julien Grall
  0 siblings, 0 replies; 10+ messages in thread
From: Julien Grall @ 2015-07-08 11:02 UTC (permalink / raw)
  To: Jan Beulich
  Cc: Keir Fraser, Stefano Stabellini, Andrew Cooper, TimDeegan,
	Ian Campbell, SanderEikelenboom, xen-devel, Ian Jackson



On 08/07/2015 11:55, Jan Beulich wrote:
>>>> On 08.07.15 at 11:07, <julien.grall@citrix.com> wrote:
>> On 08/07/2015 09:56, Jan Beulich wrote:
>>> --- a/xen/include/asm-arm/irq.h
>>> +++ b/xen/include/asm-arm/irq.h
>>> @@ -47,6 +47,8 @@ int release_guest_irq(struct domain *d,
>>>
>>>    void arch_move_irqs(struct vcpu *v);
>>>
>>> +#define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))
>>> +
>>
>> This addition is here in order to ensure that d and pirq are evaluated,
>> right?
>
> Sure.
>
>> If so, I didn't find it obvious to understand. Why didn't you use a
>> static inline? Or maybe add a comment explicitly say this is not
>> implemented.
>
> A static inline could be used in this case, yes. But I see no
> significant advantages. As to the comment - it is implemented,
> it's just a no-op. And stating that it is a no-op would be
> redundant with it obviously being so by looking at it.

It's not so obvious as I asked about it.

The first thing I saw was (d) + (pirq) and I though : "Why do we want to 
add a domain with a pirq?". I only see after the (void) and it just 
because I remembered we talked about similar case a year ago.

Having a comment doesn't hurt and help the comprehension.

-- 
Julien Grall

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08 10:58   ` Jan Beulich
@ 2015-07-08 11:14     ` David Vrabel
  2015-07-08 12:33       ` Jan Beulich
  0 siblings, 1 reply; 10+ messages in thread
From: David Vrabel @ 2015-07-08 11:14 UTC (permalink / raw)
  To: Jan Beulich, David Vrabel, Julien Grall
  Cc: Keir Fraser, Stefano Stabellini, Andrew Cooper, TimDeegan,
	Ian Campbell, SanderEikelenboom, xen-devel, Ian Jackson

On 08/07/15 11:58, Jan Beulich wrote:
>>>> On 08.07.15 at 11:39, <david.vrabel@citrix.com> wrote:
>> On 08/07/15 09:56, Jan Beulich wrote:
>>> Rather than assuming only PV guests need special treatment (and
>>> dealing with that directly when an IRQ gets set up), keep all guest MSI
>>> IRQs masked until either the (HVM) guest unmasks them via vMSI or the
>>> (PV, PVHVM, or PVH) guest sets up an event channel for it.
>>>
>>> To not further clutter the common evtchn_bind_pirq() with x86-specific
>>> code, introduce an arch_evtchn_bind_pirq() hook instead.
>>
>> Can you describe the symptoms of the bug being fixed here?
> 
> Interrupts simply didn't get unmasked for PVHVM Linux guests.
> 
>>> --- a/xen/include/asm-arm/irq.h
>>> +++ b/xen/include/asm-arm/irq.h
>>> @@ -47,6 +47,8 @@ int release_guest_irq(struct domain *d, 
>>>  
>>>  void arch_move_irqs(struct vcpu *v);
>>>  
>>> +#define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq)))
>>
>> Would this be better as a inline function?
>>
>>> +
>>>  /* Set IRQ type for an SPI */
>>>  int irq_set_spi_type(unsigned int spi, unsigned int type);
>>>  
>>> --- a/xen/include/xen/irq.h
>>> +++ b/xen/include/xen/irq.h
>>> @@ -172,4 +172,8 @@ unsigned int set_desc_affinity(struct ir
>>>  unsigned int arch_hwdom_irqs(domid_t);
>>>  #endif
>>>  
>>> +#ifndef arch_evtchn_bind_pirq
>>> +void arch_evtchn_bind_pirq(struct domain *, int pirq);
>>
>> ... moving this into xen/include/asm-x86/irq.h
> 
> Oh, right, (also to Julien) - this is exactly the reason I do not want it
> to be an inline function for ARM: I want the declaration here, not
> replicated in every interested arch's header.

Ok.

FWIW, with this requirement I would (instead of the macros) add a weak
arch_evtchn_bind_pirq() that's a no-op.

David

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08 11:14     ` David Vrabel
@ 2015-07-08 12:33       ` Jan Beulich
  0 siblings, 0 replies; 10+ messages in thread
From: Jan Beulich @ 2015-07-08 12:33 UTC (permalink / raw)
  To: David Vrabel
  Cc: Ian Campbell, Keir Fraser, Stefano Stabellini, Andrew Cooper,
	Ian Jackson, TimDeegan, Julien Grall, SanderEikelenboom,
	xen-devel

>>> On 08.07.15 at 13:14, <david.vrabel@citrix.com> wrote:
> On 08/07/15 11:58, Jan Beulich wrote:
>>>>> On 08.07.15 at 11:39, <david.vrabel@citrix.com> wrote:
>>> On 08/07/15 09:56, Jan Beulich wrote:
>>>> +
>>>>  /* Set IRQ type for an SPI */
>>>>  int irq_set_spi_type(unsigned int spi, unsigned int type);
>>>>  
>>>> --- a/xen/include/xen/irq.h
>>>> +++ b/xen/include/xen/irq.h
>>>> @@ -172,4 +172,8 @@ unsigned int set_desc_affinity(struct ir
>>>>  unsigned int arch_hwdom_irqs(domid_t);
>>>>  #endif
>>>>  
>>>> +#ifndef arch_evtchn_bind_pirq
>>>> +void arch_evtchn_bind_pirq(struct domain *, int pirq);
>>>
>>> ... moving this into xen/include/asm-x86/irq.h
>> 
>> Oh, right, (also to Julien) - this is exactly the reason I do not want it
>> to be an inline function for ARM: I want the declaration here, not
>> replicated in every interested arch's header.
> 
> Ok.
> 
> FWIW, with this requirement I would (instead of the macros) add a weak
> arch_evtchn_bind_pirq() that's a no-op.

Yeah, that's how Linux likes to do it. But we learned the hard way
that weak conflicts with our making symbols hidden by default, so
no, weak is not an option either I'm afraid.

Jan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel
  2015-07-08  8:56 [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel Jan Beulich
                   ` (2 preceding siblings ...)
  2015-07-08  9:39 ` David Vrabel
@ 2015-07-10 10:29 ` Ian Campbell
  3 siblings, 0 replies; 10+ messages in thread
From: Ian Campbell @ 2015-07-10 10:29 UTC (permalink / raw)
  To: Jan Beulich
  Cc: Keir Fraser, Stefano Stabellini, Andrew Cooper, Ian Jackson,
	Tim Deegan, Sander Eikelenboom, xen-devel

On Wed, 2015-07-08 at 09:56 +0100, Jan Beulich wrote:
> Rather than assuming only PV guests need special treatment (and
> dealing with that directly when an IRQ gets set up), keep all guest MSI
> IRQs masked until either the (HVM) guest unmasks them via vMSI or the
> (PV, PVHVM, or PVH) guest sets up an event channel for it.
> 
> To not further clutter the common evtchn_bind_pirq() with x86-specific
> code, introduce an arch_evtchn_bind_pirq() hook instead.
> 
> Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> Tested-by: Sander Eikelenboom <linux@eikelenboom.it>


For the ARM impact; Acked-by: Ian Campbell <ian.campbell@citrix.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-07-10 10:29 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-08  8:56 [PATCH] x86/MSI: fix guest unmasking when handling IRQ via event channel Jan Beulich
2015-07-08  9:03 ` Andrew Cooper
2015-07-08  9:07 ` Julien Grall
2015-07-08 10:55   ` Jan Beulich
2015-07-08 11:02     ` Julien Grall
2015-07-08  9:39 ` David Vrabel
2015-07-08 10:58   ` Jan Beulich
2015-07-08 11:14     ` David Vrabel
2015-07-08 12:33       ` Jan Beulich
2015-07-10 10:29 ` Ian Campbell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.