On Thu, Nov 22, 2018 at 08:59:32AM +0100, Cédric Le Goater wrote: > On 11/22/18 7:50 AM, Benjamin Herrenschmidt wrote: > > On Thu, 2018-11-22 at 15:44 +1100, David Gibson wrote: > >> > >> Sorry, didn't think of this in my first reply. > >> > >> 1) Does the hardware ever actually write back to the EAS? I know it > >> does for the END, but it's not clear why it would need to for the > >> EAS. If not, we don't need the setter. > > > > Nope, though the PAPR model will via hcalls > > Indeed. The H_INT_SET_SOURCE_CONFIG hcall updates the EAT. > > >> 2) The signatures are a bit odd here. For the setter, a value would > >> make sense than a (XiveEAS *), since it's just a word. For the getter > >> you could return the EAS value directly rather than using a pointer - > >> there's already a valid bit in the EAS so you can construct a value > >> with that cleared if the lisn is out of bounds. > > Yes we could. I think I made it that way to be consistent with the > other XIVE internal structures which are bigger : END, NVT Yeah, but as noted elsewhere I don't really like the get/set model for the bigger-than-word-size structures. It gives the impression that they're atomic updates when they can't be, as well as unnecessarily copying a bunch of stuff, sometimes on hot paths > There might be other reasons in Pnv. One was to use generic accessors > to the guest RAM but I didn't do it finally. Take a look at the Pnv > model and we might decide to change the prototype then. I don't > think it's a major change. Hmmm. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson