HMQ IRQ Status Should be Masked With The IRQ Enable
@arruat reported that the HMQ output IRQ handler loops over all message queues and tries to push data even if there is no data.
At first, it looks that the HMQ IRQ status reports the raw value without considering the IRQ enable. This means that it will put a 1 for all HMQ that can accept data. However, this should be masked using the IRQ enable register so that software focuses only on those HMQ for which IRQs are enabled.
This can be done in software, but if done in HDL it will improve performance. This can be done by changing the behaviour of the register or y adding a new one.
References: https://be-cem-edl.web.cern.ch/mockturtle/v4.3.0/doc/registers/wbgen_csr.html#sect_3_9