SiFive Unleashed board triggers an interrupt over and over until we clear mac interrupt status bit. So it ignores the fact the we clear interrupt pending bit in the interrupt controller driver. In result we have interrupt storm and we never reach cgem_intr() because it is supposed to be handled later in the interrupt thread.
Proposed solution: clear interrupt status bits in filter handler, disable interrupt immediately. Once interrupt served in cgem_intr() then restore interrupts.