[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 1/4] xen/arm/static-shmem: Static-shmem should be direct-mapped for direct-mapped domains
Hi Henry, +CC: Luca On 17/05/2024 05:21, Henry Wang wrote: > > > Currently, users are allowed to map static shared memory in a > non-direct-mapped way for direct-mapped domains. This can lead to > clashing of guest memory spaces. Also, the current extended region > finding logic only removes the host physical addresses of the > static shared memory areas for direct-mapped domains, which may be > inconsistent with the guest memory map if users map the static > shared memory in a non-direct-mapped way. This will lead to incorrect > extended region calculation results. > > To make things easier, add restriction that static shared memory > should also be direct-mapped for direct-mapped domains. Check the > host physical address to be matched with guest physical address when > parsing the device tree. Document this restriction in the doc. I'm ok with this restriction. @Luca, do you have any use case preventing us from making this restriction? This patch clashes with Luca series so depending on which goes first, Acked-by: Michal Orzel <michal.orzel@xxxxxxx> > > Signed-off-by: Henry Wang <xin.wang2@xxxxxxx> > --- > v3: > - New patch. > --- > docs/misc/arm/device-tree/booting.txt | 3 +++ > xen/arch/arm/static-shmem.c | 6 ++++++ > 2 files changed, 9 insertions(+) > > diff --git a/docs/misc/arm/device-tree/booting.txt > b/docs/misc/arm/device-tree/booting.txt > index bbd955e9c2..c994e48391 100644 > --- a/docs/misc/arm/device-tree/booting.txt > +++ b/docs/misc/arm/device-tree/booting.txt > @@ -591,6 +591,9 @@ communication. > shared memory region in host physical address space, a size, and a guest > physical address, as the target address of the mapping. > e.g. xen,shared-mem = < [host physical address] [guest address] [size] > > + Note that if a domain is direct-mapped, i.e. the Dom0 and the Dom0less > + DomUs with `direct-map` device tree property, the static shared memory > + should also be direct-mapped (host physical address == guest address). > > It shall also meet the following criteria: > 1) If the SHM ID matches with an existing region, the address range of > the > diff --git a/xen/arch/arm/static-shmem.c b/xen/arch/arm/static-shmem.c > index 78881dd1d3..b26fb69874 100644 > --- a/xen/arch/arm/static-shmem.c > +++ b/xen/arch/arm/static-shmem.c > @@ -235,6 +235,12 @@ int __init process_shm(struct domain *d, struct > kernel_info *kinfo, > d, psize); > return -EINVAL; > } > + if ( is_domain_direct_mapped(d) && (pbase != gbase) ) > + { > + printk("%pd: physical address 0x%"PRIpaddr" and guest address > 0x%"PRIpaddr" are not 1:1 direct-mapped.\n", NIT: 1:1 and direct-mapped means the same so no need to place them next to each other > + d, pbase, gbase); > + return -EINVAL; > + } > > for ( i = 0; i < PFN_DOWN(psize); i++ ) > if ( !mfn_valid(mfn_add(maddr_to_mfn(pbase), i)) ) > -- > 2.34.1 > > ~Michal
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |