I have worked also more on DMA/cache topics. For simple usage of the SDIO (or SDMMC as in H7) the user should not care about the passed bufferpointer, so the driver has to check the address and add copy from/to an aligned buffer.
Fortunately, there is a function aligned_alloc() in C/C++, unfortunately the support for this function is poor.
GCC has compiled, but the linker has thrown errors about non existing posix_memalign which was used inside aligned_alloc. This was true up to gcc 10.2.1, the current 10.3.1 has fixed this by using mem_aligned_r internally. There is still a flaw because it should be availible in namespace std, but it can be called only without specifiying the namespace. Ok, that is acceptable.
But when you want to use Mbed Studio, the prehistoric ARMC6 compiler doesn't know about this standard function at all.I can try to use also mem_aligned, but that is a poor workaround.
Compiling in VSCode is more fun, but needs some more setup than Mbed Studio.I have just asked in Mbed forum about the compiler status, but I don't really expect a (positive) answer.
A performance test has shown about 16 MB/s reading speed with filesystem. One thing that I learned there was that fread() is very slow (about 2,5 MB/s), the File class in Mbed is much faster beause it calls the FatFS function more direct.