[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [PATCH v1 2/5] ppc: rs6000_mc: drop usage of memory_reg
From: |
David Gibson |
Subject: |
Re: [qemu-s390x] [PATCH v1 2/5] ppc: rs6000_mc: drop usage of memory_region_allocate_system_memory() |
Date: |
Tue, 16 Apr 2019 14:13:35 +1000 |
User-agent: |
Mutt/1.11.3 (2019-02-01) |
On Mon, Apr 15, 2019 at 03:27:19PM +0200, Igor Mammedov wrote:
> rs6000mc_realize() violates memory_region_allocate_system_memory() contract
> by calling it multiple times which could break -mem-path. Replace it with
> plain memory_region_init_ram() instead.
>
> Signed-off-by: Igor Mammedov <address@hidden>
Acked-by: David Gibson <address@hidden>
LGTM, though I've no idea if the rs6000 machine even works at the moment.
> ---
> hw/ppc/rs6000_mc.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/hw/ppc/rs6000_mc.c b/hw/ppc/rs6000_mc.c
> index 45cb95e..ea174f1 100644
> --- a/hw/ppc/rs6000_mc.c
> +++ b/hw/ppc/rs6000_mc.c
> @@ -142,6 +142,7 @@ static void rs6000mc_realize(DeviceState *dev, Error
> **errp)
> RS6000MCState *s = RS6000MC_DEVICE(dev);
> int socket = 0;
> unsigned int ram_size = s->ram_size / MiB;
> + Error *local_err = NULL;
>
> while (socket < 6) {
> if (ram_size >= 64) {
> @@ -163,19 +164,21 @@ static void rs6000mc_realize(DeviceState *dev, Error
> **errp)
> if (s->simm_size[socket]) {
> char name[] = "simm.?";
> name[5] = socket + '0';
> - memory_region_allocate_system_memory(&s->simm[socket],
> OBJECT(dev),
> - name,
> - s->simm_size[socket] * MiB);
> + memory_region_init_ram(&s->simm[socket], OBJECT(dev), name,
> + s->simm_size[socket] * MiB, &local_err);
> + if (local_err) {
> + goto out;
> + }
> memory_region_add_subregion_overlap(get_system_memory(), 0,
> &s->simm[socket], socket);
> }
> }
> if (ram_size) {
> /* unable to push all requested RAM in SIMMs */
> - error_setg(errp, "RAM size incompatible with this board. "
> + error_setg(&local_err, "RAM size incompatible with this board. "
> "Try again with something else, like %" PRId64 " MB",
> s->ram_size / MiB - ram_size);
> - return;
> + goto out;
> }
>
> if (s->autoconfigure) {
> @@ -191,6 +194,8 @@ static void rs6000mc_realize(DeviceState *dev, Error
> **errp)
>
> isa_register_portio_list(ISA_DEVICE(dev), &s->portio, 0x0,
> rs6000mc_port_list, s, "rs6000mc");
> +out:
> + error_propagate(errp, local_err);
> }
>
> static const VMStateDescription vmstate_rs6000mc = {
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
- [qemu-s390x] [PATCH v1 0/5] Fix misuses of memory_region_allocate_system_memory(), Igor Mammedov, 2019/04/15
- [qemu-s390x] [PATCH v1 1/5] sparc64: use memory_region_allocate_system_memory() only for '-m' specified RAM, Igor Mammedov, 2019/04/15
- [qemu-s390x] [PATCH v1 2/5] ppc: rs6000_mc: drop usage of memory_region_allocate_system_memory(), Igor Mammedov, 2019/04/15
- Re: [qemu-s390x] [PATCH v1 2/5] ppc: rs6000_mc: drop usage of memory_region_allocate_system_memory(),
David Gibson <=
- [qemu-s390x] [PATCH v1 3/5] hppa: drop usage of memory_region_allocate_system_memory() for ROM, Igor Mammedov, 2019/04/15
- [qemu-s390x] [PATCH v1 4/5] memory: make MemoryRegion alias migratable, Igor Mammedov, 2019/04/15
- [qemu-s390x] [PATCH v1 5/5] s390: do not call memory_region_allocate_system_memory() multiple times, Igor Mammedov, 2019/04/15