MA35D1蓝牙模块调试异常

cwlin0 |浏览62次
收藏|2024/03/08 08:46

做的板子上有个BT+WIFI 模块(U28), 使用内核自带的mt7663u的驱动加载后,运行 bluetoothctl 后会有异常(基本几分钟就出现)。

 

log:

[ 268.618689] Call trace:

[ 268.621124] atomic_dec_and_mutex_lock+0xe0/0x184

[ 268.625803] mutex_lock+0x28/0x44

[ 268.629095] tee_shm_put+0x34/0x148

[ 268.632560] tee_shm_free+0x10/0x1c

[ 268.636028] optee_aes_close+0x1c/0x44

[ 268.639753] nuvoton_aes_cra_exit+0x28/0x34

[ 268.643915] crypto_destroy_tfm+0x40/0x70

[ 268.647900] skcipher_release+0x14/0x20

[ 268.651715] alg_sock_destruct+0x24/0x3c

[ 268.655616] __sk_destruct+0x30/0xcc

[ 268.659167] sk_destruct+0x60/0x64

[ 268.662547] __sk_free+0x50/0xd8

[ 268.665754] sk_free+0x34/0x44

[ 268.668787] sock_put+0x44/0x78

[ 268.671907] af_alg_release+0x20/0x38

[ 268.675546] __sock_release+0x44/0xac

[ 268.679185] sock_close+0x18/0x28

[ 268.682480] __fput+0xec/0x21c

[ 268.685512] ____fput+0x10/0x1c

[ 268.688636] task_work_run+0x8c/0x12c

[ 268.692276] do_notify_resume+0x258/0x414

[ 268.696259] work_pending+0xc/0x668

[ 268.699735] Code: c8037c40 35ffffa3 17fffec5 f9800071 (c85ffc60)

[ 268.705794] ---[ end trace 89c9712bea5df24d ]---

[ 268.710386] Kernel panic - not syncing: Oops: Fatal exception

 

 

root@numaker-som-ma35d16a81:~# lsusb

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 003: ID 0e8d:7663 MediaTek Inc.

Bus 002 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

root@numaker-som-ma35d16a81:~# lsmod

Module Size Used by

mt7663 2048000 0

mt7663u 20480 0

mt76_usb 28672 1 mt7663u

mt7663_usb_sdio_common 20480 1 mt7663u

mt7615_common 90112 2 mt7663_usb_sdio_common,mt7663u

btusb 53248 0

mt76 49152 4 mt7663_usb_sdio_common,mt76_usb,mt7663u,mt7615_common

btrtl 20480 1 btusb

btbcm 20480 1 btusb

btintel 24576 1 btusb

 

 

做个测试将crypto加密模块相关去掉后,运行蓝牙则一直正常。

 

obj-$(CONFIG_CRYPTO_DEV_NUVOTON) += nuvoton-crypto.o

obj-$(CONFIG_CRYPTO_ECDH) += nuvoton-ecc.o

obj-$(CONFIG_CRYPTO_RSA) += nuvoton-rsa.o

 

+++ b/drivers/crypto/Makefile

@@ -51,4 +51,4 @@ obj-$(CONFIG_CRYPTO_DEV_ARTPEC6) += axis/

 obj-$(CONFIG_CRYPTO_DEV_ZYNQMP_AES) += xilinx/

 obj-y += hisilicon/

 obj-$(CONFIG_CRYPTO_DEV_AMLOGIC_GXL) += amlogic/

-obj-y += nuvoton/

+#obj-y += nuvoton/

 

defconfig:

 

CONFIG_RFKILL=y

CONFIG_RFKILL_LEDS=y

CONFIG_RFKILL_INPUT=y

CONFIG_RFKILL_GPIO=y

CONFIG_MT7663=m

CONFIG_BT=y

CONFIG_BT_BREDR=y

CONFIG_BT_DEBUGFS=y

CONFIG_BT_INTEL=y

CONFIG_BT_LE=y

CONFIG_BT_HCIBFUSB=y

CONFIG_BT_INTEL=y

CONFIG_BT_HCIBTUSB=m

CONFIG_BT_BCM=m

CONFIG_BT_RTL=m

CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set

CONFIG_BT_HCIBTUSB_BCM=y

CONFIG_BT_HCIBTUSB_MTK=y

CONFIG_BT_HCIBTUSB_RTL=y

CONFIG_BT_HCIBFUSB=y

CONFIG_WLAN_VENDOR_MEDIATEK=y

CONFIG_MT76_CORE=m

CONFIG_MT76_LEDS=y

CONFIG_MT76_USB=m

CONFIG_MT7615_COMMON=m

CONFIG_MT7663_USB_SDIO_COMMON=m

CONFIG_MT7663U=m

CONFIG_WLAN_VENDOR_REALTEK=y


满意回答

2024/03/08 08:52

通过修改以下驱动问题解决:


diff --git a/drivers/crypto/nuvoton/nuvoton-aes.c b/drivers/crypto/nuvoton/nuvoton-aes.c

index dc3ddf296..21daa8fa5 100644

--- a/drivers/crypto/nuvoton/nuvoton-aes.c

+++ b/drivers/crypto/nuvoton/nuvoton-aes.c

@@ -594,6 +594,10 @@ static int optee_aes_open(struct nu_aes_dev *dd)

 

 static void optee_aes_close(struct nu_aes_dev *dd)

 {

+ if((dd == NULL)||(dd->shm_pool == NULL)||(dd->octx == NULL))

+ {

+ return;

+ }

        tee_shm_free(dd->shm_pool);

        tee_client_close_session(dd->octx, dd->session_id);

        tee_client_close_context(dd->octx);


nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...