|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/6] xen: extend XEN_DOMCTL_memory_mapping to handle cacheability
On Wed, 27 Feb 2019, Julien Grall wrote:
> Hi Stefano,
>
> On 2/26/19 11:07 PM, Stefano Stabellini wrote:
> > Reuse the existing padding field to pass cacheability information about
> > the memory mapping, specifically, whether the memory should be mapped as
> > normal memory or as device memory (this is what we have today).
> >
> > Add a cacheability parameter to map_mmio_regions. 0 means device
> > memory, which is what we have today.
> >
> > On ARM, map device memory as p2m_mmio_direct_dev (as it is already done
> > today) and normal memory as p2m_ram_rw.
> >
> > On x86, return error if the cacheability requested is not device memory.
> >
> > Signed-off-by: Stefano Stabellini <stefanos@xxxxxxxxxx>
> > CC: JBeulich@xxxxxxxx
> > CC: andrew.cooper3@xxxxxxxxxx
> > ---
> > xen/arch/arm/gic-v2.c | 3 ++-
> > xen/arch/arm/p2m.c | 19 +++++++++++++++++--
> > xen/arch/arm/platforms/exynos5.c | 4 ++--
> > xen/arch/arm/platforms/omap5.c | 8 ++++----
> > xen/arch/arm/vgic-v2.c | 2 +-
> > xen/arch/arm/vgic/vgic-v2.c | 2 +-
> > xen/arch/x86/hvm/dom0_build.c | 7 +++++--
> > xen/arch/x86/mm/p2m.c | 6 +++++-
> > xen/common/domctl.c | 8 +++++---
> > xen/drivers/vpci/header.c | 3 ++-
> > xen/include/public/domctl.h | 4 +++-
> > xen/include/xen/p2m-common.h | 3 ++-
> > 12 files changed, 49 insertions(+), 20 deletions(-)
> >
> > diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
> > index e7eb01f..1ea3da2 100644
> > --- a/xen/arch/arm/gic-v2.c
> > +++ b/xen/arch/arm/gic-v2.c
> > @@ -690,7 +690,8 @@ static int gicv2_map_hwdown_extra_mappings(struct domain
> > *d)
> > ret = map_mmio_regions(d, gaddr_to_gfn(v2m_data->addr),
> > PFN_UP(v2m_data->size),
> > - maddr_to_mfn(v2m_data->addr));
> > + maddr_to_mfn(v2m_data->addr),
> > + CACHEABILITY_DEVMEM);
> > if ( ret )
> > {
> > printk(XENLOG_ERR "GICv2: Map v2m frame to d%d failed.\n",
> > diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
> > index 30cfb01..5b8fcc5 100644
> > --- a/xen/arch/arm/p2m.c
> > +++ b/xen/arch/arm/p2m.c
> > @@ -1068,9 +1068,24 @@ int unmap_regions_p2mt(struct domain *d,
> > int map_mmio_regions(struct domain *d,
> > gfn_t start_gfn,
> > unsigned long nr,
> > - mfn_t mfn)
> > + mfn_t mfn,
> > + uint32_t cache_policy)
>
> Rather than extending map_mmio_regions, I would prefer if we kill this
> function (and unmap_mmio_mmio_regions) and instead use map_regions_p2mt.
>
> This means the conversation to p2mt should be done in the DOMCTL handling.
map_regions_p2mt is an arm specific function. map_mmio_regions is the
common function across x86 and arm, called from common code.
> > {
> > - return p2m_insert_mapping(d, start_gfn, nr, mfn, p2m_mmio_direct_dev);
> > + p2m_type_t t;
> > +
> > + switch ( cache_policy )
> > + {
> > + case CACHEABILITY_MEMORY:
> > + t = p2m_ram_rw;
> > + break;
> > + case CACHEABILITY_DEVMEM:
> > + t = p2m_mmio_direct_dev;
> > + break;
> > + default:
> > + return -ENOSYS;
>
> We tend to use EOPNOTSUPP in such a case.
Yes, OK
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |