[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v4 0/8] xen/arm: Resync the SMMU driver with the Linux one


The SMMU driver has diverged from Linux. Having our own driver doesn't make
any benefits and make difficult to backport fixes and/or porting features
such as PCI.

With this series, the code of the SMMU drivers (copied from Linux) is mostly
not modified. If it's the case a comment /* Xen: ... */ has been added to
explain why. The driver is based on Linux 3.19. Even if they reworked the SMMU
code in 4.0 (page table code has been moved in a separate library), I think
we should stay on 3.19 version. Mainly because I don't want to spend again a
week to resync and Linux drivers can change fast.

To make the change obvious, the resync of the SMMU code is made in several
    1) Revert the current SMMU driver (patch #1)
    2) Import as it is the driver from Linux (patch #5)
    3) Changes for Xen (patch #6)

I also took the opportunity of the resync to consolidate the iommu ops in a
single set. When I added the IOMMU set to handle platform device passthrough
(ops assign_dt_device and reassign_dt_device), I didn't think about merging
the ops with the PCI one. In fact Linux is using a signel set and have only
few lines per driver specific to each set (PCI or platform device).

A branch is available with all changes:
    git://xenbits.xen.org/people/julieng/xen-unstable.git branch smmu-rework-v4

Major changes in v4:
    - Drop the support of midway in the patch which will be upstreamed.
    - Re-order/re-work the SMMU changes in order to modify less the Linux code.

Major changes in v3:
    - Add back coherent walk support (see patch #13)

Major changes in v2:
    - Introduce the geneirc struct to describe device on ARM. Alias it
    to pci_dev on x86.
    - Defer the introduction of PCI in the generic device later

For all changes see each patches.

I have summarized below the patch acked/modified:

    A: Patch acked
    M: Patch modified in this version

Sincerely yours,

Julien Grall (8):
  xen/iommu: arm: Remove temporary the SMMU driver
  xen/arm: Introduce a generic way to describe device
  xen/iommu: Consolidate device assignment ops into a single set
  xen/arm: Describe devices supported by a driver with dt_device_match
  xen/iommu: arm: Import the SMMU driver from Linux
  xen/iommu: smmu: Add Xen specific code to be able to use the driver
  xen/iommu: smmu: Advertise when the SMMU support coherent table walk
  DO NOT APPLY xen/iommu: smmu: Changes to support Midway SMMU

 xen/arch/arm/device.c                 |   21 +-
 xen/arch/arm/gic-v2.c                 |   10 +-
 xen/arch/arm/gic-v3.c                 |    8 +-
 xen/common/device_tree.c              |    3 +
 xen/drivers/char/exynos4210-uart.c    |    8 +-
 xen/drivers/char/ns16550.c            |   12 +-
 xen/drivers/char/omap-uart.c          |    8 +-
 xen/drivers/char/pl011.c              |    8 +-
 xen/drivers/char/scif-uart.c          |    8 +-
 xen/drivers/passthrough/arm/smmu.c    | 4057 +++++++++++++++++++++------------
 xen/drivers/passthrough/device_tree.c |    5 +-
 xen/drivers/passthrough/pci.c         |   20 +-
 xen/include/asm-arm/device.h          |   30 +-
 xen/include/asm-arm/gic.h             |   15 +-
 xen/include/asm-x86/device.h          |   25 +
 xen/include/xen/device_tree.h         |   13 +
 xen/include/xen/iommu.h               |   18 +-
 xen/include/xen/pci.h                 |    1 +
 18 files changed, 2672 insertions(+), 1598 deletions(-)
 create mode 100644 xen/include/asm-x86/device.h


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.