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.