All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/4] Improve 40p, make AIX 5.1 boot
@ 2019-04-12 21:06 Artyom Tarasenko
  2019-04-12 21:06   ` Artyom Tarasenko
                   ` (3 more replies)
  0 siblings, 4 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-12 21:06 UTC (permalink / raw)
  To: qemu-devel, hpoussin; +Cc: qemu-ppc, Artyom Tarasenko

This series makes various fixes for the -M 40p target.
Particularly now it's possible to boot AIX 5.1 (both from a cdrom
and a hard disk).

The OFW image: 
https://github.com/artyom-tarasenko/openfirmware/releases/download/20190406-AIX-boots/q40pofw-serial.rom

The command line:
qemu-system-ppc -M 40p -bios q40pofw-serial.rom -serial telnet::4441,server -hda aix-hdd.qcow2 -cdrom \
/path/to/aix-5.1-cd1.iso  -vga none -nographic

More info can be found here:
https://tyom.blogspot.com/2019/04/aixprep-under-qemu-how-to.html

Artyom Tarasenko (4):
  lsi53c895a: hide 53c895a registers in 53c810
  40p and prep: implement PCI bus mastering
  target/ppc: improve performance of large BAT invalidations
  hw/isa/i82378.c: use 1900 as a base year

 hw/isa/i82378.c         |  4 +++-
 hw/pci-host/prep.c      | 15 +++++++++++----
 hw/scsi/lsi53c895a.c    | 31 ++++++++++++++++++++++++++-----
 target/ppc/mmu_helper.c |  7 +++++++
 4 files changed, 47 insertions(+), 10 deletions(-)

-- 
2.7.2

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810
@ 2019-04-12 21:06   ` Artyom Tarasenko
  0 siblings, 0 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-12 21:06 UTC (permalink / raw)
  To: qemu-devel, hpoussin; +Cc: qemu-ppc, Artyom Tarasenko, Paolo Bonzini, Fam Zheng

AIX/PReP does access to the aliased IO registers of 53810.
Implement aliasing to make the AIX driver work.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
 hw/scsi/lsi53c895a.c | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index da7239d..08841e0 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -2266,11 +2266,13 @@ static const struct SCSIBusInfo lsi_scsi_info = {
     .cancel = lsi_request_cancelled
 };
 
-static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
+static void lsi_scsi_realize_8xx(PCIDevice *dev, Error **errp, uint16_t type)
 {
     LSIState *s = LSI53C895A(dev);
     DeviceState *d = DEVICE(dev);
     uint8_t *pci_conf;
+    uint64_t mmio_size;
+    MemoryRegion *mr;
 
     pci_conf = dev->config;
 
@@ -2279,13 +2281,21 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     /* Interrupt pin A */
     pci_conf[PCI_INTERRUPT_PIN] = 0x01;
 
-    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
-                          "lsi-mmio", 0x400);
     memory_region_init_io(&s->ram_io, OBJECT(s), &lsi_ram_ops, s,
                           "lsi-ram", 0x2000);
     memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s,
                           "lsi-io", 256);
-
+    if (type == PCI_DEVICE_ID_LSI_53C895A) {
+        mmio_size = 0x400;
+    } else {
+        mr = g_new(MemoryRegion, 1);
+        memory_region_init_alias(mr, OBJECT(d), "lsi-io-alias", &s->io_io,
+                                 0, 0x80);
+        memory_region_add_subregion_overlap(&s->io_io, 0x80, mr, -1);
+        mmio_size = 0x80;
+    }
+    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
+                          "lsi-mmio", mmio_size);
     address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-io");
     qdev_init_gpio_out(d, &s->ext_irq, 1);
 
@@ -2297,6 +2307,16 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
 }
 
+static void lsi_scsi_realize_895A(PCIDevice *dev, Error **errp)
+{
+    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C895A);
+}
+
+static void lsi_scsi_realize_810(PCIDevice *dev, Error **errp)
+{
+    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C810);
+}
+
 static void lsi_scsi_unrealize(DeviceState *dev, Error **errp)
 {
     LSIState *s = LSI53C895A(dev);
@@ -2309,7 +2329,7 @@ static void lsi_class_init(ObjectClass *klass, void *data)
     DeviceClass *dc = DEVICE_CLASS(klass);
     PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
 
-    k->realize = lsi_scsi_realize;
+    k->realize = lsi_scsi_realize_895A;
     k->vendor_id = PCI_VENDOR_ID_LSI_LOGIC;
     k->device_id = PCI_DEVICE_ID_LSI_53C895A;
     k->class_id = PCI_CLASS_STORAGE_SCSI;
@@ -2335,6 +2355,7 @@ static void lsi53c810_class_init(ObjectClass *klass, void *data)
 {
     PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
 
+    k->realize = lsi_scsi_realize_810;
     k->device_id = PCI_DEVICE_ID_LSI_53C810;
 }
 
-- 
2.7.2

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810
@ 2019-04-12 21:06   ` Artyom Tarasenko
  0 siblings, 0 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-12 21:06 UTC (permalink / raw)
  To: qemu-devel, hpoussin; +Cc: Fam Zheng, Paolo Bonzini, qemu-ppc, Artyom Tarasenko

AIX/PReP does access to the aliased IO registers of 53810.
Implement aliasing to make the AIX driver work.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
 hw/scsi/lsi53c895a.c | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index da7239d..08841e0 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -2266,11 +2266,13 @@ static const struct SCSIBusInfo lsi_scsi_info = {
     .cancel = lsi_request_cancelled
 };
 
-static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
+static void lsi_scsi_realize_8xx(PCIDevice *dev, Error **errp, uint16_t type)
 {
     LSIState *s = LSI53C895A(dev);
     DeviceState *d = DEVICE(dev);
     uint8_t *pci_conf;
+    uint64_t mmio_size;
+    MemoryRegion *mr;
 
     pci_conf = dev->config;
 
@@ -2279,13 +2281,21 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     /* Interrupt pin A */
     pci_conf[PCI_INTERRUPT_PIN] = 0x01;
 
-    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
-                          "lsi-mmio", 0x400);
     memory_region_init_io(&s->ram_io, OBJECT(s), &lsi_ram_ops, s,
                           "lsi-ram", 0x2000);
     memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s,
                           "lsi-io", 256);
-
+    if (type == PCI_DEVICE_ID_LSI_53C895A) {
+        mmio_size = 0x400;
+    } else {
+        mr = g_new(MemoryRegion, 1);
+        memory_region_init_alias(mr, OBJECT(d), "lsi-io-alias", &s->io_io,
+                                 0, 0x80);
+        memory_region_add_subregion_overlap(&s->io_io, 0x80, mr, -1);
+        mmio_size = 0x80;
+    }
+    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
+                          "lsi-mmio", mmio_size);
     address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-io");
     qdev_init_gpio_out(d, &s->ext_irq, 1);
 
@@ -2297,6 +2307,16 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
 }
 
+static void lsi_scsi_realize_895A(PCIDevice *dev, Error **errp)
+{
+    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C895A);
+}
+
+static void lsi_scsi_realize_810(PCIDevice *dev, Error **errp)
+{
+    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C810);
+}
+
 static void lsi_scsi_unrealize(DeviceState *dev, Error **errp)
 {
     LSIState *s = LSI53C895A(dev);
@@ -2309,7 +2329,7 @@ static void lsi_class_init(ObjectClass *klass, void *data)
     DeviceClass *dc = DEVICE_CLASS(klass);
     PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
 
-    k->realize = lsi_scsi_realize;
+    k->realize = lsi_scsi_realize_895A;
     k->vendor_id = PCI_VENDOR_ID_LSI_LOGIC;
     k->device_id = PCI_DEVICE_ID_LSI_53C895A;
     k->class_id = PCI_CLASS_STORAGE_SCSI;
@@ -2335,6 +2355,7 @@ static void lsi53c810_class_init(ObjectClass *klass, void *data)
 {
     PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
 
+    k->realize = lsi_scsi_realize_810;
     k->device_id = PCI_DEVICE_ID_LSI_53C810;
 }
 
-- 
2.7.2



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [Qemu-devel] [PATCH 2/4] 40p and prep: implement PCI bus mastering
  2019-04-12 21:06 [Qemu-devel] [PATCH 0/4] Improve 40p, make AIX 5.1 boot Artyom Tarasenko
  2019-04-12 21:06   ` Artyom Tarasenko
@ 2019-04-12 21:06 ` Artyom Tarasenko
  2019-04-14 15:43   ` Hervé Poussineau
  2019-04-12 21:06 ` [Qemu-devel] [PATCH 3/4] target/ppc: improve performance of large BAT invalidations Artyom Tarasenko
  2019-04-12 21:06 ` [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year Artyom Tarasenko
  3 siblings, 1 reply; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-12 21:06 UTC (permalink / raw)
  To: qemu-devel, hpoussin; +Cc: qemu-ppc, Artyom Tarasenko

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
 hw/pci-host/prep.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index 8b9e1fd..94b7465 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -62,6 +62,7 @@ typedef struct PRePPCIState {
     AddressSpace pci_io_as;
     MemoryRegion pci_io;
     MemoryRegion pci_io_non_contiguous;
+    MemoryRegion pci_io_system;
     MemoryRegion pci_memory;
     MemoryRegion pci_intack;
     MemoryRegion bm;
@@ -146,7 +147,7 @@ static uint64_t raven_io_read(void *opaque, hwaddr addr,
     uint8_t buf[4];
 
     addr = raven_io_address(s, addr);
-    address_space_read(&s->pci_io_as, addr + 0x80000000,
+    address_space_read(&s->pci_io_as, addr,
                        MEMTXATTRS_UNSPECIFIED, buf, size);
 
     if (size == 1) {
@@ -178,7 +179,7 @@ static void raven_io_write(void *opaque, hwaddr addr,
         g_assert_not_reached();
     }
 
-    address_space_write(&s->pci_io_as, addr + 0x80000000,
+    address_space_write(&s->pci_io_as, addr,
                         MEMTXATTRS_UNSPECIFIED, buf, size);
 }
 
@@ -276,14 +277,21 @@ static void raven_pcihost_initfn(Object *obj)
     MemoryRegion *address_space_mem = get_system_memory();
     DeviceState *pci_dev;
 
-    memory_region_init(&s->pci_io, obj, "pci-io", 0x3f800000);
+    memory_region_init(&s->pci_io, obj, "pci-io", UINT32_MAX);
     memory_region_init_io(&s->pci_io_non_contiguous, obj, &raven_io_ops, s,
                           "pci-io-non-contiguous", 0x00800000);
     memory_region_init(&s->pci_memory, obj, "pci-memory", 0x3f000000);
     address_space_init(&s->pci_io_as, &s->pci_io, "raven-io");
 
     /* CPU address space */
-    memory_region_add_subregion(address_space_mem, 0x80000000, &s->pci_io);
+    memory_region_add_subregion_overlap(address_space_mem, 0x0,
+                                        &s->pci_io, -1);
+
+    memory_region_init_alias(&s->pci_io_system,  obj, "pci-io-system",
+                             &s->pci_io, 0x0000000, 0x3f800000);
+
+    memory_region_add_subregion(address_space_mem, 0x80000000,
+                                &s->pci_io_system);
     memory_region_add_subregion_overlap(address_space_mem, 0x80000000,
                                         &s->pci_io_non_contiguous, 1);
     memory_region_add_subregion(address_space_mem, 0xc0000000, &s->pci_memory);
-- 
2.7.2

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [Qemu-devel] [PATCH 3/4] target/ppc: improve performance of large BAT invalidations
  2019-04-12 21:06 [Qemu-devel] [PATCH 0/4] Improve 40p, make AIX 5.1 boot Artyom Tarasenko
  2019-04-12 21:06   ` Artyom Tarasenko
  2019-04-12 21:06 ` [Qemu-devel] [PATCH 2/4] 40p and prep: implement PCI bus mastering Artyom Tarasenko
@ 2019-04-12 21:06 ` Artyom Tarasenko
  2019-04-14 15:43   ` Hervé Poussineau
  2019-04-15  0:20     ` David Gibson
  2019-04-12 21:06 ` [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year Artyom Tarasenko
  3 siblings, 2 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-12 21:06 UTC (permalink / raw)
  To: qemu-devel, hpoussin; +Cc: qemu-ppc, Artyom Tarasenko, David Gibson

Performing a complete flush is ~ 100 times faster than flushing
256MiB of 4KiB pages. Set a limit of 1024 pages and perform a complete
flush afterwards.

This patch significantly speeds up AIX 5.1 and NetBSD-ofppc.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
 target/ppc/mmu_helper.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c
index 4a6be4d..d7eed3a 100644
--- a/target/ppc/mmu_helper.c
+++ b/target/ppc/mmu_helper.c
@@ -1809,6 +1809,13 @@ static inline void do_invalidate_BAT(CPUPPCState *env, target_ulong BATu,
 
     base = BATu & ~0x0001FFFF;
     end = base + mask + 0x00020000;
+    if (((end - base) >> TARGET_PAGE_BITS) > 1024) {
+        /* Flushing 1024 4K pages is slower than a complete flush */
+        LOG_BATS("Flush all BATs\n");
+        tlb_flush(CPU(cs));
+        LOG_BATS("Flush done\n");
+        return;
+    }
     LOG_BATS("Flush BAT from " TARGET_FMT_lx " to " TARGET_FMT_lx " ("
              TARGET_FMT_lx ")\n", base, end, mask);
     for (page = base; page != end; page += TARGET_PAGE_SIZE) {
-- 
2.7.2

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
  2019-04-12 21:06 [Qemu-devel] [PATCH 0/4] Improve 40p, make AIX 5.1 boot Artyom Tarasenko
                   ` (2 preceding siblings ...)
  2019-04-12 21:06 ` [Qemu-devel] [PATCH 3/4] target/ppc: improve performance of large BAT invalidations Artyom Tarasenko
@ 2019-04-12 21:06 ` Artyom Tarasenko
  2019-04-14 17:01   ` Hervé Poussineau
  3 siblings, 1 reply; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-12 21:06 UTC (permalink / raw)
  To: qemu-devel, hpoussin; +Cc: qemu-ppc, Artyom Tarasenko

AIX 5.1 expects the base year to be 1900. Adjust accordingly.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
 hw/isa/i82378.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
index a5d67bc..546c928 100644
--- a/hw/isa/i82378.c
+++ b/hw/isa/i82378.c
@@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
     isa = isa_create_simple(isabus, "i82374");
 
     /* timer */
-    isa_create_simple(isabus, TYPE_MC146818_RTC);
+    isa = isa_create(isabus, TYPE_MC146818_RTC);
+    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
+    qdev_init_nofail(DEVICE(isa));
 }
 
 static void i82378_init(Object *obj)
-- 
2.7.2

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810
@ 2019-04-14 15:43     ` Hervé Poussineau
  0 siblings, 0 replies; 24+ messages in thread
From: Hervé Poussineau @ 2019-04-14 15:43 UTC (permalink / raw)
  To: Artyom Tarasenko, qemu-devel; +Cc: qemu-ppc, Paolo Bonzini, Fam Zheng

Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> AIX/PReP does access to the aliased IO registers of 53810.
> Implement aliasing to make the AIX driver work.
> 
> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> ---
>   hw/scsi/lsi53c895a.c | 31 ++++++++++++++++++++++++++-----
>   1 file changed, 26 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
> index da7239d..08841e0 100644
> --- a/hw/scsi/lsi53c895a.c
> +++ b/hw/scsi/lsi53c895a.c
> @@ -2266,11 +2266,13 @@ static const struct SCSIBusInfo lsi_scsi_info = {
>       .cancel = lsi_request_cancelled
>   };
>   
> -static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> +static void lsi_scsi_realize_8xx(PCIDevice *dev, Error **errp, uint16_t type)

You can probably remove this change, and replace it by
uint16_t type = PCI_DEVICE_GET_CLASS(dev)->device_id;

>   {
>       LSIState *s = LSI53C895A(dev);
>       DeviceState *d = DEVICE(dev);
>       uint8_t *pci_conf;
> +    uint64_t mmio_size;
> +    MemoryRegion *mr;
>   
>       pci_conf = dev->config;
>   
> @@ -2279,13 +2281,21 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
>       /* Interrupt pin A */
>       pci_conf[PCI_INTERRUPT_PIN] = 0x01;
>   
> -    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
> -                          "lsi-mmio", 0x400);
>       memory_region_init_io(&s->ram_io, OBJECT(s), &lsi_ram_ops, s,
>                             "lsi-ram", 0x2000);
>       memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s,
>                             "lsi-io", 256);
> -
> +    if (type == PCI_DEVICE_ID_LSI_53C895A) {
> +        mmio_size = 0x400;
> +    } else {
> +        mr = g_new(MemoryRegion, 1);
> +        memory_region_init_alias(mr, OBJECT(d), "lsi-io-alias", &s->io_io,
> +                                 0, 0x80);
> +        memory_region_add_subregion_overlap(&s->io_io, 0x80, mr, -1);
> +        mmio_size = 0x80;
> +    }
> +    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
> +                          "lsi-mmio", mmio_size);
>       address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-io");
>       qdev_init_gpio_out(d, &s->ext_irq, 1);
>   
> @@ -2297,6 +2307,16 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
>       scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
>   }
>   
> +static void lsi_scsi_realize_895A(PCIDevice *dev, Error **errp)
> +{
> +    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C895A);
> +}
> +
> +static void lsi_scsi_realize_810(PCIDevice *dev, Error **errp)
> +{
> +    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C810);
> +}

... so you can also remove these functions
> +
>   static void lsi_scsi_unrealize(DeviceState *dev, Error **errp)
>   {
>       LSIState *s = LSI53C895A(dev);
> @@ -2309,7 +2329,7 @@ static void lsi_class_init(ObjectClass *klass, void *data)
>       DeviceClass *dc = DEVICE_CLASS(klass);
>       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>   
> -    k->realize = lsi_scsi_realize;
> +    k->realize = lsi_scsi_realize_895A;

... so you can also remove this change
>       k->vendor_id = PCI_VENDOR_ID_LSI_LOGIC;
>       k->device_id = PCI_DEVICE_ID_LSI_53C895A;
>       k->class_id = PCI_CLASS_STORAGE_SCSI;
> @@ -2335,6 +2355,7 @@ static void lsi53c810_class_init(ObjectClass *klass, void *data)
>   {
>       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>   
> +    k->realize = lsi_scsi_realize_810;
... and this one.

>       k->device_id = PCI_DEVICE_ID_LSI_53C810;
>   }
>   
> 

Hervé

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810
@ 2019-04-14 15:43     ` Hervé Poussineau
  0 siblings, 0 replies; 24+ messages in thread
From: Hervé Poussineau @ 2019-04-14 15:43 UTC (permalink / raw)
  To: Artyom Tarasenko, qemu-devel; +Cc: Fam Zheng, Paolo Bonzini, qemu-ppc

Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> AIX/PReP does access to the aliased IO registers of 53810.
> Implement aliasing to make the AIX driver work.
> 
> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> ---
>   hw/scsi/lsi53c895a.c | 31 ++++++++++++++++++++++++++-----
>   1 file changed, 26 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
> index da7239d..08841e0 100644
> --- a/hw/scsi/lsi53c895a.c
> +++ b/hw/scsi/lsi53c895a.c
> @@ -2266,11 +2266,13 @@ static const struct SCSIBusInfo lsi_scsi_info = {
>       .cancel = lsi_request_cancelled
>   };
>   
> -static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> +static void lsi_scsi_realize_8xx(PCIDevice *dev, Error **errp, uint16_t type)

You can probably remove this change, and replace it by
uint16_t type = PCI_DEVICE_GET_CLASS(dev)->device_id;

>   {
>       LSIState *s = LSI53C895A(dev);
>       DeviceState *d = DEVICE(dev);
>       uint8_t *pci_conf;
> +    uint64_t mmio_size;
> +    MemoryRegion *mr;
>   
>       pci_conf = dev->config;
>   
> @@ -2279,13 +2281,21 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
>       /* Interrupt pin A */
>       pci_conf[PCI_INTERRUPT_PIN] = 0x01;
>   
> -    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
> -                          "lsi-mmio", 0x400);
>       memory_region_init_io(&s->ram_io, OBJECT(s), &lsi_ram_ops, s,
>                             "lsi-ram", 0x2000);
>       memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s,
>                             "lsi-io", 256);
> -
> +    if (type == PCI_DEVICE_ID_LSI_53C895A) {
> +        mmio_size = 0x400;
> +    } else {
> +        mr = g_new(MemoryRegion, 1);
> +        memory_region_init_alias(mr, OBJECT(d), "lsi-io-alias", &s->io_io,
> +                                 0, 0x80);
> +        memory_region_add_subregion_overlap(&s->io_io, 0x80, mr, -1);
> +        mmio_size = 0x80;
> +    }
> +    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
> +                          "lsi-mmio", mmio_size);
>       address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-io");
>       qdev_init_gpio_out(d, &s->ext_irq, 1);
>   
> @@ -2297,6 +2307,16 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
>       scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
>   }
>   
> +static void lsi_scsi_realize_895A(PCIDevice *dev, Error **errp)
> +{
> +    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C895A);
> +}
> +
> +static void lsi_scsi_realize_810(PCIDevice *dev, Error **errp)
> +{
> +    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C810);
> +}

... so you can also remove these functions
> +
>   static void lsi_scsi_unrealize(DeviceState *dev, Error **errp)
>   {
>       LSIState *s = LSI53C895A(dev);
> @@ -2309,7 +2329,7 @@ static void lsi_class_init(ObjectClass *klass, void *data)
>       DeviceClass *dc = DEVICE_CLASS(klass);
>       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>   
> -    k->realize = lsi_scsi_realize;
> +    k->realize = lsi_scsi_realize_895A;

... so you can also remove this change
>       k->vendor_id = PCI_VENDOR_ID_LSI_LOGIC;
>       k->device_id = PCI_DEVICE_ID_LSI_53C895A;
>       k->class_id = PCI_CLASS_STORAGE_SCSI;
> @@ -2335,6 +2355,7 @@ static void lsi53c810_class_init(ObjectClass *klass, void *data)
>   {
>       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>   
> +    k->realize = lsi_scsi_realize_810;
... and this one.

>       k->device_id = PCI_DEVICE_ID_LSI_53C810;
>   }
>   
> 

Hervé


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 2/4] 40p and prep: implement PCI bus mastering
  2019-04-12 21:06 ` [Qemu-devel] [PATCH 2/4] 40p and prep: implement PCI bus mastering Artyom Tarasenko
@ 2019-04-14 15:43   ` Hervé Poussineau
  0 siblings, 0 replies; 24+ messages in thread
From: Hervé Poussineau @ 2019-04-14 15:43 UTC (permalink / raw)
  To: Artyom Tarasenko, qemu-devel; +Cc: qemu-ppc

Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> ---
>   hw/pci-host/prep.c | 16 ++++++++++++----
>   1 file changed, 12 insertions(+), 4 deletions(-)

Reviewed-by: Hervé Poussineau <hpoussin@reactos.org>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] target/ppc: improve performance of large BAT invalidations
  2019-04-12 21:06 ` [Qemu-devel] [PATCH 3/4] target/ppc: improve performance of large BAT invalidations Artyom Tarasenko
@ 2019-04-14 15:43   ` Hervé Poussineau
  2019-04-15  0:20     ` David Gibson
  1 sibling, 0 replies; 24+ messages in thread
From: Hervé Poussineau @ 2019-04-14 15:43 UTC (permalink / raw)
  To: Artyom Tarasenko, qemu-devel; +Cc: qemu-ppc, David Gibson

Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> Performing a complete flush is ~ 100 times faster than flushing
> 256MiB of 4KiB pages. Set a limit of 1024 pages and perform a complete
> flush afterwards.
> 
> This patch significantly speeds up AIX 5.1 and NetBSD-ofppc.
> 
> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> ---
>   target/ppc/mmu_helper.c | 7 +++++++
>   1 file changed, 7 insertions(+)

Reviewed-by: Hervé Poussineau <hpoussin@reactos.org>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
  2019-04-12 21:06 ` [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year Artyom Tarasenko
@ 2019-04-14 17:01   ` Hervé Poussineau
  2019-04-14 18:53       ` Artyom Tarasenko
  0 siblings, 1 reply; 24+ messages in thread
From: Hervé Poussineau @ 2019-04-14 17:01 UTC (permalink / raw)
  To: Artyom Tarasenko, qemu-devel; +Cc: qemu-ppc

Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> AIX 5.1 expects the base year to be 1900. Adjust accordingly.
> 
> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> ---
>   hw/isa/i82378.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
> index a5d67bc..546c928 100644
> --- a/hw/isa/i82378.c
> +++ b/hw/isa/i82378.c
> @@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
>       isa = isa_create_simple(isabus, "i82374");
>   
>       /* timer */
> -    isa_create_simple(isabus, TYPE_MC146818_RTC);
> +    isa = isa_create(isabus, TYPE_MC146818_RTC);
> +    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
> +    qdev_init_nofail(DEVICE(isa));

I am not sure the base_year should be hardcoded in i82378. I can assume other machines with a i82378 can have another base_year.
Maybe you can you add a base_year property to i82378, and forward it to mc146818 with object_property_add_alias?
Then, change 40p machine to set it to 1900, without changing it for prep machine.

>   }
>   
>   static void i82378_init(Object *obj)
> 

Hervé

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810
@ 2019-04-14 18:36       ` Artyom Tarasenko
  0 siblings, 0 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-14 18:36 UTC (permalink / raw)
  To: Hervé Poussineau
  Cc: qemu-devel, open list:PReP, Paolo Bonzini, Fam Zheng

On Sun, Apr 14, 2019 at 5:43 PM Hervé Poussineau <hpoussin@reactos.org> wrote:
>
> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> > AIX/PReP does access to the aliased IO registers of 53810.
> > Implement aliasing to make the AIX driver work.
> >
> > Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> > ---
> >   hw/scsi/lsi53c895a.c | 31 ++++++++++++++++++++++++++-----
> >   1 file changed, 26 insertions(+), 5 deletions(-)
> >
> > diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
> > index da7239d..08841e0 100644
> > --- a/hw/scsi/lsi53c895a.c
> > +++ b/hw/scsi/lsi53c895a.c
> > @@ -2266,11 +2266,13 @@ static const struct SCSIBusInfo lsi_scsi_info = {
> >       .cancel = lsi_request_cancelled
> >   };
> >
> > -static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> > +static void lsi_scsi_realize_8xx(PCIDevice *dev, Error **errp, uint16_t type)
>
> You can probably remove this change, and replace it by
> uint16_t type = PCI_DEVICE_GET_CLASS(dev)->device_id;

Brilliant! Will do in V2, thainks.

Regards,
Artyom
> >   {
> >       LSIState *s = LSI53C895A(dev);
> >       DeviceState *d = DEVICE(dev);
> >       uint8_t *pci_conf;
> > +    uint64_t mmio_size;
> > +    MemoryRegion *mr;
> >
> >       pci_conf = dev->config;
> >
> > @@ -2279,13 +2281,21 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> >       /* Interrupt pin A */
> >       pci_conf[PCI_INTERRUPT_PIN] = 0x01;
> >
> > -    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
> > -                          "lsi-mmio", 0x400);
> >       memory_region_init_io(&s->ram_io, OBJECT(s), &lsi_ram_ops, s,
> >                             "lsi-ram", 0x2000);
> >       memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s,
> >                             "lsi-io", 256);
> > -
> > +    if (type == PCI_DEVICE_ID_LSI_53C895A) {
> > +        mmio_size = 0x400;
> > +    } else {
> > +        mr = g_new(MemoryRegion, 1);
> > +        memory_region_init_alias(mr, OBJECT(d), "lsi-io-alias", &s->io_io,
> > +                                 0, 0x80);
> > +        memory_region_add_subregion_overlap(&s->io_io, 0x80, mr, -1);
> > +        mmio_size = 0x80;
> > +    }
> > +    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
> > +                          "lsi-mmio", mmio_size);
> >       address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-io");
> >       qdev_init_gpio_out(d, &s->ext_irq, 1);
> >
> > @@ -2297,6 +2307,16 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> >       scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
> >   }
> >
> > +static void lsi_scsi_realize_895A(PCIDevice *dev, Error **errp)
> > +{
> > +    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C895A);
> > +}
> > +
> > +static void lsi_scsi_realize_810(PCIDevice *dev, Error **errp)
> > +{
> > +    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C810);
> > +}
>
> ... so you can also remove these functions
> > +
> >   static void lsi_scsi_unrealize(DeviceState *dev, Error **errp)
> >   {
> >       LSIState *s = LSI53C895A(dev);
> > @@ -2309,7 +2329,7 @@ static void lsi_class_init(ObjectClass *klass, void *data)
> >       DeviceClass *dc = DEVICE_CLASS(klass);
> >       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> >
> > -    k->realize = lsi_scsi_realize;
> > +    k->realize = lsi_scsi_realize_895A;
>
> ... so you can also remove this change
> >       k->vendor_id = PCI_VENDOR_ID_LSI_LOGIC;
> >       k->device_id = PCI_DEVICE_ID_LSI_53C895A;
> >       k->class_id = PCI_CLASS_STORAGE_SCSI;
> > @@ -2335,6 +2355,7 @@ static void lsi53c810_class_init(ObjectClass *klass, void *data)
> >   {
> >       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> >
> > +    k->realize = lsi_scsi_realize_810;
> ... and this one.
>
> >       k->device_id = PCI_DEVICE_ID_LSI_53C810;
> >   }
> >
> >
>
> Hervé



-- 
Regards,
Artyom Tarasenko

SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810
@ 2019-04-14 18:36       ` Artyom Tarasenko
  0 siblings, 0 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-14 18:36 UTC (permalink / raw)
  To: Hervé Poussineau
  Cc: Fam Zheng, Paolo Bonzini, open list:PReP, qemu-devel

On Sun, Apr 14, 2019 at 5:43 PM Hervé Poussineau <hpoussin@reactos.org> wrote:
>
> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> > AIX/PReP does access to the aliased IO registers of 53810.
> > Implement aliasing to make the AIX driver work.
> >
> > Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> > ---
> >   hw/scsi/lsi53c895a.c | 31 ++++++++++++++++++++++++++-----
> >   1 file changed, 26 insertions(+), 5 deletions(-)
> >
> > diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
> > index da7239d..08841e0 100644
> > --- a/hw/scsi/lsi53c895a.c
> > +++ b/hw/scsi/lsi53c895a.c
> > @@ -2266,11 +2266,13 @@ static const struct SCSIBusInfo lsi_scsi_info = {
> >       .cancel = lsi_request_cancelled
> >   };
> >
> > -static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> > +static void lsi_scsi_realize_8xx(PCIDevice *dev, Error **errp, uint16_t type)
>
> You can probably remove this change, and replace it by
> uint16_t type = PCI_DEVICE_GET_CLASS(dev)->device_id;

Brilliant! Will do in V2, thainks.

Regards,
Artyom
> >   {
> >       LSIState *s = LSI53C895A(dev);
> >       DeviceState *d = DEVICE(dev);
> >       uint8_t *pci_conf;
> > +    uint64_t mmio_size;
> > +    MemoryRegion *mr;
> >
> >       pci_conf = dev->config;
> >
> > @@ -2279,13 +2281,21 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> >       /* Interrupt pin A */
> >       pci_conf[PCI_INTERRUPT_PIN] = 0x01;
> >
> > -    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
> > -                          "lsi-mmio", 0x400);
> >       memory_region_init_io(&s->ram_io, OBJECT(s), &lsi_ram_ops, s,
> >                             "lsi-ram", 0x2000);
> >       memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s,
> >                             "lsi-io", 256);
> > -
> > +    if (type == PCI_DEVICE_ID_LSI_53C895A) {
> > +        mmio_size = 0x400;
> > +    } else {
> > +        mr = g_new(MemoryRegion, 1);
> > +        memory_region_init_alias(mr, OBJECT(d), "lsi-io-alias", &s->io_io,
> > +                                 0, 0x80);
> > +        memory_region_add_subregion_overlap(&s->io_io, 0x80, mr, -1);
> > +        mmio_size = 0x80;
> > +    }
> > +    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
> > +                          "lsi-mmio", mmio_size);
> >       address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-io");
> >       qdev_init_gpio_out(d, &s->ext_irq, 1);
> >
> > @@ -2297,6 +2307,16 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> >       scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
> >   }
> >
> > +static void lsi_scsi_realize_895A(PCIDevice *dev, Error **errp)
> > +{
> > +    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C895A);
> > +}
> > +
> > +static void lsi_scsi_realize_810(PCIDevice *dev, Error **errp)
> > +{
> > +    lsi_scsi_realize_8xx(dev, errp, PCI_DEVICE_ID_LSI_53C810);
> > +}
>
> ... so you can also remove these functions
> > +
> >   static void lsi_scsi_unrealize(DeviceState *dev, Error **errp)
> >   {
> >       LSIState *s = LSI53C895A(dev);
> > @@ -2309,7 +2329,7 @@ static void lsi_class_init(ObjectClass *klass, void *data)
> >       DeviceClass *dc = DEVICE_CLASS(klass);
> >       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> >
> > -    k->realize = lsi_scsi_realize;
> > +    k->realize = lsi_scsi_realize_895A;
>
> ... so you can also remove this change
> >       k->vendor_id = PCI_VENDOR_ID_LSI_LOGIC;
> >       k->device_id = PCI_DEVICE_ID_LSI_53C895A;
> >       k->class_id = PCI_CLASS_STORAGE_SCSI;
> > @@ -2335,6 +2355,7 @@ static void lsi53c810_class_init(ObjectClass *klass, void *data)
> >   {
> >       PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
> >
> > +    k->realize = lsi_scsi_realize_810;
> ... and this one.
>
> >       k->device_id = PCI_DEVICE_ID_LSI_53C810;
> >   }
> >
> >
>
> Hervé



-- 
Regards,
Artyom Tarasenko

SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
@ 2019-04-14 18:53       ` Artyom Tarasenko
  0 siblings, 0 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-14 18:53 UTC (permalink / raw)
  To: Hervé Poussineau; +Cc: qemu-devel, open list:PReP

On Sun, Apr 14, 2019 at 7:01 PM Hervé Poussineau <hpoussin@reactos.org> wrote:
>
> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> > AIX 5.1 expects the base year to be 1900. Adjust accordingly.
> >
> > Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> > ---
> >   hw/isa/i82378.c | 4 +++-
> >   1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
> > index a5d67bc..546c928 100644
> > --- a/hw/isa/i82378.c
> > +++ b/hw/isa/i82378.c
> > @@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
> >       isa = isa_create_simple(isabus, "i82374");
> >
> >       /* timer */
> > -    isa_create_simple(isabus, TYPE_MC146818_RTC);
> > +    isa = isa_create(isabus, TYPE_MC146818_RTC);
> > +    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
> > +    qdev_init_nofail(DEVICE(isa));
>
> I am not sure the base_year should be hardcoded in i82378. I can assume other machines with a i82378 can have another base_year.

I doubt it to be honest. How would it work in the hardware? Is there a
pin which would switch a year?
I do believe the different i823xx may have the different base years though.

> Maybe you can you add a base_year property to i82378, and forward it to mc146818 with object_property_add_alias?
> Then, change 40p machine to set it to 1900, without changing it for prep machine.

Were you not going to drop the -M prep ? Because I sort of dropped the
support for it in OFW.
I had a branch were I added some registers to -M prep  enough that it
would be able to turn itself out as a PowerStack II Utah,
but then again I couldn't find any advantage of having two PReP machines.
AFAIK, the only OS which can run on Powerstack, but not on 40p is Motorola AIX.
But since we can have IBM AIX, I don't see why would we want to keep -M prep.

On the other hand, if you plan to revive it, I'll think about adding
the support for it to OFW.
PowerStack had a Cirrus VGA which we already have.

> >   }
> >
> >   static void i82378_init(Object *obj)
> >
>
> Hervé



-- 
Regards,
Artyom Tarasenko

SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
@ 2019-04-14 18:53       ` Artyom Tarasenko
  0 siblings, 0 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-14 18:53 UTC (permalink / raw)
  To: Hervé Poussineau; +Cc: open list:PReP, qemu-devel

On Sun, Apr 14, 2019 at 7:01 PM Hervé Poussineau <hpoussin@reactos.org> wrote:
>
> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> > AIX 5.1 expects the base year to be 1900. Adjust accordingly.
> >
> > Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> > ---
> >   hw/isa/i82378.c | 4 +++-
> >   1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
> > index a5d67bc..546c928 100644
> > --- a/hw/isa/i82378.c
> > +++ b/hw/isa/i82378.c
> > @@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
> >       isa = isa_create_simple(isabus, "i82374");
> >
> >       /* timer */
> > -    isa_create_simple(isabus, TYPE_MC146818_RTC);
> > +    isa = isa_create(isabus, TYPE_MC146818_RTC);
> > +    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
> > +    qdev_init_nofail(DEVICE(isa));
>
> I am not sure the base_year should be hardcoded in i82378. I can assume other machines with a i82378 can have another base_year.

I doubt it to be honest. How would it work in the hardware? Is there a
pin which would switch a year?
I do believe the different i823xx may have the different base years though.

> Maybe you can you add a base_year property to i82378, and forward it to mc146818 with object_property_add_alias?
> Then, change 40p machine to set it to 1900, without changing it for prep machine.

Were you not going to drop the -M prep ? Because I sort of dropped the
support for it in OFW.
I had a branch were I added some registers to -M prep  enough that it
would be able to turn itself out as a PowerStack II Utah,
but then again I couldn't find any advantage of having two PReP machines.
AFAIK, the only OS which can run on Powerstack, but not on 40p is Motorola AIX.
But since we can have IBM AIX, I don't see why would we want to keep -M prep.

On the other hand, if you plan to revive it, I'll think about adding
the support for it to OFW.
PowerStack had a Cirrus VGA which we already have.

> >   }
> >
> >   static void i82378_init(Object *obj)
> >
>
> Hervé



-- 
Regards,
Artyom Tarasenko

SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
@ 2019-04-14 21:24         ` Hervé Poussineau
  0 siblings, 0 replies; 24+ messages in thread
From: Hervé Poussineau @ 2019-04-14 21:24 UTC (permalink / raw)
  To: Artyom Tarasenko; +Cc: qemu-devel, open list:PReP

Le 14/04/2019 à 20:53, Artyom Tarasenko a écrit :
> On Sun, Apr 14, 2019 at 7:01 PM Hervé Poussineau <hpoussin@reactos.org> wrote:
>>
>> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
>>> AIX 5.1 expects the base year to be 1900. Adjust accordingly.
>>>
>>> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
>>> ---
>>>    hw/isa/i82378.c | 4 +++-
>>>    1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
>>> index a5d67bc..546c928 100644
>>> --- a/hw/isa/i82378.c
>>> +++ b/hw/isa/i82378.c
>>> @@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
>>>        isa = isa_create_simple(isabus, "i82374");
>>>
>>>        /* timer */
>>> -    isa_create_simple(isabus, TYPE_MC146818_RTC);
>>> +    isa = isa_create(isabus, TYPE_MC146818_RTC);
>>> +    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
>>> +    qdev_init_nofail(DEVICE(isa));
>>
>> I am not sure the base_year should be hardcoded in i82378. I can assume other machines with a i82378 can have another base_year.
> 
> I doubt it to be honest. How would it work in the hardware? Is there a
> pin which would switch a year?
> I do believe the different i823xx may have the different base years though.

OK, I don't really know. So, your patch looks fine.

Reviewed-by: Hervé Poussineau <hpoussin@reactos.org>

> 
>> Maybe you can you add a base_year property to i82378, and forward it to mc146818 with object_property_add_alias?
>> Then, change 40p machine to set it to 1900, without changing it for prep machine.
> 
> Were you not going to drop the -M prep ? Because I sort of dropped the
> support for it in OFW.
> I had a branch were I added some registers to -M prep  enough that it
> would be able to turn itself out as a PowerStack II Utah,
> but then again I couldn't find any advantage of having two PReP machines.
> AFAIK, the only OS which can run on Powerstack, but not on 40p is Motorola AIX.
> But since we can have IBM AIX, I don't see why would we want to keep -M prep.

I really want to drop support for prep. But, as long as prep is in code base, we shouldn't regress it too much.

> 
> On the other hand, if you plan to revive it, I'll think about adding
> the support for it to OFW.
> PowerStack had a Cirrus VGA which we already have.
> 
>>>    }
>>>
>>>    static void i82378_init(Object *obj)
>>>
>>
>> Hervé
> 
> 
> 

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
@ 2019-04-14 21:24         ` Hervé Poussineau
  0 siblings, 0 replies; 24+ messages in thread
From: Hervé Poussineau @ 2019-04-14 21:24 UTC (permalink / raw)
  To: Artyom Tarasenko; +Cc: open list:PReP, qemu-devel

Le 14/04/2019 à 20:53, Artyom Tarasenko a écrit :
> On Sun, Apr 14, 2019 at 7:01 PM Hervé Poussineau <hpoussin@reactos.org> wrote:
>>
>> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
>>> AIX 5.1 expects the base year to be 1900. Adjust accordingly.
>>>
>>> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
>>> ---
>>>    hw/isa/i82378.c | 4 +++-
>>>    1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
>>> index a5d67bc..546c928 100644
>>> --- a/hw/isa/i82378.c
>>> +++ b/hw/isa/i82378.c
>>> @@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error **errp)
>>>        isa = isa_create_simple(isabus, "i82374");
>>>
>>>        /* timer */
>>> -    isa_create_simple(isabus, TYPE_MC146818_RTC);
>>> +    isa = isa_create(isabus, TYPE_MC146818_RTC);
>>> +    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
>>> +    qdev_init_nofail(DEVICE(isa));
>>
>> I am not sure the base_year should be hardcoded in i82378. I can assume other machines with a i82378 can have another base_year.
> 
> I doubt it to be honest. How would it work in the hardware? Is there a
> pin which would switch a year?
> I do believe the different i823xx may have the different base years though.

OK, I don't really know. So, your patch looks fine.

Reviewed-by: Hervé Poussineau <hpoussin@reactos.org>

> 
>> Maybe you can you add a base_year property to i82378, and forward it to mc146818 with object_property_add_alias?
>> Then, change 40p machine to set it to 1900, without changing it for prep machine.
> 
> Were you not going to drop the -M prep ? Because I sort of dropped the
> support for it in OFW.
> I had a branch were I added some registers to -M prep  enough that it
> would be able to turn itself out as a PowerStack II Utah,
> but then again I couldn't find any advantage of having two PReP machines.
> AFAIK, the only OS which can run on Powerstack, but not on 40p is Motorola AIX.
> But since we can have IBM AIX, I don't see why would we want to keep -M prep.

I really want to drop support for prep. But, as long as prep is in code base, we shouldn't regress it too much.

> 
> On the other hand, if you plan to revive it, I'll think about adding
> the support for it to OFW.
> PowerStack had a Cirrus VGA which we already have.
> 
>>>    }
>>>
>>>    static void i82378_init(Object *obj)
>>>
>>
>> Hervé
> 
> 
> 



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] target/ppc: improve performance of large BAT invalidations
@ 2019-04-15  0:20     ` David Gibson
  0 siblings, 0 replies; 24+ messages in thread
From: David Gibson @ 2019-04-15  0:20 UTC (permalink / raw)
  To: Artyom Tarasenko; +Cc: qemu-devel, hpoussin, qemu-ppc

[-- Attachment #1: Type: text/plain, Size: 1491 bytes --]

On Fri, Apr 12, 2019 at 11:06:17PM +0200, Artyom Tarasenko wrote:
> Performing a complete flush is ~ 100 times faster than flushing
> 256MiB of 4KiB pages. Set a limit of 1024 pages and perform a complete
> flush afterwards.
> 
> This patch significantly speeds up AIX 5.1 and NetBSD-ofppc.
> 
> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>

LGTM, applied to ppc-for-4.1.

> ---
>  target/ppc/mmu_helper.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c
> index 4a6be4d..d7eed3a 100644
> --- a/target/ppc/mmu_helper.c
> +++ b/target/ppc/mmu_helper.c
> @@ -1809,6 +1809,13 @@ static inline void do_invalidate_BAT(CPUPPCState *env, target_ulong BATu,
>  
>      base = BATu & ~0x0001FFFF;
>      end = base + mask + 0x00020000;
> +    if (((end - base) >> TARGET_PAGE_BITS) > 1024) {
> +        /* Flushing 1024 4K pages is slower than a complete flush */
> +        LOG_BATS("Flush all BATs\n");
> +        tlb_flush(CPU(cs));
> +        LOG_BATS("Flush done\n");
> +        return;
> +    }
>      LOG_BATS("Flush BAT from " TARGET_FMT_lx " to " TARGET_FMT_lx " ("
>               TARGET_FMT_lx ")\n", base, end, mask);
>      for (page = base; page != end; page += TARGET_PAGE_SIZE) {

-- 
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 --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] target/ppc: improve performance of large BAT invalidations
@ 2019-04-15  0:20     ` David Gibson
  0 siblings, 0 replies; 24+ messages in thread
From: David Gibson @ 2019-04-15  0:20 UTC (permalink / raw)
  To: Artyom Tarasenko; +Cc: qemu-ppc, hpoussin, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1491 bytes --]

On Fri, Apr 12, 2019 at 11:06:17PM +0200, Artyom Tarasenko wrote:
> Performing a complete flush is ~ 100 times faster than flushing
> 256MiB of 4KiB pages. Set a limit of 1024 pages and perform a complete
> flush afterwards.
> 
> This patch significantly speeds up AIX 5.1 and NetBSD-ofppc.
> 
> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>

LGTM, applied to ppc-for-4.1.

> ---
>  target/ppc/mmu_helper.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c
> index 4a6be4d..d7eed3a 100644
> --- a/target/ppc/mmu_helper.c
> +++ b/target/ppc/mmu_helper.c
> @@ -1809,6 +1809,13 @@ static inline void do_invalidate_BAT(CPUPPCState *env, target_ulong BATu,
>  
>      base = BATu & ~0x0001FFFF;
>      end = base + mask + 0x00020000;
> +    if (((end - base) >> TARGET_PAGE_BITS) > 1024) {
> +        /* Flushing 1024 4K pages is slower than a complete flush */
> +        LOG_BATS("Flush all BATs\n");
> +        tlb_flush(CPU(cs));
> +        LOG_BATS("Flush done\n");
> +        return;
> +    }
>      LOG_BATS("Flush BAT from " TARGET_FMT_lx " to " TARGET_FMT_lx " ("
>               TARGET_FMT_lx ")\n", base, end, mask);
>      for (page = base; page != end; page += TARGET_PAGE_SIZE) {

-- 
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 --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810
@ 2019-04-15  9:21         ` Paolo Bonzini
  0 siblings, 0 replies; 24+ messages in thread
From: Paolo Bonzini @ 2019-04-15  9:21 UTC (permalink / raw)
  To: Artyom Tarasenko, Hervé Poussineau
  Cc: qemu-devel, open list:PReP, Fam Zheng

On 14/04/19 20:36, Artyom Tarasenko wrote:
>> You can probably remove this change, and replace it by
>> uint16_t type = PCI_DEVICE_GET_CLASS(dev)->device_id;
> Brilliant! Will do in V2, thainks.

Either that, or you could keep the current structure and make mmio_size
the last parameter of lsi_scsi_realize.

Paolo

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810
@ 2019-04-15  9:21         ` Paolo Bonzini
  0 siblings, 0 replies; 24+ messages in thread
From: Paolo Bonzini @ 2019-04-15  9:21 UTC (permalink / raw)
  To: Artyom Tarasenko, Hervé Poussineau
  Cc: Fam Zheng, open list:PReP, qemu-devel

On 14/04/19 20:36, Artyom Tarasenko wrote:
>> You can probably remove this change, and replace it by
>> uint16_t type = PCI_DEVICE_GET_CLASS(dev)->device_id;
> Brilliant! Will do in V2, thainks.

Either that, or you could keep the current structure and make mmio_size
the last parameter of lsi_scsi_realize.

Paolo


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
  2019-04-14 21:24         ` Hervé Poussineau
  (?)
@ 2019-04-15 10:36         ` Philippe Mathieu-Daudé
  2019-04-15 10:45             ` Artyom Tarasenko
  -1 siblings, 1 reply; 24+ messages in thread
From: Philippe Mathieu-Daudé @ 2019-04-15 10:36 UTC (permalink / raw)
  To: Hervé Poussineau, Artyom Tarasenko; +Cc: open list:PReP, qemu-devel

On 4/14/19 11:24 PM, Hervé Poussineau wrote:
> Le 14/04/2019 à 20:53, Artyom Tarasenko a écrit :
>> On Sun, Apr 14, 2019 at 7:01 PM Hervé Poussineau
>> <hpoussin@reactos.org> wrote:
>>>
>>> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
>>>> AIX 5.1 expects the base year to be 1900. Adjust accordingly.
>>>>
>>>> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
>>>> ---
>>>>    hw/isa/i82378.c | 4 +++-
>>>>    1 file changed, 3 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
>>>> index a5d67bc..546c928 100644
>>>> --- a/hw/isa/i82378.c
>>>> +++ b/hw/isa/i82378.c
>>>> @@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error
>>>> **errp)
>>>>        isa = isa_create_simple(isabus, "i82374");
>>>>
>>>>        /* timer */
>>>> -    isa_create_simple(isabus, TYPE_MC146818_RTC);
>>>> +    isa = isa_create(isabus, TYPE_MC146818_RTC);
>>>> +    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
>>>> +    qdev_init_nofail(DEVICE(isa));
>>>
>>> I am not sure the base_year should be hardcoded in i82378. I can
>>> assume other machines with a i82378 can have another base_year.
>>
>> I doubt it to be honest. How would it work in the hardware? Is there a
>> pin which would switch a year?
>> I do believe the different i823xx may have the different base years
>> though.

There is no RTC on the i82378, this should be moved to the board code
and set the date there. Do you want me to send this patch?

Regards,

Phil.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
@ 2019-04-15 10:45             ` Artyom Tarasenko
  0 siblings, 0 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-15 10:45 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Hervé Poussineau, open list:PReP, qemu-devel

On Mon, Apr 15, 2019 at 12:36 PM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> On 4/14/19 11:24 PM, Hervé Poussineau wrote:
> > Le 14/04/2019 à 20:53, Artyom Tarasenko a écrit :
> >> On Sun, Apr 14, 2019 at 7:01 PM Hervé Poussineau
> >> <hpoussin@reactos.org> wrote:
> >>>
> >>> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> >>>> AIX 5.1 expects the base year to be 1900. Adjust accordingly.
> >>>>
> >>>> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> >>>> ---
> >>>>    hw/isa/i82378.c | 4 +++-
> >>>>    1 file changed, 3 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
> >>>> index a5d67bc..546c928 100644
> >>>> --- a/hw/isa/i82378.c
> >>>> +++ b/hw/isa/i82378.c
> >>>> @@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error
> >>>> **errp)
> >>>>        isa = isa_create_simple(isabus, "i82374");
> >>>>
> >>>>        /* timer */
> >>>> -    isa_create_simple(isabus, TYPE_MC146818_RTC);
> >>>> +    isa = isa_create(isabus, TYPE_MC146818_RTC);
> >>>> +    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
> >>>> +    qdev_init_nofail(DEVICE(isa));
> >>>
> >>> I am not sure the base_year should be hardcoded in i82378. I can
> >>> assume other machines with a i82378 can have another base_year.
> >>
> >> I doubt it to be honest. How would it work in the hardware? Is there a
> >> pin which would switch a year?
> >> I do believe the different i823xx may have the different base years
> >> though.
>
> There is no RTC on the i82378, this should be moved to the board code
> and set the date there. Do you want me to send this patch?

Please do. I won't have a chance to get to it till the next weekend.

Artyom

-- 
Regards,
Artyom Tarasenko

SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year
@ 2019-04-15 10:45             ` Artyom Tarasenko
  0 siblings, 0 replies; 24+ messages in thread
From: Artyom Tarasenko @ 2019-04-15 10:45 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: open list:PReP, Hervé Poussineau, qemu-devel

On Mon, Apr 15, 2019 at 12:36 PM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> On 4/14/19 11:24 PM, Hervé Poussineau wrote:
> > Le 14/04/2019 à 20:53, Artyom Tarasenko a écrit :
> >> On Sun, Apr 14, 2019 at 7:01 PM Hervé Poussineau
> >> <hpoussin@reactos.org> wrote:
> >>>
> >>> Le 12/04/2019 à 23:06, Artyom Tarasenko a écrit :
> >>>> AIX 5.1 expects the base year to be 1900. Adjust accordingly.
> >>>>
> >>>> Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
> >>>> ---
> >>>>    hw/isa/i82378.c | 4 +++-
> >>>>    1 file changed, 3 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c
> >>>> index a5d67bc..546c928 100644
> >>>> --- a/hw/isa/i82378.c
> >>>> +++ b/hw/isa/i82378.c
> >>>> @@ -107,7 +107,9 @@ static void i82378_realize(PCIDevice *pci, Error
> >>>> **errp)
> >>>>        isa = isa_create_simple(isabus, "i82374");
> >>>>
> >>>>        /* timer */
> >>>> -    isa_create_simple(isabus, TYPE_MC146818_RTC);
> >>>> +    isa = isa_create(isabus, TYPE_MC146818_RTC);
> >>>> +    qdev_prop_set_int32(DEVICE(isa), "base_year", 1900);
> >>>> +    qdev_init_nofail(DEVICE(isa));
> >>>
> >>> I am not sure the base_year should be hardcoded in i82378. I can
> >>> assume other machines with a i82378 can have another base_year.
> >>
> >> I doubt it to be honest. How would it work in the hardware? Is there a
> >> pin which would switch a year?
> >> I do believe the different i823xx may have the different base years
> >> though.
>
> There is no RTC on the i82378, this should be moved to the board code
> and set the date there. Do you want me to send this patch?

Please do. I won't have a chance to get to it till the next weekend.

Artyom

-- 
Regards,
Artyom Tarasenko

SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2019-04-15 10:46 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-12 21:06 [Qemu-devel] [PATCH 0/4] Improve 40p, make AIX 5.1 boot Artyom Tarasenko
2019-04-12 21:06 ` [Qemu-devel] [PATCH 1/4] lsi53c895a: hide 53c895a registers in 53c810 Artyom Tarasenko
2019-04-12 21:06   ` Artyom Tarasenko
2019-04-14 15:43   ` Hervé Poussineau
2019-04-14 15:43     ` Hervé Poussineau
2019-04-14 18:36     ` Artyom Tarasenko
2019-04-14 18:36       ` Artyom Tarasenko
2019-04-15  9:21       ` Paolo Bonzini
2019-04-15  9:21         ` Paolo Bonzini
2019-04-12 21:06 ` [Qemu-devel] [PATCH 2/4] 40p and prep: implement PCI bus mastering Artyom Tarasenko
2019-04-14 15:43   ` Hervé Poussineau
2019-04-12 21:06 ` [Qemu-devel] [PATCH 3/4] target/ppc: improve performance of large BAT invalidations Artyom Tarasenko
2019-04-14 15:43   ` Hervé Poussineau
2019-04-15  0:20   ` David Gibson
2019-04-15  0:20     ` David Gibson
2019-04-12 21:06 ` [Qemu-devel] [PATCH 4/4] hw/isa/i82378.c: use 1900 as a base year Artyom Tarasenko
2019-04-14 17:01   ` Hervé Poussineau
2019-04-14 18:53     ` Artyom Tarasenko
2019-04-14 18:53       ` Artyom Tarasenko
2019-04-14 21:24       ` Hervé Poussineau
2019-04-14 21:24         ` Hervé Poussineau
2019-04-15 10:36         ` Philippe Mathieu-Daudé
2019-04-15 10:45           ` Artyom Tarasenko
2019-04-15 10:45             ` Artyom Tarasenko

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.