[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 13/13] xen/arm: List static shared memory regions as /memory nodes
> On 16 Apr 2024, at 10:06, Julien Grall <julien@xxxxxxx> wrote: > > > > On 16/04/2024 09:59, Luca Fancellu wrote: >>> On 16 Apr 2024, at 09:50, Julien Grall <julien@xxxxxxx> wrote: >>> >>> >>> >>> On 16/04/2024 07:27, Luca Fancellu wrote: >>>> Hi Julien, >>> >>> Hi Luca, >>> >>>>> On 15 Apr 2024, at 19:41, Julien Grall <julien@xxxxxxx> wrote: >>>>> >>>>> Hi Luca, >>>>> >>>>> On 09/04/2024 12:45, Luca Fancellu wrote: >>>>>> Currently Xen is not exporting the static shared memory regions >>>>>> to the device tree as /memory node, this commit is fixing this >>>>>> issue. >>>>>> The static shared memory banks can be part of the memory range >>>>>> available for the domain, so if they are overlapping with the >>>>>> normal memory banks, they need to be merged together in order >>>>>> to produce a /memory node with non overlapping ranges in 'reg'. >>>>> >>>>> Before reviewing the code in more details, I would like to understand a >>>>> bit more the use case and whether it should be valid. >>>>> >>>>> From my understanding, the case you are trying to prevent is the >>>>> following setup: >>>>> 1. The Guest Physical region 0x0000 to 0x8000 is used for RAM >>>>> 2. The Guest Physical region 0x0000 to 0x4000 is used for static memory >>>> So far, it was possible to map guest physical regions inside the memory >>>> range given to the guest, >>>> so the above configuration was allowed and the underlying host physical >>>> regions were of course >>>> different and enforced with checks. So I’m not trying to prevent this >>>> behaviour, however ... >>>>> >>>>> The underlying Host Physical regions may be different. Xen doesn't >>>>> guarantee in which order the regions will be mapped, So whether the >>>>> overlapped region will point to the memory or the shared region is >>>>> unknown (we don't guarantee the order of the mapping). So nothing good >>>>> will happen to the guest. >>>> ... now here I don’t understand if this was wrong from the beginning or >>>> not, shall we enforce also that >>>> guest physical regions for static shared memory are outside the memory >>>> given to the guest? >>> >>> Nothing good will happen if you are trying to overwrite mappings. So I >>> think this should be enforced. However, this is a more general problem. At >>> the moment, this is pretty much as mess because you can overwrite any >>> mapping (e.g. map MMIO on top of the RAM). >>> >>> I think the easiest way to enforce is to do it in the P2M code like x86 >>> does for certain mappings. >>> >>> Anyway, I don't think the problem should be solved here or by you (this is >>> likely going to be a can of worms). For now, I would consider to simply >>> drop the patches that are trying to do the merge. >>> >>> Any thoughts? >> Yes I agree with you, I’ll drop the patch that tries to do the merge, I was >> thinking about checking that the guest phys static mem region is >> inside these boundaries: >> #define GUEST_RAM_BANK_BASES { GUEST_RAM0_BASE, GUEST_RAM1_BASE } >> #define GUEST_RAM_BANK_SIZES { GUEST_RAM0_SIZE, GUEST_RAM1_SIZE } >> and also that doesn’t overlap with (struct kernel_info).mem, does it sounds >> right to you? > > I don't fully understand what you want to do. But as I wrote before, the > overlaps happen with many different regions (what if you try to use the GIC > Distributor regions for the shared memory?). > > So if we want some overlaps check, then it has to be generic. After a chat in Matrix now I understand what you mean, thanks, I will just drop the patch 12 and update this one. Cheers, Luca
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |