diff --git a/.abf.yml b/.abf.yml index 455bd41..951708d 100644 --- a/.abf.yml +++ b/.abf.yml @@ -1,6 +1,6 @@ sources: - linux-5.10.tar.xz: be0b909f1fbb760cc2d5cf146e1da3b2af0cf899 - patch-5.10.105.xz: 417d3ebae4907d7308468e900430412c25a80aa6 + linux-5.15.tar.xz: ac61f2459040c09af1d5abd4ed100c3d316b443e + patch-5.15.28.xz: 20337719e70d8bd465f2ffbccd84cd8c3b2b274b public_key_GOST_1.pem: b4fb6bf1cf73824944931a8f0c2cb7bf427e0774 public_key_GOST_2.pem: cba209bd331f29031c5d945949b230a8d7a4dc12 public_key_GOST_3.pem: e5a223dd7c556d4d0cac326f5ed9fc12dd769afb diff --git a/0001-AltHa-LSM-module.patch b/0001-AltHa-LSM-module.patch deleted file mode 100644 index e31983e..0000000 --- a/0001-AltHa-LSM-module.patch +++ /dev/null @@ -1,431 +0,0 @@ -From e9343095462964e78faadde92bab44a6a13cd4da Mon Sep 17 00:00:00 2001 -From: Kernel Bot -Date: Wed, 21 Aug 2019 16:11:26 +0300 -Subject: [PATCH 1/2] AltHa LSM module - - * ignore SUID on binaries (with exceptions possible); - * prevent running selected script interprers in interactive move; - * disable open file unlinking in selected dirs; - -Changelog: - * ported to 5.2 as ordered LSM - * introduced OLock - * no more WxorX - * error handling, path_puts and locking added - * lists handling rewritten - * indentation fixed - -Rediffed for vanilla kernel 5.10.1 -Signed-off-by: Mikhail Novosyolov ---- - security/Kconfig | 3 +- - security/Makefile | 2 + - security/altha/Kconfig | 11 ++ - security/altha/Makefile | 3 + - security/altha/altha_lsm.c | 325 +++++++++++++++++++++++++++++++++++++ - 5 files changed, 343 insertions(+), 1 deletion(-) - create mode 100644 security/altha/Kconfig - create mode 100644 security/altha/Makefile - create mode 100644 security/altha/altha_lsm.c - -diff --git a/security/Kconfig b/security/Kconfig -index 7561f6f99f1d..b7551d9001e6 100644 ---- a/security/Kconfig -+++ b/security/Kconfig -@@ -238,6 +238,7 @@ source "security/loadpin/Kconfig" - source "security/yama/Kconfig" - source "security/safesetid/Kconfig" - source "security/lockdown/Kconfig" -+source "security/altha/Kconfig" - - source "security/integrity/Kconfig" - -@@ -281,7 +282,7 @@ config LSM - default "lockdown,yama,loadpin,safesetid,integrity,apparmor,selinux,smack,tomoyo,bpf" if DEFAULT_SECURITY_APPARMOR - default "lockdown,yama,loadpin,safesetid,integrity,tomoyo,bpf" if DEFAULT_SECURITY_TOMOYO - default "lockdown,yama,loadpin,safesetid,integrity,bpf" if DEFAULT_SECURITY_DAC -- default "lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf" -+ default "lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,altha" - help - A comma-separated list of LSMs, in initialization order. - Any LSMs left off this list will be ignored. This can be -diff --git a/security/Makefile b/security/Makefile -index 3baf435de541..9cc6f5b1b099 100644 ---- a/security/Makefile -+++ b/security/Makefile -@@ -13,6 +13,7 @@ subdir-$(CONFIG_SECURITY_LOADPIN) += loadpin - subdir-$(CONFIG_SECURITY_SAFESETID) += safesetid - subdir-$(CONFIG_SECURITY_LOCKDOWN_LSM) += lockdown - subdir-$(CONFIG_BPF_LSM) += bpf -+subdir-$(CONFIG_SECURITY_ALTHA) += altha - - # always enable default capabilities - obj-y += commoncap.o -@@ -32,6 +33,7 @@ obj-$(CONFIG_SECURITY_SAFESETID) += safesetid/ - obj-$(CONFIG_SECURITY_LOCKDOWN_LSM) += lockdown/ - obj-$(CONFIG_CGROUPS) += device_cgroup.o - obj-$(CONFIG_BPF_LSM) += bpf/ -+obj-$(CONFIG_SECURITY_ALTHA) += altha/ - - # Object integrity file lists - subdir-$(CONFIG_INTEGRITY) += integrity -diff --git a/security/altha/Kconfig b/security/altha/Kconfig -new file mode 100644 -index 000000000000..4bafdef4e58e ---- /dev/null -+++ b/security/altha/Kconfig -@@ -0,0 +1,11 @@ -+config SECURITY_ALTHA -+ bool "AltHa security module" -+ depends on SECURITY -+ default n -+ help -+ Some hardening options: -+ * ignore SUID on binaries (with exceptions possible); -+ * prevent running selected script interprers in interactive move; -+ * WxorX for filesystems (with exceptions possible); -+ -+ If you are unsure how to answer this question, answer N. -diff --git a/security/altha/Makefile b/security/altha/Makefile -new file mode 100644 -index 000000000000..56735b157567 ---- /dev/null -+++ b/security/altha/Makefile -@@ -0,0 +1,3 @@ -+obj-$(CONFIG_SECURITY_ALTHA) := altha.o -+ -+altha-y := altha_lsm.o -diff --git a/security/altha/altha_lsm.c b/security/altha/altha_lsm.c -new file mode 100644 -index 000000000000..7d1cc8f8a1a7 ---- /dev/null -+++ b/security/altha/altha_lsm.c -@@ -0,0 +1,325 @@ -+/* -+ * AltHa Linux Security Module -+ * -+ * Author: Anton Boyarshinov -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2, as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define ALTHA_PARAMS_SIZE 4096 -+char proc_nosuid_exceptions[ALTHA_PARAMS_SIZE]; -+char proc_interpreters[ALTHA_PARAMS_SIZE]; -+char proc_olock_dirs[ALTHA_PARAMS_SIZE]; -+ -+/* Boot time disable flag */ -+static bool altha_enabled = 0; -+ -+/* sysctl flags */ -+static int nosuid_enabled; -+static int rstrscript_enabled; -+static int olock_enabled; -+ -+/* Boot parameter handing */ -+module_param_named(enabled, altha_enabled, bool, S_IRUGO); -+ -+static int __init altha_enabled_setup(char *str) -+{ -+ unsigned long enabled; -+ int error = kstrtoul(str, 0, &enabled); -+ if (!error) -+ altha_enabled = enabled ? 1 : 0; -+ return 1; -+} -+ -+__setup("altha=", altha_enabled_setup); -+ -+struct altha_list_struct { -+ struct path path; -+ struct list_head list; -+}; -+ -+/* Lists handling */ -+DECLARE_RWSEM(nosuid_exceptions_sem); -+DECLARE_RWSEM(interpreters_sem); -+DECLARE_RWSEM(olock_dirs_sem); -+LIST_HEAD(nosuid_exceptions_list); -+LIST_HEAD(interpreters_list); -+LIST_HEAD(olock_dirs_list); -+ -+static int altha_list_handler(struct ctl_table *table, int write, -+ void __user * buffer, size_t * lenp, -+ loff_t * ppos) -+{ -+ struct altha_list_struct *item, *tmp; -+ struct list_head *list_struct; -+ char *p, *fluid; -+ char *copy_buffer; -+ struct rw_semaphore *sem = table->extra2; -+ unsigned long error = proc_dostring(table, write, buffer, lenp, ppos); -+ down_write(sem); -+ if (error) -+ goto out; -+ -+ if (write && !error) { -+ copy_buffer = kmalloc(ALTHA_PARAMS_SIZE, GFP_KERNEL); -+ if (!copy_buffer) { -+ pr_err -+ ("AltHa: can't get memory for copy_buffer processing sysctl\n"); -+ error = -1; -+ goto out; -+ } -+ -+ list_struct = (struct list_head *)(table->extra1); -+ /*empty list and that fill with new info */ -+ list_for_each_entry_safe(item, tmp, list_struct, list) { -+ list_del(&item->list); -+ path_put(&item->path); -+ kfree(item); -+ } -+ -+ strlcpy(copy_buffer, table->data, ALTHA_PARAMS_SIZE); -+ -+ /* buffer can have a garbage after \n */ -+ p = strchrnul(copy_buffer, '\n'); -+ *p = 0; -+ -+ /* for strsep usage */ -+ fluid = copy_buffer; -+ -+ while ((p = strsep(&fluid, ":\n")) != NULL) { -+ if (strlen(p)) { -+ item = kmalloc(sizeof(*item), GFP_KERNEL); -+ if (!item) { -+ pr_err -+ ("AltHa: can't get memory processing sysctl\n"); -+ kfree(copy_buffer); -+ error = -1; -+ goto out; -+ } -+ if (kern_path(p, LOOKUP_FOLLOW, &item->path)) { -+ pr_info -+ ("AltHa: error lookup '%s'\n", p); -+ kfree(item); -+ } else { -+ list_add_tail(&item->list, list_struct); -+ } -+ } -+ } -+ kfree(copy_buffer); -+ } -+out: -+ up_write(sem); -+ return error; -+} -+ -+struct ctl_path nosuid_sysctl_path[] = { -+ {.procname = "kernel",}, -+ {.procname = "altha",}, -+ {.procname = "nosuid",}, -+ {} -+}; -+ -+static struct ctl_table nosuid_sysctl_table[] = { -+ { -+ .procname = "enabled", -+ .data = &nosuid_enabled, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = proc_dointvec_minmax, -+ }, -+ { -+ .procname = "exceptions", -+ .data = proc_nosuid_exceptions, -+ .maxlen = ALTHA_PARAMS_SIZE, -+ .mode = 0644, -+ .proc_handler = altha_list_handler, -+ .extra1 = &nosuid_exceptions_list, -+ .extra2 = &nosuid_exceptions_sem, -+ }, -+ {} -+}; -+ -+struct ctl_path rstrscript_sysctl_path[] = { -+ {.procname = "kernel",}, -+ {.procname = "altha",}, -+ {.procname = "rstrscript",}, -+ {} -+}; -+ -+static struct ctl_table rstrscript_sysctl_table[] = { -+ { -+ .procname = "enabled", -+ .data = &rstrscript_enabled, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec_minmax, -+ }, -+ { -+ .procname = "interpreters", -+ .data = proc_interpreters, -+ .maxlen = ALTHA_PARAMS_SIZE, -+ .mode = 0644, -+ .proc_handler = altha_list_handler, -+ .extra1 = &interpreters_list, -+ .extra2 = &interpreters_sem, -+ }, -+ {} -+}; -+ -+struct ctl_path olock_sysctl_path[] = { -+ {.procname = "kernel",}, -+ {.procname = "altha",}, -+ {.procname = "olock",}, -+ {} -+}; -+ -+static struct ctl_table olock_sysctl_table[] = { -+ { -+ .procname = "enabled", -+ .data = &olock_enabled, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec_minmax, -+ }, -+ { -+ .procname = "dirs", -+ .data = proc_olock_dirs, -+ .maxlen = ALTHA_PARAMS_SIZE, -+ .mode = 0644, -+ .proc_handler = altha_list_handler, -+ .extra1 = &olock_dirs_list, -+ .extra2 = &olock_dirs_sem, -+ }, -+ {} -+}; -+ -+struct altha_readdir_callback { -+ struct dir_context ctx; -+ u64 inode; -+ int found; -+}; -+ -+ -+int is_olock_dir(struct inode *inode) -+{ -+ struct altha_list_struct *node; -+ down_read(&olock_dirs_sem); -+ list_for_each_entry(node, &olock_dirs_list, list) { -+ struct inode *exc_inode = node->path.dentry->d_inode; -+ if (exc_inode == inode) { -+ up_read(&olock_dirs_sem); -+ return 1; -+ } -+ } -+ up_read(&olock_dirs_sem); -+ return 0; -+} -+ -+/* Hooks */ -+static int altha_bprm_set_creds(struct linux_binprm *bprm) -+{ -+ struct altha_list_struct *node; -+ /* when it's not a shebang issued script interpreter */ -+ if (rstrscript_enabled && !bprm->called_set_creds) { -+ down_read(&interpreters_sem); -+ list_for_each_entry(node, &interpreters_list, list) { -+ if (path_equal(&bprm->file->f_path, &node->path)) { -+ uid_t cur_uid = from_kuid(bprm->cred->user_ns, -+ bprm->cred->uid); -+ pr_notice_ratelimited -+ ("AltHa/RestrScript: %s is blocked to run directly by %d\n", -+ bprm->filename, cur_uid); -+ up_read(&interpreters_sem); -+ return -EPERM; -+ } -+ } -+ up_read(&interpreters_sem); -+ } -+ if (unlikely(nosuid_enabled && -+ !uid_eq(bprm->cred->uid, bprm->cred->euid))) { -+ uid_t cur_uid = from_kuid(bprm->cred->user_ns, bprm->cred->uid); -+ down_read(&nosuid_exceptions_sem); -+ list_for_each_entry(node, &nosuid_exceptions_list, list) { -+ if (path_equal(&bprm->file->f_path, &node->path)) { -+ pr_notice_ratelimited -+ ("AltHa/NoSUID: %s permitted to setuid from %d\n", -+ bprm->filename, cur_uid); -+ up_read(&nosuid_exceptions_sem); -+ return 0; -+ } -+ } -+ up_read(&nosuid_exceptions_sem); -+ pr_notice_ratelimited -+ ("AltHa/NoSUID: %s prevented to setuid from %d\n", -+ bprm->filename, cur_uid); -+ bprm->cred->euid = bprm->cred->uid; -+ } -+ return 0; -+} -+ -+/* For OLock */ -+static int altha_inode_unlink(struct inode *inode, struct dentry *dentry) -+{ -+ if (olock_enabled && (atomic_read(&dentry->d_inode->i_writecount) -+#ifdef CONFIG_IMA -+ || atomic_read(&dentry->d_inode->i_readcount) -+#endif -+ )) { -+ if (is_olock_dir(inode)) -+ return -EPERM; -+ } -+ return 0; -+} -+ -+/* Initialization */ -+ -+static struct security_hook_list altha_hooks[] = { -+ LSM_HOOK_INIT(bprm_set_creds, altha_bprm_set_creds), -+ LSM_HOOK_INIT(inode_unlink, altha_inode_unlink), -+}; -+ -+static int __init altha_init(void) -+{ -+ if (altha_enabled) { -+ pr_info("AltHa enabled.\n"); -+ security_add_hooks(altha_hooks, ARRAY_SIZE(altha_hooks),"altha"); -+ -+ if (!register_sysctl_paths -+ (nosuid_sysctl_path, nosuid_sysctl_table)) -+ panic("AltHa: NoSUID sysctl registration failed.\n"); -+ -+ if (!register_sysctl_paths -+ (rstrscript_sysctl_path, rstrscript_sysctl_table)) -+ panic -+ ("AltHa: RestrScript sysctl registration failed.\n"); -+ -+ if (!register_sysctl_paths -+ (olock_sysctl_path, olock_sysctl_table)) -+ panic("AltHa: OLock sysctl registration failed.\n"); -+ } else -+ pr_info("AltHa disabled.\n"); -+ return 0; -+} -+ -+DEFINE_LSM(altha) = { -+ .name = "altha", -+ .init = altha_init, -+}; -+ --- -2.25.1 - diff --git a/0001-Apply-AUFS-5.patch b/0001-Apply-AUFS-5.patch index e337ecc..0d33b94 100644 --- a/0001-Apply-AUFS-5.patch +++ b/0001-Apply-AUFS-5.patch @@ -1,9 +1,9 @@ -https://github.com/sfjro/aufs5-linux/commit/a4e1cd668aeb906061bb8cd44554ad3f89759a2d +https://github.com/sfjro/aufs5-linux/commit/dcbf599957b2553e5a801e23797e9ac816e34ec8 Without fs/inode.c -diff -Naur linux-5.10/Documentation/ABI/testing/debugfs-aufs aufs5-linux-aufs5.10/Documentation/ABI/testing/debugfs-aufs ---- linux-5.10/Documentation/ABI/testing/debugfs-aufs 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/ABI/testing/debugfs-aufs 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/ABI/testing/debugfs-aufs aufs5-linux-aufs5.15/Documentation/ABI/testing/debugfs-aufs +--- linux-5.15/Documentation/ABI/testing/debugfs-aufs 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/ABI/testing/debugfs-aufs 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,55 @@ +What: /debug/aufs/si_/ +Date: March 2009 @@ -60,9 +60,9 @@ diff -Naur linux-5.10/Documentation/ABI/testing/debugfs-aufs aufs5-linux-aufs5.1 + be created. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. -diff -Naur linux-5.10/Documentation/ABI/testing/sysfs-aufs aufs5-linux-aufs5.10/Documentation/ABI/testing/sysfs-aufs ---- linux-5.10/Documentation/ABI/testing/sysfs-aufs 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/ABI/testing/sysfs-aufs 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/ABI/testing/sysfs-aufs aufs5-linux-aufs5.15/Documentation/ABI/testing/sysfs-aufs +--- linux-5.15/Documentation/ABI/testing/sysfs-aufs 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/ABI/testing/sysfs-aufs 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 @@ -95,9 +95,9 @@ diff -Naur linux-5.10/Documentation/ABI/testing/sysfs-aufs aufs5-linux-aufs5.10/ + even if it is the default path. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/01intro.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/01intro.txt ---- linux-5.10/Documentation/filesystems/aufs/design/01intro.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/01intro.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/01intro.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/01intro.txt +--- linux-5.15/Documentation/filesystems/aufs/design/01intro.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/01intro.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,158 @@ + +# Copyright (C) 2005-2021 Junjiro R. Okajima @@ -257,9 +257,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/01intro.txt aufs5-li +Some people may think it is better to pass such work to user space +helper, instead of doing in kernel space. Actually I am still thinking +about it. But currently I have implemented it in kernel space. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/02struct.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/02struct.txt ---- linux-5.10/Documentation/filesystems/aufs/design/02struct.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/02struct.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/02struct.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/02struct.txt +--- linux-5.15/Documentation/filesystems/aufs/design/02struct.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/02struct.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,245 @@ + +# Copyright (C) 2005-2021 Junjiro R. Okajima @@ -506,9 +506,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/02struct.txt aufs5-l +- etc. + +For this purpose, use "aumvdown" command in aufs-util.git. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/03atomic_open.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/03atomic_open.txt ---- linux-5.10/Documentation/filesystems/aufs/design/03atomic_open.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/03atomic_open.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/03atomic_open.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/03atomic_open.txt +--- linux-5.15/Documentation/filesystems/aufs/design/03atomic_open.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/03atomic_open.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,72 @@ + +# Copyright (C) 2015-2021 Junjiro R. Okajima @@ -582,9 +582,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/03atomic_open.txt au + ->atomic_open() are lost. in the ordinary case, the checks are + done by VFS:do_last(), lookup_open() and atomic_open(). some can + be implemented in aufs, but not all I am afraid. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/03lookup.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/03lookup.txt ---- linux-5.10/Documentation/filesystems/aufs/design/03lookup.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/03lookup.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/03lookup.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/03lookup.txt +--- linux-5.15/Documentation/filesystems/aufs/design/03lookup.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/03lookup.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,100 @@ + +# Copyright (C) 2005-2021 Junjiro R. Okajima @@ -686,9 +686,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/03lookup.txt aufs5-l + test, and skip the revalidation in step 4. It is useful and improves + aufs performance when system surely hide the aufs branches from user, + by over-mounting something (or another method). -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/04branch.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/04branch.txt ---- linux-5.10/Documentation/filesystems/aufs/design/04branch.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/04branch.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/04branch.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/04branch.txt +--- linux-5.15/Documentation/filesystems/aufs/design/04branch.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/04branch.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,61 @@ + +# Copyright (C) 2005-2021 Junjiro R. Okajima @@ -751,9 +751,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/04branch.txt aufs5-l + - a file on the branch is mmap-ed. + - a regular file on the branch is opened for write and there is no + same named entry on the upper branch. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/05wbr_policy.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/05wbr_policy.txt ---- linux-5.10/Documentation/filesystems/aufs/design/05wbr_policy.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/05wbr_policy.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/05wbr_policy.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/05wbr_policy.txt +--- linux-5.15/Documentation/filesystems/aufs/design/05wbr_policy.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/05wbr_policy.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,51 @@ + +# Copyright (C) 2005-2021 Junjiro R. Okajima @@ -806,9 +806,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/05wbr_policy.txt auf + where the source and the target exists and selects the higher + one. If the selected branch is readonly, then aufs follows the + copyup policy. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06dirren.dot aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06dirren.dot ---- linux-5.10/Documentation/filesystems/aufs/design/06dirren.dot 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06dirren.dot 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/06dirren.dot aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06dirren.dot +--- linux-5.15/Documentation/filesystems/aufs/design/06dirren.dot 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06dirren.dot 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,31 @@ + +// to view this graph, run dot(1) command in GRAPHVIZ. @@ -841,9 +841,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06dirren.dot aufs5-l + +aufs_lookup -> whinfo [label="load/remove"]; +} -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06dirren.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06dirren.txt ---- linux-5.10/Documentation/filesystems/aufs/design/06dirren.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06dirren.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/06dirren.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06dirren.txt +--- linux-5.15/Documentation/filesystems/aufs/design/06dirren.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06dirren.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,89 @@ + +# Copyright (C) 2017-2021 Junjiro R. Okajima @@ -934,9 +934,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06dirren.txt aufs5-l +contains two names, before- and after-rename, the name comparision in +UDBA handler may not work correctly. In this case, the behaviour will be +equivalen to udba=reval case. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06fhsm.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06fhsm.txt ---- linux-5.10/Documentation/filesystems/aufs/design/06fhsm.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06fhsm.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/06fhsm.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06fhsm.txt +--- linux-5.15/Documentation/filesystems/aufs/design/06fhsm.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06fhsm.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,105 @@ + +# Copyright (C) 2011-2021 Junjiro R. Okajima @@ -1043,9 +1043,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06fhsm.txt aufs5-lin + +And of course, in every step, an error may happen. So the operation +should restore the original file state after an error happens. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06mmap.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06mmap.txt ---- linux-5.10/Documentation/filesystems/aufs/design/06mmap.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06mmap.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/06mmap.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06mmap.txt +--- linux-5.15/Documentation/filesystems/aufs/design/06mmap.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06mmap.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,59 @@ + +# Copyright (C) 2005-2021 Junjiro R. Okajima @@ -1106,9 +1106,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06mmap.txt aufs5-lin + equivalent to vm_prfile described above. + +I have to give up this "looks-smater" approach. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06xattr.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06xattr.txt ---- linux-5.10/Documentation/filesystems/aufs/design/06xattr.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/06xattr.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/06xattr.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06xattr.txt +--- linux-5.15/Documentation/filesystems/aufs/design/06xattr.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/06xattr.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,81 @@ + +# Copyright (C) 2014-2021 Junjiro R. Okajima @@ -1191,9 +1191,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/06xattr.txt aufs5-li +Some contradiction may happen I am afraid. +Do we need another attribute to stop copying XATTR? I am unsure. For +now, aufs implements the branch attributes to ignore the error. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/07export.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/07export.txt ---- linux-5.10/Documentation/filesystems/aufs/design/07export.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/07export.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/07export.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/07export.txt +--- linux-5.15/Documentation/filesystems/aufs/design/07export.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/07export.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,45 @@ + +# Copyright (C) 2005-2021 Junjiro R. Okajima @@ -1240,9 +1240,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/07export.txt aufs5-l + convert it into ESTALE for NFSD. +- readdir(): call lockdep_on/off() because filldir in NFSD calls + lookup_one_len(), vfs_getattr(), encode_fh() and others. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/08shwh.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/08shwh.txt ---- linux-5.10/Documentation/filesystems/aufs/design/08shwh.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/08shwh.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/08shwh.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/08shwh.txt +--- linux-5.15/Documentation/filesystems/aufs/design/08shwh.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/08shwh.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,39 @@ + +# Copyright (C) 2005-2021 Junjiro R. Okajima @@ -1283,9 +1283,9 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/08shwh.txt aufs5-lin + +This new squashfs archive can be stored on the boot device and the +initramfs will use it to replace the old one at the next boot. -diff -Naur linux-5.10/Documentation/filesystems/aufs/design/10dynop.txt aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/10dynop.txt ---- linux-5.10/Documentation/filesystems/aufs/design/10dynop.txt 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/design/10dynop.txt 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/Documentation/filesystems/aufs/design/10dynop.txt aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/10dynop.txt +--- linux-5.15/Documentation/filesystems/aufs/design/10dynop.txt 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/design/10dynop.txt 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,34 @@ + +# Copyright (C) 2010-2021 Junjiro R. Okajima @@ -1321,10 +1321,10 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/design/10dynop.txt aufs5-li +XIP (DAX) mainly. +Currently this approach is applied to address_space_operations for +regular files only. -diff -Naur linux-5.10/Documentation/filesystems/aufs/README aufs5-linux-aufs5.10/Documentation/filesystems/aufs/README ---- linux-5.10/Documentation/filesystems/aufs/README 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/Documentation/filesystems/aufs/README 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,394 @@ +diff -Naur linux-5.15/Documentation/filesystems/aufs/README aufs5-linux-aufs5.15/Documentation/filesystems/aufs/README +--- linux-5.15/Documentation/filesystems/aufs/README 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/Documentation/filesystems/aufs/README 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,396 @@ + +Aufs5 -- advanced multi layered unification filesystem version 5.x +http://aufs.sf.net @@ -1509,6 +1509,16 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/README aufs5-linux-aufs5.10 +For aufs5-linux tree, +- enable CONFIG_AUFS_FS. +- set other aufs configurations if necessary. ++- for aufs5.13 and later ++ Because aufs is not only an ordinary filesystem (callee of VFS), but ++ also a caller of VFS functions for branch filesystems, subclassing of ++ the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging ++ feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will ++ need to customize some LOCKDEP numbers. Here are what I use on my ++ test environment. ++ CONFIG_LOCKDEP_BITS=21 ++ CONFIG_LOCKDEP_CHAINS_BITS=21 ++ CONFIG_LOCKDEP_STACK_TRACE_BITS=24 + +For aufs5-standalone tree, +There are several ways to build. @@ -1586,14 +1596,6 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/README aufs5-linux-aufs5.10 + duplication of inode number, which is important for backup tools and + other utilities. When you find aufs XINO files for tmpfs branch + growing too much, try this patch. -+- lockdep-debug.patch -+ Because aufs is not only an ordinary filesystem (callee of VFS), but -+ also a caller of VFS functions for branch filesystems, subclassing of -+ the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging -+ feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will -+ need to apply this debug patch to expand several constant values. -+ If you don't know what LOCKDEP is, then you don't have apply this -+ patch. + + +4. Usage @@ -1719,10 +1721,10 @@ diff -Naur linux-5.10/Documentation/filesystems/aufs/README aufs5-linux-aufs5.10 +# Local variables: ; +# mode: text; +# End: ; -diff -Naur linux-5.10/drivers/block/loop.c aufs5-linux-aufs5.10/drivers/block/loop.c ---- linux-5.10/drivers/block/loop.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/drivers/block/loop.c 2022-03-07 10:18:47.000000000 +0300 -@@ -765,6 +765,24 @@ +diff -Naur linux-5.15/drivers/block/loop.c aufs5-linux-aufs5.15/drivers/block/loop.c +--- linux-5.15/drivers/block/loop.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/drivers/block/loop.c 2022-03-07 13:48:09.000000000 +0300 +@@ -811,6 +811,24 @@ return error; } @@ -1747,9 +1749,9 @@ diff -Naur linux-5.10/drivers/block/loop.c aufs5-linux-aufs5.10/drivers/block/lo /* loop sysfs attributes */ static ssize_t loop_attr_show(struct device *dev, char *page, -diff -Naur linux-5.10/fs/aufs/aufs.h aufs5-linux-aufs5.10/fs/aufs/aufs.h ---- linux-5.10/fs/aufs/aufs.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/aufs.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/aufs.h aufs5-linux-aufs5.15/fs/aufs/aufs.h +--- linux-5.15/fs/aufs/aufs.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/aufs.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -1800,9 +1802,9 @@ diff -Naur linux-5.10/fs/aufs/aufs.h aufs5-linux-aufs5.10/fs/aufs/aufs.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ -diff -Naur linux-5.10/fs/aufs/branch.c aufs5-linux-aufs5.10/fs/aufs/branch.c ---- linux-5.10/fs/aufs/branch.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/branch.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/branch.c aufs5-linux-aufs5.15/fs/aufs/branch.c +--- linux-5.15/fs/aufs/branch.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/branch.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,1414 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -3218,10 +3220,10 @@ diff -Naur linux-5.10/fs/aufs/branch.c aufs5-linux-aufs5.10/fs/aufs/branch.c + + return err; +} -diff -Naur linux-5.10/fs/aufs/branch.h aufs5-linux-aufs5.10/fs/aufs/branch.h ---- linux-5.10/fs/aufs/branch.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/branch.h 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,351 @@ +diff -Naur linux-5.15/fs/aufs/branch.h aufs5-linux-aufs5.15/fs/aufs/branch.h +--- linux-5.15/fs/aufs/branch.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/branch.h 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,362 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -3357,6 +3359,11 @@ diff -Naur linux-5.10/fs/aufs/branch.h aufs5-linux-aufs5.10/fs/aufs/branch.h + return br->br_path.dentry; +} + ++static inline struct user_namespace *au_br_userns(struct au_branch *br) ++{ ++ return mnt_user_ns(br->br_path.mnt); ++} ++ +static inline struct super_block *au_br_sb(struct au_branch *br) +{ + return au_br_mnt(br)->mnt_sb; @@ -3516,6 +3523,12 @@ diff -Naur linux-5.10/fs/aufs/branch.h aufs5-linux-aufs5.10/fs/aufs/branch.h +} + +static inline ++struct user_namespace *au_sbr_userns(struct super_block *sb, aufs_bindex_t bindex) ++{ ++ return au_br_userns(au_sbr(sb, bindex)); ++} ++ ++static inline +struct super_block *au_sbr_sb(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_sb(au_sbr(sb, bindex)); @@ -3573,10 +3586,10 @@ diff -Naur linux-5.10/fs/aufs/branch.h aufs5-linux-aufs5.10/fs/aufs/branch.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ -diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c ---- linux-5.10/fs/aufs/cpup.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/cpup.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,1434 @@ +diff -Naur linux-5.15/fs/aufs/cpup.c aufs5-linux-aufs5.15/fs/aufs/cpup.c +--- linux-5.15/fs/aufs/cpup.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/cpup.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,1446 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -3730,7 +3743,7 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c +}; + +static noinline_for_stack -+int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct dentry *h_src, ++int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct path *h_src, + struct au_cpup_reg_attr *h_src_attr) +{ + int err, sbits, icex; @@ -3742,11 +3755,11 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + struct kstat *h_st; + struct au_branch *br; + -+ h_path.dentry = au_h_dptr(dst, bindex); -+ h_idst = d_inode(h_path.dentry); + br = au_sbr(dst->d_sb, bindex); + h_path.mnt = au_br_mnt(br); -+ h_isrc = d_inode(h_src); ++ h_path.dentry = au_h_dptr(dst, bindex); ++ h_idst = d_inode(h_path.dentry); ++ h_isrc = d_inode(h_src->dentry); + ia.ia_valid = ATTR_FORCE | ATTR_UID | ATTR_GID + | ATTR_ATIME | ATTR_MTIME + | ATTR_ATIME_SET | ATTR_MTIME_SET; @@ -3790,7 +3803,7 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + if (!err) { + mnt_flags = au_mntflags(dst->d_sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); -+ err = au_cpup_xattr(h_path.dentry, h_src, icex, verbose); ++ err = au_cpup_xattr(&h_path, h_src, icex, verbose); + } + + return err; @@ -4160,16 +4173,18 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + int err; + struct dentry *h_dentry; + struct inode *h_inode; ++ struct user_namespace *h_userns; + ++ h_userns = mnt_user_ns(h_path->mnt); + h_dentry = h_path->dentry; + h_inode = d_inode(h_dentry); + /* forget_all_cached_acls(h_inode)); */ -+ err = vfsub_removexattr(h_dentry, XATTR_NAME_POSIX_ACL_ACCESS); ++ err = vfsub_removexattr(h_userns, h_dentry, XATTR_NAME_POSIX_ACL_ACCESS); + AuTraceErr(err); + if (err == -EOPNOTSUPP) + err = 0; + if (!err) -+ err = vfsub_acl_chmod(h_inode, mode); ++ err = vfsub_acl_chmod(h_userns, h_inode, mode); + + AuTraceErr(err); + return err; @@ -4180,8 +4195,11 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c +{ + int err; + struct inode *dir, *inode; ++ struct user_namespace *h_userns; + -+ err = vfsub_removexattr(h_path->dentry, XATTR_NAME_POSIX_ACL_DEFAULT); ++ h_userns = mnt_user_ns(h_path->mnt); ++ err = vfsub_removexattr(h_userns, h_path->dentry, ++ XATTR_NAME_POSIX_ACL_DEFAULT); + AuTraceErr(err); + if (err == -EOPNOTSUPP) + err = 0; @@ -4364,6 +4382,7 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + struct inode *dst_inode, *h_dir, *inode, *delegated, *src_inode; + struct super_block *sb; + struct au_branch *br; ++ struct path h_src_path; + /* to reduce stack size */ + struct { + struct au_dtime dt; @@ -4455,7 +4474,9 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + /* todo: necessary? */ + /* au_pin_hdir_unlock(cpg->pin); */ + -+ err = cpup_iattr(cpg->dentry, cpg->bdst, h_src, &a->h_src_attr); ++ h_src_path.dentry = h_src; ++ h_src_path.mnt = au_sbr_mnt(sb, cpg->bsrc); ++ err = cpup_iattr(cpg->dentry, cpg->bdst, &h_src_path, &a->h_src_attr); + if (unlikely(err)) { + /* todo: necessary? */ + /* au_pin_hdir_relock(cpg->pin); */ /* ignore an error */ @@ -4657,6 +4678,7 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + struct dentry *dentry, *parent; + struct file *h_file; + struct inode *h_dir; ++ struct user_namespace *h_userns; + + dentry = cpg->dentry; + h_file = NULL; @@ -4670,7 +4692,8 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + + parent = dget_parent(dentry); + h_dir = au_h_iptr(d_inode(parent), cpg->bdst); -+ if (!au_test_h_perm_sio(h_dir, MAY_EXEC | MAY_WRITE) ++ h_userns = au_sbr_userns(dentry->d_sb, cpg->bdst); ++ if (!au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_simple(cpg); + else { @@ -4840,6 +4863,7 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + struct inode *dir, *h_dir, *h_tmpdir; + struct au_wbr *wbr; + struct au_pin wh_pin, *pin_orig; ++ struct user_namespace *h_userns; + + dentry = cpg->dentry; + bdst = cpg->bdst; @@ -4868,7 +4892,8 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + cpg->pin = &wh_pin; + } + -+ if (!au_test_h_perm_sio(h_tmpdir, MAY_EXEC | MAY_WRITE) ++ h_userns = au_sbr_userns(dentry->d_sb, bdst); ++ if (!au_test_h_perm_sio(h_userns, h_tmpdir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_wh(cpg, file); + else { @@ -5011,9 +5036,9 @@ diff -Naur linux-5.10/fs/aufs/cpup.c aufs5-linux-aufs5.10/fs/aufs/cpup.c + dput(parent); + return err; +} -diff -Naur linux-5.10/fs/aufs/cpup.h aufs5-linux-aufs5.10/fs/aufs/cpup.h ---- linux-5.10/fs/aufs/cpup.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/cpup.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/cpup.h aufs5-linux-aufs5.15/fs/aufs/cpup.h +--- linux-5.15/fs/aufs/cpup.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/cpup.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,87 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -5102,9 +5127,9 @@ diff -Naur linux-5.10/fs/aufs/cpup.h aufs5-linux-aufs5.10/fs/aufs/cpup.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ -diff -Naur linux-5.10/fs/aufs/dbgaufs.c aufs5-linux-aufs5.10/fs/aufs/dbgaufs.c ---- linux-5.10/fs/aufs/dbgaufs.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dbgaufs.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dbgaufs.c aufs5-linux-aufs5.15/fs/aufs/dbgaufs.c +--- linux-5.15/fs/aufs/dbgaufs.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dbgaufs.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,513 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -5619,9 +5644,9 @@ diff -Naur linux-5.10/fs/aufs/dbgaufs.c aufs5-linux-aufs5.10/fs/aufs/dbgaufs.c + err = 0; + return err; +} -diff -Naur linux-5.10/fs/aufs/dbgaufs.h aufs5-linux-aufs5.10/fs/aufs/dbgaufs.h ---- linux-5.10/fs/aufs/dbgaufs.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dbgaufs.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dbgaufs.h aufs5-linux-aufs5.15/fs/aufs/dbgaufs.h +--- linux-5.15/fs/aufs/dbgaufs.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dbgaufs.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -5663,9 +5688,9 @@ diff -Naur linux-5.10/fs/aufs/dbgaufs.h aufs5-linux-aufs5.10/fs/aufs/dbgaufs.h + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ -diff -Naur linux-5.10/fs/aufs/dcsub.c aufs5-linux-aufs5.10/fs/aufs/dcsub.c ---- linux-5.10/fs/aufs/dcsub.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dcsub.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dcsub.c aufs5-linux-aufs5.15/fs/aufs/dcsub.c +--- linux-5.15/fs/aufs/dcsub.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dcsub.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,212 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -5879,9 +5904,9 @@ diff -Naur linux-5.10/fs/aufs/dcsub.c aufs5-linux-aufs5.10/fs/aufs/dcsub.c + + return path_is_under(path + 0, path + 1); +} -diff -Naur linux-5.10/fs/aufs/dcsub.h aufs5-linux-aufs5.10/fs/aufs/dcsub.h ---- linux-5.10/fs/aufs/dcsub.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dcsub.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dcsub.h aufs5-linux-aufs5.15/fs/aufs/dcsub.h +--- linux-5.15/fs/aufs/dcsub.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dcsub.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,124 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -6007,9 +6032,9 @@ diff -Naur linux-5.10/fs/aufs/dcsub.h aufs5-linux-aufs5.10/fs/aufs/dcsub.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ -diff -Naur linux-5.10/fs/aufs/debug.c aufs5-linux-aufs5.10/fs/aufs/debug.c ---- linux-5.10/fs/aufs/debug.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/debug.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/debug.c aufs5-linux-aufs5.15/fs/aufs/debug.c +--- linux-5.15/fs/aufs/debug.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/debug.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,431 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -6442,9 +6467,9 @@ diff -Naur linux-5.10/fs/aufs/debug.c aufs5-linux-aufs5.10/fs/aufs/debug.c + + return 0; +} -diff -Naur linux-5.10/fs/aufs/debug.h aufs5-linux-aufs5.10/fs/aufs/debug.h ---- linux-5.10/fs/aufs/debug.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/debug.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/debug.h aufs5-linux-aufs5.15/fs/aufs/debug.h +--- linux-5.15/fs/aufs/debug.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/debug.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,213 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -6659,10 +6684,10 @@ diff -Naur linux-5.10/fs/aufs/debug.h aufs5-linux-aufs5.10/fs/aufs/debug.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ -diff -Naur linux-5.10/fs/aufs/dentry.c aufs5-linux-aufs5.10/fs/aufs/dentry.c ---- linux-5.10/fs/aufs/dentry.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dentry.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,1149 @@ +diff -Naur linux-5.15/fs/aufs/dentry.c aufs5-linux-aufs5.15/fs/aufs/dentry.c +--- linux-5.15/fs/aufs/dentry.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dentry.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,1155 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -6686,6 +6711,7 @@ diff -Naur linux-5.10/fs/aufs/dentry.c aufs5-linux-aufs5.10/fs/aufs/dentry.c + struct dentry *h_dentry; + struct inode *h_inode; + struct au_branch *br; ++ struct user_namespace *h_userns; + struct path h_path; + int wh_found, opq; + unsigned char wh_able; @@ -6697,9 +6723,11 @@ diff -Naur linux-5.10/fs/aufs/dentry.c aufs5-linux-aufs5.10/fs/aufs/dentry.c + br = au_sbr(dentry->d_sb, bindex); + h_path.dentry = h_parent; + h_path.mnt = au_br_mnt(br); ++ h_userns = au_br_userns(br); + wh_able = !!au_br_whable(br->br_perm); + if (wh_able) -+ wh_found = au_wh_test(&h_path, &args->whname, ignore_perm); ++ wh_found = au_wh_test(h_userns, &h_path, &args->whname, ++ ignore_perm); + h_dentry = ERR_PTR(wh_found); + if (!wh_found) + goto real_lookup; @@ -6716,7 +6744,7 @@ diff -Naur linux-5.10/fs/aufs/dentry.c aufs5-linux-aufs5.10/fs/aufs/dentry.c + if (!ignore_perm) + h_dentry = vfsub_lkup_one(args->name, &h_path); + else -+ h_dentry = au_sio_lkup_one(args->name, &h_path); ++ h_dentry = au_sio_lkup_one(h_userns, args->name, &h_path); + if (IS_ERR(h_dentry)) { + if (PTR_ERR(h_dentry) == -ENAMETOOLONG + && !allow_neg) @@ -6752,7 +6780,7 @@ diff -Naur linux-5.10/fs/aufs/dentry.c aufs5-linux-aufs5.10/fs/aufs/dentry.c + + h_path.dentry = h_dentry; + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); -+ opq = au_diropq_test(&h_path); ++ opq = au_diropq_test(h_userns, &h_path); + inode_unlock_shared(h_inode); + if (opq > 0) + au_set_dbdiropq(dentry, bindex); @@ -6897,12 +6925,13 @@ diff -Naur linux-5.10/fs/aufs/dentry.c aufs5-linux-aufs5.10/fs/aufs/dentry.c + return err; +} + -+struct dentry *au_sio_lkup_one(struct qstr *name, struct path *ppath) ++struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name, ++ struct path *ppath) +{ + struct dentry *dentry; + int wkq_err; + -+ if (!au_test_h_perm_sio(d_inode(ppath->dentry), MAY_EXEC)) ++ if (!au_test_h_perm_sio(userns, d_inode(ppath->dentry), MAY_EXEC)) + dentry = vfsub_lkup_one(name, ppath); + else { + struct vfsub_lkup_one_args args = { @@ -6927,16 +6956,18 @@ diff -Naur linux-5.10/fs/aufs/dentry.c aufs5-linux-aufs5.10/fs/aufs/dentry.c + int err; + struct dentry *parent, *h_dentry; + struct au_branch *br; ++ struct user_namespace *h_userns; + struct path h_ppath; + + parent = dget_parent(dentry); + br = au_sbr(dentry->d_sb, bindex); + h_ppath.dentry = au_h_dptr(parent, bindex); + h_ppath.mnt = au_br_mnt(br); ++ h_userns = au_br_userns(br); + if (wh) + h_dentry = au_whtmp_lkup(h_ppath.dentry, br, &dentry->d_name); + else -+ h_dentry = au_sio_lkup_one(&dentry->d_name, &h_ppath); ++ h_dentry = au_sio_lkup_one(h_userns, &dentry->d_name, &h_ppath); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out; @@ -7812,10 +7843,10 @@ diff -Naur linux-5.10/fs/aufs/dentry.c aufs5-linux-aufs5.10/fs/aufs/dentry.c +const struct dentry_operations aufs_dop_noreval = { + .d_release = aufs_d_release +}; -diff -Naur linux-5.10/fs/aufs/dentry.h aufs5-linux-aufs5.10/fs/aufs/dentry.h ---- linux-5.10/fs/aufs/dentry.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dentry.h 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,255 @@ +diff -Naur linux-5.15/fs/aufs/dentry.h aufs5-linux-aufs5.15/fs/aufs/dentry.h +--- linux-5.15/fs/aufs/dentry.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dentry.h 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,256 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -7878,7 +7909,8 @@ diff -Naur linux-5.10/fs/aufs/dentry.h aufs5-linux-aufs5.10/fs/aufs/dentry.h +/* dentry.c */ +extern const struct dentry_operations aufs_dop, aufs_dop_noreval; +struct au_branch; -+struct dentry *au_sio_lkup_one(struct qstr *name, struct path *ppath); ++struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name, ++ struct path *ppath); +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br); + @@ -8071,9 +8103,9 @@ diff -Naur linux-5.10/fs/aufs/dentry.h aufs5-linux-aufs5.10/fs/aufs/dentry.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ -diff -Naur linux-5.10/fs/aufs/dinfo.c aufs5-linux-aufs5.10/fs/aufs/dinfo.c ---- linux-5.10/fs/aufs/dinfo.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dinfo.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dinfo.c aufs5-linux-aufs5.15/fs/aufs/dinfo.c +--- linux-5.15/fs/aufs/dinfo.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dinfo.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,541 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -8616,10 +8648,10 @@ diff -Naur linux-5.10/fs/aufs/dinfo.c aufs5-linux-aufs5.10/fs/aufs/dinfo.c + return bindex; + return -1; +} -diff -Naur linux-5.10/fs/aufs/dir.c aufs5-linux-aufs5.10/fs/aufs/dir.c ---- linux-5.10/fs/aufs/dir.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dir.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,750 @@ +diff -Naur linux-5.15/fs/aufs/dir.c aufs5-linux-aufs5.15/fs/aufs/dir.c +--- linux-5.15/fs/aufs/dir.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dir.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,752 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -9246,12 +9278,14 @@ diff -Naur linux-5.10/fs/aufs/dir.c aufs5-linux-aufs5.10/fs/aufs/dir.c + int err, wkq_err; + struct dentry *h_dentry; + struct inode *h_inode; ++ struct user_namespace *h_userns; + ++ h_userns = au_sbr_userns(dentry->d_sb, arg->bindex); + h_dentry = au_h_dptr(dentry, arg->bindex); + h_inode = d_inode(h_dentry); + /* todo: i_mode changes anytime? */ + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); -+ err = au_test_h_perm_sio(h_inode, MAY_EXEC | MAY_READ); ++ err = au_test_h_perm_sio(h_userns, h_inode, MAY_EXEC | MAY_READ); + inode_unlock_shared(h_inode); + if (!err) + err = do_test_empty(dentry, arg); @@ -9370,9 +9404,9 @@ diff -Naur linux-5.10/fs/aufs/dir.c aufs5-linux-aufs5.10/fs/aufs/dir.c + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; -diff -Naur linux-5.10/fs/aufs/dir.h aufs5-linux-aufs5.10/fs/aufs/dir.h ---- linux-5.10/fs/aufs/dir.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dir.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dir.h aufs5-linux-aufs5.15/fs/aufs/dir.h +--- linux-5.15/fs/aufs/dir.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dir.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,121 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -9495,9 +9529,9 @@ diff -Naur linux-5.10/fs/aufs/dir.h aufs5-linux-aufs5.10/fs/aufs/dir.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ -diff -Naur linux-5.10/fs/aufs/dirren.c aufs5-linux-aufs5.10/fs/aufs/dirren.c ---- linux-5.10/fs/aufs/dirren.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dirren.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dirren.c aufs5-linux-aufs5.15/fs/aufs/dirren.c +--- linux-5.15/fs/aufs/dirren.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dirren.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,1302 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -10801,9 +10835,9 @@ diff -Naur linux-5.10/fs/aufs/dirren.c aufs5-linux-aufs5.10/fs/aufs/dirren.c +out: + return err; +} -diff -Naur linux-5.10/fs/aufs/dirren.h aufs5-linux-aufs5.10/fs/aufs/dirren.h ---- linux-5.10/fs/aufs/dirren.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dirren.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dirren.h aufs5-linux-aufs5.15/fs/aufs/dirren.h +--- linux-5.15/fs/aufs/dirren.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dirren.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,127 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -10932,9 +10966,9 @@ diff -Naur linux-5.10/fs/aufs/dirren.h aufs5-linux-aufs5.10/fs/aufs/dirren.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIRREN_H__ */ -diff -Naur linux-5.10/fs/aufs/dynop.c aufs5-linux-aufs5.10/fs/aufs/dynop.c ---- linux-5.10/fs/aufs/dynop.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dynop.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dynop.c aufs5-linux-aufs5.15/fs/aufs/dynop.c +--- linux-5.15/fs/aufs/dynop.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dynop.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,355 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -11291,9 +11325,9 @@ diff -Naur linux-5.10/fs/aufs/dynop.c aufs5-linux-aufs5.10/fs/aufs/dynop.c + for (i = 0; i < AuDyLast; i++) + WARN_ON(!hlist_bl_empty(dynop + i)); +} -diff -Naur linux-5.10/fs/aufs/dynop.h aufs5-linux-aufs5.10/fs/aufs/dynop.h ---- linux-5.10/fs/aufs/dynop.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/dynop.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/dynop.h aufs5-linux-aufs5.15/fs/aufs/dynop.h +--- linux-5.15/fs/aufs/dynop.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/dynop.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -11359,10 +11393,10 @@ diff -Naur linux-5.10/fs/aufs/dynop.h aufs5-linux-aufs5.10/fs/aufs/dynop.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ -diff -Naur linux-5.10/fs/aufs/export.c aufs5-linux-aufs5.10/fs/aufs/export.c ---- linux-5.10/fs/aufs/export.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/export.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,823 @@ +diff -Naur linux-5.15/fs/aufs/export.c aufs5-linux-aufs5.15/fs/aufs/export.c +--- linux-5.15/fs/aufs/export.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/export.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,817 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -12145,14 +12179,8 @@ diff -Naur linux-5.10/fs/aufs/export.c aufs5-linux-aufs5.10/fs/aufs/export.c + f = h_inode->i_sb->s_export_op->commit_metadata; + if (f) + err = f(h_inode); -+ else { -+ struct writeback_control wbc = { -+ .sync_mode = WB_SYNC_ALL, -+ .nr_to_write = 0 /* metadata only */ -+ }; -+ -+ err = sync_inode(h_inode, &wbc); -+ } ++ else ++ err = sync_inode_metadata(h_inode, /*wait*/1); + + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); @@ -12186,9 +12214,9 @@ diff -Naur linux-5.10/fs/aufs/export.c aufs5-linux-aufs5.10/fs/aufs/export.c + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} -diff -Naur linux-5.10/fs/aufs/fhsm.c aufs5-linux-aufs5.10/fs/aufs/fhsm.c ---- linux-5.10/fs/aufs/fhsm.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/fhsm.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/fhsm.c aufs5-linux-aufs5.15/fs/aufs/fhsm.c +--- linux-5.15/fs/aufs/fhsm.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/fhsm.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,413 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -12603,9 +12631,9 @@ diff -Naur linux-5.10/fs/aufs/fhsm.c aufs5-linux-aufs5.10/fs/aufs/fhsm.c + if (u != AUFS_FHSM_CACHE_DEF_SEC) + seq_printf(seq, ",fhsm_sec=%u", u); +} -diff -Naur linux-5.10/fs/aufs/file.c aufs5-linux-aufs5.10/fs/aufs/file.c ---- linux-5.10/fs/aufs/file.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/file.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/file.c aufs5-linux-aufs5.15/fs/aufs/file.c +--- linux-5.15/fs/aufs/file.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/file.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,850 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -13457,9 +13485,9 @@ diff -Naur linux-5.10/fs/aufs/file.c aufs5-linux-aufs5.10/fs/aufs/file.c + .swap_deactivate = aufs_swap_deactivate +#endif /* CONFIG_AUFS_DEBUG */ +}; -diff -Naur linux-5.10/fs/aufs/file.h aufs5-linux-aufs5.10/fs/aufs/file.h ---- linux-5.10/fs/aufs/file.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/file.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/file.h aufs5-linux-aufs5.15/fs/aufs/file.h +--- linux-5.15/fs/aufs/file.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/file.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,329 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -13790,9 +13818,9 @@ diff -Naur linux-5.10/fs/aufs/file.h aufs5-linux-aufs5.10/fs/aufs/file.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ -diff -Naur linux-5.10/fs/aufs/finfo.c aufs5-linux-aufs5.10/fs/aufs/finfo.c ---- linux-5.10/fs/aufs/finfo.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/finfo.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/finfo.c aufs5-linux-aufs5.15/fs/aufs/finfo.c +--- linux-5.15/fs/aufs/finfo.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/finfo.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,136 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -13930,9 +13958,9 @@ diff -Naur linux-5.10/fs/aufs/finfo.c aufs5-linux-aufs5.10/fs/aufs/finfo.c +out: + return err; +} -diff -Naur linux-5.10/fs/aufs/f_op.c aufs5-linux-aufs5.10/fs/aufs/f_op.c ---- linux-5.10/fs/aufs/f_op.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/f_op.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/f_op.c aufs5-linux-aufs5.15/fs/aufs/f_op.c +--- linux-5.15/fs/aufs/f_op.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/f_op.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,758 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -14692,9 +14720,9 @@ diff -Naur linux-5.10/fs/aufs/f_op.c aufs5-linux-aufs5.10/fs/aufs/f_op.c + .fallocate = aufs_fallocate, + .copy_file_range = aufs_copy_file_range +}; -diff -Naur linux-5.10/fs/aufs/fsctx.c aufs5-linux-aufs5.10/fs/aufs/fsctx.c ---- linux-5.10/fs/aufs/fsctx.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/fsctx.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/fsctx.c aufs5-linux-aufs5.15/fs/aufs/fsctx.c +--- linux-5.15/fs/aufs/fsctx.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/fsctx.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,1229 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -15925,9 +15953,9 @@ diff -Naur linux-5.10/fs/aufs/fsctx.c aufs5-linux-aufs5.10/fs/aufs/fsctx.c + AuTraceErr(err); + return err; +} -diff -Naur linux-5.10/fs/aufs/fstype.h aufs5-linux-aufs5.10/fs/aufs/fstype.h ---- linux-5.10/fs/aufs/fstype.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/fstype.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/fstype.h aufs5-linux-aufs5.15/fs/aufs/fstype.h +--- linux-5.15/fs/aufs/fstype.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/fstype.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,388 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -16317,9 +16345,9 @@ diff -Naur linux-5.10/fs/aufs/fstype.h aufs5-linux-aufs5.10/fs/aufs/fstype.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ -diff -Naur linux-5.10/fs/aufs/hbl.h aufs5-linux-aufs5.10/fs/aufs/hbl.h ---- linux-5.10/fs/aufs/hbl.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/hbl.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/hbl.h aufs5-linux-aufs5.15/fs/aufs/hbl.h +--- linux-5.15/fs/aufs/hbl.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/hbl.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -16373,9 +16401,9 @@ diff -Naur linux-5.10/fs/aufs/hbl.h aufs5-linux-aufs5.10/fs/aufs/hbl.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_HBL_H__ */ -diff -Naur linux-5.10/fs/aufs/hfsnotify.c aufs5-linux-aufs5.10/fs/aufs/hfsnotify.c ---- linux-5.10/fs/aufs/hfsnotify.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/hfsnotify.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/hfsnotify.c aufs5-linux-aufs5.15/fs/aufs/hfsnotify.c +--- linux-5.15/fs/aufs/hfsnotify.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/hfsnotify.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,275 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -16652,9 +16680,9 @@ diff -Naur linux-5.10/fs/aufs/hfsnotify.c aufs5-linux-aufs5.10/fs/aufs/hfsnotify + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; -diff -Naur linux-5.10/fs/aufs/hfsplus.c aufs5-linux-aufs5.10/fs/aufs/hfsplus.c ---- linux-5.10/fs/aufs/hfsplus.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/hfsplus.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/hfsplus.c aufs5-linux-aufs5.15/fs/aufs/hfsplus.c +--- linux-5.15/fs/aufs/hfsplus.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/hfsplus.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -16703,9 +16731,9 @@ diff -Naur linux-5.10/fs/aufs/hfsplus.c aufs5-linux-aufs5.10/fs/aufs/hfsplus.c + au_lcnt_dec(&br->br_nfiles); + } +} -diff -Naur linux-5.10/fs/aufs/hnotify.c aufs5-linux-aufs5.10/fs/aufs/hnotify.c ---- linux-5.10/fs/aufs/hnotify.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/hnotify.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/hnotify.c aufs5-linux-aufs5.15/fs/aufs/hnotify.c +--- linux-5.15/fs/aufs/hnotify.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/hnotify.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,702 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -17409,9 +17437,9 @@ diff -Naur linux-5.10/fs/aufs/hnotify.c aufs5-linux-aufs5.10/fs/aufs/hnotify.c + if (au_cache[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} -diff -Naur linux-5.10/fs/aufs/iinfo.c aufs5-linux-aufs5.10/fs/aufs/iinfo.c ---- linux-5.10/fs/aufs/iinfo.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/iinfo.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/iinfo.c aufs5-linux-aufs5.15/fs/aufs/iinfo.c +--- linux-5.15/fs/aufs/iinfo.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/iinfo.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,273 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -17686,10 +17714,10 @@ diff -Naur linux-5.10/fs/aufs/iinfo.c aufs5-linux-aufs5.10/fs/aufs/iinfo.c + au_kfree_rcu(iinfo->ii_hinode); + AuRwDestroy(&iinfo->ii_rwsem); +} -diff -Naur linux-5.10/fs/aufs/inode.c aufs5-linux-aufs5.10/fs/aufs/inode.c ---- linux-5.10/fs/aufs/inode.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/inode.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,516 @@ +diff -Naur linux-5.15/fs/aufs/inode.c aufs5-linux-aufs5.15/fs/aufs/inode.c +--- linux-5.15/fs/aufs/inode.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/inode.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,518 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -18191,25 +18219,27 @@ diff -Naur linux-5.10/fs/aufs/inode.c aufs5-linux-aufs5.10/fs/aufs/inode.c + return err; +} + -+int au_test_h_perm(struct inode *h_inode, int mask) ++int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode, ++ int mask) +{ + if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) + return 0; -+ return inode_permission(h_inode, mask); ++ return inode_permission(h_userns, h_inode, mask); +} + -+int au_test_h_perm_sio(struct inode *h_inode, int mask) ++int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode, ++ int mask) +{ + if (au_test_nfs(h_inode->i_sb) + && (mask & MAY_WRITE) + && S_ISDIR(h_inode->i_mode)) + mask |= MAY_READ; /* force permission check */ -+ return au_test_h_perm(h_inode, mask); ++ return au_test_h_perm(h_userns, h_inode, mask); +} -diff -Naur linux-5.10/fs/aufs/inode.h aufs5-linux-aufs5.10/fs/aufs/inode.h ---- linux-5.10/fs/aufs/inode.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/inode.h 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,685 @@ +diff -Naur linux-5.15/fs/aufs/inode.h aufs5-linux-aufs5.15/fs/aufs/inode.h +--- linux-5.15/fs/aufs/inode.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/inode.h 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,692 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -18336,8 +18366,10 @@ diff -Naur linux-5.10/fs/aufs/inode.h aufs5-linux-aufs5.10/fs/aufs/inode.h +struct inode *au_new_inode(struct dentry *dentry, int must_new); +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode); -+int au_test_h_perm(struct inode *h_inode, int mask); -+int au_test_h_perm_sio(struct inode *h_inode, int mask); ++int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode, ++ int mask); ++int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode, ++ int mask); + +static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, unsigned int d_type, ino_t *ino) @@ -18412,18 +18444,21 @@ diff -Naur linux-5.10/fs/aufs/inode.h aufs5-linux-aufs5.10/fs/aufs/inode.h +/* i_op_add.c */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); -+int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, -+ dev_t dev); -+int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname); -+int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, -+ bool want_excl); ++int aufs_mknod(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode, dev_t dev); ++int aufs_symlink(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, const char *symname); ++int aufs_create(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode, bool want_excl); +struct vfsub_aopen_args; +int au_aopen_or_create(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args); -+int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode); ++int aufs_tmpfile(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode); +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry); -+int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); ++int aufs_mkdir(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode); + +/* i_op_del.c */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); @@ -18434,9 +18469,10 @@ diff -Naur linux-5.10/fs/aufs/inode.h aufs5-linux-aufs5.10/fs/aufs/inode.h + +/* i_op_ren.c */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); -+int aufs_rename(struct inode *src_dir, struct dentry *src_dentry, -+ struct inode *dir, struct dentry *dentry, -+ unsigned int flags); ++int aufs_rename(struct user_namespace *userns, ++ struct inode *_src_dir, struct dentry *_src_dentry, ++ struct inode *_dst_dir, struct dentry *_dst_dentry, ++ unsigned int _flags); + +/* iinfo.c */ +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); @@ -18506,19 +18542,20 @@ diff -Naur linux-5.10/fs/aufs/inode.h aufs5-linux-aufs5.10/fs/aufs/inode.h + +#ifdef CONFIG_AUFS_XATTR +/* xattr.c */ -+int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags, ++int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags, + unsigned int verbose); +ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size); +void au_xattr_init(struct super_block *sb); +#else -+AuStubInt0(au_cpup_xattr, struct dentry *h_dst, struct dentry *h_src, ++AuStubInt0(au_cpup_xattr, struct path *h_dst, struct path *h_src, + int ignore_flags, unsigned int verbose); +AuStubVoid(au_xattr_init, struct super_block *sb); +#endif + +#ifdef CONFIG_FS_POSIX_ACL -+struct posix_acl *aufs_get_acl(struct inode *inode, int type); -+int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type); ++struct posix_acl *aufs_get_acl(struct inode *inode, int type, bool rcu); ++int aufs_set_acl(struct user_namespace *userns, struct inode *inode, ++ struct posix_acl *acl, int type); +#endif + +#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) @@ -18895,9 +18932,9 @@ diff -Naur linux-5.10/fs/aufs/inode.h aufs5-linux-aufs5.10/fs/aufs/inode.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ -diff -Naur linux-5.10/fs/aufs/ioctl.c aufs5-linux-aufs5.10/fs/aufs/ioctl.c ---- linux-5.10/fs/aufs/ioctl.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/ioctl.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/ioctl.c aufs5-linux-aufs5.15/fs/aufs/ioctl.c +--- linux-5.15/fs/aufs/ioctl.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/ioctl.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,207 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -19106,10 +19143,10 @@ diff -Naur linux-5.10/fs/aufs/ioctl.c aufs5-linux-aufs5.10/fs/aufs/ioctl.c + return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); +} +#endif -diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c ---- linux-5.10/fs/aufs/i_op_add.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/i_op_add.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,923 @@ +diff -Naur linux-5.15/fs/aufs/i_op_add.c aufs5-linux-aufs5.15/fs/aufs/i_op_add.c +--- linux-5.15/fs/aufs/i_op_add.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/i_op_add.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,928 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -19465,8 +19502,8 @@ diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c + return err; +} + -+int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, -+ dev_t dev) ++int aufs_mknod(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode, dev_t dev) +{ + struct simple_arg arg = { + .type = Mknod, @@ -19478,7 +19515,8 @@ diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c + return add_simple(dir, dentry, &arg); +} + -+int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) ++int aufs_symlink(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, const char *symname) +{ + struct simple_arg arg = { + .type = Symlink, @@ -19487,8 +19525,8 @@ diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c + return add_simple(dir, dentry, &arg); +} + -+int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, -+ bool want_excl) ++int aufs_create(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode, bool want_excl) +{ + struct simple_arg arg = { + .type = Creat, @@ -19515,7 +19553,8 @@ diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c + return add_simple(dir, dentry, &arg); +} + -+int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) ++int aufs_tmpfile(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode) +{ + int err; + aufs_bindex_t bindex; @@ -19523,6 +19562,7 @@ diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c + struct dentry *parent, *h_parent, *h_dentry; + struct inode *h_dir, *inode; + struct vfsmount *h_mnt; ++ struct user_namespace *h_userns; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_TMPFILE @@ -19569,8 +19609,9 @@ diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c + if (unlikely(err)) + goto out_parent; + ++ h_userns = mnt_user_ns(h_mnt); + h_parent = au_h_dptr(parent, bindex); -+ h_dentry = vfs_tmpfile(h_parent, mode, /*open_flag*/0); ++ h_dentry = vfs_tmpfile(h_userns, h_parent, mode, /*open_flag*/0); + if (IS_ERR(h_dentry)) { + err = PTR_ERR(h_dentry); + goto out_mnt; @@ -19926,7 +19967,8 @@ diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c + return err; +} + -+int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) ++int aufs_mkdir(struct user_namespace *userns, struct inode *dir, ++ struct dentry *dentry, umode_t mode) +{ + int err, rerr; + aufs_bindex_t bindex; @@ -20033,10 +20075,10 @@ diff -Naur linux-5.10/fs/aufs/i_op_add.c aufs5-linux-aufs5.10/fs/aufs/i_op_add.c +out: + return err; +} -diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c ---- linux-5.10/fs/aufs/i_op.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/i_op.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,1488 @@ +diff -Naur linux-5.15/fs/aufs/i_op.c aufs5-linux-aufs5.15/fs/aufs/i_op.c +--- linux-5.15/fs/aufs/i_op.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/i_op.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,1499 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -20057,6 +20099,7 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c +{ + int err; + const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); ++ struct user_namespace *h_userns; + + err = -EPERM; + if (write_mask && IS_IMMUTABLE(h_inode)) @@ -20076,19 +20119,21 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + * - nfs always sets SB_POSIXACL regardless its mount option 'noacl.' + * in this case, generic_permission() returns -EOPNOTSUPP. + */ ++ h_userns = mnt_user_ns(h_path->mnt); + if ((write_mask && !au_br_writable(brperm)) + || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode) + && write_mask && !(mask & MAY_READ)) + || !h_inode->i_op->permission) { + /* AuLabel(generic_permission); */ + /* AuDbg("get_acl %ps\n", h_inode->i_op->get_acl); */ -+ err = generic_permission(h_inode, mask); ++ err = generic_permission(h_userns, h_inode, mask); + if (err == -EOPNOTSUPP && au_test_nfs_noacl(h_inode)) -+ err = h_inode->i_op->permission(h_inode, mask); ++ err = h_inode->i_op->permission(h_userns, h_inode, ++ mask); + AuTraceErr(err); + } else { + /* AuLabel(h_inode->permission); */ -+ err = h_inode->i_op->permission(h_inode, mask); ++ err = h_inode->i_op->permission(h_userns, h_inode, mask); + AuTraceErr(err); + } + @@ -20101,7 +20146,8 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + return err; +} + -+static int aufs_permission(struct inode *inode, int mask) ++static int aufs_permission(struct user_namespace *userns, struct inode *inode, ++ int mask) +{ + int err; + aufs_bindex_t bindex, bbot; @@ -20949,18 +20995,20 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + return err; +} + -+static int aufs_setattr(struct dentry *dentry, struct iattr *ia) ++static int aufs_setattr(struct user_namespace *userns, struct dentry *dentry, ++ struct iattr *ia) +{ + int err; + struct inode *inode, *delegated; + struct super_block *sb; + struct file *file; + struct au_icpup_args *a; ++ struct user_namespace *h_userns; + + inode = d_inode(dentry); + IMustLock(inode); + -+ err = setattr_prepare(dentry, ia); ++ err = setattr_prepare(userns, dentry, ia); + if (unlikely(err)) + goto out; + @@ -21053,8 +21101,10 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + * regardless aufs 'acl' option setting. + * why don't all acl-aware fs call this func from their ->setattr()? + */ -+ if (!err && (ia->ia_valid & ATTR_MODE)) -+ err = vfsub_acl_chmod(a->h_inode, ia->ia_mode); ++ if (!err && (ia->ia_valid & ATTR_MODE)) { ++ h_userns = mnt_user_ns(a->h_path.mnt); ++ err = vfsub_acl_chmod(h_userns, a->h_inode, ia->ia_mode); ++ } + if (!err) + au_cpup_attr_changeable(inode); + @@ -21116,6 +21166,7 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + struct super_block *sb; + struct au_icpup_args *a; + struct inode *h_inode; ++ struct user_namespace *h_userns; + + IMustLock(inode); + @@ -21134,23 +21185,25 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + err = au_h_path_to_set_attr(dentry, a, &h_path); + if (unlikely(err)) + goto out_di; ++ h_userns = mnt_user_ns(h_path.mnt); + + inode_unlock(a->h_inode); + switch (arg->type) { + case AU_XATTR_SET: + AuDebugOn(d_is_negative(h_path.dentry)); -+ err = vfsub_setxattr(h_path.dentry, ++ err = vfsub_setxattr(h_userns, h_path.dentry, + arg->u.set.name, arg->u.set.value, + arg->u.set.size, arg->u.set.flags); + break; + case AU_ACL_SET: + err = -EOPNOTSUPP; + h_inode = d_inode(h_path.dentry); -+ if (h_inode->i_op->set_acl) ++ if (h_inode->i_op->set_acl) { + /* this will call posix_acl_update_mode */ -+ err = h_inode->i_op->set_acl(h_inode, ++ err = h_inode->i_op->set_acl(h_userns, h_inode, + arg->u.acl_set.acl, + arg->u.acl_set.type); ++ } + break; + } + if (!err) @@ -21281,8 +21334,8 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + return err; +} + -+static int aufs_getattr(const struct path *path, struct kstat *st, -+ u32 request, unsigned int query) ++static int aufs_getattr(struct user_namespace *userns, const struct path *path, ++ struct kstat *st, u32 request, unsigned int query) +{ + int err; + unsigned char positive; @@ -21319,7 +21372,7 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + goto out_di; + +out_fill: -+ generic_fillattr(inode, st); ++ generic_fillattr(userns, inode, st); +out_di: + di_read_unlock(dentry, AuLock_IR); +out_si: @@ -21525,10 +21578,10 @@ diff -Naur linux-5.10/fs/aufs/i_op.c aufs5-linux-aufs5.10/fs/aufs/i_op.c + .update_time = aufs_update_time + } +}; -diff -Naur linux-5.10/fs/aufs/i_op_del.c aufs5-linux-aufs5.10/fs/aufs/i_op_del.c ---- linux-5.10/fs/aufs/i_op_del.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/i_op_del.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,507 @@ +diff -Naur linux-5.15/fs/aufs/i_op_del.c aufs5-linux-aufs5.15/fs/aufs/i_op_del.c +--- linux-5.15/fs/aufs/i_op_del.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/i_op_del.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,509 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -21615,6 +21668,7 @@ diff -Naur linux-5.10/fs/aufs/i_op_del.c aufs5-linux-aufs5.10/fs/aufs/i_op_del.c + struct path h_ppath; + struct super_block *sb; + struct au_branch *br; ++ struct user_namespace *h_userns; + + h_dentry = au_h_dptr(dentry, bindex); + if (d_really_is_positive(dentry)) { @@ -21654,14 +21708,15 @@ diff -Naur linux-5.10/fs/aufs/i_op_del.c aufs5-linux-aufs5.10/fs/aufs/i_op_del.c + err = -EACCES; + sb = dentry->d_sb; + br = au_sbr(sb, bindex); ++ h_userns = au_br_userns(br); + if (unlikely(!au_opt_test(au_mntflags(sb), DIRPERM1) -+ && au_test_h_perm(d_inode(h_parent), ++ && au_test_h_perm(h_userns, d_inode(h_parent), + MAY_EXEC | MAY_WRITE))) + goto out; + + h_ppath.dentry = h_parent; + h_ppath.mnt = au_br_mnt(br); -+ h_latest = au_sio_lkup_one(&dentry->d_name, &h_ppath); ++ h_latest = au_sio_lkup_one(h_userns, &dentry->d_name, &h_ppath); + err = -EIO; + if (IS_ERR(h_latest)) + goto out; @@ -22036,10 +22091,10 @@ diff -Naur linux-5.10/fs/aufs/i_op_del.c aufs5-linux-aufs5.10/fs/aufs/i_op_del.c + AuTraceErr(err); + return err; +} -diff -Naur linux-5.10/fs/aufs/i_op_ren.c aufs5-linux-aufs5.10/fs/aufs/i_op_ren.c ---- linux-5.10/fs/aufs/i_op_ren.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/i_op_ren.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,1243 @@ +diff -Naur linux-5.15/fs/aufs/i_op_ren.c aufs5-linux-aufs5.15/fs/aufs/i_op_ren.c +--- linux-5.15/fs/aufs/i_op_ren.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/i_op_ren.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,1244 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -22988,7 +23043,8 @@ diff -Naur linux-5.10/fs/aufs/i_op_ren.c aufs5-linux-aufs5.10/fs/aufs/i_op_ren.c + +/* ---------------------------------------------------------------------- */ + -+int aufs_rename(struct inode *_src_dir, struct dentry *_src_dentry, ++int aufs_rename(struct user_namespace *userns, ++ struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry, + unsigned int _flags) +{ @@ -23283,9 +23339,9 @@ diff -Naur linux-5.10/fs/aufs/i_op_ren.c aufs5-linux-aufs5.10/fs/aufs/i_op_ren.c + AuTraceErr(err); + return err; +} -diff -Naur linux-5.10/fs/aufs/Kconfig aufs5-linux-aufs5.10/fs/aufs/Kconfig ---- linux-5.10/fs/aufs/Kconfig 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/Kconfig 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/Kconfig aufs5-linux-aufs5.15/fs/aufs/Kconfig +--- linux-5.15/fs/aufs/Kconfig 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/Kconfig 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,199 @@ +# SPDX-License-Identifier: GPL-2.0 +config AUFS_FS @@ -23486,9 +23542,9 @@ diff -Naur linux-5.10/fs/aufs/Kconfig aufs5-linux-aufs5.10/fs/aufs/Kconfig + Automatic configuration for internal use. + When aufs supports Magic SysRq, enabled automatically. +endif -diff -Naur linux-5.10/fs/aufs/lcnt.h aufs5-linux-aufs5.10/fs/aufs/lcnt.h ---- linux-5.10/fs/aufs/lcnt.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/lcnt.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/lcnt.h aufs5-linux-aufs5.15/fs/aufs/lcnt.h +--- linux-5.15/fs/aufs/lcnt.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/lcnt.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,173 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -23663,9 +23719,9 @@ diff -Naur linux-5.10/fs/aufs/lcnt.h aufs5-linux-aufs5.10/fs/aufs/lcnt.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LCNT_H__ */ -diff -Naur linux-5.10/fs/aufs/loop.c aufs5-linux-aufs5.10/fs/aufs/loop.c ---- linux-5.10/fs/aufs/loop.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/loop.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/loop.c aufs5-linux-aufs5.15/fs/aufs/loop.c +--- linux-5.15/fs/aufs/loop.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/loop.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -23802,9 +23858,9 @@ diff -Naur linux-5.10/fs/aufs/loop.c aufs5-linux-aufs5.10/fs/aufs/loop.c + symbol_put(loop_backing_file); + au_kfree_try_rcu(au_warn_loopback_array); +} -diff -Naur linux-5.10/fs/aufs/loop.h aufs5-linux-aufs5.10/fs/aufs/loop.h ---- linux-5.10/fs/aufs/loop.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/loop.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/loop.h aufs5-linux-aufs5.15/fs/aufs/loop.h +--- linux-5.15/fs/aufs/loop.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/loop.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -23848,9 +23904,9 @@ diff -Naur linux-5.10/fs/aufs/loop.h aufs5-linux-aufs5.10/fs/aufs/loop.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ -diff -Naur linux-5.10/fs/aufs/magic.mk aufs5-linux-aufs5.10/fs/aufs/magic.mk ---- linux-5.10/fs/aufs/magic.mk 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/magic.mk 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/magic.mk aufs5-linux-aufs5.15/fs/aufs/magic.mk +--- linux-5.15/fs/aufs/magic.mk 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/magic.mk 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0 + @@ -23883,9 +23939,9 @@ diff -Naur linux-5.10/fs/aufs/magic.mk aufs5-linux-aufs5.10/fs/aufs/magic.mk +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif -diff -Naur linux-5.10/fs/aufs/Makefile aufs5-linux-aufs5.10/fs/aufs/Makefile ---- linux-5.10/fs/aufs/Makefile 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/Makefile 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/Makefile aufs5-linux-aufs5.15/fs/aufs/Makefile +--- linux-5.15/fs/aufs/Makefile 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/Makefile 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,39 @@ +# SPDX-License-Identifier: GPL-2.0 + @@ -23926,9 +23982,9 @@ diff -Naur linux-5.10/fs/aufs/Makefile aufs5-linux-aufs5.10/fs/aufs/Makefile +aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o -diff -Naur linux-5.10/fs/aufs/module.c aufs5-linux-aufs5.10/fs/aufs/module.c ---- linux-5.10/fs/aufs/module.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/module.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/module.c aufs5-linux-aufs5.15/fs/aufs/module.c +--- linux-5.15/fs/aufs/module.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/module.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,259 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -24189,9 +24245,9 @@ diff -Naur linux-5.10/fs/aufs/module.c aufs5-linux-aufs5.10/fs/aufs/module.c + +module_init(aufs_init); +module_exit(aufs_exit); -diff -Naur linux-5.10/fs/aufs/module.h aufs5-linux-aufs5.10/fs/aufs/module.h ---- linux-5.10/fs/aufs/module.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/module.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/module.h aufs5-linux-aufs5.15/fs/aufs/module.h +--- linux-5.15/fs/aufs/module.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/module.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,153 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -24279,7 +24335,7 @@ diff -Naur linux-5.10/fs/aufs/module.h aufs5-linux-aufs5.10/fs/aufs/module.h +static inline int au_kmidx_sub(size_t sz, size_t new_sz) +{ +#ifndef CONFIG_SLOB -+ return kmalloc_index(sz) - kmalloc_index(new_sz); ++ return __kmalloc_index(sz, false) - __kmalloc_index(new_sz, false); +#else + return -1; /* SLOB is untested */ +#endif @@ -24346,9 +24402,9 @@ diff -Naur linux-5.10/fs/aufs/module.h aufs5-linux-aufs5.10/fs/aufs/module.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ -diff -Naur linux-5.10/fs/aufs/mvdown.c aufs5-linux-aufs5.10/fs/aufs/mvdown.c ---- linux-5.10/fs/aufs/mvdown.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/mvdown.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/mvdown.c aufs5-linux-aufs5.15/fs/aufs/mvdown.c +--- linux-5.15/fs/aufs/mvdown.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/mvdown.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,693 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -25043,9 +25099,9 @@ diff -Naur linux-5.10/fs/aufs/mvdown.c aufs5-linux-aufs5.10/fs/aufs/mvdown.c + AuTraceErr(err); + return err; +} -diff -Naur linux-5.10/fs/aufs/opts.c aufs5-linux-aufs5.10/fs/aufs/opts.c ---- linux-5.10/fs/aufs/opts.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/opts.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/opts.c aufs5-linux-aufs5.15/fs/aufs/opts.c +--- linux-5.15/fs/aufs/opts.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/opts.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,1019 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -26066,9 +26122,9 @@ diff -Naur linux-5.10/fs/aufs/opts.c aufs5-linux-aufs5.10/fs/aufs/opts.c +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} -diff -Naur linux-5.10/fs/aufs/opts.h aufs5-linux-aufs5.10/fs/aufs/opts.h ---- linux-5.10/fs/aufs/opts.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/opts.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/opts.h aufs5-linux-aufs5.15/fs/aufs/opts.h +--- linux-5.15/fs/aufs/opts.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/opts.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,250 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -26320,9 +26376,9 @@ diff -Naur linux-5.10/fs/aufs/opts.h aufs5-linux-aufs5.10/fs/aufs/opts.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ -diff -Naur linux-5.10/fs/aufs/plink.c aufs5-linux-aufs5.10/fs/aufs/plink.c ---- linux-5.10/fs/aufs/plink.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/plink.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/plink.c aufs5-linux-aufs5.15/fs/aufs/plink.c +--- linux-5.15/fs/aufs/plink.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/plink.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,503 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -26827,9 +26883,9 @@ diff -Naur linux-5.10/fs/aufs/plink.c aufs5-linux-aufs5.10/fs/aufs/plink.c + } + } +} -diff -Naur linux-5.10/fs/aufs/poll.c aufs5-linux-aufs5.10/fs/aufs/poll.c ---- linux-5.10/fs/aufs/poll.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/poll.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/poll.c aufs5-linux-aufs5.15/fs/aufs/poll.c +--- linux-5.15/fs/aufs/poll.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/poll.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -26869,10 +26925,10 @@ diff -Naur linux-5.10/fs/aufs/poll.c aufs5-linux-aufs5.10/fs/aufs/poll.c + AuDbg("mask 0x%x\n", mask); + return mask; +} -diff -Naur linux-5.10/fs/aufs/posix_acl.c aufs5-linux-aufs5.10/fs/aufs/posix_acl.c ---- linux-5.10/fs/aufs/posix_acl.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/posix_acl.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,92 @@ +diff -Naur linux-5.15/fs/aufs/posix_acl.c aufs5-linux-aufs5.15/fs/aufs/posix_acl.c +--- linux-5.15/fs/aufs/posix_acl.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/posix_acl.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2014-2021 Junjiro R. Okajima @@ -26885,7 +26941,7 @@ diff -Naur linux-5.10/fs/aufs/posix_acl.c aufs5-linux-aufs5.10/fs/aufs/posix_acl +#include +#include "aufs.h" + -+struct posix_acl *aufs_get_acl(struct inode *inode, int type) ++struct posix_acl *aufs_get_acl(struct inode *inode, int type, bool rcu) +{ + struct posix_acl *acl; + int err; @@ -26893,12 +26949,16 @@ diff -Naur linux-5.10/fs/aufs/posix_acl.c aufs5-linux-aufs5.10/fs/aufs/posix_acl + struct inode *h_inode; + struct super_block *sb; + ++ acl = ERR_PTR(-ECHILD); ++ if (rcu) ++ goto out; ++ + acl = NULL; + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); + if (!(sb->s_flags & SB_POSIXACL)) -+ goto out; ++ goto unlock; + + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); @@ -26907,7 +26967,7 @@ diff -Naur linux-5.10/fs/aufs/posix_acl.c aufs5-linux-aufs5.10/fs/aufs/posix_acl + != (inode->i_mode & S_IFMT)))) { + err = au_busy_or_stale(); + acl = ERR_PTR(err); -+ goto out; ++ goto unlock; + } + + /* always topmost only */ @@ -26917,15 +26977,17 @@ diff -Naur linux-5.10/fs/aufs/posix_acl.c aufs5-linux-aufs5.10/fs/aufs/posix_acl + else + set_cached_acl(inode, type, acl); + -+out: ++unlock: + ii_read_unlock(inode); + si_read_unlock(sb); + ++out: + AuTraceErrPtr(acl); + return acl; +} + -+int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type) ++int aufs_set_acl(struct user_namespace *userns, struct inode *inode, ++ struct posix_acl *acl, int type) +{ + int err; + ssize_t ssz; @@ -26965,9 +27027,9 @@ diff -Naur linux-5.10/fs/aufs/posix_acl.c aufs5-linux-aufs5.10/fs/aufs/posix_acl +out: + return err; +} -diff -Naur linux-5.10/fs/aufs/procfs.c aufs5-linux-aufs5.10/fs/aufs/procfs.c ---- linux-5.10/fs/aufs/procfs.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/procfs.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/procfs.c aufs5-linux-aufs5.15/fs/aufs/procfs.c +--- linux-5.15/fs/aufs/procfs.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/procfs.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -27126,9 +27188,9 @@ diff -Naur linux-5.10/fs/aufs/procfs.c aufs5-linux-aufs5.10/fs/aufs/procfs.c +out: + return err; +} -diff -Naur linux-5.10/fs/aufs/rdu.c aufs5-linux-aufs5.10/fs/aufs/rdu.c ---- linux-5.10/fs/aufs/rdu.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/rdu.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/rdu.c aufs5-linux-aufs5.15/fs/aufs/rdu.c +--- linux-5.15/fs/aufs/rdu.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/rdu.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,371 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -27501,10 +27563,10 @@ diff -Naur linux-5.10/fs/aufs/rdu.c aufs5-linux-aufs5.10/fs/aufs/rdu.c + return err; +} +#endif -diff -Naur linux-5.10/fs/aufs/rwsem.h aufs5-linux-aufs5.10/fs/aufs/rwsem.h ---- linux-5.10/fs/aufs/rwsem.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/rwsem.h 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,64 @@ +diff -Naur linux-5.15/fs/aufs/rwsem.h aufs5-linux-aufs5.15/fs/aufs/rwsem.h +--- linux-5.15/fs/aufs/rwsem.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/rwsem.h 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,72 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -27526,6 +27588,8 @@ diff -Naur linux-5.10/fs/aufs/rwsem.h aufs5-linux-aufs5.10/fs/aufs/rwsem.h + +/* to debug easier, do not make them inlined functions */ +#define AuRwMustNoWaiters(rw) AuDebugOn(rwsem_is_contended(rw)) ++ ++#ifdef CONFIG_LOCKDEP +/* rwsem_is_locked() is unusable */ +#define AuRwMustReadLock(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ + && !lockdep_recursing(current) \ @@ -27543,6 +27607,12 @@ diff -Naur linux-5.10/fs/aufs/rwsem.h aufs5-linux-aufs5.10/fs/aufs/rwsem.h + && !lockdep_recursing(current) \ + && debug_locks \ + && lockdep_is_held(rw)) ++#else ++#define AuRwMustReadLock(rw) do {} while (0) ++#define AuRwMustWriteLock(rw) do {} while (0) ++#define AuRwMustAnyLock(rw) do {} while (0) ++#define AuRwDestroy(rw) do {} while (0) ++#endif + +#define au_rw_init(rw) init_rwsem(rw) + @@ -27569,9 +27639,9 @@ diff -Naur linux-5.10/fs/aufs/rwsem.h aufs5-linux-aufs5.10/fs/aufs/rwsem.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ -diff -Naur linux-5.10/fs/aufs/sbinfo.c aufs5-linux-aufs5.10/fs/aufs/sbinfo.c ---- linux-5.10/fs/aufs/sbinfo.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/sbinfo.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/sbinfo.c aufs5-linux-aufs5.15/fs/aufs/sbinfo.c +--- linux-5.15/fs/aufs/sbinfo.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/sbinfo.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,303 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -27876,10 +27946,10 @@ diff -Naur linux-5.10/fs/aufs/sbinfo.c aufs5-linux-aufs5.10/fs/aufs/sbinfo.c + di_write_unlock2(d1, d2); + si_read_unlock(d1->d_sb); +} -diff -Naur linux-5.10/fs/aufs/super.c aufs5-linux-aufs5.10/fs/aufs/super.c ---- linux-5.10/fs/aufs/super.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/super.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,855 @@ +diff -Naur linux-5.15/fs/aufs/super.c aufs5-linux-aufs5.15/fs/aufs/super.c +--- linux-5.15/fs/aufs/super.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/super.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,858 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -28728,16 +28798,19 @@ diff -Naur linux-5.10/fs/aufs/super.c aufs5-linux-aufs5.10/fs/aufs/super.c +struct file_system_type aufs_fs_type = { + .name = AUFS_FSTYPE, + /* a race between rename and others */ -+ .fs_flags = FS_RENAME_DOES_D_MOVE, ++ .fs_flags = FS_RENAME_DOES_D_MOVE ++ /* untested */ ++ /*| FS_ALLOW_IDMAP*/ ++ , + .init_fs_context = aufs_fsctx_init, + .parameters = aufs_fsctx_paramspec, + .kill_sb = aufs_kill_sb, + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; -diff -Naur linux-5.10/fs/aufs/super.h aufs5-linux-aufs5.10/fs/aufs/super.h ---- linux-5.10/fs/aufs/super.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/super.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/super.h aufs5-linux-aufs5.15/fs/aufs/super.h +--- linux-5.15/fs/aufs/super.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/super.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,579 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -29318,9 +29391,9 @@ diff -Naur linux-5.10/fs/aufs/super.h aufs5-linux-aufs5.10/fs/aufs/super.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ -diff -Naur linux-5.10/fs/aufs/sysaufs.c aufs5-linux-aufs5.10/fs/aufs/sysaufs.c ---- linux-5.10/fs/aufs/sysaufs.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/sysaufs.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/sysaufs.c aufs5-linux-aufs5.15/fs/aufs/sysaufs.c +--- linux-5.15/fs/aufs/sysaufs.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/sysaufs.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -29402,9 +29475,9 @@ diff -Naur linux-5.10/fs/aufs/sysaufs.c aufs5-linux-aufs5.10/fs/aufs/sysaufs.c +out: + return err; +} -diff -Naur linux-5.10/fs/aufs/sysaufs.h aufs5-linux-aufs5.10/fs/aufs/sysaufs.h ---- linux-5.10/fs/aufs/sysaufs.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/sysaufs.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/sysaufs.h aufs5-linux-aufs5.15/fs/aufs/sysaufs.h +--- linux-5.15/fs/aufs/sysaufs.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/sysaufs.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -29495,9 +29568,9 @@ diff -Naur linux-5.10/fs/aufs/sysaufs.h aufs5-linux-aufs5.10/fs/aufs/sysaufs.h + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ -diff -Naur linux-5.10/fs/aufs/sysfs.c aufs5-linux-aufs5.10/fs/aufs/sysfs.c ---- linux-5.10/fs/aufs/sysfs.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/sysfs.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/sysfs.c aufs5-linux-aufs5.15/fs/aufs/sysfs.c +--- linux-5.15/fs/aufs/sysfs.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/sysfs.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,338 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -29837,9 +29910,9 @@ diff -Naur linux-5.10/fs/aufs/sysfs.c aufs5-linux-aufs5.10/fs/aufs/sysfs.c + } + } +} -diff -Naur linux-5.10/fs/aufs/sysrq.c aufs5-linux-aufs5.10/fs/aufs/sysrq.c ---- linux-5.10/fs/aufs/sysrq.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/sysrq.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/sysrq.c aufs5-linux-aufs5.15/fs/aufs/sysrq.c +--- linux-5.15/fs/aufs/sysrq.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/sysrq.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,136 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -29977,9 +30050,9 @@ diff -Naur linux-5.10/fs/aufs/sysrq.c aufs5-linux-aufs5.10/fs/aufs/sysrq.c + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} -diff -Naur linux-5.10/fs/aufs/vdir.c aufs5-linux-aufs5.10/fs/aufs/vdir.c ---- linux-5.10/fs/aufs/vdir.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/vdir.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/vdir.c aufs5-linux-aufs5.15/fs/aufs/vdir.c +--- linux-5.15/fs/aufs/vdir.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/vdir.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,883 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -30864,10 +30937,10 @@ diff -Naur linux-5.10/fs/aufs/vdir.c aufs5-linux-aufs5.10/fs/aufs/vdir.c + /* smp_mb(); */ + return 0; +} -diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c ---- linux-5.10/fs/aufs/vfsub.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/vfsub.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,876 @@ +diff -Naur linux-5.15/fs/aufs/vfsub.c aufs5-linux-aufs5.15/fs/aufs/vfsub.c +--- linux-5.15/fs/aufs/vfsub.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/vfsub.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,905 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -31105,6 +31178,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; ++ struct user_namespace *userns; + + IMustLock(dir); + @@ -31114,9 +31188,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; ++ userns = mnt_user_ns(path->mnt); + + lockdep_off(); -+ err = vfs_create(dir, path->dentry, mode, want_excl); ++ err = vfs_create(userns, dir, path->dentry, mode, want_excl); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31138,6 +31213,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; ++ struct user_namespace *userns; + + IMustLock(dir); + @@ -31147,9 +31223,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; ++ userns = mnt_user_ns(path->mnt); + + lockdep_off(); -+ err = vfs_symlink(dir, path->dentry, symname); ++ err = vfs_symlink(userns, dir, path->dentry, symname); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31171,6 +31248,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; ++ struct user_namespace *userns; + + IMustLock(dir); + @@ -31180,9 +31258,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; ++ userns = mnt_user_ns(path->mnt); + + lockdep_off(); -+ err = vfs_mknod(dir, path->dentry, mode, dev); ++ err = vfs_mknod(userns, dir, path->dentry, mode, dev); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31215,6 +31294,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; ++ struct user_namespace *userns; + + IMustLock(dir); + @@ -31229,9 +31309,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; ++ userns = mnt_user_ns(path->mnt); + + lockdep_off(); -+ err = vfs_link(src_dentry, dir, path->dentry, delegated_inode); ++ err = vfs_link(src_dentry, userns, dir, path->dentry, delegated_inode); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31257,6 +31338,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + struct inode **delegated_inode, unsigned int flags) +{ + int err; ++ struct renamedata rd; + struct path tmp = { + .mnt = path->mnt + }; @@ -31273,9 +31355,16 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + if (unlikely(err)) + goto out; + ++ rd.old_mnt_userns = mnt_user_ns(path->mnt); ++ rd.old_dir = src_dir; ++ rd.old_dentry = src_dentry; ++ rd.new_mnt_userns = rd.old_mnt_userns; ++ rd.new_dir = dir; ++ rd.new_dentry = path->dentry; ++ rd.delegated_inode = delegated_inode; ++ rd.flags = flags; + lockdep_off(); -+ err = vfs_rename(src_dir, src_dentry, dir, path->dentry, -+ delegated_inode, flags); ++ err = vfs_rename(&rd); + lockdep_on(); + if (!err) { + int did; @@ -31299,6 +31388,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; ++ struct user_namespace *userns; + + IMustLock(dir); + @@ -31308,9 +31398,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; ++ userns = mnt_user_ns(path->mnt); + + lockdep_off(); -+ err = vfs_mkdir(dir, path->dentry, mode); ++ err = vfs_mkdir(userns, dir, path->dentry, mode); + lockdep_on(); + if (!err) { + struct path tmp = *path; @@ -31332,6 +31423,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +{ + int err; + struct dentry *d; ++ struct user_namespace *userns; + + IMustLock(dir); + @@ -31341,9 +31433,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + path->dentry = d; + if (unlikely(err)) + goto out; ++ userns = mnt_user_ns(path->mnt); + + lockdep_off(); -+ err = vfs_rmdir(dir, path->dentry); ++ err = vfs_rmdir(userns, dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = { @@ -31501,6 +31594,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + int err; + struct inode *h_inode; + struct super_block *h_sb; ++ struct user_namespace *h_userns; + + if (!h_file) { + err = vfsub_truncate(h_path, length); @@ -31512,12 +31606,12 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + lockdep_off(); + sb_start_write(h_sb); + lockdep_on(); -+ err = locks_verify_truncate(h_inode, h_file, length); -+ if (!err) -+ err = security_path_truncate(h_path); ++ err = security_path_truncate(h_path); + if (!err) { ++ h_userns = mnt_user_ns(h_path->mnt); + lockdep_off(); -+ err = do_truncate(h_path->dentry, length, attr, h_file); ++ err = do_truncate(h_userns, h_path->dentry, length, attr, ++ h_file); + lockdep_on(); + } + lockdep_off(); @@ -31546,8 +31640,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err, do_sio, wkq_err; ++ struct user_namespace *userns; + -+ do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); ++ userns = mnt_user_ns(path->mnt); ++ do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_mkdir(dir, path, mode); @@ -31582,8 +31678,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +int vfsub_sio_rmdir(struct inode *dir, struct path *path) +{ + int err, do_sio, wkq_err; ++ struct user_namespace *userns; + -+ do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); ++ userns = mnt_user_ns(path->mnt); ++ do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_rmdir(dir, path); @@ -31615,14 +31713,16 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c +{ + struct notify_change_args *a = args; + struct inode *h_inode; ++ struct user_namespace *userns; + + h_inode = d_inode(a->path->dentry); + IMustLock(h_inode); + + *a->errp = -EPERM; + if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) { ++ userns = mnt_user_ns(a->path->mnt); + lockdep_off(); -+ *a->errp = notify_change(a->path->dentry, a->ia, ++ *a->errp = notify_change(userns, a->path->dentry, a->ia, + a->delegated_inode); + lockdep_on(); + if (!*a->errp) @@ -31679,6 +31779,7 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + struct unlink_args *a = args; + struct dentry *d = a->path->dentry; + struct inode *h_inode; ++ struct user_namespace *userns; + const int stop_sillyrename = (au_test_nfs(d->d_sb) + && au_dcount(d) == 1); + @@ -31698,8 +31799,9 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + ihold(h_inode); + } + ++ userns = mnt_user_ns(a->path->mnt); + lockdep_off(); -+ *a->errp = vfs_unlink(a->dir, d, a->delegated_inode); ++ *a->errp = vfs_unlink(userns, a->dir, d, a->delegated_inode); + lockdep_on(); + if (!*a->errp) { + struct path tmp = { @@ -31744,10 +31846,10 @@ diff -Naur linux-5.10/fs/aufs/vfsub.c aufs5-linux-aufs5.10/fs/aufs/vfsub.c + + return err; +} -diff -Naur linux-5.10/fs/aufs/vfsub.h aufs5-linux-aufs5.10/fs/aufs/vfsub.h ---- linux-5.10/fs/aufs/vfsub.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/vfsub.h 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,341 @@ +diff -Naur linux-5.15/fs/aufs/vfsub.h aufs5-linux-aufs5.15/fs/aufs/vfsub.h +--- linux-5.15/fs/aufs/vfsub.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/vfsub.h 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,345 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -31971,17 +32073,19 @@ diff -Naur linux-5.10/fs/aufs/vfsub.h aufs5-linux-aufs5.10/fs/aufs/vfsub.h +} + +#ifdef CONFIG_FS_POSIX_ACL -+static inline int vfsub_acl_chmod(struct inode *h_inode, umode_t h_mode) ++static inline int vfsub_acl_chmod(struct user_namespace *h_userns, ++ struct inode *h_inode, umode_t h_mode) +{ + int err; + -+ err = posix_acl_chmod(h_inode, h_mode); ++ err = posix_acl_chmod(h_userns, h_inode, h_mode); + if (err == -EOPNOTSUPP) + err = 0; + return err; +} +#else -+AuStubInt0(vfsub_acl_chmod, struct inode *h_inode, umode_t h_mode); ++AuStubInt0(vfsub_acl_chmod, struct user_namespace *h_userns, ++ struct inode *h_inode, umode_t h_mode); +#endif + +long vfsub_splice_to(struct file *in, loff_t *ppos, @@ -32064,24 +32168,26 @@ diff -Naur linux-5.10/fs/aufs/vfsub.h aufs5-linux-aufs5.10/fs/aufs/vfsub.h + +/* ---------------------------------------------------------------------- */ + -+static inline int vfsub_setxattr(struct dentry *dentry, const char *name, ++static inline int vfsub_setxattr(struct user_namespace *userns, ++ struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) +{ + int err; + + lockdep_off(); -+ err = vfs_setxattr(dentry, name, value, size, flags); ++ err = vfs_setxattr(userns, dentry, name, value, size, flags); + lockdep_on(); + + return err; +} + -+static inline int vfsub_removexattr(struct dentry *dentry, const char *name) ++static inline int vfsub_removexattr(struct user_namespace *userns, ++ struct dentry *dentry, const char *name) +{ + int err; + + lockdep_off(); -+ err = vfs_removexattr(dentry, name); ++ err = vfs_removexattr(userns, dentry, name); + lockdep_on(); + + return err; @@ -32089,9 +32195,9 @@ diff -Naur linux-5.10/fs/aufs/vfsub.h aufs5-linux-aufs5.10/fs/aufs/vfsub.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ -diff -Naur linux-5.10/fs/aufs/wbr_policy.c aufs5-linux-aufs5.10/fs/aufs/wbr_policy.c ---- linux-5.10/fs/aufs/wbr_policy.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/wbr_policy.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/wbr_policy.c aufs5-linux-aufs5.15/fs/aufs/wbr_policy.c +--- linux-5.15/fs/aufs/wbr_policy.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/wbr_policy.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,817 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -32910,10 +33016,10 @@ diff -Naur linux-5.10/fs/aufs/wbr_policy.c aufs5-linux-aufs5.10/fs/aufs/wbr_poli + .fin = au_wbr_create_fin_mfs + } +}; -diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c ---- linux-5.10/fs/aufs/whout.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/whout.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,1051 @@ +diff -Naur linux-5.15/fs/aufs/whout.c aufs5-linux-aufs5.15/fs/aufs/whout.c +--- linux-5.15/fs/aufs/whout.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/whout.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,1059 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -32967,7 +33073,8 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + * test if the @wh_name exists under @h_ppath. + * @try_sio specifies the necessary of super-io. + */ -+int au_wh_test(struct path *h_ppath, struct qstr *wh_name, int try_sio) ++int au_wh_test(struct user_namespace *h_userns, struct path *h_ppath, ++ struct qstr *wh_name, int try_sio) +{ + int err; + struct dentry *wh_dentry; @@ -32975,7 +33082,7 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + if (!try_sio) + wh_dentry = vfsub_lkup_one(wh_name, h_ppath); + else -+ wh_dentry = au_sio_lkup_one(wh_name, h_ppath); ++ wh_dentry = au_sio_lkup_one(h_userns, wh_name, h_ppath); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) { + if (err == -ENAMETOOLONG) @@ -33004,14 +33111,14 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c +/* + * test if the @h_path->dentry sets opaque or not. + */ -+int au_diropq_test(struct path *h_path) ++int au_diropq_test(struct user_namespace *h_userns, struct path *h_path) +{ + int err; + struct inode *h_dir; + + h_dir = d_inode(h_path->dentry); -+ err = au_wh_test(h_path, &diropq_name, -+ au_test_h_perm_sio(h_dir, MAY_EXEC)); ++ err = au_wh_test(h_userns, h_path, &diropq_name, ++ au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC)); + return err; +} + @@ -33029,6 +33136,7 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + static unsigned short cnt; + struct qstr qs; + struct path h_ppath; ++ struct user_namespace *h_userns; + + BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN); + @@ -33054,10 +33162,11 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + + h_ppath.dentry = h_parent; + h_ppath.mnt = au_br_mnt(br); ++ h_userns = au_br_userns(br); + qs.name = name; + for (i = 0; i < 3; i++) { + sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++); -+ dentry = au_sio_lkup_one(&qs, &h_ppath); ++ dentry = au_sio_lkup_one(h_userns, &qs, &h_ppath); + if (IS_ERR(dentry) || d_is_negative(dentry)) + goto out_name; + dput(dentry); @@ -33654,9 +33763,12 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + unsigned int flags) +{ + struct dentry *diropq, *h_dentry; ++ struct user_namespace *h_userns; + ++ h_userns = au_sbr_userns(dentry->d_sb, bindex); + h_dentry = au_h_dptr(dentry, bindex); -+ if (!au_test_h_perm_sio(d_inode(h_dentry), MAY_EXEC | MAY_WRITE)) ++ if (!au_test_h_perm_sio(h_userns, d_inode(h_dentry), ++ MAY_EXEC | MAY_WRITE)) + diropq = do_diropq(dentry, bindex, flags); + else { + int wkq_err; @@ -33844,6 +33956,7 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + struct path wh_path; + struct inode *wh_inode, *h_dir; + struct au_branch *br; ++ struct user_namespace *h_userns; + + h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ + IMustLock(h_dir); @@ -33851,6 +33964,7 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + br = au_sbr(dir->i_sb, bindex); + wh_path.dentry = wh_dentry; + wh_path.mnt = au_br_mnt(br); ++ h_userns = au_br_userns(br); + wh_inode = d_inode(wh_dentry); + inode_lock_nested(wh_inode, AuLsc_I_CHILD); + @@ -33858,7 +33972,7 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + * someone else might change some whiteouts while we were sleeping. + * it means this whlist may have an obsoleted entry. + */ -+ if (!au_test_h_perm_sio(wh_inode, MAY_EXEC | MAY_WRITE)) ++ if (!au_test_h_perm_sio(h_userns, wh_inode, MAY_EXEC | MAY_WRITE)) + err = del_wh_children(&wh_path, whlist, bindex); + else { + int wkq_err; @@ -33965,10 +34079,10 @@ diff -Naur linux-5.10/fs/aufs/whout.c aufs5-linux-aufs5.10/fs/aufs/whout.c + au_whtmp_rmdir_free(args); + } +} -diff -Naur linux-5.10/fs/aufs/whout.h aufs5-linux-aufs5.10/fs/aufs/whout.h ---- linux-5.10/fs/aufs/whout.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/whout.h 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,73 @@ +diff -Naur linux-5.15/fs/aufs/whout.h aufs5-linux-aufs5.15/fs/aufs/whout.h +--- linux-5.15/fs/aufs/whout.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/whout.h 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2021 Junjiro R. Okajima @@ -33987,8 +34101,9 @@ diff -Naur linux-5.10/fs/aufs/whout.h aufs5-linux-aufs5.10/fs/aufs/whout.h + +/* whout.c */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name); -+int au_wh_test(struct path *h_ppath, struct qstr *wh_name, int try_sio); -+int au_diropq_test(struct path *h_path); ++int au_wh_test(struct user_namespace *h_userns, struct path *h_ppath, ++ struct qstr *wh_name, int try_sio); ++int au_diropq_test(struct user_namespace *h_userns, struct path *h_path); +struct au_branch; +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix); @@ -34042,9 +34157,9 @@ diff -Naur linux-5.10/fs/aufs/whout.h aufs5-linux-aufs5.10/fs/aufs/whout.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ -diff -Naur linux-5.10/fs/aufs/wkq.c aufs5-linux-aufs5.10/fs/aufs/wkq.c ---- linux-5.10/fs/aufs/wkq.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/wkq.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/wkq.c aufs5-linux-aufs5.15/fs/aufs/wkq.c +--- linux-5.15/fs/aufs/wkq.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/wkq.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,359 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -34405,9 +34520,9 @@ diff -Naur linux-5.10/fs/aufs/wkq.c aufs5-linux-aufs5.10/fs/aufs/wkq.c + + return err; +} -diff -Naur linux-5.10/fs/aufs/wkq.h aufs5-linux-aufs5.10/fs/aufs/wkq.h ---- linux-5.10/fs/aufs/wkq.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/wkq.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/wkq.h aufs5-linux-aufs5.15/fs/aufs/wkq.h +--- linux-5.15/fs/aufs/wkq.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/wkq.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,76 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -34485,10 +34600,10 @@ diff -Naur linux-5.10/fs/aufs/wkq.h aufs5-linux-aufs5.10/fs/aufs/wkq.h + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ -diff -Naur linux-5.10/fs/aufs/xattr.c aufs5-linux-aufs5.10/fs/aufs/xattr.c ---- linux-5.10/fs/aufs/xattr.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/xattr.c 2022-03-07 10:18:47.000000000 +0300 -@@ -0,0 +1,343 @@ +diff -Naur linux-5.15/fs/aufs/xattr.c aufs5-linux-aufs5.15/fs/aufs/xattr.c +--- linux-5.15/fs/aufs/xattr.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/xattr.c 2022-03-07 13:48:09.000000000 +0300 +@@ -0,0 +1,355 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2014-2021 Junjiro R. Okajima @@ -34542,21 +34657,26 @@ diff -Naur linux-5.10/fs/aufs/xattr.c aufs5-linux-aufs5.10/fs/aufs/xattr.c + +static const int au_xattr_out_of_list = AuBrAttr_ICEX_OTH << 1; + -+static int au_do_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, ++static int au_do_cpup_xattr(struct path *h_dst, struct path *h_src, + char *name, char **buf, unsigned int ignore_flags, + unsigned int verbose) +{ + int err; + ssize_t ssz; + struct inode *h_idst; ++ struct dentry *h_dst_dentry, *h_src_dentry; ++ struct user_namespace *h_dst_userns, *h_src_userns; + -+ ssz = vfs_getxattr_alloc(h_src, name, buf, 0, GFP_NOFS); ++ h_src_userns = mnt_user_ns(h_src->mnt); ++ h_src_dentry = h_src->dentry; ++ ssz = vfs_getxattr_alloc(h_src_userns, h_src_dentry, name, buf, 0, ++ GFP_NOFS); + err = ssz; + if (unlikely(err <= 0)) { + if (err == -ENODATA + || (err == -EOPNOTSUPP + && ((ignore_flags & au_xattr_out_of_list) -+ || (au_test_nfs_noacl(d_inode(h_src)) ++ || (au_test_nfs_noacl(d_inode(h_src_dentry)) + && (!strcmp(name, XATTR_NAME_POSIX_ACL_ACCESS) + || !strcmp(name, + XATTR_NAME_POSIX_ACL_DEFAULT)))) @@ -34568,9 +34688,12 @@ diff -Naur linux-5.10/fs/aufs/xattr.c aufs5-linux-aufs5.10/fs/aufs/xattr.c + } + + /* unlock it temporary */ -+ h_idst = d_inode(h_dst); ++ h_dst_userns = mnt_user_ns(h_dst->mnt); ++ h_dst_dentry = h_dst->dentry; ++ h_idst = d_inode(h_dst_dentry); + inode_unlock(h_idst); -+ err = vfsub_setxattr(h_dst, name, *buf, ssz, /*flags*/0); ++ err = vfsub_setxattr(h_dst_userns, h_dst_dentry, name, *buf, ssz, ++ /*flags*/0); + inode_lock_nested(h_idst, AuLsc_I_CHILD2); + if (unlikely(err)) { + if (verbose || au_debug_test()) @@ -34582,25 +34705,28 @@ diff -Naur linux-5.10/fs/aufs/xattr.c aufs5-linux-aufs5.10/fs/aufs/xattr.c + return err; +} + -+int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags, ++int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags, + unsigned int verbose) +{ + int err, unlocked, acl_access, acl_default; + ssize_t ssz; ++ struct dentry *h_dst_dentry, *h_src_dentry; + struct inode *h_isrc, *h_idst; + char *value, *p, *o, *e; + + /* try stopping to update the source inode while we are referencing */ + /* there should not be the parent-child relationship between them */ -+ h_isrc = d_inode(h_src); -+ h_idst = d_inode(h_dst); ++ h_dst_dentry = h_dst->dentry; ++ h_idst = d_inode(h_dst_dentry); ++ h_src_dentry = h_src->dentry; ++ h_isrc = d_inode(h_src_dentry); + inode_unlock(h_idst); + inode_lock_shared_nested(h_isrc, AuLsc_I_CHILD); + inode_lock_nested(h_idst, AuLsc_I_CHILD2); + unlocked = 0; + + /* some filesystems don't list POSIX ACL, for example tmpfs */ -+ ssz = vfs_listxattr(h_src, NULL, 0); ++ ssz = vfs_listxattr(h_src_dentry, NULL, 0); + err = ssz; + if (unlikely(err < 0)) { + AuTraceErr(err); @@ -34619,7 +34745,7 @@ diff -Naur linux-5.10/fs/aufs/xattr.c aufs5-linux-aufs5.10/fs/aufs/xattr.c + o = p; + if (unlikely(!p)) + goto out; -+ err = vfs_listxattr(h_src, p, ssz); ++ err = vfs_listxattr(h_src_dentry, p, ssz); + } + inode_unlock_shared(h_isrc); + unlocked = 1; @@ -34733,7 +34859,7 @@ diff -Naur linux-5.10/fs/aufs/xattr.c aufs5-linux-aufs5.10/fs/aufs/xattr.c + break; + case AU_XATTR_GET: + AuDebugOn(d_is_negative(h_path.dentry)); -+ err = vfs_getxattr(h_path.dentry, ++ err = vfs_getxattr(mnt_user_ns(h_path.mnt), h_path.dentry, + arg->u.get.name, arg->u.get.value, + arg->u.get.size); + break; @@ -34805,6 +34931,7 @@ diff -Naur linux-5.10/fs/aufs/xattr.c aufs5-linux-aufs5.10/fs/aufs/xattr.c +} + +static int au_xattr_set(const struct xattr_handler *handler, ++ struct user_namespace *userns, + struct dentry *dentry, struct inode *inode, + const char *name, const void *value, size_t size, + int flags) @@ -34832,9 +34959,9 @@ diff -Naur linux-5.10/fs/aufs/xattr.c aufs5-linux-aufs5.10/fs/aufs/xattr.c +{ + sb->s_xattr = au_xattr_handlers; +} -diff -Naur linux-5.10/fs/aufs/xino.c aufs5-linux-aufs5.10/fs/aufs/xino.c ---- linux-5.10/fs/aufs/xino.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/aufs/xino.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/aufs/xino.c aufs5-linux-aufs5.15/fs/aufs/xino.c +--- linux-5.15/fs/aufs/xino.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/aufs/xino.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,1913 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -35084,7 +35211,7 @@ diff -Naur linux-5.10/fs/aufs/xino.c aufs5-linux-aufs5.10/fs/aufs/xino.c + } + + /* no need to mnt_want_write() since we call dentry_open() later */ -+ err = vfs_create(dir, path.dentry, 0666, NULL); ++ err = vfs_create(mnt_user_ns(base->mnt), dir, path.dentry, 0666, NULL); + if (unlikely(err)) { + file = ERR_PTR(err); + pr_err("%pd create err %d\n", dentry, err); @@ -36749,10 +36876,10 @@ diff -Naur linux-5.10/fs/aufs/xino.c aufs5-linux-aufs5.10/fs/aufs/xino.c +out: + return err; +} -diff -Naur linux-5.10/fs/dcache.c aufs5-linux-aufs5.10/fs/dcache.c ---- linux-5.10/fs/dcache.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/dcache.c 2022-03-07 10:18:47.000000000 +0300 -@@ -1285,7 +1285,7 @@ +diff -Naur linux-5.15/fs/dcache.c aufs5-linux-aufs5.15/fs/dcache.c +--- linux-5.15/fs/dcache.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/dcache.c 2022-03-07 13:48:09.000000000 +0300 +@@ -1320,7 +1320,7 @@ * * The @enter() callbacks are called with d_lock held. */ @@ -36761,10 +36888,10 @@ diff -Naur linux-5.10/fs/dcache.c aufs5-linux-aufs5.10/fs/dcache.c enum d_walk_ret (*enter)(void *, struct dentry *)) { struct dentry *this_parent; -diff -Naur linux-5.10/fs/fcntl.c aufs5-linux-aufs5.10/fs/fcntl.c ---- linux-5.10/fs/fcntl.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/fcntl.c 2022-03-07 10:18:47.000000000 +0300 -@@ -32,7 +32,7 @@ +diff -Naur linux-5.15/fs/fcntl.c aufs5-linux-aufs5.15/fs/fcntl.c +--- linux-5.15/fs/fcntl.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/fcntl.c 2022-03-07 13:48:09.000000000 +0300 +@@ -33,7 +33,7 @@ #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) @@ -36773,7 +36900,7 @@ diff -Naur linux-5.10/fs/fcntl.c aufs5-linux-aufs5.10/fs/fcntl.c { struct inode * inode = file_inode(filp); int error = 0; -@@ -63,6 +63,8 @@ +@@ -64,6 +64,8 @@ if (filp->f_op->check_flags) error = filp->f_op->check_flags(arg); @@ -36782,10 +36909,10 @@ diff -Naur linux-5.10/fs/fcntl.c aufs5-linux-aufs5.10/fs/fcntl.c if (error) return error; -diff -Naur linux-5.10/fs/Kconfig aufs5-linux-aufs5.10/fs/Kconfig ---- linux-5.10/fs/Kconfig 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/Kconfig 2022-03-07 10:18:47.000000000 +0300 -@@ -288,6 +288,7 @@ +diff -Naur linux-5.15/fs/Kconfig aufs5-linux-aufs5.15/fs/Kconfig +--- linux-5.15/fs/Kconfig 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/Kconfig 2022-03-07 13:48:09.000000000 +0300 +@@ -312,6 +312,7 @@ source "fs/ufs/Kconfig" source "fs/erofs/Kconfig" source "fs/vboxsf/Kconfig" @@ -36793,18 +36920,18 @@ diff -Naur linux-5.10/fs/Kconfig aufs5-linux-aufs5.10/fs/Kconfig endif # MISC_FILESYSTEMS -diff -Naur linux-5.10/fs/Makefile aufs5-linux-aufs5.10/fs/Makefile ---- linux-5.10/fs/Makefile 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/Makefile 2022-03-07 10:18:47.000000000 +0300 -@@ -136,3 +136,4 @@ +diff -Naur linux-5.15/fs/Makefile aufs5-linux-aufs5.15/fs/Makefile +--- linux-5.15/fs/Makefile 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/Makefile 2022-03-07 13:48:09.000000000 +0300 +@@ -138,3 +138,4 @@ obj-$(CONFIG_EROFS_FS) += erofs/ obj-$(CONFIG_VBOXSF_FS) += vboxsf/ obj-$(CONFIG_ZONEFS_FS) += zonefs/ +obj-$(CONFIG_AUFS_FS) += aufs/ -diff -Naur linux-5.10/fs/namespace.c aufs5-linux-aufs5.10/fs/namespace.c ---- linux-5.10/fs/namespace.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/namespace.c 2022-03-07 10:18:47.000000000 +0300 -@@ -792,6 +792,12 @@ +diff -Naur linux-5.15/fs/namespace.c aufs5-linux-aufs5.15/fs/namespace.c +--- linux-5.15/fs/namespace.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/namespace.c 2022-03-07 13:48:09.000000000 +0300 +@@ -808,6 +808,12 @@ return mnt->mnt_ns == current->nsproxy->mnt_ns; } @@ -36817,10 +36944,10 @@ diff -Naur linux-5.10/fs/namespace.c aufs5-linux-aufs5.10/fs/namespace.c /* * vfsmount lock must be held for write */ -diff -Naur linux-5.10/fs/proc/base.c aufs5-linux-aufs5.10/fs/proc/base.c ---- linux-5.10/fs/proc/base.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/proc/base.c 2022-03-07 10:18:47.000000000 +0300 -@@ -2184,7 +2184,7 @@ +diff -Naur linux-5.15/fs/proc/base.c aufs5-linux-aufs5.15/fs/proc/base.c +--- linux-5.15/fs/proc/base.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/proc/base.c 2022-03-07 13:48:09.000000000 +0300 +@@ -2186,7 +2186,7 @@ rc = -ENOENT; vma = find_exact_vma(mm, vm_start, vm_end); if (vma && vma->vm_file) { @@ -36829,9 +36956,9 @@ diff -Naur linux-5.10/fs/proc/base.c aufs5-linux-aufs5.10/fs/proc/base.c path_get(path); rc = 0; } -diff -Naur linux-5.10/fs/proc/nommu.c aufs5-linux-aufs5.10/fs/proc/nommu.c ---- linux-5.10/fs/proc/nommu.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/proc/nommu.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/proc/nommu.c aufs5-linux-aufs5.15/fs/proc/nommu.c +--- linux-5.15/fs/proc/nommu.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/proc/nommu.c 2022-03-07 13:48:09.000000000 +0300 @@ -40,7 +40,10 @@ file = region->vm_file; @@ -36844,9 +36971,9 @@ diff -Naur linux-5.10/fs/proc/nommu.c aufs5-linux-aufs5.10/fs/proc/nommu.c dev = inode->i_sb->s_dev; ino = inode->i_ino; } -diff -Naur linux-5.10/fs/proc/task_mmu.c aufs5-linux-aufs5.10/fs/proc/task_mmu.c ---- linux-5.10/fs/proc/task_mmu.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/proc/task_mmu.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/proc/task_mmu.c aufs5-linux-aufs5.15/fs/proc/task_mmu.c +--- linux-5.15/fs/proc/task_mmu.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/proc/task_mmu.c 2022-03-07 13:48:09.000000000 +0300 @@ -280,7 +280,10 @@ const char *name = NULL; @@ -36859,7 +36986,7 @@ diff -Naur linux-5.10/fs/proc/task_mmu.c aufs5-linux-aufs5.10/fs/proc/task_mmu.c dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; -@@ -1855,7 +1858,7 @@ +@@ -1865,7 +1868,7 @@ struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; @@ -36868,9 +36995,9 @@ diff -Naur linux-5.10/fs/proc/task_mmu.c aufs5-linux-aufs5.10/fs/proc/task_mmu.c struct mm_struct *mm = vma->vm_mm; struct mempolicy *pol; char buffer[64]; -diff -Naur linux-5.10/fs/proc/task_nommu.c aufs5-linux-aufs5.10/fs/proc/task_nommu.c ---- linux-5.10/fs/proc/task_nommu.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/proc/task_nommu.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/proc/task_nommu.c aufs5-linux-aufs5.15/fs/proc/task_nommu.c +--- linux-5.15/fs/proc/task_nommu.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/proc/task_nommu.c 2022-03-07 13:48:09.000000000 +0300 @@ -155,7 +155,10 @@ file = vma->vm_file; @@ -36883,10 +37010,10 @@ diff -Naur linux-5.10/fs/proc/task_nommu.c aufs5-linux-aufs5.10/fs/proc/task_nom dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; -diff -Naur linux-5.10/fs/splice.c aufs5-linux-aufs5.10/fs/splice.c ---- linux-5.10/fs/splice.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/splice.c 2022-03-07 10:18:47.000000000 +0300 -@@ -756,8 +756,8 @@ +diff -Naur linux-5.15/fs/splice.c aufs5-linux-aufs5.15/fs/splice.c +--- linux-5.15/fs/splice.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/splice.c 2022-03-07 13:48:09.000000000 +0300 +@@ -759,8 +759,8 @@ /* * Attempt to initiate a splice from pipe to file. */ @@ -36897,7 +37024,7 @@ diff -Naur linux-5.10/fs/splice.c aufs5-linux-aufs5.10/fs/splice.c { if (unlikely(!out->f_op->splice_write)) return warn_unsupported(out, "write"); -@@ -767,9 +767,9 @@ +@@ -770,9 +770,9 @@ /* * Attempt to initiate a splice from a file to a pipe. */ @@ -36908,11 +37035,11 @@ diff -Naur linux-5.10/fs/splice.c aufs5-linux-aufs5.10/fs/splice.c + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) { + unsigned int p_space; int ret; - -diff -Naur linux-5.10/fs/sync.c aufs5-linux-aufs5.10/fs/sync.c ---- linux-5.10/fs/sync.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/sync.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/fs/sync.c aufs5-linux-aufs5.15/fs/sync.c +--- linux-5.15/fs/sync.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/fs/sync.c 2022-03-07 13:48:09.000000000 +0300 @@ -28,7 +28,7 @@ * wait == 1 case since in that case write_inode() functions do * sync_dirty_buffer() and thus effectively write one block at a time. @@ -36922,10 +37049,10 @@ diff -Naur linux-5.10/fs/sync.c aufs5-linux-aufs5.10/fs/sync.c { if (wait) sync_inodes_sb(sb); -diff -Naur linux-5.10/include/linux/fs.h aufs5-linux-aufs5.10/include/linux/fs.h ---- linux-5.10/include/linux/fs.h 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/include/linux/fs.h 2022-03-07 10:18:47.000000000 +0300 -@@ -1332,6 +1332,7 @@ +diff -Naur linux-5.15/include/linux/fs.h aufs5-linux-aufs5.15/include/linux/fs.h +--- linux-5.15/include/linux/fs.h 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/include/linux/fs.h 2022-03-07 13:48:09.000000000 +0300 +@@ -1381,6 +1381,7 @@ /* can be called from interrupts */ extern void kill_fasync(struct fasync_struct **, int, int); @@ -36933,7 +37060,7 @@ diff -Naur linux-5.10/include/linux/fs.h aufs5-linux-aufs5.10/include/linux/fs.h extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); -@@ -1843,6 +1844,7 @@ +@@ -2092,6 +2093,7 @@ ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); @@ -36941,7 +37068,7 @@ diff -Naur linux-5.10/include/linux/fs.h aufs5-linux-aufs5.10/include/linux/fs.h int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); -@@ -2328,6 +2330,7 @@ +@@ -2613,6 +2615,7 @@ extern void ihold(struct inode * inode); extern void iput(struct inode *); extern int generic_update_time(struct inode *, struct timespec64 *, int); @@ -36949,7 +37076,7 @@ diff -Naur linux-5.10/include/linux/fs.h aufs5-linux-aufs5.10/include/linux/fs.h /* /sys/fs */ extern struct kobject *fs_kobj; -@@ -2564,6 +2567,7 @@ +@@ -2776,6 +2779,7 @@ } void emergency_thaw_all(void); @@ -36957,10 +37084,10 @@ diff -Naur linux-5.10/include/linux/fs.h aufs5-linux-aufs5.10/include/linux/fs.h extern int sync_filesystem(struct super_block *); extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; -diff -Naur linux-5.10/include/linux/lockdep.h aufs5-linux-aufs5.10/include/linux/lockdep.h ---- linux-5.10/include/linux/lockdep.h 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/include/linux/lockdep.h 2022-03-07 10:18:47.000000000 +0300 -@@ -241,6 +241,8 @@ +diff -Naur linux-5.15/include/linux/lockdep.h aufs5-linux-aufs5.15/include/linux/lockdep.h +--- linux-5.15/include/linux/lockdep.h 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/include/linux/lockdep.h 2022-03-07 13:48:09.000000000 +0300 +@@ -248,6 +248,8 @@ return lock->key == key; } @@ -36969,18 +37096,10 @@ diff -Naur linux-5.10/include/linux/lockdep.h aufs5-linux-aufs5.10/include/linux /* * Acquire a lock. * -@@ -375,6 +377,7 @@ - - #define lockdep_depth(tsk) (0) - -+#define lockdep_is_held(lock) (1) - #define lockdep_is_held_type(l, r) (1) - - #define lockdep_assert_held(l) do { (void)(l); } while (0) -diff -Naur linux-5.10/include/linux/mm.h aufs5-linux-aufs5.10/include/linux/mm.h ---- linux-5.10/include/linux/mm.h 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/include/linux/mm.h 2022-03-07 10:18:47.000000000 +0300 -@@ -1712,6 +1712,28 @@ +diff -Naur linux-5.15/include/linux/mm.h aufs5-linux-aufs5.15/include/linux/mm.h +--- linux-5.15/include/linux/mm.h 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/include/linux/mm.h 2022-03-07 13:48:09.000000000 +0300 +@@ -1806,6 +1806,28 @@ unmap_mapping_range(mapping, holebegin, holelen, 0); } @@ -37009,10 +37128,10 @@ diff -Naur linux-5.10/include/linux/mm.h aufs5-linux-aufs5.10/include/linux/mm.h extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, unsigned int gup_flags); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, -diff -Naur linux-5.10/include/linux/mm_types.h aufs5-linux-aufs5.10/include/linux/mm_types.h ---- linux-5.10/include/linux/mm_types.h 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/include/linux/mm_types.h 2022-03-07 10:18:47.000000000 +0300 -@@ -280,6 +280,7 @@ +diff -Naur linux-5.15/include/linux/mm_types.h aufs5-linux-aufs5.15/include/linux/mm_types.h +--- linux-5.15/include/linux/mm_types.h 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/include/linux/mm_types.h 2022-03-07 13:48:09.000000000 +0300 +@@ -294,6 +294,7 @@ unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ struct file *vm_file; /* the backing file or NULL */ @@ -37020,7 +37139,7 @@ diff -Naur linux-5.10/include/linux/mm_types.h aufs5-linux-aufs5.10/include/linu int vm_usage; /* region usage count (access under nommu_region_sem) */ bool vm_icache_flushed : 1; /* true if the icache has been flushed for -@@ -359,6 +360,7 @@ +@@ -373,6 +374,7 @@ unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units */ struct file * vm_file; /* File we map to (can be NULL). */ @@ -37028,9 +37147,9 @@ diff -Naur linux-5.10/include/linux/mm_types.h aufs5-linux-aufs5.10/include/linu void * vm_private_data; /* was vm_pte (shared mem) */ #ifdef CONFIG_SWAP -diff -Naur linux-5.10/include/linux/mnt_namespace.h aufs5-linux-aufs5.10/include/linux/mnt_namespace.h ---- linux-5.10/include/linux/mnt_namespace.h 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/include/linux/mnt_namespace.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/include/linux/mnt_namespace.h aufs5-linux-aufs5.15/include/linux/mnt_namespace.h +--- linux-5.15/include/linux/mnt_namespace.h 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/include/linux/mnt_namespace.h 2022-03-07 13:48:09.000000000 +0300 @@ -7,12 +7,15 @@ struct fs_struct; struct user_namespace; @@ -37047,9 +37166,9 @@ diff -Naur linux-5.10/include/linux/mnt_namespace.h aufs5-linux-aufs5.10/include extern const struct file_operations proc_mounts_operations; extern const struct file_operations proc_mountinfo_operations; extern const struct file_operations proc_mountstats_operations; -diff -Naur linux-5.10/include/linux/splice.h aufs5-linux-aufs5.10/include/linux/splice.h ---- linux-5.10/include/linux/splice.h 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/include/linux/splice.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/include/linux/splice.h aufs5-linux-aufs5.15/include/linux/splice.h +--- linux-5.15/include/linux/splice.h 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/include/linux/splice.h 2022-03-07 13:48:09.000000000 +0300 @@ -93,4 +93,10 @@ extern const struct pipe_buf_operations page_cache_pipe_buf_ops; @@ -37061,9 +37180,9 @@ diff -Naur linux-5.10/include/linux/splice.h aufs5-linux-aufs5.10/include/linux/ + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif -diff -Naur linux-5.10/include/uapi/linux/aufs_type.h aufs5-linux-aufs5.10/include/uapi/linux/aufs_type.h ---- linux-5.10/include/uapi/linux/aufs_type.h 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/include/uapi/linux/aufs_type.h 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/include/uapi/linux/aufs_type.h aufs5-linux-aufs5.15/include/uapi/linux/aufs_type.h +--- linux-5.15/include/uapi/linux/aufs_type.h 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/include/uapi/linux/aufs_type.h 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,439 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* @@ -37094,7 +37213,7 @@ diff -Naur linux-5.10/include/uapi/linux/aufs_type.h aufs5-linux-aufs5.10/includ +#include +#endif /* __KERNEL__ */ + -+#define AUFS_VERSION "5.10" ++#define AUFS_VERSION "5.15" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') @@ -37504,22 +37623,22 @@ diff -Naur linux-5.10/include/uapi/linux/aufs_type.h aufs5-linux-aufs5.10/includ +#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) + +#endif /* __AUFS_TYPE_H__ */ -diff -Naur linux-5.10/kernel/fork.c aufs5-linux-aufs5.10/kernel/fork.c ---- linux-5.10/kernel/fork.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/kernel/fork.c 2022-03-07 10:18:47.000000000 +0300 -@@ -554,7 +554,7 @@ - struct inode *inode = file_inode(file); +diff -Naur linux-5.15/kernel/fork.c aufs5-linux-aufs5.15/kernel/fork.c +--- linux-5.15/kernel/fork.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/kernel/fork.c 2022-03-07 13:48:09.000000000 +0300 +@@ -573,7 +573,7 @@ + if (file) { struct address_space *mapping = file->f_mapping; - get_file(file); + vma_get_file(tmp); - if (tmp->vm_flags & VM_DENYWRITE) - put_write_access(inode); i_mmap_lock_write(mapping); -diff -Naur linux-5.10/kernel/locking/lockdep.c aufs5-linux-aufs5.10/kernel/locking/lockdep.c ---- linux-5.10/kernel/locking/lockdep.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/kernel/locking/lockdep.c 2022-03-07 10:18:47.000000000 +0300 -@@ -188,7 +188,7 @@ + if (tmp->vm_flags & VM_SHARED) + mapping_allow_writable(mapping); +diff -Naur linux-5.15/kernel/locking/lockdep.c aufs5-linux-aufs5.15/kernel/locking/lockdep.c +--- linux-5.15/kernel/locking/lockdep.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/kernel/locking/lockdep.c 2022-03-07 13:48:09.000000000 +0300 +@@ -189,7 +189,7 @@ struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; static DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS); @@ -37528,7 +37647,7 @@ diff -Naur linux-5.10/kernel/locking/lockdep.c aufs5-linux-aufs5.10/kernel/locki { unsigned int class_idx = hlock->class_idx; -@@ -209,6 +209,7 @@ +@@ -210,6 +210,7 @@ */ return lock_classes + class_idx; } @@ -37536,12 +37655,12 @@ diff -Naur linux-5.10/kernel/locking/lockdep.c aufs5-linux-aufs5.10/kernel/locki #ifdef CONFIG_LOCK_STAT static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); -diff -Naur linux-5.10/MAINTAINERS aufs5-linux-aufs5.10/MAINTAINERS ---- linux-5.10/MAINTAINERS 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/MAINTAINERS 2022-03-07 10:18:47.000000000 +0300 -@@ -3009,6 +3009,19 @@ - F: include/uapi/linux/audit.h +diff -Naur linux-5.15/MAINTAINERS aufs5-linux-aufs5.15/MAINTAINERS +--- linux-5.15/MAINTAINERS 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/MAINTAINERS 2022-03-07 13:48:09.000000000 +0300 +@@ -3122,6 +3122,19 @@ F: kernel/audit* + F: lib/*audit.c +AUFS (advanced multi layered unification filesystem) FILESYSTEM +M: "J. R. Okajima" @@ -37557,36 +37676,36 @@ diff -Naur linux-5.10/MAINTAINERS aufs5-linux-aufs5.10/MAINTAINERS +F: include/uapi/linux/aufs_type.h + AUXILIARY DISPLAY DRIVERS - M: Miguel Ojeda Sandonis + M: Miguel Ojeda S: Maintained -diff -Naur linux-5.10/mm/filemap.c aufs5-linux-aufs5.10/mm/filemap.c ---- linux-5.10/mm/filemap.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/mm/filemap.c 2022-03-07 10:18:47.000000000 +0300 -@@ -2909,7 +2909,7 @@ +diff -Naur linux-5.15/mm/filemap.c aufs5-linux-aufs5.15/mm/filemap.c +--- linux-5.15/mm/filemap.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/mm/filemap.c 2022-03-07 13:48:09.000000000 +0300 +@@ -3350,7 +3350,7 @@ vm_fault_t ret = VM_FAULT_LOCKED; - sb_start_pagefault(inode->i_sb); + sb_start_pagefault(mapping->host->i_sb); - file_update_time(vmf->vma->vm_file); + vma_file_update_time(vmf->vma); lock_page(page); - if (page->mapping != inode->i_mapping) { + if (page->mapping != mapping) { unlock_page(page); -diff -Naur linux-5.10/mm/Makefile aufs5-linux-aufs5.10/mm/Makefile ---- linux-5.10/mm/Makefile 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/mm/Makefile 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/mm/Makefile aufs5-linux-aufs5.15/mm/Makefile +--- linux-5.15/mm/Makefile 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/mm/Makefile 2022-03-07 13:48:09.000000000 +0300 @@ -52,7 +52,7 @@ mm_init.o percpu.o slab_common.o \ compaction.o vmacache.o \ interval_tree.o list_lru.o workingset.o \ -- debug.o gup.o $(mmu-y) -+ prfile.o debug.o gup.o $(mmu-y) +- debug.o gup.o mmap_lock.o $(mmu-y) ++ prfile.o debug.o gup.o mmap_lock.o $(mmu-y) # Give 'page_alloc' its own module-parameter namespace page-alloc-y := page_alloc.o -diff -Naur linux-5.10/mm/mmap.c aufs5-linux-aufs5.10/mm/mmap.c ---- linux-5.10/mm/mmap.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/mm/mmap.c 2022-03-07 10:18:47.000000000 +0300 -@@ -179,7 +179,7 @@ +diff -Naur linux-5.15/mm/mmap.c aufs5-linux-aufs5.15/mm/mmap.c +--- linux-5.15/mm/mmap.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/mm/mmap.c 2022-03-07 13:48:09.000000000 +0300 +@@ -183,7 +183,7 @@ if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -37595,7 +37714,7 @@ diff -Naur linux-5.10/mm/mmap.c aufs5-linux-aufs5.10/mm/mmap.c mpol_put(vma_policy(vma)); vm_area_free(vma); return next; -@@ -951,7 +951,7 @@ +@@ -952,7 +952,7 @@ if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); @@ -37604,17 +37723,16 @@ diff -Naur linux-5.10/mm/mmap.c aufs5-linux-aufs5.10/mm/mmap.c } if (next->anon_vma) anon_vma_merge(vma, next); -@@ -1897,8 +1897,8 @@ +@@ -1873,7 +1873,7 @@ return addr; unmap_and_free_vma: +- fput(vma->vm_file); + vma_fput(vma); vma->vm_file = NULL; -- fput(file); /* Undo any partial mapping done by a device driver. */ - unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); -@@ -2757,7 +2757,7 @@ +@@ -2731,7 +2731,7 @@ goto out_free_mpol; if (new->vm_file) @@ -37623,7 +37741,7 @@ diff -Naur linux-5.10/mm/mmap.c aufs5-linux-aufs5.10/mm/mmap.c if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); -@@ -2776,7 +2776,7 @@ +@@ -2750,7 +2750,7 @@ if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) @@ -37632,7 +37750,7 @@ diff -Naur linux-5.10/mm/mmap.c aufs5-linux-aufs5.10/mm/mmap.c unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); -@@ -2969,7 +2969,7 @@ +@@ -2945,7 +2945,7 @@ struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; @@ -37641,9 +37759,9 @@ diff -Naur linux-5.10/mm/mmap.c aufs5-linux-aufs5.10/mm/mmap.c pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n", current->comm, current->pid); -@@ -3044,10 +3044,27 @@ - } - } +@@ -3001,10 +3001,27 @@ + if (vma->vm_flags & VM_LOCKED) + flags |= MAP_LOCKED; - file = get_file(vma->vm_file); + vma_get_file(vma); @@ -37670,7 +37788,7 @@ diff -Naur linux-5.10/mm/mmap.c aufs5-linux-aufs5.10/mm/mmap.c out: mmap_write_unlock(mm); if (populate) -@@ -3334,7 +3351,7 @@ +@@ -3285,7 +3302,7 @@ if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) @@ -37679,10 +37797,10 @@ diff -Naur linux-5.10/mm/mmap.c aufs5-linux-aufs5.10/mm/mmap.c if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); -diff -Naur linux-5.10/mm/nommu.c aufs5-linux-aufs5.10/mm/nommu.c ---- linux-5.10/mm/nommu.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/mm/nommu.c 2022-03-07 10:18:47.000000000 +0300 -@@ -533,7 +533,7 @@ +diff -Naur linux-5.15/mm/nommu.c aufs5-linux-aufs5.15/mm/nommu.c +--- linux-5.15/mm/nommu.c 2021-10-31 23:53:10.000000000 +0300 ++++ aufs5-linux-aufs5.15/mm/nommu.c 2022-03-07 13:48:09.000000000 +0300 +@@ -523,7 +523,7 @@ up_write(&nommu_region_sem); if (region->vm_file) @@ -37691,7 +37809,7 @@ diff -Naur linux-5.10/mm/nommu.c aufs5-linux-aufs5.10/mm/nommu.c /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ -@@ -665,7 +665,7 @@ +@@ -655,7 +655,7 @@ if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -37700,7 +37818,7 @@ diff -Naur linux-5.10/mm/nommu.c aufs5-linux-aufs5.10/mm/nommu.c put_nommu_region(vma->vm_region); vm_area_free(vma); } -@@ -1188,7 +1188,7 @@ +@@ -1175,7 +1175,7 @@ goto error_just_free; } } @@ -37709,7 +37827,7 @@ diff -Naur linux-5.10/mm/nommu.c aufs5-linux-aufs5.10/mm/nommu.c kmem_cache_free(vm_region_jar, region); region = pregion; result = start; -@@ -1265,10 +1265,10 @@ +@@ -1252,10 +1252,10 @@ up_write(&nommu_region_sem); error: if (region->vm_file) @@ -37722,9 +37840,9 @@ diff -Naur linux-5.10/mm/nommu.c aufs5-linux-aufs5.10/mm/nommu.c vm_area_free(vma); return ret; -diff -Naur linux-5.10/mm/prfile.c aufs5-linux-aufs5.10/mm/prfile.c ---- linux-5.10/mm/prfile.c 1970-01-01 03:00:00.000000000 +0300 -+++ aufs5-linux-aufs5.10/mm/prfile.c 2022-03-07 10:18:47.000000000 +0300 +diff -Naur linux-5.15/mm/prfile.c aufs5-linux-aufs5.15/mm/prfile.c +--- linux-5.15/mm/prfile.c 1970-01-01 03:00:00.000000000 +0300 ++++ aufs5-linux-aufs5.15/mm/prfile.c 2022-03-07 13:48:09.000000000 +0300 @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0 +/* diff --git a/0001-Apply-AUFS-5_1.patch b/0001-Apply-AUFS-5_1.patch deleted file mode 100644 index 49c1999..0000000 --- a/0001-Apply-AUFS-5_1.patch +++ /dev/null @@ -1,15 +0,0 @@ -https://github.com/sfjro/aufs5-linux/commit/a4e1cd668aeb906061bb8cd44554ad3f89759a2d -fs/inode.c only - -diff -Naur linux-5.10/fs/inode.c aufs5-linux-aufs5.10/fs/inode.c ---- linux-5.10/fs/inode.c 2020-12-14 01:41:30.000000000 +0300 -+++ aufs5-linux-aufs5.10/fs/inode.c 2022-03-07 10:18:47.000000000 +0300 -@@ -1770,7 +1770,7 @@ - * This does the actual work of updating an inodes time or version. Must have - * had called mnt_want_write() before calling this. - */ --static int update_time(struct inode *inode, struct timespec64 *time, int flags) -+int update_time(struct inode *inode, struct timespec64 *time, int flags) - { - if (inode->i_op->update_time) - return inode->i_op->update_time(inode, time, flags); diff --git a/0001-Revert-kallsyms-unexport-kallsyms_lookup_name-and-ka.patch b/0001-Revert-kallsyms-unexport-kallsyms_lookup_name-and-ka.patch index 2993e68..017301d 100644 --- a/0001-Revert-kallsyms-unexport-kallsyms_lookup_name-and-ka.patch +++ b/0001-Revert-kallsyms-unexport-kallsyms_lookup_name-and-ka.patch @@ -1,6 +1,3 @@ -From 48d6235433c8cffaeb3ede8a0173babf737addaa Mon Sep 17 00:00:00 2001 -From: Mikhail Novosyolov -Date: Fri, 1 Jan 2021 19:03:29 +0300 Subject: [PATCH] Revert "kallsyms: unexport kallsyms_lookup_name() and kallsyms_on_each_symbol()" @@ -9,31 +6,25 @@ https://lwn.net/Articles/813350/ anbox kernel modules require kallsyms_lookup_name(), they are not propietary stuff like e.g. Nvidia, I want it to work more than trying to fight with violations of GPL where I do not have enough power. -Signed-off-by: Mikhail Novosyolov ---- - kernel/kallsyms.c | 2 ++ - 1 file changed, 2 insertions(+) +Update for 5.15.28 diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c -index fe9de067771c..04b58bccbb0d 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c -@@ -176,6 +176,7 @@ unsigned long kallsyms_lookup_name(const char *name) +@@ -203,6 +203,7 @@ } return module_kallsyms_lookup_name(name); } +EXPORT_SYMBOL_GPL(kallsyms_lookup_name); - int kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *, - unsigned long), -@@ -194,6 +195,7 @@ int kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *, + #ifdef CONFIG_LIVEPATCH + /* +@@ -226,6 +227,7 @@ } - return module_kallsyms_on_each_symbol(fn, data); + return 0; } +EXPORT_SYMBOL_GPL(kallsyms_on_each_symbol); + #endif /* CONFIG_LIVEPATCH */ static unsigned long get_symbol_pos(unsigned long addr, - unsigned long *symbolsize, --- -2.30.0 diff --git a/0001-altha.patch b/0001-altha.patch new file mode 100644 index 0000000..1df45ba --- /dev/null +++ b/0001-altha.patch @@ -0,0 +1,1172 @@ + Documentation/admin-guide/LSM/AltHa.rst | 101 +++++++++ + Documentation/admin-guide/LSM/index.rst | 1 + + security/Kconfig | 4 +- + security/Makefile | 2 + + security/altha/Kconfig | 11 + + security/altha/Makefile | 3 + + security/altha/altha_lsm.c | 351 ++++++++++++++++++++++++++++++++ + security/kiosk/Kconfig | 9 + + security/kiosk/Makefile | 3 + + security/kiosk/kiosk-test.sh | 252 +++++++++++++++++++++++ + security/kiosk/kiosk_lsm.c | 337 ++++++++++++++++++++++++++++++ + 11 files changed, 1073 insertions(+), 1 deletion(-) + +diff --git a/Documentation/admin-guide/LSM/AltHa.rst b/Documentation/admin-guide/LSM/AltHa.rst +new file mode 100644 +index 000000000000..be698709d3f0 +--- /dev/null ++++ b/Documentation/admin-guide/LSM/AltHa.rst +@@ -0,0 +1,101 @@ ++==== ++AltHa ++==== ++ ++AltHa is a Linux Security Module currently has three userspace hardening options: ++ * ignore SUID on binaries (with exceptions possible); ++ * prevent running selected script interpreters in interactive mode; ++ * disable open file unlinking in selected dirs. ++ * enable kiosk mode ++ ++ ++It is selectable at build-time with ``CONFIG_SECURITY_ALTHA``, and should be ++enabled in runtime by command line option ``altha=1`` and configured ++through sysctls in ``/proc/sys/kernel/altha``. ++ ++NoSUID ++============ ++Modern Linux systems can be used with minimal (or even zero at least for OWL and ALT) usage of SUID programms, but in many cases in full-featured desktop or server systems there are plenty of them: uncounted and sometimes unnecessary. Privileged programms are always an attack surface, but mounting filesystems with ``nosuid`` flag doesn't provide enough granularity in SUID binaries management. This LSM module provides a single control point for all SUID binaries. When this submodule is enabled, SUID bits on all binaries except explicitly listed are system-wide ignored. ++ ++Sysctl parameters and defaults: ++ ++* ``kernel.altha.nosuid.enabled = 0``, set to 1 to enable ++* ``kernel.altha.nosuid.exceptions =``, colon-separated list of enabled SUID binaries, for example: ``/bin/su:/usr/libexec/hasher-priv/hasher-priv`` ++ ++RestrScript ++============ ++There is a one way to hardening: prevent users from executing ther own arbitrary code. Traditionally it can be done setting on user-writable filesystems ``noexec`` flag. But modern script languages such as Python also can be used to write exploits or even load arbitary machine code via ``dlopen`` and users can start scripts from ``noexec`` filesystem starting interpreter directly. ++Restrscript LSM submodule provides a way to restrict some programms to be executed directly, but allows to execute them as shebang handler. ++ ++Sysctl parameters and defaults: ++ ++* ``kernel.altha.rstrscript.enabled = 0``, set to 1 to enable ++* ``kernel.altha.rstrscript.interpreters =``, colon-separated list of restricted interpreters for example: ``/lib64/ld-linux-x86-64.so.2:/usr/bin/python:/usr/bin/python3:/usr/bin/perl:/usr/bin/tclsh``. Symlinks are supported in both ways: you can set symlink to interpreter as exception and interpreter and all symlinks on it will be restricted. ++ ++Adding ld-linux into blocking list prevents running interpreters via ``ld-linux interpreter``. ++ ++Note: in this configuration all scripts starting with ``#!/usr/bin/env python`` will be blocked. ++ ++OLock ++============ ++Unlink disabling for open files needed for Russian certification, but this is a nasty feature leading to DOS. ++ ++Sysctl parameters and defaults: ++ ++* ``kernel.altha.olock.enabled = 0``, set to 1 to enable ++* ``kernel.altha.olock.dirs =``, colon-separated list of dirs, for example: ``/var/lib/something:/tmp/something``. ++ ++Kiosk ++=========== ++Disable execution for everything and everyone (including system users ++and root, if required) except given whitelists. ++ ++Kiosk interface uses generic netlink framework. ++Interface name: ``altha`` ++ ++Kiosk packet attributes:: ++ ++ static struct nla_policy kiosk_attrs_policy[KIOSK_MAX_ATTR] = { ++ [KIOSK_ACTION] = { ++ .type = NLA_S16, ++ }, ++ [KIOSK_DATA] = { ++ .type = NLA_STRING, ++ .maxlen = MAX_DATA /* 1024 */ ++ }, ++ }; ++ ++Possible kiosk modes:: ++ ++ enum kiosk_mode { ++ KIOSK_PERMISSIVE = 0, /* kiosk is disabled */ ++ KIOSK_NONSYSTEM, /* kiosk is enabled for users with uid >= 500 */ ++ KIOSK_ALL, /* kiosk is enabled for all users */ ++ }; ++ ++In ``KIOSK_ALL`` mode root will be restricted if running from tty ++Otherwise application will be executed anyway, ++enabling the system to boot without garbage in whitelists. ++ ++Possible kiosk actions:: ++ ++ enum altha_kiosk_action { ++ KIOSK_SET_MODE = 0, /* set or get mode, see below */ ++ KIOSK_USERLIST_ADD, /* add app to user whitelist */ ++ KIOSK_USERLIST_DEL, /* remove app from user whitelist */ ++ KIOSK_SYSLIST_ADD, /* add app to system whitelist */ ++ KIOSK_SYSLIST_DEL, /* remove app from system whitelist */ ++ KIOSK_USER_LIST, /* retrieve user whitelist, see below */ ++ KIOSK_SYSTEM_LIST, /* retrieve system whitelist */ ++ }; ++ ++``KIOSK_ACTION`` attribute is used. ++ ++``SET_MODE`` action will send current mode if ``KIOSK_DATA`` is empty. ++ ++When ``KIOSK_USER_LIST`` or ``KIOSK_SYSTEM_LIST`` action is requested, kernel sends ++the first item from the list and waits for another request. ++When end of list is reached, it sends an empty string and it will be safe ++for client to request another list. ++ ++``LD_*`` cheats will not be applied when kiosk is activated. +diff --git a/Documentation/admin-guide/LSM/index.rst b/Documentation/admin-guide/LSM/index.rst +index a6ba95fbaa9f..20b57e7adadd 100644 +--- a/Documentation/admin-guide/LSM/index.rst ++++ b/Documentation/admin-guide/LSM/index.rst +@@ -47,3 +47,4 @@ subdirectories. + tomoyo + Yama + SafeSetID ++ AltHa +diff --git a/security/Kconfig b/security/Kconfig +index 0ced7fd33e4d..42a72aa188dd 100644 +--- a/security/Kconfig ++++ b/security/Kconfig +@@ -239,6 +239,8 @@ source "security/yama/Kconfig" + source "security/safesetid/Kconfig" + source "security/lockdown/Kconfig" + source "security/landlock/Kconfig" ++source "security/altha/Kconfig" ++source "security/kiosk/Kconfig" + + source "security/integrity/Kconfig" + +@@ -282,7 +284,7 @@ config LSM + default "landlock,lockdown,yama,loadpin,safesetid,integrity,apparmor,selinux,smack,tomoyo,bpf" if DEFAULT_SECURITY_APPARMOR + default "landlock,lockdown,yama,loadpin,safesetid,integrity,tomoyo,bpf" if DEFAULT_SECURITY_TOMOYO + default "landlock,lockdown,yama,loadpin,safesetid,integrity,bpf" if DEFAULT_SECURITY_DAC +- default "landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf" ++ default "landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf,altha,kiosk" + help + A comma-separated list of LSMs, in initialization order. + Any LSMs left off this list will be ignored. This can be +diff --git a/security/Makefile b/security/Makefile +index 18121f8f85cd..4fb7ea65d2c9 100644 +--- a/security/Makefile ++++ b/security/Makefile +@@ -24,6 +24,8 @@ obj-$(CONFIG_SECURITY_LOCKDOWN_LSM) += lockdown/ + obj-$(CONFIG_CGROUPS) += device_cgroup.o + obj-$(CONFIG_BPF_LSM) += bpf/ + obj-$(CONFIG_SECURITY_LANDLOCK) += landlock/ ++obj-$(CONFIG_SECURITY_ALTHA) += altha/ ++obj-$(CONFIG_SECURITY_KIOSK) += kiosk/ + + # Object integrity file lists + obj-$(CONFIG_INTEGRITY) += integrity/ +diff --git a/security/altha/Kconfig b/security/altha/Kconfig +new file mode 100644 +index 000000000000..4bafdef4e58e +--- /dev/null ++++ b/security/altha/Kconfig +@@ -0,0 +1,11 @@ ++config SECURITY_ALTHA ++ bool "AltHa security module" ++ depends on SECURITY ++ default n ++ help ++ Some hardening options: ++ * ignore SUID on binaries (with exceptions possible); ++ * prevent running selected script interprers in interactive move; ++ * WxorX for filesystems (with exceptions possible); ++ ++ If you are unsure how to answer this question, answer N. +diff --git a/security/altha/Makefile b/security/altha/Makefile +new file mode 100644 +index 000000000000..56735b157567 +--- /dev/null ++++ b/security/altha/Makefile +@@ -0,0 +1,3 @@ ++obj-$(CONFIG_SECURITY_ALTHA) := altha.o ++ ++altha-y := altha_lsm.o +diff --git a/security/altha/altha_lsm.c b/security/altha/altha_lsm.c +new file mode 100644 +index 000000000000..c670ad7ed458 +--- /dev/null ++++ b/security/altha/altha_lsm.c +@@ -0,0 +1,351 @@ ++/* ++ * AltHa Linux Security Module ++ * ++ * Author: Anton Boyarshinov ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2, as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define ALTHA_PARAMS_SIZE 4096 ++char proc_nosuid_exceptions[ALTHA_PARAMS_SIZE]; ++char proc_interpreters[ALTHA_PARAMS_SIZE]; ++char proc_olock_dirs[ALTHA_PARAMS_SIZE]; ++ ++/* Boot time disable flag */ ++static bool altha_enabled = 0; ++ ++/* sysctl flags */ ++static int nosuid_enabled; ++static int rstrscript_enabled; ++static int olock_enabled; ++ ++/* Boot parameter handing */ ++module_param_named(enabled, altha_enabled, bool, S_IRUGO); ++ ++static int __init altha_enabled_setup(char *str) ++{ ++ unsigned long enabled; ++ int error = kstrtoul(str, 0, &enabled); ++ if (!error) ++ altha_enabled = enabled ? 1 : 0; ++ return 1; ++} ++ ++__setup("altha=", altha_enabled_setup); ++ ++struct altha_list_struct { ++ struct path path; ++ char * spath; ++ char * spath_p; ++ struct list_head list; ++}; ++ ++/* Lists handling */ ++DECLARE_RWSEM(nosuid_exceptions_sem); ++DECLARE_RWSEM(interpreters_sem); ++DECLARE_RWSEM(olock_dirs_sem); ++LIST_HEAD(nosuid_exceptions_list); ++LIST_HEAD(interpreters_list); ++LIST_HEAD(olock_dirs_list); ++ ++static int altha_list_handler(struct ctl_table *table, int write, ++ void __user * buffer, size_t * lenp, ++ loff_t * ppos) ++{ ++ struct altha_list_struct *item, *tmp; ++ struct list_head *list_struct; ++ char *p, *fluid; ++ char *copy_buffer; ++ struct rw_semaphore *sem = table->extra2; ++ unsigned long error = proc_dostring(table, write, buffer, lenp, ppos); ++ down_write(sem); ++ if (error) ++ goto out; ++ ++ if (write && !error) { ++ copy_buffer = kmalloc(ALTHA_PARAMS_SIZE, GFP_KERNEL); ++ if (!copy_buffer) { ++ pr_err ++ ("AltHa: can't get memory for copy_buffer processing sysctl\n"); ++ error = -1; ++ goto out; ++ } ++ ++ list_struct = (struct list_head *)(table->extra1); ++ /*empty list and that fill with new info */ ++ list_for_each_entry_safe(item, tmp, list_struct, list) { ++ list_del(&item->list); ++ path_put(&item->path); ++ kfree(item->spath_p); ++ kfree(item); ++ } ++ ++ strlcpy(copy_buffer, table->data, ALTHA_PARAMS_SIZE); ++ ++ /* buffer can have a garbage after \n */ ++ p = strchrnul(copy_buffer, '\n'); ++ *p = 0; ++ ++ /* for strsep usage */ ++ fluid = copy_buffer; ++ ++ while ((p = strsep(&fluid, ":\n")) != NULL) { ++ if (strlen(p)) { ++ item = kmalloc(sizeof(*item), GFP_KERNEL); ++ if (item) ++ item->spath_p = kmalloc(PATH_MAX, GFP_KERNEL); ++ if (!item || !item->spath_p) { ++ pr_err ++ ("AltHa: can't get memory processing sysctl\n"); ++ kfree(copy_buffer); ++ error = -1; ++ goto out; ++ } ++ if (kern_path(p, LOOKUP_FOLLOW, &item->path)) { ++ pr_info ++ ("AltHa: error lookup '%s'\n", p); ++ kfree(item); ++ } else { ++ item->spath=d_path(&item->path,item->spath_p,PATH_MAX); ++ list_add_tail(&item->list, list_struct); ++ } ++ } ++ } ++ kfree(copy_buffer); ++ } ++out: ++ up_write(sem); ++ return error; ++} ++ ++struct ctl_path nosuid_sysctl_path[] = { ++ {.procname = "kernel",}, ++ {.procname = "altha",}, ++ {.procname = "nosuid",}, ++ {} ++}; ++ ++static struct ctl_table nosuid_sysctl_table[] = { ++ { ++ .procname = "enabled", ++ .data = &nosuid_enabled, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = proc_dointvec_minmax, ++ }, ++ { ++ .procname = "exceptions", ++ .data = proc_nosuid_exceptions, ++ .maxlen = ALTHA_PARAMS_SIZE, ++ .mode = 0644, ++ .proc_handler = altha_list_handler, ++ .extra1 = &nosuid_exceptions_list, ++ .extra2 = &nosuid_exceptions_sem, ++ }, ++ {} ++}; ++ ++struct ctl_path rstrscript_sysctl_path[] = { ++ {.procname = "kernel",}, ++ {.procname = "altha",}, ++ {.procname = "rstrscript",}, ++ {} ++}; ++ ++static struct ctl_table rstrscript_sysctl_table[] = { ++ { ++ .procname = "enabled", ++ .data = &rstrscript_enabled, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec_minmax, ++ }, ++ { ++ .procname = "interpreters", ++ .data = proc_interpreters, ++ .maxlen = ALTHA_PARAMS_SIZE, ++ .mode = 0644, ++ .proc_handler = altha_list_handler, ++ .extra1 = &interpreters_list, ++ .extra2 = &interpreters_sem, ++ }, ++ {} ++}; ++ ++struct ctl_path olock_sysctl_path[] = { ++ {.procname = "kernel",}, ++ {.procname = "altha",}, ++ {.procname = "olock",}, ++ {} ++}; ++ ++static struct ctl_table olock_sysctl_table[] = { ++ { ++ .procname = "enabled", ++ .data = &olock_enabled, ++ .maxlen = sizeof(int), ++ .mode = 0644, ++ .proc_handler = &proc_dointvec_minmax, ++ }, ++ { ++ .procname = "dirs", ++ .data = proc_olock_dirs, ++ .maxlen = ALTHA_PARAMS_SIZE, ++ .mode = 0644, ++ .proc_handler = altha_list_handler, ++ .extra1 = &olock_dirs_list, ++ .extra2 = &olock_dirs_sem, ++ }, ++ {} ++}; ++ ++struct altha_readdir_callback { ++ struct dir_context ctx; ++ u64 inode; ++ int found; ++}; ++ ++int is_olock_dir(struct inode *inode) ++{ ++ struct altha_list_struct *node; ++ down_read(&olock_dirs_sem); ++ list_for_each_entry(node, &olock_dirs_list, list) { ++ struct inode *exc_inode = node->path.dentry->d_inode; ++ if (exc_inode == inode) { ++ up_read(&olock_dirs_sem); ++ return 1; ++ } ++ } ++ up_read(&olock_dirs_sem); ++ return 0; ++} ++ ++/* Hooks */ ++static int altha_bprm_creds_from_file(struct linux_binprm *bprm, struct file * fi) ++{ ++ struct altha_list_struct *node; ++ /* when it's not a shebang issued script interpreter */ ++ if (rstrscript_enabled && bprm->executable == bprm->interpreter) { ++ char *path_p; ++ char *path_buffer; ++ ++ path_buffer = kmalloc(PATH_MAX, GFP_KERNEL); ++ if (!path_buffer) ++ return -ENOMEM; ++ ++ path_p = d_path(&bprm->file->f_path,path_buffer,PATH_MAX); ++ down_read(&interpreters_sem); ++ list_for_each_entry(node, &interpreters_list, list) { ++ if (strcmp(path_p, node->spath) == 0) { ++ uid_t cur_uid = from_kuid(bprm->cred->user_ns, ++ bprm->cred->uid); ++ pr_notice_ratelimited ++ ("AltHa/RestrScript: %s is blocked to run directly by %d\n", ++ bprm->filename, cur_uid); ++ up_read(&interpreters_sem); ++ kfree(path_buffer); ++ return -EPERM; ++ } ++ } ++ up_read(&interpreters_sem); ++ kfree(path_buffer); ++ } ++ if (unlikely(nosuid_enabled && ++ !uid_eq(bprm->cred->uid, bprm->cred->euid))) { ++ char *path_p; ++ char *path_buffer; ++ uid_t cur_uid; ++ ++ path_buffer = kmalloc(PATH_MAX, GFP_KERNEL); ++ if (!path_buffer) ++ return -ENOMEM; ++ ++ cur_uid = from_kuid(bprm->cred->user_ns, bprm->cred->uid); ++ path_p = d_path(&bprm->file->f_path,path_buffer,PATH_MAX); ++ down_read(&nosuid_exceptions_sem); ++ list_for_each_entry(node, &nosuid_exceptions_list, list) { ++ if (strcmp(path_p, node->spath) == 0) { ++ pr_notice_ratelimited ++ ("AltHa/NoSUID: %s permitted to setuid from %d\n", ++ bprm->filename, cur_uid); ++ up_read(&nosuid_exceptions_sem); ++ kfree(path_buffer); ++ return 0; ++ } ++ } ++ up_read(&nosuid_exceptions_sem); ++ pr_notice_ratelimited ++ ("AltHa/NoSUID: %s prevented to setuid from %d\n", ++ bprm->filename, cur_uid); ++ bprm->cred->euid = bprm->cred->uid; ++ kfree(path_buffer); ++ } ++ return 0; ++} ++ ++/* For OLock */ ++static int altha_inode_unlink(struct inode *inode, struct dentry *dentry) ++{ ++ if (olock_enabled && (atomic_read(&dentry->d_inode->i_writecount) ++#ifdef CONFIG_IMA ++ || atomic_read(&dentry->d_inode->i_readcount) ++#endif ++ )) { ++ if (is_olock_dir(inode)) ++ return -EPERM; ++ } ++ return 0; ++} ++ ++/* Initialization */ ++ ++static struct security_hook_list altha_hooks[] = { ++ LSM_HOOK_INIT(bprm_creds_from_file, altha_bprm_creds_from_file), ++ LSM_HOOK_INIT(inode_unlink, altha_inode_unlink), ++}; ++ ++static int __init altha_init(void) ++{ ++ if (altha_enabled) { ++ pr_info("AltHa enabled.\n"); ++ security_add_hooks(altha_hooks, ARRAY_SIZE(altha_hooks),"altha"); ++ ++ if (!register_sysctl_paths ++ (nosuid_sysctl_path, nosuid_sysctl_table)) ++ panic("AltHa: NoSUID sysctl registration failed.\n"); ++ ++ if (!register_sysctl_paths ++ (rstrscript_sysctl_path, rstrscript_sysctl_table)) ++ panic ++ ("AltHa: RestrScript sysctl registration failed.\n"); ++ ++ if (!register_sysctl_paths ++ (olock_sysctl_path, olock_sysctl_table)) ++ panic("AltHa: OLock sysctl registration failed.\n"); ++ } else ++ pr_info("AltHa disabled.\n"); ++ return 0; ++} ++ ++DEFINE_LSM(altha) = { ++ .name = "altha", ++ .init = altha_init, ++}; ++ +diff --git a/security/kiosk/Kconfig b/security/kiosk/Kconfig +new file mode 100644 +index 000000000000..c92214abf62f +--- /dev/null ++++ b/security/kiosk/Kconfig +@@ -0,0 +1,9 @@ ++config SECURITY_KIOSK ++ bool "kiosk module" ++ depends on SECURITY ++ default n ++ help ++ Implements "Kiosk mode", in which user can be restricted to run anything ++ not permitted by admin. ++ ++ If you are unsure how to answer this question, answer N. +diff --git a/security/kiosk/Makefile b/security/kiosk/Makefile +new file mode 100644 +index 000000000000..d29aba92bb3e +--- /dev/null ++++ b/security/kiosk/Makefile +@@ -0,0 +1,3 @@ ++obj-$(CONFIG_SECURITY_KIOSK) := kiosk.o ++ ++kiosk-y := kiosk_lsm.o +diff --git a/security/kiosk/kiosk-test.sh b/security/kiosk/kiosk-test.sh +new file mode 100755 +index 000000000000..9ab8774183e6 +--- /dev/null ++++ b/security/kiosk/kiosk-test.sh +@@ -0,0 +1,252 @@ ++#!/bin/bash ++# SPDX-License-Identifier: GPL-2.0 ++# Kiosk test suite: just run the script ++# ++ ++try_run() { ++ echo "Test: $*" >&2 ++ if "$@"; then ++ echo "Success." >&2 ++ else ++ echo "Failed: exit code $?" >&2 ++ exit 1 ++ fi ++} ++ ++# File appending and removing ++ ++clean () { ++ kiosk -m "0" ++ ++ for i in `kiosk --user-list` ++ do ++ kiosk -U "$i" ++ done ++} ++ ++check_empty() { ++ TMPFILE=$(mktemp) ++ try_run kiosk --user-list > $TMPFILE ++ ++ if [ -s "$TMPFILE" ] ++ then ++ echo "Failed: lists are not empty" >&2 ++ rm -f $TMPFILE ++ exit 1 ++ fi ++ ++ rm -f $TMPFILE ++} ++ ++kiosk_user_append() { ++ echo `readlink -f "$1"` >> $TMPFILE ++ try_run kiosk --user-list-append "$1" ++} ++ ++kiosk_user_remove() { ++ try_run kiosk --user-list-remove "$1" ++} ++ ++kiosk_user_list_check() { ++ TMPFILE=$1 ++ LISTFILE=$(mktemp) ++ try_run kiosk --user-list > $LISTFILE ++ ++ for i in `cat "$LISTFILE"` ++ do ++ try_run kiosk_user_remove "$i" ++ done ++ ++ if cmp --quiet $TMPFILE $LISTFILE; then ++ echo "Success: user-list match" >&2 ++ else ++ echo "Failed: user-list does not match" >&2 ++ diff -u $TMPFILE $LISTFILE ++ exit 1 ++ fi ++ ++ rm -f $TMPFILE $LISTFILE ++} ++ ++TMPFILE=$(mktemp) ++ ++clean ++ ++kiosk_user_append /bin/sh ++kiosk_user_append /bin/bash ++kiosk_user_append /bin/date ++kiosk_user_append /bin/ls ++kiosk_user_list_check "$TMPFILE" ++ ++# Mode changing ++kiosk_set_mode() { ++ echo "$1" > $TMPFILE ++ try_run kiosk --set-mode "$1" ++} ++ ++kiosk_check_mode() { ++ TMPFILE=$1 ++ MODEFILE=$(mktemp) ++ try_run kiosk --get-mode > $MODEFILE ++ ++ if cmp --quiet $TMPFILE $MODEFILE; then ++ echo "Success: mode match" >&2 ++ else ++ echo "Failed: mode does not match" >&2 ++ exit 1 ++ fi ++ ++ rm -rf $TMPFILE $MODEFILE ++} ++ ++check_empty ++ ++TMPFILE=$(mktemp) ++ ++kiosk_set_mode "1" ++kiosk_check_mode "$TMPFILE" ++kiosk_set_mode "0" ++kiosk_check_mode "$TMPFILE" ++ ++# Exec testing ++try_exec() { ++ REACT=$1 ++ shift ++ ++ echo "Executing $@" >&2 ++ "$@" >/dev/null ++ if [ "x$REACT" = "xdeny" -a $? -ne 126 ] ++ then ++ echo "Error: application was executed while it should not be" >&2 ++ echo "React is $REACT, error code is $?" >&2 ++ exit 1 ++ fi ++ if [ "x$REACT" = "xperm" -a $? -eq 126 ] ++ then ++ echo "Error: application was not executed while it should be" >&2 ++ echo "React is $REACT, error code is $?" >&2 ++ exit 1 ++ fi ++} ++ ++try_exec_user() { ++ REACT=$1 ++ shift ++ ++ try_exec $1 su - -c \"$@\" test ++} ++ ++check_empty ++ ++#necessary ++raise_guard() { ++ kiosk_user_append /bin/bash ++ kiosk_user_append /usr/bin/id ++ kiosk_user_append /bin/egrep ++ kiosk_user_append /bin/grep ++ kiosk_user_append /bin/hostname ++ kiosk_user_append /usr/bin/natspec ++ kiosk_user_append /usr/share/console-scripts/vt_activate_unicode ++ kiosk_user_append /usr/share/console-scripts/vt_activate_user_map ++ kiosk_user_append /sbin/consoletype ++} ++ ++stop_guard() { ++ kiosk_user_remove /bin/bash ++ kiosk_user_remove /usr/bin/id ++ kiosk_user_remove /bin/egrep ++ kiosk_user_remove /bin/grep ++ kiosk_user_remove /bin/hostname ++ kiosk_user_remove /usr/bin/natspec ++ kiosk_user_remove /usr/share/console-scripts/vt_activate_unicode ++ kiosk_user_remove /usr/share/console-scripts/vt_activate_user_map ++ kiosk_user_remove /sbin/consoletype ++} ++ ++raise_guard ++kiosk_user_append /bin/false ++ ++kiosk_set_mode "0" ++try_exec_user perm /bin/false ++try_exec_user perm /bin/true ++kiosk_set_mode "1" ++try_exec_user perm /bin/false ++try_exec_user deny /bin/true ++kiosk_set_mode "0" ++ ++kiosk_user_remove /bin/false ++stop_guard ++ ++# TODO: ++# bogus append to list (non-exist file) ++check_empty ++kiosk_user_append /bin/tru ++ ++# bogus append to list (no params) ++kiosk_user_append "" ++kiosk_user_append ++ ++kiosk_user_append /bin/true ++kiosk_user_append /bin/false ++ ++# bogus remove from list (non-exist file) ++kiosk_user_remove /bin/tru ++ ++# bogus remove from list (file is not in list) ++kiosk_user_remove /bin/date ++kiosk_user_remove /bin/false ++kiosk_user_remove /bin/true ++ ++# bogus remove from list (list is empty) ++check_empty ++kiosk_user_remove /bin/false ++ ++# bogus remove from list (no params) ++kiosk_user_remove "" ++kiosk_user_remove ++ ++# bogus mode (no params) ++kiosk_set_mode "" ++ ++# bogus mode ++kiosk_set_mode "3" ++ ++FILE="/home/test/test" ++cp /bin/true $FILE ++kiosk_user_append $FILE ++kiosk_set_mode "1" ++ ++raise_guard ++ ++# user executes his own script ++chmod 555 $FILE ++chown test $FILE ++chgrp test $FILE ++try_exec_user deny $FILE ++ ++# user executes his script with his group ++chown root $FILE ++try_exec_user perm $FILE ++chmod g+w $FILE ++try_exec_user deny $FILE ++chmod g-w $FILE ++ ++# user executes script without permissions ++chgrp root $FILE ++try_exec_user perm $FILE ++chmod o+w $FILE ++try_exec_user deny $FILE ++chmod o-w $FILE ++ ++chmod 000 $FILE ++setfacl -m "u:test:rwx" $FILE ++try_exec_user deny $FILE ++setfacl -m "u:test:r-x" $FILE ++try_exec_user perm $FILE ++getfacl $FILE ++ ++stop_guard ++ ++kiosk_set_mode "0" ++kiosk_user_remove $FILE ++rm -fv $FILE +diff --git a/security/kiosk/kiosk_lsm.c b/security/kiosk/kiosk_lsm.c +new file mode 100644 +index 000000000000..cf7a7df65995 +--- /dev/null ++++ b/security/kiosk/kiosk_lsm.c +@@ -0,0 +1,337 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Kiosk Linux Security Module ++ * ++ * Author: Oleg Solovyov ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2, as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#define MAX_PATH 1024 ++ ++struct kiosk_list_struct { ++ struct path path; ++ struct list_head list; ++}; ++ ++static struct kiosk_list_struct *list_iter; ++static struct genl_family genl_kiosk_family; ++static char pathbuf[MAX_PATH]; ++ ++/* Lists handling */ ++static DECLARE_RWSEM(user_sem); ++static LIST_HEAD(user_list); ++ ++enum kiosk_cmd { ++ KIOSK_UNSPEC = 0, ++ KIOSK_REQUEST, ++ KIOSK_REPLY, ++ KIOSK_CMD_LAST, ++}; ++ ++enum kiosk_mode { ++ KIOSK_PERMISSIVE = 0, ++ KIOSK_NONSYSTEM, ++ KIOSK_MODE_LAST, ++}; ++ ++static int kiosk_mode = KIOSK_PERMISSIVE; ++ ++enum kiosk_action { ++ KIOSK_SET_MODE = 0, ++ KIOSK_USERLIST_ADD, ++ KIOSK_USERLIST_DEL, ++ KIOSK_USER_LIST, ++}; ++ ++enum kiosk_attrs { ++ KIOSK_NOATTR = 0, ++ KIOSK_ACTION, ++ KIOSK_DATA, ++ KIOSK_MAX_ATTR, ++}; ++ ++static struct nla_policy kiosk_policy[KIOSK_MAX_ATTR] = { ++ [KIOSK_ACTION] = { ++ .type = NLA_S16, ++ }, ++ [KIOSK_DATA] = { ++ .type = NLA_STRING, ++ .len = sizeof(pathbuf) - 1 ++ }, ++}; ++ ++static int kiosk_add_item(struct list_head *list, char *filename, ++ struct rw_semaphore *sem) ++{ ++ struct kiosk_list_struct *item, *tmp; ++ int mode; ++ int rc; ++ ++ item = kmalloc(sizeof(*item), GFP_KERNEL); ++ if (!item) ++ return -ENOMEM; ++ ++ rc = kern_path(filename, LOOKUP_FOLLOW, &item->path); ++ if (rc) { ++ pr_err("Kiosk: error lookup '%s'\n", filename); ++ kfree(item); ++ return rc; ++ } ++ ++ mode = d_inode(item->path.dentry)->i_mode; ++ if (!S_ISREG(mode)) { ++ pr_err("Kiosk: given file is not a regular file, mode: %d\n", ++ mode); ++ path_put(&item->path); ++ kfree(item); ++ return -EINVAL; ++ } ++ ++ down_write(sem); ++ list_for_each_entry(tmp, list, list) { ++ if (item->path.dentry == tmp->path.dentry) { ++ up_write(sem); ++ path_put(&item->path); ++ kfree(item); ++ return 0; ++ } ++ } ++ list_add_tail(&item->list, list); ++ up_write(sem); ++ ++ return 0; ++} ++ ++static int kiosk_remove_item(struct list_head *list, char *filename, ++ struct rw_semaphore *sem) ++{ ++ struct kiosk_list_struct *item, *tmp; ++ struct path user_path; ++ int rc; ++ ++ rc = kern_path(filename, LOOKUP_FOLLOW, &user_path); ++ if (rc) ++ return rc; ++ ++ down_write(sem); ++ list_for_each_entry_safe(item, tmp, list, list) { ++ if (item->path.dentry == user_path.dentry) { ++ if (item == list_iter) { ++ pr_err("Kiosk: list is being iterated, item removing is unsafe\n"); ++ up_write(sem); ++ path_put(&user_path); ++ return -EAGAIN; ++ } ++ list_del(&item->list); ++ path_put(&item->path); ++ kfree(item); ++ } ++ } ++ up_write(sem); ++ path_put(&user_path); ++ return 0; ++} ++ ++static int kiosk_nl_send_msg(struct sk_buff *skb, struct genl_info *info, ++ char *msg) ++{ ++ int msg_size; ++ int res; ++ struct nlmsghdr *nlh; ++ struct sk_buff *skb_out; ++ ++ msg_size = strlen(msg) + 1; ++ /* we put string so add space for NUL-terminator */ ++ ++ skb_out = genlmsg_new(msg_size, GFP_KERNEL); ++ if (!skb_out) ++ return -ENOMEM; ++ ++ nlh = genlmsg_put_reply(skb_out, info, &genl_kiosk_family, 0, ++ KIOSK_REPLY); ++ if (!nlh) { ++ nlmsg_free(skb_out); ++ return -ENOMEM; ++ } ++ ++ res = nla_put_string(skb_out, KIOSK_DATA, msg); ++ if (res) { ++ nlmsg_free(skb_out); ++ return res; ++ } ++ ++ genlmsg_end(skb_out, nlh); ++ return genlmsg_reply(skb_out, info); ++} ++ ++static int kiosk_list_items(struct list_head *list, struct rw_semaphore *sem, ++ struct sk_buff *skb, struct genl_info *info) ++{ ++ char *path; ++ ++ down_read(sem); ++ ++ if (!list_iter) { /* list iterating started */ ++ list_iter = list_first_entry_or_null(list, ++ struct kiosk_list_struct, ++ list); ++ } else if (list_iter == list_last_entry(list, ++ struct kiosk_list_struct, ++ list)) { ++ /* hit list end, cleaning temp variable */ ++ list_iter = NULL; ++ } else { /* iterating list */ ++ list_iter = list_next_entry(list_iter, list); ++ } ++ ++ if (list_iter) ++ path = d_path(&list_iter->path, pathbuf, sizeof(pathbuf)); ++ else ++ path = ""; ++ ++ up_read(sem); ++ return kiosk_nl_send_msg(skb, info, path); ++} ++ ++static int kiosk_genl_doit(struct sk_buff *skb, struct genl_info *info) ++{ ++ int action; ++ ++ if (info->attrs[KIOSK_DATA]) ++ strlcpy(pathbuf, nla_data(info->attrs[KIOSK_DATA]), sizeof(pathbuf)); ++ else ++ pathbuf[0] = '\0'; ++ ++ action = info->attrs[KIOSK_ACTION] ? ++ nla_get_s16(info->attrs[KIOSK_ACTION]) : -1; ++ ++ switch (action) { ++ case KIOSK_SET_MODE: { ++ int new_mode; ++ int error; ++ char buf[4]; ++ ++ if (!strlen(pathbuf)) { ++ /* we want to retrieve current mode */ ++ snprintf(buf, sizeof(buf), "%d", kiosk_mode); ++ return kiosk_nl_send_msg(skb, info, buf); ++ } ++ ++ error = kstrtouint(pathbuf, 0, &new_mode); ++ ++ if (error || new_mode < 0 ++ || new_mode >= KIOSK_MODE_LAST) { ++ return -EINVAL; ++ } ++ kiosk_mode = new_mode; ++ return 0; ++ } ++ case KIOSK_USERLIST_ADD: ++ return kiosk_add_item(&user_list, pathbuf, &user_sem); ++ case KIOSK_USERLIST_DEL: ++ return kiosk_remove_item(&user_list, pathbuf, ++ &user_sem); ++ case KIOSK_USER_LIST: ++ return kiosk_list_items(&user_list, &user_sem, skb, ++ info); ++ default: ++ return -EINVAL; ++ } ++} ++ ++static const struct genl_ops genl_kiosk_ops[] = { ++ { ++ .doit = kiosk_genl_doit, ++ .flags = GENL_ADMIN_PERM, ++ }, ++}; ++ ++static struct genl_family genl_kiosk_family = { ++ .name = "kiosk", ++ .version = 1, ++ .netnsok = false, ++ .module = THIS_MODULE, ++ .ops = genl_kiosk_ops, ++ .n_ops = ARRAY_SIZE(genl_kiosk_ops), ++ .maxattr = KIOSK_MAX_ATTR, ++ .policy = kiosk_policy, ++}; ++ ++/* Hooks */ ++static int kiosk_bprm_check_security(struct linux_binprm *bprm) ++{ ++ uid_t cur_uid = __kuid_val(bprm->cred->uid); ++ struct kiosk_list_struct *node; ++ ++ if (kiosk_mode == KIOSK_PERMISSIVE) ++ return 0; ++ ++ if (cur_uid >= 500) { ++ bprm->secureexec = 1; ++ if (bprm->executable != bprm->interpreter) ++ return 0; ++ ++ if (cur_uid == __kuid_val(bprm->file->f_inode->i_uid) || ++ (bprm->file->f_inode->i_mode & 0022)) { ++ pr_notice_ratelimited("Kiosk: %s is writable for %d\n", ++ bprm->filename, cur_uid); ++ return -EPERM; ++ } ++ ++ down_read(&user_sem); ++ list_for_each_entry(node, &user_list, list) { ++ if (bprm->file->f_path.dentry == node->path.dentry) { ++ up_read(&user_sem); ++ return 0; ++ } ++ } ++ up_read(&user_sem); ++ } else { ++ return 0; ++ } ++ ++ pr_notice_ratelimited("Kiosk: %s prevented to exec from %d\n", ++ bprm->filename, cur_uid); ++ return -EPERM; ++} ++ ++static struct security_hook_list kiosk_hooks[] = { ++ LSM_HOOK_INIT(bprm_check_security, kiosk_bprm_check_security), ++}; ++ ++static int __init kiosk_init(void) ++{ ++ int rc; ++ ++ rc = genl_register_family(&genl_kiosk_family); ++ ++ if (rc) { ++ pr_alert("Kiosk: Error registering family.\n"); ++ return rc; ++ } ++ ++ pr_info("Kiosk: Netlink family registered.\n"); ++ security_add_hooks(kiosk_hooks, ARRAY_SIZE(kiosk_hooks), "kiosk"); ++ ++ return 0; ++} ++ ++DEFINE_LSM(kiosk) = { ++ .name = "kiosk", ++ .init = kiosk_init, ++}; diff --git a/0001-crypto-support-loading-GOST-signed-kernel-modules.patch b/0001-crypto-support-loading-GOST-signed-kernel-modules.patch index 8522a6c..e567c0d 100644 --- a/0001-crypto-support-loading-GOST-signed-kernel-modules.patch +++ b/0001-crypto-support-loading-GOST-signed-kernel-modules.patch @@ -1,22 +1,15 @@ -From 59bf6ed4709ea82d63be300814af2c4c94503e14 Mon Sep 17 00:00:00 2001 -From: Mikhail Novosyolov -Date: Thu, 6 Aug 2020 14:17:31 +0300 Subject: [PATCH] crypto: support loading GOST-signed kernel modules Support loading kernel modules signed with: * 1.2.643.7.1.1.1.1 id-tc26-gost3410-12-256 * 1.2.643.7.1.1.1.2 id-tc26-gost3410-12-512 -Signed-off-by: Mikhail Novosyolov ---- - crypto/asymmetric_keys/pkcs7_parser.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) +Update for 5.15.28 diff --git a/crypto/asymmetric_keys/pkcs7_parser.c b/crypto/asymmetric_keys/pkcs7_parser.c -index 967329e0a07b..39c260a04167 100644 --- a/crypto/asymmetric_keys/pkcs7_parser.c +++ b/crypto/asymmetric_keys/pkcs7_parser.c -@@ -248,6 +248,12 @@ int pkcs7_sig_note_digest_algo(void *context, size_t hdrlen, +@@ -248,6 +248,12 @@ case OID_sha224: ctx->sinfo->sig->hash_algo = "sha224"; break; @@ -29,9 +22,9 @@ index 967329e0a07b..39c260a04167 100644 default: printk("Unsupported digest algo: %u\n", ctx->last_oid); return -ENOPKG; -@@ -269,6 +275,11 @@ int pkcs7_sig_note_pkey_algo(void *context, size_t hdrlen, - ctx->sinfo->sig->pkey_algo = "rsa"; - ctx->sinfo->sig->encoding = "pkcs1"; +@@ -277,6 +283,11 @@ + ctx->sinfo->sig->pkey_algo = "ecdsa"; + ctx->sinfo->sig->encoding = "x962"; break; + case OID_gost2012PKey256: + case OID_gost2012PKey512: diff --git a/0001-disable-mrproper-prepare-scripts-configs-in-devel-rp.patch b/0001-disable-mrproper-prepare-scripts-configs-in-devel-rp.patch index 2ffcdfc..5fd644f 100644 --- a/0001-disable-mrproper-prepare-scripts-configs-in-devel-rp.patch +++ b/0001-disable-mrproper-prepare-scripts-configs-in-devel-rp.patch @@ -1,22 +1,14 @@ -From 1a821310ed4c0519e7fe534ea0a4ba46e604ee4f Mon Sep 17 00:00:00 2001 -From: Evgenii Shatokhin -Date: Wed, 11 Dec 2019 21:15:36 +0300 Subject: [PATCH] disable mrproper prepare scripts configs in devel rpms This is for disabling *config, mrproper, prepare, scripts on -devel rpms Needed, because otherwise the -devel won't build correctly. -Signed-off-by: Mikhail Novosyolov ---- - Makefile | 22 +++++----------------- - scripts/kconfig/Makefile | 17 ----------------- - 2 files changed, 5 insertions(+), 34 deletions(-) +Update for 5.15.28 diff --git a/Makefile b/Makefile -index 076d4e6b9ccc..75bf27049d60 100644 --- a/Makefile +++ b/Makefile -@@ -1186,8 +1186,7 @@ include/config/kernel.release: FORCE +@@ -1199,8 +1199,7 @@ # Carefully list dependencies so we do not try to build scripts twice # in parallel PHONY += scripts @@ -26,17 +18,17 @@ index 076d4e6b9ccc..75bf27049d60 100644 # Things we need to do before we recursively start building the kernel # or the modules are listed in "prepare". -@@ -1206,7 +1205,7 @@ prepare0: archprepare +@@ -1219,7 +1218,7 @@ $(Q)$(MAKE) $(build)=. # All the preparing.. --prepare: prepare0 prepare-objtool prepare-resolve_btfids +-prepare: prepare0 +prepare: - # Support for using generic headers in asm-generic - asm-generic := -f $(srctree)/scripts/Makefile.asm-generic obj -@@ -1472,15 +1471,7 @@ CLEAN_FILES += include/ksym vmlinux.symvers \ - compile_commands.json + PHONY += remove-stale-files + remove-stale-files: +@@ -1520,15 +1519,7 @@ + compile_commands.json .thinlto-cache # Directories & files removed with 'make mrproper' -MRPROPER_FILES += include/config include/generated \ @@ -44,15 +36,15 @@ index 076d4e6b9ccc..75bf27049d60 100644 - debian snap tar-install \ - .config .config.old .version \ - Module.symvers \ -- signing_key.pem signing_key.priv signing_key.x509 \ -- x509.genkey extra_certificates signing_key.x509.keyid \ -- signing_key.x509.signer vmlinux-gdb.py \ +- certs/signing_key.pem certs/signing_key.x509 \ +- certs/x509.genkey \ +- vmlinux-gdb.py \ - *.spec +MRPROPER_FILES += "" - # Directories & files removed with 'make distclean' - DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS -@@ -1500,13 +1491,10 @@ clean: archclean vmlinuxclean + # clean - Delete most, but leave enough to build external modules + # +@@ -1545,13 +1536,10 @@ # mrproper - Delete all generated files, including .config # mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) @@ -69,30 +61,9 @@ index 076d4e6b9ccc..75bf27049d60 100644 # distclean diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile -index e46df0a2d4f9..edceb8d1d213 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile -@@ -20,19 +20,14 @@ endif - unexport CONFIG_ - - xconfig: $(obj)/qconf -- $(Q)$< $(silent) $(Kconfig) - - gconfig: $(obj)/gconf -- $(Q)$< $(silent) $(Kconfig) - - menuconfig: $(obj)/mconf -- $(Q)$< $(silent) $(Kconfig) - - config: $(obj)/conf -- $(Q)$< $(silent) --oldaskconfig $(Kconfig) - - nconfig: $(obj)/nconf -- $(Q)$< $(silent) $(Kconfig) - - build_menuconfig: $(obj)/mconf - -@@ -48,11 +43,9 @@ localyesconfig localmodconfig: $(obj)/conf +@@ -54,11 +54,9 @@ cmp -s .tmp.config .config || \ (mv -f .config .config.old.1; \ mv -f .tmp.config .config; \ @@ -104,7 +75,7 @@ index e46df0a2d4f9..edceb8d1d213 100644 fi $(Q)rm -f .tmp.config -@@ -68,24 +61,14 @@ simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \ +@@ -74,24 +72,14 @@ PHONY += $(simple-targets) $(simple-targets): $(obj)/conf @@ -129,6 +100,3 @@ index e46df0a2d4f9..edceb8d1d213 100644 configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@) --- -2.25.1 - diff --git a/0002-Documentation-for-AltHa-LSM.patch b/0002-Documentation-for-AltHa-LSM.patch deleted file mode 100644 index 1975004..0000000 --- a/0002-Documentation-for-AltHa-LSM.patch +++ /dev/null @@ -1,73 +0,0 @@ -From fe0e9e1b7fc6bc4a8ca0e0473bf88297ca7020a7 Mon Sep 17 00:00:00 2001 -From: "Anton V. Boyarshinov" -Date: Thu, 17 May 2018 08:30:25 +0000 -Subject: [PATCH 2/2] Documentation for AltHa LSM - -Signed-off-by: Mikhail Novosyolov ---- - Documentation/admin-guide/LSM/AltHa.rst | 43 +++++++++++++++++++++++++ - Documentation/admin-guide/LSM/index.rst | 1 + - 2 files changed, 44 insertions(+) - create mode 100644 Documentation/admin-guide/LSM/AltHa.rst - -diff --git a/Documentation/admin-guide/LSM/AltHa.rst b/Documentation/admin-guide/LSM/AltHa.rst -new file mode 100644 -index 000000000000..0b2ad0c8dd17 ---- /dev/null -+++ b/Documentation/admin-guide/LSM/AltHa.rst -@@ -0,0 +1,43 @@ -+==== -+AltHa -+==== -+ -+AltHa is a Linux Security Module currently has three userspace hardening options: -+ * ignore SUID on binaries (with exceptions possible); -+ * prevent running selected script interprers in interactive move; -+ * disable open file unlinking in selected dirs. -+ -+ -+It is selectable at build-time with ``CONFIG_SECURITY_ALTHA``, and should be -+enabled in runtime by command line option ``altha=1`` and configuded -+through sysctls in ``/proc/sys/kernel/altha``. -+ -+NoSUID -+============ -+Modern Linux systems can be used with minimal (or even zero at least for OWL and ALT) usage of SUID programms, but in many cases in full-featured desktop or server systems there ara plenty of them: uncounted and sometimes unnessesary. Privileged programms are always a attack surface, but mounting filesystems with ``nosuid`` flag doesn't provide enouth granularity in SUID binaries manageent. This LSM module provides a single control point for all SUID binaries. When this submodule is enabled, SUID bits on all binaries except explicitally listed are system-wide ignored. -+ -+Sysctl parameters and defaults: -+ -+* ``kernel.altha.nosuid.enabled = 0``, set to 1 to enable -+* ``kernel.altha.nosuid.exceptions =``, colon-separated list of enabled SUID binaries, for example: ``/bin/su:/usr/libexec/hasher-priv/hasher-priv`` -+ -+RestrScript -+============ -+There is a one way to hardening: prevent users from executing ther own arbitrary code. Thraditionally it can be done setting on user-writable filesystems ``noexec`` flag. But modern script languages such as Python also can be used to write exploits or even load arbitary machine code via ``dlopen`` and users can start scripts from ``noexec`` filesystem starting interpreter directly. -+Restrscript LSM submodule provides a way to restrict some programms to be executed directly, but allows to execute them as shebang handler. -+ -+Sysctl parameters and defaults: -+ -+* ``kernel.altha.rstrscript.enabled = 0``, set to 1 to enable -+* ``kernel.altha.rstrscript.interpreters =``, colon-separated list of restricted interpreters for example: ``/usr/bin/python:/usr/bin/python3:/usr/bin/perl:/usr/bin/tclsh``. Simlinks are suporrted in both ways: you can set symlink to interpreter as exception and interpreter and all symlinks on it will be restricted. -+ -+Note: in this configuration all scripts starting with ``#!/usr/bin/env python`` will be blocked. -+ -+OLock -+============ -+Unlink disabling for open files needed for Russian sertification, but this is a nasty feature leading to DOS. -+ -+Sysctl parameters and defaults: -+ -+* ``kernel.altha.olock.enabled = 0``, set to 1 to enable -+* ``kernel.altha.olock.dirs =``, colon-separated list of dirs, for example: ``/var/lib/something:/tmp/something``. -diff --git a/Documentation/admin-guide/LSM/index.rst b/Documentation/admin-guide/LSM/index.rst -index a6ba95fbaa9f..20b57e7adadd 100644 ---- a/Documentation/admin-guide/LSM/index.rst -+++ b/Documentation/admin-guide/LSM/index.rst -@@ -47,3 +47,4 @@ subdirectories. - tomoyo - Yama - SafeSetID -+ AltHa --- -2.25.1 - diff --git a/0003-security-altha-altha_lsm.c-build-fixed-with-kernel-5.patch b/0003-security-altha-altha_lsm.c-build-fixed-with-kernel-5.patch deleted file mode 100644 index b87bd68..0000000 --- a/0003-security-altha-altha_lsm.c-build-fixed-with-kernel-5.patch +++ /dev/null @@ -1,68 +0,0 @@ -From d89442861500242809d99c9e178b0ed1dd741b28 Mon Sep 17 00:00:00 2001 -From: Kernel Bot -Date: Mon, 24 Aug 2020 17:16:53 +0300 -Subject: [PATCH 3/4] security/altha/altha_lsm.c: build fixed with kernel 5.8 - ---- - security/altha/altha_lsm.c | 19 ++++++++++++++----- - 1 file changed, 14 insertions(+), 5 deletions(-) - -diff --git a/security/altha/altha_lsm.c b/security/altha/altha_lsm.c -index 7d1cc8f8a1a7..41f0fc7ac8e5 100644 ---- a/security/altha/altha_lsm.c -+++ b/security/altha/altha_lsm.c -@@ -216,6 +216,15 @@ struct altha_readdir_callback { - int found; - }; - -+int compare_paths(const struct path *path1, const struct path *path2) -+{ -+ char a1[PATH_MAX]; -+ char a2[PATH_MAX]; -+ char* p1, *p2; -+ p1=d_path(path1,a1,PATH_MAX); -+ p2=d_path(path2,a2,PATH_MAX); -+ return strcmp(p1,p2); -+} - - int is_olock_dir(struct inode *inode) - { -@@ -233,14 +242,14 @@ int is_olock_dir(struct inode *inode) - } - - /* Hooks */ --static int altha_bprm_set_creds(struct linux_binprm *bprm) -+static int altha_bprm_creds_from_file(struct linux_binprm *bprm, struct file * fi) - { - struct altha_list_struct *node; - /* when it's not a shebang issued script interpreter */ -- if (rstrscript_enabled && !bprm->called_set_creds) { -+ if (rstrscript_enabled && bprm->filename == bprm->interp) { - down_read(&interpreters_sem); - list_for_each_entry(node, &interpreters_list, list) { -- if (path_equal(&bprm->file->f_path, &node->path)) { -+ if (compare_paths(&bprm->file->f_path, &node->path) == 0) { - uid_t cur_uid = from_kuid(bprm->cred->user_ns, - bprm->cred->uid); - pr_notice_ratelimited -@@ -257,7 +266,7 @@ static int altha_bprm_set_creds(struct linux_binprm *bprm) - uid_t cur_uid = from_kuid(bprm->cred->user_ns, bprm->cred->uid); - down_read(&nosuid_exceptions_sem); - list_for_each_entry(node, &nosuid_exceptions_list, list) { -- if (path_equal(&bprm->file->f_path, &node->path)) { -+ if (compare_paths(&bprm->file->f_path, &node->path) == 0) { - pr_notice_ratelimited - ("AltHa/NoSUID: %s permitted to setuid from %d\n", - bprm->filename, cur_uid); -@@ -291,7 +300,7 @@ static int altha_inode_unlink(struct inode *inode, struct dentry *dentry) - /* Initialization */ - - static struct security_hook_list altha_hooks[] = { -- LSM_HOOK_INIT(bprm_set_creds, altha_bprm_set_creds), -+ LSM_HOOK_INIT(bprm_creds_from_file, altha_bprm_creds_from_file), - LSM_HOOK_INIT(inode_unlink, altha_inode_unlink), - }; - --- -2.25.1 - diff --git a/0004-altha-use-path-strings-instead-of-path-structs.patch b/0004-altha-use-path-strings-instead-of-path-structs.patch deleted file mode 100644 index 671d478..0000000 --- a/0004-altha-use-path-strings-instead-of-path-structs.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 5765b709411696cd58db43e6e006a36e5a207ee0 Mon Sep 17 00:00:00 2001 -From: Kernel Bot -Date: Wed, 2 Sep 2020 15:19:59 +0300 -Subject: [PATCH 4/4] altha: use path strings instead of path structs - -Path strings continueto work even when target file was replaced. ---- - security/altha/altha_lsm.c | 30 ++++++++++++++++-------------- - 1 file changed, 16 insertions(+), 14 deletions(-) - -diff --git a/security/altha/altha_lsm.c b/security/altha/altha_lsm.c -index 41f0fc7ac8e5..ccde83ebb26c 100644 ---- a/security/altha/altha_lsm.c -+++ b/security/altha/altha_lsm.c -@@ -52,6 +52,8 @@ __setup("altha=", altha_enabled_setup); - - struct altha_list_struct { - struct path path; -+ char * spath; -+ char * spath_p; - struct list_head list; - }; - -@@ -91,6 +93,7 @@ static int altha_list_handler(struct ctl_table *table, int write, - list_for_each_entry_safe(item, tmp, list_struct, list) { - list_del(&item->list); - path_put(&item->path); -+ kfree(item->spath_p); - kfree(item); - } - -@@ -106,7 +109,9 @@ static int altha_list_handler(struct ctl_table *table, int write, - while ((p = strsep(&fluid, ":\n")) != NULL) { - if (strlen(p)) { - item = kmalloc(sizeof(*item), GFP_KERNEL); -- if (!item) { -+ if (item) -+ item->spath_p = kmalloc(PATH_MAX, GFP_KERNEL); -+ if (!item || !item->spath_p) { - pr_err - ("AltHa: can't get memory processing sysctl\n"); - kfree(copy_buffer); -@@ -118,6 +123,7 @@ static int altha_list_handler(struct ctl_table *table, int write, - ("AltHa: error lookup '%s'\n", p); - kfree(item); - } else { -+ item->spath=d_path(&item->path,item->spath_p,PATH_MAX); - list_add_tail(&item->list, list_struct); - } - } -@@ -216,16 +222,6 @@ struct altha_readdir_callback { - int found; - }; - --int compare_paths(const struct path *path1, const struct path *path2) --{ -- char a1[PATH_MAX]; -- char a2[PATH_MAX]; -- char* p1, *p2; -- p1=d_path(path1,a1,PATH_MAX); -- p2=d_path(path2,a2,PATH_MAX); -- return strcmp(p1,p2); --} -- - int is_olock_dir(struct inode *inode) - { - struct altha_list_struct *node; -@@ -246,10 +242,13 @@ static int altha_bprm_creds_from_file(struct linux_binprm *bprm, struct file * f - { - struct altha_list_struct *node; - /* when it's not a shebang issued script interpreter */ -- if (rstrscript_enabled && bprm->filename == bprm->interp) { -+ if (rstrscript_enabled && bprm->executable == bprm->interpreter) { -+ char path_buffer[PATH_MAX]; -+ char *path_p; -+ path_p = d_path(&bprm->file->f_path,path_buffer,PATH_MAX); - down_read(&interpreters_sem); - list_for_each_entry(node, &interpreters_list, list) { -- if (compare_paths(&bprm->file->f_path, &node->path) == 0) { -+ if (strcmp(path_p, node->spath) == 0) { - uid_t cur_uid = from_kuid(bprm->cred->user_ns, - bprm->cred->uid); - pr_notice_ratelimited -@@ -263,10 +262,13 @@ static int altha_bprm_creds_from_file(struct linux_binprm *bprm, struct file * f - } - if (unlikely(nosuid_enabled && - !uid_eq(bprm->cred->uid, bprm->cred->euid))) { -+ char path_buffer[PATH_MAX]; -+ char *path_p; - uid_t cur_uid = from_kuid(bprm->cred->user_ns, bprm->cred->uid); -+ path_p = d_path(&bprm->file->f_path,path_buffer,PATH_MAX); - down_read(&nosuid_exceptions_sem); - list_for_each_entry(node, &nosuid_exceptions_list, list) { -- if (compare_paths(&bprm->file->f_path, &node->path) == 0) { -+ if (strcmp(path_p, node->spath) == 0) { - pr_notice_ratelimited - ("AltHa/NoSUID: %s permitted to setuid from %d\n", - bprm->filename, cur_uid); --- -2.25.1 - diff --git a/0601-Baikal-M-Kconfig-defconfig.patch b/0601-Baikal-M-Kconfig-defconfig.patch deleted file mode 100644 index e10113d..0000000 --- a/0601-Baikal-M-Kconfig-defconfig.patch +++ /dev/null @@ -1,4476 +0,0 @@ -From 02e6274c8efcdf126d9a71a7e30a3e05e60c5c52 Mon Sep 17 00:00:00 2001 -From: Alexey Sheplyakov -Date: Fri, 20 Mar 2020 13:54:11 +0400 -Subject: [PATCH 601/625] Baikal-M: Kconfig, defconfig - ---- - arch/arm64/Kconfig.platforms | 13 + - arch/arm64/configs/baikal_minimal_defconfig | 4418 +++++++++++++++++++ - drivers/i2c/busses/Kconfig | 2 +- - 3 files changed, 4432 insertions(+), 1 deletion(-) - create mode 100644 arch/arm64/configs/baikal_minimal_defconfig - -diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms -index 5c4ac1c9f4e0..78423bfc808e 100644 ---- a/arch/arm64/Kconfig.platforms -+++ b/arch/arm64/Kconfig.platforms -@@ -29,6 +29,19 @@ config ARCH_ALPINE - This enables support for the Annapurna Labs Alpine - Soc family. - -+config ARCH_BAIKAL -+ bool "Baikal Electronics Baikal-M SOC Family" -+ select GPIOLIB -+ select PINCTRL -+ select OF_GPIO -+ select GPIO_SYSFS -+ select GPIO_DWAPB -+ select GPIO_GENERIC -+ select DW_APB_TIMER -+ select DW_APB_TIMER_OF -+ help -+ This enables support for Baikal Electronics Baikal-M SOC Family -+ - config ARCH_BCM2835 - bool "Broadcom BCM2835 family" - select TIMER_OF -diff --git a/arch/arm64/configs/baikal_minimal_defconfig b/arch/arm64/configs/baikal_minimal_defconfig -new file mode 100644 -index 000000000000..95443474fd9b ---- /dev/null -+++ b/arch/arm64/configs/baikal_minimal_defconfig -@@ -0,0 +1,4418 @@ -+# -+# Automatically generated file; DO NOT EDIT. -+# Linux/arm64 5.6.0 Kernel Configuration -+# -+ -+# -+# Compiler: aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 -+# -+CONFIG_CC_IS_GCC=y -+CONFIG_GCC_VERSION=70500 -+CONFIG_CLANG_VERSION=0 -+CONFIG_CC_CAN_LINK=y -+CONFIG_CC_HAS_ASM_GOTO=y -+CONFIG_CC_HAS_ASM_INLINE=y -+CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y -+CONFIG_IRQ_WORK=y -+CONFIG_BUILDTIME_TABLE_SORT=y -+CONFIG_THREAD_INFO_IN_TASK=y -+ -+# -+# General setup -+# -+CONFIG_INIT_ENV_ARG_LIMIT=32 -+# CONFIG_COMPILE_TEST is not set -+CONFIG_LOCALVERSION="" -+CONFIG_LOCALVERSION_AUTO=y -+CONFIG_BUILD_SALT="" -+CONFIG_DEFAULT_HOSTNAME="" -+CONFIG_SWAP=y -+CONFIG_SYSVIPC=y -+CONFIG_SYSVIPC_SYSCTL=y -+CONFIG_POSIX_MQUEUE=y -+CONFIG_POSIX_MQUEUE_SYSCTL=y -+CONFIG_CROSS_MEMORY_ATTACH=y -+# CONFIG_USELIB is not set -+CONFIG_AUDIT=y -+CONFIG_HAVE_ARCH_AUDITSYSCALL=y -+CONFIG_AUDITSYSCALL=y -+ -+# -+# IRQ subsystem -+# -+CONFIG_GENERIC_IRQ_PROBE=y -+CONFIG_GENERIC_IRQ_SHOW=y -+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y -+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y -+CONFIG_GENERIC_IRQ_MIGRATION=y -+CONFIG_HARDIRQS_SW_RESEND=y -+CONFIG_GENERIC_IRQ_CHIP=y -+CONFIG_IRQ_DOMAIN=y -+CONFIG_IRQ_DOMAIN_HIERARCHY=y -+CONFIG_GENERIC_MSI_IRQ=y -+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y -+CONFIG_IRQ_MSI_IOMMU=y -+CONFIG_HANDLE_DOMAIN_IRQ=y -+CONFIG_IRQ_FORCED_THREADING=y -+CONFIG_SPARSE_IRQ=y -+# CONFIG_GENERIC_IRQ_DEBUGFS is not set -+# end of IRQ subsystem -+ -+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y -+CONFIG_ARCH_CLOCKSOURCE_DATA=y -+CONFIG_GENERIC_TIME_VSYSCALL=y -+CONFIG_GENERIC_CLOCKEVENTS=y -+CONFIG_ARCH_HAS_TICK_BROADCAST=y -+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y -+ -+# -+# Timers subsystem -+# -+CONFIG_TICK_ONESHOT=y -+CONFIG_NO_HZ_COMMON=y -+# CONFIG_HZ_PERIODIC is not set -+CONFIG_NO_HZ_IDLE=y -+# CONFIG_NO_HZ_FULL is not set -+# CONFIG_NO_HZ is not set -+CONFIG_HIGH_RES_TIMERS=y -+# end of Timers subsystem -+ -+# CONFIG_PREEMPT_NONE is not set -+# CONFIG_PREEMPT_VOLUNTARY is not set -+CONFIG_PREEMPT=y -+CONFIG_PREEMPT_COUNT=y -+CONFIG_PREEMPTION=y -+ -+# -+# CPU/Task time and stats accounting -+# -+CONFIG_TICK_CPU_ACCOUNTING=y -+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set -+# CONFIG_IRQ_TIME_ACCOUNTING is not set -+CONFIG_BSD_PROCESS_ACCT=y -+CONFIG_BSD_PROCESS_ACCT_V3=y -+CONFIG_TASKSTATS=y -+CONFIG_TASK_DELAY_ACCT=y -+CONFIG_TASK_XACCT=y -+CONFIG_TASK_IO_ACCOUNTING=y -+CONFIG_PSI=y -+# CONFIG_PSI_DEFAULT_DISABLED is not set -+# end of CPU/Task time and stats accounting -+ -+CONFIG_CPU_ISOLATION=y -+ -+# -+# RCU Subsystem -+# -+CONFIG_TREE_RCU=y -+CONFIG_PREEMPT_RCU=y -+# CONFIG_RCU_EXPERT is not set -+CONFIG_SRCU=y -+CONFIG_TREE_SRCU=y -+CONFIG_TASKS_RCU=y -+CONFIG_RCU_STALL_COMMON=y -+CONFIG_RCU_NEED_SEGCBLIST=y -+# end of RCU Subsystem -+ -+CONFIG_IKCONFIG=y -+CONFIG_IKCONFIG_PROC=y -+# CONFIG_IKHEADERS is not set -+CONFIG_LOG_BUF_SHIFT=17 -+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 -+CONFIG_GENERIC_SCHED_CLOCK=y -+ -+# -+# Scheduler features -+# -+# CONFIG_UCLAMP_TASK is not set -+# end of Scheduler features -+ -+CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y -+CONFIG_CC_HAS_INT128=y -+CONFIG_ARCH_SUPPORTS_INT128=y -+CONFIG_CGROUPS=y -+CONFIG_PAGE_COUNTER=y -+CONFIG_MEMCG=y -+CONFIG_MEMCG_SWAP=y -+CONFIG_MEMCG_SWAP_ENABLED=y -+CONFIG_MEMCG_KMEM=y -+CONFIG_BLK_CGROUP=y -+CONFIG_CGROUP_WRITEBACK=y -+CONFIG_CGROUP_SCHED=y -+CONFIG_FAIR_GROUP_SCHED=y -+CONFIG_CFS_BANDWIDTH=y -+# CONFIG_RT_GROUP_SCHED is not set -+CONFIG_CGROUP_PIDS=y -+# CONFIG_CGROUP_RDMA is not set -+CONFIG_CGROUP_FREEZER=y -+# CONFIG_CGROUP_HUGETLB is not set -+CONFIG_CPUSETS=y -+CONFIG_PROC_PID_CPUSET=y -+CONFIG_CGROUP_DEVICE=y -+CONFIG_CGROUP_CPUACCT=y -+CONFIG_CGROUP_PERF=y -+# CONFIG_CGROUP_BPF is not set -+# CONFIG_CGROUP_DEBUG is not set -+CONFIG_NAMESPACES=y -+CONFIG_UTS_NS=y -+CONFIG_IPC_NS=y -+CONFIG_USER_NS=y -+CONFIG_PID_NS=y -+CONFIG_NET_NS=y -+# CONFIG_CHECKPOINT_RESTORE is not set -+CONFIG_SCHED_AUTOGROUP=y -+# CONFIG_SYSFS_DEPRECATED is not set -+CONFIG_RELAY=y -+CONFIG_BLK_DEV_INITRD=y -+CONFIG_INITRAMFS_SOURCE="" -+CONFIG_RD_GZIP=y -+# CONFIG_RD_BZIP2 is not set -+CONFIG_RD_LZMA=y -+CONFIG_RD_XZ=y -+CONFIG_RD_LZO=y -+CONFIG_RD_LZ4=y -+CONFIG_BOOT_CONFIG=y -+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y -+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -+CONFIG_SYSCTL=y -+CONFIG_HAVE_UID16=y -+CONFIG_SYSCTL_EXCEPTION_TRACE=y -+CONFIG_BPF=y -+# CONFIG_EXPERT is not set -+CONFIG_UID16=y -+CONFIG_MULTIUSER=y -+CONFIG_SYSFS_SYSCALL=y -+CONFIG_FHANDLE=y -+CONFIG_POSIX_TIMERS=y -+CONFIG_PRINTK=y -+CONFIG_PRINTK_NMI=y -+CONFIG_BUG=y -+CONFIG_ELF_CORE=y -+CONFIG_BASE_FULL=y -+CONFIG_FUTEX=y -+CONFIG_FUTEX_PI=y -+CONFIG_HAVE_FUTEX_CMPXCHG=y -+CONFIG_EPOLL=y -+CONFIG_SIGNALFD=y -+CONFIG_TIMERFD=y -+CONFIG_EVENTFD=y -+CONFIG_SHMEM=y -+CONFIG_AIO=y -+CONFIG_IO_URING=y -+CONFIG_ADVISE_SYSCALLS=y -+CONFIG_MEMBARRIER=y -+CONFIG_KALLSYMS=y -+CONFIG_KALLSYMS_ALL=y -+CONFIG_KALLSYMS_BASE_RELATIVE=y -+CONFIG_BPF_SYSCALL=y -+CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y -+# CONFIG_BPF_JIT_ALWAYS_ON is not set -+CONFIG_BPF_JIT_DEFAULT_ON=y -+CONFIG_USERFAULTFD=y -+CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y -+CONFIG_RSEQ=y -+# CONFIG_EMBEDDED is not set -+CONFIG_HAVE_PERF_EVENTS=y -+ -+# -+# Kernel Performance Events And Counters -+# -+CONFIG_PERF_EVENTS=y -+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set -+# end of Kernel Performance Events And Counters -+ -+CONFIG_VM_EVENT_COUNTERS=y -+# CONFIG_COMPAT_BRK is not set -+CONFIG_SLAB=y -+# CONFIG_SLUB is not set -+CONFIG_SLAB_MERGE_DEFAULT=y -+# CONFIG_SLAB_FREELIST_RANDOM is not set -+# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set -+CONFIG_PROFILING=y -+CONFIG_TRACEPOINTS=y -+# end of General setup -+ -+CONFIG_ARM64=y -+CONFIG_64BIT=y -+CONFIG_MMU=y -+CONFIG_ARM64_PAGE_SHIFT=12 -+CONFIG_ARM64_CONT_SHIFT=4 -+CONFIG_ARCH_MMAP_RND_BITS_MIN=18 -+CONFIG_ARCH_MMAP_RND_BITS_MAX=33 -+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 -+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 -+CONFIG_STACKTRACE_SUPPORT=y -+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 -+CONFIG_LOCKDEP_SUPPORT=y -+CONFIG_TRACE_IRQFLAGS_SUPPORT=y -+CONFIG_GENERIC_BUG=y -+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -+CONFIG_GENERIC_HWEIGHT=y -+CONFIG_GENERIC_CSUM=y -+CONFIG_GENERIC_CALIBRATE_DELAY=y -+CONFIG_ZONE_DMA=y -+CONFIG_ZONE_DMA32=y -+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y -+CONFIG_SMP=y -+CONFIG_KERNEL_MODE_NEON=y -+CONFIG_FIX_EARLYCON_MEM=y -+CONFIG_PGTABLE_LEVELS=4 -+CONFIG_ARCH_SUPPORTS_UPROBES=y -+CONFIG_ARCH_PROC_KCORE_TEXT=y -+ -+# -+# Platform selection -+# -+# CONFIG_ARCH_ACTIONS is not set -+# CONFIG_ARCH_AGILEX is not set -+# CONFIG_ARCH_SUNXI is not set -+# CONFIG_ARCH_ALPINE is not set -+CONFIG_ARCH_BAIKAL=y -+# CONFIG_ARCH_BCM2835 is not set -+# CONFIG_ARCH_BCM_IPROC is not set -+# CONFIG_ARCH_BERLIN is not set -+# CONFIG_ARCH_BITMAIN is not set -+# CONFIG_ARCH_BRCMSTB is not set -+# CONFIG_ARCH_EXYNOS is not set -+# CONFIG_ARCH_K3 is not set -+# CONFIG_ARCH_LAYERSCAPE is not set -+# CONFIG_ARCH_LG1K is not set -+# CONFIG_ARCH_HISI is not set -+# CONFIG_ARCH_MEDIATEK is not set -+# CONFIG_ARCH_MESON is not set -+# CONFIG_ARCH_MVEBU is not set -+# CONFIG_ARCH_MXC is not set -+# CONFIG_ARCH_QCOM is not set -+# CONFIG_ARCH_REALTEK is not set -+# CONFIG_ARCH_RENESAS is not set -+# CONFIG_ARCH_ROCKCHIP is not set -+# CONFIG_ARCH_S32 is not set -+# CONFIG_ARCH_SEATTLE is not set -+# CONFIG_ARCH_STRATIX10 is not set -+# CONFIG_ARCH_SYNQUACER is not set -+# CONFIG_ARCH_TEGRA is not set -+# CONFIG_ARCH_SPRD is not set -+# CONFIG_ARCH_THUNDER is not set -+# CONFIG_ARCH_THUNDER2 is not set -+# CONFIG_ARCH_UNIPHIER is not set -+# CONFIG_ARCH_VEXPRESS is not set -+# CONFIG_ARCH_XGENE is not set -+# CONFIG_ARCH_ZX is not set -+CONFIG_ARCH_NR_GPIO=32 -+# CONFIG_ARCH_ZYNQMP is not set -+# end of Platform selection -+ -+# -+# Kernel Features -+# -+ -+# -+# ARM errata workarounds via the alternatives framework -+# -+CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y -+CONFIG_ARM64_ERRATUM_826319=y -+CONFIG_ARM64_ERRATUM_827319=y -+CONFIG_ARM64_ERRATUM_824069=y -+CONFIG_ARM64_ERRATUM_819472=y -+CONFIG_ARM64_ERRATUM_832075=y -+CONFIG_ARM64_ERRATUM_845719=y -+CONFIG_ARM64_ERRATUM_843419=y -+CONFIG_ARM64_ERRATUM_1024718=y -+CONFIG_ARM64_ERRATUM_1418040=y -+CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT_VHE=y -+CONFIG_ARM64_ERRATUM_1165522=y -+CONFIG_ARM64_ERRATUM_1530923=y -+CONFIG_ARM64_ERRATUM_1286807=y -+CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT_NVHE=y -+CONFIG_ARM64_ERRATUM_1319367=y -+CONFIG_ARM64_ERRATUM_1463225=y -+CONFIG_ARM64_ERRATUM_1542419=y -+CONFIG_CAVIUM_ERRATUM_22375=y -+CONFIG_CAVIUM_ERRATUM_23154=y -+CONFIG_CAVIUM_ERRATUM_27456=y -+CONFIG_CAVIUM_ERRATUM_30115=y -+CONFIG_CAVIUM_TX2_ERRATUM_219=y -+CONFIG_QCOM_FALKOR_ERRATUM_1003=y -+CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y -+CONFIG_QCOM_FALKOR_ERRATUM_1009=y -+CONFIG_QCOM_QDF2400_ERRATUM_0065=y -+CONFIG_SOCIONEXT_SYNQUACER_PREITS=y -+CONFIG_HISILICON_ERRATUM_161600802=y -+CONFIG_QCOM_FALKOR_ERRATUM_E1041=y -+CONFIG_FUJITSU_ERRATUM_010001=y -+# end of ARM errata workarounds via the alternatives framework -+ -+CONFIG_ARM64_4K_PAGES=y -+# CONFIG_ARM64_16K_PAGES is not set -+# CONFIG_ARM64_64K_PAGES is not set -+# CONFIG_ARM64_VA_BITS_39 is not set -+CONFIG_ARM64_VA_BITS_48=y -+CONFIG_ARM64_VA_BITS=48 -+CONFIG_ARM64_PA_BITS_48=y -+CONFIG_ARM64_PA_BITS=48 -+# CONFIG_CPU_BIG_ENDIAN is not set -+CONFIG_CPU_LITTLE_ENDIAN=y -+CONFIG_SCHED_MC=y -+# CONFIG_SCHED_SMT is not set -+CONFIG_NR_CPUS=8 -+CONFIG_HOTPLUG_CPU=y -+# CONFIG_NUMA is not set -+CONFIG_HOLES_IN_ZONE=y -+# CONFIG_HZ_100 is not set -+# CONFIG_HZ_250 is not set -+# CONFIG_HZ_300 is not set -+CONFIG_HZ_1000=y -+CONFIG_HZ=1000 -+CONFIG_SCHED_HRTICK=y -+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y -+CONFIG_ARCH_SPARSEMEM_ENABLE=y -+CONFIG_ARCH_SPARSEMEM_DEFAULT=y -+CONFIG_ARCH_SELECT_MEMORY_MODEL=y -+CONFIG_ARCH_FLATMEM_ENABLE=y -+CONFIG_HAVE_ARCH_PFN_VALID=y -+CONFIG_HW_PERF_EVENTS=y -+CONFIG_SYS_SUPPORTS_HUGETLBFS=y -+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y -+CONFIG_SECCOMP=y -+# CONFIG_PARAVIRT is not set -+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set -+CONFIG_KEXEC=y -+CONFIG_KEXEC_FILE=y -+# CONFIG_KEXEC_SIG is not set -+# CONFIG_CRASH_DUMP is not set -+# CONFIG_XEN is not set -+CONFIG_FORCE_MAX_ZONEORDER=11 -+CONFIG_UNMAP_KERNEL_AT_EL0=y -+CONFIG_HARDEN_BRANCH_PREDICTOR=y -+CONFIG_HARDEN_EL2_VECTORS=y -+CONFIG_ARM64_SSBD=y -+CONFIG_RODATA_FULL_DEFAULT_ENABLED=y -+# CONFIG_ARM64_SW_TTBR0_PAN is not set -+CONFIG_ARM64_TAGGED_ADDR_ABI=y -+CONFIG_COMPAT=y -+CONFIG_KUSER_HELPERS=y -+CONFIG_ARMV8_DEPRECATED=y -+CONFIG_SWP_EMULATION=y -+CONFIG_CP15_BARRIER_EMULATION=y -+CONFIG_SETEND_EMULATION=y -+ -+# -+# ARMv8.1 architectural features -+# -+CONFIG_ARM64_HW_AFDBM=y -+CONFIG_ARM64_PAN=y -+CONFIG_ARM64_LSE_ATOMICS=y -+CONFIG_ARM64_USE_LSE_ATOMICS=y -+CONFIG_ARM64_VHE=y -+# end of ARMv8.1 architectural features -+ -+# -+# ARMv8.2 architectural features -+# -+CONFIG_ARM64_UAO=y -+# CONFIG_ARM64_PMEM is not set -+CONFIG_ARM64_RAS_EXTN=y -+CONFIG_ARM64_CNP=y -+# end of ARMv8.2 architectural features -+ -+# -+# ARMv8.3 architectural features -+# -+CONFIG_ARM64_PTR_AUTH=y -+# end of ARMv8.3 architectural features -+ -+# -+# ARMv8.5 architectural features -+# -+CONFIG_ARM64_E0PD=y -+CONFIG_ARCH_RANDOM=y -+# end of ARMv8.5 architectural features -+ -+CONFIG_ARM64_SVE=y -+CONFIG_ARM64_MODULE_PLTS=y -+# CONFIG_ARM64_PSEUDO_NMI is not set -+# CONFIG_RANDOMIZE_BASE is not set -+# end of Kernel Features -+ -+# -+# Boot options -+# -+CONFIG_CMDLINE="" -+CONFIG_EFI_STUB=y -+CONFIG_EFI=y -+CONFIG_DMI=y -+# end of Boot options -+ -+CONFIG_SYSVIPC_COMPAT=y -+CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y -+ -+# -+# Power management options -+# -+CONFIG_SUSPEND=y -+CONFIG_SUSPEND_FREEZER=y -+CONFIG_HIBERNATE_CALLBACKS=y -+CONFIG_HIBERNATION=y -+CONFIG_PM_STD_PARTITION="" -+CONFIG_PM_SLEEP=y -+CONFIG_PM_SLEEP_SMP=y -+# CONFIG_PM_AUTOSLEEP is not set -+# CONFIG_PM_WAKELOCKS is not set -+CONFIG_PM=y -+# CONFIG_PM_DEBUG is not set -+CONFIG_PM_CLK=y -+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set -+CONFIG_CPU_PM=y -+# CONFIG_ENERGY_MODEL is not set -+CONFIG_ARCH_HIBERNATION_POSSIBLE=y -+CONFIG_ARCH_HIBERNATION_HEADER=y -+CONFIG_ARCH_SUSPEND_POSSIBLE=y -+# end of Power management options -+ -+# -+# CPU Power Management -+# -+ -+# -+# CPU Idle -+# -+CONFIG_CPU_IDLE=y -+CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y -+CONFIG_CPU_IDLE_GOV_LADDER=y -+CONFIG_CPU_IDLE_GOV_MENU=y -+# CONFIG_CPU_IDLE_GOV_TEO is not set -+CONFIG_DT_IDLE_STATES=y -+ -+# -+# ARM CPU Idle Drivers -+# -+CONFIG_ARM_CPUIDLE=y -+# CONFIG_ARM_PSCI_CPUIDLE is not set -+# end of ARM CPU Idle Drivers -+# end of CPU Idle -+ -+# -+# CPU Frequency scaling -+# -+CONFIG_CPU_FREQ=y -+CONFIG_CPU_FREQ_GOV_ATTR_SET=y -+CONFIG_CPU_FREQ_GOV_COMMON=y -+# CONFIG_CPU_FREQ_STAT is not set -+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set -+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set -+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set -+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set -+CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y -+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -+CONFIG_CPU_FREQ_GOV_POWERSAVE=m -+CONFIG_CPU_FREQ_GOV_USERSPACE=m -+CONFIG_CPU_FREQ_GOV_ONDEMAND=m -+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m -+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -+ -+# -+# CPU frequency scaling drivers -+# -+CONFIG_CPUFREQ_DT=m -+CONFIG_CPUFREQ_DT_PLATDEV=y -+# CONFIG_QORIQ_CPUFREQ is not set -+# end of CPU Frequency scaling -+# end of CPU Power Management -+ -+# -+# Firmware Drivers -+# -+# CONFIG_ARM_SCMI_PROTOCOL is not set -+# CONFIG_ARM_SCPI_PROTOCOL is not set -+# CONFIG_ARM_SDE_INTERFACE is not set -+CONFIG_DMIID=y -+# CONFIG_DMI_SYSFS is not set -+# CONFIG_FW_CFG_SYSFS is not set -+CONFIG_HAVE_ARM_SMCCC=y -+CONFIG_ARM_PSCI_FW=y -+# CONFIG_ARM_PSCI_CHECKER is not set -+# CONFIG_GOOGLE_FIRMWARE is not set -+ -+# -+# EFI (Extensible Firmware Interface) Support -+# -+CONFIG_EFI_VARS=y -+CONFIG_EFI_ESRT=y -+CONFIG_EFI_VARS_PSTORE=y -+# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set -+CONFIG_EFI_PARAMS_FROM_FDT=y -+CONFIG_EFI_RUNTIME_WRAPPERS=y -+CONFIG_EFI_ARMSTUB=y -+CONFIG_EFI_ARMSTUB_DTB_LOADER=y -+CONFIG_EFI_BOOTLOADER_CONTROL=y -+# CONFIG_EFI_CAPSULE_LOADER is not set -+# CONFIG_EFI_TEST is not set -+# CONFIG_RESET_ATTACK_MITIGATION is not set -+# CONFIG_EFI_DISABLE_PCI_DMA is not set -+# end of EFI (Extensible Firmware Interface) Support -+ -+CONFIG_EFI_EARLYCON=y -+ -+# -+# Tegra firmware driver -+# -+# end of Tegra firmware driver -+# end of Firmware Drivers -+ -+CONFIG_ARCH_SUPPORTS_ACPI=y -+# CONFIG_ACPI is not set -+# CONFIG_VIRTUALIZATION is not set -+# CONFIG_ARM64_CRYPTO is not set -+ -+# -+# General architecture-dependent options -+# -+CONFIG_CRASH_CORE=y -+CONFIG_KEXEC_CORE=y -+CONFIG_KPROBES=y -+CONFIG_JUMP_LABEL=y -+CONFIG_STATIC_KEYS_SELFTEST=y -+CONFIG_UPROBES=y -+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y -+CONFIG_KRETPROBES=y -+CONFIG_HAVE_KPROBES=y -+CONFIG_HAVE_KRETPROBES=y -+CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y -+CONFIG_HAVE_NMI=y -+CONFIG_HAVE_ARCH_TRACEHOOK=y -+CONFIG_HAVE_DMA_CONTIGUOUS=y -+CONFIG_GENERIC_SMP_IDLE_THREAD=y -+CONFIG_GENERIC_IDLE_POLL_SETUP=y -+CONFIG_ARCH_HAS_FORTIFY_SOURCE=y -+CONFIG_ARCH_HAS_KEEPINITRD=y -+CONFIG_ARCH_HAS_SET_MEMORY=y -+CONFIG_ARCH_HAS_SET_DIRECT_MAP=y -+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y -+CONFIG_HAVE_ASM_MODVERSIONS=y -+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y -+CONFIG_HAVE_RSEQ=y -+CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y -+CONFIG_HAVE_CLK=y -+CONFIG_HAVE_HW_BREAKPOINT=y -+CONFIG_HAVE_PERF_REGS=y -+CONFIG_HAVE_PERF_USER_STACK_DUMP=y -+CONFIG_HAVE_ARCH_JUMP_LABEL=y -+CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y -+CONFIG_MMU_GATHER_TABLE_FREE=y -+CONFIG_MMU_GATHER_RCU_TABLE_FREE=y -+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y -+CONFIG_HAVE_CMPXCHG_LOCAL=y -+CONFIG_HAVE_CMPXCHG_DOUBLE=y -+CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y -+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y -+CONFIG_SECCOMP_FILTER=y -+CONFIG_HAVE_ARCH_STACKLEAK=y -+CONFIG_HAVE_STACKPROTECTOR=y -+CONFIG_CC_HAS_STACKPROTECTOR_NONE=y -+CONFIG_STACKPROTECTOR=y -+CONFIG_STACKPROTECTOR_STRONG=y -+CONFIG_HAVE_CONTEXT_TRACKING=y -+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y -+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y -+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y -+CONFIG_HAVE_ARCH_HUGE_VMAP=y -+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -+CONFIG_MODULES_USE_ELF_RELA=y -+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y -+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y -+CONFIG_ARCH_MMAP_RND_BITS=18 -+CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y -+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 -+CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y -+CONFIG_HAVE_COPY_THREAD_TLS=y -+CONFIG_CLONE_BACKWARDS=y -+CONFIG_OLD_SIGSUSPEND3=y -+CONFIG_COMPAT_OLD_SIGACTION=y -+CONFIG_COMPAT_32BIT_TIME=y -+CONFIG_HAVE_ARCH_VMAP_STACK=y -+CONFIG_VMAP_STACK=y -+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y -+CONFIG_STRICT_KERNEL_RWX=y -+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y -+CONFIG_STRICT_MODULE_RWX=y -+CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y -+CONFIG_ARCH_USE_MEMREMAP_PROT=y -+# CONFIG_LOCK_EVENT_COUNTS is not set -+ -+# -+# GCOV-based kernel profiling -+# -+# CONFIG_GCOV_KERNEL is not set -+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y -+# end of GCOV-based kernel profiling -+ -+CONFIG_PLUGIN_HOSTCC="" -+CONFIG_HAVE_GCC_PLUGINS=y -+# end of General architecture-dependent options -+ -+CONFIG_RT_MUTEXES=y -+CONFIG_BASE_SMALL=0 -+CONFIG_MODULES=y -+# CONFIG_MODULE_FORCE_LOAD is not set -+CONFIG_MODULE_UNLOAD=y -+# CONFIG_MODULE_FORCE_UNLOAD is not set -+# CONFIG_MODVERSIONS is not set -+# CONFIG_MODULE_SRCVERSION_ALL is not set -+# CONFIG_MODULE_SIG is not set -+CONFIG_MODULE_COMPRESS=y -+#CONFIG_MODULE_COMPRESS_GZIP is not set -+CONFIG_MODULE_COMPRESS_XZ=y -+# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set -+# CONFIG_UNUSED_SYMBOLS is not set -+# CONFIG_TRIM_UNUSED_KSYMS is not set -+CONFIG_MODULES_TREE_LOOKUP=y -+CONFIG_BLOCK=y -+CONFIG_BLK_RQ_ALLOC_TIME=y -+CONFIG_BLK_SCSI_REQUEST=y -+CONFIG_BLK_CGROUP_RWSTAT=y -+CONFIG_BLK_DEV_BSG=y -+CONFIG_BLK_DEV_BSGLIB=y -+# CONFIG_BLK_DEV_INTEGRITY is not set -+# CONFIG_BLK_DEV_ZONED is not set -+CONFIG_BLK_DEV_THROTTLING=y -+# CONFIG_BLK_DEV_THROTTLING_LOW is not set -+# CONFIG_BLK_CMDLINE_PARSER is not set -+CONFIG_BLK_WBT=y -+CONFIG_BLK_CGROUP_IOLATENCY=y -+CONFIG_BLK_CGROUP_IOCOST=y -+CONFIG_BLK_WBT_MQ=y -+# CONFIG_BLK_DEBUG_FS is not set -+# CONFIG_BLK_SED_OPAL is not set -+ -+# -+# Partition Types -+# -+CONFIG_PARTITION_ADVANCED=y -+# CONFIG_ACORN_PARTITION is not set -+# CONFIG_AIX_PARTITION is not set -+# CONFIG_OSF_PARTITION is not set -+# CONFIG_AMIGA_PARTITION is not set -+# CONFIG_ATARI_PARTITION is not set -+# CONFIG_MAC_PARTITION is not set -+CONFIG_MSDOS_PARTITION=y -+# CONFIG_BSD_DISKLABEL is not set -+# CONFIG_MINIX_SUBPARTITION is not set -+# CONFIG_SOLARIS_X86_PARTITION is not set -+# CONFIG_UNIXWARE_DISKLABEL is not set -+# CONFIG_LDM_PARTITION is not set -+# CONFIG_SGI_PARTITION is not set -+# CONFIG_ULTRIX_PARTITION is not set -+# CONFIG_SUN_PARTITION is not set -+# CONFIG_KARMA_PARTITION is not set -+CONFIG_EFI_PARTITION=y -+# CONFIG_SYSV68_PARTITION is not set -+# CONFIG_CMDLINE_PARTITION is not set -+# end of Partition Types -+ -+CONFIG_BLOCK_COMPAT=y -+CONFIG_BLK_MQ_PCI=y -+CONFIG_BLK_PM=y -+ -+# -+# IO Schedulers -+# -+CONFIG_MQ_IOSCHED_DEADLINE=y -+CONFIG_MQ_IOSCHED_KYBER=y -+CONFIG_IOSCHED_BFQ=y -+CONFIG_BFQ_GROUP_IOSCHED=y -+# CONFIG_BFQ_CGROUP_DEBUG is not set -+# end of IO Schedulers -+ -+CONFIG_UNINLINE_SPIN_UNLOCK=y -+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y -+CONFIG_MUTEX_SPIN_ON_OWNER=y -+CONFIG_RWSEM_SPIN_ON_OWNER=y -+CONFIG_LOCK_SPIN_ON_OWNER=y -+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y -+CONFIG_QUEUED_SPINLOCKS=y -+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y -+CONFIG_QUEUED_RWLOCKS=y -+CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y -+CONFIG_FREEZER=y -+ -+# -+# Executable file formats -+# -+CONFIG_BINFMT_ELF=y -+CONFIG_COMPAT_BINFMT_ELF=y -+CONFIG_ELFCORE=y -+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y -+CONFIG_BINFMT_SCRIPT=y -+CONFIG_BINFMT_MISC=m -+CONFIG_COREDUMP=y -+# end of Executable file formats -+ -+# -+# Memory Management options -+# -+CONFIG_SELECT_MEMORY_MODEL=y -+# CONFIG_FLATMEM_MANUAL is not set -+CONFIG_SPARSEMEM_MANUAL=y -+CONFIG_SPARSEMEM=y -+CONFIG_HAVE_MEMORY_PRESENT=y -+CONFIG_SPARSEMEM_EXTREME=y -+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y -+CONFIG_SPARSEMEM_VMEMMAP=y -+CONFIG_HAVE_FAST_GUP=y -+CONFIG_ARCH_KEEP_MEMBLOCK=y -+CONFIG_MEMORY_ISOLATION=y -+# CONFIG_MEMORY_HOTPLUG is not set -+CONFIG_SPLIT_PTLOCK_CPUS=4 -+CONFIG_COMPACTION=y -+CONFIG_MIGRATION=y -+CONFIG_CONTIG_ALLOC=y -+CONFIG_PHYS_ADDR_T_64BIT=y -+CONFIG_BOUNCE=y -+CONFIG_KSM=y -+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 -+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y -+# CONFIG_MEMORY_FAILURE is not set -+CONFIG_TRANSPARENT_HUGEPAGE=y -+# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set -+CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y -+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y -+# CONFIG_CLEANCACHE is not set -+CONFIG_FRONTSWAP=y -+CONFIG_CMA=y -+# CONFIG_CMA_DEBUG is not set -+# CONFIG_CMA_DEBUGFS is not set -+CONFIG_CMA_AREAS=7 -+CONFIG_ZSWAP=y -+CONFIG_ZPOOL=y -+CONFIG_ZBUD=m -+CONFIG_Z3FOLD=m -+CONFIG_ZSMALLOC=m -+# CONFIG_PGTABLE_MAPPING is not set -+# CONFIG_ZSMALLOC_STAT is not set -+CONFIG_GENERIC_EARLY_IOREMAP=y -+# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set -+# CONFIG_IDLE_PAGE_TRACKING is not set -+CONFIG_ARCH_HAS_PTE_DEVMAP=y -+# CONFIG_PERCPU_STATS is not set -+# CONFIG_GUP_BENCHMARK is not set -+# CONFIG_READ_ONLY_THP_FOR_FS is not set -+CONFIG_ARCH_HAS_PTE_SPECIAL=y -+# end of Memory Management options -+ -+CONFIG_NET=y -+ -+# -+# Networking options -+# -+CONFIG_PACKET=y -+CONFIG_PACKET_DIAG=m -+CONFIG_UNIX=y -+CONFIG_UNIX_SCM=y -+CONFIG_UNIX_DIAG=m -+# CONFIG_TLS is not set -+# CONFIG_XFRM_USER is not set -+# CONFIG_NET_KEY is not set -+# CONFIG_XDP_SOCKETS is not set -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+# CONFIG_IP_ADVANCED_ROUTER is not set -+# CONFIG_IP_PNP is not set -+# CONFIG_NET_IPIP is not set -+# CONFIG_NET_IPGRE_DEMUX is not set -+CONFIG_NET_IP_TUNNEL=m -+# CONFIG_IP_MROUTE is not set -+CONFIG_SYN_COOKIES=y -+# CONFIG_NET_IPVTI is not set -+# CONFIG_NET_FOU is not set -+# CONFIG_NET_FOU_IP_TUNNELS is not set -+# CONFIG_INET_AH is not set -+# CONFIG_INET_ESP is not set -+# CONFIG_INET_IPCOMP is not set -+CONFIG_INET_TUNNEL=m -+CONFIG_INET_DIAG=m -+CONFIG_INET_TCP_DIAG=m -+CONFIG_INET_UDP_DIAG=m -+CONFIG_INET_RAW_DIAG=m -+CONFIG_INET_DIAG_DESTROY=y -+# CONFIG_TCP_CONG_ADVANCED is not set -+CONFIG_TCP_CONG_CUBIC=y -+CONFIG_DEFAULT_TCP_CONG="cubic" -+# CONFIG_TCP_MD5SIG is not set -+CONFIG_IPV6=m -+CONFIG_IPV6_ROUTER_PREF=y -+CONFIG_IPV6_ROUTE_INFO=y -+CONFIG_IPV6_OPTIMISTIC_DAD=y -+# CONFIG_INET6_AH is not set -+# CONFIG_INET6_ESP is not set -+# CONFIG_INET6_IPCOMP is not set -+# CONFIG_IPV6_MIP6 is not set -+CONFIG_INET6_TUNNEL=m -+# CONFIG_IPV6_VTI is not set -+CONFIG_IPV6_SIT=m -+CONFIG_IPV6_SIT_6RD=y -+CONFIG_IPV6_NDISC_NODETYPE=y -+CONFIG_IPV6_TUNNEL=m -+# CONFIG_IPV6_MULTIPLE_TABLES is not set -+# CONFIG_IPV6_MROUTE is not set -+# CONFIG_IPV6_SEG6_LWTUNNEL is not set -+# CONFIG_IPV6_SEG6_HMAC is not set -+# CONFIG_MPTCP is not set -+# CONFIG_NETWORK_SECMARK is not set -+CONFIG_NET_PTP_CLASSIFY=y -+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set -+# CONFIG_NETFILTER is not set -+# CONFIG_BPFILTER is not set -+# CONFIG_IP_DCCP is not set -+# CONFIG_IP_SCTP is not set -+# CONFIG_RDS is not set -+# CONFIG_TIPC is not set -+# CONFIG_ATM is not set -+# CONFIG_L2TP is not set -+CONFIG_STP=m -+CONFIG_GARP=m -+CONFIG_MRP=m -+CONFIG_BRIDGE=m -+CONFIG_BRIDGE_IGMP_SNOOPING=y -+CONFIG_BRIDGE_VLAN_FILTERING=y -+CONFIG_HAVE_NET_DSA=y -+# CONFIG_NET_DSA is not set -+CONFIG_VLAN_8021Q=m -+CONFIG_VLAN_8021Q_GVRP=y -+CONFIG_VLAN_8021Q_MVRP=y -+# CONFIG_DECNET is not set -+CONFIG_LLC=m -+# CONFIG_LLC2 is not set -+# CONFIG_ATALK is not set -+# CONFIG_X25 is not set -+# CONFIG_LAPB is not set -+# CONFIG_PHONET is not set -+# CONFIG_6LOWPAN is not set -+# CONFIG_IEEE802154 is not set -+# CONFIG_NET_SCHED is not set -+# CONFIG_DCB is not set -+# CONFIG_DNS_RESOLVER is not set -+# CONFIG_BATMAN_ADV is not set -+# CONFIG_OPENVSWITCH is not set -+# CONFIG_VSOCKETS is not set -+CONFIG_NETLINK_DIAG=m -+# CONFIG_MPLS is not set -+# CONFIG_NET_NSH is not set -+# CONFIG_HSR is not set -+# CONFIG_NET_SWITCHDEV is not set -+# CONFIG_NET_L3_MASTER_DEV is not set -+# CONFIG_NET_NCSI is not set -+CONFIG_RPS=y -+CONFIG_RFS_ACCEL=y -+CONFIG_XPS=y -+# CONFIG_CGROUP_NET_PRIO is not set -+# CONFIG_CGROUP_NET_CLASSID is not set -+CONFIG_NET_RX_BUSY_POLL=y -+CONFIG_BQL=y -+CONFIG_BPF_JIT=y -+CONFIG_NET_FLOW_LIMIT=y -+ -+# -+# Network testing -+# -+# CONFIG_NET_PKTGEN is not set -+# CONFIG_NET_DROP_MONITOR is not set -+# end of Network testing -+# end of Networking options -+ -+# CONFIG_HAMRADIO is not set -+# CONFIG_CAN is not set -+# CONFIG_BT is not set -+# CONFIG_AF_RXRPC is not set -+# CONFIG_AF_KCM is not set -+# CONFIG_WIRELESS is not set -+# CONFIG_WIMAX is not set -+# CONFIG_RFKILL is not set -+# CONFIG_NET_9P is not set -+# CONFIG_CAIF is not set -+# CONFIG_CEPH_LIB is not set -+# CONFIG_NFC is not set -+# CONFIG_PSAMPLE is not set -+# CONFIG_NET_IFE is not set -+# CONFIG_LWTUNNEL is not set -+CONFIG_DST_CACHE=y -+CONFIG_GRO_CELLS=y -+CONFIG_PAGE_POOL=y -+# CONFIG_FAILOVER is not set -+CONFIG_ETHTOOL_NETLINK=y -+CONFIG_HAVE_EBPF_JIT=y -+ -+# -+# Device Drivers -+# -+CONFIG_ARM_AMBA=y -+CONFIG_HAVE_PCI=y -+CONFIG_PCI=y -+CONFIG_PCI_DOMAINS=y -+CONFIG_PCI_DOMAINS_GENERIC=y -+CONFIG_PCI_SYSCALL=y -+CONFIG_PCIEPORTBUS=y -+CONFIG_HOTPLUG_PCI_PCIE=y -+CONFIG_PCIEAER=y -+# CONFIG_PCIEAER_INJECT is not set -+CONFIG_PCIE_ECRC=y -+CONFIG_PCIEASPM=y -+CONFIG_PCIEASPM_DEFAULT=y -+# CONFIG_PCIEASPM_POWERSAVE is not set -+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set -+# CONFIG_PCIEASPM_PERFORMANCE is not set -+CONFIG_PCIE_PME=y -+# CONFIG_PCIE_DPC is not set -+CONFIG_PCIE_PTM=y -+# CONFIG_PCIE_BW is not set -+CONFIG_PCI_MSI=y -+CONFIG_PCI_MSI_IRQ_DOMAIN=y -+CONFIG_PCI_QUIRKS=y -+# CONFIG_PCI_DEBUG is not set -+CONFIG_PCI_REALLOC_ENABLE_AUTO=y -+CONFIG_PCI_STUB=m -+# CONFIG_PCI_PF_STUB is not set -+CONFIG_PCI_ATS=y -+CONFIG_PCI_IOV=y -+CONFIG_PCI_PRI=y -+CONFIG_PCI_PASID=y -+CONFIG_PCI_LABEL=y -+CONFIG_HOTPLUG_PCI=y -+# CONFIG_HOTPLUG_PCI_CPCI is not set -+# CONFIG_HOTPLUG_PCI_SHPC is not set -+ -+# -+# PCI controller drivers -+# -+# CONFIG_PCI_FTPCI100 is not set -+# CONFIG_PCI_HOST_GENERIC is not set -+# CONFIG_PCIE_XILINX is not set -+# CONFIG_PCI_XGENE is not set -+# CONFIG_PCIE_ALTERA is not set -+# CONFIG_PCI_HOST_THUNDER_PEM is not set -+# CONFIG_PCI_HOST_THUNDER_ECAM is not set -+CONFIG_PCI_BAIKAL=m -+ -+# -+# DesignWare PCI Core Support -+# -+CONFIG_PCIE_DW=y -+CONFIG_PCIE_DW_HOST=y -+CONFIG_PCIE_DW_PLAT=y -+CONFIG_PCIE_DW_PLAT_HOST=y -+# CONFIG_PCIE_DW_PLAT_EP is not set -+# CONFIG_PCI_HISI is not set -+# CONFIG_PCIE_KIRIN is not set -+# CONFIG_PCI_MESON is not set -+# CONFIG_PCIE_AL is not set -+# end of DesignWare PCI Core Support -+ -+# -+# Cadence PCIe controllers support -+# -+# CONFIG_PCIE_CADENCE_PLAT_HOST is not set -+# CONFIG_PCIE_CADENCE_PLAT_EP is not set -+# end of Cadence PCIe controllers support -+# end of PCI controller drivers -+ -+# -+# PCI Endpoint -+# -+CONFIG_PCI_ENDPOINT=y -+# CONFIG_PCI_ENDPOINT_CONFIGFS is not set -+# CONFIG_PCI_EPF_TEST is not set -+# end of PCI Endpoint -+ -+# -+# PCI switch controller drivers -+# -+# CONFIG_PCI_SW_SWITCHTEC is not set -+# end of PCI switch controller drivers -+ -+# CONFIG_PCCARD is not set -+# CONFIG_RAPIDIO is not set -+ -+# -+# Generic Driver Options -+# -+# CONFIG_UEVENT_HELPER is not set -+CONFIG_DEVTMPFS=y -+CONFIG_DEVTMPFS_MOUNT=y -+CONFIG_STANDALONE=y -+CONFIG_PREVENT_FIRMWARE_BUILD=y -+ -+# -+# Firmware loader -+# -+CONFIG_FW_LOADER=y -+CONFIG_EXTRA_FIRMWARE="" -+# CONFIG_FW_LOADER_USER_HELPER is not set -+# CONFIG_FW_LOADER_COMPRESS is not set -+CONFIG_FW_CACHE=y -+# end of Firmware loader -+ -+CONFIG_ALLOW_DEV_COREDUMP=y -+# CONFIG_DEBUG_DRIVER is not set -+# CONFIG_DEBUG_DEVRES is not set -+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set -+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set -+CONFIG_GENERIC_CPU_AUTOPROBE=y -+CONFIG_GENERIC_CPU_VULNERABILITIES=y -+CONFIG_REGMAP=y -+CONFIG_REGMAP_I2C=y -+CONFIG_REGMAP_SPI=y -+CONFIG_REGMAP_MMIO=y -+CONFIG_DMA_SHARED_BUFFER=y -+# CONFIG_DMA_FENCE_TRACE is not set -+CONFIG_GENERIC_ARCH_TOPOLOGY=y -+# end of Generic Driver Options -+ -+# -+# Bus devices -+# -+# CONFIG_BRCMSTB_GISB_ARB is not set -+# CONFIG_MOXTET is not set -+# CONFIG_SIMPLE_PM_BUS is not set -+# CONFIG_VEXPRESS_CONFIG is not set -+# end of Bus devices -+ -+CONFIG_CONNECTOR=m -+# CONFIG_GNSS is not set -+CONFIG_MTD=m -+# CONFIG_MTD_TESTS is not set -+ -+# -+# Partition parsers -+# -+# CONFIG_MTD_AR7_PARTS is not set -+CONFIG_MTD_CMDLINE_PARTS=m -+CONFIG_MTD_OF_PARTS=m -+# CONFIG_MTD_AFS_PARTS is not set -+# CONFIG_MTD_REDBOOT_PARTS is not set -+# end of Partition parsers -+ -+# -+# User Modules And Translation Layers -+# -+CONFIG_MTD_BLKDEVS=m -+CONFIG_MTD_BLOCK=m -+# CONFIG_MTD_BLOCK_RO is not set -+# CONFIG_FTL is not set -+# CONFIG_NFTL is not set -+# CONFIG_INFTL is not set -+# CONFIG_RFD_FTL is not set -+# CONFIG_SSFDC is not set -+# CONFIG_SM_FTL is not set -+# CONFIG_MTD_OOPS is not set -+# CONFIG_MTD_SWAP is not set -+# CONFIG_MTD_PARTITIONED_MASTER is not set -+ -+# -+# RAM/ROM/Flash chip drivers -+# -+# CONFIG_MTD_CFI is not set -+CONFIG_MTD_JEDECPROBE=m -+CONFIG_MTD_GEN_PROBE=m -+# CONFIG_MTD_CFI_ADV_OPTIONS is not set -+CONFIG_MTD_MAP_BANK_WIDTH_1=y -+CONFIG_MTD_MAP_BANK_WIDTH_2=y -+CONFIG_MTD_MAP_BANK_WIDTH_4=y -+CONFIG_MTD_CFI_I1=y -+CONFIG_MTD_CFI_I2=y -+# CONFIG_MTD_CFI_INTELEXT is not set -+# CONFIG_MTD_CFI_AMDSTD is not set -+# CONFIG_MTD_CFI_STAA is not set -+CONFIG_MTD_CFI_UTIL=m -+# CONFIG_MTD_RAM is not set -+# CONFIG_MTD_ROM is not set -+# CONFIG_MTD_ABSENT is not set -+# end of RAM/ROM/Flash chip drivers -+ -+# -+# Mapping drivers for chip access -+# -+# CONFIG_MTD_COMPLEX_MAPPINGS is not set -+# CONFIG_MTD_PHYSMAP is not set -+# CONFIG_MTD_INTEL_VR_NOR is not set -+# CONFIG_MTD_PLATRAM is not set -+# end of Mapping drivers for chip access -+ -+# -+# Self-contained MTD device drivers -+# -+# CONFIG_MTD_PMC551 is not set -+# CONFIG_MTD_DATAFLASH is not set -+# CONFIG_MTD_MCHP23K256 is not set -+# CONFIG_MTD_SST25L is not set -+# CONFIG_MTD_SLRAM is not set -+# CONFIG_MTD_PHRAM is not set -+# CONFIG_MTD_MTDRAM is not set -+# CONFIG_MTD_BLOCK2MTD is not set -+ -+# -+# Disk-On-Chip Device Drivers -+# -+# CONFIG_MTD_DOCG3 is not set -+# end of Self-contained MTD device drivers -+ -+# CONFIG_MTD_ONENAND is not set -+# CONFIG_MTD_RAW_NAND is not set -+# CONFIG_MTD_SPI_NAND is not set -+ -+# -+# LPDDR & LPDDR2 PCM memory drivers -+# -+# CONFIG_MTD_LPDDR is not set -+# end of LPDDR & LPDDR2 PCM memory drivers -+ -+CONFIG_MTD_SPI_NOR=m -+CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y -+# CONFIG_SPI_CADENCE_QUADSPI is not set -+# CONFIG_SPI_MTK_QUADSPI is not set -+# CONFIG_MTD_UBI is not set -+# CONFIG_MTD_HYPERBUS is not set -+CONFIG_DTC=y -+CONFIG_OF=y -+# CONFIG_OF_UNITTEST is not set -+CONFIG_OF_FLATTREE=y -+CONFIG_OF_EARLY_FLATTREE=y -+CONFIG_OF_KOBJ=y -+CONFIG_OF_ADDRESS=y -+CONFIG_OF_IRQ=y -+CONFIG_OF_NET=y -+CONFIG_OF_MDIO=y -+CONFIG_OF_RESERVED_MEM=y -+# CONFIG_OF_OVERLAY is not set -+# CONFIG_PARPORT is not set -+CONFIG_BLK_DEV=y -+# CONFIG_BLK_DEV_NULL_BLK is not set -+CONFIG_CDROM=m -+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set -+CONFIG_ZRAM=m -+# CONFIG_ZRAM_WRITEBACK is not set -+# CONFIG_ZRAM_MEMORY_TRACKING is not set -+# CONFIG_BLK_DEV_UMEM is not set -+CONFIG_BLK_DEV_LOOP=y -+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 -+# CONFIG_BLK_DEV_CRYPTOLOOP is not set -+# CONFIG_BLK_DEV_DRBD is not set -+# CONFIG_BLK_DEV_NBD is not set -+# CONFIG_BLK_DEV_SKD is not set -+# CONFIG_BLK_DEV_SX8 is not set -+CONFIG_BLK_DEV_RAM=y -+CONFIG_BLK_DEV_RAM_COUNT=16 -+CONFIG_BLK_DEV_RAM_SIZE=16384 -+# CONFIG_CDROM_PKTCDVD is not set -+# CONFIG_ATA_OVER_ETH is not set -+# CONFIG_BLK_DEV_RBD is not set -+# CONFIG_BLK_DEV_RSXX is not set -+ -+# -+# NVME Support -+# -+CONFIG_NVME_CORE=m -+CONFIG_BLK_DEV_NVME=m -+# CONFIG_NVME_MULTIPATH is not set -+# CONFIG_NVME_HWMON is not set -+# CONFIG_NVME_FC is not set -+# CONFIG_NVME_TCP is not set -+# CONFIG_NVME_TARGET is not set -+# end of NVME Support -+ -+# -+# Misc devices -+# -+# CONFIG_AD525X_DPOT is not set -+# CONFIG_DUMMY_IRQ is not set -+# CONFIG_PHANTOM is not set -+# CONFIG_TIFM_CORE is not set -+# CONFIG_ICS932S401 is not set -+# CONFIG_ENCLOSURE_SERVICES is not set -+# CONFIG_HP_ILO is not set -+# CONFIG_APDS9802ALS is not set -+# CONFIG_ISL29003 is not set -+# CONFIG_ISL29020 is not set -+# CONFIG_SENSORS_TSL2550 is not set -+# CONFIG_SENSORS_BH1770 is not set -+# CONFIG_SENSORS_APDS990X is not set -+# CONFIG_HMC6352 is not set -+# CONFIG_DS1682 is not set -+# CONFIG_LATTICE_ECP3_CONFIG is not set -+# CONFIG_SRAM is not set -+# CONFIG_PCI_ENDPOINT_TEST is not set -+# CONFIG_XILINX_SDFEC is not set -+# CONFIG_PVPANIC is not set -+CONFIG_TP_BMC=y -+# CONFIG_C2PORT is not set -+ -+# -+# EEPROM support -+# -+CONFIG_EEPROM_AT24=m -+CONFIG_EEPROM_AT25=m -+# CONFIG_EEPROM_LEGACY is not set -+# CONFIG_EEPROM_MAX6875 is not set -+# CONFIG_EEPROM_93CX6 is not set -+# CONFIG_EEPROM_93XX46 is not set -+# CONFIG_EEPROM_IDT_89HPESX is not set -+# CONFIG_EEPROM_EE1004 is not set -+# end of EEPROM support -+ -+# CONFIG_CB710_CORE is not set -+ -+# -+# Texas Instruments shared transport line discipline -+# -+# CONFIG_TI_ST is not set -+# end of Texas Instruments shared transport line discipline -+ -+# CONFIG_SENSORS_LIS3_SPI is not set -+# CONFIG_SENSORS_LIS3_I2C is not set -+# CONFIG_ALTERA_STAPL is not set -+ -+# -+# Intel MIC & related support -+# -+# CONFIG_VOP_BUS is not set -+# end of Intel MIC & related support -+ -+# CONFIG_GENWQE is not set -+# CONFIG_ECHO is not set -+# CONFIG_MISC_ALCOR_PCI is not set -+# CONFIG_MISC_RTSX_PCI is not set -+# CONFIG_MISC_RTSX_USB is not set -+# CONFIG_HABANA_AI is not set -+# end of Misc devices -+ -+# -+# SCSI device support -+# -+CONFIG_SCSI_MOD=y -+# CONFIG_RAID_ATTRS is not set -+CONFIG_SCSI=y -+CONFIG_SCSI_DMA=y -+# CONFIG_SCSI_PROC_FS is not set -+ -+# -+# SCSI support type (disk, tape, CD-ROM) -+# -+CONFIG_BLK_DEV_SD=y -+# CONFIG_CHR_DEV_ST is not set -+CONFIG_BLK_DEV_SR=m -+CONFIG_BLK_DEV_SR_VENDOR=y -+# CONFIG_CHR_DEV_SG is not set -+# CONFIG_CHR_DEV_SCH is not set -+CONFIG_SCSI_CONSTANTS=y -+# CONFIG_SCSI_LOGGING is not set -+CONFIG_SCSI_SCAN_ASYNC=y -+ -+# -+# SCSI Transports -+# -+# CONFIG_SCSI_SPI_ATTRS is not set -+# CONFIG_SCSI_FC_ATTRS is not set -+# CONFIG_SCSI_ISCSI_ATTRS is not set -+# CONFIG_SCSI_SAS_ATTRS is not set -+# CONFIG_SCSI_SAS_LIBSAS is not set -+# CONFIG_SCSI_SRP_ATTRS is not set -+# end of SCSI Transports -+ -+# CONFIG_SCSI_LOWLEVEL is not set -+# CONFIG_SCSI_DH is not set -+# end of SCSI device support -+ -+CONFIG_HAVE_PATA_PLATFORM=y -+CONFIG_ATA=y -+CONFIG_ATA_VERBOSE_ERROR=y -+CONFIG_SATA_PMP=y -+ -+# -+# Controllers with non-SFF native interface -+# -+CONFIG_SATA_AHCI=y -+CONFIG_SATA_MOBILE_LPM_POLICY=0 -+CONFIG_SATA_AHCI_PLATFORM=y -+# CONFIG_AHCI_CEVA is not set -+# CONFIG_AHCI_QORIQ is not set -+# CONFIG_SATA_INIC162X is not set -+# CONFIG_SATA_ACARD_AHCI is not set -+# CONFIG_SATA_SIL24 is not set -+# CONFIG_ATA_SFF is not set -+CONFIG_MD=y -+CONFIG_BLK_DEV_MD=m -+# CONFIG_MD_LINEAR is not set -+CONFIG_MD_RAID0=m -+CONFIG_MD_RAID1=m -+CONFIG_MD_RAID10=m -+CONFIG_MD_RAID456=m -+# CONFIG_MD_MULTIPATH is not set -+# CONFIG_MD_FAULTY is not set -+# CONFIG_BCACHE is not set -+CONFIG_BLK_DEV_DM_BUILTIN=y -+CONFIG_BLK_DEV_DM=m -+# CONFIG_DM_DEBUG is not set -+CONFIG_DM_BUFIO=m -+# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set -+CONFIG_DM_BIO_PRISON=m -+CONFIG_DM_PERSISTENT_DATA=m -+# CONFIG_DM_UNSTRIPED is not set -+CONFIG_DM_CRYPT=m -+CONFIG_DM_SNAPSHOT=m -+CONFIG_DM_THIN_PROVISIONING=m -+# CONFIG_DM_CACHE is not set -+# CONFIG_DM_WRITECACHE is not set -+# CONFIG_DM_ERA is not set -+# CONFIG_DM_CLONE is not set -+CONFIG_DM_MIRROR=m -+# CONFIG_DM_LOG_USERSPACE is not set -+CONFIG_DM_RAID=m -+CONFIG_DM_ZERO=m -+# CONFIG_DM_MULTIPATH is not set -+# CONFIG_DM_DELAY is not set -+# CONFIG_DM_DUST is not set -+CONFIG_DM_UEVENT=y -+# CONFIG_DM_FLAKEY is not set -+# CONFIG_DM_VERITY is not set -+# CONFIG_DM_SWITCH is not set -+# CONFIG_DM_LOG_WRITES is not set -+# CONFIG_DM_INTEGRITY is not set -+# CONFIG_TARGET_CORE is not set -+# CONFIG_FUSION is not set -+ -+# -+# IEEE 1394 (FireWire) support -+# -+# CONFIG_FIREWIRE is not set -+# CONFIG_FIREWIRE_NOSY is not set -+# end of IEEE 1394 (FireWire) support -+ -+CONFIG_NETDEVICES=y -+CONFIG_MII=y -+CONFIG_NET_CORE=y -+CONFIG_BONDING=m -+CONFIG_DUMMY=m -+# CONFIG_WIREGUARD is not set -+# CONFIG_EQUALIZER is not set -+# CONFIG_NET_FC is not set -+# CONFIG_NET_TEAM is not set -+CONFIG_MACVLAN=m -+CONFIG_MACVTAP=m -+CONFIG_IPVLAN=m -+CONFIG_IPVTAP=m -+# CONFIG_VXLAN is not set -+# CONFIG_GENEVE is not set -+# CONFIG_GTP is not set -+# CONFIG_MACSEC is not set -+# CONFIG_NETCONSOLE is not set -+CONFIG_TUN=m -+CONFIG_TAP=m -+# CONFIG_TUN_VNET_CROSS_LE is not set -+CONFIG_VETH=m -+CONFIG_NLMON=m -+# CONFIG_ARCNET is not set -+ -+# -+# Distributed Switch Architecture drivers -+# -+# end of Distributed Switch Architecture drivers -+ -+CONFIG_ETHERNET=y -+# CONFIG_NET_VENDOR_3COM is not set -+# CONFIG_NET_VENDOR_ADAPTEC is not set -+# CONFIG_NET_VENDOR_AGERE is not set -+# CONFIG_NET_VENDOR_ALACRITECH is not set -+# CONFIG_NET_VENDOR_ALTEON is not set -+# CONFIG_ALTERA_TSE is not set -+# CONFIG_NET_VENDOR_AMAZON is not set -+# CONFIG_NET_VENDOR_AMD is not set -+# CONFIG_NET_VENDOR_AQUANTIA is not set -+# CONFIG_NET_VENDOR_ARC is not set -+# CONFIG_NET_VENDOR_ATHEROS is not set -+# CONFIG_NET_VENDOR_AURORA is not set -+# CONFIG_NET_VENDOR_BROADCOM is not set -+# CONFIG_NET_VENDOR_BROCADE is not set -+# CONFIG_NET_VENDOR_CADENCE is not set -+# CONFIG_NET_VENDOR_CAVIUM is not set -+# CONFIG_NET_VENDOR_CHELSIO is not set -+# CONFIG_NET_VENDOR_CISCO is not set -+# CONFIG_NET_VENDOR_CORTINA is not set -+# CONFIG_DNET is not set -+# CONFIG_NET_VENDOR_DEC is not set -+# CONFIG_NET_VENDOR_DLINK is not set -+# CONFIG_NET_VENDOR_EMULEX is not set -+# CONFIG_NET_VENDOR_EZCHIP is not set -+# CONFIG_NET_VENDOR_GOOGLE is not set -+# CONFIG_NET_VENDOR_HISILICON is not set -+# CONFIG_NET_VENDOR_HUAWEI is not set -+# CONFIG_NET_VENDOR_INTEL is not set -+# CONFIG_JME is not set -+# CONFIG_NET_VENDOR_MARVELL is not set -+# CONFIG_NET_VENDOR_MELLANOX is not set -+# CONFIG_NET_VENDOR_MICREL is not set -+# CONFIG_NET_VENDOR_MICROCHIP is not set -+# CONFIG_NET_VENDOR_MICROSEMI is not set -+# CONFIG_NET_VENDOR_MYRI is not set -+# CONFIG_FEALNX is not set -+# CONFIG_NET_VENDOR_NATSEMI is not set -+# CONFIG_NET_VENDOR_NETERION is not set -+# CONFIG_NET_VENDOR_NETRONOME is not set -+# CONFIG_NET_VENDOR_NI is not set -+# CONFIG_NET_VENDOR_NVIDIA is not set -+# CONFIG_NET_VENDOR_OKI is not set -+# CONFIG_ETHOC is not set -+# CONFIG_NET_VENDOR_PACKET_ENGINES is not set -+# CONFIG_NET_VENDOR_PENSANDO is not set -+# CONFIG_NET_VENDOR_QLOGIC is not set -+# CONFIG_NET_VENDOR_QUALCOMM is not set -+# CONFIG_NET_VENDOR_RDC is not set -+# CONFIG_NET_VENDOR_REALTEK is not set -+# CONFIG_NET_VENDOR_RENESAS is not set -+# CONFIG_NET_VENDOR_ROCKER is not set -+# CONFIG_NET_VENDOR_SAMSUNG is not set -+# CONFIG_NET_VENDOR_SEEQ is not set -+# CONFIG_NET_VENDOR_SOLARFLARE is not set -+# CONFIG_NET_VENDOR_SILAN is not set -+# CONFIG_NET_VENDOR_SIS is not set -+# CONFIG_NET_VENDOR_SMSC is not set -+# CONFIG_NET_VENDOR_SOCIONEXT is not set -+CONFIG_NET_VENDOR_STMICRO=y -+CONFIG_STMMAC_ETH=y -+# CONFIG_STMMAC_SELFTESTS is not set -+CONFIG_STMMAC_PLATFORM=y -+# CONFIG_DWMAC_DWC_QOS_ETH is not set -+CONFIG_DWMAC_GENERIC=y -+CONFIG_DWMAC_BAIKAL=y -+# CONFIG_STMMAC_PCI is not set -+# CONFIG_NET_VENDOR_SUN is not set -+# CONFIG_NET_VENDOR_SYNOPSYS is not set -+# CONFIG_NET_VENDOR_TEHUTI is not set -+# CONFIG_NET_VENDOR_TI is not set -+# CONFIG_NET_VENDOR_VIA is not set -+# CONFIG_NET_VENDOR_WIZNET is not set -+# CONFIG_NET_VENDOR_XILINX is not set -+# CONFIG_FDDI is not set -+# CONFIG_HIPPI is not set -+CONFIG_MDIO_DEVICE=y -+CONFIG_MDIO_BUS=y -+# CONFIG_MDIO_BCM_UNIMAC is not set -+CONFIG_MDIO_BITBANG=m -+# CONFIG_MDIO_BUS_MUX_GPIO is not set -+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set -+# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set -+CONFIG_MDIO_GPIO=m -+# CONFIG_MDIO_HISI_FEMAC is not set -+# CONFIG_MDIO_MSCC_MIIM is not set -+# CONFIG_MDIO_OCTEON is not set -+# CONFIG_MDIO_THUNDER is not set -+CONFIG_PHYLINK=y -+CONFIG_PHYLIB=y -+CONFIG_SWPHY=y -+ -+# -+# MII PHY device drivers -+# -+# CONFIG_SFP is not set -+# CONFIG_ADIN_PHY is not set -+# CONFIG_AMD_PHY is not set -+# CONFIG_AQUANTIA_PHY is not set -+# CONFIG_AX88796B_PHY is not set -+# CONFIG_BCM7XXX_PHY is not set -+# CONFIG_BCM87XX_PHY is not set -+# CONFIG_BROADCOM_PHY is not set -+# CONFIG_BCM84881_PHY is not set -+# CONFIG_CICADA_PHY is not set -+# CONFIG_CORTINA_PHY is not set -+# CONFIG_DAVICOM_PHY is not set -+# CONFIG_DP83822_PHY is not set -+# CONFIG_DP83TC811_PHY is not set -+# CONFIG_DP83848_PHY is not set -+# CONFIG_DP83867_PHY is not set -+# CONFIG_DP83869_PHY is not set -+CONFIG_FIXED_PHY=y -+# CONFIG_ICPLUS_PHY is not set -+# CONFIG_INTEL_XWAY_PHY is not set -+# CONFIG_LSI_ET1011C_PHY is not set -+# CONFIG_LXT_PHY is not set -+CONFIG_MARVELL_PHY=m -+# CONFIG_MARVELL_10G_PHY is not set -+CONFIG_MICREL_PHY=m -+# CONFIG_MICROCHIP_PHY is not set -+# CONFIG_MICROCHIP_T1_PHY is not set -+# CONFIG_MICROSEMI_PHY is not set -+# CONFIG_NATIONAL_PHY is not set -+# CONFIG_NXP_TJA11XX_PHY is not set -+# CONFIG_QSEMI_PHY is not set -+CONFIG_REALTEK_PHY=m -+# CONFIG_RENESAS_PHY is not set -+# CONFIG_ROCKCHIP_PHY is not set -+# CONFIG_SMSC_PHY is not set -+# CONFIG_STE10XP is not set -+# CONFIG_TERANETICS_PHY is not set -+# CONFIG_VITESSE_PHY is not set -+# CONFIG_XILINX_GMII2RGMII is not set -+# CONFIG_MICREL_KS8995MA is not set -+CONFIG_PPP=m -+CONFIG_PPP_BSDCOMP=m -+CONFIG_PPP_DEFLATE=m -+# CONFIG_PPP_FILTER is not set -+CONFIG_PPP_MPPE=m -+CONFIG_PPP_MULTILINK=y -+CONFIG_PPPOE=m -+CONFIG_PPP_ASYNC=m -+CONFIG_PPP_SYNC_TTY=m -+# CONFIG_SLIP is not set -+CONFIG_SLHC=m -+# CONFIG_USB_NET_DRIVERS is not set -+# CONFIG_WLAN is not set -+ -+# -+# Enable WiMAX (Networking options) to see the WiMAX drivers -+# -+# CONFIG_WAN is not set -+# CONFIG_VMXNET3 is not set -+# CONFIG_NETDEVSIM is not set -+# CONFIG_NET_FAILOVER is not set -+# CONFIG_ISDN is not set -+# CONFIG_NVM is not set -+ -+# -+# Input device support -+# -+CONFIG_INPUT=y -+# CONFIG_INPUT_FF_MEMLESS is not set -+# CONFIG_INPUT_POLLDEV is not set -+# CONFIG_INPUT_SPARSEKMAP is not set -+# CONFIG_INPUT_MATRIXKMAP is not set -+ -+# -+# Userland interfaces -+# -+CONFIG_INPUT_MOUSEDEV=y -+CONFIG_INPUT_MOUSEDEV_PSAUX=y -+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -+# CONFIG_INPUT_JOYDEV is not set -+CONFIG_INPUT_EVDEV=m -+# CONFIG_INPUT_EVBUG is not set -+ -+# -+# Input Device Drivers -+# -+CONFIG_INPUT_KEYBOARD=y -+# CONFIG_KEYBOARD_ADP5588 is not set -+# CONFIG_KEYBOARD_ADP5589 is not set -+# CONFIG_KEYBOARD_ATKBD is not set -+# CONFIG_KEYBOARD_QT1050 is not set -+# CONFIG_KEYBOARD_QT1070 is not set -+# CONFIG_KEYBOARD_QT2160 is not set -+# CONFIG_KEYBOARD_DLINK_DIR685 is not set -+# CONFIG_KEYBOARD_LKKBD is not set -+# CONFIG_KEYBOARD_GPIO is not set -+# CONFIG_KEYBOARD_GPIO_POLLED is not set -+# CONFIG_KEYBOARD_TCA6416 is not set -+# CONFIG_KEYBOARD_TCA8418 is not set -+# CONFIG_KEYBOARD_MATRIX is not set -+# CONFIG_KEYBOARD_LM8333 is not set -+# CONFIG_KEYBOARD_MAX7359 is not set -+# CONFIG_KEYBOARD_MCS is not set -+# CONFIG_KEYBOARD_MPR121 is not set -+# CONFIG_KEYBOARD_NEWTON is not set -+# CONFIG_KEYBOARD_OPENCORES is not set -+# CONFIG_KEYBOARD_SAMSUNG is not set -+# CONFIG_KEYBOARD_STOWAWAY is not set -+# CONFIG_KEYBOARD_SUNKBD is not set -+# CONFIG_KEYBOARD_OMAP4 is not set -+# CONFIG_KEYBOARD_XTKBD is not set -+# CONFIG_KEYBOARD_CAP11XX is not set -+# CONFIG_KEYBOARD_BCM is not set -+CONFIG_INPUT_MOUSE=y -+# CONFIG_MOUSE_PS2 is not set -+# CONFIG_MOUSE_SERIAL is not set -+# CONFIG_MOUSE_APPLETOUCH is not set -+# CONFIG_MOUSE_BCM5974 is not set -+# CONFIG_MOUSE_CYAPA is not set -+# CONFIG_MOUSE_ELAN_I2C is not set -+# CONFIG_MOUSE_VSXXXAA is not set -+# CONFIG_MOUSE_GPIO is not set -+# CONFIG_MOUSE_SYNAPTICS_I2C is not set -+# CONFIG_MOUSE_SYNAPTICS_USB is not set -+# CONFIG_INPUT_JOYSTICK is not set -+# CONFIG_INPUT_TABLET is not set -+# CONFIG_INPUT_TOUCHSCREEN is not set -+# CONFIG_INPUT_MISC is not set -+# CONFIG_RMI4_CORE is not set -+ -+# -+# Hardware I/O ports -+# -+CONFIG_SERIO=y -+CONFIG_SERIO_SERPORT=y -+# CONFIG_SERIO_AMBAKMI is not set -+# CONFIG_SERIO_PCIPS2 is not set -+# CONFIG_SERIO_LIBPS2 is not set -+# CONFIG_SERIO_RAW is not set -+# CONFIG_SERIO_ALTERA_PS2 is not set -+# CONFIG_SERIO_PS2MULT is not set -+# CONFIG_SERIO_ARC_PS2 is not set -+# CONFIG_SERIO_APBPS2 is not set -+# CONFIG_SERIO_GPIO_PS2 is not set -+# CONFIG_USERIO is not set -+# CONFIG_GAMEPORT is not set -+# end of Hardware I/O ports -+# end of Input device support -+ -+# -+# Character devices -+# -+CONFIG_TTY=y -+CONFIG_VT=y -+CONFIG_CONSOLE_TRANSLATIONS=y -+CONFIG_VT_CONSOLE=y -+CONFIG_VT_CONSOLE_SLEEP=y -+CONFIG_HW_CONSOLE=y -+CONFIG_VT_HW_CONSOLE_BINDING=y -+CONFIG_UNIX98_PTYS=y -+CONFIG_LEGACY_PTYS=y -+CONFIG_LEGACY_PTY_COUNT=256 -+# CONFIG_SERIAL_NONSTANDARD is not set -+# CONFIG_NOZOMI is not set -+# CONFIG_N_GSM is not set -+# CONFIG_TRACE_SINK is not set -+# CONFIG_NULL_TTY is not set -+CONFIG_LDISC_AUTOLOAD=y -+CONFIG_DEVMEM=y -+ -+# -+# Serial drivers -+# -+CONFIG_SERIAL_EARLYCON=y -+CONFIG_SERIAL_8250=y -+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -+# CONFIG_SERIAL_8250_16550A_VARIANTS is not set -+# CONFIG_SERIAL_8250_FINTEK is not set -+CONFIG_SERIAL_8250_CONSOLE=y -+CONFIG_SERIAL_8250_DMA=y -+CONFIG_SERIAL_8250_PCI=y -+CONFIG_SERIAL_8250_EXAR=y -+CONFIG_SERIAL_8250_NR_UARTS=2 -+CONFIG_SERIAL_8250_RUNTIME_UARTS=2 -+CONFIG_SERIAL_8250_EXTENDED=y -+# CONFIG_SERIAL_8250_MANY_PORTS is not set -+# CONFIG_SERIAL_8250_ASPEED_VUART is not set -+# CONFIG_SERIAL_8250_SHARE_IRQ is not set -+# CONFIG_SERIAL_8250_DETECT_IRQ is not set -+# CONFIG_SERIAL_8250_RSA is not set -+CONFIG_SERIAL_8250_DWLIB=y -+CONFIG_SERIAL_8250_FSL=y -+CONFIG_SERIAL_8250_DW=y -+# CONFIG_SERIAL_8250_RT288X is not set -+CONFIG_SERIAL_OF_PLATFORM=y -+ -+# -+# Non-8250 serial port support -+# -+# CONFIG_SERIAL_AMBA_PL010 is not set -+# CONFIG_SERIAL_AMBA_PL011 is not set -+# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set -+# CONFIG_SERIAL_KGDB_NMI is not set -+# CONFIG_SERIAL_MAX3100 is not set -+# CONFIG_SERIAL_MAX310X is not set -+# CONFIG_SERIAL_UARTLITE is not set -+CONFIG_SERIAL_CORE=y -+CONFIG_SERIAL_CORE_CONSOLE=y -+CONFIG_CONSOLE_POLL=y -+# CONFIG_SERIAL_JSM is not set -+# CONFIG_SERIAL_SIFIVE is not set -+# CONFIG_SERIAL_SCCNXP is not set -+# CONFIG_SERIAL_SC16IS7XX is not set -+# CONFIG_SERIAL_ALTERA_JTAGUART is not set -+# CONFIG_SERIAL_ALTERA_UART is not set -+# CONFIG_SERIAL_IFX6X60 is not set -+# CONFIG_SERIAL_XILINX_PS_UART is not set -+# CONFIG_SERIAL_ARC is not set -+# CONFIG_SERIAL_RP2 is not set -+# CONFIG_SERIAL_FSL_LPUART is not set -+# CONFIG_SERIAL_FSL_LINFLEXUART is not set -+# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set -+# end of Serial drivers -+ -+CONFIG_SERIAL_MCTRL_GPIO=y -+# CONFIG_SERIAL_DEV_BUS is not set -+# CONFIG_HVC_DCC is not set -+# CONFIG_IPMI_HANDLER is not set -+CONFIG_HW_RANDOM=m -+# CONFIG_HW_RANDOM_TIMERIOMEM is not set -+# CONFIG_HW_RANDOM_CAVIUM is not set -+# CONFIG_APPLICOM is not set -+# CONFIG_RAW_DRIVER is not set -+# CONFIG_TCG_TPM is not set -+CONFIG_DEVPORT=y -+# CONFIG_XILLYBUS is not set -+# end of Character devices -+ -+# CONFIG_RANDOM_TRUST_BOOTLOADER is not set -+ -+# -+# I2C support -+# -+CONFIG_I2C=y -+CONFIG_I2C_BOARDINFO=y -+CONFIG_I2C_COMPAT=y -+CONFIG_I2C_CHARDEV=y -+CONFIG_I2C_MUX=m -+ -+# -+# Multiplexer I2C Chip support -+# -+# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set -+# CONFIG_I2C_MUX_GPIO is not set -+# CONFIG_I2C_MUX_GPMUX is not set -+# CONFIG_I2C_MUX_LTC4306 is not set -+# CONFIG_I2C_MUX_PCA9541 is not set -+# CONFIG_I2C_MUX_PCA954x is not set -+# CONFIG_I2C_MUX_PINCTRL is not set -+# CONFIG_I2C_MUX_REG is not set -+# CONFIG_I2C_DEMUX_PINCTRL is not set -+# CONFIG_I2C_MUX_MLXCPLD is not set -+# end of Multiplexer I2C Chip support -+ -+CONFIG_I2C_HELPER_AUTO=y -+CONFIG_I2C_ALGOBIT=y -+ -+# -+# I2C Hardware Bus support -+# -+ -+# -+# PC SMBus host controller drivers -+# -+# CONFIG_I2C_ALI1535 is not set -+# CONFIG_I2C_ALI1563 is not set -+# CONFIG_I2C_ALI15X3 is not set -+# CONFIG_I2C_AMD756 is not set -+# CONFIG_I2C_AMD8111 is not set -+# CONFIG_I2C_I801 is not set -+# CONFIG_I2C_ISCH is not set -+# CONFIG_I2C_PIIX4 is not set -+# CONFIG_I2C_NFORCE2 is not set -+# CONFIG_I2C_NVIDIA_GPU is not set -+# CONFIG_I2C_SIS5595 is not set -+# CONFIG_I2C_SIS630 is not set -+# CONFIG_I2C_SIS96X is not set -+# CONFIG_I2C_VIA is not set -+# CONFIG_I2C_VIAPRO is not set -+ -+# -+# I2C system bus drivers (mostly embedded / system-on-chip) -+# -+# CONFIG_I2C_CADENCE is not set -+# CONFIG_I2C_CBUS_GPIO is not set -+CONFIG_I2C_DESIGNWARE_CORE=y -+CONFIG_I2C_DESIGNWARE_PLATFORM=y -+# CONFIG_I2C_DESIGNWARE_SLAVE is not set -+# CONFIG_I2C_DESIGNWARE_PCI is not set -+# CONFIG_I2C_EMEV2 is not set -+# CONFIG_I2C_GPIO is not set -+# CONFIG_I2C_NOMADIK is not set -+# CONFIG_I2C_OCORES is not set -+# CONFIG_I2C_PCA_PLATFORM is not set -+# CONFIG_I2C_RK3X is not set -+# CONFIG_I2C_SIMTEC is not set -+# CONFIG_I2C_THUNDERX is not set -+# CONFIG_I2C_XILINX is not set -+ -+# -+# External I2C/SMBus adapter drivers -+# -+# CONFIG_I2C_DIOLAN_U2C is not set -+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set -+# CONFIG_I2C_TAOS_EVM is not set -+# CONFIG_I2C_TINY_USB is not set -+ -+# -+# Other I2C/SMBus bus drivers -+# -+# end of I2C Hardware Bus support -+ -+# CONFIG_I2C_STUB is not set -+# CONFIG_I2C_SLAVE is not set -+# CONFIG_I2C_DEBUG_CORE is not set -+# CONFIG_I2C_DEBUG_ALGO is not set -+# CONFIG_I2C_DEBUG_BUS is not set -+# end of I2C support -+ -+# CONFIG_I3C is not set -+CONFIG_SPI=y -+# CONFIG_SPI_DEBUG is not set -+CONFIG_SPI_MASTER=y -+CONFIG_SPI_MEM=y -+ -+# -+# SPI Master Controller Drivers -+# -+# CONFIG_SPI_ALTERA is not set -+# CONFIG_SPI_AXI_SPI_ENGINE is not set -+# CONFIG_SPI_BITBANG is not set -+# CONFIG_SPI_CADENCE is not set -+CONFIG_SPI_DESIGNWARE=y -+# CONFIG_SPI_DW_PCI is not set -+CONFIG_SPI_DW_MMIO=y -+# CONFIG_SPI_NXP_FLEXSPI is not set -+# CONFIG_SPI_GPIO is not set -+# CONFIG_SPI_FSL_SPI is not set -+# CONFIG_SPI_OC_TINY is not set -+# CONFIG_SPI_PL022 is not set -+# CONFIG_SPI_PXA2XX is not set -+# CONFIG_SPI_ROCKCHIP is not set -+# CONFIG_SPI_SC18IS602 is not set -+# CONFIG_SPI_SIFIVE is not set -+# CONFIG_SPI_MXIC is not set -+# CONFIG_SPI_THUNDERX is not set -+# CONFIG_SPI_XCOMM is not set -+# CONFIG_SPI_XILINX is not set -+# CONFIG_SPI_ZYNQMP_GQSPI is not set -+ -+# -+# SPI Protocol Masters -+# -+CONFIG_SPI_SPIDEV=y -+# CONFIG_SPI_LOOPBACK_TEST is not set -+# CONFIG_SPI_TLE62X0 is not set -+# CONFIG_SPI_SLAVE is not set -+# CONFIG_SPMI is not set -+# CONFIG_HSI is not set -+CONFIG_PPS=y -+# CONFIG_PPS_DEBUG is not set -+ -+# -+# PPS clients support -+# -+# CONFIG_PPS_CLIENT_KTIMER is not set -+# CONFIG_PPS_CLIENT_LDISC is not set -+# CONFIG_PPS_CLIENT_GPIO is not set -+ -+# -+# PPS generators support -+# -+ -+# -+# PTP clock support -+# -+CONFIG_PTP_1588_CLOCK=y -+ -+# -+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. -+# -+# CONFIG_PTP_1588_CLOCK_IDTCM is not set -+# end of PTP clock support -+ -+CONFIG_PINCTRL=y -+CONFIG_PINCONF=y -+CONFIG_GENERIC_PINCONF=y -+# CONFIG_DEBUG_PINCTRL is not set -+# CONFIG_PINCTRL_AMD is not set -+# CONFIG_PINCTRL_MCP23S08 is not set -+# CONFIG_PINCTRL_SINGLE is not set -+# CONFIG_PINCTRL_SX150X is not set -+# CONFIG_PINCTRL_STMFX is not set -+# CONFIG_PINCTRL_OCELOT is not set -+# CONFIG_PINCTRL_EQUILIBRIUM is not set -+CONFIG_GPIOLIB=y -+CONFIG_GPIOLIB_FASTPATH_LIMIT=512 -+CONFIG_OF_GPIO=y -+CONFIG_GPIOLIB_IRQCHIP=y -+# CONFIG_DEBUG_GPIO is not set -+CONFIG_GPIO_SYSFS=y -+CONFIG_GPIO_GENERIC=y -+ -+# -+# Memory mapped GPIO drivers -+# -+# CONFIG_GPIO_74XX_MMIO is not set -+# CONFIG_GPIO_ALTERA is not set -+# CONFIG_GPIO_CADENCE is not set -+CONFIG_GPIO_DWAPB=y -+# CONFIG_GPIO_EXAR is not set -+# CONFIG_GPIO_FTGPIO010 is not set -+CONFIG_GPIO_GENERIC_PLATFORM=y -+# CONFIG_GPIO_GRGPIO is not set -+# CONFIG_GPIO_HLWD is not set -+# CONFIG_GPIO_LOGICVC is not set -+# CONFIG_GPIO_MB86S7X is not set -+# CONFIG_GPIO_PL061 is not set -+# CONFIG_GPIO_SAMA5D2_PIOBU is not set -+# CONFIG_GPIO_SIFIVE is not set -+# CONFIG_GPIO_SYSCON is not set -+# CONFIG_GPIO_XGENE is not set -+# CONFIG_GPIO_XILINX is not set -+# CONFIG_GPIO_AMD_FCH is not set -+# end of Memory mapped GPIO drivers -+ -+# -+# I2C GPIO expanders -+# -+# CONFIG_GPIO_ADP5588 is not set -+# CONFIG_GPIO_ADNP is not set -+# CONFIG_GPIO_GW_PLD is not set -+# CONFIG_GPIO_MAX7300 is not set -+# CONFIG_GPIO_MAX732X is not set -+# CONFIG_GPIO_PCA953X is not set -+CONFIG_GPIO_PCF857X=y -+# CONFIG_GPIO_TPIC2810 is not set -+# end of I2C GPIO expanders -+ -+# -+# MFD GPIO expanders -+# -+# end of MFD GPIO expanders -+ -+# -+# PCI GPIO expanders -+# -+# CONFIG_GPIO_BT8XX is not set -+# CONFIG_GPIO_PCI_IDIO_16 is not set -+# CONFIG_GPIO_PCIE_IDIO_24 is not set -+# CONFIG_GPIO_RDC321X is not set -+# end of PCI GPIO expanders -+ -+# -+# SPI GPIO expanders -+# -+# CONFIG_GPIO_74X164 is not set -+# CONFIG_GPIO_MAX3191X is not set -+# CONFIG_GPIO_MAX7301 is not set -+# CONFIG_GPIO_MC33880 is not set -+# CONFIG_GPIO_PISOSR is not set -+# CONFIG_GPIO_XRA1403 is not set -+# end of SPI GPIO expanders -+ -+# -+# USB GPIO expanders -+# -+# end of USB GPIO expanders -+ -+# CONFIG_GPIO_MOCKUP is not set -+# CONFIG_W1 is not set -+# CONFIG_POWER_AVS is not set -+CONFIG_POWER_RESET=y -+# CONFIG_POWER_RESET_BRCMSTB is not set -+# CONFIG_POWER_RESET_GPIO is not set -+# CONFIG_POWER_RESET_GPIO_RESTART is not set -+# CONFIG_POWER_RESET_LTC2952 is not set -+# CONFIG_POWER_RESET_RESTART is not set -+# CONFIG_POWER_RESET_XGENE is not set -+# CONFIG_POWER_RESET_SYSCON is not set -+# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set -+# CONFIG_SYSCON_REBOOT_MODE is not set -+# CONFIG_NVMEM_REBOOT_MODE is not set -+CONFIG_POWER_SUPPLY=y -+# CONFIG_POWER_SUPPLY_DEBUG is not set -+CONFIG_POWER_SUPPLY_HWMON=y -+# CONFIG_PDA_POWER is not set -+# CONFIG_TEST_POWER is not set -+# CONFIG_CHARGER_ADP5061 is not set -+# CONFIG_BATTERY_DS2780 is not set -+# CONFIG_BATTERY_DS2781 is not set -+# CONFIG_BATTERY_DS2782 is not set -+# CONFIG_BATTERY_SBS is not set -+# CONFIG_CHARGER_SBS is not set -+# CONFIG_MANAGER_SBS is not set -+# CONFIG_BATTERY_BQ27XXX is not set -+# CONFIG_BATTERY_MAX17040 is not set -+# CONFIG_BATTERY_MAX17042 is not set -+# CONFIG_CHARGER_MAX8903 is not set -+# CONFIG_CHARGER_LP8727 is not set -+# CONFIG_CHARGER_GPIO is not set -+# CONFIG_CHARGER_LT3651 is not set -+# CONFIG_CHARGER_DETECTOR_MAX14656 is not set -+# CONFIG_CHARGER_BQ2415X is not set -+# CONFIG_CHARGER_BQ24257 is not set -+# CONFIG_CHARGER_BQ24735 is not set -+# CONFIG_CHARGER_BQ25890 is not set -+# CONFIG_CHARGER_SMB347 is not set -+# CONFIG_BATTERY_GAUGE_LTC2941 is not set -+# CONFIG_CHARGER_RT9455 is not set -+CONFIG_HWMON=y -+# CONFIG_HWMON_DEBUG_CHIP is not set -+ -+# -+# Native drivers -+# -+# CONFIG_SENSORS_AD7314 is not set -+# CONFIG_SENSORS_AD7414 is not set -+# CONFIG_SENSORS_AD7418 is not set -+# CONFIG_SENSORS_ADM1021 is not set -+# CONFIG_SENSORS_ADM1025 is not set -+# CONFIG_SENSORS_ADM1026 is not set -+# CONFIG_SENSORS_ADM1029 is not set -+# CONFIG_SENSORS_ADM1031 is not set -+# CONFIG_SENSORS_ADM1177 is not set -+# CONFIG_SENSORS_ADM9240 is not set -+# CONFIG_SENSORS_ADT7310 is not set -+# CONFIG_SENSORS_ADT7410 is not set -+# CONFIG_SENSORS_ADT7411 is not set -+# CONFIG_SENSORS_ADT7462 is not set -+# CONFIG_SENSORS_ADT7470 is not set -+# CONFIG_SENSORS_ADT7475 is not set -+# CONFIG_SENSORS_AS370 is not set -+# CONFIG_SENSORS_ASC7621 is not set -+# CONFIG_SENSORS_ASPEED is not set -+# CONFIG_SENSORS_ATXP1 is not set -+CONFIG_SENSORS_BT1_PVT=m -+# CONFIG_SENSORS_DRIVETEMP is not set -+# CONFIG_SENSORS_DS620 is not set -+# CONFIG_SENSORS_DS1621 is not set -+# CONFIG_SENSORS_I5K_AMB is not set -+# CONFIG_SENSORS_F71805F is not set -+# CONFIG_SENSORS_F71882FG is not set -+# CONFIG_SENSORS_F75375S is not set -+# CONFIG_SENSORS_FTSTEUTATES is not set -+# CONFIG_SENSORS_GL518SM is not set -+# CONFIG_SENSORS_GL520SM is not set -+# CONFIG_SENSORS_G760A is not set -+# CONFIG_SENSORS_G762 is not set -+# CONFIG_SENSORS_GPIO_FAN is not set -+# CONFIG_SENSORS_HIH6130 is not set -+# CONFIG_SENSORS_IT87 is not set -+# CONFIG_SENSORS_JC42 is not set -+# CONFIG_SENSORS_POWR1220 is not set -+# CONFIG_SENSORS_LINEAGE is not set -+# CONFIG_SENSORS_LTC2945 is not set -+# CONFIG_SENSORS_LTC2947_I2C is not set -+# CONFIG_SENSORS_LTC2947_SPI is not set -+# CONFIG_SENSORS_LTC2990 is not set -+# CONFIG_SENSORS_LTC4151 is not set -+# CONFIG_SENSORS_LTC4215 is not set -+# CONFIG_SENSORS_LTC4222 is not set -+# CONFIG_SENSORS_LTC4245 is not set -+# CONFIG_SENSORS_LTC4260 is not set -+# CONFIG_SENSORS_LTC4261 is not set -+# CONFIG_SENSORS_MAX1111 is not set -+# CONFIG_SENSORS_MAX16065 is not set -+# CONFIG_SENSORS_MAX1619 is not set -+# CONFIG_SENSORS_MAX1668 is not set -+# CONFIG_SENSORS_MAX197 is not set -+# CONFIG_SENSORS_MAX31722 is not set -+# CONFIG_SENSORS_MAX31730 is not set -+# CONFIG_SENSORS_MAX6621 is not set -+# CONFIG_SENSORS_MAX6639 is not set -+# CONFIG_SENSORS_MAX6642 is not set -+# CONFIG_SENSORS_MAX6650 is not set -+# CONFIG_SENSORS_MAX6697 is not set -+# CONFIG_SENSORS_MAX31790 is not set -+# CONFIG_SENSORS_MCP3021 is not set -+# CONFIG_SENSORS_TC654 is not set -+# CONFIG_SENSORS_ADCXX is not set -+# CONFIG_SENSORS_LM63 is not set -+# CONFIG_SENSORS_LM70 is not set -+# CONFIG_SENSORS_LM73 is not set -+# CONFIG_SENSORS_LM75 is not set -+# CONFIG_SENSORS_LM77 is not set -+# CONFIG_SENSORS_LM78 is not set -+# CONFIG_SENSORS_LM80 is not set -+# CONFIG_SENSORS_LM83 is not set -+# CONFIG_SENSORS_LM85 is not set -+# CONFIG_SENSORS_LM87 is not set -+# CONFIG_SENSORS_LM90 is not set -+# CONFIG_SENSORS_LM92 is not set -+# CONFIG_SENSORS_LM93 is not set -+# CONFIG_SENSORS_LM95234 is not set -+# CONFIG_SENSORS_LM95241 is not set -+# CONFIG_SENSORS_LM95245 is not set -+# CONFIG_SENSORS_PC87360 is not set -+# CONFIG_SENSORS_PC87427 is not set -+# CONFIG_SENSORS_NTC_THERMISTOR is not set -+# CONFIG_SENSORS_NCT6683 is not set -+# CONFIG_SENSORS_NCT6775 is not set -+# CONFIG_SENSORS_NCT7802 is not set -+# CONFIG_SENSORS_NCT7904 is not set -+# CONFIG_SENSORS_NPCM7XX is not set -+# CONFIG_SENSORS_OCC_P8_I2C is not set -+# CONFIG_SENSORS_PCF8591 is not set -+# CONFIG_PMBUS is not set -+# CONFIG_SENSORS_SHT15 is not set -+# CONFIG_SENSORS_SHT21 is not set -+# CONFIG_SENSORS_SHT3x is not set -+# CONFIG_SENSORS_SHTC1 is not set -+# CONFIG_SENSORS_SIS5595 is not set -+# CONFIG_SENSORS_DME1737 is not set -+# CONFIG_SENSORS_EMC1403 is not set -+# CONFIG_SENSORS_EMC2103 is not set -+# CONFIG_SENSORS_EMC6W201 is not set -+# CONFIG_SENSORS_SMSC47M1 is not set -+# CONFIG_SENSORS_SMSC47M192 is not set -+# CONFIG_SENSORS_SMSC47B397 is not set -+# CONFIG_SENSORS_SCH5627 is not set -+# CONFIG_SENSORS_SCH5636 is not set -+# CONFIG_SENSORS_STTS751 is not set -+# CONFIG_SENSORS_SMM665 is not set -+# CONFIG_SENSORS_ADC128D818 is not set -+# CONFIG_SENSORS_ADS7828 is not set -+# CONFIG_SENSORS_ADS7871 is not set -+# CONFIG_SENSORS_AMC6821 is not set -+# CONFIG_SENSORS_INA209 is not set -+# CONFIG_SENSORS_INA2XX is not set -+# CONFIG_SENSORS_INA3221 is not set -+# CONFIG_SENSORS_TC74 is not set -+# CONFIG_SENSORS_THMC50 is not set -+# CONFIG_SENSORS_TMP102 is not set -+# CONFIG_SENSORS_TMP103 is not set -+# CONFIG_SENSORS_TMP108 is not set -+# CONFIG_SENSORS_TMP401 is not set -+# CONFIG_SENSORS_TMP421 is not set -+# CONFIG_SENSORS_TMP513 is not set -+# CONFIG_SENSORS_VIA686A is not set -+# CONFIG_SENSORS_VT1211 is not set -+# CONFIG_SENSORS_VT8231 is not set -+# CONFIG_SENSORS_W83773G is not set -+# CONFIG_SENSORS_W83781D is not set -+# CONFIG_SENSORS_W83791D is not set -+# CONFIG_SENSORS_W83792D is not set -+# CONFIG_SENSORS_W83793 is not set -+# CONFIG_SENSORS_W83795 is not set -+# CONFIG_SENSORS_W83L785TS is not set -+# CONFIG_SENSORS_W83L786NG is not set -+# CONFIG_SENSORS_W83627HF is not set -+# CONFIG_SENSORS_W83627EHF is not set -+# CONFIG_THERMAL is not set -+CONFIG_WATCHDOG=y -+CONFIG_WATCHDOG_CORE=y -+CONFIG_WATCHDOG_NOWAYOUT=y -+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y -+CONFIG_WATCHDOG_OPEN_TIMEOUT=0 -+CONFIG_WATCHDOG_SYSFS=y -+ -+# -+# Watchdog Pretimeout Governors -+# -+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set -+ -+# -+# Watchdog Device Drivers -+# -+# CONFIG_SOFT_WATCHDOG is not set -+CONFIG_GPIO_WATCHDOG=m -+# CONFIG_XILINX_WATCHDOG is not set -+# CONFIG_ZIIRAVE_WATCHDOG is not set -+# CONFIG_ARM_SP805_WATCHDOG is not set -+# CONFIG_ARM_SBSA_WATCHDOG is not set -+# CONFIG_CADENCE_WATCHDOG is not set -+CONFIG_DW_WATCHDOG=m -+# CONFIG_MAX63XX_WATCHDOG is not set -+# CONFIG_ALIM7101_WDT is not set -+# CONFIG_I6300ESB_WDT is not set -+# CONFIG_MEN_A21_WDT is not set -+ -+# -+# PCI-based Watchdog Cards -+# -+# CONFIG_PCIPCWATCHDOG is not set -+# CONFIG_WDTPCI is not set -+ -+# -+# USB-based Watchdog Cards -+# -+# CONFIG_USBPCWATCHDOG is not set -+CONFIG_SSB_POSSIBLE=y -+# CONFIG_SSB is not set -+CONFIG_BCMA_POSSIBLE=y -+# CONFIG_BCMA is not set -+ -+# -+# Multifunction device drivers -+# -+# CONFIG_MFD_ACT8945A is not set -+# CONFIG_MFD_AS3711 is not set -+# CONFIG_MFD_AS3722 is not set -+# CONFIG_PMIC_ADP5520 is not set -+# CONFIG_MFD_AAT2870_CORE is not set -+# CONFIG_MFD_ATMEL_FLEXCOM is not set -+# CONFIG_MFD_ATMEL_HLCDC is not set -+# CONFIG_MFD_BCM590XX is not set -+# CONFIG_MFD_BD9571MWV is not set -+# CONFIG_MFD_AXP20X_I2C is not set -+# CONFIG_MFD_MADERA is not set -+# CONFIG_PMIC_DA903X is not set -+# CONFIG_MFD_DA9052_SPI is not set -+# CONFIG_MFD_DA9052_I2C is not set -+# CONFIG_MFD_DA9055 is not set -+# CONFIG_MFD_DA9062 is not set -+# CONFIG_MFD_DA9063 is not set -+# CONFIG_MFD_DA9150 is not set -+# CONFIG_MFD_DLN2 is not set -+# CONFIG_MFD_MC13XXX_SPI is not set -+# CONFIG_MFD_MC13XXX_I2C is not set -+# CONFIG_MFD_HI6421_PMIC is not set -+# CONFIG_HTC_PASIC3 is not set -+# CONFIG_HTC_I2CPLD is not set -+# CONFIG_LPC_ICH is not set -+# CONFIG_LPC_SCH is not set -+# CONFIG_MFD_JANZ_CMODIO is not set -+# CONFIG_MFD_KEMPLD is not set -+# CONFIG_MFD_88PM800 is not set -+# CONFIG_MFD_88PM805 is not set -+# CONFIG_MFD_88PM860X is not set -+# CONFIG_MFD_MAX14577 is not set -+# CONFIG_MFD_MAX77620 is not set -+# CONFIG_MFD_MAX77650 is not set -+# CONFIG_MFD_MAX77686 is not set -+# CONFIG_MFD_MAX77693 is not set -+# CONFIG_MFD_MAX77843 is not set -+# CONFIG_MFD_MAX8907 is not set -+# CONFIG_MFD_MAX8925 is not set -+# CONFIG_MFD_MAX8997 is not set -+# CONFIG_MFD_MAX8998 is not set -+# CONFIG_MFD_MT6397 is not set -+# CONFIG_MFD_MENF21BMC is not set -+# CONFIG_EZX_PCAP is not set -+# CONFIG_MFD_CPCAP is not set -+# CONFIG_MFD_VIPERBOARD is not set -+# CONFIG_MFD_RETU is not set -+# CONFIG_MFD_PCF50633 is not set -+# CONFIG_UCB1400_CORE is not set -+# CONFIG_MFD_RDC321X is not set -+# CONFIG_MFD_RT5033 is not set -+# CONFIG_MFD_RC5T583 is not set -+# CONFIG_MFD_RK808 is not set -+# CONFIG_MFD_RN5T618 is not set -+# CONFIG_MFD_SEC_CORE is not set -+# CONFIG_MFD_SI476X_CORE is not set -+# CONFIG_MFD_SM501 is not set -+# CONFIG_MFD_SKY81452 is not set -+# CONFIG_MFD_SMSC is not set -+# CONFIG_ABX500_CORE is not set -+# CONFIG_MFD_STMPE is not set -+CONFIG_MFD_SYSCON=y -+# CONFIG_MFD_TI_AM335X_TSCADC is not set -+# CONFIG_MFD_LP3943 is not set -+# CONFIG_MFD_LP8788 is not set -+# CONFIG_MFD_TI_LMU is not set -+# CONFIG_MFD_PALMAS is not set -+# CONFIG_TPS6105X is not set -+# CONFIG_TPS65010 is not set -+# CONFIG_TPS6507X is not set -+# CONFIG_MFD_TPS65086 is not set -+# CONFIG_MFD_TPS65090 is not set -+# CONFIG_MFD_TPS65217 is not set -+# CONFIG_MFD_TI_LP873X is not set -+# CONFIG_MFD_TI_LP87565 is not set -+# CONFIG_MFD_TPS65218 is not set -+# CONFIG_MFD_TPS6586X is not set -+# CONFIG_MFD_TPS65910 is not set -+# CONFIG_MFD_TPS65912_I2C is not set -+# CONFIG_MFD_TPS65912_SPI is not set -+# CONFIG_MFD_TPS80031 is not set -+# CONFIG_TWL4030_CORE is not set -+# CONFIG_TWL6040_CORE is not set -+# CONFIG_MFD_WL1273_CORE is not set -+# CONFIG_MFD_LM3533 is not set -+# CONFIG_MFD_TC3589X is not set -+# CONFIG_MFD_TQMX86 is not set -+# CONFIG_MFD_VX855 is not set -+# CONFIG_MFD_LOCHNAGAR is not set -+# CONFIG_MFD_ARIZONA_I2C is not set -+# CONFIG_MFD_ARIZONA_SPI is not set -+# CONFIG_MFD_WM8400 is not set -+# CONFIG_MFD_WM831X_I2C is not set -+# CONFIG_MFD_WM831X_SPI is not set -+# CONFIG_MFD_WM8350_I2C is not set -+# CONFIG_MFD_WM8994 is not set -+# CONFIG_MFD_ROHM_BD718XX is not set -+# CONFIG_MFD_ROHM_BD70528 is not set -+# CONFIG_MFD_ROHM_BD71828 is not set -+# CONFIG_MFD_STPMIC1 is not set -+# CONFIG_MFD_STMFX is not set -+# end of Multifunction device drivers -+ -+# CONFIG_REGULATOR is not set -+# CONFIG_RC_CORE is not set -+# CONFIG_MEDIA_SUPPORT is not set -+ -+# -+# Graphics support -+# -+CONFIG_VGA_ARB=y -+CONFIG_VGA_ARB_MAX_GPUS=16 -+CONFIG_DRM=y -+# CONFIG_DRM_DP_AUX_CHARDEV is not set -+# CONFIG_DRM_DEBUG_MM is not set -+# CONFIG_DRM_DEBUG_SELFTEST is not set -+CONFIG_DRM_KMS_HELPER=y -+CONFIG_DRM_KMS_FB_HELPER=y -+CONFIG_DRM_FBDEV_EMULATION=y -+CONFIG_DRM_FBDEV_OVERALLOC=100 -+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set -+# CONFIG_DRM_DP_CEC is not set -+CONFIG_DRM_GEM_CMA_HELPER=y -+CONFIG_DRM_KMS_CMA_HELPER=y -+ -+# -+# I2C encoder or helper chips -+# -+# CONFIG_DRM_I2C_CH7006 is not set -+# CONFIG_DRM_I2C_SIL164 is not set -+# CONFIG_DRM_I2C_NXP_TDA998X is not set -+# CONFIG_DRM_I2C_NXP_TDA9950 is not set -+# end of I2C encoder or helper chips -+ -+# -+# ARM devices -+# -+# CONFIG_DRM_HDLCD is not set -+# CONFIG_DRM_MALI_DISPLAY is not set -+# CONFIG_DRM_KOMEDA is not set -+# end of ARM devices -+ -+CONFIG_DRM_BAIKAL_VDU=y -+# CONFIG_DRM_RADEON is not set -+# CONFIG_DRM_AMDGPU is not set -+ -+# -+# ACP (Audio CoProcessor) Configuration -+# -+# end of ACP (Audio CoProcessor) Configuration -+ -+# CONFIG_DRM_NOUVEAU is not set -+# CONFIG_DRM_VGEM is not set -+# CONFIG_DRM_VKMS is not set -+# CONFIG_DRM_UDL is not set -+# CONFIG_DRM_AST is not set -+# CONFIG_DRM_MGAG200 is not set -+# CONFIG_DRM_CIRRUS_QEMU is not set -+# CONFIG_DRM_RCAR_DW_HDMI is not set -+# CONFIG_DRM_RCAR_LVDS is not set -+CONFIG_DRM_RCAR_WRITEBACK=y -+# CONFIG_DRM_QXL is not set -+# CONFIG_DRM_BOCHS is not set -+CONFIG_DRM_PANEL=y -+ -+# -+# Display Panels -+# -+# CONFIG_DRM_PANEL_ARM_VERSATILE is not set -+CONFIG_DRM_PANEL_LVDS=m -+# CONFIG_DRM_PANEL_SIMPLE is not set -+# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set -+# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set -+# CONFIG_DRM_PANEL_LG_LB035Q02 is not set -+# CONFIG_DRM_PANEL_LG_LG4573 is not set -+# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set -+# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set -+# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set -+# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set -+# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set -+# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set -+# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set -+# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set -+# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set -+# CONFIG_DRM_PANEL_TPO_TPG110 is not set -+# end of Display Panels -+ -+CONFIG_DRM_BRIDGE=y -+CONFIG_DRM_PANEL_BRIDGE=y -+ -+# -+# Display Interface Bridges -+# -+# CONFIG_DRM_CDNS_DSI is not set -+# CONFIG_DRM_DUMB_VGA_DAC is not set -+# CONFIG_DRM_LVDS_CODEC is not set -+CONFIG_DRM_BAIKAL_HDMI=y -+# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set -+# CONFIG_DRM_NXP_PTN3460 is not set -+# CONFIG_DRM_PARADE_PS8622 is not set -+# CONFIG_DRM_SIL_SII8620 is not set -+# CONFIG_DRM_SII902X is not set -+# CONFIG_DRM_SII9234 is not set -+# CONFIG_DRM_THINE_THC63LVD1024 is not set -+# CONFIG_DRM_TOSHIBA_TC358764 is not set -+# CONFIG_DRM_TOSHIBA_TC358767 is not set -+# CONFIG_DRM_TI_TFP410 is not set -+# CONFIG_DRM_TI_SN65DSI86 is not set -+# CONFIG_DRM_ANALOGIX_ANX6345 is not set -+# CONFIG_DRM_ANALOGIX_ANX78XX is not set -+# CONFIG_DRM_I2C_ADV7511 is not set -+CONFIG_DRM_DW_HDMI=y -+CONFIG_DRM_DW_HDMI_AHB_AUDIO=m -+# CONFIG_DRM_DW_HDMI_I2S_AUDIO is not set -+# CONFIG_DRM_DW_HDMI_CEC is not set -+# end of Display Interface Bridges -+ -+# CONFIG_DRM_ETNAVIV is not set -+# CONFIG_DRM_ARCPGU is not set -+# CONFIG_DRM_HISI_HIBMC is not set -+# CONFIG_DRM_HISI_KIRIN is not set -+# CONFIG_DRM_MXSFB is not set -+# CONFIG_DRM_GM12U320 is not set -+# CONFIG_TINYDRM_HX8357D is not set -+# CONFIG_TINYDRM_ILI9225 is not set -+# CONFIG_TINYDRM_ILI9341 is not set -+# CONFIG_TINYDRM_MI0283QT is not set -+# CONFIG_TINYDRM_REPAPER is not set -+# CONFIG_TINYDRM_ST7586 is not set -+# CONFIG_TINYDRM_ST7735R is not set -+# CONFIG_DRM_PL111 is not set -+# CONFIG_DRM_LIMA is not set -+CONFIG_DRM_PANFROST=m -+# CONFIG_DRM_TIDSS is not set -+# CONFIG_DRM_LEGACY is not set -+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y -+ -+# -+# ARM GPU Configuration -+# -+CONFIG_MALI_MIDGARD=m -+# CONFIG_MALI_GATOR_SUPPORT is not set -+# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set -+CONFIG_MALI_DEVFREQ=y -+# CONFIG_MALI_DMA_FENCE is not set -+CONFIG_MALI_PLATFORM_NAME="devicetree" -+# CONFIG_MALI_EXPERT is not set -+# CONFIG_MALI_KUTF is not set -+# end of ARM GPU Configuration -+ -+# -+# Frame buffer Devices -+# -+CONFIG_FB_CMDLINE=y -+CONFIG_FB_NOTIFY=y -+CONFIG_FB=y -+# CONFIG_FIRMWARE_EDID is not set -+CONFIG_FB_CFB_FILLRECT=y -+CONFIG_FB_CFB_COPYAREA=y -+CONFIG_FB_CFB_IMAGEBLIT=y -+CONFIG_FB_SYS_FILLRECT=y -+CONFIG_FB_SYS_COPYAREA=y -+CONFIG_FB_SYS_IMAGEBLIT=y -+# CONFIG_FB_FOREIGN_ENDIAN is not set -+CONFIG_FB_SYS_FOPS=y -+CONFIG_FB_DEFERRED_IO=y -+CONFIG_FB_MODE_HELPERS=y -+# CONFIG_FB_TILEBLITTING is not set -+ -+# -+# Frame buffer hardware drivers -+# -+# CONFIG_FB_CIRRUS is not set -+# CONFIG_FB_PM2 is not set -+# CONFIG_FB_ARMCLCD is not set -+# CONFIG_FB_CYBER2000 is not set -+# CONFIG_FB_ASILIANT is not set -+# CONFIG_FB_IMSTT is not set -+# CONFIG_FB_UVESA is not set -+CONFIG_FB_EFI=y -+# CONFIG_FB_OPENCORES is not set -+# CONFIG_FB_S1D13XXX is not set -+# CONFIG_FB_NVIDIA is not set -+# CONFIG_FB_RIVA is not set -+# CONFIG_FB_I740 is not set -+# CONFIG_FB_MATROX is not set -+# CONFIG_FB_RADEON is not set -+# CONFIG_FB_ATY128 is not set -+# CONFIG_FB_ATY is not set -+# CONFIG_FB_S3 is not set -+# CONFIG_FB_SAVAGE is not set -+# CONFIG_FB_SIS is not set -+# CONFIG_FB_NEOMAGIC is not set -+# CONFIG_FB_KYRO is not set -+# CONFIG_FB_3DFX is not set -+# CONFIG_FB_VOODOO1 is not set -+# CONFIG_FB_VT8623 is not set -+# CONFIG_FB_TRIDENT is not set -+# CONFIG_FB_ARK is not set -+# CONFIG_FB_PM3 is not set -+# CONFIG_FB_CARMINE is not set -+# CONFIG_FB_SMSCUFX is not set -+# CONFIG_FB_UDL is not set -+# CONFIG_FB_IBM_GXT4500 is not set -+# CONFIG_FB_VIRTUAL is not set -+# CONFIG_FB_METRONOME is not set -+# CONFIG_FB_MB862XX is not set -+# CONFIG_FB_SIMPLE is not set -+# CONFIG_FB_SSD1307 is not set -+# CONFIG_FB_SM712 is not set -+# end of Frame buffer Devices -+ -+# -+# Backlight & LCD device support -+# -+CONFIG_LCD_CLASS_DEVICE=m -+# CONFIG_LCD_L4F00242T03 is not set -+# CONFIG_LCD_LMS283GF05 is not set -+# CONFIG_LCD_LTV350QV is not set -+# CONFIG_LCD_ILI922X is not set -+# CONFIG_LCD_ILI9320 is not set -+# CONFIG_LCD_TDO24M is not set -+# CONFIG_LCD_VGG2432A4 is not set -+# CONFIG_LCD_PLATFORM is not set -+# CONFIG_LCD_AMS369FG06 is not set -+# CONFIG_LCD_LMS501KF03 is not set -+# CONFIG_LCD_HX8357 is not set -+# CONFIG_LCD_OTM3225A is not set -+CONFIG_BACKLIGHT_CLASS_DEVICE=y -+CONFIG_BACKLIGHT_GENERIC=y -+# CONFIG_BACKLIGHT_QCOM_WLED is not set -+# CONFIG_BACKLIGHT_ADP8860 is not set -+# CONFIG_BACKLIGHT_ADP8870 is not set -+# CONFIG_BACKLIGHT_LM3639 is not set -+# CONFIG_BACKLIGHT_GPIO is not set -+# CONFIG_BACKLIGHT_LV5207LP is not set -+# CONFIG_BACKLIGHT_BD6107 is not set -+# CONFIG_BACKLIGHT_ARCXCNN is not set -+# end of Backlight & LCD device support -+ -+CONFIG_VIDEOMODE_HELPERS=y -+CONFIG_HDMI=y -+ -+# -+# Console display driver support -+# -+CONFIG_DUMMY_CONSOLE=y -+CONFIG_DUMMY_CONSOLE_COLUMNS=80 -+CONFIG_DUMMY_CONSOLE_ROWS=25 -+CONFIG_FRAMEBUFFER_CONSOLE=y -+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y -+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -+# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set -+# end of Console display driver support -+ -+CONFIG_LOGO=y -+# CONFIG_LOGO_LINUX_MONO is not set -+# CONFIG_LOGO_LINUX_VGA16 is not set -+CONFIG_LOGO_LINUX_CLUT224=y -+# end of Graphics support -+ -+CONFIG_SOUND=m -+CONFIG_SOUND_OSS_CORE=y -+CONFIG_SOUND_OSS_CORE_PRECLAIM=y -+CONFIG_SND=m -+CONFIG_SND_TIMER=m -+CONFIG_SND_PCM=m -+CONFIG_SND_DMAENGINE_PCM=m -+CONFIG_SND_HWDEP=m -+CONFIG_SND_SEQ_DEVICE=m -+CONFIG_SND_RAWMIDI=m -+CONFIG_SND_JACK=y -+CONFIG_SND_JACK_INPUT_DEV=y -+CONFIG_SND_OSSEMUL=y -+CONFIG_SND_MIXER_OSS=m -+CONFIG_SND_PCM_OSS=m -+CONFIG_SND_PCM_OSS_PLUGINS=y -+CONFIG_SND_PCM_TIMER=y -+CONFIG_SND_HRTIMER=m -+CONFIG_SND_DYNAMIC_MINORS=y -+CONFIG_SND_MAX_CARDS=32 -+# CONFIG_SND_SUPPORT_OLD_API is not set -+CONFIG_SND_PROC_FS=y -+CONFIG_SND_VERBOSE_PROCFS=y -+# CONFIG_SND_VERBOSE_PRINTK is not set -+# CONFIG_SND_DEBUG is not set -+CONFIG_SND_VMASTER=y -+CONFIG_SND_SEQUENCER=m -+# CONFIG_SND_SEQ_DUMMY is not set -+CONFIG_SND_SEQUENCER_OSS=m -+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y -+CONFIG_SND_SEQ_MIDI_EVENT=m -+CONFIG_SND_SEQ_MIDI=m -+CONFIG_SND_AC97_CODEC=m -+CONFIG_SND_DRIVERS=y -+CONFIG_SND_DUMMY=m -+# CONFIG_SND_ALOOP is not set -+# CONFIG_SND_VIRMIDI is not set -+# CONFIG_SND_MTPAV is not set -+# CONFIG_SND_SERIAL_U16550 is not set -+# CONFIG_SND_MPU401 is not set -+# CONFIG_SND_AC97_POWER_SAVE is not set -+# CONFIG_SND_PCI is not set -+ -+# -+# HD-Audio -+# -+# end of HD-Audio -+ -+CONFIG_SND_HDA_PREALLOC_SIZE=64 -+# CONFIG_SND_SPI is not set -+CONFIG_SND_USB=y -+CONFIG_SND_USB_AUDIO=m -+# CONFIG_SND_USB_UA101 is not set -+# CONFIG_SND_USB_CAIAQ is not set -+# CONFIG_SND_USB_6FIRE is not set -+# CONFIG_SND_USB_HIFACE is not set -+# CONFIG_SND_BCD2000 is not set -+# CONFIG_SND_USB_POD is not set -+# CONFIG_SND_USB_PODHD is not set -+# CONFIG_SND_USB_TONEPORT is not set -+# CONFIG_SND_USB_VARIAX is not set -+CONFIG_SND_SOC=m -+CONFIG_SND_SOC_AC97_BUS=y -+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y -+# CONFIG_SND_SOC_AMD_ACP is not set -+# CONFIG_SND_ATMEL_SOC is not set -+CONFIG_SND_DESIGNWARE_I2S=m -+# CONFIG_SND_DESIGNWARE_PCM is not set -+ -+# -+# SoC Audio for Freescale CPUs -+# -+ -+# -+# Common SoC Audio options for Freescale CPUs: -+# -+# CONFIG_SND_SOC_FSL_ASRC is not set -+# CONFIG_SND_SOC_FSL_SAI is not set -+# CONFIG_SND_SOC_FSL_AUDMIX is not set -+# CONFIG_SND_SOC_FSL_SSI is not set -+# CONFIG_SND_SOC_FSL_SPDIF is not set -+# CONFIG_SND_SOC_FSL_ESAI is not set -+# CONFIG_SND_SOC_FSL_MICFIL is not set -+# CONFIG_SND_SOC_IMX_AUDMUX is not set -+# end of SoC Audio for Freescale CPUs -+ -+# CONFIG_SND_I2S_HI6210_I2S is not set -+# CONFIG_SND_SOC_IMG is not set -+# CONFIG_SND_SOC_MTK_BTCVSD is not set -+# CONFIG_SND_SOC_SOF_TOPLEVEL is not set -+ -+# -+# STMicroelectronics STM32 SOC audio support -+# -+# end of STMicroelectronics STM32 SOC audio support -+ -+# CONFIG_SND_SOC_XILINX_I2S is not set -+# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set -+# CONFIG_SND_SOC_XILINX_SPDIF is not set -+# CONFIG_SND_SOC_XTFPGA_I2S is not set -+# CONFIG_ZX_TDM is not set -+CONFIG_SND_SOC_I2C_AND_SPI=m -+ -+# -+# CODEC drivers -+# -+CONFIG_SND_SOC_AC97_CODEC=m -+# CONFIG_SND_SOC_ADAU1701 is not set -+# CONFIG_SND_SOC_ADAU1761_I2C is not set -+# CONFIG_SND_SOC_ADAU1761_SPI is not set -+# CONFIG_SND_SOC_ADAU7002 is not set -+# CONFIG_SND_SOC_ADAU7118_HW is not set -+# CONFIG_SND_SOC_ADAU7118_I2C is not set -+# CONFIG_SND_SOC_AK4104 is not set -+# CONFIG_SND_SOC_AK4118 is not set -+# CONFIG_SND_SOC_AK4458 is not set -+# CONFIG_SND_SOC_AK4554 is not set -+# CONFIG_SND_SOC_AK4613 is not set -+# CONFIG_SND_SOC_AK4642 is not set -+# CONFIG_SND_SOC_AK5386 is not set -+# CONFIG_SND_SOC_AK5558 is not set -+# CONFIG_SND_SOC_ALC5623 is not set -+# CONFIG_SND_SOC_BD28623 is not set -+# CONFIG_SND_SOC_BT_SCO is not set -+# CONFIG_SND_SOC_CS35L32 is not set -+# CONFIG_SND_SOC_CS35L33 is not set -+# CONFIG_SND_SOC_CS35L34 is not set -+# CONFIG_SND_SOC_CS35L35 is not set -+# CONFIG_SND_SOC_CS35L36 is not set -+# CONFIG_SND_SOC_CS42L42 is not set -+# CONFIG_SND_SOC_CS42L51_I2C is not set -+# CONFIG_SND_SOC_CS42L52 is not set -+# CONFIG_SND_SOC_CS42L56 is not set -+# CONFIG_SND_SOC_CS42L73 is not set -+# CONFIG_SND_SOC_CS4265 is not set -+# CONFIG_SND_SOC_CS4270 is not set -+# CONFIG_SND_SOC_CS4271_I2C is not set -+# CONFIG_SND_SOC_CS4271_SPI is not set -+# CONFIG_SND_SOC_CS42XX8_I2C is not set -+# CONFIG_SND_SOC_CS43130 is not set -+# CONFIG_SND_SOC_CS4341 is not set -+# CONFIG_SND_SOC_CS4349 is not set -+# CONFIG_SND_SOC_CS53L30 is not set -+# CONFIG_SND_SOC_CX2072X is not set -+# CONFIG_SND_SOC_DA7213 is not set -+# CONFIG_SND_SOC_DMIC is not set -+# CONFIG_SND_SOC_ES7134 is not set -+# CONFIG_SND_SOC_ES7241 is not set -+# CONFIG_SND_SOC_ES8316 is not set -+# CONFIG_SND_SOC_ES8328_I2C is not set -+# CONFIG_SND_SOC_ES8328_SPI is not set -+# CONFIG_SND_SOC_GTM601 is not set -+# CONFIG_SND_SOC_INNO_RK3036 is not set -+# CONFIG_SND_SOC_MAX98088 is not set -+# CONFIG_SND_SOC_MAX98357A is not set -+# CONFIG_SND_SOC_MAX98504 is not set -+# CONFIG_SND_SOC_MAX9867 is not set -+# CONFIG_SND_SOC_MAX98927 is not set -+# CONFIG_SND_SOC_MAX98373 is not set -+# CONFIG_SND_SOC_MAX9860 is not set -+# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set -+# CONFIG_SND_SOC_PCM1681 is not set -+# CONFIG_SND_SOC_PCM1789_I2C is not set -+# CONFIG_SND_SOC_PCM179X_I2C is not set -+# CONFIG_SND_SOC_PCM179X_SPI is not set -+# CONFIG_SND_SOC_PCM186X_I2C is not set -+# CONFIG_SND_SOC_PCM186X_SPI is not set -+# CONFIG_SND_SOC_PCM3060_I2C is not set -+# CONFIG_SND_SOC_PCM3060_SPI is not set -+# CONFIG_SND_SOC_PCM3168A_I2C is not set -+# CONFIG_SND_SOC_PCM3168A_SPI is not set -+# CONFIG_SND_SOC_PCM512x_I2C is not set -+# CONFIG_SND_SOC_PCM512x_SPI is not set -+# CONFIG_SND_SOC_RK3328 is not set -+# CONFIG_SND_SOC_RT5616 is not set -+# CONFIG_SND_SOC_RT5631 is not set -+# CONFIG_SND_SOC_SGTL5000 is not set -+# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set -+# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set -+CONFIG_SND_SOC_SPDIF=m -+# CONFIG_SND_SOC_SSM2305 is not set -+# CONFIG_SND_SOC_SSM2602_SPI is not set -+# CONFIG_SND_SOC_SSM2602_I2C is not set -+# CONFIG_SND_SOC_SSM4567 is not set -+# CONFIG_SND_SOC_STA32X is not set -+# CONFIG_SND_SOC_STA350 is not set -+# CONFIG_SND_SOC_STI_SAS is not set -+# CONFIG_SND_SOC_TAS2552 is not set -+# CONFIG_SND_SOC_TAS2562 is not set -+# CONFIG_SND_SOC_TAS2770 is not set -+# CONFIG_SND_SOC_TAS5086 is not set -+# CONFIG_SND_SOC_TAS571X is not set -+# CONFIG_SND_SOC_TAS5720 is not set -+# CONFIG_SND_SOC_TAS6424 is not set -+# CONFIG_SND_SOC_TDA7419 is not set -+# CONFIG_SND_SOC_TFA9879 is not set -+# CONFIG_SND_SOC_TLV320AIC23_I2C is not set -+# CONFIG_SND_SOC_TLV320AIC23_SPI is not set -+# CONFIG_SND_SOC_TLV320AIC31XX is not set -+# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set -+# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set -+CONFIG_SND_SOC_TLV320AIC3X=m -+# CONFIG_SND_SOC_TS3A227E is not set -+# CONFIG_SND_SOC_TSCS42XX is not set -+# CONFIG_SND_SOC_TSCS454 is not set -+# CONFIG_SND_SOC_UDA1334 is not set -+# CONFIG_SND_SOC_WM8510 is not set -+# CONFIG_SND_SOC_WM8523 is not set -+# CONFIG_SND_SOC_WM8524 is not set -+# CONFIG_SND_SOC_WM8580 is not set -+# CONFIG_SND_SOC_WM8711 is not set -+# CONFIG_SND_SOC_WM8728 is not set -+# CONFIG_SND_SOC_WM8731 is not set -+# CONFIG_SND_SOC_WM8737 is not set -+# CONFIG_SND_SOC_WM8741 is not set -+# CONFIG_SND_SOC_WM8750 is not set -+# CONFIG_SND_SOC_WM8753 is not set -+# CONFIG_SND_SOC_WM8770 is not set -+# CONFIG_SND_SOC_WM8776 is not set -+# CONFIG_SND_SOC_WM8782 is not set -+# CONFIG_SND_SOC_WM8804_I2C is not set -+# CONFIG_SND_SOC_WM8804_SPI is not set -+# CONFIG_SND_SOC_WM8903 is not set -+# CONFIG_SND_SOC_WM8904 is not set -+# CONFIG_SND_SOC_WM8960 is not set -+# CONFIG_SND_SOC_WM8962 is not set -+# CONFIG_SND_SOC_WM8974 is not set -+# CONFIG_SND_SOC_WM8978 is not set -+# CONFIG_SND_SOC_WM8985 is not set -+# CONFIG_SND_SOC_ZX_AUD96P22 is not set -+# CONFIG_SND_SOC_MAX9759 is not set -+# CONFIG_SND_SOC_MT6351 is not set -+# CONFIG_SND_SOC_MT6358 is not set -+# CONFIG_SND_SOC_MT6660 is not set -+# CONFIG_SND_SOC_NAU8540 is not set -+# CONFIG_SND_SOC_NAU8810 is not set -+# CONFIG_SND_SOC_NAU8822 is not set -+# CONFIG_SND_SOC_NAU8824 is not set -+# CONFIG_SND_SOC_TPA6130A2 is not set -+# end of CODEC drivers -+ -+# CONFIG_SND_SIMPLE_CARD is not set -+# CONFIG_SND_AUDIO_GRAPH_CARD is not set -+CONFIG_AC97_BUS=m -+ -+# -+# HID support -+# -+CONFIG_HID=y -+CONFIG_HID_BATTERY_STRENGTH=y -+CONFIG_HIDRAW=y -+CONFIG_UHID=m -+CONFIG_HID_GENERIC=y -+ -+# -+# Special HID drivers -+# -+# CONFIG_HID_A4TECH is not set -+# CONFIG_HID_ACCUTOUCH is not set -+# CONFIG_HID_ACRUX is not set -+# CONFIG_HID_APPLE is not set -+# CONFIG_HID_APPLEIR is not set -+# CONFIG_HID_AUREAL is not set -+# CONFIG_HID_BELKIN is not set -+# CONFIG_HID_BETOP_FF is not set -+# CONFIG_HID_CHERRY is not set -+# CONFIG_HID_CHICONY is not set -+# CONFIG_HID_COUGAR is not set -+# CONFIG_HID_MACALLY is not set -+# CONFIG_HID_PRODIKEYS is not set -+# CONFIG_HID_CMEDIA is not set -+# CONFIG_HID_CP2112 is not set -+# CONFIG_HID_CREATIVE_SB0540 is not set -+# CONFIG_HID_CYPRESS is not set -+# CONFIG_HID_DRAGONRISE is not set -+# CONFIG_HID_EMS_FF is not set -+# CONFIG_HID_ELECOM is not set -+# CONFIG_HID_ELO is not set -+# CONFIG_HID_EZKEY is not set -+# CONFIG_HID_GEMBIRD is not set -+# CONFIG_HID_GFRM is not set -+# CONFIG_HID_HOLTEK is not set -+# CONFIG_HID_KEYTOUCH is not set -+# CONFIG_HID_KYE is not set -+# CONFIG_HID_UCLOGIC is not set -+# CONFIG_HID_WALTOP is not set -+# CONFIG_HID_VIEWSONIC is not set -+# CONFIG_HID_GYRATION is not set -+# CONFIG_HID_ICADE is not set -+# CONFIG_HID_ITE is not set -+# CONFIG_HID_JABRA is not set -+# CONFIG_HID_TWINHAN is not set -+# CONFIG_HID_KENSINGTON is not set -+# CONFIG_HID_LCPOWER is not set -+# CONFIG_HID_LENOVO is not set -+# CONFIG_HID_MAGICMOUSE is not set -+# CONFIG_HID_MALTRON is not set -+# CONFIG_HID_MAYFLASH is not set -+# CONFIG_HID_REDRAGON is not set -+# CONFIG_HID_MICROSOFT is not set -+# CONFIG_HID_MONTEREY is not set -+# CONFIG_HID_MULTITOUCH is not set -+# CONFIG_HID_NTI is not set -+# CONFIG_HID_NTRIG is not set -+# CONFIG_HID_ORTEK is not set -+# CONFIG_HID_PANTHERLORD is not set -+# CONFIG_HID_PENMOUNT is not set -+# CONFIG_HID_PETALYNX is not set -+# CONFIG_HID_PICOLCD is not set -+# CONFIG_HID_PLANTRONICS is not set -+# CONFIG_HID_PRIMAX is not set -+# CONFIG_HID_RETRODE is not set -+# CONFIG_HID_ROCCAT is not set -+# CONFIG_HID_SAITEK is not set -+# CONFIG_HID_SAMSUNG is not set -+# CONFIG_HID_SPEEDLINK is not set -+# CONFIG_HID_STEAM is not set -+# CONFIG_HID_STEELSERIES is not set -+# CONFIG_HID_SUNPLUS is not set -+# CONFIG_HID_RMI is not set -+# CONFIG_HID_GREENASIA is not set -+# CONFIG_HID_SMARTJOYPLUS is not set -+# CONFIG_HID_TIVO is not set -+# CONFIG_HID_TOPSEED is not set -+# CONFIG_HID_THRUSTMASTER is not set -+# CONFIG_HID_UDRAW_PS3 is not set -+# CONFIG_HID_WACOM is not set -+# CONFIG_HID_XINMO is not set -+# CONFIG_HID_ZEROPLUS is not set -+# CONFIG_HID_ZYDACRON is not set -+# CONFIG_HID_SENSOR_HUB is not set -+# CONFIG_HID_ALPS is not set -+# end of Special HID drivers -+ -+# -+# USB HID support -+# -+CONFIG_USB_HID=y -+CONFIG_HID_PID=y -+CONFIG_USB_HIDDEV=y -+# end of USB HID support -+ -+# -+# I2C HID support -+# -+# CONFIG_I2C_HID is not set -+# end of I2C HID support -+# end of HID support -+ -+CONFIG_USB_OHCI_LITTLE_ENDIAN=y -+CONFIG_USB_SUPPORT=y -+CONFIG_USB_COMMON=y -+CONFIG_USB_ULPI_BUS=y -+# CONFIG_USB_CONN_GPIO is not set -+CONFIG_USB_ARCH_HAS_HCD=y -+CONFIG_USB=y -+CONFIG_USB_PCI=y -+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set -+ -+# -+# Miscellaneous USB options -+# -+CONFIG_USB_DEFAULT_PERSIST=y -+# CONFIG_USB_DYNAMIC_MINORS is not set -+# CONFIG_USB_OTG is not set -+# CONFIG_USB_OTG_WHITELIST is not set -+CONFIG_USB_AUTOSUSPEND_DELAY=2 -+CONFIG_USB_MON=m -+ -+# -+# USB Host Controller Drivers -+# -+# CONFIG_USB_C67X00_HCD is not set -+CONFIG_USB_XHCI_HCD=y -+# CONFIG_USB_XHCI_DBGCAP is not set -+CONFIG_USB_XHCI_PCI=y -+CONFIG_USB_XHCI_PLATFORM=y -+CONFIG_USB_EHCI_HCD=m -+CONFIG_USB_EHCI_ROOT_HUB_TT=y -+CONFIG_USB_EHCI_TT_NEWSCHED=y -+CONFIG_USB_EHCI_PCI=m -+# CONFIG_USB_EHCI_FSL is not set -+CONFIG_USB_EHCI_HCD_PLATFORM=m -+# CONFIG_USB_OXU210HP_HCD is not set -+# CONFIG_USB_ISP116X_HCD is not set -+# CONFIG_USB_FOTG210_HCD is not set -+# CONFIG_USB_MAX3421_HCD is not set -+CONFIG_USB_OHCI_HCD=m -+CONFIG_USB_OHCI_HCD_PCI=m -+CONFIG_USB_OHCI_HCD_PLATFORM=m -+# CONFIG_USB_UHCI_HCD is not set -+# CONFIG_USB_SL811_HCD is not set -+# CONFIG_USB_R8A66597_HCD is not set -+# CONFIG_USB_HCD_TEST_MODE is not set -+ -+# -+# USB Device Class drivers -+# -+# CONFIG_USB_ACM is not set -+# CONFIG_USB_PRINTER is not set -+# CONFIG_USB_WDM is not set -+# CONFIG_USB_TMC is not set -+ -+# -+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may -+# -+ -+# -+# also be needed; see USB_STORAGE Help for more info -+# -+CONFIG_USB_STORAGE=y -+# CONFIG_USB_STORAGE_DEBUG is not set -+# CONFIG_USB_STORAGE_REALTEK is not set -+# CONFIG_USB_STORAGE_DATAFAB is not set -+# CONFIG_USB_STORAGE_FREECOM is not set -+# CONFIG_USB_STORAGE_ISD200 is not set -+# CONFIG_USB_STORAGE_USBAT is not set -+# CONFIG_USB_STORAGE_SDDR09 is not set -+# CONFIG_USB_STORAGE_SDDR55 is not set -+# CONFIG_USB_STORAGE_JUMPSHOT is not set -+# CONFIG_USB_STORAGE_ALAUDA is not set -+# CONFIG_USB_STORAGE_ONETOUCH is not set -+# CONFIG_USB_STORAGE_KARMA is not set -+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set -+# CONFIG_USB_STORAGE_ENE_UB6250 is not set -+CONFIG_USB_UAS=y -+ -+# -+# USB Imaging devices -+# -+# CONFIG_USB_MDC800 is not set -+# CONFIG_USB_MICROTEK is not set -+# CONFIG_USBIP_CORE is not set -+# CONFIG_USB_CDNS3 is not set -+# CONFIG_USB_MUSB_HDRC is not set -+CONFIG_USB_DWC3=y -+CONFIG_USB_DWC3_ULPI=y -+CONFIG_USB_DWC3_HOST=y -+ -+# -+# Platform Glue Driver Support -+# -+CONFIG_USB_DWC3_HAPS=y -+CONFIG_USB_DWC3_OF_SIMPLE=y -+CONFIG_USB_DWC3_BAIKAL=y -+# CONFIG_USB_DWC2 is not set -+# CONFIG_USB_CHIPIDEA is not set -+# CONFIG_USB_ISP1760 is not set -+ -+# -+# USB port drivers -+# -+CONFIG_USB_SERIAL=m -+CONFIG_USB_SERIAL_GENERIC=y -+CONFIG_USB_SERIAL_SIMPLE=m -+# CONFIG_USB_SERIAL_AIRCABLE is not set -+# CONFIG_USB_SERIAL_ARK3116 is not set -+# CONFIG_USB_SERIAL_BELKIN is not set -+CONFIG_USB_SERIAL_CH341=m -+# CONFIG_USB_SERIAL_WHITEHEAT is not set -+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -+CONFIG_USB_SERIAL_CP210X=m -+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -+# CONFIG_USB_SERIAL_EMPEG is not set -+CONFIG_USB_SERIAL_FTDI_SIO=m -+# CONFIG_USB_SERIAL_VISOR is not set -+# CONFIG_USB_SERIAL_IPAQ is not set -+# CONFIG_USB_SERIAL_IR is not set -+# CONFIG_USB_SERIAL_EDGEPORT is not set -+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -+# CONFIG_USB_SERIAL_F81232 is not set -+# CONFIG_USB_SERIAL_F8153X is not set -+# CONFIG_USB_SERIAL_GARMIN is not set -+# CONFIG_USB_SERIAL_IPW is not set -+# CONFIG_USB_SERIAL_IUU is not set -+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -+# CONFIG_USB_SERIAL_KEYSPAN is not set -+# CONFIG_USB_SERIAL_KLSI is not set -+# CONFIG_USB_SERIAL_KOBIL_SCT is not set -+# CONFIG_USB_SERIAL_MCT_U232 is not set -+# CONFIG_USB_SERIAL_METRO is not set -+# CONFIG_USB_SERIAL_MOS7720 is not set -+# CONFIG_USB_SERIAL_MOS7840 is not set -+# CONFIG_USB_SERIAL_MXUPORT is not set -+# CONFIG_USB_SERIAL_NAVMAN is not set -+CONFIG_USB_SERIAL_PL2303=m -+# CONFIG_USB_SERIAL_OTI6858 is not set -+# CONFIG_USB_SERIAL_QCAUX is not set -+# CONFIG_USB_SERIAL_QUALCOMM is not set -+# CONFIG_USB_SERIAL_SPCP8X5 is not set -+# CONFIG_USB_SERIAL_SAFE is not set -+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set -+# CONFIG_USB_SERIAL_SYMBOL is not set -+# CONFIG_USB_SERIAL_TI is not set -+# CONFIG_USB_SERIAL_CYBERJACK is not set -+# CONFIG_USB_SERIAL_XIRCOM is not set -+CONFIG_USB_SERIAL_WWAN=m -+CONFIG_USB_SERIAL_OPTION=m -+# CONFIG_USB_SERIAL_OMNINET is not set -+# CONFIG_USB_SERIAL_OPTICON is not set -+# CONFIG_USB_SERIAL_XSENS_MT is not set -+# CONFIG_USB_SERIAL_WISHBONE is not set -+# CONFIG_USB_SERIAL_SSU100 is not set -+# CONFIG_USB_SERIAL_QT2 is not set -+# CONFIG_USB_SERIAL_UPD78F0730 is not set -+# CONFIG_USB_SERIAL_DEBUG is not set -+ -+# -+# USB Miscellaneous drivers -+# -+# CONFIG_USB_EMI62 is not set -+# CONFIG_USB_EMI26 is not set -+# CONFIG_USB_ADUTUX is not set -+# CONFIG_USB_SEVSEG is not set -+# CONFIG_USB_LEGOTOWER is not set -+# CONFIG_USB_LCD is not set -+# CONFIG_USB_CYPRESS_CY7C63 is not set -+# CONFIG_USB_CYTHERM is not set -+# CONFIG_USB_IDMOUSE is not set -+# CONFIG_USB_FTDI_ELAN is not set -+# CONFIG_USB_APPLEDISPLAY is not set -+# CONFIG_USB_SISUSBVGA is not set -+# CONFIG_USB_LD is not set -+# CONFIG_USB_TRANCEVIBRATOR is not set -+# CONFIG_USB_IOWARRIOR is not set -+# CONFIG_USB_TEST is not set -+# CONFIG_USB_EHSET_TEST_FIXTURE is not set -+# CONFIG_USB_ISIGHTFW is not set -+# CONFIG_USB_YUREX is not set -+# CONFIG_USB_EZUSB_FX2 is not set -+# CONFIG_USB_HUB_USB251XB is not set -+# CONFIG_USB_HSIC_USB3503 is not set -+# CONFIG_USB_HSIC_USB4604 is not set -+# CONFIG_USB_LINK_LAYER_TEST is not set -+# CONFIG_USB_CHAOSKEY is not set -+ -+# -+# USB Physical Layer drivers -+# -+# CONFIG_NOP_USB_XCEIV is not set -+# CONFIG_USB_GPIO_VBUS is not set -+# CONFIG_USB_ISP1301 is not set -+CONFIG_USB_ULPI=y -+CONFIG_USB_ULPI_VIEWPORT=y -+# end of USB Physical Layer drivers -+ -+# CONFIG_USB_GADGET is not set -+# CONFIG_TYPEC is not set -+# CONFIG_USB_ROLE_SWITCH is not set -+CONFIG_MMC=m -+CONFIG_PWRSEQ_EMMC=m -+CONFIG_PWRSEQ_SIMPLE=m -+CONFIG_MMC_BLOCK=m -+CONFIG_MMC_BLOCK_MINORS=8 -+# CONFIG_SDIO_UART is not set -+# CONFIG_MMC_TEST is not set -+ -+# -+# MMC/SD/SDIO Host Controller Drivers -+# -+# CONFIG_MMC_DEBUG is not set -+# CONFIG_MMC_ARMMMCI is not set -+CONFIG_MMC_SDHCI=m -+# CONFIG_MMC_SDHCI_PCI is not set -+CONFIG_MMC_SDHCI_PLTFM=m -+CONFIG_MMC_SDHCI_OF_ARASAN=m -+# CONFIG_MMC_SDHCI_OF_ASPEED is not set -+CONFIG_MMC_SDHCI_OF_AT91=m -+CONFIG_MMC_SDHCI_OF_DWCMSHC=m -+# CONFIG_MMC_SDHCI_CADENCE is not set -+# CONFIG_MMC_SDHCI_F_SDH30 is not set -+# CONFIG_MMC_SDHCI_MILBEAUT is not set -+# CONFIG_MMC_TIFM_SD is not set -+# CONFIG_MMC_SPI is not set -+# CONFIG_MMC_CB710 is not set -+# CONFIG_MMC_VIA_SDMMC is not set -+# CONFIG_MMC_DW is not set -+CONFIG_MMC_VUB300=m -+CONFIG_MMC_USHC=m -+# CONFIG_MMC_USDHI6ROL0 is not set -+CONFIG_MMC_CQHCI=m -+# CONFIG_MMC_TOSHIBA_PCI is not set -+# CONFIG_MMC_MTK is not set -+# CONFIG_MMC_SDHCI_XENON is not set -+# CONFIG_MMC_SDHCI_OMAP is not set -+# CONFIG_MMC_SDHCI_AM654 is not set -+# CONFIG_MEMSTICK is not set -+# CONFIG_NEW_LEDS is not set -+# CONFIG_ACCESSIBILITY is not set -+# CONFIG_INFINIBAND is not set -+CONFIG_EDAC_SUPPORT=y -+# CONFIG_EDAC is not set -+CONFIG_RTC_LIB=y -+CONFIG_RTC_CLASS=y -+CONFIG_RTC_HCTOSYS=y -+CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -+CONFIG_RTC_SYSTOHC=y -+CONFIG_RTC_SYSTOHC_DEVICE="rtc0" -+# CONFIG_RTC_DEBUG is not set -+CONFIG_RTC_NVMEM=y -+ -+# -+# RTC interfaces -+# -+CONFIG_RTC_INTF_SYSFS=y -+CONFIG_RTC_INTF_PROC=y -+CONFIG_RTC_INTF_DEV=y -+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set -+# CONFIG_RTC_DRV_TEST is not set -+ -+# -+# I2C RTC drivers -+# -+# CONFIG_RTC_DRV_ABB5ZES3 is not set -+CONFIG_RTC_DRV_ABEOZ9=m -+# CONFIG_RTC_DRV_ABX80X is not set -+# CONFIG_RTC_DRV_DS1307 is not set -+# CONFIG_RTC_DRV_DS1374 is not set -+# CONFIG_RTC_DRV_DS1672 is not set -+# CONFIG_RTC_DRV_HYM8563 is not set -+# CONFIG_RTC_DRV_MAX6900 is not set -+# CONFIG_RTC_DRV_RS5C372 is not set -+# CONFIG_RTC_DRV_ISL1208 is not set -+# CONFIG_RTC_DRV_ISL12022 is not set -+# CONFIG_RTC_DRV_ISL12026 is not set -+# CONFIG_RTC_DRV_X1205 is not set -+# CONFIG_RTC_DRV_PCF8523 is not set -+# CONFIG_RTC_DRV_PCF85063 is not set -+# CONFIG_RTC_DRV_PCF85363 is not set -+# CONFIG_RTC_DRV_PCF8563 is not set -+# CONFIG_RTC_DRV_PCF8583 is not set -+# CONFIG_RTC_DRV_M41T80 is not set -+# CONFIG_RTC_DRV_BQ32K is not set -+# CONFIG_RTC_DRV_S35390A is not set -+# CONFIG_RTC_DRV_FM3130 is not set -+# CONFIG_RTC_DRV_RX8010 is not set -+# CONFIG_RTC_DRV_RX8581 is not set -+# CONFIG_RTC_DRV_RX8025 is not set -+# CONFIG_RTC_DRV_EM3027 is not set -+# CONFIG_RTC_DRV_RV3028 is not set -+# CONFIG_RTC_DRV_RV8803 is not set -+# CONFIG_RTC_DRV_SD3078 is not set -+ -+# -+# SPI RTC drivers -+# -+# CONFIG_RTC_DRV_M41T93 is not set -+# CONFIG_RTC_DRV_M41T94 is not set -+# CONFIG_RTC_DRV_DS1302 is not set -+# CONFIG_RTC_DRV_DS1305 is not set -+# CONFIG_RTC_DRV_DS1343 is not set -+# CONFIG_RTC_DRV_DS1347 is not set -+# CONFIG_RTC_DRV_DS1390 is not set -+# CONFIG_RTC_DRV_MAX6916 is not set -+# CONFIG_RTC_DRV_R9701 is not set -+# CONFIG_RTC_DRV_RX4581 is not set -+# CONFIG_RTC_DRV_RX6110 is not set -+# CONFIG_RTC_DRV_RS5C348 is not set -+# CONFIG_RTC_DRV_MAX6902 is not set -+# CONFIG_RTC_DRV_PCF2123 is not set -+# CONFIG_RTC_DRV_MCP795 is not set -+CONFIG_RTC_I2C_AND_SPI=y -+ -+# -+# SPI and I2C RTC drivers -+# -+# CONFIG_RTC_DRV_DS3232 is not set -+CONFIG_RTC_DRV_PCF2127=y -+# CONFIG_RTC_DRV_RV3029C2 is not set -+ -+# -+# Platform RTC drivers -+# -+# CONFIG_RTC_DRV_DS1286 is not set -+# CONFIG_RTC_DRV_DS1511 is not set -+# CONFIG_RTC_DRV_DS1553 is not set -+# CONFIG_RTC_DRV_DS1685_FAMILY is not set -+# CONFIG_RTC_DRV_DS1742 is not set -+# CONFIG_RTC_DRV_DS2404 is not set -+# CONFIG_RTC_DRV_EFI is not set -+# CONFIG_RTC_DRV_STK17TA8 is not set -+# CONFIG_RTC_DRV_M48T86 is not set -+# CONFIG_RTC_DRV_M48T35 is not set -+# CONFIG_RTC_DRV_M48T59 is not set -+# CONFIG_RTC_DRV_MSM6242 is not set -+# CONFIG_RTC_DRV_BQ4802 is not set -+# CONFIG_RTC_DRV_RP5C01 is not set -+# CONFIG_RTC_DRV_V3020 is not set -+# CONFIG_RTC_DRV_ZYNQMP is not set -+ -+# -+# on-CPU RTC drivers -+# -+# CONFIG_RTC_DRV_PL030 is not set -+# CONFIG_RTC_DRV_PL031 is not set -+# CONFIG_RTC_DRV_CADENCE is not set -+# CONFIG_RTC_DRV_FTRTC010 is not set -+# CONFIG_RTC_DRV_SNVS is not set -+# CONFIG_RTC_DRV_R7301 is not set -+ -+# -+# HID Sensor RTC drivers -+# -+CONFIG_DMADEVICES=y -+# CONFIG_DMADEVICES_DEBUG is not set -+ -+# -+# DMA Devices -+# -+CONFIG_DMA_ENGINE=y -+CONFIG_DMA_OF=y -+# CONFIG_ALTERA_MSGDMA is not set -+# CONFIG_AMBA_PL08X is not set -+# CONFIG_BCM_SBA_RAID is not set -+# CONFIG_DW_AXI_DMAC is not set -+# CONFIG_FSL_EDMA is not set -+# CONFIG_FSL_QDMA is not set -+# CONFIG_HISI_DMA is not set -+# CONFIG_INTEL_IDMA64 is not set -+# CONFIG_MV_XOR_V2 is not set -+# CONFIG_PL330_DMA is not set -+# CONFIG_PLX_DMA is not set -+# CONFIG_XILINX_DMA is not set -+# CONFIG_XILINX_ZYNQMP_DMA is not set -+# CONFIG_QCOM_HIDMA_MGMT is not set -+# CONFIG_QCOM_HIDMA is not set -+# CONFIG_DW_DMAC is not set -+# CONFIG_DW_DMAC_PCI is not set -+# CONFIG_DW_EDMA is not set -+# CONFIG_DW_EDMA_PCIE is not set -+# CONFIG_SF_PDMA is not set -+ -+# -+# DMA Clients -+# -+# CONFIG_ASYNC_TX_DMA is not set -+# CONFIG_DMATEST is not set -+ -+# -+# DMABUF options -+# -+CONFIG_SYNC_FILE=y -+# CONFIG_SW_SYNC is not set -+# CONFIG_UDMABUF is not set -+# CONFIG_DMABUF_SELFTESTS is not set -+# CONFIG_DMABUF_HEAPS is not set -+# end of DMABUF options -+ -+# CONFIG_AUXDISPLAY is not set -+# CONFIG_UIO is not set -+# CONFIG_VFIO is not set -+# CONFIG_VIRT_DRIVERS is not set -+# CONFIG_VIRTIO_MENU is not set -+ -+# -+# Microsoft Hyper-V guest support -+# -+# end of Microsoft Hyper-V guest support -+ -+# CONFIG_GREYBUS is not set -+# CONFIG_STAGING is not set -+# CONFIG_GOLDFISH is not set -+# CONFIG_MFD_CROS_EC is not set -+# CONFIG_CHROME_PLATFORMS is not set -+# CONFIG_MELLANOX_PLATFORM is not set -+CONFIG_CLKDEV_LOOKUP=y -+CONFIG_HAVE_CLK_PREPARE=y -+CONFIG_COMMON_CLK=y -+ -+# -+# Common Clock Framework -+# -+CONFIG_COMMON_CLK_VERSATILE=y -+# CONFIG_CLK_SP810 is not set -+# CONFIG_CLK_HSDK is not set -+# CONFIG_COMMON_CLK_MAX9485 is not set -+# CONFIG_COMMON_CLK_SI5341 is not set -+# CONFIG_COMMON_CLK_SI5351 is not set -+# CONFIG_COMMON_CLK_SI514 is not set -+# CONFIG_COMMON_CLK_SI544 is not set -+# CONFIG_COMMON_CLK_SI570 is not set -+# CONFIG_COMMON_CLK_CDCE706 is not set -+# CONFIG_COMMON_CLK_CDCE925 is not set -+# CONFIG_COMMON_CLK_CS2000_CP is not set -+# CONFIG_CLK_QORIQ is not set -+# CONFIG_COMMON_CLK_XGENE is not set -+# CONFIG_COMMON_CLK_VC5 is not set -+# CONFIG_COMMON_CLK_FIXED_MMIO is not set -+# end of Common Clock Framework -+ -+# CONFIG_HWSPINLOCK is not set -+ -+# -+# Clock Source drivers -+# -+CONFIG_TIMER_OF=y -+CONFIG_TIMER_PROBE=y -+CONFIG_DW_APB_TIMER=y -+CONFIG_DW_APB_TIMER_OF=y -+CONFIG_ARM_ARCH_TIMER=y -+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y -+CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y -+# CONFIG_FSL_ERRATUM_A008585 is not set -+CONFIG_HISILICON_ERRATUM_161010101=y -+CONFIG_ARM64_ERRATUM_858921=y -+# CONFIG_MICROCHIP_PIT64B is not set -+# end of Clock Source drivers -+ -+CONFIG_MAILBOX=y -+CONFIG_ARM_MHU=m -+# CONFIG_PLATFORM_MHU is not set -+# CONFIG_PL320_MBOX is not set -+# CONFIG_ALTERA_MBOX is not set -+# CONFIG_MAILBOX_TEST is not set -+CONFIG_IOMMU_IOVA=y -+CONFIG_IOMMU_API=y -+CONFIG_IOMMU_SUPPORT=y -+ -+# -+# Generic IOMMU Pagetable Support -+# -+CONFIG_IOMMU_IO_PGTABLE=y -+CONFIG_IOMMU_IO_PGTABLE_LPAE=y -+# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set -+# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set -+# end of Generic IOMMU Pagetable Support -+ -+# CONFIG_IOMMU_DEBUGFS is not set -+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set -+CONFIG_OF_IOMMU=y -+CONFIG_IOMMU_DMA=y -+CONFIG_ARM_SMMU=y -+# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set -+CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y -+CONFIG_ARM_SMMU_V3=y -+ -+# -+# Remoteproc drivers -+# -+# CONFIG_REMOTEPROC is not set -+# end of Remoteproc drivers -+ -+# -+# Rpmsg drivers -+# -+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set -+# CONFIG_RPMSG_VIRTIO is not set -+# end of Rpmsg drivers -+ -+# CONFIG_SOUNDWIRE is not set -+ -+# -+# SOC (System On Chip) specific Drivers -+# -+ -+# -+# Amlogic SoC drivers -+# -+# end of Amlogic SoC drivers -+ -+# -+# Aspeed SoC drivers -+# -+# end of Aspeed SoC drivers -+ -+# -+# Broadcom SoC drivers -+# -+# CONFIG_SOC_BRCMSTB is not set -+# end of Broadcom SoC drivers -+ -+# -+# NXP/Freescale QorIQ SoC drivers -+# -+# CONFIG_QUICC_ENGINE is not set -+# CONFIG_FSL_RCPM is not set -+# end of NXP/Freescale QorIQ SoC drivers -+ -+# -+# i.MX SoC drivers -+# -+# end of i.MX SoC drivers -+ -+# -+# Qualcomm SoC drivers -+# -+# end of Qualcomm SoC drivers -+ -+# CONFIG_SOC_TI is not set -+ -+# -+# Xilinx SoC drivers -+# -+# CONFIG_XILINX_VCU is not set -+# end of Xilinx SoC drivers -+# end of SOC (System On Chip) specific Drivers -+ -+CONFIG_PM_DEVFREQ=y -+ -+# -+# DEVFREQ Governors -+# -+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m -+# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set -+# CONFIG_DEVFREQ_GOV_POWERSAVE is not set -+# CONFIG_DEVFREQ_GOV_USERSPACE is not set -+# CONFIG_DEVFREQ_GOV_PASSIVE is not set -+ -+# -+# DEVFREQ Drivers -+# -+# CONFIG_PM_DEVFREQ_EVENT is not set -+# CONFIG_EXTCON is not set -+# CONFIG_MEMORY is not set -+# CONFIG_IIO is not set -+# CONFIG_NTB is not set -+# CONFIG_VME_BUS is not set -+# CONFIG_PWM is not set -+ -+# -+# IRQ chip support -+# -+CONFIG_IRQCHIP=y -+CONFIG_ARM_GIC=y -+CONFIG_ARM_GIC_MAX_NR=1 -+CONFIG_ARM_GIC_V2M=y -+CONFIG_ARM_GIC_V3=y -+CONFIG_ARM_GIC_V3_ITS=y -+CONFIG_ARM_GIC_V3_ITS_PCI=y -+# CONFIG_AL_FIC is not set -+CONFIG_PARTITION_PERCPU=y -+# end of IRQ chip support -+ -+# CONFIG_IPACK_BUS is not set -+CONFIG_RESET_CONTROLLER=y -+# CONFIG_RESET_BRCMSTB_RESCAL is not set -+# CONFIG_RESET_INTEL_GW is not set -+# CONFIG_RESET_TI_SYSCON is not set -+ -+# -+# PHY Subsystem -+# -+# CONFIG_GENERIC_PHY is not set -+# CONFIG_PHY_XGENE is not set -+# CONFIG_BCM_KONA_USB2_PHY is not set -+# CONFIG_PHY_CADENCE_DP is not set -+# CONFIG_PHY_CADENCE_DPHY is not set -+# CONFIG_PHY_CADENCE_SIERRA is not set -+# CONFIG_PHY_FSL_IMX8MQ_USB is not set -+# CONFIG_PHY_MIXEL_MIPI_DPHY is not set -+# CONFIG_PHY_PXA_28NM_HSIC is not set -+# CONFIG_PHY_PXA_28NM_USB2 is not set -+# CONFIG_PHY_MAPPHONE_MDM6600 is not set -+# CONFIG_PHY_OCELOT_SERDES is not set -+# CONFIG_PHY_QCOM_USB_HS is not set -+# CONFIG_PHY_QCOM_USB_HSIC is not set -+# CONFIG_PHY_TUSB1210 is not set -+# CONFIG_PHY_INTEL_EMMC is not set -+# end of PHY Subsystem -+ -+# CONFIG_POWERCAP is not set -+# CONFIG_MCB is not set -+ -+# -+# Performance monitor support -+# -+# CONFIG_ARM_CCI_PMU is not set -+# CONFIG_ARM_CCN is not set -+CONFIG_ARM_PMU=y -+# CONFIG_ARM_DSU_PMU is not set -+# CONFIG_ARM_SPE_PMU is not set -+# end of Performance monitor support -+ -+CONFIG_RAS=y -+ -+# -+# Android -+# -+# CONFIG_ANDROID is not set -+# end of Android -+ -+# CONFIG_LIBNVDIMM is not set -+# CONFIG_DAX is not set -+CONFIG_NVMEM=y -+CONFIG_NVMEM_SYSFS=y -+ -+# -+# HW tracing support -+# -+# CONFIG_STM is not set -+# CONFIG_INTEL_TH is not set -+# end of HW tracing support -+ -+# CONFIG_FPGA is not set -+# CONFIG_FSI is not set -+# CONFIG_TEE is not set -+CONFIG_PM_OPP=y -+# CONFIG_SIOX is not set -+# CONFIG_SLIMBUS is not set -+# CONFIG_INTERCONNECT is not set -+# CONFIG_COUNTER is not set -+# end of Device Drivers -+ -+# -+# File systems -+# -+CONFIG_DCACHE_WORD_ACCESS=y -+# CONFIG_VALIDATE_FS_PARSER is not set -+CONFIG_FS_IOMAP=y -+# CONFIG_EXT2_FS is not set -+CONFIG_EXT3_FS=y -+CONFIG_EXT3_FS_POSIX_ACL=y -+CONFIG_EXT3_FS_SECURITY=y -+CONFIG_EXT4_FS=y -+CONFIG_EXT4_USE_FOR_EXT2=y -+CONFIG_EXT4_FS_POSIX_ACL=y -+CONFIG_EXT4_FS_SECURITY=y -+# CONFIG_EXT4_DEBUG is not set -+CONFIG_JBD2=y -+# CONFIG_JBD2_DEBUG is not set -+CONFIG_FS_MBCACHE=y -+# CONFIG_REISERFS_FS is not set -+# CONFIG_JFS_FS is not set -+# CONFIG_XFS_FS is not set -+# CONFIG_GFS2_FS is not set -+# CONFIG_OCFS2_FS is not set -+# CONFIG_BTRFS_FS is not set -+# CONFIG_NILFS2_FS is not set -+# CONFIG_F2FS_FS is not set -+# CONFIG_FS_DAX is not set -+CONFIG_FS_POSIX_ACL=y -+CONFIG_EXPORTFS=y -+CONFIG_EXPORTFS_BLOCK_OPS=y -+CONFIG_FILE_LOCKING=y -+CONFIG_MANDATORY_FILE_LOCKING=y -+# CONFIG_FS_ENCRYPTION is not set -+# CONFIG_FS_VERITY is not set -+CONFIG_FSNOTIFY=y -+CONFIG_DNOTIFY=y -+CONFIG_INOTIFY_USER=y -+CONFIG_FANOTIFY=y -+CONFIG_QUOTA=y -+CONFIG_QUOTA_NETLINK_INTERFACE=y -+CONFIG_PRINT_QUOTA_WARNING=y -+# CONFIG_QUOTA_DEBUG is not set -+CONFIG_QUOTA_TREE=m -+CONFIG_QFMT_V1=m -+CONFIG_QFMT_V2=m -+CONFIG_QUOTACTL=y -+CONFIG_AUTOFS4_FS=y -+CONFIG_AUTOFS_FS=y -+CONFIG_FUSE_FS=m -+# CONFIG_CUSE is not set -+# CONFIG_VIRTIO_FS is not set -+CONFIG_OVERLAY_FS=y -+# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set -+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y -+# CONFIG_OVERLAY_FS_INDEX is not set -+# CONFIG_OVERLAY_FS_XINO_AUTO is not set -+# CONFIG_OVERLAY_FS_METACOPY is not set -+ -+# -+# Caches -+# -+# CONFIG_FSCACHE is not set -+# end of Caches -+ -+# -+# CD-ROM/DVD Filesystems -+# -+CONFIG_ISO9660_FS=y -+CONFIG_JOLIET=y -+CONFIG_ZISOFS=y -+CONFIG_UDF_FS=y -+# end of CD-ROM/DVD Filesystems -+ -+# -+# DOS/FAT/NT Filesystems -+# -+CONFIG_FAT_FS=y -+CONFIG_MSDOS_FS=y -+CONFIG_VFAT_FS=y -+CONFIG_FAT_DEFAULT_CODEPAGE=866 -+CONFIG_FAT_DEFAULT_IOCHARSET="utf8" -+CONFIG_FAT_DEFAULT_UTF8=y -+# CONFIG_NTFS_FS is not set -+# end of DOS/FAT/NT Filesystems -+ -+# -+# Pseudo filesystems -+# -+CONFIG_PROC_FS=y -+CONFIG_PROC_KCORE=y -+CONFIG_PROC_SYSCTL=y -+CONFIG_PROC_PAGE_MONITOR=y -+# CONFIG_PROC_CHILDREN is not set -+CONFIG_KERNFS=y -+CONFIG_SYSFS=y -+CONFIG_TMPFS=y -+CONFIG_TMPFS_POSIX_ACL=y -+CONFIG_TMPFS_XATTR=y -+CONFIG_HUGETLBFS=y -+CONFIG_HUGETLB_PAGE=y -+CONFIG_MEMFD_CREATE=y -+CONFIG_ARCH_HAS_GIGANTIC_PAGE=y -+CONFIG_CONFIGFS_FS=m -+CONFIG_EFIVAR_FS=m -+# end of Pseudo filesystems -+ -+CONFIG_MISC_FILESYSTEMS=y -+# CONFIG_ORANGEFS_FS is not set -+# CONFIG_ADFS_FS is not set -+# CONFIG_AFFS_FS is not set -+# CONFIG_ECRYPT_FS is not set -+# CONFIG_HFS_FS is not set -+# CONFIG_HFSPLUS_FS is not set -+# CONFIG_BEFS_FS is not set -+# CONFIG_BFS_FS is not set -+# CONFIG_EFS_FS is not set -+# CONFIG_JFFS2_FS is not set -+# CONFIG_CRAMFS is not set -+CONFIG_SQUASHFS=y -+CONFIG_SQUASHFS_FILE_CACHE=y -+# CONFIG_SQUASHFS_FILE_DIRECT is not set -+CONFIG_SQUASHFS_DECOMP_SINGLE=y -+# CONFIG_SQUASHFS_DECOMP_MULTI is not set -+# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set -+CONFIG_SQUASHFS_XATTR=y -+CONFIG_SQUASHFS_ZLIB=y -+CONFIG_SQUASHFS_LZ4=y -+CONFIG_SQUASHFS_LZO=y -+CONFIG_SQUASHFS_XZ=y -+# CONFIG_SQUASHFS_ZSTD is not set -+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set -+# CONFIG_SQUASHFS_EMBEDDED is not set -+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -+# CONFIG_VXFS_FS is not set -+# CONFIG_MINIX_FS is not set -+# CONFIG_OMFS_FS is not set -+# CONFIG_HPFS_FS is not set -+# CONFIG_QNX4FS_FS is not set -+# CONFIG_QNX6FS_FS is not set -+# CONFIG_ROMFS_FS is not set -+CONFIG_PSTORE=y -+CONFIG_PSTORE_DEFLATE_COMPRESS=y -+# CONFIG_PSTORE_LZO_COMPRESS is not set -+# CONFIG_PSTORE_LZ4_COMPRESS is not set -+# CONFIG_PSTORE_LZ4HC_COMPRESS is not set -+# CONFIG_PSTORE_842_COMPRESS is not set -+# CONFIG_PSTORE_ZSTD_COMPRESS is not set -+CONFIG_PSTORE_COMPRESS=y -+CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y -+CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" -+# CONFIG_PSTORE_CONSOLE is not set -+# CONFIG_PSTORE_PMSG is not set -+# CONFIG_PSTORE_FTRACE is not set -+# CONFIG_PSTORE_RAM is not set -+# CONFIG_SYSV_FS is not set -+# CONFIG_UFS_FS is not set -+# CONFIG_EROFS_FS is not set -+CONFIG_NETWORK_FILESYSTEMS=y -+CONFIG_NFS_FS=m -+CONFIG_NFS_V3=m -+CONFIG_NFS_V3_ACL=y -+CONFIG_NFS_V4=m -+# CONFIG_NFS_SWAP is not set -+CONFIG_NFS_V4_1=y -+CONFIG_NFS_V4_2=y -+CONFIG_PNFS_FILE_LAYOUT=m -+CONFIG_PNFS_BLOCK=m -+CONFIG_PNFS_FLEXFILE_LAYOUT=m -+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" -+CONFIG_NFS_V4_1_MIGRATION=y -+# CONFIG_NFS_USE_LEGACY_DNS is not set -+CONFIG_NFS_USE_KERNEL_DNS=y -+# CONFIG_NFS_DISABLE_UDP_SUPPORT is not set -+# CONFIG_NFS_V4_2_READ_PLUS is not set -+CONFIG_NFSD=m -+CONFIG_NFSD_V2_ACL=y -+CONFIG_NFSD_V3=y -+CONFIG_NFSD_V3_ACL=y -+CONFIG_NFSD_V4=y -+CONFIG_NFSD_PNFS=y -+CONFIG_NFSD_BLOCKLAYOUT=y -+CONFIG_NFSD_SCSILAYOUT=y -+# CONFIG_NFSD_FLEXFILELAYOUT is not set -+CONFIG_NFSD_V4_2_INTER_SSC=y -+CONFIG_GRACE_PERIOD=m -+CONFIG_LOCKD=m -+CONFIG_LOCKD_V4=y -+CONFIG_NFS_ACL_SUPPORT=m -+CONFIG_NFS_COMMON=y -+CONFIG_SUNRPC=m -+CONFIG_SUNRPC_GSS=m -+CONFIG_SUNRPC_BACKCHANNEL=y -+# CONFIG_SUNRPC_DEBUG is not set -+# CONFIG_CEPH_FS is not set -+CONFIG_CIFS=m -+# CONFIG_CIFS_STATS2 is not set -+CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y -+CONFIG_CIFS_WEAK_PW_HASH=y -+CONFIG_CIFS_UPCALL=y -+CONFIG_CIFS_XATTR=y -+CONFIG_CIFS_POSIX=y -+CONFIG_CIFS_DEBUG=y -+# CONFIG_CIFS_DEBUG2 is not set -+# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set -+CONFIG_CIFS_DFS_UPCALL=y -+# CONFIG_CODA_FS is not set -+# CONFIG_AFS_FS is not set -+CONFIG_NLS=y -+CONFIG_NLS_DEFAULT="utf8" -+CONFIG_NLS_CODEPAGE_437=y -+# CONFIG_NLS_CODEPAGE_737 is not set -+# CONFIG_NLS_CODEPAGE_775 is not set -+# CONFIG_NLS_CODEPAGE_850 is not set -+# CONFIG_NLS_CODEPAGE_852 is not set -+# CONFIG_NLS_CODEPAGE_855 is not set -+# CONFIG_NLS_CODEPAGE_857 is not set -+# CONFIG_NLS_CODEPAGE_860 is not set -+# CONFIG_NLS_CODEPAGE_861 is not set -+# CONFIG_NLS_CODEPAGE_862 is not set -+# CONFIG_NLS_CODEPAGE_863 is not set -+# CONFIG_NLS_CODEPAGE_864 is not set -+# CONFIG_NLS_CODEPAGE_865 is not set -+CONFIG_NLS_CODEPAGE_866=y -+# CONFIG_NLS_CODEPAGE_869 is not set -+# CONFIG_NLS_CODEPAGE_936 is not set -+# CONFIG_NLS_CODEPAGE_950 is not set -+# CONFIG_NLS_CODEPAGE_932 is not set -+# CONFIG_NLS_CODEPAGE_949 is not set -+# CONFIG_NLS_CODEPAGE_874 is not set -+# CONFIG_NLS_ISO8859_8 is not set -+# CONFIG_NLS_CODEPAGE_1250 is not set -+# CONFIG_NLS_CODEPAGE_1251 is not set -+# CONFIG_NLS_ASCII is not set -+CONFIG_NLS_ISO8859_1=y -+# CONFIG_NLS_ISO8859_2 is not set -+# CONFIG_NLS_ISO8859_3 is not set -+# CONFIG_NLS_ISO8859_4 is not set -+# CONFIG_NLS_ISO8859_5 is not set -+# CONFIG_NLS_ISO8859_6 is not set -+# CONFIG_NLS_ISO8859_7 is not set -+# CONFIG_NLS_ISO8859_9 is not set -+# CONFIG_NLS_ISO8859_13 is not set -+# CONFIG_NLS_ISO8859_14 is not set -+# CONFIG_NLS_ISO8859_15 is not set -+# CONFIG_NLS_KOI8_R is not set -+# CONFIG_NLS_KOI8_U is not set -+# CONFIG_NLS_MAC_ROMAN is not set -+# CONFIG_NLS_MAC_CELTIC is not set -+# CONFIG_NLS_MAC_CENTEURO is not set -+# CONFIG_NLS_MAC_CROATIAN is not set -+# CONFIG_NLS_MAC_CYRILLIC is not set -+# CONFIG_NLS_MAC_GAELIC is not set -+# CONFIG_NLS_MAC_GREEK is not set -+# CONFIG_NLS_MAC_ICELAND is not set -+# CONFIG_NLS_MAC_INUIT is not set -+# CONFIG_NLS_MAC_ROMANIAN is not set -+# CONFIG_NLS_MAC_TURKISH is not set -+CONFIG_NLS_UTF8=y -+# CONFIG_DLM is not set -+# CONFIG_UNICODE is not set -+CONFIG_IO_WQ=y -+# end of File systems -+ -+# -+# Security options -+# -+CONFIG_KEYS=y -+# CONFIG_KEYS_REQUEST_CACHE is not set -+CONFIG_PERSISTENT_KEYRINGS=y -+CONFIG_BIG_KEYS=y -+# CONFIG_ENCRYPTED_KEYS is not set -+# CONFIG_KEY_DH_OPERATIONS is not set -+# CONFIG_SECURITY_DMESG_RESTRICT is not set -+# CONFIG_SECURITY is not set -+# CONFIG_SECURITYFS is not set -+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y -+# CONFIG_HARDENED_USERCOPY is not set -+# CONFIG_FORTIFY_SOURCE is not set -+# CONFIG_STATIC_USERMODEHELPER is not set -+CONFIG_DEFAULT_SECURITY_DAC=y -+CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity" -+ -+# -+# Kernel hardening options -+# -+ -+# -+# Memory initialization -+# -+CONFIG_INIT_STACK_NONE=y -+# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set -+# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set -+# end of Memory initialization -+# end of Kernel hardening options -+# end of Security options -+ -+CONFIG_XOR_BLOCKS=m -+CONFIG_ASYNC_CORE=m -+CONFIG_ASYNC_MEMCPY=m -+CONFIG_ASYNC_XOR=m -+CONFIG_ASYNC_PQ=m -+CONFIG_ASYNC_RAID6_RECOV=m -+CONFIG_CRYPTO=y -+ -+# -+# Crypto core or helper -+# -+CONFIG_CRYPTO_ALGAPI=y -+CONFIG_CRYPTO_ALGAPI2=y -+CONFIG_CRYPTO_AEAD=y -+CONFIG_CRYPTO_AEAD2=y -+CONFIG_CRYPTO_SKCIPHER=y -+CONFIG_CRYPTO_SKCIPHER2=y -+CONFIG_CRYPTO_HASH=y -+CONFIG_CRYPTO_HASH2=y -+CONFIG_CRYPTO_RNG=y -+CONFIG_CRYPTO_RNG2=y -+CONFIG_CRYPTO_RNG_DEFAULT=y -+CONFIG_CRYPTO_AKCIPHER2=y -+CONFIG_CRYPTO_KPP2=y -+CONFIG_CRYPTO_ACOMP2=y -+CONFIG_CRYPTO_MANAGER=y -+CONFIG_CRYPTO_MANAGER2=y -+# CONFIG_CRYPTO_USER is not set -+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y -+CONFIG_CRYPTO_GF128MUL=y -+CONFIG_CRYPTO_NULL=y -+CONFIG_CRYPTO_NULL2=y -+# CONFIG_CRYPTO_PCRYPT is not set -+# CONFIG_CRYPTO_CRYPTD is not set -+CONFIG_CRYPTO_AUTHENC=m -+# CONFIG_CRYPTO_TEST is not set -+ -+# -+# Public-key cryptography -+# -+# CONFIG_CRYPTO_RSA is not set -+# CONFIG_CRYPTO_DH is not set -+# CONFIG_CRYPTO_ECDH is not set -+# CONFIG_CRYPTO_ECRDSA is not set -+# CONFIG_CRYPTO_CURVE25519 is not set -+ -+# -+# Authenticated Encryption with Associated Data -+# -+CONFIG_CRYPTO_GCM=y -+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set -+# CONFIG_CRYPTO_AEGIS128 is not set -+CONFIG_CRYPTO_SEQIV=y -+# CONFIG_CRYPTO_ECHAINIV is not set -+ -+# -+# Block modes -+# -+CONFIG_CRYPTO_CBC=y -+# CONFIG_CRYPTO_CFB is not set -+CONFIG_CRYPTO_CTR=y -+# CONFIG_CRYPTO_CTS is not set -+# CONFIG_CRYPTO_LRW is not set -+# CONFIG_CRYPTO_OFB is not set -+# CONFIG_CRYPTO_PCBC is not set -+# CONFIG_CRYPTO_XTS is not set -+# CONFIG_CRYPTO_KEYWRAP is not set -+# CONFIG_CRYPTO_ADIANTUM is not set -+CONFIG_CRYPTO_ESSIV=m -+ -+# -+# Hash modes -+# -+CONFIG_CRYPTO_HMAC=y -+# CONFIG_CRYPTO_XCBC is not set -+# CONFIG_CRYPTO_VMAC is not set -+ -+# -+# Digest -+# -+CONFIG_CRYPTO_CRC32C=y -+CONFIG_CRYPTO_CRC32=m -+# CONFIG_CRYPTO_XXHASH is not set -+# CONFIG_CRYPTO_BLAKE2B is not set -+# CONFIG_CRYPTO_BLAKE2S is not set -+CONFIG_CRYPTO_CRCT10DIF=y -+CONFIG_CRYPTO_GHASH=y -+# CONFIG_CRYPTO_POLY1305 is not set -+# CONFIG_CRYPTO_MICHAEL_MIC is not set -+# CONFIG_CRYPTO_RMD128 is not set -+# CONFIG_CRYPTO_RMD160 is not set -+# CONFIG_CRYPTO_RMD256 is not set -+# CONFIG_CRYPTO_RMD320 is not set -+CONFIG_CRYPTO_SHA1=m -+CONFIG_CRYPTO_SHA256=y -+# CONFIG_CRYPTO_SHA3 is not set -+# CONFIG_CRYPTO_SM3 is not set -+# CONFIG_CRYPTO_STREEBOG is not set -+# CONFIG_CRYPTO_TGR192 is not set -+# CONFIG_CRYPTO_WP512 is not set -+ -+# -+# Ciphers -+# -+CONFIG_CRYPTO_AES=y -+# CONFIG_CRYPTO_AES_TI is not set -+# CONFIG_CRYPTO_ANUBIS is not set -+# CONFIG_CRYPTO_ARC4 is not set -+# CONFIG_CRYPTO_BLOWFISH is not set -+# CONFIG_CRYPTO_CAMELLIA is not set -+# CONFIG_CRYPTO_CAST5 is not set -+# CONFIG_CRYPTO_CAST6 is not set -+# CONFIG_CRYPTO_DES is not set -+# CONFIG_CRYPTO_FCRYPT is not set -+# CONFIG_CRYPTO_KHAZAD is not set -+# CONFIG_CRYPTO_SALSA20 is not set -+# CONFIG_CRYPTO_CHACHA20 is not set -+# CONFIG_CRYPTO_SEED is not set -+# CONFIG_CRYPTO_SERPENT is not set -+# CONFIG_CRYPTO_SM4 is not set -+# CONFIG_CRYPTO_TEA is not set -+# CONFIG_CRYPTO_TWOFISH is not set -+ -+# -+# Compression -+# -+CONFIG_CRYPTO_DEFLATE=y -+CONFIG_CRYPTO_LZO=y -+# CONFIG_CRYPTO_842 is not set -+# CONFIG_CRYPTO_LZ4 is not set -+# CONFIG_CRYPTO_LZ4HC is not set -+# CONFIG_CRYPTO_ZSTD is not set -+ -+# -+# Random Number Generation -+# -+# CONFIG_CRYPTO_ANSI_CPRNG is not set -+CONFIG_CRYPTO_DRBG_MENU=y -+CONFIG_CRYPTO_DRBG_HMAC=y -+# CONFIG_CRYPTO_DRBG_HASH is not set -+# CONFIG_CRYPTO_DRBG_CTR is not set -+CONFIG_CRYPTO_DRBG=y -+CONFIG_CRYPTO_JITTERENTROPY=y -+# CONFIG_CRYPTO_USER_API_HASH is not set -+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set -+# CONFIG_CRYPTO_USER_API_RNG is not set -+# CONFIG_CRYPTO_USER_API_AEAD is not set -+ -+# -+# Crypto library routines -+# -+CONFIG_CRYPTO_LIB_AES=y -+CONFIG_CRYPTO_LIB_ARC4=m -+# CONFIG_CRYPTO_LIB_BLAKE2S is not set -+# CONFIG_CRYPTO_LIB_CHACHA is not set -+# CONFIG_CRYPTO_LIB_CURVE25519 is not set -+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 -+# CONFIG_CRYPTO_LIB_POLY1305 is not set -+# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set -+CONFIG_CRYPTO_LIB_SHA256=y -+# CONFIG_CRYPTO_HW is not set -+# CONFIG_ASYMMETRIC_KEY_TYPE is not set -+ -+# -+# Certificates for signature checking -+# -+# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set -+# end of Certificates for signature checking -+ -+CONFIG_BINARY_PRINTF=y -+ -+# -+# Library routines -+# -+CONFIG_RAID6_PQ=m -+CONFIG_RAID6_PQ_BENCHMARK=y -+# CONFIG_PACKING is not set -+CONFIG_BITREVERSE=y -+CONFIG_HAVE_ARCH_BITREVERSE=y -+CONFIG_GENERIC_STRNCPY_FROM_USER=y -+CONFIG_GENERIC_STRNLEN_USER=y -+CONFIG_GENERIC_NET_UTILS=y -+# CONFIG_CORDIC is not set -+CONFIG_RATIONAL=y -+CONFIG_GENERIC_PCI_IOMAP=y -+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y -+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y -+# CONFIG_INDIRECT_PIO is not set -+CONFIG_CRC_CCITT=m -+CONFIG_CRC16=y -+# CONFIG_CRC_T10DIF is not set -+CONFIG_CRC_ITU_T=y -+CONFIG_CRC32=y -+# CONFIG_CRC32_SELFTEST is not set -+CONFIG_CRC32_SLICEBY8=y -+# CONFIG_CRC32_SLICEBY4 is not set -+# CONFIG_CRC32_SARWATE is not set -+# CONFIG_CRC32_BIT is not set -+# CONFIG_CRC64 is not set -+# CONFIG_CRC4 is not set -+# CONFIG_CRC7 is not set -+CONFIG_LIBCRC32C=m -+# CONFIG_CRC8 is not set -+CONFIG_XXHASH=y -+CONFIG_AUDIT_GENERIC=y -+CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y -+CONFIG_AUDIT_COMPAT_GENERIC=y -+# CONFIG_RANDOM32_SELFTEST is not set -+CONFIG_ZLIB_INFLATE=y -+CONFIG_ZLIB_DEFLATE=y -+CONFIG_LZO_COMPRESS=y -+CONFIG_LZO_DECOMPRESS=y -+CONFIG_LZ4_DECOMPRESS=y -+CONFIG_XZ_DEC=y -+CONFIG_XZ_DEC_X86=y -+CONFIG_XZ_DEC_POWERPC=y -+CONFIG_XZ_DEC_IA64=y -+CONFIG_XZ_DEC_ARM=y -+CONFIG_XZ_DEC_ARMTHUMB=y -+CONFIG_XZ_DEC_SPARC=y -+CONFIG_XZ_DEC_BCJ=y -+# CONFIG_XZ_DEC_TEST is not set -+CONFIG_DECOMPRESS_GZIP=y -+CONFIG_DECOMPRESS_LZMA=y -+CONFIG_DECOMPRESS_XZ=y -+CONFIG_DECOMPRESS_LZO=y -+CONFIG_DECOMPRESS_LZ4=y -+CONFIG_GENERIC_ALLOCATOR=y -+CONFIG_XARRAY_MULTI=y -+CONFIG_ASSOCIATIVE_ARRAY=y -+CONFIG_HAS_IOMEM=y -+CONFIG_HAS_IOPORT_MAP=y -+CONFIG_HAS_DMA=y -+CONFIG_NEED_SG_DMA_LENGTH=y -+CONFIG_NEED_DMA_MAP_STATE=y -+CONFIG_ARCH_DMA_ADDR_T_64BIT=y -+CONFIG_DMA_DECLARE_COHERENT=y -+CONFIG_ARCH_HAS_SETUP_DMA_OPS=y -+CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y -+CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y -+CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y -+CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y -+CONFIG_SWIOTLB=y -+CONFIG_DMA_NONCOHERENT_MMAP=y -+CONFIG_DMA_REMAP=y -+CONFIG_DMA_DIRECT_REMAP=y -+CONFIG_DMA_CMA=y -+ -+# -+# Default contiguous memory area size: -+# -+CONFIG_CMA_SIZE_MBYTES=256 -+CONFIG_CMA_SIZE_SEL_MBYTES=y -+# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set -+# CONFIG_CMA_SIZE_SEL_MIN is not set -+# CONFIG_CMA_SIZE_SEL_MAX is not set -+CONFIG_CMA_ALIGNMENT=8 -+# CONFIG_DMA_API_DEBUG is not set -+CONFIG_SGL_ALLOC=y -+CONFIG_CPU_RMAP=y -+CONFIG_DQL=y -+CONFIG_GLOB=y -+# CONFIG_GLOB_SELFTEST is not set -+CONFIG_NLATTR=y -+CONFIG_IRQ_POLL=y -+CONFIG_LIBFDT=y -+CONFIG_UCS2_STRING=y -+CONFIG_HAVE_GENERIC_VDSO=y -+CONFIG_GENERIC_GETTIMEOFDAY=y -+CONFIG_FONT_SUPPORT=y -+# CONFIG_FONTS is not set -+CONFIG_FONT_8x8=y -+CONFIG_FONT_8x16=y -+CONFIG_SG_POOL=y -+CONFIG_SBITMAP=y -+# CONFIG_STRING_SELFTEST is not set -+# end of Library routines -+ -+# -+# Kernel hacking -+# -+ -+# -+# printk and dmesg options -+# -+CONFIG_PRINTK_TIME=y -+# CONFIG_PRINTK_CALLER is not set -+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 -+CONFIG_CONSOLE_LOGLEVEL_QUIET=4 -+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 -+CONFIG_BOOT_PRINTK_DELAY=y -+CONFIG_DYNAMIC_DEBUG=y -+CONFIG_SYMBOLIC_ERRNAME=y -+CONFIG_DEBUG_BUGVERBOSE=y -+# end of printk and dmesg options -+ -+# -+# Compile-time checks and compiler options -+# -+# CONFIG_DEBUG_INFO is not set -+CONFIG_ENABLE_MUST_CHECK=y -+CONFIG_FRAME_WARN=2048 -+CONFIG_STRIP_ASM_SYMS=y -+# CONFIG_READABLE_ASM is not set -+# CONFIG_HEADERS_INSTALL is not set -+CONFIG_OPTIMIZE_INLINING=y -+# CONFIG_DEBUG_SECTION_MISMATCH is not set -+CONFIG_SECTION_MISMATCH_WARN_ONLY=y -+CONFIG_ARCH_WANT_FRAME_POINTERS=y -+CONFIG_FRAME_POINTER=y -+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set -+# end of Compile-time checks and compiler options -+ -+# -+# Generic Kernel Debugging Instruments -+# -+CONFIG_MAGIC_SYSRQ=y -+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6 -+CONFIG_MAGIC_SYSRQ_SERIAL=y -+CONFIG_DEBUG_FS=y -+CONFIG_HAVE_ARCH_KGDB=y -+CONFIG_KGDB=y -+CONFIG_KGDB_SERIAL_CONSOLE=y -+# CONFIG_KGDB_TESTS is not set -+CONFIG_KGDB_KDB=y -+CONFIG_KDB_DEFAULT_ENABLE=0x1 -+# CONFIG_KDB_KEYBOARD is not set -+CONFIG_KDB_CONTINUE_CATASTROPHIC=0 -+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y -+# CONFIG_UBSAN is not set -+CONFIG_UBSAN_ALIGNMENT=y -+# end of Generic Kernel Debugging Instruments -+ -+CONFIG_DEBUG_KERNEL=y -+CONFIG_DEBUG_MISC=y -+ -+# -+# Memory Debugging -+# -+CONFIG_PAGE_EXTENSION=y -+# CONFIG_DEBUG_PAGEALLOC is not set -+# CONFIG_PAGE_OWNER is not set -+CONFIG_PAGE_POISONING=y -+CONFIG_PAGE_POISONING_NO_SANITY=y -+# CONFIG_PAGE_POISONING_ZERO is not set -+# CONFIG_DEBUG_PAGE_REF is not set -+# CONFIG_DEBUG_RODATA_TEST is not set -+CONFIG_GENERIC_PTDUMP=y -+# CONFIG_PTDUMP_DEBUGFS is not set -+# CONFIG_DEBUG_OBJECTS is not set -+# CONFIG_DEBUG_SLAB is not set -+CONFIG_HAVE_DEBUG_KMEMLEAK=y -+# CONFIG_DEBUG_KMEMLEAK is not set -+# CONFIG_DEBUG_STACK_USAGE is not set -+CONFIG_SCHED_STACK_END_CHECK=y -+# CONFIG_DEBUG_VM is not set -+CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y -+# CONFIG_DEBUG_VIRTUAL is not set -+CONFIG_DEBUG_MEMORY_INIT=y -+# CONFIG_DEBUG_PER_CPU_MAPS is not set -+CONFIG_HAVE_ARCH_KASAN=y -+CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y -+CONFIG_CC_HAS_KASAN_GENERIC=y -+# CONFIG_KASAN is not set -+CONFIG_KASAN_STACK=1 -+# end of Memory Debugging -+ -+# CONFIG_DEBUG_SHIRQ is not set -+ -+# -+# Debug Oops, Lockups and Hangs -+# -+# CONFIG_PANIC_ON_OOPS is not set -+CONFIG_PANIC_ON_OOPS_VALUE=0 -+CONFIG_PANIC_TIMEOUT=0 -+CONFIG_LOCKUP_DETECTOR=y -+CONFIG_SOFTLOCKUP_DETECTOR=y -+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set -+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 -+CONFIG_DETECT_HUNG_TASK=y -+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 -+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 -+CONFIG_WQ_WATCHDOG=y -+# end of Debug Oops, Lockups and Hangs -+ -+# -+# Scheduler Debugging -+# -+CONFIG_SCHED_DEBUG=y -+CONFIG_SCHED_INFO=y -+CONFIG_SCHEDSTATS=y -+# end of Scheduler Debugging -+ -+# CONFIG_DEBUG_TIMEKEEPING is not set -+CONFIG_DEBUG_PREEMPT=y -+ -+# -+# Lock Debugging (spinlocks, mutexes, etc...) -+# -+CONFIG_LOCK_DEBUGGING_SUPPORT=y -+CONFIG_PROVE_LOCKING=y -+# CONFIG_LOCK_STAT is not set -+CONFIG_DEBUG_RT_MUTEXES=y -+CONFIG_DEBUG_SPINLOCK=y -+CONFIG_DEBUG_MUTEXES=y -+CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y -+CONFIG_DEBUG_RWSEMS=y -+CONFIG_DEBUG_LOCK_ALLOC=y -+CONFIG_LOCKDEP=y -+# CONFIG_DEBUG_LOCKDEP is not set -+# CONFIG_DEBUG_ATOMIC_SLEEP is not set -+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -+# CONFIG_LOCK_TORTURE_TEST is not set -+# CONFIG_WW_MUTEX_SELFTEST is not set -+# end of Lock Debugging (spinlocks, mutexes, etc...) -+ -+CONFIG_TRACE_IRQFLAGS=y -+CONFIG_STACKTRACE=y -+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set -+# CONFIG_DEBUG_KOBJECT is not set -+CONFIG_HAVE_DEBUG_BUGVERBOSE=y -+ -+# -+# Debug kernel data structures -+# -+CONFIG_DEBUG_LIST=y -+# CONFIG_DEBUG_PLIST is not set -+# CONFIG_DEBUG_SG is not set -+# CONFIG_DEBUG_NOTIFIERS is not set -+# CONFIG_BUG_ON_DATA_CORRUPTION is not set -+# end of Debug kernel data structures -+ -+# CONFIG_DEBUG_CREDENTIALS is not set -+ -+# -+# RCU Debugging -+# -+CONFIG_PROVE_RCU=y -+# CONFIG_RCU_PERF_TEST is not set -+# CONFIG_RCU_TORTURE_TEST is not set -+CONFIG_RCU_CPU_STALL_TIMEOUT=21 -+# CONFIG_RCU_TRACE is not set -+# CONFIG_RCU_EQS_DEBUG is not set -+# end of RCU Debugging -+ -+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set -+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set -+CONFIG_LATENCYTOP=y -+CONFIG_NOP_TRACER=y -+CONFIG_HAVE_FUNCTION_TRACER=y -+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y -+CONFIG_HAVE_DYNAMIC_FTRACE=y -+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y -+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y -+CONFIG_HAVE_C_RECORDMCOUNT=y -+CONFIG_TRACER_MAX_TRACE=y -+CONFIG_TRACE_CLOCK=y -+CONFIG_RING_BUFFER=y -+CONFIG_EVENT_TRACING=y -+CONFIG_CONTEXT_SWITCH_TRACER=y -+CONFIG_RING_BUFFER_ALLOW_SWAP=y -+CONFIG_PREEMPTIRQ_TRACEPOINTS=y -+CONFIG_TRACING=y -+CONFIG_GENERIC_TRACER=y -+CONFIG_TRACING_SUPPORT=y -+CONFIG_FTRACE=y -+# CONFIG_BOOTTIME_TRACING is not set -+CONFIG_FUNCTION_TRACER=y -+CONFIG_FUNCTION_GRAPH_TRACER=y -+CONFIG_DYNAMIC_FTRACE=y -+# CONFIG_FUNCTION_PROFILER is not set -+CONFIG_STACK_TRACER=y -+# CONFIG_PREEMPTIRQ_EVENTS is not set -+CONFIG_IRQSOFF_TRACER=y -+# CONFIG_PREEMPT_TRACER is not set -+CONFIG_SCHED_TRACER=y -+CONFIG_HWLAT_TRACER=y -+CONFIG_FTRACE_SYSCALLS=y -+CONFIG_TRACER_SNAPSHOT=y -+CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y -+CONFIG_BRANCH_PROFILE_NONE=y -+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set -+# CONFIG_PROFILE_ALL_BRANCHES is not set -+CONFIG_BLK_DEV_IO_TRACE=y -+CONFIG_KPROBE_EVENTS=y -+CONFIG_UPROBE_EVENTS=y -+CONFIG_BPF_EVENTS=y -+CONFIG_DYNAMIC_EVENTS=y -+CONFIG_PROBE_EVENTS=y -+# CONFIG_BPF_KPROBE_OVERRIDE is not set -+CONFIG_FTRACE_MCOUNT_RECORD=y -+# CONFIG_HIST_TRIGGERS is not set -+# CONFIG_TRACE_EVENT_INJECT is not set -+# CONFIG_TRACEPOINT_BENCHMARK is not set -+# CONFIG_RING_BUFFER_BENCHMARK is not set -+# CONFIG_TRACE_EVAL_MAP_FILE is not set -+# CONFIG_FTRACE_STARTUP_TEST is not set -+# CONFIG_RING_BUFFER_STARTUP_TEST is not set -+# CONFIG_PREEMPTIRQ_DELAY_TEST is not set -+# CONFIG_KPROBE_EVENT_GEN_TEST is not set -+# CONFIG_SAMPLES is not set -+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y -+CONFIG_STRICT_DEVMEM=y -+CONFIG_IO_STRICT_DEVMEM=y -+ -+# -+# arm64 Debugging -+# -+# CONFIG_PID_IN_CONTEXTIDR is not set -+# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set -+# CONFIG_DEBUG_WX is not set -+# CONFIG_DEBUG_ALIGN_RODATA is not set -+# CONFIG_ARM64_RELOC_TEST is not set -+# CONFIG_CORESIGHT is not set -+# end of arm64 Debugging -+ -+# -+# Kernel Testing and Coverage -+# -+# CONFIG_KUNIT is not set -+# CONFIG_NOTIFIER_ERROR_INJECTION is not set -+CONFIG_FUNCTION_ERROR_INJECTION=y -+# CONFIG_FAULT_INJECTION is not set -+CONFIG_ARCH_HAS_KCOV=y -+CONFIG_CC_HAS_SANCOV_TRACE_PC=y -+# CONFIG_KCOV is not set -+# CONFIG_RUNTIME_TESTING_MENU is not set -+# CONFIG_MEMTEST is not set -+# end of Kernel Testing and Coverage -+# end of Kernel hacking -diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig -index 7e693dcbdd19..986c569dade0 100644 ---- a/drivers/i2c/busses/Kconfig -+++ b/drivers/i2c/busses/Kconfig -@@ -545,7 +545,7 @@ config I2C_DESIGNWARE_PLATFORM - tristate "Synopsys DesignWare Platform" - depends on (ACPI && COMMON_CLK) || !ACPI - select I2C_DESIGNWARE_CORE -- select MFD_SYSCON if MIPS_BAIKAL_T1 -+ select MFD_SYSCON if MIPS_BAIKAL_T1 || ARCH_BAIKAL - help - If you say yes to this option, support will be included for the - Synopsys DesignWare I2C adapter. --- -2.31.1 - diff --git a/0601-baikalm.patch b/0601-baikalm.patch new file mode 100644 index 0000000..2e66853 --- /dev/null +++ b/0601-baikalm.patch @@ -0,0 +1,23032 @@ + Documentation/devicetree/configfs-overlays.txt | 31 + + arch/arm/boot/.gitignore | 2 + + arch/arm64/Kconfig.platforms | 13 + + arch/arm64/boot/dts/Makefile | 1 + + arch/arm64/boot/dts/baikal/Makefile | 10 + + arch/arm64/boot/dts/baikal/bm-dbm.dts | 367 + + arch/arm64/boot/dts/baikal/bm-mbm.dtsi | 240 + + arch/arm64/boot/dts/baikal/bm-mbm10.dts | 30 + + arch/arm64/boot/dts/baikal/bm-mbm20-lvds.dts | 102 + + arch/arm64/boot/dts/baikal/bm-mbm20.dts | 102 + + arch/arm64/boot/dts/baikal/bm-qemu.dts | 163 + + arch/arm64/boot/dts/baikal/bm1000-clocks.dtsi | 363 + + arch/arm64/boot/dts/baikal/bm1000-cpufreq.dtsi | 249 + + arch/arm64/boot/dts/baikal/bm1000.dtsi | 1059 +++ + arch/arm64/boot/dts/rockchip/Makefile | 2 + + arch/arm64/boot/dts/rockchip/overlay/Makefile | 22 + + .../dts/rockchip/overlay/README.rockchip-overlays | 106 + + .../dts/rockchip/overlay/rockchip-dwc3-0-host.dts | 13 + + .../dts/rockchip/overlay/rockchip-fixup.scr-cmd | 62 + + .../boot/dts/rockchip/overlay/rockchip-i2c7.dts | 11 + + .../boot/dts/rockchip/overlay/rockchip-i2c8.dts | 11 + + .../dts/rockchip/overlay/rockchip-pcie-gen2.dts | 12 + + .../rockchip/overlay/rockchip-spi-jedec-nor.dts | 72 + + .../dts/rockchip/overlay/rockchip-spi-spidev.dts | 72 + + .../boot/dts/rockchip/overlay/rockchip-uart4.dts | 20 + + .../boot/dts/rockchip/overlay/rockchip-w1-gpio.dts | 20 + + arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts | 1 + + arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi | 99 + + arch/arm64/configs/baikal_minimal_defconfig | 4417 ++++++++++ + baikal_rk3399_defconfig | 8627 ++++++++++++++++++++ + drivers/clk/Makefile | 1 + + drivers/clk/baikal/Makefile | 1 + + drivers/clk/baikal/clk-baikal.c | 371 + + drivers/cpufreq/cpufreq-dt-platdev.c | 2 + + drivers/firmware/efi/libstub/arm64-stub.c | 62 +- + drivers/gpu/drm/Kconfig | 1 + + drivers/gpu/drm/Makefile | 1 + + drivers/gpu/drm/baikal/Kconfig | 15 + + drivers/gpu/drm/baikal/Makefile | 10 + + drivers/gpu/drm/baikal/baikal-hdmi.c | 119 + + drivers/gpu/drm/baikal/baikal_vdu_connector.c | 118 + + drivers/gpu/drm/baikal/baikal_vdu_crtc.c | 337 + + drivers/gpu/drm/baikal/baikal_vdu_debugfs.c | 87 + + drivers/gpu/drm/baikal/baikal_vdu_drm.h | 65 + + drivers/gpu/drm/baikal/baikal_vdu_drv.c | 363 + + drivers/gpu/drm/baikal/baikal_vdu_plane.c | 209 + + drivers/gpu/drm/baikal/baikal_vdu_regs.h | 139 + + drivers/gpu/drm/bridge/Kconfig | 7 + + .../gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c | 106 +- + drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h | 1 + + drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 + + drivers/gpu/drm/panel/Makefile | 1 + + drivers/gpu/drm/panel/panel-simple-dsi.c | 739 ++ + drivers/gpu/drm/panfrost/panfrost_devfreq.c | 4 + + drivers/gpu/drm/panfrost/panfrost_job.c | 2 + + drivers/gpu/drm/panfrost/panfrost_mmu.c | 8 +- + drivers/hwmon/Kconfig | 7 +- + drivers/hwmon/bt1-pvt.c | 139 +- + drivers/hwmon/bt1-pvt.h | 8 + + drivers/i2c/busses/Kconfig | 2 +- + drivers/input/serio/Kconfig | 10 + + drivers/input/serio/Makefile | 1 + + drivers/input/serio/tp_serio.c | 749 ++ + drivers/misc/Kconfig | 18 + + drivers/misc/Makefile | 1 + + drivers/misc/tp_bmc.c | 747 ++ + drivers/net/ethernet/stmicro/stmmac/Kconfig | 10 + + drivers/net/ethernet/stmicro/stmmac/Makefile | 1 + + drivers/net/ethernet/stmicro/stmmac/dwmac-baikal.c | 230 + + .../net/ethernet/stmicro/stmmac/dwmac1000_core.c | 1 + + .../net/ethernet/stmicro/stmmac/dwmac1000_dma.c | 45 +- + .../net/ethernet/stmicro/stmmac/dwmac1000_dma.h | 26 + + drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c | 8 + + drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 68 +- + drivers/net/phy/phy_device.c | 41 +- + drivers/of/Kconfig | 7 + + drivers/of/Makefile | 1 + + drivers/of/configfs.c | 290 + + drivers/rtc/rtc-efi.c | 9 + + drivers/tty/serial/8250/8250_dw.c | 7 +- + drivers/usb/dwc3/dwc3-of-simple.c | 1 + + kernel/power/suspend.c | 12 + + scripts/Makefile.dtbinst | 14 +- + scripts/Makefile.lib | 23 + + sound/soc/codecs/es8316.c | 2 +- + sound/soc/dwc/dwc-i2s.c | 36 +- + sound/soc/dwc/local.h | 1 + + 87 files changed, 21462 insertions(+), 127 deletions(-) + +diff --git a/Documentation/devicetree/configfs-overlays.txt b/Documentation/devicetree/configfs-overlays.txt +new file mode 100644 +index 000000000000..5fa43e064307 +--- /dev/null ++++ b/Documentation/devicetree/configfs-overlays.txt +@@ -0,0 +1,31 @@ ++Howto use the configfs overlay interface. ++ ++A device-tree configfs entry is created in /config/device-tree/overlays ++and and it is manipulated using standard file system I/O. ++Note that this is a debug level interface, for use by developers and ++not necessarily something accessed by normal users due to the ++security implications of having direct access to the kernel's device tree. ++ ++* To create an overlay you mkdir the directory: ++ ++ # mkdir /config/device-tree/overlays/foo ++ ++* Either you echo the overlay firmware file to the path property file. ++ ++ # echo foo.dtbo >/config/device-tree/overlays/foo/path ++ ++* Or you cat the contents of the overlay to the dtbo file ++ ++ # cat foo.dtbo >/config/device-tree/overlays/foo/dtbo ++ ++The overlay file will be applied, and devices will be created/destroyed ++as required. ++ ++To remove it simply rmdir the directory. ++ ++ # rmdir /config/device-tree/overlays/foo ++ ++The rationalle of the dual interface (firmware & direct copy) is that each is ++better suited to different use patterns. The firmware interface is what's ++intended to be used by hardware managers in the kernel, while the copy interface ++make sense for developers (since it avoids problems with namespaces). +diff --git a/arch/arm/boot/.gitignore b/arch/arm/boot/.gitignore +index 8c759326baf4..e6ce8f6ad4b1 100644 +--- a/arch/arm/boot/.gitignore ++++ b/arch/arm/boot/.gitignore +@@ -4,3 +4,5 @@ zImage + xipImage + bootpImage + uImage ++*.dtb* ++*.scr +diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms +index b0ce18d4cc98..6dde0395d80a 100644 +--- a/arch/arm64/Kconfig.platforms ++++ b/arch/arm64/Kconfig.platforms +@@ -34,6 +34,19 @@ config ARCH_APPLE + This enables support for Apple's in-house ARM SoC family, starting + with the Apple M1. + ++config ARCH_BAIKAL ++ bool "Baikal Electronics Baikal-M SOC Family" ++ select GPIOLIB ++ select PINCTRL ++ select OF_GPIO ++ select GPIO_SYSFS ++ select GPIO_DWAPB ++ select GPIO_GENERIC ++ select DW_APB_TIMER ++ select DW_APB_TIMER_OF ++ help ++ This enables support for Baikal Electronics Baikal-M SOC Family ++ + config ARCH_BCM2835 + bool "Broadcom BCM2835 family" + select TIMER_OF +diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile +index 639e01a4d855..2cec7300fef2 100644 +--- a/arch/arm64/boot/dts/Makefile ++++ b/arch/arm64/boot/dts/Makefile +@@ -8,6 +8,7 @@ subdir-y += amlogic + subdir-y += apm + subdir-y += apple + subdir-y += arm ++subdir-y += baikal + subdir-y += bitmain + subdir-y += broadcom + subdir-y += cavium +diff --git a/arch/arm64/boot/dts/baikal/Makefile b/arch/arm64/boot/dts/baikal/Makefile +new file mode 100644 +index 000000000000..9167daed9b33 +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/Makefile +@@ -0,0 +1,10 @@ ++# SPDX-License-Identifier: GPL-2.0 ++dtb-$(CONFIG_ARCH_BAIKAL) += bm-dbm.dtb ++dtb-$(CONFIG_ARCH_BAIKAL) += bm-mbm10.dtb ++dtb-$(CONFIG_ARCH_BAIKAL) += bm-mbm20.dtb ++dtb-$(CONFIG_ARCH_BAIKAL) += bm-mbm20-lvds.dtb ++dtb-$(CONFIG_ARCH_BAIKAL) += bm-qemu.dtb ++ ++always := $(dtb-y) ++subdir-y := $(dts-dirs) ++clean-files := *.dtb +diff --git a/arch/arm64/boot/dts/baikal/bm-dbm.dts b/arch/arm64/boot/dts/baikal/bm-dbm.dts +new file mode 100644 +index 000000000000..5a180bfda8be +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm-dbm.dts +@@ -0,0 +1,367 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree source for Baikal Electronics DBM board ++ * Copyright (C) 2019-2021 Baikal Electronics, JSC ++ */ ++ ++/dts-v1/; ++ ++#include ++#include "bm1000.dtsi" ++ ++/ { ++ model = "Baikal Electronics DBM"; ++ compatible = "baikal,baikal-m"; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ++ chosen { }; ++ ++ panel { ++ compatible = "panel-lvds"; ++ width-mm = <223>; ++ height-mm = <125>; ++ data-mapping = "vesa-24"; ++ panel-timing { ++ /* 1920x1080 @ 60 Hz */ ++ clock-frequency = <148500000>; ++ hactive = <1920>; ++ vactive = <1080>; ++ hsync-len = <44>; ++ hfront-porch = <88>; ++ hback-porch = <148>; ++ vsync-len = <5>; ++ vfront-porch = <4>; ++ vback-porch = <36>; ++ }; ++ port { ++ panel0_lvds0: endpoint@0 { ++ remote-endpoint = <&vdu_lvds0_pads>; ++ }; ++ panel0_lvds1: endpoint@1 { ++ remote-endpoint = <&vdu_lvds1_pads>; ++ }; ++ }; ++ }; ++ ++ buttons-backlight { ++ compatible = "gpio-keys"; ++ autorepeat; ++ button-brightness-down { ++ label = "Brightness Down Button"; ++ linux,code = ; ++ gpios = <&porta 18 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ button-brightness-up { ++ label = "Brightness Up Button"; ++ linux,code = ; ++ gpios = <&porta 17 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ button-brightness-toggle { ++ label = "Brightness Toggle Button"; ++ linux,code = ; ++ gpios = <&porta 31 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ }; ++ ++ sound { ++ compatible = "baikal,snd_soc_be"; ++ baikal,cpu-dai = <&i2s>; ++ baikal,audio-codec = <&tlv320aic3x>; ++ }; ++}; ++ ++&ddr2 { ++ status = "okay"; ++}; ++ ++&espi0 { ++ cs-gpios = <&porta 28 1>; /* todo: get real gpio */ ++ status = "okay"; ++ ++ /* test device #0 */ ++ espi_test0 { ++ compatible = "rohm,dh2228fv"; /* same as spidev */ ++ reg = <0>; ++ spi-max-frequency = <12000000>; ++ status = "okay"; ++ }; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ snps,reset-gp-out; ++ snps,reset-active-low; ++}; ++ ++&gmac1 { ++ status = "okay"; ++ snps,reset-gp-out; ++ snps,reset-active-low; ++}; ++ ++&gpio { ++ status = "okay"; ++}; ++ ++&gpu { ++ system-coherency = <0>; ++}; ++ ++&hda { ++ status = "okay"; ++}; ++ ++&hdmi { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ tlv320aic3x: tlv320aic3x@18 { ++ #sound-dai-cells = <0>; ++ compatible = "ti,tlv320aic3x"; ++ reg = <0x18>; ++ reset-gpios = <&porta 4 GPIO_ACTIVE_LOW>; ++ status = "okay"; ++ ai3x-micbias-vg = <1>; ++ ai3x-ocmv = <1>; ++ }; ++ ++ rtc@56 { ++ compatible = "abracon,abeoz9"; ++ reg = <0x56>; ++ }; ++}; ++ ++&i2c1 { ++ status = "okay"; ++}; ++ ++&i2s { ++ status = "okay"; ++ sound-dai = <&tlv320aic3x>; ++ system-clock-frequency = <12000000>; ++}; ++ ++&mmc0 { ++ status = "okay"; ++#if 0 ++ /* emmc */ ++ non-removable; ++ bus-width = <8>; ++ max-clock = <200000000>; ++#else ++ /* sd */ ++ disable-wp; ++ bus-width = <4>; ++ max-clock = <25000000>; ++#endif ++}; ++ ++&pcie0 { ++ status = "okay"; ++}; ++ ++&pcie1 { ++ status = "okay"; ++}; ++ ++&pcie2 { ++ status = "okay"; ++}; ++ ++&pcie_lcru { ++ status = "okay"; ++}; ++ ++&pvt0 { ++ status = "okay"; ++}; ++ ++&pvt1 { ++ status = "okay"; ++}; ++ ++&pvt2 { ++ status = "okay"; ++}; ++ ++&pvt3 { ++ status = "okay"; ++}; ++ ++&pvt_mali { ++ status = "okay"; ++}; ++ ++&sata0 { ++ status = "okay"; ++}; ++ ++&sata1 { ++ status = "okay"; ++}; ++ ++&smbus0 { ++ status = "okay"; ++}; ++ ++&smbus1 { ++ status = "okay"; ++}; ++ ++&spi0 { ++ num-cs = <4>; ++ cs-gpios = ++ <&porta 24 1>, /* ss0 xp8 - DD53 normal flash */ ++ <&porta 25 1>, /* ss1 xp9 */ ++ <&porta 26 1>, /* ss2 xp10 */ ++ <&porta 27 1>; /* ss3 xp11 */ ++ status = "okay"; ++ ++ /* SPI flash chip #1 */ ++ flash0: m25p80@0 { ++ compatible = "micron,n25q256a", "jedec,spi-nor"; ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ spi-max-frequency = <12500000>; ++ status = "okay"; ++ ++ /* Flash chip0 partitions */ ++ mtd0@0 { ++ label = "bl1"; ++ reg = <0x00000000 0x00040000>; ++ read-only; ++ }; ++ ++ mtd1@40000 { ++ label = "fip"; ++ reg = <0x00040000 0x007c0000>; ++ }; ++ ++ mtd2@800000 { ++ label = "rescue"; ++ reg = <0x00800000 0x01800000>; ++ }; ++ }; ++}; ++ ++#if 0 ++/* undefined */ ++&spi1 { ++ num-cs = <4>; ++ cs-gpios = ++ <&porta 20 1>, /* ss0 xp15 - DD57 boot flash */ ++ <&porta 21 1>, /* ss1 xp16 */ ++ <&porta 22 1>, /* ss2 xp17 */ ++ <&porta 23 1>; /* ss3 xp18 */ ++ status = "okay"; ++ ++ /* SPI flash chip #2 */ ++ flash0: m25p80@0 { ++ compatible = "micron,n25q256a", "jedec,spi-nor"; ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ spi-max-frequency = <12500000>; ++ status = "okay"; ++ ++ /* Flash chip1 partitions */ ++ mtd0@0 { ++ label = "fip_backup"; ++ reg = <0x00000000 0x00400000>; ++ read-only; ++ }; ++ ++ mtd1@400000 { ++ label = "env_backup"; ++ reg = <0x00400000 0x00100000>; ++ read-only; ++ }; ++ ++ mtd2@500000 { ++ label = "data1"; ++ reg = <0x00500000 0x01b00000>; ++ }; ++ }; ++}; ++#endif ++ ++&timer1 { ++ status = "okay"; ++}; ++ ++&timer2 { ++ status = "okay"; ++}; ++ ++&timer3 { ++ status = "okay"; ++}; ++ ++&timer4 { ++ status = "okay"; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&usb2 { ++ status = "okay"; ++}; ++ ++&usb3 { ++ status = "okay"; ++}; ++ ++&vdec { ++ status = "okay"; ++}; ++ ++&vdu0 { ++ status = "okay"; ++ enable-gpios = <&porta 16 GPIO_ACTIVE_LOW>; ++ backlight { ++ min-brightness-level = <10>; ++ default-brightness-level = <60>; ++ brightness-level-step = <2>; ++ pwm-frequency = <20000>; ++ }; ++ port { ++ vdu_lvds0_pads: endpoint@0 { ++ remote-endpoint = <&panel0_lvds0>; ++ }; ++ vdu_lvds1_pads: endpoint@1 { ++ remote-endpoint = <&panel0_lvds1>; ++ }; ++ /*vdu_lvds2_pads: endpoint@2 { ++ remote-endpoint = <&panel0_lvds2>; ++ }; ++ vdu_lvds3_pads: endpoint@3 { ++ remote-endpoint = <&panel0_lvds3>; ++ };*/ ++ }; ++}; ++ ++&vdu1 { ++ status = "okay"; ++}; ++ ++&xgmac0 { ++ status = "okay"; ++}; ++ ++&xgmac1 { ++ status = "okay"; ++}; +diff --git a/arch/arm64/boot/dts/baikal/bm-mbm.dtsi b/arch/arm64/boot/dts/baikal/bm-mbm.dtsi +new file mode 100644 +index 000000000000..3603db2a465b +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm-mbm.dtsi +@@ -0,0 +1,240 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree include file for MBM-compatible boards ++ * Copyright (C) 2021 Baikal Electronics, JSC ++ */ ++ ++#include "bm1000.dtsi" ++ ++/ { ++ model = "Baikal Electronics MBM"; ++ compatible = "baikal,baikal-m"; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ++ chosen { }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ led0 { ++ gpios = <&porta 8 GPIO_ACTIVE_HIGH>; ++ default-state = "keep"; ++ }; ++ }; ++ ++ sound { ++ compatible = "simple-audio-card"; ++ simple-audio-card,name = "MITX-Sound-Card"; ++ simple-audio-card,bitclock-master = <&codec0>; ++ simple-audio-card,frame-master = <&codec0>; ++ simple-audio-card,widgets = ++ "Microphone", "Mic Jack", ++ "Headphone", "Headphones", ++ "Speaker", "AUX Out", ++ "Line", "Line In"; ++ simple-audio-card,routing = ++ "Headphones", "RHP", ++ "Headphones", "LHP", ++ "AUX Out", "AUXOUT1", ++ "AUX Out", "AUXOUT2", ++ "L2", "Mic Jack", ++ "R2", "Mic Jack", ++ "LAUX", "Line In", ++ "RAUX", "Line In"; ++ simple-audio-card,mic-det-gpio = <&porta 26 GPIO_ACTIVE_LOW>; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,cpu { ++ sound-dai = <&i2s>; ++ }; ++ codec0: simple-audio-card,codec { ++ sound-dai = <&nau8822 0>; ++ }; ++ }; ++}; ++ ++&ddr2 { ++ status = "okay"; ++}; ++ ++&gpio { ++ status = "okay"; ++}; ++ ++&gpu { ++ system-coherency = <0>; ++}; ++ ++&hdmi { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ bmc@8 { ++ compatible = "tp,mitx2-bmc", "t-platforms,mitx2-bmc"; ++ reg = <0x08>; ++ }; ++ ++ nau8822: nau8822@1a { ++ compatible = "nuvoton,nau8822"; ++ #sound-dai-cells = <1>; ++ reg = <0x1a>; ++ }; ++ ++ gpio@50 { ++ compatible = "nxp,pca9670"; ++ #gpio-cells = <2>; ++ gpio-controller; ++ reg = <0x50>; ++ }; ++ ++ rtc@51 { ++ compatible = "nxp,pcf2129", "nxp,pcf2127"; ++ reg = <0x51>; ++ }; ++ ++ hwmon@52 { ++ compatible = "tp,bm_mitx_hwmon"; ++ reg = <0x52>; ++ }; ++ ++ eeprom@53 { ++ compatible = "atmel,24c32"; ++ pagesize = <32>; ++ reg = <0x53>; ++ }; ++ ++ ps2port@54 { ++ compatible = "tp,tp_serio"; ++ reg = <0x54>; ++ interrupt-parent = <&porta>; ++ interrupts = <14 8>; ++ }; ++}; ++ ++&i2c1 { ++ status = "okay"; ++}; ++ ++&i2s { ++ status = "okay"; ++ system-clock-frequency = <12000000>; ++ #sound-dai-cells = <0>; ++}; ++ ++&mdio0 { ++ status = "disabled"; ++}; ++ ++&mmc0 { ++ status = "okay"; ++ disable-wp; ++ bus-width = <4>; ++ max-clock = <25000000>; ++}; ++ ++&pcie0 { ++ status = "okay"; ++ reset-gpios = <&porta 6 GPIO_ACTIVE_LOW>; ++}; ++ ++&pcie2 { ++ status = "okay"; ++ reset-gpios = <&porta 3 GPIO_ACTIVE_LOW>; ++}; ++ ++&pcie_lcru { ++ status = "okay"; ++}; ++ ++&porta { ++ pcieclk { ++ gpio-hog; ++ gpios = <1 GPIO_ACTIVE_LOW>; ++ output-high; ++ line-name = "pcie-x8-clock"; ++ }; ++}; ++ ++&pvt0 { ++ status = "okay"; ++}; ++ ++&pvt1 { ++ status = "okay"; ++}; ++ ++&pvt2 { ++ status = "okay"; ++}; ++ ++&pvt3 { ++ status = "okay"; ++}; ++ ++&pvt_mali { ++ status = "okay"; ++}; ++ ++&sata0 { ++ status = "okay"; ++}; ++ ++&sata1 { ++ status = "okay"; ++}; ++ ++&smbus0 { ++ status = "okay"; ++}; ++ ++&smbus1 { ++ status = "okay"; ++}; ++ ++&spi0 { ++ num-cs = <4>; ++ cs-gpios = <0>; ++ status = "okay"; ++}; ++ ++&timer1 { ++ status = "okay"; ++}; ++ ++&timer2 { ++ status = "okay"; ++}; ++ ++&timer3 { ++ status = "okay"; ++}; ++ ++&timer4 { ++ status = "okay"; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++&usb2 { ++ status = "okay"; ++}; ++ ++&usb3 { ++ status = "okay"; ++}; ++ ++&vdec { ++ status = "okay"; ++}; ++ ++&vdu1 { ++ status = "okay"; ++}; +diff --git a/arch/arm64/boot/dts/baikal/bm-mbm10.dts b/arch/arm64/boot/dts/baikal/bm-mbm10.dts +new file mode 100644 +index 000000000000..8e02d3e08f3e +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm-mbm10.dts +@@ -0,0 +1,30 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree source for MBM 1.0 compatible boards: ++ * - TP-TF307-MB-A0 Rev.1.0 (BM1BM1-A) ++ * - TF307-MB-S-C Rev.3.0 ++ * ++ * Copyright (C) 2021 Baikal Electronics, JSC ++ */ ++ ++/dts-v1/; ++ ++#include "bm-mbm.dtsi" ++ ++/ { ++ sound { ++ simple-audio-card,hp-det-gpio = <&porta 27 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ snps,reset-gp-out; ++ snps,reset-active-low; ++}; ++ ++&gmac1 { ++ status = "okay"; ++ snps,reset-gp-out; ++ snps,reset-active-low; ++}; +diff --git a/arch/arm64/boot/dts/baikal/bm-mbm20-lvds.dts b/arch/arm64/boot/dts/baikal/bm-mbm20-lvds.dts +new file mode 100644 +index 000000000000..93e539104c42 +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm-mbm20-lvds.dts +@@ -0,0 +1,102 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree source for MBM 2.0 compatible boards: ++ * - TF307-MB-S-D Rev.4.0 (BM1BM1-D) ++ * ++ * Copyright (C) 2021 Baikal Electronics, JSC ++ */ ++ ++/dts-v1/; ++ ++#include ++#include "bm-mbm.dtsi" ++ ++/ { ++ panel { ++ /* In order to disable LVDS LCD panel, make sure that ++ status is "disabled" along with &vdu0 status (see below). */ ++ status = "okay"; ++ compatible = "panel-lvds"; ++ width-mm = <223>; ++ height-mm = <125>; ++ data-mapping = "vesa-24"; ++ panel-timing { ++ /* 1920x1080 @ 60 Hz */ ++ clock-frequency = <148500000>; ++ hactive = <1920>; ++ vactive = <1080>; ++ hsync-len = <44>; ++ hfront-porch = <88>; ++ hback-porch = <148>; ++ vsync-len = <5>; ++ vfront-porch = <4>; ++ vback-porch = <36>; ++ }; ++ port { ++ panel0_lvds0: endpoint@0 { ++ remote-endpoint = <&vdu_lvds0_pads>; ++ }; ++ panel0_lvds1: endpoint@1 { ++ remote-endpoint = <&vdu_lvds1_pads>; ++ }; ++ }; ++ }; ++ ++ buttons-backlight { ++ compatible = "gpio-keys"; ++ autorepeat; ++ button-brightness-down { ++ label = "Brightness Down Button"; ++ linux,code = ; ++ gpios = <&porta 18 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ button-brightness-up { ++ label = "Brightness Up Button"; ++ linux,code = ; ++ gpios = <&porta 17 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ button-brightness-toggle { ++ label = "Brightness Toggle Button"; ++ linux,code = ; ++ gpios = <&porta 31 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ }; ++ ++ sound { ++ simple-audio-card,hp-det-gpio = <&porta 29 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ snps,reset-gpios = <&porta 19 GPIO_ACTIVE_LOW>; ++}; ++ ++&gmac1 { ++ status = "okay"; ++ snps,reset-gpios = <&porta 20 GPIO_ACTIVE_LOW>; ++}; ++ ++&vdu0 { ++ /* In order to disable LVDS LCD panel, make sure that ++ status is "disabled" along with panel status (see above). */ ++ status = "okay"; ++ enable-gpios = <&porta 16 GPIO_ACTIVE_HIGH>; ++ backlight { ++ min-brightness-level = <10>; ++ default-brightness-level = <60>; ++ brightness-level-step = <2>; ++ pwm-frequency = <20000>; ++ }; ++ port { ++ vdu_lvds0_pads: endpoint@0 { ++ remote-endpoint = <&panel0_lvds0>; ++ }; ++ vdu_lvds1_pads: endpoint@1 { ++ remote-endpoint = <&panel0_lvds1>; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/baikal/bm-mbm20.dts b/arch/arm64/boot/dts/baikal/bm-mbm20.dts +new file mode 100644 +index 000000000000..1c0a459a2781 +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm-mbm20.dts +@@ -0,0 +1,102 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree source for MBM 2.0 compatible boards: ++ * - TF307-MB-S-D Rev.4.0 (BM1BM1-D) ++ * ++ * Copyright (C) 2021 Baikal Electronics, JSC ++ */ ++ ++/dts-v1/; ++ ++#include ++#include "bm-mbm.dtsi" ++ ++/ { ++ panel { ++ /* In order to utilize LVDS LCD panel, make sure that ++ status is "okay" along with &vdu0 status (see below). */ ++ status = "disabled"; ++ compatible = "panel-lvds"; ++ width-mm = <223>; ++ height-mm = <125>; ++ data-mapping = "vesa-24"; ++ panel-timing { ++ /* 1920x1080 @ 60 Hz */ ++ clock-frequency = <148500000>; ++ hactive = <1920>; ++ vactive = <1080>; ++ hsync-len = <44>; ++ hfront-porch = <88>; ++ hback-porch = <148>; ++ vsync-len = <5>; ++ vfront-porch = <4>; ++ vback-porch = <36>; ++ }; ++ port { ++ panel0_lvds0: endpoint@0 { ++ remote-endpoint = <&vdu_lvds0_pads>; ++ }; ++ panel0_lvds1: endpoint@1 { ++ remote-endpoint = <&vdu_lvds1_pads>; ++ }; ++ }; ++ }; ++ ++ buttons-backlight { ++ compatible = "gpio-keys"; ++ autorepeat; ++ button-brightness-down { ++ label = "Brightness Down Button"; ++ linux,code = ; ++ gpios = <&porta 18 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ button-brightness-up { ++ label = "Brightness Up Button"; ++ linux,code = ; ++ gpios = <&porta 17 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ button-brightness-toggle { ++ label = "Brightness Toggle Button"; ++ linux,code = ; ++ gpios = <&porta 31 GPIO_ACTIVE_LOW>; ++ debounce-interval = <50>; ++ }; ++ }; ++ ++ sound { ++ simple-audio-card,hp-det-gpio = <&porta 29 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&gmac0 { ++ status = "okay"; ++ snps,reset-gpios = <&porta 19 GPIO_ACTIVE_LOW>; ++}; ++ ++&gmac1 { ++ status = "okay"; ++ snps,reset-gpios = <&porta 20 GPIO_ACTIVE_LOW>; ++}; ++ ++&vdu0 { ++ /* In order to utilize LVDS LCD panel, make sure that ++ status is "okay" along with panel status (see above). */ ++ status = "disabled"; ++ enable-gpios = <&porta 16 GPIO_ACTIVE_LOW>; ++ backlight { ++ min-brightness-level = <10>; ++ default-brightness-level = <60>; ++ brightness-level-step = <2>; ++ pwm-frequency = <20000>; ++ }; ++ port { ++ vdu_lvds0_pads: endpoint@0 { ++ remote-endpoint = <&panel0_lvds0>; ++ }; ++ vdu_lvds1_pads: endpoint@1 { ++ remote-endpoint = <&panel0_lvds1>; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/baikal/bm-qemu.dts b/arch/arm64/boot/dts/baikal/bm-qemu.dts +new file mode 100644 +index 000000000000..c6350c0aaeb5 +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm-qemu.dts +@@ -0,0 +1,163 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree source for Baikal-M software emulator (QEMU) platform ++ * Copyright (C) 2018-2021 Baikal Electronics, JSC ++ */ ++ ++/dts-v1/; ++ ++#include "bm1000.dtsi" ++ ++/* ++ * Device "flash@0" was added to allow UEFI to boot on emulator. ++ * TODO: the tree should be replaced by actual Baikal-M component tree ++ */ ++ ++/ { ++ model = "Baikal Electronics Baikal-M virtual platform"; ++ compatible = "baikal,baikal-m"; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ bootargs = "root=/dev/ram rw rootwait console=ttyS0,115200n8 earlyprintk=uart8250,mmio32,0x20230000,115200"; ++ }; ++ ++ memory@80000000 { ++ device_type = "memory"; ++ /* 16GB */ ++ reg = <0x00000000 0x80000000 0x0 0x80000000 ++ 0x00000008 0x80000000 0x1 0x80000000>; ++ }; ++ ++ /* XXX: Temporary fix for qemu to work */ ++ /* Device is necessary for UEFI to boot on QEMU, need to replace it with something later */ ++ flash@0 { ++ compatible = "cfi-flash"; ++ reg = <0x0 0x4000000 0x0 0x4000000>; ++ bank-width = <0x4>; ++ }; ++ ++ panel: panel { ++ compatible = "auo,b133htn01"; /* 1920x1080 */ ++ /*compatible = "auo,b133xtn01; /* 1366x768 */ ++ /*compatible = "auo,b101aw03"; /* 1024x600 */ ++ /*compatible = "innolux,g121x1-l03"; /* 1024x768 */ ++ /*compatible = "auo,b101ean01"; /* 1280x800 */ ++ ++ port { ++ lcd_panel: endpoint { ++ remote-endpoint = <&vdu_pads>; ++ }; ++ }; ++ }; ++ ++ /*panel_hdmi: panel { ++ compatible = "edt,et057090dhu"; ++ ++ port { ++ lcd_hdmi_panel: endpoint { ++ remote-endpoint = <&vdu_hdmi_pads>; ++ }; ++ }; ++ };*/ ++}; ++ ++&gmac0 { ++ status = "okay"; ++}; ++ ++&gmac1 { ++ status = "okay"; ++}; ++ ++&sata0 { ++ status = "okay"; ++}; ++ ++&sata1 { ++ status = "okay"; ++}; ++ ++&spi0 { ++ num-cs = <6>; ++ status = "okay"; ++ ++ /* SPI flash chip #1 */ ++ flash0: m25p80@0 { ++ compatible = "micron,n25q256a", "jedec,spi-nor"; ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ spi-max-frequency = <50000000>; ++ status = "okay"; ++ ++ /* Flash chip0 partitions */ ++ mtd0@0 { ++ label = "fip"; ++ reg = <0x00000000 0x00400000>; ++ read-only; ++ }; ++ ++ mtd1@400000 { ++ label = "env"; ++ reg = <0x00400000 0x00100000>; ++ }; ++ ++ mtd2@500000 { ++ label = "kernel"; ++ reg = <0x00500000 0x00400000>; ++ }; ++ ++ mtd3@900000 { ++ label = "rootfs"; ++ reg = <0x00900000 0x00800000>; ++ }; ++ ++ mtd4@1100000 { ++ label = "data0"; ++ reg = <0x01100000 0x00f00000>; ++ }; ++ }; ++ ++ /* SPI flash chip #2 */ ++ flash1: m25p80@1 { ++ compatible = "micron,n25q256a", "jedec,spi-nor"; ++ reg = <1>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ spi-max-frequency = <50000000>; ++ status = "okay"; ++ ++ /* Flash chip1 partitions */ ++ mtd0@0 { ++ label = "fip_backup"; ++ reg = <0x00000000 0x00400000>; ++ read-only; ++ }; ++ ++ mtd1@400000 { ++ label = "env_backup"; ++ reg = <0x00400000 0x00100000>; ++ read-only; ++ }; ++ ++ mtd2@500000 { ++ label = "data1"; ++ reg = <0x00500000 0x01b00000>; ++ }; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; ++ ++&vdu0 { ++ port { ++ vdu_pads: endpoint { ++ remote-endpoint = <&lcd_panel>; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/baikal/bm1000-clocks.dtsi b/arch/arm64/boot/dts/baikal/bm1000-clocks.dtsi +new file mode 100644 +index 000000000000..0a5579d3694b +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm1000-clocks.dtsi +@@ -0,0 +1,363 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree include file for BE-M1000 SoC clocks ++ * Copyright (C) 2017-2021 Baikal Electronics, JSC ++ */ ++ ++/ { ++ /* external oscillator */ ++ osc25: oscillator25 { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <25000000>; ++ clock-output-names = "osc25"; ++ }; ++ ++ /* external oscillator */ ++ osc27: oscillator27 { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <27000000>; ++ clock-output-names = "osc27"; ++ }; ++ ++ cmu_cluster0: cmu_cluster0 { ++ compatible = "baikal,cmu"; ++ clock-output-names = "baikal-ca57_cmu0"; ++ #clock-cells = <0>; ++ clocks = <&osc25>; ++ cmu-id = <0x28000000>; ++ max = <1500000000>; ++ min = <500000000>; ++ clock-frequency = <1500000000>; ++ }; ++ ++ cmu_cluster1: cmu_cluster1 { ++ compatible = "baikal,cmu"; ++ clock-output-names = "baikal-ca57_cmu1"; ++ #clock-cells = <0>; ++ clocks = <&osc25>; ++ cmu-id = <0xc000000>; ++ max = <1500000000>; ++ min = <500000000>; ++ clock-frequency = <1500000000>; ++ }; ++ ++ cmu_cluster2: cmu_cluster2 { ++ compatible = "baikal,cmu"; ++ clock-output-names = "baikal-ca57_cmu2"; ++ #clock-cells = <0>; ++ clocks = <&osc25>; ++ cmu-id = <0xa000000>; ++ max = <1500000000>; ++ min = <500000000>; ++ clock-frequency = <1500000000>; ++ }; ++ ++ cmu_cluster3: cmu_cluster3 { ++ compatible = "baikal,cmu"; ++ clock-output-names = "baikal-ca57_cmu3"; ++ #clock-cells = <0>; ++ clocks = <&osc25>; ++ cmu-id = <0x26000000>; ++ max = <1500000000>; ++ min = <500000000>; ++ clock-frequency = <1500000000>; ++ }; ++ ++ cmu0_avlsp: cmu0_avlsp { ++ compatible = "baikal,cmu"; ++ #clock-cells = <1>; ++ clock-output-names = "baikal-avlsp_cmu0"; ++ clock-names = ++ "gpio", // <0> ++ "uart1", // <1> ++ "uart2", // <2> ++ "apb", // <3> ++ "spi", // <4> ++ "espi", // <5> ++ "i2c1", // <6> ++ "i2c2", // <7> ++ "timer1", // <8> ++ "timer2", // <9> ++ "timer3", // <10> ++ "timer4", // <11> ++ "dmac", // <12> ++ "smbus1", // <13> ++ "smbus2", // <14> ++ "hda_sys_clk", // <15> ++ "hda_clk48", // <16> ++ "mshc_axi", // <17> ++ "mshc_ahb", // <18> ++ "mshc_tx_x2", // <19> ++ "mshc_b", // <20> ++ "mshc_tm", // <21> ++ "mshc_cqetm", // <22> ++ "hwa_clu", // <23> ++ "hwa_clu_hf", // <24> ++ "hwa_axi", // <25> ++ "vdu_axi", // <26> ++ "smmu"; // <27> ++ clock-indices = ++ <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>, <8>, <9>, <10>, ++ <11>, <12>, <13>, <14>, <15>, <16>, <17>, <18>, <19>, ++ <20>, <21>, <22>, <23>, <24>, <25>, <26>, <27>; ++ clocks = <&osc25>; ++ cmu-id = <0x20000000>; ++ max = <2100000000>; ++ min = <800000>; ++ clock-frequency = <1200000000>; ++ }; ++ ++ cmu1_avlsp: cmu1_avlsp { ++ compatible = "baikal,cmu"; ++ clock-output-names = "baikal-avlsp_cmu1"; ++ #clock-cells = <0>; ++ clocks = <&osc27>; ++ cmu-id = <0x20010000>; ++ max = <2100000000>; ++ min = <13500000>; ++ clock-frequency = <1039500000>; ++ }; ++ ++ cmu_mali: cmu_mali { ++ compatible = "baikal,cmu"; ++ clock-output-names = "baikal-mali-cmu"; ++ #clock-cells = <0>; ++ clocks = <&osc25>; ++ clock-names = "aclk"; ++ cmu-id = <0x2a000000>; ++ max = <800000000>; ++ min = <400000000>; ++ clock-frequency = <750000000>; ++ }; ++ ++ cmu0_xgbe: cmu0_xgbe { ++ compatible = "baikal,cmu"; ++ clock-output-names = "baikal-xgbe-cmu0"; ++ #clock-cells = <1>; ++ clocks = <&osc25>; ++ clock-names = "csr50mhz", "gmac0_tx2", "gmac1_tx2", "hdmi_aclk", "isfr"; ++ clock-indices = <0>, <10>, <13>, <15>, <17>; ++ cmu-id = <0x30000000>; ++ max = <1250000000>; ++ min = <50000000>; ++ clock-frequency = <1250000000>; ++ }; ++ ++ cmu1_xgbe: cmu1_xgbe { ++ compatible = "baikal,cmu"; ++ clock-output-names = "baikal-xgbe-cmu1"; ++ #clock-cells = <1>; ++ clocks = <&osc27>; ++ clock-indices = <0>; ++ clock-names = "pixelclk"; ++ cmu-id = <0x30010000>; ++ max = <600000000>; ++ min = <13500000>; ++ clock-frequency = <25250000>; ++ }; ++ ++ clocks { ++ cpu_clk: cpu_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <1500000000>; ++ clock-output-names = "cpuclk"; ++ }; ++ ++ apb_clk: apb_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <200000000>; ++ clock-output-names = "apb_pclk"; ++ }; ++ ++ uart_clk: uart_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <7273800>; ++ clock-output-names = "soc_uartclk"; ++ }; ++ ++ i2c_clk: i2c_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <100000000>; ++ clock-output-names = "soc_i2cclk"; ++ }; ++ ++ smbus_clk: smbus_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <50000000>; ++ clock-output-names = "soc_smbusclk"; ++ }; ++ ++ timer1_clk: timer1_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <50000000>; ++ clock-output-names = "soc_timer1clk"; ++ }; ++ ++ timer2_clk: timer2_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <50000000>; ++ clock-output-names = "soc_timer2clk"; ++ }; ++ ++ timer3_clk: timer3_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <50000000>; ++ clock-output-names = "soc_timer3clk"; ++ }; ++ ++ timer4_clk: timer4_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <50000000>; ++ clock-output-names = "soc_timer4clk"; ++ }; ++ ++ gpio_clk: gpio_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <1000000>; ++ clock-output-names = "soc_gpioclk"; ++ }; ++ ++ spi_clk: spi_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <50000000>; ++ clock-output-names = "soc_spiclk"; ++ }; ++ ++ soc_ethclk: ethclk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <50000000>; ++ clock-output-names = "eth_clk"; ++ }; ++ ++ soc_xgbeclk: xgbeclk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <156250000>; ++ clock-output-names = "xgbe_clk"; ++ }; ++ ++ soc_smc50mhz: clk50mhz { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <50000000>; ++ clock-output-names = "smc_clk"; ++ }; ++ ++ soc_faxiclk: refclk400mhz { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <400000000>; ++ clock-output-names = "faxi_clk"; ++ }; ++ ++ soc_tmp_clk: refclkXXXmhz { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <100000000>; ++ clock-output-names = "tmpclk"; ++ }; ++ ++ gpu_clk: gpu_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <750000000>; ++ clock-output-names = "gpuclk"; ++ }; ++ gpu_opp_table: opp_table_gpu { ++ compatible = "operating-points-v2", "operating-points-v2-mali"; ++ ++ opp@400000000 { ++ opp-hz = /bits/ 64 <400000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ opp@450000000 { ++ opp-hz = /bits/ 64 <450000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ opp@500000000 { ++ opp-hz = /bits/ 64 <500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ opp@550000000 { ++ opp-hz = /bits/ 64 <550000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ opp@600000000 { ++ opp-hz = /bits/ 64 <600000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ opp@650000000 { ++ opp-hz = /bits/ 64 <650000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ opp@700000000 { ++ opp-hz = /bits/ 64 <700000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ opp@750000000 { ++ opp-hz = /bits/ 64 <750000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ }; ++ ++ clk_ahb: clk_ahb { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <100000000>; ++ clock-output-names = "clk_ahb"; ++ }; ++ ++ clk_xin: clk_xin { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <100000000>; ++ clock-output-names = "clk_xin"; ++ }; ++ ++ cortex_cmu: cmu@cortex { ++ compatible = "baikal,cmu-device-clock"; ++ #clock-cells = <1>; ++ clock-frequency = <1000000000>; ++ clock-output-names = "baikal-cmu"; ++ }; ++ ++ avlsp_cmu1: cmu1@avlsp { ++ compatible = "baikal,cmu-device-clock"; ++ #clock-cells = <1>; ++ clock-indices = <26>; ++ clock-frequency = <240000000>; ++ clock-output-names = "baikal-cmu"; ++ }; ++ ++ usb_clk: usb_clk@1f04d074 { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-names = "usbclk"; ++ clock-frequency = <500000000>; ++ clock-output-names = "usbclk"; ++ }; ++ ++ cmu1_avlsp_div7: cmu1_avlsp_div7 { ++ compatible = "allwinner,sun4i-a10-pll3-2x-clk", "fixed-factor-clock"; ++ clocks = <&cmu1_avlsp>; ++ #clock-cells = <0>; ++ clock-div = <7>; ++ clock-mult = <1>; ++ clock-output-names = "lvds_clk"; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/baikal/bm1000-cpufreq.dtsi b/arch/arm64/boot/dts/baikal/bm1000-cpufreq.dtsi +new file mode 100644 +index 000000000000..76fee58d8bfc +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm1000-cpufreq.dtsi +@@ -0,0 +1,249 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree include file for BE-M1000 SoC CPU frequencies ++ * Copyright (C) 2020-2021 Baikal Electronics, JSC ++ */ ++ ++/ { ++ cpufreq { ++ cluster0_opp: opp_table0 { ++ compatible = "operating-points-v2"; ++ opp-shared; ++ ++ opp@1500 { ++ opp-hz = /bits/ 64 <1500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1400 { ++ opp-hz = /bits/ 64 <1400000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1300 { ++ opp-hz = /bits/ 64 <1300000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1200 { ++ opp-hz = /bits/ 64 <1200000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1100 { ++ opp-hz = /bits/ 64 <1100000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1000 { ++ opp-hz = /bits/ 64 <1000000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@900 { ++ opp-hz = /bits/ 64 <900000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@800 { ++ opp-hz = /bits/ 64 <800000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@700 { ++ opp-hz = /bits/ 64 <700000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@600 { ++ opp-hz = /bits/ 64 <600000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@500 { ++ opp-hz = /bits/ 64 <500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ }; ++ ++ cluster1_opp: opp_table1 { ++ compatible = "operating-points-v2"; ++ opp-shared; ++ ++ opp@1500 { ++ opp-hz = /bits/ 64 <1500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1400 { ++ opp-hz = /bits/ 64 <1400000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1300 { ++ opp-hz = /bits/ 64 <1300000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1200 { ++ opp-hz = /bits/ 64 <1200000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1100 { ++ opp-hz = /bits/ 64 <1100000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1000 { ++ opp-hz = /bits/ 64 <1000000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@900 { ++ opp-hz = /bits/ 64 <900000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@800 { ++ opp-hz = /bits/ 64 <800000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@700 { ++ opp-hz = /bits/ 64 <700000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@600 { ++ opp-hz = /bits/ 64 <600000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@500 { ++ opp-hz = /bits/ 64 <500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ }; ++ ++ cluster2_opp: opp_table2 { ++ compatible = "operating-points-v2"; ++ opp-shared; ++ ++ opp@1500 { ++ opp-hz = /bits/ 64 <1500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1400 { ++ opp-hz = /bits/ 64 <1400000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1300 { ++ opp-hz = /bits/ 64 <1300000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1200 { ++ opp-hz = /bits/ 64 <1200000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1100 { ++ opp-hz = /bits/ 64 <1100000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1000 { ++ opp-hz = /bits/ 64 <1000000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@900 { ++ opp-hz = /bits/ 64 <900000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@800 { ++ opp-hz = /bits/ 64 <800000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@700 { ++ opp-hz = /bits/ 64 <700000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@600 { ++ opp-hz = /bits/ 64 <600000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@500 { ++ opp-hz = /bits/ 64 <500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ }; ++ ++ cluster3_opp: opp_table3 { ++ compatible = "operating-points-v2"; ++ opp-shared; ++ ++ opp@1500 { ++ opp-hz = /bits/ 64 <1500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1400 { ++ opp-hz = /bits/ 64 <1400000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1300 { ++ opp-hz = /bits/ 64 <1300000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1200 { ++ opp-hz = /bits/ 64 <1200000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1100 { ++ opp-hz = /bits/ 64 <1100000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@1000 { ++ opp-hz = /bits/ 64 <1000000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@900 { ++ opp-hz = /bits/ 64 <900000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@800 { ++ opp-hz = /bits/ 64 <800000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@700 { ++ opp-hz = /bits/ 64 <700000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@600 { ++ opp-hz = /bits/ 64 <600000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ ++ opp@500 { ++ opp-hz = /bits/ 64 <500000000>; ++ clock-latency-ns = <10000000>; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/baikal/bm1000.dtsi b/arch/arm64/boot/dts/baikal/bm1000.dtsi +new file mode 100644 +index 000000000000..bc69835c4d4f +--- /dev/null ++++ b/arch/arm64/boot/dts/baikal/bm1000.dtsi +@@ -0,0 +1,1059 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Device tree include file for BE-M1000 SoC ++ * Copyright (C) 2017-2021 Baikal Electronics, JSC ++ */ ++ ++#include "bm1000-clocks.dtsi" ++#include "bm1000-cpufreq.dtsi" ++#include ++#include ++ ++/* ++ * ARM GICv3 bindings assume interrupts (in each range) counting from 0: ++ * PPI: 0..15 ++ * SPI: 0..987 ++ * Baikal-M documentation ("Interrupt map") places all interrupts into the ++ * linear map: SGI(0..15), PPI(16..31), SPI(32-1019). ++ * So real interrupt IDs in this device tree must be calculated as follows: ++ * PPI_real = PPI_from_documentation - 16 ++ * SPI_real = SPI_from_documentation - 32 ++ */ ++ ++/ { ++ compatible = "baikal,arm", "baikal,baikal-m-soc", "simple-bus"; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ interrupt-parent = <&gic>; ++ ++ aliases { ++ ethernet1 = &gmac0; ++ ethernet2 = &gmac1; ++ ethernet3 = &xgmac0; ++ ethernet4 = &xgmac1; ++ gic = &gic; ++ gpio = &gpio; ++ hda = &hda; ++ i2c0 = &i2c0; ++ i2c1 = &i2c1; ++ i2s = &i2s; ++ memory-controller1 = &ddr1; ++ memory-controller2 = &ddr2; ++ mmc0 = &mmc0; ++ pvt0 = &pvt0; ++ pvt1 = &pvt1; ++ pvt2 = &pvt2; ++ pvt3 = &pvt3; ++ pvt_mali = &pvt_mali; ++ sata0 = &sata0; ++ sata1 = &sata1; ++ serial0 = &uart0; ++ serial1 = &uart1; ++ smbus0 = &smbus0; ++ smbus1 = &smbus1; ++ spi = &spi0; ++ ssi0 = &spi0; ++ timer1 = &timer1; ++ timer2 = &timer2; ++ timer3 = &timer3; ++ timer4 = &timer4; ++ usb2 = &usb2; ++ usb3 = &usb3; ++ vdec = &vdec; ++ vdu_lvds = &vdu0; ++ }; ++ ++ psci { ++ compatible = "arm,psci-1.0", "arm,psci-0.2"; ++ method = "smc"; ++ }; ++ ++ cpus { ++ #address-cells = <2>; ++ #size-cells = <0>; ++ ++ /* Do not use 'cpu-map'. It leads to wrong topology. */ ++ ++ CPU0: cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a57"; ++ reg = <0x0 0x0>; ++ enable-method = "psci"; ++ i-cache-size = <0xc000>; ++ i-cache-line-size = <64>; ++ i-cache-sets = <256>; ++ d-cache-size = <0x8000>; ++ d-cache-line-size = <64>; ++ d-cache-sets = <256>; ++ clocks = <&cmu_cluster0>; ++ next-level-cache = <&cluster0_l2>; ++ clock-names = "baikal-ca57_cmu"; ++ operating-points-v2 = <&cluster0_opp>; ++ }; ++ ++ CPU1: cpu@1 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a57"; ++ reg = <0x0 0x1>; ++ enable-method = "psci"; ++ i-cache-size = <0xc000>; ++ i-cache-line-size = <64>; ++ i-cache-sets = <256>; ++ d-cache-size = <0x8000>; ++ d-cache-line-size = <64>; ++ d-cache-sets = <256>; ++ clocks = <&cmu_cluster0>; ++ next-level-cache = <&cluster0_l2>; ++ clock-names = "baikal-ca57_cmu"; ++ operating-points-v2 = <&cluster0_opp>; ++ }; ++ ++ CPU2: cpu@100 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a57"; ++ reg = <0x0 0x100>; ++ enable-method = "psci"; ++ i-cache-size = <0xc000>; ++ i-cache-line-size = <64>; ++ i-cache-sets = <256>; ++ d-cache-size = <0x8000>; ++ d-cache-line-size = <64>; ++ d-cache-sets = <256>; ++ clocks = <&cmu_cluster1>; ++ next-level-cache = <&cluster1_l2>; ++ clock-names = "baikal-ca57_cmu"; ++ operating-points-v2 = <&cluster1_opp>; ++ }; ++ ++ CPU3: cpu@101 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a57"; ++ reg = <0x0 0x101>; ++ enable-method = "psci"; ++ i-cache-size = <0xc000>; ++ i-cache-line-size = <64>; ++ i-cache-sets = <256>; ++ d-cache-size = <0x8000>; ++ d-cache-line-size = <64>; ++ d-cache-sets = <256>; ++ clocks = <&cmu_cluster1>; ++ next-level-cache = <&cluster1_l2>; ++ clock-names = "baikal-ca57_cmu"; ++ operating-points-v2 = <&cluster1_opp>; ++ }; ++ ++ CPU4: cpu@200 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a57"; ++ reg = <0x0 0x200>; ++ enable-method = "psci"; ++ i-cache-size = <0xc000>; ++ i-cache-line-size = <64>; ++ i-cache-sets = <256>; ++ d-cache-size = <0x8000>; ++ d-cache-line-size = <64>; ++ d-cache-sets = <256>; ++ clocks = <&cmu_cluster2>; ++ next-level-cache = <&cluster2_l2>; ++ clock-names = "baikal-ca57_cmu"; ++ operating-points-v2 = <&cluster2_opp>; ++ }; ++ ++ CPU5: cpu@201 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a57"; ++ reg = <0x0 0x201>; ++ enable-method = "psci"; ++ i-cache-size = <0xc000>; ++ i-cache-line-size = <64>; ++ i-cache-sets = <256>; ++ d-cache-size = <0x8000>; ++ d-cache-line-size = <64>; ++ d-cache-sets = <256>; ++ clocks = <&cmu_cluster2>; ++ next-level-cache = <&cluster2_l2>; ++ clock-names = "baikal-ca57_cmu"; ++ operating-points-v2 = <&cluster2_opp>; ++ }; ++ ++ CPU6: cpu@300 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a57"; ++ reg = <0x0 0x300>; ++ enable-method = "psci"; ++ i-cache-size = <0xc000>; ++ i-cache-line-size = <64>; ++ i-cache-sets = <256>; ++ d-cache-size = <0x8000>; ++ d-cache-line-size = <64>; ++ d-cache-sets = <256>; ++ clocks = <&cmu_cluster3>; ++ next-level-cache = <&cluster3_l2>; ++ clock-names = "baikal-ca57_cmu"; ++ operating-points-v2 = <&cluster3_opp>; ++ }; ++ ++ CPU7: cpu@301 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a57"; ++ reg = <0x0 0x301>; ++ enable-method = "psci"; ++ i-cache-size = <0xc000>; ++ i-cache-line-size = <64>; ++ i-cache-sets = <256>; ++ d-cache-size = <0x8000>; ++ d-cache-line-size = <64>; ++ d-cache-sets = <256>; ++ clocks = <&cmu_cluster3>; ++ next-level-cache = <&cluster3_l2>; ++ clock-names = "baikal-ca57_cmu"; ++ operating-points-v2 = <&cluster3_opp>; ++ }; ++ ++ cluster0_l2: l2-cache0 { ++ compatible = "cache"; ++ cache-size = <0x100000>; ++ cache-line-size = <64>; ++ cache-sets = <1024>; ++ cache-unified; ++ cache-level = <2>; ++ next-level-cache = <&l3>; ++ }; ++ ++ cluster1_l2: l2-cache1 { ++ compatible = "cache"; ++ cache-size = <0x100000>; ++ cache-line-size = <64>; ++ cache-sets = <1024>; ++ cache-unified; ++ cache-level = <2>; ++ next-level-cache = <&l3>; ++ }; ++ ++ cluster2_l2: l2-cache2 { ++ compatible = "cache"; ++ cache-size = <0x100000>; ++ cache-line-size = <64>; ++ cache-sets = <1024>; ++ cache-unified; ++ cache-level = <2>; ++ next-level-cache = <&l3>; ++ }; ++ ++ cluster3_l2: l2-cache3 { ++ compatible = "cache"; ++ cache-size = <0x100000>; ++ cache-line-size = <64>; ++ cache-sets = <1024>; ++ cache-unified; ++ cache-level = <2>; ++ next-level-cache = <&l3>; ++ }; ++ ++ l3: l3-cache { ++ cache-size = <0x800000>; ++ cache-unified; ++ cache-level = <3>; ++ }; ++ }; ++ ++ pmu { ++ compatible = "arm,cortex-a57-pmu"; ++ interrupts = ; ++ }; ++ ++ timer { ++ compatible = "arm,armv8-timer"; ++ interrupts = , ++ , ++ , ++ ; ++ }; ++ ++ soc { ++ compatible = "simple-bus"; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ ++ /* DDR0 (e200000, 10000, SPI_161-166_?) */ ++ ddr1: memory-controller1@e200000 { ++ compatible = "be,emc", "be,memory-controller"; ++ reg = <0x0 0x0e200000 0x0 0x10000>; ++ interrupts = , /* ddr dfi alert err */ ++ , /* ddr ecc corrected err */ ++ , /* ddr ecc uncorrected err */ ++ , /* ddr sbr done */ ++ , /* ddr ecc corrected err fault */ ++ ; /* ddr ecc uncorrected err fault */ ++ clocks = <&soc_smc50mhz>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ /* DDR1 (22200000, 10000, SPI_171-176_?) */ ++ ddr2: memory-controller2@22200000 { ++ compatible = "be,emc", "be,memory-controller"; ++ reg = <0x0 0x22200000 0x0 0x10000>; ++ interrupts = , /* ddr dfi alert err */ ++ , /* ddr ecc corrected err */ ++ , /* ddr ecc uncorrected err */ ++ , /* ddr sbr done */ ++ , /* ddr ecc corrected err fault */ ++ ; /* ddr ecc uncorrected err fault */ ++ clocks = <&soc_smc50mhz>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ pcie_lcru: lcru@2000000 { ++ compatible = "syscon"; ++ reg = <0x0 0x2000000 0x0 0x80000>; ++ /*big-endian;*/ ++ status = "disabled"; ++ }; ++ ++ pcie0: pcie@2200000 { /* PCIe x4 #0 */ ++ compatible = "baikal,pcie-m", "snps,dw-pcie"; ++ reg = <0x0 0x02200000 0x0 0x1000>, /* RC config space */ ++ <0x0 0x40100000 0x0 0x100000>; /* PCI config space */ ++ reg-names = "dbi", "config"; ++ interrupts = , /* AER */ ++ ; /* MSI */ ++ #interrupt-cells = <1>; ++ baikal,pcie-lcru = <&pcie_lcru 0>; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ranges = <0x81000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>, /* I/O */ ++ <0x82000000 0x0 0x40000000 0x4 0x00000000 0x0 0x40000000>; /* 32b non-prefetchable memory */ ++ msi-parent = <&its 0x0>; ++ msi-map = <0x0 &its 0x0 0x10000>; ++ num-lanes = <4>; ++ num-viewport = <4>; ++ bus-range = <0x0 0xff>; ++ status = "disabled"; ++ }; ++ ++ pcie1: pcie@2210000 { /* PCIe x4 #1 */ ++ compatible = "baikal,pcie-m", "snps,dw-pcie"; ++ reg = <0x0 0x02210000 0x0 0x1000>, /* RC config space */ ++ <0x0 0x50100000 0x0 0x100000>; /* PCI config space */ ++ reg-names = "dbi", "config"; ++ interrupts = , /* AER */ ++ ; /* MSI */ ++ #interrupt-cells = <1>; ++ baikal,pcie-lcru = <&pcie_lcru 1>; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ranges = <0x81000000 0x0 0x00100000 0x0 0x50000000 0x0 0x100000>, /* I/O */ ++ <0x82000000 0x0 0x40000000 0x5 0x00000000 0x0 0x40000000>; /* 32b non-prefetchable memory */ ++ msi-parent = <&its 0x0>; ++ msi-map = <0x0 &its 0x0 0x10000>; ++ num-lanes = <4>; ++ num-viewport = <4>; ++ bus-range = <0x0 0xff>; ++ status = "disabled"; ++ }; ++ ++ pcie2: pcie@2220000 { /* PCIe x8 */ ++ compatible = "baikal,pcie-m", "snps,dw-pcie"; ++ reg = <0x0 0x02220000 0x0 0x1000>, /* RC config space */ ++ <0x0 0x60000000 0x0 0x100000>; /* PCI config space */ ++ reg-names = "dbi", "config"; ++ interrupts = , /* AER */ ++ ; /* MSI */ ++ #interrupt-cells = <1>; ++ baikal,pcie-lcru = <&pcie_lcru 2>; ++ #address-cells = <3>; ++ #size-cells = <2>; ++ device_type = "pci"; ++ ranges = <0x81000000 0x0 0x00200000 0x0 0x60100000 0x0 0x100000>, /* I/O */ ++ <0x82000000 0x0 0x80000000 0x6 0x00000000 0x0 0x80000000>; /* 32b non-prefetchable memory */ ++ msi-parent = <&its 0x0>; ++ msi-map = <0x0 &its 0x0 0x10000>; ++ num-lanes = <8>; ++ num-viewport = <4>; ++ bus-range = <0x0 0xff>; ++ status = "disabled"; ++ }; ++ ++ ccn: ccn@9000000 { ++ compatible = "arm,ccn-504"; ++ reg = <0x0 0x9000000 0 0x1000000>; ++ interrupts = ; ++ }; ++ ++ pvt0: pvt0@28200000 { ++ compatible = "baikal,pvt"; ++ reg = <0x0 0x28200000 0x0 0x10000>; ++ pvt_id = <0>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ pvt1: pvt1@c200000 { ++ compatible = "baikal,pvt"; ++ reg = <0x0 0xc200000 0x0 0x10000>; ++ pvt_id = <1>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ pvt2: pvt2@a200000 { ++ compatible = "baikal,pvt"; ++ reg = <0x0 0xa200000 0x0 0x10000>; ++ pvt_id = <2>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ pvt3: pvt3@26200000 { ++ compatible = "baikal,pvt"; ++ reg = <0x0 0x26200000 0x0 0x10000>; ++ pvt_id = <3>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ pvt_mali: pvt_mali@2a060000 { ++ compatible = "baikal,pvt"; ++ reg = <0x0 0x2a060000 0x0 0x10000>; ++ pvt_id = <4>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: GPIO32 (20200000, 10000, SPI_131_H) */ ++ gpio: gpio@20200000 { ++ compatible = "snps,dw-apb-gpio"; ++ reg = <0x0 0x20200000 0x0 0x10000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ status = "disabled"; ++ ++ porta: gpio-controller@0 { ++ compatible = "snps,dw-apb-gpio-port"; ++ #gpio-cells = <2>; ++ gpio-controller; ++ snps,nr-gpios = <32>; ++ reg = <0>; ++ #interrupt-cells = <2>; ++ interrupt-controller; ++ interrupts = ; ++ }; ++ }; ++ ++ /* AVLSP: SPI (20210000, 10000, SPI_132_H) */ ++ spi0: spi@20210000 { ++ compatible = "snps,dw-apb-ssi", "snps,dw-spi"; ++ reg = <0x0 0x20210000 0x0 0x10000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clocks = <&cmu0_avlsp 4>; ++ clock-names = "soc_spiclk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: I2S (20220000, 1000, SPI_136-139_H) */ ++ i2s: i2s@20220000 { ++ compatible = "snps,designware-i2s"; ++ reg = <0x0 0x20220000 0x0 0x10000>; ++ interrupts = , /* rx_da */ ++ , /* rx_or */ ++ , /* tx_emp */ ++ ; /* tx_or */ ++ /*dmas = <&dma 2>, <&dma 3>;*/ ++ /*dma-names = "tx", "rx";*/ ++ /*#sound-dai-cells = <0>;*/ ++ clocks = <&soc_tmp_clk>; ++ clock-names = "i2sclk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: UART1 (20230000, 10000, SPI_133_H) */ ++ uart0: serial0@20230000 { ++ compatible = "snps,dw-apb-uart"; /* "snps,uart-16550-compatible" */ ++ reg = <0x0 0x20230000 0x0 0x10000>; ++ interrupts = ; ++ reg-shift = <2>; ++ reg-io-width = <4>; ++ clocks = <&cmu0_avlsp 1>, <&apb_clk>; ++ clock-names = "soc_uartclk", "apb_pclk"; ++ /*dcd-override;*/ ++ /*dsr-override;*/ ++ /*cts-override;*/ ++ /*ri-override;*/ ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: UART2 (20240000, 10000, SPI_134_H) */ ++ uart1: serial1@20240000 { ++ compatible = "snps,dw-apb-uart"; /* "snps,uart-16550-compatible" */ ++ reg = <0x0 0x20240000 0x0 0x10000>; ++ interrupts = ; ++ reg-shift = <2>; ++ reg-io-width = <4>; ++ clocks = <&cmu0_avlsp 2>, <&apb_clk>; ++ clock-names = "soc_uartclk", "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: I2C1 (20250000, 10000, SPI_140_H) */ ++ i2c0: i2c0@20250000 { ++ compatible = "snps,designware-i2c"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <0x0 0x20250000 0x0 0x10000>; ++ interrupts = ; ++ i2c-sda-hold-time-ns = <500>; ++ clock-frequency = <400000>; ++ clocks = <&i2c_clk>; ++ clock-names = "soc_i2cclk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: I2C2 (20260000, 10000, SPI_141_H) */ ++ i2c1: i2c1@20260000 { ++ compatible = "snps,designware-i2c"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <0x0 0x20260000 0x0 0x10000>; ++ interrupts = ; ++ i2c-sda-hold-time-ns = <500>; ++ clock-frequency = <400000>; ++ clocks = <&i2c_clk>; ++ clock-names = "soc_i2cclk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: SMBus1 (20270000, 10000, SPI_142_?) */ ++ smbus0: smbus0@20270000 { ++ compatible = "be,smbus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <0x0 0x20270000 0x0 0x10000>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ clocks = <&smbus_clk>; ++ clock-names = "soc_smbusclk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: SMBus2 (20280000, 10000, SPI_143_?) */ ++ smbus1: smbus1@20280000 { ++ compatible = "be,smbus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <0x0 0x20280000 0x0 0x10000>; ++ interrupts = ; ++ clock-frequency = <100000>; ++ clocks = <&smbus_clk>; ++ clock-names = "soc_smbusclk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: Timers (20290000, 10000, SPI_127_L) */ ++ timer1: timer1@20290000 { ++ compatible = "snps,dw-apb-timer-osc"; ++ reg = <0x0 0x20290000 0x0 0x14>; ++ interrupts = ; ++ clock-frequency = <50000000>; ++ clocks = <&timer1_clk>; ++ clock-names = "soc_timer1clk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: Timers (20290000, 10000, SPI_128_L) */ ++ timer2: timer2@20290014 { ++ compatible = "snps,dw-apb-timer-sp"; ++ reg = <0x0 0x20290014 0x0 0x14>; ++ interrupts = ; ++ clock-frequency = <50000000>; ++ clocks = <&timer2_clk>; ++ clock-names = "soc_timer2clk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: Timers (20290000, 10000, SPI_129_L) */ ++ timer3: timer3@20290028 { ++ compatible = "snps,dw-apb-timer-sp"; ++ reg = <0x0 0x20290028 0x0 0x14>; ++ interrupts = ; ++ clock-frequency = <50000000>; ++ clocks = <&timer3_clk>; ++ clock-names = "soc_timer3clk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: Timers (20290000, 10000, SPI_130_L) */ ++ timer4: timer4@2029003c { ++ compatible = "snps,dw-apb-timer-sp"; ++ reg = <0x0 0x2029003c 0x0 0x14>; ++ interrupts = ; ++ clock-frequency = <50000000>; ++ clocks = <&timer4_clk>; ++ clock-names = "soc_timer4clk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: eSPI (202a0000, 10000, SPI_135_?) */ ++ espi0: espi0@202a0000 { ++ compatible = "be,espi"; ++ reg = <0x0 0x202a0000 0x0 0x10000>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupts = ; ++ clocks = <&cmu0_avlsp 5>; ++ clock-names = "soc_espiclk"; ++ status = "disabled"; ++ /* ++ * Block Configuration: ++ * - master/slave ++ * - 32-bit APB slave ++ * - tx-fifo = rx-fifo = 256 byte ++ * - 4 SPI IO channels ++ * - 8 slave select IO channels ++ * - DMA - missing ++ * - M-flash controller - missing ++ */ ++ }; ++ ++ /* AVLSP: DMAC (202b0000, 10000, SPI_41-80_H) */ ++ lsdma: dma@202b0000 { ++ compatible = "snps,dma-spear1340"; ++ reg = <0x0 0x202b0000 0x0 0x10000>; ++ /* TODO: interrupts */ ++ interrupts = ; ++ dma-channels = <8>; ++ dma-requests = <16>; ++ dma-masters = <2>; ++ #dma-cells = <3>; ++ chan_allocation_order = <1>; ++ chan_priority = <1>; ++ block_size = <0xfff>; ++ data_width = <3 3 0 0>; ++ clocks = <&soc_tmp_clk>; ++ clock-names = "tmpclk"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: HDA (202c0000, 10000, SPI_86_H) */ ++ hda: hda@202c0000 { ++ compatible = "be,cw-hda"; ++ reg = <0x0 0x202c0000 0x0 0x1000>; ++ interrupts = ; ++ clocks = <&cmu0_avlsp 15>, <&cmu0_avlsp 16>; ++ clock-names = "hda_sys_clk", "hda_clk48"; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: VDU (202d0000, 10000, SPI_144-145_?) */ ++ vdu0: vdu_lvds@202d0000 { ++ compatible = "baikal,vdu"; ++ reg = <0x0 0x202d0000 0x0 0x1000>; ++ interrupts = , /* VDU INTR */ ++ ; /* VDU INTR_CDD */ ++ clocks = <&cmu1_avlsp_div7>; ++ clock-names = "pclk"; ++ lvds-out; ++ status = "disabled"; ++ }; ++ ++ /* AVLSP: SD/eMMC (202e0000, 10000, SPI_83-84_H) */ ++ mmc0: mmc@202e0000 { ++ compatible = "snps,dwcmshc-sdhci"; ++ reg = <0x0 0x202e0000 0x0 0x10000>; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ ; ++ clock-names = "bus", "core"; ++ clocks = <&cmu0_avlsp 18>, <&cmu0_avlsp 19>; ++ status = "disabled"; ++ }; ++ ++ vdec: vdec@24200000 { ++ compatible = "baikal,d5500-vxd"; ++ reg = <0x0 0x24200000 0x0 0x10000>; ++ interrupts = ; ++ status = "disabled"; ++ }; ++ ++ gpu: gpu@2a200000 { ++ compatible = "arm,mali-midgard", "arm,mali-t628"; ++ #cooling-cells = <2>; /* min followed by max */ ++ reg = <0x0 0x2a200000 0x0 0x4000>; ++ interrupts = , ++ , ++ ; ++ interrupt-names = "job", "mmu", "gpu"; ++ clocks = <&cmu_mali>; ++ clock-names = "gpuclk"; ++ operating-points-v2 = <&gpu_opp_table>; ++ }; ++ ++ /* USB MM: USB2 (2c400000, 100000, SPI_267-268_H, SPI_277_H) */ ++ usb2: usb2@2c400000 { ++ compatible = "be,baikal-dwc3"; ++ status = "disabled"; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ clocks = <&usb_clk>; ++ clock-names = "usb"; ++ dma-coherent; ++ ++ dwc3@2c400000 { ++ compatible = "snps,dwc3", "synopsys,dwc3", "generic-xhci"; ++ reg = <0x0 0x2c400000 0x0 0x100000>; ++ interrupts = , ++ , ++ ; ++ dr_mode = "host"; ++ dma-coherent; ++ maximum-speed = "high-speed"; ++ }; ++ }; ++ ++ /* USB MM: USB3 (2c500000, 100000, SPI_269-276_H, SPI_278_H) */ ++ usb3: usb3@2c500000 { ++ compatible = "be,baikal-dwc3"; ++ status = "disabled"; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ clocks = <&usb_clk>; ++ clock-names = "usb"; ++ ++ dwc3@2c500000 { ++ compatible = "snps,dwc3", "synopsys,dwc3", "generic-xhci"; ++ reg = <0x0 0x2c500000 0x0 0x100000>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ dr_mode = "host"; ++ dma-coherent; ++ }; ++ }; ++ ++ /* USB MM: SATA0 (2c600000, 10000, SPI_265_H) */ ++ sata0: sata0@2c600000 { ++ compatible = "snps,dwc-ahci", "generic-ahci"; ++ reg = <0x0 0x2c600000 0 0x10000>; ++ interrupt-parent = <&gic>; ++ interrupts = ; ++ ports-implemented = <1>; ++ dma-coherent; ++ clocks = <&soc_faxiclk>; ++ clock-names = "sataclk"; ++ status = "disabled"; ++ }; ++ ++ /* USB MM: SATA1 (2c610000, 10000, SPI_266_H) */ ++ sata1: sata1@2c610000 { ++ compatible = "snps,dwc-ahci", "generic-ahci"; ++ reg = <0x0 0x2c610000 0 0x10000>; ++ interrupt-parent = <&gic>; ++ interrupts = ; ++ ports-implemented = <1>; ++ dma-coherent; ++ clocks = <&soc_faxiclk>; ++ clock-names = "sataclk"; ++ status = "disabled"; ++ }; ++ ++ /* DMA-330: DMAC ("secure", 2c620000, 10000, SPI_255-263_H) */ ++ /* ("non-secure", 2c630000, 10000, ?) */ ++ dma: dma@2c620000 { ++ compatible = "arm,pl330", "arm,primecell"; ++ reg = <0x0 0x2c620000 0 0x1000>; ++ #dma-cells = <1>; ++ #dma-channels = <8>; ++ #dma-requests = <32>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ clocks = <&soc_faxiclk>; ++ clock-names = "apb_pclk"; ++ status = "disabled"; ++ }; ++ ++ gic: interrupt-controller@2d000000 { ++ compatible = "arm,gic-v3"; ++ #interrupt-cells = <3>; ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ interrupt-controller; ++ reg = <0x0 0x2d000000 0x0 0x10000>, /* GICD */ ++ <0x0 0x2d100000 0x0 0x200000>, /* GICR */ ++ <0x0 0x10200000 0x0 0x2000>, /* GICC */ ++ <0x0 0x10210000 0x0 0x1000>, /* GICH */ ++ <0x0 0x10220000 0x0 0x2000>; /* GICV */ ++ interrupts = ; ++ ++ its: its@2d020000 { ++ compatible = "arm,gic-v3-its"; ++ msi-controller; ++ #msi-cells = <1>; ++ reg = <0x0 0x2d020000 0x0 0x20000>; /* GITS */ ++ }; ++ }; ++ ++ axi_gmac: stmmac-axi-config0 { ++ snps,wr_osr_lmt = <0x0>; ++ snps,rd_osr_lmt = <0x0>; ++ snps,blen = <0 0 0 0 0 0 4>; ++ }; ++ ++ gmac0: eth0@30240000 { ++ compatible = "be,dwmac", "snps,dwmac-3.710", "snps,dwmac"; ++ reg = <0x0 0x30240000 0x0 0x10000>; ++ interrupt-parent = <&gic>; ++ interrupts = ; ++ interrupt-names = "macirq"; ++ max-speed = <1000>; ++ clocks = <&soc_ethclk>, <&cmu0_xgbe 10>; ++ clock-names = "stmmaceth", "tx2_clk"; ++ mac-address = [ 00 00 00 00 00 00 ]; ++ local-mac-address = [ 00 00 00 00 00 00 ]; ++ phy-mode = "rgmii-id"; ++ phy-handle = <&gmac0_phy>; ++ snps,fixed-burst; ++ snps,axi-config = <&axi_gmac>; ++ snps,no-pbl-x8; ++ snps,txpbl = <4>; ++ snps,rxpbl = <4>; ++ snps,reset-delays-us = <0 10200 1000>; ++ status = "disabled"; ++ dma-coherent; ++ ++ gmdio0: gmac0_mdio { ++ compatible = "snps,dwmac-mdio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ gmac0_phy: ethernet-phy@3 { ++ compatible = "micrel,ksz9031", "ethernet-phy-id0022.1620", "ethernet-phy-ieee802.3-c22"; ++ reg = <0x3>; ++ txd0-skew-ps = <0>; ++ txd1-skew-ps = <0>; ++ txd2-skew-ps = <0>; ++ txd3-skew-ps = <0>; ++ txc-skew-ps = <0xff>; ++ }; ++ }; ++ }; ++ ++ gmac1: eth1@30250000 { ++ compatible = "be,dwmac", "snps,dwmac-3.710", "snps,dwmac"; ++ reg = <0x0 0x30250000 0x0 0x10000>; ++ interrupt-parent = <&gic>; ++ interrupts = ; ++ interrupt-names = "macirq"; ++ max-speed = <1000>; ++ clocks = <&soc_ethclk>, <&cmu0_xgbe 13>; ++ clock-names = "stmmaceth", "tx2_clk"; ++ mac-address = [ 00 00 00 00 00 00 ]; ++ local-mac-address = [ 00 00 00 00 00 00 ]; ++ phy-mode = "rgmii-id"; ++ phy-handle = <&gmac1_phy>; ++ snps,fixed-burst; ++ snps,axi-config = <&axi_gmac>; ++ snps,no-pbl-x8; ++ snps,txpbl = <4>; ++ snps,rxpbl = <4>; ++ snps,reset-delays-us = <0 10200 1000>; ++ status = "disabled"; ++ dma-coherent; ++ ++ gmdio1: gmac1_mdio { ++ compatible = "snps,dwmac-mdio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ gmac1_phy: ethernet-phy@3 { ++ compatible = "micrel,ksz9031", "ethernet-phy-id0022.1620", "ethernet-phy-ieee802.3-c22"; ++ reg = <0x3>; ++ txd0-skew-ps = <0>; ++ txd1-skew-ps = <0>; ++ txd2-skew-ps = <0>; ++ txd3-skew-ps = <0>; ++ txc-skew-ps = <0xff>; ++ }; ++ }; ++ }; ++ ++ /* Baikal internal MDIO */ ++ mdio0: be-mdio { ++ compatible = "be,mdio-gpio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mdc-pin = <&porta 30 GPIO_ACTIVE_HIGH>; ++ mdio-pin = <&porta 29 GPIO_ACTIVE_HIGH>; ++ clocks = <&gpio_clk>; ++ clock-names = "gpioclk"; ++ ++ mv_ch0: ethernet-phy@c { ++ compatible = "marvell,88x2222", "ethernet-phy-ieee802.3-c45"; ++ reg = <0x0c>; ++ phy-mode = "xgmii"; ++ mv,line-mode = "KR"; ++ mv,host-mode = "KX4"; ++ }; ++ ++ mv_ch2: ethernet-phy@e { ++ compatible = "marvell,88x2222", "ethernet-phy-ieee802.3-c45"; ++ reg = <0x0e>; ++ phy-mode = "xgmii"; ++ mv,line-mode = "KR"; ++ mv,host-mode = "KX4"; ++ }; ++ }; ++ ++ /* XGMAC0 */ ++ xgmac0: eth2@30200000 { ++ compatible = "amd,xgbe-seattle-v1a"; ++ reg = <0x0 0x30200000 0x0 0x10000>, ++ <0x0 0x30210000 0x0 0x10000>; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ fsl,num-rx-queues=<3>; ++ clocks = <&soc_xgbeclk>, <&soc_xgbeclk>, <&soc_xgbeclk>; ++ clock-names = "dma_clk", "ptp_clk", "xgbe_clk"; ++ phy-mode = "xgmii"; ++ mac-address = [ 00 20 13 ba 1c a1 ]; ++ local-mac-address = [ 00 20 13 ba 1c a1 ]; ++ be,pcs-mode = "KX4"; ++ ext-phy-handle = <&mv_ch0>; ++ status = "disabled"; ++ amd,per-channel-interrupt; ++ amd,speed-set = <0>; ++ #stream-id-cells = <16>; ++ }; ++ ++ /* XGMAC1 */ ++ xgmac1: eth3@30220000 { ++ compatible = "amd,xgbe-seattle-v1a"; ++ reg = <0x0 0x30220000 0x0 0x10000>, ++ <0x0 0x30230000 0x0 0x10000>; ++ interrupt-parent = <&gic>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ fsl,num-rx-queues=<3>; ++ clocks = <&soc_xgbeclk>, <&soc_xgbeclk>, <&soc_xgbeclk>; ++ clock-names = "dma_clk", "ptp_clk", "xgbe_clk"; ++ phy-mode = "xgmii"; ++ mac-address = [ 00 20 13 ba 1c a2 ]; ++ local-mac-address = [ 00 20 13 ba 1c a2 ]; ++ be,pcs-mode = "KX4"; ++ ext-phy-handle = <&mv_ch2>; ++ status = "disabled"; ++ amd,per-channel-interrupt; ++ amd,speed-set = <0>; ++ #stream-id-cells = <16>; ++ }; ++ ++ /* HDMI VDU (30260000, 10000, SPI_361-362_?) */ ++ vdu1: vdu_hdmi@30260000 { ++ compatible = "baikal,vdu"; ++ reg = <0x0 0x30260000 0x0 0x1000>; ++ interrupts = , /* VDU INTR */ ++ ; /* VDU INTR_CDD */ ++ clocks = <&cmu1_xgbe 0>; ++ clock-names = "pclk"; ++ status = "disabled"; ++ ++ port { ++ vdu_hdmi_out: endpoint { ++ remote-endpoint = <&hdmi_tx_in>; ++ }; ++ }; ++ }; ++ ++ hdmi: hdmi@30280000 { ++ compatible = "baikal,hdmi"; ++ reg = <0 0x30280000 0 0x20000>; ++ reg-io-width = <4>; ++ interrupts = ; ++ clocks = <&cmu0_xgbe 0>, <&cmu0_xgbe 17>; ++ clock-names = "iahb", "isfr"; ++ status = "disabled"; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ port@0 { ++ reg = <0>; ++ hdmi_tx_in: endpoint { ++ remote-endpoint = <&vdu_hdmi_out>; ++ }; ++ }; ++ port@1 { ++ reg = <1>; ++ hdmi_tx_out: endpoint { ++ remote-endpoint = <&hdmi_con>; ++ }; ++ }; ++ }; ++ }; ++ }; /* end of soc node */ ++ ++ hdmi-out { ++ compatible = "hdmi-connector"; ++ label = "HDMI0 OUT"; ++ type = "a"; ++ ++ port { ++ hdmi_con: endpoint { ++ remote-endpoint = <&hdmi_tx_out>; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index 7fdb41de01ec..4d4adf399849 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -52,3 +52,5 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire-excavator.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399pro-rock-pi-n10.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb ++ ++subdir-y := $(dts-dirs) overlay +diff --git a/arch/arm64/boot/dts/rockchip/overlay/Makefile b/arch/arm64/boot/dts/rockchip/overlay/Makefile +new file mode 100644 +index 000000000000..0fce5206d2bd +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/Makefile +@@ -0,0 +1,22 @@ ++# SPDX-License-Identifier: GPL-2.0 ++dtbo-$(CONFIG_ARCH_ROCKCHIP) += \ ++ rockchip-i2c7.dtbo \ ++ rockchip-i2c8.dtbo \ ++ rockchip-pcie-gen2.dtbo \ ++ rockchip-spi-jedec-nor.dtbo \ ++ rockchip-spi-spidev.dtbo \ ++ rockchip-uart4.dtbo \ ++ rockchip-dwc3-0-host.dtbo \ ++ rockchip-w1-gpio.dtbo ++ ++scr-$(CONFIG_ARCH_ROCKCHIP) += \ ++ rockchip-fixup.scr ++ ++dtbotxt-$(CONFIG_ARCH_ROCKCHIP) += \ ++ README.rockchip-overlays ++ ++targets += $(dtbo-y) $(scr-y) $(dtbotxt-y) ++ ++always := $(dtbo-y) $(scr-y) $(dtbotxt-y) ++clean-files := *.dtbo *.scr ++ +diff --git a/arch/arm64/boot/dts/rockchip/overlay/README.rockchip-overlays b/arch/arm64/boot/dts/rockchip/overlay/README.rockchip-overlays +new file mode 100644 +index 000000000000..48ca48fc3113 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/README.rockchip-overlays +@@ -0,0 +1,106 @@ ++This document describes overlays provided in the kernel packages ++For generic Armbian overlays documentation please see ++https://docs.armbian.com/User-Guide_Allwinner_overlays/ ++ ++### Platform: ++ ++rockchip (Rockchip) ++ ++### Provided overlays: ++ ++- i2c7, i2c8, pcie-gen2, spi-spidev, uart4, w1-gpio ++ ++### Overlay details: ++ ++### i2c7 ++ ++Activates TWI/I2C bus 7 ++ ++I2C7 pins (SCL, SDA): GPIO2-B0, GPIO2-A7 GPIO1-C5, GPIO1-C4 ++ ++### i2c8 ++ ++Activates TWI/I2C bus 8 ++ ++I2C8 pins (SCL, SDA): GPIO1-C5, GPIO1-C4 ++ ++### pcie-gen2 ++ ++Enables PCIe Gen2 link speed on RK3399. ++WARNING! Not officially supported by Rockchip!!! ++ ++### spi-jedec-nor ++ ++Activates MTD support for JEDEC compatible SPI NOR flash chips on SPI bus ++supported by the kernel SPI NOR driver ++ ++SPI 0 pins (MOSI, MISO, SCK, CS): GPIO3_A5, GPIO3_A4, GPIO3_A6, GPIO3_A7 ++SPI 1 pins (MOSI, MISO, SCK, CS): GPIO1_A7, GPIO1_B0, GPIO1_B1, GPIO1_B2 ++SPI 2 pins (MOSI, MISO, SCK, CS): GPIO1_C0, GPIO1_B7, GPIO1_C1, GPIO1_C2 ++SPI 3 pins (MOSI, MISO, SCK, CS): GPIO2_B2, GPIO2_B1, GPIO2_B3, GPIO2_B4 ++ ++Parameters: ++ ++param_spinor_spi_bus (int) ++ SPI bus to activate SPI NOR flash support on ++ Required ++ Supported values: 0, 1, 2 ++ ++param_spinor_max_freq (int) ++ Maximum SPI frequency ++ Optional ++ Default: 1000000 ++ Range: 3000 - 100000000 ++ ++### spi-spidev ++ ++Activates SPIdev device node (/dev/spidevX.Y) for userspace SPI access, ++where X is the bus number and Y is the CS number ++ ++SPI 0 pins (MOSI, MISO, SCK, CS): GPIO3_A5, GPIO3_A4, GPIO3_A6, GPIO3_A7 ++SPI 1 pins (MOSI, MISO, SCK, CS): GPIO1_A7, GPIO1_B0, GPIO1_B1, GPIO1_B2 ++SPI 2 pins (MOSI, MISO, SCK, CS): GPIO1_C0, GPIO1_B7, GPIO1_C1, GPIO1_C2 ++SPI 3 pins (MOSI, MISO, SCK, CS): GPIO2_B2, GPIO2_B1, GPIO2_B3, GPIO2_B4 ++ ++Parameters: ++ ++param_spidev_spi_bus (int) ++ SPI bus to activate SPIdev support on ++ Required ++ Supported values: 0, 1 ++ ++param_spidev_spi_cs (int) ++ SPI chip select number ++ Optional ++ Default: 0 ++ Supported values: 0, 1 ++ Using chip select 1 requires using "spi-add-cs1" overlay ++ ++param_spidev_max_freq (int) ++ Maximum SPIdev frequency ++ Optional ++ Default: 1000000 ++ Range: 3000 - 100000000 ++ ++### uart4 ++ ++Activates UART4 ++ ++UART4 pins (RX, TX): GPIO1_A7, GPIO1_B0 ++ ++Notice: UART4 cannot be activated together with SPI1 - they share the sam pins. ++Enabling this overlay disables SPI1. ++ ++### dwc3-0-host ++ ++Forces port 0 of the DesignWare xHCI controller to host mode. ++ ++This can be used on plaforms such as NanoPC-T4, where devices plugged into the ++USB-C port may not be detected otherwise. ++ ++### w1-gpio ++ ++Activates 1-Wire GPIO master ++Requires an external pull-up resistor on the data pin ++or enabling the internal pull-up ++ +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-dwc3-0-host.dts b/arch/arm64/boot/dts/rockchip/overlay/rockchip-dwc3-0-host.dts +new file mode 100644 +index 000000000000..be2f4a2736af +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-dwc3-0-host.dts +@@ -0,0 +1,13 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "rockchip,rk3399"; ++ ++ fragment@0 { ++ target = <&usbdrd_dwc3_0>; ++ __overlay__ { ++ dr_mode = "host"; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-fixup.scr-cmd b/arch/arm64/boot/dts/rockchip/overlay/rockchip-fixup.scr-cmd +new file mode 100644 +index 000000000000..8e3d468f4d4b +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-fixup.scr-cmd +@@ -0,0 +1,62 @@ ++# overlays fixup script ++# implements (or rather substitutes) overlay arguments functionality ++# using u-boot scripting, environment variables and "fdt" command ++ ++setenv decompose_pin 'setexpr tmp_pinctrl sub "GPIO(0|1|2|3|4)_\\S\\d+" "\\1"; ++setexpr tmp_bank sub "GPIO\\d_(\\S)\\d+" "\\1"; ++test "${tmp_bank}" = "A" && setenv tmp_bank 0; ++test "${tmp_bank}" = "B" && setenv tmp_bank 1; ++test "${tmp_bank}" = "C" && setenv tmp_bank 2; ++test "${tmp_bank}" = "D" && setenv tmp_bank 3; ++setexpr tmp_pin sub "GPIO\\d_\\S(\\d+)" "\\1"; ++setexpr tmp_bank ${tmp_bank} * 8; ++setexpr tmp_pin ${tmp_bank} + ${tmp_pin}' ++ ++ ++if test -n "${param_spinor_spi_bus}"; then ++ test "${param_spinor_spi_bus}" = "0" && setenv tmp_spi_path "spi@ff1c0000" ++ test "${param_spinor_spi_bus}" = "1" && setenv tmp_spi_path "spi@ff1d0000" ++ test "${param_spinor_spi_bus}" = "2" && setenv tmp_spi_path "spi@ff1e0000" ++ test "${param_spinor_spi_bus}" = "3" && setenv tmp_spi_path "spi@ff1f0000" ++ fdt set /${tmp_spi_path} status "okay" ++ fdt set /${tmp_spi_path}/spiflash@0 status "okay" ++ if test -n "${param_spinor_max_freq}"; then ++ fdt set /${tmp_spi_path}/spiflash@0 spi-max-frequency "<${param_spinor_max_freq}>" ++ fi ++ if test "${param_spinor_spi_cs}" = "1"; then ++ fdt set /${tmp_spi_path}/spiflash@0 reg "<1>" ++ fi ++ env delete tmp_spi_path ++fi ++ ++if test -n "${param_spidev_spi_bus}"; then ++ test "${param_spidev_spi_bus}" = "0" && setenv tmp_spi_path "spi@ff1c0000" ++ test "${param_spidev_spi_bus}" = "1" && setenv tmp_spi_path "spi@ff1d0000" ++ test "${param_spidev_spi_bus}" = "2" && setenv tmp_spi_path "spi@ff1e0000" ++ test "${param_spidev_spi_bus}" = "3" && setenv tmp_spi_path "spi@ff1f0000" ++ fdt set /${tmp_spi_path} status "okay" ++ fdt set /${tmp_spi_path}/spidev status "okay" ++ if test -n "${param_spidev_max_freq}"; then ++ fdt set /${tmp_spi_path}/spidev spi-max-frequency "<${param_spidev_max_freq}>" ++ fi ++ if test "${param_spidev_spi_cs}" = "1"; then ++ fdt set /${tmp_spi_path}/spidev reg "<1>"; ++ fi ++fi ++ ++if test -n "${param_w1_pin}"; then ++ setenv tmp_pinctrl "${param_w1_pin}" ++ setenv tmp_bank "${param_w1_pin}" ++ setenv tmp_pin "${param_w1_pin}" ++ run decompose_pin ++ #echo "${param_w1_pin} ---> pinctrl = ${tmp_pinctrl}" ++ #echo "${param_w1_pin} ---> bank = ${tmp_bank}" ++ #echo "${param_w1_pin} ---> pin = ${tmp_pin}" ++ fdt get value tmp_pinctrl /__symbols__ gpio${tmp_pinctrl} ++ #echo "${param_w1_pin} ---> tmp_pinctrl = ${tmp_pinctrl}" ++ fdt get value tmp_phandle ${tmp_pinctrl} phandle ++ #echo "${param_w1_pin} ---> tmp_phandle = ${tmp_phandle}" ++ fdt set /onewire@0 gpios "<${tmp_phandle} 0x000000${tmp_pin} 0 0>" ++ env delete tmp_pinctrl tmp_bank tmp_pin tmp_phandle ++fi ++ +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-i2c7.dts b/arch/arm64/boot/dts/rockchip/overlay/rockchip-i2c7.dts +new file mode 100644 +index 000000000000..f8c601550588 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-i2c7.dts +@@ -0,0 +1,11 @@ ++/dts-v1/; ++ ++/ { ++ compatible = "rockchip,rk3399"; ++ fragment@0 { ++ target-path = "/i2c@ff160000"; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-i2c8.dts b/arch/arm64/boot/dts/rockchip/overlay/rockchip-i2c8.dts +new file mode 100644 +index 000000000000..54bc8449eafd +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-i2c8.dts +@@ -0,0 +1,11 @@ ++/dts-v1/; ++ ++/ { ++ compatible = "rockchip,rk3399"; ++ fragment@0 { ++ target-path = "/i2c@ff3e0000"; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-pcie-gen2.dts b/arch/arm64/boot/dts/rockchip/overlay/rockchip-pcie-gen2.dts +new file mode 100644 +index 000000000000..e8a51dca8f67 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-pcie-gen2.dts +@@ -0,0 +1,12 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "rockchip,rk3399"; ++ fragment@0 { ++ target = <&pcie0>; ++ __overlay__ { ++ max-link-speed = <2>; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-spi-jedec-nor.dts b/arch/arm64/boot/dts/rockchip/overlay/rockchip-spi-jedec-nor.dts +new file mode 100644 +index 000000000000..c4b1f36f9b09 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-spi-jedec-nor.dts +@@ -0,0 +1,72 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "rockchip,rk3399"; ++ ++ fragment@0 { ++ target-path = "/aliases"; ++ __overlay__ { ++ spi0 = "/spi@ff1c0000"; ++ spi1 = "/spi@ff1d0000"; ++ spi2 = "/spi@ff1e0000"; ++ spi3 = "/spi@ff1f0000"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&spi0>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spiflash@0 { ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ status = "disabled"; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&spi1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spiflash@0 { ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ status = "disabled"; ++ }; ++ }; ++ }; ++ ++ fragment@3 { ++ target = <&spi2>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spiflash@0 { ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ status = "disabled"; ++ }; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&spi3>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spiflash@0 { ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ status = "disabled"; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-spi-spidev.dts b/arch/arm64/boot/dts/rockchip/overlay/rockchip-spi-spidev.dts +new file mode 100644 +index 000000000000..18e1423637cd +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-spi-spidev.dts +@@ -0,0 +1,72 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "rockchip,rk3399"; ++ ++ fragment@0 { ++ target-path = "/aliases"; ++ __overlay__ { ++ spi0 = "/spi@ff1c0000"; ++ spi1 = "/spi@ff1d0000"; ++ spi2 = "/spi@ff1e0000"; ++ spi3 = "/spi@ff1f0000"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&spi0>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spidev { ++ compatible = "spidev"; ++ status = "disabled"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&spi1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spidev { ++ compatible = "spidev"; ++ status = "disabled"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ }; ++ }; ++ }; ++ ++ fragment@3 { ++ target = <&spi2>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spidev { ++ compatible = "spidev"; ++ status = "disabled"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ }; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&spi3>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spidev { ++ compatible = "spidev"; ++ status = "disabled"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-uart4.dts b/arch/arm64/boot/dts/rockchip/overlay/rockchip-uart4.dts +new file mode 100644 +index 000000000000..305304ebcbf1 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-uart4.dts +@@ -0,0 +1,20 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "rockchip,rk3399"; ++ ++ fragment@0 { ++ target = <&spi1>; ++ __overlay__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&uart4>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/overlay/rockchip-w1-gpio.dts b/arch/arm64/boot/dts/rockchip/overlay/rockchip-w1-gpio.dts +new file mode 100644 +index 000000000000..bfbc16adcc9d +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/overlay/rockchip-w1-gpio.dts +@@ -0,0 +1,20 @@ ++// Definitions for w1-gpio module (without external pullup) ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "rockchip,rk3399"; ++ ++ fragment@0 { ++ target-path = "/"; ++ __overlay__ { ++ ++ w1: onewire@0 { ++ compatible = "w1-gpio"; ++ pinctrl-names = "default"; ++ gpios = <&gpio1 4 0 0xae>; // GPIO1_A4 ++ status = "okay"; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts +new file mode 120000 +index 000000000000..aec4f1829147 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts +@@ -0,0 +1 @@ ++rk3399-rock-pi-4b.dts +\ No newline at end of file +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi +index b28888ea9262..ac60dd522699 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi +@@ -36,6 +36,12 @@ + reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; + }; + ++ sound { ++ compatible = "audio-graph-card"; ++ label = "rockchip,rk3399"; ++ dais = <&i2s0_p0>; ++ }; ++ + vcc12v_dcin: dc-12v { + compatible = "regulator-fixed"; + regulator-name = "vcc12v_dcin"; +@@ -74,6 +80,8 @@ + regulator-name = "vcc3v3_pcie"; + regulator-always-on; + regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; + vin-supply = <&vcc5v0_sys>; + }; + +@@ -128,6 +136,26 @@ + regulator-max-microvolt = <1400000>; + vin-supply = <&vcc5v0_sys>; + }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&power_led_gpio>, <&status_led_gpio>; ++ ++ power-status { ++ label = "power"; ++ gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "default-on"; ++ status = "disabled"; ++ }; ++ ++ system-status { ++ label = "status"; ++ gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "heartbeat"; ++ }; ++ }; ++ + }; + + &cpu_l0 { +@@ -190,6 +218,10 @@ + status = "okay"; + }; + ++&hdmi_sound { ++ status = "okay"; ++}; ++ + &i2c0 { + clock-frequency = <400000>; + i2c-scl-rising-time-ns = <168>; +@@ -422,6 +454,23 @@ + i2c-scl-rising-time-ns = <300>; + i2c-scl-falling-time-ns = <15>; + status = "okay"; ++ ++ es8316: codec@11 { ++ compatible = "everest,es8316"; ++ reg = <0x11>; ++ clocks = <&cru SCLK_I2S_8CH_OUT>; ++ clock-names = "mclk"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s_8ch_mclk>; ++ #sound-dai-cells = <0>; ++ ++ port { ++ es8316_p0_0: endpoint { ++ remote-endpoint = <&i2s0_p0_0>; ++ }; ++ }; ++ }; ++ + }; + + &i2c3 { +@@ -441,6 +490,15 @@ + rockchip,capture-channels = <2>; + rockchip,playback-channels = <2>; + status = "okay"; ++ ++ i2s0_p0: port { ++ i2s0_p0_0: endpoint { ++ dai-format = "i2s"; ++ mclk-fs = <256>; ++ remote-endpoint = <&es8316_p0_0>; ++ }; ++ }; ++ + }; + + &i2s1 { +@@ -462,6 +520,21 @@ + gpio1830-supply = <&vcc_3v0>; + }; + ++&pcie0 { ++ ep-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>; ++ num-lanes = <4>; ++ max-link-speed = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pcie_clkreqnb_cpm>; ++ vpcie12v-supply = <&vcc12v_dcin>; ++ vpcie3v3-supply = <&vcc3v3_pcie>; ++ status = "okay"; ++}; ++ ++&pcie_phy { ++ status = "okay"; ++}; ++ + &pmu_io_domains { + status = "okay"; + +@@ -521,6 +594,16 @@ + }; + }; + ++ leds { ++ power_led_gpio: power_led_gpio { ++ rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ status_led_gpio: status_led_gpio { ++ rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ + pmic { + pmic_int_l: pmic-int-l { + rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; +@@ -556,6 +639,21 @@ + rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; ++ ++ i2s0 { ++ i2s0_8ch_bus: i2s0-8ch-bus { ++ rockchip,pins = ++ <3 24 1 &pcfg_pull_none>, ++ <3 25 1 &pcfg_pull_none>, ++ <3 26 1 &pcfg_pull_none>, ++ <3 27 1 &pcfg_pull_none>, ++ <3 31 1 &pcfg_pull_none>; ++ }; ++ ++ i2s_8ch_mclk: i2s-8ch-mclk { ++ rockchip,pins = <4 0 1 &pcfg_pull_none>; ++ }; ++ }; + }; + + &pwm2 { +@@ -596,6 +694,7 @@ + }; + + &sdhci { ++ max-frequency = <150000000>; + bus-width = <8>; + mmc-hs400-1_8v; + mmc-hs400-enhanced-strobe; +diff --git a/arch/arm64/configs/baikal_minimal_defconfig b/arch/arm64/configs/baikal_minimal_defconfig +new file mode 100644 +index 000000000000..6c3fe0e3c4db +--- /dev/null ++++ b/arch/arm64/configs/baikal_minimal_defconfig +@@ -0,0 +1,4417 @@ ++# ++# Automatically generated file; DO NOT EDIT. ++# Linux/arm64 5.6.0 Kernel Configuration ++# ++ ++# ++# Compiler: aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 ++# ++CONFIG_CC_IS_GCC=y ++CONFIG_GCC_VERSION=70500 ++CONFIG_CLANG_VERSION=0 ++CONFIG_CC_CAN_LINK=y ++CONFIG_CC_HAS_ASM_GOTO=y ++CONFIG_CC_HAS_ASM_INLINE=y ++CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y ++CONFIG_IRQ_WORK=y ++CONFIG_BUILDTIME_TABLE_SORT=y ++CONFIG_THREAD_INFO_IN_TASK=y ++ ++# ++# General setup ++# ++CONFIG_INIT_ENV_ARG_LIMIT=32 ++# CONFIG_COMPILE_TEST is not set ++CONFIG_LOCALVERSION="" ++CONFIG_LOCALVERSION_AUTO=y ++CONFIG_BUILD_SALT="" ++CONFIG_DEFAULT_HOSTNAME="" ++CONFIG_SWAP=y ++CONFIG_SYSVIPC=y ++CONFIG_SYSVIPC_SYSCTL=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_POSIX_MQUEUE_SYSCTL=y ++CONFIG_CROSS_MEMORY_ATTACH=y ++# CONFIG_USELIB is not set ++CONFIG_AUDIT=y ++CONFIG_HAVE_ARCH_AUDITSYSCALL=y ++CONFIG_AUDITSYSCALL=y ++ ++# ++# IRQ subsystem ++# ++CONFIG_GENERIC_IRQ_PROBE=y ++CONFIG_GENERIC_IRQ_SHOW=y ++CONFIG_GENERIC_IRQ_SHOW_LEVEL=y ++CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y ++CONFIG_GENERIC_IRQ_MIGRATION=y ++CONFIG_HARDIRQS_SW_RESEND=y ++CONFIG_GENERIC_IRQ_CHIP=y ++CONFIG_IRQ_DOMAIN=y ++CONFIG_IRQ_DOMAIN_HIERARCHY=y ++CONFIG_GENERIC_MSI_IRQ=y ++CONFIG_GENERIC_MSI_IRQ_DOMAIN=y ++CONFIG_IRQ_MSI_IOMMU=y ++CONFIG_HANDLE_DOMAIN_IRQ=y ++CONFIG_IRQ_FORCED_THREADING=y ++CONFIG_SPARSE_IRQ=y ++# CONFIG_GENERIC_IRQ_DEBUGFS is not set ++# end of IRQ subsystem ++ ++CONFIG_GENERIC_IRQ_MULTI_HANDLER=y ++CONFIG_ARCH_CLOCKSOURCE_DATA=y ++CONFIG_GENERIC_TIME_VSYSCALL=y ++CONFIG_GENERIC_CLOCKEVENTS=y ++CONFIG_ARCH_HAS_TICK_BROADCAST=y ++CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y ++ ++# ++# Timers subsystem ++# ++CONFIG_TICK_ONESHOT=y ++CONFIG_NO_HZ_COMMON=y ++# CONFIG_HZ_PERIODIC is not set ++CONFIG_NO_HZ_IDLE=y ++# CONFIG_NO_HZ_FULL is not set ++# CONFIG_NO_HZ is not set ++CONFIG_HIGH_RES_TIMERS=y ++# end of Timers subsystem ++ ++# CONFIG_PREEMPT_NONE is not set ++# CONFIG_PREEMPT_VOLUNTARY is not set ++CONFIG_PREEMPT=y ++CONFIG_PREEMPT_COUNT=y ++CONFIG_PREEMPTION=y ++ ++# ++# CPU/Task time and stats accounting ++# ++CONFIG_TICK_CPU_ACCOUNTING=y ++# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set ++# CONFIG_IRQ_TIME_ACCOUNTING is not set ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++CONFIG_PSI=y ++# CONFIG_PSI_DEFAULT_DISABLED is not set ++# end of CPU/Task time and stats accounting ++ ++CONFIG_CPU_ISOLATION=y ++ ++# ++# RCU Subsystem ++# ++CONFIG_TREE_RCU=y ++CONFIG_PREEMPT_RCU=y ++# CONFIG_RCU_EXPERT is not set ++CONFIG_SRCU=y ++CONFIG_TREE_SRCU=y ++CONFIG_TASKS_RCU=y ++CONFIG_RCU_STALL_COMMON=y ++CONFIG_RCU_NEED_SEGCBLIST=y ++# end of RCU Subsystem ++ ++CONFIG_IKCONFIG=y ++CONFIG_IKCONFIG_PROC=y ++# CONFIG_IKHEADERS is not set ++CONFIG_LOG_BUF_SHIFT=17 ++CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 ++CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 ++CONFIG_GENERIC_SCHED_CLOCK=y ++ ++# ++# Scheduler features ++# ++# CONFIG_UCLAMP_TASK is not set ++# end of Scheduler features ++ ++CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y ++CONFIG_CC_HAS_INT128=y ++CONFIG_ARCH_SUPPORTS_INT128=y ++CONFIG_CGROUPS=y ++CONFIG_PAGE_COUNTER=y ++CONFIG_MEMCG=y ++CONFIG_MEMCG_SWAP=y ++CONFIG_MEMCG_SWAP_ENABLED=y ++CONFIG_MEMCG_KMEM=y ++CONFIG_BLK_CGROUP=y ++CONFIG_CGROUP_WRITEBACK=y ++CONFIG_CGROUP_SCHED=y ++CONFIG_FAIR_GROUP_SCHED=y ++CONFIG_CFS_BANDWIDTH=y ++# CONFIG_RT_GROUP_SCHED is not set ++CONFIG_CGROUP_PIDS=y ++# CONFIG_CGROUP_RDMA is not set ++CONFIG_CGROUP_FREEZER=y ++# CONFIG_CGROUP_HUGETLB is not set ++CONFIG_CPUSETS=y ++CONFIG_PROC_PID_CPUSET=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_CGROUP_CPUACCT=y ++CONFIG_CGROUP_PERF=y ++# CONFIG_CGROUP_BPF is not set ++# CONFIG_CGROUP_DEBUG is not set ++CONFIG_NAMESPACES=y ++CONFIG_UTS_NS=y ++CONFIG_IPC_NS=y ++CONFIG_USER_NS=y ++CONFIG_PID_NS=y ++CONFIG_NET_NS=y ++# CONFIG_CHECKPOINT_RESTORE is not set ++CONFIG_SCHED_AUTOGROUP=y ++# CONFIG_SYSFS_DEPRECATED is not set ++CONFIG_RELAY=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_INITRAMFS_SOURCE="" ++CONFIG_RD_GZIP=y ++# CONFIG_RD_BZIP2 is not set ++CONFIG_RD_LZMA=y ++CONFIG_RD_XZ=y ++CONFIG_RD_LZO=y ++CONFIG_RD_LZ4=y ++CONFIG_BOOT_CONFIG=y ++CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y ++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set ++CONFIG_SYSCTL=y ++CONFIG_HAVE_UID16=y ++CONFIG_SYSCTL_EXCEPTION_TRACE=y ++CONFIG_BPF=y ++# CONFIG_EXPERT is not set ++CONFIG_UID16=y ++CONFIG_MULTIUSER=y ++CONFIG_SYSFS_SYSCALL=y ++CONFIG_FHANDLE=y ++CONFIG_POSIX_TIMERS=y ++CONFIG_PRINTK=y ++CONFIG_PRINTK_NMI=y ++CONFIG_BUG=y ++CONFIG_ELF_CORE=y ++CONFIG_BASE_FULL=y ++CONFIG_FUTEX=y ++CONFIG_FUTEX_PI=y ++CONFIG_HAVE_FUTEX_CMPXCHG=y ++CONFIG_EPOLL=y ++CONFIG_SIGNALFD=y ++CONFIG_TIMERFD=y ++CONFIG_EVENTFD=y ++CONFIG_SHMEM=y ++CONFIG_AIO=y ++CONFIG_IO_URING=y ++CONFIG_ADVISE_SYSCALLS=y ++CONFIG_MEMBARRIER=y ++CONFIG_KALLSYMS=y ++CONFIG_KALLSYMS_ALL=y ++CONFIG_KALLSYMS_BASE_RELATIVE=y ++CONFIG_BPF_SYSCALL=y ++CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y ++# CONFIG_BPF_JIT_ALWAYS_ON is not set ++CONFIG_BPF_JIT_DEFAULT_ON=y ++CONFIG_USERFAULTFD=y ++CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y ++CONFIG_RSEQ=y ++# CONFIG_EMBEDDED is not set ++CONFIG_HAVE_PERF_EVENTS=y ++ ++# ++# Kernel Performance Events And Counters ++# ++CONFIG_PERF_EVENTS=y ++# CONFIG_DEBUG_PERF_USE_VMALLOC is not set ++# end of Kernel Performance Events And Counters ++ ++CONFIG_VM_EVENT_COUNTERS=y ++# CONFIG_COMPAT_BRK is not set ++CONFIG_SLAB=y ++# CONFIG_SLUB is not set ++CONFIG_SLAB_MERGE_DEFAULT=y ++# CONFIG_SLAB_FREELIST_RANDOM is not set ++# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set ++CONFIG_PROFILING=y ++CONFIG_TRACEPOINTS=y ++# end of General setup ++ ++CONFIG_ARM64=y ++CONFIG_64BIT=y ++CONFIG_MMU=y ++CONFIG_ARM64_PAGE_SHIFT=12 ++CONFIG_ARM64_CONT_SHIFT=4 ++CONFIG_ARCH_MMAP_RND_BITS_MIN=18 ++CONFIG_ARCH_MMAP_RND_BITS_MAX=33 ++CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 ++CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 ++CONFIG_STACKTRACE_SUPPORT=y ++CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 ++CONFIG_LOCKDEP_SUPPORT=y ++CONFIG_TRACE_IRQFLAGS_SUPPORT=y ++CONFIG_GENERIC_BUG=y ++CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y ++CONFIG_GENERIC_HWEIGHT=y ++CONFIG_GENERIC_CSUM=y ++CONFIG_GENERIC_CALIBRATE_DELAY=y ++CONFIG_ZONE_DMA=y ++CONFIG_ZONE_DMA32=y ++CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y ++CONFIG_SMP=y ++CONFIG_KERNEL_MODE_NEON=y ++CONFIG_FIX_EARLYCON_MEM=y ++CONFIG_PGTABLE_LEVELS=4 ++CONFIG_ARCH_SUPPORTS_UPROBES=y ++CONFIG_ARCH_PROC_KCORE_TEXT=y ++ ++# ++# Platform selection ++# ++# CONFIG_ARCH_ACTIONS is not set ++# CONFIG_ARCH_AGILEX is not set ++# CONFIG_ARCH_SUNXI is not set ++# CONFIG_ARCH_ALPINE is not set ++CONFIG_ARCH_BAIKAL=y ++# CONFIG_ARCH_BCM2835 is not set ++# CONFIG_ARCH_BCM_IPROC is not set ++# CONFIG_ARCH_BERLIN is not set ++# CONFIG_ARCH_BITMAIN is not set ++# CONFIG_ARCH_BRCMSTB is not set ++# CONFIG_ARCH_EXYNOS is not set ++# CONFIG_ARCH_K3 is not set ++# CONFIG_ARCH_LAYERSCAPE is not set ++# CONFIG_ARCH_LG1K is not set ++# CONFIG_ARCH_HISI is not set ++# CONFIG_ARCH_MEDIATEK is not set ++# CONFIG_ARCH_MESON is not set ++# CONFIG_ARCH_MVEBU is not set ++# CONFIG_ARCH_MXC is not set ++# CONFIG_ARCH_QCOM is not set ++# CONFIG_ARCH_REALTEK is not set ++# CONFIG_ARCH_RENESAS is not set ++# CONFIG_ARCH_ROCKCHIP is not set ++# CONFIG_ARCH_S32 is not set ++# CONFIG_ARCH_SEATTLE is not set ++# CONFIG_ARCH_STRATIX10 is not set ++# CONFIG_ARCH_SYNQUACER is not set ++# CONFIG_ARCH_TEGRA is not set ++# CONFIG_ARCH_SPRD is not set ++# CONFIG_ARCH_THUNDER is not set ++# CONFIG_ARCH_THUNDER2 is not set ++# CONFIG_ARCH_UNIPHIER is not set ++# CONFIG_ARCH_VEXPRESS is not set ++# CONFIG_ARCH_XGENE is not set ++# CONFIG_ARCH_ZX is not set ++# CONFIG_ARCH_ZYNQMP is not set ++# end of Platform selection ++ ++# ++# Kernel Features ++# ++ ++# ++# ARM errata workarounds via the alternatives framework ++# ++CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y ++CONFIG_ARM64_ERRATUM_826319=y ++CONFIG_ARM64_ERRATUM_827319=y ++CONFIG_ARM64_ERRATUM_824069=y ++CONFIG_ARM64_ERRATUM_819472=y ++CONFIG_ARM64_ERRATUM_832075=y ++CONFIG_ARM64_ERRATUM_845719=y ++CONFIG_ARM64_ERRATUM_843419=y ++CONFIG_ARM64_ERRATUM_1024718=y ++CONFIG_ARM64_ERRATUM_1418040=y ++CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT_VHE=y ++CONFIG_ARM64_ERRATUM_1165522=y ++CONFIG_ARM64_ERRATUM_1530923=y ++CONFIG_ARM64_ERRATUM_1286807=y ++CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT_NVHE=y ++CONFIG_ARM64_ERRATUM_1319367=y ++CONFIG_ARM64_ERRATUM_1463225=y ++CONFIG_ARM64_ERRATUM_1542419=y ++CONFIG_CAVIUM_ERRATUM_22375=y ++CONFIG_CAVIUM_ERRATUM_23154=y ++CONFIG_CAVIUM_ERRATUM_27456=y ++CONFIG_CAVIUM_ERRATUM_30115=y ++CONFIG_CAVIUM_TX2_ERRATUM_219=y ++CONFIG_QCOM_FALKOR_ERRATUM_1003=y ++CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y ++CONFIG_QCOM_FALKOR_ERRATUM_1009=y ++CONFIG_QCOM_QDF2400_ERRATUM_0065=y ++CONFIG_SOCIONEXT_SYNQUACER_PREITS=y ++CONFIG_HISILICON_ERRATUM_161600802=y ++CONFIG_QCOM_FALKOR_ERRATUM_E1041=y ++CONFIG_FUJITSU_ERRATUM_010001=y ++# end of ARM errata workarounds via the alternatives framework ++ ++CONFIG_ARM64_4K_PAGES=y ++# CONFIG_ARM64_16K_PAGES is not set ++# CONFIG_ARM64_64K_PAGES is not set ++# CONFIG_ARM64_VA_BITS_39 is not set ++CONFIG_ARM64_VA_BITS_48=y ++CONFIG_ARM64_VA_BITS=48 ++CONFIG_ARM64_PA_BITS_48=y ++CONFIG_ARM64_PA_BITS=48 ++# CONFIG_CPU_BIG_ENDIAN is not set ++CONFIG_CPU_LITTLE_ENDIAN=y ++CONFIG_SCHED_MC=y ++# CONFIG_SCHED_SMT is not set ++CONFIG_NR_CPUS=8 ++CONFIG_HOTPLUG_CPU=y ++# CONFIG_NUMA is not set ++CONFIG_HOLES_IN_ZONE=y ++# CONFIG_HZ_100 is not set ++# CONFIG_HZ_250 is not set ++# CONFIG_HZ_300 is not set ++CONFIG_HZ_1000=y ++CONFIG_HZ=1000 ++CONFIG_SCHED_HRTICK=y ++CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y ++CONFIG_ARCH_SPARSEMEM_ENABLE=y ++CONFIG_ARCH_SPARSEMEM_DEFAULT=y ++CONFIG_ARCH_SELECT_MEMORY_MODEL=y ++CONFIG_ARCH_FLATMEM_ENABLE=y ++CONFIG_HAVE_ARCH_PFN_VALID=y ++CONFIG_HW_PERF_EVENTS=y ++CONFIG_SYS_SUPPORTS_HUGETLBFS=y ++CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y ++CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y ++CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y ++CONFIG_SECCOMP=y ++# CONFIG_PARAVIRT is not set ++# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set ++CONFIG_KEXEC=y ++CONFIG_KEXEC_FILE=y ++# CONFIG_KEXEC_SIG is not set ++# CONFIG_CRASH_DUMP is not set ++# CONFIG_XEN is not set ++CONFIG_FORCE_MAX_ZONEORDER=11 ++CONFIG_UNMAP_KERNEL_AT_EL0=y ++CONFIG_HARDEN_BRANCH_PREDICTOR=y ++CONFIG_HARDEN_EL2_VECTORS=y ++CONFIG_ARM64_SSBD=y ++CONFIG_RODATA_FULL_DEFAULT_ENABLED=y ++# CONFIG_ARM64_SW_TTBR0_PAN is not set ++CONFIG_ARM64_TAGGED_ADDR_ABI=y ++CONFIG_COMPAT=y ++CONFIG_KUSER_HELPERS=y ++CONFIG_ARMV8_DEPRECATED=y ++CONFIG_SWP_EMULATION=y ++CONFIG_CP15_BARRIER_EMULATION=y ++CONFIG_SETEND_EMULATION=y ++ ++# ++# ARMv8.1 architectural features ++# ++CONFIG_ARM64_HW_AFDBM=y ++CONFIG_ARM64_PAN=y ++CONFIG_ARM64_LSE_ATOMICS=y ++CONFIG_ARM64_USE_LSE_ATOMICS=y ++CONFIG_ARM64_VHE=y ++# end of ARMv8.1 architectural features ++ ++# ++# ARMv8.2 architectural features ++# ++CONFIG_ARM64_UAO=y ++# CONFIG_ARM64_PMEM is not set ++CONFIG_ARM64_RAS_EXTN=y ++CONFIG_ARM64_CNP=y ++# end of ARMv8.2 architectural features ++ ++# ++# ARMv8.3 architectural features ++# ++CONFIG_ARM64_PTR_AUTH=y ++# end of ARMv8.3 architectural features ++ ++# ++# ARMv8.5 architectural features ++# ++CONFIG_ARM64_E0PD=y ++CONFIG_ARCH_RANDOM=y ++# end of ARMv8.5 architectural features ++ ++CONFIG_ARM64_SVE=y ++CONFIG_ARM64_MODULE_PLTS=y ++# CONFIG_ARM64_PSEUDO_NMI is not set ++# CONFIG_RANDOMIZE_BASE is not set ++# end of Kernel Features ++ ++# ++# Boot options ++# ++CONFIG_CMDLINE="" ++CONFIG_EFI_STUB=y ++CONFIG_EFI=y ++CONFIG_DMI=y ++# end of Boot options ++ ++CONFIG_SYSVIPC_COMPAT=y ++CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y ++ ++# ++# Power management options ++# ++CONFIG_SUSPEND=y ++CONFIG_SUSPEND_FREEZER=y ++CONFIG_HIBERNATE_CALLBACKS=y ++CONFIG_HIBERNATION=y ++CONFIG_PM_STD_PARTITION="" ++CONFIG_PM_SLEEP=y ++CONFIG_PM_SLEEP_SMP=y ++# CONFIG_PM_AUTOSLEEP is not set ++# CONFIG_PM_WAKELOCKS is not set ++CONFIG_PM=y ++# CONFIG_PM_DEBUG is not set ++CONFIG_PM_CLK=y ++# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set ++CONFIG_CPU_PM=y ++# CONFIG_ENERGY_MODEL is not set ++CONFIG_ARCH_HIBERNATION_POSSIBLE=y ++CONFIG_ARCH_HIBERNATION_HEADER=y ++CONFIG_ARCH_SUSPEND_POSSIBLE=y ++# end of Power management options ++ ++# ++# CPU Power Management ++# ++ ++# ++# CPU Idle ++# ++CONFIG_CPU_IDLE=y ++CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y ++CONFIG_CPU_IDLE_GOV_LADDER=y ++CONFIG_CPU_IDLE_GOV_MENU=y ++# CONFIG_CPU_IDLE_GOV_TEO is not set ++CONFIG_DT_IDLE_STATES=y ++ ++# ++# ARM CPU Idle Drivers ++# ++CONFIG_ARM_CPUIDLE=y ++# CONFIG_ARM_PSCI_CPUIDLE is not set ++# end of ARM CPU Idle Drivers ++# end of CPU Idle ++ ++# ++# CPU Frequency scaling ++# ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_GOV_ATTR_SET=y ++CONFIG_CPU_FREQ_GOV_COMMON=y ++# CONFIG_CPU_FREQ_STAT is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set ++CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_POWERSAVE=m ++CONFIG_CPU_FREQ_GOV_USERSPACE=m ++CONFIG_CPU_FREQ_GOV_ONDEMAND=m ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m ++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y ++ ++# ++# CPU frequency scaling drivers ++# ++CONFIG_CPUFREQ_DT=m ++CONFIG_CPUFREQ_DT_PLATDEV=y ++# CONFIG_QORIQ_CPUFREQ is not set ++# end of CPU Frequency scaling ++# end of CPU Power Management ++ ++# ++# Firmware Drivers ++# ++# CONFIG_ARM_SCMI_PROTOCOL is not set ++# CONFIG_ARM_SCPI_PROTOCOL is not set ++# CONFIG_ARM_SDE_INTERFACE is not set ++CONFIG_DMIID=y ++# CONFIG_DMI_SYSFS is not set ++# CONFIG_FW_CFG_SYSFS is not set ++CONFIG_HAVE_ARM_SMCCC=y ++CONFIG_ARM_PSCI_FW=y ++# CONFIG_ARM_PSCI_CHECKER is not set ++# CONFIG_GOOGLE_FIRMWARE is not set ++ ++# ++# EFI (Extensible Firmware Interface) Support ++# ++CONFIG_EFI_VARS=y ++CONFIG_EFI_ESRT=y ++CONFIG_EFI_VARS_PSTORE=y ++# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set ++CONFIG_EFI_PARAMS_FROM_FDT=y ++CONFIG_EFI_RUNTIME_WRAPPERS=y ++CONFIG_EFI_GENERIC_STUB=y ++CONFIG_EFI_ARMSTUB_DTB_LOADER=y ++CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y ++CONFIG_EFI_BOOTLOADER_CONTROL=y ++# CONFIG_EFI_CAPSULE_LOADER is not set ++# CONFIG_EFI_TEST is not set ++# CONFIG_RESET_ATTACK_MITIGATION is not set ++# CONFIG_EFI_DISABLE_PCI_DMA is not set ++# end of EFI (Extensible Firmware Interface) Support ++ ++CONFIG_EFI_EARLYCON=y ++ ++# ++# Tegra firmware driver ++# ++# end of Tegra firmware driver ++# end of Firmware Drivers ++ ++CONFIG_ARCH_SUPPORTS_ACPI=y ++# CONFIG_ACPI is not set ++# CONFIG_VIRTUALIZATION is not set ++# CONFIG_ARM64_CRYPTO is not set ++ ++# ++# General architecture-dependent options ++# ++CONFIG_CRASH_CORE=y ++CONFIG_KEXEC_CORE=y ++CONFIG_KPROBES=y ++CONFIG_JUMP_LABEL=y ++CONFIG_STATIC_KEYS_SELFTEST=y ++CONFIG_UPROBES=y ++CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y ++CONFIG_KRETPROBES=y ++CONFIG_HAVE_KPROBES=y ++CONFIG_HAVE_KRETPROBES=y ++CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y ++CONFIG_HAVE_NMI=y ++CONFIG_HAVE_ARCH_TRACEHOOK=y ++CONFIG_HAVE_DMA_CONTIGUOUS=y ++CONFIG_GENERIC_SMP_IDLE_THREAD=y ++CONFIG_GENERIC_IDLE_POLL_SETUP=y ++CONFIG_ARCH_HAS_FORTIFY_SOURCE=y ++CONFIG_ARCH_HAS_KEEPINITRD=y ++CONFIG_ARCH_HAS_SET_MEMORY=y ++CONFIG_ARCH_HAS_SET_DIRECT_MAP=y ++CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y ++CONFIG_HAVE_ASM_MODVERSIONS=y ++CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y ++CONFIG_HAVE_RSEQ=y ++CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y ++CONFIG_HAVE_CLK=y ++CONFIG_HAVE_HW_BREAKPOINT=y ++CONFIG_HAVE_PERF_REGS=y ++CONFIG_HAVE_PERF_USER_STACK_DUMP=y ++CONFIG_HAVE_ARCH_JUMP_LABEL=y ++CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y ++CONFIG_MMU_GATHER_TABLE_FREE=y ++CONFIG_MMU_GATHER_RCU_TABLE_FREE=y ++CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y ++CONFIG_HAVE_CMPXCHG_LOCAL=y ++CONFIG_HAVE_CMPXCHG_DOUBLE=y ++CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y ++CONFIG_HAVE_ARCH_SECCOMP_FILTER=y ++CONFIG_SECCOMP_FILTER=y ++CONFIG_HAVE_ARCH_STACKLEAK=y ++CONFIG_HAVE_STACKPROTECTOR=y ++CONFIG_CC_HAS_STACKPROTECTOR_NONE=y ++CONFIG_STACKPROTECTOR=y ++CONFIG_STACKPROTECTOR_STRONG=y ++CONFIG_HAVE_CONTEXT_TRACKING=y ++CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y ++CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y ++CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y ++CONFIG_HAVE_ARCH_HUGE_VMAP=y ++CONFIG_HAVE_MOD_ARCH_SPECIFIC=y ++CONFIG_MODULES_USE_ELF_RELA=y ++CONFIG_ARCH_HAS_ELF_RANDOMIZE=y ++CONFIG_HAVE_ARCH_MMAP_RND_BITS=y ++CONFIG_ARCH_MMAP_RND_BITS=18 ++CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y ++CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 ++CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y ++CONFIG_HAVE_COPY_THREAD_TLS=y ++CONFIG_CLONE_BACKWARDS=y ++CONFIG_OLD_SIGSUSPEND3=y ++CONFIG_COMPAT_OLD_SIGACTION=y ++CONFIG_COMPAT_32BIT_TIME=y ++CONFIG_HAVE_ARCH_VMAP_STACK=y ++CONFIG_VMAP_STACK=y ++CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y ++CONFIG_STRICT_KERNEL_RWX=y ++CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y ++CONFIG_STRICT_MODULE_RWX=y ++CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y ++CONFIG_ARCH_USE_MEMREMAP_PROT=y ++# CONFIG_LOCK_EVENT_COUNTS is not set ++ ++# ++# GCOV-based kernel profiling ++# ++# CONFIG_GCOV_KERNEL is not set ++CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y ++# end of GCOV-based kernel profiling ++ ++CONFIG_PLUGIN_HOSTCC="" ++CONFIG_HAVE_GCC_PLUGINS=y ++# end of General architecture-dependent options ++ ++CONFIG_RT_MUTEXES=y ++CONFIG_BASE_SMALL=0 ++CONFIG_MODULES=y ++# CONFIG_MODULE_FORCE_LOAD is not set ++CONFIG_MODULE_UNLOAD=y ++# CONFIG_MODULE_FORCE_UNLOAD is not set ++# CONFIG_MODVERSIONS is not set ++# CONFIG_MODULE_SRCVERSION_ALL is not set ++# CONFIG_MODULE_SIG is not set ++CONFIG_MODULE_COMPRESS=y ++#CONFIG_MODULE_COMPRESS_GZIP is not set ++CONFIG_MODULE_COMPRESS_XZ=y ++# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set ++# CONFIG_UNUSED_SYMBOLS is not set ++# CONFIG_TRIM_UNUSED_KSYMS is not set ++CONFIG_MODULES_TREE_LOOKUP=y ++CONFIG_BLOCK=y ++CONFIG_BLK_RQ_ALLOC_TIME=y ++CONFIG_BLK_SCSI_REQUEST=y ++CONFIG_BLK_CGROUP_RWSTAT=y ++CONFIG_BLK_DEV_BSG=y ++CONFIG_BLK_DEV_BSGLIB=y ++# CONFIG_BLK_DEV_INTEGRITY is not set ++# CONFIG_BLK_DEV_ZONED is not set ++CONFIG_BLK_DEV_THROTTLING=y ++# CONFIG_BLK_DEV_THROTTLING_LOW is not set ++# CONFIG_BLK_CMDLINE_PARSER is not set ++CONFIG_BLK_WBT=y ++CONFIG_BLK_CGROUP_IOLATENCY=y ++CONFIG_BLK_CGROUP_IOCOST=y ++CONFIG_BLK_WBT_MQ=y ++# CONFIG_BLK_DEBUG_FS is not set ++# CONFIG_BLK_SED_OPAL is not set ++ ++# ++# Partition Types ++# ++CONFIG_PARTITION_ADVANCED=y ++# CONFIG_ACORN_PARTITION is not set ++# CONFIG_AIX_PARTITION is not set ++# CONFIG_OSF_PARTITION is not set ++# CONFIG_AMIGA_PARTITION is not set ++# CONFIG_ATARI_PARTITION is not set ++# CONFIG_MAC_PARTITION is not set ++CONFIG_MSDOS_PARTITION=y ++# CONFIG_BSD_DISKLABEL is not set ++# CONFIG_MINIX_SUBPARTITION is not set ++# CONFIG_SOLARIS_X86_PARTITION is not set ++# CONFIG_UNIXWARE_DISKLABEL is not set ++# CONFIG_LDM_PARTITION is not set ++# CONFIG_SGI_PARTITION is not set ++# CONFIG_ULTRIX_PARTITION is not set ++# CONFIG_SUN_PARTITION is not set ++# CONFIG_KARMA_PARTITION is not set ++CONFIG_EFI_PARTITION=y ++# CONFIG_SYSV68_PARTITION is not set ++# CONFIG_CMDLINE_PARTITION is not set ++# end of Partition Types ++ ++CONFIG_BLOCK_COMPAT=y ++CONFIG_BLK_MQ_PCI=y ++CONFIG_BLK_PM=y ++ ++# ++# IO Schedulers ++# ++CONFIG_MQ_IOSCHED_DEADLINE=y ++CONFIG_MQ_IOSCHED_KYBER=y ++CONFIG_IOSCHED_BFQ=y ++CONFIG_BFQ_GROUP_IOSCHED=y ++# CONFIG_BFQ_CGROUP_DEBUG is not set ++# end of IO Schedulers ++ ++CONFIG_UNINLINE_SPIN_UNLOCK=y ++CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y ++CONFIG_MUTEX_SPIN_ON_OWNER=y ++CONFIG_RWSEM_SPIN_ON_OWNER=y ++CONFIG_LOCK_SPIN_ON_OWNER=y ++CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y ++CONFIG_QUEUED_SPINLOCKS=y ++CONFIG_ARCH_USE_QUEUED_RWLOCKS=y ++CONFIG_QUEUED_RWLOCKS=y ++CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y ++CONFIG_FREEZER=y ++ ++# ++# Executable file formats ++# ++CONFIG_BINFMT_ELF=y ++CONFIG_COMPAT_BINFMT_ELF=y ++CONFIG_ELFCORE=y ++CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y ++CONFIG_BINFMT_SCRIPT=y ++CONFIG_BINFMT_MISC=m ++CONFIG_COREDUMP=y ++# end of Executable file formats ++ ++# ++# Memory Management options ++# ++CONFIG_SELECT_MEMORY_MODEL=y ++# CONFIG_FLATMEM_MANUAL is not set ++CONFIG_SPARSEMEM_MANUAL=y ++CONFIG_SPARSEMEM=y ++CONFIG_HAVE_MEMORY_PRESENT=y ++CONFIG_SPARSEMEM_EXTREME=y ++CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y ++CONFIG_SPARSEMEM_VMEMMAP=y ++CONFIG_HAVE_FAST_GUP=y ++CONFIG_ARCH_KEEP_MEMBLOCK=y ++CONFIG_MEMORY_ISOLATION=y ++# CONFIG_MEMORY_HOTPLUG is not set ++CONFIG_SPLIT_PTLOCK_CPUS=4 ++CONFIG_COMPACTION=y ++CONFIG_MIGRATION=y ++CONFIG_CONTIG_ALLOC=y ++CONFIG_PHYS_ADDR_T_64BIT=y ++CONFIG_BOUNCE=y ++CONFIG_KSM=y ++CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 ++CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y ++# CONFIG_MEMORY_FAILURE is not set ++CONFIG_TRANSPARENT_HUGEPAGE=y ++# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set ++CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y ++CONFIG_TRANSPARENT_HUGE_PAGECACHE=y ++# CONFIG_CLEANCACHE is not set ++CONFIG_FRONTSWAP=y ++CONFIG_CMA=y ++# CONFIG_CMA_DEBUG is not set ++# CONFIG_CMA_DEBUGFS is not set ++CONFIG_CMA_AREAS=7 ++CONFIG_ZSWAP=y ++CONFIG_ZPOOL=y ++CONFIG_ZBUD=m ++CONFIG_Z3FOLD=m ++CONFIG_ZSMALLOC=m ++# CONFIG_PGTABLE_MAPPING is not set ++# CONFIG_ZSMALLOC_STAT is not set ++CONFIG_GENERIC_EARLY_IOREMAP=y ++# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set ++# CONFIG_IDLE_PAGE_TRACKING is not set ++CONFIG_ARCH_HAS_PTE_DEVMAP=y ++# CONFIG_PERCPU_STATS is not set ++# CONFIG_GUP_BENCHMARK is not set ++# CONFIG_READ_ONLY_THP_FOR_FS is not set ++CONFIG_ARCH_HAS_PTE_SPECIAL=y ++# end of Memory Management options ++ ++CONFIG_NET=y ++ ++# ++# Networking options ++# ++CONFIG_PACKET=y ++CONFIG_PACKET_DIAG=m ++CONFIG_UNIX=y ++CONFIG_UNIX_SCM=y ++CONFIG_UNIX_DIAG=m ++# CONFIG_TLS is not set ++# CONFIG_XFRM_USER is not set ++# CONFIG_NET_KEY is not set ++# CONFIG_XDP_SOCKETS is not set ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++# CONFIG_IP_ADVANCED_ROUTER is not set ++# CONFIG_IP_PNP is not set ++# CONFIG_NET_IPIP is not set ++# CONFIG_NET_IPGRE_DEMUX is not set ++CONFIG_NET_IP_TUNNEL=m ++# CONFIG_IP_MROUTE is not set ++CONFIG_SYN_COOKIES=y ++# CONFIG_NET_IPVTI is not set ++# CONFIG_NET_FOU is not set ++# CONFIG_NET_FOU_IP_TUNNELS is not set ++# CONFIG_INET_AH is not set ++# CONFIG_INET_ESP is not set ++# CONFIG_INET_IPCOMP is not set ++CONFIG_INET_TUNNEL=m ++CONFIG_INET_DIAG=m ++CONFIG_INET_TCP_DIAG=m ++CONFIG_INET_UDP_DIAG=m ++CONFIG_INET_RAW_DIAG=m ++CONFIG_INET_DIAG_DESTROY=y ++# CONFIG_TCP_CONG_ADVANCED is not set ++CONFIG_TCP_CONG_CUBIC=y ++CONFIG_DEFAULT_TCP_CONG="cubic" ++# CONFIG_TCP_MD5SIG is not set ++CONFIG_IPV6=m ++CONFIG_IPV6_ROUTER_PREF=y ++CONFIG_IPV6_ROUTE_INFO=y ++CONFIG_IPV6_OPTIMISTIC_DAD=y ++# CONFIG_INET6_AH is not set ++# CONFIG_INET6_ESP is not set ++# CONFIG_INET6_IPCOMP is not set ++# CONFIG_IPV6_MIP6 is not set ++CONFIG_INET6_TUNNEL=m ++# CONFIG_IPV6_VTI is not set ++CONFIG_IPV6_SIT=m ++CONFIG_IPV6_SIT_6RD=y ++CONFIG_IPV6_NDISC_NODETYPE=y ++CONFIG_IPV6_TUNNEL=m ++# CONFIG_IPV6_MULTIPLE_TABLES is not set ++# CONFIG_IPV6_MROUTE is not set ++# CONFIG_IPV6_SEG6_LWTUNNEL is not set ++# CONFIG_IPV6_SEG6_HMAC is not set ++# CONFIG_MPTCP is not set ++# CONFIG_NETWORK_SECMARK is not set ++CONFIG_NET_PTP_CLASSIFY=y ++# CONFIG_NETWORK_PHY_TIMESTAMPING is not set ++# CONFIG_NETFILTER is not set ++# CONFIG_BPFILTER is not set ++# CONFIG_IP_DCCP is not set ++# CONFIG_IP_SCTP is not set ++# CONFIG_RDS is not set ++# CONFIG_TIPC is not set ++# CONFIG_ATM is not set ++# CONFIG_L2TP is not set ++CONFIG_STP=m ++CONFIG_GARP=m ++CONFIG_MRP=m ++CONFIG_BRIDGE=m ++CONFIG_BRIDGE_IGMP_SNOOPING=y ++CONFIG_BRIDGE_VLAN_FILTERING=y ++CONFIG_HAVE_NET_DSA=y ++# CONFIG_NET_DSA is not set ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_VLAN_8021Q_MVRP=y ++# CONFIG_DECNET is not set ++CONFIG_LLC=m ++# CONFIG_LLC2 is not set ++# CONFIG_ATALK is not set ++# CONFIG_X25 is not set ++# CONFIG_LAPB is not set ++# CONFIG_PHONET is not set ++# CONFIG_6LOWPAN is not set ++# CONFIG_IEEE802154 is not set ++# CONFIG_NET_SCHED is not set ++# CONFIG_DCB is not set ++# CONFIG_DNS_RESOLVER is not set ++# CONFIG_BATMAN_ADV is not set ++# CONFIG_OPENVSWITCH is not set ++# CONFIG_VSOCKETS is not set ++CONFIG_NETLINK_DIAG=m ++# CONFIG_MPLS is not set ++# CONFIG_NET_NSH is not set ++# CONFIG_HSR is not set ++# CONFIG_NET_SWITCHDEV is not set ++# CONFIG_NET_L3_MASTER_DEV is not set ++# CONFIG_NET_NCSI is not set ++CONFIG_RPS=y ++CONFIG_RFS_ACCEL=y ++CONFIG_XPS=y ++# CONFIG_CGROUP_NET_PRIO is not set ++# CONFIG_CGROUP_NET_CLASSID is not set ++CONFIG_NET_RX_BUSY_POLL=y ++CONFIG_BQL=y ++CONFIG_BPF_JIT=y ++CONFIG_NET_FLOW_LIMIT=y ++ ++# ++# Network testing ++# ++# CONFIG_NET_PKTGEN is not set ++# CONFIG_NET_DROP_MONITOR is not set ++# end of Network testing ++# end of Networking options ++ ++# CONFIG_HAMRADIO is not set ++# CONFIG_CAN is not set ++# CONFIG_BT is not set ++# CONFIG_AF_RXRPC is not set ++# CONFIG_AF_KCM is not set ++# CONFIG_WIRELESS is not set ++# CONFIG_WIMAX is not set ++# CONFIG_RFKILL is not set ++# CONFIG_NET_9P is not set ++# CONFIG_CAIF is not set ++# CONFIG_CEPH_LIB is not set ++# CONFIG_NFC is not set ++# CONFIG_PSAMPLE is not set ++# CONFIG_NET_IFE is not set ++# CONFIG_LWTUNNEL is not set ++CONFIG_DST_CACHE=y ++CONFIG_GRO_CELLS=y ++CONFIG_PAGE_POOL=y ++# CONFIG_FAILOVER is not set ++CONFIG_ETHTOOL_NETLINK=y ++CONFIG_HAVE_EBPF_JIT=y ++ ++# ++# Device Drivers ++# ++CONFIG_ARM_AMBA=y ++CONFIG_HAVE_PCI=y ++CONFIG_PCI=y ++CONFIG_PCI_DOMAINS=y ++CONFIG_PCI_DOMAINS_GENERIC=y ++CONFIG_PCI_SYSCALL=y ++CONFIG_PCIEPORTBUS=y ++CONFIG_HOTPLUG_PCI_PCIE=y ++CONFIG_PCIEAER=y ++# CONFIG_PCIEAER_INJECT is not set ++CONFIG_PCIE_ECRC=y ++CONFIG_PCIEASPM=y ++CONFIG_PCIEASPM_DEFAULT=y ++# CONFIG_PCIEASPM_POWERSAVE is not set ++# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set ++# CONFIG_PCIEASPM_PERFORMANCE is not set ++CONFIG_PCIE_PME=y ++# CONFIG_PCIE_DPC is not set ++CONFIG_PCIE_PTM=y ++# CONFIG_PCIE_BW is not set ++CONFIG_PCI_MSI=y ++CONFIG_PCI_MSI_IRQ_DOMAIN=y ++CONFIG_PCI_QUIRKS=y ++# CONFIG_PCI_DEBUG is not set ++CONFIG_PCI_REALLOC_ENABLE_AUTO=y ++CONFIG_PCI_STUB=m ++# CONFIG_PCI_PF_STUB is not set ++CONFIG_PCI_ATS=y ++CONFIG_PCI_IOV=y ++CONFIG_PCI_PRI=y ++CONFIG_PCI_PASID=y ++CONFIG_PCI_LABEL=y ++CONFIG_HOTPLUG_PCI=y ++# CONFIG_HOTPLUG_PCI_CPCI is not set ++# CONFIG_HOTPLUG_PCI_SHPC is not set ++ ++# ++# PCI controller drivers ++# ++# CONFIG_PCI_FTPCI100 is not set ++# CONFIG_PCI_HOST_GENERIC is not set ++# CONFIG_PCIE_XILINX is not set ++# CONFIG_PCI_XGENE is not set ++# CONFIG_PCIE_ALTERA is not set ++# CONFIG_PCI_HOST_THUNDER_PEM is not set ++# CONFIG_PCI_HOST_THUNDER_ECAM is not set ++CONFIG_PCI_BAIKAL=m ++ ++# ++# DesignWare PCI Core Support ++# ++CONFIG_PCIE_DW=y ++CONFIG_PCIE_DW_HOST=y ++CONFIG_PCIE_DW_PLAT=y ++CONFIG_PCIE_DW_PLAT_HOST=y ++# CONFIG_PCIE_DW_PLAT_EP is not set ++# CONFIG_PCI_HISI is not set ++# CONFIG_PCIE_KIRIN is not set ++# CONFIG_PCI_MESON is not set ++# CONFIG_PCIE_AL is not set ++# end of DesignWare PCI Core Support ++ ++# ++# Cadence PCIe controllers support ++# ++# CONFIG_PCIE_CADENCE_PLAT_HOST is not set ++# CONFIG_PCIE_CADENCE_PLAT_EP is not set ++# end of Cadence PCIe controllers support ++# end of PCI controller drivers ++ ++# ++# PCI Endpoint ++# ++CONFIG_PCI_ENDPOINT=y ++# CONFIG_PCI_ENDPOINT_CONFIGFS is not set ++# CONFIG_PCI_EPF_TEST is not set ++# end of PCI Endpoint ++ ++# ++# PCI switch controller drivers ++# ++# CONFIG_PCI_SW_SWITCHTEC is not set ++# end of PCI switch controller drivers ++ ++# CONFIG_PCCARD is not set ++# CONFIG_RAPIDIO is not set ++ ++# ++# Generic Driver Options ++# ++# CONFIG_UEVENT_HELPER is not set ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_STANDALONE=y ++CONFIG_PREVENT_FIRMWARE_BUILD=y ++ ++# ++# Firmware loader ++# ++CONFIG_FW_LOADER=y ++CONFIG_FW_LOADER_PAGED_BUF=y ++CONFIG_EXTRA_FIRMWARE="" ++# CONFIG_FW_LOADER_USER_HELPER is not set ++CONFIG_FW_LOADER_COMPRESS=y ++CONFIG_FW_CACHE=y ++# end of Firmware loader ++ ++CONFIG_ALLOW_DEV_COREDUMP=y ++# CONFIG_DEBUG_DRIVER is not set ++# CONFIG_DEBUG_DEVRES is not set ++# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set ++# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set ++CONFIG_GENERIC_CPU_AUTOPROBE=y ++CONFIG_GENERIC_CPU_VULNERABILITIES=y ++CONFIG_REGMAP=y ++CONFIG_REGMAP_I2C=y ++CONFIG_REGMAP_SPI=y ++CONFIG_REGMAP_MMIO=y ++CONFIG_DMA_SHARED_BUFFER=y ++# CONFIG_DMA_FENCE_TRACE is not set ++CONFIG_GENERIC_ARCH_TOPOLOGY=y ++# end of Generic Driver Options ++ ++# ++# Bus devices ++# ++# CONFIG_BRCMSTB_GISB_ARB is not set ++# CONFIG_MOXTET is not set ++# CONFIG_SIMPLE_PM_BUS is not set ++# CONFIG_VEXPRESS_CONFIG is not set ++# end of Bus devices ++ ++CONFIG_CONNECTOR=m ++# CONFIG_GNSS is not set ++CONFIG_MTD=m ++# CONFIG_MTD_TESTS is not set ++ ++# ++# Partition parsers ++# ++# CONFIG_MTD_AR7_PARTS is not set ++CONFIG_MTD_CMDLINE_PARTS=m ++CONFIG_MTD_OF_PARTS=m ++# CONFIG_MTD_AFS_PARTS is not set ++# CONFIG_MTD_REDBOOT_PARTS is not set ++# end of Partition parsers ++ ++# ++# User Modules And Translation Layers ++# ++CONFIG_MTD_BLKDEVS=m ++CONFIG_MTD_BLOCK=m ++# CONFIG_MTD_BLOCK_RO is not set ++# CONFIG_FTL is not set ++# CONFIG_NFTL is not set ++# CONFIG_INFTL is not set ++# CONFIG_RFD_FTL is not set ++# CONFIG_SSFDC is not set ++# CONFIG_SM_FTL is not set ++# CONFIG_MTD_OOPS is not set ++# CONFIG_MTD_SWAP is not set ++# CONFIG_MTD_PARTITIONED_MASTER is not set ++ ++# ++# RAM/ROM/Flash chip drivers ++# ++# CONFIG_MTD_CFI is not set ++CONFIG_MTD_JEDECPROBE=m ++CONFIG_MTD_GEN_PROBE=m ++# CONFIG_MTD_CFI_ADV_OPTIONS is not set ++CONFIG_MTD_MAP_BANK_WIDTH_1=y ++CONFIG_MTD_MAP_BANK_WIDTH_2=y ++CONFIG_MTD_MAP_BANK_WIDTH_4=y ++CONFIG_MTD_CFI_I1=y ++CONFIG_MTD_CFI_I2=y ++# CONFIG_MTD_CFI_INTELEXT is not set ++# CONFIG_MTD_CFI_AMDSTD is not set ++# CONFIG_MTD_CFI_STAA is not set ++CONFIG_MTD_CFI_UTIL=m ++# CONFIG_MTD_RAM is not set ++# CONFIG_MTD_ROM is not set ++# CONFIG_MTD_ABSENT is not set ++# end of RAM/ROM/Flash chip drivers ++ ++# ++# Mapping drivers for chip access ++# ++# CONFIG_MTD_COMPLEX_MAPPINGS is not set ++# CONFIG_MTD_PHYSMAP is not set ++# CONFIG_MTD_INTEL_VR_NOR is not set ++# CONFIG_MTD_PLATRAM is not set ++# end of Mapping drivers for chip access ++ ++# ++# Self-contained MTD device drivers ++# ++# CONFIG_MTD_PMC551 is not set ++# CONFIG_MTD_DATAFLASH is not set ++# CONFIG_MTD_MCHP23K256 is not set ++# CONFIG_MTD_SST25L is not set ++# CONFIG_MTD_SLRAM is not set ++# CONFIG_MTD_PHRAM is not set ++# CONFIG_MTD_MTDRAM is not set ++# CONFIG_MTD_BLOCK2MTD is not set ++ ++# ++# Disk-On-Chip Device Drivers ++# ++# CONFIG_MTD_DOCG3 is not set ++# end of Self-contained MTD device drivers ++ ++# CONFIG_MTD_ONENAND is not set ++# CONFIG_MTD_RAW_NAND is not set ++# CONFIG_MTD_SPI_NAND is not set ++ ++# ++# LPDDR & LPDDR2 PCM memory drivers ++# ++# CONFIG_MTD_LPDDR is not set ++# end of LPDDR & LPDDR2 PCM memory drivers ++ ++CONFIG_MTD_SPI_NOR=m ++CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y ++# CONFIG_SPI_CADENCE_QUADSPI is not set ++# CONFIG_SPI_MTK_QUADSPI is not set ++# CONFIG_MTD_UBI is not set ++# CONFIG_MTD_HYPERBUS is not set ++CONFIG_DTC=y ++CONFIG_OF=y ++# CONFIG_OF_UNITTEST is not set ++CONFIG_OF_FLATTREE=y ++CONFIG_OF_EARLY_FLATTREE=y ++CONFIG_OF_KOBJ=y ++CONFIG_OF_ADDRESS=y ++CONFIG_OF_IRQ=y ++CONFIG_OF_NET=y ++CONFIG_OF_MDIO=y ++CONFIG_OF_RESERVED_MEM=y ++# CONFIG_OF_OVERLAY is not set ++# CONFIG_PARPORT is not set ++CONFIG_BLK_DEV=y ++# CONFIG_BLK_DEV_NULL_BLK is not set ++CONFIG_CDROM=m ++# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set ++CONFIG_ZRAM=m ++# CONFIG_ZRAM_WRITEBACK is not set ++# CONFIG_ZRAM_MEMORY_TRACKING is not set ++# CONFIG_BLK_DEV_UMEM is not set ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 ++# CONFIG_BLK_DEV_CRYPTOLOOP is not set ++# CONFIG_BLK_DEV_DRBD is not set ++# CONFIG_BLK_DEV_NBD is not set ++# CONFIG_BLK_DEV_SKD is not set ++# CONFIG_BLK_DEV_SX8 is not set ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_COUNT=8 ++CONFIG_BLK_DEV_RAM_SIZE=16384 ++# CONFIG_CDROM_PKTCDVD is not set ++# CONFIG_ATA_OVER_ETH is not set ++# CONFIG_BLK_DEV_RBD is not set ++# CONFIG_BLK_DEV_RSXX is not set ++ ++# ++# NVME Support ++# ++CONFIG_NVME_CORE=m ++CONFIG_BLK_DEV_NVME=m ++# CONFIG_NVME_MULTIPATH is not set ++# CONFIG_NVME_HWMON is not set ++# CONFIG_NVME_FC is not set ++# CONFIG_NVME_TCP is not set ++# CONFIG_NVME_TARGET is not set ++# end of NVME Support ++ ++# ++# Misc devices ++# ++# CONFIG_AD525X_DPOT is not set ++# CONFIG_DUMMY_IRQ is not set ++# CONFIG_PHANTOM is not set ++# CONFIG_TIFM_CORE is not set ++# CONFIG_ICS932S401 is not set ++# CONFIG_ENCLOSURE_SERVICES is not set ++# CONFIG_HP_ILO is not set ++# CONFIG_APDS9802ALS is not set ++# CONFIG_ISL29003 is not set ++# CONFIG_ISL29020 is not set ++# CONFIG_SENSORS_TSL2550 is not set ++# CONFIG_SENSORS_BH1770 is not set ++# CONFIG_SENSORS_APDS990X is not set ++# CONFIG_HMC6352 is not set ++# CONFIG_DS1682 is not set ++# CONFIG_LATTICE_ECP3_CONFIG is not set ++# CONFIG_SRAM is not set ++# CONFIG_PCI_ENDPOINT_TEST is not set ++# CONFIG_XILINX_SDFEC is not set ++# CONFIG_PVPANIC is not set ++CONFIG_TP_BMC=y ++# CONFIG_C2PORT is not set ++ ++# ++# EEPROM support ++# ++CONFIG_EEPROM_AT24=m ++CONFIG_EEPROM_AT25=m ++# CONFIG_EEPROM_LEGACY is not set ++# CONFIG_EEPROM_MAX6875 is not set ++# CONFIG_EEPROM_93CX6 is not set ++# CONFIG_EEPROM_93XX46 is not set ++# CONFIG_EEPROM_IDT_89HPESX is not set ++# CONFIG_EEPROM_EE1004 is not set ++# end of EEPROM support ++ ++# CONFIG_CB710_CORE is not set ++ ++# ++# Texas Instruments shared transport line discipline ++# ++# CONFIG_TI_ST is not set ++# end of Texas Instruments shared transport line discipline ++ ++# CONFIG_SENSORS_LIS3_SPI is not set ++# CONFIG_SENSORS_LIS3_I2C is not set ++# CONFIG_ALTERA_STAPL is not set ++ ++# ++# Intel MIC & related support ++# ++# CONFIG_VOP_BUS is not set ++# end of Intel MIC & related support ++ ++# CONFIG_GENWQE is not set ++# CONFIG_ECHO is not set ++# CONFIG_MISC_ALCOR_PCI is not set ++# CONFIG_MISC_RTSX_PCI is not set ++# CONFIG_MISC_RTSX_USB is not set ++# CONFIG_HABANA_AI is not set ++# end of Misc devices ++ ++# ++# SCSI device support ++# ++CONFIG_SCSI_MOD=y ++# CONFIG_RAID_ATTRS is not set ++CONFIG_SCSI=y ++CONFIG_SCSI_DMA=y ++# CONFIG_SCSI_PROC_FS is not set ++ ++# ++# SCSI support type (disk, tape, CD-ROM) ++# ++CONFIG_BLK_DEV_SD=y ++# CONFIG_CHR_DEV_ST is not set ++CONFIG_BLK_DEV_SR=m ++CONFIG_BLK_DEV_SR_VENDOR=y ++# CONFIG_CHR_DEV_SG is not set ++# CONFIG_CHR_DEV_SCH is not set ++CONFIG_SCSI_CONSTANTS=y ++# CONFIG_SCSI_LOGGING is not set ++CONFIG_SCSI_SCAN_ASYNC=y ++ ++# ++# SCSI Transports ++# ++# CONFIG_SCSI_SPI_ATTRS is not set ++# CONFIG_SCSI_FC_ATTRS is not set ++# CONFIG_SCSI_ISCSI_ATTRS is not set ++# CONFIG_SCSI_SAS_ATTRS is not set ++# CONFIG_SCSI_SAS_LIBSAS is not set ++# CONFIG_SCSI_SRP_ATTRS is not set ++# end of SCSI Transports ++ ++# CONFIG_SCSI_LOWLEVEL is not set ++# CONFIG_SCSI_DH is not set ++# end of SCSI device support ++ ++CONFIG_HAVE_PATA_PLATFORM=y ++CONFIG_ATA=y ++CONFIG_ATA_VERBOSE_ERROR=y ++CONFIG_SATA_PMP=y ++ ++# ++# Controllers with non-SFF native interface ++# ++CONFIG_SATA_AHCI=y ++CONFIG_SATA_MOBILE_LPM_POLICY=0 ++CONFIG_SATA_AHCI_PLATFORM=y ++# CONFIG_AHCI_CEVA is not set ++# CONFIG_AHCI_QORIQ is not set ++# CONFIG_SATA_INIC162X is not set ++# CONFIG_SATA_ACARD_AHCI is not set ++# CONFIG_SATA_SIL24 is not set ++# CONFIG_ATA_SFF is not set ++CONFIG_MD=y ++CONFIG_BLK_DEV_MD=m ++# CONFIG_MD_LINEAR is not set ++CONFIG_MD_RAID0=m ++CONFIG_MD_RAID1=m ++CONFIG_MD_RAID10=m ++CONFIG_MD_RAID456=m ++# CONFIG_MD_MULTIPATH is not set ++# CONFIG_MD_FAULTY is not set ++# CONFIG_BCACHE is not set ++CONFIG_BLK_DEV_DM_BUILTIN=y ++CONFIG_BLK_DEV_DM=m ++# CONFIG_DM_DEBUG is not set ++CONFIG_DM_BUFIO=m ++# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set ++CONFIG_DM_BIO_PRISON=m ++CONFIG_DM_PERSISTENT_DATA=m ++# CONFIG_DM_UNSTRIPED is not set ++CONFIG_DM_CRYPT=m ++CONFIG_DM_SNAPSHOT=m ++CONFIG_DM_THIN_PROVISIONING=m ++# CONFIG_DM_CACHE is not set ++# CONFIG_DM_WRITECACHE is not set ++# CONFIG_DM_ERA is not set ++# CONFIG_DM_CLONE is not set ++CONFIG_DM_MIRROR=m ++# CONFIG_DM_LOG_USERSPACE is not set ++CONFIG_DM_RAID=m ++CONFIG_DM_ZERO=m ++# CONFIG_DM_MULTIPATH is not set ++# CONFIG_DM_DELAY is not set ++# CONFIG_DM_DUST is not set ++CONFIG_DM_UEVENT=y ++# CONFIG_DM_FLAKEY is not set ++# CONFIG_DM_VERITY is not set ++# CONFIG_DM_SWITCH is not set ++# CONFIG_DM_LOG_WRITES is not set ++# CONFIG_DM_INTEGRITY is not set ++# CONFIG_TARGET_CORE is not set ++# CONFIG_FUSION is not set ++ ++# ++# IEEE 1394 (FireWire) support ++# ++# CONFIG_FIREWIRE is not set ++# CONFIG_FIREWIRE_NOSY is not set ++# end of IEEE 1394 (FireWire) support ++ ++CONFIG_NETDEVICES=y ++CONFIG_MII=y ++CONFIG_NET_CORE=y ++CONFIG_BONDING=m ++CONFIG_DUMMY=m ++# CONFIG_WIREGUARD is not set ++# CONFIG_EQUALIZER is not set ++# CONFIG_NET_FC is not set ++# CONFIG_NET_TEAM is not set ++CONFIG_MACVLAN=m ++CONFIG_MACVTAP=m ++CONFIG_IPVLAN=m ++CONFIG_IPVTAP=m ++# CONFIG_VXLAN is not set ++# CONFIG_GENEVE is not set ++# CONFIG_GTP is not set ++# CONFIG_MACSEC is not set ++# CONFIG_NETCONSOLE is not set ++CONFIG_TUN=m ++CONFIG_TAP=m ++# CONFIG_TUN_VNET_CROSS_LE is not set ++CONFIG_VETH=m ++CONFIG_NLMON=m ++# CONFIG_ARCNET is not set ++ ++# ++# Distributed Switch Architecture drivers ++# ++# end of Distributed Switch Architecture drivers ++ ++CONFIG_ETHERNET=y ++# CONFIG_NET_VENDOR_3COM is not set ++# CONFIG_NET_VENDOR_ADAPTEC is not set ++# CONFIG_NET_VENDOR_AGERE is not set ++# CONFIG_NET_VENDOR_ALACRITECH is not set ++# CONFIG_NET_VENDOR_ALTEON is not set ++# CONFIG_ALTERA_TSE is not set ++# CONFIG_NET_VENDOR_AMAZON is not set ++# CONFIG_NET_VENDOR_AMD is not set ++# CONFIG_NET_VENDOR_AQUANTIA is not set ++# CONFIG_NET_VENDOR_ARC is not set ++# CONFIG_NET_VENDOR_ATHEROS is not set ++# CONFIG_NET_VENDOR_AURORA is not set ++# CONFIG_NET_VENDOR_BROADCOM is not set ++# CONFIG_NET_VENDOR_BROCADE is not set ++# CONFIG_NET_VENDOR_CADENCE is not set ++# CONFIG_NET_VENDOR_CAVIUM is not set ++# CONFIG_NET_VENDOR_CHELSIO is not set ++# CONFIG_NET_VENDOR_CISCO is not set ++# CONFIG_NET_VENDOR_CORTINA is not set ++# CONFIG_DNET is not set ++# CONFIG_NET_VENDOR_DEC is not set ++# CONFIG_NET_VENDOR_DLINK is not set ++# CONFIG_NET_VENDOR_EMULEX is not set ++# CONFIG_NET_VENDOR_EZCHIP is not set ++# CONFIG_NET_VENDOR_GOOGLE is not set ++# CONFIG_NET_VENDOR_HISILICON is not set ++# CONFIG_NET_VENDOR_HUAWEI is not set ++# CONFIG_NET_VENDOR_INTEL is not set ++# CONFIG_JME is not set ++# CONFIG_NET_VENDOR_MARVELL is not set ++# CONFIG_NET_VENDOR_MELLANOX is not set ++# CONFIG_NET_VENDOR_MICREL is not set ++# CONFIG_NET_VENDOR_MICROCHIP is not set ++# CONFIG_NET_VENDOR_MICROSEMI is not set ++# CONFIG_NET_VENDOR_MYRI is not set ++# CONFIG_FEALNX is not set ++# CONFIG_NET_VENDOR_NATSEMI is not set ++# CONFIG_NET_VENDOR_NETERION is not set ++# CONFIG_NET_VENDOR_NETRONOME is not set ++# CONFIG_NET_VENDOR_NI is not set ++# CONFIG_NET_VENDOR_NVIDIA is not set ++# CONFIG_NET_VENDOR_OKI is not set ++# CONFIG_ETHOC is not set ++# CONFIG_NET_VENDOR_PACKET_ENGINES is not set ++# CONFIG_NET_VENDOR_PENSANDO is not set ++# CONFIG_NET_VENDOR_QLOGIC is not set ++# CONFIG_NET_VENDOR_QUALCOMM is not set ++# CONFIG_NET_VENDOR_RDC is not set ++# CONFIG_NET_VENDOR_REALTEK is not set ++# CONFIG_NET_VENDOR_RENESAS is not set ++# CONFIG_NET_VENDOR_ROCKER is not set ++# CONFIG_NET_VENDOR_SAMSUNG is not set ++# CONFIG_NET_VENDOR_SEEQ is not set ++# CONFIG_NET_VENDOR_SOLARFLARE is not set ++# CONFIG_NET_VENDOR_SILAN is not set ++# CONFIG_NET_VENDOR_SIS is not set ++# CONFIG_NET_VENDOR_SMSC is not set ++# CONFIG_NET_VENDOR_SOCIONEXT is not set ++CONFIG_NET_VENDOR_STMICRO=y ++CONFIG_STMMAC_ETH=y ++# CONFIG_STMMAC_SELFTESTS is not set ++CONFIG_STMMAC_PLATFORM=y ++# CONFIG_DWMAC_DWC_QOS_ETH is not set ++CONFIG_DWMAC_GENERIC=y ++CONFIG_DWMAC_BAIKAL=y ++# CONFIG_STMMAC_PCI is not set ++# CONFIG_NET_VENDOR_SUN is not set ++# CONFIG_NET_VENDOR_SYNOPSYS is not set ++# CONFIG_NET_VENDOR_TEHUTI is not set ++# CONFIG_NET_VENDOR_TI is not set ++# CONFIG_NET_VENDOR_VIA is not set ++# CONFIG_NET_VENDOR_WIZNET is not set ++# CONFIG_NET_VENDOR_XILINX is not set ++# CONFIG_FDDI is not set ++# CONFIG_HIPPI is not set ++CONFIG_MDIO_DEVICE=y ++CONFIG_MDIO_BUS=y ++# CONFIG_MDIO_BCM_UNIMAC is not set ++CONFIG_MDIO_BITBANG=m ++# CONFIG_MDIO_BUS_MUX_GPIO is not set ++# CONFIG_MDIO_BUS_MUX_MMIOREG is not set ++# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set ++CONFIG_MDIO_GPIO=m ++# CONFIG_MDIO_HISI_FEMAC is not set ++# CONFIG_MDIO_MSCC_MIIM is not set ++# CONFIG_MDIO_OCTEON is not set ++# CONFIG_MDIO_THUNDER is not set ++CONFIG_PHYLINK=y ++CONFIG_PHYLIB=y ++CONFIG_SWPHY=y ++ ++# ++# MII PHY device drivers ++# ++# CONFIG_SFP is not set ++# CONFIG_ADIN_PHY is not set ++# CONFIG_AMD_PHY is not set ++# CONFIG_AQUANTIA_PHY is not set ++# CONFIG_AX88796B_PHY is not set ++# CONFIG_BCM7XXX_PHY is not set ++# CONFIG_BCM87XX_PHY is not set ++# CONFIG_BROADCOM_PHY is not set ++# CONFIG_BCM84881_PHY is not set ++# CONFIG_CICADA_PHY is not set ++# CONFIG_CORTINA_PHY is not set ++# CONFIG_DAVICOM_PHY is not set ++# CONFIG_DP83822_PHY is not set ++# CONFIG_DP83TC811_PHY is not set ++# CONFIG_DP83848_PHY is not set ++# CONFIG_DP83867_PHY is not set ++# CONFIG_DP83869_PHY is not set ++CONFIG_FIXED_PHY=y ++# CONFIG_ICPLUS_PHY is not set ++# CONFIG_INTEL_XWAY_PHY is not set ++# CONFIG_LSI_ET1011C_PHY is not set ++# CONFIG_LXT_PHY is not set ++CONFIG_MARVELL_PHY=m ++# CONFIG_MARVELL_10G_PHY is not set ++CONFIG_MICREL_PHY=y ++# CONFIG_MICROCHIP_PHY is not set ++# CONFIG_MICROCHIP_T1_PHY is not set ++# CONFIG_MICROSEMI_PHY is not set ++# CONFIG_NATIONAL_PHY is not set ++# CONFIG_NXP_TJA11XX_PHY is not set ++# CONFIG_QSEMI_PHY is not set ++CONFIG_REALTEK_PHY=m ++# CONFIG_RENESAS_PHY is not set ++# CONFIG_ROCKCHIP_PHY is not set ++# CONFIG_SMSC_PHY is not set ++# CONFIG_STE10XP is not set ++# CONFIG_TERANETICS_PHY is not set ++# CONFIG_VITESSE_PHY is not set ++# CONFIG_XILINX_GMII2RGMII is not set ++# CONFIG_MICREL_KS8995MA is not set ++CONFIG_PPP=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_DEFLATE=m ++# CONFIG_PPP_FILTER is not set ++CONFIG_PPP_MPPE=m ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOE=m ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++# CONFIG_SLIP is not set ++CONFIG_SLHC=m ++# CONFIG_USB_NET_DRIVERS is not set ++# CONFIG_WLAN is not set ++ ++# ++# Enable WiMAX (Networking options) to see the WiMAX drivers ++# ++# CONFIG_WAN is not set ++# CONFIG_VMXNET3 is not set ++# CONFIG_NETDEVSIM is not set ++# CONFIG_NET_FAILOVER is not set ++# CONFIG_ISDN is not set ++# CONFIG_NVM is not set ++ ++# ++# Input device support ++# ++CONFIG_INPUT=y ++# CONFIG_INPUT_FF_MEMLESS is not set ++# CONFIG_INPUT_POLLDEV is not set ++# CONFIG_INPUT_SPARSEKMAP is not set ++# CONFIG_INPUT_MATRIXKMAP is not set ++ ++# ++# Userland interfaces ++# ++CONFIG_INPUT_MOUSEDEV=y ++CONFIG_INPUT_MOUSEDEV_PSAUX=y ++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 ++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 ++# CONFIG_INPUT_JOYDEV is not set ++CONFIG_INPUT_EVDEV=m ++# CONFIG_INPUT_EVBUG is not set ++ ++# ++# Input Device Drivers ++# ++CONFIG_INPUT_KEYBOARD=y ++# CONFIG_KEYBOARD_ADP5588 is not set ++# CONFIG_KEYBOARD_ADP5589 is not set ++CONFIG_KEYBOARD_ATKBD=m ++# CONFIG_KEYBOARD_QT1050 is not set ++# CONFIG_KEYBOARD_QT1070 is not set ++# CONFIG_KEYBOARD_QT2160 is not set ++# CONFIG_KEYBOARD_DLINK_DIR685 is not set ++# CONFIG_KEYBOARD_LKKBD is not set ++# CONFIG_KEYBOARD_GPIO is not set ++# CONFIG_KEYBOARD_GPIO_POLLED is not set ++# CONFIG_KEYBOARD_TCA6416 is not set ++# CONFIG_KEYBOARD_TCA8418 is not set ++# CONFIG_KEYBOARD_MATRIX is not set ++# CONFIG_KEYBOARD_LM8333 is not set ++# CONFIG_KEYBOARD_MAX7359 is not set ++# CONFIG_KEYBOARD_MCS is not set ++# CONFIG_KEYBOARD_MPR121 is not set ++# CONFIG_KEYBOARD_NEWTON is not set ++# CONFIG_KEYBOARD_OPENCORES is not set ++# CONFIG_KEYBOARD_SAMSUNG is not set ++# CONFIG_KEYBOARD_STOWAWAY is not set ++# CONFIG_KEYBOARD_SUNKBD is not set ++# CONFIG_KEYBOARD_OMAP4 is not set ++# CONFIG_KEYBOARD_XTKBD is not set ++# CONFIG_KEYBOARD_CAP11XX is not set ++# CONFIG_KEYBOARD_BCM is not set ++CONFIG_INPUT_MOUSE=y ++CONFIG_MOUSE_PS2=m ++CONFIG_MOUSE_PS2_ALPS=y ++CONFIG_MOUSE_PS2_BYD=y ++CONFIG_MOUSE_PS2_LOGIPS2PP=y ++CONFIG_MOUSE_PS2_SYNAPTICS=y ++CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y ++CONFIG_MOUSE_PS2_CYPRESS=y ++CONFIG_MOUSE_PS2_TRACKPOINT=y ++CONFIG_MOUSE_PS2_FOCALTECH=y ++CONFIG_MOUSE_PS2_SMBUS=y ++# CONFIG_MOUSE_SERIAL is not set ++# CONFIG_MOUSE_APPLETOUCH is not set ++# CONFIG_MOUSE_BCM5974 is not set ++# CONFIG_MOUSE_CYAPA is not set ++# CONFIG_MOUSE_ELAN_I2C is not set ++# CONFIG_MOUSE_VSXXXAA is not set ++# CONFIG_MOUSE_GPIO is not set ++# CONFIG_MOUSE_SYNAPTICS_I2C is not set ++# CONFIG_MOUSE_SYNAPTICS_USB is not set ++# CONFIG_INPUT_JOYSTICK is not set ++# CONFIG_INPUT_TABLET is not set ++# CONFIG_INPUT_TOUCHSCREEN is not set ++# CONFIG_INPUT_MISC is not set ++# CONFIG_RMI4_CORE is not set ++ ++# ++# Hardware I/O ports ++# ++CONFIG_SERIO=y ++CONFIG_SERIO_SERPORT=y ++# CONFIG_SERIO_AMBAKMI is not set ++# CONFIG_SERIO_PCIPS2 is not set ++CONFIG_SERIO_LIBPS2=m ++# CONFIG_SERIO_RAW is not set ++# CONFIG_SERIO_ALTERA_PS2 is not set ++# CONFIG_SERIO_PS2MULT is not set ++# CONFIG_SERIO_ARC_PS2 is not set ++# CONFIG_SERIO_APBPS2 is not set ++CONFIG_SERIO_TPLATFORMS=m ++# CONFIG_SERIO_GPIO_PS2 is not set ++# CONFIG_USERIO is not set ++# CONFIG_GAMEPORT is not set ++# end of Hardware I/O ports ++# end of Input device support ++ ++# ++# Character devices ++# ++CONFIG_TTY=y ++CONFIG_VT=y ++CONFIG_CONSOLE_TRANSLATIONS=y ++CONFIG_VT_CONSOLE=y ++CONFIG_VT_CONSOLE_SLEEP=y ++CONFIG_HW_CONSOLE=y ++CONFIG_VT_HW_CONSOLE_BINDING=y ++CONFIG_UNIX98_PTYS=y ++CONFIG_LEGACY_PTYS=y ++CONFIG_LEGACY_PTY_COUNT=256 ++# CONFIG_SERIAL_NONSTANDARD is not set ++# CONFIG_NOZOMI is not set ++# CONFIG_N_GSM is not set ++# CONFIG_TRACE_SINK is not set ++# CONFIG_NULL_TTY is not set ++CONFIG_LDISC_AUTOLOAD=y ++CONFIG_DEVMEM=y ++ ++# ++# Serial drivers ++# ++CONFIG_SERIAL_EARLYCON=y ++CONFIG_SERIAL_8250=y ++CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y ++# CONFIG_SERIAL_8250_16550A_VARIANTS is not set ++# CONFIG_SERIAL_8250_FINTEK is not set ++CONFIG_SERIAL_8250_CONSOLE=y ++CONFIG_SERIAL_8250_DMA=y ++CONFIG_SERIAL_8250_PCI=y ++CONFIG_SERIAL_8250_EXAR=y ++CONFIG_SERIAL_8250_NR_UARTS=2 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=2 ++CONFIG_SERIAL_8250_EXTENDED=y ++# CONFIG_SERIAL_8250_MANY_PORTS is not set ++# CONFIG_SERIAL_8250_ASPEED_VUART is not set ++# CONFIG_SERIAL_8250_SHARE_IRQ is not set ++# CONFIG_SERIAL_8250_DETECT_IRQ is not set ++# CONFIG_SERIAL_8250_RSA is not set ++CONFIG_SERIAL_8250_DWLIB=y ++CONFIG_SERIAL_8250_FSL=y ++CONFIG_SERIAL_8250_DW=y ++# CONFIG_SERIAL_8250_RT288X is not set ++CONFIG_SERIAL_OF_PLATFORM=y ++ ++# ++# Non-8250 serial port support ++# ++# CONFIG_SERIAL_AMBA_PL010 is not set ++# CONFIG_SERIAL_AMBA_PL011 is not set ++# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set ++# CONFIG_SERIAL_KGDB_NMI is not set ++# CONFIG_SERIAL_MAX3100 is not set ++# CONFIG_SERIAL_MAX310X is not set ++# CONFIG_SERIAL_UARTLITE is not set ++CONFIG_SERIAL_CORE=y ++CONFIG_SERIAL_CORE_CONSOLE=y ++CONFIG_CONSOLE_POLL=y ++# CONFIG_SERIAL_JSM is not set ++# CONFIG_SERIAL_SIFIVE is not set ++# CONFIG_SERIAL_SCCNXP is not set ++# CONFIG_SERIAL_SC16IS7XX is not set ++# CONFIG_SERIAL_ALTERA_JTAGUART is not set ++# CONFIG_SERIAL_ALTERA_UART is not set ++# CONFIG_SERIAL_IFX6X60 is not set ++# CONFIG_SERIAL_XILINX_PS_UART is not set ++# CONFIG_SERIAL_ARC is not set ++# CONFIG_SERIAL_RP2 is not set ++# CONFIG_SERIAL_FSL_LPUART is not set ++# CONFIG_SERIAL_FSL_LINFLEXUART is not set ++# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set ++# end of Serial drivers ++ ++CONFIG_SERIAL_MCTRL_GPIO=y ++# CONFIG_SERIAL_DEV_BUS is not set ++# CONFIG_HVC_DCC is not set ++# CONFIG_IPMI_HANDLER is not set ++CONFIG_HW_RANDOM=m ++# CONFIG_HW_RANDOM_TIMERIOMEM is not set ++# CONFIG_HW_RANDOM_CAVIUM is not set ++# CONFIG_APPLICOM is not set ++# CONFIG_RAW_DRIVER is not set ++# CONFIG_TCG_TPM is not set ++CONFIG_DEVPORT=y ++# CONFIG_XILLYBUS is not set ++# end of Character devices ++ ++# CONFIG_RANDOM_TRUST_BOOTLOADER is not set ++ ++# ++# I2C support ++# ++CONFIG_I2C=y ++CONFIG_I2C_BOARDINFO=y ++CONFIG_I2C_COMPAT=y ++CONFIG_I2C_CHARDEV=y ++CONFIG_I2C_MUX=m ++ ++# ++# Multiplexer I2C Chip support ++# ++# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set ++# CONFIG_I2C_MUX_GPIO is not set ++# CONFIG_I2C_MUX_GPMUX is not set ++# CONFIG_I2C_MUX_LTC4306 is not set ++# CONFIG_I2C_MUX_PCA9541 is not set ++# CONFIG_I2C_MUX_PCA954x is not set ++# CONFIG_I2C_MUX_PINCTRL is not set ++# CONFIG_I2C_MUX_REG is not set ++# CONFIG_I2C_DEMUX_PINCTRL is not set ++# CONFIG_I2C_MUX_MLXCPLD is not set ++# end of Multiplexer I2C Chip support ++ ++CONFIG_I2C_HELPER_AUTO=y ++CONFIG_I2C_ALGOBIT=y ++ ++# ++# I2C Hardware Bus support ++# ++ ++# ++# PC SMBus host controller drivers ++# ++# CONFIG_I2C_ALI1535 is not set ++# CONFIG_I2C_ALI1563 is not set ++# CONFIG_I2C_ALI15X3 is not set ++# CONFIG_I2C_AMD756 is not set ++# CONFIG_I2C_AMD8111 is not set ++# CONFIG_I2C_I801 is not set ++# CONFIG_I2C_ISCH is not set ++# CONFIG_I2C_PIIX4 is not set ++# CONFIG_I2C_NFORCE2 is not set ++# CONFIG_I2C_NVIDIA_GPU is not set ++# CONFIG_I2C_SIS5595 is not set ++# CONFIG_I2C_SIS630 is not set ++# CONFIG_I2C_SIS96X is not set ++# CONFIG_I2C_VIA is not set ++# CONFIG_I2C_VIAPRO is not set ++ ++# ++# I2C system bus drivers (mostly embedded / system-on-chip) ++# ++# CONFIG_I2C_CADENCE is not set ++# CONFIG_I2C_CBUS_GPIO is not set ++CONFIG_I2C_DESIGNWARE_CORE=y ++CONFIG_I2C_DESIGNWARE_PLATFORM=y ++# CONFIG_I2C_DESIGNWARE_SLAVE is not set ++# CONFIG_I2C_DESIGNWARE_PCI is not set ++# CONFIG_I2C_EMEV2 is not set ++# CONFIG_I2C_GPIO is not set ++# CONFIG_I2C_NOMADIK is not set ++# CONFIG_I2C_OCORES is not set ++# CONFIG_I2C_PCA_PLATFORM is not set ++# CONFIG_I2C_RK3X is not set ++# CONFIG_I2C_SIMTEC is not set ++# CONFIG_I2C_THUNDERX is not set ++# CONFIG_I2C_XILINX is not set ++ ++# ++# External I2C/SMBus adapter drivers ++# ++# CONFIG_I2C_DIOLAN_U2C is not set ++# CONFIG_I2C_ROBOTFUZZ_OSIF is not set ++# CONFIG_I2C_TAOS_EVM is not set ++# CONFIG_I2C_TINY_USB is not set ++ ++# ++# Other I2C/SMBus bus drivers ++# ++# end of I2C Hardware Bus support ++ ++# CONFIG_I2C_STUB is not set ++# CONFIG_I2C_SLAVE is not set ++# CONFIG_I2C_DEBUG_CORE is not set ++# CONFIG_I2C_DEBUG_ALGO is not set ++# CONFIG_I2C_DEBUG_BUS is not set ++# end of I2C support ++ ++# CONFIG_I3C is not set ++CONFIG_SPI=y ++# CONFIG_SPI_DEBUG is not set ++CONFIG_SPI_MASTER=y ++CONFIG_SPI_MEM=y ++ ++# ++# SPI Master Controller Drivers ++# ++# CONFIG_SPI_ALTERA is not set ++# CONFIG_SPI_AXI_SPI_ENGINE is not set ++# CONFIG_SPI_BITBANG is not set ++# CONFIG_SPI_CADENCE is not set ++CONFIG_SPI_DESIGNWARE=y ++# CONFIG_SPI_DW_PCI is not set ++CONFIG_SPI_DW_MMIO=y ++# CONFIG_SPI_NXP_FLEXSPI is not set ++# CONFIG_SPI_GPIO is not set ++# CONFIG_SPI_FSL_SPI is not set ++# CONFIG_SPI_OC_TINY is not set ++# CONFIG_SPI_PL022 is not set ++# CONFIG_SPI_PXA2XX is not set ++# CONFIG_SPI_ROCKCHIP is not set ++# CONFIG_SPI_SC18IS602 is not set ++# CONFIG_SPI_SIFIVE is not set ++# CONFIG_SPI_MXIC is not set ++# CONFIG_SPI_THUNDERX is not set ++# CONFIG_SPI_XCOMM is not set ++# CONFIG_SPI_XILINX is not set ++# CONFIG_SPI_ZYNQMP_GQSPI is not set ++ ++# ++# SPI Protocol Masters ++# ++CONFIG_SPI_SPIDEV=y ++# CONFIG_SPI_LOOPBACK_TEST is not set ++# CONFIG_SPI_TLE62X0 is not set ++# CONFIG_SPI_SLAVE is not set ++# CONFIG_SPMI is not set ++# CONFIG_HSI is not set ++CONFIG_PPS=y ++# CONFIG_PPS_DEBUG is not set ++ ++# ++# PPS clients support ++# ++# CONFIG_PPS_CLIENT_KTIMER is not set ++# CONFIG_PPS_CLIENT_LDISC is not set ++# CONFIG_PPS_CLIENT_GPIO is not set ++ ++# ++# PPS generators support ++# ++ ++# ++# PTP clock support ++# ++CONFIG_PTP_1588_CLOCK=y ++ ++# ++# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. ++# ++# CONFIG_PTP_1588_CLOCK_IDTCM is not set ++# end of PTP clock support ++ ++CONFIG_PINCTRL=y ++CONFIG_PINCONF=y ++CONFIG_GENERIC_PINCONF=y ++# CONFIG_DEBUG_PINCTRL is not set ++# CONFIG_PINCTRL_AMD is not set ++# CONFIG_PINCTRL_MCP23S08 is not set ++# CONFIG_PINCTRL_SINGLE is not set ++# CONFIG_PINCTRL_SX150X is not set ++# CONFIG_PINCTRL_STMFX is not set ++# CONFIG_PINCTRL_OCELOT is not set ++# CONFIG_PINCTRL_EQUILIBRIUM is not set ++CONFIG_GPIOLIB=y ++CONFIG_GPIOLIB_FASTPATH_LIMIT=512 ++CONFIG_OF_GPIO=y ++CONFIG_GPIOLIB_IRQCHIP=y ++# CONFIG_DEBUG_GPIO is not set ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_GENERIC=y ++ ++# ++# Memory mapped GPIO drivers ++# ++# CONFIG_GPIO_74XX_MMIO is not set ++# CONFIG_GPIO_ALTERA is not set ++# CONFIG_GPIO_CADENCE is not set ++CONFIG_GPIO_DWAPB=y ++# CONFIG_GPIO_EXAR is not set ++# CONFIG_GPIO_FTGPIO010 is not set ++CONFIG_GPIO_GENERIC_PLATFORM=y ++# CONFIG_GPIO_GRGPIO is not set ++# CONFIG_GPIO_HLWD is not set ++# CONFIG_GPIO_LOGICVC is not set ++# CONFIG_GPIO_MB86S7X is not set ++# CONFIG_GPIO_PL061 is not set ++# CONFIG_GPIO_SAMA5D2_PIOBU is not set ++# CONFIG_GPIO_SIFIVE is not set ++# CONFIG_GPIO_SYSCON is not set ++# CONFIG_GPIO_XGENE is not set ++# CONFIG_GPIO_XILINX is not set ++# CONFIG_GPIO_AMD_FCH is not set ++# end of Memory mapped GPIO drivers ++ ++# ++# I2C GPIO expanders ++# ++# CONFIG_GPIO_ADP5588 is not set ++# CONFIG_GPIO_ADNP is not set ++# CONFIG_GPIO_GW_PLD is not set ++# CONFIG_GPIO_MAX7300 is not set ++# CONFIG_GPIO_MAX732X is not set ++# CONFIG_GPIO_PCA953X is not set ++CONFIG_GPIO_PCF857X=y ++# CONFIG_GPIO_TPIC2810 is not set ++# end of I2C GPIO expanders ++ ++# ++# MFD GPIO expanders ++# ++# end of MFD GPIO expanders ++ ++# ++# PCI GPIO expanders ++# ++# CONFIG_GPIO_BT8XX is not set ++# CONFIG_GPIO_PCI_IDIO_16 is not set ++# CONFIG_GPIO_PCIE_IDIO_24 is not set ++# CONFIG_GPIO_RDC321X is not set ++# end of PCI GPIO expanders ++ ++# ++# SPI GPIO expanders ++# ++# CONFIG_GPIO_74X164 is not set ++# CONFIG_GPIO_MAX3191X is not set ++# CONFIG_GPIO_MAX7301 is not set ++# CONFIG_GPIO_MC33880 is not set ++# CONFIG_GPIO_PISOSR is not set ++# CONFIG_GPIO_XRA1403 is not set ++# end of SPI GPIO expanders ++ ++# ++# USB GPIO expanders ++# ++# end of USB GPIO expanders ++ ++# CONFIG_GPIO_MOCKUP is not set ++# CONFIG_W1 is not set ++# CONFIG_POWER_AVS is not set ++CONFIG_POWER_RESET=y ++# CONFIG_POWER_RESET_BRCMSTB is not set ++# CONFIG_POWER_RESET_GPIO is not set ++# CONFIG_POWER_RESET_GPIO_RESTART is not set ++# CONFIG_POWER_RESET_LTC2952 is not set ++# CONFIG_POWER_RESET_RESTART is not set ++# CONFIG_POWER_RESET_XGENE is not set ++# CONFIG_POWER_RESET_SYSCON is not set ++# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set ++# CONFIG_SYSCON_REBOOT_MODE is not set ++# CONFIG_NVMEM_REBOOT_MODE is not set ++CONFIG_POWER_SUPPLY=y ++# CONFIG_POWER_SUPPLY_DEBUG is not set ++CONFIG_POWER_SUPPLY_HWMON=y ++# CONFIG_PDA_POWER is not set ++# CONFIG_TEST_POWER is not set ++# CONFIG_CHARGER_ADP5061 is not set ++# CONFIG_BATTERY_DS2780 is not set ++# CONFIG_BATTERY_DS2781 is not set ++# CONFIG_BATTERY_DS2782 is not set ++# CONFIG_BATTERY_SBS is not set ++# CONFIG_CHARGER_SBS is not set ++# CONFIG_MANAGER_SBS is not set ++# CONFIG_BATTERY_BQ27XXX is not set ++# CONFIG_BATTERY_MAX17040 is not set ++# CONFIG_BATTERY_MAX17042 is not set ++# CONFIG_CHARGER_MAX8903 is not set ++# CONFIG_CHARGER_LP8727 is not set ++# CONFIG_CHARGER_GPIO is not set ++# CONFIG_CHARGER_LT3651 is not set ++# CONFIG_CHARGER_DETECTOR_MAX14656 is not set ++# CONFIG_CHARGER_BQ2415X is not set ++# CONFIG_CHARGER_BQ24257 is not set ++# CONFIG_CHARGER_BQ24735 is not set ++# CONFIG_CHARGER_BQ25890 is not set ++# CONFIG_CHARGER_SMB347 is not set ++# CONFIG_BATTERY_GAUGE_LTC2941 is not set ++# CONFIG_CHARGER_RT9455 is not set ++CONFIG_HWMON=y ++# CONFIG_HWMON_DEBUG_CHIP is not set ++ ++# ++# Native drivers ++# ++# CONFIG_SENSORS_AD7314 is not set ++# CONFIG_SENSORS_AD7414 is not set ++# CONFIG_SENSORS_AD7418 is not set ++# CONFIG_SENSORS_ADM1021 is not set ++# CONFIG_SENSORS_ADM1025 is not set ++# CONFIG_SENSORS_ADM1026 is not set ++# CONFIG_SENSORS_ADM1029 is not set ++# CONFIG_SENSORS_ADM1031 is not set ++# CONFIG_SENSORS_ADM1177 is not set ++# CONFIG_SENSORS_ADM9240 is not set ++# CONFIG_SENSORS_ADT7310 is not set ++# CONFIG_SENSORS_ADT7410 is not set ++# CONFIG_SENSORS_ADT7411 is not set ++# CONFIG_SENSORS_ADT7462 is not set ++# CONFIG_SENSORS_ADT7470 is not set ++# CONFIG_SENSORS_ADT7475 is not set ++# CONFIG_SENSORS_AS370 is not set ++# CONFIG_SENSORS_ASC7621 is not set ++# CONFIG_SENSORS_ASPEED is not set ++# CONFIG_SENSORS_ATXP1 is not set ++CONFIG_SENSORS_BT1_PVT=m ++# CONFIG_SENSORS_DRIVETEMP is not set ++# CONFIG_SENSORS_DS620 is not set ++# CONFIG_SENSORS_DS1621 is not set ++# CONFIG_SENSORS_I5K_AMB is not set ++# CONFIG_SENSORS_F71805F is not set ++# CONFIG_SENSORS_F71882FG is not set ++# CONFIG_SENSORS_F75375S is not set ++# CONFIG_SENSORS_FTSTEUTATES is not set ++# CONFIG_SENSORS_GL518SM is not set ++# CONFIG_SENSORS_GL520SM is not set ++# CONFIG_SENSORS_G760A is not set ++# CONFIG_SENSORS_G762 is not set ++# CONFIG_SENSORS_GPIO_FAN is not set ++# CONFIG_SENSORS_HIH6130 is not set ++# CONFIG_SENSORS_IT87 is not set ++# CONFIG_SENSORS_JC42 is not set ++# CONFIG_SENSORS_POWR1220 is not set ++# CONFIG_SENSORS_LINEAGE is not set ++# CONFIG_SENSORS_LTC2945 is not set ++# CONFIG_SENSORS_LTC2947_I2C is not set ++# CONFIG_SENSORS_LTC2947_SPI is not set ++# CONFIG_SENSORS_LTC2990 is not set ++# CONFIG_SENSORS_LTC4151 is not set ++# CONFIG_SENSORS_LTC4215 is not set ++# CONFIG_SENSORS_LTC4222 is not set ++# CONFIG_SENSORS_LTC4245 is not set ++# CONFIG_SENSORS_LTC4260 is not set ++# CONFIG_SENSORS_LTC4261 is not set ++# CONFIG_SENSORS_MAX1111 is not set ++# CONFIG_SENSORS_MAX16065 is not set ++# CONFIG_SENSORS_MAX1619 is not set ++# CONFIG_SENSORS_MAX1668 is not set ++# CONFIG_SENSORS_MAX197 is not set ++# CONFIG_SENSORS_MAX31722 is not set ++# CONFIG_SENSORS_MAX31730 is not set ++# CONFIG_SENSORS_MAX6621 is not set ++# CONFIG_SENSORS_MAX6639 is not set ++# CONFIG_SENSORS_MAX6642 is not set ++# CONFIG_SENSORS_MAX6650 is not set ++# CONFIG_SENSORS_MAX6697 is not set ++# CONFIG_SENSORS_MAX31790 is not set ++# CONFIG_SENSORS_MCP3021 is not set ++# CONFIG_SENSORS_TC654 is not set ++# CONFIG_SENSORS_ADCXX is not set ++# CONFIG_SENSORS_LM63 is not set ++# CONFIG_SENSORS_LM70 is not set ++# CONFIG_SENSORS_LM73 is not set ++# CONFIG_SENSORS_LM75 is not set ++# CONFIG_SENSORS_LM77 is not set ++# CONFIG_SENSORS_LM78 is not set ++# CONFIG_SENSORS_LM80 is not set ++# CONFIG_SENSORS_LM83 is not set ++# CONFIG_SENSORS_LM85 is not set ++# CONFIG_SENSORS_LM87 is not set ++# CONFIG_SENSORS_LM90 is not set ++# CONFIG_SENSORS_LM92 is not set ++# CONFIG_SENSORS_LM93 is not set ++# CONFIG_SENSORS_LM95234 is not set ++# CONFIG_SENSORS_LM95241 is not set ++# CONFIG_SENSORS_LM95245 is not set ++# CONFIG_SENSORS_PC87360 is not set ++# CONFIG_SENSORS_PC87427 is not set ++# CONFIG_SENSORS_NTC_THERMISTOR is not set ++# CONFIG_SENSORS_NCT6683 is not set ++# CONFIG_SENSORS_NCT6775 is not set ++# CONFIG_SENSORS_NCT7802 is not set ++# CONFIG_SENSORS_NCT7904 is not set ++# CONFIG_SENSORS_NPCM7XX is not set ++# CONFIG_SENSORS_OCC_P8_I2C is not set ++# CONFIG_SENSORS_PCF8591 is not set ++# CONFIG_PMBUS is not set ++# CONFIG_SENSORS_SHT15 is not set ++# CONFIG_SENSORS_SHT21 is not set ++# CONFIG_SENSORS_SHT3x is not set ++# CONFIG_SENSORS_SHTC1 is not set ++# CONFIG_SENSORS_SIS5595 is not set ++# CONFIG_SENSORS_DME1737 is not set ++# CONFIG_SENSORS_EMC1403 is not set ++# CONFIG_SENSORS_EMC2103 is not set ++# CONFIG_SENSORS_EMC6W201 is not set ++# CONFIG_SENSORS_SMSC47M1 is not set ++# CONFIG_SENSORS_SMSC47M192 is not set ++# CONFIG_SENSORS_SMSC47B397 is not set ++# CONFIG_SENSORS_SCH5627 is not set ++# CONFIG_SENSORS_SCH5636 is not set ++# CONFIG_SENSORS_STTS751 is not set ++# CONFIG_SENSORS_SMM665 is not set ++# CONFIG_SENSORS_ADC128D818 is not set ++# CONFIG_SENSORS_ADS7828 is not set ++# CONFIG_SENSORS_ADS7871 is not set ++# CONFIG_SENSORS_AMC6821 is not set ++# CONFIG_SENSORS_INA209 is not set ++# CONFIG_SENSORS_INA2XX is not set ++# CONFIG_SENSORS_INA3221 is not set ++# CONFIG_SENSORS_TC74 is not set ++# CONFIG_SENSORS_THMC50 is not set ++# CONFIG_SENSORS_TMP102 is not set ++# CONFIG_SENSORS_TMP103 is not set ++# CONFIG_SENSORS_TMP108 is not set ++# CONFIG_SENSORS_TMP401 is not set ++# CONFIG_SENSORS_TMP421 is not set ++# CONFIG_SENSORS_TMP513 is not set ++# CONFIG_SENSORS_VIA686A is not set ++# CONFIG_SENSORS_VT1211 is not set ++# CONFIG_SENSORS_VT8231 is not set ++# CONFIG_SENSORS_W83773G is not set ++# CONFIG_SENSORS_W83781D is not set ++# CONFIG_SENSORS_W83791D is not set ++# CONFIG_SENSORS_W83792D is not set ++# CONFIG_SENSORS_W83793 is not set ++# CONFIG_SENSORS_W83795 is not set ++# CONFIG_SENSORS_W83L785TS is not set ++# CONFIG_SENSORS_W83L786NG is not set ++# CONFIG_SENSORS_W83627HF is not set ++# CONFIG_SENSORS_W83627EHF is not set ++# CONFIG_THERMAL is not set ++CONFIG_WATCHDOG=y ++CONFIG_WATCHDOG_CORE=y ++CONFIG_WATCHDOG_NOWAYOUT=y ++CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y ++CONFIG_WATCHDOG_OPEN_TIMEOUT=0 ++CONFIG_WATCHDOG_SYSFS=y ++ ++# ++# Watchdog Pretimeout Governors ++# ++# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set ++ ++# ++# Watchdog Device Drivers ++# ++# CONFIG_SOFT_WATCHDOG is not set ++CONFIG_GPIO_WATCHDOG=m ++# CONFIG_XILINX_WATCHDOG is not set ++# CONFIG_ZIIRAVE_WATCHDOG is not set ++# CONFIG_ARM_SP805_WATCHDOG is not set ++# CONFIG_ARM_SBSA_WATCHDOG is not set ++# CONFIG_CADENCE_WATCHDOG is not set ++CONFIG_DW_WATCHDOG=m ++# CONFIG_MAX63XX_WATCHDOG is not set ++# CONFIG_ALIM7101_WDT is not set ++# CONFIG_I6300ESB_WDT is not set ++# CONFIG_MEN_A21_WDT is not set ++ ++# ++# PCI-based Watchdog Cards ++# ++# CONFIG_PCIPCWATCHDOG is not set ++# CONFIG_WDTPCI is not set ++ ++# ++# USB-based Watchdog Cards ++# ++# CONFIG_USBPCWATCHDOG is not set ++CONFIG_SSB_POSSIBLE=y ++# CONFIG_SSB is not set ++CONFIG_BCMA_POSSIBLE=y ++# CONFIG_BCMA is not set ++ ++# ++# Multifunction device drivers ++# ++# CONFIG_MFD_ACT8945A is not set ++# CONFIG_MFD_AS3711 is not set ++# CONFIG_MFD_AS3722 is not set ++# CONFIG_PMIC_ADP5520 is not set ++# CONFIG_MFD_AAT2870_CORE is not set ++# CONFIG_MFD_ATMEL_FLEXCOM is not set ++# CONFIG_MFD_ATMEL_HLCDC is not set ++# CONFIG_MFD_BCM590XX is not set ++# CONFIG_MFD_BD9571MWV is not set ++# CONFIG_MFD_AXP20X_I2C is not set ++# CONFIG_MFD_MADERA is not set ++# CONFIG_PMIC_DA903X is not set ++# CONFIG_MFD_DA9052_SPI is not set ++# CONFIG_MFD_DA9052_I2C is not set ++# CONFIG_MFD_DA9055 is not set ++# CONFIG_MFD_DA9062 is not set ++# CONFIG_MFD_DA9063 is not set ++# CONFIG_MFD_DA9150 is not set ++# CONFIG_MFD_DLN2 is not set ++# CONFIG_MFD_MC13XXX_SPI is not set ++# CONFIG_MFD_MC13XXX_I2C is not set ++# CONFIG_MFD_HI6421_PMIC is not set ++# CONFIG_HTC_PASIC3 is not set ++# CONFIG_HTC_I2CPLD is not set ++# CONFIG_LPC_ICH is not set ++# CONFIG_LPC_SCH is not set ++# CONFIG_MFD_JANZ_CMODIO is not set ++# CONFIG_MFD_KEMPLD is not set ++# CONFIG_MFD_88PM800 is not set ++# CONFIG_MFD_88PM805 is not set ++# CONFIG_MFD_88PM860X is not set ++# CONFIG_MFD_MAX14577 is not set ++# CONFIG_MFD_MAX77620 is not set ++# CONFIG_MFD_MAX77650 is not set ++# CONFIG_MFD_MAX77686 is not set ++# CONFIG_MFD_MAX77693 is not set ++# CONFIG_MFD_MAX77843 is not set ++# CONFIG_MFD_MAX8907 is not set ++# CONFIG_MFD_MAX8925 is not set ++# CONFIG_MFD_MAX8997 is not set ++# CONFIG_MFD_MAX8998 is not set ++# CONFIG_MFD_MT6397 is not set ++# CONFIG_MFD_MENF21BMC is not set ++# CONFIG_EZX_PCAP is not set ++# CONFIG_MFD_CPCAP is not set ++# CONFIG_MFD_VIPERBOARD is not set ++# CONFIG_MFD_RETU is not set ++# CONFIG_MFD_PCF50633 is not set ++# CONFIG_UCB1400_CORE is not set ++# CONFIG_MFD_RDC321X is not set ++# CONFIG_MFD_RT5033 is not set ++# CONFIG_MFD_RC5T583 is not set ++# CONFIG_MFD_RK808 is not set ++# CONFIG_MFD_RN5T618 is not set ++# CONFIG_MFD_SEC_CORE is not set ++# CONFIG_MFD_SI476X_CORE is not set ++# CONFIG_MFD_SM501 is not set ++# CONFIG_MFD_SKY81452 is not set ++# CONFIG_MFD_SMSC is not set ++# CONFIG_ABX500_CORE is not set ++# CONFIG_MFD_STMPE is not set ++CONFIG_MFD_SYSCON=y ++# CONFIG_MFD_TI_AM335X_TSCADC is not set ++# CONFIG_MFD_LP3943 is not set ++# CONFIG_MFD_LP8788 is not set ++# CONFIG_MFD_TI_LMU is not set ++# CONFIG_MFD_PALMAS is not set ++# CONFIG_TPS6105X is not set ++# CONFIG_TPS65010 is not set ++# CONFIG_TPS6507X is not set ++# CONFIG_MFD_TPS65086 is not set ++# CONFIG_MFD_TPS65090 is not set ++# CONFIG_MFD_TPS65217 is not set ++# CONFIG_MFD_TI_LP873X is not set ++# CONFIG_MFD_TI_LP87565 is not set ++# CONFIG_MFD_TPS65218 is not set ++# CONFIG_MFD_TPS6586X is not set ++# CONFIG_MFD_TPS65910 is not set ++# CONFIG_MFD_TPS65912_I2C is not set ++# CONFIG_MFD_TPS65912_SPI is not set ++# CONFIG_MFD_TPS80031 is not set ++# CONFIG_TWL4030_CORE is not set ++# CONFIG_TWL6040_CORE is not set ++# CONFIG_MFD_WL1273_CORE is not set ++# CONFIG_MFD_LM3533 is not set ++# CONFIG_MFD_TC3589X is not set ++# CONFIG_MFD_TQMX86 is not set ++# CONFIG_MFD_VX855 is not set ++# CONFIG_MFD_LOCHNAGAR is not set ++# CONFIG_MFD_ARIZONA_I2C is not set ++# CONFIG_MFD_ARIZONA_SPI is not set ++# CONFIG_MFD_WM8400 is not set ++# CONFIG_MFD_WM831X_I2C is not set ++# CONFIG_MFD_WM831X_SPI is not set ++# CONFIG_MFD_WM8350_I2C is not set ++# CONFIG_MFD_WM8994 is not set ++# CONFIG_MFD_ROHM_BD718XX is not set ++# CONFIG_MFD_ROHM_BD70528 is not set ++# CONFIG_MFD_ROHM_BD71828 is not set ++# CONFIG_MFD_STPMIC1 is not set ++# CONFIG_MFD_STMFX is not set ++# end of Multifunction device drivers ++ ++# CONFIG_REGULATOR is not set ++# CONFIG_RC_CORE is not set ++# CONFIG_MEDIA_SUPPORT is not set ++ ++# ++# Graphics support ++# ++CONFIG_VGA_ARB=y ++CONFIG_VGA_ARB_MAX_GPUS=16 ++CONFIG_DRM=y ++# CONFIG_DRM_DP_AUX_CHARDEV is not set ++# CONFIG_DRM_DEBUG_MM is not set ++# CONFIG_DRM_DEBUG_SELFTEST is not set ++CONFIG_DRM_KMS_HELPER=y ++CONFIG_DRM_KMS_FB_HELPER=y ++CONFIG_DRM_FBDEV_EMULATION=y ++CONFIG_DRM_FBDEV_OVERALLOC=100 ++# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set ++# CONFIG_DRM_DP_CEC is not set ++CONFIG_DRM_GEM_CMA_HELPER=y ++CONFIG_DRM_KMS_CMA_HELPER=y ++ ++# ++# I2C encoder or helper chips ++# ++# CONFIG_DRM_I2C_CH7006 is not set ++# CONFIG_DRM_I2C_SIL164 is not set ++# CONFIG_DRM_I2C_NXP_TDA998X is not set ++# CONFIG_DRM_I2C_NXP_TDA9950 is not set ++# end of I2C encoder or helper chips ++ ++# ++# ARM devices ++# ++# CONFIG_DRM_HDLCD is not set ++# CONFIG_DRM_MALI_DISPLAY is not set ++# CONFIG_DRM_KOMEDA is not set ++# end of ARM devices ++ ++CONFIG_DRM_BAIKAL_VDU=y ++# CONFIG_DRM_RADEON is not set ++# CONFIG_DRM_AMDGPU is not set ++ ++# ++# ACP (Audio CoProcessor) Configuration ++# ++# end of ACP (Audio CoProcessor) Configuration ++ ++# CONFIG_DRM_NOUVEAU is not set ++# CONFIG_DRM_VGEM is not set ++# CONFIG_DRM_VKMS is not set ++# CONFIG_DRM_UDL is not set ++# CONFIG_DRM_AST is not set ++# CONFIG_DRM_MGAG200 is not set ++# CONFIG_DRM_CIRRUS_QEMU is not set ++# CONFIG_DRM_RCAR_DW_HDMI is not set ++# CONFIG_DRM_RCAR_LVDS is not set ++CONFIG_DRM_RCAR_WRITEBACK=y ++# CONFIG_DRM_QXL is not set ++# CONFIG_DRM_BOCHS is not set ++CONFIG_DRM_PANEL=y ++ ++# ++# Display Panels ++# ++# CONFIG_DRM_PANEL_ARM_VERSATILE is not set ++CONFIG_DRM_PANEL_LVDS=y ++CONFIG_DRM_PANEL_SIMPLE=y ++# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set ++# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set ++# CONFIG_DRM_PANEL_LG_LB035Q02 is not set ++# CONFIG_DRM_PANEL_LG_LG4573 is not set ++# CONFIG_DRM_PANEL_NEC_NL8048HL11 is not set ++# CONFIG_DRM_PANEL_NOVATEK_NT39016 is not set ++# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set ++# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set ++# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set ++# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set ++# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set ++# CONFIG_DRM_PANEL_SONY_ACX565AKM is not set ++# CONFIG_DRM_PANEL_TPO_TD028TTEC1 is not set ++# CONFIG_DRM_PANEL_TPO_TPG110 is not set ++# end of Display Panels ++ ++CONFIG_DRM_BRIDGE=y ++CONFIG_DRM_PANEL_BRIDGE=y ++ ++# ++# Display Interface Bridges ++# ++# CONFIG_DRM_CDNS_DSI is not set ++# CONFIG_DRM_DUMB_VGA_DAC is not set ++# CONFIG_DRM_LVDS_CODEC is not set ++CONFIG_DRM_BAIKAL_HDMI=y ++# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set ++# CONFIG_DRM_NXP_PTN3460 is not set ++# CONFIG_DRM_PARADE_PS8622 is not set ++# CONFIG_DRM_SIL_SII8620 is not set ++# CONFIG_DRM_SII902X is not set ++# CONFIG_DRM_SII9234 is not set ++# CONFIG_DRM_THINE_THC63LVD1024 is not set ++# CONFIG_DRM_TOSHIBA_TC358764 is not set ++# CONFIG_DRM_TOSHIBA_TC358767 is not set ++# CONFIG_DRM_TI_TFP410 is not set ++# CONFIG_DRM_TI_SN65DSI86 is not set ++# CONFIG_DRM_ANALOGIX_ANX6345 is not set ++# CONFIG_DRM_ANALOGIX_ANX78XX is not set ++# CONFIG_DRM_I2C_ADV7511 is not set ++CONFIG_DRM_DW_HDMI=y ++CONFIG_DRM_DW_HDMI_AHB_AUDIO=m ++# CONFIG_DRM_DW_HDMI_I2S_AUDIO is not set ++# CONFIG_DRM_DW_HDMI_CEC is not set ++# end of Display Interface Bridges ++ ++# CONFIG_DRM_ETNAVIV is not set ++# CONFIG_DRM_ARCPGU is not set ++# CONFIG_DRM_HISI_HIBMC is not set ++# CONFIG_DRM_HISI_KIRIN is not set ++# CONFIG_DRM_MXSFB is not set ++# CONFIG_DRM_GM12U320 is not set ++# CONFIG_TINYDRM_HX8357D is not set ++# CONFIG_TINYDRM_ILI9225 is not set ++# CONFIG_TINYDRM_ILI9341 is not set ++# CONFIG_TINYDRM_MI0283QT is not set ++# CONFIG_TINYDRM_REPAPER is not set ++# CONFIG_TINYDRM_ST7586 is not set ++# CONFIG_TINYDRM_ST7735R is not set ++# CONFIG_DRM_PL111 is not set ++# CONFIG_DRM_LIMA is not set ++CONFIG_DRM_PANFROST=m ++# CONFIG_DRM_TIDSS is not set ++# CONFIG_DRM_LEGACY is not set ++CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y ++ ++# ++# Frame buffer Devices ++# ++CONFIG_FB_CMDLINE=y ++CONFIG_FB_NOTIFY=y ++CONFIG_FB=y ++# CONFIG_FIRMWARE_EDID is not set ++CONFIG_FB_CFB_FILLRECT=y ++CONFIG_FB_CFB_COPYAREA=y ++CONFIG_FB_CFB_IMAGEBLIT=y ++CONFIG_FB_SYS_FILLRECT=y ++CONFIG_FB_SYS_COPYAREA=y ++CONFIG_FB_SYS_IMAGEBLIT=y ++# CONFIG_FB_FOREIGN_ENDIAN is not set ++CONFIG_FB_SYS_FOPS=y ++CONFIG_FB_DEFERRED_IO=y ++CONFIG_FB_MODE_HELPERS=y ++# CONFIG_FB_TILEBLITTING is not set ++ ++# ++# Frame buffer hardware drivers ++# ++# CONFIG_FB_CIRRUS is not set ++# CONFIG_FB_PM2 is not set ++# CONFIG_FB_ARMCLCD is not set ++# CONFIG_FB_CYBER2000 is not set ++# CONFIG_FB_ASILIANT is not set ++# CONFIG_FB_IMSTT is not set ++# CONFIG_FB_UVESA is not set ++CONFIG_FB_EFI=y ++# CONFIG_FB_OPENCORES is not set ++# CONFIG_FB_S1D13XXX is not set ++# CONFIG_FB_NVIDIA is not set ++# CONFIG_FB_RIVA is not set ++# CONFIG_FB_I740 is not set ++# CONFIG_FB_MATROX is not set ++# CONFIG_FB_RADEON is not set ++# CONFIG_FB_ATY128 is not set ++# CONFIG_FB_ATY is not set ++# CONFIG_FB_S3 is not set ++# CONFIG_FB_SAVAGE is not set ++# CONFIG_FB_SIS is not set ++# CONFIG_FB_NEOMAGIC is not set ++# CONFIG_FB_KYRO is not set ++# CONFIG_FB_3DFX is not set ++# CONFIG_FB_VOODOO1 is not set ++# CONFIG_FB_VT8623 is not set ++# CONFIG_FB_TRIDENT is not set ++# CONFIG_FB_ARK is not set ++# CONFIG_FB_PM3 is not set ++# CONFIG_FB_CARMINE is not set ++# CONFIG_FB_SMSCUFX is not set ++# CONFIG_FB_UDL is not set ++# CONFIG_FB_IBM_GXT4500 is not set ++# CONFIG_FB_VIRTUAL is not set ++# CONFIG_FB_METRONOME is not set ++# CONFIG_FB_MB862XX is not set ++# CONFIG_FB_SIMPLE is not set ++# CONFIG_FB_SSD1307 is not set ++# CONFIG_FB_SM712 is not set ++# end of Frame buffer Devices ++ ++# ++# Backlight & LCD device support ++# ++CONFIG_LCD_CLASS_DEVICE=m ++# CONFIG_LCD_L4F00242T03 is not set ++# CONFIG_LCD_LMS283GF05 is not set ++# CONFIG_LCD_LTV350QV is not set ++# CONFIG_LCD_ILI922X is not set ++# CONFIG_LCD_ILI9320 is not set ++# CONFIG_LCD_TDO24M is not set ++# CONFIG_LCD_VGG2432A4 is not set ++# CONFIG_LCD_PLATFORM is not set ++# CONFIG_LCD_AMS369FG06 is not set ++# CONFIG_LCD_LMS501KF03 is not set ++# CONFIG_LCD_HX8357 is not set ++# CONFIG_LCD_OTM3225A is not set ++CONFIG_BACKLIGHT_CLASS_DEVICE=y ++CONFIG_BACKLIGHT_GENERIC=y ++# CONFIG_BACKLIGHT_QCOM_WLED is not set ++# CONFIG_BACKLIGHT_ADP8860 is not set ++# CONFIG_BACKLIGHT_ADP8870 is not set ++# CONFIG_BACKLIGHT_LM3639 is not set ++# CONFIG_BACKLIGHT_GPIO is not set ++# CONFIG_BACKLIGHT_LV5207LP is not set ++# CONFIG_BACKLIGHT_BD6107 is not set ++# CONFIG_BACKLIGHT_ARCXCNN is not set ++# end of Backlight & LCD device support ++ ++CONFIG_VIDEOMODE_HELPERS=y ++CONFIG_HDMI=y ++ ++# ++# Console display driver support ++# ++CONFIG_DUMMY_CONSOLE=y ++CONFIG_DUMMY_CONSOLE_COLUMNS=80 ++CONFIG_DUMMY_CONSOLE_ROWS=25 ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y ++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y ++# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set ++# end of Console display driver support ++ ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++CONFIG_LOGO_LINUX_CLUT224=y ++# end of Graphics support ++ ++CONFIG_SOUND=m ++CONFIG_SOUND_OSS_CORE=y ++CONFIG_SOUND_OSS_CORE_PRECLAIM=y ++CONFIG_SND=m ++CONFIG_SND_TIMER=m ++CONFIG_SND_PCM=m ++CONFIG_SND_DMAENGINE_PCM=m ++CONFIG_SND_HWDEP=m ++CONFIG_SND_SEQ_DEVICE=m ++CONFIG_SND_RAWMIDI=m ++CONFIG_SND_JACK=y ++CONFIG_SND_JACK_INPUT_DEV=y ++CONFIG_SND_OSSEMUL=y ++CONFIG_SND_MIXER_OSS=m ++CONFIG_SND_PCM_OSS=m ++CONFIG_SND_PCM_OSS_PLUGINS=y ++CONFIG_SND_PCM_TIMER=y ++CONFIG_SND_HRTIMER=m ++CONFIG_SND_DYNAMIC_MINORS=y ++CONFIG_SND_MAX_CARDS=32 ++# CONFIG_SND_SUPPORT_OLD_API is not set ++CONFIG_SND_PROC_FS=y ++CONFIG_SND_VERBOSE_PROCFS=y ++# CONFIG_SND_VERBOSE_PRINTK is not set ++# CONFIG_SND_DEBUG is not set ++CONFIG_SND_VMASTER=y ++CONFIG_SND_SEQUENCER=m ++# CONFIG_SND_SEQ_DUMMY is not set ++CONFIG_SND_SEQUENCER_OSS=m ++CONFIG_SND_SEQ_HRTIMER_DEFAULT=y ++CONFIG_SND_SEQ_MIDI_EVENT=m ++CONFIG_SND_SEQ_MIDI=m ++CONFIG_SND_AC97_CODEC=m ++CONFIG_SND_DRIVERS=y ++CONFIG_SND_DUMMY=m ++# CONFIG_SND_ALOOP is not set ++# CONFIG_SND_VIRMIDI is not set ++# CONFIG_SND_MTPAV is not set ++# CONFIG_SND_SERIAL_U16550 is not set ++# CONFIG_SND_MPU401 is not set ++# CONFIG_SND_AC97_POWER_SAVE is not set ++# CONFIG_SND_PCI is not set ++ ++# ++# HD-Audio ++# ++# end of HD-Audio ++ ++CONFIG_SND_HDA_PREALLOC_SIZE=64 ++# CONFIG_SND_SPI is not set ++CONFIG_SND_USB=y ++CONFIG_SND_USB_AUDIO=m ++# CONFIG_SND_USB_UA101 is not set ++# CONFIG_SND_USB_CAIAQ is not set ++# CONFIG_SND_USB_6FIRE is not set ++# CONFIG_SND_USB_HIFACE is not set ++# CONFIG_SND_BCD2000 is not set ++# CONFIG_SND_USB_POD is not set ++# CONFIG_SND_USB_PODHD is not set ++# CONFIG_SND_USB_TONEPORT is not set ++# CONFIG_SND_USB_VARIAX is not set ++CONFIG_SND_SOC=m ++CONFIG_SND_SOC_AC97_BUS=y ++CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y ++# CONFIG_SND_SOC_AMD_ACP is not set ++# CONFIG_SND_ATMEL_SOC is not set ++CONFIG_SND_DESIGNWARE_I2S=m ++CONFIG_SND_DESIGNWARE_PCM=y ++ ++# ++# SoC Audio for Freescale CPUs ++# ++ ++# ++# Common SoC Audio options for Freescale CPUs: ++# ++# CONFIG_SND_SOC_FSL_ASRC is not set ++# CONFIG_SND_SOC_FSL_SAI is not set ++# CONFIG_SND_SOC_FSL_AUDMIX is not set ++# CONFIG_SND_SOC_FSL_SSI is not set ++# CONFIG_SND_SOC_FSL_SPDIF is not set ++# CONFIG_SND_SOC_FSL_ESAI is not set ++# CONFIG_SND_SOC_FSL_MICFIL is not set ++# CONFIG_SND_SOC_IMX_AUDMUX is not set ++# end of SoC Audio for Freescale CPUs ++ ++# CONFIG_SND_I2S_HI6210_I2S is not set ++# CONFIG_SND_SOC_IMG is not set ++# CONFIG_SND_SOC_MTK_BTCVSD is not set ++# CONFIG_SND_SOC_SOF_TOPLEVEL is not set ++ ++# ++# STMicroelectronics STM32 SOC audio support ++# ++# end of STMicroelectronics STM32 SOC audio support ++ ++# CONFIG_SND_SOC_XILINX_I2S is not set ++# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set ++# CONFIG_SND_SOC_XILINX_SPDIF is not set ++# CONFIG_SND_SOC_XTFPGA_I2S is not set ++# CONFIG_ZX_TDM is not set ++CONFIG_SND_SOC_I2C_AND_SPI=m ++ ++# ++# CODEC drivers ++# ++CONFIG_SND_SOC_AC97_CODEC=m ++# CONFIG_SND_SOC_ADAU1701 is not set ++# CONFIG_SND_SOC_ADAU1761_I2C is not set ++# CONFIG_SND_SOC_ADAU1761_SPI is not set ++# CONFIG_SND_SOC_ADAU7002 is not set ++# CONFIG_SND_SOC_ADAU7118_HW is not set ++# CONFIG_SND_SOC_ADAU7118_I2C is not set ++# CONFIG_SND_SOC_AK4104 is not set ++# CONFIG_SND_SOC_AK4118 is not set ++# CONFIG_SND_SOC_AK4458 is not set ++# CONFIG_SND_SOC_AK4554 is not set ++# CONFIG_SND_SOC_AK4613 is not set ++# CONFIG_SND_SOC_AK4642 is not set ++# CONFIG_SND_SOC_AK5386 is not set ++# CONFIG_SND_SOC_AK5558 is not set ++# CONFIG_SND_SOC_ALC5623 is not set ++# CONFIG_SND_SOC_BD28623 is not set ++# CONFIG_SND_SOC_BT_SCO is not set ++# CONFIG_SND_SOC_CS35L32 is not set ++# CONFIG_SND_SOC_CS35L33 is not set ++# CONFIG_SND_SOC_CS35L34 is not set ++# CONFIG_SND_SOC_CS35L35 is not set ++# CONFIG_SND_SOC_CS35L36 is not set ++# CONFIG_SND_SOC_CS42L42 is not set ++# CONFIG_SND_SOC_CS42L51_I2C is not set ++# CONFIG_SND_SOC_CS42L52 is not set ++# CONFIG_SND_SOC_CS42L56 is not set ++# CONFIG_SND_SOC_CS42L73 is not set ++# CONFIG_SND_SOC_CS4265 is not set ++# CONFIG_SND_SOC_CS4270 is not set ++# CONFIG_SND_SOC_CS4271_I2C is not set ++# CONFIG_SND_SOC_CS4271_SPI is not set ++# CONFIG_SND_SOC_CS42XX8_I2C is not set ++# CONFIG_SND_SOC_CS43130 is not set ++# CONFIG_SND_SOC_CS4341 is not set ++# CONFIG_SND_SOC_CS4349 is not set ++# CONFIG_SND_SOC_CS53L30 is not set ++# CONFIG_SND_SOC_CX2072X is not set ++# CONFIG_SND_SOC_DA7213 is not set ++# CONFIG_SND_SOC_DMIC is not set ++# CONFIG_SND_SOC_ES7134 is not set ++# CONFIG_SND_SOC_ES7241 is not set ++# CONFIG_SND_SOC_ES8316 is not set ++# CONFIG_SND_SOC_ES8328_I2C is not set ++# CONFIG_SND_SOC_ES8328_SPI is not set ++# CONFIG_SND_SOC_GTM601 is not set ++# CONFIG_SND_SOC_INNO_RK3036 is not set ++# CONFIG_SND_SOC_MAX98088 is not set ++# CONFIG_SND_SOC_MAX98357A is not set ++# CONFIG_SND_SOC_MAX98504 is not set ++# CONFIG_SND_SOC_MAX9867 is not set ++# CONFIG_SND_SOC_MAX98927 is not set ++# CONFIG_SND_SOC_MAX98373 is not set ++# CONFIG_SND_SOC_MAX9860 is not set ++# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set ++# CONFIG_SND_SOC_PCM1681 is not set ++# CONFIG_SND_SOC_PCM1789_I2C is not set ++# CONFIG_SND_SOC_PCM179X_I2C is not set ++# CONFIG_SND_SOC_PCM179X_SPI is not set ++# CONFIG_SND_SOC_PCM186X_I2C is not set ++# CONFIG_SND_SOC_PCM186X_SPI is not set ++# CONFIG_SND_SOC_PCM3060_I2C is not set ++# CONFIG_SND_SOC_PCM3060_SPI is not set ++# CONFIG_SND_SOC_PCM3168A_I2C is not set ++# CONFIG_SND_SOC_PCM3168A_SPI is not set ++# CONFIG_SND_SOC_PCM512x_I2C is not set ++# CONFIG_SND_SOC_PCM512x_SPI is not set ++# CONFIG_SND_SOC_RK3328 is not set ++# CONFIG_SND_SOC_RT5616 is not set ++# CONFIG_SND_SOC_RT5631 is not set ++# CONFIG_SND_SOC_SGTL5000 is not set ++# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set ++# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set ++CONFIG_SND_SOC_SPDIF=m ++# CONFIG_SND_SOC_SSM2305 is not set ++# CONFIG_SND_SOC_SSM2602_SPI is not set ++# CONFIG_SND_SOC_SSM2602_I2C is not set ++# CONFIG_SND_SOC_SSM4567 is not set ++# CONFIG_SND_SOC_STA32X is not set ++# CONFIG_SND_SOC_STA350 is not set ++# CONFIG_SND_SOC_STI_SAS is not set ++# CONFIG_SND_SOC_TAS2552 is not set ++# CONFIG_SND_SOC_TAS2562 is not set ++# CONFIG_SND_SOC_TAS2770 is not set ++# CONFIG_SND_SOC_TAS5086 is not set ++# CONFIG_SND_SOC_TAS571X is not set ++# CONFIG_SND_SOC_TAS5720 is not set ++# CONFIG_SND_SOC_TAS6424 is not set ++# CONFIG_SND_SOC_TDA7419 is not set ++# CONFIG_SND_SOC_TFA9879 is not set ++# CONFIG_SND_SOC_TLV320AIC23_I2C is not set ++# CONFIG_SND_SOC_TLV320AIC23_SPI is not set ++# CONFIG_SND_SOC_TLV320AIC31XX is not set ++# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set ++# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set ++CONFIG_SND_SOC_TLV320AIC3X=m ++# CONFIG_SND_SOC_TS3A227E is not set ++# CONFIG_SND_SOC_TSCS42XX is not set ++# CONFIG_SND_SOC_TSCS454 is not set ++# CONFIG_SND_SOC_UDA1334 is not set ++# CONFIG_SND_SOC_WM8510 is not set ++# CONFIG_SND_SOC_WM8523 is not set ++# CONFIG_SND_SOC_WM8524 is not set ++# CONFIG_SND_SOC_WM8580 is not set ++# CONFIG_SND_SOC_WM8711 is not set ++# CONFIG_SND_SOC_WM8728 is not set ++# CONFIG_SND_SOC_WM8731 is not set ++# CONFIG_SND_SOC_WM8737 is not set ++# CONFIG_SND_SOC_WM8741 is not set ++# CONFIG_SND_SOC_WM8750 is not set ++# CONFIG_SND_SOC_WM8753 is not set ++# CONFIG_SND_SOC_WM8770 is not set ++# CONFIG_SND_SOC_WM8776 is not set ++# CONFIG_SND_SOC_WM8782 is not set ++# CONFIG_SND_SOC_WM8804_I2C is not set ++# CONFIG_SND_SOC_WM8804_SPI is not set ++# CONFIG_SND_SOC_WM8903 is not set ++# CONFIG_SND_SOC_WM8904 is not set ++# CONFIG_SND_SOC_WM8960 is not set ++# CONFIG_SND_SOC_WM8962 is not set ++# CONFIG_SND_SOC_WM8974 is not set ++# CONFIG_SND_SOC_WM8978 is not set ++# CONFIG_SND_SOC_WM8985 is not set ++# CONFIG_SND_SOC_ZX_AUD96P22 is not set ++# CONFIG_SND_SOC_MAX9759 is not set ++# CONFIG_SND_SOC_MT6351 is not set ++# CONFIG_SND_SOC_MT6358 is not set ++# CONFIG_SND_SOC_MT6660 is not set ++# CONFIG_SND_SOC_NAU8540 is not set ++# CONFIG_SND_SOC_NAU8810 is not set ++CONFIG_SND_SOC_NAU8822=m ++# CONFIG_SND_SOC_NAU8824 is not set ++# CONFIG_SND_SOC_TPA6130A2 is not set ++# end of CODEC drivers ++ ++CONFIG_SND_SIMPLE_CARD_UTILS=m ++CONFIG_SND_SIMPLE_CARD=m ++CONFIG_SND_AUDIO_GRAPH_CARD=m ++CONFIG_AC97_BUS=m ++ ++# ++# HID support ++# ++CONFIG_HID=y ++CONFIG_HID_BATTERY_STRENGTH=y ++CONFIG_HIDRAW=y ++CONFIG_UHID=m ++CONFIG_HID_GENERIC=y ++ ++# ++# Special HID drivers ++# ++# CONFIG_HID_A4TECH is not set ++# CONFIG_HID_ACCUTOUCH is not set ++# CONFIG_HID_ACRUX is not set ++# CONFIG_HID_APPLE is not set ++# CONFIG_HID_APPLEIR is not set ++# CONFIG_HID_AUREAL is not set ++# CONFIG_HID_BELKIN is not set ++# CONFIG_HID_BETOP_FF is not set ++# CONFIG_HID_CHERRY is not set ++# CONFIG_HID_CHICONY is not set ++# CONFIG_HID_COUGAR is not set ++# CONFIG_HID_MACALLY is not set ++# CONFIG_HID_PRODIKEYS is not set ++# CONFIG_HID_CMEDIA is not set ++# CONFIG_HID_CP2112 is not set ++# CONFIG_HID_CREATIVE_SB0540 is not set ++# CONFIG_HID_CYPRESS is not set ++# CONFIG_HID_DRAGONRISE is not set ++# CONFIG_HID_EMS_FF is not set ++# CONFIG_HID_ELECOM is not set ++# CONFIG_HID_ELO is not set ++# CONFIG_HID_EZKEY is not set ++# CONFIG_HID_GEMBIRD is not set ++# CONFIG_HID_GFRM is not set ++# CONFIG_HID_HOLTEK is not set ++# CONFIG_HID_KEYTOUCH is not set ++# CONFIG_HID_KYE is not set ++# CONFIG_HID_UCLOGIC is not set ++# CONFIG_HID_WALTOP is not set ++# CONFIG_HID_VIEWSONIC is not set ++# CONFIG_HID_GYRATION is not set ++# CONFIG_HID_ICADE is not set ++# CONFIG_HID_ITE is not set ++# CONFIG_HID_JABRA is not set ++# CONFIG_HID_TWINHAN is not set ++# CONFIG_HID_KENSINGTON is not set ++# CONFIG_HID_LCPOWER is not set ++# CONFIG_HID_LENOVO is not set ++# CONFIG_HID_MAGICMOUSE is not set ++# CONFIG_HID_MALTRON is not set ++# CONFIG_HID_MAYFLASH is not set ++# CONFIG_HID_REDRAGON is not set ++# CONFIG_HID_MICROSOFT is not set ++# CONFIG_HID_MONTEREY is not set ++# CONFIG_HID_MULTITOUCH is not set ++# CONFIG_HID_NTI is not set ++# CONFIG_HID_NTRIG is not set ++# CONFIG_HID_ORTEK is not set ++# CONFIG_HID_PANTHERLORD is not set ++# CONFIG_HID_PENMOUNT is not set ++# CONFIG_HID_PETALYNX is not set ++# CONFIG_HID_PICOLCD is not set ++# CONFIG_HID_PLANTRONICS is not set ++# CONFIG_HID_PRIMAX is not set ++# CONFIG_HID_RETRODE is not set ++# CONFIG_HID_ROCCAT is not set ++# CONFIG_HID_SAITEK is not set ++# CONFIG_HID_SAMSUNG is not set ++# CONFIG_HID_SPEEDLINK is not set ++# CONFIG_HID_STEAM is not set ++# CONFIG_HID_STEELSERIES is not set ++# CONFIG_HID_SUNPLUS is not set ++# CONFIG_HID_RMI is not set ++# CONFIG_HID_GREENASIA is not set ++# CONFIG_HID_SMARTJOYPLUS is not set ++# CONFIG_HID_TIVO is not set ++# CONFIG_HID_TOPSEED is not set ++# CONFIG_HID_THRUSTMASTER is not set ++# CONFIG_HID_UDRAW_PS3 is not set ++# CONFIG_HID_WACOM is not set ++# CONFIG_HID_XINMO is not set ++# CONFIG_HID_ZEROPLUS is not set ++# CONFIG_HID_ZYDACRON is not set ++# CONFIG_HID_SENSOR_HUB is not set ++# CONFIG_HID_ALPS is not set ++# end of Special HID drivers ++ ++# ++# USB HID support ++# ++CONFIG_USB_HID=y ++CONFIG_HID_PID=y ++CONFIG_USB_HIDDEV=y ++# end of USB HID support ++ ++# ++# I2C HID support ++# ++# CONFIG_I2C_HID is not set ++# end of I2C HID support ++# end of HID support ++ ++CONFIG_USB_OHCI_LITTLE_ENDIAN=y ++CONFIG_USB_SUPPORT=y ++CONFIG_USB_COMMON=y ++CONFIG_USB_ULPI_BUS=y ++# CONFIG_USB_CONN_GPIO is not set ++CONFIG_USB_ARCH_HAS_HCD=y ++CONFIG_USB=y ++CONFIG_USB_PCI=y ++# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set ++ ++# ++# Miscellaneous USB options ++# ++CONFIG_USB_DEFAULT_PERSIST=y ++# CONFIG_USB_DYNAMIC_MINORS is not set ++# CONFIG_USB_OTG is not set ++# CONFIG_USB_OTG_WHITELIST is not set ++CONFIG_USB_AUTOSUSPEND_DELAY=2 ++CONFIG_USB_MON=m ++ ++# ++# USB Host Controller Drivers ++# ++# CONFIG_USB_C67X00_HCD is not set ++CONFIG_USB_XHCI_HCD=y ++# CONFIG_USB_XHCI_DBGCAP is not set ++CONFIG_USB_XHCI_PCI=y ++CONFIG_USB_XHCI_PLATFORM=y ++CONFIG_USB_EHCI_HCD=m ++CONFIG_USB_EHCI_ROOT_HUB_TT=y ++CONFIG_USB_EHCI_TT_NEWSCHED=y ++CONFIG_USB_EHCI_PCI=m ++# CONFIG_USB_EHCI_FSL is not set ++CONFIG_USB_EHCI_HCD_PLATFORM=m ++# CONFIG_USB_OXU210HP_HCD is not set ++# CONFIG_USB_ISP116X_HCD is not set ++# CONFIG_USB_FOTG210_HCD is not set ++# CONFIG_USB_MAX3421_HCD is not set ++CONFIG_USB_OHCI_HCD=m ++CONFIG_USB_OHCI_HCD_PCI=m ++CONFIG_USB_OHCI_HCD_PLATFORM=m ++# CONFIG_USB_UHCI_HCD is not set ++# CONFIG_USB_SL811_HCD is not set ++# CONFIG_USB_R8A66597_HCD is not set ++# CONFIG_USB_HCD_TEST_MODE is not set ++ ++# ++# USB Device Class drivers ++# ++# CONFIG_USB_ACM is not set ++# CONFIG_USB_PRINTER is not set ++# CONFIG_USB_WDM is not set ++# CONFIG_USB_TMC is not set ++ ++# ++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may ++# ++ ++# ++# also be needed; see USB_STORAGE Help for more info ++# ++CONFIG_USB_STORAGE=y ++# CONFIG_USB_STORAGE_DEBUG is not set ++# CONFIG_USB_STORAGE_REALTEK is not set ++# CONFIG_USB_STORAGE_DATAFAB is not set ++# CONFIG_USB_STORAGE_FREECOM is not set ++# CONFIG_USB_STORAGE_ISD200 is not set ++# CONFIG_USB_STORAGE_USBAT is not set ++# CONFIG_USB_STORAGE_SDDR09 is not set ++# CONFIG_USB_STORAGE_SDDR55 is not set ++# CONFIG_USB_STORAGE_JUMPSHOT is not set ++# CONFIG_USB_STORAGE_ALAUDA is not set ++# CONFIG_USB_STORAGE_ONETOUCH is not set ++# CONFIG_USB_STORAGE_KARMA is not set ++# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set ++# CONFIG_USB_STORAGE_ENE_UB6250 is not set ++CONFIG_USB_UAS=y ++ ++# ++# USB Imaging devices ++# ++# CONFIG_USB_MDC800 is not set ++# CONFIG_USB_MICROTEK is not set ++# CONFIG_USBIP_CORE is not set ++# CONFIG_USB_CDNS3 is not set ++# CONFIG_USB_MUSB_HDRC is not set ++CONFIG_USB_DWC3=y ++CONFIG_USB_DWC3_ULPI=y ++CONFIG_USB_DWC3_HOST=y ++ ++# ++# Platform Glue Driver Support ++# ++CONFIG_USB_DWC3_HAPS=y ++CONFIG_USB_DWC3_OF_SIMPLE=y ++CONFIG_USB_DWC3_BAIKAL=y ++# CONFIG_USB_DWC2 is not set ++# CONFIG_USB_CHIPIDEA is not set ++# CONFIG_USB_ISP1760 is not set ++ ++# ++# USB port drivers ++# ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_SIMPLE=m ++# CONFIG_USB_SERIAL_AIRCABLE is not set ++# CONFIG_USB_SERIAL_ARK3116 is not set ++# CONFIG_USB_SERIAL_BELKIN is not set ++CONFIG_USB_SERIAL_CH341=m ++# CONFIG_USB_SERIAL_WHITEHEAT is not set ++# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set ++CONFIG_USB_SERIAL_CP210X=m ++# CONFIG_USB_SERIAL_CYPRESS_M8 is not set ++# CONFIG_USB_SERIAL_EMPEG is not set ++CONFIG_USB_SERIAL_FTDI_SIO=m ++# CONFIG_USB_SERIAL_VISOR is not set ++# CONFIG_USB_SERIAL_IPAQ is not set ++# CONFIG_USB_SERIAL_IR is not set ++# CONFIG_USB_SERIAL_EDGEPORT is not set ++# CONFIG_USB_SERIAL_EDGEPORT_TI is not set ++# CONFIG_USB_SERIAL_F81232 is not set ++# CONFIG_USB_SERIAL_F8153X is not set ++# CONFIG_USB_SERIAL_GARMIN is not set ++# CONFIG_USB_SERIAL_IPW is not set ++# CONFIG_USB_SERIAL_IUU is not set ++# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set ++# CONFIG_USB_SERIAL_KEYSPAN is not set ++# CONFIG_USB_SERIAL_KLSI is not set ++# CONFIG_USB_SERIAL_KOBIL_SCT is not set ++# CONFIG_USB_SERIAL_MCT_U232 is not set ++# CONFIG_USB_SERIAL_METRO is not set ++# CONFIG_USB_SERIAL_MOS7720 is not set ++# CONFIG_USB_SERIAL_MOS7840 is not set ++# CONFIG_USB_SERIAL_MXUPORT is not set ++# CONFIG_USB_SERIAL_NAVMAN is not set ++CONFIG_USB_SERIAL_PL2303=m ++# CONFIG_USB_SERIAL_OTI6858 is not set ++# CONFIG_USB_SERIAL_QCAUX is not set ++# CONFIG_USB_SERIAL_QUALCOMM is not set ++# CONFIG_USB_SERIAL_SPCP8X5 is not set ++# CONFIG_USB_SERIAL_SAFE is not set ++# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set ++# CONFIG_USB_SERIAL_SYMBOL is not set ++# CONFIG_USB_SERIAL_TI is not set ++# CONFIG_USB_SERIAL_CYBERJACK is not set ++# CONFIG_USB_SERIAL_XIRCOM is not set ++CONFIG_USB_SERIAL_WWAN=m ++CONFIG_USB_SERIAL_OPTION=m ++# CONFIG_USB_SERIAL_OMNINET is not set ++# CONFIG_USB_SERIAL_OPTICON is not set ++# CONFIG_USB_SERIAL_XSENS_MT is not set ++# CONFIG_USB_SERIAL_WISHBONE is not set ++# CONFIG_USB_SERIAL_SSU100 is not set ++# CONFIG_USB_SERIAL_QT2 is not set ++# CONFIG_USB_SERIAL_UPD78F0730 is not set ++# CONFIG_USB_SERIAL_DEBUG is not set ++ ++# ++# USB Miscellaneous drivers ++# ++# CONFIG_USB_EMI62 is not set ++# CONFIG_USB_EMI26 is not set ++# CONFIG_USB_ADUTUX is not set ++# CONFIG_USB_SEVSEG is not set ++# CONFIG_USB_LEGOTOWER is not set ++# CONFIG_USB_LCD is not set ++# CONFIG_USB_CYPRESS_CY7C63 is not set ++# CONFIG_USB_CYTHERM is not set ++# CONFIG_USB_IDMOUSE is not set ++# CONFIG_USB_FTDI_ELAN is not set ++# CONFIG_USB_APPLEDISPLAY is not set ++# CONFIG_USB_SISUSBVGA is not set ++# CONFIG_USB_LD is not set ++# CONFIG_USB_TRANCEVIBRATOR is not set ++# CONFIG_USB_IOWARRIOR is not set ++# CONFIG_USB_TEST is not set ++# CONFIG_USB_EHSET_TEST_FIXTURE is not set ++# CONFIG_USB_ISIGHTFW is not set ++# CONFIG_USB_YUREX is not set ++# CONFIG_USB_EZUSB_FX2 is not set ++# CONFIG_USB_HUB_USB251XB is not set ++# CONFIG_USB_HSIC_USB3503 is not set ++# CONFIG_USB_HSIC_USB4604 is not set ++# CONFIG_USB_LINK_LAYER_TEST is not set ++# CONFIG_USB_CHAOSKEY is not set ++ ++# ++# USB Physical Layer drivers ++# ++# CONFIG_NOP_USB_XCEIV is not set ++# CONFIG_USB_GPIO_VBUS is not set ++# CONFIG_USB_ISP1301 is not set ++CONFIG_USB_ULPI=y ++CONFIG_USB_ULPI_VIEWPORT=y ++# end of USB Physical Layer drivers ++ ++# CONFIG_USB_GADGET is not set ++# CONFIG_TYPEC is not set ++# CONFIG_USB_ROLE_SWITCH is not set ++CONFIG_MMC=m ++CONFIG_PWRSEQ_EMMC=m ++CONFIG_PWRSEQ_SIMPLE=m ++CONFIG_MMC_BLOCK=m ++CONFIG_MMC_BLOCK_MINORS=8 ++# CONFIG_SDIO_UART is not set ++# CONFIG_MMC_TEST is not set ++ ++# ++# MMC/SD/SDIO Host Controller Drivers ++# ++# CONFIG_MMC_DEBUG is not set ++# CONFIG_MMC_ARMMMCI is not set ++CONFIG_MMC_SDHCI=m ++# CONFIG_MMC_SDHCI_PCI is not set ++CONFIG_MMC_SDHCI_PLTFM=m ++CONFIG_MMC_SDHCI_OF_ARASAN=m ++# CONFIG_MMC_SDHCI_OF_ASPEED is not set ++CONFIG_MMC_SDHCI_OF_AT91=m ++CONFIG_MMC_SDHCI_OF_DWCMSHC=m ++# CONFIG_MMC_SDHCI_CADENCE is not set ++# CONFIG_MMC_SDHCI_F_SDH30 is not set ++# CONFIG_MMC_SDHCI_MILBEAUT is not set ++# CONFIG_MMC_TIFM_SD is not set ++# CONFIG_MMC_SPI is not set ++# CONFIG_MMC_CB710 is not set ++# CONFIG_MMC_VIA_SDMMC is not set ++# CONFIG_MMC_DW is not set ++CONFIG_MMC_VUB300=m ++CONFIG_MMC_USHC=m ++# CONFIG_MMC_USDHI6ROL0 is not set ++CONFIG_MMC_CQHCI=m ++# CONFIG_MMC_TOSHIBA_PCI is not set ++# CONFIG_MMC_MTK is not set ++# CONFIG_MMC_SDHCI_XENON is not set ++# CONFIG_MMC_SDHCI_OMAP is not set ++# CONFIG_MMC_SDHCI_AM654 is not set ++# CONFIG_MEMSTICK is not set ++# CONFIG_NEW_LEDS is not set ++# CONFIG_ACCESSIBILITY is not set ++# CONFIG_INFINIBAND is not set ++CONFIG_EDAC_SUPPORT=y ++# CONFIG_EDAC is not set ++CONFIG_RTC_LIB=y ++CONFIG_RTC_CLASS=y ++CONFIG_RTC_HCTOSYS=y ++CONFIG_RTC_HCTOSYS_DEVICE="rtc0" ++CONFIG_RTC_SYSTOHC=y ++CONFIG_RTC_SYSTOHC_DEVICE="rtc0" ++# CONFIG_RTC_DEBUG is not set ++CONFIG_RTC_NVMEM=y ++ ++# ++# RTC interfaces ++# ++CONFIG_RTC_INTF_SYSFS=y ++CONFIG_RTC_INTF_PROC=y ++CONFIG_RTC_INTF_DEV=y ++# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set ++# CONFIG_RTC_DRV_TEST is not set ++ ++# ++# I2C RTC drivers ++# ++# CONFIG_RTC_DRV_ABB5ZES3 is not set ++CONFIG_RTC_DRV_ABEOZ9=m ++# CONFIG_RTC_DRV_ABX80X is not set ++# CONFIG_RTC_DRV_DS1307 is not set ++# CONFIG_RTC_DRV_DS1374 is not set ++# CONFIG_RTC_DRV_DS1672 is not set ++# CONFIG_RTC_DRV_HYM8563 is not set ++# CONFIG_RTC_DRV_MAX6900 is not set ++# CONFIG_RTC_DRV_RS5C372 is not set ++# CONFIG_RTC_DRV_ISL1208 is not set ++# CONFIG_RTC_DRV_ISL12022 is not set ++# CONFIG_RTC_DRV_ISL12026 is not set ++# CONFIG_RTC_DRV_X1205 is not set ++# CONFIG_RTC_DRV_PCF8523 is not set ++# CONFIG_RTC_DRV_PCF85063 is not set ++# CONFIG_RTC_DRV_PCF85363 is not set ++# CONFIG_RTC_DRV_PCF8563 is not set ++# CONFIG_RTC_DRV_PCF8583 is not set ++# CONFIG_RTC_DRV_M41T80 is not set ++# CONFIG_RTC_DRV_BQ32K is not set ++# CONFIG_RTC_DRV_S35390A is not set ++# CONFIG_RTC_DRV_FM3130 is not set ++# CONFIG_RTC_DRV_RX8010 is not set ++# CONFIG_RTC_DRV_RX8581 is not set ++# CONFIG_RTC_DRV_RX8025 is not set ++# CONFIG_RTC_DRV_EM3027 is not set ++# CONFIG_RTC_DRV_RV3028 is not set ++# CONFIG_RTC_DRV_RV8803 is not set ++# CONFIG_RTC_DRV_SD3078 is not set ++ ++# ++# SPI RTC drivers ++# ++# CONFIG_RTC_DRV_M41T93 is not set ++# CONFIG_RTC_DRV_M41T94 is not set ++# CONFIG_RTC_DRV_DS1302 is not set ++# CONFIG_RTC_DRV_DS1305 is not set ++# CONFIG_RTC_DRV_DS1343 is not set ++# CONFIG_RTC_DRV_DS1347 is not set ++# CONFIG_RTC_DRV_DS1390 is not set ++# CONFIG_RTC_DRV_MAX6916 is not set ++# CONFIG_RTC_DRV_R9701 is not set ++# CONFIG_RTC_DRV_RX4581 is not set ++# CONFIG_RTC_DRV_RX6110 is not set ++# CONFIG_RTC_DRV_RS5C348 is not set ++# CONFIG_RTC_DRV_MAX6902 is not set ++# CONFIG_RTC_DRV_PCF2123 is not set ++# CONFIG_RTC_DRV_MCP795 is not set ++CONFIG_RTC_I2C_AND_SPI=y ++ ++# ++# SPI and I2C RTC drivers ++# ++# CONFIG_RTC_DRV_DS3232 is not set ++CONFIG_RTC_DRV_PCF2127=y ++# CONFIG_RTC_DRV_RV3029C2 is not set ++ ++# ++# Platform RTC drivers ++# ++# CONFIG_RTC_DRV_DS1286 is not set ++# CONFIG_RTC_DRV_DS1511 is not set ++# CONFIG_RTC_DRV_DS1553 is not set ++# CONFIG_RTC_DRV_DS1685_FAMILY is not set ++# CONFIG_RTC_DRV_DS1742 is not set ++# CONFIG_RTC_DRV_DS2404 is not set ++# CONFIG_RTC_DRV_EFI is not set ++# CONFIG_RTC_DRV_STK17TA8 is not set ++# CONFIG_RTC_DRV_M48T86 is not set ++# CONFIG_RTC_DRV_M48T35 is not set ++# CONFIG_RTC_DRV_M48T59 is not set ++# CONFIG_RTC_DRV_MSM6242 is not set ++# CONFIG_RTC_DRV_BQ4802 is not set ++# CONFIG_RTC_DRV_RP5C01 is not set ++# CONFIG_RTC_DRV_V3020 is not set ++# CONFIG_RTC_DRV_ZYNQMP is not set ++ ++# ++# on-CPU RTC drivers ++# ++# CONFIG_RTC_DRV_PL030 is not set ++# CONFIG_RTC_DRV_PL031 is not set ++# CONFIG_RTC_DRV_CADENCE is not set ++# CONFIG_RTC_DRV_FTRTC010 is not set ++# CONFIG_RTC_DRV_SNVS is not set ++# CONFIG_RTC_DRV_R7301 is not set ++ ++# ++# HID Sensor RTC drivers ++# ++CONFIG_DMADEVICES=y ++# CONFIG_DMADEVICES_DEBUG is not set ++ ++# ++# DMA Devices ++# ++CONFIG_DMA_ENGINE=y ++CONFIG_DMA_OF=y ++# CONFIG_ALTERA_MSGDMA is not set ++# CONFIG_AMBA_PL08X is not set ++# CONFIG_BCM_SBA_RAID is not set ++# CONFIG_DW_AXI_DMAC is not set ++# CONFIG_FSL_EDMA is not set ++# CONFIG_FSL_QDMA is not set ++# CONFIG_HISI_DMA is not set ++# CONFIG_INTEL_IDMA64 is not set ++# CONFIG_MV_XOR_V2 is not set ++# CONFIG_PL330_DMA is not set ++# CONFIG_PLX_DMA is not set ++# CONFIG_XILINX_DMA is not set ++# CONFIG_XILINX_ZYNQMP_DMA is not set ++# CONFIG_QCOM_HIDMA_MGMT is not set ++# CONFIG_QCOM_HIDMA is not set ++# CONFIG_DW_DMAC is not set ++# CONFIG_DW_DMAC_PCI is not set ++# CONFIG_DW_EDMA is not set ++# CONFIG_DW_EDMA_PCIE is not set ++# CONFIG_SF_PDMA is not set ++ ++# ++# DMA Clients ++# ++# CONFIG_ASYNC_TX_DMA is not set ++# CONFIG_DMATEST is not set ++ ++# ++# DMABUF options ++# ++CONFIG_SYNC_FILE=y ++# CONFIG_SW_SYNC is not set ++# CONFIG_UDMABUF is not set ++# CONFIG_DMABUF_SELFTESTS is not set ++# CONFIG_DMABUF_HEAPS is not set ++# end of DMABUF options ++ ++# CONFIG_AUXDISPLAY is not set ++# CONFIG_UIO is not set ++# CONFIG_VFIO is not set ++# CONFIG_VIRT_DRIVERS is not set ++# CONFIG_VIRTIO_MENU is not set ++ ++# ++# Microsoft Hyper-V guest support ++# ++# end of Microsoft Hyper-V guest support ++ ++# CONFIG_GREYBUS is not set ++# CONFIG_STAGING is not set ++# CONFIG_GOLDFISH is not set ++# CONFIG_MFD_CROS_EC is not set ++# CONFIG_CHROME_PLATFORMS is not set ++# CONFIG_MELLANOX_PLATFORM is not set ++CONFIG_CLKDEV_LOOKUP=y ++CONFIG_HAVE_CLK_PREPARE=y ++CONFIG_COMMON_CLK=y ++ ++# ++# Common Clock Framework ++# ++CONFIG_COMMON_CLK_VERSATILE=y ++# CONFIG_CLK_SP810 is not set ++# CONFIG_CLK_HSDK is not set ++# CONFIG_COMMON_CLK_MAX9485 is not set ++# CONFIG_COMMON_CLK_SI5341 is not set ++# CONFIG_COMMON_CLK_SI5351 is not set ++# CONFIG_COMMON_CLK_SI514 is not set ++# CONFIG_COMMON_CLK_SI544 is not set ++# CONFIG_COMMON_CLK_SI570 is not set ++# CONFIG_COMMON_CLK_CDCE706 is not set ++# CONFIG_COMMON_CLK_CDCE925 is not set ++# CONFIG_COMMON_CLK_CS2000_CP is not set ++# CONFIG_CLK_QORIQ is not set ++# CONFIG_COMMON_CLK_XGENE is not set ++# CONFIG_COMMON_CLK_VC5 is not set ++# CONFIG_COMMON_CLK_FIXED_MMIO is not set ++# end of Common Clock Framework ++ ++# CONFIG_HWSPINLOCK is not set ++ ++# ++# Clock Source drivers ++# ++CONFIG_TIMER_OF=y ++CONFIG_TIMER_PROBE=y ++CONFIG_DW_APB_TIMER=y ++CONFIG_DW_APB_TIMER_OF=y ++CONFIG_ARM_ARCH_TIMER=y ++CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y ++CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y ++# CONFIG_FSL_ERRATUM_A008585 is not set ++CONFIG_HISILICON_ERRATUM_161010101=y ++CONFIG_ARM64_ERRATUM_858921=y ++# CONFIG_MICROCHIP_PIT64B is not set ++# end of Clock Source drivers ++ ++CONFIG_MAILBOX=y ++CONFIG_ARM_MHU=m ++# CONFIG_PLATFORM_MHU is not set ++# CONFIG_PL320_MBOX is not set ++# CONFIG_ALTERA_MBOX is not set ++# CONFIG_MAILBOX_TEST is not set ++CONFIG_IOMMU_IOVA=y ++CONFIG_IOMMU_API=y ++CONFIG_IOMMU_SUPPORT=y ++ ++# ++# Generic IOMMU Pagetable Support ++# ++CONFIG_IOMMU_IO_PGTABLE=y ++CONFIG_IOMMU_IO_PGTABLE_LPAE=y ++# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set ++# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set ++# end of Generic IOMMU Pagetable Support ++ ++# CONFIG_IOMMU_DEBUGFS is not set ++# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set ++CONFIG_OF_IOMMU=y ++CONFIG_IOMMU_DMA=y ++CONFIG_ARM_SMMU=y ++# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set ++CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y ++CONFIG_ARM_SMMU_V3=y ++ ++# ++# Remoteproc drivers ++# ++# CONFIG_REMOTEPROC is not set ++# end of Remoteproc drivers ++ ++# ++# Rpmsg drivers ++# ++# CONFIG_RPMSG_QCOM_GLINK_RPM is not set ++# CONFIG_RPMSG_VIRTIO is not set ++# end of Rpmsg drivers ++ ++# CONFIG_SOUNDWIRE is not set ++ ++# ++# SOC (System On Chip) specific Drivers ++# ++ ++# ++# Amlogic SoC drivers ++# ++# end of Amlogic SoC drivers ++ ++# ++# Aspeed SoC drivers ++# ++# end of Aspeed SoC drivers ++ ++# ++# Broadcom SoC drivers ++# ++# CONFIG_SOC_BRCMSTB is not set ++# end of Broadcom SoC drivers ++ ++# ++# NXP/Freescale QorIQ SoC drivers ++# ++# CONFIG_QUICC_ENGINE is not set ++# CONFIG_FSL_RCPM is not set ++# end of NXP/Freescale QorIQ SoC drivers ++ ++# ++# i.MX SoC drivers ++# ++# end of i.MX SoC drivers ++ ++# ++# Qualcomm SoC drivers ++# ++# end of Qualcomm SoC drivers ++ ++# CONFIG_SOC_TI is not set ++ ++# ++# Xilinx SoC drivers ++# ++# CONFIG_XILINX_VCU is not set ++# end of Xilinx SoC drivers ++# end of SOC (System On Chip) specific Drivers ++ ++CONFIG_PM_DEVFREQ=y ++ ++# ++# DEVFREQ Governors ++# ++CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m ++# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set ++# CONFIG_DEVFREQ_GOV_POWERSAVE is not set ++# CONFIG_DEVFREQ_GOV_USERSPACE is not set ++# CONFIG_DEVFREQ_GOV_PASSIVE is not set ++ ++# ++# DEVFREQ Drivers ++# ++# CONFIG_PM_DEVFREQ_EVENT is not set ++# CONFIG_EXTCON is not set ++# CONFIG_MEMORY is not set ++# CONFIG_IIO is not set ++# CONFIG_NTB is not set ++# CONFIG_VME_BUS is not set ++# CONFIG_PWM is not set ++ ++# ++# IRQ chip support ++# ++CONFIG_IRQCHIP=y ++CONFIG_ARM_GIC=y ++CONFIG_ARM_GIC_MAX_NR=1 ++CONFIG_ARM_GIC_V2M=y ++CONFIG_ARM_GIC_V3=y ++CONFIG_ARM_GIC_V3_ITS=y ++CONFIG_ARM_GIC_V3_ITS_PCI=y ++# CONFIG_AL_FIC is not set ++CONFIG_PARTITION_PERCPU=y ++# end of IRQ chip support ++ ++# CONFIG_IPACK_BUS is not set ++CONFIG_RESET_CONTROLLER=y ++# CONFIG_RESET_BRCMSTB_RESCAL is not set ++# CONFIG_RESET_INTEL_GW is not set ++# CONFIG_RESET_TI_SYSCON is not set ++ ++# ++# PHY Subsystem ++# ++# CONFIG_GENERIC_PHY is not set ++# CONFIG_PHY_XGENE is not set ++# CONFIG_BCM_KONA_USB2_PHY is not set ++# CONFIG_PHY_CADENCE_DP is not set ++# CONFIG_PHY_CADENCE_DPHY is not set ++# CONFIG_PHY_CADENCE_SIERRA is not set ++# CONFIG_PHY_FSL_IMX8MQ_USB is not set ++# CONFIG_PHY_MIXEL_MIPI_DPHY is not set ++# CONFIG_PHY_PXA_28NM_HSIC is not set ++# CONFIG_PHY_PXA_28NM_USB2 is not set ++# CONFIG_PHY_MAPPHONE_MDM6600 is not set ++# CONFIG_PHY_OCELOT_SERDES is not set ++# CONFIG_PHY_QCOM_USB_HS is not set ++# CONFIG_PHY_QCOM_USB_HSIC is not set ++# CONFIG_PHY_TUSB1210 is not set ++# CONFIG_PHY_INTEL_EMMC is not set ++# end of PHY Subsystem ++ ++# CONFIG_POWERCAP is not set ++# CONFIG_MCB is not set ++ ++# ++# Performance monitor support ++# ++# CONFIG_ARM_CCI_PMU is not set ++# CONFIG_ARM_CCN is not set ++CONFIG_ARM_PMU=y ++# CONFIG_ARM_DSU_PMU is not set ++# CONFIG_ARM_SPE_PMU is not set ++# end of Performance monitor support ++ ++CONFIG_RAS=y ++ ++# ++# Android ++# ++# CONFIG_ANDROID is not set ++# end of Android ++ ++# CONFIG_LIBNVDIMM is not set ++# CONFIG_DAX is not set ++CONFIG_NVMEM=y ++CONFIG_NVMEM_SYSFS=y ++ ++# ++# HW tracing support ++# ++# CONFIG_STM is not set ++# CONFIG_INTEL_TH is not set ++# end of HW tracing support ++ ++# CONFIG_FPGA is not set ++# CONFIG_FSI is not set ++# CONFIG_TEE is not set ++CONFIG_PM_OPP=y ++# CONFIG_SIOX is not set ++# CONFIG_SLIMBUS is not set ++# CONFIG_INTERCONNECT is not set ++# CONFIG_COUNTER is not set ++# end of Device Drivers ++ ++# ++# File systems ++# ++CONFIG_DCACHE_WORD_ACCESS=y ++# CONFIG_VALIDATE_FS_PARSER is not set ++CONFIG_FS_IOMAP=y ++# CONFIG_EXT2_FS is not set ++CONFIG_EXT3_FS=y ++CONFIG_EXT3_FS_POSIX_ACL=y ++CONFIG_EXT3_FS_SECURITY=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_USE_FOR_EXT2=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++# CONFIG_EXT4_DEBUG is not set ++CONFIG_JBD2=y ++# CONFIG_JBD2_DEBUG is not set ++CONFIG_FS_MBCACHE=y ++# CONFIG_REISERFS_FS is not set ++# CONFIG_JFS_FS is not set ++# CONFIG_XFS_FS is not set ++# CONFIG_GFS2_FS is not set ++# CONFIG_OCFS2_FS is not set ++# CONFIG_BTRFS_FS is not set ++# CONFIG_NILFS2_FS is not set ++# CONFIG_F2FS_FS is not set ++# CONFIG_FS_DAX is not set ++CONFIG_FS_POSIX_ACL=y ++CONFIG_EXPORTFS=y ++CONFIG_EXPORTFS_BLOCK_OPS=y ++CONFIG_FILE_LOCKING=y ++CONFIG_MANDATORY_FILE_LOCKING=y ++# CONFIG_FS_ENCRYPTION is not set ++# CONFIG_FS_VERITY is not set ++CONFIG_FSNOTIFY=y ++CONFIG_DNOTIFY=y ++CONFIG_INOTIFY_USER=y ++CONFIG_FANOTIFY=y ++CONFIG_QUOTA=y ++CONFIG_QUOTA_NETLINK_INTERFACE=y ++CONFIG_PRINT_QUOTA_WARNING=y ++# CONFIG_QUOTA_DEBUG is not set ++CONFIG_QUOTA_TREE=m ++CONFIG_QFMT_V1=m ++CONFIG_QFMT_V2=m ++CONFIG_QUOTACTL=y ++CONFIG_AUTOFS4_FS=y ++CONFIG_AUTOFS_FS=y ++CONFIG_FUSE_FS=m ++# CONFIG_CUSE is not set ++# CONFIG_VIRTIO_FS is not set ++CONFIG_OVERLAY_FS=y ++# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set ++CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y ++# CONFIG_OVERLAY_FS_INDEX is not set ++# CONFIG_OVERLAY_FS_XINO_AUTO is not set ++# CONFIG_OVERLAY_FS_METACOPY is not set ++ ++# ++# Caches ++# ++# CONFIG_FSCACHE is not set ++# end of Caches ++ ++# ++# CD-ROM/DVD Filesystems ++# ++CONFIG_ISO9660_FS=y ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=y ++# end of CD-ROM/DVD Filesystems ++ ++# ++# DOS/FAT/NT Filesystems ++# ++CONFIG_FAT_FS=y ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_CODEPAGE=866 ++CONFIG_FAT_DEFAULT_IOCHARSET="utf8" ++CONFIG_FAT_DEFAULT_UTF8=y ++# CONFIG_NTFS_FS is not set ++# end of DOS/FAT/NT Filesystems ++ ++# ++# Pseudo filesystems ++# ++CONFIG_PROC_FS=y ++CONFIG_PROC_KCORE=y ++CONFIG_PROC_SYSCTL=y ++CONFIG_PROC_PAGE_MONITOR=y ++# CONFIG_PROC_CHILDREN is not set ++CONFIG_KERNFS=y ++CONFIG_SYSFS=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_TMPFS_XATTR=y ++CONFIG_HUGETLBFS=y ++CONFIG_HUGETLB_PAGE=y ++CONFIG_MEMFD_CREATE=y ++CONFIG_ARCH_HAS_GIGANTIC_PAGE=y ++CONFIG_CONFIGFS_FS=m ++CONFIG_EFIVAR_FS=m ++# end of Pseudo filesystems ++ ++CONFIG_MISC_FILESYSTEMS=y ++# CONFIG_ORANGEFS_FS is not set ++# CONFIG_ADFS_FS is not set ++# CONFIG_AFFS_FS is not set ++# CONFIG_ECRYPT_FS is not set ++# CONFIG_HFS_FS is not set ++# CONFIG_HFSPLUS_FS is not set ++# CONFIG_BEFS_FS is not set ++# CONFIG_BFS_FS is not set ++# CONFIG_EFS_FS is not set ++# CONFIG_JFFS2_FS is not set ++# CONFIG_CRAMFS is not set ++CONFIG_SQUASHFS=y ++CONFIG_SQUASHFS_FILE_CACHE=y ++# CONFIG_SQUASHFS_FILE_DIRECT is not set ++CONFIG_SQUASHFS_DECOMP_SINGLE=y ++# CONFIG_SQUASHFS_DECOMP_MULTI is not set ++# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set ++CONFIG_SQUASHFS_XATTR=y ++CONFIG_SQUASHFS_ZLIB=y ++CONFIG_SQUASHFS_LZ4=y ++CONFIG_SQUASHFS_LZO=y ++CONFIG_SQUASHFS_XZ=y ++# CONFIG_SQUASHFS_ZSTD is not set ++# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set ++# CONFIG_SQUASHFS_EMBEDDED is not set ++CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 ++# CONFIG_VXFS_FS is not set ++# CONFIG_MINIX_FS is not set ++# CONFIG_OMFS_FS is not set ++# CONFIG_HPFS_FS is not set ++# CONFIG_QNX4FS_FS is not set ++# CONFIG_QNX6FS_FS is not set ++# CONFIG_ROMFS_FS is not set ++CONFIG_PSTORE=y ++CONFIG_PSTORE_DEFLATE_COMPRESS=y ++# CONFIG_PSTORE_LZO_COMPRESS is not set ++# CONFIG_PSTORE_LZ4_COMPRESS is not set ++# CONFIG_PSTORE_LZ4HC_COMPRESS is not set ++# CONFIG_PSTORE_842_COMPRESS is not set ++# CONFIG_PSTORE_ZSTD_COMPRESS is not set ++CONFIG_PSTORE_COMPRESS=y ++CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y ++CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" ++# CONFIG_PSTORE_CONSOLE is not set ++# CONFIG_PSTORE_PMSG is not set ++# CONFIG_PSTORE_FTRACE is not set ++# CONFIG_PSTORE_RAM is not set ++# CONFIG_SYSV_FS is not set ++# CONFIG_UFS_FS is not set ++# CONFIG_EROFS_FS is not set ++CONFIG_NETWORK_FILESYSTEMS=y ++CONFIG_NFS_FS=m ++CONFIG_NFS_V3=m ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=m ++# CONFIG_NFS_SWAP is not set ++CONFIG_NFS_V4_1=y ++CONFIG_NFS_V4_2=y ++CONFIG_PNFS_FILE_LAYOUT=m ++CONFIG_PNFS_BLOCK=m ++CONFIG_PNFS_FLEXFILE_LAYOUT=m ++CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" ++CONFIG_NFS_V4_1_MIGRATION=y ++# CONFIG_NFS_USE_LEGACY_DNS is not set ++CONFIG_NFS_USE_KERNEL_DNS=y ++# CONFIG_NFS_DISABLE_UDP_SUPPORT is not set ++# CONFIG_NFS_V4_2_READ_PLUS is not set ++CONFIG_NFSD=m ++CONFIG_NFSD_V2_ACL=y ++CONFIG_NFSD_V3=y ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y ++CONFIG_NFSD_PNFS=y ++CONFIG_NFSD_BLOCKLAYOUT=y ++CONFIG_NFSD_SCSILAYOUT=y ++# CONFIG_NFSD_FLEXFILELAYOUT is not set ++CONFIG_NFSD_V4_2_INTER_SSC=y ++CONFIG_GRACE_PERIOD=m ++CONFIG_LOCKD=m ++CONFIG_LOCKD_V4=y ++CONFIG_NFS_ACL_SUPPORT=m ++CONFIG_NFS_COMMON=y ++CONFIG_SUNRPC=m ++CONFIG_SUNRPC_GSS=m ++CONFIG_SUNRPC_BACKCHANNEL=y ++# CONFIG_SUNRPC_DEBUG is not set ++# CONFIG_CEPH_FS is not set ++CONFIG_CIFS=m ++# CONFIG_CIFS_STATS2 is not set ++CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y ++CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y ++CONFIG_CIFS_XATTR=y ++CONFIG_CIFS_POSIX=y ++CONFIG_CIFS_DEBUG=y ++# CONFIG_CIFS_DEBUG2 is not set ++# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set ++CONFIG_CIFS_DFS_UPCALL=y ++# CONFIG_CODA_FS is not set ++# CONFIG_AFS_FS is not set ++CONFIG_NLS=y ++CONFIG_NLS_DEFAULT="utf8" ++CONFIG_NLS_CODEPAGE_437=y ++# CONFIG_NLS_CODEPAGE_737 is not set ++# CONFIG_NLS_CODEPAGE_775 is not set ++# CONFIG_NLS_CODEPAGE_850 is not set ++# CONFIG_NLS_CODEPAGE_852 is not set ++# CONFIG_NLS_CODEPAGE_855 is not set ++# CONFIG_NLS_CODEPAGE_857 is not set ++# CONFIG_NLS_CODEPAGE_860 is not set ++# CONFIG_NLS_CODEPAGE_861 is not set ++# CONFIG_NLS_CODEPAGE_862 is not set ++# CONFIG_NLS_CODEPAGE_863 is not set ++# CONFIG_NLS_CODEPAGE_864 is not set ++# CONFIG_NLS_CODEPAGE_865 is not set ++CONFIG_NLS_CODEPAGE_866=y ++# CONFIG_NLS_CODEPAGE_869 is not set ++# CONFIG_NLS_CODEPAGE_936 is not set ++# CONFIG_NLS_CODEPAGE_950 is not set ++# CONFIG_NLS_CODEPAGE_932 is not set ++# CONFIG_NLS_CODEPAGE_949 is not set ++# CONFIG_NLS_CODEPAGE_874 is not set ++# CONFIG_NLS_ISO8859_8 is not set ++# CONFIG_NLS_CODEPAGE_1250 is not set ++# CONFIG_NLS_CODEPAGE_1251 is not set ++# CONFIG_NLS_ASCII is not set ++CONFIG_NLS_ISO8859_1=y ++# CONFIG_NLS_ISO8859_2 is not set ++# CONFIG_NLS_ISO8859_3 is not set ++# CONFIG_NLS_ISO8859_4 is not set ++# CONFIG_NLS_ISO8859_5 is not set ++# CONFIG_NLS_ISO8859_6 is not set ++# CONFIG_NLS_ISO8859_7 is not set ++# CONFIG_NLS_ISO8859_9 is not set ++# CONFIG_NLS_ISO8859_13 is not set ++# CONFIG_NLS_ISO8859_14 is not set ++# CONFIG_NLS_ISO8859_15 is not set ++# CONFIG_NLS_KOI8_R is not set ++# CONFIG_NLS_KOI8_U is not set ++# CONFIG_NLS_MAC_ROMAN is not set ++# CONFIG_NLS_MAC_CELTIC is not set ++# CONFIG_NLS_MAC_CENTEURO is not set ++# CONFIG_NLS_MAC_CROATIAN is not set ++# CONFIG_NLS_MAC_CYRILLIC is not set ++# CONFIG_NLS_MAC_GAELIC is not set ++# CONFIG_NLS_MAC_GREEK is not set ++# CONFIG_NLS_MAC_ICELAND is not set ++# CONFIG_NLS_MAC_INUIT is not set ++# CONFIG_NLS_MAC_ROMANIAN is not set ++# CONFIG_NLS_MAC_TURKISH is not set ++CONFIG_NLS_UTF8=y ++# CONFIG_DLM is not set ++# CONFIG_UNICODE is not set ++CONFIG_IO_WQ=y ++# end of File systems ++ ++# ++# Security options ++# ++CONFIG_KEYS=y ++# CONFIG_KEYS_REQUEST_CACHE is not set ++CONFIG_PERSISTENT_KEYRINGS=y ++CONFIG_BIG_KEYS=y ++# CONFIG_ENCRYPTED_KEYS is not set ++# CONFIG_KEY_DH_OPERATIONS is not set ++# CONFIG_SECURITY_DMESG_RESTRICT is not set ++# CONFIG_SECURITY is not set ++# CONFIG_SECURITYFS is not set ++CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y ++# CONFIG_HARDENED_USERCOPY is not set ++# CONFIG_FORTIFY_SOURCE is not set ++# CONFIG_STATIC_USERMODEHELPER is not set ++CONFIG_DEFAULT_SECURITY_DAC=y ++CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity" ++ ++# ++# Kernel hardening options ++# ++ ++# ++# Memory initialization ++# ++CONFIG_INIT_STACK_NONE=y ++# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set ++# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set ++# end of Memory initialization ++# end of Kernel hardening options ++# end of Security options ++ ++CONFIG_XOR_BLOCKS=m ++CONFIG_ASYNC_CORE=m ++CONFIG_ASYNC_MEMCPY=m ++CONFIG_ASYNC_XOR=m ++CONFIG_ASYNC_PQ=m ++CONFIG_ASYNC_RAID6_RECOV=m ++CONFIG_CRYPTO=y ++ ++# ++# Crypto core or helper ++# ++CONFIG_CRYPTO_ALGAPI=y ++CONFIG_CRYPTO_ALGAPI2=y ++CONFIG_CRYPTO_AEAD=y ++CONFIG_CRYPTO_AEAD2=y ++CONFIG_CRYPTO_SKCIPHER=y ++CONFIG_CRYPTO_SKCIPHER2=y ++CONFIG_CRYPTO_HASH=y ++CONFIG_CRYPTO_HASH2=y ++CONFIG_CRYPTO_RNG=y ++CONFIG_CRYPTO_RNG2=y ++CONFIG_CRYPTO_RNG_DEFAULT=y ++CONFIG_CRYPTO_AKCIPHER2=y ++CONFIG_CRYPTO_KPP2=y ++CONFIG_CRYPTO_ACOMP2=y ++CONFIG_CRYPTO_MANAGER=y ++CONFIG_CRYPTO_MANAGER2=y ++# CONFIG_CRYPTO_USER is not set ++CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y ++CONFIG_CRYPTO_GF128MUL=y ++CONFIG_CRYPTO_NULL=y ++CONFIG_CRYPTO_NULL2=y ++# CONFIG_CRYPTO_PCRYPT is not set ++# CONFIG_CRYPTO_CRYPTD is not set ++CONFIG_CRYPTO_AUTHENC=m ++# CONFIG_CRYPTO_TEST is not set ++ ++# ++# Public-key cryptography ++# ++# CONFIG_CRYPTO_RSA is not set ++# CONFIG_CRYPTO_DH is not set ++# CONFIG_CRYPTO_ECDH is not set ++# CONFIG_CRYPTO_ECRDSA is not set ++# CONFIG_CRYPTO_CURVE25519 is not set ++ ++# ++# Authenticated Encryption with Associated Data ++# ++CONFIG_CRYPTO_GCM=y ++# CONFIG_CRYPTO_CHACHA20POLY1305 is not set ++# CONFIG_CRYPTO_AEGIS128 is not set ++CONFIG_CRYPTO_SEQIV=y ++# CONFIG_CRYPTO_ECHAINIV is not set ++ ++# ++# Block modes ++# ++CONFIG_CRYPTO_CBC=y ++# CONFIG_CRYPTO_CFB is not set ++CONFIG_CRYPTO_CTR=y ++# CONFIG_CRYPTO_CTS is not set ++# CONFIG_CRYPTO_LRW is not set ++# CONFIG_CRYPTO_OFB is not set ++# CONFIG_CRYPTO_PCBC is not set ++# CONFIG_CRYPTO_XTS is not set ++# CONFIG_CRYPTO_KEYWRAP is not set ++# CONFIG_CRYPTO_ADIANTUM is not set ++CONFIG_CRYPTO_ESSIV=m ++ ++# ++# Hash modes ++# ++CONFIG_CRYPTO_HMAC=y ++# CONFIG_CRYPTO_XCBC is not set ++# CONFIG_CRYPTO_VMAC is not set ++ ++# ++# Digest ++# ++CONFIG_CRYPTO_CRC32C=y ++CONFIG_CRYPTO_CRC32=m ++# CONFIG_CRYPTO_XXHASH is not set ++# CONFIG_CRYPTO_BLAKE2B is not set ++# CONFIG_CRYPTO_BLAKE2S is not set ++CONFIG_CRYPTO_CRCT10DIF=y ++CONFIG_CRYPTO_GHASH=y ++# CONFIG_CRYPTO_POLY1305 is not set ++# CONFIG_CRYPTO_MICHAEL_MIC is not set ++# CONFIG_CRYPTO_RMD128 is not set ++# CONFIG_CRYPTO_RMD160 is not set ++# CONFIG_CRYPTO_RMD256 is not set ++# CONFIG_CRYPTO_RMD320 is not set ++CONFIG_CRYPTO_SHA1=m ++CONFIG_CRYPTO_SHA256=y ++# CONFIG_CRYPTO_SHA3 is not set ++# CONFIG_CRYPTO_SM3 is not set ++# CONFIG_CRYPTO_STREEBOG is not set ++# CONFIG_CRYPTO_TGR192 is not set ++# CONFIG_CRYPTO_WP512 is not set ++ ++# ++# Ciphers ++# ++CONFIG_CRYPTO_AES=y ++# CONFIG_CRYPTO_AES_TI is not set ++# CONFIG_CRYPTO_ANUBIS is not set ++# CONFIG_CRYPTO_ARC4 is not set ++# CONFIG_CRYPTO_BLOWFISH is not set ++# CONFIG_CRYPTO_CAMELLIA is not set ++# CONFIG_CRYPTO_CAST5 is not set ++# CONFIG_CRYPTO_CAST6 is not set ++# CONFIG_CRYPTO_DES is not set ++# CONFIG_CRYPTO_FCRYPT is not set ++# CONFIG_CRYPTO_KHAZAD is not set ++# CONFIG_CRYPTO_SALSA20 is not set ++# CONFIG_CRYPTO_CHACHA20 is not set ++# CONFIG_CRYPTO_SEED is not set ++# CONFIG_CRYPTO_SERPENT is not set ++# CONFIG_CRYPTO_SM4 is not set ++# CONFIG_CRYPTO_TEA is not set ++# CONFIG_CRYPTO_TWOFISH is not set ++ ++# ++# Compression ++# ++CONFIG_CRYPTO_DEFLATE=y ++CONFIG_CRYPTO_LZO=y ++# CONFIG_CRYPTO_842 is not set ++# CONFIG_CRYPTO_LZ4 is not set ++# CONFIG_CRYPTO_LZ4HC is not set ++# CONFIG_CRYPTO_ZSTD is not set ++ ++# ++# Random Number Generation ++# ++# CONFIG_CRYPTO_ANSI_CPRNG is not set ++CONFIG_CRYPTO_DRBG_MENU=y ++CONFIG_CRYPTO_DRBG_HMAC=y ++# CONFIG_CRYPTO_DRBG_HASH is not set ++# CONFIG_CRYPTO_DRBG_CTR is not set ++CONFIG_CRYPTO_DRBG=y ++CONFIG_CRYPTO_JITTERENTROPY=y ++# CONFIG_CRYPTO_USER_API_HASH is not set ++# CONFIG_CRYPTO_USER_API_SKCIPHER is not set ++# CONFIG_CRYPTO_USER_API_RNG is not set ++# CONFIG_CRYPTO_USER_API_AEAD is not set ++ ++# ++# Crypto library routines ++# ++CONFIG_CRYPTO_LIB_AES=y ++CONFIG_CRYPTO_LIB_ARC4=m ++# CONFIG_CRYPTO_LIB_BLAKE2S is not set ++# CONFIG_CRYPTO_LIB_CHACHA is not set ++# CONFIG_CRYPTO_LIB_CURVE25519 is not set ++CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 ++# CONFIG_CRYPTO_LIB_POLY1305 is not set ++# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set ++CONFIG_CRYPTO_LIB_SHA256=y ++# CONFIG_CRYPTO_HW is not set ++# CONFIG_ASYMMETRIC_KEY_TYPE is not set ++ ++# ++# Certificates for signature checking ++# ++# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set ++# end of Certificates for signature checking ++ ++CONFIG_BINARY_PRINTF=y ++ ++# ++# Library routines ++# ++CONFIG_RAID6_PQ=m ++CONFIG_RAID6_PQ_BENCHMARK=y ++# CONFIG_PACKING is not set ++CONFIG_BITREVERSE=y ++CONFIG_HAVE_ARCH_BITREVERSE=y ++CONFIG_GENERIC_STRNCPY_FROM_USER=y ++CONFIG_GENERIC_STRNLEN_USER=y ++CONFIG_GENERIC_NET_UTILS=y ++# CONFIG_CORDIC is not set ++CONFIG_RATIONAL=y ++CONFIG_GENERIC_PCI_IOMAP=y ++CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y ++CONFIG_ARCH_HAS_FAST_MULTIPLIER=y ++# CONFIG_INDIRECT_PIO is not set ++CONFIG_CRC_CCITT=m ++CONFIG_CRC16=y ++# CONFIG_CRC_T10DIF is not set ++CONFIG_CRC_ITU_T=y ++CONFIG_CRC32=y ++# CONFIG_CRC32_SELFTEST is not set ++CONFIG_CRC32_SLICEBY8=y ++# CONFIG_CRC32_SLICEBY4 is not set ++# CONFIG_CRC32_SARWATE is not set ++# CONFIG_CRC32_BIT is not set ++# CONFIG_CRC64 is not set ++# CONFIG_CRC4 is not set ++# CONFIG_CRC7 is not set ++CONFIG_LIBCRC32C=m ++# CONFIG_CRC8 is not set ++CONFIG_XXHASH=y ++CONFIG_AUDIT_GENERIC=y ++CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y ++CONFIG_AUDIT_COMPAT_GENERIC=y ++# CONFIG_RANDOM32_SELFTEST is not set ++CONFIG_ZLIB_INFLATE=y ++CONFIG_ZLIB_DEFLATE=y ++CONFIG_LZO_COMPRESS=y ++CONFIG_LZO_DECOMPRESS=y ++CONFIG_LZ4_DECOMPRESS=y ++CONFIG_XZ_DEC=y ++CONFIG_XZ_DEC_X86=y ++CONFIG_XZ_DEC_POWERPC=y ++CONFIG_XZ_DEC_IA64=y ++CONFIG_XZ_DEC_ARM=y ++CONFIG_XZ_DEC_ARMTHUMB=y ++CONFIG_XZ_DEC_SPARC=y ++CONFIG_XZ_DEC_BCJ=y ++# CONFIG_XZ_DEC_TEST is not set ++CONFIG_DECOMPRESS_GZIP=y ++CONFIG_DECOMPRESS_LZMA=y ++CONFIG_DECOMPRESS_XZ=y ++CONFIG_DECOMPRESS_LZO=y ++CONFIG_DECOMPRESS_LZ4=y ++CONFIG_GENERIC_ALLOCATOR=y ++CONFIG_XARRAY_MULTI=y ++CONFIG_ASSOCIATIVE_ARRAY=y ++CONFIG_HAS_IOMEM=y ++CONFIG_HAS_IOPORT_MAP=y ++CONFIG_HAS_DMA=y ++CONFIG_NEED_SG_DMA_LENGTH=y ++CONFIG_NEED_DMA_MAP_STATE=y ++CONFIG_ARCH_DMA_ADDR_T_64BIT=y ++CONFIG_DMA_DECLARE_COHERENT=y ++CONFIG_ARCH_HAS_SETUP_DMA_OPS=y ++CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y ++CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y ++CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y ++CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y ++CONFIG_SWIOTLB=y ++CONFIG_DMA_NONCOHERENT_MMAP=y ++CONFIG_DMA_REMAP=y ++CONFIG_DMA_DIRECT_REMAP=y ++CONFIG_DMA_CMA=y ++ ++# ++# Default contiguous memory area size: ++# ++CONFIG_CMA_SIZE_MBYTES=256 ++CONFIG_CMA_SIZE_SEL_MBYTES=y ++# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set ++# CONFIG_CMA_SIZE_SEL_MIN is not set ++# CONFIG_CMA_SIZE_SEL_MAX is not set ++CONFIG_CMA_ALIGNMENT=8 ++# CONFIG_DMA_API_DEBUG is not set ++CONFIG_SGL_ALLOC=y ++CONFIG_CPU_RMAP=y ++CONFIG_DQL=y ++CONFIG_GLOB=y ++# CONFIG_GLOB_SELFTEST is not set ++CONFIG_NLATTR=y ++CONFIG_IRQ_POLL=y ++CONFIG_LIBFDT=y ++CONFIG_UCS2_STRING=y ++CONFIG_HAVE_GENERIC_VDSO=y ++CONFIG_GENERIC_GETTIMEOFDAY=y ++CONFIG_FONT_SUPPORT=y ++# CONFIG_FONTS is not set ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y ++CONFIG_SG_POOL=y ++CONFIG_SBITMAP=y ++# CONFIG_STRING_SELFTEST is not set ++# end of Library routines ++ ++# ++# Kernel hacking ++# ++ ++# ++# printk and dmesg options ++# ++CONFIG_PRINTK_TIME=y ++# CONFIG_PRINTK_CALLER is not set ++CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 ++CONFIG_CONSOLE_LOGLEVEL_QUIET=4 ++CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 ++CONFIG_BOOT_PRINTK_DELAY=y ++CONFIG_DYNAMIC_DEBUG=y ++CONFIG_SYMBOLIC_ERRNAME=y ++CONFIG_DEBUG_BUGVERBOSE=y ++# end of printk and dmesg options ++ ++# ++# Compile-time checks and compiler options ++# ++# CONFIG_DEBUG_INFO is not set ++CONFIG_ENABLE_MUST_CHECK=y ++CONFIG_FRAME_WARN=2048 ++CONFIG_STRIP_ASM_SYMS=y ++# CONFIG_READABLE_ASM is not set ++# CONFIG_HEADERS_INSTALL is not set ++CONFIG_OPTIMIZE_INLINING=y ++# CONFIG_DEBUG_SECTION_MISMATCH is not set ++CONFIG_SECTION_MISMATCH_WARN_ONLY=y ++CONFIG_ARCH_WANT_FRAME_POINTERS=y ++CONFIG_FRAME_POINTER=y ++# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set ++# end of Compile-time checks and compiler options ++ ++# ++# Generic Kernel Debugging Instruments ++# ++CONFIG_MAGIC_SYSRQ=y ++CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6 ++CONFIG_MAGIC_SYSRQ_SERIAL=y ++CONFIG_DEBUG_FS=y ++CONFIG_HAVE_ARCH_KGDB=y ++CONFIG_KGDB=y ++CONFIG_KGDB_SERIAL_CONSOLE=y ++# CONFIG_KGDB_TESTS is not set ++CONFIG_KGDB_KDB=y ++CONFIG_KDB_DEFAULT_ENABLE=0x1 ++# CONFIG_KDB_KEYBOARD is not set ++CONFIG_KDB_CONTINUE_CATASTROPHIC=0 ++CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y ++# CONFIG_UBSAN is not set ++CONFIG_UBSAN_ALIGNMENT=y ++# end of Generic Kernel Debugging Instruments ++ ++CONFIG_DEBUG_KERNEL=y ++CONFIG_DEBUG_MISC=y ++ ++# ++# Memory Debugging ++# ++CONFIG_PAGE_EXTENSION=y ++# CONFIG_DEBUG_PAGEALLOC is not set ++# CONFIG_PAGE_OWNER is not set ++CONFIG_PAGE_POISONING=y ++CONFIG_PAGE_POISONING_NO_SANITY=y ++# CONFIG_PAGE_POISONING_ZERO is not set ++# CONFIG_DEBUG_PAGE_REF is not set ++# CONFIG_DEBUG_RODATA_TEST is not set ++CONFIG_GENERIC_PTDUMP=y ++# CONFIG_PTDUMP_DEBUGFS is not set ++# CONFIG_DEBUG_OBJECTS is not set ++# CONFIG_DEBUG_SLAB is not set ++CONFIG_HAVE_DEBUG_KMEMLEAK=y ++# CONFIG_DEBUG_KMEMLEAK is not set ++# CONFIG_DEBUG_STACK_USAGE is not set ++CONFIG_SCHED_STACK_END_CHECK=y ++# CONFIG_DEBUG_VM is not set ++CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y ++# CONFIG_DEBUG_VIRTUAL is not set ++CONFIG_DEBUG_MEMORY_INIT=y ++# CONFIG_DEBUG_PER_CPU_MAPS is not set ++CONFIG_HAVE_ARCH_KASAN=y ++CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y ++CONFIG_CC_HAS_KASAN_GENERIC=y ++# CONFIG_KASAN is not set ++CONFIG_KASAN_STACK=1 ++# end of Memory Debugging ++ ++# CONFIG_DEBUG_SHIRQ is not set ++ ++# ++# Debug Oops, Lockups and Hangs ++# ++# CONFIG_PANIC_ON_OOPS is not set ++CONFIG_PANIC_ON_OOPS_VALUE=0 ++CONFIG_PANIC_TIMEOUT=0 ++CONFIG_LOCKUP_DETECTOR=y ++CONFIG_SOFTLOCKUP_DETECTOR=y ++# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set ++CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 ++CONFIG_DETECT_HUNG_TASK=y ++CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 ++# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set ++CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 ++CONFIG_WQ_WATCHDOG=y ++# end of Debug Oops, Lockups and Hangs ++ ++# ++# Scheduler Debugging ++# ++CONFIG_SCHED_DEBUG=y ++CONFIG_SCHED_INFO=y ++CONFIG_SCHEDSTATS=y ++# end of Scheduler Debugging ++ ++# CONFIG_DEBUG_TIMEKEEPING is not set ++CONFIG_DEBUG_PREEMPT=y ++ ++# ++# Lock Debugging (spinlocks, mutexes, etc...) ++# ++CONFIG_LOCK_DEBUGGING_SUPPORT=y ++CONFIG_PROVE_LOCKING=y ++# CONFIG_LOCK_STAT is not set ++CONFIG_DEBUG_RT_MUTEXES=y ++CONFIG_DEBUG_SPINLOCK=y ++CONFIG_DEBUG_MUTEXES=y ++CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y ++CONFIG_DEBUG_RWSEMS=y ++CONFIG_DEBUG_LOCK_ALLOC=y ++CONFIG_LOCKDEP=y ++# CONFIG_DEBUG_LOCKDEP is not set ++# CONFIG_DEBUG_ATOMIC_SLEEP is not set ++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set ++# CONFIG_LOCK_TORTURE_TEST is not set ++# CONFIG_WW_MUTEX_SELFTEST is not set ++# end of Lock Debugging (spinlocks, mutexes, etc...) ++ ++CONFIG_TRACE_IRQFLAGS=y ++CONFIG_STACKTRACE=y ++# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set ++# CONFIG_DEBUG_KOBJECT is not set ++CONFIG_HAVE_DEBUG_BUGVERBOSE=y ++ ++# ++# Debug kernel data structures ++# ++CONFIG_DEBUG_LIST=y ++# CONFIG_DEBUG_PLIST is not set ++# CONFIG_DEBUG_SG is not set ++# CONFIG_DEBUG_NOTIFIERS is not set ++# CONFIG_BUG_ON_DATA_CORRUPTION is not set ++# end of Debug kernel data structures ++ ++# CONFIG_DEBUG_CREDENTIALS is not set ++ ++# ++# RCU Debugging ++# ++CONFIG_PROVE_RCU=y ++# CONFIG_RCU_PERF_TEST is not set ++# CONFIG_RCU_TORTURE_TEST is not set ++CONFIG_RCU_CPU_STALL_TIMEOUT=21 ++# CONFIG_RCU_TRACE is not set ++# CONFIG_RCU_EQS_DEBUG is not set ++# end of RCU Debugging ++ ++# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set ++# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set ++# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set ++CONFIG_LATENCYTOP=y ++CONFIG_NOP_TRACER=y ++CONFIG_HAVE_FUNCTION_TRACER=y ++CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y ++CONFIG_HAVE_DYNAMIC_FTRACE=y ++CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y ++CONFIG_HAVE_SYSCALL_TRACEPOINTS=y ++CONFIG_HAVE_C_RECORDMCOUNT=y ++CONFIG_TRACER_MAX_TRACE=y ++CONFIG_TRACE_CLOCK=y ++CONFIG_RING_BUFFER=y ++CONFIG_EVENT_TRACING=y ++CONFIG_CONTEXT_SWITCH_TRACER=y ++CONFIG_RING_BUFFER_ALLOW_SWAP=y ++CONFIG_PREEMPTIRQ_TRACEPOINTS=y ++CONFIG_TRACING=y ++CONFIG_GENERIC_TRACER=y ++CONFIG_TRACING_SUPPORT=y ++CONFIG_FTRACE=y ++# CONFIG_BOOTTIME_TRACING is not set ++CONFIG_FUNCTION_TRACER=y ++CONFIG_FUNCTION_GRAPH_TRACER=y ++CONFIG_DYNAMIC_FTRACE=y ++# CONFIG_FUNCTION_PROFILER is not set ++CONFIG_STACK_TRACER=y ++# CONFIG_PREEMPTIRQ_EVENTS is not set ++CONFIG_IRQSOFF_TRACER=y ++# CONFIG_PREEMPT_TRACER is not set ++CONFIG_SCHED_TRACER=y ++CONFIG_HWLAT_TRACER=y ++CONFIG_FTRACE_SYSCALLS=y ++CONFIG_TRACER_SNAPSHOT=y ++CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y ++CONFIG_BRANCH_PROFILE_NONE=y ++# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set ++# CONFIG_PROFILE_ALL_BRANCHES is not set ++CONFIG_BLK_DEV_IO_TRACE=y ++CONFIG_KPROBE_EVENTS=y ++CONFIG_UPROBE_EVENTS=y ++CONFIG_BPF_EVENTS=y ++CONFIG_DYNAMIC_EVENTS=y ++CONFIG_PROBE_EVENTS=y ++# CONFIG_BPF_KPROBE_OVERRIDE is not set ++CONFIG_FTRACE_MCOUNT_RECORD=y ++# CONFIG_HIST_TRIGGERS is not set ++# CONFIG_TRACE_EVENT_INJECT is not set ++# CONFIG_TRACEPOINT_BENCHMARK is not set ++# CONFIG_RING_BUFFER_BENCHMARK is not set ++# CONFIG_TRACE_EVAL_MAP_FILE is not set ++# CONFIG_FTRACE_STARTUP_TEST is not set ++# CONFIG_RING_BUFFER_STARTUP_TEST is not set ++# CONFIG_PREEMPTIRQ_DELAY_TEST is not set ++# CONFIG_KPROBE_EVENT_GEN_TEST is not set ++# CONFIG_SAMPLES is not set ++CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y ++CONFIG_STRICT_DEVMEM=y ++CONFIG_IO_STRICT_DEVMEM=y ++ ++# ++# arm64 Debugging ++# ++# CONFIG_PID_IN_CONTEXTIDR is not set ++# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set ++# CONFIG_DEBUG_WX is not set ++# CONFIG_DEBUG_ALIGN_RODATA is not set ++# CONFIG_ARM64_RELOC_TEST is not set ++# CONFIG_CORESIGHT is not set ++# end of arm64 Debugging ++ ++# ++# Kernel Testing and Coverage ++# ++# CONFIG_KUNIT is not set ++# CONFIG_NOTIFIER_ERROR_INJECTION is not set ++CONFIG_FUNCTION_ERROR_INJECTION=y ++# CONFIG_FAULT_INJECTION is not set ++CONFIG_ARCH_HAS_KCOV=y ++CONFIG_CC_HAS_SANCOV_TRACE_PC=y ++# CONFIG_KCOV is not set ++# CONFIG_RUNTIME_TESTING_MENU is not set ++# CONFIG_MEMTEST is not set ++# end of Kernel Testing and Coverage ++# end of Kernel hacking +diff --git a/baikal_rk3399_defconfig b/baikal_rk3399_defconfig +new file mode 100644 +index 000000000000..95127478cf40 +--- /dev/null ++++ b/baikal_rk3399_defconfig +@@ -0,0 +1,8627 @@ ++# ++# Automatically generated file; DO NOT EDIT. ++# Linux/arm64 5.15.4 Kernel Configuration ++# ++CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0" ++CONFIG_CC_IS_GCC=y ++CONFIG_GCC_VERSION=100300 ++CONFIG_CLANG_VERSION=0 ++CONFIG_AS_IS_GNU=y ++CONFIG_AS_VERSION=23601 ++CONFIG_LD_IS_BFD=y ++CONFIG_LD_VERSION=23601 ++CONFIG_LLD_VERSION=0 ++CONFIG_CC_CAN_LINK=y ++CONFIG_CC_CAN_LINK_STATIC=y ++CONFIG_CC_HAS_ASM_GOTO=y ++CONFIG_CC_HAS_ASM_INLINE=y ++CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y ++CONFIG_IRQ_WORK=y ++CONFIG_BUILDTIME_TABLE_SORT=y ++CONFIG_THREAD_INFO_IN_TASK=y ++ ++# ++# General setup ++# ++CONFIG_INIT_ENV_ARG_LIMIT=32 ++# CONFIG_COMPILE_TEST is not set ++# CONFIG_WERROR is not set ++CONFIG_LOCALVERSION="" ++CONFIG_LOCALVERSION_AUTO=y ++CONFIG_BUILD_SALT="" ++CONFIG_DEFAULT_INIT="" ++CONFIG_DEFAULT_HOSTNAME="(none)" ++CONFIG_SWAP=y ++CONFIG_SYSVIPC=y ++CONFIG_SYSVIPC_SYSCTL=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_POSIX_MQUEUE_SYSCTL=y ++# CONFIG_WATCH_QUEUE is not set ++CONFIG_CROSS_MEMORY_ATTACH=y ++CONFIG_USELIB=y ++CONFIG_AUDIT=y ++CONFIG_HAVE_ARCH_AUDITSYSCALL=y ++CONFIG_AUDITSYSCALL=y ++ ++# ++# IRQ subsystem ++# ++CONFIG_GENERIC_IRQ_PROBE=y ++CONFIG_GENERIC_IRQ_SHOW=y ++CONFIG_GENERIC_IRQ_SHOW_LEVEL=y ++CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y ++CONFIG_GENERIC_IRQ_MIGRATION=y ++CONFIG_HARDIRQS_SW_RESEND=y ++CONFIG_GENERIC_IRQ_CHIP=y ++CONFIG_IRQ_DOMAIN=y ++CONFIG_IRQ_DOMAIN_HIERARCHY=y ++CONFIG_GENERIC_IRQ_IPI=y ++CONFIG_GENERIC_MSI_IRQ=y ++CONFIG_GENERIC_MSI_IRQ_DOMAIN=y ++CONFIG_IRQ_MSI_IOMMU=y ++CONFIG_HANDLE_DOMAIN_IRQ=y ++CONFIG_IRQ_FORCED_THREADING=y ++CONFIG_SPARSE_IRQ=y ++# CONFIG_GENERIC_IRQ_DEBUGFS is not set ++# end of IRQ subsystem ++ ++CONFIG_GENERIC_TIME_VSYSCALL=y ++CONFIG_GENERIC_CLOCKEVENTS=y ++CONFIG_ARCH_HAS_TICK_BROADCAST=y ++CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y ++# CONFIG_TIME_KUNIT_TEST is not set ++ ++# ++# Timers subsystem ++# ++CONFIG_TICK_ONESHOT=y ++CONFIG_NO_HZ_COMMON=y ++# CONFIG_HZ_PERIODIC is not set ++CONFIG_NO_HZ_IDLE=y ++# CONFIG_NO_HZ_FULL is not set ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++# end of Timers subsystem ++ ++CONFIG_BPF=y ++CONFIG_HAVE_EBPF_JIT=y ++CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y ++ ++# ++# BPF subsystem ++# ++CONFIG_BPF_SYSCALL=y ++CONFIG_BPF_JIT=y ++# CONFIG_BPF_JIT_ALWAYS_ON is not set ++CONFIG_BPF_JIT_DEFAULT_ON=y ++# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set ++CONFIG_USERMODE_DRIVER=y ++# CONFIG_BPF_PRELOAD is not set ++# end of BPF subsystem ++ ++# CONFIG_PREEMPT_NONE is not set ++# CONFIG_PREEMPT_VOLUNTARY is not set ++CONFIG_PREEMPT=y ++CONFIG_PREEMPT_COUNT=y ++CONFIG_PREEMPTION=y ++ ++# ++# CPU/Task time and stats accounting ++# ++CONFIG_TICK_CPU_ACCOUNTING=y ++# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set ++# CONFIG_IRQ_TIME_ACCOUNTING is not set ++CONFIG_SCHED_THERMAL_PRESSURE=y ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++# CONFIG_PSI is not set ++# end of CPU/Task time and stats accounting ++ ++CONFIG_CPU_ISOLATION=y ++ ++# ++# RCU Subsystem ++# ++CONFIG_TREE_RCU=y ++CONFIG_PREEMPT_RCU=y ++# CONFIG_RCU_EXPERT is not set ++CONFIG_SRCU=y ++CONFIG_TREE_SRCU=y ++CONFIG_TASKS_RCU_GENERIC=y ++CONFIG_TASKS_RCU=y ++CONFIG_TASKS_RUDE_RCU=y ++CONFIG_TASKS_TRACE_RCU=y ++CONFIG_RCU_STALL_COMMON=y ++CONFIG_RCU_NEED_SEGCBLIST=y ++# end of RCU Subsystem ++ ++CONFIG_IKCONFIG=y ++CONFIG_IKCONFIG_PROC=y ++# CONFIG_IKHEADERS is not set ++CONFIG_LOG_BUF_SHIFT=17 ++CONFIG_LOG_CPU_MAX_BUF_SHIFT=14 ++CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 ++# CONFIG_PRINTK_INDEX is not set ++CONFIG_GENERIC_SCHED_CLOCK=y ++ ++# ++# Scheduler features ++# ++# CONFIG_UCLAMP_TASK is not set ++# end of Scheduler features ++ ++CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y ++CONFIG_CC_HAS_INT128=y ++CONFIG_ARCH_SUPPORTS_INT128=y ++CONFIG_NUMA_BALANCING=y ++CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y ++CONFIG_CGROUPS=y ++CONFIG_PAGE_COUNTER=y ++CONFIG_MEMCG=y ++CONFIG_MEMCG_SWAP=y ++CONFIG_MEMCG_KMEM=y ++CONFIG_BLK_CGROUP=y ++CONFIG_CGROUP_WRITEBACK=y ++CONFIG_CGROUP_SCHED=y ++CONFIG_FAIR_GROUP_SCHED=y ++CONFIG_CFS_BANDWIDTH=y ++CONFIG_RT_GROUP_SCHED=y ++CONFIG_CGROUP_PIDS=y ++CONFIG_CGROUP_RDMA=y ++CONFIG_CGROUP_FREEZER=y ++CONFIG_CGROUP_HUGETLB=y ++CONFIG_CPUSETS=y ++CONFIG_PROC_PID_CPUSET=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_CGROUP_CPUACCT=y ++CONFIG_CGROUP_PERF=y ++CONFIG_CGROUP_BPF=y ++# CONFIG_CGROUP_MISC is not set ++# CONFIG_CGROUP_DEBUG is not set ++CONFIG_SOCK_CGROUP_DATA=y ++CONFIG_NAMESPACES=y ++CONFIG_UTS_NS=y ++CONFIG_TIME_NS=y ++CONFIG_IPC_NS=y ++CONFIG_USER_NS=y ++CONFIG_PID_NS=y ++CONFIG_NET_NS=y ++# CONFIG_CHECKPOINT_RESTORE is not set ++CONFIG_SCHED_AUTOGROUP=y ++# CONFIG_SYSFS_DEPRECATED is not set ++CONFIG_RELAY=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_INITRAMFS_SOURCE="" ++CONFIG_RD_GZIP=y ++CONFIG_RD_BZIP2=y ++CONFIG_RD_LZMA=y ++CONFIG_RD_XZ=y ++CONFIG_RD_LZO=y ++CONFIG_RD_LZ4=y ++CONFIG_RD_ZSTD=y ++CONFIG_BOOT_CONFIG=y ++CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y ++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set ++CONFIG_LD_ORPHAN_WARN=y ++CONFIG_SYSCTL=y ++CONFIG_HAVE_UID16=y ++CONFIG_SYSCTL_EXCEPTION_TRACE=y ++CONFIG_EXPERT=y ++CONFIG_UID16=y ++CONFIG_MULTIUSER=y ++# CONFIG_SGETMASK_SYSCALL is not set ++CONFIG_SYSFS_SYSCALL=y ++CONFIG_FHANDLE=y ++CONFIG_POSIX_TIMERS=y ++CONFIG_PRINTK=y ++CONFIG_BUG=y ++CONFIG_ELF_CORE=y ++CONFIG_BASE_FULL=y ++CONFIG_FUTEX=y ++CONFIG_FUTEX_PI=y ++CONFIG_HAVE_FUTEX_CMPXCHG=y ++CONFIG_EPOLL=y ++CONFIG_SIGNALFD=y ++CONFIG_TIMERFD=y ++CONFIG_EVENTFD=y ++CONFIG_SHMEM=y ++CONFIG_AIO=y ++CONFIG_IO_URING=y ++CONFIG_ADVISE_SYSCALLS=y ++CONFIG_MEMBARRIER=y ++CONFIG_KALLSYMS=y ++CONFIG_KALLSYMS_ALL=y ++CONFIG_KALLSYMS_BASE_RELATIVE=y ++# CONFIG_USERFAULTFD is not set ++CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y ++CONFIG_KCMP=y ++CONFIG_RSEQ=y ++# CONFIG_DEBUG_RSEQ is not set ++# CONFIG_EMBEDDED is not set ++CONFIG_HAVE_PERF_EVENTS=y ++# CONFIG_PC104 is not set ++ ++# ++# Kernel Performance Events And Counters ++# ++CONFIG_PERF_EVENTS=y ++# CONFIG_DEBUG_PERF_USE_VMALLOC is not set ++# end of Kernel Performance Events And Counters ++ ++CONFIG_VM_EVENT_COUNTERS=y ++CONFIG_SLUB_DEBUG=y ++# CONFIG_COMPAT_BRK is not set ++# CONFIG_SLAB is not set ++CONFIG_SLUB=y ++# CONFIG_SLOB is not set ++CONFIG_SLAB_MERGE_DEFAULT=y ++# CONFIG_SLAB_FREELIST_RANDOM is not set ++# CONFIG_SLAB_FREELIST_HARDENED is not set ++# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set ++CONFIG_SLUB_CPU_PARTIAL=y ++CONFIG_SYSTEM_DATA_VERIFICATION=y ++CONFIG_PROFILING=y ++CONFIG_TRACEPOINTS=y ++# end of General setup ++ ++CONFIG_ARM64=y ++CONFIG_64BIT=y ++CONFIG_MMU=y ++CONFIG_ARM64_PAGE_SHIFT=12 ++CONFIG_ARM64_CONT_PTE_SHIFT=4 ++CONFIG_ARM64_CONT_PMD_SHIFT=4 ++CONFIG_ARCH_MMAP_RND_BITS_MIN=18 ++CONFIG_ARCH_MMAP_RND_BITS_MAX=33 ++CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 ++CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 ++CONFIG_STACKTRACE_SUPPORT=y ++CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 ++CONFIG_LOCKDEP_SUPPORT=y ++CONFIG_GENERIC_BUG=y ++CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y ++CONFIG_GENERIC_HWEIGHT=y ++CONFIG_GENERIC_CSUM=y ++CONFIG_GENERIC_CALIBRATE_DELAY=y ++CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y ++CONFIG_SMP=y ++CONFIG_KERNEL_MODE_NEON=y ++CONFIG_FIX_EARLYCON_MEM=y ++CONFIG_PGTABLE_LEVELS=4 ++CONFIG_ARCH_SUPPORTS_UPROBES=y ++CONFIG_ARCH_PROC_KCORE_TEXT=y ++ ++# ++# Platform selection ++# ++# CONFIG_ARCH_ACTIONS is not set ++# CONFIG_ARCH_SUNXI is not set ++# CONFIG_ARCH_ALPINE is not set ++# CONFIG_ARCH_APPLE is not set ++CONFIG_ARCH_BAIKAL=y ++# CONFIG_ARCH_BCM2835 is not set ++# CONFIG_ARCH_BCM4908 is not set ++# CONFIG_ARCH_BCM_IPROC is not set ++# CONFIG_ARCH_BERLIN is not set ++# CONFIG_ARCH_BITMAIN is not set ++# CONFIG_ARCH_BRCMSTB is not set ++# CONFIG_ARCH_EXYNOS is not set ++# CONFIG_ARCH_SPARX5 is not set ++# CONFIG_ARCH_K3 is not set ++# CONFIG_ARCH_LAYERSCAPE is not set ++# CONFIG_ARCH_LG1K is not set ++# CONFIG_ARCH_HISI is not set ++# CONFIG_ARCH_KEEMBAY is not set ++# CONFIG_ARCH_MEDIATEK is not set ++# CONFIG_ARCH_MESON is not set ++# CONFIG_ARCH_MVEBU is not set ++# CONFIG_ARCH_MXC is not set ++# CONFIG_ARCH_QCOM is not set ++# CONFIG_ARCH_REALTEK is not set ++# CONFIG_ARCH_RENESAS is not set ++CONFIG_ARCH_ROCKCHIP=y ++# CONFIG_ARCH_S32 is not set ++# CONFIG_ARCH_SEATTLE is not set ++# CONFIG_ARCH_INTEL_SOCFPGA is not set ++# CONFIG_ARCH_SYNQUACER is not set ++# CONFIG_ARCH_TEGRA is not set ++# CONFIG_ARCH_SPRD is not set ++# CONFIG_ARCH_THUNDER is not set ++# CONFIG_ARCH_THUNDER2 is not set ++# CONFIG_ARCH_UNIPHIER is not set ++# CONFIG_ARCH_VEXPRESS is not set ++# CONFIG_ARCH_VISCONTI is not set ++# CONFIG_ARCH_XGENE is not set ++# CONFIG_ARCH_ZYNQMP is not set ++# end of Platform selection ++ ++# ++# Kernel Features ++# ++ ++# ++# ARM errata workarounds via the alternatives framework ++# ++CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y ++CONFIG_ARM64_ERRATUM_826319=y ++CONFIG_ARM64_ERRATUM_827319=y ++CONFIG_ARM64_ERRATUM_824069=y ++CONFIG_ARM64_ERRATUM_819472=y ++CONFIG_ARM64_ERRATUM_832075=y ++CONFIG_ARM64_ERRATUM_845719=y ++CONFIG_ARM64_ERRATUM_843419=y ++CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y ++CONFIG_ARM64_ERRATUM_1024718=y ++CONFIG_ARM64_ERRATUM_1418040=y ++CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y ++CONFIG_ARM64_ERRATUM_1165522=y ++CONFIG_ARM64_ERRATUM_1319367=y ++CONFIG_ARM64_ERRATUM_1530923=y ++CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y ++CONFIG_ARM64_ERRATUM_1286807=y ++CONFIG_ARM64_ERRATUM_1463225=y ++CONFIG_ARM64_ERRATUM_1542419=y ++CONFIG_ARM64_ERRATUM_1508412=y ++CONFIG_CAVIUM_ERRATUM_22375=y ++CONFIG_CAVIUM_ERRATUM_23144=y ++CONFIG_CAVIUM_ERRATUM_23154=y ++CONFIG_CAVIUM_ERRATUM_27456=y ++CONFIG_CAVIUM_ERRATUM_30115=y ++CONFIG_CAVIUM_TX2_ERRATUM_219=y ++CONFIG_FUJITSU_ERRATUM_010001=y ++CONFIG_HISILICON_ERRATUM_161600802=y ++CONFIG_QCOM_FALKOR_ERRATUM_1003=y ++CONFIG_QCOM_FALKOR_ERRATUM_1009=y ++CONFIG_QCOM_QDF2400_ERRATUM_0065=y ++CONFIG_QCOM_FALKOR_ERRATUM_E1041=y ++CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y ++CONFIG_SOCIONEXT_SYNQUACER_PREITS=y ++# end of ARM errata workarounds via the alternatives framework ++ ++CONFIG_ARM64_4K_PAGES=y ++# CONFIG_ARM64_16K_PAGES is not set ++# CONFIG_ARM64_64K_PAGES is not set ++# CONFIG_ARM64_VA_BITS_39 is not set ++CONFIG_ARM64_VA_BITS_48=y ++CONFIG_ARM64_VA_BITS=48 ++CONFIG_ARM64_PA_BITS_48=y ++CONFIG_ARM64_PA_BITS=48 ++# CONFIG_CPU_BIG_ENDIAN is not set ++CONFIG_CPU_LITTLE_ENDIAN=y ++CONFIG_SCHED_MC=y ++# CONFIG_SCHED_SMT is not set ++CONFIG_NR_CPUS=256 ++CONFIG_HOTPLUG_CPU=y ++CONFIG_NUMA=y ++CONFIG_NODES_SHIFT=2 ++CONFIG_USE_PERCPU_NUMA_NODE_ID=y ++CONFIG_HAVE_SETUP_PER_CPU_AREA=y ++CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y ++# CONFIG_HZ_100 is not set ++# CONFIG_HZ_250 is not set ++# CONFIG_HZ_300 is not set ++CONFIG_HZ_1000=y ++CONFIG_HZ=1000 ++CONFIG_SCHED_HRTICK=y ++CONFIG_ARCH_SPARSEMEM_ENABLE=y ++CONFIG_HW_PERF_EVENTS=y ++CONFIG_ARCH_HAS_FILTER_PGPROT=y ++# CONFIG_PARAVIRT is not set ++# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set ++CONFIG_KEXEC=y ++# CONFIG_KEXEC_FILE is not set ++# CONFIG_CRASH_DUMP is not set ++CONFIG_TRANS_TABLE=y ++# CONFIG_XEN is not set ++CONFIG_FORCE_MAX_ZONEORDER=11 ++CONFIG_UNMAP_KERNEL_AT_EL0=y ++CONFIG_RODATA_FULL_DEFAULT_ENABLED=y ++# CONFIG_ARM64_SW_TTBR0_PAN is not set ++CONFIG_ARM64_TAGGED_ADDR_ABI=y ++CONFIG_COMPAT=y ++CONFIG_KUSER_HELPERS=y ++CONFIG_ARMV8_DEPRECATED=y ++CONFIG_SWP_EMULATION=y ++CONFIG_CP15_BARRIER_EMULATION=y ++CONFIG_SETEND_EMULATION=y ++ ++# ++# ARMv8.1 architectural features ++# ++CONFIG_ARM64_HW_AFDBM=y ++CONFIG_ARM64_PAN=y ++CONFIG_AS_HAS_LDAPR=y ++CONFIG_AS_HAS_LSE_ATOMICS=y ++CONFIG_ARM64_LSE_ATOMICS=y ++CONFIG_ARM64_USE_LSE_ATOMICS=y ++# end of ARMv8.1 architectural features ++ ++# ++# ARMv8.2 architectural features ++# ++# CONFIG_ARM64_PMEM is not set ++CONFIG_ARM64_RAS_EXTN=y ++CONFIG_ARM64_CNP=y ++# end of ARMv8.2 architectural features ++ ++# ++# ARMv8.3 architectural features ++# ++CONFIG_ARM64_PTR_AUTH=y ++CONFIG_ARM64_PTR_AUTH_KERNEL=y ++CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y ++CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y ++CONFIG_AS_HAS_PAC=y ++CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y ++# end of ARMv8.3 architectural features ++ ++# ++# ARMv8.4 architectural features ++# ++CONFIG_ARM64_AMU_EXTN=y ++CONFIG_AS_HAS_ARMV8_4=y ++CONFIG_ARM64_TLB_RANGE=y ++# end of ARMv8.4 architectural features ++ ++# ++# ARMv8.5 architectural features ++# ++CONFIG_AS_HAS_ARMV8_5=y ++CONFIG_ARM64_BTI=y ++CONFIG_ARM64_BTI_KERNEL=y ++CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y ++CONFIG_ARM64_E0PD=y ++CONFIG_ARCH_RANDOM=y ++CONFIG_ARM64_AS_HAS_MTE=y ++CONFIG_ARM64_MTE=y ++# end of ARMv8.5 architectural features ++ ++# ++# ARMv8.7 architectural features ++# ++CONFIG_ARM64_EPAN=y ++# end of ARMv8.7 architectural features ++ ++CONFIG_ARM64_SVE=y ++CONFIG_ARM64_MODULE_PLTS=y ++# CONFIG_ARM64_PSEUDO_NMI is not set ++CONFIG_RELOCATABLE=y ++# CONFIG_RANDOMIZE_BASE is not set ++CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y ++CONFIG_STACKPROTECTOR_PER_TASK=y ++# end of Kernel Features ++ ++# ++# Boot options ++# ++CONFIG_CMDLINE="" ++CONFIG_EFI_STUB=y ++CONFIG_EFI=y ++CONFIG_DMI=y ++# end of Boot options ++ ++CONFIG_SYSVIPC_COMPAT=y ++ ++# ++# Power management options ++# ++CONFIG_SUSPEND=y ++CONFIG_SUSPEND_FREEZER=y ++# CONFIG_SUSPEND_SKIP_SYNC is not set ++CONFIG_HIBERNATE_CALLBACKS=y ++CONFIG_HIBERNATION=y ++CONFIG_HIBERNATION_SNAPSHOT_DEV=y ++CONFIG_PM_STD_PARTITION="" ++CONFIG_PM_SLEEP=y ++CONFIG_PM_SLEEP_SMP=y ++# CONFIG_PM_AUTOSLEEP is not set ++# CONFIG_PM_WAKELOCKS is not set ++CONFIG_PM=y ++# CONFIG_PM_DEBUG is not set ++CONFIG_PM_CLK=y ++CONFIG_PM_GENERIC_DOMAINS=y ++# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set ++CONFIG_PM_GENERIC_DOMAINS_SLEEP=y ++CONFIG_PM_GENERIC_DOMAINS_OF=y ++CONFIG_CPU_PM=y ++# CONFIG_ENERGY_MODEL is not set ++CONFIG_ARCH_HIBERNATION_POSSIBLE=y ++CONFIG_ARCH_HIBERNATION_HEADER=y ++CONFIG_ARCH_SUSPEND_POSSIBLE=y ++# end of Power management options ++ ++# ++# CPU Power Management ++# ++ ++# ++# CPU Idle ++# ++CONFIG_CPU_IDLE=y ++CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y ++# CONFIG_CPU_IDLE_GOV_LADDER is not set ++CONFIG_CPU_IDLE_GOV_MENU=y ++# CONFIG_CPU_IDLE_GOV_TEO is not set ++CONFIG_DT_IDLE_STATES=y ++ ++# ++# ARM CPU Idle Drivers ++# ++CONFIG_ARM_CPUIDLE=y ++# CONFIG_ARM_PSCI_CPUIDLE is not set ++# end of ARM CPU Idle Drivers ++# end of CPU Idle ++ ++# ++# CPU Frequency scaling ++# ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_GOV_ATTR_SET=y ++CONFIG_CPU_FREQ_GOV_COMMON=y ++CONFIG_CPU_FREQ_STAT=y ++# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set ++# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set ++CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y ++ ++# ++# CPU frequency scaling drivers ++# ++CONFIG_CPUFREQ_DT=m ++CONFIG_CPUFREQ_DT_PLATDEV=y ++CONFIG_ARM_SCPI_CPUFREQ=y ++# end of CPU Frequency scaling ++# end of CPU Power Management ++ ++CONFIG_ARCH_SUPPORTS_ACPI=y ++# CONFIG_ACPI is not set ++# CONFIG_VIRTUALIZATION is not set ++CONFIG_ARM64_CRYPTO=y ++CONFIG_CRYPTO_SHA256_ARM64=y ++CONFIG_CRYPTO_SHA512_ARM64=y ++CONFIG_CRYPTO_SHA1_ARM64_CE=y ++CONFIG_CRYPTO_SHA2_ARM64_CE=y ++# CONFIG_CRYPTO_SHA512_ARM64_CE is not set ++CONFIG_CRYPTO_SHA3_ARM64=m ++CONFIG_CRYPTO_SM3_ARM64_CE=m ++CONFIG_CRYPTO_SM4_ARM64_CE=m ++CONFIG_CRYPTO_GHASH_ARM64_CE=y ++# CONFIG_CRYPTO_CRCT10DIF_ARM64_CE is not set ++CONFIG_CRYPTO_AES_ARM64=y ++CONFIG_CRYPTO_AES_ARM64_CE=y ++CONFIG_CRYPTO_AES_ARM64_CE_CCM=y ++CONFIG_CRYPTO_AES_ARM64_CE_BLK=y ++CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y ++CONFIG_CRYPTO_CHACHA20_NEON=y ++CONFIG_CRYPTO_POLY1305_NEON=m ++CONFIG_CRYPTO_NHPOLY1305_NEON=m ++CONFIG_CRYPTO_AES_ARM64_BS=y ++ ++# ++# General architecture-dependent options ++# ++CONFIG_CRASH_CORE=y ++CONFIG_KEXEC_CORE=y ++CONFIG_KPROBES=y ++CONFIG_JUMP_LABEL=y ++# CONFIG_STATIC_KEYS_SELFTEST is not set ++CONFIG_UPROBES=y ++CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y ++CONFIG_KRETPROBES=y ++CONFIG_HAVE_KPROBES=y ++CONFIG_HAVE_KRETPROBES=y ++CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y ++CONFIG_HAVE_NMI=y ++CONFIG_TRACE_IRQFLAGS_SUPPORT=y ++CONFIG_HAVE_ARCH_TRACEHOOK=y ++CONFIG_HAVE_DMA_CONTIGUOUS=y ++CONFIG_GENERIC_SMP_IDLE_THREAD=y ++CONFIG_GENERIC_IDLE_POLL_SETUP=y ++CONFIG_ARCH_HAS_FORTIFY_SOURCE=y ++CONFIG_ARCH_HAS_KEEPINITRD=y ++CONFIG_ARCH_HAS_SET_MEMORY=y ++CONFIG_ARCH_HAS_SET_DIRECT_MAP=y ++CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y ++CONFIG_ARCH_WANTS_NO_INSTR=y ++CONFIG_HAVE_ASM_MODVERSIONS=y ++CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y ++CONFIG_HAVE_RSEQ=y ++CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y ++CONFIG_HAVE_HW_BREAKPOINT=y ++CONFIG_HAVE_PERF_REGS=y ++CONFIG_HAVE_PERF_USER_STACK_DUMP=y ++CONFIG_HAVE_ARCH_JUMP_LABEL=y ++CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y ++CONFIG_MMU_GATHER_TABLE_FREE=y ++CONFIG_MMU_GATHER_RCU_TABLE_FREE=y ++CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y ++CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y ++CONFIG_HAVE_CMPXCHG_LOCAL=y ++CONFIG_HAVE_CMPXCHG_DOUBLE=y ++CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y ++CONFIG_HAVE_ARCH_SECCOMP=y ++CONFIG_HAVE_ARCH_SECCOMP_FILTER=y ++CONFIG_SECCOMP=y ++CONFIG_SECCOMP_FILTER=y ++# CONFIG_SECCOMP_CACHE_DEBUG is not set ++CONFIG_HAVE_ARCH_STACKLEAK=y ++CONFIG_HAVE_STACKPROTECTOR=y ++CONFIG_STACKPROTECTOR=y ++CONFIG_STACKPROTECTOR_STRONG=y ++CONFIG_ARCH_SUPPORTS_LTO_CLANG=y ++CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y ++CONFIG_LTO_NONE=y ++CONFIG_ARCH_SUPPORTS_CFI_CLANG=y ++CONFIG_HAVE_CONTEXT_TRACKING=y ++CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y ++CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y ++CONFIG_HAVE_MOVE_PUD=y ++CONFIG_HAVE_MOVE_PMD=y ++CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y ++CONFIG_HAVE_ARCH_HUGE_VMAP=y ++CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y ++CONFIG_HAVE_MOD_ARCH_SPECIFIC=y ++CONFIG_MODULES_USE_ELF_RELA=y ++CONFIG_ARCH_HAS_ELF_RANDOMIZE=y ++CONFIG_HAVE_ARCH_MMAP_RND_BITS=y ++CONFIG_ARCH_MMAP_RND_BITS=18 ++CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y ++CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 ++CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y ++CONFIG_CLONE_BACKWARDS=y ++CONFIG_OLD_SIGSUSPEND3=y ++CONFIG_COMPAT_OLD_SIGACTION=y ++CONFIG_COMPAT_32BIT_TIME=y ++CONFIG_HAVE_ARCH_VMAP_STACK=y ++CONFIG_VMAP_STACK=y ++CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y ++# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set ++CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y ++CONFIG_STRICT_KERNEL_RWX=y ++CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y ++CONFIG_STRICT_MODULE_RWX=y ++CONFIG_HAVE_ARCH_COMPILER_H=y ++CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y ++CONFIG_ARCH_USE_MEMREMAP_PROT=y ++# CONFIG_LOCK_EVENT_COUNTS is not set ++CONFIG_ARCH_HAS_RELR=y ++CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y ++CONFIG_HAVE_ARCH_PFN_VALID=y ++CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y ++ ++# ++# GCOV-based kernel profiling ++# ++# CONFIG_GCOV_KERNEL is not set ++CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y ++# end of GCOV-based kernel profiling ++ ++CONFIG_HAVE_GCC_PLUGINS=y ++# end of General architecture-dependent options ++ ++CONFIG_RT_MUTEXES=y ++CONFIG_BASE_SMALL=0 ++CONFIG_MODULES=y ++# CONFIG_MODULE_FORCE_LOAD is not set ++CONFIG_MODULE_UNLOAD=y ++# CONFIG_MODULE_FORCE_UNLOAD is not set ++# CONFIG_MODVERSIONS is not set ++# CONFIG_MODULE_SRCVERSION_ALL is not set ++# CONFIG_MODULE_SIG is not set ++# CONFIG_MODULE_COMPRESS_NONE is not set ++# CONFIG_MODULE_COMPRESS_GZIP is not set ++CONFIG_MODULE_COMPRESS_XZ=y ++# CONFIG_MODULE_COMPRESS_ZSTD is not set ++# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set ++CONFIG_MODPROBE_PATH="/sbin/modprobe" ++# CONFIG_TRIM_UNUSED_KSYMS is not set ++CONFIG_MODULES_TREE_LOOKUP=y ++CONFIG_BLOCK=y ++CONFIG_BLK_CGROUP_RWSTAT=y ++CONFIG_BLK_DEV_BSG_COMMON=y ++CONFIG_BLK_DEV_BSGLIB=y ++CONFIG_BLK_DEV_INTEGRITY=y ++CONFIG_BLK_DEV_INTEGRITY_T10=y ++CONFIG_BLK_DEV_ZONED=y ++CONFIG_BLK_DEV_THROTTLING=y ++# CONFIG_BLK_DEV_THROTTLING_LOW is not set ++CONFIG_BLK_WBT=y ++CONFIG_BLK_WBT_MQ=y ++# CONFIG_BLK_CGROUP_IOLATENCY is not set ++# CONFIG_BLK_CGROUP_FC_APPID is not set ++# CONFIG_BLK_CGROUP_IOCOST is not set ++# CONFIG_BLK_CGROUP_IOPRIO is not set ++CONFIG_BLK_DEBUG_FS=y ++CONFIG_BLK_DEBUG_FS_ZONED=y ++# CONFIG_BLK_SED_OPAL is not set ++# CONFIG_BLK_INLINE_ENCRYPTION is not set ++ ++# ++# Partition Types ++# ++CONFIG_PARTITION_ADVANCED=y ++# CONFIG_ACORN_PARTITION is not set ++# CONFIG_AIX_PARTITION is not set ++# CONFIG_OSF_PARTITION is not set ++# CONFIG_AMIGA_PARTITION is not set ++# CONFIG_ATARI_PARTITION is not set ++# CONFIG_MAC_PARTITION is not set ++CONFIG_MSDOS_PARTITION=y ++# CONFIG_BSD_DISKLABEL is not set ++# CONFIG_MINIX_SUBPARTITION is not set ++# CONFIG_SOLARIS_X86_PARTITION is not set ++# CONFIG_UNIXWARE_DISKLABEL is not set ++# CONFIG_LDM_PARTITION is not set ++# CONFIG_SGI_PARTITION is not set ++# CONFIG_ULTRIX_PARTITION is not set ++# CONFIG_SUN_PARTITION is not set ++# CONFIG_KARMA_PARTITION is not set ++CONFIG_EFI_PARTITION=y ++# CONFIG_SYSV68_PARTITION is not set ++# CONFIG_CMDLINE_PARTITION is not set ++# end of Partition Types ++ ++CONFIG_BLOCK_COMPAT=y ++CONFIG_BLK_MQ_PCI=y ++CONFIG_BLK_MQ_VIRTIO=y ++CONFIG_BLK_PM=y ++CONFIG_BLOCK_HOLDER_DEPRECATED=y ++ ++# ++# IO Schedulers ++# ++CONFIG_MQ_IOSCHED_DEADLINE=y ++CONFIG_MQ_IOSCHED_KYBER=y ++CONFIG_IOSCHED_BFQ=y ++CONFIG_BFQ_GROUP_IOSCHED=y ++# CONFIG_BFQ_CGROUP_DEBUG is not set ++# end of IO Schedulers ++ ++CONFIG_PADATA=y ++CONFIG_ASN1=y ++CONFIG_UNINLINE_SPIN_UNLOCK=y ++CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y ++CONFIG_MUTEX_SPIN_ON_OWNER=y ++CONFIG_RWSEM_SPIN_ON_OWNER=y ++CONFIG_LOCK_SPIN_ON_OWNER=y ++CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y ++CONFIG_QUEUED_SPINLOCKS=y ++CONFIG_ARCH_USE_QUEUED_RWLOCKS=y ++CONFIG_QUEUED_RWLOCKS=y ++CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y ++CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y ++CONFIG_FREEZER=y ++ ++# ++# Executable file formats ++# ++CONFIG_BINFMT_ELF=y ++CONFIG_COMPAT_BINFMT_ELF=y ++CONFIG_ARCH_BINFMT_ELF_STATE=y ++CONFIG_ARCH_HAVE_ELF_PROT=y ++CONFIG_ARCH_USE_GNU_PROPERTY=y ++CONFIG_ELFCORE=y ++# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set ++CONFIG_BINFMT_SCRIPT=y ++CONFIG_BINFMT_MISC=m ++CONFIG_COREDUMP=y ++# end of Executable file formats ++ ++# ++# Memory Management options ++# ++CONFIG_SPARSEMEM=y ++CONFIG_SPARSEMEM_EXTREME=y ++CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y ++CONFIG_SPARSEMEM_VMEMMAP=y ++CONFIG_HAVE_FAST_GUP=y ++CONFIG_ARCH_KEEP_MEMBLOCK=y ++CONFIG_MEMORY_ISOLATION=y ++CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y ++# CONFIG_MEMORY_HOTPLUG is not set ++CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y ++CONFIG_SPLIT_PTLOCK_CPUS=4 ++CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y ++CONFIG_COMPACTION=y ++CONFIG_PAGE_REPORTING=y ++CONFIG_MIGRATION=y ++CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y ++CONFIG_ARCH_ENABLE_THP_MIGRATION=y ++CONFIG_CONTIG_ALLOC=y ++CONFIG_PHYS_ADDR_T_64BIT=y ++CONFIG_KSM=y ++CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 ++CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y ++# CONFIG_MEMORY_FAILURE is not set ++CONFIG_TRANSPARENT_HUGEPAGE=y ++# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set ++CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y ++CONFIG_CLEANCACHE=y ++CONFIG_FRONTSWAP=y ++CONFIG_CMA=y ++# CONFIG_CMA_DEBUG is not set ++# CONFIG_CMA_DEBUGFS is not set ++# CONFIG_CMA_SYSFS is not set ++CONFIG_CMA_AREAS=7 ++CONFIG_ZSWAP=y ++# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set ++# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO is not set ++# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set ++# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set ++# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set ++CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y ++CONFIG_ZSWAP_COMPRESSOR_DEFAULT="zstd" ++# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD is not set ++CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD=y ++# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set ++CONFIG_ZSWAP_ZPOOL_DEFAULT="z3fold" ++CONFIG_ZSWAP_DEFAULT_ON=y ++CONFIG_ZPOOL=y ++CONFIG_ZBUD=y ++CONFIG_Z3FOLD=y ++CONFIG_ZSMALLOC=y ++# CONFIG_ZSMALLOC_STAT is not set ++CONFIG_GENERIC_EARLY_IOREMAP=y ++# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set ++# CONFIG_IDLE_PAGE_TRACKING is not set ++CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y ++CONFIG_ARCH_HAS_PTE_DEVMAP=y ++CONFIG_ARCH_HAS_ZONE_DMA_SET=y ++CONFIG_ZONE_DMA=y ++CONFIG_ZONE_DMA32=y ++CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y ++# CONFIG_PERCPU_STATS is not set ++# CONFIG_GUP_TEST is not set ++# CONFIG_READ_ONLY_THP_FOR_FS is not set ++CONFIG_ARCH_HAS_PTE_SPECIAL=y ++CONFIG_SECRETMEM=y ++ ++# ++# Data Access Monitoring ++# ++# CONFIG_DAMON is not set ++# end of Data Access Monitoring ++# end of Memory Management options ++ ++CONFIG_NET=y ++CONFIG_COMPAT_NETLINK_MESSAGES=y ++CONFIG_NET_INGRESS=y ++CONFIG_NET_REDIRECT=y ++CONFIG_SKB_EXTENSIONS=y ++ ++# ++# Networking options ++# ++CONFIG_PACKET=y ++CONFIG_PACKET_DIAG=m ++CONFIG_UNIX=y ++CONFIG_UNIX_SCM=y ++CONFIG_AF_UNIX_OOB=y ++CONFIG_UNIX_DIAG=m ++CONFIG_TLS=m ++CONFIG_TLS_DEVICE=y ++# CONFIG_TLS_TOE is not set ++CONFIG_XFRM=y ++CONFIG_XFRM_OFFLOAD=y ++CONFIG_XFRM_ALGO=m ++CONFIG_XFRM_USER=m ++CONFIG_XFRM_INTERFACE=m ++CONFIG_XFRM_SUB_POLICY=y ++CONFIG_XFRM_MIGRATE=y ++CONFIG_XFRM_STATISTICS=y ++CONFIG_XFRM_AH=m ++CONFIG_XFRM_ESP=m ++CONFIG_XFRM_IPCOMP=m ++CONFIG_NET_KEY=m ++CONFIG_NET_KEY_MIGRATE=y ++CONFIG_XDP_SOCKETS=y ++# CONFIG_XDP_SOCKETS_DIAG is not set ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_FIB_TRIE_STATS=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_ROUTE_MULTIPATH=y ++CONFIG_IP_ROUTE_VERBOSE=y ++CONFIG_IP_ROUTE_CLASSID=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_BOOTP=y ++CONFIG_IP_PNP_RARP=y ++CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE_DEMUX=m ++CONFIG_NET_IP_TUNNEL=m ++CONFIG_NET_IPGRE=m ++CONFIG_NET_IPGRE_BROADCAST=y ++CONFIG_IP_MROUTE_COMMON=y ++CONFIG_IP_MROUTE=y ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IP_PIMSM_V1=y ++CONFIG_IP_PIMSM_V2=y ++CONFIG_SYN_COOKIES=y ++CONFIG_NET_IPVTI=m ++CONFIG_NET_UDP_TUNNEL=m ++CONFIG_NET_FOU=m ++CONFIG_NET_FOU_IP_TUNNELS=y ++CONFIG_INET_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_ESP_OFFLOAD=m ++# CONFIG_INET_ESPINTCP is not set ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_XFRM_TUNNEL=m ++CONFIG_INET_TUNNEL=m ++CONFIG_INET_DIAG=m ++CONFIG_INET_TCP_DIAG=m ++CONFIG_INET_UDP_DIAG=m ++CONFIG_INET_RAW_DIAG=m ++CONFIG_INET_DIAG_DESTROY=y ++CONFIG_TCP_CONG_ADVANCED=y ++CONFIG_TCP_CONG_BIC=m ++CONFIG_TCP_CONG_CUBIC=y ++CONFIG_TCP_CONG_WESTWOOD=m ++CONFIG_TCP_CONG_HTCP=m ++CONFIG_TCP_CONG_HSTCP=m ++CONFIG_TCP_CONG_HYBLA=m ++CONFIG_TCP_CONG_VEGAS=m ++CONFIG_TCP_CONG_NV=m ++CONFIG_TCP_CONG_SCALABLE=m ++CONFIG_TCP_CONG_LP=m ++CONFIG_TCP_CONG_VENO=m ++CONFIG_TCP_CONG_YEAH=m ++CONFIG_TCP_CONG_ILLINOIS=m ++CONFIG_TCP_CONG_DCTCP=m ++CONFIG_TCP_CONG_CDG=m ++CONFIG_TCP_CONG_BBR=m ++# CONFIG_DEFAULT_CUBIC is not set ++CONFIG_DEFAULT_RENO=y ++CONFIG_DEFAULT_TCP_CONG="reno" ++# CONFIG_TCP_MD5SIG is not set ++CONFIG_IPV6=y ++CONFIG_IPV6_ROUTER_PREF=y ++CONFIG_IPV6_ROUTE_INFO=y ++CONFIG_IPV6_OPTIMISTIC_DAD=y ++CONFIG_INET6_AH=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_ESP_OFFLOAD=m ++# CONFIG_INET6_ESPINTCP is not set ++CONFIG_INET6_IPCOMP=m ++CONFIG_IPV6_MIP6=m ++CONFIG_IPV6_ILA=m ++CONFIG_INET6_XFRM_TUNNEL=m ++CONFIG_INET6_TUNNEL=m ++CONFIG_IPV6_VTI=m ++CONFIG_IPV6_SIT=m ++CONFIG_IPV6_SIT_6RD=y ++CONFIG_IPV6_NDISC_NODETYPE=y ++CONFIG_IPV6_TUNNEL=m ++CONFIG_IPV6_GRE=m ++CONFIG_IPV6_FOU=m ++CONFIG_IPV6_FOU_TUNNEL=m ++CONFIG_IPV6_MULTIPLE_TABLES=y ++CONFIG_IPV6_SUBTREES=y ++CONFIG_IPV6_MROUTE=y ++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IPV6_PIMSM_V2=y ++CONFIG_IPV6_SEG6_LWTUNNEL=y ++CONFIG_IPV6_SEG6_HMAC=y ++CONFIG_IPV6_SEG6_BPF=y ++# CONFIG_IPV6_RPL_LWTUNNEL is not set ++# CONFIG_IPV6_IOAM6_LWTUNNEL is not set ++# CONFIG_MPTCP is not set ++# CONFIG_NETWORK_SECMARK is not set ++CONFIG_NET_PTP_CLASSIFY=y ++CONFIG_NETWORK_PHY_TIMESTAMPING=y ++CONFIG_NETFILTER=y ++CONFIG_NETFILTER_ADVANCED=y ++CONFIG_BRIDGE_NETFILTER=m ++ ++# ++# Core Netfilter Configuration ++# ++CONFIG_NETFILTER_INGRESS=y ++CONFIG_NETFILTER_NETLINK=m ++CONFIG_NETFILTER_FAMILY_BRIDGE=y ++CONFIG_NETFILTER_FAMILY_ARP=y ++# CONFIG_NETFILTER_NETLINK_HOOK is not set ++CONFIG_NETFILTER_NETLINK_ACCT=m ++CONFIG_NETFILTER_NETLINK_QUEUE=m ++CONFIG_NETFILTER_NETLINK_LOG=m ++CONFIG_NETFILTER_NETLINK_OSF=m ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_LOG_SYSLOG=m ++CONFIG_NETFILTER_CONNCOUNT=m ++CONFIG_NF_CONNTRACK_MARK=y ++CONFIG_NF_CONNTRACK_ZONES=y ++# CONFIG_NF_CONNTRACK_PROCFS is not set ++CONFIG_NF_CONNTRACK_EVENTS=y ++CONFIG_NF_CONNTRACK_TIMEOUT=y ++CONFIG_NF_CONNTRACK_TIMESTAMP=y ++CONFIG_NF_CONNTRACK_LABELS=y ++CONFIG_NF_CT_PROTO_DCCP=y ++CONFIG_NF_CT_PROTO_GRE=y ++CONFIG_NF_CT_PROTO_SCTP=y ++CONFIG_NF_CT_PROTO_UDPLITE=y ++CONFIG_NF_CONNTRACK_AMANDA=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_H323=m ++CONFIG_NF_CONNTRACK_IRC=m ++CONFIG_NF_CONNTRACK_BROADCAST=m ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m ++CONFIG_NF_CONNTRACK_SNMP=m ++CONFIG_NF_CONNTRACK_PPTP=m ++CONFIG_NF_CONNTRACK_SANE=m ++CONFIG_NF_CONNTRACK_SIP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NF_CT_NETLINK=m ++CONFIG_NF_CT_NETLINK_TIMEOUT=m ++CONFIG_NF_CT_NETLINK_HELPER=m ++CONFIG_NETFILTER_NETLINK_GLUE_CT=y ++CONFIG_NF_NAT=m ++CONFIG_NF_NAT_AMANDA=m ++CONFIG_NF_NAT_FTP=m ++CONFIG_NF_NAT_IRC=m ++CONFIG_NF_NAT_SIP=m ++CONFIG_NF_NAT_TFTP=m ++CONFIG_NF_NAT_REDIRECT=y ++CONFIG_NF_NAT_MASQUERADE=y ++CONFIG_NETFILTER_SYNPROXY=m ++CONFIG_NF_TABLES=m ++CONFIG_NF_TABLES_INET=y ++CONFIG_NF_TABLES_NETDEV=y ++CONFIG_NFT_NUMGEN=m ++CONFIG_NFT_CT=m ++CONFIG_NFT_FLOW_OFFLOAD=m ++CONFIG_NFT_COUNTER=m ++CONFIG_NFT_CONNLIMIT=m ++CONFIG_NFT_LOG=m ++CONFIG_NFT_LIMIT=m ++CONFIG_NFT_MASQ=m ++CONFIG_NFT_REDIR=m ++CONFIG_NFT_NAT=m ++CONFIG_NFT_TUNNEL=m ++CONFIG_NFT_OBJREF=m ++CONFIG_NFT_QUEUE=m ++CONFIG_NFT_QUOTA=m ++CONFIG_NFT_REJECT=m ++CONFIG_NFT_REJECT_INET=m ++CONFIG_NFT_COMPAT=m ++CONFIG_NFT_HASH=m ++CONFIG_NFT_FIB=m ++CONFIG_NFT_FIB_INET=m ++CONFIG_NFT_XFRM=m ++CONFIG_NFT_SOCKET=m ++CONFIG_NFT_OSF=m ++CONFIG_NFT_TPROXY=m ++CONFIG_NFT_SYNPROXY=m ++CONFIG_NF_DUP_NETDEV=m ++CONFIG_NFT_DUP_NETDEV=m ++CONFIG_NFT_FWD_NETDEV=m ++CONFIG_NFT_FIB_NETDEV=m ++# CONFIG_NFT_REJECT_NETDEV is not set ++CONFIG_NF_FLOW_TABLE_INET=m ++CONFIG_NF_FLOW_TABLE=m ++CONFIG_NETFILTER_XTABLES=m ++CONFIG_NETFILTER_XTABLES_COMPAT=y ++ ++# ++# Xtables combined modules ++# ++CONFIG_NETFILTER_XT_MARK=m ++CONFIG_NETFILTER_XT_CONNMARK=m ++CONFIG_NETFILTER_XT_SET=m ++ ++# ++# Xtables targets ++# ++CONFIG_NETFILTER_XT_TARGET_AUDIT=m ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++CONFIG_NETFILTER_XT_TARGET_CT=m ++CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_HL=m ++CONFIG_NETFILTER_XT_TARGET_HMARK=m ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m ++CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_LOG=m ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_NAT=m ++CONFIG_NETFILTER_XT_TARGET_NETMAP=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m ++CONFIG_NETFILTER_XT_TARGET_RATEEST=m ++CONFIG_NETFILTER_XT_TARGET_REDIRECT=m ++CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m ++CONFIG_NETFILTER_XT_TARGET_TEE=m ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m ++CONFIG_NETFILTER_XT_TARGET_TRACE=m ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m ++ ++# ++# Xtables matches ++# ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m ++CONFIG_NETFILTER_XT_MATCH_BPF=m ++CONFIG_NETFILTER_XT_MATCH_CGROUP=m ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_CPU=m ++CONFIG_NETFILTER_XT_MATCH_DCCP=m ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ECN=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_HL=m ++CONFIG_NETFILTER_XT_MATCH_IPCOMP=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_IPVS=m ++CONFIG_NETFILTER_XT_MATCH_L2TP=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m ++CONFIG_NETFILTER_XT_MATCH_OSF=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++CONFIG_NETFILTER_XT_MATCH_SCTP=m ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++# end of Core Netfilter Configuration ++ ++CONFIG_IP_SET=m ++CONFIG_IP_SET_MAX=256 ++CONFIG_IP_SET_BITMAP_IP=m ++CONFIG_IP_SET_BITMAP_IPMAC=m ++CONFIG_IP_SET_BITMAP_PORT=m ++CONFIG_IP_SET_HASH_IP=m ++CONFIG_IP_SET_HASH_IPMARK=m ++CONFIG_IP_SET_HASH_IPPORT=m ++CONFIG_IP_SET_HASH_IPPORTIP=m ++CONFIG_IP_SET_HASH_IPPORTNET=m ++CONFIG_IP_SET_HASH_IPMAC=m ++CONFIG_IP_SET_HASH_MAC=m ++CONFIG_IP_SET_HASH_NETPORTNET=m ++CONFIG_IP_SET_HASH_NET=m ++CONFIG_IP_SET_HASH_NETNET=m ++CONFIG_IP_SET_HASH_NETPORT=m ++CONFIG_IP_SET_HASH_NETIFACE=m ++CONFIG_IP_SET_LIST_SET=m ++CONFIG_IP_VS=m ++CONFIG_IP_VS_IPV6=y ++# CONFIG_IP_VS_DEBUG is not set ++CONFIG_IP_VS_TAB_BITS=12 ++ ++# ++# IPVS transport protocol load balancing support ++# ++CONFIG_IP_VS_PROTO_TCP=y ++CONFIG_IP_VS_PROTO_UDP=y ++CONFIG_IP_VS_PROTO_AH_ESP=y ++CONFIG_IP_VS_PROTO_ESP=y ++CONFIG_IP_VS_PROTO_AH=y ++CONFIG_IP_VS_PROTO_SCTP=y ++ ++# ++# IPVS scheduler ++# ++CONFIG_IP_VS_RR=m ++CONFIG_IP_VS_WRR=m ++CONFIG_IP_VS_LC=m ++CONFIG_IP_VS_WLC=m ++CONFIG_IP_VS_FO=m ++CONFIG_IP_VS_OVF=m ++CONFIG_IP_VS_LBLC=m ++CONFIG_IP_VS_LBLCR=m ++CONFIG_IP_VS_DH=m ++CONFIG_IP_VS_SH=m ++CONFIG_IP_VS_MH=m ++CONFIG_IP_VS_SED=m ++CONFIG_IP_VS_NQ=m ++# CONFIG_IP_VS_TWOS is not set ++ ++# ++# IPVS SH scheduler ++# ++CONFIG_IP_VS_SH_TAB_BITS=8 ++ ++# ++# IPVS MH scheduler ++# ++CONFIG_IP_VS_MH_TAB_INDEX=12 ++ ++# ++# IPVS application helper ++# ++CONFIG_IP_VS_FTP=m ++CONFIG_IP_VS_NFCT=y ++CONFIG_IP_VS_PE_SIP=m ++ ++# ++# IP: Netfilter Configuration ++# ++CONFIG_NF_DEFRAG_IPV4=m ++CONFIG_NF_SOCKET_IPV4=m ++CONFIG_NF_TPROXY_IPV4=m ++CONFIG_NF_TABLES_IPV4=y ++CONFIG_NFT_REJECT_IPV4=m ++CONFIG_NFT_DUP_IPV4=m ++CONFIG_NFT_FIB_IPV4=m ++CONFIG_NF_TABLES_ARP=y ++CONFIG_NF_FLOW_TABLE_IPV4=m ++CONFIG_NF_DUP_IPV4=m ++CONFIG_NF_LOG_ARP=m ++CONFIG_NF_LOG_IPV4=m ++CONFIG_NF_REJECT_IPV4=m ++CONFIG_NF_NAT_SNMP_BASIC=m ++CONFIG_NF_NAT_PPTP=m ++CONFIG_NF_NAT_H323=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_RPFILTER=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=m ++CONFIG_IP_NF_TARGET_REJECT=m ++CONFIG_IP_NF_TARGET_SYNPROXY=m ++CONFIG_IP_NF_NAT=m ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_CLUSTERIP=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++# end of IP: Netfilter Configuration ++ ++# ++# IPv6: Netfilter Configuration ++# ++CONFIG_NF_SOCKET_IPV6=m ++CONFIG_NF_TPROXY_IPV6=m ++CONFIG_NF_TABLES_IPV6=y ++CONFIG_NFT_REJECT_IPV6=m ++CONFIG_NFT_DUP_IPV6=m ++CONFIG_NFT_FIB_IPV6=m ++CONFIG_NF_FLOW_TABLE_IPV6=m ++CONFIG_NF_DUP_IPV6=m ++CONFIG_NF_REJECT_IPV6=m ++CONFIG_NF_LOG_IPV6=m ++CONFIG_IP6_NF_IPTABLES=m ++CONFIG_IP6_NF_MATCH_AH=m ++CONFIG_IP6_NF_MATCH_EUI64=m ++CONFIG_IP6_NF_MATCH_FRAG=m ++CONFIG_IP6_NF_MATCH_OPTS=m ++CONFIG_IP6_NF_MATCH_HL=m ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++CONFIG_IP6_NF_MATCH_MH=m ++CONFIG_IP6_NF_MATCH_RPFILTER=m ++CONFIG_IP6_NF_MATCH_RT=m ++CONFIG_IP6_NF_MATCH_SRH=m ++CONFIG_IP6_NF_TARGET_HL=m ++CONFIG_IP6_NF_FILTER=m ++CONFIG_IP6_NF_TARGET_REJECT=m ++CONFIG_IP6_NF_TARGET_SYNPROXY=m ++CONFIG_IP6_NF_MANGLE=m ++CONFIG_IP6_NF_RAW=m ++CONFIG_IP6_NF_NAT=m ++CONFIG_IP6_NF_TARGET_MASQUERADE=m ++CONFIG_IP6_NF_TARGET_NPT=m ++# end of IPv6: Netfilter Configuration ++ ++CONFIG_NF_DEFRAG_IPV6=m ++CONFIG_NF_TABLES_BRIDGE=m ++CONFIG_NFT_BRIDGE_META=m ++CONFIG_NFT_BRIDGE_REJECT=m ++CONFIG_NF_CONNTRACK_BRIDGE=m ++CONFIG_BRIDGE_NF_EBTABLES=m ++CONFIG_BRIDGE_EBT_BROUTE=m ++CONFIG_BRIDGE_EBT_T_FILTER=m ++CONFIG_BRIDGE_EBT_T_NAT=m ++CONFIG_BRIDGE_EBT_802_3=m ++CONFIG_BRIDGE_EBT_AMONG=m ++CONFIG_BRIDGE_EBT_ARP=m ++CONFIG_BRIDGE_EBT_IP=m ++CONFIG_BRIDGE_EBT_IP6=m ++CONFIG_BRIDGE_EBT_LIMIT=m ++CONFIG_BRIDGE_EBT_MARK=m ++CONFIG_BRIDGE_EBT_PKTTYPE=m ++CONFIG_BRIDGE_EBT_STP=m ++CONFIG_BRIDGE_EBT_VLAN=m ++CONFIG_BRIDGE_EBT_ARPREPLY=m ++CONFIG_BRIDGE_EBT_DNAT=m ++CONFIG_BRIDGE_EBT_MARK_T=m ++CONFIG_BRIDGE_EBT_REDIRECT=m ++CONFIG_BRIDGE_EBT_SNAT=m ++CONFIG_BRIDGE_EBT_LOG=m ++CONFIG_BRIDGE_EBT_NFLOG=m ++CONFIG_BPFILTER=y ++CONFIG_BPFILTER_UMH=m ++# CONFIG_IP_DCCP is not set ++# CONFIG_IP_SCTP is not set ++# CONFIG_RDS is not set ++# CONFIG_TIPC is not set ++# CONFIG_ATM is not set ++CONFIG_L2TP=m ++CONFIG_L2TP_DEBUGFS=m ++CONFIG_L2TP_V3=y ++CONFIG_L2TP_IP=m ++CONFIG_L2TP_ETH=m ++CONFIG_STP=y ++CONFIG_GARP=y ++CONFIG_MRP=y ++CONFIG_BRIDGE=m ++CONFIG_BRIDGE_IGMP_SNOOPING=y ++CONFIG_BRIDGE_VLAN_FILTERING=y ++CONFIG_BRIDGE_MRP=y ++CONFIG_BRIDGE_CFM=y ++# CONFIG_NET_DSA is not set ++CONFIG_VLAN_8021Q=y ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_VLAN_8021Q_MVRP=y ++# CONFIG_DECNET is not set ++CONFIG_LLC=y ++# CONFIG_LLC2 is not set ++# CONFIG_ATALK is not set ++# CONFIG_X25 is not set ++# CONFIG_LAPB is not set ++# CONFIG_PHONET is not set ++# CONFIG_6LOWPAN is not set ++# CONFIG_IEEE802154 is not set ++# CONFIG_NET_SCHED is not set ++# CONFIG_DCB is not set ++CONFIG_DNS_RESOLVER=m ++# CONFIG_BATMAN_ADV is not set ++# CONFIG_OPENVSWITCH is not set ++# CONFIG_VSOCKETS is not set ++CONFIG_NETLINK_DIAG=m ++# CONFIG_MPLS is not set ++# CONFIG_NET_NSH is not set ++# CONFIG_HSR is not set ++# CONFIG_NET_SWITCHDEV is not set ++CONFIG_NET_L3_MASTER_DEV=y ++# CONFIG_QRTR is not set ++# CONFIG_NET_NCSI is not set ++CONFIG_PCPU_DEV_REFCNT=y ++CONFIG_RPS=y ++CONFIG_RFS_ACCEL=y ++CONFIG_SOCK_RX_QUEUE_MAPPING=y ++CONFIG_XPS=y ++CONFIG_CGROUP_NET_PRIO=y ++CONFIG_CGROUP_NET_CLASSID=y ++CONFIG_NET_RX_BUSY_POLL=y ++CONFIG_BQL=y ++# CONFIG_BPF_STREAM_PARSER is not set ++CONFIG_NET_FLOW_LIMIT=y ++ ++# ++# Network testing ++# ++CONFIG_NET_PKTGEN=m ++CONFIG_NET_DROP_MONITOR=y ++# end of Network testing ++# end of Networking options ++ ++# CONFIG_HAMRADIO is not set ++CONFIG_CAN=m ++CONFIG_CAN_RAW=m ++CONFIG_CAN_BCM=m ++CONFIG_CAN_GW=m ++CONFIG_CAN_J1939=m ++# CONFIG_CAN_ISOTP is not set ++ ++# ++# CAN Device Drivers ++# ++CONFIG_CAN_VCAN=m ++CONFIG_CAN_VXCAN=m ++CONFIG_CAN_SLCAN=m ++CONFIG_CAN_DEV=m ++CONFIG_CAN_CALC_BITTIMING=y ++# CONFIG_CAN_FLEXCAN is not set ++CONFIG_CAN_GRCAN=m ++CONFIG_CAN_KVASER_PCIEFD=m ++CONFIG_CAN_XILINXCAN=m ++CONFIG_CAN_C_CAN=m ++CONFIG_CAN_C_CAN_PLATFORM=m ++CONFIG_CAN_C_CAN_PCI=m ++CONFIG_CAN_CC770=m ++CONFIG_CAN_CC770_ISA=m ++CONFIG_CAN_CC770_PLATFORM=m ++# CONFIG_CAN_IFI_CANFD is not set ++CONFIG_CAN_M_CAN=m ++# CONFIG_CAN_M_CAN_PCI is not set ++CONFIG_CAN_M_CAN_PLATFORM=m ++CONFIG_CAN_M_CAN_TCAN4X5X=m ++CONFIG_CAN_PEAK_PCIEFD=m ++CONFIG_CAN_SJA1000=m ++CONFIG_CAN_EMS_PCI=m ++CONFIG_CAN_F81601=m ++CONFIG_CAN_KVASER_PCI=m ++CONFIG_CAN_PEAK_PCI=m ++CONFIG_CAN_PEAK_PCIEC=y ++CONFIG_CAN_PLX_PCI=m ++CONFIG_CAN_SJA1000_ISA=m ++CONFIG_CAN_SJA1000_PLATFORM=m ++CONFIG_CAN_SOFTING=m ++ ++# ++# CAN SPI interfaces ++# ++CONFIG_CAN_HI311X=m ++CONFIG_CAN_MCP251X=m ++CONFIG_CAN_MCP251XFD=m ++# CONFIG_CAN_MCP251XFD_SANITY is not set ++# end of CAN SPI interfaces ++ ++# ++# CAN USB interfaces ++# ++CONFIG_CAN_8DEV_USB=m ++CONFIG_CAN_EMS_USB=m ++CONFIG_CAN_ESD_USB2=m ++# CONFIG_CAN_ETAS_ES58X is not set ++CONFIG_CAN_GS_USB=m ++CONFIG_CAN_KVASER_USB=m ++CONFIG_CAN_MCBA_USB=m ++CONFIG_CAN_PEAK_USB=m ++CONFIG_CAN_UCAN=m ++# end of CAN USB interfaces ++ ++# CONFIG_CAN_DEBUG_DEVICES is not set ++# end of CAN Device Drivers ++ ++CONFIG_BT=m ++CONFIG_BT_BREDR=y ++CONFIG_BT_RFCOMM=m ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=m ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=m ++CONFIG_BT_HS=y ++CONFIG_BT_LE=y ++CONFIG_BT_LEDS=y ++# CONFIG_BT_MSFTEXT is not set ++# CONFIG_BT_AOSPEXT is not set ++# CONFIG_BT_DEBUGFS is not set ++# CONFIG_BT_SELFTEST is not set ++ ++# ++# Bluetooth device drivers ++# ++CONFIG_BT_INTEL=m ++CONFIG_BT_BCM=m ++CONFIG_BT_RTL=m ++CONFIG_BT_QCA=m ++CONFIG_BT_HCIBTUSB=m ++# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set ++CONFIG_BT_HCIBTUSB_BCM=y ++CONFIG_BT_HCIBTUSB_MTK=y ++CONFIG_BT_HCIBTUSB_RTL=y ++CONFIG_BT_HCIBTSDIO=m ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_SERDEV=y ++CONFIG_BT_HCIUART_H4=y ++CONFIG_BT_HCIUART_NOKIA=m ++CONFIG_BT_HCIUART_BCSP=y ++CONFIG_BT_HCIUART_ATH3K=y ++CONFIG_BT_HCIUART_LL=y ++CONFIG_BT_HCIUART_3WIRE=y ++CONFIG_BT_HCIUART_INTEL=y ++CONFIG_BT_HCIUART_BCM=y ++CONFIG_BT_HCIUART_RTL=y ++CONFIG_BT_HCIUART_QCA=y ++CONFIG_BT_HCIUART_AG6XX=y ++CONFIG_BT_HCIUART_MRVL=y ++CONFIG_BT_HCIBCM203X=m ++CONFIG_BT_HCIBPA10X=m ++CONFIG_BT_HCIBFUSB=m ++CONFIG_BT_HCIVHCI=m ++CONFIG_BT_MRVL=m ++CONFIG_BT_MRVL_SDIO=m ++CONFIG_BT_ATH3K=m ++CONFIG_BT_MTKSDIO=m ++CONFIG_BT_MTKUART=m ++CONFIG_BT_HCIRSI=m ++# CONFIG_BT_VIRTIO is not set ++# end of Bluetooth device drivers ++ ++# CONFIG_AF_RXRPC is not set ++# CONFIG_AF_KCM is not set ++CONFIG_STREAM_PARSER=y ++# CONFIG_MCTP is not set ++CONFIG_FIB_RULES=y ++CONFIG_WIRELESS=y ++CONFIG_WIRELESS_EXT=y ++CONFIG_WEXT_CORE=y ++CONFIG_WEXT_PROC=y ++CONFIG_WEXT_SPY=y ++CONFIG_WEXT_PRIV=y ++CONFIG_CFG80211=m ++# CONFIG_NL80211_TESTMODE is not set ++# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set ++# CONFIG_CFG80211_CERTIFICATION_ONUS is not set ++CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y ++CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y ++# CONFIG_CFG80211_DEFAULT_PS is not set ++# CONFIG_CFG80211_DEBUGFS is not set ++CONFIG_CFG80211_CRDA_SUPPORT=y ++CONFIG_CFG80211_WEXT=y ++CONFIG_LIB80211=m ++CONFIG_LIB80211_CRYPT_WEP=m ++CONFIG_LIB80211_CRYPT_CCMP=m ++CONFIG_LIB80211_CRYPT_TKIP=m ++# CONFIG_LIB80211_DEBUG is not set ++CONFIG_MAC80211=m ++CONFIG_MAC80211_HAS_RC=y ++CONFIG_MAC80211_RC_MINSTREL=y ++CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y ++CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" ++CONFIG_MAC80211_MESH=y ++CONFIG_MAC80211_LEDS=y ++# CONFIG_MAC80211_DEBUGFS is not set ++# CONFIG_MAC80211_MESSAGE_TRACING is not set ++# CONFIG_MAC80211_DEBUG_MENU is not set ++CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 ++CONFIG_RFKILL=m ++CONFIG_RFKILL_LEDS=y ++CONFIG_RFKILL_INPUT=y ++CONFIG_RFKILL_GPIO=m ++# CONFIG_NET_9P is not set ++# CONFIG_CAIF is not set ++# CONFIG_CEPH_LIB is not set ++CONFIG_NFC=m ++CONFIG_NFC_DIGITAL=m ++CONFIG_NFC_NCI=m ++CONFIG_NFC_NCI_SPI=m ++CONFIG_NFC_NCI_UART=m ++CONFIG_NFC_HCI=m ++CONFIG_NFC_SHDLC=y ++ ++# ++# Near Field Communication (NFC) devices ++# ++CONFIG_NFC_TRF7970A=m ++CONFIG_NFC_SIM=m ++CONFIG_NFC_PORT100=m ++# CONFIG_NFC_VIRTUAL_NCI is not set ++CONFIG_NFC_FDP=m ++CONFIG_NFC_FDP_I2C=m ++CONFIG_NFC_PN544=m ++CONFIG_NFC_PN544_I2C=m ++CONFIG_NFC_PN533=m ++CONFIG_NFC_PN533_USB=m ++CONFIG_NFC_PN533_I2C=m ++CONFIG_NFC_PN532_UART=m ++CONFIG_NFC_MICROREAD=m ++CONFIG_NFC_MICROREAD_I2C=m ++CONFIG_NFC_MRVL=m ++CONFIG_NFC_MRVL_USB=m ++CONFIG_NFC_MRVL_UART=m ++CONFIG_NFC_MRVL_I2C=m ++CONFIG_NFC_MRVL_SPI=m ++CONFIG_NFC_ST21NFCA=m ++CONFIG_NFC_ST21NFCA_I2C=m ++CONFIG_NFC_ST_NCI=m ++CONFIG_NFC_ST_NCI_I2C=m ++CONFIG_NFC_ST_NCI_SPI=m ++CONFIG_NFC_NXP_NCI=m ++CONFIG_NFC_NXP_NCI_I2C=m ++CONFIG_NFC_S3FWRN5=m ++CONFIG_NFC_S3FWRN5_I2C=m ++# CONFIG_NFC_S3FWRN82_UART is not set ++CONFIG_NFC_ST95HF=m ++# end of Near Field Communication (NFC) devices ++ ++CONFIG_PSAMPLE=m ++# CONFIG_NET_IFE is not set ++CONFIG_LWTUNNEL=y ++CONFIG_LWTUNNEL_BPF=y ++CONFIG_DST_CACHE=y ++CONFIG_GRO_CELLS=y ++CONFIG_SOCK_VALIDATE_XMIT=y ++CONFIG_NET_SELFTESTS=y ++CONFIG_NET_SOCK_MSG=y ++CONFIG_NET_DEVLINK=y ++CONFIG_PAGE_POOL=y ++CONFIG_FAILOVER=m ++CONFIG_ETHTOOL_NETLINK=y ++ ++# ++# Device Drivers ++# ++CONFIG_ARM_AMBA=y ++CONFIG_HAVE_PCI=y ++CONFIG_PCI=y ++CONFIG_PCI_DOMAINS=y ++CONFIG_PCI_DOMAINS_GENERIC=y ++CONFIG_PCI_SYSCALL=y ++CONFIG_PCIEPORTBUS=y ++# CONFIG_HOTPLUG_PCI_PCIE is not set ++CONFIG_PCIEAER=y ++# CONFIG_PCIEAER_INJECT is not set ++# CONFIG_PCIE_ECRC is not set ++CONFIG_PCIEASPM=y ++# CONFIG_PCIEASPM_DEFAULT is not set ++# CONFIG_PCIEASPM_POWERSAVE is not set ++# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set ++CONFIG_PCIEASPM_PERFORMANCE=y ++CONFIG_PCIE_PME=y ++# CONFIG_PCIE_DPC is not set ++# CONFIG_PCIE_PTM is not set ++CONFIG_PCI_MSI=y ++CONFIG_PCI_MSI_IRQ_DOMAIN=y ++CONFIG_PCI_QUIRKS=y ++# CONFIG_PCI_DEBUG is not set ++# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set ++# CONFIG_PCI_STUB is not set ++# CONFIG_PCI_PF_STUB is not set ++CONFIG_PCI_ATS=y ++CONFIG_PCI_IOV=y ++# CONFIG_PCI_PRI is not set ++# CONFIG_PCI_PASID is not set ++CONFIG_PCI_LABEL=y ++# CONFIG_PCIE_BUS_TUNE_OFF is not set ++CONFIG_PCIE_BUS_DEFAULT=y ++# CONFIG_PCIE_BUS_SAFE is not set ++# CONFIG_PCIE_BUS_PERFORMANCE is not set ++# CONFIG_PCIE_BUS_PEER2PEER is not set ++CONFIG_HOTPLUG_PCI=y ++# CONFIG_HOTPLUG_PCI_CPCI is not set ++# CONFIG_HOTPLUG_PCI_SHPC is not set ++ ++# ++# PCI controller drivers ++# ++# CONFIG_PCI_FTPCI100 is not set ++# CONFIG_PCI_HOST_GENERIC is not set ++# CONFIG_PCIE_XILINX is not set ++# CONFIG_PCI_XGENE is not set ++# CONFIG_PCIE_ALTERA is not set ++# CONFIG_PCI_HOST_THUNDER_PEM is not set ++# CONFIG_PCI_HOST_THUNDER_ECAM is not set ++CONFIG_PCIE_ROCKCHIP=y ++CONFIG_PCIE_ROCKCHIP_HOST=y ++CONFIG_PCIE_ROCKCHIP_EP=y ++# CONFIG_PCIE_MICROCHIP_HOST is not set ++ ++# ++# DesignWare PCI Core Support ++# ++CONFIG_PCIE_DW=y ++CONFIG_PCIE_DW_HOST=y ++CONFIG_PCIE_DW_PLAT=y ++CONFIG_PCIE_DW_PLAT_HOST=y ++# CONFIG_PCIE_DW_PLAT_EP is not set ++# CONFIG_PCI_HISI is not set ++CONFIG_PCIE_ROCKCHIP_DW_HOST=y ++# CONFIG_PCIE_KIRIN is not set ++# CONFIG_PCI_MESON is not set ++# CONFIG_PCIE_AL is not set ++# end of DesignWare PCI Core Support ++ ++# ++# Mobiveil PCIe Core Support ++# ++# end of Mobiveil PCIe Core Support ++ ++# ++# Cadence PCIe controllers support ++# ++# CONFIG_PCIE_CADENCE_PLAT_HOST is not set ++# CONFIG_PCIE_CADENCE_PLAT_EP is not set ++# CONFIG_PCI_J721E_HOST is not set ++# CONFIG_PCI_J721E_EP is not set ++# end of Cadence PCIe controllers support ++# end of PCI controller drivers ++ ++# ++# PCI Endpoint ++# ++CONFIG_PCI_ENDPOINT=y ++CONFIG_PCI_ENDPOINT_CONFIGFS=y ++# CONFIG_PCI_EPF_TEST is not set ++# CONFIG_PCI_EPF_NTB is not set ++# end of PCI Endpoint ++ ++# ++# PCI switch controller drivers ++# ++# CONFIG_PCI_SW_SWITCHTEC is not set ++# end of PCI switch controller drivers ++ ++# CONFIG_CXL_BUS is not set ++# CONFIG_PCCARD is not set ++# CONFIG_RAPIDIO is not set ++ ++# ++# Generic Driver Options ++# ++CONFIG_UEVENT_HELPER=y ++CONFIG_UEVENT_HELPER_PATH="" ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_STANDALONE=y ++CONFIG_PREVENT_FIRMWARE_BUILD=y ++ ++# ++# Firmware loader ++# ++CONFIG_FW_LOADER=y ++CONFIG_FW_LOADER_PAGED_BUF=y ++CONFIG_EXTRA_FIRMWARE="" ++CONFIG_FW_LOADER_USER_HELPER=y ++# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set ++CONFIG_FW_LOADER_COMPRESS=y ++CONFIG_FW_CACHE=y ++# end of Firmware loader ++ ++CONFIG_WANT_DEV_COREDUMP=y ++CONFIG_ALLOW_DEV_COREDUMP=y ++CONFIG_DEV_COREDUMP=y ++# CONFIG_DEBUG_DRIVER is not set ++# CONFIG_DEBUG_DEVRES is not set ++# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set ++# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set ++CONFIG_GENERIC_CPU_AUTOPROBE=y ++CONFIG_GENERIC_CPU_VULNERABILITIES=y ++CONFIG_SOC_BUS=y ++CONFIG_REGMAP=y ++CONFIG_REGMAP_I2C=y ++CONFIG_REGMAP_SPI=y ++CONFIG_REGMAP_W1=m ++CONFIG_REGMAP_MMIO=y ++CONFIG_REGMAP_IRQ=y ++CONFIG_REGMAP_SCCB=m ++CONFIG_DMA_SHARED_BUFFER=y ++# CONFIG_DMA_FENCE_TRACE is not set ++CONFIG_GENERIC_ARCH_TOPOLOGY=y ++CONFIG_GENERIC_ARCH_NUMA=y ++# end of Generic Driver Options ++ ++# ++# Bus devices ++# ++CONFIG_ARM_CCI=y ++CONFIG_BRCMSTB_GISB_ARB=y ++# CONFIG_MOXTET is not set ++CONFIG_VEXPRESS_CONFIG=y ++CONFIG_MHI_BUS=m ++# CONFIG_MHI_BUS_DEBUG is not set ++# CONFIG_MHI_BUS_PCI_GENERIC is not set ++# end of Bus devices ++ ++CONFIG_CONNECTOR=m ++ ++# ++# Firmware Drivers ++# ++ ++# ++# ARM System Control and Management Interface Protocol ++# ++# CONFIG_ARM_SCMI_PROTOCOL is not set ++# end of ARM System Control and Management Interface Protocol ++ ++CONFIG_ARM_SCPI_PROTOCOL=y ++CONFIG_ARM_SCPI_POWER_DOMAIN=y ++# CONFIG_ARM_SDE_INTERFACE is not set ++# CONFIG_FIRMWARE_MEMMAP is not set ++CONFIG_DMIID=y ++# CONFIG_DMI_SYSFS is not set ++# CONFIG_FW_CFG_SYSFS is not set ++CONFIG_SYSFB=y ++# CONFIG_SYSFB_SIMPLEFB is not set ++# CONFIG_ARM_FFA_TRANSPORT is not set ++# CONFIG_GOOGLE_FIRMWARE is not set ++ ++# ++# EFI (Extensible Firmware Interface) Support ++# ++CONFIG_EFI_ESRT=y ++CONFIG_EFI_VARS_PSTORE=y ++# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set ++CONFIG_EFI_PARAMS_FROM_FDT=y ++CONFIG_EFI_RUNTIME_WRAPPERS=y ++CONFIG_EFI_GENERIC_STUB=y ++CONFIG_EFI_ARMSTUB_DTB_LOADER=y ++CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y ++CONFIG_EFI_BOOTLOADER_CONTROL=m ++CONFIG_EFI_CAPSULE_LOADER=y ++# CONFIG_EFI_TEST is not set ++# CONFIG_RESET_ATTACK_MITIGATION is not set ++# CONFIG_EFI_DISABLE_PCI_DMA is not set ++# end of EFI (Extensible Firmware Interface) Support ++ ++CONFIG_EFI_EARLYCON=y ++CONFIG_ARM_PSCI_FW=y ++# CONFIG_ARM_PSCI_CHECKER is not set ++CONFIG_HAVE_ARM_SMCCC=y ++CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y ++CONFIG_ARM_SMCCC_SOC_ID=y ++ ++# ++# Tegra firmware driver ++# ++# end of Tegra firmware driver ++# end of Firmware Drivers ++ ++CONFIG_GNSS=m ++CONFIG_GNSS_SERIAL=m ++CONFIG_GNSS_MTK_SERIAL=m ++CONFIG_GNSS_SIRF_SERIAL=m ++CONFIG_GNSS_UBX_SERIAL=m ++CONFIG_MTD=y ++# CONFIG_MTD_TESTS is not set ++ ++# ++# Partition parsers ++# ++# CONFIG_MTD_AR7_PARTS is not set ++# CONFIG_MTD_CMDLINE_PARTS is not set ++CONFIG_MTD_OF_PARTS=y ++# CONFIG_MTD_AFS_PARTS is not set ++# CONFIG_MTD_REDBOOT_PARTS is not set ++# end of Partition parsers ++ ++# ++# User Modules And Translation Layers ++# ++CONFIG_MTD_BLKDEVS=y ++CONFIG_MTD_BLOCK=y ++ ++# ++# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. ++# ++# CONFIG_FTL is not set ++# CONFIG_NFTL is not set ++# CONFIG_INFTL is not set ++# CONFIG_RFD_FTL is not set ++# CONFIG_SSFDC is not set ++# CONFIG_SM_FTL is not set ++# CONFIG_MTD_OOPS is not set ++# CONFIG_MTD_SWAP is not set ++# CONFIG_MTD_PARTITIONED_MASTER is not set ++ ++# ++# RAM/ROM/Flash chip drivers ++# ++CONFIG_MTD_CFI=m ++# CONFIG_MTD_JEDECPROBE is not set ++CONFIG_MTD_GEN_PROBE=m ++# CONFIG_MTD_CFI_ADV_OPTIONS is not set ++CONFIG_MTD_MAP_BANK_WIDTH_1=y ++CONFIG_MTD_MAP_BANK_WIDTH_2=y ++CONFIG_MTD_MAP_BANK_WIDTH_4=y ++CONFIG_MTD_CFI_I1=y ++CONFIG_MTD_CFI_I2=y ++# CONFIG_MTD_CFI_INTELEXT is not set ++CONFIG_MTD_CFI_AMDSTD=m ++# CONFIG_MTD_CFI_STAA is not set ++CONFIG_MTD_CFI_UTIL=m ++# CONFIG_MTD_RAM is not set ++# CONFIG_MTD_ROM is not set ++# CONFIG_MTD_ABSENT is not set ++# end of RAM/ROM/Flash chip drivers ++ ++# ++# Mapping drivers for chip access ++# ++CONFIG_MTD_COMPLEX_MAPPINGS=y ++# CONFIG_MTD_PHYSMAP is not set ++# CONFIG_MTD_PCI is not set ++# CONFIG_MTD_INTEL_VR_NOR is not set ++# CONFIG_MTD_PLATRAM is not set ++# end of Mapping drivers for chip access ++ ++# ++# Self-contained MTD device drivers ++# ++# CONFIG_MTD_PMC551 is not set ++# CONFIG_MTD_DATAFLASH is not set ++# CONFIG_MTD_MCHP23K256 is not set ++# CONFIG_MTD_MCHP48L640 is not set ++# CONFIG_MTD_SST25L is not set ++# CONFIG_MTD_SLRAM is not set ++# CONFIG_MTD_PHRAM is not set ++# CONFIG_MTD_MTDRAM is not set ++# CONFIG_MTD_BLOCK2MTD is not set ++ ++# ++# Disk-On-Chip Device Drivers ++# ++# CONFIG_MTD_DOCG3 is not set ++# end of Self-contained MTD device drivers ++ ++# ++# NAND ++# ++# CONFIG_MTD_ONENAND is not set ++# CONFIG_MTD_RAW_NAND is not set ++# CONFIG_MTD_SPI_NAND is not set ++ ++# ++# ECC engine support ++# ++# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set ++# CONFIG_MTD_NAND_ECC_SW_BCH is not set ++# end of ECC engine support ++# end of NAND ++ ++# ++# LPDDR & LPDDR2 PCM memory drivers ++# ++# CONFIG_MTD_LPDDR is not set ++# end of LPDDR & LPDDR2 PCM memory drivers ++ ++CONFIG_MTD_SPI_NOR=y ++CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y ++# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set ++CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y ++# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set ++# CONFIG_MTD_UBI is not set ++CONFIG_MTD_HYPERBUS=m ++CONFIG_HBMC_AM654=m ++CONFIG_DTC=y ++CONFIG_OF=y ++# CONFIG_OF_UNITTEST is not set ++CONFIG_OF_FLATTREE=y ++CONFIG_OF_EARLY_FLATTREE=y ++CONFIG_OF_KOBJ=y ++CONFIG_OF_DYNAMIC=y ++CONFIG_OF_ADDRESS=y ++CONFIG_OF_IRQ=y ++CONFIG_OF_NET=y ++CONFIG_OF_RESERVED_MEM=y ++CONFIG_OF_RESOLVE=y ++CONFIG_OF_OVERLAY=y ++CONFIG_OF_NUMA=y ++CONFIG_OF_CONFIGFS=y ++# CONFIG_PARPORT is not set ++CONFIG_BLK_DEV=y ++# CONFIG_BLK_DEV_NULL_BLK is not set ++CONFIG_CDROM=m ++# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set ++CONFIG_ZRAM=m ++CONFIG_ZRAM_DEF_COMP_LZORLE=y ++# CONFIG_ZRAM_DEF_COMP_ZSTD is not set ++# CONFIG_ZRAM_DEF_COMP_LZ4 is not set ++# CONFIG_ZRAM_DEF_COMP_LZO is not set ++# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set ++# CONFIG_ZRAM_DEF_COMP_842 is not set ++CONFIG_ZRAM_DEF_COMP="lzo-rle" ++CONFIG_ZRAM_WRITEBACK=y ++# CONFIG_ZRAM_MEMORY_TRACKING is not set ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 ++# CONFIG_BLK_DEV_CRYPTOLOOP is not set ++# CONFIG_BLK_DEV_DRBD is not set ++# CONFIG_BLK_DEV_NBD is not set ++# CONFIG_BLK_DEV_SX8 is not set ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_COUNT=8 ++CONFIG_BLK_DEV_RAM_SIZE=4096 ++# CONFIG_CDROM_PKTCDVD is not set ++# CONFIG_ATA_OVER_ETH is not set ++# CONFIG_VIRTIO_BLK is not set ++# CONFIG_BLK_DEV_RBD is not set ++# CONFIG_BLK_DEV_RSXX is not set ++ ++# ++# NVME Support ++# ++CONFIG_NVME_CORE=y ++CONFIG_BLK_DEV_NVME=y ++CONFIG_NVME_MULTIPATH=y ++# CONFIG_NVME_HWMON is not set ++CONFIG_NVME_FABRICS=m ++CONFIG_NVME_FC=m ++# CONFIG_NVME_TCP is not set ++CONFIG_NVME_TARGET=m ++# CONFIG_NVME_TARGET_PASSTHRU is not set ++CONFIG_NVME_TARGET_LOOP=m ++CONFIG_NVME_TARGET_FC=m ++# CONFIG_NVME_TARGET_FCLOOP is not set ++# CONFIG_NVME_TARGET_TCP is not set ++# end of NVME Support ++ ++# ++# Misc devices ++# ++# CONFIG_AD525X_DPOT is not set ++# CONFIG_DUMMY_IRQ is not set ++# CONFIG_PHANTOM is not set ++CONFIG_TIFM_CORE=m ++CONFIG_TIFM_7XX1=m ++# CONFIG_ICS932S401 is not set ++# CONFIG_ENCLOSURE_SERVICES is not set ++# CONFIG_HI6421V600_IRQ is not set ++# CONFIG_HP_ILO is not set ++# CONFIG_APDS9802ALS is not set ++# CONFIG_ISL29003 is not set ++# CONFIG_ISL29020 is not set ++# CONFIG_SENSORS_TSL2550 is not set ++# CONFIG_SENSORS_BH1770 is not set ++# CONFIG_SENSORS_APDS990X is not set ++# CONFIG_HMC6352 is not set ++# CONFIG_DS1682 is not set ++# CONFIG_LATTICE_ECP3_CONFIG is not set ++CONFIG_SRAM=y ++# CONFIG_DW_XDATA_PCIE is not set ++# CONFIG_PCI_ENDPOINT_TEST is not set ++CONFIG_XILINX_SDFEC=m ++CONFIG_MISC_RTSX=m ++# CONFIG_HISI_HIKEY_USB is not set ++CONFIG_TP_BMC=y ++# CONFIG_C2PORT is not set ++ ++# ++# EEPROM support ++# ++CONFIG_EEPROM_AT24=m ++CONFIG_EEPROM_AT25=m ++CONFIG_EEPROM_LEGACY=m ++# CONFIG_EEPROM_MAX6875 is not set ++CONFIG_EEPROM_93CX6=m ++# CONFIG_EEPROM_93XX46 is not set ++# CONFIG_EEPROM_IDT_89HPESX is not set ++CONFIG_EEPROM_EE1004=m ++# end of EEPROM support ++ ++CONFIG_CB710_CORE=m ++# CONFIG_CB710_DEBUG is not set ++CONFIG_CB710_DEBUG_ASSUMPTIONS=y ++ ++# ++# Texas Instruments shared transport line discipline ++# ++# CONFIG_TI_ST is not set ++# end of Texas Instruments shared transport line discipline ++ ++# CONFIG_SENSORS_LIS3_SPI is not set ++# CONFIG_SENSORS_LIS3_I2C is not set ++# CONFIG_ALTERA_STAPL is not set ++CONFIG_GENWQE=m ++CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 ++# CONFIG_ECHO is not set ++# CONFIG_BCM_VK is not set ++CONFIG_MISC_ALCOR_PCI=m ++CONFIG_MISC_RTSX_PCI=m ++CONFIG_MISC_RTSX_USB=m ++# CONFIG_HABANA_AI is not set ++# CONFIG_UACCE is not set ++# CONFIG_PVPANIC is not set ++# end of Misc devices ++ ++# ++# SCSI device support ++# ++CONFIG_SCSI_MOD=y ++# CONFIG_RAID_ATTRS is not set ++CONFIG_SCSI_COMMON=y ++CONFIG_SCSI=y ++CONFIG_SCSI_DMA=y ++# CONFIG_SCSI_PROC_FS is not set ++ ++# ++# SCSI support type (disk, tape, CD-ROM) ++# ++CONFIG_BLK_DEV_SD=y ++# CONFIG_CHR_DEV_ST is not set ++CONFIG_BLK_DEV_SR=m ++CONFIG_CHR_DEV_SG=m ++CONFIG_BLK_DEV_BSG=y ++# CONFIG_CHR_DEV_SCH is not set ++# CONFIG_SCSI_CONSTANTS is not set ++# CONFIG_SCSI_LOGGING is not set ++# CONFIG_SCSI_SCAN_ASYNC is not set ++ ++# ++# SCSI Transports ++# ++# CONFIG_SCSI_SPI_ATTRS is not set ++# CONFIG_SCSI_FC_ATTRS is not set ++CONFIG_SCSI_ISCSI_ATTRS=m ++CONFIG_SCSI_SAS_ATTRS=y ++CONFIG_SCSI_SAS_LIBSAS=y ++CONFIG_SCSI_SAS_ATA=y ++CONFIG_SCSI_SAS_HOST_SMP=y ++# CONFIG_SCSI_SRP_ATTRS is not set ++# end of SCSI Transports ++ ++CONFIG_SCSI_LOWLEVEL=y ++CONFIG_ISCSI_TCP=m ++# CONFIG_ISCSI_BOOT_SYSFS is not set ++# CONFIG_SCSI_CXGB3_ISCSI is not set ++# CONFIG_SCSI_CXGB4_ISCSI is not set ++# CONFIG_SCSI_BNX2_ISCSI is not set ++# CONFIG_BE2ISCSI is not set ++# CONFIG_BLK_DEV_3W_XXXX_RAID is not set ++# CONFIG_SCSI_HPSA is not set ++# CONFIG_SCSI_3W_9XXX is not set ++# CONFIG_SCSI_3W_SAS is not set ++# CONFIG_SCSI_ACARD is not set ++# CONFIG_SCSI_AACRAID is not set ++# CONFIG_SCSI_AIC7XXX is not set ++# CONFIG_SCSI_AIC79XX is not set ++# CONFIG_SCSI_AIC94XX is not set ++# CONFIG_SCSI_HISI_SAS is not set ++# CONFIG_SCSI_MVSAS is not set ++# CONFIG_SCSI_MVUMI is not set ++# CONFIG_SCSI_ADVANSYS is not set ++# CONFIG_SCSI_ARCMSR is not set ++# CONFIG_SCSI_ESAS2R is not set ++# CONFIG_MEGARAID_NEWGEN is not set ++# CONFIG_MEGARAID_LEGACY is not set ++# CONFIG_MEGARAID_SAS is not set ++# CONFIG_SCSI_MPT3SAS is not set ++# CONFIG_SCSI_MPT2SAS is not set ++# CONFIG_SCSI_MPI3MR is not set ++# CONFIG_SCSI_SMARTPQI is not set ++# CONFIG_SCSI_UFSHCD is not set ++# CONFIG_SCSI_HPTIOP is not set ++# CONFIG_SCSI_MYRB is not set ++# CONFIG_SCSI_MYRS is not set ++# CONFIG_SCSI_SNIC is not set ++# CONFIG_SCSI_DMX3191D is not set ++# CONFIG_SCSI_FDOMAIN_PCI is not set ++# CONFIG_SCSI_IPS is not set ++# CONFIG_SCSI_INITIO is not set ++# CONFIG_SCSI_INIA100 is not set ++# CONFIG_SCSI_STEX is not set ++# CONFIG_SCSI_SYM53C8XX_2 is not set ++# CONFIG_SCSI_IPR is not set ++# CONFIG_SCSI_QLOGIC_1280 is not set ++# CONFIG_SCSI_QLA_ISCSI is not set ++# CONFIG_SCSI_DC395x is not set ++# CONFIG_SCSI_AM53C974 is not set ++# CONFIG_SCSI_WD719X is not set ++# CONFIG_SCSI_DEBUG is not set ++# CONFIG_SCSI_PMCRAID is not set ++# CONFIG_SCSI_PM8001 is not set ++# CONFIG_SCSI_VIRTIO is not set ++# CONFIG_SCSI_DH is not set ++# end of SCSI device support ++ ++CONFIG_HAVE_PATA_PLATFORM=y ++CONFIG_ATA=y ++CONFIG_SATA_HOST=y ++CONFIG_ATA_VERBOSE_ERROR=y ++CONFIG_ATA_FORCE=y ++CONFIG_SATA_PMP=y ++ ++# ++# Controllers with non-SFF native interface ++# ++CONFIG_SATA_AHCI=y ++CONFIG_SATA_MOBILE_LPM_POLICY=0 ++CONFIG_SATA_AHCI_PLATFORM=y ++CONFIG_AHCI_CEVA=y ++CONFIG_AHCI_XGENE=y ++CONFIG_AHCI_QORIQ=y ++# CONFIG_SATA_INIC162X is not set ++# CONFIG_SATA_ACARD_AHCI is not set ++CONFIG_SATA_SIL24=y ++CONFIG_ATA_SFF=y ++ ++# ++# SFF controllers with custom DMA interface ++# ++# CONFIG_PDC_ADMA is not set ++# CONFIG_SATA_QSTOR is not set ++# CONFIG_SATA_SX4 is not set ++CONFIG_ATA_BMDMA=y ++ ++# ++# SATA SFF controllers with BMDMA ++# ++# CONFIG_ATA_PIIX is not set ++# CONFIG_SATA_DWC is not set ++# CONFIG_SATA_MV is not set ++# CONFIG_SATA_NV is not set ++# CONFIG_SATA_PROMISE is not set ++# CONFIG_SATA_SIL is not set ++# CONFIG_SATA_SIS is not set ++# CONFIG_SATA_SVW is not set ++# CONFIG_SATA_ULI is not set ++# CONFIG_SATA_VIA is not set ++# CONFIG_SATA_VITESSE is not set ++ ++# ++# PATA SFF controllers with BMDMA ++# ++# CONFIG_PATA_ALI is not set ++# CONFIG_PATA_AMD is not set ++# CONFIG_PATA_ARTOP is not set ++# CONFIG_PATA_ATIIXP is not set ++# CONFIG_PATA_ATP867X is not set ++# CONFIG_PATA_CMD64X is not set ++# CONFIG_PATA_CYPRESS is not set ++# CONFIG_PATA_EFAR is not set ++# CONFIG_PATA_HPT366 is not set ++# CONFIG_PATA_HPT37X is not set ++# CONFIG_PATA_HPT3X2N is not set ++# CONFIG_PATA_HPT3X3 is not set ++# CONFIG_PATA_IT8213 is not set ++# CONFIG_PATA_IT821X is not set ++# CONFIG_PATA_JMICRON is not set ++# CONFIG_PATA_MARVELL is not set ++# CONFIG_PATA_NETCELL is not set ++# CONFIG_PATA_NINJA32 is not set ++# CONFIG_PATA_NS87415 is not set ++# CONFIG_PATA_OLDPIIX is not set ++# CONFIG_PATA_OPTIDMA is not set ++# CONFIG_PATA_PDC2027X is not set ++# CONFIG_PATA_PDC_OLD is not set ++# CONFIG_PATA_RADISYS is not set ++# CONFIG_PATA_RDC is not set ++# CONFIG_PATA_SCH is not set ++# CONFIG_PATA_SERVERWORKS is not set ++# CONFIG_PATA_SIL680 is not set ++# CONFIG_PATA_SIS is not set ++# CONFIG_PATA_TOSHIBA is not set ++# CONFIG_PATA_TRIFLEX is not set ++# CONFIG_PATA_VIA is not set ++# CONFIG_PATA_WINBOND is not set ++ ++# ++# PIO-only SFF controllers ++# ++# CONFIG_PATA_CMD640_PCI is not set ++# CONFIG_PATA_MPIIX is not set ++# CONFIG_PATA_NS87410 is not set ++# CONFIG_PATA_OPTI is not set ++CONFIG_PATA_PLATFORM=y ++CONFIG_PATA_OF_PLATFORM=y ++# CONFIG_PATA_RZ1000 is not set ++ ++# ++# Generic fallback / legacy drivers ++# ++# CONFIG_ATA_GENERIC is not set ++# CONFIG_PATA_LEGACY is not set ++CONFIG_MD=y ++CONFIG_BLK_DEV_MD=m ++CONFIG_MD_LINEAR=m ++CONFIG_MD_RAID0=m ++CONFIG_MD_RAID1=m ++CONFIG_MD_RAID10=m ++CONFIG_MD_RAID456=m ++CONFIG_MD_MULTIPATH=m ++CONFIG_MD_FAULTY=m ++CONFIG_BCACHE=y ++# CONFIG_BCACHE_DEBUG is not set ++# CONFIG_BCACHE_CLOSURES_DEBUG is not set ++# CONFIG_BCACHE_ASYNC_REGISTRATION is not set ++CONFIG_BLK_DEV_DM_BUILTIN=y ++CONFIG_BLK_DEV_DM=m ++# CONFIG_DM_DEBUG is not set ++CONFIG_DM_BUFIO=m ++# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set ++CONFIG_DM_BIO_PRISON=m ++CONFIG_DM_PERSISTENT_DATA=m ++CONFIG_DM_UNSTRIPED=m ++CONFIG_DM_CRYPT=m ++CONFIG_DM_SNAPSHOT=m ++CONFIG_DM_THIN_PROVISIONING=m ++CONFIG_DM_CACHE=m ++CONFIG_DM_CACHE_SMQ=m ++CONFIG_DM_WRITECACHE=m ++# CONFIG_DM_EBS is not set ++CONFIG_DM_ERA=m ++CONFIG_DM_CLONE=m ++CONFIG_DM_MIRROR=m ++CONFIG_DM_LOG_USERSPACE=m ++CONFIG_DM_RAID=m ++CONFIG_DM_ZERO=m ++CONFIG_DM_MULTIPATH=m ++CONFIG_DM_MULTIPATH_QL=m ++CONFIG_DM_MULTIPATH_ST=m ++# CONFIG_DM_MULTIPATH_HST is not set ++# CONFIG_DM_MULTIPATH_IOA is not set ++CONFIG_DM_DELAY=m ++CONFIG_DM_DUST=m ++CONFIG_DM_UEVENT=y ++CONFIG_DM_FLAKEY=m ++CONFIG_DM_VERITY=m ++# CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG is not set ++CONFIG_DM_VERITY_FEC=y ++CONFIG_DM_SWITCH=m ++CONFIG_DM_LOG_WRITES=m ++CONFIG_DM_INTEGRITY=m ++CONFIG_DM_ZONED=m ++CONFIG_TARGET_CORE=m ++CONFIG_TCM_IBLOCK=m ++CONFIG_TCM_FILEIO=m ++CONFIG_TCM_PSCSI=m ++CONFIG_TCM_USER2=m ++CONFIG_LOOPBACK_TARGET=m ++CONFIG_ISCSI_TARGET=m ++# CONFIG_FUSION is not set ++ ++# ++# IEEE 1394 (FireWire) support ++# ++# CONFIG_FIREWIRE is not set ++# CONFIG_FIREWIRE_NOSY is not set ++# end of IEEE 1394 (FireWire) support ++ ++CONFIG_NETDEVICES=y ++CONFIG_MII=y ++CONFIG_NET_CORE=y ++CONFIG_BONDING=m ++CONFIG_DUMMY=m ++CONFIG_WIREGUARD=m ++# CONFIG_WIREGUARD_DEBUG is not set ++# CONFIG_EQUALIZER is not set ++# CONFIG_NET_FC is not set ++CONFIG_IFB=m ++CONFIG_NET_TEAM=m ++CONFIG_NET_TEAM_MODE_BROADCAST=m ++CONFIG_NET_TEAM_MODE_ROUNDROBIN=m ++CONFIG_NET_TEAM_MODE_RANDOM=m ++CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m ++CONFIG_NET_TEAM_MODE_LOADBALANCE=m ++CONFIG_MACVLAN=m ++CONFIG_MACVTAP=m ++CONFIG_IPVLAN_L3S=y ++CONFIG_IPVLAN=m ++CONFIG_IPVTAP=m ++# CONFIG_VXLAN is not set ++# CONFIG_GENEVE is not set ++# CONFIG_BAREUDP is not set ++# CONFIG_GTP is not set ++CONFIG_MACSEC=m ++CONFIG_NETCONSOLE=m ++CONFIG_NETCONSOLE_DYNAMIC=y ++CONFIG_NETPOLL=y ++CONFIG_NET_POLL_CONTROLLER=y ++CONFIG_TUN=m ++CONFIG_TAP=m ++CONFIG_TUN_VNET_CROSS_LE=y ++CONFIG_VETH=m ++# CONFIG_VIRTIO_NET is not set ++CONFIG_NLMON=m ++CONFIG_NET_VRF=m ++# CONFIG_MHI_NET is not set ++# CONFIG_ARCNET is not set ++CONFIG_ETHERNET=y ++CONFIG_MDIO=m ++# CONFIG_NET_VENDOR_3COM is not set ++# CONFIG_NET_VENDOR_ADAPTEC is not set ++# CONFIG_NET_VENDOR_AGERE is not set ++# CONFIG_NET_VENDOR_ALACRITECH is not set ++# CONFIG_NET_VENDOR_ALTEON is not set ++# CONFIG_ALTERA_TSE is not set ++# CONFIG_NET_VENDOR_AMAZON is not set ++CONFIG_NET_VENDOR_AMD=y ++# CONFIG_AMD8111_ETH is not set ++# CONFIG_PCNET32 is not set ++CONFIG_AMD_XGBE=m ++CONFIG_NET_VENDOR_AQUANTIA=y ++CONFIG_AQTION=m ++CONFIG_NET_VENDOR_ARC=y ++# CONFIG_EMAC_ROCKCHIP is not set ++CONFIG_NET_VENDOR_ATHEROS=y ++CONFIG_ATL2=m ++CONFIG_ATL1=m ++CONFIG_ATL1E=m ++CONFIG_ATL1C=m ++CONFIG_ALX=m ++CONFIG_NET_VENDOR_BROADCOM=y ++CONFIG_B44=m ++CONFIG_B44_PCI_AUTOSELECT=y ++CONFIG_B44_PCICORE_AUTOSELECT=y ++CONFIG_B44_PCI=y ++CONFIG_BCMGENET=m ++CONFIG_BNX2=m ++CONFIG_CNIC=m ++CONFIG_TIGON3=m ++CONFIG_TIGON3_HWMON=y ++CONFIG_BNX2X=m ++CONFIG_BNX2X_SRIOV=y ++CONFIG_SYSTEMPORT=m ++CONFIG_BNXT=m ++CONFIG_BNXT_SRIOV=y ++CONFIG_BNXT_FLOWER_OFFLOAD=y ++CONFIG_BNXT_HWMON=y ++CONFIG_NET_VENDOR_BROCADE=y ++CONFIG_BNA=m ++CONFIG_NET_VENDOR_CADENCE=y ++CONFIG_MACB=m ++CONFIG_MACB_USE_HWSTAMP=y ++CONFIG_MACB_PCI=m ++CONFIG_NET_VENDOR_CAVIUM=y ++CONFIG_THUNDER_NIC_PF=m ++# CONFIG_THUNDER_NIC_VF is not set ++CONFIG_THUNDER_NIC_BGX=m ++CONFIG_THUNDER_NIC_RGX=m ++CONFIG_CAVIUM_PTP=m ++# CONFIG_LIQUIDIO is not set ++# CONFIG_LIQUIDIO_VF is not set ++# CONFIG_NET_VENDOR_CHELSIO is not set ++# CONFIG_NET_VENDOR_CISCO is not set ++# CONFIG_NET_VENDOR_CORTINA is not set ++# CONFIG_DNET is not set ++# CONFIG_NET_VENDOR_DEC is not set ++CONFIG_NET_VENDOR_DLINK=y ++CONFIG_DL2K=m ++# CONFIG_SUNDANCE is not set ++# CONFIG_NET_VENDOR_EMULEX is not set ++# CONFIG_NET_VENDOR_EZCHIP is not set ++# CONFIG_NET_VENDOR_GOOGLE is not set ++CONFIG_NET_VENDOR_HISILICON=y ++CONFIG_HIX5HD2_GMAC=m ++# CONFIG_HISI_FEMAC is not set ++# CONFIG_HIP04_ETH is not set ++CONFIG_HNS_MDIO=m ++CONFIG_HNS=m ++CONFIG_HNS_DSAF=m ++CONFIG_HNS_ENET=m ++# CONFIG_HNS3 is not set ++# CONFIG_NET_VENDOR_HUAWEI is not set ++# CONFIG_NET_VENDOR_I825XX is not set ++CONFIG_NET_VENDOR_INTEL=y ++# CONFIG_E100 is not set ++# CONFIG_E1000 is not set ++CONFIG_E1000E=m ++CONFIG_IGB=m ++CONFIG_IGB_HWMON=y ++CONFIG_IGBVF=m ++# CONFIG_IXGB is not set ++# CONFIG_IXGBE is not set ++# CONFIG_IXGBEVF is not set ++# CONFIG_I40E is not set ++# CONFIG_I40EVF is not set ++# CONFIG_ICE is not set ++# CONFIG_FM10K is not set ++# CONFIG_IGC is not set ++# CONFIG_NET_VENDOR_MICROSOFT is not set ++# CONFIG_JME is not set ++# CONFIG_NET_VENDOR_LITEX is not set ++CONFIG_NET_VENDOR_MARVELL=y ++CONFIG_MVMDIO=m ++# CONFIG_SKGE is not set ++CONFIG_SKY2=m ++# CONFIG_SKY2_DEBUG is not set ++CONFIG_OCTEONTX2_MBOX=m ++# CONFIG_OCTEONTX2_AF is not set ++CONFIG_OCTEONTX2_PF=m ++CONFIG_OCTEONTX2_VF=m ++# CONFIG_NET_VENDOR_MELLANOX is not set ++# CONFIG_NET_VENDOR_MICREL is not set ++CONFIG_NET_VENDOR_MICROCHIP=y ++CONFIG_ENC28J60=m ++CONFIG_ENC28J60_WRITEVERIFY=y ++# CONFIG_ENCX24J600 is not set ++# CONFIG_LAN743X is not set ++# CONFIG_NET_VENDOR_MICROSEMI is not set ++# CONFIG_NET_VENDOR_MYRI is not set ++# CONFIG_FEALNX is not set ++# CONFIG_NET_VENDOR_NATSEMI is not set ++# CONFIG_NET_VENDOR_NETERION is not set ++# CONFIG_NET_VENDOR_NETRONOME is not set ++# CONFIG_NET_VENDOR_NI is not set ++# CONFIG_NET_VENDOR_NVIDIA is not set ++# CONFIG_NET_VENDOR_OKI is not set ++# CONFIG_ETHOC is not set ++CONFIG_NET_VENDOR_PACKET_ENGINES=y ++# CONFIG_HAMACHI is not set ++# CONFIG_YELLOWFIN is not set ++CONFIG_NET_VENDOR_PENSANDO=y ++CONFIG_IONIC=m ++# CONFIG_NET_VENDOR_QLOGIC is not set ++CONFIG_NET_VENDOR_QUALCOMM=y ++CONFIG_QCA7000=m ++# CONFIG_QCA7000_SPI is not set ++CONFIG_QCA7000_UART=m ++CONFIG_QCOM_EMAC=m ++# CONFIG_RMNET is not set ++# CONFIG_NET_VENDOR_RDC is not set ++CONFIG_NET_VENDOR_REALTEK=y ++# CONFIG_8139CP is not set ++# CONFIG_8139TOO is not set ++CONFIG_R8169=m ++# CONFIG_NET_VENDOR_RENESAS is not set ++# CONFIG_NET_VENDOR_ROCKER is not set ++# CONFIG_NET_VENDOR_SAMSUNG is not set ++# CONFIG_NET_VENDOR_SEEQ is not set ++# CONFIG_NET_VENDOR_SOLARFLARE is not set ++# CONFIG_NET_VENDOR_SILAN is not set ++# CONFIG_NET_VENDOR_SIS is not set ++CONFIG_NET_VENDOR_SMSC=y ++CONFIG_SMC91X=y ++# CONFIG_EPIC100 is not set ++CONFIG_SMSC911X=y ++# CONFIG_SMSC9420 is not set ++# CONFIG_NET_VENDOR_SOCIONEXT is not set ++CONFIG_NET_VENDOR_STMICRO=y ++CONFIG_STMMAC_ETH=m ++# CONFIG_STMMAC_SELFTESTS is not set ++CONFIG_STMMAC_PLATFORM=m ++# CONFIG_DWMAC_DWC_QOS_ETH is not set ++CONFIG_DWMAC_GENERIC=m ++CONFIG_DWMAC_BAIKAL=m ++CONFIG_DWMAC_ROCKCHIP=m ++# CONFIG_DWMAC_INTEL_PLAT is not set ++# CONFIG_DWMAC_LOONGSON is not set ++# CONFIG_STMMAC_PCI is not set ++# CONFIG_NET_VENDOR_SUN is not set ++# CONFIG_NET_VENDOR_SYNOPSYS is not set ++# CONFIG_NET_VENDOR_TEHUTI is not set ++# CONFIG_NET_VENDOR_TI is not set ++# CONFIG_NET_VENDOR_VIA is not set ++# CONFIG_NET_VENDOR_WIZNET is not set ++# CONFIG_NET_VENDOR_XILINX is not set ++# CONFIG_FDDI is not set ++# CONFIG_HIPPI is not set ++CONFIG_PHYLINK=y ++CONFIG_PHYLIB=y ++CONFIG_SWPHY=y ++CONFIG_LED_TRIGGER_PHY=y ++CONFIG_FIXED_PHY=y ++CONFIG_SFP=m ++ ++# ++# MII PHY device drivers ++# ++CONFIG_AMD_PHY=m ++CONFIG_ADIN_PHY=m ++CONFIG_AQUANTIA_PHY=m ++CONFIG_AX88796B_PHY=m ++CONFIG_BROADCOM_PHY=m ++# CONFIG_BCM54140_PHY is not set ++CONFIG_BCM7XXX_PHY=m ++CONFIG_BCM84881_PHY=m ++CONFIG_BCM87XX_PHY=m ++CONFIG_BCM_NET_PHYLIB=m ++CONFIG_CICADA_PHY=m ++# CONFIG_CORTINA_PHY is not set ++CONFIG_DAVICOM_PHY=m ++CONFIG_ICPLUS_PHY=m ++CONFIG_LXT_PHY=m ++# CONFIG_INTEL_XWAY_PHY is not set ++CONFIG_LSI_ET1011C_PHY=m ++CONFIG_MARVELL_PHY=m ++CONFIG_MARVELL_10G_PHY=m ++# CONFIG_MARVELL_88X2222_PHY is not set ++# CONFIG_MAXLINEAR_GPHY is not set ++# CONFIG_MEDIATEK_GE_PHY is not set ++CONFIG_MICREL_PHY=y ++CONFIG_MICROCHIP_PHY=m ++CONFIG_MICROCHIP_T1_PHY=m ++# CONFIG_MICROSEMI_PHY is not set ++# CONFIG_MOTORCOMM_PHY is not set ++CONFIG_NATIONAL_PHY=m ++# CONFIG_NXP_C45_TJA11XX_PHY is not set ++# CONFIG_NXP_TJA11XX_PHY is not set ++CONFIG_AT803X_PHY=m ++CONFIG_QSEMI_PHY=m ++CONFIG_REALTEK_PHY=m ++# CONFIG_RENESAS_PHY is not set ++CONFIG_ROCKCHIP_PHY=y ++CONFIG_SMSC_PHY=m ++# CONFIG_STE10XP is not set ++# CONFIG_TERANETICS_PHY is not set ++# CONFIG_DP83822_PHY is not set ++CONFIG_DP83TC811_PHY=m ++CONFIG_DP83848_PHY=m ++# CONFIG_DP83867_PHY is not set ++CONFIG_DP83869_PHY=m ++CONFIG_VITESSE_PHY=m ++# CONFIG_XILINX_GMII2RGMII is not set ++# CONFIG_MICREL_KS8995MA is not set ++CONFIG_MDIO_DEVICE=y ++CONFIG_MDIO_BUS=y ++CONFIG_FWNODE_MDIO=y ++CONFIG_OF_MDIO=y ++CONFIG_MDIO_DEVRES=y ++CONFIG_MDIO_BITBANG=y ++CONFIG_MDIO_BCM_UNIMAC=m ++CONFIG_MDIO_CAVIUM=y ++# CONFIG_MDIO_GPIO is not set ++# CONFIG_MDIO_HISI_FEMAC is not set ++CONFIG_MDIO_I2C=m ++CONFIG_MDIO_MVUSB=m ++CONFIG_MDIO_MSCC_MIIM=m ++# CONFIG_MDIO_OCTEON is not set ++# CONFIG_MDIO_IPQ4019 is not set ++CONFIG_MDIO_IPQ8064=m ++CONFIG_MDIO_THUNDER=y ++ ++# ++# MDIO Multiplexers ++# ++CONFIG_MDIO_BUS_MUX=y ++CONFIG_MDIO_BUS_MUX_GPIO=m ++CONFIG_MDIO_BUS_MUX_MULTIPLEXER=m ++CONFIG_MDIO_BUS_MUX_MMIOREG=y ++ ++# ++# PCS device drivers ++# ++CONFIG_PCS_XPCS=m ++# end of PCS device drivers ++ ++CONFIG_PPP=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_DEFLATE=m ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_MPPE=m ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOE=m ++CONFIG_PPTP=m ++CONFIG_PPPOL2TP=m ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++CONFIG_SLIP=m ++CONFIG_SLHC=m ++CONFIG_SLIP_COMPRESSED=y ++CONFIG_SLIP_SMART=y ++CONFIG_SLIP_MODE_SLIP6=y ++CONFIG_USB_NET_DRIVERS=y ++CONFIG_USB_CATC=m ++CONFIG_USB_KAWETH=m ++CONFIG_USB_PEGASUS=m ++CONFIG_USB_RTL8150=m ++CONFIG_USB_RTL8152=m ++CONFIG_USB_LAN78XX=m ++CONFIG_USB_USBNET=m ++CONFIG_USB_NET_AX8817X=m ++CONFIG_USB_NET_AX88179_178A=m ++CONFIG_USB_NET_CDCETHER=m ++CONFIG_USB_NET_CDC_EEM=m ++CONFIG_USB_NET_CDC_NCM=m ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m ++CONFIG_USB_NET_CDC_MBIM=m ++CONFIG_USB_NET_DM9601=m ++CONFIG_USB_NET_SR9700=m ++CONFIG_USB_NET_SR9800=m ++CONFIG_USB_NET_SMSC75XX=m ++CONFIG_USB_NET_SMSC95XX=m ++CONFIG_USB_NET_GL620A=m ++CONFIG_USB_NET_NET1080=m ++CONFIG_USB_NET_PLUSB=m ++CONFIG_USB_NET_MCS7830=m ++CONFIG_USB_NET_RNDIS_HOST=m ++CONFIG_USB_NET_CDC_SUBSET_ENABLE=m ++CONFIG_USB_NET_CDC_SUBSET=m ++CONFIG_USB_ALI_M5632=y ++CONFIG_USB_AN2720=y ++CONFIG_USB_BELKIN=y ++CONFIG_USB_ARMLINUX=y ++CONFIG_USB_EPSON2888=y ++CONFIG_USB_KC2190=y ++CONFIG_USB_NET_ZAURUS=m ++CONFIG_USB_NET_CX82310_ETH=m ++CONFIG_USB_NET_KALMIA=m ++CONFIG_USB_NET_QMI_WWAN=m ++CONFIG_USB_HSO=m ++CONFIG_USB_NET_INT51X1=m ++CONFIG_USB_IPHETH=m ++CONFIG_USB_SIERRA_NET=m ++CONFIG_USB_VL600=m ++CONFIG_USB_NET_CH9200=m ++CONFIG_USB_NET_AQC111=m ++# CONFIG_USB_RTL8153_ECM is not set ++CONFIG_WLAN=y ++# CONFIG_WLAN_VENDOR_ADMTEK is not set ++CONFIG_ATH_COMMON=m ++CONFIG_WLAN_VENDOR_ATH=y ++# CONFIG_ATH_DEBUG is not set ++# CONFIG_ATH5K is not set ++# CONFIG_ATH5K_PCI is not set ++CONFIG_ATH9K_HW=m ++CONFIG_ATH9K_COMMON=m ++CONFIG_ATH9K_BTCOEX_SUPPORT=y ++CONFIG_ATH9K=m ++CONFIG_ATH9K_PCI=y ++CONFIG_ATH9K_AHB=y ++# CONFIG_ATH9K_DEBUGFS is not set ++CONFIG_ATH9K_DYNACK=y ++CONFIG_ATH9K_WOW=y ++CONFIG_ATH9K_RFKILL=y ++# CONFIG_ATH9K_CHANNEL_CONTEXT is not set ++CONFIG_ATH9K_PCOEM=y ++CONFIG_ATH9K_PCI_NO_EEPROM=m ++CONFIG_ATH9K_HTC=m ++# CONFIG_ATH9K_HTC_DEBUGFS is not set ++# CONFIG_ATH9K_HWRNG is not set ++CONFIG_CARL9170=m ++CONFIG_CARL9170_LEDS=y ++CONFIG_CARL9170_WPC=y ++# CONFIG_CARL9170_HWRNG is not set ++CONFIG_ATH6KL=m ++CONFIG_ATH6KL_SDIO=m ++CONFIG_ATH6KL_USB=m ++# CONFIG_ATH6KL_DEBUG is not set ++# CONFIG_ATH6KL_TRACING is not set ++CONFIG_AR5523=m ++CONFIG_WIL6210=m ++CONFIG_WIL6210_ISR_COR=y ++# CONFIG_WIL6210_TRACING is not set ++CONFIG_WIL6210_DEBUGFS=y ++CONFIG_ATH10K=m ++CONFIG_ATH10K_CE=y ++CONFIG_ATH10K_PCI=m ++CONFIG_ATH10K_AHB=y ++CONFIG_ATH10K_SDIO=m ++CONFIG_ATH10K_USB=m ++# CONFIG_ATH10K_DEBUG is not set ++# CONFIG_ATH10K_DEBUGFS is not set ++# CONFIG_ATH10K_TRACING is not set ++# CONFIG_WCN36XX is not set ++# CONFIG_ATH11K is not set ++CONFIG_WLAN_VENDOR_ATMEL=y ++CONFIG_ATMEL=m ++CONFIG_PCI_ATMEL=m ++CONFIG_AT76C50X_USB=m ++CONFIG_WLAN_VENDOR_BROADCOM=y ++CONFIG_B43=m ++CONFIG_B43_BCMA=y ++CONFIG_B43_SSB=y ++CONFIG_B43_BUSES_BCMA_AND_SSB=y ++# CONFIG_B43_BUSES_BCMA is not set ++# CONFIG_B43_BUSES_SSB is not set ++CONFIG_B43_PCI_AUTOSELECT=y ++CONFIG_B43_PCICORE_AUTOSELECT=y ++# CONFIG_B43_SDIO is not set ++CONFIG_B43_BCMA_PIO=y ++CONFIG_B43_PIO=y ++CONFIG_B43_PHY_G=y ++CONFIG_B43_PHY_N=y ++CONFIG_B43_PHY_LP=y ++CONFIG_B43_PHY_HT=y ++CONFIG_B43_LEDS=y ++CONFIG_B43_HWRNG=y ++# CONFIG_B43_DEBUG is not set ++CONFIG_B43LEGACY=m ++CONFIG_B43LEGACY_PCI_AUTOSELECT=y ++CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y ++CONFIG_B43LEGACY_LEDS=y ++CONFIG_B43LEGACY_HWRNG=y ++CONFIG_B43LEGACY_DEBUG=y ++CONFIG_B43LEGACY_DMA=y ++CONFIG_B43LEGACY_PIO=y ++CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y ++# CONFIG_B43LEGACY_DMA_MODE is not set ++# CONFIG_B43LEGACY_PIO_MODE is not set ++CONFIG_BRCMUTIL=m ++CONFIG_BRCMSMAC=m ++CONFIG_BRCMFMAC=m ++CONFIG_BRCMFMAC_PROTO_BCDC=y ++CONFIG_BRCMFMAC_PROTO_MSGBUF=y ++CONFIG_BRCMFMAC_SDIO=y ++CONFIG_BRCMFMAC_USB=y ++CONFIG_BRCMFMAC_PCIE=y ++CONFIG_BRCM_TRACING=y ++CONFIG_BRCMDBG=y ++CONFIG_WLAN_VENDOR_CISCO=y ++CONFIG_WLAN_VENDOR_INTEL=y ++CONFIG_IPW2100=m ++# CONFIG_IPW2100_MONITOR is not set ++# CONFIG_IPW2100_DEBUG is not set ++# CONFIG_IPW2200 is not set ++CONFIG_LIBIPW=m ++# CONFIG_LIBIPW_DEBUG is not set ++# CONFIG_IWL4965 is not set ++# CONFIG_IWL3945 is not set ++# CONFIG_IWLWIFI is not set ++CONFIG_WLAN_VENDOR_INTERSIL=y ++# CONFIG_HOSTAP is not set ++# CONFIG_HERMES is not set ++# CONFIG_P54_COMMON is not set ++CONFIG_WLAN_VENDOR_MARVELL=y ++# CONFIG_LIBERTAS is not set ++CONFIG_LIBERTAS_THINFIRM=m ++# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set ++CONFIG_LIBERTAS_THINFIRM_USB=m ++# CONFIG_MWIFIEX is not set ++CONFIG_MWL8K=m ++CONFIG_WLAN_VENDOR_MEDIATEK=y ++CONFIG_MT7601U=m ++CONFIG_MT76_CORE=m ++CONFIG_MT76_LEDS=y ++CONFIG_MT76_USB=m ++CONFIG_MT76x02_LIB=m ++CONFIG_MT76x02_USB=m ++CONFIG_MT76_CONNAC_LIB=m ++CONFIG_MT76x0_COMMON=m ++CONFIG_MT76x0U=m ++CONFIG_MT76x0E=m ++CONFIG_MT76x2_COMMON=m ++CONFIG_MT76x2E=m ++CONFIG_MT76x2U=m ++CONFIG_MT7603E=m ++CONFIG_MT7615_COMMON=m ++CONFIG_MT7615E=m ++# CONFIG_MT7663U is not set ++# CONFIG_MT7663S is not set ++# CONFIG_MT7915E is not set ++# CONFIG_MT7921E is not set ++CONFIG_WLAN_VENDOR_MICROCHIP=y ++# CONFIG_WILC1000_SDIO is not set ++# CONFIG_WILC1000_SPI is not set ++CONFIG_WLAN_VENDOR_RALINK=y ++CONFIG_RT2X00=m ++CONFIG_RT2400PCI=m ++CONFIG_RT2500PCI=m ++CONFIG_RT61PCI=m ++CONFIG_RT2800PCI=m ++CONFIG_RT2800PCI_RT33XX=y ++CONFIG_RT2800PCI_RT35XX=y ++CONFIG_RT2800PCI_RT53XX=y ++CONFIG_RT2800PCI_RT3290=y ++CONFIG_RT2500USB=m ++CONFIG_RT73USB=m ++CONFIG_RT2800USB=m ++CONFIG_RT2800USB_RT33XX=y ++CONFIG_RT2800USB_RT35XX=y ++CONFIG_RT2800USB_RT3573=y ++CONFIG_RT2800USB_RT53XX=y ++CONFIG_RT2800USB_RT55XX=y ++# CONFIG_RT2800USB_UNKNOWN is not set ++CONFIG_RT2800_LIB=m ++CONFIG_RT2800_LIB_MMIO=m ++CONFIG_RT2X00_LIB_MMIO=m ++CONFIG_RT2X00_LIB_PCI=m ++CONFIG_RT2X00_LIB_USB=m ++CONFIG_RT2X00_LIB=m ++CONFIG_RT2X00_LIB_FIRMWARE=y ++CONFIG_RT2X00_LIB_CRYPTO=y ++CONFIG_RT2X00_LIB_LEDS=y ++# CONFIG_RT2X00_DEBUG is not set ++CONFIG_WLAN_VENDOR_REALTEK=y ++CONFIG_RTL8180=m ++CONFIG_RTL8187=m ++CONFIG_RTL8187_LEDS=y ++CONFIG_RTL_CARDS=m ++CONFIG_RTL8192CE=m ++CONFIG_RTL8192SE=m ++CONFIG_RTL8192DE=m ++CONFIG_RTL8723AE=m ++CONFIG_RTL8723BE=m ++CONFIG_RTL8188EE=m ++CONFIG_RTL8192EE=m ++CONFIG_RTL8821AE=m ++CONFIG_RTL8192CU=m ++CONFIG_RTLWIFI=m ++CONFIG_RTLWIFI_PCI=m ++CONFIG_RTLWIFI_USB=m ++# CONFIG_RTLWIFI_DEBUG is not set ++CONFIG_RTL8192C_COMMON=m ++CONFIG_RTL8723_COMMON=m ++CONFIG_RTLBTCOEXIST=m ++CONFIG_RTL8XXXU=m ++# CONFIG_RTL8XXXU_UNTESTED is not set ++CONFIG_RTW88=m ++CONFIG_RTW88_CORE=m ++CONFIG_RTW88_PCI=m ++CONFIG_RTW88_8822B=m ++CONFIG_RTW88_8822C=m ++CONFIG_RTW88_8822BE=m ++CONFIG_RTW88_8822CE=m ++# CONFIG_RTW88_8723DE is not set ++# CONFIG_RTW88_8821CE is not set ++CONFIG_RTW88_DEBUG=y ++CONFIG_RTW88_DEBUGFS=y ++CONFIG_WLAN_VENDOR_RSI=y ++CONFIG_RSI_91X=m ++# CONFIG_RSI_DEBUGFS is not set ++CONFIG_RSI_SDIO=m ++CONFIG_RSI_USB=m ++CONFIG_RSI_COEX=y ++CONFIG_WLAN_VENDOR_ST=y ++CONFIG_CW1200=m ++CONFIG_CW1200_WLAN_SDIO=m ++CONFIG_CW1200_WLAN_SPI=m ++CONFIG_WLAN_VENDOR_TI=y ++CONFIG_WL1251=m ++CONFIG_WL1251_SPI=m ++CONFIG_WL1251_SDIO=m ++CONFIG_WL12XX=m ++CONFIG_WL18XX=m ++CONFIG_WLCORE=m ++CONFIG_WLCORE_SPI=m ++CONFIG_WLCORE_SDIO=m ++CONFIG_WILINK_PLATFORM_DATA=y ++CONFIG_WLAN_VENDOR_ZYDAS=y ++CONFIG_USB_ZD1201=m ++CONFIG_ZD1211RW=m ++# CONFIG_ZD1211RW_DEBUG is not set ++CONFIG_WLAN_VENDOR_QUANTENNA=y ++CONFIG_QTNFMAC=m ++CONFIG_QTNFMAC_PCIE=m ++CONFIG_MAC80211_HWSIM=m ++CONFIG_USB_NET_RNDIS_WLAN=m ++CONFIG_VIRT_WIFI=m ++# CONFIG_WAN is not set ++ ++# ++# Wireless WAN ++# ++# CONFIG_WWAN is not set ++# end of Wireless WAN ++ ++# CONFIG_VMXNET3 is not set ++# CONFIG_NETDEVSIM is not set ++# CONFIG_NET_FAILOVER is not set ++# CONFIG_ISDN is not set ++ ++# ++# Input device support ++# ++CONFIG_INPUT=y ++CONFIG_INPUT_LEDS=y ++CONFIG_INPUT_FF_MEMLESS=m ++# CONFIG_INPUT_SPARSEKMAP is not set ++CONFIG_INPUT_MATRIXKMAP=y ++ ++# ++# Userland interfaces ++# ++CONFIG_INPUT_MOUSEDEV=y ++CONFIG_INPUT_MOUSEDEV_PSAUX=y ++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 ++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 ++CONFIG_INPUT_JOYDEV=m ++CONFIG_INPUT_EVDEV=y ++# CONFIG_INPUT_EVBUG is not set ++ ++# ++# Input Device Drivers ++# ++CONFIG_INPUT_KEYBOARD=y ++CONFIG_KEYBOARD_ADC=m ++CONFIG_KEYBOARD_ADP5520=m ++# CONFIG_KEYBOARD_ADP5588 is not set ++# CONFIG_KEYBOARD_ADP5589 is not set ++CONFIG_KEYBOARD_ATKBD=y ++CONFIG_KEYBOARD_QT1050=m ++# CONFIG_KEYBOARD_QT1070 is not set ++# CONFIG_KEYBOARD_QT2160 is not set ++# CONFIG_KEYBOARD_DLINK_DIR685 is not set ++# CONFIG_KEYBOARD_LKKBD is not set ++CONFIG_KEYBOARD_GPIO=y ++# CONFIG_KEYBOARD_GPIO_POLLED is not set ++# CONFIG_KEYBOARD_TCA6416 is not set ++# CONFIG_KEYBOARD_TCA8418 is not set ++# CONFIG_KEYBOARD_MATRIX is not set ++# CONFIG_KEYBOARD_LM8323 is not set ++# CONFIG_KEYBOARD_LM8333 is not set ++# CONFIG_KEYBOARD_MAX7359 is not set ++# CONFIG_KEYBOARD_MCS is not set ++# CONFIG_KEYBOARD_MPR121 is not set ++# CONFIG_KEYBOARD_NEWTON is not set ++# CONFIG_KEYBOARD_OPENCORES is not set ++# CONFIG_KEYBOARD_SAMSUNG is not set ++# CONFIG_KEYBOARD_STOWAWAY is not set ++# CONFIG_KEYBOARD_SUNKBD is not set ++CONFIG_KEYBOARD_IQS62X=m ++# CONFIG_KEYBOARD_OMAP4 is not set ++# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set ++# CONFIG_KEYBOARD_XTKBD is not set ++# CONFIG_KEYBOARD_CAP11XX is not set ++# CONFIG_KEYBOARD_BCM is not set ++CONFIG_INPUT_MOUSE=y ++CONFIG_MOUSE_PS2=y ++CONFIG_MOUSE_PS2_ALPS=y ++CONFIG_MOUSE_PS2_BYD=y ++CONFIG_MOUSE_PS2_LOGIPS2PP=y ++CONFIG_MOUSE_PS2_SYNAPTICS=y ++CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y ++CONFIG_MOUSE_PS2_CYPRESS=y ++CONFIG_MOUSE_PS2_TRACKPOINT=y ++# CONFIG_MOUSE_PS2_ELANTECH is not set ++# CONFIG_MOUSE_PS2_SENTELIC is not set ++# CONFIG_MOUSE_PS2_TOUCHKIT is not set ++CONFIG_MOUSE_PS2_FOCALTECH=y ++CONFIG_MOUSE_PS2_SMBUS=y ++# CONFIG_MOUSE_SERIAL is not set ++# CONFIG_MOUSE_APPLETOUCH is not set ++# CONFIG_MOUSE_BCM5974 is not set ++# CONFIG_MOUSE_CYAPA is not set ++# CONFIG_MOUSE_ELAN_I2C is not set ++# CONFIG_MOUSE_VSXXXAA is not set ++# CONFIG_MOUSE_GPIO is not set ++# CONFIG_MOUSE_SYNAPTICS_I2C is not set ++# CONFIG_MOUSE_SYNAPTICS_USB is not set ++CONFIG_INPUT_JOYSTICK=y ++# CONFIG_JOYSTICK_ANALOG is not set ++# CONFIG_JOYSTICK_A3D is not set ++# CONFIG_JOYSTICK_ADC is not set ++# CONFIG_JOYSTICK_ADI is not set ++# CONFIG_JOYSTICK_COBRA is not set ++# CONFIG_JOYSTICK_GF2K is not set ++# CONFIG_JOYSTICK_GRIP is not set ++# CONFIG_JOYSTICK_GRIP_MP is not set ++# CONFIG_JOYSTICK_GUILLEMOT is not set ++# CONFIG_JOYSTICK_INTERACT is not set ++# CONFIG_JOYSTICK_SIDEWINDER is not set ++# CONFIG_JOYSTICK_TMDC is not set ++CONFIG_JOYSTICK_IFORCE=m ++CONFIG_JOYSTICK_IFORCE_USB=m ++# CONFIG_JOYSTICK_IFORCE_232 is not set ++# CONFIG_JOYSTICK_WARRIOR is not set ++# CONFIG_JOYSTICK_MAGELLAN is not set ++# CONFIG_JOYSTICK_SPACEORB is not set ++# CONFIG_JOYSTICK_SPACEBALL is not set ++# CONFIG_JOYSTICK_STINGER is not set ++# CONFIG_JOYSTICK_TWIDJOY is not set ++# CONFIG_JOYSTICK_ZHENHUA is not set ++# CONFIG_JOYSTICK_AS5011 is not set ++# CONFIG_JOYSTICK_JOYDUMP is not set ++CONFIG_JOYSTICK_XPAD=m ++CONFIG_JOYSTICK_XPAD_FF=y ++CONFIG_JOYSTICK_XPAD_LEDS=y ++# CONFIG_JOYSTICK_PSXPAD_SPI is not set ++# CONFIG_JOYSTICK_PXRC is not set ++# CONFIG_JOYSTICK_QWIIC is not set ++# CONFIG_JOYSTICK_FSIA6B is not set ++# CONFIG_INPUT_TABLET is not set ++CONFIG_INPUT_TOUCHSCREEN=y ++CONFIG_TOUCHSCREEN_ADS7846=m ++CONFIG_TOUCHSCREEN_AD7877=m ++CONFIG_TOUCHSCREEN_AD7879=m ++CONFIG_TOUCHSCREEN_AD7879_I2C=m ++CONFIG_TOUCHSCREEN_AD7879_SPI=m ++CONFIG_TOUCHSCREEN_ADC=m ++CONFIG_TOUCHSCREEN_AR1021_I2C=m ++CONFIG_TOUCHSCREEN_ATMEL_MXT=m ++CONFIG_TOUCHSCREEN_ATMEL_MXT_T37=y ++CONFIG_TOUCHSCREEN_AUO_PIXCIR=m ++CONFIG_TOUCHSCREEN_BU21013=m ++CONFIG_TOUCHSCREEN_BU21029=m ++CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=m ++# CONFIG_TOUCHSCREEN_CY8CTMA140 is not set ++CONFIG_TOUCHSCREEN_CY8CTMG110=m ++CONFIG_TOUCHSCREEN_CYTTSP_CORE=m ++CONFIG_TOUCHSCREEN_CYTTSP_I2C=m ++CONFIG_TOUCHSCREEN_CYTTSP_SPI=m ++CONFIG_TOUCHSCREEN_CYTTSP4_CORE=m ++CONFIG_TOUCHSCREEN_CYTTSP4_I2C=m ++CONFIG_TOUCHSCREEN_CYTTSP4_SPI=m ++CONFIG_TOUCHSCREEN_DYNAPRO=m ++CONFIG_TOUCHSCREEN_HAMPSHIRE=m ++CONFIG_TOUCHSCREEN_EETI=m ++CONFIG_TOUCHSCREEN_EGALAX=m ++CONFIG_TOUCHSCREEN_EGALAX_SERIAL=m ++CONFIG_TOUCHSCREEN_EXC3000=m ++CONFIG_TOUCHSCREEN_FUJITSU=m ++CONFIG_TOUCHSCREEN_GOODIX=m ++CONFIG_TOUCHSCREEN_HIDEEP=m ++# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set ++CONFIG_TOUCHSCREEN_ILI210X=m ++# CONFIG_TOUCHSCREEN_ILITEK is not set ++CONFIG_TOUCHSCREEN_S6SY761=m ++CONFIG_TOUCHSCREEN_GUNZE=m ++CONFIG_TOUCHSCREEN_EKTF2127=m ++CONFIG_TOUCHSCREEN_ELAN=m ++CONFIG_TOUCHSCREEN_ELO=m ++CONFIG_TOUCHSCREEN_WACOM_W8001=m ++CONFIG_TOUCHSCREEN_WACOM_I2C=m ++CONFIG_TOUCHSCREEN_MAX11801=m ++CONFIG_TOUCHSCREEN_MCS5000=m ++CONFIG_TOUCHSCREEN_MMS114=m ++CONFIG_TOUCHSCREEN_MELFAS_MIP4=m ++# CONFIG_TOUCHSCREEN_MSG2638 is not set ++CONFIG_TOUCHSCREEN_MTOUCH=m ++CONFIG_TOUCHSCREEN_IMX6UL_TSC=m ++CONFIG_TOUCHSCREEN_INEXIO=m ++CONFIG_TOUCHSCREEN_MK712=m ++CONFIG_TOUCHSCREEN_PENMOUNT=m ++CONFIG_TOUCHSCREEN_EDT_FT5X06=m ++CONFIG_TOUCHSCREEN_TOUCHRIGHT=m ++CONFIG_TOUCHSCREEN_TOUCHWIN=m ++CONFIG_TOUCHSCREEN_UCB1400=m ++CONFIG_TOUCHSCREEN_PIXCIR=m ++CONFIG_TOUCHSCREEN_WDT87XX_I2C=m ++CONFIG_TOUCHSCREEN_WM97XX=m ++CONFIG_TOUCHSCREEN_WM9705=y ++CONFIG_TOUCHSCREEN_WM9712=y ++CONFIG_TOUCHSCREEN_WM9713=y ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m ++CONFIG_TOUCHSCREEN_USB_EGALAX=y ++CONFIG_TOUCHSCREEN_USB_PANJIT=y ++CONFIG_TOUCHSCREEN_USB_3M=y ++CONFIG_TOUCHSCREEN_USB_ITM=y ++CONFIG_TOUCHSCREEN_USB_ETURBO=y ++CONFIG_TOUCHSCREEN_USB_GUNZE=y ++CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y ++CONFIG_TOUCHSCREEN_USB_IRTOUCH=y ++CONFIG_TOUCHSCREEN_USB_IDEALTEK=y ++CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y ++CONFIG_TOUCHSCREEN_USB_GOTOP=y ++CONFIG_TOUCHSCREEN_USB_JASTEC=y ++CONFIG_TOUCHSCREEN_USB_ELO=y ++CONFIG_TOUCHSCREEN_USB_E2I=y ++CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y ++CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y ++CONFIG_TOUCHSCREEN_USB_NEXIO=y ++CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y ++CONFIG_TOUCHSCREEN_TOUCHIT213=m ++CONFIG_TOUCHSCREEN_TSC_SERIO=m ++CONFIG_TOUCHSCREEN_TSC200X_CORE=m ++CONFIG_TOUCHSCREEN_TSC2004=m ++CONFIG_TOUCHSCREEN_TSC2005=m ++CONFIG_TOUCHSCREEN_TSC2007=m ++CONFIG_TOUCHSCREEN_TSC2007_IIO=y ++CONFIG_TOUCHSCREEN_RM_TS=m ++CONFIG_TOUCHSCREEN_SILEAD=m ++CONFIG_TOUCHSCREEN_SIS_I2C=m ++CONFIG_TOUCHSCREEN_ST1232=m ++CONFIG_TOUCHSCREEN_STMFTS=m ++CONFIG_TOUCHSCREEN_SUR40=m ++CONFIG_TOUCHSCREEN_SURFACE3_SPI=m ++CONFIG_TOUCHSCREEN_SX8654=m ++CONFIG_TOUCHSCREEN_TPS6507X=m ++CONFIG_TOUCHSCREEN_ZET6223=m ++CONFIG_TOUCHSCREEN_ZFORCE=m ++CONFIG_TOUCHSCREEN_ROHM_BU21023=m ++CONFIG_TOUCHSCREEN_IQS5XX=m ++# CONFIG_TOUCHSCREEN_ZINITIX is not set ++CONFIG_INPUT_MISC=y ++# CONFIG_INPUT_AD714X is not set ++# CONFIG_INPUT_ATMEL_CAPTOUCH is not set ++# CONFIG_INPUT_BMA150 is not set ++# CONFIG_INPUT_E3X0_BUTTON is not set ++CONFIG_INPUT_MAX77650_ONKEY=m ++# CONFIG_INPUT_MMA8450 is not set ++CONFIG_INPUT_GPIO_BEEPER=m ++CONFIG_INPUT_GPIO_DECODER=m ++CONFIG_INPUT_GPIO_VIBRA=m ++# CONFIG_INPUT_ATI_REMOTE2 is not set ++# CONFIG_INPUT_KEYSPAN_REMOTE is not set ++# CONFIG_INPUT_KXTJ9 is not set ++# CONFIG_INPUT_POWERMATE is not set ++# CONFIG_INPUT_YEALINK is not set ++# CONFIG_INPUT_CM109 is not set ++# CONFIG_INPUT_REGULATOR_HAPTIC is not set ++CONFIG_INPUT_UINPUT=m ++# CONFIG_INPUT_PCF8574 is not set ++# CONFIG_INPUT_PWM_BEEPER is not set ++# CONFIG_INPUT_PWM_VIBRA is not set ++CONFIG_INPUT_RK805_PWRKEY=y ++# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set ++# CONFIG_INPUT_DA7280_HAPTICS is not set ++# CONFIG_INPUT_ADXL34X is not set ++# CONFIG_INPUT_IMS_PCU is not set ++# CONFIG_INPUT_IQS269A is not set ++# CONFIG_INPUT_IQS626A is not set ++# CONFIG_INPUT_CMA3000 is not set ++# CONFIG_INPUT_DRV260X_HAPTICS is not set ++# CONFIG_INPUT_DRV2665_HAPTICS is not set ++# CONFIG_INPUT_DRV2667_HAPTICS is not set ++CONFIG_RMI4_CORE=m ++CONFIG_RMI4_I2C=m ++CONFIG_RMI4_SPI=m ++CONFIG_RMI4_SMB=m ++CONFIG_RMI4_F03=y ++CONFIG_RMI4_F03_SERIO=m ++CONFIG_RMI4_2D_SENSOR=y ++CONFIG_RMI4_F11=y ++CONFIG_RMI4_F12=y ++CONFIG_RMI4_F30=y ++# CONFIG_RMI4_F34 is not set ++# CONFIG_RMI4_F3A is not set ++# CONFIG_RMI4_F54 is not set ++# CONFIG_RMI4_F55 is not set ++ ++# ++# Hardware I/O ports ++# ++CONFIG_SERIO=y ++CONFIG_SERIO_SERPORT=m ++CONFIG_SERIO_AMBAKMI=y ++# CONFIG_SERIO_PCIPS2 is not set ++CONFIG_SERIO_LIBPS2=y ++# CONFIG_SERIO_RAW is not set ++# CONFIG_SERIO_ALTERA_PS2 is not set ++# CONFIG_SERIO_PS2MULT is not set ++# CONFIG_SERIO_ARC_PS2 is not set ++# CONFIG_SERIO_APBPS2 is not set ++CONFIG_SERIO_TPLATFORMS=m ++# CONFIG_SERIO_GPIO_PS2 is not set ++# CONFIG_USERIO is not set ++# CONFIG_GAMEPORT is not set ++# end of Hardware I/O ports ++# end of Input device support ++ ++# ++# Character devices ++# ++CONFIG_TTY=y ++CONFIG_VT=y ++CONFIG_CONSOLE_TRANSLATIONS=y ++CONFIG_VT_CONSOLE=y ++CONFIG_VT_CONSOLE_SLEEP=y ++CONFIG_HW_CONSOLE=y ++CONFIG_VT_HW_CONSOLE_BINDING=y ++CONFIG_UNIX98_PTYS=y ++CONFIG_LEGACY_PTYS=y ++CONFIG_LEGACY_PTY_COUNT=0 ++CONFIG_LDISC_AUTOLOAD=y ++ ++# ++# Serial drivers ++# ++CONFIG_SERIAL_EARLYCON=y ++CONFIG_SERIAL_8250=y ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set ++CONFIG_SERIAL_8250_16550A_VARIANTS=y ++CONFIG_SERIAL_8250_FINTEK=y ++CONFIG_SERIAL_8250_CONSOLE=y ++CONFIG_SERIAL_8250_DMA=y ++CONFIG_SERIAL_8250_PCI=m ++CONFIG_SERIAL_8250_EXAR=m ++CONFIG_SERIAL_8250_NR_UARTS=8 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=8 ++# CONFIG_SERIAL_8250_EXTENDED is not set ++# CONFIG_SERIAL_8250_ASPEED_VUART is not set ++CONFIG_SERIAL_8250_DWLIB=y ++CONFIG_SERIAL_8250_FSL=y ++CONFIG_SERIAL_8250_DW=y ++# CONFIG_SERIAL_8250_RT288X is not set ++CONFIG_SERIAL_OF_PLATFORM=y ++ ++# ++# Non-8250 serial port support ++# ++CONFIG_SERIAL_AMBA_PL010=y ++CONFIG_SERIAL_AMBA_PL010_CONSOLE=y ++CONFIG_SERIAL_AMBA_PL011=y ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y ++CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y ++# CONFIG_SERIAL_KGDB_NMI is not set ++# CONFIG_SERIAL_MAX3100 is not set ++# CONFIG_SERIAL_MAX310X is not set ++# CONFIG_SERIAL_UARTLITE is not set ++CONFIG_SERIAL_CORE=y ++CONFIG_SERIAL_CORE_CONSOLE=y ++CONFIG_CONSOLE_POLL=y ++CONFIG_SERIAL_JSM=m ++CONFIG_SERIAL_SIFIVE=m ++CONFIG_SERIAL_SCCNXP=y ++CONFIG_SERIAL_SCCNXP_CONSOLE=y ++CONFIG_SERIAL_SC16IS7XX_CORE=m ++CONFIG_SERIAL_SC16IS7XX=m ++CONFIG_SERIAL_SC16IS7XX_I2C=y ++CONFIG_SERIAL_SC16IS7XX_SPI=y ++# CONFIG_SERIAL_BCM63XX is not set ++CONFIG_SERIAL_ALTERA_JTAGUART=m ++CONFIG_SERIAL_ALTERA_UART=m ++CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 ++CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 ++CONFIG_SERIAL_XILINX_PS_UART=y ++CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y ++CONFIG_SERIAL_ARC=m ++CONFIG_SERIAL_ARC_NR_PORTS=1 ++CONFIG_SERIAL_RP2=m ++CONFIG_SERIAL_RP2_NR_UARTS=32 ++CONFIG_SERIAL_FSL_LPUART=m ++CONFIG_SERIAL_FSL_LINFLEXUART=m ++CONFIG_SERIAL_CONEXANT_DIGICOLOR=m ++CONFIG_SERIAL_SPRD=m ++# end of Serial drivers ++ ++CONFIG_SERIAL_MCTRL_GPIO=y ++CONFIG_SERIAL_NONSTANDARD=y ++CONFIG_MOXA_INTELLIO=m ++CONFIG_MOXA_SMARTIO=m ++CONFIG_SYNCLINK_GT=m ++CONFIG_N_HDLC=m ++CONFIG_N_GSM=m ++CONFIG_NOZOMI=m ++CONFIG_NULL_TTY=m ++CONFIG_HVC_DRIVER=y ++# CONFIG_HVC_DCC is not set ++CONFIG_SERIAL_DEV_BUS=y ++CONFIG_SERIAL_DEV_CTRL_TTYPORT=y ++CONFIG_TTY_PRINTK=m ++CONFIG_TTY_PRINTK_LEVEL=6 ++CONFIG_VIRTIO_CONSOLE=y ++# CONFIG_IPMI_HANDLER is not set ++# CONFIG_IPMB_DEVICE_INTERFACE is not set ++CONFIG_HW_RANDOM=m ++# CONFIG_HW_RANDOM_TIMERIOMEM is not set ++# CONFIG_HW_RANDOM_BA431 is not set ++# CONFIG_HW_RANDOM_VIRTIO is not set ++CONFIG_HW_RANDOM_CAVIUM=m ++# CONFIG_HW_RANDOM_CCTRNG is not set ++# CONFIG_HW_RANDOM_XIPHERA is not set ++CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=m ++# CONFIG_APPLICOM is not set ++CONFIG_DEVMEM=y ++CONFIG_DEVPORT=y ++# CONFIG_TCG_TPM is not set ++# CONFIG_XILLYBUS is not set ++# CONFIG_XILLYUSB is not set ++# CONFIG_RANDOM_TRUST_CPU is not set ++# CONFIG_RANDOM_TRUST_BOOTLOADER is not set ++# end of Character devices ++ ++# ++# I2C support ++# ++CONFIG_I2C=y ++CONFIG_I2C_BOARDINFO=y ++CONFIG_I2C_COMPAT=y ++CONFIG_I2C_CHARDEV=y ++CONFIG_I2C_MUX=m ++ ++# ++# Multiplexer I2C Chip support ++# ++CONFIG_I2C_ARB_GPIO_CHALLENGE=m ++CONFIG_I2C_MUX_GPIO=m ++CONFIG_I2C_MUX_GPMUX=m ++CONFIG_I2C_MUX_LTC4306=m ++CONFIG_I2C_MUX_PCA9541=m ++CONFIG_I2C_MUX_PCA954x=m ++CONFIG_I2C_MUX_PINCTRL=m ++CONFIG_I2C_MUX_REG=m ++CONFIG_I2C_DEMUX_PINCTRL=m ++CONFIG_I2C_MUX_MLXCPLD=m ++# end of Multiplexer I2C Chip support ++ ++CONFIG_I2C_HELPER_AUTO=y ++CONFIG_I2C_SMBUS=m ++CONFIG_I2C_ALGOBIT=y ++ ++# ++# I2C Hardware Bus support ++# ++ ++# ++# PC SMBus host controller drivers ++# ++# CONFIG_I2C_ALI1535 is not set ++# CONFIG_I2C_ALI1563 is not set ++# CONFIG_I2C_ALI15X3 is not set ++# CONFIG_I2C_AMD756 is not set ++# CONFIG_I2C_AMD8111 is not set ++# CONFIG_I2C_I801 is not set ++# CONFIG_I2C_ISCH is not set ++# CONFIG_I2C_PIIX4 is not set ++# CONFIG_I2C_NFORCE2 is not set ++# CONFIG_I2C_NVIDIA_GPU is not set ++# CONFIG_I2C_SIS5595 is not set ++# CONFIG_I2C_SIS630 is not set ++# CONFIG_I2C_SIS96X is not set ++# CONFIG_I2C_VIA is not set ++# CONFIG_I2C_VIAPRO is not set ++ ++# ++# I2C system bus drivers (mostly embedded / system-on-chip) ++# ++CONFIG_I2C_CADENCE=m ++CONFIG_I2C_CBUS_GPIO=m ++CONFIG_I2C_DESIGNWARE_CORE=y ++# CONFIG_I2C_DESIGNWARE_SLAVE is not set ++CONFIG_I2C_DESIGNWARE_PLATFORM=y ++# CONFIG_I2C_DESIGNWARE_PCI is not set ++# CONFIG_I2C_EMEV2 is not set ++# CONFIG_I2C_GPIO is not set ++# CONFIG_I2C_NOMADIK is not set ++# CONFIG_I2C_OCORES is not set ++# CONFIG_I2C_PCA_PLATFORM is not set ++CONFIG_I2C_RK3X=y ++# CONFIG_I2C_SIMTEC is not set ++# CONFIG_I2C_THUNDERX is not set ++# CONFIG_I2C_XILINX is not set ++ ++# ++# External I2C/SMBus adapter drivers ++# ++CONFIG_I2C_DIOLAN_U2C=m ++# CONFIG_I2C_CP2615 is not set ++CONFIG_I2C_ROBOTFUZZ_OSIF=m ++CONFIG_I2C_TAOS_EVM=m ++CONFIG_I2C_TINY_USB=m ++ ++# ++# Other I2C/SMBus bus drivers ++# ++# CONFIG_I2C_VIRTIO is not set ++# end of I2C Hardware Bus support ++ ++CONFIG_I2C_STUB=m ++CONFIG_I2C_SLAVE=y ++CONFIG_I2C_SLAVE_EEPROM=m ++# CONFIG_I2C_SLAVE_TESTUNIT is not set ++# CONFIG_I2C_DEBUG_CORE is not set ++# CONFIG_I2C_DEBUG_ALGO is not set ++# CONFIG_I2C_DEBUG_BUS is not set ++# end of I2C support ++ ++CONFIG_I3C=m ++CONFIG_CDNS_I3C_MASTER=m ++CONFIG_DW_I3C_MASTER=m ++# CONFIG_SVC_I3C_MASTER is not set ++# CONFIG_MIPI_I3C_HCI is not set ++CONFIG_SPI=y ++# CONFIG_SPI_DEBUG is not set ++CONFIG_SPI_MASTER=y ++CONFIG_SPI_MEM=y ++ ++# ++# SPI Master Controller Drivers ++# ++CONFIG_SPI_ALTERA=m ++CONFIG_SPI_ALTERA_CORE=m ++CONFIG_SPI_AXI_SPI_ENGINE=m ++CONFIG_SPI_BITBANG=m ++CONFIG_SPI_CADENCE=m ++# CONFIG_SPI_CADENCE_QUADSPI is not set ++CONFIG_SPI_DESIGNWARE=m ++# CONFIG_SPI_DW_DMA is not set ++CONFIG_SPI_DW_PCI=m ++CONFIG_SPI_DW_MMIO=m ++CONFIG_SPI_NXP_FLEXSPI=m ++CONFIG_SPI_GPIO=m ++CONFIG_SPI_FSL_LIB=m ++CONFIG_SPI_FSL_SPI=m ++CONFIG_SPI_OC_TINY=m ++CONFIG_SPI_PL022=y ++# CONFIG_SPI_PXA2XX is not set ++CONFIG_SPI_ROCKCHIP=y ++# CONFIG_SPI_ROCKCHIP_SFC is not set ++# CONFIG_SPI_SC18IS602 is not set ++# CONFIG_SPI_SIFIVE is not set ++CONFIG_SPI_MXIC=m ++# CONFIG_SPI_THUNDERX is not set ++# CONFIG_SPI_XCOMM is not set ++# CONFIG_SPI_XILINX is not set ++# CONFIG_SPI_ZYNQMP_GQSPI is not set ++# CONFIG_SPI_AMD is not set ++ ++# ++# SPI Multiplexer support ++# ++CONFIG_SPI_MUX=m ++ ++# ++# SPI Protocol Masters ++# ++CONFIG_SPI_SPIDEV=m ++CONFIG_SPI_LOOPBACK_TEST=m ++CONFIG_SPI_TLE62X0=m ++CONFIG_SPI_SLAVE=y ++CONFIG_SPI_SLAVE_TIME=m ++CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m ++CONFIG_SPI_DYNAMIC=y ++CONFIG_SPMI=y ++# CONFIG_SPMI_HISI3670 is not set ++# CONFIG_HSI is not set ++CONFIG_PPS=y ++# CONFIG_PPS_DEBUG is not set ++ ++# ++# PPS clients support ++# ++# CONFIG_PPS_CLIENT_KTIMER is not set ++CONFIG_PPS_CLIENT_LDISC=m ++CONFIG_PPS_CLIENT_GPIO=m ++ ++# ++# PPS generators support ++# ++ ++# ++# PTP clock support ++# ++CONFIG_PTP_1588_CLOCK=m ++CONFIG_PTP_1588_CLOCK_OPTIONAL=m ++CONFIG_DP83640_PHY=m ++CONFIG_PTP_1588_CLOCK_INES=m ++# CONFIG_PTP_1588_CLOCK_KVM is not set ++CONFIG_PTP_1588_CLOCK_IDT82P33=m ++CONFIG_PTP_1588_CLOCK_IDTCM=m ++# CONFIG_PTP_1588_CLOCK_OCP is not set ++# end of PTP clock support ++ ++CONFIG_PINCTRL=y ++CONFIG_GENERIC_PINCTRL_GROUPS=y ++CONFIG_PINMUX=y ++CONFIG_GENERIC_PINMUX_FUNCTIONS=y ++CONFIG_PINCONF=y ++CONFIG_GENERIC_PINCONF=y ++# CONFIG_DEBUG_PINCTRL is not set ++CONFIG_PINCTRL_AS3722=m ++# CONFIG_PINCTRL_MCP23S08 is not set ++CONFIG_PINCTRL_ROCKCHIP=y ++CONFIG_PINCTRL_SINGLE=y ++CONFIG_PINCTRL_SX150X=y ++CONFIG_PINCTRL_STMFX=m ++CONFIG_PINCTRL_MAX77620=y ++CONFIG_PINCTRL_RK805=y ++# CONFIG_PINCTRL_OCELOT is not set ++# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set ++ ++# ++# Renesas pinctrl drivers ++# ++# end of Renesas pinctrl drivers ++ ++CONFIG_GPIOLIB=y ++CONFIG_GPIOLIB_FASTPATH_LIMIT=512 ++CONFIG_OF_GPIO=y ++CONFIG_GPIOLIB_IRQCHIP=y ++# CONFIG_DEBUG_GPIO is not set ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_CDEV=y ++CONFIG_GPIO_CDEV_V1=y ++CONFIG_GPIO_GENERIC=y ++CONFIG_GPIO_MAX730X=m ++ ++# ++# Memory mapped GPIO drivers ++# ++CONFIG_GPIO_74XX_MMIO=m ++CONFIG_GPIO_ALTERA=m ++CONFIG_GPIO_CADENCE=m ++CONFIG_GPIO_DWAPB=y ++CONFIG_GPIO_EXAR=m ++# CONFIG_GPIO_FTGPIO010 is not set ++CONFIG_GPIO_GENERIC_PLATFORM=y ++CONFIG_GPIO_GRGPIO=m ++CONFIG_GPIO_HLWD=m ++CONFIG_GPIO_LOGICVC=m ++CONFIG_GPIO_MB86S7X=m ++CONFIG_GPIO_PL061=y ++CONFIG_GPIO_ROCKCHIP=y ++CONFIG_GPIO_SAMA5D2_PIOBU=m ++# CONFIG_GPIO_SIFIVE is not set ++CONFIG_GPIO_SYSCON=m ++# CONFIG_GPIO_XGENE is not set ++CONFIG_GPIO_XILINX=y ++CONFIG_GPIO_AMD_FCH=m ++# end of Memory mapped GPIO drivers ++ ++# ++# I2C GPIO expanders ++# ++CONFIG_GPIO_ADP5588=m ++CONFIG_GPIO_ADNP=m ++CONFIG_GPIO_GW_PLD=m ++CONFIG_GPIO_MAX7300=m ++CONFIG_GPIO_MAX732X=m ++CONFIG_GPIO_PCA953X=y ++CONFIG_GPIO_PCA953X_IRQ=y ++# CONFIG_GPIO_PCA9570 is not set ++CONFIG_GPIO_PCF857X=m ++CONFIG_GPIO_TPIC2810=m ++# end of I2C GPIO expanders ++ ++# ++# MFD GPIO expanders ++# ++CONFIG_GPIO_ADP5520=m ++CONFIG_GPIO_BD70528=m ++# CONFIG_GPIO_BD71815 is not set ++CONFIG_GPIO_BD71828=m ++CONFIG_GPIO_MAX77620=y ++CONFIG_GPIO_MAX77650=m ++# CONFIG_GPIO_RC5T583 is not set ++CONFIG_GPIO_UCB1400=m ++# end of MFD GPIO expanders ++ ++# ++# PCI GPIO expanders ++# ++# CONFIG_GPIO_BT8XX is not set ++# CONFIG_GPIO_PCI_IDIO_16 is not set ++# CONFIG_GPIO_PCIE_IDIO_24 is not set ++# CONFIG_GPIO_RDC321X is not set ++# end of PCI GPIO expanders ++ ++# ++# SPI GPIO expanders ++# ++CONFIG_GPIO_74X164=m ++CONFIG_GPIO_MAX3191X=m ++CONFIG_GPIO_MAX7301=m ++CONFIG_GPIO_MC33880=m ++CONFIG_GPIO_PISOSR=m ++CONFIG_GPIO_XRA1403=m ++# end of SPI GPIO expanders ++ ++# ++# USB GPIO expanders ++# ++# end of USB GPIO expanders ++ ++# ++# Virtual GPIO drivers ++# ++# CONFIG_GPIO_AGGREGATOR is not set ++# CONFIG_GPIO_MOCKUP is not set ++# CONFIG_GPIO_VIRTIO is not set ++# end of Virtual GPIO drivers ++ ++CONFIG_W1=m ++CONFIG_W1_CON=y ++ ++# ++# 1-wire Bus Masters ++# ++CONFIG_W1_MASTER_MATROX=m ++CONFIG_W1_MASTER_DS2490=m ++CONFIG_W1_MASTER_DS2482=m ++CONFIG_W1_MASTER_DS1WM=m ++CONFIG_W1_MASTER_GPIO=m ++CONFIG_W1_MASTER_SGI=m ++# end of 1-wire Bus Masters ++ ++# ++# 1-wire Slaves ++# ++CONFIG_W1_SLAVE_THERM=m ++CONFIG_W1_SLAVE_SMEM=m ++CONFIG_W1_SLAVE_DS2405=m ++CONFIG_W1_SLAVE_DS2408=m ++CONFIG_W1_SLAVE_DS2408_READBACK=y ++CONFIG_W1_SLAVE_DS2413=m ++CONFIG_W1_SLAVE_DS2406=m ++CONFIG_W1_SLAVE_DS2423=m ++CONFIG_W1_SLAVE_DS2805=m ++CONFIG_W1_SLAVE_DS2430=m ++CONFIG_W1_SLAVE_DS2431=m ++CONFIG_W1_SLAVE_DS2433=m ++# CONFIG_W1_SLAVE_DS2433_CRC is not set ++CONFIG_W1_SLAVE_DS2438=m ++CONFIG_W1_SLAVE_DS250X=m ++CONFIG_W1_SLAVE_DS2780=m ++CONFIG_W1_SLAVE_DS2781=m ++CONFIG_W1_SLAVE_DS28E04=m ++CONFIG_W1_SLAVE_DS28E17=m ++# end of 1-wire Slaves ++ ++CONFIG_POWER_RESET=y ++# CONFIG_POWER_RESET_AS3722 is not set ++CONFIG_POWER_RESET_BRCMSTB=y ++# CONFIG_POWER_RESET_GPIO is not set ++# CONFIG_POWER_RESET_GPIO_RESTART is not set ++# CONFIG_POWER_RESET_LTC2952 is not set ++# CONFIG_POWER_RESET_REGULATOR is not set ++# CONFIG_POWER_RESET_RESTART is not set ++CONFIG_POWER_RESET_VEXPRESS=y ++CONFIG_POWER_RESET_XGENE=y ++CONFIG_POWER_RESET_SYSCON=y ++# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set ++# CONFIG_SYSCON_REBOOT_MODE is not set ++# CONFIG_NVMEM_REBOOT_MODE is not set ++CONFIG_POWER_SUPPLY=y ++# CONFIG_POWER_SUPPLY_DEBUG is not set ++CONFIG_POWER_SUPPLY_HWMON=y ++# CONFIG_PDA_POWER is not set ++CONFIG_GENERIC_ADC_BATTERY=m ++# CONFIG_TEST_POWER is not set ++CONFIG_CHARGER_ADP5061=m ++CONFIG_BATTERY_CW2015=m ++CONFIG_BATTERY_DS2760=m ++CONFIG_BATTERY_DS2780=m ++CONFIG_BATTERY_DS2781=m ++CONFIG_BATTERY_DS2782=m ++CONFIG_BATTERY_SBS=m ++CONFIG_CHARGER_SBS=m ++CONFIG_MANAGER_SBS=m ++CONFIG_BATTERY_BQ27XXX=m ++CONFIG_BATTERY_BQ27XXX_I2C=m ++CONFIG_BATTERY_BQ27XXX_HDQ=m ++# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set ++CONFIG_BATTERY_MAX17040=m ++CONFIG_BATTERY_MAX17042=m ++CONFIG_BATTERY_MAX1721X=m ++CONFIG_CHARGER_ISP1704=m ++# CONFIG_CHARGER_MAX8903 is not set ++# CONFIG_CHARGER_LP8727 is not set ++CONFIG_CHARGER_GPIO=m ++# CONFIG_CHARGER_MANAGER is not set ++CONFIG_CHARGER_LT3651=m ++# CONFIG_CHARGER_LTC4162L is not set ++CONFIG_CHARGER_DETECTOR_MAX14656=m ++CONFIG_CHARGER_MAX77650=m ++# CONFIG_CHARGER_BQ2415X is not set ++# CONFIG_CHARGER_BQ24190 is not set ++# CONFIG_CHARGER_BQ24257 is not set ++# CONFIG_CHARGER_BQ24735 is not set ++# CONFIG_CHARGER_BQ2515X is not set ++# CONFIG_CHARGER_BQ25890 is not set ++# CONFIG_CHARGER_BQ25980 is not set ++# CONFIG_CHARGER_BQ256XX is not set ++# CONFIG_CHARGER_SMB347 is not set ++# CONFIG_BATTERY_GAUGE_LTC2941 is not set ++# CONFIG_BATTERY_GOLDFISH is not set ++# CONFIG_BATTERY_RT5033 is not set ++# CONFIG_CHARGER_RT9455 is not set ++# CONFIG_CHARGER_UCS1002 is not set ++# CONFIG_CHARGER_BD99954 is not set ++# CONFIG_RN5T618_POWER is not set ++CONFIG_HWMON=y ++CONFIG_HWMON_VID=m ++# CONFIG_HWMON_DEBUG_CHIP is not set ++ ++# ++# Native drivers ++# ++CONFIG_SENSORS_AD7314=m ++CONFIG_SENSORS_AD7414=m ++CONFIG_SENSORS_AD7418=m ++CONFIG_SENSORS_ADM1021=m ++CONFIG_SENSORS_ADM1025=m ++CONFIG_SENSORS_ADM1026=m ++CONFIG_SENSORS_ADM1029=m ++CONFIG_SENSORS_ADM1031=m ++CONFIG_SENSORS_ADM1177=m ++CONFIG_SENSORS_ADM9240=m ++CONFIG_SENSORS_ADT7X10=m ++CONFIG_SENSORS_ADT7310=m ++CONFIG_SENSORS_ADT7410=m ++CONFIG_SENSORS_ADT7411=m ++CONFIG_SENSORS_ADT7462=m ++CONFIG_SENSORS_ADT7470=m ++CONFIG_SENSORS_ADT7475=m ++# CONFIG_SENSORS_AHT10 is not set ++# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set ++CONFIG_SENSORS_AS370=m ++CONFIG_SENSORS_ASC7621=m ++CONFIG_SENSORS_AXI_FAN_CONTROL=m ++CONFIG_SENSORS_ARM_SCPI=m ++CONFIG_SENSORS_ASPEED=m ++CONFIG_SENSORS_ATXP1=m ++CONFIG_SENSORS_BT1_PVT=m ++# CONFIG_SENSORS_BT1_PVT_ALARMS is not set ++# CONFIG_SENSORS_CORSAIR_CPRO is not set ++# CONFIG_SENSORS_CORSAIR_PSU is not set ++CONFIG_SENSORS_DRIVETEMP=m ++CONFIG_SENSORS_DS620=m ++CONFIG_SENSORS_DS1621=m ++CONFIG_SENSORS_I5K_AMB=m ++CONFIG_SENSORS_F71805F=m ++CONFIG_SENSORS_F71882FG=m ++CONFIG_SENSORS_F75375S=m ++CONFIG_SENSORS_FTSTEUTATES=m ++CONFIG_SENSORS_GL518SM=m ++CONFIG_SENSORS_GL520SM=m ++CONFIG_SENSORS_G760A=m ++CONFIG_SENSORS_G762=m ++CONFIG_SENSORS_GPIO_FAN=m ++CONFIG_SENSORS_HIH6130=m ++CONFIG_SENSORS_IIO_HWMON=m ++CONFIG_SENSORS_IT87=m ++CONFIG_SENSORS_JC42=m ++CONFIG_SENSORS_POWR1220=m ++CONFIG_SENSORS_LINEAGE=m ++CONFIG_SENSORS_LTC2945=m ++CONFIG_SENSORS_LTC2947=m ++CONFIG_SENSORS_LTC2947_I2C=m ++CONFIG_SENSORS_LTC2947_SPI=m ++CONFIG_SENSORS_LTC2990=m ++# CONFIG_SENSORS_LTC2992 is not set ++CONFIG_SENSORS_LTC4151=m ++CONFIG_SENSORS_LTC4215=m ++CONFIG_SENSORS_LTC4222=m ++CONFIG_SENSORS_LTC4245=m ++CONFIG_SENSORS_LTC4260=m ++CONFIG_SENSORS_LTC4261=m ++CONFIG_SENSORS_MAX1111=m ++# CONFIG_SENSORS_MAX127 is not set ++CONFIG_SENSORS_MAX16065=m ++CONFIG_SENSORS_MAX1619=m ++CONFIG_SENSORS_MAX1668=m ++CONFIG_SENSORS_MAX197=m ++CONFIG_SENSORS_MAX31722=m ++CONFIG_SENSORS_MAX31730=m ++CONFIG_SENSORS_MAX6621=m ++CONFIG_SENSORS_MAX6639=m ++CONFIG_SENSORS_MAX6642=m ++CONFIG_SENSORS_MAX6650=m ++CONFIG_SENSORS_MAX6697=m ++CONFIG_SENSORS_MAX31790=m ++CONFIG_SENSORS_MCP3021=m ++CONFIG_SENSORS_TC654=m ++# CONFIG_SENSORS_TPS23861 is not set ++# CONFIG_SENSORS_MR75203 is not set ++CONFIG_SENSORS_ADCXX=m ++CONFIG_SENSORS_LM63=m ++CONFIG_SENSORS_LM70=m ++CONFIG_SENSORS_LM73=m ++CONFIG_SENSORS_LM75=m ++CONFIG_SENSORS_LM77=m ++CONFIG_SENSORS_LM78=m ++CONFIG_SENSORS_LM80=m ++CONFIG_SENSORS_LM83=m ++CONFIG_SENSORS_LM85=m ++CONFIG_SENSORS_LM87=m ++CONFIG_SENSORS_LM90=m ++CONFIG_SENSORS_LM92=m ++CONFIG_SENSORS_LM93=m ++CONFIG_SENSORS_LM95234=m ++CONFIG_SENSORS_LM95241=m ++CONFIG_SENSORS_LM95245=m ++CONFIG_SENSORS_PC87360=m ++CONFIG_SENSORS_PC87427=m ++CONFIG_SENSORS_NTC_THERMISTOR=m ++CONFIG_SENSORS_NCT6683=m ++CONFIG_SENSORS_NCT6775=m ++CONFIG_SENSORS_NCT7802=m ++CONFIG_SENSORS_NCT7904=m ++CONFIG_SENSORS_NPCM7XX=m ++# CONFIG_SENSORS_NZXT_KRAKEN2 is not set ++CONFIG_SENSORS_OCC_P8_I2C=m ++CONFIG_SENSORS_OCC=m ++CONFIG_SENSORS_PCF8591=m ++CONFIG_PMBUS=m ++CONFIG_SENSORS_PMBUS=m ++# CONFIG_SENSORS_ADM1266 is not set ++CONFIG_SENSORS_ADM1275=m ++CONFIG_SENSORS_BEL_PFE=m ++# CONFIG_SENSORS_BPA_RS600 is not set ++# CONFIG_SENSORS_FSP_3Y is not set ++CONFIG_SENSORS_IBM_CFFPS=m ++# CONFIG_SENSORS_DPS920AB is not set ++CONFIG_SENSORS_INSPUR_IPSPS=m ++CONFIG_SENSORS_IR35221=m ++# CONFIG_SENSORS_IR36021 is not set ++CONFIG_SENSORS_IR38064=m ++CONFIG_SENSORS_IRPS5401=m ++CONFIG_SENSORS_ISL68137=m ++CONFIG_SENSORS_LM25066=m ++CONFIG_SENSORS_LTC2978=m ++CONFIG_SENSORS_LTC2978_REGULATOR=y ++CONFIG_SENSORS_LTC3815=m ++# CONFIG_SENSORS_MAX15301 is not set ++CONFIG_SENSORS_MAX16064=m ++# CONFIG_SENSORS_MAX16601 is not set ++CONFIG_SENSORS_MAX20730=m ++CONFIG_SENSORS_MAX20751=m ++CONFIG_SENSORS_MAX31785=m ++CONFIG_SENSORS_MAX34440=m ++CONFIG_SENSORS_MAX8688=m ++# CONFIG_SENSORS_MP2888 is not set ++# CONFIG_SENSORS_MP2975 is not set ++# CONFIG_SENSORS_PIM4328 is not set ++# CONFIG_SENSORS_PM6764TR is not set ++CONFIG_SENSORS_PXE1610=m ++# CONFIG_SENSORS_Q54SJ108A2 is not set ++# CONFIG_SENSORS_STPDDC60 is not set ++CONFIG_SENSORS_TPS40422=m ++CONFIG_SENSORS_TPS53679=m ++CONFIG_SENSORS_UCD9000=m ++CONFIG_SENSORS_UCD9200=m ++CONFIG_SENSORS_XDPE122=m ++CONFIG_SENSORS_ZL6100=m ++CONFIG_SENSORS_PWM_FAN=m ++# CONFIG_SENSORS_SBTSI is not set ++# CONFIG_SENSORS_SBRMI is not set ++CONFIG_SENSORS_SHT15=m ++CONFIG_SENSORS_SHT21=m ++CONFIG_SENSORS_SHT3x=m ++# CONFIG_SENSORS_SHT4x is not set ++CONFIG_SENSORS_SHTC1=m ++CONFIG_SENSORS_SIS5595=m ++CONFIG_SENSORS_DME1737=m ++CONFIG_SENSORS_EMC1403=m ++CONFIG_SENSORS_EMC2103=m ++CONFIG_SENSORS_EMC6W201=m ++CONFIG_SENSORS_SMSC47M1=m ++CONFIG_SENSORS_SMSC47M192=m ++CONFIG_SENSORS_SMSC47B397=m ++CONFIG_SENSORS_SCH56XX_COMMON=m ++CONFIG_SENSORS_SCH5627=m ++CONFIG_SENSORS_SCH5636=m ++CONFIG_SENSORS_STTS751=m ++CONFIG_SENSORS_SMM665=m ++CONFIG_SENSORS_ADC128D818=m ++CONFIG_SENSORS_ADS7828=m ++CONFIG_SENSORS_ADS7871=m ++CONFIG_SENSORS_AMC6821=m ++CONFIG_SENSORS_INA209=m ++CONFIG_SENSORS_INA2XX=m ++CONFIG_SENSORS_INA3221=m ++CONFIG_SENSORS_TC74=m ++CONFIG_SENSORS_THMC50=m ++CONFIG_SENSORS_TMP102=m ++CONFIG_SENSORS_TMP103=m ++CONFIG_SENSORS_TMP108=m ++CONFIG_SENSORS_TMP401=m ++CONFIG_SENSORS_TMP421=m ++CONFIG_SENSORS_TMP513=m ++CONFIG_SENSORS_VEXPRESS=m ++CONFIG_SENSORS_VIA686A=m ++CONFIG_SENSORS_VT1211=m ++CONFIG_SENSORS_VT8231=m ++CONFIG_SENSORS_W83773G=m ++CONFIG_SENSORS_W83781D=m ++CONFIG_SENSORS_W83791D=m ++CONFIG_SENSORS_W83792D=m ++CONFIG_SENSORS_W83793=m ++CONFIG_SENSORS_W83795=m ++# CONFIG_SENSORS_W83795_FANCTRL is not set ++CONFIG_SENSORS_W83L785TS=m ++CONFIG_SENSORS_W83L786NG=m ++CONFIG_SENSORS_W83627HF=m ++CONFIG_SENSORS_W83627EHF=m ++CONFIG_THERMAL=y ++# CONFIG_THERMAL_NETLINK is not set ++CONFIG_THERMAL_STATISTICS=y ++CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 ++CONFIG_THERMAL_HWMON=y ++CONFIG_THERMAL_OF=y ++CONFIG_THERMAL_WRITABLE_TRIPS=y ++CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y ++# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set ++# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set ++CONFIG_THERMAL_GOV_FAIR_SHARE=y ++CONFIG_THERMAL_GOV_STEP_WISE=y ++CONFIG_THERMAL_GOV_BANG_BANG=y ++CONFIG_THERMAL_GOV_USER_SPACE=y ++CONFIG_CPU_THERMAL=y ++CONFIG_CPU_FREQ_THERMAL=y ++CONFIG_DEVFREQ_THERMAL=y ++CONFIG_THERMAL_EMULATION=y ++CONFIG_THERMAL_MMIO=m ++# CONFIG_MAX77620_THERMAL is not set ++CONFIG_ROCKCHIP_THERMAL=y ++# CONFIG_GENERIC_ADC_THERMAL is not set ++CONFIG_WATCHDOG=y ++CONFIG_WATCHDOG_CORE=y ++# CONFIG_WATCHDOG_NOWAYOUT is not set ++CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y ++CONFIG_WATCHDOG_OPEN_TIMEOUT=0 ++CONFIG_WATCHDOG_SYSFS=y ++# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set ++ ++# ++# Watchdog Pretimeout Governors ++# ++# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set ++ ++# ++# Watchdog Device Drivers ++# ++CONFIG_SOFT_WATCHDOG=m ++# CONFIG_GPIO_WATCHDOG is not set ++# CONFIG_XILINX_WATCHDOG is not set ++# CONFIG_ZIIRAVE_WATCHDOG is not set ++# CONFIG_ARM_SP805_WATCHDOG is not set ++# CONFIG_ARM_SBSA_WATCHDOG is not set ++# CONFIG_CADENCE_WATCHDOG is not set ++CONFIG_DW_WATCHDOG=y ++# CONFIG_RN5T618_WATCHDOG is not set ++# CONFIG_MAX63XX_WATCHDOG is not set ++# CONFIG_MAX77620_WATCHDOG is not set ++# CONFIG_ARM_SMC_WATCHDOG is not set ++# CONFIG_ALIM7101_WDT is not set ++# CONFIG_I6300ESB_WDT is not set ++# CONFIG_MEN_A21_WDT is not set ++ ++# ++# PCI-based Watchdog Cards ++# ++# CONFIG_PCIPCWATCHDOG is not set ++# CONFIG_WDTPCI is not set ++ ++# ++# USB-based Watchdog Cards ++# ++# CONFIG_USBPCWATCHDOG is not set ++CONFIG_SSB_POSSIBLE=y ++CONFIG_SSB=y ++CONFIG_SSB_SPROM=y ++CONFIG_SSB_BLOCKIO=y ++CONFIG_SSB_PCIHOST_POSSIBLE=y ++CONFIG_SSB_PCIHOST=y ++CONFIG_SSB_B43_PCI_BRIDGE=y ++CONFIG_SSB_SDIOHOST_POSSIBLE=y ++# CONFIG_SSB_SDIOHOST is not set ++CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y ++CONFIG_SSB_DRIVER_PCICORE=y ++# CONFIG_SSB_DRIVER_GPIO is not set ++CONFIG_BCMA_POSSIBLE=y ++CONFIG_BCMA=m ++CONFIG_BCMA_BLOCKIO=y ++CONFIG_BCMA_HOST_PCI_POSSIBLE=y ++CONFIG_BCMA_HOST_PCI=y ++# CONFIG_BCMA_HOST_SOC is not set ++CONFIG_BCMA_DRIVER_PCI=y ++# CONFIG_BCMA_DRIVER_GMAC_CMN is not set ++# CONFIG_BCMA_DRIVER_GPIO is not set ++# CONFIG_BCMA_DEBUG is not set ++ ++# ++# Multifunction device drivers ++# ++CONFIG_MFD_CORE=y ++# CONFIG_MFD_ACT8945A is not set ++CONFIG_MFD_AS3711=y ++CONFIG_MFD_AS3722=m ++CONFIG_PMIC_ADP5520=y ++CONFIG_MFD_AAT2870_CORE=y ++# CONFIG_MFD_ATMEL_FLEXCOM is not set ++# CONFIG_MFD_ATMEL_HLCDC is not set ++# CONFIG_MFD_BCM590XX is not set ++# CONFIG_MFD_BD9571MWV is not set ++# CONFIG_MFD_AXP20X_I2C is not set ++# CONFIG_MFD_MADERA is not set ++# CONFIG_PMIC_DA903X is not set ++# CONFIG_MFD_DA9052_SPI is not set ++# CONFIG_MFD_DA9052_I2C is not set ++# CONFIG_MFD_DA9055 is not set ++# CONFIG_MFD_DA9062 is not set ++# CONFIG_MFD_DA9063 is not set ++# CONFIG_MFD_DA9150 is not set ++# CONFIG_MFD_DLN2 is not set ++# CONFIG_MFD_GATEWORKS_GSC is not set ++# CONFIG_MFD_MC13XXX_SPI is not set ++# CONFIG_MFD_MC13XXX_I2C is not set ++# CONFIG_MFD_MP2629 is not set ++# CONFIG_MFD_HI6421_PMIC is not set ++# CONFIG_MFD_HI6421_SPMI is not set ++# CONFIG_HTC_PASIC3 is not set ++# CONFIG_HTC_I2CPLD is not set ++# CONFIG_LPC_ICH is not set ++# CONFIG_LPC_SCH is not set ++# CONFIG_MFD_INTEL_PMT is not set ++CONFIG_MFD_IQS62X=m ++# CONFIG_MFD_JANZ_CMODIO is not set ++# CONFIG_MFD_KEMPLD is not set ++# CONFIG_MFD_88PM800 is not set ++# CONFIG_MFD_88PM805 is not set ++# CONFIG_MFD_88PM860X is not set ++# CONFIG_MFD_MAX14577 is not set ++CONFIG_MFD_MAX77620=y ++CONFIG_MFD_MAX77650=m ++# CONFIG_MFD_MAX77686 is not set ++# CONFIG_MFD_MAX77693 is not set ++# CONFIG_MFD_MAX77843 is not set ++# CONFIG_MFD_MAX8907 is not set ++# CONFIG_MFD_MAX8925 is not set ++# CONFIG_MFD_MAX8997 is not set ++# CONFIG_MFD_MAX8998 is not set ++# CONFIG_MFD_MT6360 is not set ++# CONFIG_MFD_MT6397 is not set ++# CONFIG_MFD_MENF21BMC is not set ++# CONFIG_EZX_PCAP is not set ++# CONFIG_MFD_CPCAP is not set ++# CONFIG_MFD_VIPERBOARD is not set ++# CONFIG_MFD_NTXEC is not set ++# CONFIG_MFD_RETU is not set ++# CONFIG_MFD_PCF50633 is not set ++CONFIG_UCB1400_CORE=m ++CONFIG_MFD_RDC321X=m ++# CONFIG_MFD_RT4831 is not set ++CONFIG_MFD_RT5033=m ++CONFIG_MFD_RC5T583=y ++CONFIG_MFD_RK808=y ++CONFIG_MFD_RN5T618=m ++# CONFIG_MFD_SEC_CORE is not set ++# CONFIG_MFD_SI476X_CORE is not set ++# CONFIG_MFD_SM501 is not set ++# CONFIG_MFD_SKY81452 is not set ++# CONFIG_MFD_STMPE is not set ++CONFIG_MFD_SYSCON=y ++# CONFIG_MFD_TI_AM335X_TSCADC is not set ++# CONFIG_MFD_LP3943 is not set ++# CONFIG_MFD_LP8788 is not set ++# CONFIG_MFD_TI_LMU is not set ++# CONFIG_MFD_PALMAS is not set ++# CONFIG_TPS6105X is not set ++# CONFIG_TPS65010 is not set ++# CONFIG_TPS6507X is not set ++# CONFIG_MFD_TPS65086 is not set ++# CONFIG_MFD_TPS65090 is not set ++# CONFIG_MFD_TPS65217 is not set ++# CONFIG_MFD_TI_LP873X is not set ++# CONFIG_MFD_TI_LP87565 is not set ++# CONFIG_MFD_TPS65218 is not set ++# CONFIG_MFD_TPS6586X is not set ++# CONFIG_MFD_TPS65910 is not set ++# CONFIG_MFD_TPS65912_I2C is not set ++# CONFIG_MFD_TPS65912_SPI is not set ++# CONFIG_MFD_TPS80031 is not set ++# CONFIG_TWL4030_CORE is not set ++# CONFIG_TWL6040_CORE is not set ++CONFIG_MFD_WL1273_CORE=m ++CONFIG_MFD_LM3533=m ++# CONFIG_MFD_TC3589X is not set ++# CONFIG_MFD_TQMX86 is not set ++# CONFIG_MFD_VX855 is not set ++# CONFIG_MFD_LOCHNAGAR is not set ++# CONFIG_MFD_ARIZONA_I2C is not set ++# CONFIG_MFD_ARIZONA_SPI is not set ++# CONFIG_MFD_WM8400 is not set ++# CONFIG_MFD_WM831X_I2C is not set ++# CONFIG_MFD_WM831X_SPI is not set ++# CONFIG_MFD_WM8350_I2C is not set ++# CONFIG_MFD_WM8994 is not set ++# CONFIG_MFD_ROHM_BD718XX is not set ++CONFIG_MFD_ROHM_BD70528=m ++CONFIG_MFD_ROHM_BD71828=m ++# CONFIG_MFD_ROHM_BD957XMUF is not set ++# CONFIG_MFD_STPMIC1 is not set ++CONFIG_MFD_STMFX=m ++# CONFIG_MFD_ATC260X_I2C is not set ++# CONFIG_MFD_KHADAS_MCU is not set ++# CONFIG_MFD_QCOM_PM8008 is not set ++CONFIG_MFD_VEXPRESS_SYSREG=y ++# CONFIG_RAVE_SP_CORE is not set ++# CONFIG_MFD_INTEL_M10_BMC is not set ++# CONFIG_MFD_RSMU_I2C is not set ++# CONFIG_MFD_RSMU_SPI is not set ++# end of Multifunction device drivers ++ ++CONFIG_REGULATOR=y ++# CONFIG_REGULATOR_DEBUG is not set ++CONFIG_REGULATOR_FIXED_VOLTAGE=y ++# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set ++# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set ++CONFIG_REGULATOR_88PG86X=m ++# CONFIG_REGULATOR_ACT8865 is not set ++# CONFIG_REGULATOR_AD5398 is not set ++CONFIG_REGULATOR_AAT2870=m ++CONFIG_REGULATOR_AS3711=m ++CONFIG_REGULATOR_AS3722=m ++# CONFIG_REGULATOR_BD71815 is not set ++CONFIG_REGULATOR_BD71828=m ++# CONFIG_REGULATOR_DA9121 is not set ++# CONFIG_REGULATOR_DA9210 is not set ++# CONFIG_REGULATOR_DA9211 is not set ++CONFIG_REGULATOR_FAN53555=y ++# CONFIG_REGULATOR_FAN53880 is not set ++CONFIG_REGULATOR_GPIO=y ++# CONFIG_REGULATOR_ISL9305 is not set ++# CONFIG_REGULATOR_ISL6271A is not set ++# CONFIG_REGULATOR_LP3971 is not set ++# CONFIG_REGULATOR_LP3972 is not set ++# CONFIG_REGULATOR_LP872X is not set ++# CONFIG_REGULATOR_LP8755 is not set ++# CONFIG_REGULATOR_LTC3589 is not set ++# CONFIG_REGULATOR_LTC3676 is not set ++# CONFIG_REGULATOR_MAX1586 is not set ++CONFIG_REGULATOR_MAX77620=y ++CONFIG_REGULATOR_MAX77650=m ++# CONFIG_REGULATOR_MAX8649 is not set ++# CONFIG_REGULATOR_MAX8660 is not set ++# CONFIG_REGULATOR_MAX8893 is not set ++# CONFIG_REGULATOR_MAX8952 is not set ++# CONFIG_REGULATOR_MAX8973 is not set ++# CONFIG_REGULATOR_MAX77826 is not set ++CONFIG_REGULATOR_MCP16502=m ++CONFIG_REGULATOR_MP5416=m ++CONFIG_REGULATOR_MP8859=m ++CONFIG_REGULATOR_MP886X=m ++CONFIG_REGULATOR_MPQ7920=m ++# CONFIG_REGULATOR_MT6311 is not set ++# CONFIG_REGULATOR_MT6315 is not set ++# CONFIG_REGULATOR_PCA9450 is not set ++# CONFIG_REGULATOR_PF8X00 is not set ++# CONFIG_REGULATOR_PFUZE100 is not set ++# CONFIG_REGULATOR_PV88060 is not set ++# CONFIG_REGULATOR_PV88080 is not set ++# CONFIG_REGULATOR_PV88090 is not set ++CONFIG_REGULATOR_PWM=y ++CONFIG_REGULATOR_QCOM_SPMI=y ++# CONFIG_REGULATOR_QCOM_USB_VBUS is not set ++# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set ++CONFIG_REGULATOR_RC5T583=m ++CONFIG_REGULATOR_RK808=y ++CONFIG_REGULATOR_RN5T618=m ++CONFIG_REGULATOR_ROHM=m ++# CONFIG_REGULATOR_RT4801 is not set ++CONFIG_REGULATOR_RT5033=m ++# CONFIG_REGULATOR_RT6160 is not set ++# CONFIG_REGULATOR_RT6245 is not set ++# CONFIG_REGULATOR_RTQ2134 is not set ++# CONFIG_REGULATOR_RTMV20 is not set ++# CONFIG_REGULATOR_RTQ6752 is not set ++CONFIG_REGULATOR_SLG51000=m ++# CONFIG_REGULATOR_SY8106A is not set ++CONFIG_REGULATOR_SY8824X=m ++# CONFIG_REGULATOR_SY8827N is not set ++# CONFIG_REGULATOR_TPS51632 is not set ++# CONFIG_REGULATOR_TPS62360 is not set ++# CONFIG_REGULATOR_TPS65023 is not set ++# CONFIG_REGULATOR_TPS6507X is not set ++# CONFIG_REGULATOR_TPS65132 is not set ++# CONFIG_REGULATOR_TPS6524X is not set ++# CONFIG_REGULATOR_VCTRL is not set ++# CONFIG_REGULATOR_VEXPRESS is not set ++# CONFIG_REGULATOR_QCOM_LABIBB is not set ++CONFIG_RC_CORE=m ++CONFIG_RC_MAP=m ++CONFIG_LIRC=y ++CONFIG_RC_DECODERS=y ++CONFIG_IR_NEC_DECODER=m ++CONFIG_IR_RC5_DECODER=m ++CONFIG_IR_RC6_DECODER=m ++CONFIG_IR_JVC_DECODER=m ++CONFIG_IR_SONY_DECODER=m ++CONFIG_IR_SANYO_DECODER=m ++CONFIG_IR_SHARP_DECODER=m ++CONFIG_IR_MCE_KBD_DECODER=m ++CONFIG_IR_XMP_DECODER=m ++CONFIG_IR_IMON_DECODER=m ++CONFIG_IR_RCMM_DECODER=m ++CONFIG_RC_DEVICES=y ++CONFIG_RC_ATI_REMOTE=m ++CONFIG_IR_HIX5HD2=m ++CONFIG_IR_IMON=m ++CONFIG_IR_IMON_RAW=m ++CONFIG_IR_MCEUSB=m ++CONFIG_IR_REDRAT3=m ++CONFIG_IR_SPI=m ++CONFIG_IR_STREAMZAP=m ++CONFIG_IR_IGORPLUGUSB=m ++CONFIG_IR_IGUANA=m ++CONFIG_IR_TTUSBIR=m ++CONFIG_RC_LOOPBACK=m ++CONFIG_IR_GPIO_CIR=m ++CONFIG_IR_GPIO_TX=m ++CONFIG_IR_PWM_TX=m ++CONFIG_IR_SERIAL=m ++CONFIG_IR_SERIAL_TRANSMITTER=y ++CONFIG_IR_SIR=m ++CONFIG_RC_XBOX_DVD=m ++# CONFIG_IR_TOY is not set ++CONFIG_CEC_CORE=y ++CONFIG_CEC_NOTIFIER=y ++CONFIG_MEDIA_CEC_SUPPORT=y ++# CONFIG_CEC_CH7322 is not set ++# CONFIG_CEC_GPIO is not set ++CONFIG_USB_PULSE8_CEC=m ++CONFIG_USB_RAINSHADOW_CEC=m ++CONFIG_MEDIA_SUPPORT=m ++# CONFIG_MEDIA_SUPPORT_FILTER is not set ++CONFIG_MEDIA_SUBDRV_AUTOSELECT=y ++ ++# ++# Media device types ++# ++CONFIG_MEDIA_CAMERA_SUPPORT=y ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y ++CONFIG_MEDIA_RADIO_SUPPORT=y ++CONFIG_MEDIA_SDR_SUPPORT=y ++CONFIG_MEDIA_PLATFORM_SUPPORT=y ++CONFIG_MEDIA_TEST_SUPPORT=y ++# end of Media device types ++ ++# ++# Media core support ++# ++CONFIG_VIDEO_DEV=m ++CONFIG_MEDIA_CONTROLLER=y ++CONFIG_DVB_CORE=m ++# end of Media core support ++ ++# ++# Video4Linux options ++# ++CONFIG_VIDEO_V4L2=m ++CONFIG_VIDEO_V4L2_I2C=y ++CONFIG_VIDEO_V4L2_SUBDEV_API=y ++# CONFIG_VIDEO_ADV_DEBUG is not set ++CONFIG_VIDEO_FIXED_MINOR_RANGES=y ++CONFIG_VIDEO_TUNER=m ++CONFIG_V4L2_H264=m ++CONFIG_V4L2_MEM2MEM_DEV=m ++CONFIG_V4L2_FWNODE=m ++CONFIG_V4L2_ASYNC=m ++CONFIG_VIDEOBUF_GEN=m ++CONFIG_VIDEOBUF_VMALLOC=m ++# end of Video4Linux options ++ ++# ++# Media controller options ++# ++CONFIG_MEDIA_CONTROLLER_DVB=y ++CONFIG_MEDIA_CONTROLLER_REQUEST_API=y ++ ++# ++# Please notice that the enabled Media controller Request API is EXPERIMENTAL ++# ++# end of Media controller options ++ ++# ++# Digital TV options ++# ++CONFIG_DVB_MMAP=y ++CONFIG_DVB_NET=y ++CONFIG_DVB_MAX_ADAPTERS=8 ++CONFIG_DVB_DYNAMIC_MINORS=y ++# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set ++# CONFIG_DVB_ULE_DEBUG is not set ++# end of Digital TV options ++ ++# ++# Media drivers ++# ++CONFIG_MEDIA_USB_SUPPORT=y ++ ++# ++# Webcam devices ++# ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y ++CONFIG_USB_GSPCA=m ++CONFIG_USB_M5602=m ++CONFIG_USB_STV06XX=m ++CONFIG_USB_GL860=m ++CONFIG_USB_GSPCA_BENQ=m ++CONFIG_USB_GSPCA_CONEX=m ++CONFIG_USB_GSPCA_CPIA1=m ++CONFIG_USB_GSPCA_DTCS033=m ++CONFIG_USB_GSPCA_ETOMS=m ++CONFIG_USB_GSPCA_FINEPIX=m ++CONFIG_USB_GSPCA_JEILINJ=m ++CONFIG_USB_GSPCA_JL2005BCD=m ++CONFIG_USB_GSPCA_KINECT=m ++CONFIG_USB_GSPCA_KONICA=m ++CONFIG_USB_GSPCA_MARS=m ++CONFIG_USB_GSPCA_MR97310A=m ++CONFIG_USB_GSPCA_NW80X=m ++CONFIG_USB_GSPCA_OV519=m ++CONFIG_USB_GSPCA_OV534=m ++CONFIG_USB_GSPCA_OV534_9=m ++CONFIG_USB_GSPCA_PAC207=m ++CONFIG_USB_GSPCA_PAC7302=m ++CONFIG_USB_GSPCA_PAC7311=m ++CONFIG_USB_GSPCA_SE401=m ++CONFIG_USB_GSPCA_SN9C2028=m ++CONFIG_USB_GSPCA_SN9C20X=m ++CONFIG_USB_GSPCA_SONIXB=m ++CONFIG_USB_GSPCA_SONIXJ=m ++CONFIG_USB_GSPCA_SPCA500=m ++CONFIG_USB_GSPCA_SPCA501=m ++CONFIG_USB_GSPCA_SPCA505=m ++CONFIG_USB_GSPCA_SPCA506=m ++CONFIG_USB_GSPCA_SPCA508=m ++CONFIG_USB_GSPCA_SPCA561=m ++CONFIG_USB_GSPCA_SPCA1528=m ++CONFIG_USB_GSPCA_SQ905=m ++CONFIG_USB_GSPCA_SQ905C=m ++CONFIG_USB_GSPCA_SQ930X=m ++CONFIG_USB_GSPCA_STK014=m ++CONFIG_USB_GSPCA_STK1135=m ++CONFIG_USB_GSPCA_STV0680=m ++CONFIG_USB_GSPCA_SUNPLUS=m ++CONFIG_USB_GSPCA_T613=m ++CONFIG_USB_GSPCA_TOPRO=m ++CONFIG_USB_GSPCA_TOUPTEK=m ++CONFIG_USB_GSPCA_TV8532=m ++CONFIG_USB_GSPCA_VC032X=m ++CONFIG_USB_GSPCA_VICAM=m ++CONFIG_USB_GSPCA_XIRLINK_CIT=m ++CONFIG_USB_GSPCA_ZC3XX=m ++CONFIG_USB_PWC=m ++# CONFIG_USB_PWC_DEBUG is not set ++CONFIG_USB_PWC_INPUT_EVDEV=y ++CONFIG_VIDEO_CPIA2=m ++CONFIG_USB_ZR364XX=m ++CONFIG_USB_STKWEBCAM=m ++CONFIG_USB_S2255=m ++CONFIG_VIDEO_USBTV=m ++ ++# ++# Analog TV USB devices ++# ++CONFIG_VIDEO_PVRUSB2=m ++CONFIG_VIDEO_PVRUSB2_SYSFS=y ++CONFIG_VIDEO_PVRUSB2_DVB=y ++# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set ++CONFIG_VIDEO_HDPVR=m ++CONFIG_VIDEO_STK1160_COMMON=m ++CONFIG_VIDEO_STK1160=m ++CONFIG_VIDEO_GO7007=m ++CONFIG_VIDEO_GO7007_USB=m ++CONFIG_VIDEO_GO7007_LOADER=m ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m ++ ++# ++# Analog/digital TV USB devices ++# ++CONFIG_VIDEO_AU0828=m ++CONFIG_VIDEO_AU0828_V4L2=y ++CONFIG_VIDEO_AU0828_RC=y ++CONFIG_VIDEO_CX231XX=m ++CONFIG_VIDEO_CX231XX_RC=y ++CONFIG_VIDEO_CX231XX_ALSA=m ++CONFIG_VIDEO_CX231XX_DVB=m ++CONFIG_VIDEO_TM6000=m ++CONFIG_VIDEO_TM6000_ALSA=m ++CONFIG_VIDEO_TM6000_DVB=m ++ ++# ++# Digital TV USB devices ++# ++CONFIG_DVB_USB=m ++# CONFIG_DVB_USB_DEBUG is not set ++CONFIG_DVB_USB_DIB3000MC=m ++CONFIG_DVB_USB_A800=m ++CONFIG_DVB_USB_DIBUSB_MB=m ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y ++CONFIG_DVB_USB_DIBUSB_MC=m ++CONFIG_DVB_USB_DIB0700=m ++CONFIG_DVB_USB_UMT_010=m ++CONFIG_DVB_USB_CXUSB=m ++# CONFIG_DVB_USB_CXUSB_ANALOG is not set ++CONFIG_DVB_USB_M920X=m ++CONFIG_DVB_USB_DIGITV=m ++CONFIG_DVB_USB_VP7045=m ++CONFIG_DVB_USB_VP702X=m ++CONFIG_DVB_USB_GP8PSK=m ++CONFIG_DVB_USB_NOVA_T_USB2=m ++CONFIG_DVB_USB_TTUSB2=m ++CONFIG_DVB_USB_DTT200U=m ++CONFIG_DVB_USB_OPERA1=m ++CONFIG_DVB_USB_AF9005=m ++CONFIG_DVB_USB_AF9005_REMOTE=m ++CONFIG_DVB_USB_PCTV452E=m ++CONFIG_DVB_USB_DW2102=m ++CONFIG_DVB_USB_CINERGY_T2=m ++CONFIG_DVB_USB_DTV5100=m ++CONFIG_DVB_USB_AZ6027=m ++CONFIG_DVB_USB_TECHNISAT_USB2=m ++CONFIG_DVB_USB_V2=m ++CONFIG_DVB_USB_AF9015=m ++CONFIG_DVB_USB_AF9035=m ++CONFIG_DVB_USB_ANYSEE=m ++CONFIG_DVB_USB_AU6610=m ++CONFIG_DVB_USB_AZ6007=m ++CONFIG_DVB_USB_CE6230=m ++CONFIG_DVB_USB_EC168=m ++CONFIG_DVB_USB_GL861=m ++CONFIG_DVB_USB_LME2510=m ++CONFIG_DVB_USB_MXL111SF=m ++CONFIG_DVB_USB_RTL28XXU=m ++CONFIG_DVB_USB_DVBSKY=m ++CONFIG_DVB_USB_ZD1301=m ++CONFIG_DVB_TTUSB_BUDGET=m ++CONFIG_DVB_TTUSB_DEC=m ++CONFIG_SMS_USB_DRV=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m ++# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set ++CONFIG_DVB_AS102=m ++ ++# ++# Webcam, TV (analog/digital) USB devices ++# ++CONFIG_VIDEO_EM28XX=m ++CONFIG_VIDEO_EM28XX_V4L2=m ++CONFIG_VIDEO_EM28XX_ALSA=m ++CONFIG_VIDEO_EM28XX_DVB=m ++CONFIG_VIDEO_EM28XX_RC=m ++ ++# ++# Software defined radio USB devices ++# ++CONFIG_USB_AIRSPY=m ++CONFIG_USB_HACKRF=m ++CONFIG_USB_MSI2500=m ++# CONFIG_MEDIA_PCI_SUPPORT is not set ++CONFIG_RADIO_ADAPTERS=y ++CONFIG_RADIO_TEA575X=m ++CONFIG_RADIO_SI470X=m ++CONFIG_USB_SI470X=m ++CONFIG_I2C_SI470X=m ++CONFIG_RADIO_SI4713=m ++CONFIG_USB_SI4713=m ++CONFIG_PLATFORM_SI4713=m ++CONFIG_I2C_SI4713=m ++CONFIG_USB_MR800=m ++CONFIG_USB_DSBR=m ++CONFIG_RADIO_MAXIRADIO=m ++CONFIG_RADIO_SHARK=m ++CONFIG_RADIO_SHARK2=m ++CONFIG_USB_KEENE=m ++CONFIG_USB_RAREMONO=m ++CONFIG_USB_MA901=m ++CONFIG_RADIO_TEA5764=m ++CONFIG_RADIO_SAA7706H=m ++CONFIG_RADIO_TEF6862=m ++CONFIG_RADIO_WL1273=m ++CONFIG_MEDIA_COMMON_OPTIONS=y ++ ++# ++# common driver options ++# ++CONFIG_VIDEO_CX2341X=m ++CONFIG_VIDEO_TVEEPROM=m ++CONFIG_TTPCI_EEPROM=m ++CONFIG_CYPRESS_FIRMWARE=m ++CONFIG_VIDEOBUF2_CORE=m ++CONFIG_VIDEOBUF2_V4L2=m ++CONFIG_VIDEOBUF2_MEMOPS=m ++CONFIG_VIDEOBUF2_DMA_CONTIG=m ++CONFIG_VIDEOBUF2_VMALLOC=m ++CONFIG_VIDEOBUF2_DMA_SG=m ++CONFIG_DVB_B2C2_FLEXCOP=m ++CONFIG_SMS_SIANO_MDTV=m ++CONFIG_SMS_SIANO_RC=y ++# CONFIG_SMS_SIANO_DEBUGFS is not set ++# CONFIG_V4L_PLATFORM_DRIVERS is not set ++CONFIG_V4L_MEM2MEM_DRIVERS=y ++# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set ++CONFIG_VIDEO_ROCKCHIP_RGA=m ++CONFIG_DVB_PLATFORM_DRIVERS=y ++CONFIG_SDR_PLATFORM_DRIVERS=y ++ ++# ++# MMC/SDIO DVB adapters ++# ++CONFIG_SMS_SDIO_DRV=m ++# CONFIG_V4L_TEST_DRIVERS is not set ++# CONFIG_DVB_TEST_DRIVERS is not set ++# end of Media drivers ++ ++# ++# Media ancillary drivers ++# ++CONFIG_MEDIA_ATTACH=y ++ ++# ++# IR I2C driver auto-selected by 'Autoselect ancillary drivers' ++# ++CONFIG_VIDEO_IR_I2C=m ++ ++# ++# Audio decoders, processors and mixers ++# ++CONFIG_VIDEO_TVAUDIO=m ++CONFIG_VIDEO_TDA7432=m ++CONFIG_VIDEO_TDA9840=m ++CONFIG_VIDEO_TDA1997X=m ++CONFIG_VIDEO_TEA6415C=m ++CONFIG_VIDEO_TEA6420=m ++CONFIG_VIDEO_MSP3400=m ++CONFIG_VIDEO_CS3308=m ++CONFIG_VIDEO_CS5345=m ++CONFIG_VIDEO_CS53L32A=m ++CONFIG_VIDEO_TLV320AIC23B=m ++CONFIG_VIDEO_UDA1342=m ++CONFIG_VIDEO_WM8775=m ++CONFIG_VIDEO_WM8739=m ++CONFIG_VIDEO_VP27SMPX=m ++CONFIG_VIDEO_SONY_BTF_MPX=m ++# end of Audio decoders, processors and mixers ++ ++# ++# RDS decoders ++# ++CONFIG_VIDEO_SAA6588=m ++# end of RDS decoders ++ ++# ++# Video decoders ++# ++CONFIG_VIDEO_ADV7180=m ++CONFIG_VIDEO_ADV7183=m ++CONFIG_VIDEO_ADV748X=m ++CONFIG_VIDEO_ADV7604=m ++CONFIG_VIDEO_ADV7604_CEC=y ++CONFIG_VIDEO_ADV7842=m ++CONFIG_VIDEO_ADV7842_CEC=y ++CONFIG_VIDEO_BT819=m ++CONFIG_VIDEO_BT856=m ++CONFIG_VIDEO_BT866=m ++CONFIG_VIDEO_KS0127=m ++CONFIG_VIDEO_ML86V7667=m ++CONFIG_VIDEO_SAA7110=m ++CONFIG_VIDEO_SAA711X=m ++CONFIG_VIDEO_TC358743=m ++CONFIG_VIDEO_TC358743_CEC=y ++CONFIG_VIDEO_TVP514X=m ++CONFIG_VIDEO_TVP5150=m ++CONFIG_VIDEO_TVP7002=m ++CONFIG_VIDEO_TW2804=m ++CONFIG_VIDEO_TW9903=m ++CONFIG_VIDEO_TW9906=m ++CONFIG_VIDEO_TW9910=m ++CONFIG_VIDEO_VPX3220=m ++# CONFIG_VIDEO_MAX9286 is not set ++ ++# ++# Video and audio decoders ++# ++CONFIG_VIDEO_SAA717X=m ++CONFIG_VIDEO_CX25840=m ++# end of Video decoders ++ ++# ++# Video encoders ++# ++CONFIG_VIDEO_SAA7127=m ++CONFIG_VIDEO_SAA7185=m ++CONFIG_VIDEO_ADV7170=m ++CONFIG_VIDEO_ADV7175=m ++CONFIG_VIDEO_ADV7343=m ++CONFIG_VIDEO_ADV7393=m ++CONFIG_VIDEO_AD9389B=m ++CONFIG_VIDEO_AK881X=m ++CONFIG_VIDEO_THS8200=m ++# end of Video encoders ++ ++# ++# Video improvement chips ++# ++CONFIG_VIDEO_UPD64031A=m ++CONFIG_VIDEO_UPD64083=m ++# end of Video improvement chips ++ ++# ++# Audio/Video compression chips ++# ++CONFIG_VIDEO_SAA6752HS=m ++# end of Audio/Video compression chips ++ ++# ++# SDR tuner chips ++# ++CONFIG_SDR_MAX2175=m ++# end of SDR tuner chips ++ ++# ++# Miscellaneous helper chips ++# ++CONFIG_VIDEO_THS7303=m ++CONFIG_VIDEO_M52790=m ++CONFIG_VIDEO_I2C=m ++CONFIG_VIDEO_ST_MIPID02=m ++# end of Miscellaneous helper chips ++ ++# ++# Camera sensor devices ++# ++CONFIG_VIDEO_APTINA_PLL=m ++CONFIG_VIDEO_HI556=m ++# CONFIG_VIDEO_IMX208 is not set ++CONFIG_VIDEO_IMX214=m ++CONFIG_VIDEO_IMX219=m ++CONFIG_VIDEO_IMX258=m ++CONFIG_VIDEO_IMX274=m ++CONFIG_VIDEO_IMX290=m ++CONFIG_VIDEO_IMX319=m ++# CONFIG_VIDEO_IMX334 is not set ++# CONFIG_VIDEO_IMX335 is not set ++CONFIG_VIDEO_IMX355=m ++# CONFIG_VIDEO_IMX412 is not set ++# CONFIG_VIDEO_OV02A10 is not set ++CONFIG_VIDEO_OV2640=m ++CONFIG_VIDEO_OV2659=m ++CONFIG_VIDEO_OV2680=m ++CONFIG_VIDEO_OV2685=m ++CONFIG_VIDEO_OV5640=m ++CONFIG_VIDEO_OV5645=m ++CONFIG_VIDEO_OV5647=m ++# CONFIG_VIDEO_OV5648 is not set ++CONFIG_VIDEO_OV6650=m ++CONFIG_VIDEO_OV5670=m ++CONFIG_VIDEO_OV5675=m ++CONFIG_VIDEO_OV5695=m ++CONFIG_VIDEO_OV7251=m ++CONFIG_VIDEO_OV772X=m ++CONFIG_VIDEO_OV7640=m ++CONFIG_VIDEO_OV7670=m ++CONFIG_VIDEO_OV7740=m ++CONFIG_VIDEO_OV8856=m ++# CONFIG_VIDEO_OV8865 is not set ++# CONFIG_VIDEO_OV9282 is not set ++CONFIG_VIDEO_OV9640=m ++CONFIG_VIDEO_OV9650=m ++CONFIG_VIDEO_OV13858=m ++CONFIG_VIDEO_VS6624=m ++CONFIG_VIDEO_MT9M001=m ++CONFIG_VIDEO_MT9M032=m ++CONFIG_VIDEO_MT9M111=m ++CONFIG_VIDEO_MT9P031=m ++CONFIG_VIDEO_MT9T001=m ++CONFIG_VIDEO_MT9T112=m ++CONFIG_VIDEO_MT9V011=m ++CONFIG_VIDEO_MT9V032=m ++CONFIG_VIDEO_MT9V111=m ++CONFIG_VIDEO_SR030PC30=m ++CONFIG_VIDEO_NOON010PC30=m ++CONFIG_VIDEO_M5MOLS=m ++# CONFIG_VIDEO_RDACM20 is not set ++# CONFIG_VIDEO_RDACM21 is not set ++CONFIG_VIDEO_RJ54N1=m ++CONFIG_VIDEO_S5K6AA=m ++CONFIG_VIDEO_S5K6A3=m ++CONFIG_VIDEO_S5K4ECGX=m ++CONFIG_VIDEO_S5K5BAF=m ++# CONFIG_VIDEO_CCS is not set ++CONFIG_VIDEO_ET8EK8=m ++CONFIG_VIDEO_S5C73M3=m ++# end of Camera sensor devices ++ ++# ++# Lens drivers ++# ++CONFIG_VIDEO_AD5820=m ++CONFIG_VIDEO_AK7375=m ++CONFIG_VIDEO_DW9714=m ++# CONFIG_VIDEO_DW9768 is not set ++CONFIG_VIDEO_DW9807_VCM=m ++# end of Lens drivers ++ ++# ++# Flash devices ++# ++CONFIG_VIDEO_ADP1653=m ++CONFIG_VIDEO_LM3560=m ++CONFIG_VIDEO_LM3646=m ++# end of Flash devices ++ ++# ++# SPI helper chips ++# ++CONFIG_VIDEO_GS1662=m ++# end of SPI helper chips ++ ++# ++# Media SPI Adapters ++# ++CONFIG_CXD2880_SPI_DRV=m ++# end of Media SPI Adapters ++ ++CONFIG_MEDIA_TUNER=m ++ ++# ++# Customize TV tuners ++# ++CONFIG_MEDIA_TUNER_SIMPLE=m ++CONFIG_MEDIA_TUNER_TDA18250=m ++CONFIG_MEDIA_TUNER_TDA8290=m ++CONFIG_MEDIA_TUNER_TDA827X=m ++CONFIG_MEDIA_TUNER_TDA18271=m ++CONFIG_MEDIA_TUNER_TDA9887=m ++CONFIG_MEDIA_TUNER_TEA5761=m ++CONFIG_MEDIA_TUNER_TEA5767=m ++CONFIG_MEDIA_TUNER_MSI001=m ++CONFIG_MEDIA_TUNER_MT20XX=m ++CONFIG_MEDIA_TUNER_MT2060=m ++CONFIG_MEDIA_TUNER_MT2063=m ++CONFIG_MEDIA_TUNER_MT2266=m ++CONFIG_MEDIA_TUNER_MT2131=m ++CONFIG_MEDIA_TUNER_QT1010=m ++CONFIG_MEDIA_TUNER_XC2028=m ++CONFIG_MEDIA_TUNER_XC5000=m ++CONFIG_MEDIA_TUNER_XC4000=m ++CONFIG_MEDIA_TUNER_MXL5005S=m ++CONFIG_MEDIA_TUNER_MXL5007T=m ++CONFIG_MEDIA_TUNER_MC44S803=m ++CONFIG_MEDIA_TUNER_MAX2165=m ++CONFIG_MEDIA_TUNER_TDA18218=m ++CONFIG_MEDIA_TUNER_FC0011=m ++CONFIG_MEDIA_TUNER_FC0012=m ++CONFIG_MEDIA_TUNER_FC0013=m ++CONFIG_MEDIA_TUNER_TDA18212=m ++CONFIG_MEDIA_TUNER_E4000=m ++CONFIG_MEDIA_TUNER_FC2580=m ++CONFIG_MEDIA_TUNER_M88RS6000T=m ++CONFIG_MEDIA_TUNER_TUA9001=m ++CONFIG_MEDIA_TUNER_SI2157=m ++CONFIG_MEDIA_TUNER_IT913X=m ++CONFIG_MEDIA_TUNER_R820T=m ++CONFIG_MEDIA_TUNER_MXL301RF=m ++CONFIG_MEDIA_TUNER_QM1D1C0042=m ++CONFIG_MEDIA_TUNER_QM1D1B0004=m ++# end of Customize TV tuners ++ ++# ++# Customise DVB Frontends ++# ++ ++# ++# Multistandard (satellite) frontends ++# ++CONFIG_DVB_STB0899=m ++CONFIG_DVB_STB6100=m ++CONFIG_DVB_STV090x=m ++CONFIG_DVB_STV0910=m ++CONFIG_DVB_STV6110x=m ++CONFIG_DVB_STV6111=m ++CONFIG_DVB_MXL5XX=m ++CONFIG_DVB_M88DS3103=m ++ ++# ++# Multistandard (cable + terrestrial) frontends ++# ++CONFIG_DVB_DRXK=m ++CONFIG_DVB_TDA18271C2DD=m ++CONFIG_DVB_SI2165=m ++CONFIG_DVB_MN88472=m ++CONFIG_DVB_MN88473=m ++ ++# ++# DVB-S (satellite) frontends ++# ++CONFIG_DVB_CX24110=m ++CONFIG_DVB_CX24123=m ++CONFIG_DVB_MT312=m ++CONFIG_DVB_ZL10036=m ++CONFIG_DVB_ZL10039=m ++CONFIG_DVB_S5H1420=m ++CONFIG_DVB_STV0288=m ++CONFIG_DVB_STB6000=m ++CONFIG_DVB_STV0299=m ++CONFIG_DVB_STV6110=m ++CONFIG_DVB_STV0900=m ++CONFIG_DVB_TDA8083=m ++CONFIG_DVB_TDA10086=m ++CONFIG_DVB_TDA8261=m ++CONFIG_DVB_VES1X93=m ++CONFIG_DVB_TUNER_ITD1000=m ++CONFIG_DVB_TUNER_CX24113=m ++CONFIG_DVB_TDA826X=m ++CONFIG_DVB_TUA6100=m ++CONFIG_DVB_CX24116=m ++CONFIG_DVB_CX24117=m ++CONFIG_DVB_CX24120=m ++CONFIG_DVB_SI21XX=m ++CONFIG_DVB_TS2020=m ++CONFIG_DVB_DS3000=m ++CONFIG_DVB_MB86A16=m ++CONFIG_DVB_TDA10071=m ++ ++# ++# DVB-T (terrestrial) frontends ++# ++CONFIG_DVB_SP887X=m ++CONFIG_DVB_CX22700=m ++CONFIG_DVB_CX22702=m ++CONFIG_DVB_S5H1432=m ++CONFIG_DVB_DRXD=m ++CONFIG_DVB_L64781=m ++CONFIG_DVB_TDA1004X=m ++CONFIG_DVB_NXT6000=m ++CONFIG_DVB_MT352=m ++CONFIG_DVB_ZL10353=m ++CONFIG_DVB_DIB3000MB=m ++CONFIG_DVB_DIB3000MC=m ++CONFIG_DVB_DIB7000M=m ++CONFIG_DVB_DIB7000P=m ++CONFIG_DVB_DIB9000=m ++CONFIG_DVB_TDA10048=m ++CONFIG_DVB_AF9013=m ++CONFIG_DVB_EC100=m ++CONFIG_DVB_STV0367=m ++CONFIG_DVB_CXD2820R=m ++CONFIG_DVB_CXD2841ER=m ++CONFIG_DVB_RTL2830=m ++CONFIG_DVB_RTL2832=m ++CONFIG_DVB_RTL2832_SDR=m ++CONFIG_DVB_SI2168=m ++CONFIG_DVB_AS102_FE=m ++CONFIG_DVB_ZD1301_DEMOD=m ++CONFIG_DVB_GP8PSK_FE=m ++CONFIG_DVB_CXD2880=m ++ ++# ++# DVB-C (cable) frontends ++# ++CONFIG_DVB_VES1820=m ++CONFIG_DVB_TDA10021=m ++CONFIG_DVB_TDA10023=m ++CONFIG_DVB_STV0297=m ++ ++# ++# ATSC (North American/Korean Terrestrial/Cable DTV) frontends ++# ++CONFIG_DVB_NXT200X=m ++CONFIG_DVB_OR51211=m ++CONFIG_DVB_OR51132=m ++CONFIG_DVB_BCM3510=m ++CONFIG_DVB_LGDT330X=m ++CONFIG_DVB_LGDT3305=m ++CONFIG_DVB_LGDT3306A=m ++CONFIG_DVB_LG2160=m ++CONFIG_DVB_S5H1409=m ++CONFIG_DVB_AU8522=m ++CONFIG_DVB_AU8522_DTV=m ++CONFIG_DVB_AU8522_V4L=m ++CONFIG_DVB_S5H1411=m ++CONFIG_DVB_MXL692=m ++ ++# ++# ISDB-T (terrestrial) frontends ++# ++CONFIG_DVB_S921=m ++CONFIG_DVB_DIB8000=m ++CONFIG_DVB_MB86A20S=m ++ ++# ++# ISDB-S (satellite) & ISDB-T (terrestrial) frontends ++# ++CONFIG_DVB_TC90522=m ++CONFIG_DVB_MN88443X=m ++ ++# ++# Digital terrestrial only tuners/PLL ++# ++CONFIG_DVB_PLL=m ++CONFIG_DVB_TUNER_DIB0070=m ++CONFIG_DVB_TUNER_DIB0090=m ++ ++# ++# SEC control devices for DVB-S ++# ++CONFIG_DVB_DRX39XYJ=m ++CONFIG_DVB_LNBH25=m ++CONFIG_DVB_LNBH29=m ++CONFIG_DVB_LNBP21=m ++CONFIG_DVB_LNBP22=m ++CONFIG_DVB_ISL6405=m ++CONFIG_DVB_ISL6421=m ++CONFIG_DVB_ISL6423=m ++CONFIG_DVB_A8293=m ++CONFIG_DVB_LGS8GL5=m ++CONFIG_DVB_LGS8GXX=m ++CONFIG_DVB_ATBM8830=m ++CONFIG_DVB_TDA665x=m ++CONFIG_DVB_IX2505V=m ++CONFIG_DVB_M88RS2000=m ++CONFIG_DVB_AF9033=m ++CONFIG_DVB_HORUS3A=m ++CONFIG_DVB_ASCOT2E=m ++CONFIG_DVB_HELENE=m ++ ++# ++# Common Interface (EN50221) controller drivers ++# ++CONFIG_DVB_CXD2099=m ++CONFIG_DVB_SP2=m ++# end of Customise DVB Frontends ++ ++# ++# Tools to develop new frontends ++# ++CONFIG_DVB_DUMMY_FE=m ++# end of Media ancillary drivers ++ ++# ++# Graphics support ++# ++CONFIG_VGA_ARB=y ++CONFIG_VGA_ARB_MAX_GPUS=16 ++CONFIG_DRM=y ++CONFIG_DRM_MIPI_DBI=m ++CONFIG_DRM_MIPI_DSI=y ++CONFIG_DRM_DP_AUX_BUS=m ++# CONFIG_DRM_DP_AUX_CHARDEV is not set ++# CONFIG_DRM_DEBUG_MM is not set ++# CONFIG_DRM_DEBUG_SELFTEST is not set ++CONFIG_DRM_KMS_HELPER=y ++CONFIG_DRM_KMS_FB_HELPER=y ++# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set ++CONFIG_DRM_FBDEV_EMULATION=y ++CONFIG_DRM_FBDEV_OVERALLOC=100 ++# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set ++# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set ++CONFIG_DRM_DP_CEC=y ++CONFIG_DRM_GEM_CMA_HELPER=y ++CONFIG_DRM_KMS_CMA_HELPER=y ++CONFIG_DRM_GEM_SHMEM_HELPER=y ++CONFIG_DRM_SCHED=m ++ ++# ++# I2C encoder or helper chips ++# ++CONFIG_DRM_I2C_CH7006=m ++CONFIG_DRM_I2C_SIL164=m ++# CONFIG_DRM_I2C_NXP_TDA998X is not set ++CONFIG_DRM_I2C_NXP_TDA9950=m ++# end of I2C encoder or helper chips ++ ++# ++# ARM devices ++# ++# CONFIG_DRM_HDLCD is not set ++# CONFIG_DRM_MALI_DISPLAY is not set ++CONFIG_DRM_KOMEDA=m ++# end of ARM devices ++ ++CONFIG_DRM_BAIKAL_VDU=y ++# CONFIG_DRM_RADEON is not set ++# CONFIG_DRM_AMDGPU is not set ++# CONFIG_DRM_NOUVEAU is not set ++# CONFIG_DRM_VGEM is not set ++# CONFIG_DRM_VKMS is not set ++CONFIG_DRM_ROCKCHIP=y ++CONFIG_ROCKCHIP_ANALOGIX_DP=y ++CONFIG_ROCKCHIP_CDN_DP=y ++CONFIG_ROCKCHIP_DW_HDMI=y ++CONFIG_ROCKCHIP_DW_MIPI_DSI=y ++CONFIG_ROCKCHIP_INNO_HDMI=y ++CONFIG_ROCKCHIP_LVDS=y ++# CONFIG_ROCKCHIP_RGB is not set ++# CONFIG_ROCKCHIP_RK3066_HDMI is not set ++# CONFIG_DRM_VMWGFX is not set ++# CONFIG_DRM_UDL is not set ++# CONFIG_DRM_AST is not set ++# CONFIG_DRM_MGAG200 is not set ++# CONFIG_DRM_RCAR_DW_HDMI is not set ++CONFIG_DRM_RCAR_LVDS=m ++# CONFIG_DRM_QXL is not set ++CONFIG_DRM_PANEL=y ++ ++# ++# Display Panels ++# ++# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set ++CONFIG_DRM_PANEL_ARM_VERSATILE=m ++# CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set ++CONFIG_DRM_PANEL_BOE_HIMAX8279D=m ++CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m ++# CONFIG_DRM_PANEL_DSI_CM is not set ++CONFIG_DRM_PANEL_LVDS=m ++CONFIG_DRM_PANEL_SIMPLE=m ++CONFIG_DRM_PANEL_ELIDA_KD35T133=m ++CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m ++CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m ++CONFIG_DRM_PANEL_ILITEK_IL9322=m ++# CONFIG_DRM_PANEL_ILITEK_ILI9341 is not set ++CONFIG_DRM_PANEL_ILITEK_ILI9881C=m ++# CONFIG_DRM_PANEL_INNOLUX_EJ030NA is not set ++CONFIG_DRM_PANEL_INNOLUX_P079ZCA=m ++CONFIG_DRM_PANEL_JDI_LT070ME05000=m ++# CONFIG_DRM_PANEL_KHADAS_TS050 is not set ++CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04=m ++# CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set ++CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829=m ++# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set ++CONFIG_DRM_PANEL_LG_LB035Q02=m ++# CONFIG_DRM_PANEL_LG_LG4573 is not set ++CONFIG_DRM_PANEL_NEC_NL8048HL11=m ++CONFIG_DRM_PANEL_NOVATEK_NT35510=m ++# CONFIG_DRM_PANEL_NOVATEK_NT36672A is not set ++CONFIG_DRM_PANEL_NOVATEK_NT39016=m ++# CONFIG_DRM_PANEL_MANTIX_MLAF057WE51 is not set ++CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO=m ++CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m ++# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set ++CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m ++CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m ++CONFIG_DRM_PANEL_RAYDIUM_RM67191=m ++CONFIG_DRM_PANEL_RAYDIUM_RM68200=m ++CONFIG_DRM_PANEL_RONBO_RB070D30=m ++# CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20 is not set ++# CONFIG_DRM_PANEL_SAMSUNG_DB7430 is not set ++CONFIG_DRM_PANEL_SAMSUNG_S6D16D0=m ++CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m ++CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m ++# CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 is not set ++CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m ++# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set ++# CONFIG_DRM_PANEL_SAMSUNG_SOFEF00 is not set ++CONFIG_DRM_PANEL_SEIKO_43WVF1G=m ++CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m ++CONFIG_DRM_PANEL_SHARP_LS037V7DW01=m ++CONFIG_DRM_PANEL_SHARP_LS043T1LE01=m ++CONFIG_DRM_PANEL_SITRONIX_ST7701=m ++# CONFIG_DRM_PANEL_SITRONIX_ST7703 is not set ++# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set ++CONFIG_DRM_PANEL_SONY_ACX424AKP=m ++CONFIG_DRM_PANEL_SONY_ACX565AKM=m ++# CONFIG_DRM_PANEL_TDO_TL070WSH30 is not set ++CONFIG_DRM_PANEL_TPO_TD028TTEC1=m ++CONFIG_DRM_PANEL_TPO_TD043MTEA1=m ++CONFIG_DRM_PANEL_TPO_TPG110=m ++CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m ++# CONFIG_DRM_PANEL_VISIONOX_RM69299 is not set ++# CONFIG_DRM_PANEL_WIDECHIPS_WS2401 is not set ++CONFIG_DRM_PANEL_XINPENG_XPP055C272=m ++# end of Display Panels ++ ++CONFIG_DRM_BRIDGE=y ++CONFIG_DRM_PANEL_BRIDGE=y ++ ++# ++# Display Interface Bridges ++# ++CONFIG_DRM_CDNS_DSI=m ++# CONFIG_DRM_CHIPONE_ICN6211 is not set ++# CONFIG_DRM_CHRONTEL_CH7033 is not set ++CONFIG_DRM_DISPLAY_CONNECTOR=m ++# CONFIG_DRM_LONTIUM_LT8912B is not set ++# CONFIG_DRM_LONTIUM_LT9611 is not set ++# CONFIG_DRM_LONTIUM_LT9611UXC is not set ++# CONFIG_DRM_ITE_IT66121 is not set ++CONFIG_DRM_LVDS_CODEC=m ++CONFIG_DRM_BAIKAL_HDMI=y ++# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set ++# CONFIG_DRM_NWL_MIPI_DSI is not set ++# CONFIG_DRM_NXP_PTN3460 is not set ++# CONFIG_DRM_PARADE_PS8622 is not set ++CONFIG_DRM_PARADE_PS8640=m ++# CONFIG_DRM_SIL_SII8620 is not set ++# CONFIG_DRM_SII902X is not set ++CONFIG_DRM_SII9234=m ++# CONFIG_DRM_SIMPLE_BRIDGE is not set ++CONFIG_DRM_THINE_THC63LVD1024=m ++# CONFIG_DRM_TOSHIBA_TC358762 is not set ++CONFIG_DRM_TOSHIBA_TC358764=m ++# CONFIG_DRM_TOSHIBA_TC358767 is not set ++CONFIG_DRM_TOSHIBA_TC358768=m ++# CONFIG_DRM_TOSHIBA_TC358775 is not set ++# CONFIG_DRM_TI_TFP410 is not set ++# CONFIG_DRM_TI_SN65DSI83 is not set ++# CONFIG_DRM_TI_SN65DSI86 is not set ++CONFIG_DRM_TI_TPD12S015=m ++CONFIG_DRM_ANALOGIX_ANX6345=m ++CONFIG_DRM_ANALOGIX_ANX78XX=m ++CONFIG_DRM_ANALOGIX_DP=y ++# CONFIG_DRM_ANALOGIX_ANX7625 is not set ++CONFIG_DRM_I2C_ADV7511=m ++# CONFIG_DRM_I2C_ADV7511_AUDIO is not set ++CONFIG_DRM_I2C_ADV7511_CEC=y ++# CONFIG_DRM_CDNS_MHDP8546 is not set ++CONFIG_DRM_DW_HDMI=y ++CONFIG_DRM_DW_HDMI_AHB_AUDIO=m ++CONFIG_DRM_DW_HDMI_I2S_AUDIO=m ++CONFIG_DRM_DW_HDMI_CEC=m ++CONFIG_DRM_DW_MIPI_DSI=y ++# end of Display Interface Bridges ++ ++CONFIG_DRM_ETNAVIV=m ++CONFIG_DRM_ETNAVIV_THERMAL=y ++# CONFIG_DRM_HISI_HIBMC is not set ++CONFIG_DRM_HISI_KIRIN=m ++# CONFIG_DRM_MXSFB is not set ++# CONFIG_DRM_ARCPGU is not set ++# CONFIG_DRM_BOCHS is not set ++# CONFIG_DRM_CIRRUS_QEMU is not set ++CONFIG_DRM_GM12U320=m ++# CONFIG_DRM_SIMPLEDRM is not set ++CONFIG_TINYDRM_HX8357D=m ++CONFIG_TINYDRM_ILI9225=m ++CONFIG_TINYDRM_ILI9341=m ++CONFIG_TINYDRM_ILI9486=m ++CONFIG_TINYDRM_MI0283QT=m ++CONFIG_TINYDRM_REPAPER=m ++CONFIG_TINYDRM_ST7586=m ++CONFIG_TINYDRM_ST7735R=m ++# CONFIG_DRM_PL111 is not set ++CONFIG_DRM_LIMA=m ++CONFIG_DRM_PANFROST=m ++CONFIG_DRM_TIDSS=m ++# CONFIG_DRM_GUD is not set ++# CONFIG_DRM_LEGACY is not set ++CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y ++ ++# ++# Frame buffer Devices ++# ++CONFIG_FB_CMDLINE=y ++CONFIG_FB_NOTIFY=y ++CONFIG_FB=y ++CONFIG_FIRMWARE_EDID=y ++CONFIG_FB_CFB_FILLRECT=y ++CONFIG_FB_CFB_COPYAREA=y ++CONFIG_FB_CFB_IMAGEBLIT=y ++CONFIG_FB_SYS_FILLRECT=y ++CONFIG_FB_SYS_COPYAREA=y ++CONFIG_FB_SYS_IMAGEBLIT=y ++# CONFIG_FB_FOREIGN_ENDIAN is not set ++CONFIG_FB_SYS_FOPS=y ++CONFIG_FB_DEFERRED_IO=y ++CONFIG_FB_BACKLIGHT=m ++CONFIG_FB_MODE_HELPERS=y ++# CONFIG_FB_TILEBLITTING is not set ++ ++# ++# Frame buffer hardware drivers ++# ++# CONFIG_FB_CIRRUS is not set ++# CONFIG_FB_PM2 is not set ++CONFIG_FB_ARMCLCD=y ++# CONFIG_FB_CYBER2000 is not set ++# CONFIG_FB_ASILIANT is not set ++# CONFIG_FB_IMSTT is not set ++# CONFIG_FB_UVESA is not set ++CONFIG_FB_EFI=y ++# CONFIG_FB_OPENCORES is not set ++# CONFIG_FB_S1D13XXX is not set ++# CONFIG_FB_NVIDIA is not set ++# CONFIG_FB_RIVA is not set ++# CONFIG_FB_I740 is not set ++# CONFIG_FB_MATROX is not set ++# CONFIG_FB_RADEON is not set ++# CONFIG_FB_ATY128 is not set ++# CONFIG_FB_ATY is not set ++# CONFIG_FB_S3 is not set ++# CONFIG_FB_SAVAGE is not set ++# CONFIG_FB_SIS is not set ++# CONFIG_FB_NEOMAGIC is not set ++# CONFIG_FB_KYRO is not set ++# CONFIG_FB_3DFX is not set ++# CONFIG_FB_VOODOO1 is not set ++# CONFIG_FB_VT8623 is not set ++# CONFIG_FB_TRIDENT is not set ++# CONFIG_FB_ARK is not set ++# CONFIG_FB_PM3 is not set ++# CONFIG_FB_CARMINE is not set ++# CONFIG_FB_SMSCUFX is not set ++# CONFIG_FB_UDL is not set ++# CONFIG_FB_IBM_GXT4500 is not set ++# CONFIG_FB_VIRTUAL is not set ++# CONFIG_FB_METRONOME is not set ++# CONFIG_FB_MB862XX is not set ++# CONFIG_FB_SIMPLE is not set ++# CONFIG_FB_SSD1307 is not set ++# CONFIG_FB_SM712 is not set ++# end of Frame buffer Devices ++ ++# ++# Backlight & LCD device support ++# ++CONFIG_LCD_CLASS_DEVICE=m ++# CONFIG_LCD_L4F00242T03 is not set ++# CONFIG_LCD_LMS283GF05 is not set ++# CONFIG_LCD_LTV350QV is not set ++# CONFIG_LCD_ILI922X is not set ++# CONFIG_LCD_ILI9320 is not set ++# CONFIG_LCD_TDO24M is not set ++# CONFIG_LCD_VGG2432A4 is not set ++# CONFIG_LCD_PLATFORM is not set ++# CONFIG_LCD_AMS369FG06 is not set ++# CONFIG_LCD_LMS501KF03 is not set ++# CONFIG_LCD_HX8357 is not set ++CONFIG_LCD_OTM3225A=m ++CONFIG_BACKLIGHT_CLASS_DEVICE=y ++# CONFIG_BACKLIGHT_KTD253 is not set ++CONFIG_BACKLIGHT_LM3533=m ++CONFIG_BACKLIGHT_PWM=m ++CONFIG_BACKLIGHT_QCOM_WLED=m ++CONFIG_BACKLIGHT_ADP5520=m ++# CONFIG_BACKLIGHT_ADP8860 is not set ++# CONFIG_BACKLIGHT_ADP8870 is not set ++CONFIG_BACKLIGHT_AAT2870=m ++# CONFIG_BACKLIGHT_LM3630A is not set ++# CONFIG_BACKLIGHT_LM3639 is not set ++CONFIG_BACKLIGHT_LP855X=y ++CONFIG_BACKLIGHT_AS3711=m ++CONFIG_BACKLIGHT_GPIO=m ++# CONFIG_BACKLIGHT_LV5207LP is not set ++# CONFIG_BACKLIGHT_BD6107 is not set ++# CONFIG_BACKLIGHT_ARCXCNN is not set ++CONFIG_BACKLIGHT_LED=m ++# end of Backlight & LCD device support ++ ++CONFIG_VIDEOMODE_HELPERS=y ++CONFIG_HDMI=y ++ ++# ++# Console display driver support ++# ++CONFIG_DUMMY_CONSOLE=y ++CONFIG_DUMMY_CONSOLE_COLUMNS=80 ++CONFIG_DUMMY_CONSOLE_ROWS=25 ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y ++CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y ++# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set ++# end of Console display driver support ++ ++CONFIG_LOGO=y ++CONFIG_LOGO_LINUX_MONO=y ++CONFIG_LOGO_LINUX_VGA16=y ++CONFIG_LOGO_LINUX_CLUT224=y ++# end of Graphics support ++ ++CONFIG_SOUND=m ++CONFIG_SND=m ++CONFIG_SND_TIMER=m ++CONFIG_SND_PCM=m ++CONFIG_SND_PCM_ELD=y ++CONFIG_SND_PCM_IEC958=y ++CONFIG_SND_DMAENGINE_PCM=m ++CONFIG_SND_HWDEP=m ++CONFIG_SND_SEQ_DEVICE=m ++CONFIG_SND_RAWMIDI=m ++CONFIG_SND_JACK=y ++CONFIG_SND_JACK_INPUT_DEV=y ++# CONFIG_SND_OSSEMUL is not set ++CONFIG_SND_PCM_TIMER=y ++# CONFIG_SND_HRTIMER is not set ++# CONFIG_SND_DYNAMIC_MINORS is not set ++# CONFIG_SND_SUPPORT_OLD_API is not set ++CONFIG_SND_PROC_FS=y ++CONFIG_SND_VERBOSE_PROCFS=y ++# CONFIG_SND_VERBOSE_PRINTK is not set ++# CONFIG_SND_DEBUG is not set ++CONFIG_SND_VMASTER=y ++CONFIG_SND_SEQUENCER=m ++CONFIG_SND_SEQ_DUMMY=m ++CONFIG_SND_SEQ_MIDI_EVENT=m ++CONFIG_SND_SEQ_MIDI=m ++CONFIG_SND_SEQ_MIDI_EMUL=m ++CONFIG_SND_SEQ_VIRMIDI=m ++CONFIG_SND_MPU401_UART=m ++CONFIG_SND_OPL3_LIB=m ++CONFIG_SND_OPL3_LIB_SEQ=m ++CONFIG_SND_AC97_CODEC=m ++CONFIG_SND_DRIVERS=y ++CONFIG_SND_DUMMY=m ++CONFIG_SND_ALOOP=m ++CONFIG_SND_VIRMIDI=m ++CONFIG_SND_MTPAV=m ++CONFIG_SND_SERIAL_U16550=m ++CONFIG_SND_MPU401=m ++# CONFIG_SND_AC97_POWER_SAVE is not set ++CONFIG_SND_PCI=y ++# CONFIG_SND_AD1889 is not set ++CONFIG_SND_ALS300=m ++CONFIG_SND_ALI5451=m ++# CONFIG_SND_ATIIXP is not set ++# CONFIG_SND_ATIIXP_MODEM is not set ++# CONFIG_SND_AU8810 is not set ++# CONFIG_SND_AU8820 is not set ++# CONFIG_SND_AU8830 is not set ++CONFIG_SND_AW2=m ++CONFIG_SND_AZT3328=m ++# CONFIG_SND_BT87X is not set ++# CONFIG_SND_CA0106 is not set ++# CONFIG_SND_CMIPCI is not set ++# CONFIG_SND_OXYGEN is not set ++# CONFIG_SND_CS4281 is not set ++# CONFIG_SND_CS46XX is not set ++# CONFIG_SND_CTXFI is not set ++# CONFIG_SND_DARLA20 is not set ++# CONFIG_SND_GINA20 is not set ++# CONFIG_SND_LAYLA20 is not set ++# CONFIG_SND_DARLA24 is not set ++# CONFIG_SND_GINA24 is not set ++# CONFIG_SND_LAYLA24 is not set ++# CONFIG_SND_MONA is not set ++# CONFIG_SND_MIA is not set ++# CONFIG_SND_ECHO3G is not set ++# CONFIG_SND_INDIGO is not set ++# CONFIG_SND_INDIGOIO is not set ++# CONFIG_SND_INDIGODJ is not set ++# CONFIG_SND_INDIGOIOX is not set ++# CONFIG_SND_INDIGODJX is not set ++CONFIG_SND_EMU10K1=m ++CONFIG_SND_EMU10K1_SEQ=m ++CONFIG_SND_EMU10K1X=m ++# CONFIG_SND_ENS1370 is not set ++# CONFIG_SND_ENS1371 is not set ++CONFIG_SND_ES1938=m ++CONFIG_SND_ES1968=m ++# CONFIG_SND_ES1968_INPUT is not set ++# CONFIG_SND_ES1968_RADIO is not set ++# CONFIG_SND_FM801 is not set ++# CONFIG_SND_HDSP is not set ++# CONFIG_SND_HDSPM is not set ++CONFIG_SND_ICE1712=m ++# CONFIG_SND_ICE1724 is not set ++# CONFIG_SND_INTEL8X0 is not set ++# CONFIG_SND_INTEL8X0M is not set ++# CONFIG_SND_KORG1212 is not set ++# CONFIG_SND_LOLA is not set ++# CONFIG_SND_LX6464ES is not set ++CONFIG_SND_MAESTRO3=m ++# CONFIG_SND_MAESTRO3_INPUT is not set ++# CONFIG_SND_MIXART is not set ++# CONFIG_SND_NM256 is not set ++# CONFIG_SND_PCXHR is not set ++# CONFIG_SND_RIPTIDE is not set ++# CONFIG_SND_RME32 is not set ++# CONFIG_SND_RME96 is not set ++# CONFIG_SND_RME9652 is not set ++# CONFIG_SND_SE6X is not set ++CONFIG_SND_SONICVIBES=m ++CONFIG_SND_TRIDENT=m ++# CONFIG_SND_VIA82XX is not set ++# CONFIG_SND_VIA82XX_MODEM is not set ++# CONFIG_SND_VIRTUOSO is not set ++# CONFIG_SND_VX222 is not set ++# CONFIG_SND_YMFPCI is not set ++ ++# ++# HD-Audio ++# ++# CONFIG_SND_HDA_INTEL is not set ++# end of HD-Audio ++ ++CONFIG_SND_HDA_PREALLOC_SIZE=64 ++CONFIG_SND_SPI=y ++CONFIG_SND_USB=y ++CONFIG_SND_USB_AUDIO=m ++CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y ++CONFIG_SND_USB_UA101=m ++CONFIG_SND_USB_CAIAQ=m ++CONFIG_SND_USB_CAIAQ_INPUT=y ++CONFIG_SND_USB_6FIRE=m ++CONFIG_SND_USB_HIFACE=m ++CONFIG_SND_BCD2000=m ++CONFIG_SND_USB_LINE6=m ++CONFIG_SND_USB_POD=m ++CONFIG_SND_USB_PODHD=m ++CONFIG_SND_USB_TONEPORT=m ++CONFIG_SND_USB_VARIAX=m ++CONFIG_SND_SOC=m ++CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y ++# CONFIG_SND_SOC_ADI is not set ++# CONFIG_SND_SOC_AMD_ACP is not set ++# CONFIG_SND_ATMEL_SOC is not set ++CONFIG_SND_BCM63XX_I2S_WHISTLER=m ++CONFIG_SND_DESIGNWARE_I2S=m ++CONFIG_SND_DESIGNWARE_PCM=y ++ ++# ++# SoC Audio for Freescale CPUs ++# ++ ++# ++# Common SoC Audio options for Freescale CPUs: ++# ++# CONFIG_SND_SOC_FSL_ASRC is not set ++# CONFIG_SND_SOC_FSL_SAI is not set ++CONFIG_SND_SOC_FSL_AUDMIX=m ++# CONFIG_SND_SOC_FSL_SSI is not set ++# CONFIG_SND_SOC_FSL_SPDIF is not set ++# CONFIG_SND_SOC_FSL_ESAI is not set ++CONFIG_SND_SOC_FSL_MICFIL=m ++# CONFIG_SND_SOC_FSL_XCVR is not set ++# CONFIG_SND_SOC_IMX_AUDMUX is not set ++# end of SoC Audio for Freescale CPUs ++ ++# CONFIG_SND_I2S_HI6210_I2S is not set ++# CONFIG_SND_SOC_IMG is not set ++# CONFIG_SND_SOC_MTK_BTCVSD is not set ++CONFIG_SND_SOC_ROCKCHIP=m ++CONFIG_SND_SOC_ROCKCHIP_I2S=m ++CONFIG_SND_SOC_ROCKCHIP_PDM=m ++CONFIG_SND_SOC_ROCKCHIP_SPDIF=m ++CONFIG_SND_SOC_ROCKCHIP_MAX98090=m ++CONFIG_SND_SOC_ROCKCHIP_RT5645=m ++CONFIG_SND_SOC_RK3288_HDMI_ANALOG=m ++CONFIG_SND_SOC_RK3399_GRU_SOUND=m ++# CONFIG_SND_SOC_SOF_TOPLEVEL is not set ++ ++# ++# STMicroelectronics STM32 SOC audio support ++# ++# end of STMicroelectronics STM32 SOC audio support ++ ++CONFIG_SND_SOC_XILINX_I2S=m ++CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER=m ++CONFIG_SND_SOC_XILINX_SPDIF=m ++# CONFIG_SND_SOC_XTFPGA_I2S is not set ++CONFIG_SND_SOC_I2C_AND_SPI=m ++ ++# ++# CODEC drivers ++# ++# CONFIG_SND_SOC_AC97_CODEC is not set ++# CONFIG_SND_SOC_ADAU1372_I2C is not set ++# CONFIG_SND_SOC_ADAU1372_SPI is not set ++# CONFIG_SND_SOC_ADAU1701 is not set ++# CONFIG_SND_SOC_ADAU1761_I2C is not set ++# CONFIG_SND_SOC_ADAU1761_SPI is not set ++# CONFIG_SND_SOC_ADAU7002 is not set ++CONFIG_SND_SOC_ADAU7118=m ++CONFIG_SND_SOC_ADAU7118_HW=m ++CONFIG_SND_SOC_ADAU7118_I2C=m ++# CONFIG_SND_SOC_AK4104 is not set ++CONFIG_SND_SOC_AK4118=m ++CONFIG_SND_SOC_AK4458=m ++CONFIG_SND_SOC_AK4554=m ++CONFIG_SND_SOC_AK4613=m ++CONFIG_SND_SOC_AK4642=m ++CONFIG_SND_SOC_AK5386=m ++CONFIG_SND_SOC_AK5558=m ++CONFIG_SND_SOC_ALC5623=m ++CONFIG_SND_SOC_BD28623=m ++# CONFIG_SND_SOC_BT_SCO is not set ++# CONFIG_SND_SOC_CS35L32 is not set ++# CONFIG_SND_SOC_CS35L33 is not set ++# CONFIG_SND_SOC_CS35L34 is not set ++# CONFIG_SND_SOC_CS35L35 is not set ++CONFIG_SND_SOC_CS35L36=m ++# CONFIG_SND_SOC_CS42L42 is not set ++# CONFIG_SND_SOC_CS42L51_I2C is not set ++# CONFIG_SND_SOC_CS42L52 is not set ++# CONFIG_SND_SOC_CS42L56 is not set ++# CONFIG_SND_SOC_CS42L73 is not set ++# CONFIG_SND_SOC_CS4234 is not set ++# CONFIG_SND_SOC_CS4265 is not set ++# CONFIG_SND_SOC_CS4270 is not set ++# CONFIG_SND_SOC_CS4271_I2C is not set ++# CONFIG_SND_SOC_CS4271_SPI is not set ++# CONFIG_SND_SOC_CS42XX8_I2C is not set ++CONFIG_SND_SOC_CS43130=m ++CONFIG_SND_SOC_CS4341=m ++# CONFIG_SND_SOC_CS4349 is not set ++# CONFIG_SND_SOC_CS53L30 is not set ++# CONFIG_SND_SOC_CX2072X is not set ++CONFIG_SND_SOC_DA7213=m ++CONFIG_SND_SOC_DA7219=m ++CONFIG_SND_SOC_DMIC=m ++CONFIG_SND_SOC_HDMI_CODEC=m ++CONFIG_SND_SOC_ES7134=m ++CONFIG_SND_SOC_ES7241=m ++CONFIG_SND_SOC_ES8316=m ++CONFIG_SND_SOC_ES8328=m ++CONFIG_SND_SOC_ES8328_I2C=m ++CONFIG_SND_SOC_ES8328_SPI=m ++# CONFIG_SND_SOC_GTM601 is not set ++# CONFIG_SND_SOC_ICS43432 is not set ++# CONFIG_SND_SOC_INNO_RK3036 is not set ++# CONFIG_SND_SOC_MAX98088 is not set ++CONFIG_SND_SOC_MAX98090=m ++CONFIG_SND_SOC_MAX98357A=m ++# CONFIG_SND_SOC_MAX98504 is not set ++CONFIG_SND_SOC_MAX9867=m ++# CONFIG_SND_SOC_MAX98927 is not set ++# CONFIG_SND_SOC_MAX98373_I2C is not set ++# CONFIG_SND_SOC_MAX98390 is not set ++# CONFIG_SND_SOC_MAX9860 is not set ++# CONFIG_SND_SOC_MSM8916_WCD_ANALOG is not set ++# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set ++# CONFIG_SND_SOC_PCM1681 is not set ++CONFIG_SND_SOC_PCM1789=m ++CONFIG_SND_SOC_PCM1789_I2C=m ++# CONFIG_SND_SOC_PCM179X_I2C is not set ++# CONFIG_SND_SOC_PCM179X_SPI is not set ++CONFIG_SND_SOC_PCM186X=m ++CONFIG_SND_SOC_PCM186X_I2C=m ++CONFIG_SND_SOC_PCM186X_SPI=m ++CONFIG_SND_SOC_PCM3060=m ++CONFIG_SND_SOC_PCM3060_I2C=m ++CONFIG_SND_SOC_PCM3060_SPI=m ++CONFIG_SND_SOC_PCM3168A=m ++CONFIG_SND_SOC_PCM3168A_I2C=m ++CONFIG_SND_SOC_PCM3168A_SPI=m ++# CONFIG_SND_SOC_PCM5102A is not set ++CONFIG_SND_SOC_PCM512x=m ++CONFIG_SND_SOC_PCM512x_I2C=m ++CONFIG_SND_SOC_PCM512x_SPI=m ++CONFIG_SND_SOC_RK3328=m ++# CONFIG_SND_SOC_RK817 is not set ++CONFIG_SND_SOC_RL6231=m ++CONFIG_SND_SOC_RT5514=m ++CONFIG_SND_SOC_RT5514_SPI=m ++CONFIG_SND_SOC_RT5616=m ++CONFIG_SND_SOC_RT5631=m ++# CONFIG_SND_SOC_RT5640 is not set ++CONFIG_SND_SOC_RT5645=m ++# CONFIG_SND_SOC_RT5659 is not set ++CONFIG_SND_SOC_SGTL5000=m ++CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m ++# CONFIG_SND_SOC_SIMPLE_MUX is not set ++CONFIG_SND_SOC_SPDIF=m ++CONFIG_SND_SOC_SSM2305=m ++# CONFIG_SND_SOC_SSM2518 is not set ++CONFIG_SND_SOC_SSM2602=m ++CONFIG_SND_SOC_SSM2602_SPI=m ++CONFIG_SND_SOC_SSM2602_I2C=m ++CONFIG_SND_SOC_SSM4567=m ++CONFIG_SND_SOC_STA32X=m ++CONFIG_SND_SOC_STA350=m ++CONFIG_SND_SOC_STI_SAS=m ++CONFIG_SND_SOC_TAS2552=m ++CONFIG_SND_SOC_TAS2562=m ++# CONFIG_SND_SOC_TAS2764 is not set ++CONFIG_SND_SOC_TAS2770=m ++CONFIG_SND_SOC_TAS5086=m ++CONFIG_SND_SOC_TAS571X=m ++CONFIG_SND_SOC_TAS5720=m ++CONFIG_SND_SOC_TAS6424=m ++CONFIG_SND_SOC_TDA7419=m ++CONFIG_SND_SOC_TFA9879=m ++# CONFIG_SND_SOC_TFA989X is not set ++CONFIG_SND_SOC_TLV320AIC23=m ++CONFIG_SND_SOC_TLV320AIC23_I2C=m ++CONFIG_SND_SOC_TLV320AIC23_SPI=m ++CONFIG_SND_SOC_TLV320AIC31XX=m ++CONFIG_SND_SOC_TLV320AIC32X4=m ++CONFIG_SND_SOC_TLV320AIC32X4_I2C=m ++CONFIG_SND_SOC_TLV320AIC32X4_SPI=m ++# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set ++# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set ++CONFIG_SND_SOC_TLV320ADCX140=m ++CONFIG_SND_SOC_TS3A227E=m ++CONFIG_SND_SOC_TSCS42XX=m ++CONFIG_SND_SOC_TSCS454=m ++CONFIG_SND_SOC_UDA1334=m ++CONFIG_SND_SOC_WM8510=m ++CONFIG_SND_SOC_WM8523=m ++CONFIG_SND_SOC_WM8524=m ++CONFIG_SND_SOC_WM8580=m ++CONFIG_SND_SOC_WM8711=m ++CONFIG_SND_SOC_WM8728=m ++CONFIG_SND_SOC_WM8731=m ++CONFIG_SND_SOC_WM8737=m ++CONFIG_SND_SOC_WM8741=m ++CONFIG_SND_SOC_WM8750=m ++CONFIG_SND_SOC_WM8753=m ++CONFIG_SND_SOC_WM8770=m ++CONFIG_SND_SOC_WM8776=m ++CONFIG_SND_SOC_WM8782=m ++CONFIG_SND_SOC_WM8804=m ++CONFIG_SND_SOC_WM8804_I2C=m ++CONFIG_SND_SOC_WM8804_SPI=m ++CONFIG_SND_SOC_WM8903=m ++CONFIG_SND_SOC_WM8904=m ++CONFIG_SND_SOC_WM8960=m ++CONFIG_SND_SOC_WM8962=m ++CONFIG_SND_SOC_WM8974=m ++CONFIG_SND_SOC_WM8978=m ++CONFIG_SND_SOC_WM8985=m ++# CONFIG_SND_SOC_ZL38060 is not set ++CONFIG_SND_SOC_MAX9759=m ++CONFIG_SND_SOC_MT6351=m ++CONFIG_SND_SOC_MT6358=m ++CONFIG_SND_SOC_MT6660=m ++# CONFIG_SND_SOC_NAU8315 is not set ++CONFIG_SND_SOC_NAU8540=m ++CONFIG_SND_SOC_NAU8810=m ++CONFIG_SND_SOC_NAU8822=m ++CONFIG_SND_SOC_NAU8824=m ++CONFIG_SND_SOC_TPA6130A2=m ++# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set ++# CONFIG_SND_SOC_LPASS_VA_MACRO is not set ++# CONFIG_SND_SOC_LPASS_RX_MACRO is not set ++# CONFIG_SND_SOC_LPASS_TX_MACRO is not set ++# end of CODEC drivers ++ ++CONFIG_SND_SIMPLE_CARD_UTILS=m ++CONFIG_SND_SIMPLE_CARD=m ++CONFIG_SND_AUDIO_GRAPH_CARD=m ++CONFIG_SND_SYNTH_EMUX=m ++# CONFIG_SND_VIRTIO is not set ++CONFIG_AC97_BUS=m ++ ++# ++# HID support ++# ++CONFIG_HID=y ++CONFIG_HID_BATTERY_STRENGTH=y ++CONFIG_HIDRAW=y ++CONFIG_UHID=m ++CONFIG_HID_GENERIC=y ++ ++# ++# Special HID drivers ++# ++CONFIG_HID_A4TECH=m ++CONFIG_HID_ACCUTOUCH=m ++CONFIG_HID_ACRUX=m ++CONFIG_HID_ACRUX_FF=y ++CONFIG_HID_APPLE=m ++CONFIG_HID_APPLEIR=m ++# CONFIG_HID_ASUS is not set ++CONFIG_HID_AUREAL=m ++CONFIG_HID_BELKIN=m ++CONFIG_HID_BETOP_FF=m ++CONFIG_HID_BIGBEN_FF=m ++CONFIG_HID_CHERRY=m ++CONFIG_HID_CHICONY=m ++CONFIG_HID_CORSAIR=m ++CONFIG_HID_COUGAR=m ++CONFIG_HID_MACALLY=m ++CONFIG_HID_PRODIKEYS=m ++CONFIG_HID_CMEDIA=m ++CONFIG_HID_CP2112=m ++CONFIG_HID_CREATIVE_SB0540=m ++CONFIG_HID_CYPRESS=m ++CONFIG_HID_DRAGONRISE=m ++CONFIG_DRAGONRISE_FF=y ++CONFIG_HID_EMS_FF=m ++CONFIG_HID_ELAN=m ++CONFIG_HID_ELECOM=m ++CONFIG_HID_ELO=m ++CONFIG_HID_EZKEY=m ++# CONFIG_HID_FT260 is not set ++CONFIG_HID_GEMBIRD=m ++CONFIG_HID_GFRM=m ++CONFIG_HID_GLORIOUS=m ++CONFIG_HID_HOLTEK=m ++CONFIG_HOLTEK_FF=y ++# CONFIG_HID_VIVALDI is not set ++CONFIG_HID_GT683R=m ++CONFIG_HID_KEYTOUCH=m ++CONFIG_HID_KYE=m ++CONFIG_HID_UCLOGIC=m ++CONFIG_HID_WALTOP=m ++CONFIG_HID_VIEWSONIC=m ++CONFIG_HID_GYRATION=m ++CONFIG_HID_ICADE=m ++CONFIG_HID_ITE=m ++CONFIG_HID_JABRA=m ++CONFIG_HID_TWINHAN=m ++CONFIG_HID_KENSINGTON=m ++CONFIG_HID_LCPOWER=m ++CONFIG_HID_LED=m ++CONFIG_HID_LENOVO=m ++CONFIG_HID_LOGITECH=m ++CONFIG_HID_LOGITECH_DJ=m ++CONFIG_HID_LOGITECH_HIDPP=m ++CONFIG_LOGITECH_FF=y ++CONFIG_LOGIRUMBLEPAD2_FF=y ++CONFIG_LOGIG940_FF=y ++CONFIG_LOGIWHEELS_FF=y ++CONFIG_HID_MAGICMOUSE=m ++CONFIG_HID_MALTRON=m ++# CONFIG_HID_MAYFLASH is not set ++CONFIG_HID_REDRAGON=m ++CONFIG_HID_MICROSOFT=m ++CONFIG_HID_MONTEREY=m ++CONFIG_HID_MULTITOUCH=m ++CONFIG_HID_NTI=m ++CONFIG_HID_NTRIG=m ++CONFIG_HID_ORTEK=m ++CONFIG_HID_PANTHERLORD=m ++CONFIG_PANTHERLORD_FF=y ++CONFIG_HID_PENMOUNT=m ++CONFIG_HID_PETALYNX=m ++CONFIG_HID_PICOLCD=m ++CONFIG_HID_PICOLCD_FB=y ++CONFIG_HID_PICOLCD_BACKLIGHT=y ++CONFIG_HID_PICOLCD_LCD=y ++CONFIG_HID_PICOLCD_LEDS=y ++CONFIG_HID_PICOLCD_CIR=y ++CONFIG_HID_PLANTRONICS=m ++# CONFIG_HID_PLAYSTATION is not set ++CONFIG_HID_PRIMAX=m ++CONFIG_HID_RETRODE=m ++CONFIG_HID_ROCCAT=m ++CONFIG_HID_SAITEK=m ++CONFIG_HID_SAMSUNG=m ++# CONFIG_HID_SEMITEK is not set ++CONFIG_HID_SONY=m ++CONFIG_SONY_FF=y ++CONFIG_HID_SPEEDLINK=m ++CONFIG_HID_STEAM=m ++CONFIG_HID_STEELSERIES=m ++CONFIG_HID_SUNPLUS=m ++CONFIG_HID_RMI=m ++CONFIG_HID_GREENASIA=m ++CONFIG_GREENASIA_FF=y ++CONFIG_HID_SMARTJOYPLUS=m ++CONFIG_SMARTJOYPLUS_FF=y ++CONFIG_HID_TIVO=m ++CONFIG_HID_TOPSEED=m ++CONFIG_HID_THINGM=m ++CONFIG_HID_THRUSTMASTER=m ++CONFIG_THRUSTMASTER_FF=y ++CONFIG_HID_UDRAW_PS3=m ++CONFIG_HID_U2FZERO=m ++CONFIG_HID_WACOM=m ++CONFIG_HID_WIIMOTE=m ++CONFIG_HID_XINMO=m ++CONFIG_HID_ZEROPLUS=m ++CONFIG_ZEROPLUS_FF=y ++CONFIG_HID_ZYDACRON=m ++CONFIG_HID_SENSOR_HUB=m ++CONFIG_HID_SENSOR_CUSTOM_SENSOR=m ++CONFIG_HID_ALPS=m ++CONFIG_HID_MCP2221=m ++# end of Special HID drivers ++ ++# ++# USB HID support ++# ++CONFIG_USB_HID=y ++CONFIG_HID_PID=y ++CONFIG_USB_HIDDEV=y ++# end of USB HID support ++ ++# ++# I2C HID support ++# ++# CONFIG_I2C_HID_OF is not set ++# CONFIG_I2C_HID_OF_GOODIX is not set ++# end of I2C HID support ++# end of HID support ++ ++CONFIG_USB_OHCI_LITTLE_ENDIAN=y ++CONFIG_USB_SUPPORT=y ++CONFIG_USB_COMMON=y ++CONFIG_USB_LED_TRIG=y ++CONFIG_USB_ULPI_BUS=y ++CONFIG_USB_CONN_GPIO=m ++CONFIG_USB_ARCH_HAS_HCD=y ++CONFIG_USB=y ++CONFIG_USB_PCI=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++ ++# ++# Miscellaneous USB options ++# ++CONFIG_USB_DEFAULT_PERSIST=y ++# CONFIG_USB_FEW_INIT_RETRIES is not set ++# CONFIG_USB_DYNAMIC_MINORS is not set ++CONFIG_USB_OTG=y ++# CONFIG_USB_OTG_PRODUCTLIST is not set ++# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set ++CONFIG_USB_OTG_FSM=m ++CONFIG_USB_LEDS_TRIGGER_USBPORT=y ++CONFIG_USB_AUTOSUSPEND_DELAY=2 ++CONFIG_USB_MON=m ++ ++# ++# USB Host Controller Drivers ++# ++# CONFIG_USB_C67X00_HCD is not set ++CONFIG_USB_XHCI_HCD=y ++# CONFIG_USB_XHCI_DBGCAP is not set ++CONFIG_USB_XHCI_PCI=y ++# CONFIG_USB_XHCI_PCI_RENESAS is not set ++CONFIG_USB_XHCI_PLATFORM=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_ROOT_HUB_TT=y ++CONFIG_USB_EHCI_TT_NEWSCHED=y ++CONFIG_USB_EHCI_PCI=y ++CONFIG_USB_EHCI_FSL=m ++CONFIG_USB_EHCI_HCD_PLATFORM=y ++CONFIG_USB_OXU210HP_HCD=m ++CONFIG_USB_ISP116X_HCD=m ++CONFIG_USB_FOTG210_HCD=m ++CONFIG_USB_MAX3421_HCD=m ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_OHCI_HCD_PCI=y ++# CONFIG_USB_OHCI_HCD_SSB is not set ++CONFIG_USB_OHCI_HCD_PLATFORM=y ++# CONFIG_USB_UHCI_HCD is not set ++# CONFIG_USB_U132_HCD is not set ++# CONFIG_USB_SL811_HCD is not set ++# CONFIG_USB_R8A66597_HCD is not set ++CONFIG_USB_HCD_BCMA=m ++CONFIG_USB_HCD_SSB=m ++# CONFIG_USB_HCD_TEST_MODE is not set ++ ++# ++# USB Device Class drivers ++# ++CONFIG_USB_ACM=m ++CONFIG_USB_PRINTER=m ++CONFIG_USB_WDM=m ++CONFIG_USB_TMC=m ++ ++# ++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may ++# ++ ++# ++# also be needed; see USB_STORAGE Help for more info ++# ++CONFIG_USB_STORAGE=y ++# CONFIG_USB_STORAGE_DEBUG is not set ++CONFIG_USB_STORAGE_REALTEK=m ++# CONFIG_REALTEK_AUTOPM is not set ++CONFIG_USB_STORAGE_DATAFAB=m ++CONFIG_USB_STORAGE_FREECOM=m ++CONFIG_USB_STORAGE_ISD200=m ++CONFIG_USB_STORAGE_USBAT=m ++CONFIG_USB_STORAGE_SDDR09=m ++CONFIG_USB_STORAGE_SDDR55=m ++CONFIG_USB_STORAGE_JUMPSHOT=m ++CONFIG_USB_STORAGE_ALAUDA=m ++CONFIG_USB_STORAGE_ONETOUCH=m ++CONFIG_USB_STORAGE_KARMA=m ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m ++CONFIG_USB_STORAGE_ENE_UB6250=m ++CONFIG_USB_UAS=y ++ ++# ++# USB Imaging devices ++# ++CONFIG_USB_MDC800=m ++CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_VHCI_HC_PORTS=8 ++CONFIG_USBIP_VHCI_NR_HCS=1 ++CONFIG_USBIP_HOST=m ++CONFIG_USBIP_VUDC=m ++# CONFIG_USBIP_DEBUG is not set ++# CONFIG_USB_CDNS_SUPPORT is not set ++# CONFIG_USB_MUSB_HDRC is not set ++CONFIG_USB_DWC3=y ++# CONFIG_USB_DWC3_ULPI is not set ++# CONFIG_USB_DWC3_HOST is not set ++# CONFIG_USB_DWC3_GADGET is not set ++CONFIG_USB_DWC3_DUAL_ROLE=y ++ ++# ++# Platform Glue Driver Support ++# ++CONFIG_USB_DWC3_HAPS=y ++CONFIG_USB_DWC3_OF_SIMPLE=y ++CONFIG_USB_DWC2=y ++# CONFIG_USB_DWC2_HOST is not set ++ ++# ++# Gadget/Dual-role mode requires USB Gadget support to be enabled ++# ++# CONFIG_USB_DWC2_PERIPHERAL is not set ++CONFIG_USB_DWC2_DUAL_ROLE=y ++CONFIG_USB_DWC2_PCI=m ++# CONFIG_USB_DWC2_DEBUG is not set ++# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set ++CONFIG_USB_CHIPIDEA=y ++CONFIG_USB_CHIPIDEA_UDC=y ++CONFIG_USB_CHIPIDEA_HOST=y ++CONFIG_USB_CHIPIDEA_PCI=y ++CONFIG_USB_CHIPIDEA_MSM=y ++CONFIG_USB_CHIPIDEA_IMX=y ++CONFIG_USB_CHIPIDEA_GENERIC=y ++CONFIG_USB_CHIPIDEA_TEGRA=y ++CONFIG_USB_ISP1760=y ++CONFIG_USB_ISP1760_HCD=y ++CONFIG_USB_ISP1761_UDC=y ++# CONFIG_USB_ISP1760_HOST_ROLE is not set ++# CONFIG_USB_ISP1760_GADGET_ROLE is not set ++CONFIG_USB_ISP1760_DUAL_ROLE=y ++ ++# ++# USB port drivers ++# ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_SIMPLE=m ++CONFIG_USB_SERIAL_AIRCABLE=m ++CONFIG_USB_SERIAL_ARK3116=m ++CONFIG_USB_SERIAL_BELKIN=m ++CONFIG_USB_SERIAL_CH341=m ++CONFIG_USB_SERIAL_WHITEHEAT=m ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m ++CONFIG_USB_SERIAL_CP210X=m ++CONFIG_USB_SERIAL_CYPRESS_M8=m ++CONFIG_USB_SERIAL_EMPEG=m ++CONFIG_USB_SERIAL_FTDI_SIO=m ++CONFIG_USB_SERIAL_VISOR=m ++CONFIG_USB_SERIAL_IPAQ=m ++CONFIG_USB_SERIAL_IR=m ++CONFIG_USB_SERIAL_EDGEPORT=m ++CONFIG_USB_SERIAL_EDGEPORT_TI=m ++CONFIG_USB_SERIAL_F81232=m ++CONFIG_USB_SERIAL_F8153X=m ++CONFIG_USB_SERIAL_GARMIN=m ++CONFIG_USB_SERIAL_IPW=m ++CONFIG_USB_SERIAL_IUU=m ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m ++CONFIG_USB_SERIAL_KEYSPAN=m ++CONFIG_USB_SERIAL_KLSI=m ++CONFIG_USB_SERIAL_KOBIL_SCT=m ++CONFIG_USB_SERIAL_MCT_U232=m ++CONFIG_USB_SERIAL_METRO=m ++CONFIG_USB_SERIAL_MOS7720=m ++CONFIG_USB_SERIAL_MOS7840=m ++CONFIG_USB_SERIAL_MXUPORT=m ++CONFIG_USB_SERIAL_NAVMAN=m ++CONFIG_USB_SERIAL_PL2303=m ++CONFIG_USB_SERIAL_OTI6858=m ++CONFIG_USB_SERIAL_QCAUX=m ++CONFIG_USB_SERIAL_QUALCOMM=m ++CONFIG_USB_SERIAL_SPCP8X5=m ++CONFIG_USB_SERIAL_SAFE=m ++# CONFIG_USB_SERIAL_SAFE_PADDED is not set ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m ++CONFIG_USB_SERIAL_SYMBOL=m ++CONFIG_USB_SERIAL_TI=m ++CONFIG_USB_SERIAL_CYBERJACK=m ++CONFIG_USB_SERIAL_WWAN=m ++CONFIG_USB_SERIAL_OPTION=m ++CONFIG_USB_SERIAL_OMNINET=m ++CONFIG_USB_SERIAL_OPTICON=m ++CONFIG_USB_SERIAL_XSENS_MT=m ++CONFIG_USB_SERIAL_WISHBONE=m ++CONFIG_USB_SERIAL_SSU100=m ++CONFIG_USB_SERIAL_QT2=m ++CONFIG_USB_SERIAL_UPD78F0730=m ++# CONFIG_USB_SERIAL_XR is not set ++CONFIG_USB_SERIAL_DEBUG=m ++ ++# ++# USB Miscellaneous drivers ++# ++CONFIG_USB_EMI62=m ++CONFIG_USB_EMI26=m ++CONFIG_USB_ADUTUX=m ++CONFIG_USB_SEVSEG=m ++CONFIG_USB_LEGOTOWER=m ++CONFIG_USB_LCD=m ++CONFIG_USB_CYPRESS_CY7C63=m ++CONFIG_USB_CYTHERM=m ++CONFIG_USB_IDMOUSE=m ++CONFIG_USB_FTDI_ELAN=m ++CONFIG_USB_APPLEDISPLAY=m ++CONFIG_APPLE_MFI_FASTCHARGE=m ++CONFIG_USB_SISUSBVGA=m ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m ++CONFIG_USB_IOWARRIOR=m ++CONFIG_USB_TEST=m ++CONFIG_USB_EHSET_TEST_FIXTURE=m ++CONFIG_USB_ISIGHTFW=m ++CONFIG_USB_YUREX=m ++CONFIG_USB_EZUSB_FX2=m ++CONFIG_USB_HUB_USB251XB=m ++CONFIG_USB_HSIC_USB3503=y ++# CONFIG_USB_HSIC_USB4604 is not set ++CONFIG_USB_LINK_LAYER_TEST=m ++CONFIG_USB_CHAOSKEY=m ++ ++# ++# USB Physical Layer drivers ++# ++CONFIG_USB_PHY=y ++CONFIG_NOP_USB_XCEIV=y ++# CONFIG_USB_GPIO_VBUS is not set ++# CONFIG_USB_ISP1301 is not set ++CONFIG_USB_ULPI=y ++CONFIG_USB_ULPI_VIEWPORT=y ++# end of USB Physical Layer drivers ++ ++CONFIG_USB_GADGET=y ++# CONFIG_USB_GADGET_DEBUG is not set ++# CONFIG_USB_GADGET_DEBUG_FILES is not set ++# CONFIG_USB_GADGET_DEBUG_FS is not set ++CONFIG_USB_GADGET_VBUS_DRAW=2 ++CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 ++CONFIG_U_SERIAL_CONSOLE=y ++ ++# ++# USB Peripheral Controller ++# ++# CONFIG_USB_FOTG210_UDC is not set ++# CONFIG_USB_GR_UDC is not set ++# CONFIG_USB_R8A66597 is not set ++# CONFIG_USB_PXA27X is not set ++# CONFIG_USB_MV_UDC is not set ++# CONFIG_USB_MV_U3D is not set ++CONFIG_USB_SNP_CORE=m ++# CONFIG_USB_SNP_UDC_PLAT is not set ++# CONFIG_USB_M66592 is not set ++# CONFIG_USB_BDC_UDC is not set ++CONFIG_USB_AMD5536UDC=m ++# CONFIG_USB_NET2272 is not set ++CONFIG_USB_NET2280=m ++CONFIG_USB_GOKU=m ++CONFIG_USB_EG20T=m ++# CONFIG_USB_GADGET_XILINX is not set ++CONFIG_USB_MAX3420_UDC=m ++# CONFIG_USB_DUMMY_HCD is not set ++# end of USB Peripheral Controller ++ ++CONFIG_USB_LIBCOMPOSITE=m ++CONFIG_USB_F_ACM=m ++CONFIG_USB_F_SS_LB=m ++CONFIG_USB_U_SERIAL=m ++CONFIG_USB_U_ETHER=m ++CONFIG_USB_U_AUDIO=m ++CONFIG_USB_F_SERIAL=m ++CONFIG_USB_F_OBEX=m ++CONFIG_USB_F_NCM=m ++CONFIG_USB_F_ECM=m ++CONFIG_USB_F_EEM=m ++CONFIG_USB_F_SUBSET=m ++CONFIG_USB_F_RNDIS=m ++CONFIG_USB_F_MASS_STORAGE=m ++CONFIG_USB_F_FS=m ++CONFIG_USB_F_UAC1=m ++CONFIG_USB_F_UAC2=m ++CONFIG_USB_F_UVC=m ++CONFIG_USB_F_MIDI=m ++CONFIG_USB_F_HID=m ++CONFIG_USB_F_PRINTER=m ++CONFIG_USB_F_TCM=m ++CONFIG_USB_CONFIGFS=m ++CONFIG_USB_CONFIGFS_SERIAL=y ++CONFIG_USB_CONFIGFS_ACM=y ++CONFIG_USB_CONFIGFS_OBEX=y ++CONFIG_USB_CONFIGFS_NCM=y ++CONFIG_USB_CONFIGFS_ECM=y ++CONFIG_USB_CONFIGFS_ECM_SUBSET=y ++CONFIG_USB_CONFIGFS_RNDIS=y ++CONFIG_USB_CONFIGFS_EEM=y ++CONFIG_USB_CONFIGFS_MASS_STORAGE=y ++CONFIG_USB_CONFIGFS_F_LB_SS=y ++CONFIG_USB_CONFIGFS_F_FS=y ++CONFIG_USB_CONFIGFS_F_UAC1=y ++# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set ++CONFIG_USB_CONFIGFS_F_UAC2=y ++CONFIG_USB_CONFIGFS_F_MIDI=y ++CONFIG_USB_CONFIGFS_F_HID=y ++CONFIG_USB_CONFIGFS_F_UVC=y ++CONFIG_USB_CONFIGFS_F_PRINTER=y ++CONFIG_USB_CONFIGFS_F_TCM=y ++ ++# ++# USB Gadget precomposed configurations ++# ++CONFIG_USB_ZERO=m ++# CONFIG_USB_ZERO_HNPTEST is not set ++CONFIG_USB_AUDIO=m ++# CONFIG_GADGET_UAC1 is not set ++CONFIG_USB_ETH=m ++CONFIG_USB_ETH_RNDIS=y ++CONFIG_USB_ETH_EEM=y ++CONFIG_USB_G_NCM=m ++CONFIG_USB_GADGETFS=m ++CONFIG_USB_FUNCTIONFS=m ++CONFIG_USB_FUNCTIONFS_ETH=y ++CONFIG_USB_FUNCTIONFS_RNDIS=y ++CONFIG_USB_FUNCTIONFS_GENERIC=y ++CONFIG_USB_MASS_STORAGE=m ++CONFIG_USB_GADGET_TARGET=m ++CONFIG_USB_G_SERIAL=m ++CONFIG_USB_MIDI_GADGET=m ++CONFIG_USB_G_PRINTER=m ++CONFIG_USB_CDC_COMPOSITE=m ++CONFIG_USB_G_ACM_MS=m ++CONFIG_USB_G_MULTI=m ++CONFIG_USB_G_MULTI_RNDIS=y ++CONFIG_USB_G_MULTI_CDC=y ++CONFIG_USB_G_HID=m ++# CONFIG_USB_G_DBGP is not set ++CONFIG_USB_G_WEBCAM=m ++CONFIG_USB_RAW_GADGET=m ++# end of USB Gadget precomposed configurations ++ ++CONFIG_TYPEC=m ++CONFIG_TYPEC_TCPM=m ++CONFIG_TYPEC_TCPCI=m ++CONFIG_TYPEC_RT1711H=m ++# CONFIG_TYPEC_TCPCI_MAXIM is not set ++CONFIG_TYPEC_FUSB302=m ++CONFIG_TYPEC_UCSI=m ++CONFIG_UCSI_CCG=m ++CONFIG_TYPEC_TPS6598X=m ++CONFIG_TYPEC_HD3SS3220=m ++# CONFIG_TYPEC_STUSB160X is not set ++ ++# ++# USB Type-C Multiplexer/DeMultiplexer Switch support ++# ++CONFIG_TYPEC_MUX_PI3USB30532=m ++# end of USB Type-C Multiplexer/DeMultiplexer Switch support ++ ++# ++# USB Type-C Alternate Mode drivers ++# ++CONFIG_TYPEC_DP_ALTMODE=m ++# CONFIG_TYPEC_NVIDIA_ALTMODE is not set ++# end of USB Type-C Alternate Mode drivers ++ ++CONFIG_USB_ROLE_SWITCH=y ++CONFIG_MMC=y ++CONFIG_PWRSEQ_EMMC=y ++CONFIG_PWRSEQ_SD8787=m ++CONFIG_PWRSEQ_SIMPLE=y ++CONFIG_MMC_BLOCK=y ++CONFIG_MMC_BLOCK_MINORS=32 ++# CONFIG_SDIO_UART is not set ++# CONFIG_MMC_TEST is not set ++ ++# ++# MMC/SD/SDIO Host Controller Drivers ++# ++# CONFIG_MMC_DEBUG is not set ++CONFIG_MMC_ARMMMCI=y ++CONFIG_MMC_STM32_SDMMC=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_IO_ACCESSORS=y ++# CONFIG_MMC_SDHCI_PCI is not set ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SDHCI_OF_ARASAN=y ++CONFIG_MMC_SDHCI_OF_ASPEED=m ++# CONFIG_MMC_SDHCI_OF_AT91 is not set ++# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set ++CONFIG_MMC_SDHCI_CADENCE=y ++# CONFIG_MMC_SDHCI_F_SDH30 is not set ++CONFIG_MMC_SDHCI_MILBEAUT=m ++CONFIG_MMC_ALCOR=m ++# CONFIG_MMC_TIFM_SD is not set ++CONFIG_MMC_SPI=y ++# CONFIG_MMC_CB710 is not set ++# CONFIG_MMC_VIA_SDMMC is not set ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_PLTFM=y ++# CONFIG_MMC_DW_BLUEFIELD is not set ++CONFIG_MMC_DW_EXYNOS=y ++CONFIG_MMC_DW_HI3798CV200=m ++CONFIG_MMC_DW_K3=y ++# CONFIG_MMC_DW_PCI is not set ++CONFIG_MMC_DW_ROCKCHIP=y ++# CONFIG_MMC_VUB300 is not set ++# CONFIG_MMC_USHC is not set ++# CONFIG_MMC_USDHI6ROL0 is not set ++CONFIG_MMC_REALTEK_PCI=m ++CONFIG_MMC_REALTEK_USB=m ++CONFIG_MMC_CQHCI=y ++CONFIG_MMC_HSQ=m ++# CONFIG_MMC_TOSHIBA_PCI is not set ++# CONFIG_MMC_MTK is not set ++CONFIG_MMC_SDHCI_XENON=y ++# CONFIG_MMC_SDHCI_OMAP is not set ++CONFIG_MMC_SDHCI_AM654=m ++# CONFIG_MEMSTICK is not set ++CONFIG_NEW_LEDS=y ++CONFIG_LEDS_CLASS=y ++# CONFIG_LEDS_CLASS_FLASH is not set ++# CONFIG_LEDS_CLASS_MULTICOLOR is not set ++# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set ++ ++# ++# LED drivers ++# ++CONFIG_LEDS_AN30259A=m ++# CONFIG_LEDS_AW2013 is not set ++# CONFIG_LEDS_BCM6328 is not set ++# CONFIG_LEDS_BCM6358 is not set ++CONFIG_LEDS_CR0014114=m ++CONFIG_LEDS_EL15203000=m ++# CONFIG_LEDS_LM3530 is not set ++CONFIG_LEDS_LM3532=m ++CONFIG_LEDS_LM3533=m ++# CONFIG_LEDS_LM3642 is not set ++CONFIG_LEDS_LM3692X=m ++# CONFIG_LEDS_PCA9532 is not set ++CONFIG_LEDS_GPIO=y ++# CONFIG_LEDS_LP3944 is not set ++# CONFIG_LEDS_LP3952 is not set ++# CONFIG_LEDS_LP50XX is not set ++# CONFIG_LEDS_LP55XX_COMMON is not set ++# CONFIG_LEDS_LP8860 is not set ++# CONFIG_LEDS_PCA955X is not set ++# CONFIG_LEDS_PCA963X is not set ++# CONFIG_LEDS_DAC124S085 is not set ++CONFIG_LEDS_PWM=m ++CONFIG_LEDS_REGULATOR=m ++# CONFIG_LEDS_BD2802 is not set ++# CONFIG_LEDS_LT3593 is not set ++CONFIG_LEDS_ADP5520=m ++# CONFIG_LEDS_TCA6507 is not set ++# CONFIG_LEDS_TLC591XX is not set ++CONFIG_LEDS_MAX77650=m ++# CONFIG_LEDS_LM355x is not set ++# CONFIG_LEDS_IS31FL319X is not set ++# CONFIG_LEDS_IS31FL32XX is not set ++ ++# ++# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) ++# ++# CONFIG_LEDS_BLINKM is not set ++CONFIG_LEDS_SYSCON=y ++CONFIG_LEDS_MLXREG=m ++CONFIG_LEDS_USER=y ++# CONFIG_LEDS_SPI_BYTE is not set ++# CONFIG_LEDS_TI_LMU_COMMON is not set ++ ++# ++# Flash and Torch LED drivers ++# ++ ++# ++# LED Triggers ++# ++CONFIG_LEDS_TRIGGERS=y ++CONFIG_LEDS_TRIGGER_TIMER=m ++CONFIG_LEDS_TRIGGER_ONESHOT=m ++CONFIG_LEDS_TRIGGER_DISK=y ++CONFIG_LEDS_TRIGGER_MTD=y ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=m ++CONFIG_LEDS_TRIGGER_CPU=y ++CONFIG_LEDS_TRIGGER_ACTIVITY=y ++CONFIG_LEDS_TRIGGER_GPIO=m ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y ++ ++# ++# iptables trigger is under Netfilter config (LED target) ++# ++CONFIG_LEDS_TRIGGER_TRANSIENT=m ++CONFIG_LEDS_TRIGGER_CAMERA=m ++CONFIG_LEDS_TRIGGER_PANIC=y ++CONFIG_LEDS_TRIGGER_NETDEV=m ++CONFIG_LEDS_TRIGGER_PATTERN=m ++CONFIG_LEDS_TRIGGER_AUDIO=m ++# CONFIG_LEDS_TRIGGER_TTY is not set ++# CONFIG_ACCESSIBILITY is not set ++# CONFIG_INFINIBAND is not set ++CONFIG_EDAC_SUPPORT=y ++CONFIG_EDAC=y ++CONFIG_EDAC_LEGACY_SYSFS=y ++# CONFIG_EDAC_DEBUG is not set ++# CONFIG_EDAC_THUNDERX is not set ++# CONFIG_EDAC_XGENE is not set ++CONFIG_EDAC_DMC520=m ++CONFIG_RTC_LIB=y ++CONFIG_RTC_CLASS=y ++CONFIG_RTC_HCTOSYS=y ++CONFIG_RTC_HCTOSYS_DEVICE="rtc0" ++CONFIG_RTC_SYSTOHC=y ++CONFIG_RTC_SYSTOHC_DEVICE="rtc0" ++# CONFIG_RTC_DEBUG is not set ++# CONFIG_RTC_LIB_KUNIT_TEST is not set ++CONFIG_RTC_NVMEM=y ++ ++# ++# RTC interfaces ++# ++CONFIG_RTC_INTF_SYSFS=y ++CONFIG_RTC_INTF_PROC=y ++CONFIG_RTC_INTF_DEV=y ++# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set ++# CONFIG_RTC_DRV_TEST is not set ++ ++# ++# I2C RTC drivers ++# ++# CONFIG_RTC_DRV_ABB5ZES3 is not set ++# CONFIG_RTC_DRV_ABEOZ9 is not set ++# CONFIG_RTC_DRV_ABX80X is not set ++CONFIG_RTC_DRV_AS3722=m ++CONFIG_RTC_DRV_DS1307=y ++# CONFIG_RTC_DRV_DS1307_CENTURY is not set ++# CONFIG_RTC_DRV_DS1374 is not set ++# CONFIG_RTC_DRV_DS1672 is not set ++CONFIG_RTC_DRV_HYM8563=y ++# CONFIG_RTC_DRV_MAX6900 is not set ++CONFIG_RTC_DRV_MAX77686=y ++CONFIG_RTC_DRV_RK808=y ++# CONFIG_RTC_DRV_RS5C372 is not set ++# CONFIG_RTC_DRV_ISL1208 is not set ++# CONFIG_RTC_DRV_ISL12022 is not set ++CONFIG_RTC_DRV_ISL12026=m ++CONFIG_RTC_DRV_X1205=m ++CONFIG_RTC_DRV_PCF8523=m ++CONFIG_RTC_DRV_PCF85063=m ++CONFIG_RTC_DRV_PCF85363=m ++CONFIG_RTC_DRV_PCF8563=m ++CONFIG_RTC_DRV_PCF8583=m ++CONFIG_RTC_DRV_M41T80=m ++CONFIG_RTC_DRV_M41T80_WDT=y ++CONFIG_RTC_DRV_BD70528=m ++CONFIG_RTC_DRV_BQ32K=m ++CONFIG_RTC_DRV_RC5T583=m ++CONFIG_RTC_DRV_RC5T619=m ++CONFIG_RTC_DRV_S35390A=m ++CONFIG_RTC_DRV_FM3130=m ++CONFIG_RTC_DRV_RX8010=m ++CONFIG_RTC_DRV_RX8581=m ++CONFIG_RTC_DRV_RX8025=m ++CONFIG_RTC_DRV_EM3027=m ++CONFIG_RTC_DRV_RV3028=m ++# CONFIG_RTC_DRV_RV3032 is not set ++CONFIG_RTC_DRV_RV8803=m ++CONFIG_RTC_DRV_SD3078=m ++ ++# ++# SPI RTC drivers ++# ++CONFIG_RTC_DRV_M41T93=m ++CONFIG_RTC_DRV_M41T94=m ++CONFIG_RTC_DRV_DS1302=m ++CONFIG_RTC_DRV_DS1305=m ++CONFIG_RTC_DRV_DS1343=m ++CONFIG_RTC_DRV_DS1347=m ++CONFIG_RTC_DRV_DS1390=m ++CONFIG_RTC_DRV_MAX6916=m ++CONFIG_RTC_DRV_R9701=m ++CONFIG_RTC_DRV_RX4581=m ++CONFIG_RTC_DRV_RS5C348=m ++CONFIG_RTC_DRV_MAX6902=m ++CONFIG_RTC_DRV_PCF2123=m ++CONFIG_RTC_DRV_MCP795=m ++CONFIG_RTC_I2C_AND_SPI=y ++ ++# ++# SPI and I2C RTC drivers ++# ++CONFIG_RTC_DRV_DS3232=m ++CONFIG_RTC_DRV_DS3232_HWMON=y ++CONFIG_RTC_DRV_PCF2127=y ++CONFIG_RTC_DRV_RV3029C2=m ++CONFIG_RTC_DRV_RV3029_HWMON=y ++CONFIG_RTC_DRV_RX6110=m ++ ++# ++# Platform RTC drivers ++# ++# CONFIG_RTC_DRV_DS1286 is not set ++# CONFIG_RTC_DRV_DS1511 is not set ++# CONFIG_RTC_DRV_DS1553 is not set ++# CONFIG_RTC_DRV_DS1685_FAMILY is not set ++# CONFIG_RTC_DRV_DS1742 is not set ++# CONFIG_RTC_DRV_DS2404 is not set ++CONFIG_RTC_DRV_EFI=y ++# CONFIG_RTC_DRV_STK17TA8 is not set ++# CONFIG_RTC_DRV_M48T86 is not set ++# CONFIG_RTC_DRV_M48T35 is not set ++# CONFIG_RTC_DRV_M48T59 is not set ++# CONFIG_RTC_DRV_MSM6242 is not set ++# CONFIG_RTC_DRV_BQ4802 is not set ++# CONFIG_RTC_DRV_RP5C01 is not set ++# CONFIG_RTC_DRV_V3020 is not set ++# CONFIG_RTC_DRV_ZYNQMP is not set ++ ++# ++# on-CPU RTC drivers ++# ++# CONFIG_RTC_DRV_PL030 is not set ++CONFIG_RTC_DRV_PL031=y ++CONFIG_RTC_DRV_CADENCE=m ++# CONFIG_RTC_DRV_FTRTC010 is not set ++# CONFIG_RTC_DRV_R7301 is not set ++ ++# ++# HID Sensor RTC drivers ++# ++CONFIG_RTC_DRV_HID_SENSOR_TIME=m ++# CONFIG_RTC_DRV_GOLDFISH is not set ++CONFIG_DMADEVICES=y ++# CONFIG_DMADEVICES_DEBUG is not set ++ ++# ++# DMA Devices ++# ++CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y ++CONFIG_DMA_ENGINE=y ++CONFIG_DMA_VIRTUAL_CHANNELS=m ++CONFIG_DMA_OF=y ++CONFIG_ALTERA_MSGDMA=m ++# CONFIG_AMBA_PL08X is not set ++CONFIG_BCM_SBA_RAID=m ++CONFIG_DW_AXI_DMAC=m ++# CONFIG_FSL_EDMA is not set ++CONFIG_FSL_QDMA=m ++CONFIG_HISI_DMA=m ++# CONFIG_INTEL_IDMA64 is not set ++CONFIG_MV_XOR_V2=y ++CONFIG_PL330_DMA=y ++CONFIG_PLX_DMA=m ++# CONFIG_XILINX_DMA is not set ++# CONFIG_XILINX_ZYNQMP_DMA is not set ++# CONFIG_XILINX_ZYNQMP_DPDMA is not set ++CONFIG_QCOM_HIDMA_MGMT=y ++CONFIG_QCOM_HIDMA=y ++# CONFIG_DW_DMAC is not set ++# CONFIG_DW_DMAC_PCI is not set ++CONFIG_DW_EDMA=m ++CONFIG_DW_EDMA_PCIE=m ++CONFIG_SF_PDMA=m ++ ++# ++# DMA Clients ++# ++# CONFIG_ASYNC_TX_DMA is not set ++# CONFIG_DMATEST is not set ++CONFIG_DMA_ENGINE_RAID=y ++ ++# ++# DMABUF options ++# ++CONFIG_SYNC_FILE=y ++# CONFIG_SW_SYNC is not set ++# CONFIG_UDMABUF is not set ++# CONFIG_DMABUF_MOVE_NOTIFY is not set ++# CONFIG_DMABUF_DEBUG is not set ++# CONFIG_DMABUF_SELFTESTS is not set ++# CONFIG_DMABUF_HEAPS is not set ++# CONFIG_DMABUF_SYSFS_STATS is not set ++# end of DMABUF options ++ ++# CONFIG_AUXDISPLAY is not set ++CONFIG_UIO=m ++# CONFIG_UIO_CIF is not set ++# CONFIG_UIO_PDRV_GENIRQ is not set ++# CONFIG_UIO_DMEM_GENIRQ is not set ++# CONFIG_UIO_AEC is not set ++# CONFIG_UIO_SERCOS3 is not set ++# CONFIG_UIO_PCI_GENERIC is not set ++# CONFIG_UIO_NETX is not set ++# CONFIG_UIO_PRUSS is not set ++# CONFIG_UIO_MF624 is not set ++# CONFIG_VFIO is not set ++# CONFIG_VIRT_DRIVERS is not set ++CONFIG_VIRTIO=y ++# CONFIG_VIRTIO_MENU is not set ++# CONFIG_VDPA is not set ++# CONFIG_VHOST_MENU is not set ++ ++# ++# Microsoft Hyper-V guest support ++# ++# end of Microsoft Hyper-V guest support ++ ++# CONFIG_GREYBUS is not set ++# CONFIG_COMEDI is not set ++CONFIG_STAGING=y ++# CONFIG_PRISM2_USB is not set ++CONFIG_RTL8192U=m ++CONFIG_RTLLIB=m ++CONFIG_RTLLIB_CRYPTO_CCMP=m ++CONFIG_RTLLIB_CRYPTO_TKIP=m ++CONFIG_RTLLIB_CRYPTO_WEP=m ++CONFIG_RTL8192E=m ++CONFIG_RTL8723BS=m ++CONFIG_R8712U=m ++# CONFIG_R8188EU is not set ++CONFIG_RTS5208=m ++CONFIG_VT6655=m ++CONFIG_VT6656=m ++ ++# ++# IIO staging drivers ++# ++ ++# ++# Accelerometers ++# ++# CONFIG_ADIS16203 is not set ++# CONFIG_ADIS16240 is not set ++# end of Accelerometers ++ ++# ++# Analog to digital converters ++# ++# CONFIG_AD7816 is not set ++# CONFIG_AD7280 is not set ++# end of Analog to digital converters ++ ++# ++# Analog digital bi-direction converters ++# ++# CONFIG_ADT7316 is not set ++# end of Analog digital bi-direction converters ++ ++# ++# Capacitance to digital converters ++# ++# CONFIG_AD7746 is not set ++# end of Capacitance to digital converters ++ ++# ++# Direct Digital Synthesis ++# ++CONFIG_AD9832=m ++CONFIG_AD9834=m ++# end of Direct Digital Synthesis ++ ++# ++# Network Analyzer, Impedance Converters ++# ++# CONFIG_AD5933 is not set ++# end of Network Analyzer, Impedance Converters ++ ++# ++# Active energy metering IC ++# ++# CONFIG_ADE7854 is not set ++# end of Active energy metering IC ++ ++# ++# Resolver to digital converters ++# ++# CONFIG_AD2S1210 is not set ++# end of Resolver to digital converters ++# end of IIO staging drivers ++ ++CONFIG_FB_SM750=m ++CONFIG_STAGING_MEDIA=y ++CONFIG_VIDEO_HANTRO=m ++CONFIG_VIDEO_HANTRO_ROCKCHIP=y ++CONFIG_VIDEO_ROCKCHIP_VDEC=m ++# CONFIG_VIDEO_ZORAN is not set ++# CONFIG_DVB_AV7110 is not set ++ ++# ++# Android ++# ++# end of Android ++ ++# CONFIG_STAGING_BOARD is not set ++# CONFIG_LTE_GDM724X is not set ++# CONFIG_GS_FPGABOOT is not set ++# CONFIG_UNISYSSPAR is not set ++CONFIG_COMMON_CLK_XLNX_CLKWZRD=m ++CONFIG_FB_TFT=m ++CONFIG_FB_TFT_AGM1264K_FL=m ++CONFIG_FB_TFT_BD663474=m ++CONFIG_FB_TFT_HX8340BN=m ++CONFIG_FB_TFT_HX8347D=m ++CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_HX8357D=m ++CONFIG_FB_TFT_ILI9163=m ++CONFIG_FB_TFT_ILI9320=m ++CONFIG_FB_TFT_ILI9325=m ++CONFIG_FB_TFT_ILI9340=m ++CONFIG_FB_TFT_ILI9341=m ++CONFIG_FB_TFT_ILI9481=m ++CONFIG_FB_TFT_ILI9486=m ++CONFIG_FB_TFT_PCD8544=m ++CONFIG_FB_TFT_RA8875=m ++CONFIG_FB_TFT_S6D02A1=m ++CONFIG_FB_TFT_S6D1121=m ++CONFIG_FB_TFT_SEPS525=m ++CONFIG_FB_TFT_SH1106=m ++CONFIG_FB_TFT_SSD1289=m ++CONFIG_FB_TFT_SSD1305=m ++CONFIG_FB_TFT_SSD1306=m ++CONFIG_FB_TFT_SSD1331=m ++CONFIG_FB_TFT_SSD1351=m ++CONFIG_FB_TFT_ST7735R=m ++CONFIG_FB_TFT_ST7789V=m ++CONFIG_FB_TFT_TINYLCD=m ++CONFIG_FB_TFT_TLS8204=m ++CONFIG_FB_TFT_UC1611=m ++CONFIG_FB_TFT_UC1701=m ++CONFIG_FB_TFT_UPD161704=m ++CONFIG_FB_TFT_WATTEROTT=m ++# CONFIG_MOST_COMPONENTS is not set ++# CONFIG_KS7010 is not set ++# CONFIG_PI433 is not set ++# CONFIG_XIL_AXIS_FIFO is not set ++CONFIG_FIELDBUS_DEV=m ++CONFIG_HMS_ANYBUSS_BUS=m ++# CONFIG_ARCX_ANYBUS_CONTROLLER is not set ++# CONFIG_HMS_PROFINET is not set ++# CONFIG_QLGE is not set ++CONFIG_WFX=m ++# CONFIG_GOLDFISH is not set ++# CONFIG_CHROME_PLATFORMS is not set ++# CONFIG_MELLANOX_PLATFORM is not set ++CONFIG_HAVE_CLK=y ++CONFIG_HAVE_CLK_PREPARE=y ++CONFIG_COMMON_CLK=y ++ ++# ++# Clock driver for ARM Reference designs ++# ++# CONFIG_ICST is not set ++# CONFIG_CLK_SP810 is not set ++# CONFIG_CLK_VEXPRESS_OSC is not set ++# end of Clock driver for ARM Reference designs ++ ++# CONFIG_LMK04832 is not set ++# CONFIG_COMMON_CLK_MAX77686 is not set ++# CONFIG_COMMON_CLK_MAX9485 is not set ++CONFIG_COMMON_CLK_RK808=y ++CONFIG_COMMON_CLK_SCPI=y ++# CONFIG_COMMON_CLK_SI5341 is not set ++# CONFIG_COMMON_CLK_SI5351 is not set ++# CONFIG_COMMON_CLK_SI514 is not set ++CONFIG_COMMON_CLK_SI544=m ++# CONFIG_COMMON_CLK_SI570 is not set ++# CONFIG_COMMON_CLK_CDCE706 is not set ++# CONFIG_COMMON_CLK_CDCE925 is not set ++CONFIG_COMMON_CLK_CS2000_CP=y ++# CONFIG_COMMON_CLK_AXI_CLKGEN is not set ++CONFIG_COMMON_CLK_XGENE=y ++CONFIG_COMMON_CLK_PWM=y ++# CONFIG_COMMON_CLK_VC5 is not set ++CONFIG_COMMON_CLK_BD718XX=m ++# CONFIG_COMMON_CLK_FIXED_MMIO is not set ++CONFIG_COMMON_CLK_ROCKCHIP=y ++CONFIG_CLK_PX30=y ++CONFIG_CLK_RK3308=y ++CONFIG_CLK_RK3328=y ++CONFIG_CLK_RK3368=y ++CONFIG_CLK_RK3399=y ++CONFIG_CLK_RK3568=y ++# CONFIG_XILINX_VCU is not set ++# CONFIG_HWSPINLOCK is not set ++ ++# ++# Clock Source drivers ++# ++CONFIG_TIMER_OF=y ++CONFIG_TIMER_PROBE=y ++CONFIG_CLKSRC_MMIO=y ++CONFIG_DW_APB_TIMER=y ++CONFIG_DW_APB_TIMER_OF=y ++CONFIG_ROCKCHIP_TIMER=y ++CONFIG_ARM_ARCH_TIMER=y ++CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y ++CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y ++CONFIG_FSL_ERRATUM_A008585=y ++CONFIG_HISILICON_ERRATUM_161010101=y ++CONFIG_ARM64_ERRATUM_858921=y ++# CONFIG_MICROCHIP_PIT64B is not set ++# end of Clock Source drivers ++ ++CONFIG_MAILBOX=y ++CONFIG_ARM_MHU=y ++# CONFIG_ARM_MHU_V2 is not set ++CONFIG_PLATFORM_MHU=y ++# CONFIG_PL320_MBOX is not set ++CONFIG_ROCKCHIP_MBOX=y ++# CONFIG_ALTERA_MBOX is not set ++# CONFIG_MAILBOX_TEST is not set ++CONFIG_IOMMU_IOVA=y ++CONFIG_IOMMU_API=y ++CONFIG_IOMMU_SUPPORT=y ++ ++# ++# Generic IOMMU Pagetable Support ++# ++CONFIG_IOMMU_IO_PGTABLE=y ++CONFIG_IOMMU_IO_PGTABLE_LPAE=y ++# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set ++# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set ++# end of Generic IOMMU Pagetable Support ++ ++# CONFIG_IOMMU_DEBUGFS is not set ++CONFIG_IOMMU_DEFAULT_DMA_STRICT=y ++# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set ++# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set ++CONFIG_OF_IOMMU=y ++CONFIG_IOMMU_DMA=y ++CONFIG_ROCKCHIP_IOMMU=y ++CONFIG_ARM_SMMU=y ++# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set ++CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y ++CONFIG_ARM_SMMU_V3=y ++# CONFIG_ARM_SMMU_V3_SVA is not set ++# CONFIG_VIRTIO_IOMMU is not set ++ ++# ++# Remoteproc drivers ++# ++# CONFIG_REMOTEPROC is not set ++# end of Remoteproc drivers ++ ++# ++# Rpmsg drivers ++# ++# CONFIG_RPMSG_QCOM_GLINK_RPM is not set ++# CONFIG_RPMSG_VIRTIO is not set ++# end of Rpmsg drivers ++ ++# CONFIG_SOUNDWIRE is not set ++ ++# ++# SOC (System On Chip) specific Drivers ++# ++ ++# ++# Amlogic SoC drivers ++# ++# end of Amlogic SoC drivers ++ ++# ++# Broadcom SoC drivers ++# ++CONFIG_SOC_BRCMSTB=y ++# end of Broadcom SoC drivers ++ ++# ++# NXP/Freescale QorIQ SoC drivers ++# ++# CONFIG_QUICC_ENGINE is not set ++# CONFIG_FSL_RCPM is not set ++# end of NXP/Freescale QorIQ SoC drivers ++ ++# ++# i.MX SoC drivers ++# ++# end of i.MX SoC drivers ++ ++# ++# Enable LiteX SoC Builder specific drivers ++# ++# CONFIG_LITEX_SOC_CONTROLLER is not set ++# end of Enable LiteX SoC Builder specific drivers ++ ++# ++# Qualcomm SoC drivers ++# ++# end of Qualcomm SoC drivers ++ ++CONFIG_ROCKCHIP_GRF=y ++CONFIG_ROCKCHIP_IODOMAIN=y ++CONFIG_ROCKCHIP_PM_DOMAINS=y ++# CONFIG_SOC_TI is not set ++ ++# ++# Xilinx SoC drivers ++# ++# end of Xilinx SoC drivers ++# end of SOC (System On Chip) specific Drivers ++ ++CONFIG_PM_DEVFREQ=y ++ ++# ++# DEVFREQ Governors ++# ++CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y ++CONFIG_DEVFREQ_GOV_PERFORMANCE=m ++CONFIG_DEVFREQ_GOV_POWERSAVE=m ++CONFIG_DEVFREQ_GOV_USERSPACE=m ++CONFIG_DEVFREQ_GOV_PASSIVE=m ++ ++# ++# DEVFREQ Drivers ++# ++CONFIG_ARM_RK3399_DMC_DEVFREQ=y ++CONFIG_PM_DEVFREQ_EVENT=y ++CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y ++CONFIG_EXTCON=y ++ ++# ++# Extcon Device Drivers ++# ++# CONFIG_EXTCON_ADC_JACK is not set ++# CONFIG_EXTCON_FSA9480 is not set ++# CONFIG_EXTCON_GPIO is not set ++# CONFIG_EXTCON_MAX3355 is not set ++CONFIG_EXTCON_PTN5150=m ++# CONFIG_EXTCON_RT8973A is not set ++# CONFIG_EXTCON_SM5502 is not set ++CONFIG_EXTCON_USB_GPIO=y ++# CONFIG_EXTCON_USBC_TUSB320 is not set ++# CONFIG_MEMORY is not set ++CONFIG_IIO=y ++CONFIG_IIO_BUFFER=y ++CONFIG_IIO_BUFFER_CB=m ++# CONFIG_IIO_BUFFER_DMA is not set ++# CONFIG_IIO_BUFFER_DMAENGINE is not set ++# CONFIG_IIO_BUFFER_HW_CONSUMER is not set ++CONFIG_IIO_KFIFO_BUF=y ++CONFIG_IIO_TRIGGERED_BUFFER=y ++CONFIG_IIO_CONFIGFS=m ++CONFIG_IIO_TRIGGER=y ++CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 ++CONFIG_IIO_SW_DEVICE=m ++CONFIG_IIO_SW_TRIGGER=m ++# CONFIG_IIO_TRIGGERED_EVENT is not set ++ ++# ++# Accelerometers ++# ++CONFIG_ADIS16201=m ++CONFIG_ADIS16209=m ++CONFIG_ADXL345=m ++CONFIG_ADXL345_I2C=m ++CONFIG_ADXL345_SPI=m ++CONFIG_ADXL372=m ++CONFIG_ADXL372_SPI=m ++CONFIG_ADXL372_I2C=m ++CONFIG_BMA180=m ++CONFIG_BMA220=m ++CONFIG_BMA400=m ++CONFIG_BMA400_I2C=m ++CONFIG_BMA400_SPI=m ++CONFIG_BMC150_ACCEL=m ++CONFIG_BMC150_ACCEL_I2C=m ++CONFIG_BMC150_ACCEL_SPI=m ++# CONFIG_BMI088_ACCEL is not set ++CONFIG_DA280=m ++CONFIG_DA311=m ++CONFIG_DMARD06=m ++CONFIG_DMARD09=m ++CONFIG_DMARD10=m ++# CONFIG_FXLS8962AF_I2C is not set ++# CONFIG_FXLS8962AF_SPI is not set ++CONFIG_HID_SENSOR_ACCEL_3D=m ++CONFIG_IIO_ST_ACCEL_3AXIS=m ++CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m ++CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m ++CONFIG_KXSD9=m ++CONFIG_KXSD9_SPI=m ++CONFIG_KXSD9_I2C=m ++CONFIG_KXCJK1013=m ++CONFIG_MC3230=m ++CONFIG_MMA7455=m ++CONFIG_MMA7455_I2C=m ++CONFIG_MMA7455_SPI=m ++CONFIG_MMA7660=m ++CONFIG_MMA8452=m ++CONFIG_MMA9551_CORE=m ++CONFIG_MMA9551=m ++CONFIG_MMA9553=m ++CONFIG_MXC4005=m ++CONFIG_MXC6255=m ++CONFIG_SCA3000=m ++# CONFIG_SCA3300 is not set ++CONFIG_STK8312=m ++CONFIG_STK8BA50=m ++# end of Accelerometers ++ ++# ++# Analog to digital converters ++# ++CONFIG_AD_SIGMA_DELTA=m ++CONFIG_AD7091R5=m ++CONFIG_AD7124=m ++# CONFIG_AD7192 is not set ++CONFIG_AD7266=m ++CONFIG_AD7291=m ++CONFIG_AD7292=m ++CONFIG_AD7298=m ++CONFIG_AD7476=m ++CONFIG_AD7606=m ++CONFIG_AD7606_IFACE_PARALLEL=m ++CONFIG_AD7606_IFACE_SPI=m ++CONFIG_AD7766=m ++CONFIG_AD7768_1=m ++# CONFIG_AD7780 is not set ++CONFIG_AD7791=m ++CONFIG_AD7793=m ++CONFIG_AD7887=m ++CONFIG_AD7923=m ++CONFIG_AD7949=m ++CONFIG_AD799X=m ++# CONFIG_ADI_AXI_ADC is not set ++# CONFIG_CC10001_ADC is not set ++# CONFIG_ENVELOPE_DETECTOR is not set ++# CONFIG_HI8435 is not set ++# CONFIG_HX711 is not set ++# CONFIG_INA2XX_ADC is not set ++# CONFIG_LTC2471 is not set ++# CONFIG_LTC2485 is not set ++CONFIG_LTC2496=m ++# CONFIG_LTC2497 is not set ++# CONFIG_MAX1027 is not set ++# CONFIG_MAX11100 is not set ++# CONFIG_MAX1118 is not set ++# CONFIG_MAX1241 is not set ++# CONFIG_MAX1363 is not set ++# CONFIG_MAX9611 is not set ++# CONFIG_MCP320X is not set ++# CONFIG_MCP3422 is not set ++# CONFIG_MCP3911 is not set ++# CONFIG_NAU7802 is not set ++# CONFIG_QCOM_SPMI_IADC is not set ++# CONFIG_QCOM_SPMI_VADC is not set ++# CONFIG_QCOM_SPMI_ADC5 is not set ++CONFIG_RN5T618_ADC=m ++CONFIG_ROCKCHIP_SARADC=y ++# CONFIG_SD_ADC_MODULATOR is not set ++CONFIG_TI_ADC081C=m ++CONFIG_TI_ADC0832=m ++CONFIG_TI_ADC084S021=m ++CONFIG_TI_ADC12138=m ++CONFIG_TI_ADC108S102=m ++CONFIG_TI_ADC128S052=m ++CONFIG_TI_ADC161S626=m ++CONFIG_TI_ADS1015=m ++CONFIG_TI_ADS7950=m ++CONFIG_TI_ADS8344=m ++CONFIG_TI_ADS8688=m ++CONFIG_TI_ADS124S08=m ++# CONFIG_TI_ADS131E08 is not set ++# CONFIG_TI_TLC4541 is not set ++# CONFIG_TI_TSC2046 is not set ++# CONFIG_VF610_ADC is not set ++CONFIG_XILINX_XADC=m ++# end of Analog to digital converters ++ ++# ++# Analog Front Ends ++# ++# CONFIG_IIO_RESCALE is not set ++# end of Analog Front Ends ++ ++# ++# Amplifiers ++# ++# CONFIG_AD8366 is not set ++CONFIG_HMC425=m ++# end of Amplifiers ++ ++# ++# Capacitance to digital converters ++# ++# CONFIG_AD7150 is not set ++# end of Capacitance to digital converters ++ ++# ++# Chemical Sensors ++# ++# CONFIG_ATLAS_PH_SENSOR is not set ++# CONFIG_ATLAS_EZO_SENSOR is not set ++CONFIG_BME680=m ++CONFIG_BME680_I2C=m ++CONFIG_BME680_SPI=m ++# CONFIG_CCS811 is not set ++# CONFIG_IAQCORE is not set ++CONFIG_PMS7003=m ++# CONFIG_SCD30_CORE is not set ++CONFIG_SENSIRION_SGP30=m ++# CONFIG_SENSIRION_SGP40 is not set ++# CONFIG_SPS30_I2C is not set ++# CONFIG_SPS30_SERIAL is not set ++# CONFIG_VZ89X is not set ++# end of Chemical Sensors ++ ++# ++# Hid Sensor IIO Common ++# ++CONFIG_HID_SENSOR_IIO_COMMON=m ++CONFIG_HID_SENSOR_IIO_TRIGGER=m ++# end of Hid Sensor IIO Common ++ ++CONFIG_IIO_MS_SENSORS_I2C=m ++ ++# ++# IIO SCMI Sensors ++# ++# end of IIO SCMI Sensors ++ ++# ++# SSP Sensor Common ++# ++# CONFIG_IIO_SSP_SENSORHUB is not set ++# end of SSP Sensor Common ++ ++CONFIG_IIO_ST_SENSORS_I2C=m ++CONFIG_IIO_ST_SENSORS_SPI=m ++CONFIG_IIO_ST_SENSORS_CORE=m ++ ++# ++# Digital to analog converters ++# ++# CONFIG_AD5064 is not set ++# CONFIG_AD5360 is not set ++# CONFIG_AD5380 is not set ++# CONFIG_AD5421 is not set ++# CONFIG_AD5446 is not set ++# CONFIG_AD5449 is not set ++# CONFIG_AD5592R is not set ++# CONFIG_AD5593R is not set ++# CONFIG_AD5504 is not set ++# CONFIG_AD5624R_SPI is not set ++CONFIG_AD5686=m ++CONFIG_AD5686_SPI=m ++CONFIG_AD5696_I2C=m ++# CONFIG_AD5755 is not set ++CONFIG_AD5758=m ++# CONFIG_AD5761 is not set ++# CONFIG_AD5764 is not set ++# CONFIG_AD5766 is not set ++CONFIG_AD5770R=m ++# CONFIG_AD5791 is not set ++# CONFIG_AD7303 is not set ++# CONFIG_AD8801 is not set ++# CONFIG_DPOT_DAC is not set ++# CONFIG_DS4424 is not set ++CONFIG_LTC1660=m ++# CONFIG_LTC2632 is not set ++# CONFIG_M62332 is not set ++# CONFIG_MAX517 is not set ++# CONFIG_MAX5821 is not set ++# CONFIG_MCP4725 is not set ++# CONFIG_MCP4922 is not set ++# CONFIG_TI_DAC082S085 is not set ++CONFIG_TI_DAC5571=m ++CONFIG_TI_DAC7311=m ++CONFIG_TI_DAC7612=m ++# CONFIG_VF610_DAC is not set ++# end of Digital to analog converters ++ ++# ++# IIO dummy driver ++# ++# CONFIG_IIO_SIMPLE_DUMMY is not set ++# end of IIO dummy driver ++ ++# ++# Frequency Synthesizers DDS/PLL ++# ++ ++# ++# Clock Generator/Distribution ++# ++# CONFIG_AD9523 is not set ++# end of Clock Generator/Distribution ++ ++# ++# Phase-Locked Loop (PLL) frequency synthesizers ++# ++# CONFIG_ADF4350 is not set ++CONFIG_ADF4371=m ++# end of Phase-Locked Loop (PLL) frequency synthesizers ++# end of Frequency Synthesizers DDS/PLL ++ ++# ++# Digital gyroscope sensors ++# ++CONFIG_ADIS16080=m ++CONFIG_ADIS16130=m ++CONFIG_ADIS16136=m ++CONFIG_ADIS16260=m ++# CONFIG_ADXRS290 is not set ++CONFIG_ADXRS450=m ++CONFIG_BMG160=m ++CONFIG_BMG160_I2C=m ++CONFIG_BMG160_SPI=m ++CONFIG_FXAS21002C=m ++CONFIG_FXAS21002C_I2C=m ++CONFIG_FXAS21002C_SPI=m ++CONFIG_HID_SENSOR_GYRO_3D=m ++CONFIG_MPU3050=m ++CONFIG_MPU3050_I2C=m ++CONFIG_IIO_ST_GYRO_3AXIS=m ++CONFIG_IIO_ST_GYRO_I2C_3AXIS=m ++CONFIG_IIO_ST_GYRO_SPI_3AXIS=m ++CONFIG_ITG3200=m ++# end of Digital gyroscope sensors ++ ++# ++# Health Sensors ++# ++ ++# ++# Heart Rate Monitors ++# ++# CONFIG_AFE4403 is not set ++# CONFIG_AFE4404 is not set ++# CONFIG_MAX30100 is not set ++# CONFIG_MAX30102 is not set ++# end of Heart Rate Monitors ++# end of Health Sensors ++ ++# ++# Humidity sensors ++# ++CONFIG_AM2315=m ++CONFIG_DHT11=m ++CONFIG_HDC100X=m ++# CONFIG_HDC2010 is not set ++CONFIG_HID_SENSOR_HUMIDITY=m ++CONFIG_HTS221=m ++CONFIG_HTS221_I2C=m ++CONFIG_HTS221_SPI=m ++CONFIG_HTU21=m ++CONFIG_SI7005=m ++CONFIG_SI7020=m ++# end of Humidity sensors ++ ++# ++# Inertial measurement units ++# ++# CONFIG_ADIS16400 is not set ++CONFIG_ADIS16460=m ++# CONFIG_ADIS16475 is not set ++# CONFIG_ADIS16480 is not set ++# CONFIG_BMI160_I2C is not set ++# CONFIG_BMI160_SPI is not set ++CONFIG_FXOS8700=m ++CONFIG_FXOS8700_I2C=m ++CONFIG_FXOS8700_SPI=m ++# CONFIG_KMX61 is not set ++# CONFIG_INV_ICM42600_I2C is not set ++# CONFIG_INV_ICM42600_SPI is not set ++# CONFIG_INV_MPU6050_I2C is not set ++# CONFIG_INV_MPU6050_SPI is not set ++# CONFIG_IIO_ST_LSM6DSX is not set ++# CONFIG_IIO_ST_LSM9DS0 is not set ++# end of Inertial measurement units ++ ++CONFIG_IIO_ADIS_LIB=m ++CONFIG_IIO_ADIS_LIB_BUFFER=y ++ ++# ++# Light sensors ++# ++CONFIG_ADJD_S311=m ++CONFIG_ADUX1020=m ++CONFIG_AL3010=m ++CONFIG_AL3320A=m ++CONFIG_APDS9300=m ++CONFIG_APDS9960=m ++# CONFIG_AS73211 is not set ++CONFIG_BH1750=m ++CONFIG_BH1780=m ++CONFIG_CM32181=m ++CONFIG_CM3232=m ++CONFIG_CM3323=m ++CONFIG_CM3605=m ++CONFIG_CM36651=m ++CONFIG_GP2AP002=m ++CONFIG_GP2AP020A00F=m ++CONFIG_IQS621_ALS=m ++CONFIG_SENSORS_ISL29018=m ++CONFIG_SENSORS_ISL29028=m ++CONFIG_ISL29125=m ++CONFIG_HID_SENSOR_ALS=m ++CONFIG_HID_SENSOR_PROX=m ++CONFIG_JSA1212=m ++CONFIG_RPR0521=m ++CONFIG_SENSORS_LM3533=m ++CONFIG_LTR501=m ++CONFIG_LV0104CS=m ++CONFIG_MAX44000=m ++CONFIG_MAX44009=m ++CONFIG_NOA1305=m ++CONFIG_OPT3001=m ++CONFIG_PA12203001=m ++CONFIG_SI1133=m ++CONFIG_SI1145=m ++CONFIG_STK3310=m ++CONFIG_ST_UVIS25=m ++CONFIG_ST_UVIS25_I2C=m ++CONFIG_ST_UVIS25_SPI=m ++CONFIG_TCS3414=m ++CONFIG_TCS3472=m ++CONFIG_SENSORS_TSL2563=m ++CONFIG_TSL2583=m ++# CONFIG_TSL2591 is not set ++CONFIG_TSL2772=m ++CONFIG_TSL4531=m ++CONFIG_US5182D=m ++CONFIG_VCNL4000=m ++CONFIG_VCNL4035=m ++CONFIG_VEML6030=m ++CONFIG_VEML6070=m ++CONFIG_VL6180=m ++CONFIG_ZOPT2201=m ++# end of Light sensors ++ ++# ++# Magnetometer sensors ++# ++CONFIG_AK8974=m ++CONFIG_AK8975=m ++CONFIG_AK09911=m ++CONFIG_BMC150_MAGN=m ++CONFIG_BMC150_MAGN_I2C=m ++CONFIG_BMC150_MAGN_SPI=m ++CONFIG_MAG3110=m ++CONFIG_HID_SENSOR_MAGNETOMETER_3D=m ++CONFIG_MMC35240=m ++CONFIG_IIO_ST_MAGN_3AXIS=m ++CONFIG_IIO_ST_MAGN_I2C_3AXIS=m ++CONFIG_IIO_ST_MAGN_SPI_3AXIS=m ++CONFIG_SENSORS_HMC5843=m ++CONFIG_SENSORS_HMC5843_I2C=m ++CONFIG_SENSORS_HMC5843_SPI=m ++CONFIG_SENSORS_RM3100=m ++CONFIG_SENSORS_RM3100_I2C=m ++CONFIG_SENSORS_RM3100_SPI=m ++# CONFIG_YAMAHA_YAS530 is not set ++# end of Magnetometer sensors ++ ++# ++# Multiplexers ++# ++# CONFIG_IIO_MUX is not set ++# end of Multiplexers ++ ++# ++# Inclinometer sensors ++# ++CONFIG_HID_SENSOR_INCLINOMETER_3D=m ++CONFIG_HID_SENSOR_DEVICE_ROTATION=m ++# end of Inclinometer sensors ++ ++# ++# Triggers - standalone ++# ++CONFIG_IIO_HRTIMER_TRIGGER=m ++CONFIG_IIO_INTERRUPT_TRIGGER=m ++CONFIG_IIO_TIGHTLOOP_TRIGGER=m ++CONFIG_IIO_SYSFS_TRIGGER=m ++# end of Triggers - standalone ++ ++# ++# Linear and angular position sensors ++# ++CONFIG_IQS624_POS=m ++# CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE is not set ++# end of Linear and angular position sensors ++ ++# ++# Digital potentiometers ++# ++# CONFIG_AD5110 is not set ++CONFIG_AD5272=m ++# CONFIG_DS1803 is not set ++CONFIG_MAX5432=m ++# CONFIG_MAX5481 is not set ++# CONFIG_MAX5487 is not set ++CONFIG_MCP4018=m ++# CONFIG_MCP4131 is not set ++# CONFIG_MCP4531 is not set ++CONFIG_MCP41010=m ++# CONFIG_TPL0102 is not set ++# end of Digital potentiometers ++ ++# ++# Digital potentiostats ++# ++# CONFIG_LMP91000 is not set ++# end of Digital potentiostats ++ ++# ++# Pressure sensors ++# ++# CONFIG_ABP060MG is not set ++CONFIG_BMP280=m ++CONFIG_BMP280_I2C=m ++CONFIG_BMP280_SPI=m ++CONFIG_DLHL60D=m ++CONFIG_DPS310=m ++CONFIG_HID_SENSOR_PRESS=m ++# CONFIG_HP03 is not set ++CONFIG_ICP10100=m ++# CONFIG_MPL115_I2C is not set ++# CONFIG_MPL115_SPI is not set ++# CONFIG_MPL3115 is not set ++# CONFIG_MS5611 is not set ++# CONFIG_MS5637 is not set ++# CONFIG_IIO_ST_PRESS is not set ++# CONFIG_T5403 is not set ++# CONFIG_HP206C is not set ++# CONFIG_ZPA2326 is not set ++# end of Pressure sensors ++ ++# ++# Lightning sensors ++# ++# CONFIG_AS3935 is not set ++# end of Lightning sensors ++ ++# ++# Proximity and distance sensors ++# ++CONFIG_ISL29501=m ++# CONFIG_LIDAR_LITE_V2 is not set ++CONFIG_MB1232=m ++CONFIG_PING=m ++# CONFIG_RFD77402 is not set ++# CONFIG_SRF04 is not set ++# CONFIG_SX9310 is not set ++# CONFIG_SX9500 is not set ++# CONFIG_SRF08 is not set ++# CONFIG_VCNL3020 is not set ++CONFIG_VL53L0X_I2C=m ++# end of Proximity and distance sensors ++ ++# ++# Resolver to digital converters ++# ++# CONFIG_AD2S90 is not set ++# CONFIG_AD2S1200 is not set ++# end of Resolver to digital converters ++ ++# ++# Temperature sensors ++# ++CONFIG_IQS620AT_TEMP=m ++CONFIG_LTC2983=m ++CONFIG_MAXIM_THERMOCOUPLE=m ++CONFIG_HID_SENSOR_TEMP=m ++CONFIG_MLX90614=m ++CONFIG_MLX90632=m ++CONFIG_TMP006=m ++CONFIG_TMP007=m ++# CONFIG_TMP117 is not set ++CONFIG_TSYS01=m ++CONFIG_TSYS02D=m ++CONFIG_MAX31856=m ++# end of Temperature sensors ++ ++# CONFIG_NTB is not set ++# CONFIG_VME_BUS is not set ++CONFIG_PWM=y ++CONFIG_PWM_SYSFS=y ++# CONFIG_PWM_DEBUG is not set ++# CONFIG_PWM_ATMEL_TCB is not set ++# CONFIG_PWM_DWC is not set ++# CONFIG_PWM_FSL_FTM is not set ++# CONFIG_PWM_IQS620A is not set ++# CONFIG_PWM_PCA9685 is not set ++CONFIG_PWM_ROCKCHIP=y ++ ++# ++# IRQ chip support ++# ++CONFIG_IRQCHIP=y ++CONFIG_ARM_GIC=y ++CONFIG_ARM_GIC_MAX_NR=1 ++CONFIG_ARM_GIC_V2M=y ++CONFIG_ARM_GIC_V3=y ++CONFIG_ARM_GIC_V3_ITS=y ++CONFIG_ARM_GIC_V3_ITS_PCI=y ++# CONFIG_AL_FIC is not set ++CONFIG_PARTITION_PERCPU=y ++# end of IRQ chip support ++ ++# CONFIG_IPACK_BUS is not set ++CONFIG_ARCH_HAS_RESET_CONTROLLER=y ++CONFIG_RESET_CONTROLLER=y ++# CONFIG_RESET_TI_SYSCON is not set ++ ++# ++# PHY Subsystem ++# ++CONFIG_GENERIC_PHY=y ++CONFIG_GENERIC_PHY_MIPI_DPHY=y ++CONFIG_PHY_XGENE=y ++# CONFIG_PHY_CAN_TRANSCEIVER is not set ++# CONFIG_BCM_KONA_USB2_PHY is not set ++CONFIG_PHY_CADENCE_TORRENT=m ++CONFIG_PHY_CADENCE_DPHY=m ++CONFIG_PHY_CADENCE_SIERRA=m ++# CONFIG_PHY_CADENCE_SALVO is not set ++CONFIG_PHY_FSL_IMX8MQ_USB=m ++CONFIG_PHY_MIXEL_MIPI_DPHY=m ++# CONFIG_PHY_PXA_28NM_HSIC is not set ++# CONFIG_PHY_PXA_28NM_USB2 is not set ++# CONFIG_PHY_CPCAP_USB is not set ++CONFIG_PHY_MAPPHONE_MDM6600=m ++# CONFIG_PHY_OCELOT_SERDES is not set ++# CONFIG_PHY_QCOM_USB_HS is not set ++# CONFIG_PHY_QCOM_USB_HSIC is not set ++CONFIG_PHY_ROCKCHIP_DP=y ++CONFIG_PHY_ROCKCHIP_DPHY_RX0=m ++CONFIG_PHY_ROCKCHIP_EMMC=y ++CONFIG_PHY_ROCKCHIP_INNO_HDMI=y ++CONFIG_PHY_ROCKCHIP_INNO_USB2=y ++# CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY is not set ++CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m ++CONFIG_PHY_ROCKCHIP_PCIE=y ++CONFIG_PHY_ROCKCHIP_TYPEC=y ++CONFIG_PHY_ROCKCHIP_USB=y ++CONFIG_PHY_SAMSUNG_USB2=y ++# CONFIG_PHY_TUSB1210 is not set ++# end of PHY Subsystem ++ ++# CONFIG_POWERCAP is not set ++# CONFIG_MCB is not set ++ ++# ++# Performance monitor support ++# ++CONFIG_ARM_CCI_PMU=m ++# CONFIG_ARM_CCI400_PMU is not set ++# CONFIG_ARM_CCI5xx_PMU is not set ++# CONFIG_ARM_CCN is not set ++# CONFIG_ARM_CMN is not set ++CONFIG_ARM_PMU=y ++# CONFIG_ARM_DSU_PMU is not set ++# CONFIG_ARM_SPE_PMU is not set ++# end of Performance monitor support ++ ++CONFIG_RAS=y ++# CONFIG_USB4 is not set ++ ++# ++# Android ++# ++# CONFIG_ANDROID is not set ++# end of Android ++ ++# CONFIG_LIBNVDIMM is not set ++CONFIG_DAX=y ++CONFIG_DEV_DAX=m ++CONFIG_NVMEM=y ++CONFIG_NVMEM_SYSFS=y ++CONFIG_NVMEM_SPMI_SDAM=m ++CONFIG_ROCKCHIP_EFUSE=y ++CONFIG_ROCKCHIP_OTP=m ++# CONFIG_NVMEM_RMEM is not set ++ ++# ++# HW tracing support ++# ++CONFIG_STM=m ++# CONFIG_STM_PROTO_BASIC is not set ++# CONFIG_STM_PROTO_SYS_T is not set ++# CONFIG_STM_DUMMY is not set ++# CONFIG_STM_SOURCE_CONSOLE is not set ++# CONFIG_STM_SOURCE_HEARTBEAT is not set ++# CONFIG_STM_SOURCE_FTRACE is not set ++# CONFIG_INTEL_TH is not set ++# end of HW tracing support ++ ++# CONFIG_FPGA is not set ++# CONFIG_FSI is not set ++# CONFIG_TEE is not set ++CONFIG_MULTIPLEXER=m ++ ++# ++# Multiplexer drivers ++# ++CONFIG_MUX_ADG792A=m ++CONFIG_MUX_ADGS1408=m ++CONFIG_MUX_GPIO=m ++CONFIG_MUX_MMIO=m ++# end of Multiplexer drivers ++ ++CONFIG_PM_OPP=y ++# CONFIG_SIOX is not set ++# CONFIG_SLIMBUS is not set ++# CONFIG_INTERCONNECT is not set ++CONFIG_COUNTER=m ++# CONFIG_INTERRUPT_CNT is not set ++CONFIG_FTM_QUADDEC=m ++# CONFIG_MICROCHIP_TCB_CAPTURE is not set ++# CONFIG_INTEL_QEP is not set ++CONFIG_MOST=m ++# CONFIG_MOST_USB_HDM is not set ++# CONFIG_MOST_CDEV is not set ++# CONFIG_MOST_SND is not set ++# end of Device Drivers ++ ++# ++# File systems ++# ++CONFIG_DCACHE_WORD_ACCESS=y ++CONFIG_VALIDATE_FS_PARSER=y ++CONFIG_FS_IOMAP=y ++# CONFIG_EXT2_FS is not set ++CONFIG_EXT3_FS=y ++CONFIG_EXT3_FS_POSIX_ACL=y ++CONFIG_EXT3_FS_SECURITY=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_USE_FOR_EXT2=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++# CONFIG_EXT4_DEBUG is not set ++# CONFIG_EXT4_KUNIT_TESTS is not set ++CONFIG_JBD2=y ++# CONFIG_JBD2_DEBUG is not set ++CONFIG_FS_MBCACHE=y ++# CONFIG_REISERFS_FS is not set ++# CONFIG_JFS_FS is not set ++# CONFIG_XFS_FS is not set ++# CONFIG_GFS2_FS is not set ++# CONFIG_OCFS2_FS is not set ++# CONFIG_BTRFS_FS is not set ++# CONFIG_NILFS2_FS is not set ++# CONFIG_F2FS_FS is not set ++# CONFIG_ZONEFS_FS is not set ++CONFIG_FS_DAX=y ++CONFIG_FS_POSIX_ACL=y ++CONFIG_EXPORTFS=y ++CONFIG_EXPORTFS_BLOCK_OPS=y ++CONFIG_FILE_LOCKING=y ++CONFIG_FS_ENCRYPTION=y ++CONFIG_FS_ENCRYPTION_ALGS=y ++CONFIG_FS_VERITY=y ++# CONFIG_FS_VERITY_DEBUG is not set ++CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y ++CONFIG_FSNOTIFY=y ++CONFIG_DNOTIFY=y ++CONFIG_INOTIFY_USER=y ++CONFIG_FANOTIFY=y ++CONFIG_QUOTA=y ++CONFIG_QUOTA_NETLINK_INTERFACE=y ++CONFIG_PRINT_QUOTA_WARNING=y ++# CONFIG_QUOTA_DEBUG is not set ++CONFIG_QUOTA_TREE=m ++CONFIG_QFMT_V1=m ++CONFIG_QFMT_V2=m ++CONFIG_QUOTACTL=y ++CONFIG_AUTOFS4_FS=m ++CONFIG_AUTOFS_FS=m ++CONFIG_FUSE_FS=m ++CONFIG_CUSE=m ++# CONFIG_VIRTIO_FS is not set ++CONFIG_OVERLAY_FS=y ++# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set ++CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y ++# CONFIG_OVERLAY_FS_INDEX is not set ++CONFIG_OVERLAY_FS_XINO_AUTO=y ++# CONFIG_OVERLAY_FS_METACOPY is not set ++ ++# ++# Caches ++# ++CONFIG_NETFS_SUPPORT=m ++CONFIG_NETFS_STATS=y ++CONFIG_FSCACHE=m ++CONFIG_FSCACHE_STATS=y ++# CONFIG_FSCACHE_DEBUG is not set ++CONFIG_CACHEFILES=m ++# CONFIG_CACHEFILES_DEBUG is not set ++# end of Caches ++ ++# ++# CD-ROM/DVD Filesystems ++# ++CONFIG_ISO9660_FS=y ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++# end of CD-ROM/DVD Filesystems ++ ++# ++# DOS/FAT/EXFAT/NT Filesystems ++# ++CONFIG_FAT_FS=y ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_CODEPAGE=866 ++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" ++CONFIG_FAT_DEFAULT_UTF8=y ++# CONFIG_FAT_KUNIT_TEST is not set ++CONFIG_EXFAT_FS=m ++CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" ++# CONFIG_NTFS_FS is not set ++# CONFIG_NTFS3_FS is not set ++# end of DOS/FAT/EXFAT/NT Filesystems ++ ++# ++# Pseudo filesystems ++# ++CONFIG_PROC_FS=y ++# CONFIG_PROC_KCORE is not set ++CONFIG_PROC_SYSCTL=y ++CONFIG_PROC_PAGE_MONITOR=y ++CONFIG_PROC_CHILDREN=y ++CONFIG_KERNFS=y ++CONFIG_SYSFS=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_TMPFS_XATTR=y ++# CONFIG_TMPFS_INODE64 is not set ++CONFIG_ARCH_SUPPORTS_HUGETLBFS=y ++CONFIG_HUGETLBFS=y ++CONFIG_HUGETLB_PAGE=y ++CONFIG_MEMFD_CREATE=y ++CONFIG_ARCH_HAS_GIGANTIC_PAGE=y ++CONFIG_CONFIGFS_FS=y ++CONFIG_EFIVAR_FS=m ++# end of Pseudo filesystems ++ ++CONFIG_MISC_FILESYSTEMS=y ++# CONFIG_ORANGEFS_FS is not set ++# CONFIG_ADFS_FS is not set ++# CONFIG_AFFS_FS is not set ++# CONFIG_ECRYPT_FS is not set ++# CONFIG_HFS_FS is not set ++# CONFIG_HFSPLUS_FS is not set ++# CONFIG_BEFS_FS is not set ++# CONFIG_BFS_FS is not set ++# CONFIG_EFS_FS is not set ++# CONFIG_JFFS2_FS is not set ++# CONFIG_CRAMFS is not set ++CONFIG_SQUASHFS=y ++# CONFIG_SQUASHFS_FILE_CACHE is not set ++CONFIG_SQUASHFS_FILE_DIRECT=y ++# CONFIG_SQUASHFS_DECOMP_SINGLE is not set ++# CONFIG_SQUASHFS_DECOMP_MULTI is not set ++CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y ++CONFIG_SQUASHFS_XATTR=y ++CONFIG_SQUASHFS_ZLIB=y ++CONFIG_SQUASHFS_LZ4=y ++CONFIG_SQUASHFS_LZO=y ++CONFIG_SQUASHFS_XZ=y ++CONFIG_SQUASHFS_ZSTD=y ++CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y ++CONFIG_SQUASHFS_EMBEDDED=y ++CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 ++# CONFIG_VXFS_FS is not set ++# CONFIG_MINIX_FS is not set ++# CONFIG_OMFS_FS is not set ++# CONFIG_HPFS_FS is not set ++# CONFIG_QNX4FS_FS is not set ++# CONFIG_QNX6FS_FS is not set ++# CONFIG_ROMFS_FS is not set ++CONFIG_PSTORE=y ++CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 ++CONFIG_PSTORE_DEFLATE_COMPRESS=y ++# CONFIG_PSTORE_LZO_COMPRESS is not set ++# CONFIG_PSTORE_LZ4_COMPRESS is not set ++# CONFIG_PSTORE_LZ4HC_COMPRESS is not set ++# CONFIG_PSTORE_842_COMPRESS is not set ++# CONFIG_PSTORE_ZSTD_COMPRESS is not set ++CONFIG_PSTORE_COMPRESS=y ++CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y ++CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" ++# CONFIG_PSTORE_CONSOLE is not set ++# CONFIG_PSTORE_PMSG is not set ++CONFIG_PSTORE_RAM=m ++# CONFIG_SYSV_FS is not set ++# CONFIG_UFS_FS is not set ++# CONFIG_EROFS_FS is not set ++CONFIG_NETWORK_FILESYSTEMS=y ++CONFIG_NFS_FS=m ++# CONFIG_NFS_V2 is not set ++CONFIG_NFS_V3=m ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=m ++CONFIG_NFS_SWAP=y ++CONFIG_NFS_V4_1=y ++CONFIG_NFS_V4_2=y ++CONFIG_PNFS_FILE_LAYOUT=m ++CONFIG_PNFS_BLOCK=m ++CONFIG_PNFS_FLEXFILE_LAYOUT=m ++CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" ++CONFIG_NFS_V4_1_MIGRATION=y ++CONFIG_NFS_FSCACHE=y ++# CONFIG_NFS_USE_LEGACY_DNS is not set ++CONFIG_NFS_USE_KERNEL_DNS=y ++CONFIG_NFS_DEBUG=y ++CONFIG_NFS_DISABLE_UDP_SUPPORT=y ++CONFIG_NFS_V4_2_READ_PLUS=y ++CONFIG_NFSD=m ++CONFIG_NFSD_V2_ACL=y ++CONFIG_NFSD_V3=y ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y ++CONFIG_NFSD_PNFS=y ++CONFIG_NFSD_BLOCKLAYOUT=y ++CONFIG_NFSD_SCSILAYOUT=y ++CONFIG_NFSD_FLEXFILELAYOUT=y ++CONFIG_NFSD_V4_2_INTER_SSC=y ++CONFIG_GRACE_PERIOD=m ++CONFIG_LOCKD=m ++CONFIG_LOCKD_V4=y ++CONFIG_NFS_ACL_SUPPORT=m ++CONFIG_NFS_COMMON=y ++CONFIG_NFS_V4_2_SSC_HELPER=y ++CONFIG_SUNRPC=m ++CONFIG_SUNRPC_GSS=m ++CONFIG_SUNRPC_BACKCHANNEL=y ++CONFIG_SUNRPC_SWAP=y ++CONFIG_RPCSEC_GSS_KRB5=m ++# CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES is not set ++CONFIG_SUNRPC_DEBUG=y ++# CONFIG_CEPH_FS is not set ++CONFIG_CIFS=m ++CONFIG_CIFS_STATS2=y ++CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y ++CONFIG_CIFS_UPCALL=y ++CONFIG_CIFS_XATTR=y ++CONFIG_CIFS_POSIX=y ++CONFIG_CIFS_DEBUG=y ++# CONFIG_CIFS_DEBUG2 is not set ++# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set ++CONFIG_CIFS_DFS_UPCALL=y ++CONFIG_CIFS_SWN_UPCALL=y ++CONFIG_CIFS_FSCACHE=y ++# CONFIG_SMB_SERVER is not set ++CONFIG_SMBFS_COMMON=m ++# CONFIG_CODA_FS is not set ++# CONFIG_AFS_FS is not set ++CONFIG_NLS=y ++CONFIG_NLS_DEFAULT="utf8" ++# CONFIG_NLS_CODEPAGE_437 is not set ++# CONFIG_NLS_CODEPAGE_737 is not set ++# CONFIG_NLS_CODEPAGE_775 is not set ++# CONFIG_NLS_CODEPAGE_850 is not set ++# CONFIG_NLS_CODEPAGE_852 is not set ++# CONFIG_NLS_CODEPAGE_855 is not set ++# CONFIG_NLS_CODEPAGE_857 is not set ++# CONFIG_NLS_CODEPAGE_860 is not set ++# CONFIG_NLS_CODEPAGE_861 is not set ++# CONFIG_NLS_CODEPAGE_862 is not set ++# CONFIG_NLS_CODEPAGE_863 is not set ++# CONFIG_NLS_CODEPAGE_864 is not set ++# CONFIG_NLS_CODEPAGE_865 is not set ++CONFIG_NLS_CODEPAGE_866=y ++# CONFIG_NLS_CODEPAGE_869 is not set ++# CONFIG_NLS_CODEPAGE_936 is not set ++# CONFIG_NLS_CODEPAGE_950 is not set ++# CONFIG_NLS_CODEPAGE_932 is not set ++# CONFIG_NLS_CODEPAGE_949 is not set ++# CONFIG_NLS_CODEPAGE_874 is not set ++# CONFIG_NLS_ISO8859_8 is not set ++# CONFIG_NLS_CODEPAGE_1250 is not set ++# CONFIG_NLS_CODEPAGE_1251 is not set ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=y ++# CONFIG_NLS_ISO8859_2 is not set ++# CONFIG_NLS_ISO8859_3 is not set ++# CONFIG_NLS_ISO8859_4 is not set ++# CONFIG_NLS_ISO8859_5 is not set ++# CONFIG_NLS_ISO8859_6 is not set ++# CONFIG_NLS_ISO8859_7 is not set ++# CONFIG_NLS_ISO8859_9 is not set ++# CONFIG_NLS_ISO8859_13 is not set ++# CONFIG_NLS_ISO8859_14 is not set ++# CONFIG_NLS_ISO8859_15 is not set ++# CONFIG_NLS_KOI8_R is not set ++# CONFIG_NLS_KOI8_U is not set ++# CONFIG_NLS_MAC_ROMAN is not set ++# CONFIG_NLS_MAC_CELTIC is not set ++# CONFIG_NLS_MAC_CENTEURO is not set ++# CONFIG_NLS_MAC_CROATIAN is not set ++# CONFIG_NLS_MAC_CYRILLIC is not set ++# CONFIG_NLS_MAC_GAELIC is not set ++# CONFIG_NLS_MAC_GREEK is not set ++# CONFIG_NLS_MAC_ICELAND is not set ++# CONFIG_NLS_MAC_INUIT is not set ++# CONFIG_NLS_MAC_ROMANIAN is not set ++# CONFIG_NLS_MAC_TURKISH is not set ++CONFIG_NLS_UTF8=y ++# CONFIG_DLM is not set ++CONFIG_UNICODE=y ++# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set ++CONFIG_IO_WQ=y ++# end of File systems ++ ++# ++# Security options ++# ++CONFIG_KEYS=y ++CONFIG_KEYS_REQUEST_CACHE=y ++CONFIG_PERSISTENT_KEYRINGS=y ++CONFIG_ENCRYPTED_KEYS=y ++CONFIG_KEY_DH_OPERATIONS=y ++# CONFIG_SECURITY_DMESG_RESTRICT is not set ++# CONFIG_SECURITY is not set ++# CONFIG_SECURITYFS is not set ++CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y ++CONFIG_HARDENED_USERCOPY=y ++CONFIG_HARDENED_USERCOPY_FALLBACK=y ++# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set ++CONFIG_FORTIFY_SOURCE=y ++# CONFIG_STATIC_USERMODEHELPER is not set ++# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set ++CONFIG_DEFAULT_SECURITY_DAC=y ++CONFIG_LSM="lockdown,yama,integrity,apparmor" ++ ++# ++# Kernel hardening options ++# ++ ++# ++# Memory initialization ++# ++CONFIG_INIT_STACK_NONE=y ++CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y ++# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set ++# end of Memory initialization ++# end of Kernel hardening options ++# end of Security options ++ ++CONFIG_XOR_BLOCKS=m ++CONFIG_ASYNC_CORE=m ++CONFIG_ASYNC_MEMCPY=m ++CONFIG_ASYNC_XOR=m ++CONFIG_ASYNC_PQ=m ++CONFIG_ASYNC_RAID6_RECOV=m ++CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y ++CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y ++CONFIG_CRYPTO=y ++ ++# ++# Crypto core or helper ++# ++CONFIG_CRYPTO_ALGAPI=y ++CONFIG_CRYPTO_ALGAPI2=y ++CONFIG_CRYPTO_AEAD=y ++CONFIG_CRYPTO_AEAD2=y ++CONFIG_CRYPTO_SKCIPHER=y ++CONFIG_CRYPTO_SKCIPHER2=y ++CONFIG_CRYPTO_HASH=y ++CONFIG_CRYPTO_HASH2=y ++CONFIG_CRYPTO_RNG=y ++CONFIG_CRYPTO_RNG2=y ++CONFIG_CRYPTO_RNG_DEFAULT=y ++CONFIG_CRYPTO_AKCIPHER2=y ++CONFIG_CRYPTO_AKCIPHER=y ++CONFIG_CRYPTO_KPP2=y ++CONFIG_CRYPTO_KPP=y ++CONFIG_CRYPTO_ACOMP2=y ++CONFIG_CRYPTO_MANAGER=y ++CONFIG_CRYPTO_MANAGER2=y ++CONFIG_CRYPTO_USER=m ++CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y ++CONFIG_CRYPTO_GF128MUL=y ++CONFIG_CRYPTO_NULL=y ++CONFIG_CRYPTO_NULL2=y ++CONFIG_CRYPTO_PCRYPT=m ++CONFIG_CRYPTO_CRYPTD=y ++CONFIG_CRYPTO_AUTHENC=y ++# CONFIG_CRYPTO_TEST is not set ++CONFIG_CRYPTO_SIMD=y ++CONFIG_CRYPTO_ENGINE=y ++ ++# ++# Public-key cryptography ++# ++CONFIG_CRYPTO_RSA=y ++CONFIG_CRYPTO_DH=y ++CONFIG_CRYPTO_ECC=y ++CONFIG_CRYPTO_ECDH=y ++# CONFIG_CRYPTO_ECDSA is not set ++CONFIG_CRYPTO_ECRDSA=m ++# CONFIG_CRYPTO_SM2 is not set ++CONFIG_CRYPTO_CURVE25519=m ++ ++# ++# Authenticated Encryption with Associated Data ++# ++CONFIG_CRYPTO_CCM=y ++CONFIG_CRYPTO_GCM=y ++CONFIG_CRYPTO_CHACHA20POLY1305=y ++CONFIG_CRYPTO_AEGIS128=m ++CONFIG_CRYPTO_AEGIS128_SIMD=y ++CONFIG_CRYPTO_SEQIV=y ++CONFIG_CRYPTO_ECHAINIV=y ++ ++# ++# Block modes ++# ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CFB=m ++CONFIG_CRYPTO_CTR=y ++CONFIG_CRYPTO_CTS=y ++CONFIG_CRYPTO_ECB=y ++CONFIG_CRYPTO_LRW=m ++CONFIG_CRYPTO_OFB=m ++CONFIG_CRYPTO_PCBC=m ++CONFIG_CRYPTO_XTS=y ++CONFIG_CRYPTO_KEYWRAP=m ++CONFIG_CRYPTO_NHPOLY1305=m ++CONFIG_CRYPTO_ADIANTUM=m ++CONFIG_CRYPTO_ESSIV=m ++ ++# ++# Hash modes ++# ++CONFIG_CRYPTO_CMAC=y ++CONFIG_CRYPTO_HMAC=y ++CONFIG_CRYPTO_XCBC=y ++CONFIG_CRYPTO_VMAC=y ++ ++# ++# Digest ++# ++CONFIG_CRYPTO_CRC32C=y ++CONFIG_CRYPTO_CRC32=y ++CONFIG_CRYPTO_XXHASH=y ++CONFIG_CRYPTO_BLAKE2B=y ++CONFIG_CRYPTO_BLAKE2S=m ++CONFIG_CRYPTO_CRCT10DIF=y ++CONFIG_CRYPTO_GHASH=y ++CONFIG_CRYPTO_POLY1305=y ++CONFIG_CRYPTO_MD4=y ++CONFIG_CRYPTO_MD5=y ++CONFIG_CRYPTO_MICHAEL_MIC=y ++CONFIG_CRYPTO_RMD160=y ++CONFIG_CRYPTO_SHA1=y ++CONFIG_CRYPTO_SHA256=y ++CONFIG_CRYPTO_SHA512=y ++CONFIG_CRYPTO_SHA3=y ++CONFIG_CRYPTO_SM3=m ++CONFIG_CRYPTO_STREEBOG=m ++CONFIG_CRYPTO_WP512=y ++ ++# ++# Ciphers ++# ++CONFIG_CRYPTO_AES=y ++CONFIG_CRYPTO_AES_TI=y ++CONFIG_CRYPTO_ANUBIS=y ++CONFIG_CRYPTO_ARC4=m ++CONFIG_CRYPTO_BLOWFISH=y ++CONFIG_CRYPTO_BLOWFISH_COMMON=y ++CONFIG_CRYPTO_CAMELLIA=y ++CONFIG_CRYPTO_CAST_COMMON=y ++CONFIG_CRYPTO_CAST5=y ++CONFIG_CRYPTO_CAST6=y ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_FCRYPT=y ++CONFIG_CRYPTO_KHAZAD=y ++CONFIG_CRYPTO_CHACHA20=y ++CONFIG_CRYPTO_SEED=y ++CONFIG_CRYPTO_SERPENT=y ++CONFIG_CRYPTO_SM4=m ++CONFIG_CRYPTO_TEA=y ++CONFIG_CRYPTO_TWOFISH=y ++CONFIG_CRYPTO_TWOFISH_COMMON=y ++ ++# ++# Compression ++# ++CONFIG_CRYPTO_DEFLATE=y ++CONFIG_CRYPTO_LZO=y ++CONFIG_CRYPTO_842=m ++CONFIG_CRYPTO_LZ4=m ++CONFIG_CRYPTO_LZ4HC=m ++CONFIG_CRYPTO_ZSTD=y ++ ++# ++# Random Number Generation ++# ++CONFIG_CRYPTO_ANSI_CPRNG=m ++CONFIG_CRYPTO_DRBG_MENU=y ++CONFIG_CRYPTO_DRBG_HMAC=y ++CONFIG_CRYPTO_DRBG_HASH=y ++CONFIG_CRYPTO_DRBG_CTR=y ++CONFIG_CRYPTO_DRBG=y ++CONFIG_CRYPTO_JITTERENTROPY=y ++CONFIG_CRYPTO_USER_API=m ++CONFIG_CRYPTO_USER_API_HASH=m ++CONFIG_CRYPTO_USER_API_SKCIPHER=m ++CONFIG_CRYPTO_USER_API_RNG=m ++# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set ++CONFIG_CRYPTO_USER_API_AEAD=m ++CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y ++CONFIG_CRYPTO_STATS=y ++CONFIG_CRYPTO_HASH_INFO=y ++ ++# ++# Crypto library routines ++# ++CONFIG_CRYPTO_LIB_AES=y ++CONFIG_CRYPTO_LIB_ARC4=m ++CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=m ++CONFIG_CRYPTO_LIB_BLAKE2S=m ++CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y ++CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y ++CONFIG_CRYPTO_LIB_CHACHA=m ++CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m ++CONFIG_CRYPTO_LIB_CURVE25519=m ++CONFIG_CRYPTO_LIB_DES=y ++CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 ++CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m ++CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y ++CONFIG_CRYPTO_LIB_POLY1305=m ++CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m ++CONFIG_CRYPTO_LIB_SHA256=y ++CONFIG_CRYPTO_LIB_SM4=m ++CONFIG_CRYPTO_HW=y ++CONFIG_CRYPTO_DEV_ATMEL_I2C=m ++CONFIG_CRYPTO_DEV_ATMEL_ECC=m ++CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m ++# CONFIG_CRYPTO_DEV_CCP is not set ++CONFIG_CRYPTO_DEV_NITROX=m ++CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m ++CONFIG_CRYPTO_DEV_CAVIUM_ZIP=m ++CONFIG_CRYPTO_DEV_ROCKCHIP=m ++CONFIG_CRYPTO_DEV_VIRTIO=m ++CONFIG_CRYPTO_DEV_SAFEXCEL=m ++CONFIG_CRYPTO_DEV_CCREE=m ++CONFIG_CRYPTO_DEV_HISI_SEC=m ++CONFIG_CRYPTO_DEV_AMLOGIC_GXL=y ++CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG=y ++CONFIG_ASYMMETRIC_KEY_TYPE=y ++CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y ++CONFIG_X509_CERTIFICATE_PARSER=y ++CONFIG_PKCS8_PRIVATE_KEY_PARSER=m ++CONFIG_PKCS7_MESSAGE_PARSER=y ++CONFIG_PKCS7_TEST_KEY=m ++CONFIG_SIGNED_PE_FILE_VERIFICATION=y ++ ++# ++# Certificates for signature checking ++# ++CONFIG_SYSTEM_TRUSTED_KEYRING=y ++CONFIG_SYSTEM_TRUSTED_KEYS="" ++CONFIG_SYSTEM_EXTRA_CERTIFICATE=y ++CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096 ++CONFIG_SECONDARY_TRUSTED_KEYRING=y ++CONFIG_SYSTEM_BLACKLIST_KEYRING=y ++CONFIG_SYSTEM_BLACKLIST_HASH_LIST="" ++# CONFIG_SYSTEM_REVOCATION_LIST is not set ++# end of Certificates for signature checking ++ ++CONFIG_BINARY_PRINTF=y ++ ++# ++# Library routines ++# ++CONFIG_RAID6_PQ=m ++CONFIG_RAID6_PQ_BENCHMARK=y ++CONFIG_LINEAR_RANGES=y ++CONFIG_PACKING=y ++CONFIG_BITREVERSE=y ++CONFIG_HAVE_ARCH_BITREVERSE=y ++CONFIG_GENERIC_STRNCPY_FROM_USER=y ++CONFIG_GENERIC_STRNLEN_USER=y ++CONFIG_GENERIC_NET_UTILS=y ++CONFIG_GENERIC_FIND_FIRST_BIT=y ++CONFIG_CORDIC=m ++# CONFIG_PRIME_NUMBERS is not set ++CONFIG_RATIONAL=y ++CONFIG_GENERIC_PCI_IOMAP=y ++CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y ++CONFIG_ARCH_HAS_FAST_MULTIPLIER=y ++CONFIG_ARCH_USE_SYM_ANNOTATIONS=y ++# CONFIG_INDIRECT_PIO is not set ++CONFIG_CRC_CCITT=y ++CONFIG_CRC16=y ++CONFIG_CRC_T10DIF=y ++CONFIG_CRC_ITU_T=y ++CONFIG_CRC32=y ++# CONFIG_CRC32_SELFTEST is not set ++CONFIG_CRC32_SLICEBY8=y ++# CONFIG_CRC32_SLICEBY4 is not set ++# CONFIG_CRC32_SARWATE is not set ++# CONFIG_CRC32_BIT is not set ++CONFIG_CRC64=y ++CONFIG_CRC4=m ++CONFIG_CRC7=y ++CONFIG_LIBCRC32C=y ++CONFIG_CRC8=m ++CONFIG_XXHASH=y ++CONFIG_AUDIT_GENERIC=y ++CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y ++CONFIG_AUDIT_COMPAT_GENERIC=y ++# CONFIG_RANDOM32_SELFTEST is not set ++CONFIG_842_COMPRESS=m ++CONFIG_842_DECOMPRESS=m ++CONFIG_ZLIB_INFLATE=y ++CONFIG_ZLIB_DEFLATE=y ++CONFIG_LZO_COMPRESS=y ++CONFIG_LZO_DECOMPRESS=y ++CONFIG_LZ4_COMPRESS=m ++CONFIG_LZ4HC_COMPRESS=m ++CONFIG_LZ4_DECOMPRESS=y ++CONFIG_ZSTD_COMPRESS=y ++CONFIG_ZSTD_DECOMPRESS=y ++CONFIG_XZ_DEC=y ++CONFIG_XZ_DEC_X86=y ++CONFIG_XZ_DEC_POWERPC=y ++CONFIG_XZ_DEC_IA64=y ++CONFIG_XZ_DEC_ARM=y ++CONFIG_XZ_DEC_ARMTHUMB=y ++CONFIG_XZ_DEC_SPARC=y ++CONFIG_XZ_DEC_BCJ=y ++CONFIG_XZ_DEC_TEST=m ++CONFIG_DECOMPRESS_GZIP=y ++CONFIG_DECOMPRESS_BZIP2=y ++CONFIG_DECOMPRESS_LZMA=y ++CONFIG_DECOMPRESS_XZ=y ++CONFIG_DECOMPRESS_LZO=y ++CONFIG_DECOMPRESS_LZ4=y ++CONFIG_DECOMPRESS_ZSTD=y ++CONFIG_GENERIC_ALLOCATOR=y ++CONFIG_REED_SOLOMON=m ++CONFIG_REED_SOLOMON_ENC8=y ++CONFIG_REED_SOLOMON_DEC8=y ++CONFIG_REED_SOLOMON_ENC16=y ++CONFIG_REED_SOLOMON_DEC16=y ++CONFIG_TEXTSEARCH=y ++CONFIG_TEXTSEARCH_KMP=m ++CONFIG_TEXTSEARCH_BM=m ++CONFIG_TEXTSEARCH_FSM=m ++CONFIG_INTERVAL_TREE=y ++CONFIG_XARRAY_MULTI=y ++CONFIG_ASSOCIATIVE_ARRAY=y ++CONFIG_HAS_IOMEM=y ++CONFIG_HAS_IOPORT_MAP=y ++CONFIG_HAS_DMA=y ++CONFIG_DMA_OPS=y ++CONFIG_NEED_SG_DMA_LENGTH=y ++CONFIG_NEED_DMA_MAP_STATE=y ++CONFIG_ARCH_DMA_ADDR_T_64BIT=y ++CONFIG_DMA_DECLARE_COHERENT=y ++CONFIG_ARCH_HAS_SETUP_DMA_OPS=y ++CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y ++CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y ++CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y ++CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y ++CONFIG_SWIOTLB=y ++# CONFIG_DMA_RESTRICTED_POOL is not set ++CONFIG_DMA_NONCOHERENT_MMAP=y ++CONFIG_DMA_COHERENT_POOL=y ++CONFIG_DMA_REMAP=y ++CONFIG_DMA_DIRECT_REMAP=y ++CONFIG_DMA_CMA=y ++CONFIG_DMA_PERNUMA_CMA=y ++ ++# ++# Default contiguous memory area size: ++# ++CONFIG_CMA_SIZE_MBYTES=128 ++CONFIG_CMA_SIZE_SEL_MBYTES=y ++# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set ++# CONFIG_CMA_SIZE_SEL_MIN is not set ++# CONFIG_CMA_SIZE_SEL_MAX is not set ++CONFIG_CMA_ALIGNMENT=8 ++# CONFIG_DMA_API_DEBUG is not set ++# CONFIG_DMA_MAP_BENCHMARK is not set ++CONFIG_SGL_ALLOC=y ++CONFIG_CPU_RMAP=y ++CONFIG_DQL=y ++CONFIG_GLOB=y ++CONFIG_GLOB_SELFTEST=m ++CONFIG_NLATTR=y ++CONFIG_CLZ_TAB=y ++CONFIG_IRQ_POLL=y ++CONFIG_MPILIB=y ++CONFIG_DIMLIB=y ++CONFIG_LIBFDT=y ++CONFIG_OID_REGISTRY=y ++CONFIG_UCS2_STRING=y ++CONFIG_HAVE_GENERIC_VDSO=y ++CONFIG_GENERIC_GETTIMEOFDAY=y ++CONFIG_GENERIC_VDSO_TIME_NS=y ++CONFIG_FONT_SUPPORT=y ++CONFIG_FONTS=y ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y ++# CONFIG_FONT_6x11 is not set ++# CONFIG_FONT_7x14 is not set ++# CONFIG_FONT_PEARL_8x8 is not set ++CONFIG_FONT_ACORN_8x8=y ++# CONFIG_FONT_MINI_4x6 is not set ++CONFIG_FONT_6x10=y ++# CONFIG_FONT_10x18 is not set ++# CONFIG_FONT_SUN8x16 is not set ++# CONFIG_FONT_SUN12x22 is not set ++CONFIG_FONT_TER16x32=y ++# CONFIG_FONT_6x8 is not set ++CONFIG_SG_SPLIT=y ++CONFIG_SG_POOL=y ++CONFIG_ARCH_STACKWALK=y ++CONFIG_SBITMAP=y ++# end of Library routines ++ ++CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y ++ ++# ++# Kernel hacking ++# ++ ++# ++# printk and dmesg options ++# ++CONFIG_PRINTK_TIME=y ++# CONFIG_PRINTK_CALLER is not set ++# CONFIG_STACKTRACE_BUILD_ID is not set ++CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 ++CONFIG_CONSOLE_LOGLEVEL_QUIET=4 ++CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 ++# CONFIG_BOOT_PRINTK_DELAY is not set ++CONFIG_DYNAMIC_DEBUG=y ++CONFIG_DYNAMIC_DEBUG_CORE=y ++CONFIG_SYMBOLIC_ERRNAME=y ++CONFIG_DEBUG_BUGVERBOSE=y ++# end of printk and dmesg options ++ ++# ++# Compile-time checks and compiler options ++# ++CONFIG_DEBUG_INFO=y ++CONFIG_DEBUG_INFO_REDUCED=y ++# CONFIG_DEBUG_INFO_COMPRESSED is not set ++# CONFIG_DEBUG_INFO_SPLIT is not set ++CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y ++# CONFIG_DEBUG_INFO_DWARF4 is not set ++# CONFIG_DEBUG_INFO_DWARF5 is not set ++CONFIG_PAHOLE_HAS_SPLIT_BTF=y ++# CONFIG_GDB_SCRIPTS is not set ++CONFIG_FRAME_WARN=2048 ++# CONFIG_STRIP_ASM_SYMS is not set ++# CONFIG_READABLE_ASM is not set ++# CONFIG_HEADERS_INSTALL is not set ++# CONFIG_DEBUG_SECTION_MISMATCH is not set ++CONFIG_SECTION_MISMATCH_WARN_ONLY=y ++# CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set ++CONFIG_ARCH_WANT_FRAME_POINTERS=y ++CONFIG_FRAME_POINTER=y ++# CONFIG_VMLINUX_MAP is not set ++# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set ++# end of Compile-time checks and compiler options ++ ++# ++# Generic Kernel Debugging Instruments ++# ++CONFIG_MAGIC_SYSRQ=y ++CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 ++CONFIG_MAGIC_SYSRQ_SERIAL=y ++CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" ++CONFIG_DEBUG_FS=y ++CONFIG_DEBUG_FS_ALLOW_ALL=y ++# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set ++# CONFIG_DEBUG_FS_ALLOW_NONE is not set ++CONFIG_HAVE_ARCH_KGDB=y ++CONFIG_KGDB=y ++CONFIG_KGDB_HONOUR_BLOCKLIST=y ++CONFIG_KGDB_SERIAL_CONSOLE=y ++# CONFIG_KGDB_TESTS is not set ++CONFIG_KGDB_KDB=y ++CONFIG_KDB_DEFAULT_ENABLE=0x1 ++# CONFIG_KDB_KEYBOARD is not set ++CONFIG_KDB_CONTINUE_CATASTROPHIC=0 ++CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y ++# CONFIG_UBSAN is not set ++# end of Generic Kernel Debugging Instruments ++ ++CONFIG_DEBUG_KERNEL=y ++CONFIG_DEBUG_MISC=y ++ ++# ++# Memory Debugging ++# ++# CONFIG_PAGE_EXTENSION is not set ++# CONFIG_DEBUG_PAGEALLOC is not set ++# CONFIG_PAGE_OWNER is not set ++# CONFIG_PAGE_POISONING is not set ++# CONFIG_DEBUG_PAGE_REF is not set ++# CONFIG_DEBUG_RODATA_TEST is not set ++CONFIG_ARCH_HAS_DEBUG_WX=y ++# CONFIG_DEBUG_WX is not set ++CONFIG_GENERIC_PTDUMP=y ++# CONFIG_PTDUMP_DEBUGFS is not set ++# CONFIG_DEBUG_OBJECTS is not set ++# CONFIG_SLUB_DEBUG_ON is not set ++# CONFIG_SLUB_STATS is not set ++CONFIG_HAVE_DEBUG_KMEMLEAK=y ++# CONFIG_DEBUG_KMEMLEAK is not set ++# CONFIG_DEBUG_STACK_USAGE is not set ++# CONFIG_SCHED_STACK_END_CHECK is not set ++CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y ++# CONFIG_DEBUG_VM is not set ++# CONFIG_DEBUG_VM_PGTABLE is not set ++CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y ++# CONFIG_DEBUG_VIRTUAL is not set ++CONFIG_DEBUG_MEMORY_INIT=y ++# CONFIG_DEBUG_PER_CPU_MAPS is not set ++CONFIG_HAVE_ARCH_KASAN=y ++CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y ++CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y ++CONFIG_HAVE_ARCH_KASAN_VMALLOC=y ++CONFIG_CC_HAS_KASAN_GENERIC=y ++CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y ++# CONFIG_KASAN is not set ++CONFIG_HAVE_ARCH_KFENCE=y ++# CONFIG_KFENCE is not set ++# end of Memory Debugging ++ ++# CONFIG_DEBUG_SHIRQ is not set ++ ++# ++# Debug Oops, Lockups and Hangs ++# ++CONFIG_PANIC_ON_OOPS=y ++CONFIG_PANIC_ON_OOPS_VALUE=1 ++CONFIG_PANIC_TIMEOUT=0 ++# CONFIG_SOFTLOCKUP_DETECTOR is not set ++# CONFIG_DETECT_HUNG_TASK is not set ++# CONFIG_WQ_WATCHDOG is not set ++CONFIG_TEST_LOCKUP=m ++# end of Debug Oops, Lockups and Hangs ++ ++# ++# Scheduler Debugging ++# ++CONFIG_SCHED_DEBUG=y ++CONFIG_SCHED_INFO=y ++CONFIG_SCHEDSTATS=y ++# end of Scheduler Debugging ++ ++# CONFIG_DEBUG_TIMEKEEPING is not set ++CONFIG_DEBUG_PREEMPT=y ++ ++# ++# Lock Debugging (spinlocks, mutexes, etc...) ++# ++CONFIG_LOCK_DEBUGGING_SUPPORT=y ++CONFIG_PROVE_LOCKING=y ++# CONFIG_PROVE_RAW_LOCK_NESTING is not set ++# CONFIG_LOCK_STAT is not set ++CONFIG_DEBUG_RT_MUTEXES=y ++CONFIG_DEBUG_SPINLOCK=y ++CONFIG_DEBUG_MUTEXES=y ++CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y ++CONFIG_DEBUG_RWSEMS=y ++CONFIG_DEBUG_LOCK_ALLOC=y ++CONFIG_LOCKDEP=y ++CONFIG_LOCKDEP_BITS=15 ++CONFIG_LOCKDEP_CHAINS_BITS=16 ++CONFIG_LOCKDEP_STACK_TRACE_BITS=19 ++CONFIG_LOCKDEP_STACK_TRACE_HASH_BITS=14 ++CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS=12 ++# CONFIG_DEBUG_LOCKDEP is not set ++# CONFIG_DEBUG_ATOMIC_SLEEP is not set ++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set ++# CONFIG_LOCK_TORTURE_TEST is not set ++# CONFIG_WW_MUTEX_SELFTEST is not set ++# CONFIG_SCF_TORTURE_TEST is not set ++# CONFIG_CSD_LOCK_WAIT_DEBUG is not set ++# end of Lock Debugging (spinlocks, mutexes, etc...) ++ ++CONFIG_TRACE_IRQFLAGS=y ++# CONFIG_DEBUG_IRQFLAGS is not set ++CONFIG_STACKTRACE=y ++# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set ++# CONFIG_DEBUG_KOBJECT is not set ++ ++# ++# Debug kernel data structures ++# ++# CONFIG_DEBUG_LIST is not set ++# CONFIG_DEBUG_PLIST is not set ++# CONFIG_DEBUG_SG is not set ++# CONFIG_DEBUG_NOTIFIERS is not set ++# CONFIG_BUG_ON_DATA_CORRUPTION is not set ++# end of Debug kernel data structures ++ ++# CONFIG_DEBUG_CREDENTIALS is not set ++ ++# ++# RCU Debugging ++# ++CONFIG_PROVE_RCU=y ++CONFIG_TORTURE_TEST=m ++# CONFIG_RCU_SCALE_TEST is not set ++CONFIG_RCU_TORTURE_TEST=m ++# CONFIG_RCU_REF_SCALE_TEST is not set ++CONFIG_RCU_CPU_STALL_TIMEOUT=60 ++CONFIG_RCU_TRACE=y ++# CONFIG_RCU_EQS_DEBUG is not set ++# end of RCU Debugging ++ ++# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set ++# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set ++CONFIG_LATENCYTOP=y ++CONFIG_NOP_TRACER=y ++CONFIG_HAVE_FUNCTION_TRACER=y ++CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y ++CONFIG_HAVE_DYNAMIC_FTRACE=y ++CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y ++CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y ++CONFIG_HAVE_SYSCALL_TRACEPOINTS=y ++CONFIG_HAVE_C_RECORDMCOUNT=y ++CONFIG_TRACE_CLOCK=y ++CONFIG_RING_BUFFER=y ++CONFIG_EVENT_TRACING=y ++CONFIG_CONTEXT_SWITCH_TRACER=y ++CONFIG_PREEMPTIRQ_TRACEPOINTS=y ++CONFIG_TRACING=y ++CONFIG_TRACING_SUPPORT=y ++CONFIG_FTRACE=y ++# CONFIG_BOOTTIME_TRACING is not set ++# CONFIG_FUNCTION_TRACER is not set ++# CONFIG_STACK_TRACER is not set ++# CONFIG_IRQSOFF_TRACER is not set ++# CONFIG_PREEMPT_TRACER is not set ++# CONFIG_SCHED_TRACER is not set ++# CONFIG_HWLAT_TRACER is not set ++# CONFIG_OSNOISE_TRACER is not set ++# CONFIG_TIMERLAT_TRACER is not set ++# CONFIG_ENABLE_DEFAULT_TRACERS is not set ++# CONFIG_FTRACE_SYSCALLS is not set ++# CONFIG_TRACER_SNAPSHOT is not set ++CONFIG_BRANCH_PROFILE_NONE=y ++# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set ++# CONFIG_BLK_DEV_IO_TRACE is not set ++CONFIG_KPROBE_EVENTS=y ++CONFIG_UPROBE_EVENTS=y ++CONFIG_BPF_EVENTS=y ++CONFIG_DYNAMIC_EVENTS=y ++CONFIG_PROBE_EVENTS=y ++# CONFIG_BPF_KPROBE_OVERRIDE is not set ++# CONFIG_SYNTH_EVENTS is not set ++# CONFIG_HIST_TRIGGERS is not set ++# CONFIG_TRACE_EVENT_INJECT is not set ++# CONFIG_TRACEPOINT_BENCHMARK is not set ++# CONFIG_RING_BUFFER_BENCHMARK is not set ++# CONFIG_TRACE_EVAL_MAP_FILE is not set ++# CONFIG_RING_BUFFER_STARTUP_TEST is not set ++# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set ++# CONFIG_PREEMPTIRQ_DELAY_TEST is not set ++# CONFIG_KPROBE_EVENT_GEN_TEST is not set ++# CONFIG_SAMPLES is not set ++CONFIG_STRICT_DEVMEM=y ++# CONFIG_IO_STRICT_DEVMEM is not set ++ ++# ++# arm64 Debugging ++# ++CONFIG_PID_IN_CONTEXTIDR=y ++# CONFIG_DEBUG_EFI is not set ++# CONFIG_ARM64_RELOC_TEST is not set ++CONFIG_CORESIGHT=m ++CONFIG_CORESIGHT_LINKS_AND_SINKS=m ++CONFIG_CORESIGHT_LINK_AND_SINK_TMC=m ++CONFIG_CORESIGHT_CATU=m ++CONFIG_CORESIGHT_SINK_TPIU=m ++CONFIG_CORESIGHT_SINK_ETBV10=m ++CONFIG_CORESIGHT_SOURCE_ETM4X=m ++# CONFIG_ETM4X_IMPDEF_FEATURE is not set ++CONFIG_CORESIGHT_STM=m ++CONFIG_CORESIGHT_CPU_DEBUG=m ++CONFIG_CORESIGHT_CTI=m ++CONFIG_CORESIGHT_CTI_INTEGRATION_REGS=y ++# CONFIG_CORESIGHT_TRBE is not set ++# end of arm64 Debugging ++ ++# ++# Kernel Testing and Coverage ++# ++CONFIG_KUNIT=m ++# CONFIG_KUNIT_DEBUGFS is not set ++# CONFIG_KUNIT_TEST is not set ++# CONFIG_KUNIT_EXAMPLE_TEST is not set ++# CONFIG_KUNIT_ALL_TESTS is not set ++# CONFIG_NOTIFIER_ERROR_INJECTION is not set ++CONFIG_FUNCTION_ERROR_INJECTION=y ++# CONFIG_FAULT_INJECTION is not set ++CONFIG_ARCH_HAS_KCOV=y ++CONFIG_CC_HAS_SANCOV_TRACE_PC=y ++# CONFIG_KCOV is not set ++CONFIG_RUNTIME_TESTING_MENU=y ++# CONFIG_LKDTM is not set ++# CONFIG_TEST_LIST_SORT is not set ++# CONFIG_TEST_MIN_HEAP is not set ++# CONFIG_TEST_SORT is not set ++# CONFIG_TEST_DIV64 is not set ++# CONFIG_KPROBES_SANITY_TEST is not set ++CONFIG_BACKTRACE_SELF_TEST=m ++CONFIG_RBTREE_TEST=m ++CONFIG_REED_SOLOMON_TEST=m ++CONFIG_INTERVAL_TREE_TEST=m ++CONFIG_PERCPU_TEST=m ++# CONFIG_ATOMIC64_SELFTEST is not set ++CONFIG_ASYNC_RAID6_TEST=m ++# CONFIG_TEST_HEXDUMP is not set ++# CONFIG_STRING_SELFTEST is not set ++# CONFIG_TEST_STRING_HELPERS is not set ++CONFIG_TEST_STRSCPY=m ++# CONFIG_TEST_KSTRTOX is not set ++# CONFIG_TEST_PRINTF is not set ++# CONFIG_TEST_SCANF is not set ++# CONFIG_TEST_BITMAP is not set ++# CONFIG_TEST_UUID is not set ++CONFIG_TEST_XARRAY=m ++# CONFIG_TEST_OVERFLOW is not set ++# CONFIG_TEST_RHASHTABLE is not set ++# CONFIG_TEST_HASH is not set ++# CONFIG_TEST_IDA is not set ++# CONFIG_TEST_LKM is not set ++# CONFIG_TEST_BITOPS is not set ++CONFIG_TEST_VMALLOC=m ++# CONFIG_TEST_USER_COPY is not set ++CONFIG_TEST_BPF=m ++CONFIG_TEST_BLACKHOLE_DEV=m ++# CONFIG_FIND_BIT_BENCHMARK is not set ++# CONFIG_TEST_FIRMWARE is not set ++# CONFIG_TEST_SYSCTL is not set ++# CONFIG_BITFIELD_KUNIT is not set ++# CONFIG_RESOURCE_KUNIT_TEST is not set ++# CONFIG_SYSCTL_KUNIT_TEST is not set ++# CONFIG_LIST_KUNIT_TEST is not set ++# CONFIG_LINEAR_RANGES_TEST is not set ++# CONFIG_CMDLINE_KUNIT_TEST is not set ++# CONFIG_BITS_TEST is not set ++# CONFIG_SLUB_KUNIT_TEST is not set ++# CONFIG_RATIONAL_KUNIT_TEST is not set ++# CONFIG_TEST_UDELAY is not set ++# CONFIG_TEST_STATIC_KEYS is not set ++# CONFIG_TEST_KMOD is not set ++CONFIG_TEST_MEMCAT_P=m ++CONFIG_TEST_STACKINIT=m ++# CONFIG_TEST_MEMINIT is not set ++# CONFIG_TEST_FREE_PAGES is not set ++CONFIG_ARCH_USE_MEMTEST=y ++CONFIG_MEMTEST=y ++# end of Kernel Testing and Coverage ++# end of Kernel hacking +diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile +index e42312121e51..aecbb26b7fb5 100644 +--- a/drivers/clk/Makefile ++++ b/drivers/clk/Makefile +@@ -76,6 +76,7 @@ obj-$(CONFIG_COMMON_CLK_AT91) += at91/ + obj-$(CONFIG_ARCH_ARTPEC) += axis/ + obj-$(CONFIG_ARC_PLAT_AXS10X) += axs10x/ + obj-$(CONFIG_CLK_BAIKAL_T1) += baikal-t1/ ++obj-$(CONFIG_ARCH_BAIKAL) += baikal/ + obj-y += bcm/ + obj-$(CONFIG_ARCH_BERLIN) += berlin/ + obj-$(CONFIG_ARCH_DAVINCI) += davinci/ +diff --git a/drivers/clk/baikal/Makefile b/drivers/clk/baikal/Makefile +new file mode 100644 +index 000000000000..56aa4de4081c +--- /dev/null ++++ b/drivers/clk/baikal/Makefile +@@ -0,0 +1 @@ ++obj-y += clk-baikal.o +\ No newline at end of file +diff --git a/drivers/clk/baikal/clk-baikal.c b/drivers/clk/baikal/clk-baikal.c +new file mode 100644 +index 000000000000..8931567def21 +--- /dev/null ++++ b/drivers/clk/baikal/clk-baikal.c +@@ -0,0 +1,371 @@ ++// SPDX-License-Identifier: GPL-2.0-or-later ++/* ++ * clk-baikal.c - Baikal-M clock driver. ++ * ++ * Copyright (C) 2015,2016,2020,2021 Baikal Electronics JSC ++ * Author: Ekaterina Skachko ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define CMU_PLL_SET_RATE 0 ++#define CMU_PLL_GET_RATE 1 ++#define CMU_PLL_ENABLE 2 ++#define CMU_PLL_DISABLE 3 ++#define CMU_PLL_ROUND_RATE 4 ++#define CMU_PLL_IS_ENABLED 5 ++#define CMU_CLK_CH_SET_RATE 6 ++#define CMU_CLK_CH_GET_RATE 7 ++#define CMU_CLK_CH_ENABLE 8 ++#define CMU_CLK_CH_DISABLE 9 ++#define CMU_CLK_CH_ROUND_RATE 10 ++#define CMU_CLK_CH_IS_ENABLED 11 ++ ++struct baikal_clk_cmu { ++ struct clk_hw hw; ++ uint32_t cmu_id; ++ unsigned int parent; ++ const char *name; ++ spinlock_t *lock; ++ void __iomem *reg; ++ unsigned int latency; /* ns */ ++ unsigned int min, max, step; ++ unsigned int clk_ch_num; ++ uint32_t is_clk_ch; ++}; ++ ++#define to_baikal_cmu(_hw) container_of(_hw, struct baikal_clk_cmu, hw) ++ ++/* Pointer to the place on handling SMC CMU calls in monitor */ ++#define BAIKAL_SMC_LCRU_ID 0x82000000 ++ ++static int baikal_clk_enable(struct clk_hw *hw) ++{ ++ struct arm_smccc_res res; ++ struct baikal_clk_cmu *pclk = to_baikal_cmu(hw); ++ uint32_t cmd; ++ ++ if (pclk->is_clk_ch) { ++ cmd = CMU_CLK_CH_ENABLE; ++ } else { ++ cmd = CMU_PLL_ENABLE; ++ } ++ ++ /* If clock valid */ ++ arm_smccc_smc(BAIKAL_SMC_LCRU_ID, pclk->cmu_id, cmd, 0, ++ pclk->parent, 0, 0, 0, &res); ++ ++ pr_debug("%s(%s, %s@0x%x): %s\n", ++ __func__, ++ pclk->name, ++ pclk->is_clk_ch ? "clkch" : "pll", ++ pclk->cmu_id, ++ res.a0 ? "error" : "ok"); ++ ++ return res.a0; ++} ++ ++static void baikal_clk_disable(struct clk_hw *hw) ++{ ++ struct arm_smccc_res res; ++ struct baikal_clk_cmu *pclk = to_baikal_cmu(hw); ++ uint32_t cmd; ++ ++ if (pclk->is_clk_ch) { ++ cmd = CMU_CLK_CH_DISABLE; ++ } else { ++ cmd = CMU_PLL_DISABLE; ++ } ++ ++ /* If clock valid */ ++ arm_smccc_smc(BAIKAL_SMC_LCRU_ID, pclk->cmu_id, cmd, 0, ++ pclk->parent, 0, 0, 0, &res); ++ ++ pr_debug("%s(%s, %s@0x%x): %s\n", ++ __func__, ++ pclk->name, ++ pclk->is_clk_ch ? "clkch" : "pll", ++ pclk->cmu_id, ++ res.a0 ? "error" : "ok"); ++} ++ ++static int baikal_clk_is_enabled(struct clk_hw *hw) ++{ ++ struct arm_smccc_res res; ++ struct baikal_clk_cmu *pclk = to_baikal_cmu(hw); ++ uint32_t cmd; ++ ++ if (pclk->is_clk_ch) { ++ cmd = CMU_CLK_CH_IS_ENABLED; ++ } else { ++ cmd = CMU_PLL_IS_ENABLED; ++ } ++ ++ /* If clock valid */ ++ arm_smccc_smc(BAIKAL_SMC_LCRU_ID, pclk->cmu_id, cmd, 0, ++ pclk->parent, 0, 0, 0, &res); ++ ++ pr_debug("%s(%s, %s@0x%x): %s\n", ++ __func__, ++ pclk->name, ++ pclk->is_clk_ch ? "clkch" : "pll", ++ pclk->cmu_id, ++ res.a0 ? "true" : "false"); ++ ++ return res.a0; ++} ++ ++static unsigned long baikal_clk_recalc_rate(struct clk_hw *hw, ++ unsigned long parent_rate) ++{ ++ struct arm_smccc_res res; ++ struct baikal_clk_cmu *pclk = to_baikal_cmu(hw); ++ uint32_t cmd; ++ unsigned long parent; ++ ++ if (pclk->is_clk_ch) { ++ cmd = CMU_CLK_CH_GET_RATE; ++ parent = pclk->parent; ++ } else { ++ cmd = CMU_PLL_GET_RATE; ++ parent= parent_rate; ++ } ++ ++ /* If clock valid */ ++ arm_smccc_smc(BAIKAL_SMC_LCRU_ID, pclk->cmu_id, cmd, 0, ++ parent, 0, 0, 0, &res); ++ ++ pr_debug("%s(%s, %s@0x%x): %ld Hz\n", ++ __func__, ++ pclk->name, ++ pclk->is_clk_ch ? "clkch" : "pll", ++ pclk->cmu_id, ++ res.a0); ++ ++ /* Return actual freq */ ++ return res.a0; ++} ++ ++static int baikal_clk_set_rate(struct clk_hw *hw, unsigned long rate, ++ unsigned long parent_rate) ++{ ++ struct arm_smccc_res res; ++ struct baikal_clk_cmu *pclk = to_baikal_cmu(hw); ++ uint32_t cmd; ++ unsigned long parent; ++ ++ if (pclk->is_clk_ch) { ++ cmd = CMU_CLK_CH_SET_RATE; ++ parent = pclk->parent; ++ } else { ++ cmd = CMU_PLL_SET_RATE; ++ parent = parent_rate; ++ } ++ ++ arm_smccc_smc(BAIKAL_SMC_LCRU_ID, pclk->cmu_id, cmd, rate, ++ parent, 0, 0, 0, &res); ++ ++ pr_debug("%s(%s, %s@0x%x, %ld Hz): %s\n", ++ __func__, ++ pclk->name, ++ pclk->is_clk_ch ? "clkch" : "pll", ++ pclk->cmu_id, ++ rate, ++ res.a0 ? "error" : "ok"); ++ ++ return res.a0; ++} ++ ++static long baikal_clk_round_rate(struct clk_hw *hw, unsigned long rate, ++ unsigned long *prate) ++{ ++ struct arm_smccc_res res; ++ struct baikal_clk_cmu *pclk = to_baikal_cmu(hw); ++ unsigned long parent; ++ uint32_t cmd; ++ ++ if (pclk->is_clk_ch) { ++ cmd = CMU_CLK_CH_ROUND_RATE; ++ parent = pclk->parent; ++ } else { ++ cmd = CMU_PLL_ROUND_RATE; ++ parent = *prate; ++ } ++ ++ /* If clock valid */ ++ arm_smccc_smc(BAIKAL_SMC_LCRU_ID, pclk->cmu_id, cmd, rate, ++ parent, 0, 0, 0, &res); ++ ++ pr_debug("%s(%s, %s@0x%x): %ld Hz\n", ++ __func__, ++ pclk->name, ++ pclk->is_clk_ch ? "clkch" : "pll", ++ pclk->cmu_id, ++ res.a0); ++ ++ /* Return actual freq */ ++ return res.a0; ++} ++ ++static const struct clk_ops be_clk_pll_ops = { ++ .enable = baikal_clk_enable, ++ .disable = baikal_clk_disable, ++ .is_enabled = baikal_clk_is_enabled, ++ .recalc_rate = baikal_clk_recalc_rate, ++ .set_rate = baikal_clk_set_rate, ++ .round_rate = baikal_clk_round_rate ++}; ++ ++static int __init baikal_clk_probe(struct device_node *node) ++{ ++ struct clk_init_data init; ++ struct clk_init_data *init_ch; ++ struct baikal_clk_cmu *cmu; ++ struct baikal_clk_cmu **cmu_ch; ++ ++ struct clk *clk; ++ struct clk_onecell_data *clk_ch; ++ ++ int number, i = 0; ++ u32 rc, index; ++ struct property *prop; ++ const __be32 *p; ++ const char *clk_ch_name; ++ const char *parent_name; ++ ++ cmu = kzalloc(sizeof(struct baikal_clk_cmu), GFP_KERNEL); ++ if (!cmu) { ++ pr_err("%s: could not allocate CMU clk\n", __func__); ++ return -ENOMEM; ++ } ++ ++ of_property_read_string(node, "clock-output-names", &cmu->name); ++ of_property_read_u32(node, "clock-frequency", &cmu->parent); ++ of_property_read_u32(node, "cmu-id", &cmu->cmu_id); ++ ++ parent_name = of_clk_get_parent_name(node, 0); ++ ++ /* Setup clock init structure */ ++ init.parent_names = &parent_name; ++ init.num_parents = 1; ++ init.name = cmu->name; ++ init.ops = &be_clk_pll_ops; ++ init.flags = CLK_IGNORE_UNUSED; ++ ++ cmu->hw.init = &init; ++ cmu->is_clk_ch = 0; ++ ++ /* Register the clock */ ++ pr_debug("%s: add %s, parent %s\n", __func__, cmu->name, parent_name ? parent_name : "null"); ++ clk = clk_register(NULL, &cmu->hw); ++ ++ if (IS_ERR(clk)) { ++ pr_err("%s: could not register clk %s\n", __func__, cmu->name); ++ return -ENOMEM; ++ } ++ ++ /* Register the clock for lookup */ ++ rc = clk_register_clkdev(clk, cmu->name, NULL); ++ if (rc != 0) { ++ pr_err("%s: could not register lookup clk %s\n", ++ __func__, cmu->name); ++ } ++ ++ /* FIXME We probably SHOULDN'T enable it here */ ++ clk_prepare_enable(clk); ++ ++ number = of_property_count_u32_elems(node, "clock-indices"); ++ ++ if (number > 0) { ++ clk_ch = kmalloc(sizeof(struct clk_onecell_data), GFP_KERNEL); ++ if (!clk_ch) { ++ pr_err("%s: could not allocate CMU clk channel\n", __func__); ++ return -ENOMEM; ++ } ++ ++ /* Get the last index to find out max number of children*/ ++ of_property_for_each_u32(node, "clock-indices", prop, p, index) { ++ ; ++ } ++ ++ clk_ch->clks = kcalloc(index + 1, sizeof(struct clk *), GFP_KERNEL); ++ clk_ch->clk_num = index + 1; ++ cmu_ch = kcalloc((index + 1), sizeof(struct baikal_clk_cmu *), GFP_KERNEL); ++ if (!cmu_ch) { ++ kfree(clk_ch); ++ return -ENOMEM; ++ } ++ init_ch = kcalloc((number + 1), sizeof(struct clk_init_data), GFP_KERNEL); ++ if (!init_ch) { ++ pr_err("%s: could not allocate CMU init structure \n", __func__); ++ kfree(cmu_ch); ++ kfree(clk_ch); ++ return -ENOMEM; ++ } ++ ++ of_property_for_each_u32(node, "clock-indices", prop, p, index) { ++ of_property_read_string_index(node, "clock-names", ++ i, &clk_ch_name); ++ pr_info("%s: clkch <%s>, index %d, i %d\n", __func__, clk_ch_name, index, i); ++ init_ch[i].parent_names = &cmu->name; ++ init_ch[i].num_parents = 1; ++ init_ch[i].name = clk_ch_name; ++ init_ch[i].ops = &be_clk_pll_ops; ++ init_ch[i].flags = CLK_IGNORE_UNUSED; ++ ++ cmu_ch[index] = kzalloc(sizeof(struct baikal_clk_cmu), GFP_KERNEL); ++ if (!cmu_ch[index]) { ++ pr_err("%s: could not allocate baikal_clk_cmu structure\n", __func__); ++ return -ENOMEM; ++ } ++ cmu_ch[index]->name = clk_ch_name; ++ cmu_ch[index]->cmu_id = index; ++ cmu_ch[index]->parent = cmu->cmu_id; ++ cmu_ch[index]->is_clk_ch = 1; ++ cmu_ch[index]->hw.init = &init_ch[i]; ++ clk_ch->clks[index] = clk_register(NULL, &cmu_ch[index]->hw); ++ ++ if (IS_ERR(clk_ch->clks[index])) { ++ pr_err("%s: could not register clk %s\n", __func__, clk_ch_name); ++ } ++ ++ /* Register the clock for lookup */ ++ rc = clk_register_clkdev(clk_ch->clks[index], clk_ch_name, NULL); ++ if (rc != 0) { ++ pr_err("%s: could not register lookup clk %s\n", ++ __func__, clk_ch_name); ++ } ++ ++ /* FIXME We probably SHOULDN'T enable it here */ ++ clk_prepare_enable(clk_ch->clks[index]); ++ i++; ++ } ++ ++ return of_clk_add_provider(node, of_clk_src_onecell_get, clk_ch); ++ } ++ ++ return of_clk_add_provider(node, of_clk_src_simple_get, clk); ++} ++ ++static void __init baikal_clk_init(struct device_node *np) ++{ ++ int err; ++ err = baikal_clk_probe(np); ++ if (err) { ++ panic("%s: failed to probe clock %pOF: %d\n", __func__, np, err); ++ } else { ++ pr_info("%s: successfully probed %pOF\n", __func__, np); ++ } ++} ++CLK_OF_DECLARE_DRIVER(baikal_cmu, "baikal,cmu", baikal_clk_init); +diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c +index ca1d103ec449..29b14e8d7b6b 100644 +--- a/drivers/cpufreq/cpufreq-dt-platdev.c ++++ b/drivers/cpufreq/cpufreq-dt-platdev.c +@@ -105,6 +105,8 @@ static const struct of_device_id blocklist[] __initconst = { + + { .compatible = "arm,vexpress", }, + ++ { .compatible = "baikal,baikal-m", }, ++ + { .compatible = "calxeda,highbank", }, + { .compatible = "calxeda,ecx-2000", }, + +diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c +index 2363fee9211c..6bcc155c7d1c 100644 +--- a/drivers/firmware/efi/libstub/arm64-stub.c ++++ b/drivers/firmware/efi/libstub/arm64-stub.c +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + #include + + #include "efistub.h" +@@ -34,6 +35,31 @@ efi_status_t check_platform_features(void) + return EFI_SUCCESS; + } + ++static const char* machines_need_low_alloc[] = { ++ "baikal,baikal-m", ++}; ++ ++static bool need_low_alloc(void) { ++ size_t i; ++ const void *fdt; ++ const char *match; ++ ++ fdt = get_efi_config_table(DEVICE_TREE_GUID); ++ if (!fdt) { ++ efi_info("failed to retrive FDT from EFI\n"); ++ return false; ++ } ++ ++ for (i = 0; i < ARRAY_SIZE(machines_need_low_alloc); i++) { ++ match = machines_need_low_alloc[i]; ++ if (fdt_node_check_compatible(fdt, 0, match) == 0) { ++ efi_info("machine %s: forcing kernel relocation to low address\n", match); ++ return true; ++ } ++ } ++ return false; ++} ++ + /* + * Distro versions of GRUB may ignore the BSS allocation entirely (i.e., fail + * to provide space, and fail to zero it). Check for this condition by double +@@ -79,6 +105,19 @@ static bool check_image_region(u64 base, u64 size) + return ret; + } + ++static inline efi_status_t efi_low_alloc(unsigned long size, unsigned long align, ++ unsigned long *addr) ++{ ++ /* ++ * Don't allocate at 0x0. It will confuse code that ++ * checks pointers against NULL. Skip the first 8 ++ * bytes so we start at a nice even number. ++ */ ++ return efi_low_alloc_above(size, align, addr, 0x8); ++} ++ ++ ++ + efi_status_t handle_kernel_image(unsigned long *image_addr, + unsigned long *image_size, + unsigned long *reserve_addr, +@@ -99,6 +138,14 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, + */ + u64 min_kimg_align = efi_nokaslr ? MIN_KIMG_ALIGN : EFI_KIMG_ALIGN; + ++ bool force_low_reloc = need_low_alloc(); ++ if (force_low_reloc) { ++ if (!efi_nokaslr) { ++ efi_info("booting on a broken firmware, KASLR will be disabled\n"); ++ efi_nokaslr = true; ++ } ++ } ++ + if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { + if (!efi_nokaslr) { + status = efi_get_random_bytes(sizeof(phys_seed), +@@ -112,7 +159,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, + efi_nokaslr = true; + } + } else { +- efi_info("KASLR disabled on kernel command line\n"); ++ if (!force_low_reloc) ++ efi_info("KASLR disabled on kernel command line\n"); + } + } + +@@ -140,6 +188,15 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, + status = EFI_OUT_OF_RESOURCES; + } + ++ if (force_low_reloc) { ++ status = efi_low_alloc(*reserve_size, ++ min_kimg_align, ++ reserve_addr); ++ if (status != EFI_SUCCESS) { ++ efi_err("Failed to relocate kernel, expect secondary CPUs boot failure\n"); ++ } ++ } ++ + if (status != EFI_SUCCESS) { + if (!check_image_region((u64)_text, kernel_memsize)) { + efi_err("FIRMWARE BUG: Image BSS overlaps adjacent EFI memory region\n"); +@@ -164,6 +221,9 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, + } + + *image_addr = *reserve_addr; ++ if (efi_nokaslr) { ++ efi_info("relocating kernel to 0x%lx\n", *image_addr); ++ } + memcpy((void *)*image_addr, _text, kernel_size); + + return EFI_SUCCESS; +diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig +index cea777ae7fb9..bb77bf9b642d 100644 +--- a/drivers/gpu/drm/Kconfig ++++ b/drivers/gpu/drm/Kconfig +@@ -222,6 +222,7 @@ config DRM_SCHED + source "drivers/gpu/drm/i2c/Kconfig" + + source "drivers/gpu/drm/arm/Kconfig" ++source "drivers/gpu/drm/baikal/Kconfig" + + config DRM_RADEON + tristate "ATI Radeon" +diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile +index ad1112154898..964d306ea7b8 100644 +--- a/drivers/gpu/drm/Makefile ++++ b/drivers/gpu/drm/Makefile +@@ -128,3 +128,4 @@ obj-$(CONFIG_DRM_TIDSS) += tidss/ + obj-y += xlnx/ + obj-y += gud/ + obj-$(CONFIG_DRM_HYPERV) += hyperv/ ++obj-$(CONFIG_DRM_BAIKAL_VDU) += baikal/ +diff --git a/drivers/gpu/drm/baikal/Kconfig b/drivers/gpu/drm/baikal/Kconfig +new file mode 100644 +index 000000000000..7f3661ae5578 +--- /dev/null ++++ b/drivers/gpu/drm/baikal/Kconfig +@@ -0,0 +1,15 @@ ++config DRM_BAIKAL_VDU ++ tristate "DRM Support for Baikal-M VDU" ++ depends on DRM ++ depends on ARM || ARM64 || COMPILE_TEST ++ depends on COMMON_CLK ++ default y if ARCH_BAIKAL ++ select DRM_KMS_HELPER ++ select DRM_KMS_CMA_HELPER ++ select DRM_GEM_CMA_HELPER ++ select DRM_PANEL ++ select DRM_BAIKAL_HDMI ++ select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE ++ help ++ Choose this option for DRM support for the Baikal-M Video Display Unit (VDU). ++ If M is selected the module will be called baikal_vdu_drm. +diff --git a/drivers/gpu/drm/baikal/Makefile b/drivers/gpu/drm/baikal/Makefile +new file mode 100644 +index 000000000000..eb029494e823 +--- /dev/null ++++ b/drivers/gpu/drm/baikal/Makefile +@@ -0,0 +1,10 @@ ++# SPDX-License-Identifier: GPL-2.0 ++baikal_vdu_drm-y += baikal_vdu_connector.o \ ++ baikal_vdu_crtc.o \ ++ baikal_vdu_drv.o \ ++ baikal_vdu_plane.o ++ ++baikal_vdu_drm-$(CONFIG_DEBUG_FS) += baikal_vdu_debugfs.o ++ ++obj-$(CONFIG_DRM_BAIKAL_VDU) += baikal_vdu_drm.o ++obj-$(CONFIG_DRM_BAIKAL_HDMI) += baikal-hdmi.o +diff --git a/drivers/gpu/drm/baikal/baikal-hdmi.c b/drivers/gpu/drm/baikal/baikal-hdmi.c +new file mode 100644 +index 000000000000..6a55d03d93f8 +--- /dev/null ++++ b/drivers/gpu/drm/baikal/baikal-hdmi.c +@@ -0,0 +1,119 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Baikal Electronics BE-M1000 DesignWare HDMI 2.0 Tx PHY support driver ++ * ++ * Copyright (C) 2019-2021 Baikal Electronics JSC ++ * ++ * Author: Pavel Parkhomenko ++ * ++ * Parts of this file were based on sources as follows: ++ * ++ * Copyright (C) 2016 Renesas Electronics Corporation ++ * ++ * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com) ++ */ ++ ++#include ++#include ++#include ++ ++#include ++ ++int fixed_clock = 0; ++int max_clock = 0; ++ ++static const struct dw_hdmi_mpll_config baikal_hdmi_mpll_cfg[] = { ++ /* pixelclk opmode gmp */ ++ { 44900000, { { 0x00b3, 0x0000 }, }, }, ++ { 90000000, { { 0x0072, 0x0001 }, }, }, ++ { 182750000, { { 0x0051, 0x0002 }, }, }, ++ { 340000000, { { 0x0040, 0x0003 }, }, }, ++ { 594000000, { { 0x1a40, 0x0003 }, }, }, ++ { ~0UL, { { 0x0000, 0x0000 }, }, } ++}; ++ ++static const struct dw_hdmi_curr_ctrl baikal_hdmi_cur_ctr[] = { ++ /* pixelclk current */ ++ { 44900000, { 0x0000, }, }, ++ { 90000000, { 0x0008, }, }, ++ { 182750000, { 0x001b, }, }, ++ { 340000000, { 0x0036, }, }, ++ { 594000000, { 0x003f, }, }, ++ { ~0UL, { 0x0000, }, } ++}; ++ ++static const struct dw_hdmi_phy_config baikal_hdmi_phy_cfg[] = { ++ /* pixelclk symbol term vlev */ ++ { 148250000, 0x8009, 0x0004, 0x0232}, ++ { 218250000, 0x8009, 0x0004, 0x0230}, ++ { 288000000, 0x8009, 0x0004, 0x0273}, ++ { 340000000, 0x8029, 0x0004, 0x0273}, ++ { 594000000, 0x8039, 0x0004, 0x014a}, ++ { ~0UL, 0x0000, 0x0000, 0x0000} ++}; ++ ++static enum drm_mode_status baikal_hdmi_mode_valid(struct dw_hdmi *hdmi, ++ void *data, ++ const struct drm_display_info *info, ++ const struct drm_display_mode *mode) ++{ ++ if (mode->clock < 13500) ++ return MODE_CLOCK_LOW; ++ if (mode->clock >= 340000) ++ return MODE_CLOCK_HIGH; ++ if (fixed_clock && mode->clock != fixed_clock) ++ return MODE_BAD; ++ if (max_clock && mode->clock > max_clock) ++ return MODE_BAD; ++ ++ return MODE_OK; ++} ++ ++static struct dw_hdmi_plat_data baikal_dw_hdmi_plat_data = { ++ .mpll_cfg = baikal_hdmi_mpll_cfg, ++ .cur_ctr = baikal_hdmi_cur_ctr, ++ .phy_config = baikal_hdmi_phy_cfg, ++ .mode_valid = baikal_hdmi_mode_valid, ++}; ++ ++static int baikal_dw_hdmi_probe(struct platform_device *pdev) ++{ ++ struct dw_hdmi *hdmi; ++ hdmi = dw_hdmi_probe(pdev, &baikal_dw_hdmi_plat_data); ++ if (IS_ERR(hdmi)) { ++ return PTR_ERR(hdmi); ++ } else { ++ return 0; ++ } ++} ++ ++static int baikal_dw_hdmi_remove(struct platform_device *pdev) ++{ ++ struct dw_hdmi *hdmi = platform_get_drvdata(pdev); ++ dw_hdmi_remove(hdmi); ++ return 0; ++} ++ ++static const struct of_device_id baikal_dw_hdmi_of_table[] = { ++ { .compatible = "baikal,hdmi" }, ++ { /* Sentinel */ }, ++}; ++MODULE_DEVICE_TABLE(of, baikal_dw_hdmi_of_table); ++ ++static struct platform_driver baikal_dw_hdmi_platform_driver = { ++ .probe = baikal_dw_hdmi_probe, ++ .remove = baikal_dw_hdmi_remove, ++ .driver = { ++ .name = "baikal-dw-hdmi", ++ .of_match_table = baikal_dw_hdmi_of_table, ++ }, ++}; ++ ++module_param(fixed_clock, int, 0644); ++module_param(max_clock, int, 0644); ++ ++module_platform_driver(baikal_dw_hdmi_platform_driver); ++ ++MODULE_AUTHOR("Pavel Parkhomenko "); ++MODULE_DESCRIPTION("Baikal BE-M1000 SoC DesignWare HDMI 2.0 Tx + Gen2 PHY Driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_connector.c b/drivers/gpu/drm/baikal/baikal_vdu_connector.c +new file mode 100644 +index 000000000000..2f20cf3da627 +--- /dev/null ++++ b/drivers/gpu/drm/baikal/baikal_vdu_connector.c +@@ -0,0 +1,118 @@ ++/* ++ * Copyright (C) 2019-2020 Baikal Electronics JSC ++ * ++ * Author: Pavel Parkhomenko ++ * ++ * Parts of this file were based on sources as follows: ++ * ++ * Copyright (c) 2006-2008 Intel Corporation ++ * Copyright (c) 2007 Dave Airlie ++ * Copyright (C) 2011 Texas Instruments ++ * (C) COPYRIGHT 2012-2013 ARM Limited. All rights reserved. ++ * ++ * This program is free software and is provided to you under the terms of the ++ * GNU General Public License version 2 as published by the Free Software ++ * Foundation, and any use by you of this program is subject to the terms of ++ * such GNU licence. ++ * ++ */ ++ ++/** ++ * baikal_vdu_connector.c ++ * Implementation of the connector functions for Baikal Electronics BE-M1000 SoC's VDU ++ */ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "baikal_vdu_drm.h" ++#include "baikal_vdu_regs.h" ++ ++#define to_baikal_vdu_private(x) \ ++ container_of(x, struct baikal_vdu_private, connector) ++ ++static void baikal_vdu_drm_connector_destroy(struct drm_connector *connector) ++{ ++ drm_connector_unregister(connector); ++ drm_connector_cleanup(connector); ++} ++ ++static enum drm_connector_status baikal_vdu_drm_connector_detect( ++ struct drm_connector *connector, bool force) ++{ ++ struct baikal_vdu_private *priv = to_baikal_vdu_private(connector); ++ ++ return (priv->panel ? ++ connector_status_connected : ++ connector_status_disconnected); ++} ++ ++static int baikal_vdu_drm_connector_helper_get_modes( ++ struct drm_connector *connector) ++{ ++ struct baikal_vdu_private *priv = to_baikal_vdu_private(connector); ++ ++ if (!priv->panel) ++ return 0; ++ ++ return drm_panel_get_modes(priv->panel, connector); ++} ++ ++const struct drm_connector_funcs connector_funcs = { ++ .fill_modes = drm_helper_probe_single_connector_modes, ++ .destroy = baikal_vdu_drm_connector_destroy, ++ .detect = baikal_vdu_drm_connector_detect, ++ .reset = drm_atomic_helper_connector_reset, ++ .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, ++ .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, ++}; ++ ++const struct drm_connector_helper_funcs connector_helper_funcs = { ++ .get_modes = baikal_vdu_drm_connector_helper_get_modes, ++}; ++ ++static const struct drm_encoder_funcs encoder_funcs = { ++ .destroy = drm_encoder_cleanup, ++}; ++ ++int baikal_vdu_lvds_connector_create(struct drm_device *dev) ++{ ++ struct baikal_vdu_private *priv = dev->dev_private; ++ struct drm_connector *connector = &priv->connector; ++ struct drm_encoder *encoder = &priv->encoder; ++ int ret = 0; ++ ++ ret = drm_connector_init(dev, connector, &connector_funcs, ++ DRM_MODE_CONNECTOR_LVDS); ++ if (ret) { ++ dev_err(dev->dev, "drm_connector_init failed: %d\n", ret); ++ goto out; ++ } ++ drm_connector_helper_add(connector, &connector_helper_funcs); ++ ret = drm_encoder_init(dev, encoder, &encoder_funcs, ++ DRM_MODE_ENCODER_LVDS, NULL); ++ if (ret) { ++ dev_err(dev->dev, "drm_encoder_init failed: %d\n", ret); ++ goto out; ++ } ++ encoder->crtc = &priv->crtc; ++ encoder->possible_crtcs = drm_crtc_mask(encoder->crtc); ++ ret = drm_connector_attach_encoder(connector, encoder); ++ if (ret) { ++ dev_err(dev->dev, "drm_connector_attach_encoder failed: %d\n", ret); ++ goto out; ++ } ++ ret = drm_connector_register(connector); ++ if (ret) { ++ dev_err(dev->dev, "drm_connector_register failed: %d\n", ret); ++ goto out; ++ } ++out: ++ return ret; ++} +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_crtc.c b/drivers/gpu/drm/baikal/baikal_vdu_crtc.c +new file mode 100644 +index 000000000000..039150c593e9 +--- /dev/null ++++ b/drivers/gpu/drm/baikal/baikal_vdu_crtc.c +@@ -0,0 +1,337 @@ ++/* ++ * Copyright (C) 2019-2020 Baikal Electronics JSC ++ * ++ * Author: Pavel Parkhomenko ++ * ++ * Parts of this file were based on sources as follows: ++ * ++ * Copyright (c) 2006-2008 Intel Corporation ++ * Copyright (c) 2007 Dave Airlie ++ * Copyright (C) 2011 Texas Instruments ++ * (C) COPYRIGHT 2012-2013 ARM Limited. All rights reserved. ++ * ++ * This program is free software and is provided to you under the terms of the ++ * GNU General Public License version 2 as published by the Free Software ++ * Foundation, and any use by you of this program is subject to the terms of ++ * such GNU licence. ++ * ++ */ ++ ++/** ++ * baikal_vdu_crtc.c ++ * Implementation of the CRTC functions for Baikal Electronics BE-M1000 VDU driver ++ */ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "baikal_vdu_drm.h" ++#include "baikal_vdu_regs.h" ++ ++struct baikal_vdu_crtc_mode_fixup { ++ int vdisplay; ++ int vfp_add; ++}; ++ ++static const struct baikal_vdu_crtc_mode_fixup mode_fixups[] = { ++ { 480, 38 }, ++ { 600, 8 }, ++ { 720, 43 }, ++ { 768, 43 }, ++ { 800, 71 }, ++ { 864, 71 }, ++ { 900, 71 }, ++ { 960, 71 }, ++ { 1024, 25 }, ++ { 1050, 25 }, ++ { 1080, 8 }, ++ { 1200, 32 }, ++ { 1440, 27 }, ++ { ~0U }, ++}; ++ ++irqreturn_t baikal_vdu_irq(int irq, void *data) ++{ ++ struct drm_device *drm = data; ++ struct baikal_vdu_private *priv = drm->dev_private; ++ irqreturn_t status = IRQ_NONE; ++ u32 raw_stat; ++ u32 irq_stat; ++ ++ irq_stat = readl(priv->regs + IVR); ++ raw_stat = readl(priv->regs + ISR); ++ ++ if (irq_stat & INTR_VCT) { ++ priv->counters[10]++; ++ drm_crtc_handle_vblank(&priv->crtc); ++ status = IRQ_HANDLED; ++ } ++ ++ if (irq_stat & INTR_FER) { ++ priv->counters[11]++; ++ priv->counters[12] = readl(priv->regs + DBAR); ++ priv->counters[13] = readl(priv->regs + DCAR); ++ priv->counters[14] = readl(priv->regs + MRR); ++ status = IRQ_HANDLED; ++ } ++ ++ priv->counters[3] |= raw_stat; ++ ++ /* Clear all interrupts */ ++ writel(irq_stat, priv->regs + ISR); ++ ++ return status; ++} ++ ++bool baikal_vdu_crtc_mode_fixup(struct drm_crtc *crtc, ++ const struct drm_display_mode *mode, ++ struct drm_display_mode *adjusted_mode) ++{ ++ struct baikal_vdu_private *priv = crtc->dev->dev_private; ++ ++ memcpy(adjusted_mode, mode, sizeof(*mode)); ++ ++ if (!priv->mode_fixup) ++ return true; ++ ++ if (priv->mode_fixup == -1) { ++ const struct baikal_vdu_crtc_mode_fixup *fixups = mode_fixups; ++ for (; fixups && fixups->vdisplay != ~0U; ++fixups) { ++ if (mode->vdisplay <= fixups->vdisplay) ++ break; ++ } ++ if (fixups->vdisplay == ~0U) ++ return true; ++ else ++ priv->mode_fixup = fixups->vfp_add; ++ } ++ ++ adjusted_mode->vtotal += priv->mode_fixup; ++ adjusted_mode->vsync_start += priv->mode_fixup; ++ adjusted_mode->vsync_end += priv->mode_fixup; ++ adjusted_mode->clock = mode->clock * adjusted_mode->vtotal / mode->vtotal; ++ ++ return true; ++} ++ ++static void baikal_vdu_crtc_helper_mode_set_nofb(struct drm_crtc *crtc) ++{ ++ struct drm_device *dev = crtc->dev; ++ struct baikal_vdu_private *priv = dev->dev_private; ++ const struct drm_display_mode *orig_mode = &crtc->state->mode; ++ const struct drm_display_mode *mode = &crtc->state->adjusted_mode; ++ unsigned int ppl, hsw, hfp, hbp; ++ unsigned int lpp, vsw, vfp, vbp; ++ unsigned int reg; ++ ++ drm_mode_debug_printmodeline(orig_mode); ++ drm_mode_debug_printmodeline(mode); ++ ++ ppl = mode->hdisplay / 16; ++ if (priv->panel) { ++ hsw = mode->hsync_end - mode->hsync_start; ++ hfp = mode->hsync_start - mode->hdisplay - 1; ++ } else { ++ hsw = mode->hsync_end - mode->hsync_start - 1; ++ hfp = mode->hsync_start - mode->hdisplay; ++ } ++ hbp = mode->htotal - mode->hsync_end; ++ ++ lpp = mode->vdisplay; ++ vsw = mode->vsync_end - mode->vsync_start; ++ vfp = mode->vsync_start - mode->vdisplay; ++ vbp = mode->vtotal - mode->vsync_end; ++ ++ writel((HTR_HFP(hfp) & HTR_HFP_MASK) | ++ (HTR_PPL(ppl) & HTR_PPL_MASK) | ++ (HTR_HBP(hbp) & HTR_HBP_MASK) | ++ (HTR_HSW(hsw) & HTR_HSW_MASK), ++ priv->regs + HTR); ++ ++ if (mode->hdisplay > 4080 || ppl * 16 != mode->hdisplay) ++ writel((HPPLOR_HPPLO(mode->hdisplay) & HPPLOR_HPPLO_MASK) | HPPLOR_HPOE, ++ priv->regs + HPPLOR); ++ ++ writel((VTR1_VSW(vsw) & VTR1_VSW_MASK) | ++ (VTR1_VFP(vfp) & VTR1_VFP_MASK) | ++ (VTR1_VBP(vbp) & VTR1_VBP_MASK), ++ priv->regs + VTR1); ++ ++ writel(lpp & VTR2_LPP_MASK, priv->regs + VTR2); ++ ++ writel((HVTER_VSWE(vsw >> VTR1_VSW_LSB_WIDTH) & HVTER_VSWE_MASK) | ++ (HVTER_HSWE(hsw >> HTR_HSW_LSB_WIDTH) & HVTER_HSWE_MASK) | ++ (HVTER_VBPE(vbp >> VTR1_VBP_LSB_WIDTH) & HVTER_VBPE_MASK) | ++ (HVTER_VFPE(vfp >> VTR1_VFP_LSB_WIDTH) & HVTER_VFPE_MASK) | ++ (HVTER_HBPE(hbp >> HTR_HBP_LSB_WIDTH) & HVTER_HBPE_MASK) | ++ (HVTER_HFPE(hfp >> HTR_HFP_LSB_WIDTH) & HVTER_HFPE_MASK), ++ priv->regs + HVTER); ++ ++ /* Set polarities */ ++ reg = readl(priv->regs + CR1); ++ if (mode->flags & DRM_MODE_FLAG_NHSYNC) ++ reg |= CR1_VSP; ++ else ++ reg &= ~CR1_VSP; ++ if (mode->flags & DRM_MODE_FLAG_NVSYNC) ++ reg |= CR1_HSP; ++ else ++ reg &= ~CR1_HSP; ++ reg |= CR1_DEP; // set DE to active high; ++ writel(reg, priv->regs + CR1); ++ ++ crtc->hwmode = crtc->state->adjusted_mode; ++} ++ ++static void baikal_vdu_crtc_helper_enable(struct drm_crtc *crtc, ++ struct drm_atomic_state *state) ++{ ++ struct baikal_vdu_private *priv = crtc->dev->dev_private; ++ struct drm_panel *panel = priv->panel; ++ struct device_node *panel_node; ++ const char *data_mapping; ++ u32 cntl, gpio; ++ ++ DRM_DEV_DEBUG_DRIVER(crtc->dev->dev, "enabling pixel clock\n"); ++ clk_prepare_enable(priv->clk); ++ ++ drm_panel_prepare(panel); ++ ++ writel(ISCR_VSC_VFP, priv->regs + ISCR); ++ ++ /* release clock reset; enable clocking */ ++ cntl = readl(priv->regs + PCTR); ++ cntl |= PCTR_PCR + PCTR_PCI; ++ writel(cntl, priv->regs + PCTR); ++ ++ /* Set 16-word input FIFO watermark */ ++ /* Enable and Power Up */ ++ cntl = readl(priv->regs + CR1); ++ cntl &= ~CR1_FDW_MASK; ++ cntl |= CR1_LCE + CR1_FDW_16_WORDS; ++ ++ if (priv->type == VDU_TYPE_LVDS) { ++ panel_node = panel->dev->of_node; ++ if (of_property_read_string(panel_node, "data-mapping", &data_mapping)) { ++ cntl |= CR1_OPS_LCD18; ++ } else if (strncmp(data_mapping, "vesa-24", 7)) ++ cntl |= CR1_OPS_LCD24; ++ else if (strncmp(data_mapping, "jeida-18", 8)) ++ cntl |= CR1_OPS_LCD18; ++ else { ++ dev_warn(crtc->dev->dev, "%s data mapping is not supported, vesa-24 is set\n", data_mapping); ++ cntl |= CR1_OPS_LCD24; ++ } ++ gpio = GPIOR_UHD_ENB; ++ if (priv->ep_count == 4) ++ gpio |= GPIOR_UHD_QUAD_PORT; ++ else if (priv->ep_count == 2) ++ gpio |= GPIOR_UHD_DUAL_PORT; ++ else ++ gpio |= GPIOR_UHD_SNGL_PORT; ++ writel(gpio, priv->regs + GPIOR); ++ } else ++ cntl |= CR1_OPS_LCD24; ++ writel(cntl, priv->regs + CR1); ++ ++ drm_panel_enable(priv->panel); ++ drm_crtc_vblank_on(crtc); ++} ++ ++void baikal_vdu_crtc_helper_disable(struct drm_crtc *crtc) ++{ ++ struct baikal_vdu_private *priv = crtc->dev->dev_private; ++ ++ drm_crtc_vblank_off(crtc); ++ drm_panel_disable(priv->panel); ++ ++ drm_panel_unprepare(priv->panel); ++ ++ /* Disable clock */ ++ DRM_DEV_DEBUG_DRIVER(crtc->dev->dev, "disabling pixel clock\n"); ++ clk_disable_unprepare(priv->clk); ++} ++ ++static void baikal_vdu_crtc_helper_atomic_flush(struct drm_crtc *crtc, ++ struct drm_atomic_state *state) ++{ ++ struct drm_pending_vblank_event *event = crtc->state->event; ++ ++ if (event) { ++ crtc->state->event = NULL; ++ ++ spin_lock_irq(&crtc->dev->event_lock); ++ if (crtc->state->active && drm_crtc_vblank_get(crtc) == 0) ++ drm_crtc_arm_vblank_event(crtc, event); ++ else ++ drm_crtc_send_vblank_event(crtc, event); ++ spin_unlock_irq(&crtc->dev->event_lock); ++ } ++} ++ ++static int baikal_vdu_enable_vblank(struct drm_crtc *crtc) ++{ ++ struct baikal_vdu_private *priv = crtc->dev->dev_private; ++ ++ /* clear interrupt status */ ++ writel(0x3ffff, priv->regs + ISR); ++ ++ writel(INTR_VCT + INTR_FER, priv->regs + IMR); ++ ++ return 0; ++} ++ ++static void baikal_vdu_disable_vblank(struct drm_crtc *crtc) ++{ ++ struct baikal_vdu_private *priv = crtc->dev->dev_private; ++ ++ /* clear interrupt status */ ++ writel(0x3ffff, priv->regs + ISR); ++ ++ writel(INTR_FER, priv->regs + IMR); ++} ++ ++const struct drm_crtc_funcs crtc_funcs = { ++ .set_config = drm_atomic_helper_set_config, ++ .page_flip = drm_atomic_helper_page_flip, ++ .reset = drm_atomic_helper_crtc_reset, ++ .destroy = drm_crtc_cleanup, ++ .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, ++ .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, ++ .enable_vblank = baikal_vdu_enable_vblank, ++ .disable_vblank = baikal_vdu_disable_vblank, ++}; ++ ++const struct drm_crtc_helper_funcs crtc_helper_funcs = { ++ .mode_fixup = baikal_vdu_crtc_mode_fixup, ++ .mode_set_nofb = baikal_vdu_crtc_helper_mode_set_nofb, ++ .atomic_flush = baikal_vdu_crtc_helper_atomic_flush, ++ .disable = baikal_vdu_crtc_helper_disable, ++ .atomic_enable = baikal_vdu_crtc_helper_enable, ++}; ++ ++int baikal_vdu_crtc_create(struct drm_device *dev) ++{ ++ struct baikal_vdu_private *priv = dev->dev_private; ++ struct drm_crtc *crtc = &priv->crtc; ++ ++ drm_crtc_init_with_planes(dev, crtc, ++ &priv->primary, NULL, ++ &crtc_funcs, "primary"); ++ drm_crtc_helper_add(crtc, &crtc_helper_funcs); ++ ++ /* XXX: The runtime clock disabling still results in ++ * occasional system hangs, and needs debugging. ++ */ ++ ++ DRM_DEV_DEBUG_DRIVER(crtc->dev->dev, "enabling pixel clock\n"); ++ clk_prepare_enable(priv->clk); ++ ++ return 0; ++} +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_debugfs.c b/drivers/gpu/drm/baikal/baikal_vdu_debugfs.c +new file mode 100644 +index 000000000000..77be6aa588dc +--- /dev/null ++++ b/drivers/gpu/drm/baikal/baikal_vdu_debugfs.c +@@ -0,0 +1,87 @@ ++/* ++ * Copyright (C) 2019-2020 Baikal Electronics JSC ++ * ++ * Author: Pavel Parkhomenko ++ * ++ * Parts of this file were based on sources as follows: ++ * ++ * Copyright © 2017 Broadcom ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "baikal_vdu_drm.h" ++#include "baikal_vdu_regs.h" ++ ++#define REGDEF(reg) { reg, #reg } ++static const struct { ++ u32 reg; ++ const char *name; ++} baikal_vdu_reg_defs[] = { ++ REGDEF(CR1), ++ REGDEF(HTR), ++ REGDEF(VTR1), ++ REGDEF(VTR2), ++ REGDEF(PCTR), ++ REGDEF(ISR), ++ REGDEF(IMR), ++ REGDEF(IVR), ++ REGDEF(ISCR), ++ REGDEF(DBAR), ++ REGDEF(DCAR), ++ REGDEF(DEAR), ++ REGDEF(HVTER), ++ REGDEF(HPPLOR), ++ REGDEF(GPIOR), ++ REGDEF(OWER), ++ REGDEF(OWXSER0), ++ REGDEF(OWYSER0), ++ REGDEF(OWDBAR0), ++ REGDEF(OWDCAR0), ++ REGDEF(OWDEAR0), ++ REGDEF(OWXSER1), ++ REGDEF(OWYSER1), ++ REGDEF(OWDBAR1), ++ REGDEF(OWDCAR1), ++ REGDEF(OWDEAR1), ++ REGDEF(MRR), ++}; ++ ++int baikal_vdu_debugfs_regs(struct seq_file *m, void *unused) ++{ ++ struct drm_info_node *node = (struct drm_info_node *)m->private; ++ struct drm_device *dev = node->minor->dev; ++ struct baikal_vdu_private *priv = dev->dev_private; ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(baikal_vdu_reg_defs); i++) { ++ seq_printf(m, "%s (0x%04x): 0x%08x\n", ++ baikal_vdu_reg_defs[i].name, baikal_vdu_reg_defs[i].reg, ++ readl(priv->regs + baikal_vdu_reg_defs[i].reg)); ++ } ++ ++ for (i = 0; i < ARRAY_SIZE(priv->counters); i++) { ++ seq_printf(m, "COUNTER[%d]: 0x%08x\n", i, priv->counters[i]); ++ } ++ ++ return 0; ++} ++ ++static const struct drm_info_list baikal_vdu_debugfs_list[] = { ++ {"regs", baikal_vdu_debugfs_regs, 0}, ++}; ++ ++void baikal_vdu_debugfs_init(struct drm_minor *minor) ++{ ++ drm_debugfs_create_files(baikal_vdu_debugfs_list, ++ ARRAY_SIZE(baikal_vdu_debugfs_list), ++ minor->debugfs_root, minor); ++} +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_drm.h b/drivers/gpu/drm/baikal/baikal_vdu_drm.h +new file mode 100644 +index 000000000000..755d4abeedf7 +--- /dev/null ++++ b/drivers/gpu/drm/baikal/baikal_vdu_drm.h +@@ -0,0 +1,65 @@ ++/* ++ * Copyright (C) 2019-2020 Baikal Electronics JSC ++ * ++ * Author: Pavel Parkhomenko ++ * ++ * Parts of this file were based on sources as follows: ++ * ++ * Copyright (c) 2006-2008 Intel Corporation ++ * Copyright (c) 2007 Dave Airlie ++ * Copyright (C) 2011 Texas Instruments ++ * (C) COPYRIGHT 2012-2013 ARM Limited. All rights reserved. ++ * ++ * This program is free software and is provided to you under the terms of the ++ * GNU General Public License version 2 as published by the Free Software ++ * Foundation, and any use by you of this program is subject to the terms of ++ * such GNU licence. ++ * ++ */ ++ ++#ifndef __BAIKAL_VDU_DRM_H__ ++#define __BAIKAL_VDU_DRM_H__ ++ ++#include ++#include ++ ++#define VDU_TYPE_HDMI 0 ++#define VDU_TYPE_LVDS 1 ++ ++struct baikal_vdu_private { ++ struct drm_device *drm; ++ ++ unsigned int irq; ++ bool irq_enabled; ++ ++ struct drm_connector connector; ++ struct drm_crtc crtc; ++ struct drm_encoder encoder; ++ struct drm_panel *panel; ++ struct drm_bridge *bridge; ++ struct drm_plane primary; ++ ++ void *regs; ++ struct clk *clk; ++ u32 counters[20]; ++ int mode_fixup; ++ int type; ++ u32 ep_count; ++ u32 fb_addr; ++ u32 fb_end; ++ ++ struct gpio_desc *enable_gpio; ++}; ++ ++/* CRTC Functions */ ++int baikal_vdu_crtc_create(struct drm_device *dev); ++irqreturn_t baikal_vdu_irq(int irq, void *data); ++ ++int baikal_vdu_primary_plane_init(struct drm_device *dev); ++ ++/* Connector Functions */ ++int baikal_vdu_lvds_connector_create(struct drm_device *dev); ++ ++void baikal_vdu_debugfs_init(struct drm_minor *minor); ++ ++#endif /* __BAIKAL_VDU_DRM_H__ */ +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_drv.c b/drivers/gpu/drm/baikal/baikal_vdu_drv.c +new file mode 100644 +index 000000000000..af0e0ca193c7 +--- /dev/null ++++ b/drivers/gpu/drm/baikal/baikal_vdu_drv.c +@@ -0,0 +1,363 @@ ++/* ++ * Copyright (C) 2019-2020 Baikal Electronics JSC ++ * ++ * Author: Pavel Parkhomenko ++ * All bugs by Alexey Sheplyakov ++ * ++ * This driver is based on ARM PL111 DRM driver ++ * ++ * Parts of this file were based on sources as follows: ++ * ++ * Copyright (c) 2006-2008 Intel Corporation ++ * Copyright (c) 2007 Dave Airlie ++ * Copyright (C) 2011 Texas Instruments ++ * (C) COPYRIGHT 2012-2013 ARM Limited. All rights reserved. ++ * ++ * This program is free software and is provided to you under the terms of the ++ * GNU General Public License version 2 as published by the Free Software ++ * Foundation, and any use by you of this program is subject to the terms of ++ * such GNU licence. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "baikal_vdu_drm.h" ++#include "baikal_vdu_regs.h" ++ ++#define DRIVER_NAME "baikal-vdu" ++#define DRIVER_DESC "DRM module for Baikal VDU" ++#define DRIVER_DATE "20200131" ++ ++#define BAIKAL_SMC_SCP_LOG_DISABLE 0x82000200 ++ ++int mode_fixup = 0; ++ ++static struct drm_mode_config_funcs mode_config_funcs = { ++ .fb_create = drm_gem_fb_create, ++ .atomic_check = drm_atomic_helper_check, ++ .atomic_commit = drm_atomic_helper_commit, ++}; ++ ++static const struct drm_encoder_funcs baikal_vdu_encoder_funcs = { ++ .destroy = drm_encoder_cleanup, ++}; ++ ++DEFINE_DRM_GEM_CMA_FOPS(drm_fops); ++ ++static struct drm_driver vdu_drm_driver = { ++ .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC, ++ .ioctls = NULL, ++ .fops = &drm_fops, ++ .name = DRIVER_NAME, ++ .desc = DRIVER_DESC, ++ .date = DRIVER_DATE, ++ .major = 1, ++ .minor = 0, ++ .patchlevel = 0, ++ DRM_GEM_CMA_DRIVER_OPS, ++#if defined(CONFIG_DEBUG_FS) ++ .debugfs_init = baikal_vdu_debugfs_init, ++#endif ++}; ++ ++static int vdu_modeset_init(struct drm_device *dev) ++{ ++ struct drm_mode_config *mode_config; ++ struct baikal_vdu_private *priv = dev->dev_private; ++ struct arm_smccc_res res; ++ int ret = 0, ep_count = 0; ++ ++ if (priv == NULL) ++ return -EINVAL; ++ ++ drm_mode_config_init(dev); ++ mode_config = &dev->mode_config; ++ mode_config->funcs = &mode_config_funcs; ++ mode_config->min_width = 1; ++ mode_config->max_width = 4096; ++ mode_config->min_height = 1; ++ mode_config->max_height = 4096; ++ ++ ret = baikal_vdu_primary_plane_init(dev); ++ if (ret != 0) { ++ dev_err(dev->dev, "Failed to init primary plane\n"); ++ goto out_config; ++ } ++ ++ ret = baikal_vdu_crtc_create(dev); ++ if (ret) { ++ dev_err(dev->dev, "Failed to create crtc\n"); ++ goto out_config; ++ } ++ ++ ret = drm_of_find_panel_or_bridge(dev->dev->of_node, -1, -1, ++ &priv->panel, ++ &priv->bridge); ++ if (ret == -EPROBE_DEFER) { ++ dev_info(dev->dev, "Bridge probe deferred\n"); ++ goto out_config; ++ } ++ ep_count = of_graph_get_endpoint_count(dev->dev->of_node); ++ if (ep_count <= 0) { ++ dev_err(dev->dev, "no endpoints connected to panel/bridge\n"); ++ goto out_config; ++ } ++ priv->ep_count = ep_count; ++ ++ if (priv->bridge) { ++ struct drm_encoder *encoder = &priv->encoder; ++ ret = drm_encoder_init(dev, encoder, &baikal_vdu_encoder_funcs, ++ DRM_MODE_ENCODER_NONE, NULL); ++ if (ret) { ++ dev_err(dev->dev, "failed to create DRM encoder\n"); ++ goto out_config; ++ } ++ encoder->crtc = &priv->crtc; ++ encoder->possible_crtcs = drm_crtc_mask(encoder->crtc); ++ priv->bridge->encoder = &priv->encoder; ++ ret = drm_bridge_attach(&priv->encoder, priv->bridge, NULL, 0); ++ if (ret) { ++ dev_err(dev->dev, "Failed to attach DRM bridge %d\n", ret); ++ goto out_config; ++ } ++ } else if (priv->panel) { ++ dev_dbg(dev->dev, "panel has %d endpoints\n", priv->ep_count); ++ ret = baikal_vdu_lvds_connector_create(dev); ++ if (ret) { ++ dev_err(dev->dev, "Failed to create DRM connector\n"); ++ goto out_config; ++ } ++ } else ++ ret = -EINVAL; ++ ++ if (ret) { ++ dev_err(dev->dev, "No bridge or panel attached!\n"); ++ goto out_config; ++ } ++ ++ priv->clk = clk_get(dev->dev, "pclk"); ++ if (IS_ERR(priv->clk)) { ++ dev_err(dev->dev, "fatal: unable to get pclk, err %ld\n", PTR_ERR(priv->clk)); ++ ret = PTR_ERR(priv->clk); ++ goto out_config; ++ } ++ ++ priv->mode_fixup = mode_fixup; ++ ++ drm_aperture_remove_framebuffers(false, &vdu_drm_driver); ++ ++ ret = drm_vblank_init(dev, 1); ++ if (ret != 0) { ++ dev_err(dev->dev, "Failed to init vblank\n"); ++ goto out_clk; ++ } ++ ++ arm_smccc_smc(BAIKAL_SMC_SCP_LOG_DISABLE, 0, 0, 0, 0, 0, 0, 0, &res); ++ ++ drm_mode_config_reset(dev); ++ ++ drm_kms_helper_poll_init(dev); ++ ++ ret = drm_dev_register(dev, 0); ++ if (ret) ++ goto out_clk; ++ ++ drm_fbdev_generic_setup(dev, 32); ++ goto finish; ++ ++out_clk: ++ clk_put(priv->clk); ++out_config: ++ drm_mode_config_cleanup(dev); ++finish: ++ return ret; ++} ++ ++ ++static int baikal_vdu_irq_install(struct baikal_vdu_private *priv, int irq) ++{ ++ int ret; ++ ret= request_irq(irq, baikal_vdu_irq, 0, DRIVER_NAME, priv->drm); ++ if (ret < 0) ++ return ret; ++ priv->irq_enabled = true; ++ return 0; ++} ++ ++static void baikal_vdu_irq_uninstall(struct baikal_vdu_private *priv) ++{ ++ if (priv->irq_enabled) { ++ priv->irq_enabled = false; ++ disable_irq(priv->irq); ++ free_irq(priv->irq, priv->drm); ++ } ++} ++ ++static int vdu_maybe_enable_lvds(struct baikal_vdu_private *vdu) ++{ ++ int err = 0; ++ struct device *dev; ++ if (!vdu->drm) { ++ pr_err("%s: vdu->drm is NULL\n", __func__); ++ return -EINVAL; ++ } ++ dev = vdu->drm->dev; ++ ++ vdu->enable_gpio = devm_gpiod_get_optional(dev, "enable", GPIOD_OUT_LOW); ++ if (IS_ERR(vdu->enable_gpio)) { ++ err = (int)PTR_ERR(vdu->enable_gpio); ++ dev_err(dev, "failed to get enable-gpios, error %d\n", err); ++ vdu->enable_gpio = NULL; ++ return err; ++ } ++ if (vdu->enable_gpio) { ++ dev_dbg(dev, "%s: setting enable-gpio\n", __func__); ++ gpiod_set_value_cansleep(vdu->enable_gpio, 1); ++ } else { ++ dev_dbg(dev, "%s: no enable-gpios, assuming it's handled by panel-lvds\n", __func__); ++ } ++ return 0; ++} ++ ++static int baikal_vdu_drm_probe(struct platform_device *pdev) ++{ ++ struct device *dev = &pdev->dev; ++ struct baikal_vdu_private *priv; ++ struct drm_device *drm; ++ struct resource *mem; ++ int irq; ++ int ret; ++ ++ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); ++ if (!priv) ++ return -ENOMEM; ++ ++ drm = drm_dev_alloc(&vdu_drm_driver, dev); ++ if (IS_ERR(drm)) ++ return PTR_ERR(drm); ++ platform_set_drvdata(pdev, drm); ++ priv->drm = drm; ++ drm->dev_private = priv; ++ ++ if (!(mem = platform_get_resource(pdev, IORESOURCE_MEM, 0))) { ++ dev_err(dev, "%s no MMIO resource specified\n", __func__); ++ return -EINVAL; ++ } ++ ++ priv->regs = devm_ioremap_resource(dev, mem); ++ if (IS_ERR(priv->regs)) { ++ dev_err(dev, "%s MMIO allocation failed\n", __func__); ++ return PTR_ERR(priv->regs); ++ } ++ ++ /* turn off interrupts before requesting the irq */ ++ writel(0, priv->regs + IMR); ++ ++ irq = platform_get_irq(pdev, 0); ++ if (irq < 0) { ++ dev_err(dev, "%s no IRQ resource specified\n", __func__); ++ return -EINVAL; ++ } ++ priv->irq = irq; ++ ++ ret = baikal_vdu_irq_install(priv, irq); ++ if (ret != 0) { ++ dev_err(dev, "%s IRQ %d allocation failed\n", __func__, irq); ++ return ret; ++ } ++ ++ if (pdev->dev.of_node && of_property_read_bool(pdev->dev.of_node, "lvds-out")) { ++ priv->type = VDU_TYPE_LVDS; ++ if (of_property_read_u32(pdev->dev.of_node, "num-lanes", &priv->ep_count)) ++ priv->ep_count = 1; ++ } ++ else ++ priv->type = VDU_TYPE_HDMI; ++ ++ ret = vdu_modeset_init(drm); ++ if (ret != 0) { ++ dev_err(dev, "Failed to init modeset\n"); ++ goto dev_unref; ++ } ++ ++ ret = vdu_maybe_enable_lvds(priv); ++ if (ret != 0) { ++ dev_err(dev, "failed to enable LVDS\n"); ++ } ++ ++ return 0; ++ ++dev_unref: ++ writel(0, priv->regs + IMR); ++ writel(0x3ffff, priv->regs + ISR); ++ baikal_vdu_irq_uninstall(priv); ++ drm->dev_private = NULL; ++ drm_dev_put(drm); ++ return ret; ++} ++ ++static int baikal_vdu_drm_remove(struct platform_device *pdev) ++{ ++ struct drm_device *drm; ++ struct baikal_vdu_private *priv; ++ ++ drm = platform_get_drvdata(pdev); ++ if (!drm) { ++ return -1; ++ } ++ priv = drm->dev_private; ++ ++ drm_dev_unregister(drm); ++ drm_mode_config_cleanup(drm); ++ baikal_vdu_irq_uninstall(priv); ++ drm->dev_private = NULL; ++ drm_dev_put(drm); ++ ++ return 0; ++} ++ ++static const struct of_device_id baikal_vdu_of_match[] = { ++ { .compatible = "baikal,vdu" }, ++ { }, ++}; ++MODULE_DEVICE_TABLE(of, baikal_vdu_of_match); ++ ++static struct platform_driver baikal_vdu_platform_driver = { ++ .probe = baikal_vdu_drm_probe, ++ .remove = baikal_vdu_drm_remove, ++ .driver = { ++ .name = DRIVER_NAME, ++ .of_match_table = baikal_vdu_of_match, ++ }, ++}; ++ ++module_param(mode_fixup, int, 0644); ++ ++module_platform_driver(baikal_vdu_platform_driver); ++ ++MODULE_AUTHOR("Pavel Parkhomenko "); ++MODULE_DESCRIPTION("Baikal Electronics BE-M1000 Video Display Unit (VDU) DRM Driver"); ++MODULE_LICENSE("GPL"); ++MODULE_ALIAS("platform:" DRIVER_NAME); ++MODULE_SOFTDEP("pre: baikal_hdmi"); +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_plane.c b/drivers/gpu/drm/baikal/baikal_vdu_plane.c +new file mode 100644 +index 000000000000..4a3e971793d2 +--- /dev/null ++++ b/drivers/gpu/drm/baikal/baikal_vdu_plane.c +@@ -0,0 +1,209 @@ ++/* ++ * Copyright (C) 2019-2020 Baikal Electronics JSC ++ * ++ * Author: Pavel Parkhomenko ++ * ++ * Parts of this file were based on sources as follows: ++ * ++ * Copyright (c) 2006-2008 Intel Corporation ++ * Copyright (c) 2007 Dave Airlie ++ * Copyright (C) 2011 Texas Instruments ++ * (C) COPYRIGHT 2012-2013 ARM Limited. All rights reserved. ++ * ++ * This program is free software and is provided to you under the terms of the ++ * GNU General Public License version 2 as published by the Free Software ++ * Foundation, and any use by you of this program is subject to the terms of ++ * such GNU licence. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "baikal_vdu_drm.h" ++#include "baikal_vdu_regs.h" ++ ++static int baikal_vdu_primary_plane_atomic_check(struct drm_plane *plane, ++ struct drm_atomic_state *atomic_state) ++{ ++ struct drm_device *dev = plane->dev; ++ struct baikal_vdu_private *priv = dev->dev_private; ++ struct drm_crtc_state *crtc_state; ++ struct drm_plane_state *state; ++ struct drm_display_mode *mode; ++ int rate, ret; ++ u32 cntl; ++ ++ state = drm_atomic_get_new_plane_state(atomic_state, plane); ++ if (!state || !state->crtc) ++ return 0; ++ ++ crtc_state = drm_atomic_get_crtc_state(state->state, state->crtc); ++ if (IS_ERR(crtc_state)) { ++ ret = PTR_ERR(crtc_state); ++ dev_warn(dev->dev, "failed to get crtc_state: %d\n", ret); ++ return ret; ++ } ++ mode = &crtc_state->adjusted_mode; ++ rate = mode->clock * 1000; ++ if (rate == clk_get_rate(priv->clk)) ++ return 0; ++ ++ /* hold clock domain reset; disable clocking */ ++ writel(0, priv->regs + PCTR); ++ ++ if (__clk_is_enabled(priv->clk)) ++ clk_disable_unprepare(priv->clk); ++ ret = clk_set_rate(priv->clk, rate); ++ DRM_DEV_DEBUG_DRIVER(dev->dev, "Requested pixel clock is %d Hz\n", rate); ++ ++ if (ret < 0) { ++ DRM_ERROR("Cannot set desired pixel clock (%d Hz)\n", ++ rate); ++ ret = -EINVAL; ++ } else { ++ clk_prepare_enable(priv->clk); ++ if (__clk_is_enabled(priv->clk)) ++ ret = 0; ++ else { ++ DRM_ERROR("PLL could not lock at desired frequency (%d Hz)\n", ++ rate); ++ ret = -EINVAL; ++ } ++ } ++ ++ /* release clock domain reset; enable clocking */ ++ cntl = readl(priv->regs + PCTR); ++ cntl |= PCTR_PCR + PCTR_PCI; ++ writel(cntl, priv->regs + PCTR); ++ ++ return ret; ++} ++ ++static void baikal_vdu_primary_plane_atomic_update(struct drm_plane *plane, ++ struct drm_atomic_state *old_state) ++{ ++ struct drm_device *dev = plane->dev; ++ struct baikal_vdu_private *priv = dev->dev_private; ++ struct drm_plane_state *state = plane->state; ++ struct drm_framebuffer *fb = state->fb; ++ u32 cntl, addr, end; ++ ++ if (!fb) ++ return; ++ ++ addr = drm_fb_cma_get_gem_addr(fb, state, 0); ++ priv->fb_addr = addr & 0xfffffff8; ++ ++ cntl = readl(priv->regs + CR1); ++ cntl &= ~CR1_BPP_MASK; ++ ++ /* Note that the the hardware's format reader takes 'r' from ++ * the low bit, while DRM formats list channels from high bit ++ * to low bit as you read left to right. ++ */ ++ switch (fb->format->format) { ++ case DRM_FORMAT_BGR888: ++ cntl |= CR1_BPP24 | CR1_FBP | CR1_BGR; ++ break; ++ case DRM_FORMAT_RGB888: ++ cntl |= CR1_BPP24 | CR1_FBP; ++ break; ++ case DRM_FORMAT_ABGR8888: ++ case DRM_FORMAT_XBGR8888: ++ cntl |= CR1_BPP24 | CR1_BGR; ++ break; ++ case DRM_FORMAT_ARGB8888: ++ case DRM_FORMAT_XRGB8888: ++ cntl |= CR1_BPP24; ++ break; ++ case DRM_FORMAT_BGR565: ++ cntl |= CR1_BPP16_565 | CR1_BGR; ++ break; ++ case DRM_FORMAT_RGB565: ++ cntl |= CR1_BPP16_565; ++ break; ++ case DRM_FORMAT_ABGR1555: ++ case DRM_FORMAT_XBGR1555: ++ cntl |= CR1_BPP16_555 | CR1_BGR; ++ break; ++ case DRM_FORMAT_ARGB1555: ++ case DRM_FORMAT_XRGB1555: ++ cntl |= CR1_BPP16_555; ++ break; ++ default: ++ WARN_ONCE(true, "Unknown FB format 0x%08x, set XRGB8888 instead\n", ++ fb->format->format); ++ cntl |= CR1_BPP24; ++ break; ++ } ++ ++ writel(priv->fb_addr, priv->regs + DBAR); ++ end = ((priv->fb_addr + fb->height * fb->pitches[0] - 1) & MRR_DEAR_MRR_MASK) | \ ++ MRR_OUTSTND_RQ(4); ++ ++ if (priv->fb_end < end) { ++ writel(end, priv->regs + MRR); ++ priv->fb_end = end; ++ } ++ writel(cntl, priv->regs + CR1); ++} ++ ++static const struct drm_plane_helper_funcs baikal_vdu_primary_plane_helper_funcs = { ++ .atomic_check = baikal_vdu_primary_plane_atomic_check, ++ .atomic_update = baikal_vdu_primary_plane_atomic_update, ++}; ++ ++static const struct drm_plane_funcs baikal_vdu_primary_plane_funcs = { ++ .update_plane = drm_atomic_helper_update_plane, ++ .disable_plane = drm_atomic_helper_disable_plane, ++ .reset = drm_atomic_helper_plane_reset, ++ .destroy = drm_plane_cleanup, ++ .atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state, ++ .atomic_destroy_state = drm_atomic_helper_plane_destroy_state, ++}; ++ ++int baikal_vdu_primary_plane_init(struct drm_device *drm) ++{ ++ struct baikal_vdu_private *priv = drm->dev_private; ++ struct drm_plane *plane = &priv->primary; ++ static const u32 formats[] = { ++ DRM_FORMAT_BGR888, ++ DRM_FORMAT_RGB888, ++ DRM_FORMAT_ABGR8888, ++ DRM_FORMAT_XBGR8888, ++ DRM_FORMAT_ARGB8888, ++ DRM_FORMAT_XRGB8888, ++ DRM_FORMAT_BGR565, ++ DRM_FORMAT_RGB565, ++ DRM_FORMAT_ABGR1555, ++ DRM_FORMAT_XBGR1555, ++ DRM_FORMAT_ARGB1555, ++ DRM_FORMAT_XRGB1555, ++ }; ++ int ret; ++ ++ ret = drm_universal_plane_init(drm, plane, 0, ++ &baikal_vdu_primary_plane_funcs, ++ formats, ++ ARRAY_SIZE(formats), ++ NULL, ++ DRM_PLANE_TYPE_PRIMARY, ++ NULL); ++ if (ret) ++ return ret; ++ ++ drm_plane_helper_add(plane, &baikal_vdu_primary_plane_helper_funcs); ++ ++ return 0; ++} ++ ++ +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_regs.h b/drivers/gpu/drm/baikal/baikal_vdu_regs.h +new file mode 100644 +index 000000000000..5553fcac5fec +--- /dev/null ++++ b/drivers/gpu/drm/baikal/baikal_vdu_regs.h +@@ -0,0 +1,139 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++/* ++ * Copyright (C) 2019-2021 Baikal Electronics JSC ++ * ++ * Author: Pavel Parkhomenko ++ * ++ * Parts of this file were based on sources as follows: ++ * ++ * David A Rusling ++ * Copyright (C) 2001 ARM Limited ++ */ ++ ++#ifndef __BAIKAL_VDU_REGS_H__ ++#define __BAIKAL_VDU_REGS_H__ ++ ++#define CR1 0x000 ++#define HTR 0x008 ++#define VTR1 0x00C ++#define VTR2 0x010 ++#define PCTR 0x014 ++#define ISR 0x018 ++#define IMR 0x01C ++#define IVR 0x020 ++#define ISCR 0x024 ++#define DBAR 0x028 ++#define DCAR 0x02C ++#define DEAR 0x030 ++#define HVTER 0x044 ++#define HPPLOR 0x048 ++#define GPIOR 0x1F8 ++#define OWER 0x600 ++#define OWXSER0 0x604 ++#define OWYSER0 0x608 ++#define OWDBAR0 0x60C ++#define OWDCAR0 0x610 ++#define OWDEAR0 0x614 ++#define OWXSER1 0x618 ++#define OWYSER1 0x61C ++#define OWDBAR1 0x620 ++#define OWDCAR1 0x624 ++#define OWDEAR1 0x628 ++#define MRR 0xFFC ++ ++#define INTR_BAU BIT(7) ++#define INTR_VCT BIT(6) ++#define INTR_MBE BIT(5) ++#define INTR_FER BIT(4) ++ ++#define CR1_FBP BIT(19) ++#define CR1_FDW_MASK GENMASK(17, 16) ++#define CR1_FDW_4_WORDS (0 << 16) ++#define CR1_FDW_8_WORDS (1 << 16) ++#define CR1_FDW_16_WORDS (2 << 16) ++#define CR1_OPS_LCD18 (0 << 13) ++#define CR1_OPS_LCD24 (1 << 13) ++#define CR1_OPS_565 (0 << 12) ++#define CR1_OPS_555 (1 << 12) ++#define CR1_VSP BIT(11) ++#define CR1_HSP BIT(10) ++#define CR1_DEP BIT(8) ++#define CR1_BGR BIT(5) ++#define CR1_BPP_MASK GENMASK(4, 2) ++#define CR1_BPP1 (0 << 2) ++#define CR1_BPP2 (1 << 2) ++#define CR1_BPP4 (2 << 2) ++#define CR1_BPP8 (3 << 2) ++#define CR1_BPP16 (4 << 2) ++#define CR1_BPP18 (5 << 2) ++#define CR1_BPP24 (6 << 2) ++#define CR1_LCE BIT(0) ++ ++#define CR1_BPP16_555 ((CR1_BPP16) | (CR1_OPS_555)) ++#define CR1_BPP16_565 ((CR1_BPP16) | (CR1_OPS_565)) ++ ++#define VTR1_VBP_MASK GENMASK(23, 16) ++#define VTR1_VBP(x) ((x) << 16) ++#define VTR1_VBP_LSB_WIDTH 8 ++#define VTR1_VFP_MASK GENMASK(15, 8) ++#define VTR1_VFP(x) ((x) << 8) ++#define VTR1_VFP_LSB_WIDTH 8 ++#define VTR1_VSW_MASK GENMASK(7, 0) ++#define VTR1_VSW(x) ((x) << 0) ++#define VTR1_VSW_LSB_WIDTH 8 ++ ++#define VTR2_LPP_MASK GENMASK(11, 0) ++ ++#define HTR_HSW_MASK GENMASK(31, 24) ++#define HTR_HSW(x) ((x) << 24) ++#define HTR_HSW_LSB_WIDTH 8 ++#define HTR_HBP_MASK GENMASK(23, 16) ++#define HTR_HBP(x) ((x) << 16) ++#define HTR_HBP_LSB_WIDTH 8 ++#define HTR_PPL_MASK GENMASK(15, 8) ++#define HTR_PPL(x) ((x) << 8) ++#define HTR_HFP_MASK GENMASK(7, 0) ++#define HTR_HFP(x) ((x) << 0) ++#define HTR_HFP_LSB_WIDTH 8 ++ ++#define PCTR_PCI2 BIT(11) ++#define PCTR_PCR BIT(10) ++#define PCTR_PCI BIT(9) ++#define PCTR_PCB BIT(8) ++#define PCTR_PCD_MASK GENMASK(7, 0) ++#define PCTR_MAX_PCD 128 ++ ++#define ISCR_VSC_OFF 0x0 ++#define ISCR_VSC_VSW 0x4 ++#define ISCR_VSC_VBP 0x5 ++#define ISCR_VSC_VACTIVE 0x6 ++#define ISCR_VSC_VFP 0x7 ++ ++#define HVTER_VSWE_MASK GENMASK(25, 24) ++#define HVTER_VSWE(x) ((x) << 24) ++#define HVTER_HSWE_MASK GENMASK(17, 16) ++#define HVTER_HSWE(x) ((x) << 16) ++#define HVTER_VBPE_MASK GENMASK(13, 12) ++#define HVTER_VBPE(x) ((x) << 12) ++#define HVTER_VFPE_MASK GENMASK(9, 8) ++#define HVTER_VFPE(x) ((x) << 8) ++#define HVTER_HBPE_MASK GENMASK(5, 4) ++#define HVTER_HBPE(x) ((x) << 4) ++#define HVTER_HFPE_MASK GENMASK(1, 0) ++#define HVTER_HFPE(x) ((x) << 0) ++ ++#define HPPLOR_HPOE BIT(31) ++#define HPPLOR_HPPLO_MASK GENMASK(11, 0) ++#define HPPLOR_HPPLO(x) ((x) << 0) ++ ++#define GPIOR_UHD_MASK GENMASK(23, 16) ++#define GPIOR_UHD_SNGL_PORT (0 << 18) ++#define GPIOR_UHD_DUAL_PORT (1 << 18) ++#define GPIOR_UHD_QUAD_PORT (2 << 18) ++#define GPIOR_UHD_ENB BIT(17) ++ ++#define MRR_DEAR_MRR_MASK GENMASK(31, 3) ++#define MRR_OUTSTND_RQ_MASK GENMASK(2, 0) ++#define MRR_OUTSTND_RQ(x) ((x >> 1) << 0) ++ ++#endif /* __BAIKAL_VDU_REGS_H__ */ +diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig +index 431b6e12a81f..0c2661be5937 100644 +--- a/drivers/gpu/drm/bridge/Kconfig ++++ b/drivers/gpu/drm/bridge/Kconfig +@@ -135,6 +135,13 @@ config DRM_LVDS_CODEC + Support for transparent LVDS encoders and decoders that don't + require any configuration. + ++config DRM_BAIKAL_HDMI ++ tristate "Baikal-M HDMI transmitter" ++ default y if ARCH_BAIKAL ++ select DRM_DW_HDMI ++ help ++ Choose this if you want to use HDMI on Baikal-M. ++ + config DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW + tristate "MegaChips stdp4028-ge-b850v3-fw and stdp2690-ge-b850v3-fw" + depends on OF +diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c +index d0db1acf11d7..3bb652e42718 100644 +--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c ++++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.c +@@ -132,12 +132,45 @@ struct snd_dw_hdmi { + u8 cs[192][8]; + }; + +-static void dw_hdmi_writel(u32 val, void __iomem *ptr) ++static inline void dw_hdmi_writeb_relaxed(u8 value, const struct dw_hdmi_audio_data *data, int offset) + { +- writeb_relaxed(val, ptr); +- writeb_relaxed(val >> 8, ptr + 1); +- writeb_relaxed(val >> 16, ptr + 2); +- writeb_relaxed(val >> 24, ptr + 3); ++ void __iomem *base = data->base; ++ if (data->reg_offset != 0) ++ offset <<= data->reg_offset; ++ writeb_relaxed(value, base + offset); ++} ++ ++static inline void dw_hdmi_writeb(u8 value, const struct dw_hdmi_audio_data *data, int offset) ++{ ++ void __iomem *base = data->base; ++ if (data->reg_offset != 0) ++ offset <<= data->reg_offset; ++ writeb(value, base + offset); ++} ++ ++static inline u8 dw_hdmi_readb(const struct dw_hdmi_audio_data *data, int offset) ++{ ++ void __iomem *base = data->base; ++ if (data->reg_offset != 0) ++ offset <<= data->reg_offset; ++ return readb(base + offset); ++ ++} ++ ++static inline u8 dw_hdmi_readb_relaxed(const struct dw_hdmi_audio_data *data, int offset) ++{ ++ void __iomem *base = data->base; ++ if (data->reg_offset != 0) ++ offset <<= data->reg_offset; ++ return readb_relaxed(base + offset); ++} ++ ++static void dw_hdmi_writel(u32 val, const struct dw_hdmi_audio_data *data, int offset) ++{ ++ dw_hdmi_writeb_relaxed(val, data, offset); ++ dw_hdmi_writeb_relaxed(val >> 8, data, offset + 1); ++ dw_hdmi_writeb_relaxed(val >> 16, data, offset + 2); ++ dw_hdmi_writeb_relaxed(val >> 24, data, offset + 3); + } + + /* +@@ -232,7 +265,6 @@ static void dw_hdmi_create_cs(struct snd_dw_hdmi *dw, + + static void dw_hdmi_start_dma(struct snd_dw_hdmi *dw) + { +- void __iomem *base = dw->data.base; + unsigned offset = dw->buf_offset; + unsigned period = dw->buf_period; + u32 start, stop; +@@ -240,18 +272,18 @@ static void dw_hdmi_start_dma(struct snd_dw_hdmi *dw) + dw->reformat(dw, offset, period); + + /* Clear all irqs before enabling irqs and starting DMA */ +- writeb_relaxed(HDMI_IH_AHBDMAAUD_STAT0_ALL, +- base + HDMI_IH_AHBDMAAUD_STAT0); ++ dw_hdmi_writeb_relaxed(HDMI_IH_AHBDMAAUD_STAT0_ALL, ++ &dw->data, HDMI_IH_AHBDMAAUD_STAT0); + + start = dw->buf_addr + offset; + stop = start + period - 1; + + /* Setup the hardware start/stop addresses */ +- dw_hdmi_writel(start, base + HDMI_AHB_DMA_STRADDR0); +- dw_hdmi_writel(stop, base + HDMI_AHB_DMA_STPADDR0); ++ dw_hdmi_writel(start, &dw->data, HDMI_AHB_DMA_STRADDR0); ++ dw_hdmi_writel(stop, &dw->data, HDMI_AHB_DMA_STPADDR0); + +- writeb_relaxed((u8)~HDMI_AHB_DMA_MASK_DONE, base + HDMI_AHB_DMA_MASK); +- writeb(HDMI_AHB_DMA_START_START, base + HDMI_AHB_DMA_START); ++ dw_hdmi_writeb_relaxed((u8)~HDMI_AHB_DMA_MASK_DONE, &dw->data, HDMI_AHB_DMA_MASK); ++ dw_hdmi_writeb(HDMI_AHB_DMA_START_START, &dw->data, HDMI_AHB_DMA_START); + + offset += period; + if (offset >= dw->buf_size) +@@ -262,8 +294,8 @@ static void dw_hdmi_start_dma(struct snd_dw_hdmi *dw) + static void dw_hdmi_stop_dma(struct snd_dw_hdmi *dw) + { + /* Disable interrupts before disabling DMA */ +- writeb_relaxed(~0, dw->data.base + HDMI_AHB_DMA_MASK); +- writeb_relaxed(HDMI_AHB_DMA_STOP_STOP, dw->data.base + HDMI_AHB_DMA_STOP); ++ dw_hdmi_writeb_relaxed(~0, &dw->data, HDMI_AHB_DMA_MASK); ++ dw_hdmi_writeb_relaxed(HDMI_AHB_DMA_STOP_STOP, &dw->data, HDMI_AHB_DMA_STOP); + } + + static irqreturn_t snd_dw_hdmi_irq(int irq, void *data) +@@ -272,11 +304,11 @@ static irqreturn_t snd_dw_hdmi_irq(int irq, void *data) + struct snd_pcm_substream *substream; + unsigned stat; + +- stat = readb_relaxed(dw->data.base + HDMI_IH_AHBDMAAUD_STAT0); ++ stat = dw_hdmi_readb_relaxed(&dw->data, HDMI_IH_AHBDMAAUD_STAT0); + if (!stat) + return IRQ_NONE; + +- writeb_relaxed(stat, dw->data.base + HDMI_IH_AHBDMAAUD_STAT0); ++ dw_hdmi_writeb_relaxed(stat, &dw->data, HDMI_IH_AHBDMAAUD_STAT0); + + substream = dw->substream; + if (stat & HDMI_IH_AHBDMAAUD_STAT0_DONE && substream) { +@@ -351,7 +351,6 @@ + { + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_dw_hdmi *dw = substream->private_data; +- void __iomem *base = dw->data.base; + u8 *eld; + int ret; + +@@ -345,16 +376,16 @@ static int dw_hdmi_open(struct snd_pcm_substream *substream) + return ret; + + /* Clear FIFO */ +- writeb_relaxed(HDMI_AHB_DMA_CONF0_SW_FIFO_RST, +- base + HDMI_AHB_DMA_CONF0); ++ dw_hdmi_writeb_relaxed(HDMI_AHB_DMA_CONF0_SW_FIFO_RST, ++ &dw->data, HDMI_AHB_DMA_CONF0); + + /* Configure interrupt polarities */ +- writeb_relaxed(~0, base + HDMI_AHB_DMA_POL); +- writeb_relaxed(~0, base + HDMI_AHB_DMA_BUFFPOL); ++ dw_hdmi_writeb_relaxed(~0, &dw->data, HDMI_AHB_DMA_POL); ++ dw_hdmi_writeb_relaxed(~0, &dw->data, HDMI_AHB_DMA_BUFFPOL); + + /* Keep interrupts masked, and clear any pending */ +- writeb_relaxed(~0, base + HDMI_AHB_DMA_MASK); +- writeb_relaxed(~0, base + HDMI_IH_AHBDMAAUD_STAT0); ++ dw_hdmi_writeb_relaxed(~0, &dw->data, HDMI_AHB_DMA_MASK); ++ dw_hdmi_writeb_relaxed(~0, &dw->data, HDMI_IH_AHBDMAAUD_STAT0); + + ret = request_irq(dw->data.irq, snd_dw_hdmi_irq, IRQF_SHARED, + "dw-hdmi-audio", dw); +@@ -362,9 +393,9 @@ static int dw_hdmi_open(struct snd_pcm_substream *substream) + return ret; + + /* Un-mute done interrupt */ +- writeb_relaxed(HDMI_IH_MUTE_AHBDMAAUD_STAT0_ALL & +- ~HDMI_IH_MUTE_AHBDMAAUD_STAT0_DONE, +- base + HDMI_IH_MUTE_AHBDMAAUD_STAT0); ++ dw_hdmi_writeb_relaxed(HDMI_IH_MUTE_AHBDMAAUD_STAT0_ALL & ++ ~HDMI_IH_MUTE_AHBDMAAUD_STAT0_DONE, ++ &dw->data, HDMI_IH_MUTE_AHBDMAAUD_STAT0); + + return 0; + } +@@ -374,8 +405,8 @@ static int dw_hdmi_close(struct snd_pcm_substream *substream) + struct snd_dw_hdmi *dw = substream->private_data; + + /* Mute all interrupts */ +- writeb_relaxed(HDMI_IH_MUTE_AHBDMAAUD_STAT0_ALL, +- dw->data.base + HDMI_IH_MUTE_AHBDMAAUD_STAT0); ++ dw_hdmi_writeb_relaxed(HDMI_IH_MUTE_AHBDMAAUD_STAT0_ALL, ++ &dw->data, HDMI_IH_MUTE_AHBDMAAUD_STAT0); + + free_irq(dw->data.irq, dw); + +@@ -416,6 +447,11 @@ static int dw_hdmi_prepare(struct snd_pcm_substream *substream) + HDMI_AHB_DMA_CONF0_INCR8; + threshold = 128; + break; ++ case 0x2a: /* this revision is used in Baikal-M SoC */ ++ conf0 = HDMI_AHB_DMA_CONF0_BURST_MODE | ++ HDMI_AHB_DMA_CONF0_INCR16; ++ threshold = 128; ++ break; + default: + /* NOTREACHED */ + return -EINVAL; +@@ -430,9 +466,9 @@ static int dw_hdmi_prepare(struct snd_pcm_substream *substream) + conf1 = default_hdmi_channel_config[runtime->channels - 2].conf1; + ca = default_hdmi_channel_config[runtime->channels - 2].ca; + +- writeb_relaxed(threshold, dw->data.base + HDMI_AHB_DMA_THRSLD); +- writeb_relaxed(conf0, dw->data.base + HDMI_AHB_DMA_CONF0); +- writeb_relaxed(conf1, dw->data.base + HDMI_AHB_DMA_CONF1); ++ dw_hdmi_writeb_relaxed(threshold, &dw->data, HDMI_AHB_DMA_THRSLD); ++ dw_hdmi_writeb_relaxed(conf0, &dw->data, HDMI_AHB_DMA_CONF0); ++ dw_hdmi_writeb_relaxed(conf1, &dw->data, HDMI_AHB_DMA_CONF1); + + dw_hdmi_set_channel_count(dw->data.hdmi, runtime->channels); + dw_hdmi_set_channel_allocation(dw->data.hdmi, ca); +@@ -524,10 +560,10 @@ static int snd_dw_hdmi_probe(struct platform_device *pdev) + unsigned revision; + int ret; + +- writeb_relaxed(HDMI_IH_MUTE_AHBDMAAUD_STAT0_ALL, +- data->base + HDMI_IH_MUTE_AHBDMAAUD_STAT0); +- revision = readb_relaxed(data->base + HDMI_REVISION_ID); +- if (revision != 0x0a && revision != 0x1a) { ++ dw_hdmi_writeb_relaxed(HDMI_IH_MUTE_AHBDMAAUD_STAT0_ALL, ++ data, HDMI_IH_MUTE_AHBDMAAUD_STAT0); ++ revision = dw_hdmi_readb_relaxed(data, HDMI_REVISION_ID); ++ if (revision != 0x0a && revision != 0x1a && revision != 0x2a) { + dev_err(dev, "dw-hdmi-audio: unknown revision 0x%02x\n", + revision); + return -ENXIO; +diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h +index cb07dc0da5a7..8fb5ebd5a169 100644 +--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h ++++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-audio.h +@@ -10,6 +10,7 @@ + int irq; + struct dw_hdmi *hdmi; + u8 *(*get_eld)(struct dw_hdmi *hdmi); ++ unsigned reg_offset; + }; + + struct dw_hdmi_i2s_audio_data { +diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +index f08d0fded61f..069984b26d99 100644 +--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c ++++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +@@ -3440,6 +3440,12 @@ + audio.irq = irq; + audio.hdmi = hdmi; + audio.get_eld = hdmi_audio_get_eld; ++ audio.reg_offset = 0; ++ if (of_device_is_compatible(np, "baikal,hdmi")) { ++ audio.reg_offset = 2; ++ dev_info(dev, "setting audio.reg_offset=%d for BE-M1000 SoC\n", ++ audio.reg_offset); ++ } + hdmi->enable_audio = dw_hdmi_ahb_audio_enable; + hdmi->disable_audio = dw_hdmi_ahb_audio_disable; + +diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile +index c8132050bcec..5885f78a635d 100644 +--- a/drivers/gpu/drm/panel/Makefile ++++ b/drivers/gpu/drm/panel/Makefile +@@ -7,6 +7,7 @@ obj-$(CONFIG_DRM_PANEL_BOE_TV101WUM_NL6) += panel-boe-tv101wum-nl6.o + obj-$(CONFIG_DRM_PANEL_DSI_CM) += panel-dsi-cm.o + obj-$(CONFIG_DRM_PANEL_LVDS) += panel-lvds.o + obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o ++obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple-dsi.o + obj-$(CONFIG_DRM_PANEL_ELIDA_KD35T133) += panel-elida-kd35t133.o + obj-$(CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02) += panel-feixin-k101-im2ba02.o + obj-$(CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D) += panel-feiyang-fy07024di26a30d.o +diff --git a/drivers/gpu/drm/panel/panel-simple-dsi.c b/drivers/gpu/drm/panel/panel-simple-dsi.c +new file mode 100644 +index 000000000000..df793e50186a +--- /dev/null ++++ b/drivers/gpu/drm/panel/panel-simple-dsi.c +@@ -0,0 +1,739 @@ ++/* ++ * Copyright (C) 2021 ++ * This simple dsi driver porting from rock-chip panel-simple.c on linux-4.4 ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include