xen/arm: process pending vPCI map/unmap operations
authorOleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Wed, 24 Nov 2021 07:59:41 +0000 (09:59 +0200)
committerJulien Grall <jgrall@amazon.com>
Wed, 8 Dec 2021 16:38:25 +0000 (16:38 +0000)
commitc62d634cce8b1507d00a61bfc8168ac42367fe87
tree449ee5e249eee027f7f7755069915e6d1b724b55
parent608531a0cc34a5bc096ccf585e16f182b5ed83e1
xen/arm: process pending vPCI map/unmap operations

vPCI may map and unmap PCI device memory (BARs) being passed through which
may take a lot of time. For this those operations may be deferred to be
performed later, so that they can be safely preempted.

Currently this deferred processing is happening in common IOREQ code
which doesn't seem to be the right place for x86 and is even more
doubtful because IOREQ may not be enabled for Arm at all.
So, for Arm the pending vPCI work may have no chance to be executed
if the processing is left as is in the common IOREQ code only.
For that reason make vPCI processing happen in arch specific code.

Please be aware that there are a few outstanding TODOs affecting this
code path, see xen/drivers/vpci/header.c:map_range and
xen/drivers/vpci/header.c:vpci_process_pending.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
[x86 part]
Acked-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Reviewed-by: Rahul Singh <rahul.singh@arm.com>
Tested-by: Rahul Singh <rahul.singh@arm.com>
xen/arch/arm/traps.c
xen/arch/x86/hvm/hvm.c
xen/common/ioreq.c