On Tue, Jan 26, 2021 at 01:33:52PM -0800, Ben Widawsky wrote: > I'm working on CXL 2.0 type 3 memory devices [1]. In short, these are PCIe > devices > that have persistent memory on them. As such, it would be nice to inherit from > both a PCI_DEVICE class as well as an NVDIMM device class. > > Truth be told, using TYPE_MEMORY_DEVICE as the interface does provide most of > what I need. I'm wondering what the best way to handle this is. Currently, the > only thing NVDIMM class provides is write/read_label_data, this is driven by > _DSM. For CXL, the mechanism to read/write the equivalent area is not done via > _DSM, but done directly via a mailbox interface. However, the intent is the > same, and so utilizing similar code seems ideal. > > If there's a desire to unify these code paths, I'd need something like > multiple > inheritance. I'm looking for some feedback here on how to do it.
We don't have a direct concept of multiple inheritance in QOM. The closest you can get is to turn the NVDIMM class into an interface. You can inherit from PCI_DEVICE and then implement the NVDIMM interface. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|