An IOMMU that supports only wire-signaled-interrupts sets the fence_w_ip bit to indicate completion of an IOFENCE.C command. To re-enable interrupts on IOFENCE.C completion, software should clear this bit by writing 1. This bit is reserved if the IOMMU does not support wire-signaled-interrupts or wire-signaled-interrupts are not enabled (i.e., fctl.WSI == 0).
This sounds ambiguous. In a system with capabilities.igs=2 (both WSI and MSI interrupt generation mode is supported), would fence_w_ip in cqcsr still be effective when fctl.WSI = 1 and WSI in iofence.c set 1? The bold word only implies that only under capabilities.igs=1 would fence_w_ip bit possibly takes effect, and I guess this is not what we expected.
In the chapter 5.15 of the Spec,
This sounds ambiguous. In a system with capabilities.igs=2 (both WSI and MSI interrupt generation mode is supported), would fence_w_ip in cqcsr still be effective when fctl.WSI = 1 and WSI in iofence.c set 1? The bold word only implies that only under capabilities.igs=1 would fence_w_ip bit possibly takes effect, and I guess this is not what we expected.
Please help to clarify this point.