mirror of https://gitee.com/openkylin/qemu.git
memory: reorder MemoryRegion fields
Order fields so that all fields accessed during a RAM read/write fit in the same cache line. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
e81bcda529
commit
a676854f34
|
@ -159,27 +159,32 @@ typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd;
|
||||||
|
|
||||||
struct MemoryRegion {
|
struct MemoryRegion {
|
||||||
Object parent_obj;
|
Object parent_obj;
|
||||||
|
|
||||||
/* All fields are private - violators will be prosecuted */
|
/* All fields are private - violators will be prosecuted */
|
||||||
const MemoryRegionOps *ops;
|
|
||||||
|
/* The following fields should fit in a cache line */
|
||||||
|
bool romd_mode;
|
||||||
|
bool ram;
|
||||||
|
bool subpage;
|
||||||
|
bool readonly; /* For RAM regions */
|
||||||
|
bool rom_device;
|
||||||
|
bool flush_coalesced_mmio;
|
||||||
|
bool global_locking;
|
||||||
|
uint8_t dirty_log_mask;
|
||||||
|
ram_addr_t ram_addr;
|
||||||
const MemoryRegionIOMMUOps *iommu_ops;
|
const MemoryRegionIOMMUOps *iommu_ops;
|
||||||
|
|
||||||
|
const MemoryRegionOps *ops;
|
||||||
void *opaque;
|
void *opaque;
|
||||||
MemoryRegion *container;
|
MemoryRegion *container;
|
||||||
Int128 size;
|
Int128 size;
|
||||||
hwaddr addr;
|
hwaddr addr;
|
||||||
void (*destructor)(MemoryRegion *mr);
|
void (*destructor)(MemoryRegion *mr);
|
||||||
ram_addr_t ram_addr;
|
|
||||||
uint64_t align;
|
uint64_t align;
|
||||||
bool subpage;
|
|
||||||
bool terminates;
|
bool terminates;
|
||||||
bool romd_mode;
|
|
||||||
bool ram;
|
|
||||||
bool skip_dump;
|
bool skip_dump;
|
||||||
bool readonly; /* For RAM regions */
|
|
||||||
bool enabled;
|
bool enabled;
|
||||||
bool rom_device;
|
|
||||||
bool warning_printed; /* For reservations */
|
bool warning_printed; /* For reservations */
|
||||||
bool flush_coalesced_mmio;
|
|
||||||
bool global_locking;
|
|
||||||
uint8_t vga_logging_count;
|
uint8_t vga_logging_count;
|
||||||
MemoryRegion *alias;
|
MemoryRegion *alias;
|
||||||
hwaddr alias_offset;
|
hwaddr alias_offset;
|
||||||
|
@ -189,7 +194,6 @@ struct MemoryRegion {
|
||||||
QTAILQ_ENTRY(MemoryRegion) subregions_link;
|
QTAILQ_ENTRY(MemoryRegion) subregions_link;
|
||||||
QTAILQ_HEAD(coalesced_ranges, CoalescedMemoryRange) coalesced;
|
QTAILQ_HEAD(coalesced_ranges, CoalescedMemoryRange) coalesced;
|
||||||
const char *name;
|
const char *name;
|
||||||
uint8_t dirty_log_mask;
|
|
||||||
unsigned ioeventfd_nb;
|
unsigned ioeventfd_nb;
|
||||||
MemoryRegionIoeventfd *ioeventfds;
|
MemoryRegionIoeventfd *ioeventfds;
|
||||||
NotifierList iommu_notify;
|
NotifierList iommu_notify;
|
||||||
|
|
Loading…
Reference in New Issue