[QUERY]: RZ/Five (AX45MP) non-coherent DMA

Lad, Prabhakar prabhakar.csengg at gmail.com
Fri Nov 4 15:09:15 PDT 2022


Hi All,

When trying to add non coherent DMA support for the RZ/Five SoC, I was
suggested to use the ALTERNATIVE() macro [0].

My initial intention was to implement the alternative_call_x()
something like what x86 has and from there call the C function, So
while doing some experiments I realized that using the asm "call
<func>" would cause adding the whole lot of registers in the clobbers
list.

As per my understanding the only correct approach to
alternative_call_x() is if the function itself is inline assembly then
we know the exact registers being used and then we could add them
appropriately in the clobbers list.

The problem with the above approach being we have quite a lot of C
code [1] for the CMO and it also requires some register writes of the
l2 cache controller, converting this to assembly would be a pain.

* Is my understanding correct?
* Is there any other approach I am missing?
* Is there no way out apart from implementing inline asm?

[0] https://patchwork.kernel.org/project/linux-riscv/cover/20221019220242.4746-1-prabhakar.mahadev-lad.rj@bp.renesas.com/
[1] https://patchwork.kernel.org/project/linux-riscv/patch/20221019220242.4746-3-prabhakar.mahadev-lad.rj@bp.renesas.com/

Cheers,
Prabhakar



More information about the linux-riscv mailing list