Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86/mm/pat: Initialize __cachemode2pte_tbl[] and __pte2cachemode_tbl[] in a bit more readable fashion

The initialization of these two arrays is a bit difficult to follow:
restructure it optically so that a 2D structure shows which bit in
the PTE is set and which not.

Also improve on comments a bit.

No code or data changed:

# arch/x86/mm/init.o:

text data bss dec hex filename
4585 424 29776 34785 87e1 init.o.before
4585 424 29776 34785 87e1 init.o.after

md5:
a82e11ff58bcfd0af3a94662a701f65d init.o.before.asm
a82e11ff58bcfd0af3a94662a701f65d init.o.after.asm

Reviewed-by: Juergen Gross <jgross@suse.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Jan Beulich <JBeulich@suse.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Luis R. Rodriguez <mcgrof@suse.com>
Cc: Toshi Kani <toshi.kani@hp.com>
Cc: linux-kernel@vger.kernel.org
Link: http://lkml.kernel.org/r/20150305082135.GB5969@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>

+22 -18
+22 -18
arch/x86/mm/init.c
··· 29 29 30 30 /* 31 31 * Tables translating between page_cache_type_t and pte encoding. 32 - * Minimal supported modes are defined statically, modified if more supported 33 - * cache modes are available. 34 - * Index into __cachemode2pte_tbl is the cachemode. 35 - * Index into __pte2cachemode_tbl are the caching attribute bits of the pte 36 - * (_PAGE_PWT, _PAGE_PCD, _PAGE_PAT) at index bit positions 0, 1, 2. 32 + * 33 + * Minimal supported modes are defined statically, they are modified 34 + * during bootup if more supported cache modes are available. 35 + * 36 + * Index into __cachemode2pte_tbl[] is the cachemode. 37 + * 38 + * Index into __pte2cachemode_tbl[] are the caching attribute bits of the pte 39 + * (_PAGE_PWT, _PAGE_PCD, _PAGE_PAT) at index bit positions 0, 1, 2. 37 40 */ 38 41 uint16_t __cachemode2pte_tbl[_PAGE_CACHE_MODE_NUM] = { 39 - [_PAGE_CACHE_MODE_WB] = 0, 40 - [_PAGE_CACHE_MODE_WC] = _PAGE_PWT, 41 - [_PAGE_CACHE_MODE_UC_MINUS] = _PAGE_PCD, 42 - [_PAGE_CACHE_MODE_UC] = _PAGE_PCD | _PAGE_PWT, 43 - [_PAGE_CACHE_MODE_WT] = _PAGE_PCD, 44 - [_PAGE_CACHE_MODE_WP] = _PAGE_PCD, 42 + [_PAGE_CACHE_MODE_WB ] = 0 | 0 , 43 + [_PAGE_CACHE_MODE_WC ] = _PAGE_PWT | 0 , 44 + [_PAGE_CACHE_MODE_UC_MINUS] = 0 | _PAGE_PCD, 45 + [_PAGE_CACHE_MODE_UC ] = _PAGE_PWT | _PAGE_PCD, 46 + [_PAGE_CACHE_MODE_WT ] = 0 | _PAGE_PCD, 47 + [_PAGE_CACHE_MODE_WP ] = 0 | _PAGE_PCD, 45 48 }; 46 49 EXPORT_SYMBOL(__cachemode2pte_tbl); 50 + 47 51 uint8_t __pte2cachemode_tbl[8] = { 48 - [__pte2cm_idx(0)] = _PAGE_CACHE_MODE_WB, 49 - [__pte2cm_idx(_PAGE_PWT)] = _PAGE_CACHE_MODE_WC, 50 - [__pte2cm_idx(_PAGE_PCD)] = _PAGE_CACHE_MODE_UC_MINUS, 51 - [__pte2cm_idx(_PAGE_PWT | _PAGE_PCD)] = _PAGE_CACHE_MODE_UC, 52 - [__pte2cm_idx(_PAGE_PAT)] = _PAGE_CACHE_MODE_WB, 53 - [__pte2cm_idx(_PAGE_PWT | _PAGE_PAT)] = _PAGE_CACHE_MODE_WC, 54 - [__pte2cm_idx(_PAGE_PCD | _PAGE_PAT)] = _PAGE_CACHE_MODE_UC_MINUS, 52 + [__pte2cm_idx( 0 | 0 | 0 )] = _PAGE_CACHE_MODE_WB, 53 + [__pte2cm_idx(_PAGE_PWT | 0 | 0 )] = _PAGE_CACHE_MODE_WC, 54 + [__pte2cm_idx( 0 | _PAGE_PCD | 0 )] = _PAGE_CACHE_MODE_UC_MINUS, 55 + [__pte2cm_idx(_PAGE_PWT | _PAGE_PCD | 0 )] = _PAGE_CACHE_MODE_UC, 56 + [__pte2cm_idx( 0 | 0 | _PAGE_PAT)] = _PAGE_CACHE_MODE_WB, 57 + [__pte2cm_idx(_PAGE_PWT | 0 | _PAGE_PAT)] = _PAGE_CACHE_MODE_WC, 58 + [__pte2cm_idx(0 | _PAGE_PCD | _PAGE_PAT)] = _PAGE_CACHE_MODE_UC_MINUS, 55 59 [__pte2cm_idx(_PAGE_PWT | _PAGE_PCD | _PAGE_PAT)] = _PAGE_CACHE_MODE_UC, 56 60 }; 57 61 EXPORT_SYMBOL(__pte2cachemode_tbl);