Problem with arch timer with linux and virtualization on BPI-M1

Hi all, I have a question while I am developing a hypervisor on BPI-M1.

I’m facing a problem on arch timer when running linux on my hypervisor. IRQ 26 (hypervisor timer) is got stopped during linux bootup.

Both of hypervisor and linux use generic timer (or ARM arch timer) - using different part of it.

I use PL2(Hypervisor) timer for hypervisors timer events - which uses IRQ 26. Hypervisor sets timer again and again to get IRQ 26 for its work. I can see the texts printed in timer irq handling routine when it runs well.

And the linux kernel uses virtual timer (IRQ 27) while running on hypervisor. PL1 timer (IRQ 30) is used if linux is running natively without hypervisor.

The problem is that hypervisor stops getting IRQ 26 (IRQ 26 stops occuring) just after linux starts to run.

Is there anyone who can help me solve this problem?


p.s : linux starts and runs on SVC mode, on hypervisor. AFAIK hypervisor timer cannot be accessed or interfered from lower privilege mode like PL1 or SVC.