Message ID | 20250206010843.618280-2-stefano.stabellini@amd.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Guest XenStore page allocation for 11 Dom0less domUs | expand |
On 06/02/2025 02:08, Stefano Stabellini wrote: > From: Henry Wang <xin.wang2@amd.com> > > 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. > > Signed-off-by: Henry Wang <xin.wang2@amd.com> > Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com> > Acked-by: Michal Orzel <michal.orzel@amd.com> This patch has already been committed (see 0a0f30c1b55e) and later on fixed (see 988f1c7e1f40). DO NOT COMMIT. ~Michal
On Thu, 6 Feb 2025, Orzel, Michal wrote: > On 06/02/2025 02:08, Stefano Stabellini wrote: > > From: Henry Wang <xin.wang2@amd.com> > > > > 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. > > > > Signed-off-by: Henry Wang <xin.wang2@amd.com> > > Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com> > > Acked-by: Michal Orzel <michal.orzel@amd.com> > This patch has already been committed (see 0a0f30c1b55e) and later on fixed (see 988f1c7e1f40). > > DO NOT COMMIT. Thanks Michal!! I'll take off the series.
diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt index 9c881baccc..ff70d44462 100644 --- a/docs/misc/arm/device-tree/booting.txt +++ b/docs/misc/arm/device-tree/booting.txt @@ -615,6 +615,9 @@ communication. 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). + 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 8f87154c35..44eeac2a23 100644 --- a/xen/arch/arm/static-shmem.c +++ b/xen/arch/arm/static-shmem.c @@ -325,6 +325,12 @@ int __init process_shm(struct domain *d, struct kernel_info *kinfo, printk("%pd: static shared memory bank not found: '%s'", d, shm_id); return -ENOENT; } + if ( is_domain_direct_mapped(d) && (pbase != gbase) ) + { + printk("%pd: physical address 0x%"PRIpaddr" and guest address 0x%"PRIpaddr" are not direct-mapped.\n", + d, pbase, gbase); + return -EINVAL; + } pbase = boot_shm_bank->start; psize = boot_shm_bank->size;