Linux 5.2 の準備のため,.config
がどう変更されるのか見てみた.以下 -
は削除されたもの,+
は追加されたもの.x86_64.
追加
-
+CONFIG_NET_VENDOR_XILINX=y
net: ll_temac: Allow use on x86 platforms
使わないので
n
に. -
+CONFIG_DRM_GEM_SHMEM_HELPER=y
drm: Add library for shmem backed GEM objects
Selected by [m]: - DRM_CIRRUS_QEMU [=m] && HAS_IOMEM [=y] && DRM [=m] && PCI [=y] && MMU [=y]
-
+CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y
media: sound/usb: Use Media Controller API to share media resources
-
+CONFIG_NVMEM_SYSFS=y
nvmem: core: add NVMEM_SYSFS Kconfig
y
にしておく. -
+CONFIG_INIT_STACK_NONE=y
security: Create “kernel hardening” config area
NONE 以外の Option は
CONFIG_GCC_PLUGINS=y
に依存する.apt install gcc-6-plugin-dev
すればCONFIG_GCC_PLUGINS=y
になる.CONFIG_GCC_PLUGIN_STRUCTLEAK_USER=y
(weak)ぐらいにしておいても良いかも知れないが,もろもろ考慮してCONFIG_INIT_STACK_NONE=y
のままにしておく. -
+CONFIG_CRYPTO_ECC=m
-
+CONFIG_IRQ_POLL=y
scsi: mpt3sas: Irq poll to avoid CPU hard lockups
mpt3sas が IRQ poll を利用するようになった.
-
+CONFIG_ARCH_STACKWALK=y
stacktrace: Provide common infrastructure
x86/stacktrace: Use common infrastructure -
+CONFIG_DEBUG_MISC=y
init: introduce DEBUG_MISC option
DEBUG_KERNEL
の一部がDEBUG_MISC
に置き換えられる. -
+CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
x86/mm/cpa: Add set_direct_map_*() functions
x86
でy
になる. -
+CONFIG_CONTIG_ALLOC=y
mm: simplify MEMORY_ISOLATION && COMPACTION || CMA into CONTIG_ALLOC
-
+CONFIG_ARCH_HAS_HMM_MIRROR=y
-
+CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m
netfilter: x_tables: merge ip and ipv6 masquerade modules
手元では
IP_NF_TARGET_MASQUERADE=m
で select されていた.
ほか
-
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
compiler: allow all arches to enable CONFIG_OPTIMIZE_INLINING
x86 のみで
CONFIG_OPTIMIZE_INLINING
を enable 可能だったが,他の architecture でも enable 可能になった.ついでに
CONFIG_OPTIMIZE_INLINING=y
にした.
削除
-
-CONFIG_ANON_INODES=y
Make anon_inodes unconditional
無条件に
anon_inodes.o
が組み込まれるようになった. -
-CONFIG_GENERIC_HWEIGHT=y
x86/kconfig: Disable CONFIG_GENERIC_HWEIGHT and remove __HAVE_ARCH_SW_HWEIGHT
-
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
locking/rwsem: Remove rwsem-spinlock.c & use rwsem-xadd.c for all archs
無条件に
rwsem-xadd.c
が使われるようになった. -
-CONFIG_X86_DEV_DMA_OPS=y
-
-CONFIG_HAVE_RCU_TABLE_INVALIDATE=y
asm-generic/tlb, arch: Invert CONFIG_HAVE_RCU_TABLE_INVALIDATE
CONFIG_HAVE_RCU_TABLE_NO_INVALIDATE
が導入されてn
になった. -
-CONFIG_ARCH_DISCARD_MEMBLOCK=y
-
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-
-CONFIG_NF_NAT_NEEDED=y
netfilter: replace NF_NAT_NEEDED with IS_ENABLED(CONFIG_NF_NAT)
-
-CONFIG_CHASH=m
-
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
video: backlight: Remove useless BACKLIGHT_LCD_SUPPORT kernel symbol
-
-CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
-
-CONFIG_TRACING_EVENTS_GPIO=y
追記 (2019/7/13)
nvidia-kernel-dkms 418.74-1 と nvidia-legacy-390xx-kernel-dkms 390.116-1 で,以下の箇所で compile に失敗する(Linux 5.2.0).mm: introduce put_user_page*(), placeholder versions
/var/lib/dkms/nvidia-current/418.74/build/nvidia-uvm/uvm8_tools.c:209:13: error: conflicting types for ‘put_user_pages’
static void put_user_pages(struct page **pages, NvU64 page_count)
^~~~~~~~~~~~~~
In file included from /var/lib/dkms/nvidia-current/418.74/build/common/inc/nv-pgprot.h:17,
from /var/lib/dkms/nvidia-current/418.74/build/common/inc/nv-linux.h:20,
from /var/lib/dkms/nvidia-current/418.74/build/nvidia-uvm/uvm_linux.h:41,
from /var/lib/dkms/nvidia-current/418.74/build/nvidia-uvm/uvm_common.h:48,
from /var/lib/dkms/nvidia-current/418.74/build/nvidia-uvm/uvm8_tools.c:23:
./include/linux/mm.h:1075:6: note: previous declaration of ‘put_user_pages’ was here
void put_user_pages(struct page **pages, unsigned long npages);
^~~~~~~~~~~~~~
./include/linux/mm.h
に導入されたput_user_pages
はNVIDIAのドライバのそれと全く同じなので,以下のようにNVIDIA側でcomment outしてしまう.これでcompileできる.
--- a/nvidia-uvm/uvm8_tools.c
+++ b/nvidia-uvm/uvm8_tools.c
@@ -204,12 +204,14 @@ static bool tracker_is_counter(uvm_tools_event_tracker_t *event_tracker)
return event_tracker != NULL && !event_tracker->is_queue;
}
+/*
static void put_user_pages(struct page **pages, NvU64 page_count)
{
NvU64 i;
for (i = 0; i < page_count; i++)
put_page(pages[i]);
}
+*/
static void unmap_user_pages(struct page **pages, void *addr, NvU64 size)
{