On 01/24/2012 05:10 AM, Avi Kivity wrote:
On 01/23/2012 07:18 PM, Anthony Liguori wrote:
Generally speaking, RAM is an independent device in most useful cases.
Can you give examples? Do you mean a subdevice with composition, or a
really independent device?
I expect we'll have one Ram device. It's size will be configurable. One Ram
device will hang off of the machine which would be the main ram.
A video card would have a Ram device via composition.
The important consideration about reset is how it propagates. My expectation is
that we'll propagate reset through the composition tree in a preorder
transversal. That means in the VGA device reset function, it's child device
(Ram) has not been reset yet.
Onboard RAM is a very special case because it's extremely unusual.
What's unusual (or even extremely unusual) about it? I don't see a
difference between a few billion bits of state and, say, the few bits of
state in an RTC device.
Okay, but let's not get philosophical here :-) There are very few devices that
have a DRAM chip that is mapped through a bar into the main address space and
behaves (usually) like normal RAM.
We really should view RAM as just another device so I don't like the
idea of propagating a global concept of "when RAM is restored" because
that treats it specially compared to other devices.
Agree. In fact the first step has been taken as now creating a RAM
region with memory_region_init_ram() doesn't register it for migration.
The next step would be a VMSTATE_RAM() to make it part of the containing
device.
That's not necessary (or wise).
Let's not confuse a Ram device with a MemoryRegion. They are separate things
and should be treated as separate things. I thought we discussed that
MemoryRegions are stateless (or at least, there state is all derived) and don't
need to be serialized?
Regards,
Anthony Liguori