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.


Reply via email to