Commit f63f1d74 authored by Leon Romanovsky's avatar Leon Romanovsky
Browse files

Add support for TLP emulation



This series adds support for Transaction Layer Packet (TLP) emulation
response gateway regions, enabling userspace device emulation software
to write TLP responses directly to lower layers without kernel driver
involvement.

Currently, the mlx5 driver exposes VirtIO emulation access regions via
the MLX5_IB_METHOD_VAR_OBJ_ALLOC ioctl. This series extends that
ioctl to also support allocating TLP response gateway channels for
PCI device emulation use cases.

Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parents f30bc6f9 385a06f7
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -210,7 +210,12 @@ Daniel Borkmann <daniel@iogearbox.net> <daniel.borkmann@tik.ee.ethz.ch>
Daniel Borkmann <daniel@iogearbox.net> <dborkmann@redhat.com>
Daniel Borkmann <daniel@iogearbox.net> <dborkman@redhat.com>
Daniel Borkmann <daniel@iogearbox.net> <dxchgb@gmail.com>
Daniel Lezcano <daniel.lezcano@kernel.org> <daniel.lezcano@linaro.org>
Daniel Lezcano <daniel.lezcano@kernel.org> <daniel.lezcano@free.fr>
Daniel Lezcano <daniel.lezcano@kernel.org> <daniel.lezcano@linexp.org>
Daniel Lezcano <daniel.lezcano@kernel.org> <dlezcano@fr.ibm.com>
Daniel Thompson <danielt@kernel.org> <daniel.thompson@linaro.org>
Daniele Alessandrelli <daniele.alessandrelli@gmail.com> <daniele.alessandrelli@intel.com>
Danilo Krummrich <dakr@kernel.org> <dakr@redhat.com>
David Brownell <david-b@pacbell.net>
David Collins <quic_collinsd@quicinc.com> <collinsd@codeaurora.org>
@@ -876,6 +881,7 @@ Vivien Didelot <vivien.didelot@gmail.com> <vivien.didelot@savoirfairelinux.com>
Vlad Dogaru <ddvlad@gmail.com> <vlad.dogaru@intel.com>
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
Vlastimil Babka <vbabka@kernel.org> <vbabka@suse.cz>
WangYuli <wangyuli@aosc.io> <wangyl5933@chinaunicom.cn>
WangYuli <wangyuli@aosc.io> <wangyuli@deepin.org>
Weiwen Hu <huweiwen@linux.alibaba.com> <sehuww@mail.scut.edu.cn>
@@ -890,7 +896,8 @@ Yanteng Si <si.yanteng@linux.dev> <siyanteng@loongson.cn>
Ying Huang <huang.ying.caritas@gmail.com> <ying.huang@intel.com>
Yixun Lan <dlan@kernel.org> <dlan@gentoo.org>
Yixun Lan <dlan@kernel.org> <yixun.lan@amlogic.com>
Yosry Ahmed <yosry.ahmed@linux.dev> <yosryahmed@google.com>
Yosry Ahmed <yosry@kernel.org> <yosryahmed@google.com>
Yosry Ahmed <yosry@kernel.org> <yosry.ahmed@linux.dev>
Yu-Chun Lin <eleanor.lin@realtek.com> <eleanor15x@gmail.com>
Yusuke Goda <goda.yusuke@renesas.com>
Zack Rusin <zack.rusin@broadcom.com> <zackr@vmware.com>
+3 −0
Original line number Diff line number Diff line
@@ -594,6 +594,9 @@ Values:
	  their sockets will only be able to connect within their own
	  namespace.

The first write to ``child_ns_mode`` locks its value. Subsequent writes of the
same value succeed, but writing a different value returns ``-EBUSY``.

Changing ``child_ns_mode`` only affects namespaces created after the change;
it does not modify the current namespace or any existing children.

+2 −2
Original line number Diff line number Diff line
@@ -287,7 +287,7 @@ examples:
          regulator-max-microvolt = <1700000>;
        };
        mt6359_vrfck_1_ldo_reg: ldo_vrfck_1 {
          regulator-name = "vrfck";
          regulator-name = "vrfck_1";
          regulator-min-microvolt = <1240000>;
          regulator-max-microvolt = <1600000>;
        };
@@ -309,7 +309,7 @@ examples:
          regulator-max-microvolt = <3300000>;
        };
        mt6359_vemc_1_ldo_reg: ldo_vemc_1 {
          regulator-name = "vemc";
          regulator-name = "vemc_1";
          regulator-min-microvolt = <2500000>;
          regulator-max-microvolt = <3300000>;
        };
+1 −30
Original line number Diff line number Diff line
@@ -22,21 +22,6 @@ allOf:
      properties:
        reg:
          minItems: 2
  - if:
      properties:
        compatible:
          contains:
            enum:
              - baikal,bt1-sys-ssi
    then:
      properties:
        mux-controls:
          maxItems: 1
      required:
        - mux-controls
    else:
      required:
        - interrupts
  - if:
      properties:
        compatible:
@@ -75,10 +60,6 @@ properties:
        const: intel,mountevans-imc-ssi
      - description: AMD Pensando Elba SoC SPI Controller
        const: amd,pensando-elba-spi
      - description: Baikal-T1 SPI Controller
        const: baikal,bt1-ssi
      - description: Baikal-T1 System Boot SPI Controller
        const: baikal,bt1-sys-ssi
      - description: Canaan Kendryte K210 SoS SPI Controller
        const: canaan,k210-spi
      - description: Renesas RZ/N1 SPI Controller
@@ -170,6 +151,7 @@ required:
  - "#address-cells"
  - "#size-cells"
  - clocks
  - interrupts

examples:
  - |
@@ -190,15 +172,4 @@ examples:
        rx-sample-delay-ns = <7>;
      };
    };
  - |
    spi@1f040100 {
      compatible = "baikal,bt1-sys-ssi";
      reg = <0x1f040100 0x900>,
            <0x1c000000 0x1000000>;
      #address-cells = <1>;
      #size-cells = <0>;
      mux-controls = <&boot_mux>;
      clocks = <&ccu_sys>;
      clock-names = "ssi_clk";
    };
...
+4 −6
Original line number Diff line number Diff line
@@ -1396,7 +1396,10 @@ or its flags may be modified, but it may not be resized.
Memory for the region is taken starting at the address denoted by the
field userspace_addr, which must point at user addressable memory for
the entire memory slot size.  Any object may back this memory, including
anonymous memory, ordinary files, and hugetlbfs.
anonymous memory, ordinary files, and hugetlbfs.  Changes in the backing
of the memory region are automatically reflected into the guest.
For example, an mmap() that affects the region will be made visible
immediately.  Another example is madvise(MADV_DROP).

On architectures that support a form of address tagging, userspace_addr must
be an untagged address.
@@ -1412,11 +1415,6 @@ use it. The latter can be set, if KVM_CAP_READONLY_MEM capability allows it,
to make a new slot read-only.  In this case, writes to this memory will be
posted to userspace as KVM_EXIT_MMIO exits.

When the KVM_CAP_SYNC_MMU capability is available, changes in the backing of
the memory region are automatically reflected into the guest.  For example, an
mmap() that affects the region will be made visible immediately.  Another
example is madvise(MADV_DROP).

For TDX guest, deleting/moving memory region loses guest memory contents.
Read only region isn't supported.  Only as-id 0 is supported.

Loading