xen: Set platform PCI device INTX affinity to CPU0
With INTX or GSI delivery, Xen uses the event channel structures of CPU0. If the interrupt gets handled by Linux on a different CPU, then no events are seen as pending. Rather than introducing locking to allow other CPUs to process CPU0's events, just ensure that the PCI interrupts happens only on CPU0. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Link: https://lore.kernel.org/r/20210106153958.584169-3-dwmw2@infradead.org Signed-off-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
Родитель
3499ba8198
Коммит
8f4fd86aa5
|
@ -132,6 +132,13 @@ static int platform_pci_probe(struct pci_dev *pdev,
|
|||
dev_warn(&pdev->dev, "request_irq failed err=%d\n", ret);
|
||||
goto out;
|
||||
}
|
||||
/*
|
||||
* It doesn't strictly *have* to run on CPU0 but it sure
|
||||
* as hell better process the event channel ports delivered
|
||||
* to CPU0.
|
||||
*/
|
||||
irq_set_affinity(pdev->irq, cpumask_of(0));
|
||||
|
||||
callback_via = get_callback_via(pdev);
|
||||
ret = xen_set_callback_via(callback_via);
|
||||
if (ret) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче