Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2024-06-06 Review Feedback #1

Merged
merged 2 commits into from
Jun 19, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 49 additions & 25 deletions src/chapter2.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,18 @@ and resources in the system. The topology is expressed in terms of the location
of the resources within the system and the relation between teh QoS Controller
and the resource it manages.

When QoS is enabled, all QoS Controllers must be configured to
When QoS is enabled, all QoS Controllers must be configured properly to
support proper operation.

[NOTE]
The RQSC table describes controllers in a flat hierarchy with the actual
resources each controller is associated with capturing any hierarchy of
implementation. For example, if an SoC implements a Cache Capacity QoS
controller for both an L2 cache within a core/cluster of cores and an LLC
cache, the specific hierarchy information is captured by the resource
association of the described controllers in terms of the Cache ID field
of individual PPTT descriptions.

The table format is described in <<RQSC_TABLE>>.

.The RQSC Table
Expand Down Expand Up @@ -104,23 +113,34 @@ The table format is described in <<RQSC_TABLE>>.
|===
|Field {set:cellbgcolor:green}|Byte Length|Byte Offset|Description
4+<|{set:cellbgcolor:!} *Header*
<|- Resource Type |1 |0 <a|
<|- Resource Type |1 |0 <a|
- 0 - Cache
- 1 - Memory
- 2 - 0x7F - Reserved
- 0x80 - 0xFF - Vendor Specific
<|- Length |1 |1 <a| Length of this specific Resource Structure.
<|- Reserved |1 |1 <a|Reserved. Must be 0
<|- Length |2 |2 <a| Length of this specific Resource Structure.
Length includes the Resource Specific
Data bytes as well. If length is set to 16,
Data bytes as well. If length is set to 20,
then, it indicates there is no resource
specific data available for this structure.
<|- Resource Flags |2 |2 <a|Resource Type Specific flags. Refer to
<|- Resource Flags |2 |4 <a|Resource Type Specific flags. Refer to
vasu-rivosinc marked this conversation as resolved.
Show resolved Hide resolved
<<RESOURCE_FLAGS_TABLE>> for details.
<|- Resource ID 1 |8 |4 <a|Depends on the Resource Type field. Refer
<|- Reserved |1 |6 <a|Reserved. Must be 0
<|- Resource ID Type |1 |7 <a|Type of the Resource ID described by
Resource ID 1 and Resource ID 2 fields.

- 0 - Cache
- 1 - Memory Affinity Structure
vasu-rivosinc marked this conversation as resolved.
Show resolved Hide resolved
- 2 - ACPI Device
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I am not sure I understand from the spec. Could you elaborate what exactly is the ACPI device here? What type of device is it and is there an example _HID? And what about PCI devices or which have standard enumeration methods?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can add a PCI device resource ID type and call out BDF as the identifier to use. Is that acceptable?

As for an ACPI device, if a resource that is managed by a controller is described as an ACPI device, then the Resource ID will capture the ACPI _HID and _UID of such a device.

One potential use case might be if say an ATC is described by an ACPI device (which we don't have any specification today), then we could describe the ATC resource using the ACPI _HID/_UID info.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case, what will be the Resource Type for IOATC? If it is not Cache, then shouldn't there be new Resource Type itself be defined?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will need to define a new Resource ID Type and not a new Resource Type.. Resource Type is still Cache for an IOATC, but, the representation of that may or may not go into a PPTT table. We don't know that yet as we haven't defined an IOATC representation yet. Having a Resource ID Type field allows us the flexibility to identify a Cache resource as either a PPTT Cache ID or any other way we may need to represent in future. Makes sense?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh OK. Thanks!

- 3 - PCI Device
- 4 - 0x7F - Reserved for future use
- 0x80 - 0xFF - Vendor Specific
<|- Resource ID 1 |8 |8 <a|Depends on the Resource ID Type field. Refer
to <<RESOURCE_ID_1_TABLE>> for details.
<|- Resource ID 2 |4 |12 <a|Depends on the Resource Type Field. Refer to
<|- Resource ID 2 |4 |16 <a|Depends on the Resource ID Type Field. Refer to
<<RESOURCE_ID_2_TABLE>> for details.
<|- Resource Specific Data |- |16 <a|Depends on the Resource Type Field. Refer
<|- Resource Specific Data |- |20 <a|Depends on the Resource Type Field. Refer
to <<RESOURCE_DATA_TABLE>> for details.
|===

Expand All @@ -129,14 +149,7 @@ The table format is described in <<RQSC_TABLE>>.
[cols="^1,^3",stripes=even,options="header,unbreakable"]
|===
|Bit {set:cellbgcolor:green}|Description
2+<|{set:cellbgcolor:!} *Resource Type [0 - Cache]*
<|0-7 <a|Reserved for future use.
<|8-15 <a|Vendor Specific.
2+<|*Resource Type [1 - Memory]*
<|0 <a|Raw Bandwidth per bandwidth block is valid
<|1-7 <a|Reserved for future use.
<|8-15 <a|Vendor Specific.
2+<|*All Other Resource Types*
2+<|{set:cellbgcolor:!} *All Other Resource Types*
<|0-7 <a|Reserved for future use.
<|8-15 <a|Vendor Specific.
|===
Expand All @@ -146,31 +159,42 @@ The table format is described in <<RQSC_TABLE>>.
[cols="^2,^1,^1,^3",stripes=even,options="header,unbreakable"]
|===
|Field {set:cellbgcolor:green}|Byte Length|Byte Offset|Description
4+<|{set:cellbgcolor:!} *All Unspecified Resource Types*
<| Resource ID |8 |0 <a|Reserved.
4+<|*Resource Type [0 - Cache]*
4+<|{set:cellbgcolor:!} *All Unspecified Resource ID Types*
<| Resource ID 1 |8 |0 <a|Reserved.
4+<|*Resource ID Type [0 - Cache]*
<| Cache ID |4 |0 <a|Unique Cache ID from the PPTT table’s
Cache Type Structure (Table 5.159 in
ACPI Specification 6.5) that this
controller is associated with.
<| Reserved |4 |4 <a|Reserved.
4+<|*Resource Type [1 - Memory]*
<| Proximity Domain |4 |0 <a|Proximity domain from the SRAT table
that this specific controller is
4+<|*Resource ID Type [1 - Memory Affinity Structure]*
vasu-rivosinc marked this conversation as resolved.
Show resolved Hide resolved
<| Proximity Domain |4 |0 <a|Proximity domain from the SRAT table's
Memory Affinity Structure the resource is
associated with. If the SRAT
vasu-rivosinc marked this conversation as resolved.
Show resolved Hide resolved
table is not implemented, then this value
shall be 0 indicating a UMA memory
configuration.
<| Reserved |4 |4 <a|Reserved.
4+<|*Resource ID Type [2 - ACPI Device]*
<| ACPI Hardware ID |8 |0 <a|_HID value of the ACPI Device
corresponding to the Resource.
4+<|*Resource ID Type [3 - PCI Device]*
<| BDF |4 |0 <a|The Segment/Bus/Device/Function data
of the resource that this controller
is associated with.
<| Reserved |4 |4 <a|Reserved.
|===

.Resource ID 2
[[RESOURCE_ID_2_TABLE]]
[cols="^2,^1,^1,^3",stripes=even,options="header,unbreakable"]
|===
|Field {set:cellbgcolor:green}|Byte Length|Byte Offset|Description
4+<|{set:cellbgcolor:!} *All Unspecified Resource Types*
4+<|{set:cellbgcolor:!} *All Unspecified Resource ID Types*
<| Resource ID 2 |4 |0 <a|Reserved.
4+<|*Resource ID Type [2 - ACPI Device]*
<| ACPI Unique ID |4 |0 <a|_UID value of the ACPI Device
corresponding to the Resource.
|===


Expand All @@ -184,9 +208,9 @@ The table format is described in <<RQSC_TABLE>>.
[NOTE]
If a resource type is not identified below, then there is no Resource Specific Data
defined for that resource type and the Length of the Resource Structure must be
set to 16.
set to 20.
4+<|*Resource Type [1 - Memory]*
<| Raw Bandwidth per Block |4 |0 <a|Indicates the actual raw bandwidth that each
<| Raw Bandwidth per Block |8 |0 <a|Indicates the actual raw bandwidth that each
unit of bandwidth block corresponds to in
bytes/seconds for this specific Resource.
|===
Expand Down
Loading