pi4 hypervisor, handle irq

I am working on hypervisor with raspberry pi 4B board.
when I study interrupt virtualization, I encounter a problem, I am follow this document
https://developer.arm.com/documentation ... exceptions

There are two mechanisms for generating virtual interrupts:

1 Internally by the core, using controls in HCR_EL2.
2 Using a GICv2, or later, interrupt controller.

I use method 1. Everything worked fine, I can route IRQ to my EL2 code, and I can forward it to EL1 Linux kernel.

But, when I tested, I tried to disable IRQ from EL1, use "msr daifset, #0xf", after this, IRQ will not trigger to EL2 also.
I am confused, because the document above said pstate.I will only affect vIRQ(for EL1) not pIRQ(EL2). I tested a GPIO interrupt and IPI interrupt, both failed.

I search the web, there are few article on this topic, and can't find any additional settings.
All document I found, said set I bit in EL1, will not affect EL2/3.

Thanks, if anyone can help.