On 21/11/23 13:10, Manos Pitsidianakis wrote:
> On Mon, 20 Nov 2023 23:32, Philippe Mathieu-Daudé <philmd@linaro.org>
> wrote:
>> Following the example documented since commit e3fe3988d7 ("error:
>> Document Error API usage rules"), have cpu_exec_realizefn()
>> return a boolean indicating whether an error is set or not.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> include/exec/memory.h | 4 +++-
>> system/memory.c | 8 ++++++--
>> 2 files changed, 9 insertions(+), 3 deletions(-)
>> diff --git a/system/memory.c b/system/memory.c
>> index 337b12a674..bfe0b62d59 100644
>> --- a/system/memory.c
>> +++ b/system/memory.c
>> @@ -1729,14 +1729,18 @@ void memory_region_init_alias(MemoryRegion *mr,
>> mr->alias_offset = offset;
>> }
>>
>> -void memory_region_init_rom_nomigrate(MemoryRegion *mr,
>> +bool memory_region_init_rom_nomigrate(MemoryRegion *mr,
>> Object *owner,
>> const char *name,
>> uint64_t size,
>> Error **errp)
>> {
>> - memory_region_init_ram_flags_nomigrate(mr, owner, name, size, 0,
>> errp);
>> + bool rv;
>> +
>> + rv = memory_region_init_ram_flags_nomigrate(mr, owner, name,
>> size, 0, errp);
>> mr->readonly = true;
>> +
>
> By the way, do we want to set mr->readonly on failure? Should there be
> modifications if an error is propagated upwards?
Good point, I'm squashing:
-- >8 --
diff --git a/system/memory.c b/system/memory.c
index a748de3694..72c6441e20 100644
--- a/system/memory.c
+++ b/system/memory.c
@@ -1707,12 +1707,13 @@ bool
memory_region_init_rom_nomigrate(MemoryRegion *mr,
uint64_t size,
Error **errp)
{
- bool rv;
-
- rv = memory_region_init_ram_flags_nomigrate(mr, owner, name, size,
0, errp);
+ if (!memory_region_init_ram_flags_nomigrate(mr, owner, name,
+ size, 0, errp)) {
+ return false;
+ }
mr->readonly = true;
- return rv;
+ return true;
}
---