Hi NXP:
I want to use dpdmux in dpaa2 platform.I refer to section 9.2.12.3 Traffic bifurcation using DPDMUX on DPAA2 of LSDK21.08.According to our own requirements, I made some modifications compared to the example.After successfully creating dpdmux, I found a fatal problem:When I ifconfig up/down the Ethernet interface(eth_X2) on another dpmac(dpmac.4) multiple times, the kernel mem abort.

The full log is as follows:
-sh-5.0# dmesg |grep 2160
[ 0.000000] Machine model: NXP Layerscape LX2160ARDB
[ 0.643838] Machine: NXP Layerscape LX2160ARDB
[ 0.648335] SoC family: QorIQ LX2160A
[ 1.990384] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 3.090361] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 4.190360] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 5.290368] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 6.390360] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 7.490360] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 8.590368] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 9.690361] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 10.790360] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 11.894367] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 12.994360] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 14.094360] Hardware name: NXP Layerscape LX2160ARDB (DT)
-sh-5.0# restool -v
restool v2.3 (commit lf-5.10.52-2.1.0)
-sh-5.0# restool -m
MC firmware version: 10.29.1
-sh-5.0# uname -a
Linux localhost 5.10.35-rt39 #3 SMP PREEMPT_RT Tue Feb 27 12:20:44 UTC 2024 aarch64 GNU/Linux
-sh-5.0#
-sh-5.0#
-sh-5.0# ls-listmac
dprc.1/dpmac.4 (end point: dpni.1)
dprc.1/dpmac.3 (end point: dpni.0)
-sh-5.0# ls-listni
dprc.1/dpni.1 (interface: eth_X2, end point: dpmac.4)
dprc.1/dpni.0 (interface: eth1, end point: dpmac.3)
-sh-5.0#
-sh-5.0# echo "dpni.0" > /sys/bus/fsl-mc/drivers/fsl_dpaa2_eth/unbind
-sh-5.0# restool dpni destroy "dpni.0"
dpni.0 is destroyed
-sh-5.0#
-sh-5.0# export DPIO_COUNT=8
-sh-5.0# export DPMCP_COUNT=2
-sh-5.0# /usr/local/dpdk/dpaa2/dynamic_dpl.sh dpni
parent - dprc.1
Creating Non nested DPRC
NEW DPRCs
dprc.1
dprc.2
Using board type as 2160
Using High Performance Buffers
##################### Container dprc.2 is created ####################
Container dprc.2 have following resources :=>
* 2 DPMCP
* 16 DPBP
* 8 DPCON
* 16 DPSECI
* 1 DPNI
* 8 DPIO
* 2 DPCI
* 8 DPDMAI
* 0 DPRTC
######################### Configured Interfaces #########################
Interface Name Endpoint Mac Address
============== ======== ==================
dpni.0 UNCONNECTED 00:00:00:00:5:1
-sh-5.0#
-sh-5.0# /usr/local/dpdk/dpaa2/dynamic_dpl.sh dpmac.3
parent - dprc.1
Creating Non nested DPRC
NEW DPRCs
dprc.1
dprc.3
dprc.2
Using board type as 2160
Using High Performance Buffers
##################### Container dprc.3 is created ####################
Container dprc.3 have following resources :=>
* 2 DPMCP
* 16 DPBP
* 8 DPCON
* 16 DPSECI
* 1 DPNI
* 8 DPIO
* 2 DPCI
* 8 DPDMAI
* 0 DPRTC
######################### Configured Interfaces #########################
Interface Name Endpoint Mac Address
============== ======== ==================
dpni.2 dpmac.3 -Dynamic-
-sh-5.0#
-sh-5.0# ls-addni --no-link
Created interface: eth0 (object:dpni.3, endpoint: )
-sh-5.0#
-sh-5.0#echo dprc.3 > /sys/bus/fsl-mc/drivers/vfio-fsl-mc/unbind
-sh-5.0#restool dprc disconnect dprc.3 --endpoint=dpni.2
-sh-5.0#restool dpdmux create --default-if=1 --num-ifs=2 --method DPDMUX_METHOD_CUSTOM --manip=DPDMUX_MANIP_NONE --option=DPDMUX_OPT_CLS_MASK_SUPPORT --container=dprc.1
dpdmux.0 is created under dprc.1
-sh-5.0#restool dprc connect dprc.1 --endpoint1=dpdmux.0.0 --endpoint2=dpmac.3
-sh-5.0#restool dprc connect dprc.1 --endpoint1=dpdmux.0.1 --endpoint2=dpni.3
-sh-5.0#restool dprc connect dprc.1 --endpoint1=dpdmux.0.2 --endpoint2=dpni.2
-sh-5.0#restool dprc assign dprc.1 --object=dpdmux.0 --child=dprc.3 --plugged=1
-sh-5.0#echo dprc.3 > /sys/bus/fsl-mc/drivers/vfio-fsl-mc/bind
-sh-5.0#
-sh-5.0#
-sh-5.0# ls-listmac
dprc.1/dpmac.4 (end point: dpni.1)
dprc.1/dpmac.3 (end point: dpdmux.0.0)
-sh-5.0# ls-listni
dprc.1/dpni.3 (interface: eth0, end point: dpdmux.0.1)
dprc.1/dpni.1 (interface: eth_X2, end point: dpmac.4)
dprc.1/dprc.3/dpni.2 (end point: dpdmux.0.2)
dprc.1/dprc.2/dpni.0
-sh-5.0# -sh-5.0#
-sh-5.0#
-sh-5.0# ifconfig eth_X2 down
-sh-5.0# ifconfig eth_X2 up
-sh-5.0# [ 693.918781] fsl_dpaa2_eth dpni.1 eth_X2: configuring for inband/sgmii link mode
-sh-5.0#
-sh-5.0# [ 694.958374] fsl_dpaa2_eth dpni.1 eth_X2: Link is Up - 100Mbps/Full - flow control rx/tx
[ 694.958415] IPv6: ADDRCONF(NETDEV_CHANGE): eth_X2: link becomes ready
[ 694.998536] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000048
[ 694.998542] Mem abort info:
[ 694.998543] ESR = 0x96000004
[ 694.998545] EC = 0x25: DABT (current EL), IL = 32 bits
[ 694.998547] SET = 0, FnV = 0
[ 694.998549] EA = 0, S1PTW = 0
[ 694.998550] Data abort info:
[ 694.998551] ISV = 0, ISS = 0x00000004
[ 694.998552] CM = 0, WnR = 0
[ 694.998554] [0000000000000048] user address but active_mm is swapper
[ 694.998556] Internal error: Oops: 96000004 [#1] PREEMPT_RT SMP
[ 694.998559] Modules linked in: sig_sniffk(O)
[ 694.998565] CPU: 13 PID: 2773 Comm: irq/138-dpio.0 Tainted: G W O 5.10.35-rt39 #3
[ 694.998570] Hardware name: NXP Layerscape LX2160ARDB (DT)
[ 694.998572] pstate: 00000005 (nzcv daif -PAN -UAO -TCO BTYPE=--)
[ 694.998575] pc : dpaa2_eth_poll+0xe8/0x380
[ 694.998586] lr : dpaa2_eth_poll+0x108/0x380
[ 694.998589] sp : ffff800016f5bb70
[ 694.998590] x29: ffff800016f5bb70 x28: ffff2fab6337f1c8
[ 694.998594] x27: ffff2fab6337f000 x26: 0000000000000000
[ 694.998597] x25: ffff2fab633c0a00 x24: 0000000000000000
[ 694.998600] x23: 0000000000000000 x22: 0000000000000000
[ 694.998603] x21: ffff2fab633c0a00 x20: 0000000000000001
[ 694.998606] x19: 000000000000000d x18: 000000000000000e
[ 694.998608] x17: 0000000000000001 x16: 0000000000000019
[ 694.998611] x15: 0000000000000033 x14: 0000000000000142
[ 694.998614] x13: 0000000000000000 x12: 0000000000000000
[ 694.998617] x11: 00000000000965f1 x10: ffff6a56ce1c0000
[ 694.998620] x9 : ffff800016f5ba10 x8 : 0000000004ffffff
[ 694.998623] x7 : ffff800016f80780 x6 : 000000000000000f
[ 694.998625] x5 : 0000000000000001 x4 : 0000000000000031
[ 694.998628] x3 : 0000000000000000 x2 : ffff2fab63324020
[ 694.998631] x1 : ffff2fab6337f000 x0 : ffff2fab633c0a00
[ 694.998634] Call trace:
[ 694.998636] dpaa2_eth_poll+0xe8/0x380
[ 694.998639] net_rx_action+0x118/0x378
[ 694.998644] __do_softirq+0x10c/0x210
[ 694.998648] __local_bh_enable_ip+0xcc/0x130
[ 694.998652] irq_forced_thread_fn+0x80/0xc0
[ 694.998657] irq_thread+0x150/0x260
[ 694.998660] kthread+0x174/0x198
[ 694.998665] ret_from_fork+0x10/0x34
[ 694.998670] Code: 11000694 aa1b03e1 aa1803e3 aa1503e0 (f9402705)
[ 694.998674] ---[ end trace 000000000000000e ]---