Hi,
I have board with two clusters, one has 4*A57 cores, and the other has 4*A53 cores.
The A57 cluster has its own L1 and L2 cache, A53 cluster also has its own L1 and L2 cache. Between the clusters there is a CCI.
There is no L3 cache. So the memory will be the L3.
My question is, in this situation why linux set memory as inner shareable? (Also I can not find any outer shareable definition in all of the linux codes.)
In my opinion, when you want to make data coherency between clusters, you must set it as outer shareable.
Am I right? Hope to get your help.
BR
Thomas
Hi MarekBykowski,
First, thank you!
After reading the discussion, I get a little confused about the shareability domain.
1) As you said "The shareability domains are SOC specific", then how do software aware of this? I do not find any system registers of ARM to describe this information. Or the only way is to ask the hardware guy?
2) As you said "So if all cores of your soc are running the same OS, this should be a reasonable indicator that L1/L2 and L3 on your SOC are all part of the inner shareable domain", does this means that OS such linux can only run in an inner shareable domain without any CMO by software?
Take my board as example, the two clusters are connected to the CCI to make them data coherency, and linux can run on the board, so we can infer that the two clusters are in the same shareable domain. Is this correct?
BR,
Thank you! I am much clearly now, there is one last question.
For example, two clusters, one is in inner shareable domain A, the other is in inner shareable domain B, A and B are in the same outer shareable domain.
As you said, two OSes run in the each domain is the typical usage, and the memory is set to be outer shareable to be data-coherency between the two OSes. So, since the memory is data-coherency between the two OSes or the outer shareable domain, why can not a single OS run on this kind of SOC. Let me put is another way, why a single OS can not run on a SOC with outer shareable domains?
Thomas,
Under the scenario you describe I think it can and this is the purpose of the shareability domains.
But then I would ask another question, why would somebody made such an effort to implement 2x inner shareable domains on the system and scrapped it by using the OS running/configuring the outer shareable domain (which equals into not using the split). My point is you do not design the SoC being capable running 2x inner shareable domains if you are not going to use it.
Interesting is that the address space attributed to devices are usually (if not always) outer shareable.
My problem Thomas is also that some of the most detailed aspects of it are just my analysis and I'm still waiting for a word back from the HW design team for my boards to confirm that. In that I'd also appreciate if any SoC design expert fromthe forum confirms/broadens what is in this and related thread.
Marek
Thank you very much for your detail analysis. Yes, "My point is you do not design the SoC being capable running 2x inner shareable domains if you are not going to use it" make sense, I agree with you. If you get some confirmation, please let me know. Thanks!