From: Paolo Bonzini <pbonzini@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>,
Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: imammedo@redhat.com, qemu-devel@nongnu.org, david@gibson.dropbear.id.au
Subject: Re: [Qemu-devel] [RFC PATCH v0] numa: API to lookup NUMA node by address
Date: Thu, 14 May 2015 11:39:06 +0200 [thread overview]
Message-ID: <55546D3A.8010509@redhat.com> (raw)
In-Reply-To: <20150513180607.GK25766@thinpad.lan.raisama.net>
On 13/05/2015 20:06, Eduardo Habkost wrote:
> Also, this introduces a circular dependency between pc-dimm.c and
> numa.c. Instead of that, pc-dimm could simply notify us when a new
> device is realized (with just (addr, end, node) as arguments), so we can
> save the list of memory ranges inside struct node_info.
>
> I wonder if the memory API already provides something that would help
> us. Paolo, do you see a way we could simply use a MemoryRegion as input
> to lookup the NUMA node?
No, but I guess you could add a numa_get/set_memory_region_node_id API
that uses a hash table. That's a variant of the "pc-dimm could simply
notify" numa.c that you propose above.
Paolo
>
>> + qapi_free_MemoryDeviceInfoList(info_list);
>> + error_setg(errp, "Address 0x" RAM_ADDR_FMT " doesn't belong to any "
>> + "NUMA node", addr);
>> +
>> + return -1;
>> +}
>> +
>> +static void numa_set_mem_address(int nodenr)
>> +{
>> + if (nodenr) {
>> + numa_info[nodenr].mem_start = numa_info[nodenr-1].mem_end;
>
> You isolated the code inside a function, but it requires the function to
> be called in a specific nodenr order. I would just make it a loop that
> calculates mem_start and mem_end for all nodes, then you won't need a
> special case for node 0.
>
>> + } else {
>> + numa_info[nodenr].mem_start = 0;
>> + }
>> + numa_info[nodenr].mem_end = numa_info[nodenr].mem_start +
>> + numa_info[nodenr].node_mem;
>
> Now that we have specific fields for the memory ranges, it would be
> interesting to reuse mem_start and mem_end inside
> memory_region_allocate_system_memory() instead of duplicating the
> address calculation there.
>
>> +}
>> +
>> static void numa_node_parse(NumaNodeOptions *node, QemuOpts *opts, Error **errp)
>> {
>> uint16_t nodenr;
>> @@ -276,6 +333,10 @@ void parse_numa_opts(MachineClass *mc)
>> }
>>
>> for (i = 0; i < nb_numa_nodes; i++) {
>> + numa_set_mem_address(i);
>> + }
>> +
>> + for (i = 0; i < nb_numa_nodes; i++) {
>> if (!bitmap_empty(numa_info[i].node_cpu, MAX_CPUMASK_BITS)) {
>> break;
>> }
>> --
>> 2.1.0
>>
>>
>
next prev parent reply other threads:[~2015-05-14 9:39 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-07 7:04 [Qemu-devel] [RFC PATCH v0] numa: API to lookup NUMA node by address Bharata B Rao
2015-05-13 15:33 ` Bharata B Rao
2015-05-13 18:06 ` Eduardo Habkost
2015-05-14 9:39 ` Paolo Bonzini [this message]
2015-05-25 7:47 ` Bharata B Rao
2015-05-25 17:42 ` Eduardo Habkost
2015-06-08 5:58 ` Bharata B Rao
2015-06-08 9:51 ` Igor Mammedov
2015-06-08 15:51 ` Eduardo Habkost
2015-06-08 15:55 ` Paolo Bonzini
2015-06-08 16:09 ` Eduardo Habkost
2015-06-09 9:23 ` Igor Mammedov
2015-06-09 12:40 ` Eduardo Habkost
2015-06-10 9:43 ` Igor Mammedov
2015-06-10 12:14 ` Eduardo Habkost
2015-06-10 12:50 ` Bharata B Rao
2015-06-11 6:56 ` Igor Mammedov
2015-06-11 7:04 ` Bharata B Rao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55546D3A.8010509@redhat.com \
--to=pbonzini@redhat.com \
--cc=bharata@linux.vnet.ibm.com \
--cc=david@gibson.dropbear.id.au \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.