From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48758) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z4GWA-0003zn-PG for qemu-devel@nongnu.org; Sun, 14 Jun 2015 18:36:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z4GW7-0007Bi-HB for qemu-devel@nongnu.org; Sun, 14 Jun 2015 18:36:42 -0400 Received: from mail-pa0-f46.google.com ([209.85.220.46]:34894) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z4GW7-0007Be-B7 for qemu-devel@nongnu.org; Sun, 14 Jun 2015 18:36:39 -0400 Received: by pacyx8 with SMTP id yx8so53218777pac.2 for ; Sun, 14 Jun 2015 15:36:38 -0700 (PDT) Sender: Peter Crosthwaite From: Peter Crosthwaite Date: Sun, 14 Jun 2015 15:36:33 -0700 Message-Id: Subject: [Qemu-devel] [RFC PATCH v1 0/8] QOM prop overloading + ARM MPCore CPUs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, ilg@livius.net, p.fedin@samsung.com, alistair.francis@xilinx.com, pbonzini@redhat.com, afaerber@suse.de Hi All, This series introduced support for multi QOM properties with the same name and then moves the ARM CPUs to the MPCore container objects (yes! they are related!) The application of the QOM change is container objects passing through a single property on multiple same-type children as a single alias. The immediate use case, is the ARM MPCore where we want to add N cpus but pass through the CPU properties for all of them as an alias on the container itself. The container property setter should fan out to all the CPUs in the container. Patches 1-5 implement overloaded properties as part of QOM. QOM properties do not allow overloading by default, the creator of the property has to switch it on. Patch 6 switches this feature on for alias properties which handles the container use case. Patch 8 is the feature presentation, pulling the CPUs into the ARM MPCore container. This is based on a series of Alistair's to do the same. This version does the extra refactoring to handle the case of multiple CPUs and the problems created around aliases. Extra discussion points: The QOM work will probably conflict with Pavel Fedin' work of arrayified properties. So I'll resolve that conflict in a future spin. Liviu recently brought up a desire for arguments to QOM constructors. P8 would probably be cleaner if this feature existed, as the number of CPUs could be set as a constructor argument. There is no flexibility on when this has to be set, it must be done immediately after construction so it ideally should be part of construction. My biggest fear is testing of the changes for the affected boards. Peter, do you much coverage of these boards in your regressions? Do you have automated tests in a git repo somewhere? Regards, Peter Peter Crosthwaite (8): qom: Refactor array property code path qom: Add property overloading qom: Implement overloaded property setters qom: Delete all instances of an overloaded property qom: Disallow getting/resolving an overloaded property qom: Enable overloading of Alias properties arm: realview: Factor out CPU property setters arm: axxmpcore: Add CPUs to MPCore hw/arm/exynos4210.c | 72 +++++++----------------------- hw/arm/highbank.c | 65 +++++---------------------- hw/arm/realview.c | 100 +++++++++++++++++++++++------------------ hw/arm/vexpress.c | 71 +++++++----------------------- hw/arm/xilinx_zynq.c | 65 ++++++++++----------------- hw/cpu/a15mpcore.c | 66 ++++++++++++++++++++++++---- hw/cpu/a9mpcore.c | 97 +++++++++++++++++++++++++++++++++++++--- hw/intc/exynos4210_gic.c | 105 -------------------------------------------- include/hw/arm/exynos4210.h | 2 - include/hw/cpu/a15mpcore.h | 2 + include/hw/cpu/a9mpcore.h | 6 +++ include/qom/object.h | 2 + qom/object.c | 96 ++++++++++++++++++++++++---------------- 13 files changed, 341 insertions(+), 408 deletions(-) -- 2.4.3.3.g905f831