qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15
@ 2012-03-15 12:14 Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 01/16] Bad zero comparison for sas_ss_flags on powerpc Alexander Graf
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, aurelien

Hi Blue / Aurelien,

This is my current patch queue for ppc. Please pull.

Alex


The following changes since commit ae7d54d489540b49b7c13a7df7ddc220588a2ced:
  Andreas Färber (1):
        target-lm32/microblaze: Drop second CPU{LM32, MB}State typedef

are available in the git repository at:

  git://repo.or.cz/qemu/agraf.git ppc-for-upstream

Alex Barcelo (1):
      Bad zero comparison for sas_ss_flags on powerpc

Alexander Graf (3):
      PPC: 405: Fix ppc405ep initialization
      PPC: KVM: Synchronize regs on CPU dump
      PPC: Fix openpic with relative memregions

Alexey Kardashevskiy (1):
      pseries: Remove PCI device from PCI host bridge code

David Gibson (6):
      pseries: Don't try to munmap() a malloc()ed TCE table
      pseries: Update SLOF firmware image
      pseries: Remove unused constant from PCI code
      pseries: Add support for level interrupts to XICS
      kvm: Comparison with ioctl number macros needs to be unsigned
      pseries: Configure PCI bridge using properties

Meador Inge (1):
      ppc: Correctly define POWERPC_INSNS2_DEFAULT

Nathan Whitehorn (2):
      PPC: Add PIR register to POWER7 CPU
      PPC: Fix large page support in TCG

Stefan Weil (1):
      ppc: Add missing 'static' to spin_rw_ops

Thomas Huth (1):
      PPC64: Add support for ldbrx and stdbrx instructions

 hw/openpic.c                |   12 +--
 hw/ppc405_uc.c              |    2 +
 hw/ppce500_spin.c           |    2 +-
 hw/spapr.c                  |    5 +-
 hw/spapr.h                  |   13 +++-
 hw/spapr_pci.c              |  193 ++++++++++++++++++++-----------------------
 hw/spapr_pci.h              |    4 +-
 hw/spapr_vio.c              |    2 +-
 hw/xics.c                   |  125 +++++++++++++++++++++-------
 hw/xics.h                   |    8 ++-
 kvm-all.c                   |    5 +-
 linux-user/signal.c         |    2 +-
 pc-bios/README              |    2 +-
 pc-bios/slof.bin            |  Bin 869584 -> 880496 bytes
 roms/SLOF                   |    2 +-
 target-ppc/cpu.h            |    4 +-
 target-ppc/helper.c         |   12 ++--
 target-ppc/kvm.c            |   12 ++-
 target-ppc/translate.c      |   54 ++++++++++--
 target-ppc/translate_init.c |   11 ++-
 20 files changed, 294 insertions(+), 176 deletions(-)

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

* [Qemu-devel] [PATCH 01/16] Bad zero comparison for sas_ss_flags on powerpc
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 02/16] PPC: 405: Fix ppc405ep initialization Alexander Graf
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, Alex Barcelo, qemu-ppc, aurelien

From: Alex Barcelo <abarcelo@ac.upc.edu>

All architectures work the same way, and all check for sas_ss_flags ==
0. The powerpc lines are wrong, and do the check the other way round
(it's a qemu internal check, which is done wrong only for this
architecture, it's more a typo than a bug). It's NOT ppc specific,
it's POSIX standard (sigaltstack) and qemu internal.

I have a test source that I will send in a follow-up (it's longer than
I would have wished, I'm sure that a better test case can be written
if needed)

Signed-off-by: Alex Barcelo <abarcelo@ac.upc.edu>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 linux-user/signal.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/linux-user/signal.c b/linux-user/signal.c
index fca51e2..b1e139d 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -4118,7 +4118,7 @@ static target_ulong get_sigframe(struct target_sigaction *ka,
     oldsp = env->gpr[1];
 
     if ((ka->sa_flags & TARGET_SA_ONSTACK) &&
-        (sas_ss_flags(oldsp))) {
+        (sas_ss_flags(oldsp) == 0)) {
         oldsp = (target_sigaltstack_used.ss_sp
                  + target_sigaltstack_used.ss_size);
     }
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 02/16] PPC: 405: Fix ppc405ep initialization
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 01/16] Bad zero comparison for sas_ss_flags on powerpc Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 03/16] ppc: Add missing 'static' to spin_rw_ops Alexander Graf
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, aurelien

When trying to run a ppc405 guest, it segfaults quite quickly, trying to
access timers that weren't initialized. Initialize them properly instead.

Reported-by: Andreas Faerber <afaerber@suse.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/ppc405_uc.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/hw/ppc405_uc.c b/hw/ppc405_uc.c
index 6f8342e..89e5013 100644
--- a/hw/ppc405_uc.c
+++ b/hw/ppc405_uc.c
@@ -2471,6 +2471,8 @@ CPUPPCState *ppc405ep_init(MemoryRegion *address_space_mem,
     ppc4xx_pob_init(env);
     /* OBP arbitrer */
     ppc4xx_opba_init(0xef600600);
+    /* Initialize timers */
+    ppc_booke_timers_init(env, sysclk, 0);
     /* Universal interrupt controller */
     irqs = g_malloc0(sizeof(qemu_irq) * PPCUIC_OUTPUT_NB);
     irqs[PPCUIC_OUTPUT_INT] =
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 03/16] ppc: Add missing 'static' to spin_rw_ops
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 01/16] Bad zero comparison for sas_ss_flags on powerpc Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 02/16] PPC: 405: Fix ppc405ep initialization Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 04/16] pseries: Don't try to munmap() a malloc()ed TCE table Alexander Graf
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, Stefan Weil, qemu-ppc, aurelien

From: Stefan Weil <sw@weilnetz.de>

spin_rw_ops is only used in hw/ppce500_spin.c.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
Acked-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/ppce500_spin.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/ppce500_spin.c b/hw/ppce500_spin.c
index 268f5fd..960b7b0 100644
--- a/hw/ppce500_spin.c
+++ b/hw/ppce500_spin.c
@@ -182,7 +182,7 @@ static uint64_t spin_read(void *opaque, target_phys_addr_t addr, unsigned len)
     }
 }
 
-const MemoryRegionOps spin_rw_ops = {
+static const MemoryRegionOps spin_rw_ops = {
     .read = spin_read,
     .write = spin_write,
     .endianness = DEVICE_BIG_ENDIAN,
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 04/16] pseries: Don't try to munmap() a malloc()ed TCE table
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (2 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 03/16] ppc: Add missing 'static' to spin_rw_ops Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 05/16] PPC64: Add support for ldbrx and stdbrx instructions Alexander Graf
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, aurelien, David Gibson

From: David Gibson <david@gibson.dropbear.id.au>

For the pseries machine, TCE (IOMMU) tables can either be directly
malloc()ed in qemu or, when running on a KVM which supports it, mmap()ed
from a KVM ioctl.  The latter option is used when available, because it
allows the (frequent bottlenext) H_PUT_TCE hypercall to be KVM accelerated.
However, even when KVM is persent, TCE acceleration is not always possible.
Only KVM HV supports this ioctl(), not KVM PR, or the kernel could run out
of contiguous memory to allocate the new table.  In this case we need to
fall back on the malloc()ed table.

When a device is removed, and we need to remove the TCE table, we need to
either munmap() or free() the table as appropriate for how it was
allocated.  The code is supposed to do that, but we buggily fail to
initialize the tcet->fd variable in the malloc() case, which is used as a
flag to determine which is the right choice.

This patch fixes the bug, and cleans up error messages relating to this
path while we're at it.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/kvm.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index aeb3de9..724f4c7 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -843,12 +843,18 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd)
     int fd;
     void *table;
 
+    /* Must set fd to -1 so we don't try to munmap when called for
+     * destroying the table, which the upper layers -will- do
+     */
+    *pfd = -1;
     if (!cap_spapr_tce) {
         return NULL;
     }
 
     fd = kvm_vm_ioctl(kvm_state, KVM_CREATE_SPAPR_TCE, &args);
     if (fd < 0) {
+        fprintf(stderr, "KVM: Failed to create TCE table for liobn 0x%x\n",
+                liobn);
         return NULL;
     }
 
@@ -857,6 +863,8 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t window_size, int *pfd)
 
     table = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
     if (table == MAP_FAILED) {
+        fprintf(stderr, "KVM: Failed to map TCE table for liobn 0x%x\n",
+                liobn);
         close(fd);
         return NULL;
     }
@@ -876,8 +884,8 @@ int kvmppc_remove_spapr_tce(void *table, int fd, uint32_t window_size)
     len = (window_size / SPAPR_VIO_TCE_PAGE_SIZE)*sizeof(VIOsPAPR_RTCE);
     if ((munmap(table, len) < 0) ||
         (close(fd) < 0)) {
-        fprintf(stderr, "KVM: Unexpected error removing KVM SPAPR TCE "
-                "table: %s", strerror(errno));
+        fprintf(stderr, "KVM: Unexpected error removing TCE table: %s",
+                strerror(errno));
         /* Leak the table */
     }
 
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 05/16] PPC64: Add support for ldbrx and stdbrx instructions
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (3 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 04/16] pseries: Don't try to munmap() a malloc()ed TCE table Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 06/16] pseries: Update SLOF firmware image Alexander Graf
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel
  Cc: blauwirbel, qemu-ppc, Thomas Huth, aurelien, David Gibson

From: Thomas Huth <thuth@linux.vnet.ibm.com>

These instructions for loading and storing byte-swapped 64-bit values have
been introduced in PowerISA 2.06.

Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/cpu.h            |    4 ++-
 target-ppc/translate.c      |   52 +++++++++++++++++++++++++++++++++++-------
 target-ppc/translate_init.c |    2 +-
 3 files changed, 47 insertions(+), 11 deletions(-)

diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index ad09cbe..ca6f1cb 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -1918,8 +1918,10 @@ enum {
     PPC2_DFP           = 0x0000000000000004ULL,
     /* Embedded.Processor Control                                            */
     PPC2_PRCNTL        = 0x0000000000000008ULL,
+    /* Byte-reversed, indexed, double-word load and store                    */
+    PPC2_DBRX          = 0x0000000000000010ULL,
 
-#define PPC_TCG_INSNS2 (PPC2_BOOKE206 | PPC2_PRCNTL)
+#define PPC_TCG_INSNS2 (PPC2_BOOKE206 | PPC2_PRCNTL | PPC2_DBRX)
 };
 
 /*****************************************************************************/
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 3ec59a7..4722a09 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -2650,7 +2650,7 @@ static void glue(gen_, name##ux)(DisasContext *ctx)
     tcg_temp_free(EA);                                                        \
 }
 
-#define GEN_LDX(name, ldop, opc2, opc3, type)                                 \
+#define GEN_LDX_E(name, ldop, opc2, opc3, type, type2)                        \
 static void glue(gen_, name##x)(DisasContext *ctx)                            \
 {                                                                             \
     TCGv EA;                                                                  \
@@ -2660,6 +2660,8 @@ static void glue(gen_, name##x)(DisasContext *ctx)                            \
     gen_qemu_##ldop(ctx, cpu_gpr[rD(ctx->opcode)], EA);                       \
     tcg_temp_free(EA);                                                        \
 }
+#define GEN_LDX(name, ldop, opc2, opc3, type)                                 \
+    GEN_LDX_E(name, ldop, opc2, opc3, type, PPC_NONE)
 
 #define GEN_LDS(name, ldop, op, type)                                         \
 GEN_LD(name, ldop, op | 0x20, type);                                          \
@@ -2793,8 +2795,8 @@ static void glue(gen_, name##ux)(DisasContext *ctx)
     tcg_temp_free(EA);                                                        \
 }
 
-#define GEN_STX(name, stop, opc2, opc3, type)                                 \
-static void glue(gen_, name##x)(DisasContext *ctx)                                    \
+#define GEN_STX_E(name, stop, opc2, opc3, type, type2)                        \
+static void glue(gen_, name##x)(DisasContext *ctx)                            \
 {                                                                             \
     TCGv EA;                                                                  \
     gen_set_access_type(ctx, ACCESS_INT);                                     \
@@ -2803,6 +2805,8 @@ static void glue(gen_, name##x)(DisasContext *ctx)
     gen_qemu_##stop(ctx, cpu_gpr[rS(ctx->opcode)], EA);                       \
     tcg_temp_free(EA);                                                        \
 }
+#define GEN_STX(name, stop, opc2, opc3, type)                                 \
+    GEN_STX_E(name, stop, opc2, opc3, type, PPC_NONE)
 
 #define GEN_STS(name, stop, op, type)                                         \
 GEN_ST(name, stop, op | 0x20, type);                                          \
@@ -2891,6 +2895,18 @@ static inline void gen_qemu_ld32ur(DisasContext *ctx, TCGv arg1, TCGv arg2)
 }
 GEN_LDX(lwbr, ld32ur, 0x16, 0x10, PPC_INTEGER);
 
+#if defined(TARGET_PPC64)
+/* ldbrx */
+static inline void gen_qemu_ld64ur(DisasContext *ctx, TCGv arg1, TCGv arg2)
+{
+    tcg_gen_qemu_ld64(arg1, arg2, ctx->mem_idx);
+    if (likely(!ctx->le_mode)) {
+        tcg_gen_bswap64_tl(arg1, arg1);
+    }
+}
+GEN_LDX_E(ldbr, ld64ur, 0x14, 0x10, PPC_NONE, PPC2_DBRX);
+#endif  /* TARGET_PPC64 */
+
 /* sthbrx */
 static inline void gen_qemu_st16r(DisasContext *ctx, TCGv arg1, TCGv arg2)
 {
@@ -2921,6 +2937,22 @@ static inline void gen_qemu_st32r(DisasContext *ctx, TCGv arg1, TCGv arg2)
 }
 GEN_STX(stwbr, st32r, 0x16, 0x14, PPC_INTEGER);
 
+#if defined(TARGET_PPC64)
+/* stdbrx */
+static inline void gen_qemu_st64r(DisasContext *ctx, TCGv arg1, TCGv arg2)
+{
+    if (likely(!ctx->le_mode)) {
+        TCGv t0 = tcg_temp_new();
+        tcg_gen_bswap64_tl(t0, arg1);
+        tcg_gen_qemu_st64(t0, arg2, ctx->mem_idx);
+        tcg_temp_free(t0);
+    } else {
+        tcg_gen_qemu_st64(arg1, arg2, ctx->mem_idx);
+    }
+}
+GEN_STX_E(stdbr, st64r, 0x14, 0x14, PPC_NONE, PPC2_DBRX);
+#endif  /* TARGET_PPC64 */
+
 /***                    Integer load and store multiple                    ***/
 
 /* lmw */
@@ -8818,7 +8850,7 @@ GEN_FLOAT_B(neg, 0x08, 0x01, 0, PPC_FLOAT),
 #undef GEN_LD
 #undef GEN_LDU
 #undef GEN_LDUX
-#undef GEN_LDX
+#undef GEN_LDX_E
 #undef GEN_LDS
 #define GEN_LD(name, ldop, opc, type)                                         \
 GEN_HANDLER(name, opc, 0xFF, 0xFF, 0x00000000, type),
@@ -8826,8 +8858,8 @@ GEN_HANDLER(name, opc, 0xFF, 0xFF, 0x00000000, type),
 GEN_HANDLER(name##u, opc, 0xFF, 0xFF, 0x00000000, type),
 #define GEN_LDUX(name, ldop, opc2, opc3, type)                                \
 GEN_HANDLER(name##ux, 0x1F, opc2, opc3, 0x00000001, type),
-#define GEN_LDX(name, ldop, opc2, opc3, type)                                 \
-GEN_HANDLER(name##x, 0x1F, opc2, opc3, 0x00000001, type),
+#define GEN_LDX_E(name, ldop, opc2, opc3, type, type2)                        \
+GEN_HANDLER_E(name##x, 0x1F, opc2, opc3, 0x00000001, type, type2),
 #define GEN_LDS(name, ldop, op, type)                                         \
 GEN_LD(name, ldop, op | 0x20, type)                                           \
 GEN_LDU(name, ldop, op | 0x21, type)                                          \
@@ -8843,6 +8875,7 @@ GEN_LDUX(lwa, ld32s, 0x15, 0x0B, PPC_64B)
 GEN_LDX(lwa, ld32s, 0x15, 0x0A, PPC_64B)
 GEN_LDUX(ld, ld64, 0x15, 0x01, PPC_64B)
 GEN_LDX(ld, ld64, 0x15, 0x00, PPC_64B)
+GEN_LDX_E(ldbr, ld64ur, 0x14, 0x10, PPC_NONE, PPC2_DBRX)
 #endif
 GEN_LDX(lhbr, ld16ur, 0x16, 0x18, PPC_INTEGER)
 GEN_LDX(lwbr, ld32ur, 0x16, 0x10, PPC_INTEGER)
@@ -8850,7 +8883,7 @@ GEN_LDX(lwbr, ld32ur, 0x16, 0x10, PPC_INTEGER)
 #undef GEN_ST
 #undef GEN_STU
 #undef GEN_STUX
-#undef GEN_STX
+#undef GEN_STX_E
 #undef GEN_STS
 #define GEN_ST(name, stop, opc, type)                                         \
 GEN_HANDLER(name, opc, 0xFF, 0xFF, 0x00000000, type),
@@ -8858,8 +8891,8 @@ GEN_HANDLER(name, opc, 0xFF, 0xFF, 0x00000000, type),
 GEN_HANDLER(stop##u, opc, 0xFF, 0xFF, 0x00000000, type),
 #define GEN_STUX(name, stop, opc2, opc3, type)                                \
 GEN_HANDLER(name##ux, 0x1F, opc2, opc3, 0x00000001, type),
-#define GEN_STX(name, stop, opc2, opc3, type)                                 \
-GEN_HANDLER(name##x, 0x1F, opc2, opc3, 0x00000001, type),
+#define GEN_STX_E(name, stop, opc2, opc3, type, type2)                        \
+GEN_HANDLER_E(name##x, 0x1F, opc2, opc3, 0x00000001, type, type2),
 #define GEN_STS(name, stop, op, type)                                         \
 GEN_ST(name, stop, op | 0x20, type)                                           \
 GEN_STU(name, stop, op | 0x21, type)                                          \
@@ -8872,6 +8905,7 @@ GEN_STS(stw, st32, 0x04, PPC_INTEGER)
 #if defined(TARGET_PPC64)
 GEN_STUX(std, st64, 0x15, 0x05, PPC_64B)
 GEN_STX(std, st64, 0x15, 0x04, PPC_64B)
+GEN_STX_E(stdbr, st64r, 0x14, 0x14, PPC_NONE, PPC2_DBRX)
 #endif
 GEN_STX(sthbr, st16r, 0x16, 0x1C, PPC_INTEGER)
 GEN_STX(stwbr, st32r, 0x16, 0x14, PPC_INTEGER)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 1ec6f42..c707959 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -6571,7 +6571,7 @@ static void init_proc_970MP (CPUPPCState *env)
                               PPC_64B | PPC_ALTIVEC |                         \
                               PPC_SEGMENT_64B | PPC_SLBI |                    \
                               PPC_POPCNTB | PPC_POPCNTWD)
-#define POWERPC_INSNS2_POWER7 (PPC2_VSX | PPC2_DFP)
+#define POWERPC_INSNS2_POWER7 (PPC2_VSX | PPC2_DFP | PPC2_DBRX)
 #define POWERPC_MSRM_POWER7   (0x800000000204FF36ULL)
 #define POWERPC_MMU_POWER7    (POWERPC_MMU_2_06)
 #define POWERPC_EXCP_POWER7   (POWERPC_EXCP_POWER7)
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 06/16] pseries: Update SLOF firmware image
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (4 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 05/16] PPC64: Add support for ldbrx and stdbrx instructions Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 07/16] pseries: Remove unused constant from PCI code Alexander Graf
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, aurelien, David Gibson

From: David Gibson <david@gibson.dropbear.id.au>

This patch updates the SLOF firmware image used on the pseries
machine.  The new version adds support for Cirrus VGA and virtfs, as
well as including a number of bugfixes.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 pc-bios/README   |    2 +-
 pc-bios/slof.bin |  Bin 869584 -> 880496 bytes
 roms/SLOF        |    2 +-
 3 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pc-bios/README b/pc-bios/README
index 5dce355..71f4871 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -17,7 +17,7 @@
 - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware
   implementation for certain IBM POWER hardware.  The sources are at
   https://github.com/dgibson/SLOF, and the image currently in qemu is
-  built from git tag qemu-slof-20120111.1.
+  built from git tag qemu-slof-20120217.
 
 - sgabios (the Serial Graphics Adapter option ROM) provides a means for
   legacy x86 software to communicate with an attached serial console as
diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin
index 8554f54b5773f0771eec28f6c3bc0dc17e063a47..449a7bb2afaf604f6c089612e99086df0800d7dc 100644
GIT binary patch
delta 124949
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
DKp1p(

delta 107656
zcmbS!34B!5_5XV>nJ@tyUsys25Qaq<0?3F9Bci^r=l}u6fRZZK0j0(b#-;7(56Gxg
zgKR^9+#uWF(xz&4wD=>|rK8gRQmb}c+NO0It=hO$r>(Yesr=7*_nbHHy(GW(_kW*H
za&o?Bx#ym{ynF9^Gs(YsYIf79$<wsC*&U%%iq%0w>UYG36o2wX{&SJL>bUZqjs1*=
z-@NN=edVg)Y16;+os(CcJmb=nPe1LHpC*m87Fw`!jsK+S{^>#Zb<!y_Pn|LI)YFga
z?>}d`|AN)mU4O;eHU2aGmtS$i)E?IHITvL5Z;UH=m25ObXOX&C`zRp-#p-GOKj=2`
zre{A8*M3wwc<1_l>yLC7tCO{XdY867xURD3hh4MRADPxqJ-bMolsXdYuQng2jr>d$
zSEv`MBSo}At<(JN;&6pJRvWcZbXKTOi!(>6Uh#I7dW!hg1XVA+LQ%p>{g|jCUL2#2
z5Z|p-7n~5EcArvQbD(k-P^IR;@a}0pR+ROV7YtcHIUHF(spyBsenl5umFl<4tKv2L
ztLjfl96PptfRZ&*%9OBDWr!6c)T)xIxi$N$#*4%Vbyel471L7ab7VJA#W*m0UE}=`
zqh{a8v@j~wa&2U*7&215sx<x8700^Q`HJGAeYm=&vhsClRv9O=CTUhV*EFlDoU*Q;
zQGNO(uqmmj#xPI!9_uy^9Q%0Tu}{1rHe8(~EBy3Gb<~N&4}bBrmJC5sqqd(WNI_gV
z{+@1COMfv&Yx`oQ)*4nW_)E(u^?O?AyCUaTM|!)~DkWhhw7O-i>eq?62EBBzRTR-y
zrH(CG_9XJ6X{36R_}B4jKk@n~wYp@+RufH(SIfoNDz!qJ@h$Y|7b~h%U&)MLv2>Ui
zJzAYua@u<Z;5R3z$7?h8Ly;BYvJ=z^+KijgbcjfupbpYzoN5Z-Z;#kBULB*&7%rvR
z@gP0z1yc%tdxUxdNKboMN<(OS8rGvi932ZzPn(Z|k-|S#EzzdT6Z$yyWY2kK6q%FN
zq2l6k>IBcq0>6KpI#fIPZ8RDxB(qxN#;NCeMirD^7_AQ1MqPvW7*Xnn@<+WSEuQqN
z$BT#`f*7^KE(Tq62x8DRlYXK$YK+jwK!~GiL}-i({2xSS47BKuG3r#UY6miBY17|^
zx=hecE|ugYNg&B5sQv*>n~ohzT%i<)mFeQ_3F@Sl32J|B`X*saPy+)Kn~r@=!g~>!
zu1$X$sbB1x09`V)Njxw?-JsR}O6Zf+^2*w4v3?=w>Wy<=iN`l8{>FPhiiedMe>k#Y
zqUuvuh5mpFA52q}X?KHSsp9QE9{c)n4}7&r@vi?>(GM3Viv1sbqm+K|7LK~JO#Pnt
zbTivM@socgo)4(AwFU2)0ci`iiohhOx^b_FOoH^xpC=NN)NgAGhKk%IwNjh^nE2Yn
ze<h|=BY%wuSF6>&8nbn$jDxX#%RsM4RKt`r{{)e(hDwKD5M9;kghBH@$GUXEkdS%<
zP7(ge>N&pPe#9l#|7($)1nv8;3DDX1O;#tUVKKQ{9ig53TalX#0iFAv4CLHRV#*XO
z_>F>bX(t-{MRF`mN41mHO5co&ZPLq7I{e5BQ`Dc7Xum5H>rRG>|8AauE_s&rJ5S3g
z>WkICTeogwzr*W(+3zqmh-{4D+vudLQt^Ip6SPAL^RKp{vkIY~s@^_oV|oBg5?3kO
zsgsT!Gj2Kd*}`M*?OH$S!XXQf{b{`T_*C@_f79uc6m?yHC5uztY~%g-`f6>+rv6~I
zKvCD1eoG9P0iCe@G?+qD_^Ta^jtj5vzhFq?{f1%eQ)Y?iY3jr=8ynx832xunc)DLv
z7asd&Bl<<3z$>$jS1%J^p9W!tXF&enPm8&y!z}$ur>G67Cy1@5!vK1vRcr}C!@aUj
zf*$}_^~$Vu{brvCQ{Ff0O6HtMQ{Fdn%6r8xT4$)$RkMD8S@-}ZvaXx8<hq6t@pYHg
zKlp`;6WgpSL~e$<T)j+$Lh4dgmqonu85S`?yckj|CcJaF?;_r5h4~X|^Y*)9;OT1U
z#1CNhT-U!S-UVr0c<im()2}*~{{pau$KHGwV!%sH4B{F0$T>6BSp&7HkL|pAd6hP`
z^ru^v3(eCJR;FAmjQQ#sZSr4^r01(IYuZFmxwuN3SSqG0@*Wipi_~$89*%;y#&^Gp
zhf*-UqKaqXu_w&__|ZFwY~!E4g28ygai-3DUqOvW#6f2O=-h}H{5>R;0Gh(!o>(n9
z7pVaeS)qE51eU1zV$rosy+HeBkuc6zN1ti-R8)`O1mpbfkKzlDeRV}t0dv6C-8dpH
zv9E_(Slq&{J+kk7Ra3REM~T!0>Rp<DzDO=t4Ph)&i@jZ|61lMAzZjwGd|#EKJ%+yU
z*q7G`y<VMt!IzIQ24xii{$m>tp?_&k8)$>EEIjtbaFpX+4fuZPB1OX%0?K~PxW%l8
zN-IRBUe#L`t23b4LyOgMKvpbPM*~^6Sbacru2FqjqFZ#WQLB*-SqnW9XlSkEFC)H*
z_`}3^5?>rsPec7#F&O+nua2ozK#yzzsv_{fwJ^y7&0VYh4C%h>)NM$oT(7=~bl?pz
zeF44t26fG#MECkhnFkjhJ9Zh??}M>`e|&@KPz?O8q*K1D-l{4h{ay7zFgp_co_eK*
z_Rq(qpD8y=z1kaL_5g+Cjq1--A2{|Z57z8g26nvz%Ju)Hu0o?H{tG61ptIJgFCrbd
zUVT<wB(m$F@~?~$U$0lMLpZiUod{D_>jrf)<n8DN_5RWd7~I3V?z-83B;KfAud0C~
zA1BnoMaKos*sFRQZ~YVW%aUu44BV(*U2>#ivs$F7K{0Zxdey0+kAALb3y*zmcH+jP
ze~+(Q&AsU8x3Jb-x7=(%ht<|?7!mJkMBSq`;)$*5ZQ8SsiG5dkXKFWxMPeI_<H%1R
zSoytT?dEzB`?h!3&NIIAYwh!YiQq1%)933&dYAfhn4M$0)g?eOyVdP#_(-HheL&l3
zXnyf^tJ=S^*b4<(mrwUZknxojdxd|GTE4(7KQ+a2q<s1GQ*-z?+A(JG`e`|nqQ3<A
zYjn$tJ6VpDFQ0y<`DagmXJ$~)6F)24J8r}rcq4Lf`E(<1(jEcN&h(DYF?z?(>BCRB
zS3k>q`uu3`j^?L&#}^pA;|md%EtR^nm&`8Au^cI1KE2kDfA`E_tus?(0Q%`Z^qmzi
zWOi|+cZ2i#!c)ELFOBwrCws#iefrXLZvwz`z2nOe?j;k;f_>nTKJWzKjlDTa^<j|j
z9Y0_11JCu2Ul1+eoPR)k`UUBN0RNJgPhZ|g4VLFnqi3I3p6?yM(BA{c@_qV+i5>zI
zUy<w`zod_VR_eX$uj&iWnDy^jgUk9TV71YE0hjktKtmsXu1JudM%To5bsq+6`Y2#c
zwD*8urwLcjimf%AIJLh|Uz>Caki({l87A#9;l*No;Hf_Fe6M(;er=>zfqreScl^3&
z@A&oU-timy!2ioY{gFLVG{g)PYJOXXNFIW<fv-d452<HexFLZCK7BnBpg(AkbRI6J
zkZ&T|t|-SJJ9doy{2*)MEzcl9zmm2*6Cgg&a<^JO`!;fOThxSGpD|22<U?==W=!?l
zsMy<LCf<6q%cT1E!@~H1HzL~ZR%4>;9`%P>vOy&8g+)y=vE#fU#lA9Mr|1B_f0Oj6
zZ&5@Z_{J?VKz%ED-r6KRZY9r~bjfe?5)BYFoIKlYixQrYbV~*Ct&(mJ5zU#jQRje~
zD3GRZslWwqG7E%-D#DP#O$N~@Qn)CfO>tyEo-}EhFHd|MQn;vKr{7tG_vYA(R^X5V
z+eCqFW=CNW{*hWWwmGbnE}ge%{+uPXOBSPvdHM8;*YOXZzO`O7fu7bJ6>UH(x5bpA
zx#vfu8psD6mU_)`k^2!GA2hcrs$9xQd@z^SD)ct+vne5hZK#)4is#lXAxA!aV37QD
zh$zUl<}ML$gZ1@JuV@3i#+?*DCtw#RE{b+=5x*;pj8ET|kaSm@q?=3%e{(###JT76
zXc&rz{50yjI>=#8(%pVZEyre6AmQYAQve1MUf+<OK{SdKE(&CK6EZ%1HwC&YN4#HB
z*(0WaW3GW$3U&raF(WB=#obwv|1m6&++DIIEcIFvMDvmg^2c3OIZNWn4oNxl!jSx?
zC{nnn!Yt>E)0ml~Z)-&@TSmAEqcSna;v{b)o&w~Gh;GqwA2dBzq%|w`w*@3^Wq+LU
zDB^HYV0(hd6f$cCULo;4^^&?1+sgiATqBMhOG?EZSxGs-I}MSz9|F8HBXOQR?(8I<
zGRsZNIL}VZZ!@I6TaPR3#@UYIC@MQXE&LC_;JPy>j0a#s=79E6O}S69Av<I_XOt_p
zwOh1407q`yA|iu+cejch_|^6XMK|($BckFbFd1yBP)g=5SvG%;xip8#U?Wu|CL%w9
zF4&TnJeRw-srQOD$0W{jj%RP0>@&T~xt?;2_;l_moEUveyXb;ItrlVf&MX(iIJblw
z=lg@zauksJzQTT3pL#^2&KckgZ);LK%ffX_mSe@BkCrAR-P<9l)mNj0yE4c387|PB
zImYFE1!fNpU?25KP8ln5VEc3td`K;~?zH<FMC2iuhxcVf;vs1I9Vw9l+Q?nX3N$VQ
zwaV$1{QdyZFj3OmPfcstQ&;6N#&I>*li!S_)OAmW>5yg(>O1>8q{0CtkWsGC{#K<V
zaL)Y2b0>)i+@Pi(&=t>g>&{ciJST)H+aHLC_B4!zO^V2+;l_0!rl?cRGGsYE3h+Ra
z&>sf*-fpF&ZtlFuGOF-#RN<zCFdl{k9%vI$)N8I#iX${~Fy4X1(%*rMNTS~HS&;_4
z{wLB6c2`hjA66$663_RS{nD<-4J;(_Z3*(*EvftdvO6Pjt~V##YGAVgtrg4}J(n<g
z?+y-{hJ}VW7!v76pyCIcq(0wYIMJJeA_sEqV5{hUM6FtIFi(D?NZ}%X+{2irsC@1*
zOxf>tzli=6{O)QM@t;D^O{EpjoF(Tkrp>T5^ti%@xIWZyhbWQkZ#S%5mVGNSPX<-!
zK!+lT`1C_&{R;6ON)ayojMKT|hjP?|JEZ~_us0?`hoQ$E>JrhzYI#YrUD4*$iP|5j
zl~>*c4KWeb&8tv2-wWZ13|v0F$MVQ8@w<rLO_k$y=iMnO=NR_*TONhB;#=rFUZ=P<
zBZ7~rRbtIEs`pCQWT)?qN@c#wxF<=TrP+=rRWAFUu;Q@>5Y*+k3hD2jsK`K2jrX*X
zf4`)>0Ac%k;Tdz?ymRK))=D|gtz1rz+=Qgwy<wu%0XR<A&EhJZlgC4a9rwAGB!@gT
zu^q3tR%^20?Kw%gB6|#x`ETg4`?@KxCP}S1GeCTj<g7=OZ=YNq`}twe<;O31Yf0;z
zT29hAFdlO5Nty$`H>4DuHGi=pzIgy10sp8=v>j2aCjE%Q;ep?llf|*sk6}PAT~@Pf
zo;db^I!xP?6W;d!t=17~ejnF9iacC?{N>Z{{Wn>-uR-c@CHlxtqi&^{9QTnPD?2>X
z%4YTHTo6+(kn4S4LM=JFc3#Z|=2TJ`%lBh^%GHHE%z+dF1&8-XB~Jsa?D&l28Ryjt
z7t96T*`a84=IUPR4@^tC33l6$spZx8CzX;p^J;6CPL?<ioclW@&wdUmA`AMJ_fw`B
ze*l()HFM^`z0bVWY7c}&#n0eY_CSLO{R}3wrj&^O3~p%^0qO67lt=(y%`>l+a4*HB
zJIig!i45p#KdBI%;CCk1yP5p`q*LlYNcIm>KmQ5IInD>8BKSBglOK#peV(WuOj5a~
zKKyO&+I>3fJ=iAYmY<wxdK~KY5Ima!f0Y~uQ`WmPEpi~&9)jib<7(9)UUswmp?VQ`
z0+!Q!=iytlC2tbZCm?UbUX|tVfVCL#llYeHrfhe2gW@@-rgrH(vHeHtumun0Vdb;r
zf_Zi51-cVAZ#p9R=8U9np55(_DkZfrOqVWefyI4gQ%+IMj)GR;&NrUSqayMow0b%r
zVoyS?)2*V(<g=pfNyyfLoX9>2E6Uw^%Tv(!59XyA-xc>!BQnpWw=@XjDRkQ{qCm&;
z?7X!}+VgUO^$&VQ>M2++JseWB6PKb6UWHoo-h?|}Gc~T&33aK@$>nK+%e8LvhSXz!
ze7kR!c%%MsN-A)AdB1Jl{xed}f$!{6N|r`y=FBsLE(F}8;0kHSw?E5Ym)##M{qOIB
z1y8u9PBvD-;lo+GB1|_GBL8!>eCES>rDQfNkmkAq;BI{&A?<kWz=1y!5JpBVzwi-5
zQRkzIc@@gzg&A)N*q-ky?B`G%ca^nEmPF8jPahJJ^pRGP2LIY4Y0;5^mVJaO%Jw|}
zKGGrexn+3)$J2wm{GX<!zJ=?OciXw@4L1l<WJ5M!MaFqv;et33T;Y3Tif24-QLtQF
z7v=l)y-gCgx@Hjhxp1<QlmhoH@9sDmv>}Ddi@$t2FF?59pSFwOGccxpniCPAb=)FW
zK>=yUXH<M+ai48%&q+Owhy5S+ip(=GRdBiNpZzqoi#(RUAKqGd7JA-czfv4H|HMh?
z&7O$E3CSOBCu%03u(dc0a{|~mvK}`K_l!sDr5z8UM^lpLhIq7F@{dxUIR0%xrDR@x
zWZs-*QqD8xUPJP(<AMR!rgLky<)~Udd0Uk9$S>b$*#CcrlzsuT<tK@^A6AE6_}>v}
zz!k6>f-1Z}?35p2eQI#-f!qPOp#AM44FOeh1GpRNNK)jE+IIClmdJi8H|eBY4o{Ap
zaE_mOj*C~k%2e`W5Y<g;TXRu`xP|!E$UIM~Tu_gI1LW8hFju_yz~PZ9N6cM?DHqK2
zNSiExhhC2WLaqR)LRO1XmuT;jdgc&06~-v1k|T9fj+~pe4bBOE34Pz{Yld{leT_53
zyBNkF^GiJ|pqS)&mUrv(q{dCjtNF(wrk$<nDD{seq(gSZt0(K=CMxCb3Ub9BODdj7
zP2Ezt(YD=2I;9;~So(*i<C<}#JUSWYK$vefq$8eYxoIDxrnNE?lzQCMoKdczSspwM
z?{PxUid-;ffNS`(w5qN^-{w`QA?tIX+}RoD>64dAxS=Y?`O>|^_*q_bcEDQcaq4W3
zQ`0<dV2OqK^S->O_!SKQ$Ego+fRCqCkF`Mo{nCWAlRK2c1|?0Mn>QTyN2MNB;6L4<
zT%|t_OVqRHELmjsDO-Vj4#63*nuaQ74I19L-XsIqo|BX-^aM=kW`&mG5_Z884NCuT
z&C>AHWi_*F=|BhbQc3gu6HTxof|ZkdL-a((<u)f0&%yNiq+jCP1G(5I4UsnGi9X~o
z{XPfx!R^_WUxOPyM{q~~WLgA4KGvE=(Hn&OWVfVT+}5~g__bPfA$MrrZ*YHP%0rpM
zwQlR=kGqRCC$`ISo`R!Lh{HOU;Pnkp(tMZUeOQl^v9R>xj)RxZZht(`*xyr4=D`^}
zn4y4p3gHAil@!V6;Z5{U{-k;baqTQ&yU2jB?kQK+epsP+YHDkjm~CI^dsgRVKeXYn
zaQ6H23K4h#cX0tYt{a0j#LK7aS4;ZypoqQz2hb1clIOn6emQGAx-GwP(FT5}?`?;3
z$MfZ*7WB)5k?nZmw(Q^>73})|oRW0J5dIgTckvp6*AA?o35f{E8xKUC@v;8?xWt=j
z%(?Y487X(izpqOvKG}L?T!=f9Cx2u|{5ZYY30S-pC>#*|21d(MF%bY-`7~_QXQ40i
z^67(G@eiN=G#vbzaziPeKW8>=NqqW=RFPe2(fS+MkRI$58PFTc!>+F#<<s>oS+)G!
zr!&$$w;$*K>72xQf5&?6eEbAXVNRN=h&TSE4sUEWq!HKcerV)5H7C)&x{$1ADx@BF
z7S@M1F^cD1Fpr+x7xa0r!*$}J%yzrr>BHP5bH(RbwQRsM^-8~*+WF@$o;TNAhR%F4
zAxq;M50}a~FIwDQAFmM6mtcqXOiILGg3LaX6Di;upY=<B&vZ*_r7nOxowGoTJsUy}
z_9+QT-TFKcu$(6lYeJ-<waJk7bemYHC@e@y0k7(~0CyYhZB>dF!BGinV?Y%&V?Aq#
z#LHNrh{QRax0}sSV;(r$$L8&ZQ}03WYu(<!Z}~ncKisAioj>j@WZ)_^BTsD4CL~T3
zzQ|hZ@MO|#NCgh)*|eg~f{#APtKiV(NOxEKs4il!z)tL_A1!Uq?xV=V#ffaAXBSxn
z3oD67lOlumyb^Jj$1UGi-0hu0e-#qUE!*Q%h9)2Gfn49CQAHcq%PG&%n2e9tc#pJ6
z-daGo>(gP%3p=@^X_1D2X7&h#2Bg*Xrb@?0Gm>&($<CJF!piC)>OfpCzNP*=E!BVF
zm(+?YDS3{Yj}kb4d`oA32l?so{5W9xY3y+-&T9kiVZ4H3{3)4;!edrL2E_9HB<GRD
z_1zy-Jd0}<&69nZJKj8aEXJ88%8L)4sqRn70v@TClpX%UQ2L#<`20n)=hc~$lhrkP
z?6|zrkZZ#CLoVp)jFfZAei4zpmGXAt<C1a{@%&DF;aR@h;ZrH61GoH_RI^`F>Ub98
zlyWNnhbqE2XHN2PpvTiP@1(xzqJoo>a_askBvQYJ!NiWaCe4OZZ+~7<dG2w{K9q^H
z+b_JTKkH2Nffu*2Pk+oWd2ShsqeySch)^fovHvG4>VY<LARL%=mYR_ctfoszo-@Tw
z$#Nb|ycc!N`-)N_?P-t78#H)xlv3QoASexZCHiwi^1St9dN*Z;`<iw3O8Pvin3}tL
zYnp_UyAA_BKY_l@tB^u#Ix)|{d^$fX<N1`E_O85W{{!4%JK(juKR^?AB$cAzEN;Yt
zKhAJR77HrO(+~O;b&4$9#Az{UEo%9`z<2xyDKT7rM_%<z<|A6g*J!Oq?>C(mwuVnN
zAy9aB^{aZxKSxc&4qHNsda-FM<<{z!vSdDr0YAJG<N&4pET8^dn+i{TBlBv^^?M-$
z9ME%l>G;=%q+IZ?8$|Fmby%sH4WIs#ZV`D668faysrIC<6wRrbj38VE_q>bXE^4`j
z4>i^IqW|lRwC|yxR*I%Au0|nTzNJ<|xdnJ_WEGH8itBq>DL(Hv9aw89)_)#83-!8M
z)$jQreA;T>x5T0!!SeG-cr-A(wr24{w6WF7>V|%ayLXt+w<*Q^fF141b*cA40QXR^
zl0>%P&+1lO8JfZ7=)8ioCSkuc<bL}C4K$wWj-^T7F6p7H2)&_JRlm@tXy<eG3I$s$
zO3uOy-6HV@?$i^~zS)qJ<u3+A8sv@7Q1^6a{lzdmOR0k+12ltjPJCU`7aNq4^B41g
zD0B~=!`+m}Gv8#a@;eo6_EJU6dlNnwnMsT2n=ozOmfv}8zjeiMzLRfx3xaz}X4}dt
z@4WcV#>Y4ZqB1yZtYjt6N!@3TEuT*QtkdfkyOrYFnx*DIvbCcA8(HpPomU?m^<y#7
z_7(*C8^7o<sUf<6R{jP)yck(D=OhEm#cY`iWS{<<xbWxT0j&ED$@hh<U+Vw6t&|9g
zcn%%}XT3^McwRjk!Bxn9)`Vaun31@Z2<koA29X7OE!!mW5KpDGB{ifz*Du>H{BJ|z
zU!q>|QiGIpyv)CpcG}(Dq?XjoUQ)Mgti*Xzd#OwE+Y*xU+c$iE#^tu=lmW}b^XG&k
zOXe(`w@f_xHuQ>n;6<>vA?W6y$YW41!y(oD#qe0yHSzJ*?@+fagq^+&GfkvMK5Mci
z%j!)$_Ibv2&r~nN^T|c$Pg}IabYYwN`EJa8`W31j_kGTmC8t(kIR|)8D~#n{_AcCt
z+|8wbIQV79uV6)?`Q2;qN4pf&@@MNFZimliq&+Xt`to-;1|PLwQY%x42fy5|&nBb;
z&ICtF)1A({9uAoMBOiEi2401m&G~2X3ajA%0A<X+z=Fk$Pk+^bSElBlJ6{gjf&nj-
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%0AWf$Jdzn
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

diff --git a/roms/SLOF b/roms/SLOF
index ab062ff..d153364 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit ab062ff3b37c39649f2b0d94ed607adc6f6b3c7d
+Subproject commit d153364253548d6cd91403711f84996e6a7dab31
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 07/16] pseries: Remove unused constant from PCI code
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (5 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 06/16] pseries: Update SLOF firmware image Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 08/16] pseries: Remove PCI device from PCI host bridge code Alexander Graf
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel
  Cc: blauwirbel, Alexey Kardashevskiy, qemu-ppc, aurelien,
	David Gibson

From: David Gibson <david@gibson.dropbear.id.au>

The 'bars' constant array was used in experimental device allocation code
which is no longer necessary now that we always run the SLOF firmware.
This patch removes the now redundant variable.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/spapr_pci.c |    7 -------
 1 files changed, 0 insertions(+), 7 deletions(-)

diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
index 374dcf8..3d5e50a 100644
--- a/hw/spapr_pci.c
+++ b/hw/spapr_pci.c
@@ -32,13 +32,6 @@
 
 #include "hw/pci_internals.h"
 
-static const uint32_t bars[] = {
-    PCI_BASE_ADDRESS_0, PCI_BASE_ADDRESS_1,
-    PCI_BASE_ADDRESS_2, PCI_BASE_ADDRESS_3,
-    PCI_BASE_ADDRESS_4, PCI_BASE_ADDRESS_5
-    /*, PCI_ROM_ADDRESS*/
-};
-
 static PCIDevice *find_dev(sPAPREnvironment *spapr,
                            uint64_t buid, uint32_t config_addr)
 {
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 08/16] pseries: Remove PCI device from PCI host bridge code
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (6 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 07/16] pseries: Remove unused constant from PCI code Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 09/16] PPC: Add PIR register to POWER7 CPU Alexander Graf
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel
  Cc: blauwirbel, Alexey Kardashevskiy, qemu-ppc, aurelien,
	David Gibson

From: Alexey Kardashevskiy <aik@ozlabs.ru>

The sPAPR PCI code defines a PCI device "spapr-pci-host-bridge-pci" which
is never used.  This came over from the earlier bridge driver we used as
a template.  Some other bridges appear on their own PCI bus as a device,
but that is not true of pSeries bridges, which are pure host to PCI with
no visible presence on the PCI side.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/spapr_pci.c |   20 --------------------
 1 files changed, 0 insertions(+), 20 deletions(-)

diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
index 3d5e50a..c06afac 100644
--- a/hw/spapr_pci.c
+++ b/hw/spapr_pci.c
@@ -202,25 +202,6 @@ static int spapr_phb_init(SysBusDevice *s)
     return 0;
 }
 
-static int spapr_main_pci_host_init(PCIDevice *d)
-{
-    return 0;
-}
-
-static void spapr_main_pci_host_class_init(ObjectClass *klass, void *data)
-{
-    PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
-
-    k->init = spapr_main_pci_host_init;
-}
-
-static TypeInfo spapr_main_pci_host_info = {
-    .name          = "spapr-pci-host-bridge-pci",
-    .parent        = TYPE_PCI_DEVICE,
-    .instance_size = sizeof(PCIDevice),
-    .class_init    = spapr_main_pci_host_class_init,
-};
-
 static void spapr_phb_class_init(ObjectClass *klass, void *data)
 {
     SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
@@ -238,7 +219,6 @@ static TypeInfo spapr_phb_info = {
 static void spapr_register_types(void)
 {
     type_register_static(&spapr_phb_info);
-    type_register_static(&spapr_main_pci_host_info);
 }
 
 type_init(spapr_register_types)
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 09/16] PPC: Add PIR register to POWER7 CPU
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (7 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 08/16] pseries: Remove PCI device from PCI host bridge code Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 10/16] PPC: Fix large page support in TCG Alexander Graf
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, Nathan Whitehorn, aurelien

From: Nathan Whitehorn <nwhitehorn@freebsd.org>

The POWER7 emulation is missing the Processor Identification Register,
mandatory in recent POWER CPUs, that is required for SMP on at least
some operating systems (e.g. FreeBSD) to function properly. This patch
copies the existing PIR code from the other CPUs that implement it.

Signed-off-by: Nathan Whitehorn <nwhitehorn@freebsd.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/translate_init.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index c707959..5a958b9 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -6588,6 +6588,11 @@ static void init_proc_POWER7 (CPUPPCState *env)
     gen_spr_7xx(env);
     /* Time base */
     gen_tbl(env);
+    /* Processor identification */
+    spr_register(env, SPR_PIR, "PIR",
+                 SPR_NOACCESS, SPR_NOACCESS,
+                 &spr_read_generic, &spr_write_pir,
+                 0x00000000);
 #if !defined(CONFIG_USER_ONLY)
     /* PURR & SPURR: Hack - treat these as aliases for the TB for now */
     spr_register(env, SPR_PURR,   "PURR",
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 10/16] PPC: Fix large page support in TCG
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (8 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 09/16] PPC: Add PIR register to POWER7 CPU Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 11/16] pseries: Add support for level interrupts to XICS Alexander Graf
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, Nathan Whitehorn, aurelien

From: Nathan Whitehorn <nwhitehorn@freebsd.org>

Fix large page support in TCG. The old code would overwrite the large page
table entry with the fake 4 KB one generated here whenever the ref/change bits
were updated, causing it to point to the wrong area of memory.

Signed-off-by: Nathan Whitehorn <nwhitehorn@freebsd.org>
Acked-by: David Gibson <david@gibson.drobpear.id.au>
[agraf: fix whitespace, braces]
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/helper.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index bd711b6..39dcc27 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -591,12 +591,6 @@ static inline int _find_pte(CPUPPCState *env, mmu_ctx_t *ctx, int is_64b, int h,
                 pte1 = ldq_phys(env->htab_base + pteg_off + (i * 16) + 8);
             }
 
-            /* We have a TLB that saves 4K pages, so let's
-             * split a huge page to 4k chunks */
-            if (target_page_bits != TARGET_PAGE_BITS)
-                pte1 |= (ctx->eaddr & (( 1 << target_page_bits ) - 1))
-                        & TARGET_PAGE_MASK;
-
             r = pte64_check(ctx, pte0, pte1, h, rw, type);
             LOG_MMU("Load pte from " TARGET_FMT_lx " => " TARGET_FMT_lx " "
                     TARGET_FMT_lx " %d %d %d " TARGET_FMT_lx "\n",
@@ -672,6 +666,12 @@ static inline int _find_pte(CPUPPCState *env, mmu_ctx_t *ctx, int is_64b, int h,
         }
     }
 
+    /* We have a TLB that saves 4K pages, so let's
+     * split a huge page to 4k chunks */
+    if (target_page_bits != TARGET_PAGE_BITS) {
+        ctx->raddr |= (ctx->eaddr & ((1 << target_page_bits) - 1))
+                      & TARGET_PAGE_MASK;
+    }
     return ret;
 }
 
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 11/16] pseries: Add support for level interrupts to XICS
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (9 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 10/16] PPC: Fix large page support in TCG Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 12/16] ppc: Correctly define POWERPC_INSNS2_DEFAULT Alexander Graf
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, aurelien, David Gibson

From: David Gibson <david@gibson.dropbear.id.au>

The pseries "xics" interrupt controller, like most interrupt
controllers can support both message (i.e. edge sensitive) interrupts
and level sensitive interrupts, but it needs to know which are which.

When I implemented the xics emulation for qemu, the only devices we
supported were the PAPR virtual IO devices.  These devices only use
message interrupts, so they were the only ones I implemented in xics.

Since then, however, we have added support for PCI devices, which use
level sensitive interrupts.  It turns out the message interrupt logic
still actually works most of the time for these, but there are
circumstances where we can lost interrupts due to the incorrect
interrupt logic.

This patch, therefore, implements the correct xics level-sensitive
interrupt logic.  The type of the interrupt is set when a device
allocates a new xics interrupt.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/spapr.c     |    5 +-
 hw/spapr.h     |   13 +++++-
 hw/spapr_pci.c |    2 +-
 hw/spapr_vio.c |    2 +-
 hw/xics.c      |  125 +++++++++++++++++++++++++++++++++++++++++--------------
 hw/xics.h      |    8 +++-
 6 files changed, 117 insertions(+), 38 deletions(-)

diff --git a/hw/spapr.c b/hw/spapr.c
index 3719e0e..bfaf260 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -83,7 +83,8 @@
 
 sPAPREnvironment *spapr;
 
-qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num)
+qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num,
+                            enum xics_irq_type type)
 {
     uint32_t irq;
     qemu_irq qirq;
@@ -95,7 +96,7 @@ qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num)
         irq = spapr->next_irq++;
     }
 
-    qirq = xics_find_qirq(spapr->icp, irq);
+    qirq = xics_assign_irq(spapr->icp, irq, type);
     if (!qirq) {
         return NULL;
     }
diff --git a/hw/spapr.h b/hw/spapr.h
index a41641f..11160b0 100644
--- a/hw/spapr.h
+++ b/hw/spapr.h
@@ -286,7 +286,18 @@ void spapr_register_hypercall(target_ulong opcode, spapr_hcall_fn fn);
 target_ulong spapr_hypercall(CPUPPCState *env, target_ulong opcode,
                              target_ulong *args);
 
-qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num);
+qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num,
+                            enum xics_irq_type type);
+
+static inline qemu_irq spapr_allocate_msi(uint32_t hint, uint32_t *irq_num)
+{
+    return spapr_allocate_irq(hint, irq_num, XICS_MSI);
+}
+
+static inline qemu_irq spapr_allocate_lsi(uint32_t hint, uint32_t *irq_num)
+{
+    return spapr_allocate_irq(hint, irq_num, XICS_LSI);
+}
 
 static inline uint32_t rtas_ld(target_ulong phys, int n)
 {
diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
index c06afac..233250f 100644
--- a/hw/spapr_pci.c
+++ b/hw/spapr_pci.c
@@ -190,7 +190,7 @@ static int spapr_phb_init(SysBusDevice *s)
         qemu_irq qirq;
         uint32_t num;
 
-        qirq = spapr_allocate_irq(0, &num);
+        qirq = spapr_allocate_lsi(0, &num);
         if (!qirq) {
             return -1;
         }
diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c
index 2fb3cee..dbf5a90 100644
--- a/hw/spapr_vio.c
+++ b/hw/spapr_vio.c
@@ -670,7 +670,7 @@ static int spapr_vio_busdev_init(DeviceState *qdev)
         dev->qdev.id = id;
     }
 
-    dev->qirq = spapr_allocate_irq(dev->vio_irq_num, &dev->vio_irq_num);
+    dev->qirq = spapr_allocate_msi(dev->vio_irq_num, &dev->vio_irq_num);
     if (!dev->qirq) {
         return -1;
     }
diff --git a/hw/xics.c b/hw/xics.c
index f7963f3..668a0d6 100644
--- a/hw/xics.c
+++ b/hw/xics.c
@@ -132,9 +132,9 @@ static void icp_eoi(struct icp_state *icp, int server, uint32_t xirr)
 {
     struct icp_server_state *ss = icp->ss + server;
 
-    ics_eoi(icp->ics, xirr & XISR_MASK);
     /* Send EOI -> ICS */
     ss->xirr = (ss->xirr & ~CPPR_MASK) | (xirr & CPPR_MASK);
+    ics_eoi(icp->ics, xirr & XISR_MASK);
     if (!XISR(ss)) {
         icp_resend(icp, server);
     }
@@ -165,8 +165,9 @@ struct ics_irq_state {
     int server;
     uint8_t priority;
     uint8_t saved_priority;
-    /* int pending:1; */
-    /* int presented:1; */
+    enum xics_irq_type type;
+    int asserted:1;
+    int sent:1;
     int rejected:1;
     int masked_pending:1;
 };
@@ -185,9 +186,32 @@ static int ics_valid_irq(struct ics_state *ics, uint32_t nr)
         && (nr < (ics->offset + ics->nr_irqs));
 }
 
-static void ics_set_irq_msi(void *opaque, int srcno, int val)
+static void resend_msi(struct ics_state *ics, int srcno)
+{
+    struct ics_irq_state *irq = ics->irqs + srcno;
+
+    /* FIXME: filter by server#? */
+    if (irq->rejected) {
+        irq->rejected = 0;
+        if (irq->priority != 0xff) {
+            icp_irq(ics->icp, irq->server, srcno + ics->offset,
+                    irq->priority);
+        }
+    }
+}
+
+static void resend_lsi(struct ics_state *ics, int srcno)
+{
+    struct ics_irq_state *irq = ics->irqs + srcno;
+
+    if ((irq->priority != 0xff) && irq->asserted && !irq->sent) {
+        irq->sent = 1;
+        icp_irq(ics->icp, irq->server, srcno + ics->offset, irq->priority);
+    }
+}
+
+static void set_irq_msi(struct ics_state *ics, int srcno, int val)
 {
-    struct ics_state *ics = (struct ics_state *)opaque;
     struct ics_irq_state *irq = ics->irqs + srcno;
 
     if (val) {
@@ -200,71 +224,108 @@ static void ics_set_irq_msi(void *opaque, int srcno, int val)
     }
 }
 
-static void ics_reject_msi(struct ics_state *ics, int nr)
+static void set_irq_lsi(struct ics_state *ics, int srcno, int val)
 {
-    struct ics_irq_state *irq = ics->irqs + nr - ics->offset;
+    struct ics_irq_state *irq = ics->irqs + srcno;
 
-    irq->rejected = 1;
+    irq->asserted = val;
+    resend_lsi(ics, srcno);
 }
 
-static void ics_resend_msi(struct ics_state *ics)
+static void ics_set_irq(void *opaque, int srcno, int val)
 {
-    int i;
+    struct ics_state *ics = (struct ics_state *)opaque;
+    struct ics_irq_state *irq = ics->irqs + srcno;
 
-    for (i = 0; i < ics->nr_irqs; i++) {
-        struct ics_irq_state *irq = ics->irqs + i;
+    if (irq->type == XICS_LSI) {
+        set_irq_lsi(ics, srcno, val);
+    } else {
+        set_irq_msi(ics, srcno, val);
+    }
+}
 
-        /* FIXME: filter by server#? */
-        if (irq->rejected) {
-            irq->rejected = 0;
-            if (irq->priority != 0xff) {
-                icp_irq(ics->icp, irq->server, i + ics->offset, irq->priority);
-            }
-        }
+static void write_xive_msi(struct ics_state *ics, int srcno)
+{
+    struct ics_irq_state *irq = ics->irqs + srcno;
+
+    if (!irq->masked_pending || (irq->priority == 0xff)) {
+        return;
     }
+
+    irq->masked_pending = 0;
+    icp_irq(ics->icp, irq->server, srcno + ics->offset, irq->priority);
 }
 
-static void ics_write_xive_msi(struct ics_state *ics, int nr, int server,
-                               uint8_t priority)
+static void write_xive_lsi(struct ics_state *ics, int srcno)
 {
-    struct ics_irq_state *irq = ics->irqs + nr - ics->offset;
+    resend_lsi(ics, srcno);
+}
+
+static void ics_write_xive(struct ics_state *ics, int nr, int server,
+                           uint8_t priority)
+{
+    int srcno = nr - ics->offset;
+    struct ics_irq_state *irq = ics->irqs + srcno;
 
     irq->server = server;
     irq->priority = priority;
 
-    if (!irq->masked_pending || (priority == 0xff)) {
-        return;
+    if (irq->type == XICS_LSI) {
+        write_xive_lsi(ics, srcno);
+    } else {
+        write_xive_msi(ics, srcno);
     }
-
-    irq->masked_pending = 0;
-    icp_irq(ics->icp, server, nr, priority);
 }
 
 static void ics_reject(struct ics_state *ics, int nr)
 {
-    ics_reject_msi(ics, nr);
+    struct ics_irq_state *irq = ics->irqs + nr - ics->offset;
+
+    irq->rejected = 1; /* Irrelevant but harmless for LSI */
+    irq->sent = 0; /* Irrelevant but harmless for MSI */
 }
 
 static void ics_resend(struct ics_state *ics)
 {
-    ics_resend_msi(ics);
+    int i;
+
+    for (i = 0; i < ics->nr_irqs; i++) {
+        struct ics_irq_state *irq = ics->irqs + i;
+
+        /* FIXME: filter by server#? */
+        if (irq->type == XICS_LSI) {
+            resend_lsi(ics, i);
+        } else {
+            resend_msi(ics, i);
+        }
+    }
 }
 
 static void ics_eoi(struct ics_state *ics, int nr)
 {
+    int srcno = nr - ics->offset;
+    struct ics_irq_state *irq = ics->irqs + srcno;
+
+    if (irq->type == XICS_LSI) {
+        irq->sent = 0;
+    }
 }
 
 /*
  * Exported functions
  */
 
-qemu_irq xics_find_qirq(struct icp_state *icp, int irq)
+qemu_irq xics_assign_irq(struct icp_state *icp, int irq,
+                         enum xics_irq_type type)
 {
     if ((irq < icp->ics->offset)
         || (irq >= (icp->ics->offset + icp->ics->nr_irqs))) {
         return NULL;
     }
 
+    assert((type == XICS_MSI) || (type == XICS_LSI));
+
+    icp->ics->irqs[irq - icp->ics->offset].type = type;
     return icp->ics->qirqs[irq - icp->ics->offset];
 }
 
@@ -332,7 +393,7 @@ static void rtas_set_xive(sPAPREnvironment *spapr, uint32_t token,
         return;
     }
 
-    ics_write_xive_msi(ics, nr, server, priority);
+    ics_write_xive(ics, nr, server, priority);
 
     rtas_st(rets, 0, 0); /* Success */
 }
@@ -477,7 +538,7 @@ struct icp_state *xics_system_init(int nr_irqs)
         ics->irqs[i].saved_priority = 0xff;
     }
 
-    ics->qirqs = qemu_allocate_irqs(ics_set_irq_msi, ics, nr_irqs);
+    ics->qirqs = qemu_allocate_irqs(ics_set_irq, ics, nr_irqs);
 
     spapr_register_hypercall(H_CPPR, h_cppr);
     spapr_register_hypercall(H_IPI, h_ipi);
diff --git a/hw/xics.h b/hw/xics.h
index 83c1182..2080159 100644
--- a/hw/xics.h
+++ b/hw/xics.h
@@ -31,7 +31,13 @@
 
 struct icp_state;
 
-qemu_irq xics_find_qirq(struct icp_state *icp, int irq);
+enum xics_irq_type {
+    XICS_MSI,        /* Message-signalled (edge) interrupt */
+    XICS_LSI,        /* Level-signalled interrupt */
+};
+
+qemu_irq xics_assign_irq(struct icp_state *icp, int irq,
+                         enum xics_irq_type type);
 
 struct icp_state *xics_system_init(int nr_irqs);
 
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 12/16] ppc: Correctly define POWERPC_INSNS2_DEFAULT
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (10 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 11/16] pseries: Add support for level interrupts to XICS Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 13/16] kvm: Comparison with ioctl number macros needs to be unsigned Alexander Graf
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, Meador Inge, qemu-ppc, aurelien

From: Meador Inge <meadori@codesourcery.com>

'POWERPC_INSNS2_DEFAULT' was defined incorrectly which was causing the
opcode table creation code to erroneously register 'eieio' and 'mbar'
for the "default" processor:

   ** ERROR: opcode 1a already assigned in opcode table 16
   *** ERROR: unable to insert opcode [1f-16-1a]
   *** ERROR initializing PowerPC instruction 0x1f 0x16 0x1a

Signed-off-by: Meador Inge <meadori@codesourcery.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/translate_init.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 5a958b9..367eefa 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -6718,7 +6718,7 @@ static void init_proc_620 (CPUPPCState *env)
 #if defined (TARGET_PPC64) && 0 // XXX: TODO
 #define CPU_POWERPC_DEFAULT    CPU_POWERPC_PPC64
 #define POWERPC_INSNS_DEFAULT  POWERPC_INSNS_PPC64
-#define POWERPC_INSNS2_DEFAULT POWERPC_INSNS_PPC64
+#define POWERPC_INSNS2_DEFAULT POWERPC_INSNS2_PPC64
 #define POWERPC_MSRM_DEFAULT   POWERPC_MSRM_PPC64
 #define POWERPC_MMU_DEFAULT    POWERPC_MMU_PPC64
 #define POWERPC_EXCP_DEFAULT   POWERPC_EXCP_PPC64
@@ -6730,7 +6730,7 @@ static void init_proc_620 (CPUPPCState *env)
 #else
 #define CPU_POWERPC_DEFAULT    CPU_POWERPC_PPC32
 #define POWERPC_INSNS_DEFAULT  POWERPC_INSNS_PPC32
-#define POWERPC_INSNS2_DEFAULT POWERPC_INSNS_PPC32
+#define POWERPC_INSNS2_DEFAULT POWERPC_INSNS2_PPC32
 #define POWERPC_MSRM_DEFAULT   POWERPC_MSRM_PPC32
 #define POWERPC_MMU_DEFAULT    POWERPC_MMU_PPC32
 #define POWERPC_EXCP_DEFAULT   POWERPC_EXCP_PPC32
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 13/16] kvm: Comparison with ioctl number macros needs to be unsigned
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (11 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 12/16] ppc: Correctly define POWERPC_INSNS2_DEFAULT Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 14/16] PPC: KVM: Synchronize regs on CPU dump Alexander Graf
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, aurelien, David Gibson

From: David Gibson <david@gibson.dropbear.id.au>

In kvm-all.c we store an ioctl cmd number in the irqchip_inject_ioctl field
of KVMState, which has type 'int'.  This seems to make sense since the
ioctl() man page says that the cmd parameter has type int.

However, the kernel treats ioctl numbers as unsigned - sys_ioctl() takes an
unsigned int, and the macros which generate ioctl numbers expand to
unsigned expressions.  Furthermore, some ioctls (IOC_READ ioctls on x86
and IOC_WRITE ioctls on powerpc) have bit 31 set, and so would be negative
if interpreted as an int. This has the surprising and compile-breaking
consequence that in kvm_irqchip_set_irq() where we do:
    return (s->irqchip_inject_ioctl == KVM_IRQ_LINE) ? 1 : event.status;
We will get a "comparison is always false due to limited range of data
type" warning from gcc if KVM_IRQ_LINE is one of the bit-31-set ioctls,
which it is on powerpc.

So, despite the fact that the man page and posix say ioctl numbers are
signed, they're actually unsigned.  The kernel uses unsigned, the glibc
header uses unsigned long, and FreeBSD, NetBSD and OSX also use unsigned
long ioctl numbers in the code.

Therefore, this patch changes the variable to be unsigned, fixing the
compile.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 kvm-all.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/kvm-all.c b/kvm-all.c
index 42e5e23..ba2cee1 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -79,7 +79,10 @@ struct KVMState
     int pit_state2;
     int xsave, xcrs;
     int many_ioeventfds;
-    int irqchip_inject_ioctl;
+    /* The man page (and posix) say ioctl numbers are signed int, but
+     * they're not.  Linux, glibc and *BSD all treat ioctl numbers as
+     * unsigned, and treating them as signed here can break things */
+    unsigned irqchip_inject_ioctl;
 #ifdef KVM_CAP_IRQ_ROUTING
     struct kvm_irq_routing *irq_routes;
     int nr_allocated_irq_routes;
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 14/16] PPC: KVM: Synchronize regs on CPU dump
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (12 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 13/16] kvm: Comparison with ioctl number macros needs to be unsigned Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 15/16] pseries: Configure PCI bridge using properties Alexander Graf
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, aurelien

When we dump the CPU registers, there's a certain chance they haven't been
synchronized with KVM yet, so we have to manually trigger that.

This aligns the code with x86 and fixes a bug where the register state was
bogus on invalid/unknown kvm exit reasons.

Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/translate.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 4722a09..c9a503a 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -9319,6 +9319,8 @@ void cpu_dump_state (CPUPPCState *env, FILE *f, fprintf_function cpu_fprintf,
 
     int i;
 
+    cpu_synchronize_state(env);
+
     cpu_fprintf(f, "NIP " TARGET_FMT_lx "   LR " TARGET_FMT_lx " CTR "
                 TARGET_FMT_lx " XER " TARGET_FMT_lx "\n",
                 env->nip, env->lr, env->ctr, env->xer);
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 15/16] pseries: Configure PCI bridge using properties
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (13 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 14/16] PPC: KVM: Synchronize regs on CPU dump Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 16/16] PPC: Fix openpic with relative memregions Alexander Graf
  2012-03-17 16:21 ` [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Blue Swirl
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel
  Cc: blauwirbel, Alexey Kardashevskiy, qemu-ppc, aurelien,
	David Gibson

From: David Gibson <david@gibson.dropbear.id.au>

Currently, the function spapr_create_phb() uses its parameters to
initialize the correct memory windows for the new PCI Host Bridge
(PHB).  This is not the way things are supposed to be done with qdevs,
and means you can't create extra PHBs easily using -device.

Since pSeries machines can and do have many PHBs with various
configurations, this is a real limitation, not just a theoretical.
This patch, therefore, alters the PHB initialization code to use qdev
properties to set these parameters of the new bridge, moving most of
the code from spapr_create_phb() to spapr_phb_init().

While we're at it, we change the naming of each PCI bus and its
associated memory regions to be less arbitrary and make it easier to
relate the guest and qemu views of memory to each other.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/spapr_pci.c |  166 +++++++++++++++++++++++++++++++-------------------------
 hw/spapr_pci.h |    4 +-
 2 files changed, 94 insertions(+), 76 deletions(-)

diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
index 233250f..e7ef551 100644
--- a/hw/spapr_pci.c
+++ b/hw/spapr_pci.c
@@ -180,49 +180,6 @@ static void pci_spapr_set_irq(void *opaque, int irq_num, int level)
     qemu_set_irq(phb->lsi_table[irq_num].qirq, level);
 }
 
-static int spapr_phb_init(SysBusDevice *s)
-{
-    sPAPRPHBState *phb = FROM_SYSBUS(sPAPRPHBState, s);
-    int i;
-
-    /* Initialize the LSI table */
-    for (i = 0; i < SPAPR_PCI_NUM_LSI; i++) {
-        qemu_irq qirq;
-        uint32_t num;
-
-        qirq = spapr_allocate_lsi(0, &num);
-        if (!qirq) {
-            return -1;
-        }
-
-        phb->lsi_table[i].dt_irq = num;
-        phb->lsi_table[i].qirq = qirq;
-    }
-
-    return 0;
-}
-
-static void spapr_phb_class_init(ObjectClass *klass, void *data)
-{
-    SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
-
-    sdc->init = spapr_phb_init;
-}
-
-static TypeInfo spapr_phb_info = {
-    .name          = "spapr-pci-host-bridge",
-    .parent        = TYPE_SYS_BUS_DEVICE,
-    .instance_size = sizeof(sPAPRPHBState),
-    .class_init    = spapr_phb_class_init,
-};
-
-static void spapr_register_types(void)
-{
-    type_register_static(&spapr_phb_info);
-}
-
-type_init(spapr_register_types)
-
 static uint64_t spapr_io_read(void *opaque, target_phys_addr_t addr,
                               unsigned size)
 {
@@ -260,35 +217,29 @@ static const MemoryRegionOps spapr_io_ops = {
     .write = spapr_io_write
 };
 
-void spapr_create_phb(sPAPREnvironment *spapr,
-                      const char *busname, uint64_t buid,
-                      uint64_t mem_win_addr, uint64_t mem_win_size,
-                      uint64_t io_win_addr)
+/*
+ * PHB PCI device
+ */
+static int spapr_phb_init(SysBusDevice *s)
 {
-    DeviceState *dev;
-    SysBusDevice *s;
-    sPAPRPHBState *phb;
+    sPAPRPHBState *phb = FROM_SYSBUS(sPAPRPHBState, s);
+    char *namebuf;
+    int i;
     PCIBus *bus;
-    char namebuf[strlen(busname)+11];
 
-    dev = qdev_create(NULL, "spapr-pci-host-bridge");
-    qdev_init_nofail(dev);
-    s = sysbus_from_qdev(dev);
-    phb = FROM_SYSBUS(sPAPRPHBState, s);
+    phb->dtbusname = g_strdup_printf("pci@%" PRIx64, phb->buid);
+    namebuf = alloca(strlen(phb->dtbusname) + 32);
 
-    phb->mem_win_addr = mem_win_addr;
-
-    sprintf(namebuf, "%s-mem", busname);
+    /* Initialize memory regions */
+    sprintf(namebuf, "%s.mmio", phb->dtbusname);
     memory_region_init(&phb->memspace, namebuf, INT64_MAX);
 
-    sprintf(namebuf, "%s-memwindow", busname);
+    sprintf(namebuf, "%s.mmio-alias", phb->dtbusname);
     memory_region_init_alias(&phb->memwindow, namebuf, &phb->memspace,
-                             SPAPR_PCI_MEM_WIN_BUS_OFFSET, mem_win_size);
-    memory_region_add_subregion(get_system_memory(), mem_win_addr,
+                             SPAPR_PCI_MEM_WIN_BUS_OFFSET, phb->mem_win_size);
+    memory_region_add_subregion(get_system_memory(), phb->mem_win_addr,
                                 &phb->memwindow);
 
-    phb->io_win_addr = io_win_addr;
-
     /* On ppc, we only have MMIO no specific IO space from the CPU
      * perspective.  In theory we ought to be able to embed the PCI IO
      * memory region direction in the system memory space.  However,
@@ -297,33 +248,92 @@ void spapr_create_phb(sPAPREnvironment *spapr,
      * system io address space.  This hack to bounce things via
      * system_io works around the problem until all the users of
      * old_portion are updated */
-    sprintf(namebuf, "%s-io", busname);
+    sprintf(namebuf, "%s.io", phb->dtbusname);
     memory_region_init(&phb->iospace, namebuf, SPAPR_PCI_IO_WIN_SIZE);
     /* FIXME: fix to support multiple PHBs */
     memory_region_add_subregion(get_system_io(), 0, &phb->iospace);
 
-    sprintf(namebuf, "%s-iowindow", busname);
+    sprintf(namebuf, "%s.io-alias", phb->dtbusname);
     memory_region_init_io(&phb->iowindow, &spapr_io_ops, phb,
                           namebuf, SPAPR_PCI_IO_WIN_SIZE);
-    memory_region_add_subregion(get_system_memory(), io_win_addr,
+    memory_region_add_subregion(get_system_memory(), phb->io_win_addr,
                                 &phb->iowindow);
 
-    phb->host_state.bus = bus = pci_register_bus(&phb->busdev.qdev, busname,
-                                                 pci_spapr_set_irq,
-                                                 pci_spapr_map_irq,
-                                                 phb,
-                                                 &phb->memspace, &phb->iospace,
-                                                 PCI_DEVFN(0, 0),
-                                                 SPAPR_PCI_NUM_LSI);
+    bus = pci_register_bus(&phb->busdev.qdev,
+                           phb->busname ? phb->busname : phb->dtbusname,
+                           pci_spapr_set_irq, pci_spapr_map_irq, phb,
+                           &phb->memspace, &phb->iospace,
+                           PCI_DEVFN(0, 0), SPAPR_PCI_NUM_LSI);
+    phb->host_state.bus = bus;
+
+    QLIST_INSERT_HEAD(&spapr->phbs, phb, list);
+
+    /* Initialize the LSI table */
+    for (i = 0; i < SPAPR_PCI_NUM_LSI; i++) {
+        qemu_irq qirq;
+        uint32_t num;
+
+        qirq = spapr_allocate_lsi(0, &num);
+        if (!qirq) {
+            return -1;
+        }
+
+        phb->lsi_table[i].dt_irq = num;
+        phb->lsi_table[i].qirq = qirq;
+    }
+
+    return 0;
+}
+
+static Property spapr_phb_properties[] = {
+    DEFINE_PROP_HEX64("buid", sPAPRPHBState, buid, 0),
+    DEFINE_PROP_STRING("busname", sPAPRPHBState, busname),
+    DEFINE_PROP_HEX64("mem_win_addr", sPAPRPHBState, mem_win_addr, 0),
+    DEFINE_PROP_HEX64("mem_win_size", sPAPRPHBState, mem_win_size, 0x20000000),
+    DEFINE_PROP_HEX64("io_win_addr", sPAPRPHBState, io_win_addr, 0),
+    DEFINE_PROP_HEX64("io_win_size", sPAPRPHBState, io_win_size, 0x10000),
+    DEFINE_PROP_END_OF_LIST(),
+};
+
+static void spapr_phb_class_init(ObjectClass *klass, void *data)
+{
+    SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
+    DeviceClass *dc = DEVICE_CLASS(klass);
+
+    sdc->init = spapr_phb_init;
+    dc->props = spapr_phb_properties;
 
     spapr_rtas_register("read-pci-config", rtas_read_pci_config);
     spapr_rtas_register("write-pci-config", rtas_write_pci_config);
     spapr_rtas_register("ibm,read-pci-config", rtas_ibm_read_pci_config);
     spapr_rtas_register("ibm,write-pci-config", rtas_ibm_write_pci_config);
+}
 
-    QLIST_INSERT_HEAD(&spapr->phbs, phb, list);
+static TypeInfo spapr_phb_info = {
+    .name          = "spapr-pci-host-bridge",
+    .parent        = TYPE_SYS_BUS_DEVICE,
+    .instance_size = sizeof(sPAPRPHBState),
+    .class_init    = spapr_phb_class_init,
+};
+
+void spapr_create_phb(sPAPREnvironment *spapr,
+                      const char *busname, uint64_t buid,
+                      uint64_t mem_win_addr, uint64_t mem_win_size,
+                      uint64_t io_win_addr)
+{
+    DeviceState *dev;
+
+    dev = qdev_create(NULL, spapr_phb_info.name);
 
-    /* pci_bus_set_mem_base(bus, mem_va_start - SPAPR_PCI_MEM_BAR_START); */
+    if (busname) {
+        qdev_prop_set_string(dev, "busname", g_strdup(busname));
+    }
+    qdev_prop_set_uint64(dev, "buid", buid);
+    qdev_prop_set_uint64(dev, "mem_win_addr", mem_win_addr);
+    qdev_prop_set_uint64(dev, "mem_win_size", mem_win_size);
+    qdev_prop_set_uint64(dev, "io_win_addr", io_win_addr);
+
+    qdev_init_nofail(dev);
 }
 
 /* Macros to operate with address in OF binding to PCI */
@@ -415,3 +425,9 @@ int spapr_populate_pci_devices(sPAPRPHBState *phb,
 
     return 0;
 }
+
+static void register_types(void)
+{
+    type_register_static(&spapr_phb_info);
+}
+type_init(register_types)
diff --git a/hw/spapr_pci.h b/hw/spapr_pci.h
index 213340c..039f85b 100644
--- a/hw/spapr_pci.h
+++ b/hw/spapr_pci.h
@@ -33,9 +33,11 @@ typedef struct sPAPRPHBState {
     PCIHostState host_state;
 
     uint64_t buid;
+    char *busname;
+    char *dtbusname;
 
     MemoryRegion memspace, iospace;
-    target_phys_addr_t mem_win_addr, io_win_addr;
+    target_phys_addr_t mem_win_addr, mem_win_size, io_win_addr, io_win_size;
     MemoryRegion memwindow, iowindow;
 
     struct {
-- 
1.6.0.2

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

* [Qemu-devel] [PATCH 16/16] PPC: Fix openpic with relative memregions
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (14 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 15/16] pseries: Configure PCI bridge using properties Alexander Graf
@ 2012-03-15 12:14 ` Alexander Graf
  2012-03-17 16:21 ` [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Blue Swirl
  16 siblings, 0 replies; 18+ messages in thread
From: Alexander Graf @ 2012-03-15 12:14 UTC (permalink / raw)
  To: qemu-devel qemu-devel; +Cc: blauwirbel, qemu-ppc, aurelien

After commit 5312bd8b3152 we got memory region relative offsets into our mmio
callbacks instead of page boundary based offsets.

This broke the OpenPIC emulation which expected offsets to be on page boundary
and substracted its region offset manually.

This patch gets rid of that manual substraction and lets the memory api do its
magic instead.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/openpic.c |   12 ++----------
 1 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/hw/openpic.c b/hw/openpic.c
index 280b7a9..58ef871 100644
--- a/hw/openpic.c
+++ b/hw/openpic.c
@@ -713,7 +713,7 @@ static void openpic_timer_write (void *opaque, uint32_t addr, uint32_t val)
     DPRINTF("%s: addr %08x <= %08x\n", __func__, addr, val);
     if (addr & 0xF)
         return;
-    addr -= 0x1100;
+    addr -= 0x10;
     addr &= 0xFFFF;
     idx = (addr & 0xFFF0) >> 6;
     addr = addr & 0x30;
@@ -746,7 +746,7 @@ static uint32_t openpic_timer_read (void *opaque, uint32_t addr)
     retval = 0xFFFFFFFF;
     if (addr & 0xF)
         return retval;
-    addr -= 0x1100;
+    addr -= 0x10;
     addr &= 0xFFFF;
     idx = (addr & 0xFFF0) >> 6;
     addr = addr & 0x30;
@@ -1361,7 +1361,6 @@ static void mpic_src_ext_write (void *opaque, target_phys_addr_t addr,
     if (addr & 0xF)
         return;
 
-    addr -= MPIC_EXT_REG_START & (OPENPIC_PAGE_SIZE - 1);
     if (addr < MPIC_EXT_REG_SIZE) {
         idx += (addr & 0xFFF0) >> 5;
         if (addr & 0x10) {
@@ -1385,7 +1384,6 @@ static uint32_t mpic_src_ext_read (void *opaque, target_phys_addr_t addr)
     if (addr & 0xF)
         return retval;
 
-    addr -= MPIC_EXT_REG_START & (OPENPIC_PAGE_SIZE - 1);
     if (addr < MPIC_EXT_REG_SIZE) {
         idx += (addr & 0xFFF0) >> 5;
         if (addr & 0x10) {
@@ -1411,7 +1409,6 @@ static void mpic_src_int_write (void *opaque, target_phys_addr_t addr,
     if (addr & 0xF)
         return;
 
-    addr -= MPIC_INT_REG_START & (OPENPIC_PAGE_SIZE - 1);
     if (addr < MPIC_INT_REG_SIZE) {
         idx += (addr & 0xFFF0) >> 5;
         if (addr & 0x10) {
@@ -1435,7 +1432,6 @@ static uint32_t mpic_src_int_read (void *opaque, target_phys_addr_t addr)
     if (addr & 0xF)
         return retval;
 
-    addr -= MPIC_INT_REG_START & (OPENPIC_PAGE_SIZE - 1);
     if (addr < MPIC_INT_REG_SIZE) {
         idx += (addr & 0xFFF0) >> 5;
         if (addr & 0x10) {
@@ -1461,7 +1457,6 @@ static void mpic_src_msg_write (void *opaque, target_phys_addr_t addr,
     if (addr & 0xF)
         return;
 
-    addr -= MPIC_MSG_REG_START & (OPENPIC_PAGE_SIZE - 1);
     if (addr < MPIC_MSG_REG_SIZE) {
         idx += (addr & 0xFFF0) >> 5;
         if (addr & 0x10) {
@@ -1485,7 +1480,6 @@ static uint32_t mpic_src_msg_read (void *opaque, target_phys_addr_t addr)
     if (addr & 0xF)
         return retval;
 
-    addr -= MPIC_MSG_REG_START & (OPENPIC_PAGE_SIZE - 1);
     if (addr < MPIC_MSG_REG_SIZE) {
         idx += (addr & 0xFFF0) >> 5;
         if (addr & 0x10) {
@@ -1511,7 +1505,6 @@ static void mpic_src_msi_write (void *opaque, target_phys_addr_t addr,
     if (addr & 0xF)
         return;
 
-    addr -= MPIC_MSI_REG_START & (OPENPIC_PAGE_SIZE - 1);
     if (addr < MPIC_MSI_REG_SIZE) {
         idx += (addr & 0xFFF0) >> 5;
         if (addr & 0x10) {
@@ -1534,7 +1527,6 @@ static uint32_t mpic_src_msi_read (void *opaque, target_phys_addr_t addr)
     if (addr & 0xF)
         return retval;
 
-    addr -= MPIC_MSI_REG_START & (OPENPIC_PAGE_SIZE - 1);
     if (addr < MPIC_MSI_REG_SIZE) {
         idx += (addr & 0xFFF0) >> 5;
         if (addr & 0x10) {
-- 
1.6.0.2

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

* Re: [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15
  2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
                   ` (15 preceding siblings ...)
  2012-03-15 12:14 ` [Qemu-devel] [PATCH 16/16] PPC: Fix openpic with relative memregions Alexander Graf
@ 2012-03-17 16:21 ` Blue Swirl
  16 siblings, 0 replies; 18+ messages in thread
From: Blue Swirl @ 2012-03-17 16:21 UTC (permalink / raw)
  To: Alexander Graf; +Cc: qemu-ppc, qemu-devel qemu-devel, aurelien

On Thu, Mar 15, 2012 at 12:14, Alexander Graf <agraf@suse.de> wrote:
> Hi Blue / Aurelien,
>
> This is my current patch queue for ppc. Please pull.

Thanks, pulled.

> Alex
>
>
> The following changes since commit ae7d54d489540b49b7c13a7df7ddc220588a2ced:
>  Andreas Färber (1):
>        target-lm32/microblaze: Drop second CPU{LM32, MB}State typedef
>
> are available in the git repository at:
>
>  git://repo.or.cz/qemu/agraf.git ppc-for-upstream
>
> Alex Barcelo (1):
>      Bad zero comparison for sas_ss_flags on powerpc
>
> Alexander Graf (3):
>      PPC: 405: Fix ppc405ep initialization
>      PPC: KVM: Synchronize regs on CPU dump
>      PPC: Fix openpic with relative memregions
>
> Alexey Kardashevskiy (1):
>      pseries: Remove PCI device from PCI host bridge code
>
> David Gibson (6):
>      pseries: Don't try to munmap() a malloc()ed TCE table
>      pseries: Update SLOF firmware image
>      pseries: Remove unused constant from PCI code
>      pseries: Add support for level interrupts to XICS
>      kvm: Comparison with ioctl number macros needs to be unsigned
>      pseries: Configure PCI bridge using properties
>
> Meador Inge (1):
>      ppc: Correctly define POWERPC_INSNS2_DEFAULT
>
> Nathan Whitehorn (2):
>      PPC: Add PIR register to POWER7 CPU
>      PPC: Fix large page support in TCG
>
> Stefan Weil (1):
>      ppc: Add missing 'static' to spin_rw_ops
>
> Thomas Huth (1):
>      PPC64: Add support for ldbrx and stdbrx instructions
>
>  hw/openpic.c                |   12 +--
>  hw/ppc405_uc.c              |    2 +
>  hw/ppce500_spin.c           |    2 +-
>  hw/spapr.c                  |    5 +-
>  hw/spapr.h                  |   13 +++-
>  hw/spapr_pci.c              |  193 ++++++++++++++++++++-----------------------
>  hw/spapr_pci.h              |    4 +-
>  hw/spapr_vio.c              |    2 +-
>  hw/xics.c                   |  125 +++++++++++++++++++++-------
>  hw/xics.h                   |    8 ++-
>  kvm-all.c                   |    5 +-
>  linux-user/signal.c         |    2 +-
>  pc-bios/README              |    2 +-
>  pc-bios/slof.bin            |  Bin 869584 -> 880496 bytes
>  roms/SLOF                   |    2 +-
>  target-ppc/cpu.h            |    4 +-
>  target-ppc/helper.c         |   12 ++--
>  target-ppc/kvm.c            |   12 ++-
>  target-ppc/translate.c      |   54 ++++++++++--
>  target-ppc/translate_init.c |   11 ++-
>  20 files changed, 294 insertions(+), 176 deletions(-)

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

end of thread, other threads:[~2012-03-17 16:21 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-15 12:14 [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 01/16] Bad zero comparison for sas_ss_flags on powerpc Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 02/16] PPC: 405: Fix ppc405ep initialization Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 03/16] ppc: Add missing 'static' to spin_rw_ops Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 04/16] pseries: Don't try to munmap() a malloc()ed TCE table Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 05/16] PPC64: Add support for ldbrx and stdbrx instructions Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 06/16] pseries: Update SLOF firmware image Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 07/16] pseries: Remove unused constant from PCI code Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 08/16] pseries: Remove PCI device from PCI host bridge code Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 09/16] PPC: Add PIR register to POWER7 CPU Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 10/16] PPC: Fix large page support in TCG Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 11/16] pseries: Add support for level interrupts to XICS Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 12/16] ppc: Correctly define POWERPC_INSNS2_DEFAULT Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 13/16] kvm: Comparison with ioctl number macros needs to be unsigned Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 14/16] PPC: KVM: Synchronize regs on CPU dump Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 15/16] pseries: Configure PCI bridge using properties Alexander Graf
2012-03-15 12:14 ` [Qemu-devel] [PATCH 16/16] PPC: Fix openpic with relative memregions Alexander Graf
2012-03-17 16:21 ` [Qemu-devel] [PULL 00/16] ppc patch queue 2012-03-15 Blue Swirl

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).