4.18-rc1が出たので.config
がどう変更されるのか見てみた.以下 -
は削除されたもの(or n
),+
は追加されたもの,m->y
等は値の変化.汎用指向の環境.
STACKPROTECTOR 関連
-
-CONFIG_CC_STACKPROTECTOR_STRONG=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_STACKPROTECTOR=y
Kbuild: rename CC_STACKPROTECTOR[_STRONG] config variables
CONFIG_CC_STACKPROTECTOR_STRONG=y
がCONFIG_STACKPROTECTOR_STRONG=y
とCONFIG_STACKPROTECTOR=y
に分離されたと理解した.以下はHAVE_
関連. -
-CONFIG_HAVE_CC_STACKPROTECTOR=y
+CONFIG_HAVE_STACKPROTECTOR=y
-
+CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
+CONFIG_CC_HAS_SANE_STACKPROTECTOR=y
stack-protector: test compiler capability in Kconfig and drop AUTO mode
kbuild/kconfig/kcov
-
-CONFIG_CROSS_COMPILE=""
-
+CONFIG_CC_IS_GCC=y
+CONFIG_GCC_VERSION=60300
+CONFIG_CLANG_VERSION=0
kconfig: add CC_IS_GCC and GCC_VERSION
kconfig: add CC_IS_CLANG and CLANG_VERSION -
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
kcov: test compiler capability in Kconfig and correct dependency
-
+CONFIG_PLUGIN_HOSTCC=""
gcc-plugins: test plugin support in Kconfig and clean up Makefile
Network 関連
-
+CONFIG_FAILOVER=y
+CONFIG_NET_FAILOVER=y
net: Introduce net_failover driver
VIRTIO_NET=y
で select されていた.VIRTIO_NET=m
にしてm
にする. -
+CONFIG_FIXED_PHY=m
+CONFIG_SWPHY=y
lan78xx: Lan7801 Support for Fixed PHY
手元では
USB_LAN78XX [=m] && NETDEVICES [=y] && USB_NET_DRIVERS [=m]
でselectされていた(手元では USB の Network Adapters は全て m としている).CONFIG_SWPHY
はCONFIG_FIXED_PHY
でselectされる. -
+CONFIG_NET_VENDOR_MICROSEMI=y
net: mscc: Add initial Ocelot switch support
Microsemi Ocelot switch support.使わないので n にしておく.
-
+CONFIG_PCIE_DW=y
+CONFIG_PCIE_DW_HOST=y
+CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_DW_PLAT_HOST=y
PCI: Collect all native drivers under drivers/pci/controller/
drivers/pci/dwc/
がdrivers/pci/controller/dwc/
に移動した影響でy
になっていた.Synopsys の DesignWare PCIe IP.n
にする. -
+CONFIG_AUTOFS_FS=m
autofs: remove left-over autofs4 stubs
autofs: create autofs Kconfig and Makefile今まで
autofs4.ko
だったものがautofs.ko
になって,これで v3, v4, v5 の全てをサポートするということならしい.CONFIG_AUTOFS4_FS
がCONFIG_AUTOFS_FS
に依存するようになっていて,CONFIG_AUTOFS4_FS
はそのうちに削除される様子. -
CONFIG_NF_NAT_MASQUERADE_IPV4: m->y
CONFIG_NF_NAT_REDIRECT: m->y
netfilter: nat: merge ipv4/ipv6 masquerade code into main nat module
netfilter: nat: merge nf_nat_redirect into nf_nat別モジュール(
nf_nat.ko
)に merge された.
ほか
-
+CONFIG_RSEQ=y
+CONFIG_HAVE_RSEQ=y
rseq: Introduce restartable sequences system call
x86: Add support for restartable sequencesrestartable sequences system call (
rseq()
) system call. 早くなる? -
+CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y
Input: elantech - add support for SMBus devices
Elantech PS/2 SMbus TouchPad 用.使う可能性もあるので y で keep.
-
-CONFIG_CRYPTO_SALSA20_X86_64=m
crypto: x86/salsa20 - remove x86 salsa20 implementations
Speed up.
-
-CONFIG_HOTPLUG_PCI_SHPC=m
PCI: shpchp: Convert SHPC to be builtin only
shpchp.ko が builtin only になった.使っていなさそうなので
n
に. -
+CONFIG_UEFI_CPER_X86=y
-
+CONFIG_ARCH_HAS_PTE_SPECIAL=y
mm: introduce ARCH_HAS_PTE_SPECIAL
X86
selectsARCH_HAS_PTE_SPECIAL
. -
+CONFIG_ARCH_HAS_UACCESS_MCSAFE=y
x86/asm/memcpy_mcsafe: Define copy_to_iter_mcsafe()
X86
selectsARCH_HAS_PTE_SPECIAL
ifX86_64
. -
-CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
-
+CONFIG_COMPAT_32BIT_TIME=y
-
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
default 512
-
+CONFIG_MEMFD_CREATE=y
-
-CONFIG_HAVE_DMA_API_DEBUG=y
-
-CONFIG_PCI_BUS_ADDR_T_64BIT=y
-
-CONFIG_UDF_NLS=y
DKMS
普段使う DKMS である以下(sid)は,すべて compile に失敗する...
- broadcom-sta-dkms 6.30.223.271-8
- nvidia-kernel-dkms 390.59-1
- nvidia-legacy-340xx-kernel-dkms 340.106-2
追記 (2018/6/21)
上記DKMS問題,まず broadcom-sta で以下の様な error が出る.
CC [M] /var/lib/dkms/broadcom-sta/6.30.223.271/build/src/shared/linux_osl.o
In file included from ./include/linux/rseq.h:13:0,
from ./include/linux/sched.h:30,
from ./include/linux/ioprio.h:5,
from ./include/linux/fs.h:39,
from ./include/linux/huge_mm.h:7,
from ./include/linux/mm.h:479,
from /var/lib/dkms/broadcom-sta/6.30.223.271/build/src/include/linuxver.h:65,
from /var/lib/dkms/broadcom-sta/6.30.223.271/build/src/shared/linux_osl.c:25:
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h:9:26: error: no include path in which to search for stdint.h
# include_next <stdint.h>
rseq.h
は以下の2つあって,include/uapi/linux/
のものを使うのが正解.
- /usr/src/linux-headers-4.18.0-rc1-XXXX/include/linux/rseq.h
- /usr/src/linux-headers-4.18.0-rc1-XXXX/include/linux/uapi/rseq.h
以下の2つのファイルを削除すると broadcom-sta と nvidia-legacy-340xx-kernel-dkms (nvidia-legacy-340xx) は compile できるようになる.
- /usr/src/linux-headers-4.18.0-rc1-XXXX/include/linux/rseq.h
- /usr/src/linux-headers-4.18.0-rc1-XXXX/include/linux/types_32_64.h
次にnvidia-kernel-dkms.上記対応を想定して,こちらはさらに以下のようなエラー.
gcc -Wp,-MD,/var/lib/dkms/nvidia-current/390.59/build/nvidia-drm/.nvidia-drm-prime-fence.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/7/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -DCC_HAVE_ASM_GOTO -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -march=core2 -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_AVX512=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -DRETPOLINE -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-var-tracking-assignments -g -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -mrecord-mcount -I/var/lib/dkms/nvidia-current/390.59/build/common/inc -I/var/lib/dkms/nvidia-current/390.59/build -Wall -MD -Wsign-compare -Wno-cast-qual -Wno-error -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"390.59\" -Wno-unused-function -Wuninitialized -fno-strict-aliasing -mno-red-zone -mcmodel=kernel -DNV_UVM_ENABLE -Wno-sign-compare -Wno-format-extra-args -Werror=undef -I/var/lib/dkms/nvidia-current/390.59/build/nvidia-drm -UDEBUG -U_DEBUG -DNDEBUG -DNV_BUILD_MODULE_INSTANCES=0 -DMODULE -DKBUILD_BASENAME='"nvidia_drm_prime_fence"' -DKBUILD_MODNAME='"nvidia_drm"' -c -o /var/lib/dkms/nvidia-current/390.59/build/nvidia-drm/.tmp_nvidia-drm-prime-fence.o /var/lib/dkms/nvidia-current/390.59/build/nvidia-drm/nvidia-drm-prime-fence.c
./tools/objtool/objtool orc generate --module --no-fp --retpoline "/var/lib/dkms/nvidia-current/390.59/build/nvidia-modeset/.tmp_nvidia-modeset-linux.o";
./tools/objtool/objtool orc generate --module --no-fp --retpoline "/var/lib/dkms/nvidia-current/390.59/build/nvidia-uvm/.tmp_uvm8_mmu_test.o";
./tools/objtool/objtool orc generate --module --no-fp --retpoline "/var/lib/dkms/nvidia-current/390.59/build/nvidia-drm/.tmp_nvidia-drm.o";
./tools/objtool/objtool orc generate --module --no-fp --retpoline "/var/lib/dkms/nvidia-current/390.59/build/nvidia-uvm/.tmp_uvm8_peer_identity_mappings_test.o";
./tools/objtool/objtool orc generate --module --no-fp --retpoline "/var/lib/dkms/nvidia-current/390.59/build/nvidia-uvm/.tmp_uvm8_pmm_sysmem_test.o";
In file included from ./include/drm/drmP.h:82:0,
from /var/lib/dkms/nvidia-current/390.59/build/nvidia-drm/nvidia-drm-priv.h:30,
from /var/lib/dkms/nvidia-current/390.59/build/nvidia-drm/nvidia-drm-drv.c:25:
/var/lib/dkms/nvidia-current/390.59/build/nvidia-drm/nvidia-drm-drv.c:637:23: error: ‘DRM_CONTROL_ALLOW’ undeclared here (not in a function); did you mean ‘DRM_RENDER_ALLOW’?
DRM_CONTROL_ALLOW|DRM_UNLOCKED),
^
./include/drm/drm_ioctl.h:162:12: note: in definition of macro ‘DRM_IOCTL_DEF_DRV’
.flags = _flags, \
^~~~~~
対応するLinux側の変更は以下.
以下のようにDRM_CONTROL_ALLOW
をnvidia-drm/nvidia-drm-drv.c
から削除すればcompileはとおる.
--- a/nvidia-drm/nvidia-drm-drv.c
+++ b/nvidia-drm/nvidia-drm-drv.c
@@ -634,26 +634,26 @@ static const struct drm_ioctl_desc nv_drm_ioctls[] = {
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
DRM_IOCTL_DEF_DRV(NVIDIA_GEM_IMPORT_NVKMS_MEMORY,
nv_drm_gem_import_nvkms_memory_ioctl,
- DRM_CONTROL_ALLOW|DRM_UNLOCKED),
+ DRM_UNLOCKED),
#endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
DRM_IOCTL_DEF_DRV(NVIDIA_GEM_IMPORT_USERSPACE_MEMORY,
nv_drm_gem_import_userspace_memory_ioctl,
- DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED),
+ DRM_RENDER_ALLOW|DRM_UNLOCKED),
DRM_IOCTL_DEF_DRV(NVIDIA_GET_DEV_INFO,
nv_drm_get_dev_info_ioctl,
- DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED),
+ DRM_RENDER_ALLOW|DRM_UNLOCKED),
#if defined(NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ)
DRM_IOCTL_DEF_DRV(NVIDIA_FENCE_SUPPORTED,
nv_drm_fence_supported_ioctl,
- DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED),
+ DRM_RENDER_ALLOW|DRM_UNLOCKED),
DRM_IOCTL_DEF_DRV(NVIDIA_FENCE_CONTEXT_CREATE,
nv_drm_fence_context_create_ioctl,
- DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED),
+ DRM_RENDER_ALLOW|DRM_UNLOCKED),
DRM_IOCTL_DEF_DRV(NVIDIA_GEM_FENCE_ATTACH,
nv_drm_gem_fence_attach_ioctl,
- DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED),
+ DRM_RENDER_ALLOW|DRM_UNLOCKED),
#endif
DRM_IOCTL_DEF_DRV(NVIDIA_GET_CLIENT_CAPABILITY,
@@ -662,7 +662,7 @@ static const struct drm_ioctl_desc nv_drm_ioctls[] = {
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
DRM_IOCTL_DEF_DRV(NVIDIA_GET_CRTC_CRC32,
nv_drm_get_crtc_crc32_ioctl,
- DRM_CONTROL_ALLOW|DRM_RENDER_ALLOW|DRM_UNLOCKED),
+ DRM_RENDER_ALLOW|DRM_UNLOCKED),
#endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
};
ちなみに現状,実動作は未検証.