riscv-non-isa / server-soc

The repo holds the draft non-ISA Server SoC specification being developed by the Server SoC specification TG and to release intermediate releases of the specification on milestones. Further downstream this repo will be used to release specifications for public review.
https://jira.riscv.org/browse/RVG-58
Creative Commons Attribution 4.0 International
20 stars 7 forks source link

MSI_030 disallows virtual wire (no legacy PCI devices period?) #46

Closed andreiw closed 4 months ago

andreiw commented 4 months ago

I was just curious why MSI_030 disallows virtual wire, instead of leaving this as an implementation option. What if someone wants to build a system that will support legacy PCI devices (eg. hanging these from a PCIe-to-PCI switch)? Surely such a system could be compliant.

When disallowing, it's unclear what the expected behavior is when the RP receives a virtual wire TLP. Is that a PCIe error? Or nothing happens?

ved-rivos commented 4 months ago

While such a system could be compliant the choice was made based on lack of a need for supporting PCI-compatible INTx emulation on modern RISC-V server platforms. The Server SoC also does not support the legacy I/O address space as there is no architecturally defined mechanism to generate IORd/IOWr transactions such as IN/OUT instructions.

andreiw commented 4 months ago

Nevertheless, the spec disallows this outright, instead of simply leaving it to the implementer to worry about implementation details and gaps. That's the part that seems off. Lack of need usually means lack of specification, not an outright ban. And if there is an outright prohibition, I think some more text is necessary to describe what happens on the unsupported virtual wire (or is that already covered by the PCI-SIG specs?)

ved-rivos commented 4 months ago

The treatment of unsupported requests is covered by the PCI-SIG specifications.