From: David Gibson <david@gibson.dropbear.id.au>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: qemu-devel@nongnu.org, qemu-ppc@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 09/11] mac_newworld: use object link to pass OpenPIC object to macio
Date: Thu, 22 Feb 2018 13:19:24 +1100 [thread overview]
Message-ID: <20180222021924.GC2164@umbus.fritz.box> (raw)
In-Reply-To: <20180219181922.21586-10-mark.cave-ayland@ilande.co.uk>
[-- Attachment #1: Type: text/plain, Size: 6080 bytes --]
On Mon, Feb 19, 2018 at 06:19:20PM +0000, Mark Cave-Ayland wrote:
> Also switch macio_newworld_realize() over to use it rather than using the pic_mem
> memory region directly.
>
> Now that both Old World and New World macio devices no longer make use of the
> pic_mem memory region directly, we can remove it.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/misc/macio/macio.c | 14 +++++++++-----
> hw/ppc/mac_newworld.c | 20 +++++++++++---------
> include/hw/misc/macio/macio.h | 4 +++-
> 3 files changed, 23 insertions(+), 15 deletions(-)
>
> diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c
> index d4c1d190c4..e5288f1084 100644
> --- a/hw/misc/macio/macio.c
> +++ b/hw/misc/macio/macio.c
> @@ -279,10 +279,10 @@ static void macio_newworld_realize(PCIDevice *d, Error **errp)
> sysbus_connect_irq(sysbus_dev, 0, ns->irqs[cur_irq++]);
> sysbus_connect_irq(sysbus_dev, 1, ns->irqs[cur_irq++]);
>
> - if (s->pic_mem) {
> - /* OpenPIC */
> - memory_region_add_subregion(&s->bar, 0x40000, s->pic_mem);
> - }
> + /* OpenPIC */
> + sysbus_dev = SYS_BUS_DEVICE(ns->pic);
> + memory_region_add_subregion(&s->bar, 0x40000,
> + sysbus_mmio_get_region(sysbus_dev, 0));
>
> /* IDE buses */
> for (i = 0; i < ARRAY_SIZE(ns->ide); i++) {
> @@ -311,6 +311,11 @@ static void macio_newworld_init(Object *obj)
>
> qdev_init_gpio_out(DEVICE(obj), ns->irqs, ARRAY_SIZE(ns->irqs));
>
> + object_property_add_link(obj, "pic", TYPE_OPENPIC,
> + (Object **) &ns->pic,
> + qdev_prop_allow_set_link_before_realize,
> + 0, NULL);
> +
> for (i = 0; i < 2; i++) {
> macio_init_ide(s, &ns->ide[i], sizeof(ns->ide[i]), i);
> }
> @@ -441,7 +446,6 @@ void macio_init(PCIDevice *d,
> {
> MacIOState *macio_state = MACIO(d);
>
> - macio_state->pic_mem = pic_mem;
> /* Note: this code is strongly inspirated from the corresponding code
> in PearPC */
> qdev_prop_set_uint64(DEVICE(&macio_state->cuda), "timebase-frequency",
> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
> index 396216954e..c7960ab67a 100644
> --- a/hw/ppc/mac_newworld.c
> +++ b/hw/ppc/mac_newworld.c
> @@ -154,7 +154,7 @@ static void ppc_core99_init(MachineState *machine)
> hwaddr kernel_base, initrd_base, cmdline_base = 0;
> long kernel_size, initrd_size;
> PCIBus *pci_bus;
> - PCIDevice *macio;
> + NewWorldMacIOState *macio;
> MACIOIDEState *macio_ide;
> BusState *adb_bus;
> MacIONVRAMState *nvr;
> @@ -166,7 +166,7 @@ static void ppc_core99_init(MachineState *machine)
> void *fw_cfg;
> int machine_arch;
> SysBusDevice *s;
> - DeviceState *dev;
> + DeviceState *dev, *pic_dev;
> int *token = g_new(int, 1);
> hwaddr nvram_addr = 0xFFF04000;
> uint64_t tbfreq;
> @@ -333,10 +333,10 @@ static void ppc_core99_init(MachineState *machine)
>
> pic = g_new0(qemu_irq, 64);
>
> - dev = qdev_create(NULL, TYPE_OPENPIC);
> - qdev_prop_set_uint32(dev, "model", OPENPIC_MODEL_KEYLARGO);
> - qdev_init_nofail(dev);
> - s = SYS_BUS_DEVICE(dev);
> + pic_dev = qdev_create(NULL, TYPE_OPENPIC);
> + qdev_prop_set_uint32(pic_dev, "model", OPENPIC_MODEL_KEYLARGO);
> + qdev_init_nofail(pic_dev);
> + s = SYS_BUS_DEVICE(pic_dev);
> pic_mem = s->mmio[0].memory;
> k = 0;
> for (i = 0; i < smp_cpus; i++) {
> @@ -346,7 +346,7 @@ static void ppc_core99_init(MachineState *machine)
> }
>
> for (i = 0; i < 64; i++) {
> - pic[i] = qdev_get_gpio_in(dev, i);
> + pic[i] = qdev_get_gpio_in(pic_dev, i);
> }
>
> if (PPC_INPUT(env) == PPC_FLAGS_INPUT_970) {
> @@ -369,7 +369,7 @@ static void ppc_core99_init(MachineState *machine)
> }
>
> /* MacIO */
> - macio = pci_create(pci_bus, -1, TYPE_NEWWORLD_MACIO);
> + macio = NEWWORLD_MACIO(pci_create(pci_bus, -1, TYPE_NEWWORLD_MACIO));
> dev = DEVICE(macio);
> qdev_connect_gpio_out(dev, 0, pic[0x19]); /* CUDA */
> qdev_connect_gpio_out(dev, 1, pic[0x24]); /* ESCC-B */
> @@ -379,7 +379,9 @@ static void ppc_core99_init(MachineState *machine)
> qdev_connect_gpio_out(dev, 5, pic[0x0e]); /* IDE */
> qdev_connect_gpio_out(dev, 6, pic[0x03]); /* IDE DMA */
> qdev_prop_set_uint64(dev, "frequency", tbfreq);
> - macio_init(macio, pic_mem);
> + object_property_set_link(OBJECT(macio), OBJECT(pic_dev), "pic",
> + &error_abort);
> + macio_init(PCI_DEVICE(macio), pic_mem);
>
> /* We only emulate 2 out of 3 IDE controllers for now */
> ide_drive_get(hd, ARRAY_SIZE(hd));
> diff --git a/include/hw/misc/macio/macio.h b/include/hw/misc/macio/macio.h
> index 843c114c07..4528282b36 100644
> --- a/include/hw/misc/macio/macio.h
> +++ b/include/hw/misc/macio/macio.h
> @@ -29,6 +29,7 @@
> #include "hw/intc/heathrow_pic.h"
> #include "hw/misc/macio/cuda.h"
> #include "hw/ppc/mac_dbdma.h"
> +#include "hw/ppc/openpic.h"
>
> #define TYPE_MACIO "macio"
> #define MACIO(obj) OBJECT_CHECK(MacIOState, (obj), TYPE_MACIO)
> @@ -42,7 +43,6 @@ typedef struct MacIOState {
> CUDAState cuda;
> DBDMAState dbdma;
> ESCCState escc;
> - MemoryRegion *pic_mem;
> uint64_t frequency;
> } MacIOState;
>
> @@ -70,6 +70,8 @@ typedef struct NewWorldMacIOState {
> /*< private >*/
> MacIOState parent_obj;
> /*< public >*/
> +
> + OpenPICState *pic;
> qemu_irq irqs[7];
> MACIOIDEState ide[2];
> } NewWorldMacIOState;
--
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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2018-02-22 2:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-19 18:19 [Qemu-devel] [PATCH 00/11] macio: remove legacy macio_init() function Mark Cave-Ayland
2018-02-19 18:19 ` [Qemu-devel] [PATCH 01/11] macio: embed DBDMA device directly within macio Mark Cave-Ayland
2018-02-20 3:28 ` David Gibson
2018-02-19 18:19 ` [Qemu-devel] [PATCH 02/11] macio: move ESCC device within the macio device Mark Cave-Ayland
2018-02-20 3:28 ` David Gibson
2018-02-19 18:19 ` [Qemu-devel] [PATCH 03/11] heathrow: QOMify heathrow PIC Mark Cave-Ayland
2018-02-20 3:28 ` David Gibson
2018-02-20 4:18 ` Mark Cave-Ayland
2018-02-20 4:39 ` David Gibson
2018-02-19 18:19 ` [Qemu-devel] [PATCH 04/11] heathrow: convert to trace-events Mark Cave-Ayland
2018-02-20 4:20 ` David Gibson
2018-02-20 4:40 ` Mark Cave-Ayland
2018-02-19 18:19 ` [Qemu-devel] [PATCH 05/11] heathrow: change heathrow_pic_init() to return the heathrow device Mark Cave-Ayland
2018-02-20 4:22 ` David Gibson
2018-02-19 18:19 ` [Qemu-devel] [PATCH 06/11] macio: move macio related structures and defines into separate macio.h file Mark Cave-Ayland
2018-02-20 4:40 ` David Gibson
2018-02-27 23:46 ` Philippe Mathieu-Daudé
2018-02-19 18:19 ` [Qemu-devel] [PATCH 07/11] mac_oldworld: use object link to pass heathrow PIC object to macio Mark Cave-Ayland
2018-02-20 4:42 ` David Gibson
2018-02-19 18:19 ` [Qemu-devel] [PATCH 08/11] openpic: move OpenPIC state and related definitions to openpic.h Mark Cave-Ayland
2018-02-22 2:12 ` David Gibson
2018-02-19 18:19 ` [Qemu-devel] [PATCH 09/11] mac_newworld: use object link to pass OpenPIC object to macio Mark Cave-Ayland
2018-02-22 2:19 ` David Gibson [this message]
2018-02-19 18:19 ` [Qemu-devel] [PATCH 10/11] macio: move setting of CUDA timebase frequency to macio_common_realize() Mark Cave-Ayland
2018-02-22 2:24 ` David Gibson
2018-02-19 18:19 ` [Qemu-devel] [PATCH 11/11] macio: remove macio_init() function Mark Cave-Ayland
2018-02-22 14:12 ` [Qemu-devel] [PATCH 00/11] macio: remove legacy " no-reply
2018-02-23 12:11 ` no-reply
2018-02-23 14:51 ` Mark Cave-Ayland
2018-02-28 2:24 ` David Gibson
2018-02-24 17:18 ` no-reply
2018-02-25 15:24 ` no-reply
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=20180222021924.GC2164@umbus.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.