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
18 stars 6 forks source link

ARC Feedback #48

Closed ved-rivos closed 1 week ago

ved-rivos commented 1 month ago
ved-rivos commented 1 month ago

IOM_300 mandates a 20-bit PASID, while IOM_170 allows 8-bit and 17-bit PASIDs. Recommend reconciling the conflict by removing IOM_170’s acceptance of 8- and 17-bit PASIDs.

IOM_170 requires that 20-bit PASID be supported but allows an implementation to support 8 and 17 bit PASID configurations in the IOMMU. IOM_300 mandates that the host bridge should not truncate the PASID from the PASID TLP that is input to the IOMMU. Thus they are not at conflict. The requirement IOM_300 enables the IOMMU to detect misconfigurations where a device may be programmed with a PASID wider than that configured in the pdtp.MODE (8/17/20) in the IOMMU for that device. A clarification is included in IOM_300.

ved-rivos commented 1 month ago

AER_080 Recommend clarifying what must not affect PCIe root port configuration registers (i.e., “affected by what”)

The requirement states that the configuration registers themselves must not be affected. The note following that requirement further clarifies why losing the root port configurations will cause issues with supporting hot-plug. This requirement has been placed because this is a commonly encountered integration issue.

ved-rivos commented 1 month ago

MMS_030 The normative text in this requirement should clarify that address ranges corresponding to PCIe BARs with the Prefetchable bit set MAY have non-cacheable, idempotent, coherent, weakly-ordered PMAs, rather than placing an exception in the requirement’s non-normative section.

PCIe 6.0 does not have the concept of "Prefetchable" bit anymore. The concept of “Prefetchable” MMIO was originally needed to control PCI-PCI Bridges, which were allowed/encouraged to prefetch Memory Read data in prefetchable regions. MMIO that has read side-effects, e.g. locations that auto-increment when read, cannot safely be prefetched from, and so needed to be distinguished from regions that could. While this was intended to specifically focus on PCI behavior it has been a cause of confusion to system software developers and this was eventually fixed in PCIe 6.0 through "Removing Prefetchable Terminology ECN".

The MMS_030 specifically calls attention to “restricted programming model” to indicate the precautions provided by PCIe 6.0 specification when overriding the memory attribute of accesses made to device registers.

The spec is updated to include references to the ECN and explanation about the intent of "Prefetchable" to address such confusion.

ved-rivos commented 1 month ago

IOM_190 Clarify why “at least 4 event counters” are required. Is there a rationale behind the number “4” here?

A typical performance analysis requires counting - translation requests, TLB misses, number of page walks, and possibly average page walk latency - for identifying performance bottlenecks at the top level. The count of 4 was arrived at based on review of HPM in IOMMU with the performance analysis SIG and based on experience with similar architectures. Some notes are in the minutes and follow on discussion. A note is now added to IOM_190

ved-rivos commented 1 month ago

Several requirements appear to be duplicative of requirements in other specifications - in particular, the PCIe Specification. Consider removing these requirements from the RISC-V Server SoC Specification; instead, simply stating that normative requirements from certain referenced specifications such as the PCIe Base Specification 6.0 are incorporated here by reference. Examples: ACS_050; ECM_070; ECM_090; etc.

The ECM_090 was intended to draw attention to common integration mistakes such as ignoring ARI forwarding when making determination of when to convert type 1 to type 0 configuration requests. Added notes to further clarify.

Merged ECM_070 and ACS_050 into a single requirement on root complex integration - RCI_010

ved-rivos commented 1 month ago

MSI_020 Unclear what the intention is behind this requirement and this may unintentionally conflict with IOMMU MSI configuration. Recommend removing it or clarifying it..

This is removed. The intent was to forbid needing vendor specific programming to route or handle MSIs as has been seen on some implementations.

ved-rivos commented 1 month ago

IOM_250 This requirement leaves the details of the PMA and PMP checks vague. Recommend stating explicitly which PMA/PMP checks are intended to be performed here.

It is not possible to mandate which regions are protected regions for a platform and hence are covered by a PMP. The requirement has been clarified to state that the PMP checks are intended to restrict IOMMU accesses to the same memory that the software programming the hart can also access.

The IOMMU requires supporting its data structures and pages tables in main memory. It is clarified that supporting non main memory access for IOMMU data structures is not required.

ved-rivos commented 1 month ago

Updates in PR #49 and PR #50