qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/4] s390 cpu-hotplug implementation
@ 2014-02-26 17:18 Jason J. Herne
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 1/4] s390: Storage key global access Jason J. Herne
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Jason J. Herne @ 2014-02-26 17:18 UTC (permalink / raw)
  To: afaerber, borntraeger, agraf, qemu-devel; +Cc: Jason J. Herne

From: "Jason J. Herne" <jjherne@us.ibm.com>

Improvements and modifications to cpu initialization and the qom cpu model
were required to implement hotplug.

Hotplugged cpus are created in the configured state and can be used by the
guest after the guest onlines the cpu by: 
"echo 1 > /sys/bus/cpu/devices/cpuN/online"

Hot unplug is not currently implemented. 

Jason J. Herne (4):
  s390: Storage key global access
  s390-cpu: ipi_states enhancements
  s390-cpu: s390 cpu init improvements for hotplug
  s390-hotplug: Implement hot_add_cpu hook

 hw/s390x/s390-virtio-ccw.c |  4 ++--
 hw/s390x/s390-virtio.c     | 37 +++++++++++++++++++++----------------
 hw/s390x/s390-virtio.h     |  2 +-
 target-s390x/cpu.c         | 43 +++++++++++++++++++++++++++++++++++++++++--
 target-s390x/cpu.h         |  6 ++++++
 5 files changed, 71 insertions(+), 21 deletions(-)

-- 
1.8.3.2

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

* [Qemu-devel] [PATCH 1/4] s390: Storage key global access
  2014-02-26 17:18 [Qemu-devel] [PATCH 0/4] s390 cpu-hotplug implementation Jason J. Herne
@ 2014-02-26 17:18 ` Jason J. Herne
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 2/4] s390-cpu: ipi_states enhancements Jason J. Herne
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Jason J. Herne @ 2014-02-26 17:18 UTC (permalink / raw)
  To: afaerber, borntraeger, agraf, qemu-devel; +Cc: Jason J. Herne

From: "Jason J. Herne" <jjherne@us.ibm.com>

Introduces global access to storage key data so we can set it for each cpu in
the S390 cpu initialization routine.

Signed-off-by: Jason J. Herne <jjherne@us.ibm.com>
---
 hw/s390x/s390-virtio-ccw.c | 3 +--
 hw/s390x/s390-virtio.c     | 6 +++---
 hw/s390x/s390-virtio.h     | 2 +-
 target-s390x/cpu.h         | 3 +++
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 733d988..62319b9 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -80,7 +80,6 @@ static void ccw_init(QEMUMachineInitArgs *args)
     MemoryRegion *sysmem = get_system_memory();
     MemoryRegion *ram = g_new(MemoryRegion, 1);
     int shift = 0;
-    uint8_t *storage_keys;
     int ret;
     VirtualCssBus *css_bus;
 
@@ -112,7 +111,7 @@ static void ccw_init(QEMUMachineInitArgs *args)
     storage_keys = g_malloc0(my_ram_size / TARGET_PAGE_SIZE);
 
     /* init CPUs */
-    s390_init_cpus(args->cpu_model, storage_keys);
+    s390_init_cpus(args->cpu_model);
 
     if (kvm_enabled()) {
         kvm_s390_enable_css_support(s390_cpu_addr2state(0));
diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index 9eeda97..00807e7 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -53,6 +53,7 @@
 
 static VirtIOS390Bus *s390_bus;
 static S390CPU **ipi_states;
+uint8_t *storage_keys;
 
 S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
 {
@@ -176,7 +177,7 @@ void s390_init_ipl_dev(const char *kernel_filename,
     qdev_init_nofail(dev);
 }
 
-void s390_init_cpus(const char *cpu_model, uint8_t *storage_keys)
+void s390_init_cpus(const char *cpu_model)
 {
     int i;
 
@@ -231,7 +232,6 @@ static void s390_init(QEMUMachineInitArgs *args)
     MemoryRegion *sysmem = get_system_memory();
     MemoryRegion *ram = g_new(MemoryRegion, 1);
     int shift = 0;
-    uint8_t *storage_keys;
     void *virtio_region;
     hwaddr virtio_region_len;
     hwaddr virtio_region_start;
@@ -273,7 +273,7 @@ static void s390_init(QEMUMachineInitArgs *args)
     storage_keys = g_malloc0(my_ram_size / TARGET_PAGE_SIZE);
 
     /* init CPUs */
-    s390_init_cpus(args->cpu_model, storage_keys);
+    s390_init_cpus(args->cpu_model);
 
     /* Create VirtIO network adapters */
     s390_create_virtio_net((BusState *)s390_bus, "virtio-net-s390");
diff --git a/hw/s390x/s390-virtio.h b/hw/s390x/s390-virtio.h
index 5c405e7..c1cb042 100644
--- a/hw/s390x/s390-virtio.h
+++ b/hw/s390x/s390-virtio.h
@@ -20,7 +20,7 @@
 typedef int (*s390_virtio_fn)(const uint64_t *args);
 void s390_register_virtio_hypercall(uint64_t code, s390_virtio_fn fn);
 
-void s390_init_cpus(const char *cpu_model, uint8_t *storage_keys);
+void s390_init_cpus(const char *cpu_model);
 void s390_init_ipl_dev(const char *kernel_filename,
                        const char *kernel_cmdline,
                        const char *initrd_filename,
diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h
index 96c2b4a..1f4ca4f 100644
--- a/target-s390x/cpu.h
+++ b/target-s390x/cpu.h
@@ -369,6 +369,9 @@ static inline void kvm_s390_interrupt_internal(S390CPU *cpu, int type,
 {
 }
 #endif
+
+extern uint8_t *storage_keys;
+
 S390CPU *s390_cpu_addr2state(uint16_t cpu_addr);
 void s390_add_running_cpu(S390CPU *cpu);
 unsigned s390_del_running_cpu(S390CPU *cpu);
-- 
1.8.3.2

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

* [Qemu-devel] [PATCH 2/4] s390-cpu: ipi_states enhancements
  2014-02-26 17:18 [Qemu-devel] [PATCH 0/4] s390 cpu-hotplug implementation Jason J. Herne
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 1/4] s390: Storage key global access Jason J. Herne
@ 2014-02-26 17:18 ` Jason J. Herne
  2014-02-28 16:30   ` Andreas Färber
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 3/4] s390-cpu: s390 cpu init improvements for hotplug Jason J. Herne
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 4/4] s390-hotplug: Implement hot_add_cpu hook Jason J. Herne
  3 siblings, 1 reply; 8+ messages in thread
From: Jason J. Herne @ 2014-02-26 17:18 UTC (permalink / raw)
  To: afaerber, borntraeger, agraf, qemu-devel; +Cc: Jason J. Herne

From: "Jason J. Herne" <jjherne@us.ibm.com>

Modify s390_cpu_addr2state to allow fetching state information for cpu addresses
above smp_cpus.  Hotplug requires this capability.

Also add s390_cpu_set_state function to allow modification of ipi_state entries
during hotplug.

Signed-off-by: Jason J. Herne <jjherne@us.ibm.com>
---
 hw/s390x/s390-virtio.c | 9 +++++----
 target-s390x/cpu.h     | 1 +
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index 00807e7..d47fecf 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -55,12 +55,13 @@ static VirtIOS390Bus *s390_bus;
 static S390CPU **ipi_states;
 uint8_t *storage_keys;
 
-S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
+void s390_cpu_set_ipistate(uint16_t cpu_addr, S390CPU *state)
 {
-    if (cpu_addr >= smp_cpus) {
-        return NULL;
-    }
+    ipi_states[cpu_addr] = state;
+}
 
+S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
+{
     return ipi_states[cpu_addr];
 }
 
diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h
index 1f4ca4f..79f47b4 100644
--- a/target-s390x/cpu.h
+++ b/target-s390x/cpu.h
@@ -372,6 +372,7 @@ static inline void kvm_s390_interrupt_internal(S390CPU *cpu, int type,
 
 extern uint8_t *storage_keys;
 
+void s390_cpu_set_ipistate(uint16_t cpu_addr, S390CPU *state);
 S390CPU *s390_cpu_addr2state(uint16_t cpu_addr);
 void s390_add_running_cpu(S390CPU *cpu);
 unsigned s390_del_running_cpu(S390CPU *cpu);
-- 
1.8.3.2

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

* [Qemu-devel] [PATCH 3/4] s390-cpu: s390 cpu init improvements for hotplug
  2014-02-26 17:18 [Qemu-devel] [PATCH 0/4] s390 cpu-hotplug implementation Jason J. Herne
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 1/4] s390: Storage key global access Jason J. Herne
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 2/4] s390-cpu: ipi_states enhancements Jason J. Herne
@ 2014-02-26 17:18 ` Jason J. Herne
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 4/4] s390-hotplug: Implement hot_add_cpu hook Jason J. Herne
  3 siblings, 0 replies; 8+ messages in thread
From: Jason J. Herne @ 2014-02-26 17:18 UTC (permalink / raw)
  To: afaerber, borntraeger, agraf, qemu-devel; +Cc: Jason J. Herne

From: "Jason J. Herne" <jjherne@us.ibm.com>

s390_new_cpu is created to encapsulate the creation of a new QOM S390CPU
object given a cpuid and a model string.

All actual cpu initialization code is moved from boot time specific functions to
s390_cpu_initfn (qom init routine) or to s390_new_cpu. This is done to allow us
to use the same basic code path for a cpu created at boot time and one created
during a hotplug operation.

Signed-off-by: Jason J. Herne <jjherne@us.ibm.com>
---
 hw/s390x/s390-virtio.c | 28 ++++++++++++++++------------
 target-s390x/cpu.c     | 14 ++++++++++++--
 2 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index d47fecf..99a10d8 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -57,11 +57,16 @@ uint8_t *storage_keys;
 
 void s390_cpu_set_ipistate(uint16_t cpu_addr, S390CPU *state)
 {
-    ipi_states[cpu_addr] = state;
+    if (cpu_addr < max_cpus) {
+        ipi_states[cpu_addr] = state;
+    }
 }
 
 S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
 {
+    if (cpu_addr >= max_cpus) {
+        return NULL;
+    }
     return ipi_states[cpu_addr];
 }
 
@@ -181,24 +186,23 @@ void s390_init_ipl_dev(const char *kernel_filename,
 void s390_init_cpus(const char *cpu_model)
 {
     int i;
+    gchar *name;
 
     if (cpu_model == NULL) {
         cpu_model = "host";
     }
 
-    ipi_states = g_malloc(sizeof(S390CPU *) * smp_cpus);
-
-    for (i = 0; i < smp_cpus; i++) {
-        S390CPU *cpu;
-        CPUState *cs;
+    ipi_states = g_malloc0(sizeof(S390CPU *) * max_cpus);
 
-        cpu = cpu_s390x_init(cpu_model);
-        cs = CPU(cpu);
+    for (i = 0; i < max_cpus; i++) {
+        name = g_strdup_printf("cpu[%i]", i);
+        object_property_add_link(qdev_get_machine(), name, TYPE_S390_CPU,
+                                 (Object **)&ipi_states[i], NULL);
+    g_free(name);
+    }
 
-        ipi_states[i] = cpu;
-        cs->halted = 1;
-        cpu->env.exception_index = EXCP_HLT;
-        cpu->env.storage_keys = storage_keys;
+    for (i = 0; i < smp_cpus; i++) {
+        cpu_s390x_init(cpu_model);
     }
 }
 
diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c
index ff57b80..a6fa82c 100644
--- a/target-s390x/cpu.c
+++ b/target-s390x/cpu.c
@@ -34,6 +34,8 @@
 #define CR0_RESET       0xE0UL
 #define CR14_RESET      0xC2000000UL;
 
+int next_cpu_num;
+
 /* generate CPU information for cpu -? */
 void s390_cpu_list(FILE *f, fprintf_function cpu_fprintf)
 {
@@ -150,6 +152,12 @@ static void s390_cpu_realizefn(DeviceState *dev, Error **errp)
     cpu_reset(cs);
 
     scc->parent_realize(dev, errp);
+
+#if !defined(CONFIG_USER_ONLY)
+    if (dev->hotplugged) {
+        raise_irq_cpu_hotplug();
+    }
+#endif
 }
 
 static void s390_cpu_initfn(Object *obj)
@@ -158,13 +166,13 @@ static void s390_cpu_initfn(Object *obj)
     S390CPU *cpu = S390_CPU(obj);
     CPUS390XState *env = &cpu->env;
     static bool inited;
-    static int cpu_num = 0;
 #if !defined(CONFIG_USER_ONLY)
     struct tm tm;
 #endif
 
     cs->env_ptr = env;
     cpu_exec_init(env);
+    env->cpu_num = next_cpu_num++;
 #if !defined(CONFIG_USER_ONLY)
     qemu_register_reset(s390_cpu_machine_reset_cb, cpu);
     qemu_get_timedate(&tm, 0);
@@ -177,8 +185,10 @@ static void s390_cpu_initfn(Object *obj)
      * cpu counter in s390_cpu_reset to a negative number at
      * initial ipl */
     cs->halted = 1;
+    cpu->env.exception_index = EXCP_HLT;
+    env->storage_keys = storage_keys;
+    s390_cpu_set_ipistate(env->cpu_num, cpu);
 #endif
-    env->cpu_num = cpu_num++;
     env->ext_index = -1;
 
     if (tcg_enabled() && !inited) {
-- 
1.8.3.2

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

* [Qemu-devel] [PATCH 4/4] s390-hotplug: Implement hot_add_cpu hook
  2014-02-26 17:18 [Qemu-devel] [PATCH 0/4] s390 cpu-hotplug implementation Jason J. Herne
                   ` (2 preceding siblings ...)
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 3/4] s390-cpu: s390 cpu init improvements for hotplug Jason J. Herne
@ 2014-02-26 17:18 ` Jason J. Herne
  3 siblings, 0 replies; 8+ messages in thread
From: Jason J. Herne @ 2014-02-26 17:18 UTC (permalink / raw)
  To: afaerber, borntraeger, agraf, qemu-devel; +Cc: Jason J. Herne

From: "Jason J. Herne" <jjherne@us.ibm.com>

Implement hot_add_cpu for S390 to allow hot plugging of cpus.

Signed-off-by: Jason J. Herne <jjherne@us.ibm.com>
---
 hw/s390x/s390-virtio-ccw.c |  1 +
 target-s390x/cpu.c         | 29 +++++++++++++++++++++++++++++
 target-s390x/cpu.h         |  2 ++
 3 files changed, 32 insertions(+)

diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 62319b9..8b89886 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -132,6 +132,7 @@ static QEMUMachine ccw_machine = {
     .alias = "s390-ccw",
     .desc = "VirtIO-ccw based S390 machine",
     .init = ccw_init,
+    .hot_add_cpu = ccw_hot_add_cpu,
     .block_default_type = IF_VIRTIO,
     .no_cdrom = 1,
     .no_floppy = 1,
diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c
index a6fa82c..fd667d9 100644
--- a/target-s390x/cpu.c
+++ b/target-s390x/cpu.c
@@ -27,6 +27,8 @@
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "hw/hw.h"
+#include "hw/s390x/sclp.h"
+#include "sysemu/sysemu.h"
 #ifndef CONFIG_USER_ONLY
 #include "sysemu/arch_init.h"
 #endif
@@ -206,6 +208,33 @@ static void s390_cpu_finalize(Object *obj)
 #endif
 }
 
+#if !defined(CONFIG_USER_ONLY)
+void ccw_hot_add_cpu(const int64_t id, Error **errp)
+{
+    S390CPU *new_cpu;
+    CPUState *cpu;
+    int cpu_count = 0;
+
+    CPU_FOREACH(cpu) {
+        cpu_count++;
+    }
+
+    if (cpu_count == max_cpus) {
+        error_setg(errp, "Maximum number of cpus already defined");
+        return;
+    }
+
+    if (id != next_cpu_num) {
+        error_setg(errp, "Unable to add CPU: %" PRIi64
+                   ", The next available id is %d", id, next_cpu_num);
+        return;
+    }
+
+    new_cpu = S390_CPU(object_new(TYPE_S390_CPU));
+    object_property_set_bool(OBJECT(new_cpu), true, "realized", NULL);
+}
+#endif
+
 static const VMStateDescription vmstate_s390_cpu = {
     .name = "cpu",
     .unmigratable = 1,
diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h
index 79f47b4..af199e5 100644
--- a/target-s390x/cpu.h
+++ b/target-s390x/cpu.h
@@ -377,6 +377,8 @@ S390CPU *s390_cpu_addr2state(uint16_t cpu_addr);
 void s390_add_running_cpu(S390CPU *cpu);
 unsigned s390_del_running_cpu(S390CPU *cpu);
 
+void ccw_hot_add_cpu(const int64_t id, Error **errp);
+
 /* service interrupts are floating therefore we must not pass an cpustate */
 void s390_sclp_extint(uint32_t parm);
 
-- 
1.8.3.2

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

* Re: [Qemu-devel] [PATCH 2/4] s390-cpu: ipi_states enhancements
  2014-02-26 17:18 ` [Qemu-devel] [PATCH 2/4] s390-cpu: ipi_states enhancements Jason J. Herne
@ 2014-02-28 16:30   ` Andreas Färber
  2014-03-06 14:54     ` Jason J. Herne
  2014-03-06 16:23     ` Jason J. Herne
  0 siblings, 2 replies; 8+ messages in thread
From: Andreas Färber @ 2014-02-28 16:30 UTC (permalink / raw)
  To: Jason J. Herne, borntraeger; +Cc: agraf, qemu-devel

Am 26.02.2014 18:18, schrieb Jason J. Herne:
> From: "Jason J. Herne" <jjherne@us.ibm.com>
> 
> Modify s390_cpu_addr2state to allow fetching state information for cpu addresses
> above smp_cpus.  Hotplug requires this capability.
> 
> Also add s390_cpu_set_state function to allow modification of ipi_state entries
> during hotplug.
> 
> Signed-off-by: Jason J. Herne <jjherne@us.ibm.com>

This patch is *still* present despite your previous response that you
incorporated my review comments. You are adding a custom s390x API here
rather than reusing the generic QOM API as requested. I don't even read
further in such cases - like I pointed out, a pure resend is not helping
address review feedback!

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

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

* Re: [Qemu-devel] [PATCH 2/4] s390-cpu: ipi_states enhancements
  2014-02-28 16:30   ` Andreas Färber
@ 2014-03-06 14:54     ` Jason J. Herne
  2014-03-06 16:23     ` Jason J. Herne
  1 sibling, 0 replies; 8+ messages in thread
From: Jason J. Herne @ 2014-03-06 14:54 UTC (permalink / raw)
  To: Andreas Färber, Jason J. Herne, borntraeger; +Cc: agraf, qemu-devel

On 02/28/2014 11:30 AM, Andreas Färber wrote:
> Am 26.02.2014 18:18, schrieb Jason J. Herne:
>> From: "Jason J. Herne" <jjherne@us.ibm.com>
>>
>> Modify s390_cpu_addr2state to allow fetching state information for cpu addresses
>> above smp_cpus.  Hotplug requires this capability.
>>
>> Also add s390_cpu_set_state function to allow modification of ipi_state entries
>> during hotplug.
>>
>> Signed-off-by: Jason J. Herne <jjherne@us.ibm.com>
>
> This patch is *still* present despite your previous response that you
> incorporated my review comments. You are adding a custom s390x API here
> rather than reusing the generic QOM API as requested. I don't even read
> further in such cases - like I pointed out, a pure resend is not helping
> address review feedback!
>
> Andreas
>

Andreas,

My apologies, I am not trying to ruffle any feathers and I certainly 
have not intended to make you feel like I've ignored your review 
comments. I believe, if you look at patches 3 and 4 you will find that 
I've address the majority of your comments. I've even completed the work 
that adds the link property as you have suggested.

The reason the ipi_array still exists in my patch set is because I was 
under the impression that we needed it to still exist. This belief 
stemmed from a misunderstanding I had related to an earlier e-mail 
discussion. I apologize for getting that detail wrong. I had assumed we 
would make use of the link property when possible but still keep the 
array around too.

At this point, I only have one concern about removing the array. 
ipi_states is accessed from some high frequency code paths dealing with 
interrupt handling. I have not yet looked into it myself, but I trust I 
would find that retrieving the link property value would not 
significantly affect performance?

Thank you for taking the time to read this patch set. Please let me know 
if you have any more concerns. I'm happy to work with you to address them.

P.S. Sorry for taking so long to respond, I was away on vacation for a 
few days and I was not checking mail.

-- 
-- Jason J. Herne (jjherne@linux.vnet.ibm.com)

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

* Re: [Qemu-devel] [PATCH 2/4] s390-cpu: ipi_states enhancements
  2014-02-28 16:30   ` Andreas Färber
  2014-03-06 14:54     ` Jason J. Herne
@ 2014-03-06 16:23     ` Jason J. Herne
  1 sibling, 0 replies; 8+ messages in thread
From: Jason J. Herne @ 2014-03-06 16:23 UTC (permalink / raw)
  To: Andreas Färber, Jason J. Herne, borntraeger; +Cc: agraf, qemu-devel

On 02/28/2014 11:30 AM, Andreas Färber wrote:
> Am 26.02.2014 18:18, schrieb Jason J. Herne:
>> From: "Jason J. Herne" <jjherne@us.ibm.com>
>>
>> Modify s390_cpu_addr2state to allow fetching state information for cpu addresses
>> above smp_cpus.  Hotplug requires this capability.
>>
>> Also add s390_cpu_set_state function to allow modification of ipi_state entries
>> during hotplug.
>>
>> Signed-off-by: Jason J. Herne <jjherne@us.ibm.com>
>
> This patch is *still* present despite your previous response that you
> incorporated my review comments. You are adding a custom s390x API here
> rather than reusing the generic QOM API as requested. I don't even read
> further in such cases - like I pointed out, a pure resend is not helping
> address review feedback!
>
> Andreas
>

Just a quick follow on note. Even though the link property has been 
added by this patch set, I just realized this part of the code is not 
yet complete. I'll work up a complete patch just to address this issue 
and post it separate from Hotplug. I think that makes the most sense 
because this is really a qom patch.

-- 
-- Jason J. Herne (jjherne@linux.vnet.ibm.com)

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

end of thread, other threads:[~2014-03-06 16:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-26 17:18 [Qemu-devel] [PATCH 0/4] s390 cpu-hotplug implementation Jason J. Herne
2014-02-26 17:18 ` [Qemu-devel] [PATCH 1/4] s390: Storage key global access Jason J. Herne
2014-02-26 17:18 ` [Qemu-devel] [PATCH 2/4] s390-cpu: ipi_states enhancements Jason J. Herne
2014-02-28 16:30   ` Andreas Färber
2014-03-06 14:54     ` Jason J. Herne
2014-03-06 16:23     ` Jason J. Herne
2014-02-26 17:18 ` [Qemu-devel] [PATCH 3/4] s390-cpu: s390 cpu init improvements for hotplug Jason J. Herne
2014-02-26 17:18 ` [Qemu-devel] [PATCH 4/4] s390-hotplug: Implement hot_add_cpu hook Jason J. Herne

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