[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 2/2] x86/dom0: attempt to fixup p2m page-faults for PVH dom0
On Tue, Feb 18, 2025 at 03:35:04PM +0100, Roger Pau Monne wrote: > When building a PVH dom0 Xen attempts to map all (relevant) MMIO regions > into the p2m for dom0 access. However the information Xen has about the > host memory map is limited. Xen doesn't have access to any resources > described in ACPI dynamic tables, and hence the p2m mappings provided might > not be complete. > > PV doesn't suffer from this issue because a PV dom0 is capable of mapping > into it's page-tables any address not explicitly banned in d->iomem_caps. > > Introduce a new command line options that allows Xen to attempt to fixup > the p2m page-faults, by creating p2m identity maps in response to p2m > page-faults. > > This is aimed as a workaround to small ACPI regions Xen doesn't know about. > Note that missing large MMIO regions mapped in this way will lead to > slowness due to the VM exit processing, plus the mappings will always use > small pages. > > The ultimate aim is to attempt to bring better parity with a classic PV > dom0. > > Note such fixup rely on the CPU doing the access to the unpopulated > address. If the access is attempted from a device instead there's no > possible way to fixup, as IOMMU page-fault are asynchronous. > > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> > --- > Only slightly tested on my local PVH dom0 deployment. > --- > Changes since v1: > - Make the fixup function static. > - Print message in case mapping already exists. > --- > CHANGELOG.md | 10 ++++ > docs/misc/xen-command-line.pandoc | 16 +++++- > xen/arch/x86/dom0_build.c | 5 ++ > xen/arch/x86/hvm/emulate.c | 74 +++++++++++++++++++++++++- > xen/arch/x86/include/asm/hvm/emulate.h | 3 ++ > 5 files changed, 105 insertions(+), 3 deletions(-) > > diff --git a/CHANGELOG.md b/CHANGELOG.md > index 1de1d1eca17f..e5e6ab3a8902 100644 > --- a/CHANGELOG.md > +++ b/CHANGELOG.md > @@ -4,6 +4,16 @@ Notable changes to Xen will be documented in this file. > > The format is based on [Keep a > Changelog](https://keepachangelog.com/en/1.0.0/) > > +## [4.21.0 > UNRELEASED](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=staging) > - TBD > + > +### Changed > + > +### Added > + - On x86: > + - Option to attempt to fixup p2m page-faults on PVH dom0. > + > +### Removed > + > ## [4.20.0 > UNRELEASED](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=staging) > - TBD > > ### Changed > diff --git a/docs/misc/xen-command-line.pandoc > b/docs/misc/xen-command-line.pandoc > index 9bbd00baef91..83bb69cfb852 100644 > --- a/docs/misc/xen-command-line.pandoc > +++ b/docs/misc/xen-command-line.pandoc > @@ -822,7 +822,8 @@ Specify the bit width of the DMA heap. > > ### dom0 > = List of [ pv | pvh, shadow=<bool>, verbose=<bool>, > - cpuid-faulting=<bool>, msr-relaxed=<bool> ] (x86) > + cpuid-faulting=<bool>, msr-relaxed=<bool>, > + pf-fixup=<bool> ] (x86) > > = List of [ sve=<integer> ] (Arm64) > > @@ -883,6 +884,19 @@ Controls for how dom0 is constructed on x86 systems. > > If using this option is necessary to fix an issue, please report a bug. > > +* The `pf-fixup` boolean is only applicable when using a PVH dom0 and > + defaults to false. I'm considering whether the default should instead be true, so that PVH is closer to what which regions a classic PV dom0 gets access to. Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |