Currently, qemu manages physical memory at a page granularity (and with
subpage, at a byte granularity). This is expensive in memory and runtime
(requiring 8 bytes per page, and likely a cache miss on access), and is
difficult to manage: devices must remember their ranges so they can free
them, and the memory system has no insight into how memory is laid out.
This patchset introduces object-based memory management. The first patch
adds objects and functions for memory regions; the second patch wraps this
for PCI; and the third converts RTL8139 as an example.