]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
EDAC/igen6: Fix conversion of system address to physical memory address
authorQiuxu Zhuo <qiuxu.zhuo@intel.com>
Wed, 14 Aug 2024 06:10:11 +0000 (14:10 +0800)
committerTony Luck <tony.luck@intel.com>
Tue, 3 Sep 2024 19:27:19 +0000 (12:27 -0700)
The conversion of system address to physical memory address (as viewed by
the memory controller) by igen6_edac is incorrect when the system address
is above the TOM (Total amount Of populated physical Memory) for Elkhart
Lake and Ice Lake (Neural Network Processor). Fix this conversion.

Fixes: 10590a9d4f23 ("EDAC/igen6: Add EDAC driver for Intel client SoCs using IBECC")
Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/stable/20240814061011.43545-1-qiuxu.zhuo%40intel.com
drivers/edac/igen6_edac.c

index 0fe75eed8973b2a3f1c7de0758d436ff6d290cee..189a2fc29e74f51ce9848cc3a0bfbc53c3cc45e1 100644 (file)
@@ -316,7 +316,7 @@ static u64 ehl_err_addr_to_imc_addr(u64 eaddr, int mc)
        if (igen6_tom <= _4GB)
                return eaddr + igen6_tolud - _4GB;
 
-       if (eaddr < _4GB)
+       if (eaddr >= igen6_tom)
                return eaddr + igen6_tolud - igen6_tom;
 
        return eaddr;