|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/3] x86/numa: Allow arbitrary value of PXM in PXM<->node mapping
>>> On 24.02.15 at 20:11, <boris.ostrovsky@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/srat.c
> +++ b/xen/arch/x86/srat.c
> @@ -27,35 +27,79 @@ static nodemask_t memory_nodes_parsed __initdata;
> static nodemask_t processor_nodes_parsed __initdata;
> static nodemask_t nodes_found __initdata;
> static struct node nodes[MAX_NUMNODES] __initdata;
> -static u8 __read_mostly pxm2node[256] = { [0 ... 255] = NUMA_NO_NODE };
>
> +struct pxm2node {
> + unsigned pxm;
> + int node;
> +};
> +static struct pxm2node __read_mostly p2n[MAX_NUMNODES] =
Can this please continue to be named pxm2node[]? "p2..." is too
commonly used for representing a phys-to-something conversion.
> + { [0 ... MAX_NUMNODES - 1] = {.node = NUMA_NO_NODE} };
> +
> +static int node_to_pxm(int n);
I don't see why you need to reinstate this forward declaration.
> int pxm_to_node(int pxm)
> {
> - if ((unsigned)pxm >= 256)
> - return -1;
> - /* Extend 0xff to (int)-1 */
> - return (signed char)pxm2node[pxm];
> + unsigned i;
> +
> + if ( (pxm < MAX_NUMNODES) && node_found(pxm, pxm) )
> + return p2n[pxm].node;
With this the function parameter's type can't remain to be signed.
Also please don't change coding style here, unless you do so for
the whole file (in a separate patch). The one change I wouldn't
mind is switching node_to_pxm() from 8-space to tab indentation.
> __devinit int setup_node(int pxm)
> {
> - unsigned node = pxm2node[pxm];
> - if (node == 0xff) {
> - if (nodes_weight(nodes_found) >= MAX_NUMNODES)
> - return -1;
> - node = first_unset_node(nodes_found);
> - node_set(node, nodes_found);
> - pxm2node[pxm] = node;
> - }
> - return pxm2node[pxm];
> + int node;
> + unsigned idx;
> + static bool_t warned;
> +
> + if ( pxm < MAX_NUMNODES )
> + {
> + if ( node_found(pxm, pxm) )
> + return p2n[pxm].node;
> +
> + /* Try to maintain indexing of p2n by pxm */
Coding style.
> @@ -111,8 +155,6 @@ static __init void bad_srat(void)
> acpi_numa = -1;
> for (i = 0; i < MAX_LOCAL_APIC; i++)
> apicid_to_node[i] = NUMA_NO_NODE;
> - for (i = 0; i < ARRAY_SIZE(pxm2node); i++)
> - pxm2node[i] = NUMA_NO_NODE;
Without any replacement?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |