mirror of
https://github.com/torvalds/linux.git
synced 2025-11-09 05:00:09 +02:00
Linux enables MSI-X before disabling INTx, but keeps MSI-X masked until
the table is filled. Then it disables INTx just before clearing MASKALL
bit. Currently this approach is rejected by xen-pciback.
According to the PCIe spec, device cannot use INTx when MSI/MSI-X is
enabled (in other words: enabling MSI/MSI-X implicitly disables INTx).
Change the logic to consider INTx disabled if MSI/MSI-X is enabled. This
applies to three places:
- checking currently enabled interrupts type,
- transition to MSI/MSI-X - where INTx would be implicitly disabled,
- clearing INTx disable bit - which can be allowed even if MSI/MSI-X is
enabled, as device should consider INTx disabled anyway in that case
Fixes:
|
||
|---|---|---|
| .. | ||
| conf_space.c | ||
| conf_space.h | ||
| conf_space_capability.c | ||
| conf_space_header.c | ||
| conf_space_quirks.c | ||
| conf_space_quirks.h | ||
| Makefile | ||
| passthrough.c | ||
| pci_stub.c | ||
| pciback.h | ||
| pciback_ops.c | ||
| vpci.c | ||
| xenbus.c | ||