Thread (98 messages) 98 messages, 6 authors, 2023-12-18

Re: [PATCH RFC v2 11/27] arm64: mte: Reserve tag storage memory

From: Alexandru Elisei <hidden>
Date: 2023-12-13 17:44:53
Also in: kvmarm, linux-arch, linux-arm-kernel, linux-fsdevel, linux-mm, lkml

On Wed, Dec 13, 2023 at 11:22:17AM -0600, Rob Herring wrote:
On Wed, Dec 13, 2023 at 8:51 AM Alexandru Elisei
[off-list ref] wrote:
quoted
Hi,

On Wed, Dec 13, 2023 at 08:06:44AM -0600, Rob Herring wrote:
quoted
On Wed, Dec 13, 2023 at 7:05 AM Alexandru Elisei
[off-list ref] wrote:
quoted
Hi Rob,

On Tue, Dec 12, 2023 at 12:44:06PM -0600, Rob Herring wrote:
quoted
On Tue, Dec 12, 2023 at 10:38 AM Alexandru Elisei
[off-list ref] wrote:
quoted
Hi Rob,

Thank you so much for the feedback, I'm not very familiar with device tree,
and any comments are very useful.

On Mon, Dec 11, 2023 at 11:29:40AM -0600, Rob Herring wrote:
quoted
On Sun, Nov 19, 2023 at 10:59 AM Alexandru Elisei
[off-list ref] wrote:
quoted
Allow the kernel to get the size and location of the MTE tag storage
regions from the DTB. This memory is marked as reserved for now.

The DTB node for the tag storage region is defined as:

        tags0: tag-storage@8f8000000 {
                compatible = "arm,mte-tag-storage";
                reg = <0x08 0xf8000000 0x00 0x4000000>;
                block-size = <0x1000>;
                memory = <&memory0>;    // Associated tagged memory node
        };
I skimmed thru the discussion some. If this memory range is within
main RAM, then it definitely belongs in /reserved-memory.
Ok, will do that.

If you don't mind, why do you say that it definitely belongs in
reserved-memory? I'm not trying to argue otherwise, I'm curious about the
motivation.
Simply so that /memory nodes describe all possible memory and
/reserved-memory is just adding restrictions. It's also because
/reserved-memory is what gets handled early, and we don't need
multiple things to handle early.
quoted
Tag storage is not DMA and can live anywhere in memory.
Then why put it in DT at all? The only reason CMA is there is to set
the size. It's not even clear to me we need CMA in DT either. The
reasoning long ago was the kernel didn't do a good job of moving and
reclaiming contiguous space, but that's supposed to be better now (and
most h/w figured out they need IOMMUs).

But for tag storage you know the size as it is a function of the
memory size, right? After all, you are validating the size is correct.
I guess there is still the aspect of whether you want enable MTE or
not which could be done in a variety of ways.
Oh, sorry, my bad, I should have been clearer about this. I don't want to
put it in the DT as a "linux,cma" node. But I want it to be managed by CMA.
Yes, I understand, but my point remains. Why do you need this in DT?
If the location doesn't matter and you can calculate the size from the
memory size, what else is there to add to the DT?
I am afraid there has been a misunderstanding. What do you mean by
"location doesn't matter"?
You said:
quoted
Tag storage is not DMA and can live anywhere in memory.
Which I took as the kernel can figure out where to put it. But maybe
you meant the h/w platform can hard code it to be anywhere in memory?
If so, then yes, DT is needed.
Ah, I see, sorry for not being clear enough, you are correct: tag storage
is a hardware property, and software needs a mechanism (in this case, the
dt) to discover its properties.
quoted
At the very least, Linux needs to know the address and size of a memory
region to use it. The series is about using the tag storage memory for
data. Tag storage cannot be described as a regular memory node because it
cannot be tagged (and normal memory can).
If the tag storage lives in the middle of memory, then it would be
described in the memory node, but removed by being in reserved-memory
node.
I don't follow. Would you mind going into more details?
quoted
Then there's the matter of the tag storage block size (explained in this
commit message), and also knowing the memory range for which a tag storage
region stores the tags. This is explained in the cover letter.
Honestly, I just forgot about that part.
I totally understand, there are a lot of things to consider at the same
time.

Thanks,
Alex
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help