From: Oleksandr Andrushchenko <andr2000@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: julien@xen.org, sstabellini@kernel.org,
oleksandr_tyshchenko@epam.com, volodymyr_babchuk@epam.com,
Artem_Mygaiev@epam.com, roger.pau@citrix.com, jbeulich@suse.com,
bertrand.marquis@arm.com, rahul.singh@arm.com,
Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Subject: [PATCH 0/9] PCI devices passthrough on Arm, part 3
Date: Fri, 3 Sep 2021 13:08:22 +0300 [thread overview]
Message-ID: <20210903100831.177748-1-andr2000@gmail.com> (raw)
From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Hi, all!
This patch series is focusing on vPCI and adds support for non-identity
PCI BAR mappings which is required while passing through a PCI device to
a guest. The highlights are:
- Add relevant vpci register handlers when assigning PCI device to a domain
and remove those when de-assigning. This allows having different
handlers for different domains, e.g. hwdom and other guests.
- Emulate guest BAR register values based on physical BAR values.
This allows creating a guest view of the registers and emulates
size and properties probe as it is done during PCI device enumeration by
the guest.
- Instead of handling a single range set, that contains all the memory
regions of all the BARs and ROM, have them per BAR.
- Take into account guest's BAR view and program its p2m accordingly:
gfn is guest's view of the BAR and mfn is the physical BAR value as set
up by the host bridge in the hardware domain.
This way hardware doamin sees physical BAR values and guest sees
emulated ones.
The series was also tested on x86 PVH Dom0 and doesn't break it.
Thank you,
Oleksandr
Oleksandr Andrushchenko (8):
vpci: Make vpci registers removal a dedicated function
vpci: Add hooks for PCI device assign/de-assign
vpci/header: Move register assignments from init_bars
vpci/header: Add and remove register handlers dynamically
vpci/header: Implement guest BAR register handlers
vpci/header: Handle p2m range sets per BAR
vpci/header: program p2m with guest BAR view
vpci/header: Reset the command register when adding devices
Rahul Singh (1):
vpci/header: Use pdev's domain instead of vCPU
xen/drivers/passthrough/pci.c | 9 +
xen/drivers/vpci/header.c | 431 +++++++++++++++++++++++++++-------
xen/drivers/vpci/vpci.c | 28 ++-
xen/include/xen/pci_regs.h | 1 +
xen/include/xen/vpci.h | 28 ++-
5 files changed, 413 insertions(+), 84 deletions(-)
--
2.25.1
next reply other threads:[~2021-09-03 10:08 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-03 10:08 Oleksandr Andrushchenko [this message]
2021-09-03 10:08 ` [PATCH 1/9] vpci: Make vpci registers removal a dedicated function Oleksandr Andrushchenko
2021-09-03 10:08 ` [PATCH 2/9] vpci: Add hooks for PCI device assign/de-assign Oleksandr Andrushchenko
2021-09-06 13:23 ` Jan Beulich
2021-09-07 8:33 ` Oleksandr Andrushchenko
2021-09-07 8:44 ` Jan Beulich
2021-09-03 10:08 ` [PATCH 3/9] vpci/header: Move register assignments from init_bars Oleksandr Andrushchenko
2021-09-06 13:53 ` Jan Beulich
2021-09-07 10:04 ` Oleksandr Andrushchenko
2021-09-03 10:08 ` [PATCH 4/9] vpci/header: Add and remove register handlers dynamically Oleksandr Andrushchenko
2021-09-06 14:11 ` Jan Beulich
2021-09-07 10:11 ` Oleksandr Andrushchenko
2021-09-07 10:43 ` Jan Beulich
2021-09-07 11:10 ` Oleksandr Andrushchenko
2021-09-07 11:49 ` Jan Beulich
2021-09-07 12:16 ` Oleksandr Andrushchenko
2021-09-07 12:20 ` Jan Beulich
2021-09-07 12:23 ` Oleksandr Andrushchenko
2021-09-10 21:14 ` Stefano Stabellini
2021-09-03 10:08 ` [PATCH 5/9] vpci/header: Implement guest BAR register handlers Oleksandr Andrushchenko
2021-09-06 14:31 ` Jan Beulich
2021-09-07 13:33 ` Oleksandr Andrushchenko
2021-09-07 16:30 ` Jan Beulich
2021-09-07 17:39 ` Oleksandr Andrushchenko
2021-09-08 9:27 ` Jan Beulich
2021-09-08 9:43 ` Oleksandr Andrushchenko
2021-09-08 10:03 ` Jan Beulich
2021-09-08 13:33 ` Oleksandr Andrushchenko
2021-09-08 14:46 ` Jan Beulich
2021-09-08 15:14 ` Oleksandr Andrushchenko
2021-09-08 15:29 ` Jan Beulich
2021-09-08 15:35 ` Oleksandr Andrushchenko
2021-09-03 10:08 ` [PATCH 6/9] vpci/header: Handle p2m range sets per BAR Oleksandr Andrushchenko
2021-09-06 14:47 ` Jan Beulich
2021-09-08 14:31 ` Oleksandr Andrushchenko
2021-09-08 15:00 ` Jan Beulich
2021-09-09 5:22 ` Oleksandr Andrushchenko
2021-09-09 8:24 ` Jan Beulich
2021-09-09 9:12 ` Oleksandr Andrushchenko
2021-09-09 9:39 ` Jan Beulich
2021-09-09 10:03 ` Oleksandr Andrushchenko
2021-09-09 10:46 ` Jan Beulich
2021-09-09 11:30 ` Oleksandr Andrushchenko
2021-09-09 11:51 ` Jan Beulich
2021-09-03 10:08 ` [PATCH 7/9] vpci/header: program p2m with guest BAR view Oleksandr Andrushchenko
2021-09-06 14:51 ` Jan Beulich
2021-09-09 6:13 ` Oleksandr Andrushchenko
2021-09-09 8:26 ` Jan Beulich
2021-09-09 9:16 ` Oleksandr Andrushchenko
2021-09-09 9:40 ` Jan Beulich
2021-09-09 9:53 ` Oleksandr Andrushchenko
2021-09-03 10:08 ` [PATCH 8/9] vpci/header: Reset the command register when adding devices Oleksandr Andrushchenko
2021-09-06 14:55 ` Jan Beulich
2021-09-07 7:43 ` Oleksandr Andrushchenko
2021-09-07 8:00 ` Jan Beulich
2021-09-07 8:18 ` Oleksandr Andrushchenko
2021-09-07 8:49 ` Jan Beulich
2021-09-07 9:07 ` Oleksandr Andrushchenko
2021-09-07 9:19 ` Jan Beulich
2021-09-07 9:52 ` Oleksandr Andrushchenko
2021-09-07 10:06 ` Jan Beulich
2021-09-09 8:39 ` Oleksandr Andrushchenko
2021-09-09 8:43 ` Jan Beulich
2021-09-09 8:50 ` Oleksandr Andrushchenko
2021-09-09 9:21 ` Jan Beulich
2021-09-09 11:48 ` Oleksandr Andrushchenko
2021-09-09 11:53 ` Jan Beulich
2021-09-09 12:42 ` Oleksandr Andrushchenko
2021-09-09 12:47 ` Jan Beulich
2021-09-09 12:48 ` Oleksandr Andrushchenko
2021-09-09 13:17 ` Oleksandr Andrushchenko
2021-09-09 11:48 ` Oleksandr Andrushchenko
2021-09-03 10:08 ` [PATCH 9/9] vpci/header: Use pdev's domain instead of vCPU Oleksandr Andrushchenko
2021-09-06 14:57 ` Jan Beulich
2021-09-09 4:23 ` Oleksandr Andrushchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210903100831.177748-1-andr2000@gmail.com \
--to=andr2000@gmail.com \
--cc=Artem_Mygaiev@epam.com \
--cc=bertrand.marquis@arm.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=oleksandr_andrushchenko@epam.com \
--cc=oleksandr_tyshchenko@epam.com \
--cc=rahul.singh@arm.com \
--cc=roger.pau@citrix.com \
--cc=sstabellini@kernel.org \
--cc=volodymyr_babchuk@epam.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.