mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
memory: learn about non-volatile memory region
Add a new flag to mark memory region that are used as non-volatile, by NVDIMM for example. That bit is propagated down to the flat view, and reflected in HMP info mtree with a "nv-" prefix on the memory type. This way, guest_phys_blocks_region_add() can skip the NV memory regions for dumps and TCG memory clear in a following patch. Cc: dgilbert@redhat.com Cc: imammedo@redhat.com Cc: pbonzini@redhat.com Cc: guangrong.xiao@linux.intel.com Cc: mst@redhat.com Cc: xiaoguangrong.eric@gmail.com Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20181003114454.5662-2-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
1a1435dd61
commit
c26763f8ec
3 changed files with 61 additions and 10 deletions
|
@ -355,6 +355,7 @@ struct MemoryRegion {
|
|||
bool ram;
|
||||
bool subpage;
|
||||
bool readonly; /* For RAM regions */
|
||||
bool nonvolatile;
|
||||
bool rom_device;
|
||||
bool flush_coalesced_mmio;
|
||||
bool global_locking;
|
||||
|
@ -480,6 +481,7 @@ static inline FlatView *address_space_to_flatview(AddressSpace *as)
|
|||
* @offset_within_address_space: the address of the first byte of the section
|
||||
* relative to the region's address space
|
||||
* @readonly: writes to this section are ignored
|
||||
* @nonvolatile: this section is non-volatile
|
||||
*/
|
||||
struct MemoryRegionSection {
|
||||
MemoryRegion *mr;
|
||||
|
@ -488,6 +490,7 @@ struct MemoryRegionSection {
|
|||
Int128 size;
|
||||
hwaddr offset_within_address_space;
|
||||
bool readonly;
|
||||
bool nonvolatile;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1170,6 +1173,17 @@ static inline bool memory_region_is_rom(MemoryRegion *mr)
|
|||
return mr->ram && mr->readonly;
|
||||
}
|
||||
|
||||
/**
|
||||
* memory_region_is_nonvolatile: check whether a memory region is non-volatile
|
||||
*
|
||||
* Returns %true is a memory region is non-volatile memory.
|
||||
*
|
||||
* @mr: the memory region being queried
|
||||
*/
|
||||
static inline bool memory_region_is_nonvolatile(MemoryRegion *mr)
|
||||
{
|
||||
return mr->nonvolatile;
|
||||
}
|
||||
|
||||
/**
|
||||
* memory_region_get_fd: Get a file descriptor backing a RAM memory region.
|
||||
|
@ -1341,6 +1355,17 @@ void memory_region_reset_dirty(MemoryRegion *mr, hwaddr addr,
|
|||
*/
|
||||
void memory_region_set_readonly(MemoryRegion *mr, bool readonly);
|
||||
|
||||
/**
|
||||
* memory_region_set_nonvolatile: Turn a memory region non-volatile
|
||||
*
|
||||
* Allows a memory region to be marked as non-volatile.
|
||||
* only useful on RAM regions.
|
||||
*
|
||||
* @mr: the region being updated.
|
||||
* @nonvolatile: whether rhe region is to be non-volatile.
|
||||
*/
|
||||
void memory_region_set_nonvolatile(MemoryRegion *mr, bool nonvolatile);
|
||||
|
||||
/**
|
||||
* memory_region_rom_device_set_romd: enable/disable ROMD mode
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue