From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56685) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VMkhn-0001gq-PB for qemu-devel@nongnu.org; Thu, 19 Sep 2013 16:20:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VMkhe-0002wY-Ir for qemu-devel@nongnu.org; Thu, 19 Sep 2013 16:20:03 -0400 Received: from e35.co.us.ibm.com ([32.97.110.153]:58471) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VMkhe-0002wR-CF for qemu-devel@nongnu.org; Thu, 19 Sep 2013 16:19:54 -0400 Received: from /spool/local by e35.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 19 Sep 2013 14:19:53 -0600 Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 689E519D803E for ; Thu, 19 Sep 2013 14:19:50 -0600 (MDT) Received: from d03av06.boulder.ibm.com (d03av06.boulder.ibm.com [9.17.195.245]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r8JKJp3u318360 for ; Thu, 19 Sep 2013 14:19:51 -0600 Received: from d03av06.boulder.ibm.com (loopback [127.0.0.1]) by d03av06.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r8JKMppo003696 for ; Thu, 19 Sep 2013 14:22:52 -0600 Message-ID: <523B5C62.4050804@linux.vnet.ibm.com> Date: Thu, 19 Sep 2013 16:19:46 -0400 From: "Jason J. Herne" MIME-Version: 1.0 References: <1375366359-11553-1-git-send-email-jjherne@us.ibm.com> <1375366359-11553-6-git-send-email-jjherne@us.ibm.com> <522872B6.5080705@suse.de> In-Reply-To: <522872B6.5080705@suse.de> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH 5/8] [PATCH RFC v3] s390-qemu: cpu hotplug - ipi_states enhancements Reply-To: jjherne@linux.vnet.ibm.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?ISO-8859-15?Q?Andreas_F=E4rber?= Cc: ehabkost@redhat.com, qemu-devel@nongnu.org, agraf@suse.de, borntraeger@de.ibm.com, jfrei@linux.vnet.ibm.com, Anthony Liguori , imammedo@redhat.com, Paolo Bonzini , "Jason J. Herne" On 09/05/2013 08:01 AM, Andreas Färber wrote: > Am 01.08.2013 16:12, schrieb Jason J. Herne: >> From: "Jason J. Herne" >> ... > > This is what got us into the link<> discussion last time. If we do > > for (i = 0; i < ARRAY_SIZE(ipi_states); i++) { > name = g_strdup_printf("cpu[%i]", i); > object_property_add_link(qdev_get_machine(), name, TYPE_S390_CPU, > &ipi_states[i], &err); > } > > then we get said /machine/cpu[n] link<> properties, at a QMP level > either returning nothing or the canonical path to the CPU object. > > On IRC I didn't get an answer of whether it was being done the above way > because there is infrastructure missing, and a look at object.h now > confirms that suspicion. CC'ing Anthony and Paolo. > > Since object_property_add_link() uses a NULL opaque, my idea would be to > add a single setter hook argument passed through as opaque to > object_set_link_property(), which would call it with the old and the new > value. > > The purpose would be to avoid growing our own internal setter API, which > is disjoint from the QMP qom-set we are targetting at. I wrote the code, very close to how you suggested and it appears to be working when tested with qom-list. I'm still not certain why we need the ability to set the opaque of object_set_link_property()? For reference here is what I did: void s390_init_cpus(const char *cpu_model) { int i; char* name; if (cpu_model == NULL) { cpu_model = "host"; } ipi_states = g_malloc0(sizeof(S390CPU *) * max_cpus); 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); } for (i = 0; i < smp_cpus; i++) { cpu_s390x_init(cpu_model); } } Yep, I know cpu_model is going away ;). -- -- Jason J. Herne (jjherne@linux.vnet.ibm.com)