mirror of
https://github.com/torvalds/linux.git
synced 2026-09-12 20:53:03 +02:00
EDAC/igen6: Fix channel address decode for non-hash mode
In non-hash mode, decode_channel_addr() and channel index extraction
used a hardcoded interleave bit position 6 instead of the actual
intlv_bit parameter, causing incorrect channel address decoding.
Fix this by using intlv_bit consistently in both hash and non-hash modes.
Fixes: 10590a9d4f ("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>
Link: https://patch.msgid.link/20260730024238.4096623-5-qiuxu.zhuo@intel.com
This commit is contained in:
parent
540b79536f
commit
7b348d0d40
|
|
@ -1049,13 +1049,12 @@ static void decode_addr(u64 addr, u32 hash, u64 s_size, int l_map,
|
|||
return;
|
||||
}
|
||||
|
||||
if (CHANNEL_HASH_MODE(hash)) {
|
||||
*sub_addr = decode_channel_addr(addr, intlv_bit);
|
||||
*sub_addr = decode_channel_addr(addr, intlv_bit);
|
||||
|
||||
if (CHANNEL_HASH_MODE(hash))
|
||||
*idx = decode_chan_idx(addr, CHANNEL_HASH_MASK(hash), intlv_bit);
|
||||
} else {
|
||||
*sub_addr = decode_channel_addr(addr, 6);
|
||||
*idx = GET_BITFIELD(addr, 6, 6);
|
||||
}
|
||||
else
|
||||
*idx = GET_BITFIELD(addr, intlv_bit, intlv_bit);
|
||||
}
|
||||
|
||||
static int igen6_decode(struct decoded_addr *res)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user