In Amit's thread on virtio-rng, danpb mentioned that we really ought to have a proper RNG backend infrastructure and of course he's correct on that.
Now that we have QOM, I wanted to demonstrate how we can use QOM to construct a complete backend without adding any new infrastructure. For this RFC, I've just implemented a /dev/urandom backend but hopefully it's obvious how to implement an EGD backend. In this case, the EGD backend Object would have a CharDriverState property which is how it would get exposed over the wire. My intent is not to take over this series, but to demonstrate how to structure things in a nicer fashion. I've not included an -rng option. Markus mentioned introducing a -qom-create option and this might be a good reason to further consider exposing that option. I've included some of the folks working on BlockDev on CC too because I wanted to show how I'd expect BlockDev to look infrastructure wise once it was fully using QOM.