16 Feb, 2011

1 commit

  • The functions used during NUMA initialization - *_numa_init() and
    *_scan_nodes() - have different arguments and return values. Unify
    them such that they all take no argument and return 0 on success and
    -errno on failure. This is in preparation for further NUMA init
    cleanups.

    Signed-off-by: Tejun Heo
    Cc: Yinghai Lu
    Cc: Brian Gerst
    Cc: Cyrill Gorcunov
    Cc: Shaohui Zheng
    Cc: David Rientjes
    Cc: Ingo Molnar
    Cc: H. Peter Anvin

    Tejun Heo
     

12 Jan, 2011

1 commit

  • As pointed out by Linus CONFIG_X86 in drivers/acpi/numa.c is
    ugly.

    Builds and boots on ia64 (both normally and with maxcpus=8 to limit
    the number of cpus).

    Signed-off-by: Tony Luck
    Acked-by: Yinghai Lu
    Cc: Linus Torvalds
    Cc: Wu Fengguang
    Cc: Bjorn Helgaas
    Cc: Len Brown
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Tony Luck
     

24 Dec, 2010

1 commit

  • Recent Intel new system have different order in MADT, aka will list all thread0
    at first, then all thread1.
    But SRAT table still old order, it will list cpus in one socket all together.

    If the user have compiled limited NR_CPUS or boot with nr_cpus=, could have missed
    to put some cpus apic id to node mapping into apicid_to_node[].

    for example for 4 sockets system with 64 cpus with nr_cpus=32 will get crash...

    [ 9.106288] Total of 32 processors activated (136190.88 BogoMIPS).
    [ 9.235021] divide error: 0000 [#1] SMP
    [ 9.235315] last sysfs file:
    [ 9.235481] CPU 1
    [ 9.235592] Modules linked in:
    [ 9.245398]
    [ 9.245478] Pid: 2, comm: kthreadd Not tainted 2.6.37-rc1-tip-yh-01782-ge92ef79-dirty #274 /Sun Fire x4800
    [ 9.265415] RIP: 0010:[] [] select_task_rq_fair+0x4f0/0x623
    ...
    [ 9.645938] RIP [] select_task_rq_fair+0x4f0/0x623
    [ 9.665356] RSP
    [ 9.665568] ---[ end trace 2296156d35fdfc87 ]---

    So let just parse all cpu entries in SRAT.

    Also add apicid checking with MAX_LOCAL_APIC, in case We could out of boundaries of
    apicid_to_node[].

    it fixes following bug too.
    https://bugzilla.kernel.org/show_bug.cgi?id=22662

    -v2: expand to 32bit according to hpa
    need to add MAX_LOCAL_APIC for 32bit

    Reported-and-Tested-by: Wu Fengguang
    Reported-by: Bjorn Helgaas
    Tested-by: Myron Stowe
    Signed-off-by: Yinghai Lu
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     

15 Aug, 2010

1 commit


04 Apr, 2010

1 commit

  • pxms are mapped to low node ids to maintain generic kernel use of
    functions such as pxm_to_node() that are used to determine device
    affinity. Otherwise, there is no pxm-to-node and node-to-pxm matching
    rule for x86_64 users of NUMA emulation where a single pxm may be bound
    to multiple NUMA nodes.

    Signed-off-by: David Rientjes
    Signed-off-by: Len Brown

    David Rientjes
     

18 Feb, 2010

1 commit


17 Dec, 2009

1 commit


16 Dec, 2009

1 commit

  • NUMA_NO_NODE has been exported globally and thus it can replace NID_INVAL
    in the acpi code.

    Also removes the unused acpi_unmap_pxm_to_node() function.

    [akpm@linux-foundation.org: coding-style fixes]
    Cc: Cyrill Gorcunov
    Cc: Lee Schermerhorn
    Reviewed-by: Christoph Lameter
    Signed-off-by: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    David Rientjes
     

13 Oct, 2009

1 commit

  • This is the counterpart to "x86: export k8 physical topology" for
    SRAT. It is not as invasive because the acpi code already seperates
    node setup into detection and registration steps, with the
    exception of registering e820 active regions in
    acpi_numa_memory_affinity_init(). This is now moved to
    acpi_scan_nodes() if NUMA emulation is disabled or deferred.

    acpi_numa_init() now returns a value which specifies whether an
    underlying SRAT was located. If so, that topology can be used by
    the emulation code to interleave emulated nodes over physical nodes
    or to register the nodes for ACPI.

    acpi_get_nodes() may now be used to export the srat physical
    topology of the machine for NUMA emulation.

    Signed-off-by: David Rientjes
    Cc: Andreas Herrmann
    Cc: Yinghai Lu
    Cc: Balbir Singh
    Cc: Ankita Garg
    Cc: Len Brown
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    David Rientjes
     

29 Aug, 2009

1 commit

  • Linux/ACPI core files using internal.h all PREFIX "ACPI: ",
    however, not all ACPI drivers use/want it -- and they
    should not have to #undef PREFIX to define their own.

    Add GPL commment to internal.h while we are there.

    This does not change any actual console output,
    asside from a whitespace fix.

    Signed-off-by: Len Brown

    Len Brown
     

04 Apr, 2009

1 commit

  • All logical processors with APIC ID values of 255 and greater will have their
    APIC reported through Processor X2APIC structure (type-9 entry type) and all
    logical processors with APIC ID less than 255 will have their APIC reported
    through legacy Processor Local APIC (type-0 entry type) only. This is the
    same case even for NMI structure reporting.

    The Processor X2APIC Affinity structure provides the association between the
    X2APIC ID of a logical processor and the proximity domain to which the logical
    processor belongs.

    For OSPM, Procssor IDs outside the 0-254 range are to be declared as Device()
    objects in the ACPI namespace.

    Signed-off-by: Suresh Siddha
    Signed-off-by: Len Brown

    Suresh Siddha
     

16 Mar, 2009

1 commit


31 Dec, 2008

1 commit


11 Oct, 2008

1 commit

  • As of version 2.0, ACPI can return 64-bit integers. The current
    acpi_evaluate_integer only supports 64-bit integers on 64-bit platforms.
    Change the argument to take a pointer to an acpi_integer so we support
    64-bit integers on all platforms.

    lenb: replaced use of "acpi_integer" with "unsigned long long"
    lenb: fixed bug in acpi_thermal_trips_update()

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Len Brown

    Matthew Wilcox
     

17 Jul, 2008

1 commit


12 Jun, 2008

1 commit

  • This is a SLIT sanity checking patch. It moves slit_valid() function to
    generic ACPI code and does sanity checking for both x86 and ia64. It sets up
    node_distance with LOCAL_DISTANCE and REMOTE_DISTANCE when hitting invalid
    SLIT table on ia64. It also cleans up unused variable localities in
    acpi_parse_slit() on x86.

    Signed-off-by: Fenghua Yu
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    Fenghua Yu
     

07 Feb, 2008

1 commit

  • This patch contains the following possible cleanups:
    - make the following needlessly global code static:
    - drivers/acpi/bay.c:dev_attr_eject
    - drivers/acpi/bay.c:dev_attr_present
    - drivers/acpi/dock.c:dev_attr_docked
    - drivers/acpi/dock.c:dev_attr_flags
    - drivers/acpi/dock.c:dev_attr_uid
    - drivers/acpi/dock.c:dev_attr_undock
    - drivers/acpi/pci_bind.c:acpi_pci_unbind()
    - drivers/acpi/pci_link.c:acpi_link_lock
    - drivers/acpi/sbs.c:acpi_sbs_callback()
    - drivers/acpi/sbshc.c:acpi_smbus_transaction()
    - drivers/acpi/sleep/main.c:acpi_sleep_prepare()
    - #if 0 the following unused global functions:
    - drivers/acpi/numa.c:acpi_unmap_pxm_to_node()
    - remove the following unused EXPORT_SYMBOL's:
    - acpi_register_gsi
    - acpi_unregister_gsi
    - acpi_strict
    - acpi_bus_receive_event
    - register_acpi_bus_type
    - unregister_acpi_bus_type
    - acpi_os_printf
    - acpi_os_sleep
    - acpi_os_stall
    - acpi_os_read_pci_configuration
    - acpi_os_create_semaphore
    - acpi_os_delete_semaphore
    - acpi_os_wait_semaphore
    - acpi_os_signal_semaphore
    - acpi_os_signal
    - acpi_pci_irq_enable
    - acpi_get_pxm

    Signed-off-by: Adrian Bunk
    Acked-by: Alexey Starikovskiy
    Signed-off-by: Len Brown

    Adrian Bunk
     

14 Dec, 2007

1 commit

  • for sn2_defconfig:

    WARNING: vmlinux.o(.text+0x4b8601): Section mismatch: reference to .init.data:node_to_pxm_map (between '__acpi_map_pxm_to_node' and 'acpi_get_pxm')
    WARNING: vmlinux.o(.text+0x4b8741): Section mismatch: reference to .init.data:pxm_to_node_map (between 'acpi_map_pxm_to_node' and 'acpi_get_node')

    Signed-off-by: Jan Beulich
    Signed-off-by: Len Brown

    Jan Beulich
     

22 Jul, 2007

2 commits

  • For NUMA emulation, our SLIT should represent the true NUMA topology of the
    system but our proximity domain to node ID mapping needs to reflect the
    emulated state.

    When NUMA emulation has successfully setup fake nodes on the system, a new
    function, acpi_fake_nodes() is called. This function determines the proximity
    domain (_PXM) for each true node found on the system. It then finds which
    emulated nodes have been allocated on this true node as determined by its
    starting address. The node ID to PXM mapping is changed so that each fake
    node ID points to the PXM of the true node that it is located on.

    If the machine failed to register a SLIT, then we assume there is no special
    requirement for emulated node affinity so we use the default LOCAL_DISTANCE,
    which is newly exported to this code, as our measurement if the emulated nodes
    appear in the same PXM. Otherwise, we use REMOTE_DISTANCE.

    PXM_INVAL and NID_INVAL are also exported to the ACPI header file so that we
    can compare node_to_pxm() results in generic code (in this case, the SRAT
    code).

    Cc: Len Brown
    Signed-off-by: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    David Rientjes
     
  • In acpi_scan_nodes(), we immediately return -1 if acpi_numa
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    David Rientjes
     

02 Jun, 2007

1 commit

  • Last of the "Section mismatch" errors from ia64 builds! acpi_map_pxm_to_node()
    is defined with attribute __cpuinit, but is called by "normal" kernel functions
    acpi_getnode() and acpi_map_cpu2node().

    Commit f363d16fbb9374c0bd7f2757d412c287169094c9 moved the data structures on
    which this routine operates from __cpuinitdata to regular memory, so this
    routine can also move out of init space.

    Signed-off-by: Tony Luck
    Signed-off-by: Len Brown

    Luck, Tony
     

17 May, 2007

1 commit

  • Strip __cpuinit[data] from Node PXM routines and supporting data
    structures. Also make pxm_to_node_map and node_to_pxm_map local to the
    numa acpi module.

    This fixes a bug triggered by the following conditions:
    - boot on a machine with a SLIT table defined
    - kernel is configured w/ CONFIG_HOTPLUG_CPU=n
    - cat /sys/devices/system/node/node*/distance
    This will cause an oops by calling into a freed memory section.

    In particular, on x86_64, __node_distance calls node_to_pxm().

    Signed-off-by: Aaron Durbin
    Cc: Len Brown
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Aaron Durbin
     

09 May, 2007

2 commits


13 Feb, 2007

4 commits


03 Feb, 2007

1 commit


14 Oct, 2006

1 commit


02 Jul, 2006

1 commit


01 Jul, 2006

1 commit


28 Jun, 2006

1 commit

  • This is to find node id from acpi's handle of memory_device in DSDT. _PXM for
    the new node can be found by acpi_get_pxm() by using new memory's handle. So,
    node id can be found by pxm_to_nid_map[].

    This patch becomes simpler than v2 of node hot-add patch.
    Because old add_memory() function doesn't have node id parameter.
    So, kernel must find its handle by physical address via DSDT again.
    But, v3 just give node id to add_memory() now.

    Signed-off-by: Yasunori Goto
    Cc: Dave Hansen
    Cc: "Brown, Len"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yasunori Goto
     

23 Jun, 2006

1 commit

  • Consolidate the various arch-specific implementations of pxm_to_node() and
    node_to_pxm() into a single generic version.

    Signed-off-by: Yasunori Goto
    Cc: "Luck, Tony"
    Cc: Andi Kleen
    Cc: Dave Hansen
    Cc: "Brown, Len"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yasunori Goto
     

05 Aug, 2005

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds