-
Notifications
You must be signed in to change notification settings - Fork 13
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
[linux kernel 5.16, HS38x2, EV71] openamp host side not got UIO driver IRQ event when openamp EV side send message. #137
Comments
In the host-side part of the driver we have polling mechanism as a backup if irq is not presented. Please check if platform_poll() function is called. Thanks, |
Hi Evgeniy, Thanks for your quickly. My test flow works fine. Openamp host can get message but I don't see the host into UIO driver IRQ handler. So, I am very confuse why host side knows that message coming without trigger UIO IRQ handler ?? Thanks, Joshua |
Hi Evgeniy, There has another two test flow. The test result is strange also. Test flow1 (step 1 to 4 repeat): Test flow2 (step 1 to 4 repeat, no any UIO IRQ handler found): |
Hi Joshua, On the host-side there is a thread, which is calling "remoteproc_get_notification" in a while loop. |
Hi Evgenii, After I comment out pthread_create(poll_thread...) line in platform_init. It stuck after message "metal: info: ev_runtime version 2022.09". I think the openamp handshake fail because host side didn't get some message. So, host side uses poll mode to check openamp message only, right ??? So, what is the function of the UIO IRQ when openamp running ?? Thanks, Joshua |
Hi Joshua, Polling is a backup mechanism and it occupies enough host CPU resources, so it is not preferable to use it in production. UIO IRQ probably should be a target here, so I would recommend you to double check if the IRQ is properly generated on the device side and delivered/handled by the Host. Thanks, |
Hi Evgeniy, I know what you mean now. So, after I comment out the poll thread. It should be works fine, right ? The UIO IRQ seems happened at wrong time, like my test scenario 1. Do you have any recommend to debug it ?? Thanks, Joshua |
Hi Joshua, If IRQs are correctly comming from the EV, polling can be commented out. Thanks, |
Hi Evgeniy, " host is getting UIO IRQ even if device didn't process the message from the host", yes, you are right. This is confuse me also. I'll check with HW team first. Thanks, Joshua |
Hi Evgenii, After I comment out the pthread_create(poll_thread...), the linux is stuck after show "metal: emergency: ev_runtime version 2022.09". Then I monitor the following IRQ registers,
Thanks, Joshua |
Hi Evgenii, I found a Note in spec. "Though each common interrupt can be programmed to be either level-triggered or edge-triggered, the interrupt is registered inside the IDU and is always distributed to the core as a level interrupt (from the cores perspective)." So, I think interrupt trigger register equal 0 is right. There has another thing is when I try to monitor ARConnect setting. I don't see the openamp UIO IRQ unmask after setup mode done. Do you know it need unmask or not when openamp running ?? Thanks, Joshua |
Hi Joshua, Sorry for being silent for some time. Thanks, |
Hi expert,
There has a simple question about openamp host side IRQ. Could you please help me to clarify it? Thanks.
As I know, openamp host side use UIO driver IRQ to check EV side had send openamp message or not. So, I try to use echo test to verify it. I modify the openamp host side echo test become wait message after send message directly. And EV side become send message after 2 second delay when got message. But I didn’t see any UIO driver IRQ event. Why EV side didn’t trigger host side UIO driver IRQ ???
Test flow:
1 EV side Wait message
2 Host side Send message to EV
3 EV side Got message
4 EV side Wait 2 second
5 EV side Send message to host
6 Host side Got message (no UIO IRQ??)
Thanks, Joshua
The text was updated successfully, but these errors were encountered: