提交 0ae68826 编写于 作者: J Juergen Gross 提交者: Yang Yingliang

xen/events: fix setting irq affinity

The backport of upstream patch 25da4618 ("xen/events: don't
unmask an event channel when an eoi is pending") introduced a
regression for stable kernels 5.10 and older: setting IRQ affinity for
IRQs related to interdomain events would no longer work, as moving the
IRQ to its new cpu was not included in the irq_ack callback for those
events.

Fix that by adding the needed call.

Note that kernels 5.11 and later don't need the explicit moving of the
IRQ to the target cpu in the irq_ack callback, due to a rework of the
affinity setting in kernel 5.11.
Signed-off-by: NJuergen Gross <jgross@suse.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 9f13b3f3
...@@ -1769,7 +1769,7 @@ static void lateeoi_ack_dynirq(struct irq_data *data) ...@@ -1769,7 +1769,7 @@ static void lateeoi_ack_dynirq(struct irq_data *data)
if (VALID_EVTCHN(evtchn)) { if (VALID_EVTCHN(evtchn)) {
do_mask(info, EVT_MASK_REASON_EOI_PENDING); do_mask(info, EVT_MASK_REASON_EOI_PENDING);
event_handler_exit(info); ack_dynirq(data);
} }
} }
...@@ -1780,7 +1780,7 @@ static void lateeoi_mask_ack_dynirq(struct irq_data *data) ...@@ -1780,7 +1780,7 @@ static void lateeoi_mask_ack_dynirq(struct irq_data *data)
if (VALID_EVTCHN(evtchn)) { if (VALID_EVTCHN(evtchn)) {
do_mask(info, EVT_MASK_REASON_EXPLICIT); do_mask(info, EVT_MASK_REASON_EXPLICIT);
event_handler_exit(info); ack_dynirq(data);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册