From: Igor Mammedov <imammedo@redhat.com>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
qemu-devel@nongnu.org, Artyom Tarasenko <atar4qemu@gmail.com>
Subject: Re: [RFC PATCH] hw/sparc/sun4m: Use memdev backend for main RAM
Date: Thu, 14 May 2020 12:09:51 +0200 [thread overview]
Message-ID: <20200514120951.3588bc30@redhat.com> (raw)
In-Reply-To: <20200510113505.10500-1-f4bug@amsat.org>
On Sun, 10 May 2020 13:35:05 +0200
Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
> Since commit 82b911aaff3, machine_run_board_init() checks for
> ram_memdev_id and consume it. As TYPE_SUN4M_MEMORY is no more
> needed, replace it by the generic memdev allocated MemoryRegion
> and remove it. This completes commit b2554752b1da7c8f.
I don't get justification here.
You are removing 'frontend' device model that has little/nothing
to do with how backend is instantiated.
TYPE_SUN4M_MEMORY is analog to pc-dimm, only for builtin RAM
(not really useful but could serve as an example).
It's fine to drop it as it doesn't accually do much
and map memory region directly like we do elsewhere for builtin RAM
and get rid of TYPE_SUN4M_MEMORY boiler-plate code.
with such reasoning, I'd Ack it, but the final say belongs to board maintainers
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> hw/sparc/sun4m.c | 54 ++----------------------------------------------
> 1 file changed, 2 insertions(+), 52 deletions(-)
>
> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
> index 36ee1a0a3d..9838c5a183 100644
> --- a/hw/sparc/sun4m.c
> +++ b/hw/sparc/sun4m.c
> @@ -772,50 +772,6 @@ static const TypeInfo prom_info = {
> .class_init = prom_class_init,
> };
>
> -#define TYPE_SUN4M_MEMORY "memory"
> -#define SUN4M_RAM(obj) OBJECT_CHECK(RamDevice, (obj), TYPE_SUN4M_MEMORY)
> -
> -typedef struct RamDevice {
> - SysBusDevice parent_obj;
> - HostMemoryBackend *memdev;
> -} RamDevice;
> -
> -/* System RAM */
> -static void ram_realize(DeviceState *dev, Error **errp)
> -{
> - RamDevice *d = SUN4M_RAM(dev);
> - MemoryRegion *ram = host_memory_backend_get_memory(d->memdev);
> -
> - sysbus_init_mmio(SYS_BUS_DEVICE(dev), ram);
> -}
> -
> -static void ram_initfn(Object *obj)
> -{
> - RamDevice *d = SUN4M_RAM(obj);
> - object_property_add_link(obj, "memdev", TYPE_MEMORY_BACKEND,
> - (Object **)&d->memdev,
> - object_property_allow_set_link,
> - OBJ_PROP_LINK_STRONG, &error_abort);
> - object_property_set_description(obj, "memdev", "Set RAM backend"
> - "Valid value is ID of a hostmem backend",
> - &error_abort);
> -}
> -
> -static void ram_class_init(ObjectClass *klass, void *data)
> -{
> - DeviceClass *dc = DEVICE_CLASS(klass);
> -
> - dc->realize = ram_realize;
> -}
> -
> -static const TypeInfo ram_info = {
> - .name = TYPE_SUN4M_MEMORY,
> - .parent = TYPE_SYS_BUS_DEVICE,
> - .instance_size = sizeof(RamDevice),
> - .instance_init = ram_initfn,
> - .class_init = ram_class_init,
> -};
> -
> static void cpu_devinit(const char *cpu_type, unsigned int id,
> uint64_t prom_addr, qemu_irq **cpu_irqs)
> {
> @@ -858,8 +814,6 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef,
> SysBusDevice *s;
> unsigned int smp_cpus = machine->smp.cpus;
> unsigned int max_cpus = machine->smp.max_cpus;
> - Object *ram_memdev = object_resolve_path_type(machine->ram_memdev_id,
> - TYPE_MEMORY_BACKEND, NULL);
>
> if (machine->ram_size > hwdef->max_mem) {
> error_report("Too much memory for this machine: %" PRId64 ","
> @@ -876,11 +830,8 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef,
> for (i = smp_cpus; i < MAX_CPUS; i++)
> cpu_irqs[i] = qemu_allocate_irqs(dummy_cpu_set_irq, NULL, MAX_PILS);
>
> - /* Create and map RAM frontend */
> - dev = qdev_create(NULL, "memory");
> - object_property_set_link(OBJECT(dev), ram_memdev, "memdev", &error_fatal);
> - qdev_init_nofail(dev);
> - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0);
> + /* RAM */
> + memory_region_add_subregion(get_system_memory(), 0, machine->ram);
>
> /* models without ECC don't trap when missing ram is accessed */
> if (!hwdef->ecc_base) {
> @@ -1575,7 +1526,6 @@ static void sun4m_register_types(void)
> type_register_static(&idreg_info);
> type_register_static(&afx_info);
> type_register_static(&prom_info);
> - type_register_static(&ram_info);
>
> type_register_static(&ss5_type);
> type_register_static(&ss10_type);
next prev parent reply other threads:[~2020-05-14 10:10 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-10 11:35 [RFC PATCH] hw/sparc/sun4m: Use memdev backend for main RAM Philippe Mathieu-Daudé
2020-05-14 10:09 ` Igor Mammedov [this message]
2020-05-14 12:13 ` Philippe Mathieu-Daudé
2020-05-20 10:07 ` Igor Mammedow
2020-05-25 9:02 ` Mark Cave-Ayland
2020-05-25 13:45 ` Igor Mammedow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200514120951.3588bc30@redhat.com \
--to=imammedo@redhat.com \
--cc=atar4qemu@gmail.com \
--cc=f4bug@amsat.org \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).