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

[XEN][RFC PATCH v3 00/14] dynamic node programming using overlay dtbo


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Vikram Garhwal <fnu.vikram@xxxxxxxxxx>
  • Date: Tue, 8 Mar 2022 11:46:50 -0800
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.62.198) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=xilinx.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=xilinx.com; dkim=none (message not signed); arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SyXrmvae9ZhJvDuYQW5hF8OcaoYJpoiDhlbnsCshAsY=; b=bK3lbq0H347BJP5vyUy5VRNkU9mt2GL296jRvq9+iy8TVhY/7us4Q0F/+/UHc2TURvpIRxg/4B5SdXzumoMr1Yj7SQcSapgG774QKNPCbU9dbUbsUGPfZe3M8zE6ro1RUoUwwwaE21WbfFLPkpTQXUIHxlhbXXEqFaKtHSF5jZxJ20H5uiLpOqQrsMUUZh2qslE/9g3+rflHRN/1ltKFHpQLLKtvtfWACTThSJ6Z6GYz/KBMoA5sD5QthkGjy5ojARaxWl3Ok/ror5xbDQqc2S8YJJE/NFYZswTxtoGNYrr8xfha3iiU5W4dhcNymf5ZbFdgLJXpTuBV8iraOadfiQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UufaNjrwDWWZRE0OTTdJdFJKp8lywPftpNXOgfoQplQfZtVW7XiBGP9OSv4GMItfwpo2Yxx2s3msPdU+xornPmqz+EXXvN9sd0NMjEtqs146XnxBolX6m0vadarsEfLafYxoYecRDUJlr/D629EbuH/3HKCYrBIuYBnpi8+zWhXa1/m6jwHmnbX6GObmslubMYdGRwJS3XIc4oY2NwQdsFHMY2A2KMdzON93grzgDlnqwzdJtWHvaVHI94VaiP5PzhwMfrTfWCO91jSd8SL0ohNSKVyfDA0qWfr6O/kg3rDYe4TZRu7rm6BWMnCJoBVFzKx8EUPcAY7CXCk8oWQY/g==
  • Cc: <sstabellini@xxxxxxxxxx>, <julien@xxxxxxx>, <bertrand.marquis@xxxxxxx>, <volodymyr_babchuk@xxxxxxxx>, Vikram Garhwal <fnu.vikram@xxxxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Paul Durrant <paul@xxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>
  • Delivery-date: Tue, 08 Mar 2022 19:47:31 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi,
This RFC patch series is for introducing dynamic programming i.e. add/remove the
devices during run time. Using "xl overlay" a device can be added/removed with 
dtbo.

For adding a node using dynamic programming:
    1. flatten device tree overlay node will be added to a fdt
    2. Updated fdt will be unflattened to a new dt_host_new
    3. Extract the newly added node information from dt_host_new
    4. Add the added node under correct parent in original dt_host.
    3. Map/Permit interrupt and iomem region as required.

For removing a node:
    1. Find the node with given path.
    2. Check if the node is used by any of domus. Removes the node only when
        it's not used by any domain.
    3. Removes IRQ permissions and MMIO access.
    5. Find the node in dt_host and delete the device node entry from dt_host.
    6. Free the overlay_tracker entry which means free dt_host_new also(created
in adding node step).

Change Log:
 v2 -> v3:
    Moved overlay functionalities to dt_overlay.c file.
    Renamed XEN_SYSCTL_overlay to XEN_SYSCTL_dt_overlay.
    Add dt_* prefix to overlay_add/remove_nodes.
    Added dtdevs_lock to protect iommu_add_dt_device().
    For iommu, moved spin_lock to caller.
    Address code issue from v2 review.

 v1 -> v2:
    Add support for multiple node addition/removal using dtbo.
    Replaced fpga-add and fpga-remove with one hypercall overlay_op.
    Moved common domain_build.c function to device.c
    Add OVERLAY_DTB configuration.
    Renamed overlay_get_target() to fdt_overlay_get_target().
    Split remove_device patch into two patches.
    Moved overlay_add/remove code to sysctl and changed it from domctl to 
sysctl.
    Added all overlay code under CONFIG_OVERLAY_DTB
    Renamed all tool domains fpga function to overlay
    Addressed code issues from v1 review.

Regards,
Vikram

Vikram Garhwal (14):
  xen/arm/device: Remove __init from function type
  xen/arm: Add CONFIG_OVERLAY_DTB
  libfdt: Keep fdt functions after init for CONFIG_OVERLAY_DTB.
  libfdt: overlay: change overlay_get_target()
  xen/device-tree: Add _dt_find_node_by_path() to find nodes in device
    tree
  xen/smmu: Add remove_device callback for smmu_iommu ops
  xen/iommu: Move spin_lock from iommu_dt_device_is_assigned to caller
  xen/iommu: protect iommu_add_dt_device() with dtdevs_lock
  xen/iommu: Introduce iommu_remove_dt_device()
  xen/arm: Implement device tree node removal functionalities
  xen/arm: Implement device tree node addition functionalities
  tools/libs/ctrl: Implement new xc interfaces for dt overlay
  tools/libs/light: Implement new libxl functions for device tree
    overlay ops
  tools/xl: Add new xl command overlay for device tree overlay support

 tools/include/libxl.h                 |   3 +
 tools/include/xenctrl.h               |   3 +
 tools/libs/ctrl/Makefile              |   1 +
 tools/libs/ctrl/xc_overlay.c          |  51 ++
 tools/libs/light/Makefile             |   1 +
 tools/libs/light/libxl_overlay.c      |  67 +++
 tools/xl/xl.h                         |   4 +
 tools/xl/xl_cmdtable.c                |   6 +
 tools/xl/xl_vmcontrol.c               |  45 ++
 xen/arch/arm/Kconfig                  |   6 +
 xen/arch/arm/device.c                 | 136 +++++
 xen/arch/arm/domain_build.c           | 142 -----
 xen/arch/arm/include/asm/setup.h      |   3 +
 xen/common/Makefile                   |   1 +
 xen/common/device_tree.c              |  30 +-
 xen/common/dt_overlay.c               | 771 ++++++++++++++++++++++++++
 xen/common/libfdt/Makefile            |   4 +
 xen/common/libfdt/fdt_overlay.c       |  29 +-
 xen/common/libfdt/version.lds         |   1 +
 xen/common/sysctl.c                   |  10 +
 xen/drivers/passthrough/arm/smmu.c    |  56 ++
 xen/drivers/passthrough/device_tree.c |  58 +-
 xen/include/public/sysctl.h           |  19 +
 xen/include/xen/device_tree.h         |  14 +
 xen/include/xen/dt_overlay.h          |  47 ++
 xen/include/xen/iommu.h               |   2 +
 xen/include/xen/libfdt/libfdt.h       |  18 +
 27 files changed, 1347 insertions(+), 181 deletions(-)
 create mode 100644 tools/libs/ctrl/xc_overlay.c
 create mode 100644 tools/libs/light/libxl_overlay.c
 create mode 100644 xen/common/dt_overlay.c
 create mode 100644 xen/include/xen/dt_overlay.h

-- 
2.17.1




 


Rackspace

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