-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Xen] optee_driver_init() panic after device PTA invoke error #77
Comments
This small changes fixes the second issue. But I don't know if it the right way:
|
Right, it would make sense that driver uses RMEM when dynamic shm capability is supported.
I think your change is legitimate. OP-TEE does not mandate TA/PTA devices enumeration.
Indeed, that's bad. |
So it seems to me we have only (!) two issues here, not three. |
(edited: rephrased) @jforissier, you're right. Actually it is explicitly stated in the Linux driver. It Regarding device enumeration and TMEM: |
Yes, you are right. In my case
I also checked the code. It seems legit, nevertheless Xen is not happy. I'll take a closer look. And by the way. Is this right? I can see only one parameter used, not four. |
No, I didn't know that Xen didn't support TMEM, how does it support the argument structure? Doesn't that always go via TMEM? It's still OK to send four parameters even if only one is used. |
@lorc, your patch makes sense. If you post it on LKML I'll try to get it into 5.7 if it works well. |
The problem is not in TMEM per se, but in its location. Xen does not support static SHM. And before 3.9, there was no cases when TMEM was used for user SHM. I believe, when both dynamic SHM and registered SHM features are enabled, optee client uses TMEM only for "register shm" calls, which are handled separately in Xen. "Open session" and "call TA" calls always use RMEM. I believe Xen is being too restrictive there. I'll see what is needed to allow TMEM buffers when they are residing in guest memory. So, Jerome is right, there is only two issues in the linux driver. Maybe, even one and half :) I'll post patch in LKML in the nearest time. |
@lorc I am changing the title of this issue because it appears to be misleading now. |
And there are no multiple TRBs on EP0 and WA1 workaround, so it doesn't need to change TRB for EP0. It fixes below oops. configfs-gadget gadget: high-speed config linaro-swg#1: b android_work: sent uevent USB_STATE=CONFIGURED Unable to handle kernel read from unreadable memory at virtual address 0000000000000008 Mem abort info: android_work: sent uevent USB_STATE=DISCONNECTED ESR = 0x96000004 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 Data abort info: ISV = 0, ISS = 0x00000004 CM = 0, WnR = 0 user pgtable: 4k pages, 48-bit VAs, pgdp=00000008b5bb7000 [0000000000000008] pgd=0000000000000000 Internal error: Oops: 96000004 [linaro-swg#1] PREEMPT SMP Modules linked in: CPU: 2 PID: 430 Comm: HwBinder:401_1 Not tainted 5.4.24-06071-g6fa8921409c1-dirty linaro-swg#77 Hardware name: Freescale i.MX8QXP MEK (DT) pstate: 60400085 (nZCv daIf +PAN -UAO) pc : cdns3_gadget_ep_dequeue+0x1d4/0x270 lr : cdns3_gadget_ep_dequeue+0x48/0x270 sp : ffff800012763ba0 x29: ffff800012763ba0 x28: ffff00082c653c00 x27: 0000000000000000 x26: ffff000068fa7b00 x25: ffff0000699b2000 x24: ffff00082c6ac000 x23: ffff000834f0a480 x22: ffff000834e87b9c x21: 0000000000000000 x20: ffff000834e87800 x19: ffff000069eddc00 x18: 0000000000000000 x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000001 x11: ffff80001180fbe8 x10: 0000000000000001 x9 : ffff800012101558 x8 : 0000000000000001 x7 : 0000000000000006 x6 : ffff000835d9c668 x5 : ffff000834f0a4c8 x4 : 0000000096000000 x3 : 0000000000001810 x2 : 0000000000000000 x1 : ffff800024bd001c x0 : 0000000000000001 Call trace: cdns3_gadget_ep_dequeue+0x1d4/0x270 usb_ep_dequeue+0x34/0xf8 composite_dev_cleanup+0x154/0x170 configfs_composite_unbind+0x6c/0xa8 usb_gadget_remove_driver+0x44/0x70 usb_gadget_unregister_driver+0x74/0xe0 unregister_gadget+0x28/0x58 gadget_dev_desc_UDC_store+0x80/0x110 configfs_write_file+0x1e0/0x2a0 __vfs_write+0x48/0x90 vfs_write+0xe4/0x1c8 ksys_write+0x78/0x100 __arm64_sys_write+0x24/0x30 el0_svc_common.constprop.0+0x74/0x168 el0_svc_handler+0x34/0xa0 el0_svc+0x8/0xc Code: 52830203 b9407660 f94042e4 11000400 (b9400841) ---[ end trace 1574516e4c1772ca ]--- Kernel panic - not syncing: Fatal exception SMP: stopping secondary CPUs Kernel Offset: disabled CPU features: 0x0002,20002008 Memory Limit: none Rebooting in 5 seconds.. Fixes: f616c3b ("usb: cdns3: Fix dequeue implementation") Cc: stable <[email protected]> Reviewed-by: Jun Li <[email protected]> Signed-off-by: Peter Chen <[email protected]>
There are multiple issues with device PTA driver:
optee_enumerate_devices()
fails,optee_driver_init()
fails. But actually optee can work without this feature. Does it means, than older OP-TEE versions are not supported anymore?optee_remove()
Basically I'm getting this error log:
Note that Xen mediator returns an error and then kernel panics.
The text was updated successfully, but these errors were encountered: