From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 568F846DCF for ; Mon, 25 Aug 2025 14:08:54 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9BEEC4065A; Mon, 25 Aug 2025 14:08:49 +0200 (CEST) Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com [209.85.208.177]) by mails.dpdk.org (Postfix) with ESMTP id 742FD4027A for ; Sat, 23 Aug 2025 17:38:16 +0200 (CEST) Received: by mail-lj1-f177.google.com with SMTP id 38308e7fff4ca-3366ce6889bso284451fa.0 for ; Sat, 23 Aug 2025 08:38:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755963496; x=1756568296; darn=dpdk.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=+ifNj1Sw5OxlWMGsyPB8eF6AjyXiAN+cVsGq2uqebl0=; b=HbIGTiMrDK3DHLmTf4RN2+4+ABgvEBJp9+NF3Gpxw8Bu3jf7NDYEU34sTQDd7lz10m lH4gvnydChHOKLs0NaPpByn2NvqXAtPE7yaidJuaKu6fBKUmwWNJ9lHg578ucmqRLAHY Jbdyu3tI3o0+Q3jMIU0DjXtmbq2LMhFzsemCe5N16xqvg98jPqubfTSYme4gCErUOVrm 42sHAYczIyZo8noYmou4M8v+/A9/7wfTEqaUIPZwjNbClhhAGU3BfgY47o7G1mIICQEP TuZ2KSUPXz2btP/O8DFTDPUxjuer3NGKJNW7qO28yu6xTRGCL42L8jzPCvS1goc3WeFM B5pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755963496; x=1756568296; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=+ifNj1Sw5OxlWMGsyPB8eF6AjyXiAN+cVsGq2uqebl0=; b=foKSIwMCQLqvhBaTPZjhlnTfEK3RhQw14AbYC2gmeMtttkPyPkdyKE68HmWwuIp5r3 Ebb3cuVSAByrhjvYpjmhnVl80KdDmUt6Ry8FkrSQdfAIHIpIAgs+B2m0bh778Bcoseky Smo5NZuWl6/0gsKJM8GqtuKEyDwnq72O3RJuqWYpNhSRGrlAy8y7h0y6nf1M6eQprA9L 6TLjhKDFCNngE7JtRNr0/RBo2XAav250S9kCbNCI3pWsQTfpruSAaHEH2BzAtQItnk1n jL9C+UMO4TQ03cd2d6dV/ueYHj8+Yi3mP1IpPRtyW4oBJkfXO53Q0nLWoKsC4hggdhzJ 6YDw== X-Gm-Message-State: AOJu0YxnZO49/kL69Qx1hzWiqNLOZv2Svd91WMSX6Ua5qVPzSbn30OMW b+8+hkTwQn3uD6vYKAzkNA9lfVopPS/tdIDXR3VdsNkSdizzCMAf2KYQmUqRGuNLE950e4oEc0V sMHL36/w3Qi/BrmgXcB6hdJywXyc9XNe9tVFAAinP87Hz X-Gm-Gg: ASbGncvpGQw/mMhuHIDiSNmor5DbEYDelCx7rwnzfdd34D+k0TSXcZJiBqZQuGPk4Ra boacseRifRAHJ2/3rcB6oG7eDQ0B+hTzTug5vXcS0cZVeCZrlSG4g/ZwcQOixK8PAdMKY2+Ohvx JgVI8KsoH0SdvVOCzzj/4CiVltFJk8htu0Hs52RgDwPTY1DcN7c5mcRY93TXuMCcZCEwg2qQ== X-Google-Smtp-Source: AGHT+IGrDZhAHx4Hi1/T/BHe1plkpAA8D/9Jf+FGSLWcHWIIajs6TnoJvFfO2YpPXYi9PSYdAul8fQQ+II9CiOH9I74= X-Received: by 2002:a05:651c:e10:b0:333:bb82:f8af with SMTP id 38308e7fff4ca-33650f998fcmr13089871fa.22.1755963495287; Sat, 23 Aug 2025 08:38:15 -0700 (PDT) MIME-Version: 1.0 From: Julien Date: Sat, 23 Aug 2025 17:38:03 +0200 X-Gm-Features: Ac12FXzEFC1Ghf-_dlPOpxXDxamK2HDfvekeyNpwwFontSPooBrgzAYe63QGx4o Message-ID: Subject: [mlx5 driver] Usage of mlx5 with unpriviledged LXC container To: users@dpdk.org Content-Type: multipart/alternative; boundary="0000000000006014cc063d0a1c69" X-Mailman-Approved-At: Mon, 25 Aug 2025 14:08:47 +0200 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --0000000000006014cc063d0a1c69 Content-Type: text/plain; charset="UTF-8" Hello, I have a question about using the mlx5 driver with LXC. I'm trying to use dpdk-testpmd in an LXC container whose root user isn't mapped to the host's root user. Note: The entire physical interface is given to the LXC container, not a virtual interface. The following error occured: mlx5_common: DevX create TIS failed errno=22 status=0 syndrome=0 mlx5_net: Failed to create TIS 0/0 for [bonding] device mlx5_2. mlx5_net: TIS allocation failure mlx5_net: probe of PCI device 0000:27:00.0 aborted after encountering an error: Cannot allocate memory mlx5_common: Failed to load driver mlx5_eth EAL: Requested device 0000:27:00.0 cannot be used EAL: Bus (pci) probe failed. The "transport_domain" is created, and the mlx5_devx_cmd_create_td() function runs normally. The call to mlx5dv_devx_obj_create() receives an errno of 22. I don't encounter any problems when the container's root user is mapped to the host's root user. Has anyone experienced this before? Is it possible to use the driver in an unprivileged LXC container? Dpdk version: 23.11 Linux Kernel: 5.15 Stack: libibverbs.so.1!execute_ioctl(struct ibv_context * context, struct ibv_context * context@entry, struct ibv_command_buffer * cmd, struct ibv_command_buffer * cmd@entry) (\rdma-core-49.0\libibverbs\cmd_ioctl.c:147) libmlx5.so.1!_mlx5dv_devx_obj_create(struct ibv_context * context, const void * in, size_t inlen, void * out, size_t outlen) (\rdma-core-49.0\providers\mlx5\verbs.c:5794) libmlx5.so.1!mlx5dv_devx_obj_create(struct ibv_context * context, const void * in, size_t inlen, void * out, size_t outlen) (\rdma-core-49.0\providers\mlx5\verbs.c:5819) librte_common_mlx5.so.24!mlx5_glue_devx_obj_create(struct ibv_context * ctx, const void * in, size_t inlen, void * out, size_t outlen) (\dpdk-23.11\drivers\common\mlx5\linux\mlx5_glue.c:1045) librte_common_mlx5.so.24!mlx5_devx_cmd_create_tis(void * ctx, struct mlx5_devx_tis_attr * tis_attr) (\dpdk-23.11\drivers\common\mlx5\mlx5_devx_cmds.c:2037) librte_net_mlx5.so!mlx5_setup_tis(struct mlx5_dev_ctx_shared * sh) (\dpdk-23.11\drivers\net\mlx5\mlx5.c:1343) librte_net_mlx5.so!mlx5_alloc_shared_dev_ctx(const struct mlx5_dev_spawn_data * spawn, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\net\mlx5\mlx5.c:1784) librte_net_mlx5.so!mlx5_dev_spawn(struct rte_device * dpdk_dev, struct mlx5_dev_spawn_data * spawn, struct rte_eth_devargs * eth_da, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\net\mlx5\linux\mlx5_os.c:1169) librte_net_mlx5.so!mlx5_os_pci_probe_pf(struct mlx5_common_device * cdev, struct rte_eth_devargs * req_eth_da, uint16_t owner_id, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\net\mlx5\linux\mlx5_os.c:2648) librte_net_mlx5.so!mlx5_os_pci_probe(struct mlx5_common_device * cdev, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\net\mlx5\linux\mlx5_os.c:2797) librte_net_mlx5.so!mlx5_os_net_probe(struct mlx5_common_device * cdev, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\net\mlx5\linux\mlx5_os.c:2881) librte_common_mlx5.so.24!drivers_probe(struct mlx5_common_device * cdev, uint32_t user_classes, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\common\mlx5\mlx5_common.c:938) librte_common_mlx5.so.24!mlx5_common_dev_probe(struct rte_device * eal_dev) (\dpdk-23.11\drivers\common\mlx5\mlx5_common.c:1028) librte_common_mlx5.so.24!mlx5_common_pci_probe(struct rte_pci_driver * pci_drv, struct rte_pci_device * pci_dev) (\dpdk-23.11\drivers\common\mlx5\mlx5_common_pci.c:168) librte_bus_pci.so.24!rte_pci_probe_one_driver(struct rte_pci_driver * dr, struct rte_pci_device * dev) (\dpdk-23.11\drivers\bus\pci\pci_common.c:312) librte_bus_pci.so.24!pci_probe_all_drivers(struct rte_pci_device * dev) (\dpdk-23.11\drivers\bus\pci\pci_common.c:396) librte_bus_pci.so.24!pci_probe() (\dpdk-23.11\drivers\bus\pci\pci_common.c:423) librte_eal.so.24!rte_bus_probe() (\dpdk-23.11\lib\eal\common\eal_common_bus.c:78) librte_eal.so.24!rte_eal_init(int argc, char ** argv) (\dpdk-23.11\lib\eal\linux\eal.c:1287) Best regards, Julien Marcin --0000000000006014cc063d0a1c69 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,
I = have a question about using the mlx5 driver with LXC.
I'm try= ing to use dpdk-testpmd in an LXC container whose root user isn't mappe= d to the host's root user.
Note: The entire physical interfac= e is given to the LXC container, not a virtual interface.

The following error occured:
mlx5_common: DevX create TIS= failed errno=3D22 status=3D0 syndrome=3D0
mlx5_net: Failed to cr= eate TIS 0/0 for [bonding] device mlx5_2.
mlx5_net: TIS allocatio= n failure
mlx5_net: probe of PCI device 0000:27:00.0 aborted afte= r encountering an error: Cannot allocate memory
mlx5_common: Fail= ed to load driver mlx5_eth
EAL: Requested device 0000:27:00.0 can= not be used
EAL: Bus (pci) probe failed.

The "transport_domain" is created, and the mlx5_devx_cmd_create_= td() function runs normally.
The call to mlx5dv_devx_obj_create()= receives an errno of 22.

I don't encounter an= y problems when the container's root user is mapped to the host's r= oot user.
Has anyone experienced this before?
Is it pos= sible to use the driver in an unprivileged LXC container?

Dpdk version: 23.11
Linux Kernel: 5.15
Stack:
libibverbs.so.1!execute_ioctl(struct ibv_context * context, struct= ibv_context * context@entry, struct ibv_command_buffer * cmd, struct ibv_c= ommand_buffer * cmd@entry) (\rdma-core-49.0\libibverbs\cmd_ioctl.c:147)
libmlx5.so.1!_mlx5dv_devx_obj_create(struct ibv_context * con= text, const void * in, size_t inlen, void * out, size_t outlen) (\rdma-core= -49.0\providers\mlx5\verbs.c:5794)
libmlx5.so.1!mlx5dv_dev= x_obj_create(struct ibv_context * context, const void * in, size_t inlen, v= oid * out, size_t outlen) (\rdma-core-49.0\providers\mlx5\verbs.c:5819)
librte_common_mlx5.so.24!mlx5_glue_devx_obj_create(struct ibv= _context * ctx, const void * in, size_t inlen, void * out, size_t outlen) (= \dpdk-23.11\drivers\common\mlx5\linux\mlx5_glue.c:1045)
li= brte_common_mlx5.so.24!mlx5_devx_cmd_create_tis(void * ctx, struct mlx5_dev= x_tis_attr * tis_attr) (\dpdk-23.11\drivers\common\mlx5\mlx5_devx_cmds.c:20= 37)
librte_net_mlx5.so!mlx5_setup_tis(struct mlx5_dev_ctx_= shared * sh) (\dpdk-23.11\drivers\net\mlx5\mlx5.c:1343)
li= brte_net_mlx5.so!mlx5_alloc_shared_dev_ctx(const struct mlx5_dev_spawn_data= * spawn, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\net\mlx5\= mlx5.c:1784)
librte_net_mlx5.so!mlx5_dev_spawn(struct rte_= device * dpdk_dev, struct mlx5_dev_spawn_data * spawn, struct rte_eth_devar= gs * eth_da, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\net\ml= x5\linux\mlx5_os.c:1169)
librte_net_mlx5.so!mlx5_os_pci_pr= obe_pf(struct mlx5_common_device * cdev, struct rte_eth_devargs * req_eth_d= a, uint16_t owner_id, struct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drive= rs\net\mlx5\linux\mlx5_os.c:2648)
librte_net_mlx5.so!mlx5_= os_pci_probe(struct mlx5_common_device * cdev, struct mlx5_kvargs_ctrl * mk= vlist) (\dpdk-23.11\drivers\net\mlx5\linux\mlx5_os.c:2797)
librte_net_mlx5.so!mlx5_os_net_probe(struct mlx5_common_device * cdev, str= uct mlx5_kvargs_ctrl * mkvlist) (\dpdk-23.11\drivers\net\mlx5\linux\mlx5_os= .c:2881)
librte_common_mlx5.so.24!drivers_probe(struct mlx= 5_common_device * cdev, uint32_t user_classes, struct mlx5_kvargs_ctrl * mk= vlist) (\dpdk-23.11\drivers\common\mlx5\mlx5_common.c:938)
librte_common_mlx5.so.24!mlx5_common_dev_probe(struct rte_device * eal_dev= ) (\dpdk-23.11\drivers\common\mlx5\mlx5_common.c:1028)
lib= rte_common_mlx5.so.24!mlx5_common_pci_probe(struct rte_pci_driver * pci_drv= , struct rte_pci_device * pci_dev) (\dpdk-23.11\drivers\common\mlx5\mlx5_co= mmon_pci.c:168)
librte_bus_pci.so.24!rte_pci_probe_one_dri= ver(struct rte_pci_driver * dr, struct rte_pci_device * dev) (\dpdk-23.11\d= rivers\bus\pci\pci_common.c:312)
librte_bus_pci.so.24!pci_= probe_all_drivers(struct rte_pci_device * dev) (\dpdk-23.11\drivers\bus\pci= \pci_common.c:396)
librte_bus_pci.so.24!pci_probe() (\dpdk= -23.11\drivers\bus\pci\pci_common.c:423)
librte_eal.so.24!= rte_bus_probe() (\dpdk-23.11\lib\eal\common\eal_common_bus.c:78)
= librte_eal.so.24!rte_eal_init(int argc, char ** argv) (\dpdk-23.11\l= ib\eal\linux\eal.c:1287)

Best regards,
Julien Marcin

--0000000000006014cc063d0a1c69--