Linux KVM/arm64 development list
 help / color / mirror / Atom feed
From: Alexandru Elisei <alexandru.elisei@arm.com>
To: Andre Przywara <andre.przywara@arm.com>,
	Will Deacon <will@kernel.org>,
	Julien Thierry <julien.thierry.kdev@gmail.com>
Cc: Marc Zyngier <maz@kernel.org>,
	Sami Mujawar <sami.mujawar@arm.com>,
	kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org
Subject: Re: [PATCH kvmtool v3 00/22] Unify I/O port and MMIO trap handling
Date: Wed, 17 Mar 2021 17:44:37 +0000	[thread overview]
Message-ID: <72c227a7-5854-2cba-fb98-9606dfe79b7d@arm.com> (raw)
In-Reply-To: <20210315153350.19988-1-andre.przywara@arm.com>

Hi Will, Julien,

On 3/15/21 3:33 PM, Andre Przywara wrote:
> Hi,
>
> this version is addressing Alexandru's comments, fixing mostly minor
> issues in the naming scheme. The biggest change is to keep the
> ioport__read/ioport_write wrappers for the serial device.
> For more details see the changelog below.
> ==============
>
> At the moment we use two separate code paths to handle exits for
> KVM_EXIT_IO (ioport.c) and KVM_EXIT_MMIO (mmio.c), even though they
> are semantically very similar. Because the trap handler callback routine
> is different, devices need to decide on one conduit or need to provide
> different handler functions for both of them.
>
> This is not only unnecessary code duplication, but makes switching
> devices from I/O port to MMIO a tedious task, even though there is no
> real difference between the two, especially on ARM and PowerPC.
>
> For ARM we aim at providing a flexible memory layout, and also have
> trouble with the UART and RTC device overlapping with the PCI I/O area,
> so it seems indicated to tackle this once and for all.
>
> The first three patches do some cleanup, to simplify things later.
>
> Patch 04/22 lays the groundwork, by extending mmio.c to be able to also
> register I/O port trap handlers, using the same callback prototype as
> we use for MMIO.
>
> The next 14 patches then convert devices that use the I/O port
> interface over to the new joint interface. This requires to rework
> the trap handler routine to adhere to the same prototype as the existing
> MMIO handlers. For most devices this is done in two steps: a first to
> introduce the reworked handler routine, and a second to switch to the new
> joint registration routine. For some devices the first step is trivial,
> so it's done in one patch.
>
> Patch 19/22 then retires the old I/O port interface, by removing ioport.c
> and friends.
> Patch 20/22 uses the opportunity to clean up the memory map description,
> also declares a new region (from 16MB on), where the final two patches
> switch the UART and the RTC device to. They are now registered
> on the MMIO "bus", when running on ARM or arm64. This moves them away
> from the first 64KB, so they are not in the PCI I/O area anymore.

I have reviewed the series and everything looks fine to me and ready to be merged.
I have also ran the following tests:

- On my x86_64 desktop, I ran a guest with --sdl, to exercise the vesa device.

- On a rockpro64, I ran kvm-unit-tests for arm64 and arm (kvmtool was compiled for
arm64); I also ran Linux guests using 4k and 64k pages with and without --force-pci.

- On a Seattle machine, I did PCI passthrough for an Intel 82574L network card and
ran Linux guests using 4k and 64k pages with and without --force-pci.

- On an odroid-c4 (4 x Cortex-A55), I ran Linux guests using 4k, 16k and 64k pages
with and without --force-pci.

With this series merged, everything will be in place to bring back the patch that
adds PCI Express 1.1 support for arm/arm64 [1]. The patch was previously dropped
because the RTC and UART were overlapping with the PCI I/O space and EDK2 doesn't
not understand PCI I/O bus addresses above 64k, but this series fixes that by
moving the addresses of the two devices.

[1] https://www.spinics.net/lists/kvm/msg211304.html

Thanks,
Alex
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

  parent reply	other threads:[~2021-03-17 17:44 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-15 15:33 [PATCH kvmtool v3 00/22] Unify I/O port and MMIO trap handling Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 01/22] ioport: Remove ioport__setup_arch() Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 02/22] hw/serial: Use device abstraction for FDT generator function Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 03/22] ioport: Retire .generate_fdt_node functionality Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 04/22] mmio: Extend handling to include ioport emulation Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 05/22] hw/i8042: Clean up data types Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 06/22] hw/i8042: Refactor trap handler Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 07/22] hw/i8042: Switch to new trap handlers Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 08/22] x86/ioport: Refactor " Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 09/22] x86/ioport: Switch to new " Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 10/22] hw/rtc: Refactor " Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 11/22] hw/rtc: Switch to new trap handler Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 12/22] hw/vesa: Switch trap handling to use MMIO handler Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 13/22] hw/serial: Refactor trap handler Andre Przywara
2021-03-16 15:40   ` Alexandru Elisei
2021-03-15 15:33 ` [PATCH kvmtool v3 14/22] hw/serial: Switch to new trap handlers Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 15/22] vfio: Refactor ioport trap handler Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 16/22] vfio: Switch to new ioport trap handlers Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 17/22] virtio: Switch trap handling to use MMIO handler Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 18/22] pci: " Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 19/22] Remove ioport specific routines Andre Przywara
2021-03-15 15:33 ` [PATCH kvmtool v3 20/22] arm: Reorganise and document memory map Andre Przywara
2021-03-17 15:17   ` Alexandru Elisei
2021-03-15 15:33 ` [PATCH kvmtool v3 21/22] hw/serial: ARM/arm64: Use MMIO at higher addresses Andre Przywara
2021-03-17 16:17   ` Alexandru Elisei
2021-03-15 15:33 ` [PATCH kvmtool v3 22/22] hw/rtc: " Andre Przywara
2021-03-17 17:44 ` Alexandru Elisei [this message]
2021-03-18 10:04 ` [PATCH kvmtool v3 00/22] Unify I/O port and MMIO trap handling Will Deacon

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=72c227a7-5854-2cba-fb98-9606dfe79b7d@arm.com \
    --to=alexandru.elisei@arm.com \
    --cc=andre.przywara@arm.com \
    --cc=julien.thierry.kdev@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=maz@kernel.org \
    --cc=sami.mujawar@arm.com \
    --cc=will@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox