On Thu, May 14, 2020 at 05:19:40PM +0900, David Stevens wrote:
Sorry for the duplicate reply, didn't notice this until now.
Just storing the uuid should be doable (assuming this doesn't change during the lifetime of the buffer), so no need for a callback.
Directly storing the uuid doesn't work that well because of synchronization issues. The uuid needs to be shared between multiple virtio devices with independent command streams, so to prevent races between importing and exporting, the exporting driver can't share the uuid with other drivers until it knows that the device has finished registering the uuid. That requires a round trip to and then back from the device. Using a callback allows the latency from that round trip registration to be hidden.
Uh, that means you actually do something and there's locking involved. Makes stuff more complicated, invariant attributes are a lot easier generally. Registering that uuid just always doesn't work, and blocking when you're exporting? -Daniel
linaro-mm-sig@lists.linaro.org