Currently HLOS is using edge-triggering for the SMC waitq interrupt,
it is normal for the hypervisor to sometimes return 0 flags from
smc_get_wq_ctx. When the flag is "0", driver is assuming that it is
an invalid flag and printing a message which is not required. This
happens if two wakeups occur in close succession, so that the second
occurs while the IRQ handler for the first one is running. The first
wakeup’s IRQ handler will then handle both wakeups (because it must
call smc_get_wq_ctx in a loop), but the IRQ will still be marked
pending again. Then, when the IRQ handler runs the second time,
it has nothing to do.
Also handle the work in top half rather in the bottom half. This is
to reduce the addtional traps to hypervisor which can improve better
handling of interrupts when there are more interrupts that happen
in close succession.
Change-Id: Iff762be69cb43fc910b19b9392d18b1447d42991
Signed-off-by: Murali Nalajala <quic_mnalajal@quicinc.com>