On Wed, 2017-09-20 at 16:34 +1000, David Gibson wrote: > > >> + if (GETFIELD(EQ_W6_FORMAT_BIT, eq->w6) == 0) { > > >> + priority = GETFIELD(EQ_W7_F0_PRIORITY, eq->w7); > > >> > > >> + /* The EQ is masked. Can this happen ? */ > > >> + if (priority == 0xff) { > > >> + return; > > > > > > How does the 8-bit priority field here interact with the 3-bit > > > priority which selects which EQ to use? > > > > priority OxFF is a special case kept for masking, see the hcall > > h_int_set_source_config. It should never reach the EQ lookup > > routines. So may be an assert would be better here. > > Ok, if this situation can't be guest triggered, only by a bug in the > rest of the XIVE code, then an assert() is better.
Note: this doesn't match HW. However there's a mask bit in the EAS. The problem when masking that way of course is that you lose triggers, ie P gets set, the interrupt lost, and nobody will clear P. Cheers, Ben.