I tested it in very minimalist and quick way without any project, just by using a debugger.
I simply created own descriptor (hseSrvDescriptor_t) in RAM memory like this:
lukaszadrapa_0-1746006796579.png
First word 0x300 is ID of HSE_SRV_ID_GET_RANDOM_NUM, second word is reserved and then there's hseGetRandomNumSrv_t structure. You can take a look at HSE service API reference manual. First word selects DRG3 class, second word selects length of random number (16 bytes) and last word sets pointer where HSE will write the random number.
Then I trigger the service by writing address of the descriptor (0x20400000) to transmit register TR[1] in MU_0. The result is that receive register RR[1] contains return value from HSE 0x55A5AA33 which is HSE_SRV_RSP_OK (operation was successful) and random number is available at 0x2040050:
lukaszadrapa_1-1746007122722.png
So, I'm sure the HSE_SRV_ID_GET_RANDOM_NUM works as expected regardless of drivers, software, etc.
The data cache must be disabled for this test, of course.
lukaszadrapa_2-1746007518978.png
Regards,
Lukas