Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 May 2013 20:21:38 +0200
From:      Attilio Rao <attilio@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   Re: svn commit: r250546 - user/attilio/jeff-numa/sys/x86/acpica
Message-ID:  <CAJ-FndBJcLtgHkxBWXDViQNhsb_rM3piAPxyPmoME2o8GXN7-w@mail.gmail.com>
In-Reply-To: <51912863.6010601@FreeBSD.org>
References:  <201305120210.r4C2AFpt076600@svn.freebsd.org> <51912863.6010601@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, May 13, 2013 at 7:52 PM, John Baldwin <jhb@freebsd.org> wrote:
> On 5/11/13 10:10 PM, Attilio Rao wrote:
>> Author: attilio
>> Date: Sun May 12 02:10:15 2013
>> New Revision: 250546
>> URL: http://svnweb.freebsd.org/changeset/base/250546
>>
>> Log:
>>   Add the code to setup the correct number of probed memory domains.
>>
>>   Sponsored by:       EMC / Isilon storage division
>>   Obtained from:      jeff
>>
>> Modified:
>>   user/attilio/jeff-numa/sys/x86/acpica/srat.c
>>
>> Modified: user/attilio/jeff-numa/sys/x86/acpica/srat.c
>> ==============================================================================
>> --- user/attilio/jeff-numa/sys/x86/acpica/srat.c      Sun May 12 01:58:04 2013        (r250545)
>> +++ user/attilio/jeff-numa/sys/x86/acpica/srat.c      Sun May 12 02:10:15 2013        (r250546)
>> @@ -244,33 +244,34 @@ static int
>>  renumber_domains(void)
>>  {
>>       int domains[VM_PHYSSEG_MAX];
>> -     int ndomain, i, j, slot;
>> +     int i, j, slot;
>>
>>       /* Enumerate all the domains. */
>> -     ndomain = 0;
>> +     vm_ndomain = 0;
>>       for (i = 0; i < num_mem; i++) {
>>               /* See if this domain is already known. */
>> -             for (j = 0; j < ndomain; j++) {
>> +             for (j = 0; j < vm_ndomain; j++) {
>>                       if (domains[j] >= mem_info[i].domain)
>>                               break;
>>               }
>> -             if (j < ndomain && domains[j] == mem_info[i].domain)
>> +             if (j < vm_ndomain && domains[j] == mem_info[i].domain)
>>                       continue;
>>
>>               /* Insert the new domain at slot 'j'. */
>>               slot = j;
>> -             for (j = ndomain; j > slot; j--)
>> +             for (j = vm_ndomain; j > slot; j--)
>>                       domains[j] = domains[j - 1];
>>               domains[slot] = mem_info[i].domain;
>> -             ndomain++;
>> -             if (ndomain > MAXMEMDOM) {
>> +             vm_ndomain++;
>> +             if (vm_ndomain > MAXMEMDOM) {
>> +                     vm_ndomain = 1;
>>                       printf("SRAT: Too many memory domains\n");
>>                       return (EFBIG);
>>               }
>>       }
>>
>>       /* Renumber each domain to its index in the sorted 'domains' list. */
>> -     for (i = 0; i < ndomain; i++) {
>> +     for (i = 0; i < vm_ndomain; i++) {
>>               /*
>>                * If the domain is already the right value, no need
>>                * to renumber.
>>
>
> Why not just set vm_ndomain = ndomain at the end?  The current code aims
> to only set the global variables if it successfully parses the entire
> table.  Setting vm_ndomain at the end would be consistent with this
> model (and a much smaller diff).

The provided diff is consistent.
It does reset to 1 (initial value) in case of error, otherwise it is
just the correct value (see the KASSERT in the end).

Attilio


--
Peace can only be achieved by understanding - A. Einstein



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-FndBJcLtgHkxBWXDViQNhsb_rM3piAPxyPmoME2o8GXN7-w>