facebook / OpenBIC

BICs (Bridge IC) are standalone devices deployed within a Data Center that enable monitoring a multi-host system using a single BMC device.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GPIO interrupt trigger fail

Yi-Shum opened this issue · comments

Hi @rainlinWW,

In irq_callback(), gpio_isr_info is a global variable.
So if two GPIO interrupts are triggered at the same time, only one will be added to the work queue.

The GPIO trigger interrupt flow is as follows:
irq_callback() -> gpio_isr_handler() -> interrupt callback function defined in plat_gpio_cfg[]
Could we remove the function gpio_isr_handler() and directly add the GPIO callback function into workqueue?

Thanks,
Eason

Hi Yi-Shum,

Currently we didn't run into such a critical case that two ISR triggered at same moment.
Could you help to provide the way you reproduce the issue?

And yes, please help to remove gpio_isr_handler() as possible.

Thanks,
Rain

Hi Rain,

Thanks for your reply, we will remove gpio_isr_handler() to resolve this issue.

We have added two GPIO interrupts, PWRGD_CPU_LVC3_R and RST_PLTRST_BUF_N.
During power off, these GPIO pins fall and trigger interrupt at the same time, and this problem is encountered..

Thanks,
Eason