On 12/20/2016 08:37 AM, Jan Beulich wrote: >>>> On 17.12.16 at 00:18, <boris.ostrov...@oracle.com> wrote: >> @@ -128,6 +130,13 @@ static int acpi_access_common(struct domain *d, bool >> is_guest_access, >> *en = (((v & 0xff) << 8) | (*en & 0xff)) & *mask_en; >> break; >> } >> + >> + /* >> + * If a new bit has been set in status register and corresponding >> + * event is enabled then an SCI is sent to the guest. >> + */ >> + if ( !is_guest_access && ((*sts & ~sts_orig) & *en) ) >> + send_guest_global_virq(d, VIRQ_SCI); > From an abstract pov: How a bit gets set in either register shouldn't > matter. Hence the !is_guest_access part here is at least questionable. > However, iirc the guest can't itself set any status bits (since they're > write-1-clear). Otoh, when an enable bit transitions from 0 to 1 (which > the guest can effect) and the respective status bit is set, an SCI > should occur according to my reading of the spec.
I haven't considered the case of enabling with a pending status. Yes, that should trigger an SCI too, irrespective of is_guest_access. And I guess since guests can't set status bits I can drop the is_guest_access test in the check above too. -boris _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel