Как использовать _PAGE_BIT_SOFTW1? - PullRequest
0 голосов
/ 30 апреля 2018

В PTE есть несколько битов, доступных программисту. Например, в ядре linux определены следующие макросы

// arch/x86/include/asm/pgtable_types.h
#define _PAGE_BIT_SOFTW1    9   /* available for programmer */
#define _PAGE_BIT_SOFTW2    10  /* " */
#define _PAGE_BIT_SOFTW3    11  /* " */
#define _PAGE_BIT_SOFTW4    58  /* available for programmer */

Однако кажется, что 9-й, 11-й и 58-й биты используются некоторым кодом в ядре. Я отключил некоторые настройки и макросы, подобные следующему, чтобы эти биты не использовались кодом.

// arch/x86/include/asm/pgtable_types.h
#define __HAVE_ARCH_PTE_SPECIAL
#undef __HAVE_ARCH_PTE_SPECIAL // This is added by me.

// arch/Kconfig
#config HAVE_ARCH_SOFT_DIRTY
#   bool

После отключения я скомпилировал ядро ​​и получил сообщение об ошибке ядра.

ld:./arch/x86/kernel/vmlinux.lds:506: syntax error
Makefile:983: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1

Я хочу использовать эти биты. Как я могу отключить код, который использует эти биты?

1 Ответ

0 голосов
/ 30 апреля 2018

Ядро не использует _PAGE_BIT_SOFTW2.

_PAGE_BIT_SOFTW3 используется как грязный бит. Вы можете отключить код, используя его, используя CONFIG_MEM_SOFT_DIRTY .

Насколько я знаю, нет простого способа помешать ядру использовать _PAGE_BIT_SOFTW1 или _PAGE_BIT_SOFTW4.

Обратите внимание, что и в 4-уровневом разбиении по страницам программист может также использовать биты 52-57 всех записей таблицы страниц. Похоже, Linux их не использует.

...