Patch "sb_edac: Fix erroneous bytes->gigabytes conversion" has been added to the 3.10-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
sb_edac: Fix erroneous bytes->gigabytes conversion
to the 3.10-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:
sb_edac-fix-erroneous-bytes-gigabytes-conversion.patch
and it can be found in the queue-3.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
0fd2dc596b4cbfe1cafc157c2b4ea30dbb95beceMon Sep 17 00:00:00 2001
From: Jim Snow <[email protected]>
Date: Tue, 18 Nov 2014 14:51:09 +0100
Subject: sb_edac: Fix erroneous bytes->gigabytes conversion
From: Jim Snow <[email protected]>
commit 8c009100295597f23978c224aec5751a365bc965 upstream.
--- drivers/edac/sb_edac.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-)
drivers/edac/sb_edac.c +20 -18
@@ -623,7 +623,7 @@ static void get_memory_layout(const struu32 reg;u64 limit, prv =0 ;u64 tmp_mb; -u32 mb, kb; +u32 gb, mb;u32 rir_way;/*
@@ -636,8 +636,9 @@ static void get_memory_layout(const stru pvt->tolm =GET_TOLM (reg); tmp_mb = (1 + pvt->tolm) >>20 ; - mb =div_u64_rem (tmp_mb,1000 , &kb); -edac_dbg (0 ,"TOLM: %u.%03u GB (0x%016Lx)\n" , mb, kb, (u64 )pvt->tolm); + gb =div_u64_rem (tmp_mb,1024 , &mb); +edac_dbg (0 ,"TOLM: %u.%03u GB (0x%016Lx)\n" , + gb, (mb*1000 )/1024 , (u64 )pvt->tolm);/* Address range is already 45:25 */ pci_read_config_dword(pvt->pci_sad1, TOHM,
@@ -645,8 +646,9 @@ static void get_memory_layout(const stru pvt->tohm =GET_TOHM (reg); tmp_mb = (1 + pvt->tohm) >>20 ; - mb =div_u64_rem (tmp_mb,1000 , &kb); -edac_dbg (0 ,"TOHM: %u.%03u GB (0x%016Lx)\n" , mb, kb, (u64 )pvt->tohm); + gb =div_u64_rem (tmp_mb,1024 , &mb); +edac_dbg (0 ,"TOHM: %u.%03u GB (0x%016Lx)\n" , + gb, (mb*1000 )/1024 , (u64 )pvt->tohm);/* * Step 2) Get SAD range and SAD Interleave list
@@ -668,11 +670,11 @@ static void get_memory_layout(const strubreak ; tmp_mb = (limit +1 ) >>20 ; - mb =div_u64_rem (tmp_mb,1000 , &kb); + gb =div_u64_rem (tmp_mb,1024 , &mb);edac_dbg (0 ,"SAD#%d %s up to %u.%03u GB (0x%016Lx) Interleave: %s reg=0x%08x\n" , n_sads,get_dram_attr (reg), - mb, kb, + gb, (mb*1000 )/1024 , ((u64 )tmp_mb) <<20L ,INTERLEAVE_MODE (reg) ?"8:6" :"[8:6]XOR[18:16]" , reg);
@@ -702,9 +704,9 @@ static void get_memory_layout(const strubreak ; tmp_mb = (limit +1 ) >>20 ; - mb =div_u64_rem (tmp_mb,1000 , &kb); + gb =div_u64_rem (tmp_mb,1024 , &mb); edac_dbg(0, "TAD#%d: up to %u.%03u GB (0x%016Lx), socket interleave %d, memory interleave %d, TGT: %d, %d, %d, %d, reg=0x%08x\n", - n_tads, mb, kb, + n_tads, gb, (mb*1000)/1024, ((u64)tmp_mb) << 20L, (u32)TAD_SOCK(reg), (u32)TAD_CH(reg),
@@ -727,10 +729,10 @@ static void get_memory_layout(const stru tad_ch_nilv_offset[j], ®); tmp_mb =TAD_OFFSET (reg) >>20 ; - mb =div_u64_rem (tmp_mb,1000 , &kb); + gb =div_u64_rem (tmp_mb,1024 , &mb);edac_dbg (0 ,"TAD CH#%d, offset #%d: %u.%03u GB (0x%016Lx), reg=0x%08x\n" , i, j, - mb, kb, + gb, (mb*1000 )/1024 , ((u64 )tmp_mb) <<20L , reg); }
@@ -752,10 +754,10 @@ static void get_memory_layout(const stru tmp_mb =RIR_LIMIT (reg) >>20 ; rir_way =1 <<RIR_WAY (reg); - mb =div_u64_rem (tmp_mb,1000 , &kb); + gb =div_u64_rem (tmp_mb,1024 , &mb);edac_dbg (0 ,"CH#%d RIR#%d, limit: %u.%03u GB (0x%016Lx), way: %d, reg=0x%08x\n" , i, j, - mb, kb, + gb, (mb*1000 )/1024 , ((u64 )tmp_mb) <<20L , rir_way, reg);
@@ -766,10 +768,10 @@ static void get_memory_layout(const stru ®); tmp_mb =RIR_OFFSET (reg) <<6 ; - mb =div_u64_rem (tmp_mb,1000 , &kb); + gb =div_u64_rem (tmp_mb,1024 , &mb);edac_dbg (0 ,"CH#%d RIR#%d INTL#%d, offset %u.%03u GB (0x%016Lx), tgt: %d, reg=0x%08x\n" , i, j, k, - mb, kb, + gb, (mb*1000 )/1024 , ((u64 )tmp_mb) <<20L , (u32 )RIR_RNK_TGT (reg), reg);
@@ -806,7 +808,7 @@ static int get_memory_error_data(structu8 ch_way,sck_way;u32 tad_offset;u32 rir_way; -u32 mb, kb; +u32 mb, gb;u64 ch_addr, offset, limit, prv =0 ;
@@ -1022,10 +1024,10 @@ static int get_memory_error_data(structcontinue ; limit =RIR_LIMIT (reg); - mb =div_u64_rem (limit >>20 ,1000 , &kb); + gb =div_u64_rem (limit >>20 ,1024 , &mb);edac_dbg (0 ,"RIR#%d, limit: %u.%03u GB (0x%016Lx), way: %d\n" , n_rir, - mb, kb, + gb, (mb*1000 )/1024 , limit,1 <<RIR_WAY (reg));if (ch_addr <= limit)
Patches currently in stable-queue which might be from [email protected] are
queue-3.10/sb_edac-fix-erroneous-bytes-gigabytes-conversion.patch