|
@@ -487,7 +487,8 @@ static void eoi_pirq(struct irq_data *data)
|
|
if (!VALID_EVTCHN(evtchn))
|
|
if (!VALID_EVTCHN(evtchn))
|
|
return;
|
|
return;
|
|
|
|
|
|
- if (unlikely(irqd_is_setaffinity_pending(data))) {
|
|
|
|
|
|
+ if (unlikely(irqd_is_setaffinity_pending(data)) &&
|
|
|
|
+ likely(!irqd_irq_disabled(data))) {
|
|
int masked = test_and_set_mask(evtchn);
|
|
int masked = test_and_set_mask(evtchn);
|
|
|
|
|
|
clear_evtchn(evtchn);
|
|
clear_evtchn(evtchn);
|
|
@@ -1370,7 +1371,8 @@ static void ack_dynirq(struct irq_data *data)
|
|
if (!VALID_EVTCHN(evtchn))
|
|
if (!VALID_EVTCHN(evtchn))
|
|
return;
|
|
return;
|
|
|
|
|
|
- if (unlikely(irqd_is_setaffinity_pending(data))) {
|
|
|
|
|
|
+ if (unlikely(irqd_is_setaffinity_pending(data)) &&
|
|
|
|
+ likely(!irqd_irq_disabled(data))) {
|
|
int masked = test_and_set_mask(evtchn);
|
|
int masked = test_and_set_mask(evtchn);
|
|
|
|
|
|
clear_evtchn(evtchn);
|
|
clear_evtchn(evtchn);
|