4.15-rc1が出ているので .config がどう変更されるのか見てみた.汎用指向の環境.以下 -
は削除されたもの,+
は追加されたもの.
-
-CONFIG_ORC_UNWINDER=y
+CONFIG_UNWINDER_ORC=y
x86/unwind: Rename unwinder config options to ’CONFIG_UNWINDER_*’
CONFIG_ORC_UNWINDER
がCONFIG_UNWINDER_ORC
に名前が変わった. -
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
+CONFIG_SYSTEM_DATA_VERIFICATION=y
cfg80211: implement regdb signature checking
CONFIG_SYSTEM_DATA_VERIFICATION
はCONFIG_CFG80211_REQUIRE_SIGNED_REGDB
に Select される.config CFG80211_REQUIRE_SIGNED_REGDB bool "require regdb signature" if CFG80211_CERTIFICATION_ONUS default y select SYSTEM_DATA_VERIFICATION
となっていて
CFG80211_CERTIFICATION_ONUS=n
なのだがCFG80211_REQUIRE_SIGNED_REGDB
を y 以外にすることができない.CFG80211_CERTIFICATION_ONUS=y
にして n にする -
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+CONFIG_ASN1=y
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_RSA=y
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_PKCS7_MESSAGE_PARSER=y
+CONFIG_CLZ_TAB=y
+CONFIG_MPILIB=y
SYSTEM_DATA_VERIFICATION=y
で Select されるものたち. -
+CONFIG_X86_INTEL_UMIP=y
x86/umip: Select X86_INTEL_UMIP by default
Intel User Mode Instruction Prevention 関連.y にしておく.
-
-CONFIG_BT_HCIUART_BCM=y
Bluetooth: avoid silent hci_bcm ACPI PM regression
CONFIG_BT_HCIUART_BCM
がdepends on (!ACPI || SERIAL_DEV_CTRL_TTYPORT)
になってBT_HCIUART_SERDEV
がSERIAL_DEV_CTRL_TTYPORT
に依存していて n になった.SERIAL_DEV_BUS = y
,SERIAL_DEV_CTRL_TTYPORT = y
にして y にもどす. -
+CONFIG_CDROM=m
block: Rework drivers/cdrom/Makefile
cdrom: hide CONFIG_CDROM menu selectionSelected by BLK_DEV_SR [=m] && SCSI [=m] && BLK_DEV [=y]
手元の環境では SCSI CDROM support (
BLK_DEV_SR
) で選択される感じ. -
+CONFIG_DRM_AMD_DC=y
Defined at drivers/gpu/drm/amd/display/Kconfig:4 Prompt: AMD DC - Enable new display engine
y にしておく
-
+CONFIG_CRAMFS_BLOCKDEV=y
cramfs: direct memory access support
initrd も cpio になっているので,
CONFIG_CRAMFS=m
を n にして,n にする.
以下,その他.
-
+CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y
x86/irq/vector: Initialize matrix allocator
Defined at kernel/irq/Kconfig:100 Selected by: X86 [=y] && X86_LOCAL_APIC [=y]
-
+CONFIG_GENERIC_IRQ_RESERVATION_MODE=y
x86/vector/msi: Select
CONFIG_GENERIC_IRQ_RESERVATION_MODE
Defined at kernel/irq/Kconfig:103 Selected by: X86 [=y]
-
+CONFIG_CHASH=m
amdgpu: don’t ask about CHASH just default it for now.
default DRM_AMDGPU
DRM_AMDGPU=m
で m になる. -
+CONFIG_ARCH_HAS_REFCOUNT=y
locking/refcounts, x86/asm: Enable CONFIG_ARCH_HAS_REFCOUNT
Defined at arch/Kconfig:941 Selected by: X86 [=y]
-
+CONFIG_ACPI_LPIT=y
ACPI / LPIT: Add Low Power Idle Table (LPIT) support
Depends on: ACPI [=y] && X86_64 [=y]
-
-CONFIG_GENERIC_IO=y
-
-CONFIG_HT_IRQ=y
-
-CONFIG_HAVE_ARCH_KMEMCHECK=y
-
-CONFIG_SLABINFO=y
追記 (2017/12/12)
timer: Pass timer_list pointer to callbacks unconditionallyで struct timer_list から (unsigned long) data が削除されていて,timer: Remove init_timer() interfaceでinit_timer()が削除されたりで,broadcom-sta-dkms (6.30.223.271-7), nvidia-kernel-dkms (384.98-3), nvidia-legacy-340xx-kernel-dkms (340.104-3) の kernel module の build に失敗する.nvidia-kernel-dkms (384.98-3) の場合以下のような感じ.
[/var/lib/dkms/nvidia-current/384.98/build/make.log] 抜粋
/var/lib/dkms/nvidia-current/384.98/build/nvidia/nv.c: In function ‘nv_start_rc_timer’:
/var/lib/dkms/nvidia-current/384.98/build/nvidia/nv.c:3259:5: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-de
claration]
init_timer(&nvl->rc_timer);
^~~~~~~~~~
init_timers
/var/lib/dkms/nvidia-current/384.98/build/nvidia/nv.c:3260:28: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
nvl->rc_timer.function = nvidia_rc_timer;
^
/var/lib/dkms/nvidia-current/384.98/build/nvidia/nv.c:3261:18: error: ‘struct timer_list’ has no member named ‘data’
nvl->rc_timer.data = (unsigned long) nvl;
^
cc1: some warnings being treated as errors
scripts/Makefile.build:310: recipe for target '/var/lib/dkms/nvidia-current/384.98/build/nvidia/nv.o' failed
treewide: init_timer() -> setup_timer()にあるとおり以下のような変更をすればよいはずなのだが試していない.
This mechanically converts all remaining cases of ancient open-coded timer setup with the old setup_timer() API, which is the first step in timer conversions. This has no behavioral changes, since it ultimately just changes the order of assignment to fields of struct timer_list when finding variations of: init_timer(&t); f.function = timer_callback; t.data = timer_callback_arg; to be converted into: setup_timer(&t, timer_callback, timer_callback_arg);
追記 (2018/1/19)
Debian GNU/Linux sid では nvidia の kernel package は 4.15 対応になっていて,broadcom-sta-dkms (6.30.223.271-7) については以下のパッチが必要.
treewide: setup_timer() -> timer_setup()のとおりsetup_timer
はさらにtimer_setup
に書き換える必要があって,コールバック関数側の修正も必要.
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -93,7 +93,7 @@ struct iw_statistics *wl_get_wireless_stats(struct net_device *dev);
#include <wlc_wowl.h>
-static void wl_timer(ulong data);
+static void wl_timer(struct timer_list *t0);
static void _wl_timer(wl_timer_t *t);
static struct net_device *wl_alloc_linux_if(wl_if_t *wlif);
@@ -2295,9 +2295,9 @@ wl_timer_task(wl_task_t *task)
}
static void
-wl_timer(ulong data)
+wl_timer(struct timer_list *t0)
{
- wl_timer_t *t = (wl_timer_t *)data;
+ wl_timer_t *t = from_timer(t, t0, timer);
if (!WL_ALL_PASSIVE_ENAB(t->wl))
_wl_timer(t);
@@ -2349,9 +2349,7 @@ wl_init_timer(wl_info_t *wl, void (*fn)(void *arg), void *arg, const char *tname
bzero(t, sizeof(wl_timer_t));
- init_timer(&t->timer);
- t->timer.data = (ulong) t;
- t->timer.function = wl_timer;
+ timer_setup(&t->timer, wl_timer, 0);
t->wl = wl;
t->fn = fn;
t->arg = arg;
追記 (2018/1/23)
上のパッチ,treewide: setup_timer() -> timer_setup()のとおりなのだが,from_timer(t, t0, timer)
の箇所が謎めいている(左辺の値が右辺にある).
[include/linux/timer.h]
#define from_timer(var, callback_timer, timer_fieldname) \
container_of(callback_timer, typeof(*var), timer_fieldname)
上がfrom_timer
の#define
で,container_of
は,struct timer_list *t0
(wl_timer
の引数)を struct member timer
として含むwl_timer_t
(struct wl_timer
)の pointer を取得するように動くマクロということらしい.右辺にある左辺の値は typeof
で使われるのみなので問題にならない.
参考にしたページ:
- http://d.hatena.ne.jp/big-eyed-hamster/20091226/1261754005
- http://tak5219.seesaa.net/article/7042095.html
追記 (2018/1/29)
Debian GNU/Linux stable (Stretch) でも以下の backports で 4.15 対応になっている.
- nvidia-kernel-dkms 384.111-3~bpo9+1
- nvidia-legacy-340xx-kernel-dkm 340.106-1~bpo9+1
追記 (2018/2/12)
broadcom-sta-dkms (6.30.223.271-7) の wl_linux.c に patch が必要という件,https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=885885 で登録されている様子(patch の提供もあり).
追記 (2018/2/15)
broadcom-sta-dkms (6.30.223.271-7) の wl_linux.c に patch が必要という件,broadcom-sta 6.30.223.271-8で修正された様子.