|
|
0a122b |
From bf17f7d5651bdf24cc15268ff20ecbccf74ea138 Mon Sep 17 00:00:00 2001
|
|
|
0a122b |
From: Laszlo Ersek <lersek@redhat.com>
|
|
|
0a122b |
Date: Sat, 11 Jan 2014 17:59:54 +0100
|
|
|
0a122b |
Subject: [PATCH 04/22] memory: Rename readable flag to romd_mode
|
|
|
0a122b |
|
|
|
0a122b |
RH-Author: Laszlo Ersek <lersek@redhat.com>
|
|
|
0a122b |
Message-id: <1389463208-6278-5-git-send-email-lersek@redhat.com>
|
|
|
0a122b |
Patchwork-id: 56617
|
|
|
0a122b |
O-Subject: [RHEL-7.0 qemu-kvm PATCH 04/18] memory: Rename readable flag to romd_mode
|
|
|
0a122b |
Bugzilla: 1032346
|
|
|
0a122b |
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
0a122b |
RH-Acked-by: Amos Kong <akong@redhat.com>
|
|
|
0a122b |
RH-Acked-by: Andrew Jones <drjones@redhat.com>
|
|
|
0a122b |
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
0a122b |
|
|
|
0a122b |
From: Jan Kiszka <jan.kiszka@siemens.com>
|
|
|
0a122b |
|
|
|
0a122b |
"Readable" is a very unfortunate name for this flag because even a
|
|
|
0a122b |
rom_device region will always be readable from the guest POV. What
|
|
|
0a122b |
differs is the mapping, just like the comments had to explain already.
|
|
|
0a122b |
Also, readable could currently be understood as being a generic region
|
|
|
0a122b |
flag, but it only applies to rom_device regions.
|
|
|
0a122b |
|
|
|
0a122b |
So rename the flag and the function to modify it after the original term
|
|
|
0a122b |
"ROMD" which could also be interpreted as "ROM direct", i.e. ROM mode
|
|
|
0a122b |
with direct access. In any case, the scope of the flag is clearer now.
|
|
|
0a122b |
|
|
|
0a122b |
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
|
|
|
0a122b |
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
|
|
|
0a122b |
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
0a122b |
(cherry picked from commit 5f9a5ea1c0a8391033e7d33abd335dd804a1001a)
|
|
|
0a122b |
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
0a122b |
---
|
|
|
0a122b |
include/exec/memory.h | 22 +++++++++++-----------
|
|
|
0a122b |
hw/block/pflash_cfi01.c | 6 +++---
|
|
|
0a122b |
hw/block/pflash_cfi02.c | 2 +-
|
|
|
0a122b |
memory.c | 30 +++++++++++++++---------------
|
|
|
0a122b |
4 files changed, 30 insertions(+), 30 deletions(-)
|
|
|
0a122b |
|
|
|
0a122b |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
0a122b |
---
|
|
|
0a122b |
hw/block/pflash_cfi01.c | 6 +++---
|
|
|
0a122b |
hw/block/pflash_cfi02.c | 2 +-
|
|
|
0a122b |
include/exec/memory.h | 22 +++++++++++-----------
|
|
|
0a122b |
memory.c | 30 +++++++++++++++---------------
|
|
|
0a122b |
4 files changed, 30 insertions(+), 30 deletions(-)
|
|
|
0a122b |
|
|
|
0a122b |
diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c
|
|
|
0a122b |
index 0bbb1a3..18eb0bc 100644
|
|
|
0a122b |
--- a/hw/block/pflash_cfi01.c
|
|
|
0a122b |
+++ b/hw/block/pflash_cfi01.c
|
|
|
0a122b |
@@ -105,7 +105,7 @@ static void pflash_timer (void *opaque)
|
|
|
0a122b |
DPRINTF("%s: command %02x done\n", __func__, pfl->cmd);
|
|
|
0a122b |
/* Reset flash */
|
|
|
0a122b |
pfl->status ^= 0x80;
|
|
|
0a122b |
- memory_region_rom_device_set_readable(&pfl->mem, true);
|
|
|
0a122b |
+ memory_region_rom_device_set_romd(&pfl->mem, true);
|
|
|
0a122b |
pfl->wcycle = 0;
|
|
|
0a122b |
pfl->cmd = 0;
|
|
|
0a122b |
}
|
|
|
0a122b |
@@ -281,7 +281,7 @@ static void pflash_write(pflash_t *pfl, hwaddr offset,
|
|
|
0a122b |
|
|
|
0a122b |
if (!pfl->wcycle) {
|
|
|
0a122b |
/* Set the device in I/O access mode */
|
|
|
0a122b |
- memory_region_rom_device_set_readable(&pfl->mem, false);
|
|
|
0a122b |
+ memory_region_rom_device_set_romd(&pfl->mem, false);
|
|
|
0a122b |
}
|
|
|
0a122b |
|
|
|
0a122b |
switch (pfl->wcycle) {
|
|
|
0a122b |
@@ -458,7 +458,7 @@ static void pflash_write(pflash_t *pfl, hwaddr offset,
|
|
|
0a122b |
"\n", __func__, offset, pfl->wcycle, pfl->cmd, value);
|
|
|
0a122b |
|
|
|
0a122b |
reset_flash:
|
|
|
0a122b |
- memory_region_rom_device_set_readable(&pfl->mem, true);
|
|
|
0a122b |
+ memory_region_rom_device_set_romd(&pfl->mem, true);
|
|
|
0a122b |
|
|
|
0a122b |
pfl->wcycle = 0;
|
|
|
0a122b |
pfl->cmd = 0;
|
|
|
0a122b |
diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c
|
|
|
0a122b |
index 9a7fa70..5f25246 100644
|
|
|
0a122b |
--- a/hw/block/pflash_cfi02.c
|
|
|
0a122b |
+++ b/hw/block/pflash_cfi02.c
|
|
|
0a122b |
@@ -111,7 +111,7 @@ static void pflash_setup_mappings(pflash_t *pfl)
|
|
|
0a122b |
|
|
|
0a122b |
static void pflash_register_memory(pflash_t *pfl, int rom_mode)
|
|
|
0a122b |
{
|
|
|
0a122b |
- memory_region_rom_device_set_readable(&pfl->orig_mem, rom_mode);
|
|
|
0a122b |
+ memory_region_rom_device_set_romd(&pfl->orig_mem, rom_mode);
|
|
|
0a122b |
pfl->rom_mode = rom_mode;
|
|
|
0a122b |
}
|
|
|
0a122b |
|
|
|
0a122b |
diff --git a/include/exec/memory.h b/include/exec/memory.h
|
|
|
0a122b |
index bd6d31a..3bbe378 100644
|
|
|
0a122b |
--- a/include/exec/memory.h
|
|
|
0a122b |
+++ b/include/exec/memory.h
|
|
|
0a122b |
@@ -124,7 +124,7 @@ struct MemoryRegion {
|
|
|
0a122b |
ram_addr_t ram_addr;
|
|
|
0a122b |
bool subpage;
|
|
|
0a122b |
bool terminates;
|
|
|
0a122b |
- bool readable;
|
|
|
0a122b |
+ bool romd_mode;
|
|
|
0a122b |
bool ram;
|
|
|
0a122b |
bool readonly; /* For RAM regions */
|
|
|
0a122b |
bool enabled;
|
|
|
0a122b |
@@ -353,16 +353,16 @@ uint64_t memory_region_size(MemoryRegion *mr);
|
|
|
0a122b |
bool memory_region_is_ram(MemoryRegion *mr);
|
|
|
0a122b |
|
|
|
0a122b |
/**
|
|
|
0a122b |
- * memory_region_is_romd: check whether a memory region is ROMD
|
|
|
0a122b |
+ * memory_region_is_romd: check whether a memory region is in ROMD mode
|
|
|
0a122b |
*
|
|
|
0a122b |
- * Returns %true is a memory region is ROMD and currently set to allow
|
|
|
0a122b |
+ * Returns %true if a memory region is a ROM device and currently set to allow
|
|
|
0a122b |
* direct reads.
|
|
|
0a122b |
*
|
|
|
0a122b |
* @mr: the memory region being queried
|
|
|
0a122b |
*/
|
|
|
0a122b |
static inline bool memory_region_is_romd(MemoryRegion *mr)
|
|
|
0a122b |
{
|
|
|
0a122b |
- return mr->rom_device && mr->readable;
|
|
|
0a122b |
+ return mr->rom_device && mr->romd_mode;
|
|
|
0a122b |
}
|
|
|
0a122b |
|
|
|
0a122b |
/**
|
|
|
0a122b |
@@ -500,18 +500,18 @@ void memory_region_reset_dirty(MemoryRegion *mr, hwaddr addr,
|
|
|
0a122b |
void memory_region_set_readonly(MemoryRegion *mr, bool readonly);
|
|
|
0a122b |
|
|
|
0a122b |
/**
|
|
|
0a122b |
- * memory_region_rom_device_set_readable: enable/disable ROM readability
|
|
|
0a122b |
+ * memory_region_rom_device_set_romd: enable/disable ROMD mode
|
|
|
0a122b |
*
|
|
|
0a122b |
* Allows a ROM device (initialized with memory_region_init_rom_device() to
|
|
|
0a122b |
- * to be marked as readable (default) or not readable. When it is readable,
|
|
|
0a122b |
- * the device is mapped to guest memory. When not readable, reads are
|
|
|
0a122b |
- * forwarded to the #MemoryRegion.read function.
|
|
|
0a122b |
+ * set to ROMD mode (default) or MMIO mode. When it is in ROMD mode, the
|
|
|
0a122b |
+ * device is mapped to guest memory and satisfies read access directly.
|
|
|
0a122b |
+ * When in MMIO mode, reads are forwarded to the #MemoryRegion.read function.
|
|
|
0a122b |
+ * Writes are always handled by the #MemoryRegion.write function.
|
|
|
0a122b |
*
|
|
|
0a122b |
* @mr: the memory region to be updated
|
|
|
0a122b |
- * @readable: whether reads are satisified directly (%true) or via callbacks
|
|
|
0a122b |
- * (%false)
|
|
|
0a122b |
+ * @romd_mode: %true to put the region into ROMD mode
|
|
|
0a122b |
*/
|
|
|
0a122b |
-void memory_region_rom_device_set_readable(MemoryRegion *mr, bool readable);
|
|
|
0a122b |
+void memory_region_rom_device_set_romd(MemoryRegion *mr, bool romd_mode);
|
|
|
0a122b |
|
|
|
0a122b |
/**
|
|
|
0a122b |
* memory_region_set_coalescing: Enable memory coalescing for the region.
|
|
|
0a122b |
diff --git a/memory.c b/memory.c
|
|
|
0a122b |
index 685912d..edaf6fd 100644
|
|
|
0a122b |
--- a/memory.c
|
|
|
0a122b |
+++ b/memory.c
|
|
|
0a122b |
@@ -214,7 +214,7 @@ struct FlatRange {
|
|
|
0a122b |
hwaddr offset_in_region;
|
|
|
0a122b |
AddrRange addr;
|
|
|
0a122b |
uint8_t dirty_log_mask;
|
|
|
0a122b |
- bool readable;
|
|
|
0a122b |
+ bool romd_mode;
|
|
|
0a122b |
bool readonly;
|
|
|
0a122b |
};
|
|
|
0a122b |
|
|
|
0a122b |
@@ -237,7 +237,7 @@ static bool flatrange_equal(FlatRange *a, FlatRange *b)
|
|
|
0a122b |
return a->mr == b->mr
|
|
|
0a122b |
&& addrrange_equal(a->addr, b->addr)
|
|
|
0a122b |
&& a->offset_in_region == b->offset_in_region
|
|
|
0a122b |
- && a->readable == b->readable
|
|
|
0a122b |
+ && a->romd_mode == b->romd_mode
|
|
|
0a122b |
&& a->readonly == b->readonly;
|
|
|
0a122b |
}
|
|
|
0a122b |
|
|
|
0a122b |
@@ -277,7 +277,7 @@ static bool can_merge(FlatRange *r1, FlatRange *r2)
|
|
|
0a122b |
r1->addr.size),
|
|
|
0a122b |
int128_make64(r2->offset_in_region))
|
|
|
0a122b |
&& r1->dirty_log_mask == r2->dirty_log_mask
|
|
|
0a122b |
- && r1->readable == r2->readable
|
|
|
0a122b |
+ && r1->romd_mode == r2->romd_mode
|
|
|
0a122b |
&& r1->readonly == r2->readonly;
|
|
|
0a122b |
}
|
|
|
0a122b |
|
|
|
0a122b |
@@ -533,7 +533,7 @@ static void render_memory_region(FlatView *view,
|
|
|
0a122b |
fr.offset_in_region = offset_in_region;
|
|
|
0a122b |
fr.addr = addrrange_make(base, now);
|
|
|
0a122b |
fr.dirty_log_mask = mr->dirty_log_mask;
|
|
|
0a122b |
- fr.readable = mr->readable;
|
|
|
0a122b |
+ fr.romd_mode = mr->romd_mode;
|
|
|
0a122b |
fr.readonly = readonly;
|
|
|
0a122b |
flatview_insert(view, i, &fr);
|
|
|
0a122b |
++i;
|
|
|
0a122b |
@@ -553,7 +553,7 @@ static void render_memory_region(FlatView *view,
|
|
|
0a122b |
fr.offset_in_region = offset_in_region;
|
|
|
0a122b |
fr.addr = addrrange_make(base, remain);
|
|
|
0a122b |
fr.dirty_log_mask = mr->dirty_log_mask;
|
|
|
0a122b |
- fr.readable = mr->readable;
|
|
|
0a122b |
+ fr.romd_mode = mr->romd_mode;
|
|
|
0a122b |
fr.readonly = readonly;
|
|
|
0a122b |
flatview_insert(view, i, &fr);
|
|
|
0a122b |
}
|
|
|
0a122b |
@@ -802,7 +802,7 @@ void memory_region_init(MemoryRegion *mr,
|
|
|
0a122b |
mr->enabled = true;
|
|
|
0a122b |
mr->terminates = false;
|
|
|
0a122b |
mr->ram = false;
|
|
|
0a122b |
- mr->readable = true;
|
|
|
0a122b |
+ mr->romd_mode = true;
|
|
|
0a122b |
mr->readonly = false;
|
|
|
0a122b |
mr->rom_device = false;
|
|
|
0a122b |
mr->destructor = memory_region_destructor_none;
|
|
|
0a122b |
@@ -1118,11 +1118,11 @@ void memory_region_set_readonly(MemoryRegion *mr, bool readonly)
|
|
|
0a122b |
}
|
|
|
0a122b |
}
|
|
|
0a122b |
|
|
|
0a122b |
-void memory_region_rom_device_set_readable(MemoryRegion *mr, bool readable)
|
|
|
0a122b |
+void memory_region_rom_device_set_romd(MemoryRegion *mr, bool romd_mode)
|
|
|
0a122b |
{
|
|
|
0a122b |
- if (mr->readable != readable) {
|
|
|
0a122b |
+ if (mr->romd_mode != romd_mode) {
|
|
|
0a122b |
memory_region_transaction_begin();
|
|
|
0a122b |
- mr->readable = readable;
|
|
|
0a122b |
+ mr->romd_mode = romd_mode;
|
|
|
0a122b |
memory_region_update_pending |= mr->enabled;
|
|
|
0a122b |
memory_region_transaction_commit();
|
|
|
0a122b |
}
|
|
|
0a122b |
@@ -1644,9 +1644,9 @@ static void mtree_print_mr(fprintf_function mon_printf, void *f,
|
|
|
0a122b |
base + mr->addr
|
|
|
0a122b |
+ (hwaddr)int128_get64(mr->size) - 1,
|
|
|
0a122b |
mr->priority,
|
|
|
0a122b |
- mr->readable ? 'R' : '-',
|
|
|
0a122b |
- !mr->readonly && !(mr->rom_device && mr->readable) ? 'W'
|
|
|
0a122b |
- : '-',
|
|
|
0a122b |
+ mr->romd_mode ? 'R' : '-',
|
|
|
0a122b |
+ !mr->readonly && !(mr->rom_device && mr->romd_mode) ? 'W'
|
|
|
0a122b |
+ : '-',
|
|
|
0a122b |
mr->name,
|
|
|
0a122b |
mr->alias->name,
|
|
|
0a122b |
mr->alias_offset,
|
|
|
0a122b |
@@ -1659,9 +1659,9 @@ static void mtree_print_mr(fprintf_function mon_printf, void *f,
|
|
|
0a122b |
base + mr->addr
|
|
|
0a122b |
+ (hwaddr)int128_get64(mr->size) - 1,
|
|
|
0a122b |
mr->priority,
|
|
|
0a122b |
- mr->readable ? 'R' : '-',
|
|
|
0a122b |
- !mr->readonly && !(mr->rom_device && mr->readable) ? 'W'
|
|
|
0a122b |
- : '-',
|
|
|
0a122b |
+ mr->romd_mode ? 'R' : '-',
|
|
|
0a122b |
+ !mr->readonly && !(mr->rom_device && mr->romd_mode) ? 'W'
|
|
|
0a122b |
+ : '-',
|
|
|
0a122b |
mr->name);
|
|
|
0a122b |
}
|
|
|
0a122b |
|
|
|
0a122b |
--
|
|
|
0a122b |
1.7.1
|
|
|
0a122b |
|