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.