From 01997497f915e8f79871f3f2acb55ac465051d24 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:49:59 +0200 Subject: Adding debian version 6.1.76-1. Signed-off-by: Daniel Baumann --- ...net-mana-Add-support-for-auxiliary-device.patch | 178 +++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 debian/patches/features/all/ethernet-microsoft/0003-net-mana-Add-support-for-auxiliary-device.patch (limited to 'debian/patches/features/all/ethernet-microsoft/0003-net-mana-Add-support-for-auxiliary-device.patch') diff --git a/debian/patches/features/all/ethernet-microsoft/0003-net-mana-Add-support-for-auxiliary-device.patch b/debian/patches/features/all/ethernet-microsoft/0003-net-mana-Add-support-for-auxiliary-device.patch new file mode 100644 index 000000000..a639b69c9 --- /dev/null +++ b/debian/patches/features/all/ethernet-microsoft/0003-net-mana-Add-support-for-auxiliary-device.patch @@ -0,0 +1,178 @@ +From 63ea159035f1c00da99016a1c71380d90f156ad4 Mon Sep 17 00:00:00 2001 +From: Long Li +Date: Thu, 3 Nov 2022 12:16:19 -0700 +Subject: [PATCH 03/23] net: mana: Add support for auxiliary device + +In preparation for supporting MANA RDMA driver, add support for auxiliary +device in the Ethernet driver. The RDMA device is modeled as an auxiliary +device to the Ethernet device. + +Reviewed-by: Dexuan Cui +Signed-off-by: Long Li +Link: https://lore.kernel.org/r/1667502990-2559-2-git-send-email-longli@linuxonhyperv.com +Acked-by: Haiyang Zhang +Signed-off-by: Leon Romanovsky +(cherry picked from commit a69839d4327d053b18d8e1b0e7ddeee78db78f4f) +Signed-off-by: Bastian Blank +--- + drivers/net/ethernet/microsoft/Kconfig | 1 + + drivers/net/ethernet/microsoft/mana/gdma.h | 2 + + .../ethernet/microsoft/mana/mana_auxiliary.h | 10 +++ + drivers/net/ethernet/microsoft/mana/mana_en.c | 83 ++++++++++++++++++- + 4 files changed, 95 insertions(+), 1 deletion(-) + create mode 100644 drivers/net/ethernet/microsoft/mana/mana_auxiliary.h + +--- a/drivers/net/ethernet/microsoft/Kconfig ++++ b/drivers/net/ethernet/microsoft/Kconfig +@@ -19,6 +19,7 @@ config MICROSOFT_MANA + tristate "Microsoft Azure Network Adapter (MANA) support" + depends on PCI_MSI && X86_64 + depends on PCI_HYPERV ++ select AUXILIARY_BUS + select PAGE_POOL + help + This driver supports Microsoft Azure Network Adapter (MANA). +--- a/drivers/net/ethernet/microsoft/mana/gdma.h ++++ b/drivers/net/ethernet/microsoft/mana/gdma.h +@@ -204,6 +204,8 @@ struct gdma_dev { + + /* GDMA driver specific pointer */ + void *driver_data; ++ ++ struct auxiliary_device *adev; + }; + + #define MINIMUM_SUPPORTED_PAGE_SIZE PAGE_SIZE +--- /dev/null ++++ b/drivers/net/ethernet/microsoft/mana/mana_auxiliary.h +@@ -0,0 +1,10 @@ ++/* SPDX-License-Identifier: GPL-2.0-only */ ++/* Copyright (c) 2022, Microsoft Corporation. */ ++ ++#include "mana.h" ++#include ++ ++struct mana_adev { ++ struct auxiliary_device adev; ++ struct gdma_dev *mdev; ++}; +--- a/drivers/net/ethernet/microsoft/mana/mana_en.c ++++ b/drivers/net/ethernet/microsoft/mana/mana_en.c +@@ -14,6 +14,19 @@ + #include + + #include "mana.h" ++#include "mana_auxiliary.h" ++ ++static DEFINE_IDA(mana_adev_ida); ++ ++static int mana_adev_idx_alloc(void) ++{ ++ return ida_alloc(&mana_adev_ida, GFP_KERNEL); ++} ++ ++static void mana_adev_idx_free(int idx) ++{ ++ ida_free(&mana_adev_ida, idx); ++} + + /* Microsoft Azure Network Adapter (MANA) functions */ + +@@ -2145,6 +2158,69 @@ free_net: + return err; + } + ++static void adev_release(struct device *dev) ++{ ++ struct mana_adev *madev = container_of(dev, struct mana_adev, adev.dev); ++ ++ kfree(madev); ++} ++ ++static void remove_adev(struct gdma_dev *gd) ++{ ++ struct auxiliary_device *adev = gd->adev; ++ int id = adev->id; ++ ++ auxiliary_device_delete(adev); ++ auxiliary_device_uninit(adev); ++ ++ mana_adev_idx_free(id); ++ gd->adev = NULL; ++} ++ ++static int add_adev(struct gdma_dev *gd) ++{ ++ struct auxiliary_device *adev; ++ struct mana_adev *madev; ++ int ret; ++ ++ madev = kzalloc(sizeof(*madev), GFP_KERNEL); ++ if (!madev) ++ return -ENOMEM; ++ ++ adev = &madev->adev; ++ ret = mana_adev_idx_alloc(); ++ if (ret < 0) ++ goto idx_fail; ++ adev->id = ret; ++ ++ adev->name = "rdma"; ++ adev->dev.parent = gd->gdma_context->dev; ++ adev->dev.release = adev_release; ++ madev->mdev = gd; ++ ++ ret = auxiliary_device_init(adev); ++ if (ret) ++ goto init_fail; ++ ++ ret = auxiliary_device_add(adev); ++ if (ret) ++ goto add_fail; ++ ++ gd->adev = adev; ++ return 0; ++ ++add_fail: ++ auxiliary_device_uninit(adev); ++ ++init_fail: ++ mana_adev_idx_free(adev->id); ++ ++idx_fail: ++ kfree(madev); ++ ++ return ret; ++} ++ + int mana_probe(struct gdma_dev *gd, bool resuming) + { + struct gdma_context *gc = gd->gdma_context; +@@ -2212,6 +2288,8 @@ int mana_probe(struct gdma_dev *gd, bool + break; + } + } ++ ++ err = add_adev(gd); + out: + if (err) + mana_remove(gd, false); +@@ -2228,6 +2306,10 @@ void mana_remove(struct gdma_dev *gd, bo + int err; + int i; + ++ /* adev currently doesn't support suspending, always remove it */ ++ if (gd->adev) ++ remove_adev(gd); ++ + for (i = 0; i < ac->num_ports; i++) { + ndev = ac->ports[i]; + if (!ndev) { +@@ -2260,7 +2342,6 @@ void mana_remove(struct gdma_dev *gd, bo + } + + mana_destroy_eq(ac); +- + out: + mana_gd_deregister_device(gd); + -- cgit v1.2.3