Patch "ACPI/NUMA: Apply SRAT proximity domain to entire CFMWS window" has been added to the 6.5-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ACPI/NUMA: Apply SRAT proximity domain to entire CFMWS window

to the 6.5-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     acpi-numa-apply-srat-proximity-domain-to-entire-cfmw.patch
and it can be found in the queue-6.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 27ddf72a582d17ccc3b0c70c1a5aef0038ebc2a0
Author: Alison Schofield <alison.schofield@xxxxxxxxx>
Date:   Mon Jul 10 13:02:59 2023 -0700

    ACPI/NUMA: Apply SRAT proximity domain to entire CFMWS window
    
    [ Upstream commit 8f1004679987302b155f14b966ca6d4335814fcb ]
    
    Commit fd49f99c1809 ("ACPI: NUMA: Add a node and memblk for each
    CFMWS not in SRAT") did not account for the case where the BIOS
    only partially describes a CFMWS Window in the SRAT. That means
    the omitted address ranges, of a partially described CFMWS Window,
    do not get assigned to a NUMA node.
    
    Replace the call to phys_to_target_node() with numa_add_memblks().
    Numa_add_memblks() searches an HPA range for existing memblk(s)
    and extends those memblk(s) to fill the entire CFMWS Window.
    
    Extending the existing memblks is a simple strategy that reuses
    SRAT defined proximity domains from part of a window to fill out
    the entire window, based on the knowledge* that all of a CFMWS
    window is of a similar performance class.
    
    *Note that this heuristic will evolve when CFMWS Windows present
    a wider range of characteristics. The extension of the proximity
    domain, implemented here, is likely a step in developing a more
    sophisticated performance profile in the future.
    
    There is no change in behavior when the SRAT does not describe
    the CFMWS Window at all. In that case, a new NUMA node with a
    single memblk covering the entire CFMWS Window is created.
    
    Fixes: fd49f99c1809 ("ACPI: NUMA: Add a node and memblk for each CFMWS not in SRAT")
    Reported-by: Derick Marks <derick.w.marks@xxxxxxxxx>
    Suggested-by: Dan Williams <dan.j.williams@xxxxxxxxx>
    Signed-off-by: Alison Schofield <alison.schofield@xxxxxxxxx>
    Signed-off-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
    Reviewed-by: Dan Williams <dan.j.williams@xxxxxxxxx>
    Tested-by: Derick Marks <derick.w.marks@xxxxxxxxx>
    Link: https://lore.kernel.org/all/eaa0b7cffb0951a126223eef3cbe7b55b8300ad9.1689018477.git.alison.schofield%40intel.com
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/acpi/numa/srat.c b/drivers/acpi/numa/srat.c
index 1f4fc5f8a819d..12f330b0eac01 100644
--- a/drivers/acpi/numa/srat.c
+++ b/drivers/acpi/numa/srat.c
@@ -310,11 +310,16 @@ static int __init acpi_parse_cfmws(union acpi_subtable_headers *header,
 	start = cfmws->base_hpa;
 	end = cfmws->base_hpa + cfmws->window_size;
 
-	/* Skip if the SRAT already described the NUMA details for this HPA */
-	node = phys_to_target_node(start);
-	if (node != NUMA_NO_NODE)
+	/*
+	 * The SRAT may have already described NUMA details for all,
+	 * or a portion of, this CFMWS HPA range. Extend the memblks
+	 * found for any portion of the window to cover the entire
+	 * window.
+	 */
+	if (!numa_fill_memblks(start, end))
 		return 0;
 
+	/* No SRAT description. Create a new node. */
 	node = acpi_map_pxm_to_node(*fake_pxm);
 
 	if (node == NUMA_NO_NODE) {



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux