qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/4] arm-devs queue
@ 2012-01-18 12:13 Peter Maydell
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 1/4] vexpress, realview: Add (dummy) L2 cache controller Peter Maydell
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Peter Maydell @ 2012-01-18 12:13 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel

This is a smallish pullreq for a few arm-devs patches which have been on
the list for a while. The two patches from Mark were in the highbank
patchset, but I'd like to get them committed now because they're needed
for other patchsets (vexpress-a15, exynos). Please pull.

thanks
-- PMM

The following changes since commit 8c4ec5c0269bda18bb777a64b2008088d1c632dc:

  pxa2xx_keypad: fix unbalanced parenthesis. (2012-01-17 02:14:42 +0100)

are available in the git repository at:
  git://git.linaro.org/people/pmaydell/qemu-arm.git arm-devs.for-upstream

Mark Langsdorf (2):
      arm: Remove incorrect comment in arm_timer
      arm: make the number of GIC interrupts configurable

Peter Maydell (2):
      vexpress, realview: Add (dummy) L2 cache controller
      hw/lan9118: Add save/load support

 hw/a9mpcore.c     |   13 ++++-
 hw/arm11mpcore.c  |   17 +++++---
 hw/arm_gic.c      |   68 ++++++++++++++++-------------
 hw/arm_timer.c    |    3 -
 hw/armv7m_nvic.c  |   31 ++++++++++---
 hw/lan9118.c      |  126 +++++++++++++++++++++++++++++++++++++++++++----------
 hw/realview.c     |    2 +
 hw/realview_gic.c |    7 ++-
 hw/vexpress.c     |    1 +
 9 files changed, 193 insertions(+), 75 deletions(-)

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

* [Qemu-devel] [PATCH 1/4] vexpress, realview: Add (dummy) L2 cache controller
  2012-01-18 12:13 [Qemu-devel] [PULL 0/4] arm-devs queue Peter Maydell
@ 2012-01-18 12:13 ` Peter Maydell
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 2/4] arm: Remove incorrect comment in arm_timer Peter Maydell
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 13+ messages in thread
From: Peter Maydell @ 2012-01-18 12:13 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel

Instantiate the L2 cache controller on the ARM devboards which have one,
since we have a dummy model of it now. Note that the only non-MP board
with an L2x0 is the PB1176, which we don't model.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/realview.c |    2 ++
 hw/vexpress.c |    1 +
 2 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/hw/realview.c b/hw/realview.c
index 3f35118..d2fde44 100644
--- a/hw/realview.c
+++ b/hw/realview.c
@@ -227,6 +227,8 @@ static void realview_init(ram_addr_t ram_size,
         for (n = 0; n < smp_cpus; n++) {
             sysbus_connect_irq(busdev, n, cpu_irq[n]);
         }
+        sysbus_create_varargs("l2x0", realview_binfo.smp_priv_base + 0x2000,
+                              NULL);
     } else {
         uint32_t gic_addr = is_pb ? 0x1e000000 : 0x10040000;
         /* For now just create the nIRQ GIC, and ignore the others.  */
diff --git a/hw/vexpress.c b/hw/vexpress.c
index 7111556..64fab45 100644
--- a/hw/vexpress.c
+++ b/hw/vexpress.c
@@ -182,6 +182,7 @@ static void vexpress_a9_init(ram_addr_t ram_size,
     /* 0x100ec000 TrustZone Address Space Controller */
     /* 0x10200000 CoreSight debug APB */
     /* 0x1e00a000 PL310 L2 Cache Controller */
+    sysbus_create_varargs("l2x0", 0x1e00a000, NULL);
 
     /* CS0: NOR0 flash          : 0x40000000 .. 0x44000000 */
     /* CS4: NOR1 flash          : 0x44000000 .. 0x48000000 */
-- 
1.7.1

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

* [Qemu-devel] [PATCH 2/4] arm: Remove incorrect comment in arm_timer
  2012-01-18 12:13 [Qemu-devel] [PULL 0/4] arm-devs queue Peter Maydell
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 1/4] vexpress, realview: Add (dummy) L2 cache controller Peter Maydell
@ 2012-01-18 12:13 ` Peter Maydell
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 3/4] hw/lan9118: Add save/load support Peter Maydell
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 13+ messages in thread
From: Peter Maydell @ 2012-01-18 12:13 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Mark Langsdorf

From: Mark Langsdorf <mark.langsdorf@calxeda.com>

The current comment says that the arm_timers are restricted to between
32 KHz and 1 MHz, but sp804 TRM does not specify those limits.

Signed-off-by: Mark Langsdorf <mark.langsdorf@calxeda.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/arm_timer.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/hw/arm_timer.c b/hw/arm_timer.c
index 1902f1a..ead2535 100644
--- a/hw/arm_timer.c
+++ b/hw/arm_timer.c
@@ -273,11 +273,8 @@ static int sp804_init(SysBusDevice *dev)
 
     qi = qemu_allocate_irqs(sp804_set_irq, s, 2);
     sysbus_init_irq(dev, &s->irq);
-    /* The timers are configurable between 32kHz and 1MHz
-     * defaulting to 1MHz but overrideable as individual properties */
     s->timer[0] = arm_timer_init(s->freq0);
     s->timer[1] = arm_timer_init(s->freq1);
-
     s->timer[0]->irq = qi[0];
     s->timer[1]->irq = qi[1];
     memory_region_init_io(&s->iomem, &sp804_ops, s, "sp804", 0x1000);
-- 
1.7.1

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

* [Qemu-devel] [PATCH 3/4] hw/lan9118: Add save/load support
  2012-01-18 12:13 [Qemu-devel] [PULL 0/4] arm-devs queue Peter Maydell
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 1/4] vexpress, realview: Add (dummy) L2 cache controller Peter Maydell
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 2/4] arm: Remove incorrect comment in arm_timer Peter Maydell
@ 2012-01-18 12:13 ` Peter Maydell
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 4/4] arm: make the number of GIC interrupts configurable Peter Maydell
  2012-01-19 18:48 ` [Qemu-devel] [PULL 0/4] arm-devs queue Anthony Liguori
  4 siblings, 0 replies; 13+ messages in thread
From: Peter Maydell @ 2012-01-18 12:13 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel

Implement save/load for the LAN9118.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Andreas Färber <afaerber@suse.de>
---
 hw/lan9118.c |  126 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 103 insertions(+), 23 deletions(-)

diff --git a/hw/lan9118.c b/hw/lan9118.c
index 8b83fe2..9b199d0 100644
--- a/hw/lan9118.c
+++ b/hw/lan9118.c
@@ -140,17 +140,36 @@ enum tx_state {
 };
 
 typedef struct {
-    enum tx_state state;
+    /* state is a tx_state but we can't put enums in VMStateDescriptions. */
+    uint32_t state;
     uint32_t cmd_a;
     uint32_t cmd_b;
-    int buffer_size;
-    int offset;
-    int pad;
-    int fifo_used;
-    int len;
+    int32_t buffer_size;
+    int32_t offset;
+    int32_t pad;
+    int32_t fifo_used;
+    int32_t len;
     uint8_t data[2048];
 } LAN9118Packet;
 
+static const VMStateDescription vmstate_lan9118_packet = {
+    .name = "lan9118_packet",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT32(state, LAN9118Packet),
+        VMSTATE_UINT32(cmd_a, LAN9118Packet),
+        VMSTATE_UINT32(cmd_b, LAN9118Packet),
+        VMSTATE_INT32(buffer_size, LAN9118Packet),
+        VMSTATE_INT32(offset, LAN9118Packet),
+        VMSTATE_INT32(pad, LAN9118Packet),
+        VMSTATE_INT32(fifo_used, LAN9118Packet),
+        VMSTATE_INT32(len, LAN9118Packet),
+        VMSTATE_UINT8_ARRAY(data, LAN9118Packet, 2048),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 typedef struct {
     SysBusDevice busdev;
     NICState *nic;
@@ -190,34 +209,95 @@ typedef struct {
     uint32_t phy_int;
     uint32_t phy_int_mask;
 
-    int eeprom_writable;
+    int32_t eeprom_writable;
     uint8_t eeprom[128];
 
-    int tx_fifo_size;
+    int32_t tx_fifo_size;
     LAN9118Packet *txp;
     LAN9118Packet tx_packet;
 
-    int tx_status_fifo_used;
-    int tx_status_fifo_head;
+    int32_t tx_status_fifo_used;
+    int32_t tx_status_fifo_head;
     uint32_t tx_status_fifo[512];
 
-    int rx_status_fifo_size;
-    int rx_status_fifo_used;
-    int rx_status_fifo_head;
+    int32_t rx_status_fifo_size;
+    int32_t rx_status_fifo_used;
+    int32_t rx_status_fifo_head;
     uint32_t rx_status_fifo[896];
-    int rx_fifo_size;
-    int rx_fifo_used;
-    int rx_fifo_head;
+    int32_t rx_fifo_size;
+    int32_t rx_fifo_used;
+    int32_t rx_fifo_head;
     uint32_t rx_fifo[3360];
-    int rx_packet_size_head;
-    int rx_packet_size_tail;
-    int rx_packet_size[1024];
+    int32_t rx_packet_size_head;
+    int32_t rx_packet_size_tail;
+    int32_t rx_packet_size[1024];
 
-    int rxp_offset;
-    int rxp_size;
-    int rxp_pad;
+    int32_t rxp_offset;
+    int32_t rxp_size;
+    int32_t rxp_pad;
 } lan9118_state;
 
+static const VMStateDescription vmstate_lan9118 = {
+    .name = "lan9118",
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_PTIMER(timer, lan9118_state),
+        VMSTATE_UINT32(irq_cfg, lan9118_state),
+        VMSTATE_UINT32(int_sts, lan9118_state),
+        VMSTATE_UINT32(int_en, lan9118_state),
+        VMSTATE_UINT32(fifo_int, lan9118_state),
+        VMSTATE_UINT32(rx_cfg, lan9118_state),
+        VMSTATE_UINT32(tx_cfg, lan9118_state),
+        VMSTATE_UINT32(hw_cfg, lan9118_state),
+        VMSTATE_UINT32(pmt_ctrl, lan9118_state),
+        VMSTATE_UINT32(gpio_cfg, lan9118_state),
+        VMSTATE_UINT32(gpt_cfg, lan9118_state),
+        VMSTATE_UINT32(word_swap, lan9118_state),
+        VMSTATE_UINT32(free_timer_start, lan9118_state),
+        VMSTATE_UINT32(mac_cmd, lan9118_state),
+        VMSTATE_UINT32(mac_data, lan9118_state),
+        VMSTATE_UINT32(afc_cfg, lan9118_state),
+        VMSTATE_UINT32(e2p_cmd, lan9118_state),
+        VMSTATE_UINT32(e2p_data, lan9118_state),
+        VMSTATE_UINT32(mac_cr, lan9118_state),
+        VMSTATE_UINT32(mac_hashh, lan9118_state),
+        VMSTATE_UINT32(mac_hashl, lan9118_state),
+        VMSTATE_UINT32(mac_mii_acc, lan9118_state),
+        VMSTATE_UINT32(mac_mii_data, lan9118_state),
+        VMSTATE_UINT32(mac_flow, lan9118_state),
+        VMSTATE_UINT32(phy_status, lan9118_state),
+        VMSTATE_UINT32(phy_control, lan9118_state),
+        VMSTATE_UINT32(phy_advertise, lan9118_state),
+        VMSTATE_UINT32(phy_int, lan9118_state),
+        VMSTATE_UINT32(phy_int_mask, lan9118_state),
+        VMSTATE_INT32(eeprom_writable, lan9118_state),
+        VMSTATE_UINT8_ARRAY(eeprom, lan9118_state, 128),
+        VMSTATE_INT32(tx_fifo_size, lan9118_state),
+        /* txp always points at tx_packet so need not be saved */
+        VMSTATE_STRUCT(tx_packet, lan9118_state, 0,
+                       vmstate_lan9118_packet, LAN9118Packet),
+        VMSTATE_INT32(tx_status_fifo_used, lan9118_state),
+        VMSTATE_INT32(tx_status_fifo_head, lan9118_state),
+        VMSTATE_UINT32_ARRAY(tx_status_fifo, lan9118_state, 512),
+        VMSTATE_INT32(rx_status_fifo_size, lan9118_state),
+        VMSTATE_INT32(rx_status_fifo_used, lan9118_state),
+        VMSTATE_INT32(rx_status_fifo_head, lan9118_state),
+        VMSTATE_UINT32_ARRAY(rx_status_fifo, lan9118_state, 896),
+        VMSTATE_INT32(rx_fifo_size, lan9118_state),
+        VMSTATE_INT32(rx_fifo_used, lan9118_state),
+        VMSTATE_INT32(rx_fifo_head, lan9118_state),
+        VMSTATE_UINT32_ARRAY(rx_fifo, lan9118_state, 3360),
+        VMSTATE_INT32(rx_packet_size_head, lan9118_state),
+        VMSTATE_INT32(rx_packet_size_tail, lan9118_state),
+        VMSTATE_INT32_ARRAY(rx_packet_size, lan9118_state, 1024),
+        VMSTATE_INT32(rxp_offset, lan9118_state),
+        VMSTATE_INT32(rxp_size, lan9118_state),
+        VMSTATE_INT32(rxp_pad, lan9118_state),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static void lan9118_update(lan9118_state *s)
 {
     int level;
@@ -1155,7 +1235,6 @@ static int lan9118_init1(SysBusDevice *dev)
     ptimer_set_freq(s->timer, 10000);
     ptimer_set_limit(s->timer, 0xffff, 1);
 
-    /* ??? Save/restore.  */
     return 0;
 }
 
@@ -1164,6 +1243,7 @@ static SysBusDeviceInfo lan9118_info = {
     .qdev.name  = "lan9118",
     .qdev.size  = sizeof(lan9118_state),
     .qdev.reset = lan9118_reset,
+    .qdev.vmsd = &vmstate_lan9118,
     .qdev.props = (Property[]) {
         DEFINE_NIC_PROPERTIES(lan9118_state, conf),
         DEFINE_PROP_END_OF_LIST(),
-- 
1.7.1

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

* [Qemu-devel] [PATCH 4/4] arm: make the number of GIC interrupts configurable
  2012-01-18 12:13 [Qemu-devel] [PULL 0/4] arm-devs queue Peter Maydell
                   ` (2 preceding siblings ...)
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 3/4] hw/lan9118: Add save/load support Peter Maydell
@ 2012-01-18 12:13 ` Peter Maydell
  2012-01-19 18:48 ` [Qemu-devel] [PULL 0/4] arm-devs queue Anthony Liguori
  4 siblings, 0 replies; 13+ messages in thread
From: Peter Maydell @ 2012-01-18 12:13 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Mark Langsdorf

From: Mark Langsdorf <mark.langsdorf@calxeda.com>

Increase the maximum number of GIC interrupts for a9mp and a11mp to 1020,
and create a configurable property for each defaulting to 96 and 64
(respectively) so that device modelers can set the value appropriately
for their SoC. Other ARM processors also set their maximum number of
used IRQs appropriately.

Set the maximum theoretical number of GIC interrupts to 1020 and
update the save/restore code to only use the appropriate number for
each SoC.

Signed-off-by: Mark Langsdorf <mark.langsdorf@calxeda.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
[Peter Maydell: fixed minor whitespace snafu]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/a9mpcore.c     |   13 +++++++--
 hw/arm11mpcore.c  |   17 ++++++++----
 hw/arm_gic.c      |   68 +++++++++++++++++++++++++++++-----------------------
 hw/armv7m_nvic.c  |   31 ++++++++++++++++++------
 hw/realview_gic.c |    7 ++++-
 5 files changed, 87 insertions(+), 49 deletions(-)

diff --git a/hw/a9mpcore.c b/hw/a9mpcore.c
index 3ef0e13..521b8cc 100644
--- a/hw/a9mpcore.c
+++ b/hw/a9mpcore.c
@@ -11,9 +11,8 @@
 #include "sysbus.h"
 
 /* Configuration for arm_gic.c:
- * number of external IRQ lines, max number of CPUs, how to ID current CPU
+ * max number of CPUs, how to ID current CPU
  */
-#define GIC_NIRQ 96
 #define NCPU 4
 
 static inline int
@@ -37,6 +36,7 @@ typedef struct a9mp_priv_state {
     MemoryRegion ptimer_iomem;
     MemoryRegion container;
     DeviceState *mptimer;
+    uint32_t num_irq;
 } a9mp_priv_state;
 
 static uint64_t a9_scu_read(void *opaque, target_phys_addr_t offset,
@@ -153,7 +153,7 @@ static int a9mp_priv_init(SysBusDevice *dev)
         hw_error("a9mp_priv_init: num-cpu may not be more than %d\n", NCPU);
     }
 
-    gic_init(&s->gic, s->num_cpu);
+    gic_init(&s->gic, s->num_cpu, s->num_irq);
 
     s->mptimer = qdev_create(NULL, "arm_mptimer");
     qdev_prop_set_uint32(s->mptimer, "num-cpu", s->num_cpu);
@@ -216,6 +216,13 @@ static SysBusDeviceInfo a9mp_priv_info = {
     .qdev.reset = a9mp_priv_reset,
     .qdev.props = (Property[]) {
         DEFINE_PROP_UINT32("num-cpu", a9mp_priv_state, num_cpu, 1),
+        /* The Cortex-A9MP may have anything from 0 to 224 external interrupt
+         * IRQ lines (with another 32 internal). We default to 64+32, which
+         * is the number provided by the Cortex-A9MP test chip in the
+         * Realview PBX-A9 and Versatile Express A9 development boards.
+         * Other boards may differ and should set this property appropriately.
+         */
+        DEFINE_PROP_UINT32("num-irq", a9mp_priv_state, num_irq, 96),
         DEFINE_PROP_END_OF_LIST(),
     }
 };
diff --git a/hw/arm11mpcore.c b/hw/arm11mpcore.c
index bc0457e..f4d88dc 100644
--- a/hw/arm11mpcore.c
+++ b/hw/arm11mpcore.c
@@ -10,11 +10,6 @@
 #include "sysbus.h"
 #include "qemu-timer.h"
 
-/* ??? The MPCore TRM says the on-chip controller has 224 external IRQ lines
-   (+ 32 internal).  However my test chip only exposes/reports 32.
-   More importantly Linux falls over if more than 32 are present!  */
-#define GIC_NIRQ 64
-
 #define NCPU 4
 
 static inline int
@@ -37,6 +32,7 @@ typedef struct mpcore_priv_state {
     MemoryRegion iomem;
     MemoryRegion container;
     DeviceState *mptimer;
+    uint32_t num_irq;
 } mpcore_priv_state;
 
 /* Per-CPU private memory mapped IO.  */
@@ -132,7 +128,7 @@ static int mpcore_priv_init(SysBusDevice *dev)
 {
     mpcore_priv_state *s = FROM_SYSBUSGIC(mpcore_priv_state, dev);
 
-    gic_init(&s->gic, s->num_cpu);
+    gic_init(&s->gic, s->num_cpu, s->num_irq);
     s->mptimer = qdev_create(NULL, "arm_mptimer");
     qdev_prop_set_uint32(s->mptimer, "num-cpu", s->num_cpu);
     qdev_init_nofail(s->mptimer);
@@ -221,6 +217,15 @@ static SysBusDeviceInfo mpcore_priv_info = {
     .qdev.size  = sizeof(mpcore_priv_state),
     .qdev.props = (Property[]) {
         DEFINE_PROP_UINT32("num-cpu", mpcore_priv_state, num_cpu, 1),
+        /* The ARM11 MPCORE TRM says the on-chip controller may have
+         * anything from 0 to 224 external interrupt IRQ lines (with another
+         * 32 internal). We default to 32+32, which is the number provided by
+         * the ARM11 MPCore test chip in the Realview Versatile Express
+         * coretile. Other boards may differ and should set this property
+         * appropriately. Some Linux kernels may not boot if the hardware
+         * has more IRQ lines than the kernel expects.
+         */
+        DEFINE_PROP_UINT32("num-irq", mpcore_priv_state, num_irq, 64),
         DEFINE_PROP_END_OF_LIST(),
     }
 };
diff --git a/hw/arm_gic.c b/hw/arm_gic.c
index 0339cf5..cf582a5 100644
--- a/hw/arm_gic.c
+++ b/hw/arm_gic.c
@@ -11,6 +11,8 @@
    controller, MPCore distributed interrupt controller and ARMv7-M
    Nested Vectored Interrupt Controller.  */
 
+/* Maximum number of possible interrupts, determined by the GIC architecture */
+#define GIC_MAXIRQ 1020
 //#define DEBUG_GIC
 
 #ifdef DEBUG_GIC
@@ -86,13 +88,13 @@ typedef struct gic_state
     int enabled;
     int cpu_enabled[NCPU];
 
-    gic_irq_state irq_state[GIC_NIRQ];
+    gic_irq_state irq_state[GIC_MAXIRQ];
 #ifndef NVIC
-    int irq_target[GIC_NIRQ];
+    int irq_target[GIC_MAXIRQ];
 #endif
     int priority1[32][NCPU];
-    int priority2[GIC_NIRQ - 32];
-    int last_active[GIC_NIRQ][NCPU];
+    int priority2[GIC_MAXIRQ - 32];
+    int last_active[GIC_MAXIRQ][NCPU];
 
     int priority_mask[NCPU];
     int running_irq[NCPU];
@@ -111,6 +113,7 @@ typedef struct gic_state
     struct gic_state *backref[NCPU];
     MemoryRegion cpuiomem[NCPU+1]; /* CPU interfaces */
 #endif
+    uint32_t num_irq;
 } gic_state;
 
 /* TODO: Many places that call this routine could be optimized.  */
@@ -133,7 +136,7 @@ static void gic_update(gic_state *s)
         }
         best_prio = 0x100;
         best_irq = 1023;
-        for (irq = 0; irq < GIC_NIRQ; irq++) {
+        for (irq = 0; irq < s->num_irq; irq++) {
             if (GIC_TEST_ENABLED(irq, cm) && GIC_TEST_PENDING(irq, cm)) {
                 if (GIC_GET_PRIORITY(irq, cpu) < best_prio) {
                     best_prio = GIC_GET_PRIORITY(irq, cpu);
@@ -222,7 +225,7 @@ static void gic_complete_irq(gic_state * s, int cpu, int irq)
     int update = 0;
     int cm = 1 << cpu;
     DPRINTF("EOI %d\n", irq);
-    if (irq >= GIC_NIRQ) {
+    if (irq >= s->num_irq) {
         /* This handles two cases:
          * 1. If software writes the ID of a spurious interrupt [ie 1023]
          * to the GICC_EOIR, the GIC ignores that write.
@@ -279,7 +282,7 @@ static uint32_t gic_dist_readb(void *opaque, target_phys_addr_t offset)
         if (offset == 0)
             return s->enabled;
         if (offset == 4)
-            return ((GIC_NIRQ / 32) - 1) | ((NUM_CPU(s) - 1) << 5);
+            return ((s->num_irq / 32) - 1) | ((NUM_CPU(s) - 1) << 5);
         if (offset < 0x08)
             return 0;
         if (offset >= 0x80) {
@@ -295,7 +298,7 @@ static uint32_t gic_dist_readb(void *opaque, target_phys_addr_t offset)
         else
             irq = (offset - 0x180) * 8;
         irq += GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         res = 0;
         for (i = 0; i < 8; i++) {
@@ -310,7 +313,7 @@ static uint32_t gic_dist_readb(void *opaque, target_phys_addr_t offset)
         else
             irq = (offset - 0x280) * 8;
         irq += GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         res = 0;
         mask = (irq < 32) ?  cm : ALL_CPU_MASK;
@@ -322,7 +325,7 @@ static uint32_t gic_dist_readb(void *opaque, target_phys_addr_t offset)
     } else if (offset < 0x400) {
         /* Interrupt Active.  */
         irq = (offset - 0x300) * 8 + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         res = 0;
         mask = (irq < 32) ?  cm : ALL_CPU_MASK;
@@ -334,14 +337,14 @@ static uint32_t gic_dist_readb(void *opaque, target_phys_addr_t offset)
     } else if (offset < 0x800) {
         /* Interrupt Priority.  */
         irq = (offset - 0x400) + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         res = GIC_GET_PRIORITY(irq, cpu);
 #ifndef NVIC
     } else if (offset < 0xc00) {
         /* Interrupt CPU Target.  */
         irq = (offset - 0x800) + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         if (irq >= 29 && irq <= 31) {
             res = cm;
@@ -351,7 +354,7 @@ static uint32_t gic_dist_readb(void *opaque, target_phys_addr_t offset)
     } else if (offset < 0xf00) {
         /* Interrupt Configuration.  */
         irq = (offset - 0xc00) * 2 + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         res = 0;
         for (i = 0; i < 4; i++) {
@@ -426,7 +429,7 @@ static void gic_dist_writeb(void *opaque, target_phys_addr_t offset,
     } else if (offset < 0x180) {
         /* Interrupt Set Enable.  */
         irq = (offset - 0x100) * 8 + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         if (irq < 16)
           value = 0xff;
@@ -451,7 +454,7 @@ static void gic_dist_writeb(void *opaque, target_phys_addr_t offset,
     } else if (offset < 0x200) {
         /* Interrupt Clear Enable.  */
         irq = (offset - 0x180) * 8 + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         if (irq < 16)
           value = 0;
@@ -468,7 +471,7 @@ static void gic_dist_writeb(void *opaque, target_phys_addr_t offset,
     } else if (offset < 0x280) {
         /* Interrupt Set Pending.  */
         irq = (offset - 0x200) * 8 + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         if (irq < 16)
           irq = 0;
@@ -481,7 +484,7 @@ static void gic_dist_writeb(void *opaque, target_phys_addr_t offset,
     } else if (offset < 0x300) {
         /* Interrupt Clear Pending.  */
         irq = (offset - 0x280) * 8 + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         for (i = 0; i < 8; i++) {
             /* ??? This currently clears the pending bit for all CPUs, even
@@ -497,7 +500,7 @@ static void gic_dist_writeb(void *opaque, target_phys_addr_t offset,
     } else if (offset < 0x800) {
         /* Interrupt Priority.  */
         irq = (offset - 0x400) + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         if (irq < 32) {
             s->priority1[irq][cpu] = value;
@@ -508,7 +511,7 @@ static void gic_dist_writeb(void *opaque, target_phys_addr_t offset,
     } else if (offset < 0xc00) {
         /* Interrupt CPU Target.  */
         irq = (offset - 0x800) + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         if (irq < 29)
             value = 0;
@@ -518,7 +521,7 @@ static void gic_dist_writeb(void *opaque, target_phys_addr_t offset,
     } else if (offset < 0xf00) {
         /* Interrupt Configuration.  */
         irq = (offset - 0xc00) * 4 + GIC_BASE_IRQ;
-        if (irq >= GIC_NIRQ)
+        if (irq >= s->num_irq)
             goto bad_reg;
         if (irq < 32)
             value |= 0xaa;
@@ -699,7 +702,7 @@ static const MemoryRegionOps gic_cpu_ops = {
 static void gic_reset(gic_state *s)
 {
     int i;
-    memset(s->irq_state, 0, GIC_NIRQ * sizeof(gic_irq_state));
+    memset(s->irq_state, 0, GIC_MAXIRQ * sizeof(gic_irq_state));
     for (i = 0 ; i < NUM_CPU(s); i++) {
         s->priority_mask[i] = 0xf0;
         s->current_pending[i] = 1023;
@@ -735,17 +738,17 @@ static void gic_save(QEMUFile *f, void *opaque)
         qemu_put_be32(f, s->cpu_enabled[i]);
         for (j = 0; j < 32; j++)
             qemu_put_be32(f, s->priority1[j][i]);
-        for (j = 0; j < GIC_NIRQ; j++)
+        for (j = 0; j < s->num_irq; j++)
             qemu_put_be32(f, s->last_active[j][i]);
         qemu_put_be32(f, s->priority_mask[i]);
         qemu_put_be32(f, s->running_irq[i]);
         qemu_put_be32(f, s->running_priority[i]);
         qemu_put_be32(f, s->current_pending[i]);
     }
-    for (i = 0; i < GIC_NIRQ - 32; i++) {
+    for (i = 0; i < s->num_irq - 32; i++) {
         qemu_put_be32(f, s->priority2[i]);
     }
-    for (i = 0; i < GIC_NIRQ; i++) {
+    for (i = 0; i < s->num_irq; i++) {
 #ifndef NVIC
         qemu_put_be32(f, s->irq_target[i]);
 #endif
@@ -772,17 +775,17 @@ static int gic_load(QEMUFile *f, void *opaque, int version_id)
         s->cpu_enabled[i] = qemu_get_be32(f);
         for (j = 0; j < 32; j++)
             s->priority1[j][i] = qemu_get_be32(f);
-        for (j = 0; j < GIC_NIRQ; j++)
+        for (j = 0; j < s->num_irq; j++)
             s->last_active[j][i] = qemu_get_be32(f);
         s->priority_mask[i] = qemu_get_be32(f);
         s->running_irq[i] = qemu_get_be32(f);
         s->running_priority[i] = qemu_get_be32(f);
         s->current_pending[i] = qemu_get_be32(f);
     }
-    for (i = 0; i < GIC_NIRQ - 32; i++) {
+    for (i = 0; i < s->num_irq - 32; i++) {
         s->priority2[i] = qemu_get_be32(f);
     }
-    for (i = 0; i < GIC_NIRQ; i++) {
+    for (i = 0; i < s->num_irq; i++) {
 #ifndef NVIC
         s->irq_target[i] = qemu_get_be32(f);
 #endif
@@ -798,9 +801,9 @@ static int gic_load(QEMUFile *f, void *opaque, int version_id)
 }
 
 #if NCPU > 1
-static void gic_init(gic_state *s, int num_cpu)
+static void gic_init(gic_state *s, int num_cpu, int num_irq)
 #else
-static void gic_init(gic_state *s)
+static void gic_init(gic_state *s, int num_irq)
 #endif
 {
     int i;
@@ -808,7 +811,12 @@ static void gic_init(gic_state *s)
 #if NCPU > 1
     s->num_cpu = num_cpu;
 #endif
-    qdev_init_gpio_in(&s->busdev.qdev, gic_set_irq, GIC_NIRQ - 32);
+    s->num_irq = num_irq + GIC_BASE_IRQ;
+    if (s->num_irq > GIC_MAXIRQ) {
+        hw_error("requested %u interrupt lines exceeds GIC maximum %d\n",
+                 num_irq, GIC_MAXIRQ);
+    }
+    qdev_init_gpio_in(&s->busdev.qdev, gic_set_irq, s->num_irq - 32);
     for (i = 0; i < NUM_CPU(s); i++) {
         sysbus_init_irq(&s->busdev, &s->parent_irq[i]);
     }
diff --git a/hw/armv7m_nvic.c b/hw/armv7m_nvic.c
index bf8c3c5..28f36ba 100644
--- a/hw/armv7m_nvic.c
+++ b/hw/armv7m_nvic.c
@@ -15,9 +15,6 @@
 #include "arm-misc.h"
 #include "exec-memory.h"
 
-/* 32 internal lines (16 used for system exceptions) plus 64 external
-   interrupt lines.  */
-#define GIC_NIRQ 96
 #define NCPU 1
 #define NVIC 1
 
@@ -41,6 +38,7 @@ typedef struct {
         int64_t tick;
         QEMUTimer *timer;
     } systick;
+    uint32_t num_irq;
 } nvic_state;
 
 /* qemu timers run at 1GHz.   We want something closer to 1MHz.  */
@@ -125,7 +123,7 @@ static uint32_t nvic_readl(void *opaque, uint32_t offset)
 
     switch (offset) {
     case 4: /* Interrupt Control Type.  */
-        return (GIC_NIRQ / 32) - 1;
+        return (s->num_irq / 32) - 1;
     case 0x10: /* SysTick Control and Status.  */
         val = s->systick.control;
         s->systick.control &= ~SYSTICK_COUNTFLAG;
@@ -169,7 +167,7 @@ static uint32_t nvic_readl(void *opaque, uint32_t offset)
         if (s->gic.current_pending[0] != 1023)
             val |= (s->gic.current_pending[0] << 12);
         /* ISRPENDING */
-        for (irq = 32; irq < GIC_NIRQ; irq++) {
+        for (irq = 32; irq < s->num_irq; irq++) {
             if (s->gic.irq_state[irq].pending) {
                 val |= (1 << 22);
                 break;
@@ -384,16 +382,33 @@ static int armv7m_nvic_init(SysBusDevice *dev)
 {
     nvic_state *s= FROM_SYSBUSGIC(nvic_state, dev);
 
-    gic_init(&s->gic);
+   /* note that for the M profile gic_init() takes the number of external
+    * interrupt lines only.
+    */
+    gic_init(&s->gic, s->num_irq);
     memory_region_add_subregion(get_system_memory(), 0xe000e000, &s->gic.iomem);
     s->systick.timer = qemu_new_timer_ns(vm_clock, systick_timer_tick, s);
-    vmstate_register(&dev->qdev, -1, &vmstate_nvic, s);
     return 0;
 }
 
+static SysBusDeviceInfo armv7m_nvic_priv_info = {
+    .init = armv7m_nvic_init,
+    .qdev.name  = "armv7m_nvic",
+    .qdev.size  = sizeof(nvic_state),
+    .qdev.vmsd  = &vmstate_nvic,
+    .qdev.props = (Property[]) {
+        /* The ARM v7m may have anything from 0 to 496 external interrupt
+         * IRQ lines. We default to 64. Other boards may differ and should
+         * set this property appropriately.
+         */
+        DEFINE_PROP_UINT32("num-irq", nvic_state, num_irq, 64),
+        DEFINE_PROP_END_OF_LIST(),
+    }
+};
+
 static void armv7m_nvic_register_devices(void)
 {
-    sysbus_register_dev("armv7m_nvic", sizeof(nvic_state), armv7m_nvic_init);
+    sysbus_register_withprop(&armv7m_nvic_priv_info);
 }
 
 device_init(armv7m_nvic_register_devices)
diff --git a/hw/realview_gic.c b/hw/realview_gic.c
index 8c4d509..7342ede 100644
--- a/hw/realview_gic.c
+++ b/hw/realview_gic.c
@@ -9,7 +9,6 @@
 
 #include "sysbus.h"
 
-#define GIC_NIRQ 96
 #define NCPU 1
 
 /* Only a single "CPU" interface is present.  */
@@ -37,7 +36,11 @@ static int realview_gic_init(SysBusDevice *dev)
 {
     RealViewGICState *s = FROM_SYSBUSGIC(RealViewGICState, dev);
 
-    gic_init(&s->gic);
+    /* The GICs on the RealView boards have a fixed nonconfigurable
+     * number of interrupt lines, so we don't need to expose this as
+     * a qdev property.
+     */
+    gic_init(&s->gic, 96);
     realview_gic_map_setup(s);
     sysbus_init_mmio(dev, &s->container);
     return 0;
-- 
1.7.1

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

* Re: [Qemu-devel] [PULL 0/4] arm-devs queue
  2012-01-18 12:13 [Qemu-devel] [PULL 0/4] arm-devs queue Peter Maydell
                   ` (3 preceding siblings ...)
  2012-01-18 12:13 ` [Qemu-devel] [PATCH 4/4] arm: make the number of GIC interrupts configurable Peter Maydell
@ 2012-01-19 18:48 ` Anthony Liguori
  4 siblings, 0 replies; 13+ messages in thread
From: Anthony Liguori @ 2012-01-19 18:48 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel

On 01/18/2012 06:13 AM, Peter Maydell wrote:
> This is a smallish pullreq for a few arm-devs patches which have been on
> the list for a while. The two patches from Mark were in the highbank
> patchset, but I'd like to get them committed now because they're needed
> for other patchsets (vexpress-a15, exynos). Please pull.

Pulled.  Thanks.

Regards,

Anthony Liguori

>
> thanks
> -- PMM
>
> The following changes since commit 8c4ec5c0269bda18bb777a64b2008088d1c632dc:
>
>    pxa2xx_keypad: fix unbalanced parenthesis. (2012-01-17 02:14:42 +0100)
>
> are available in the git repository at:
>    git://git.linaro.org/people/pmaydell/qemu-arm.git arm-devs.for-upstream
>
> Mark Langsdorf (2):
>        arm: Remove incorrect comment in arm_timer
>        arm: make the number of GIC interrupts configurable
>
> Peter Maydell (2):
>        vexpress, realview: Add (dummy) L2 cache controller
>        hw/lan9118: Add save/load support
>
>   hw/a9mpcore.c     |   13 ++++-
>   hw/arm11mpcore.c  |   17 +++++---
>   hw/arm_gic.c      |   68 ++++++++++++++++-------------
>   hw/arm_timer.c    |    3 -
>   hw/armv7m_nvic.c  |   31 ++++++++++---
>   hw/lan9118.c      |  126 +++++++++++++++++++++++++++++++++++++++++++----------
>   hw/realview.c     |    2 +
>   hw/realview_gic.c |    7 ++-
>   hw/vexpress.c     |    1 +
>   9 files changed, 193 insertions(+), 75 deletions(-)
>
>

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

* [Qemu-devel] [PULL 0/4] arm-devs queue
@ 2012-03-02 12:07 Peter Maydell
  2012-03-03 17:57 ` Blue Swirl
  0 siblings, 1 reply; 13+ messages in thread
From: Peter Maydell @ 2012-03-02 12:07 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Paul Brook

Hi; this is a pullreq for the arm-devs queue; nothing hugely exciting
here unless you count the final part of the -dtb support. Please pull.

thanks
-- PMM

The following changes since commit 7c51c1aa03a52b9fd75ed1ade2e65d079ae4d50e:

  Merge remote-tracking branch 'kwolf/for-anthony' into staging (2012-02-29 12:57:28 -0600)

are available in the git repository at:

  git://git.linaro.org/people/pmaydell/qemu-arm.git arm-devs.for-upstream

Grant Likely (1):
      arm: add device tree support

Peter Maydell (1):
      hw/arm11mpcore: Fix broken realview_mpcore/arm11mpcore_priv properties

Rusty Russell (2):
      arm: clean up GIC constants
      arm: make sure that number of irqs can be represented in GICD_TYPER.

 Makefile.target  |    1 +
 configure        |    1 +
 hw/arm-misc.h    |    1 +
 hw/arm11mpcore.c |   20 +++++-----
 hw/arm_boot.c    |  102 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 hw/arm_gic.c     |   50 ++++++++++++++++----------
 qemu-config.c    |    4 ++
 qemu-options.hx  |    9 +++++
 vl.c             |    8 ++++
 9 files changed, 161 insertions(+), 35 deletions(-)

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

* Re: [Qemu-devel] [PULL 0/4] arm-devs queue
  2012-03-02 12:07 Peter Maydell
@ 2012-03-03 17:57 ` Blue Swirl
  0 siblings, 0 replies; 13+ messages in thread
From: Blue Swirl @ 2012-03-03 17:57 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, Anthony Liguori, Paul Brook

On Fri, Mar 2, 2012 at 12:07, Peter Maydell <peter.maydell@linaro.org> wrote:
> Hi; this is a pullreq for the arm-devs queue; nothing hugely exciting
> here unless you count the final part of the -dtb support. Please pull.

Thanks, pulled.

> thanks
> -- PMM
>
> The following changes since commit 7c51c1aa03a52b9fd75ed1ade2e65d079ae4d50e:
>
>  Merge remote-tracking branch 'kwolf/for-anthony' into staging (2012-02-29 12:57:28 -0600)
>
> are available in the git repository at:
>
>  git://git.linaro.org/people/pmaydell/qemu-arm.git arm-devs.for-upstream
>
> Grant Likely (1):
>      arm: add device tree support
>
> Peter Maydell (1):
>      hw/arm11mpcore: Fix broken realview_mpcore/arm11mpcore_priv properties
>
> Rusty Russell (2):
>      arm: clean up GIC constants
>      arm: make sure that number of irqs can be represented in GICD_TYPER.
>
>  Makefile.target  |    1 +
>  configure        |    1 +
>  hw/arm-misc.h    |    1 +
>  hw/arm11mpcore.c |   20 +++++-----
>  hw/arm_boot.c    |  102 ++++++++++++++++++++++++++++++++++++++++++++++++++---
>  hw/arm_gic.c     |   50 ++++++++++++++++----------
>  qemu-config.c    |    4 ++
>  qemu-options.hx  |    9 +++++
>  vl.c             |    8 ++++
>  9 files changed, 161 insertions(+), 35 deletions(-)
>

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

* [Qemu-devel] [PULL 0/4] arm-devs queue
@ 2012-03-16 18:12 Peter Maydell
  2012-03-17 16:22 ` Blue Swirl
  0 siblings, 1 reply; 13+ messages in thread
From: Peter Maydell @ 2012-03-16 18:12 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Paul Brook

Hi; this is a pullreq for the arm-devs queue; nothing hugely exciting
here unless you count the final part of the -dtb support. Please pull.

thanks
-- PMM

The following changes since commit 7c51c1aa03a52b9fd75ed1ade2e65d079ae4d50e:

  Merge remote-tracking branch 'kwolf/for-anthony' into staging (2012-02-29 12:57:28 -0600)

are available in the git repository at:

  git://git.linaro.org/people/pmaydell/qemu-arm.git arm-devs.for-upstream

Grant Likely (1):
      arm: add device tree support

Peter Maydell (1):
      hw/arm11mpcore: Fix broken realview_mpcore/arm11mpcore_priv properties

Rusty Russell (2):
      arm: clean up GIC constants
      arm: make sure that number of irqs can be represented in GICD_TYPER.

 Makefile.target  |    1 +
 configure        |    1 +
 hw/arm-misc.h    |    1 +
 hw/arm11mpcore.c |   20 +++++-----
 hw/arm_boot.c    |  102 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 hw/arm_gic.c     |   50 ++++++++++++++++----------
 qemu-config.c    |    4 ++
 qemu-options.hx  |    9 +++++
 vl.c             |    8 ++++
 9 files changed, 161 insertions(+), 35 deletions(-)

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

* Re: [Qemu-devel] [PULL 0/4] arm-devs queue
  2012-03-16 18:12 Peter Maydell
@ 2012-03-17 16:22 ` Blue Swirl
  2012-03-17 17:29   ` Peter Maydell
  0 siblings, 1 reply; 13+ messages in thread
From: Blue Swirl @ 2012-03-17 16:22 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, Anthony Liguori, Paul Brook

On Fri, Mar 16, 2012 at 18:12, Peter Maydell <peter.maydell@linaro.org> wrote:
> Hi; this is a pullreq for the arm-devs queue; nothing hugely exciting
> here unless you count the final part of the -dtb support. Please pull.

Thanks, pulled.

> thanks
> -- PMM
>
> The following changes since commit 7c51c1aa03a52b9fd75ed1ade2e65d079ae4d50e:
>
>  Merge remote-tracking branch 'kwolf/for-anthony' into staging (2012-02-29 12:57:28 -0600)
>
> are available in the git repository at:
>
>  git://git.linaro.org/people/pmaydell/qemu-arm.git arm-devs.for-upstream
>
> Grant Likely (1):
>      arm: add device tree support
>
> Peter Maydell (1):
>      hw/arm11mpcore: Fix broken realview_mpcore/arm11mpcore_priv properties
>
> Rusty Russell (2):
>      arm: clean up GIC constants
>      arm: make sure that number of irqs can be represented in GICD_TYPER.
>
>  Makefile.target  |    1 +
>  configure        |    1 +
>  hw/arm-misc.h    |    1 +
>  hw/arm11mpcore.c |   20 +++++-----
>  hw/arm_boot.c    |  102 ++++++++++++++++++++++++++++++++++++++++++++++++++---
>  hw/arm_gic.c     |   50 ++++++++++++++++----------
>  qemu-config.c    |    4 ++
>  qemu-options.hx  |    9 +++++
>  vl.c             |    8 ++++
>  9 files changed, 161 insertions(+), 35 deletions(-)
>

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

* Re: [Qemu-devel] [PULL 0/4] arm-devs queue
  2012-03-17 16:22 ` Blue Swirl
@ 2012-03-17 17:29   ` Peter Maydell
  0 siblings, 0 replies; 13+ messages in thread
From: Peter Maydell @ 2012-03-17 17:29 UTC (permalink / raw)
  To: Blue Swirl; +Cc: qemu-devel, Anthony Liguori, Paul Brook

On 17 March 2012 16:22, Blue Swirl <blauwirbel@gmail.com> wrote:
> On Fri, Mar 16, 2012 at 18:12, Peter Maydell <peter.maydell@linaro.org> wrote:
>> Hi; this is a pullreq for the arm-devs queue; nothing hugely exciting
>> here unless you count the final part of the -dtb support. Please pull.
>
> Thanks, pulled.

Thanks. I see that I somehow managed to screw up and send the wrong
set of emails for this pullreq (resent the ones for the previous arm-devs
tree). Since the git tree url is the same you pulled the right patches,
but for the record, here's the summary and diffstat of what was actually
applied:

Juha Riihimäki (1):
      hw/omap_i2c: Convert to qdev

Mitsyanko Igor (2):
      hw/pxa2xx_dma.c: drop target_phys_addr_t usage in device state
      hw/pxa2xx_lcd.c: drop target_phys_addr_t usage in device state

Peter Maydell (2):
      ARM: Remove unnecessary subpage workarounds
      hw/pxa2xx.c: Fix handling of pxa2xx_i2c variable offset within region

 hw/arm11mpcore.c |    2 -
 hw/arm_gic.c     |    8 ++--
 hw/arm_mptimer.c |    2 -
 hw/nseries.c     |   12 +++----
 hw/omap.h        |   13 +------
 hw/omap1.c       |   13 +++++--
 hw/omap2.c       |   35 ++++++++++++------
 hw/omap_i2c.c    |  107 +++++++++++++++++++++++++++++++-----------------------
 hw/pxa2xx.c      |    3 +-
 hw/pxa2xx_dma.c  |   12 +++---
 hw/pxa2xx_lcd.c  |   12 +++---
 11 files changed, 118 insertions(+), 101 deletions(-)

Sorry for the mixup; I'll check more carefully next time...

-- PMM

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

* [Qemu-devel] [PULL 0/4] arm-devs queue
@ 2012-09-26 16:13 Peter Maydell
  2012-09-27 19:50 ` Aurelien Jarno
  0 siblings, 1 reply; 13+ messages in thread
From: Peter Maydell @ 2012-09-26 16:13 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Paul Brook

Not much in this pullreq but I realised I'd been sitting on the PL190
and NVIC fixes for nearly a month :-(   Please pull.

thanks
-- PMM


The following changes since commit ac05f3492421caeb05809ffa02c6198ede179e43:

  add a boot parameter to set reboot timeout (2012-09-25 20:05:04 -0500)

are available in the git repository at:

  git://git.linaro.org/people/pmaydell/qemu-arm.git arm-devs.for-upstream

for you to fetch changes up to 3dc3e7dd936f2e7f3e6dd4056f81c8961dc8201b:

  Versatile Express: Add modelling of NOR flash (2012-09-26 16:48:21 +0100)

----------------------------------------------------------------
Brendan Fennell (1):
      pl190: fix read of VECTADDR

Francesco Lavra (2):
      Versatile Express: Fix NOR flash 0 address and remove flash alias
      Versatile Express: Add modelling of NOR flash

Meador Inge (1):
      hw/armv7m_nvic: Correctly register GIC region when setting up NVIC

 hw/armv7m_nvic.c |    3 ++-
 hw/pl190.c       |   18 ++++++++++++------
 hw/vexpress.c    |   33 ++++++++++++++++++++++++++-------
 3 files changed, 40 insertions(+), 14 deletions(-)

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

* Re: [Qemu-devel] [PULL 0/4] arm-devs queue
  2012-09-26 16:13 Peter Maydell
@ 2012-09-27 19:50 ` Aurelien Jarno
  0 siblings, 0 replies; 13+ messages in thread
From: Aurelien Jarno @ 2012-09-27 19:50 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, Anthony Liguori, Paul Brook

On Wed, Sep 26, 2012 at 05:13:31PM +0100, Peter Maydell wrote:
> Not much in this pullreq but I realised I'd been sitting on the PL190
> and NVIC fixes for nearly a month :-(   Please pull.
> 
> thanks
> -- PMM
> 
> 
> The following changes since commit ac05f3492421caeb05809ffa02c6198ede179e43:
> 
>   add a boot parameter to set reboot timeout (2012-09-25 20:05:04 -0500)
> 
> are available in the git repository at:
> 
>   git://git.linaro.org/people/pmaydell/qemu-arm.git arm-devs.for-upstream
> 
> for you to fetch changes up to 3dc3e7dd936f2e7f3e6dd4056f81c8961dc8201b:
> 
>   Versatile Express: Add modelling of NOR flash (2012-09-26 16:48:21 +0100)
> 
> ----------------------------------------------------------------
> Brendan Fennell (1):
>       pl190: fix read of VECTADDR
> 
> Francesco Lavra (2):
>       Versatile Express: Fix NOR flash 0 address and remove flash alias
>       Versatile Express: Add modelling of NOR flash
> 
> Meador Inge (1):
>       hw/armv7m_nvic: Correctly register GIC region when setting up NVIC
> 
>  hw/armv7m_nvic.c |    3 ++-
>  hw/pl190.c       |   18 ++++++++++++------
>  hw/vexpress.c    |   33 ++++++++++++++++++++++++++-------
>  3 files changed, 40 insertions(+), 14 deletions(-)

Thanks, pulled.

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

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

end of thread, other threads:[~2012-09-27 19:50 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-18 12:13 [Qemu-devel] [PULL 0/4] arm-devs queue Peter Maydell
2012-01-18 12:13 ` [Qemu-devel] [PATCH 1/4] vexpress, realview: Add (dummy) L2 cache controller Peter Maydell
2012-01-18 12:13 ` [Qemu-devel] [PATCH 2/4] arm: Remove incorrect comment in arm_timer Peter Maydell
2012-01-18 12:13 ` [Qemu-devel] [PATCH 3/4] hw/lan9118: Add save/load support Peter Maydell
2012-01-18 12:13 ` [Qemu-devel] [PATCH 4/4] arm: make the number of GIC interrupts configurable Peter Maydell
2012-01-19 18:48 ` [Qemu-devel] [PULL 0/4] arm-devs queue Anthony Liguori
  -- strict thread matches above, loose matches on Subject: below --
2012-03-02 12:07 Peter Maydell
2012-03-03 17:57 ` Blue Swirl
2012-03-16 18:12 Peter Maydell
2012-03-17 16:22 ` Blue Swirl
2012-03-17 17:29   ` Peter Maydell
2012-09-26 16:13 Peter Maydell
2012-09-27 19:50 ` Aurelien Jarno

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