From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55514) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WYeKv-0004DF-Oo for qemu-devel@nongnu.org; Fri, 11 Apr 2014 12:29:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WYeKp-00038x-Gh for qemu-devel@nongnu.org; Fri, 11 Apr 2014 12:29:53 -0400 Message-ID: <53481879.5090007@suse.de> Date: Fri, 11 Apr 2014 18:29:45 +0200 From: Alexander Graf MIME-Version: 1.0 References: <1394692166-19408-1-git-send-email-aik@ozlabs.ru> In-Reply-To: <1394692166-19408-1-git-send-email-aik@ozlabs.ru> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] spapr: add ibm, chip-id property in device tree List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexey Kardashevskiy , qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, =?ISO-8859-1?Q?Andreas_F=E4rber?= On 13.03.14 07:29, Alexey Kardashevskiy wrote: > This adds a "ibm,chip-id" property for CPU nodes which should be the same > for all cores in the same CPU socket. The recent guest kernels use this > information to associate threads with sockets. > > Refer to the kernel commit 256f2d4b463d3030ebc8d2b54f427543814a2bdc > for more details. > > Signed-off-by: Alexey Kardashevskiy > --- > hw/ppc/spapr.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index bf46c38..6366230 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -308,6 +308,8 @@ static void *spapr_create_fdt_skel(hwaddr initrd_base, > uint32_t interrupt_server_ranges_prop[] = {0, cpu_to_be32(smp_cpus)}; > int i, smt = kvmppc_smt_threads(); > unsigned char vec5[] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x80}; > + QemuOpts *opts = qemu_opts_find(qemu_find_opts("smp-opts"), NULL); > + unsigned sockets = opts ? qemu_opt_get_number(opts, "sockets", 0) : 0; > > fdt = g_malloc0(FDT_MAX_SIZE); > _FDT((fdt_create(fdt, FDT_MAX_SIZE))); > @@ -465,6 +467,13 @@ static void *spapr_create_fdt_skel(hwaddr initrd_base, > page_sizes_prop, page_sizes_prop_size))); > } > > + if (sockets) { > + int cpus_per_socket = smp_cpus / sockets; > + uint32_t chip_id = cs->cpu_index / cpus_per_socket; > + > + _FDT((fdt_property_cell(fdt, "ibm,chip-id", chip_id))); > + } Have you verified this works correctly with threads? Also, I don't see why we should omit the chip-id when we don't define sockets. Alex