Hi Gavin
Yes, your understanding is correct: TF-RMM currently supports only 4 KB RMI granules. We are evaluating the design changes needed to support 16 KiB and 64 KiB granules.
This is a huge engineering effort because assumptions about 4 KB granule is present throughout, including granule metadata, reference counting, Stage 1/2 tables and memory management. The implementation also needs to support the Host selecting the RMI granule size through RMI_RMM_CONFIG_SET during initialization.
We do not yet have a delivery date yet. We expect an update to the CCA roadmap to be done via the core-collective CCA working group : https://corecollective.dev/working-groups/cca/ .
Best Regards Soby Mathew
From: Gavin Shan gshan@redhat.com Date: Thursday, 8 October 2026 at 01:05 To: tf-rmm@lists.trustedfirmware.org tf-rmm@lists.trustedfirmware.org Cc: Soby Mathew Soby.Mathew@arm.com; Alexander Lougovski alougovs@redhat.com Subject: 64KB granule size support for TF-RMM
Hi Folks,
It's first time to raise questions here, not sure it's the right place for discussion on feature planning and support here. The background is our RHEL distributions like RHEL10 supports 64KB (base) page size for arm64, which isn't supported by upstream TF-RMM yet. So the question is do we have a plan to support 64KB granule size and the estimated time for it to happen?
Looking at the latest TF-RMM upstream code, 64KB granule size isn't supported as I can understand.
- In smc_rmm_config_set(), handler of RMI RMM_CONFIG_SET, the configured granule size should be RMI_GRANULE_SIZE, which is hardcoded to 4KB like below.
/* The implementation currently supports only the 4 KiB RMI Granule size. */ #define RMI_GRANULE_SIZE RMI_GRANULE_SIZE_4KB
- 'struct granule' represents a granule in TF-RMM, whose length is 16-bits. Bits[0 - 9] are curved out for the reference count, which isn't sufficient when the granule is taken as stage-2 RTT if the granule size is 64KB. In this specific case, Bits[0 - 13] are needed for the reference count.
- The translation regimes are sticky to 4KB. For example, option 'XLAT_GRANULARITY_SIZE_SHIFT' only supports 4KB at present.
if(NOT(XLAT_GRANULARITY_SIZE_SHIFT EQUAL "12")) message(FATAL_ERROR "Only 4K granularity is supported at the moment") endif()
Thanks, Gavin
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.