summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO40
-rw-r--r--0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch47
-rw-r--r--99-linux.hook (renamed from 99-linux-macbook.hook)0
-rw-r--r--PKGBUILD56
-rw-r--r--apple-gmux.patch14
-rw-r--r--change-default-console-loglevel.patch11
-rw-r--r--config.i686 (renamed from config)198
-rw-r--r--config.x86_64192
-rw-r--r--intel-pstate-backport.patch1231
-rw-r--r--linux.install (renamed from linux-macbook.install)0
-rw-r--r--linux.preset (renamed from linux-macbook.preset)0
-rw-r--r--macbook-suspend.patch14
-rw-r--r--net_handle_no_dst_on_skb_in_icmp6_send.patch68
-rw-r--r--poweroff-quirk-workaround.patch2
14 files changed, 1467 insertions, 406 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 18c5e634586..1e48d2f6a27 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = linux-macbook
- pkgver = 4.9.11
- pkgrel = 2
+ pkgver = 4.10.4
+ pkgrel = 1
url = https://www.kernel.org/
arch = i686
arch = x86_64
@@ -12,42 +12,38 @@ pkgbase = linux-macbook
makedepends = bc
makedepends = libelf
options = !strip
- source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.tar.xz
- source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.tar.sign
- source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.9.11.xz
- source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.9.11.sign
- source = config
+ source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.10.tar.xz
+ source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.10.tar.sign
+ source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.10.4.xz
+ source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.10.4.sign
+ source = config.i686
source = config.x86_64
- source = 99-linux-macbook.hook
- source = linux-macbook.preset
+ source = 99-linux.hook
+ source = linux.preset
source = macbook-wakeup.service
source = apple-gmux.patch
source = macbook-suspend.patch
source = poweroff-quirk-workaround.patch
source = intel-pstate-backport.patch
- source = change-default-console-loglevel.patch
- source = 0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch
validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886
validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E
- sha256sums = 029098dcffab74875e086ae970e3828456838da6e0ba22ce3f64ef764f3d7f1a
+ sha256sums = 3c95d9f049bd085e5c346d2c77f063b8425f191460fcd3ae9fe7e94e0477dc4b
sha256sums = SKIP
- sha256sums = 23e773a670f3cac11a92c4e442405dea6d2c28fea0f914ea2ba4bea313c26541
+ sha256sums = 68e935fbe1c3faaf186824a44b79a26f1ab85f04a1dade2e5bce5f8c2941624d
sha256sums = SKIP
- sha256sums = 49ec194851a7f96fbeedddb6125bf51d0e73e949f28026dca0d9ff36fc4ce5ff
- sha256sums = 36fa6355b46655570838351a6f4b2a4904d4e1c550ce0b7a21aa5ebe1bad2d2d
+ sha256sums = 6957209a54486548de8fc217352bb50efe52986b85b7dc88c1d13ef9e8dc3e2a
+ sha256sums = 37a281f78616fee061aafa4b1189284c9e13d0eb52e40d7f446f1a50dfc99800
sha256sums = 834bd254b56ab71d73f59b3221f056c72f559553c04718e350ab2a3e2991afe0
sha256sums = ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65
sha256sums = 72f0b3ce04f33dfae305297bd045fba8cb5e5c8594ffd7a68a4d8ed293b1b1b5
- sha256sums = bb8af32880059e681396a250d8e78f600f248da8ad4f0e76d7923badb5ee8b42
- sha256sums = 896455ba219148e10c1fd19ec98f9871b384f9d0018598c1bb36ad7f3c8607c1
- sha256sums = 24f914e16f5efd13608e835ded81b4da731798737a88228fb8684f6db80f7d2c
- sha256sums = c0a25b413bc542472868c63318213dfe788beeece750d15f7ff1568aca8968ec
- sha256sums = 1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99
- sha256sums = 85954ac18da9dc1bec5df28e2f097d13016e39fa9631074f85b6364af340fcd9
+ sha256sums = e74dbeaa3fd04dbf93ef4498015234bdb65351857e07c03c00cee69fcfc844b4
+ sha256sums = 8f91c4b8b30fb0db3fdf92223618b4a399041f4be399bc8eacbbcbbe646ca678
+ sha256sums = ad800989f9cf2fd04e6db09409b9a531e883eeb825f430d14df8c6ee7870621a
+ sha256sums = 3d9fdbb4bee270efa6eef1d8e40a5ae562a87d5a2edae629e0829cc51714de13
pkgname = linux-macbook
pkgdesc = The Linux-macbook kernel and modules
- install = linux-macbook.install
+ install = linux.install
depends = coreutils
depends = linux-firmware
depends = kmod
diff --git a/0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch b/0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch
deleted file mode 100644
index 9adaf0b305f..00000000000
--- a/0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4 Mon Sep 17 00:00:00 2001
-From: Andrey Konovalov <andreyknvl@google.com>
-Date: Thu, 16 Feb 2017 17:22:46 +0100
-Subject: [PATCH] dccp: fix freeing skb too early for IPV6_RECVPKTINFO
-
-In the current DCCP implementation an skb for a DCCP_PKT_REQUEST packet
-is forcibly freed via __kfree_skb in dccp_rcv_state_process if
-dccp_v6_conn_request successfully returns.
-
-However, if IPV6_RECVPKTINFO is set on a socket, the address of the skb
-is saved to ireq->pktopts and the ref count for skb is incremented in
-dccp_v6_conn_request, so skb is still in use. Nevertheless, it gets freed
-in dccp_rcv_state_process.
-
-Fix by calling consume_skb instead of doing goto discard and therefore
-calling __kfree_skb.
-
-Similar fixes for TCP:
-
-fb7e2399ec17f1004c0e0ccfd17439f8759ede01 [TCP]: skb is unexpectedly freed.
-0aea76d35c9651d55bbaf746e7914e5f9ae5a25d tcp: SYN packets are now
-simply consumed
-
-Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
-Acked-by: Eric Dumazet <edumazet@google.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- net/dccp/input.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/net/dccp/input.c b/net/dccp/input.c
-index ba347184bda9b3fe..8fedc2d497709b3d 100644
---- a/net/dccp/input.c
-+++ b/net/dccp/input.c
-@@ -606,7 +606,8 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
- if (inet_csk(sk)->icsk_af_ops->conn_request(sk,
- skb) < 0)
- return 1;
-- goto discard;
-+ consume_skb(skb);
-+ return 0;
- }
- if (dh->dccph_type == DCCP_PKT_RESET)
- goto discard;
---
-2.11.1
-
diff --git a/99-linux-macbook.hook b/99-linux.hook
index 9851151995b..9851151995b 100644
--- a/99-linux-macbook.hook
+++ b/99-linux.hook
diff --git a/PKGBUILD b/PKGBUILD
index 472e982da71..27ee83a3564 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,12 +1,12 @@
-# Id: PKGBUILD 277473 2016-09-30 19:28:40Z tpowa $
+# $Id: PKGBUILD 291104 2017-03-20 13:40:57Z tpowa $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Maintainer: Thomas Baechler <thomas@archlinux.org>
# Maintainer: Tony Lambiris <tony@critialstack.com>
pkgbase=linux-macbook
-_srcname=linux-4.9
-pkgver=4.9.11
-pkgrel=2
+_srcname=linux-4.10
+pkgver=4.10.4
+pkgrel=1
arch=('i686' 'x86_64')
url="https://www.kernel.org/"
license=('GPL2')
@@ -17,11 +17,11 @@ source=("https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz"
"https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.xz"
"https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.sign"
# the main kernel config files
- 'config' 'config.x86_64'
+ 'config.i686' 'config.x86_64'
# pacman hook for initramfs regeneration
- '99-linux-macbook.hook'
+ '99-linux.hook'
# standard config files for mkinitcpio ramdisk
- 'linux-macbook.preset'
+ 'linux.preset'
# service file for suspend/resume events
'macbook-wakeup.service'
# macbook specific patches
@@ -29,25 +29,21 @@ source=("https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz"
'macbook-suspend.patch'
'poweroff-quirk-workaround.patch'
'intel-pstate-backport.patch'
- 'change-default-console-loglevel.patch'
- '0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch'
)
-sha256sums=('029098dcffab74875e086ae970e3828456838da6e0ba22ce3f64ef764f3d7f1a'
+sha256sums=('3c95d9f049bd085e5c346d2c77f063b8425f191460fcd3ae9fe7e94e0477dc4b'
'SKIP'
- '23e773a670f3cac11a92c4e442405dea6d2c28fea0f914ea2ba4bea313c26541'
+ '68e935fbe1c3faaf186824a44b79a26f1ab85f04a1dade2e5bce5f8c2941624d'
'SKIP'
- '49ec194851a7f96fbeedddb6125bf51d0e73e949f28026dca0d9ff36fc4ce5ff'
- '36fa6355b46655570838351a6f4b2a4904d4e1c550ce0b7a21aa5ebe1bad2d2d'
+ '6957209a54486548de8fc217352bb50efe52986b85b7dc88c1d13ef9e8dc3e2a'
+ '37a281f78616fee061aafa4b1189284c9e13d0eb52e40d7f446f1a50dfc99800'
'834bd254b56ab71d73f59b3221f056c72f559553c04718e350ab2a3e2991afe0'
'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65'
'72f0b3ce04f33dfae305297bd045fba8cb5e5c8594ffd7a68a4d8ed293b1b1b5'
- 'bb8af32880059e681396a250d8e78f600f248da8ad4f0e76d7923badb5ee8b42'
- '896455ba219148e10c1fd19ec98f9871b384f9d0018598c1bb36ad7f3c8607c1'
- '24f914e16f5efd13608e835ded81b4da731798737a88228fb8684f6db80f7d2c'
- 'c0a25b413bc542472868c63318213dfe788beeece750d15f7ff1568aca8968ec'
- '1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99'
- '85954ac18da9dc1bec5df28e2f097d13016e39fa9631074f85b6364af340fcd9')
+ 'e74dbeaa3fd04dbf93ef4498015234bdb65351857e07c03c00cee69fcfc844b4'
+ '8f91c4b8b30fb0db3fdf92223618b4a399041f4be399bc8eacbbcbbe646ca678'
+ 'ad800989f9cf2fd04e6db09409b9a531e883eeb825f430d14df8c6ee7870621a'
+ '3d9fdbb4bee270efa6eef1d8e40a5ae562a87d5a2edae629e0829cc51714de13')
validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
@@ -61,30 +57,18 @@ prepare() {
# add upstream patch
patch -p1 -i "${srcdir}/patch-${pkgver}"
- # https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6074
- patch -p1 -i "${srcdir}/0001-dccp-fix-freeing-skb-too-early-for-IPV6_RECVPKTINFO.patch"
-
# add latest fixes from stable queue, if needed
# http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
- # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
- # remove this when a Kconfig knob is made available by upstream
- # (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
- patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
-
# macbook specific patches
patch -p1 -F1 -i "${srcdir}/apple-gmux.patch"
# patch components below grabbed from https://patchwork.kernel.org/patch/9140867/
patch -p1 -F1 -i "${srcdir}/macbook-suspend.patch"
patch -p1 -F1 -i "${srcdir}/poweroff-quirk-workaround.patch"
# backported changes to the intel-pstate driver from master branch
- #patch -p1 -F3 -i "${srcdir}/intel-pstate-backport.patch"
+ #patch -p0 -F3 -i "${srcdir}/intel-pstate-backport.patch"
- if [ "${CARCH}" = "x86_64" ]; then
- cat "${srcdir}/config.x86_64" > ./.config
- else
- cat "${srcdir}/config" > ./.config
- fi
+ cat "${srcdir}/config.${CARCH}" > ./.config
if [ "${_kernelname}" != "" ]; then
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
@@ -124,7 +108,7 @@ _package() {
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
optdepends=('crda: to set the correct wireless channels of your country')
backup=("etc/mkinitcpio.d/${pkgbase}.preset")
- install=linux-macbook.install
+ install=linux.install
cd "${srcdir}/${_srcname}"
@@ -145,11 +129,11 @@ _package() {
true && install=${install}.pkg
# install mkinitcpio preset file for kernel
- sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/linux-macbook.preset" |
+ sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/linux.preset" |
install -D -m644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
# install pacman hook for initramfs regeneration
- sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/99-linux-macbook.hook" |
+ sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/99-linux.hook" |
install -D -m644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/99-${pkgbase}.hook"
# remove build and source links
diff --git a/apple-gmux.patch b/apple-gmux.patch
index f1a0621580a..ce1f8671763 100644
--- a/apple-gmux.patch
+++ b/apple-gmux.patch
@@ -1,24 +1,24 @@
---- a/drivers/platform/x86/apple-gmux.c
-+++ a/drivers/platform/x86/apple-gmux.c
+--- a/drivers/platform/x86/apple-gmux.c
++++ a/drivers/platform/x86/apple-gmux.c
@@ -419,6 +419,7 @@ static int gmux_resume(struct device *dev)
-
+
static struct pci_dev *gmux_get_io_pdev(void)
{
+ struct pci_dev *igp = NULL, *dgp = NULL;
struct pci_dev *pdev = NULL;
-
+
while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, pdev))) {
@@ -428,10 +429,18 @@ static struct pci_dev *gmux_get_io_pdev(void)
if (!(cmd & PCI_COMMAND_IO))
continue;
-
+
- return pdev;
+ if (pdev->bus && pdev->bus->number > 0 && !dgp)
+ dgp = pci_dev_get(pdev);
+ else if (pdev->bus && pdev->bus->number == 0 && !igp)
+ igp = pci_dev_get(pdev);
}
-
+
- return NULL;
+ if (dgp && !igp)
+ pr_warn("Found only discrete GPU %s, integrated GPU is hidden,"
@@ -27,5 +27,5 @@
+ pci_dev_put(dgp);
+ return igp;
}
-
+
static int gmux_probe(struct pnp_dev *pnp, const struct pnp_device_id *id)
diff --git a/change-default-console-loglevel.patch b/change-default-console-loglevel.patch
deleted file mode 100644
index 11da2a9d8ba..00000000000
--- a/change-default-console-loglevel.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux-3.16/include/linux/printk.h.old 2014-08-04 18:48:30.686043266 +0200
-+++ linux-3.16/include/linux/printk.h 2014-08-04 18:48:47.706218528 +0200
-@@ -37,7 +37,7 @@
- #define CONSOLE_LOGLEVEL_SILENT 0 /* Mum's the word */
- #define CONSOLE_LOGLEVEL_MIN 1 /* Minimum loglevel we let people use */
- #define CONSOLE_LOGLEVEL_QUIET 4 /* Shhh ..., when booted with "quiet" */
--#define CONSOLE_LOGLEVEL_DEFAULT 7 /* anything MORE serious than KERN_DEBUG */
-+#define CONSOLE_LOGLEVEL_DEFAULT 4 /* anything MORE serious than KERN_DEBUG */
- #define CONSOLE_LOGLEVEL_DEBUG 10 /* issue debug messages */
- #define CONSOLE_LOGLEVEL_MOTORMOUTH 15 /* You can't shut this one up */
-
diff --git a/config b/config.i686
index a9fa229d82c..114327a99c5 100644
--- a/config
+++ b/config.i686
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.9.5-1 Kernel Configuration
+# Linux/x86 4.10.0-1 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -159,7 +159,9 @@ CONFIG_PROC_PID_CPUSET=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_BPF=y
# CONFIG_CGROUP_DEBUG is not set
+CONFIG_SOCK_CGROUP_DATA=y
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
@@ -178,6 +180,7 @@ CONFIG_RD_LZMA=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
+CONFIG_INITRAMFS_COMPRESSION=".gz"
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
@@ -192,6 +195,7 @@ CONFIG_MULTIUSER=y
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_POSIX_TIMERS=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
@@ -323,8 +327,12 @@ CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_ZONED=y
CONFIG_BLK_DEV_THROTTLING=y
# CONFIG_BLK_CMDLINE_PARSER is not set
+CONFIG_BLK_WBT=y
+CONFIG_BLK_WBT_SQ=y
+CONFIG_BLK_WBT_MQ=y
#
# Partition Types
@@ -387,6 +395,7 @@ CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_MPPARSE=y
# CONFIG_X86_BIGSMP is not set
# CONFIG_GOLDFISH is not set
+CONFIG_INTEL_RDT_A=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_X86_INTEL_LPSS=y
CONFIG_X86_AMD_PLATFORM_DEVICE=y
@@ -451,6 +460,7 @@ CONFIG_DMI=y
CONFIG_NR_CPUS=8
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
+CONFIG_SCHED_MC_PRIO=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
@@ -822,6 +832,7 @@ CONFIG_HAVE_AOUT=y
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y
+CONFIG_COMPAT_32=y
CONFIG_HAVE_ATOMIC_IOMAP=y
CONFIG_PMC_ATOM=y
CONFIG_NET=y
@@ -878,6 +889,7 @@ CONFIG_INET_XFRM_MODE_BEET=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
@@ -928,6 +940,9 @@ 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_INLINE is not set
+CONFIG_IPV6_SEG6_HMAC=y
CONFIG_NETLABEL=y
CONFIG_NETWORK_SECMARK=y
CONFIG_NET_PTP_CLASSIFY=y
@@ -947,6 +962,7 @@ CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_LOG_COMMON=m
+CONFIG_NF_LOG_NETDEV=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_ZONES=y
@@ -955,10 +971,10 @@ 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=m
+CONFIG_NF_CT_PROTO_DCCP=y
CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
+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
@@ -976,9 +992,9 @@ CONFIG_NF_CT_NETLINK_HELPER=m
CONFIG_NETFILTER_NETLINK_GLUE_CT=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_PROTO_DCCP=y
+CONFIG_NF_NAT_PROTO_UDPLITE=y
+CONFIG_NF_NAT_PROTO_SCTP=y
CONFIG_NF_NAT_AMANDA=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
@@ -991,6 +1007,7 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m
+CONFIG_NFT_RT=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_SET_RBTREE=m
@@ -1001,12 +1018,15 @@ CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=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_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
@@ -1107,6 +1127,7 @@ 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
@@ -1162,10 +1183,12 @@ CONFIG_IP_VS_PE_SIP=m
#
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TABLES_IPV4=m
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
@@ -1207,10 +1230,12 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
@@ -1458,7 +1483,6 @@ CONFIG_NET_NCSI=y
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
-CONFIG_SOCK_CGROUP_DATA=y
# CONFIG_CGROUP_NET_PRIO is not set
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
@@ -1747,6 +1771,7 @@ CONFIG_NFC_ST_NCI_I2C=m
# CONFIG_NFC_S3FWRN5_I2C is not set
# CONFIG_NFC_ST95HF is not set
CONFIG_LWTUNNEL=y
+CONFIG_LWTUNNEL_BPF=y
CONFIG_DST_CACHE=y
CONFIG_NET_DEVLINK=m
CONFIG_MAY_USE_DEVLINK=m
@@ -1774,6 +1799,7 @@ 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_SYS_HYPERVISOR is not set
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
@@ -1784,7 +1810,7 @@ CONFIG_REGMAP_SPMI=m
CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
CONFIG_DMA_SHARED_BUFFER=y
-# CONFIG_FENCE_TRACE is not set
+# CONFIG_DMA_FENCE_TRACE is not set
#
# Bus devices
@@ -1966,9 +1992,12 @@ CONFIG_BLK_DEV_NVME=m
# CONFIG_BLK_DEV_NVME_SCSI is not set
CONFIG_NVME_FABRICS=m
CONFIG_NVME_RDMA=m
+CONFIG_NVME_FC=m
CONFIG_NVME_TARGET=m
CONFIG_NVME_TARGET_LOOP=m
CONFIG_NVME_TARGET_RDMA=m
+CONFIG_NVME_TARGET_FC=m
+# CONFIG_NVME_TARGET_FCLOOP is not set
#
# Misc devices
@@ -2183,7 +2212,6 @@ CONFIG_SCSI_FUTURE_DOMAIN=m
CONFIG_SCSI_GDTH=m
CONFIG_SCSI_ISCI=m
CONFIG_SCSI_GENERIC_NCR5380=m
-CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INITIO=m
CONFIG_SCSI_INIA100=m
@@ -2207,6 +2235,7 @@ CONFIG_SCSI_QLA_FC=m
CONFIG_TCM_QLA2XXX=m
# CONFIG_TCM_QLA2XXX_DEBUG is not set
CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_QEDI=m
CONFIG_SCSI_LPFC=m
# CONFIG_SCSI_LPFC_DEBUG_FS is not set
CONFIG_SCSI_SYM53C416=m
@@ -2359,7 +2388,7 @@ CONFIG_BLK_DEV_DM=m
# CONFIG_DM_MQ_DEFAULT is not set
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
CONFIG_DM_CRYPT=m
@@ -2510,6 +2539,8 @@ CONFIG_NET_VENDOR_ADAPTEC=y
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_NET_VENDOR_AGERE=y
CONFIG_ET131X=m
+CONFIG_NET_VENDOR_ALACRITECH=y
+CONFIG_SLICOSS=m
CONFIG_NET_VENDOR_ALTEON=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
@@ -2522,9 +2553,9 @@ CONFIG_LANCE=m
CONFIG_PCNET32=m
CONFIG_PCMCIA_NMCLAN=m
CONFIG_NI65=m
+CONFIG_AMD_XGBE=m
+CONFIG_AMD_XGBE_HAVE_ECC=y
CONFIG_NET_VENDOR_ARC=y
-CONFIG_ARC_EMAC_CORE=m
-CONFIG_ARC_EMAC=m
CONFIG_NET_VENDOR_ATHEROS=y
CONFIG_ATL2=m
CONFIG_ATL1=m
@@ -2535,6 +2566,7 @@ CONFIG_NET_VENDOR_AURORA=y
CONFIG_AURORA_NB8800=m
CONFIG_NET_CADENCE=y
CONFIG_MACB=m
+CONFIG_MACB_PCI=m
CONFIG_NET_VENDOR_BROADCOM=y
CONFIG_B44=m
CONFIG_B44_PCI_AUTOSELECT=y
@@ -2628,9 +2660,13 @@ CONFIG_MLX5_CORE=m
CONFIG_MLX5_CORE_EN=y
CONFIG_MLXSW_CORE=m
CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_CORE_THERMAL=y
CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_I2C=m
+CONFIG_MLXSW_SWITCHIB=m
CONFIG_MLXSW_SWITCHX2=m
CONFIG_MLXSW_SPECTRUM=m
+CONFIG_MLXSW_MINIMAL=m
CONFIG_NET_VENDOR_MICREL=y
CONFIG_KS8842=m
CONFIG_KS8851=m
@@ -2672,8 +2708,10 @@ CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
CONFIG_QED=m
+CONFIG_QED_LL2=y
CONFIG_QED_SRIOV=y
CONFIG_QEDE=m
+CONFIG_QED_ISCSI=y
CONFIG_NET_VENDOR_QUALCOMM=y
CONFIG_QCA7000=m
CONFIG_QCOM_EMAC=m
@@ -2699,11 +2737,14 @@ CONFIG_SC92031=m
CONFIG_NET_VENDOR_SIS=y
CONFIG_SIS900=m
CONFIG_SIS190=m
+CONFIG_NET_VENDOR_SOLARFLARE=y
CONFIG_SFC=m
CONFIG_SFC_MTD=y
CONFIG_SFC_MCDI_MON=y
CONFIG_SFC_SRIOV=y
CONFIG_SFC_MCDI_LOGGING=y
+CONFIG_SFC_FALCON=m
+CONFIG_SFC_FALCON_MTD=y
CONFIG_NET_VENDOR_SMSC=y
CONFIG_SMC9194=m
CONFIG_PCMCIA_SMC91C92=m
@@ -2745,6 +2786,7 @@ CONFIG_PCMCIA_XIRC2PS=m
CONFIG_NET_SB1000=m
CONFIG_PHYLIB=m
CONFIG_SWPHY=y
+CONFIG_LED_TRIGGER_PHY=y
#
# MDIO bus device drivers
@@ -3526,11 +3568,16 @@ CONFIG_INPUT_SOC_BUTTON_ARRAY=m
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=y
CONFIG_RMI4_F54=y
+CONFIG_RMI4_F55=y
#
# Hardware I/O ports
@@ -3679,6 +3726,7 @@ CONFIG_SONYPI=m
CONFIG_SYNCLINK_CS=m
CONFIG_CARDMAN_4000=m
CONFIG_CARDMAN_4040=m
+CONFIG_SCR24X=m
CONFIG_IPWIRELESS=m
CONFIG_MWAVE=m
CONFIG_PC8736x_GPIO=m
@@ -3727,6 +3775,7 @@ CONFIG_I2C_MUX_PCA954x=m
# 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
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=m
@@ -3877,6 +3926,7 @@ CONFIG_GENERIC_PINCONF=y
# CONFIG_DEBUG_PINCTRL is not set
# CONFIG_PINCTRL_AMD is not set
# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL_BAYTRAIL=y
CONFIG_PINCTRL_CHERRYVIEW=y
CONFIG_PINCTRL_INTEL=y
@@ -3904,7 +3954,6 @@ CONFIG_GPIO_LYNXPOINT=y
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_VX855 is not set
# CONFIG_GPIO_XILINX is not set
-# CONFIG_GPIO_ZX is not set
#
# Port-mapped I/O GPIO drivers
@@ -3930,7 +3979,6 @@ CONFIG_GPIO_SCH311X=m
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_SX150X is not set
# CONFIG_GPIO_TPIC2810 is not set
-# CONFIG_GPIO_TS4900 is not set
#
# MFD GPIO expanders
@@ -4085,6 +4133,7 @@ CONFIG_SENSORS_MAX6650=m
CONFIG_SENSORS_MAX6697=m
CONFIG_SENSORS_MAX31790=m
CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_TC654=m
CONFIG_SENSORS_ADCXX=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM70=m
@@ -4153,6 +4202,7 @@ 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_VIA_CPUTEMP=m
@@ -4169,6 +4219,7 @@ CONFIG_SENSORS_W83L785TS=m
CONFIG_SENSORS_W83L786NG=m
CONFIG_SENSORS_W83627HF=m
CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_XGENE=m
#
# ACPI drivers
@@ -4349,7 +4400,6 @@ CONFIG_MFD_CROS_EC_SPI=m
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_DLN2 is not set
-# CONFIG_MFD_EXYNOS_LPASS is not set
CONFIG_MFD_MC13XXX=m
# CONFIG_MFD_MC13XXX_SPI is not set
CONFIG_MFD_MC13XXX_I2C=m
@@ -4453,6 +4503,8 @@ CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_RADIO_SUPPORT=y
CONFIG_MEDIA_SDR_SUPPORT=y
CONFIG_MEDIA_RC_SUPPORT=y
+CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_MEDIA_CEC_DEBUG=y
CONFIG_MEDIA_CEC_EDID=y
CONFIG_MEDIA_CONTROLLER=y
# CONFIG_MEDIA_CONTROLLER_DVB is not set
@@ -4480,6 +4532,7 @@ CONFIG_DVB_NET=y
CONFIG_TTPCI_EEPROM=m
CONFIG_DVB_MAX_ADAPTERS=8
# CONFIG_DVB_DYNAMIC_MINORS is not set
+# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
#
# Media drivers
@@ -4515,6 +4568,8 @@ CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_SERIAL=m
+CONFIG_IR_SERIAL_TRANSMITTER=y
CONFIG_MEDIA_USB_SUPPORT=y
#
@@ -4678,6 +4733,11 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_USB_AIRSPY=m
CONFIG_USB_HACKRF=m
CONFIG_USB_MSI2500=m
+
+#
+# USB HDMI CEC adapters
+#
+CONFIG_USB_PULSE8_CEC=m
CONFIG_MEDIA_PCI_SUPPORT=y
#
@@ -5124,6 +5184,8 @@ CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
CONFIG_DRM_TTM=m
+CONFIG_DRM_GEM_CMA_HELPER=y
+CONFIG_DRM_KMS_CMA_HELPER=y
#
# I2C encoder or helper chips
@@ -5148,9 +5210,10 @@ CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
CONFIG_DRM_I915=m
-# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
+# CONFIG_DRM_I915_ALPHA_SUPPORT is not set
+CONFIG_DRM_I915_CAPTURE_ERROR=y
+CONFIG_DRM_I915_COMPRESS_ERROR=y
CONFIG_DRM_I915_USERPTR=y
-CONFIG_DRM_I915_GVT=y
CONFIG_DRM_VGEM=m
CONFIG_DRM_VMWGFX=m
CONFIG_DRM_VMWGFX_FBCON=y
@@ -5186,11 +5249,17 @@ CONFIG_DRM_ANALOGIX_ANX78XX=m
# CONFIG_DRM_DUMB_VGA_DAC 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_TOSHIBA_TC358767 is not set
+# CONFIG_DRM_TI_TFP410 is not set
CONFIG_DRM_I2C_ADV7511=m
+CONFIG_DRM_I2C_ADV7511_AUDIO=y
# CONFIG_DRM_I2C_ADV7533 is not set
# CONFIG_DRM_ARCPGU is not set
+CONFIG_DRM_HISI_HIBMC=m
+CONFIG_DRM_MXS=y
+CONFIG_DRM_MXSFB=m
# CONFIG_DRM_LEGACY is not set
#
@@ -5615,6 +5684,8 @@ CONFIG_SND_SOC_AC97_CODEC=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_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
@@ -5637,6 +5708,8 @@ CONFIG_SND_SOC_MAX98090=m
CONFIG_SND_SOC_MAX98357A=m
# CONFIG_SND_SOC_MAX98504 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_PCM179X_I2C is not set
# CONFIG_SND_SOC_PCM179X_SPI is not set
@@ -5653,7 +5726,6 @@ CONFIG_SND_SOC_RT298=m
CONFIG_SND_SOC_RT5640=m
CONFIG_SND_SOC_RT5645=m
CONFIG_SND_SOC_RT5651=m
-CONFIG_SND_SOC_RT5663=m
CONFIG_SND_SOC_RT5670=m
CONFIG_SND_SOC_RT5677=m
CONFIG_SND_SOC_RT5677_SPI=m
@@ -5764,6 +5836,7 @@ CONFIG_LOGIRUMBLEPAD2_FF=y
CONFIG_LOGIG940_FF=y
CONFIG_LOGIWHEELS_FF=y
CONFIG_HID_MAGICMOUSE=m
+CONFIG_HID_MAYFLASH=m
CONFIG_HID_MICROSOFT=m
CONFIG_HID_MONTEREY=m
CONFIG_HID_MULTITOUCH=m
@@ -5800,6 +5873,7 @@ CONFIG_HID_TOPSEED=m
CONFIG_HID_THINGM=m
CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
+CONFIG_HID_UDRAW_PS3=m
CONFIG_HID_WACOM=m
CONFIG_HID_WIIMOTE=m
CONFIG_HID_XINMO=m
@@ -5957,6 +6031,7 @@ 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
@@ -6049,10 +6124,6 @@ CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
CONFIG_PWRSEQ_EMMC=m
CONFIG_PWRSEQ_SIMPLE=m
-
-#
-# MMC/SD/SDIO Card Drivers
-#
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_BLOCK_BOUNCE=y
@@ -6069,6 +6140,7 @@ CONFIG_MMC_SDHCI_ACPI=m
CONFIG_MMC_SDHCI_PLTFM=m
CONFIG_MMC_SDHCI_OF_ARASAN=m
# CONFIG_MMC_SDHCI_OF_AT91 is not set
+CONFIG_MMC_SDHCI_CADENCE=m
# CONFIG_MMC_SDHCI_F_SDH30 is not set
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
@@ -6145,6 +6217,8 @@ CONFIG_LEDS_KTD2692=m
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
#
CONFIG_LEDS_BLINKM=m
+CONFIG_LEDS_USER=m
+CONFIG_LEDS_NIC78BX=m
#
# LED Triggers
@@ -6186,6 +6260,7 @@ CONFIG_MLX5_INFINIBAND=m
CONFIG_INFINIBAND_NES=m
# CONFIG_INFINIBAND_NES_DEBUG is not set
CONFIG_INFINIBAND_OCRDMA=m
+CONFIG_INFINIBAND_VMWARE_PVRDMA=m
CONFIG_INFINIBAND_USNIC=m
CONFIG_INFINIBAND_IPOIB=m
CONFIG_INFINIBAND_IPOIB_CM=y
@@ -6333,6 +6408,7 @@ CONFIG_RTC_DRV_ZYNQMP=m
#
CONFIG_RTC_DRV_MC13XXX=m
CONFIG_RTC_DRV_SNVS=m
+CONFIG_RTC_DRV_R7301=m
#
# HID Sensor RTC drivers
@@ -6376,6 +6452,7 @@ CONFIG_KS0108_DELAY=2
CONFIG_CFAG12864B=m
CONFIG_CFAG12864B_RATE=20
# CONFIG_IMG_ASCII_LCD is not set
+# CONFIG_HT16K33 is not set
CONFIG_UIO=m
CONFIG_UIO_CIF=m
CONFIG_UIO_PDRV_GENIRQ=m
@@ -6386,6 +6463,7 @@ CONFIG_UIO_PCI_GENERIC=m
CONFIG_UIO_NETX=m
CONFIG_UIO_PRUSS=m
# CONFIG_UIO_MF624 is not set
+CONFIG_UIO_HV_GENERIC=m
CONFIG_VFIO_IOMMU_TYPE1=m
CONFIG_VFIO_VIRQFD=m
CONFIG_VFIO=m
@@ -6395,6 +6473,8 @@ CONFIG_VFIO_PCI_VGA=y
CONFIG_VFIO_PCI_MMAP=y
CONFIG_VFIO_PCI_INTX=y
CONFIG_VFIO_PCI_IGD=y
+CONFIG_VFIO_MDEV=m
+CONFIG_VFIO_MDEV_DEVICE=m
CONFIG_IRQ_BYPASS_MANAGER=m
CONFIG_VIRT_DRIVERS=y
CONFIG_VIRTIO=m
@@ -6416,7 +6496,6 @@ CONFIG_HYPERV=m
CONFIG_HYPERV_UTILS=m
CONFIG_HYPERV_BALLOON=m
CONFIG_STAGING=y
-CONFIG_SLICOSS=m
CONFIG_PRISM2_USB=m
CONFIG_COMEDI=m
# CONFIG_COMEDI_DEBUG is not set
@@ -6584,7 +6663,6 @@ CONFIG_VT6656=m
# CONFIG_ADIS16203 is not set
# CONFIG_ADIS16209 is not set
# CONFIG_ADIS16240 is not set
-# CONFIG_SCA3000 is not set
#
# Analog to digital converters
@@ -6626,9 +6704,7 @@ CONFIG_VT6656=m
#
# Light sensors
#
-# CONFIG_SENSORS_ISL29018 is not set
# CONFIG_SENSORS_ISL29028 is not set
-# CONFIG_TSL2583 is not set
# CONFIG_TSL2x7x is not set
#
@@ -6674,15 +6750,12 @@ CONFIG_SPEAKUP_SYNTH_TXPRT=m
CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_STAGING_MEDIA=y
CONFIG_I2C_BCM2048=m
-# CONFIG_MEDIA_CEC is not set
CONFIG_DVB_CXD2099=m
CONFIG_LIRC_STAGING=y
CONFIG_LIRC_BT829=m
CONFIG_LIRC_IMON=m
CONFIG_LIRC_PARALLEL=m
CONFIG_LIRC_SASEM=m
-CONFIG_LIRC_SERIAL=m
-CONFIG_LIRC_SERIAL_TRANSMITTER=y
CONFIG_LIRC_SIR=m
CONFIG_LIRC_ZILOG=m
@@ -6741,6 +6814,7 @@ CONFIG_COMPAL_LAPTOP=m
CONFIG_SONY_LAPTOP=m
# CONFIG_SONYPI_COMPAT is not set
CONFIG_IDEAPAD_LAPTOP=m
+CONFIG_SURFACE3_WMI=m
CONFIG_THINKPAD_ACPI=m
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
@@ -6779,8 +6853,11 @@ CONFIG_INTEL_RST=m
CONFIG_INTEL_SMARTCONNECT=m
CONFIG_PVPANIC=m
CONFIG_INTEL_PMC_IPC=m
+CONFIG_INTEL_BXTWC_PMIC_TMU=m
CONFIG_SURFACE_PRO3_BUTTON=m
+CONFIG_SURFACE_3_BUTTON=m
CONFIG_INTEL_PUNIT_IPC=m
+# CONFIG_MLX_CPLD_PLATFORM is not set
CONFIG_CHROME_PLATFORMS=y
CONFIG_CHROMEOS_LAPTOP=m
CONFIG_CHROMEOS_PSTORE=m
@@ -6806,6 +6883,13 @@ CONFIG_COMMON_CLK_RK808=m
# CONFIG_COMMON_CLK_PWM is not set
# CONFIG_COMMON_CLK_PXA is not set
# CONFIG_COMMON_CLK_PIC32 is not set
+# CONFIG_COMMON_CLK_MT2701 is not set
+# CONFIG_COMMON_CLK_MT2701_MMSYS is not set
+# CONFIG_COMMON_CLK_MT2701_IMGSYS is not set
+# CONFIG_COMMON_CLK_MT2701_VDECSYS is not set
+# CONFIG_COMMON_CLK_MT2701_HIFSYS is not set
+# CONFIG_COMMON_CLK_MT2701_ETHSYS is not set
+# CONFIG_COMMON_CLK_MT2701_BDPSYS is not set
#
# Hardware Spinlock drivers
@@ -6823,7 +6907,11 @@ CONFIG_CLKBLD_I8253=y
# CONFIG_SH_TIMER_MTU2 is not set
# CONFIG_SH_TIMER_TMU is not set
# CONFIG_EM_TIMER_STI is not set
-# CONFIG_MAILBOX is not set
+CONFIG_MAILBOX=y
+# CONFIG_PLATFORM_MHU is not set
+CONFIG_PCC=y
+# CONFIG_ALTERA_MBOX is not set
+# CONFIG_MAILBOX_TEST is not set
CONFIG_IOMMU_API=y
CONFIG_IOMMU_SUPPORT=y
@@ -6842,7 +6930,6 @@ CONFIG_INTEL_IOMMU_FLOPPY_WA=y
# Remoteproc drivers
#
CONFIG_REMOTEPROC=m
-CONFIG_STE_MODEM_RPROC=m
#
# Rpmsg drivers
@@ -6903,8 +6990,11 @@ CONFIG_IIO_SW_TRIGGER=m
# CONFIG_BMA180 is not set
# CONFIG_BMA220 is not set
# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DA280 is not set
+# CONFIG_DA311 is not set
# CONFIG_DMARD06 is not set
# CONFIG_DMARD09 is not set
+# CONFIG_DMARD10 is not set
CONFIG_HID_SENSOR_ACCEL_3D=m
CONFIG_IIO_ST_ACCEL_3AXIS=m
CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
@@ -6920,6 +7010,7 @@ CONFIG_MMA7660=m
# CONFIG_MMA9553 is not set
# CONFIG_MXC4005 is not set
# CONFIG_MXC6255 is not set
+# CONFIG_SCA3000 is not set
# CONFIG_STK8312 is not set
# CONFIG_STK8BA50 is not set
@@ -6930,11 +7021,13 @@ CONFIG_MMA7660=m
# CONFIG_AD7291 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7476 is not set
+# CONFIG_AD7766 is not set
# CONFIG_AD7791 is not set
# CONFIG_AD7793 is not set
# CONFIG_AD7887 is not set
# CONFIG_AD7923 is not set
# CONFIG_AD799X is not set
+# CONFIG_ENVELOPE_DETECTOR is not set
# CONFIG_HI8435 is not set
# CONFIG_INA2XX_ADC is not set
# CONFIG_LTC2485 is not set
@@ -6968,6 +7061,8 @@ CONFIG_MMA7660=m
# CONFIG_ATLAS_PH_SENSOR is not set
# CONFIG_IAQCORE is not set
# CONFIG_VZ89X is not set
+CONFIG_IIO_CROS_EC_SENSORS_CORE=m
+CONFIG_IIO_CROS_EC_SENSORS=m
#
# Hid Sensor IIO Common
@@ -6984,6 +7079,11 @@ CONFIG_IIO_ST_SENSORS_SPI=m
CONFIG_IIO_ST_SENSORS_CORE=m
#
+# Counters
+#
+# CONFIG_104_QUAD_8 is not set
+
+#
# Digital to analog converters
#
# CONFIG_AD5064 is not set
@@ -7004,6 +7104,7 @@ CONFIG_IIO_ST_SENSORS_CORE=m
# CONFIG_AD7303 is not set
# CONFIG_CIO_DAC is not set
# CONFIG_AD8801 is not set
+# CONFIG_DPOT_DAC is not set
# CONFIG_M62332 is not set
# CONFIG_MAX517 is not set
# CONFIG_MAX5821 is not set
@@ -7062,6 +7163,7 @@ CONFIG_MAX30100=m
# CONFIG_AM2315 is not set
# CONFIG_DHT11 is not set
# CONFIG_HDC100X is not set
+# CONFIG_HTS221 is not set
# CONFIG_HTU21 is not set
# CONFIG_SI7005 is not set
# CONFIG_SI7020 is not set
@@ -7093,6 +7195,7 @@ CONFIG_BH1780=m
# CONFIG_CM3323 is not set
# CONFIG_CM36651 is not set
# CONFIG_GP2AP020A00F is not set
+# CONFIG_SENSORS_ISL29018 is not set
# CONFIG_ISL29125 is not set
CONFIG_HID_SENSOR_ALS=m
# CONFIG_HID_SENSOR_PROX is not set
@@ -7108,6 +7211,7 @@ CONFIG_STK3310=m
# CONFIG_TCS3414 is not set
# CONFIG_TCS3472 is not set
# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_TSL2583 is not set
# CONFIG_TSL4531 is not set
# CONFIG_US5182D is not set
# CONFIG_VCNL4000 is not set
@@ -7155,8 +7259,14 @@ CONFIG_IIO_TIGHTLOOP_TRIGGER=m
# CONFIG_TPL0102 is not set
#
+# Digital potentiostats
+#
+# CONFIG_LMP91000 is not set
+
+#
# Pressure sensors
#
+# CONFIG_ABP060MG is not set
# CONFIG_BMP280 is not set
# CONFIG_HID_SENSOR_PRESS is not set
# CONFIG_HP03 is not set
@@ -7217,6 +7327,7 @@ CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_SUNXI is not set
# CONFIG_TI_SYSCON_RESET is not set
# CONFIG_RESET_ZYNQ is not set
+# CONFIG_RESET_TEGRA_BPMP is not set
CONFIG_FMC=m
CONFIG_FMC_FAKEDEV=m
CONFIG_FMC_TRIVIAL=m
@@ -7252,6 +7363,7 @@ CONFIG_STM=m
# CONFIG_STM_DUMMY is not set
CONFIG_STM_SOURCE_CONSOLE=m
CONFIG_STM_SOURCE_HEARTBEAT=m
+CONFIG_STM_SOURCE_FTRACE=m
CONFIG_INTEL_TH=m
CONFIG_INTEL_TH_PCI=m
CONFIG_INTEL_TH_GTH=m
@@ -7268,6 +7380,7 @@ CONFIG_INTEL_TH_PTI=m
#
# Firmware Drivers
#
+# CONFIG_ARM_SCPI_PROTOCOL is not set
CONFIG_EDD=m
# CONFIG_EDD_OFF is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -7292,7 +7405,13 @@ CONFIG_EFI_RUNTIME_MAP=y
CONFIG_EFI_RUNTIME_WRAPPERS=y
CONFIG_EFI_CAPSULE_LOADER=m
# CONFIG_EFI_TEST is not set
+CONFIG_APPLE_PROPERTIES=y
CONFIG_UEFI_CPER=y
+CONFIG_EFI_DEV_PATH_PARSER=y
+
+#
+# Tegra firmware driver
+#
#
# File systems
@@ -7376,6 +7495,7 @@ CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=m
CONFIG_CUSE=m
CONFIG_OVERLAY_FS=m
+CONFIG_OVERLAY_FS_REDIRECT_DIR=y
#
# Caches
@@ -7458,7 +7578,7 @@ CONFIG_UBIFS_FS=m
CONFIG_UBIFS_FS_LZO=y
CONFIG_UBIFS_FS_ZLIB=y
CONFIG_UBIFS_ATIME_SUPPORT=y
-CONFIG_LOGFS=m
+CONFIG_UBIFS_FS_ENCRYPTION=y
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
# CONFIG_SQUASHFS_FILE_CACHE is not set
@@ -7631,6 +7751,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# printk and dmesg options
#
CONFIG_PRINTK_TIME=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_BOOT_PRINTK_DELAY is not set
CONFIG_DYNAMIC_DEBUG=y
@@ -7824,6 +7945,7 @@ CONFIG_TEST_KSTRTOX=m
# CONFIG_TEST_UDELAY is not set
# CONFIG_MEMTEST is not set
# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
@@ -7920,6 +8042,7 @@ CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_AKCIPHER=m
CONFIG_CRYPTO_KPP2=y
CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_ACOMP2=y
CONFIG_CRYPTO_RSA=m
CONFIG_CRYPTO_DH=m
CONFIG_CRYPTO_ECDH=m
@@ -7937,6 +8060,7 @@ CONFIG_CRYPTO_MCRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ABLK_HELPER=m
+CONFIG_CRYPTO_SIMD=m
CONFIG_CRYPTO_GLUE_HELPER_X86=m
#
@@ -7964,7 +8088,7 @@ CONFIG_CRYPTO_KEYWRAP=m
# Hash modes
#
CONFIG_CRYPTO_CMAC=m
-CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_VMAC=m
@@ -7985,8 +8109,8 @@ CONFIG_CRYPTO_RMD128=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RMD256=m
CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_SHA3=m
CONFIG_CRYPTO_TGR192=m
@@ -8052,6 +8176,7 @@ CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
CONFIG_CRYPTO_DEV_GEODE=m
CONFIG_CRYPTO_DEV_HIFN_795X=m
CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set
CONFIG_CRYPTO_DEV_CCP=y
CONFIG_CRYPTO_DEV_CCP_DD=m
CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
@@ -8063,6 +8188,7 @@ CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_CRYPTO_DEV_CHELSIO=m
+CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
CONFIG_X509_CERTIFICATE_PARSER=m
diff --git a/config.x86_64 b/config.x86_64
index a3b5af62763..547d33abb5d 100644
--- a/config.x86_64
+++ b/config.x86_64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.9.5-1 Kernel Configuration
+# Linux/x86 4.10.0-1 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
@@ -168,7 +168,9 @@ CONFIG_PROC_PID_CPUSET=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_BPF=y
# CONFIG_CGROUP_DEBUG is not set
+CONFIG_SOCK_CGROUP_DATA=y
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
@@ -187,6 +189,7 @@ CONFIG_RD_LZMA=y
CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
+CONFIG_INITRAMFS_COMPRESSION=".gz"
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
@@ -201,6 +204,7 @@ CONFIG_MULTIUSER=y
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_POSIX_TIMERS=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
@@ -340,8 +344,12 @@ CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_ZONED=y
CONFIG_BLK_DEV_THROTTLING=y
# CONFIG_BLK_CMDLINE_PARSER is not set
+CONFIG_BLK_WBT=y
+CONFIG_BLK_WBT_SQ=y
+CONFIG_BLK_WBT_MQ=y
#
# Partition Types
@@ -405,6 +413,7 @@ CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
# CONFIG_GOLDFISH is not set
+CONFIG_INTEL_RDT_A=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_X86_INTEL_LPSS=y
CONFIG_X86_AMD_PLATFORM_DEVICE=y
@@ -456,6 +465,7 @@ CONFIG_IOMMU_HELPER=y
CONFIG_NR_CPUS=128
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
+CONFIG_SCHED_MC_PRIO=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
@@ -586,6 +596,8 @@ CONFIG_HZ_300=y
CONFIG_HZ=300
CONFIG_SCHED_HRTICK=y
CONFIG_KEXEC=y
+CONFIG_KEXEC_FILE=y
+# CONFIG_KEXEC_VERIFY_SIG is not set
CONFIG_CRASH_DUMP=y
CONFIG_KEXEC_JUMP=y
CONFIG_PHYSICAL_START=0x1000000
@@ -650,6 +662,7 @@ CONFIG_ACPI_DOCK=y
CONFIG_ACPI_CPU_FREQ_PSS=y
CONFIG_ACPI_PROCESSOR_CSTATE=y
CONFIG_ACPI_PROCESSOR_IDLE=y
+CONFIG_ACPI_CPPC_LIB=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_IPMI=m
CONFIG_ACPI_HOTPLUG_CPU=y
@@ -737,12 +750,6 @@ CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_INTEL_IDLE=y
#
-# Memory power savings
-#
-CONFIG_I7300_IDLE_IOAT_CHANNEL=y
-CONFIG_I7300_IDLE=m
-
-#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
@@ -826,6 +833,7 @@ CONFIG_COREDUMP=y
CONFIG_IA32_EMULATION=y
# CONFIG_IA32_AOUT is not set
# CONFIG_X86_X32 is not set
+CONFIG_COMPAT_32=y
CONFIG_COMPAT=y
CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
CONFIG_SYSVIPC_COMPAT=y
@@ -887,6 +895,7 @@ CONFIG_INET_XFRM_MODE_BEET=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
@@ -937,6 +946,9 @@ 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_INLINE is not set
+CONFIG_IPV6_SEG6_HMAC=y
CONFIG_NETLABEL=y
CONFIG_NETWORK_SECMARK=y
CONFIG_NET_PTP_CLASSIFY=y
@@ -956,6 +968,7 @@ CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_LOG_COMMON=m
+CONFIG_NF_LOG_NETDEV=m
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_ZONES=y
@@ -964,10 +977,10 @@ 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=m
+CONFIG_NF_CT_PROTO_DCCP=y
CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
+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
@@ -985,9 +998,9 @@ CONFIG_NF_CT_NETLINK_HELPER=m
CONFIG_NETFILTER_NETLINK_GLUE_CT=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_PROTO_DCCP=y
+CONFIG_NF_NAT_PROTO_UDPLITE=y
+CONFIG_NF_NAT_PROTO_SCTP=y
CONFIG_NF_NAT_AMANDA=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
@@ -1000,6 +1013,7 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m
+CONFIG_NFT_RT=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m
CONFIG_NFT_SET_RBTREE=m
@@ -1010,12 +1024,15 @@ CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=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_NF_DUP_NETDEV=m
CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
@@ -1116,6 +1133,7 @@ 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
@@ -1171,10 +1189,12 @@ CONFIG_IP_VS_PE_SIP=m
#
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_SOCKET_IPV4=m
CONFIG_NF_TABLES_IPV4=m
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
CONFIG_NF_TABLES_ARP=m
CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
@@ -1216,10 +1236,12 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_NF_SOCKET_IPV6=m
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
@@ -1467,7 +1489,6 @@ CONFIG_NET_NCSI=y
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
-CONFIG_SOCK_CGROUP_DATA=y
# CONFIG_CGROUP_NET_PRIO is not set
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
@@ -1749,6 +1770,7 @@ CONFIG_NFC_ST_NCI_I2C=m
# CONFIG_NFC_S3FWRN5_I2C is not set
# CONFIG_NFC_ST95HF is not set
CONFIG_LWTUNNEL=y
+CONFIG_LWTUNNEL_BPF=y
CONFIG_DST_CACHE=y
CONFIG_NET_DEVLINK=m
CONFIG_MAY_USE_DEVLINK=m
@@ -1777,6 +1799,7 @@ 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_SYS_HYPERVISOR=y
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
@@ -1786,7 +1809,7 @@ CONFIG_REGMAP_SPI=y
CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
CONFIG_DMA_SHARED_BUFFER=y
-# CONFIG_FENCE_TRACE is not set
+# CONFIG_DMA_FENCE_TRACE is not set
#
# Bus devices
@@ -1956,9 +1979,12 @@ CONFIG_BLK_DEV_NVME=m
# CONFIG_BLK_DEV_NVME_SCSI is not set
CONFIG_NVME_FABRICS=m
CONFIG_NVME_RDMA=m
+CONFIG_NVME_FC=m
CONFIG_NVME_TARGET=m
CONFIG_NVME_TARGET_LOOP=m
CONFIG_NVME_TARGET_RDMA=m
+CONFIG_NVME_TARGET_FC=m
+# CONFIG_NVME_TARGET_FCLOOP is not set
#
# Misc devices
@@ -2198,6 +2224,7 @@ CONFIG_SCSI_QLA_FC=m
CONFIG_TCM_QLA2XXX=m
# CONFIG_TCM_QLA2XXX_DEBUG is not set
CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_QEDI=m
CONFIG_SCSI_LPFC=m
# CONFIG_SCSI_LPFC_DEBUG_FS is not set
CONFIG_SCSI_DC395x=m
@@ -2337,7 +2364,7 @@ CONFIG_BLK_DEV_DM=m
# CONFIG_DM_MQ_DEFAULT is not set
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
CONFIG_DM_CRYPT=m
@@ -2486,6 +2513,8 @@ CONFIG_NET_VENDOR_ADAPTEC=y
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_NET_VENDOR_AGERE=y
CONFIG_ET131X=m
+CONFIG_NET_VENDOR_ALACRITECH=y
+CONFIG_SLICOSS=m
CONFIG_NET_VENDOR_ALTEON=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
@@ -2496,6 +2525,8 @@ CONFIG_NET_VENDOR_AMD=y
CONFIG_AMD8111_ETH=m
CONFIG_PCNET32=m
CONFIG_PCMCIA_NMCLAN=m
+CONFIG_AMD_XGBE=m
+CONFIG_AMD_XGBE_HAVE_ECC=y
CONFIG_NET_VENDOR_ARC=y
CONFIG_NET_VENDOR_ATHEROS=y
CONFIG_ATL2=m
@@ -2507,6 +2538,7 @@ CONFIG_NET_VENDOR_AURORA=y
CONFIG_AURORA_NB8800=m
CONFIG_NET_CADENCE=y
CONFIG_MACB=m
+CONFIG_MACB_PCI=m
CONFIG_NET_VENDOR_BROADCOM=y
CONFIG_B44=m
CONFIG_B44_PCI_AUTOSELECT=y
@@ -2584,7 +2616,6 @@ CONFIG_NET_VENDOR_I825XX=y
CONFIG_JME=m
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_MVMDIO=m
-# CONFIG_MVNETA_BM is not set
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKGE_GENESIS=y
@@ -2598,9 +2629,13 @@ CONFIG_MLX5_CORE=m
CONFIG_MLX5_CORE_EN=y
CONFIG_MLXSW_CORE=m
CONFIG_MLXSW_CORE_HWMON=y
+CONFIG_MLXSW_CORE_THERMAL=y
CONFIG_MLXSW_PCI=m
+CONFIG_MLXSW_I2C=m
+CONFIG_MLXSW_SWITCHIB=m
CONFIG_MLXSW_SWITCHX2=m
CONFIG_MLXSW_SPECTRUM=m
+CONFIG_MLXSW_MINIMAL=m
CONFIG_NET_VENDOR_MICREL=y
CONFIG_KS8842=m
CONFIG_KS8851=m
@@ -2639,8 +2674,10 @@ CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
CONFIG_QED=m
+CONFIG_QED_LL2=y
CONFIG_QED_SRIOV=y
CONFIG_QEDE=m
+CONFIG_QED_ISCSI=y
CONFIG_NET_VENDOR_QUALCOMM=y
CONFIG_QCOM_EMAC=m
CONFIG_NET_VENDOR_REALTEK=y
@@ -2665,11 +2702,14 @@ CONFIG_SC92031=m
CONFIG_NET_VENDOR_SIS=y
CONFIG_SIS900=m
CONFIG_SIS190=m
+CONFIG_NET_VENDOR_SOLARFLARE=y
CONFIG_SFC=m
CONFIG_SFC_MTD=y
CONFIG_SFC_MCDI_MON=y
CONFIG_SFC_SRIOV=y
CONFIG_SFC_MCDI_LOGGING=y
+CONFIG_SFC_FALCON=m
+CONFIG_SFC_FALCON_MTD=y
CONFIG_NET_VENDOR_SMSC=y
CONFIG_PCMCIA_SMC91C92=m
CONFIG_EPIC100=m
@@ -2709,6 +2749,7 @@ CONFIG_PCMCIA_XIRC2PS=m
CONFIG_NET_SB1000=m
CONFIG_PHYLIB=m
CONFIG_SWPHY=y
+CONFIG_LED_TRIGGER_PHY=y
#
# MDIO bus device drivers
@@ -3462,11 +3503,16 @@ CONFIG_INPUT_SOC_BUTTON_ARRAY=m
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=y
CONFIG_RMI4_F54=y
+CONFIG_RMI4_F55=y
#
# Hardware I/O ports
@@ -3603,6 +3649,7 @@ CONFIG_APPLICOM=m
CONFIG_SYNCLINK_CS=m
CONFIG_CARDMAN_4000=m
CONFIG_CARDMAN_4040=m
+CONFIG_SCR24X=m
CONFIG_IPWIRELESS=m
CONFIG_MWAVE=m
CONFIG_RAW_DRIVER=m
@@ -3648,6 +3695,7 @@ CONFIG_I2C_MUX_PCA9541=m
CONFIG_I2C_MUX_PCA954x=m
# CONFIG_I2C_MUX_PINCTRL is not set
# CONFIG_I2C_MUX_REG is not set
+# CONFIG_I2C_MUX_MLXCPLD is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=m
@@ -3713,6 +3761,7 @@ CONFIG_I2C_VIPERBOARD=m
#
# Other I2C/SMBus bus drivers
#
+# CONFIG_I2C_MLXCPLD is not set
# CONFIG_I2C_CROS_EC_TUNNEL is not set
# CONFIG_I2C_STUB is not set
CONFIG_I2C_SLAVE=y
@@ -3789,6 +3838,7 @@ CONFIG_PINCONF=y
CONFIG_GENERIC_PINCONF=y
# CONFIG_DEBUG_PINCTRL is not set
# CONFIG_PINCTRL_AMD is not set
+# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL_BAYTRAIL=y
CONFIG_PINCTRL_CHERRYVIEW=y
CONFIG_PINCTRL_INTEL=y
@@ -3810,7 +3860,6 @@ CONFIG_GPIO_ICH=m
CONFIG_GPIO_LYNXPOINT=y
# CONFIG_GPIO_MOCKUP is not set
# CONFIG_GPIO_VX855 is not set
-# CONFIG_GPIO_ZX is not set
#
# Port-mapped I/O GPIO drivers
@@ -3830,7 +3879,6 @@ CONFIG_GPIO_SCH311X=m
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_SX150X is not set
# CONFIG_GPIO_TPIC2810 is not set
-# CONFIG_GPIO_TS4900 is not set
#
# MFD GPIO expanders
@@ -3972,6 +4020,7 @@ CONFIG_SENSORS_MAX6650=m
CONFIG_SENSORS_MAX6697=m
CONFIG_SENSORS_MAX31790=m
CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_TC654=m
CONFIG_SENSORS_ADCXX=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM70=m
@@ -4039,6 +4088,7 @@ 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_VIA_CPUTEMP=m
@@ -4055,6 +4105,7 @@ CONFIG_SENSORS_W83L785TS=m
CONFIG_SENSORS_W83L786NG=m
CONFIG_SENSORS_W83627HF=m
CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_XGENE=m
#
# ACPI drivers
@@ -4214,7 +4265,6 @@ CONFIG_MFD_CROS_EC_I2C=m
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_DLN2 is not set
-# CONFIG_MFD_EXYNOS_LPASS is not set
CONFIG_MFD_MC13XXX=m
# CONFIG_MFD_MC13XXX_SPI is not set
CONFIG_MFD_MC13XXX_I2C=m
@@ -4310,6 +4360,8 @@ CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_MEDIA_RADIO_SUPPORT=y
CONFIG_MEDIA_SDR_SUPPORT=y
CONFIG_MEDIA_RC_SUPPORT=y
+CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_MEDIA_CEC_DEBUG=y
CONFIG_MEDIA_CEC_EDID=y
CONFIG_MEDIA_CONTROLLER=y
# CONFIG_MEDIA_CONTROLLER_DVB is not set
@@ -4337,6 +4389,7 @@ CONFIG_DVB_NET=y
CONFIG_TTPCI_EEPROM=m
CONFIG_DVB_MAX_ADAPTERS=8
# CONFIG_DVB_DYNAMIC_MINORS is not set
+# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
#
# Media drivers
@@ -4372,6 +4425,8 @@ CONFIG_IR_IGUANA=m
CONFIG_IR_TTUSBIR=m
CONFIG_RC_LOOPBACK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_SERIAL=m
+CONFIG_IR_SERIAL_TRANSMITTER=y
CONFIG_MEDIA_USB_SUPPORT=y
#
@@ -4535,6 +4590,11 @@ CONFIG_VIDEO_EM28XX_RC=m
CONFIG_USB_AIRSPY=m
CONFIG_USB_HACKRF=m
CONFIG_USB_MSI2500=m
+
+#
+# USB HDMI CEC adapters
+#
+CONFIG_USB_PULSE8_CEC=m
CONFIG_MEDIA_PCI_SUPPORT=y
#
@@ -4998,9 +5058,12 @@ CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
CONFIG_DRM_I915=m
-# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
+# CONFIG_DRM_I915_ALPHA_SUPPORT is not set
+CONFIG_DRM_I915_CAPTURE_ERROR=y
+CONFIG_DRM_I915_COMPRESS_ERROR=y
CONFIG_DRM_I915_USERPTR=y
CONFIG_DRM_I915_GVT=y
+CONFIG_DRM_I915_GVT_KVMGT=m
CONFIG_DRM_VGEM=m
CONFIG_DRM_VMWGFX=m
CONFIG_DRM_VMWGFX_FBCON=y
@@ -5026,6 +5089,7 @@ CONFIG_DRM_BRIDGE=y
#
CONFIG_DRM_ANALOGIX_ANX78XX=m
CONFIG_HSA_AMD=m
+CONFIG_DRM_HISI_HIBMC=m
# CONFIG_DRM_LEGACY is not set
#
@@ -5400,6 +5464,8 @@ CONFIG_SND_SOC_AC97_CODEC=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_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
@@ -5422,6 +5488,8 @@ CONFIG_SND_SOC_MAX98090=m
CONFIG_SND_SOC_MAX98357A=m
# CONFIG_SND_SOC_MAX98504 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_PCM179X_I2C is not set
# CONFIG_SND_SOC_PCM179X_SPI is not set
@@ -5438,7 +5506,6 @@ CONFIG_SND_SOC_RT298=m
CONFIG_SND_SOC_RT5640=m
CONFIG_SND_SOC_RT5645=m
CONFIG_SND_SOC_RT5651=m
-CONFIG_SND_SOC_RT5663=m
CONFIG_SND_SOC_RT5670=m
CONFIG_SND_SOC_RT5677=m
CONFIG_SND_SOC_RT5677_SPI=m
@@ -5548,6 +5615,7 @@ CONFIG_LOGIRUMBLEPAD2_FF=y
CONFIG_LOGIG940_FF=y
CONFIG_LOGIWHEELS_FF=y
CONFIG_HID_MAGICMOUSE=m
+CONFIG_HID_MAYFLASH=m
CONFIG_HID_MICROSOFT=m
CONFIG_HID_MONTEREY=m
CONFIG_HID_MULTITOUCH=m
@@ -5584,6 +5652,7 @@ CONFIG_HID_TOPSEED=m
CONFIG_HID_THINGM=m
CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
+CONFIG_HID_UDRAW_PS3=m
CONFIG_HID_WACOM=m
CONFIG_HID_WIIMOTE=m
CONFIG_HID_XINMO=m
@@ -5746,6 +5815,7 @@ 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
@@ -5836,10 +5906,6 @@ CONFIG_UWB_WHCI=m
CONFIG_UWB_I1480U=m
CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_BLOCK_BOUNCE=y
@@ -5923,6 +5989,8 @@ CONFIG_LEDS_LM355x=m
#
CONFIG_LEDS_BLINKM=m
CONFIG_LEDS_MLXCPLD=m
+CONFIG_LEDS_USER=m
+CONFIG_LEDS_NIC78BX=m
#
# LED Triggers
@@ -5966,6 +6034,7 @@ CONFIG_MLX5_INFINIBAND=m
CONFIG_INFINIBAND_NES=m
# CONFIG_INFINIBAND_NES_DEBUG is not set
CONFIG_INFINIBAND_OCRDMA=m
+CONFIG_INFINIBAND_VMWARE_PVRDMA=m
CONFIG_INFINIBAND_USNIC=m
CONFIG_INFINIBAND_IPOIB=m
CONFIG_INFINIBAND_IPOIB_CM=y
@@ -6166,6 +6235,7 @@ CONFIG_UIO_PCI_GENERIC=m
CONFIG_UIO_NETX=m
CONFIG_UIO_PRUSS=m
# CONFIG_UIO_MF624 is not set
+CONFIG_UIO_HV_GENERIC=m
CONFIG_VFIO_IOMMU_TYPE1=m
CONFIG_VFIO_VIRQFD=m
CONFIG_VFIO=m
@@ -6175,6 +6245,8 @@ CONFIG_VFIO_PCI_VGA=y
CONFIG_VFIO_PCI_MMAP=y
CONFIG_VFIO_PCI_INTX=y
CONFIG_VFIO_PCI_IGD=y
+CONFIG_VFIO_MDEV=m
+CONFIG_VFIO_MDEV_DEVICE=m
CONFIG_IRQ_BYPASS_MANAGER=m
CONFIG_VIRT_DRIVERS=y
CONFIG_VIRTIO=m
@@ -6226,7 +6298,6 @@ CONFIG_XEN_ACPI=y
CONFIG_XEN_SYMS=y
CONFIG_XEN_HAVE_VPMU=y
CONFIG_STAGING=y
-CONFIG_SLICOSS=m
CONFIG_PRISM2_USB=m
CONFIG_COMEDI=m
# CONFIG_COMEDI_DEBUG is not set
@@ -6343,7 +6414,6 @@ CONFIG_VT6656=m
# CONFIG_ADIS16203 is not set
# CONFIG_ADIS16209 is not set
# CONFIG_ADIS16240 is not set
-# CONFIG_SCA3000 is not set
#
# Analog to digital converters
@@ -6385,9 +6455,7 @@ CONFIG_VT6656=m
#
# Light sensors
#
-# CONFIG_SENSORS_ISL29018 is not set
# CONFIG_SENSORS_ISL29028 is not set
-# CONFIG_TSL2583 is not set
# CONFIG_TSL2x7x is not set
#
@@ -6429,15 +6497,12 @@ CONFIG_SPEAKUP_SYNTH_TXPRT=m
CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_STAGING_MEDIA=y
CONFIG_I2C_BCM2048=m
-# CONFIG_MEDIA_CEC is not set
CONFIG_DVB_CXD2099=m
CONFIG_LIRC_STAGING=y
CONFIG_LIRC_BT829=m
CONFIG_LIRC_IMON=m
CONFIG_LIRC_PARALLEL=m
CONFIG_LIRC_SASEM=m
-CONFIG_LIRC_SERIAL=m
-CONFIG_LIRC_SERIAL_TRANSMITTER=y
CONFIG_LIRC_SIR=m
CONFIG_LIRC_ZILOG=m
@@ -6492,6 +6557,7 @@ CONFIG_COMPAL_LAPTOP=m
CONFIG_SONY_LAPTOP=m
# CONFIG_SONYPI_COMPAT is not set
CONFIG_IDEAPAD_LAPTOP=m
+CONFIG_SURFACE3_WMI=m
CONFIG_THINKPAD_ACPI=m
CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
@@ -6528,9 +6594,13 @@ CONFIG_INTEL_RST=m
CONFIG_INTEL_SMARTCONNECT=m
CONFIG_PVPANIC=m
CONFIG_INTEL_PMC_IPC=m
+CONFIG_INTEL_BXTWC_PMIC_TMU=m
CONFIG_SURFACE_PRO3_BUTTON=m
+CONFIG_SURFACE_3_BUTTON=m
CONFIG_INTEL_PUNIT_IPC=m
CONFIG_INTEL_TELEMETRY=m
+# CONFIG_MLX_PLATFORM is not set
+# CONFIG_MLX_CPLD_PLATFORM is not set
CONFIG_CHROME_PLATFORMS=y
CONFIG_CHROMEOS_LAPTOP=m
CONFIG_CHROMEOS_PSTORE=m
@@ -6551,6 +6621,13 @@ CONFIG_COMMON_CLK=y
# CONFIG_COMMON_CLK_NXP is not set
# CONFIG_COMMON_CLK_PXA is not set
# CONFIG_COMMON_CLK_PIC32 is not set
+# CONFIG_COMMON_CLK_MT2701 is not set
+# CONFIG_COMMON_CLK_MT2701_MMSYS is not set
+# CONFIG_COMMON_CLK_MT2701_IMGSYS is not set
+# CONFIG_COMMON_CLK_MT2701_VDECSYS is not set
+# CONFIG_COMMON_CLK_MT2701_HIFSYS is not set
+# CONFIG_COMMON_CLK_MT2701_ETHSYS is not set
+# CONFIG_COMMON_CLK_MT2701_BDPSYS is not set
#
# Hardware Spinlock drivers
@@ -6567,7 +6644,9 @@ CONFIG_CLKBLD_I8253=y
# CONFIG_SH_TIMER_MTU2 is not set
# CONFIG_SH_TIMER_TMU is not set
# CONFIG_EM_TIMER_STI is not set
-# CONFIG_MAILBOX is not set
+CONFIG_MAILBOX=y
+CONFIG_PCC=y
+# CONFIG_ALTERA_MBOX is not set
CONFIG_IOMMU_API=y
CONFIG_IOMMU_SUPPORT=y
@@ -6588,7 +6667,6 @@ CONFIG_IRQ_REMAP=y
# Remoteproc drivers
#
CONFIG_REMOTEPROC=m
-CONFIG_STE_MODEM_RPROC=m
#
# Rpmsg drivers
@@ -6649,7 +6727,10 @@ CONFIG_IIO_SW_TRIGGER=m
# CONFIG_BMA180 is not set
# CONFIG_BMA220 is not set
# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DA280 is not set
+# CONFIG_DA311 is not set
# CONFIG_DMARD09 is not set
+# CONFIG_DMARD10 is not set
CONFIG_HID_SENSOR_ACCEL_3D=m
CONFIG_IIO_ST_ACCEL_3AXIS=m
CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
@@ -6665,6 +6746,7 @@ CONFIG_MMA7660=m
# CONFIG_MMA9553 is not set
# CONFIG_MXC4005 is not set
# CONFIG_MXC6255 is not set
+# CONFIG_SCA3000 is not set
# CONFIG_STK8312 is not set
# CONFIG_STK8BA50 is not set
@@ -6675,6 +6757,7 @@ CONFIG_MMA7660=m
# CONFIG_AD7291 is not set
# CONFIG_AD7298 is not set
# CONFIG_AD7476 is not set
+# CONFIG_AD7766 is not set
# CONFIG_AD7791 is not set
# CONFIG_AD7793 is not set
# CONFIG_AD7887 is not set
@@ -6710,6 +6793,8 @@ CONFIG_MMA7660=m
# CONFIG_ATLAS_PH_SENSOR is not set
# CONFIG_IAQCORE is not set
# CONFIG_VZ89X is not set
+CONFIG_IIO_CROS_EC_SENSORS_CORE=m
+CONFIG_IIO_CROS_EC_SENSORS=m
#
# Hid Sensor IIO Common
@@ -6726,6 +6811,10 @@ CONFIG_IIO_ST_SENSORS_SPI=m
CONFIG_IIO_ST_SENSORS_CORE=m
#
+# Counters
+#
+
+#
# Digital to analog converters
#
# CONFIG_AD5064 is not set
@@ -6801,6 +6890,7 @@ CONFIG_MAX30100=m
# CONFIG_AM2315 is not set
# CONFIG_DHT11 is not set
# CONFIG_HDC100X is not set
+# CONFIG_HTS221 is not set
# CONFIG_HTU21 is not set
# CONFIG_SI7005 is not set
# CONFIG_SI7020 is not set
@@ -6831,6 +6921,7 @@ CONFIG_BH1780=m
# CONFIG_CM3323 is not set
# CONFIG_CM36651 is not set
# CONFIG_GP2AP020A00F is not set
+# CONFIG_SENSORS_ISL29018 is not set
# CONFIG_ISL29125 is not set
CONFIG_HID_SENSOR_ALS=m
# CONFIG_HID_SENSOR_PROX is not set
@@ -6846,6 +6937,7 @@ CONFIG_STK3310=m
# CONFIG_TCS3414 is not set
# CONFIG_TCS3472 is not set
# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_TSL2583 is not set
# CONFIG_TSL4531 is not set
# CONFIG_US5182D is not set
# CONFIG_VCNL4000 is not set
@@ -6892,8 +6984,14 @@ CONFIG_IIO_TIGHTLOOP_TRIGGER=m
# CONFIG_TPL0102 is not set
#
+# Digital potentiostats
+#
+# CONFIG_LMP91000 is not set
+
+#
# Pressure sensors
#
+# CONFIG_ABP060MG is not set
# CONFIG_BMP280 is not set
# CONFIG_HID_SENSOR_PRESS is not set
# CONFIG_HP03 is not set
@@ -6944,6 +7042,7 @@ CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_SUNXI is not set
# CONFIG_TI_SYSCON_RESET is not set
# CONFIG_RESET_ZYNQ is not set
+# CONFIG_RESET_TEGRA_BPMP is not set
CONFIG_FMC=m
CONFIG_FMC_FAKEDEV=m
CONFIG_FMC_TRIVIAL=m
@@ -6989,6 +7088,7 @@ CONFIG_STM=m
# CONFIG_STM_DUMMY is not set
CONFIG_STM_SOURCE_CONSOLE=m
CONFIG_STM_SOURCE_HEARTBEAT=m
+CONFIG_STM_SOURCE_FTRACE=m
CONFIG_INTEL_TH=m
CONFIG_INTEL_TH_PCI=m
CONFIG_INTEL_TH_GTH=m
@@ -7005,6 +7105,7 @@ CONFIG_INTEL_TH_PTI=m
#
# Firmware Drivers
#
+# CONFIG_ARM_SCPI_PROTOCOL is not set
CONFIG_EDD=m
# CONFIG_EDD_OFF is not set
CONFIG_FIRMWARE_MEMMAP=y
@@ -7029,7 +7130,13 @@ CONFIG_EFI_RUNTIME_MAP=y
CONFIG_EFI_RUNTIME_WRAPPERS=y
CONFIG_EFI_CAPSULE_LOADER=m
# CONFIG_EFI_TEST is not set
+CONFIG_APPLE_PROPERTIES=y
CONFIG_UEFI_CPER=y
+CONFIG_EFI_DEV_PATH_PARSER=y
+
+#
+# Tegra firmware driver
+#
#
# File systems
@@ -7114,6 +7221,7 @@ CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=m
CONFIG_CUSE=m
CONFIG_OVERLAY_FS=m
+CONFIG_OVERLAY_FS_REDIRECT_DIR=y
#
# Caches
@@ -7197,7 +7305,7 @@ CONFIG_UBIFS_FS=m
CONFIG_UBIFS_FS_LZO=y
CONFIG_UBIFS_FS_ZLIB=y
CONFIG_UBIFS_ATIME_SUPPORT=y
-CONFIG_LOGFS=m
+CONFIG_UBIFS_FS_ENCRYPTION=y
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
# CONFIG_SQUASHFS_FILE_CACHE is not set
@@ -7370,6 +7478,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# printk and dmesg options
#
CONFIG_PRINTK_TIME=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_BOOT_PRINTK_DELAY is not set
CONFIG_DYNAMIC_DEBUG=y
@@ -7568,6 +7677,7 @@ CONFIG_TEST_KSTRTOX=m
# CONFIG_TEST_UDELAY is not set
# CONFIG_MEMTEST is not set
# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
@@ -7665,6 +7775,7 @@ CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_AKCIPHER=m
CONFIG_CRYPTO_KPP2=y
CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_ACOMP2=y
CONFIG_CRYPTO_RSA=m
CONFIG_CRYPTO_DH=m
CONFIG_CRYPTO_ECDH=m
@@ -7682,6 +7793,7 @@ CONFIG_CRYPTO_MCRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ABLK_HELPER=m
+CONFIG_CRYPTO_SIMD=m
CONFIG_CRYPTO_GLUE_HELPER_X86=m
#
@@ -7709,7 +7821,7 @@ CONFIG_CRYPTO_KEYWRAP=m
# Hash modes
#
CONFIG_CRYPTO_CMAC=m
-CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_VMAC=m
@@ -7732,14 +7844,14 @@ CONFIG_CRYPTO_RMD128=m
CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RMD256=m
CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA1_SSSE3=m
CONFIG_CRYPTO_SHA256_SSSE3=m
CONFIG_CRYPTO_SHA512_SSSE3=m
CONFIG_CRYPTO_SHA1_MB=m
CONFIG_CRYPTO_SHA256_MB=m
CONFIG_CRYPTO_SHA512_MB=m
-CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_SHA3=m
CONFIG_CRYPTO_TGR192=m
@@ -7815,6 +7927,7 @@ CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_PADLOCK=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set
CONFIG_CRYPTO_DEV_CCP=y
CONFIG_CRYPTO_DEV_CCP_DD=m
CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
@@ -7826,6 +7939,7 @@ CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_CRYPTO_DEV_CHELSIO=m
+CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
CONFIG_X509_CERTIFICATE_PARSER=m
diff --git a/intel-pstate-backport.patch b/intel-pstate-backport.patch
index 9e466e17411..cf142786726 100644
--- a/intel-pstate-backport.patch
+++ b/intel-pstate-backport.patch
@@ -1,148 +1,1117 @@
---- linux-4.8/drivers/cpufreq/intel_pstate.c.orig 2016-10-02 19:24:33.000000000 -0400
-+++ linux-4.8/drivers/cpufreq/intel_pstate.c 2016-10-09 19:32:01.073141319 -0400
-@@ -181,6 +181,8 @@
- * @cpu: CPU number for this instance data
- * @update_util: CPUFreq utility callback information
- * @update_util_set: CPUFreq utility callback is set
-+ * @iowait_boost: iowait-related boost fraction
-+ * @last_update: Time of the last update.
- * @pstate: Stores P state limits for this CPU
- * @vid: Stores VID limits for this CPU
- * @pid: Stores PID parameters for this CPU
-@@ -206,6 +208,7 @@
- struct vid_data vid;
- struct _pid pid;
-
-+ u64 last_update;
- u64 last_sample_time;
- u64 prev_aperf;
- u64 prev_mperf;
-@@ -216,6 +219,7 @@
- struct acpi_processor_performance acpi_perf_data;
- bool valid_pss_table;
- #endif
-+ unsigned int iowait_boost;
- };
+--- drivers/cpufreq/intel_pstate.c.orig 2017-02-19 17:34:00.000000000 -0500
++++ drivers/cpufreq/intel_pstate.c 2017-03-23 23:47:19.095511820 -0400
+@@ -19,7 +19,7 @@
+ #include <linux/hrtimer.h>
+ #include <linux/tick.h>
+ #include <linux/slab.h>
+-#include <linux/sched.h>
++#include <linux/sched/cpufreq.h>
+ #include <linux/list.h>
+ #include <linux/cpu.h>
+ #include <linux/cpufreq.h>
+@@ -39,11 +39,6 @@
- static struct cpudata **all_cpu_data;
-@@ -229,6 +233,7 @@
- * @p_gain_pct: PID proportional gain
- * @i_gain_pct: PID integral gain
- * @d_gain_pct: PID derivative gain
-+ * @boost_iowait: Whether or not to use iowait boosting.
- *
- * Stores per CPU model static PID configuration data.
- */
-@@ -240,6 +245,7 @@
- int p_gain_pct;
- int d_gain_pct;
- int i_gain_pct;
-+ bool boost_iowait;
- };
+ #define INTEL_CPUFREQ_TRANSITION_LATENCY 20000
+
+-#define ATOM_RATIOS 0x66a
+-#define ATOM_VIDS 0x66b
+-#define ATOM_TURBO_RATIOS 0x66c
+-#define ATOM_TURBO_VIDS 0x66d
+-
+ #ifdef CONFIG_ACPI
+ #include <acpi/processor.h>
+ #include <acpi/cppc_acpi.h>
+@@ -89,6 +84,11 @@
+ return div64_u64(x << EXT_FRAC_BITS, y);
+ }
++static inline int32_t percent_ext_fp(int percent)
++{
++ return div_ext_fp(percent, 100);
++}
++
/**
-@@ -1029,7 +1035,7 @@
- },
- };
+ * struct sample - Store performance sample
+ * @core_avg_perf: Ratio of APERF/MPERF which is the actual average
+@@ -358,42 +358,24 @@
+ static int hwp_active __read_mostly;
+ static bool per_cpu_limits __read_mostly;
--static struct cpu_defaults silvermont_params = {
-+static const struct cpu_defaults silvermont_params = {
- .pid_policy = {
- .sample_rate_ms = 10,
- .deadband = 0,
-@@ -1037,6 +1043,7 @@
- .p_gain_pct = 14,
- .d_gain_pct = 0,
- .i_gain_pct = 4,
-+ .boost_iowait = true,
- },
- .funcs = {
- .get_max = atom_get_max_pstate,
-@@ -1050,7 +1057,7 @@
- },
- };
++static bool driver_registered __read_mostly;
++
+ #ifdef CONFIG_ACPI
+ static bool acpi_ppc;
+ #endif
+
+-static struct perf_limits performance_limits = {
+- .no_turbo = 0,
+- .turbo_disabled = 0,
+- .max_perf_pct = 100,
+- .max_perf = int_ext_tofp(1),
+- .min_perf_pct = 100,
+- .min_perf = int_ext_tofp(1),
+- .max_policy_pct = 100,
+- .max_sysfs_pct = 100,
+- .min_policy_pct = 0,
+- .min_sysfs_pct = 0,
+-};
+-
+-static struct perf_limits powersave_limits = {
+- .no_turbo = 0,
+- .turbo_disabled = 0,
+- .max_perf_pct = 100,
+- .max_perf = int_ext_tofp(1),
+- .min_perf_pct = 0,
+- .min_perf = 0,
+- .max_policy_pct = 100,
+- .max_sysfs_pct = 100,
+- .min_policy_pct = 0,
+- .min_sysfs_pct = 0,
+-};
++static struct perf_limits global;
+
+-#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
+-static struct perf_limits *limits = &performance_limits;
+-#else
+-static struct perf_limits *limits = &powersave_limits;
+-#endif
++static void intel_pstate_init_limits(struct perf_limits *limits)
++{
++ memset(limits, 0, sizeof(*limits));
++ limits->max_perf_pct = 100;
++ limits->max_perf = int_ext_tofp(1);
++ limits->max_policy_pct = 100;
++ limits->max_sysfs_pct = 100;
++}
+
++static DEFINE_MUTEX(intel_pstate_driver_lock);
+ static DEFINE_MUTEX(intel_pstate_limits_lock);
+
+ #ifdef CONFIG_ACPI
+@@ -515,7 +497,7 @@
+ * correct max turbo frequency based on the turbo state.
+ * Also need to convert to MHz as _PSS freq is in MHz.
+ */
+- if (!limits->turbo_disabled)
++ if (!global.turbo_disabled)
+ cpu->acpi_perf_data.states[0].core_frequency =
+ policy->cpuinfo.max_freq / 1000;
+ cpu->valid_pss_table = true;
+@@ -538,7 +520,6 @@
+
+ acpi_processor_unregister_performance(policy->cpu);
+ }
+-
+ #else
+ static inline void intel_pstate_init_acpi_perf_limits(struct cpufreq_policy *policy)
+ {
+@@ -635,7 +616,7 @@
+
+ cpu = all_cpu_data[0];
+ rdmsrl(MSR_IA32_MISC_ENABLE, misc_en);
+- limits->turbo_disabled =
++ global.turbo_disabled =
+ (misc_en & MSR_IA32_MISC_ENABLE_TURBO_DISABLE ||
+ cpu->pstate.max_pstate == cpu->pstate.turbo_pstate);
+ }
+@@ -859,12 +840,11 @@
+
+ static void intel_pstate_hwp_set(struct cpufreq_policy *policy)
+ {
+- int min, hw_min, max, hw_max, cpu, range, adj_range;
+- struct perf_limits *perf_limits = limits;
++ int min, hw_min, max, hw_max, cpu;
++ struct perf_limits *perf_limits = &global;
+ u64 value, cap;
+
+ for_each_cpu(cpu, policy->cpus) {
+- int max_perf_pct, min_perf_pct;
+ struct cpudata *cpu_data = all_cpu_data[cpu];
+ s16 epp;
--static struct cpu_defaults airmont_params = {
-+static const struct cpu_defaults airmont_params = {
- .pid_policy = {
- .sample_rate_ms = 10,
- .deadband = 0,
-@@ -1058,6 +1065,7 @@
- .p_gain_pct = 14,
- .d_gain_pct = 0,
- .i_gain_pct = 4,
-+ .boost_iowait = true,
- },
- .funcs = {
- .get_max = atom_get_max_pstate,
-@@ -1071,7 +1079,7 @@
- },
+@@ -873,26 +853,22 @@
+
+ rdmsrl_on_cpu(cpu, MSR_HWP_CAPABILITIES, &cap);
+ hw_min = HWP_LOWEST_PERF(cap);
+- hw_max = HWP_HIGHEST_PERF(cap);
+- range = hw_max - hw_min;
++ if (global.no_turbo)
++ hw_max = HWP_GUARANTEED_PERF(cap);
++ else
++ hw_max = HWP_HIGHEST_PERF(cap);
+
+- max_perf_pct = perf_limits->max_perf_pct;
+- min_perf_pct = perf_limits->min_perf_pct;
++ max = fp_ext_toint(hw_max * perf_limits->max_perf);
++ if (cpu_data->policy == CPUFREQ_POLICY_PERFORMANCE)
++ min = max;
++ else
++ min = fp_ext_toint(hw_max * perf_limits->min_perf);
+
+ rdmsrl_on_cpu(cpu, MSR_HWP_REQUEST, &value);
+- adj_range = min_perf_pct * range / 100;
+- min = hw_min + adj_range;
++
+ value &= ~HWP_MIN_PERF(~0L);
+ value |= HWP_MIN_PERF(min);
+
+- adj_range = max_perf_pct * range / 100;
+- max = hw_min + adj_range;
+- if (limits->no_turbo) {
+- hw_max = HWP_GUARANTEED_PERF(cap);
+- if (hw_max < max)
+- max = hw_max;
+- }
+-
+ value &= ~HWP_MAX_PERF(~0L);
+ value |= HWP_MAX_PERF(max);
+
+@@ -996,6 +972,7 @@
+ static int pid_param_set(void *data, u64 val)
+ {
+ *(u32 *)data = val;
++ pid_params.sample_rate_ns = pid_params.sample_rate_ms * NSEC_PER_MSEC;
+ intel_pstate_reset_all_pid();
+ return 0;
+ }
+@@ -1007,35 +984,57 @@
+ }
+ DEFINE_SIMPLE_ATTRIBUTE(fops_pid_param, pid_param_get, pid_param_set, "%llu\n");
+
++static struct dentry *debugfs_parent;
++
+ struct pid_param {
+ char *name;
+ void *value;
++ struct dentry *dentry;
};
--static struct cpu_defaults knl_params = {
-+static const struct cpu_defaults knl_params = {
- .pid_policy = {
- .sample_rate_ms = 10,
- .deadband = 0,
-@@ -1091,7 +1099,7 @@
- },
+ static struct pid_param pid_files[] = {
+- {"sample_rate_ms", &pid_params.sample_rate_ms},
+- {"d_gain_pct", &pid_params.d_gain_pct},
+- {"i_gain_pct", &pid_params.i_gain_pct},
+- {"deadband", &pid_params.deadband},
+- {"setpoint", &pid_params.setpoint},
+- {"p_gain_pct", &pid_params.p_gain_pct},
+- {NULL, NULL}
++ {"sample_rate_ms", &pid_params.sample_rate_ms, },
++ {"d_gain_pct", &pid_params.d_gain_pct, },
++ {"i_gain_pct", &pid_params.i_gain_pct, },
++ {"deadband", &pid_params.deadband, },
++ {"setpoint", &pid_params.setpoint, },
++ {"p_gain_pct", &pid_params.p_gain_pct, },
++ {NULL, NULL, }
};
--static struct cpu_defaults bxt_params = {
-+static const struct cpu_defaults bxt_params = {
- .pid_policy = {
- .sample_rate_ms = 10,
- .deadband = 0,
-@@ -1099,6 +1107,7 @@
- .p_gain_pct = 14,
- .d_gain_pct = 0,
- .i_gain_pct = 4,
-+ .boost_iowait = true,
- },
- .funcs = {
- .get_max = core_get_max_pstate,
-@@ -1222,36 +1231,18 @@
- static inline int32_t get_target_pstate_use_cpu_load(struct cpudata *cpu)
- {
- struct sample *sample = &cpu->sample;
-- u64 cummulative_iowait, delta_iowait_us;
-- u64 delta_iowait_mperf;
-- u64 mperf, now;
-- int32_t cpu_load;
-+ int32_t busy_frac, boost;
-
-- cummulative_iowait = get_cpu_iowait_time_us(cpu->cpu, &now);
-+ busy_frac = div_fp(sample->mperf, sample->tsc);
+-static void __init intel_pstate_debug_expose_params(void)
++static void intel_pstate_debug_expose_params(void)
+ {
+- struct dentry *debugfs_parent;
+- int i = 0;
++ int i;
+
+ debugfs_parent = debugfs_create_dir("pstate_snb", NULL);
+ if (IS_ERR_OR_NULL(debugfs_parent))
+ return;
+- while (pid_files[i].name) {
+- debugfs_create_file(pid_files[i].name, 0660,
+- debugfs_parent, pid_files[i].value,
+- &fops_pid_param);
+- i++;
++
++ for (i = 0; pid_files[i].name; i++) {
++ struct dentry *dentry;
++
++ dentry = debugfs_create_file(pid_files[i].name, 0660,
++ debugfs_parent, pid_files[i].value,
++ &fops_pid_param);
++ if (!IS_ERR(dentry))
++ pid_files[i].dentry = dentry;
++ }
++}
++
++static void intel_pstate_debug_hide_params(void)
++{
++ int i;
++
++ if (IS_ERR_OR_NULL(debugfs_parent))
++ return;
++
++ for (i = 0; pid_files[i].name; i++) {
++ debugfs_remove(pid_files[i].dentry);
++ pid_files[i].dentry = NULL;
+ }
++
++ debugfs_remove(debugfs_parent);
++ debugfs_parent = NULL;
+ }
-- /*
-- * Convert iowait time into number of IO cycles spent at max_freq.
-- * IO is considered as busy only for the cpu_load algorithm. For
-- * performance this is not needed since we always try to reach the
-- * maximum P-State, so we are already boosting the IOs.
-- */
-- delta_iowait_us = cummulative_iowait - cpu->prev_cummulative_iowait;
-- delta_iowait_mperf = div64_u64(delta_iowait_us * cpu->pstate.scaling *
-- cpu->pstate.max_pstate, MSEC_PER_SEC);
+ /************************** debugfs end ************************/
+@@ -1045,9 +1044,37 @@
+ static ssize_t show_##file_name \
+ (struct kobject *kobj, struct attribute *attr, char *buf) \
+ { \
+- return sprintf(buf, "%u\n", limits->object); \
++ return sprintf(buf, "%u\n", global.object); \
+ }
+
++static ssize_t intel_pstate_show_status(char *buf);
++static int intel_pstate_update_status(const char *buf, size_t size);
++
++static ssize_t show_status(struct kobject *kobj,
++ struct attribute *attr, char *buf)
++{
++ ssize_t ret;
++
++ mutex_lock(&intel_pstate_driver_lock);
++ ret = intel_pstate_show_status(buf);
++ mutex_unlock(&intel_pstate_driver_lock);
++
++ return ret;
++}
++
++static ssize_t store_status(struct kobject *a, struct attribute *b,
++ const char *buf, size_t count)
++{
++ char *p = memchr(buf, '\n', count);
++ int ret;
++
++ mutex_lock(&intel_pstate_driver_lock);
++ ret = intel_pstate_update_status(buf, p ? p - buf : count);
++ mutex_unlock(&intel_pstate_driver_lock);
++
++ return ret < 0 ? ret : count;
++}
++
+ static ssize_t show_turbo_pct(struct kobject *kobj,
+ struct attribute *attr, char *buf)
+ {
+@@ -1055,12 +1082,22 @@
+ int total, no_turbo, turbo_pct;
+ uint32_t turbo_fp;
+
++ mutex_lock(&intel_pstate_driver_lock);
++
++ if (!driver_registered) {
++ mutex_unlock(&intel_pstate_driver_lock);
++ return -EAGAIN;
++ }
++
+ cpu = all_cpu_data[0];
+
+ total = cpu->pstate.turbo_pstate - cpu->pstate.min_pstate + 1;
+ no_turbo = cpu->pstate.max_pstate - cpu->pstate.min_pstate + 1;
+ turbo_fp = div_fp(no_turbo, total);
+ turbo_pct = 100 - fp_toint(mul_fp(turbo_fp, int_tofp(100)));
++
++ mutex_unlock(&intel_pstate_driver_lock);
++
+ return sprintf(buf, "%u\n", turbo_pct);
+ }
+
+@@ -1070,8 +1107,18 @@
+ struct cpudata *cpu;
+ int total;
+
++ mutex_lock(&intel_pstate_driver_lock);
++
++ if (!driver_registered) {
++ mutex_unlock(&intel_pstate_driver_lock);
++ return -EAGAIN;
++ }
++
+ cpu = all_cpu_data[0];
+ total = cpu->pstate.turbo_pstate - cpu->pstate.min_pstate + 1;
++
++ mutex_unlock(&intel_pstate_driver_lock);
++
+ return sprintf(buf, "%u\n", total);
+ }
+
+@@ -1080,11 +1127,20 @@
+ {
+ ssize_t ret;
+
++ mutex_lock(&intel_pstate_driver_lock);
++
++ if (!driver_registered) {
++ mutex_unlock(&intel_pstate_driver_lock);
++ return -EAGAIN;
++ }
++
+ update_turbo_state();
+- if (limits->turbo_disabled)
+- ret = sprintf(buf, "%u\n", limits->turbo_disabled);
++ if (global.turbo_disabled)
++ ret = sprintf(buf, "%u\n", global.turbo_disabled);
+ else
+- ret = sprintf(buf, "%u\n", limits->no_turbo);
++ ret = sprintf(buf, "%u\n", global.no_turbo);
++
++ mutex_unlock(&intel_pstate_driver_lock);
+
+ return ret;
+ }
+@@ -1099,21 +1155,31 @@
+ if (ret != 1)
+ return -EINVAL;
+
++ mutex_lock(&intel_pstate_driver_lock);
++
++ if (!driver_registered) {
++ mutex_unlock(&intel_pstate_driver_lock);
++ return -EAGAIN;
++ }
++
+ mutex_lock(&intel_pstate_limits_lock);
+
+ update_turbo_state();
+- if (limits->turbo_disabled) {
++ if (global.turbo_disabled) {
+ pr_warn("Turbo disabled by BIOS or unavailable on processor\n");
+ mutex_unlock(&intel_pstate_limits_lock);
++ mutex_unlock(&intel_pstate_driver_lock);
+ return -EPERM;
+ }
+
+- limits->no_turbo = clamp_t(int, input, 0, 1);
++ global.no_turbo = clamp_t(int, input, 0, 1);
+
+ mutex_unlock(&intel_pstate_limits_lock);
+
+ intel_pstate_update_policies();
+
++ mutex_unlock(&intel_pstate_driver_lock);
++
+ return count;
+ }
+
+@@ -1127,21 +1193,27 @@
+ if (ret != 1)
+ return -EINVAL;
+
++ mutex_lock(&intel_pstate_driver_lock);
++
++ if (!driver_registered) {
++ mutex_unlock(&intel_pstate_driver_lock);
++ return -EAGAIN;
++ }
++
+ mutex_lock(&intel_pstate_limits_lock);
+
+- limits->max_sysfs_pct = clamp_t(int, input, 0 , 100);
+- limits->max_perf_pct = min(limits->max_policy_pct,
+- limits->max_sysfs_pct);
+- limits->max_perf_pct = max(limits->min_policy_pct,
+- limits->max_perf_pct);
+- limits->max_perf_pct = max(limits->min_perf_pct,
+- limits->max_perf_pct);
+- limits->max_perf = div_ext_fp(limits->max_perf_pct, 100);
++ global.max_sysfs_pct = clamp_t(int, input, 0 , 100);
++ global.max_perf_pct = min(global.max_policy_pct, global.max_sysfs_pct);
++ global.max_perf_pct = max(global.min_policy_pct, global.max_perf_pct);
++ global.max_perf_pct = max(global.min_perf_pct, global.max_perf_pct);
++ global.max_perf = percent_ext_fp(global.max_perf_pct);
+
+ mutex_unlock(&intel_pstate_limits_lock);
+
+ intel_pstate_update_policies();
+
++ mutex_unlock(&intel_pstate_driver_lock);
++
+ return count;
+ }
+
+@@ -1155,27 +1227,34 @@
+ if (ret != 1)
+ return -EINVAL;
+
++ mutex_lock(&intel_pstate_driver_lock);
++
++ if (!driver_registered) {
++ mutex_unlock(&intel_pstate_driver_lock);
++ return -EAGAIN;
++ }
++
+ mutex_lock(&intel_pstate_limits_lock);
+
+- limits->min_sysfs_pct = clamp_t(int, input, 0 , 100);
+- limits->min_perf_pct = max(limits->min_policy_pct,
+- limits->min_sysfs_pct);
+- limits->min_perf_pct = min(limits->max_policy_pct,
+- limits->min_perf_pct);
+- limits->min_perf_pct = min(limits->max_perf_pct,
+- limits->min_perf_pct);
+- limits->min_perf = div_ext_fp(limits->min_perf_pct, 100);
++ global.min_sysfs_pct = clamp_t(int, input, 0 , 100);
++ global.min_perf_pct = max(global.min_policy_pct, global.min_sysfs_pct);
++ global.min_perf_pct = min(global.max_policy_pct, global.min_perf_pct);
++ global.min_perf_pct = min(global.max_perf_pct, global.min_perf_pct);
++ global.min_perf = percent_ext_fp(global.min_perf_pct);
+
+ mutex_unlock(&intel_pstate_limits_lock);
+
+ intel_pstate_update_policies();
+
++ mutex_unlock(&intel_pstate_driver_lock);
++
+ return count;
+ }
+
+ show_one(max_perf_pct, max_perf_pct);
+ show_one(min_perf_pct, min_perf_pct);
+
++define_one_global_rw(status);
+ define_one_global_rw(no_turbo);
+ define_one_global_rw(max_perf_pct);
+ define_one_global_rw(min_perf_pct);
+@@ -1183,6 +1262,7 @@
+ define_one_global_ro(num_pstates);
+
+ static struct attribute *intel_pstate_attributes[] = {
++ &status.attr,
+ &no_turbo.attr,
+ &turbo_pct.attr,
+ &num_pstates.attr,
+@@ -1258,7 +1338,7 @@
+ {
+ u64 value;
+
+- rdmsrl(ATOM_RATIOS, value);
++ rdmsrl(MSR_ATOM_CORE_RATIOS, value);
+ return (value >> 8) & 0x7F;
+ }
+
+@@ -1266,7 +1346,7 @@
+ {
+ u64 value;
+
+- rdmsrl(ATOM_RATIOS, value);
++ rdmsrl(MSR_ATOM_CORE_RATIOS, value);
+ return (value >> 16) & 0x7F;
+ }
+
+@@ -1274,7 +1354,7 @@
+ {
+ u64 value;
+
+- rdmsrl(ATOM_TURBO_RATIOS, value);
++ rdmsrl(MSR_ATOM_CORE_TURBO_RATIOS, value);
+ return value & 0x7F;
+ }
+
+@@ -1285,7 +1365,7 @@
+ u32 vid;
+
+ val = (u64)pstate << 8;
+- if (limits->no_turbo && !limits->turbo_disabled)
++ if (global.no_turbo && !global.turbo_disabled)
+ val |= (u64)1 << 32;
+
+ vid_fp = cpudata->vid.min + mul_fp(
+@@ -1336,7 +1416,7 @@
+ {
+ u64 value;
+
+- rdmsrl(ATOM_VIDS, value);
++ rdmsrl(MSR_ATOM_CORE_VIDS, value);
+ cpudata->vid.min = int_tofp((value >> 8) & 0x7f);
+ cpudata->vid.max = int_tofp((value >> 16) & 0x7f);
+ cpudata->vid.ratio = div_fp(
+@@ -1344,7 +1424,7 @@
+ int_tofp(cpudata->pstate.max_pstate -
+ cpudata->pstate.min_pstate));
+
+- rdmsrl(ATOM_TURBO_VIDS, value);
++ rdmsrl(MSR_ATOM_CORE_TURBO_VIDS, value);
+ cpudata->vid.turbo = value & 0x7f;
+ }
+
+@@ -1364,48 +1444,71 @@
+ return (value >> 8) & 0xFF;
+ }
+
++static int core_get_tdp_ratio(u64 plat_info)
++{
++ /* Check how many TDP levels present */
++ if (plat_info & 0x600000000) {
++ u64 tdp_ctrl;
++ u64 tdp_ratio;
++ int tdp_msr;
++ int err;
++
++ /* Get the TDP level (0, 1, 2) to get ratios */
++ err = rdmsrl_safe(MSR_CONFIG_TDP_CONTROL, &tdp_ctrl);
++ if (err)
++ return err;
++
++ /* TDP MSR are continuous starting at 0x648 */
++ tdp_msr = MSR_CONFIG_TDP_NOMINAL + (tdp_ctrl & 0x03);
++ err = rdmsrl_safe(tdp_msr, &tdp_ratio);
++ if (err)
++ return err;
++
++ /* For level 1 and 2, bits[23:16] contain the ratio */
++ if (tdp_ctrl & 0x03)
++ tdp_ratio >>= 16;
++
++ tdp_ratio &= 0xff; /* ratios are only 8 bits long */
++ pr_debug("tdp_ratio %x\n", (int)tdp_ratio);
++
++ return (int)tdp_ratio;
++ }
++
++ return -ENXIO;
++}
++
+ static int core_get_max_pstate(void)
+ {
+ u64 tar;
+ u64 plat_info;
+ int max_pstate;
++ int tdp_ratio;
+ int err;
+
+ rdmsrl(MSR_PLATFORM_INFO, plat_info);
+ max_pstate = (plat_info >> 8) & 0xFF;
+
++ tdp_ratio = core_get_tdp_ratio(plat_info);
++ if (tdp_ratio <= 0)
++ return max_pstate;
++
++ if (hwp_active) {
++ /* Turbo activation ratio is not used on HWP platforms */
++ return tdp_ratio;
++ }
++
+ err = rdmsrl_safe(MSR_TURBO_ACTIVATION_RATIO, &tar);
+ if (!err) {
++ int tar_levels;
++
+ /* Do some sanity checking for safety */
+- if (plat_info & 0x600000000) {
+- u64 tdp_ctrl;
+- u64 tdp_ratio;
+- int tdp_msr;
+-
+- err = rdmsrl_safe(MSR_CONFIG_TDP_CONTROL, &tdp_ctrl);
+- if (err)
+- goto skip_tar;
+-
+- tdp_msr = MSR_CONFIG_TDP_NOMINAL + (tdp_ctrl & 0x3);
+- err = rdmsrl_safe(tdp_msr, &tdp_ratio);
+- if (err)
+- goto skip_tar;
+-
+- /* For level 1 and 2, bits[23:16] contain the ratio */
+- if (tdp_ctrl)
+- tdp_ratio >>= 16;
-
-- mperf = cpu->sample.mperf + delta_iowait_mperf;
-- cpu->prev_cummulative_iowait = cummulative_iowait;
-+ boost = cpu->iowait_boost;
-+ cpu->iowait_boost >>= 1;
+- tdp_ratio &= 0xff; /* ratios are only 8 bits long */
+- if (tdp_ratio - 1 == tar) {
+- max_pstate = tar;
+- pr_debug("max_pstate=TAC %x\n", max_pstate);
+- } else {
+- goto skip_tar;
+- }
++ tar_levels = tar & 0xff;
++ if (tdp_ratio - 1 == tar_levels) {
++ max_pstate = tar_levels;
++ pr_debug("max_pstate=TAC %x\n", max_pstate);
+ }
+ }
+
+-skip_tar:
+ return max_pstate;
+ }
+
+@@ -1432,7 +1535,7 @@
+ u64 val;
+
+ val = (u64)pstate << 8;
+- if (limits->no_turbo && !limits->turbo_disabled)
++ if (global.no_turbo && !global.turbo_disabled)
+ val |= (u64)1 << 32;
+
+ return val;
+@@ -1558,9 +1661,9 @@
+ int max_perf = cpu->pstate.turbo_pstate;
+ int max_perf_adj;
+ int min_perf;
+- struct perf_limits *perf_limits = limits;
++ struct perf_limits *perf_limits = &global;
+
+- if (limits->no_turbo || limits->turbo_disabled)
++ if (global.no_turbo || global.turbo_disabled)
+ max_perf = cpu->pstate.max_pstate;
+
+ if (per_cpu_limits)
+@@ -1695,7 +1798,7 @@
+
+ sample->busy_scaled = busy_frac * 100;
+
+- target = limits->no_turbo || limits->turbo_disabled ?
++ target = global.no_turbo || global.turbo_disabled ?
+ cpu->pstate.max_pstate : cpu->pstate.turbo_pstate;
+ target += target >> 2;
+ target = mul_fp(target, busy_frac);
+@@ -1759,13 +1862,11 @@
+
+ intel_pstate_get_min_max(cpu, &min_perf, &max_perf);
+ pstate = clamp_t(int, pstate, min_perf, max_perf);
+- trace_cpu_frequency(pstate * cpu->pstate.scaling, cpu->cpu);
+ return pstate;
+ }
+
+ static void intel_pstate_update_pstate(struct cpudata *cpu, int pstate)
+ {
+- pstate = intel_pstate_prepare_request(cpu, pstate);
+ if (pstate == cpu->pstate.current_pstate)
+ return;
+
+@@ -1785,6 +1886,8 @@
+
+ update_turbo_state();
+
++ target_pstate = intel_pstate_prepare_request(cpu, target_pstate);
++ trace_cpu_frequency(target_pstate * cpu->pstate.scaling, cpu->cpu);
+ intel_pstate_update_pstate(cpu, target_pstate);
+
+ sample = &cpu->sample;
+@@ -1952,53 +2055,37 @@
+ synchronize_sched();
+ }
+
+-static void intel_pstate_set_performance_limits(struct perf_limits *limits)
+-{
+- limits->no_turbo = 0;
+- limits->turbo_disabled = 0;
+- limits->max_perf_pct = 100;
+- limits->max_perf = int_ext_tofp(1);
+- limits->min_perf_pct = 100;
+- limits->min_perf = int_ext_tofp(1);
+- limits->max_policy_pct = 100;
+- limits->max_sysfs_pct = 100;
+- limits->min_policy_pct = 0;
+- limits->min_sysfs_pct = 0;
+-}
+-
+ static void intel_pstate_update_perf_limits(struct cpufreq_policy *policy,
+ struct perf_limits *limits)
+ {
++ int32_t max_policy_perf, min_policy_perf;
+
+- limits->max_policy_pct = DIV_ROUND_UP(policy->max * 100,
+- policy->cpuinfo.max_freq);
+- limits->max_policy_pct = clamp_t(int, limits->max_policy_pct, 0, 100);
++ max_policy_perf = div_ext_fp(policy->max, policy->cpuinfo.max_freq);
++ max_policy_perf = clamp_t(int32_t, max_policy_perf, 0, int_ext_tofp(1));
+ if (policy->max == policy->min) {
+- limits->min_policy_pct = limits->max_policy_pct;
++ min_policy_perf = max_policy_perf;
+ } else {
+- limits->min_policy_pct = DIV_ROUND_UP(policy->min * 100,
+- policy->cpuinfo.max_freq);
+- limits->min_policy_pct = clamp_t(int, limits->min_policy_pct,
+- 0, 100);
+- }
+-
+- /* Normalize user input to [min_policy_pct, max_policy_pct] */
+- limits->min_perf_pct = max(limits->min_policy_pct,
+- limits->min_sysfs_pct);
+- limits->min_perf_pct = min(limits->max_policy_pct,
+- limits->min_perf_pct);
+- limits->max_perf_pct = min(limits->max_policy_pct,
+- limits->max_sysfs_pct);
+- limits->max_perf_pct = max(limits->min_policy_pct,
+- limits->max_perf_pct);
++ min_policy_perf = div_ext_fp(policy->min,
++ policy->cpuinfo.max_freq);
++ min_policy_perf = clamp_t(int32_t, min_policy_perf,
++ 0, max_policy_perf);
++ }
++
++ /* Normalize user input to [min_perf, max_perf] */
++ limits->min_perf = max(min_policy_perf,
++ percent_ext_fp(limits->min_sysfs_pct));
++ limits->min_perf = min(limits->min_perf, max_policy_perf);
++ limits->max_perf = min(max_policy_perf,
++ percent_ext_fp(limits->max_sysfs_pct));
++ limits->max_perf = max(min_policy_perf, limits->max_perf);
+
+- /* Make sure min_perf_pct <= max_perf_pct */
+- limits->min_perf_pct = min(limits->max_perf_pct, limits->min_perf_pct);
++ /* Make sure min_perf <= max_perf */
++ limits->min_perf = min(limits->min_perf, limits->max_perf);
+
+- limits->min_perf = div_ext_fp(limits->min_perf_pct, 100);
+- limits->max_perf = div_ext_fp(limits->max_perf_pct, 100);
+ limits->max_perf = round_up(limits->max_perf, EXT_FRAC_BITS);
+ limits->min_perf = round_up(limits->min_perf, EXT_FRAC_BITS);
++ limits->max_perf_pct = fp_ext_toint(limits->max_perf * 100);
++ limits->min_perf_pct = fp_ext_toint(limits->min_perf * 100);
+
+ pr_debug("cpu:%d max_perf_pct:%d min_perf_pct:%d\n", policy->cpu,
+ limits->max_perf_pct, limits->min_perf_pct);
+@@ -2007,7 +2094,7 @@
+ static int intel_pstate_set_policy(struct cpufreq_policy *policy)
+ {
+ struct cpudata *cpu;
+- struct perf_limits *perf_limits = NULL;
++ struct perf_limits *perf_limits = &global;
+
+ if (!policy->cpuinfo.max_freq)
+ return -ENODEV;
+@@ -2030,28 +2117,8 @@
+
+ mutex_lock(&intel_pstate_limits_lock);
+
+- if (policy->policy == CPUFREQ_POLICY_PERFORMANCE) {
+- if (!perf_limits) {
+- limits = &performance_limits;
+- perf_limits = limits;
+- }
+- if (policy->max >= policy->cpuinfo.max_freq &&
+- !limits->no_turbo) {
+- pr_debug("set performance\n");
+- intel_pstate_set_performance_limits(perf_limits);
+- goto out;
+- }
+- } else {
+- pr_debug("set powersave\n");
+- if (!perf_limits) {
+- limits = &powersave_limits;
+- perf_limits = limits;
+- }
+-
+- }
+-
+ intel_pstate_update_perf_limits(policy, perf_limits);
+- out:
++
+ if (cpu->policy == CPUFREQ_POLICY_PERFORMANCE) {
+ /*
+ * NOHZ_FULL CPUs need this as the governor callback may not
+@@ -2072,6 +2139,13 @@
+
+ static int intel_pstate_verify_policy(struct cpufreq_policy *policy)
+ {
++ struct cpudata *cpu = all_cpu_data[policy->cpu];
++
++ update_turbo_state();
++ policy->cpuinfo.max_freq = global.turbo_disabled || global.no_turbo ?
++ cpu->pstate.max_freq :
++ cpu->pstate.turbo_freq;
++
+ cpufreq_verify_within_cpu_limits(policy);
+
+ if (policy->policy != CPUFREQ_POLICY_POWERSAVE &&
+@@ -2083,9 +2157,9 @@
+ unsigned int max_freq, min_freq;
+
+ max_freq = policy->cpuinfo.max_freq *
+- limits->max_sysfs_pct / 100;
++ global.max_sysfs_pct / 100;
+ min_freq = policy->cpuinfo.max_freq *
+- limits->min_sysfs_pct / 100;
++ global.min_sysfs_pct / 100;
+ cpufreq_verify_within_limits(policy, min_freq, max_freq);
+ }
+
+@@ -2128,13 +2202,8 @@
+
+ cpu = all_cpu_data[policy->cpu];
- /*
-- * The load can be estimated as the ratio of the mperf counter
-- * running at a constant frequency during active periods
-- * (C0) and the time stamp counter running at the same frequency
-- * also during C-states.
+- * We need sane value in the cpu->perf_limits, so inherit from global
+- * perf_limits limits, which are seeded with values based on the
+- * CONFIG_CPU_FREQ_DEFAULT_GOV_*, during boot up.
- */
-- cpu_load = div64_u64(int_tofp(100) * mperf, sample->tsc);
-- cpu->sample.busy_scaled = cpu_load;
-+ if (busy_frac < boost)
-+ busy_frac = boost;
+ if (per_cpu_limits)
+- memcpy(cpu->perf_limits, limits, sizeof(struct perf_limits));
++ intel_pstate_init_limits(cpu->perf_limits);
+
+ policy->min = cpu->pstate.min_pstate * cpu->pstate.scaling;
+ policy->max = cpu->pstate.turbo_pstate * cpu->pstate.scaling;
+@@ -2142,7 +2211,7 @@
+ /* cpuinfo and default policy values */
+ policy->cpuinfo.min_freq = cpu->pstate.min_pstate * cpu->pstate.scaling;
+ update_turbo_state();
+- policy->cpuinfo.max_freq = limits->turbo_disabled ?
++ policy->cpuinfo.max_freq = global.turbo_disabled ?
+ cpu->pstate.max_pstate : cpu->pstate.turbo_pstate;
+ policy->cpuinfo.max_freq *= cpu->pstate.scaling;
+
+@@ -2162,7 +2231,7 @@
+ return ret;
+
+ policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
+- if (limits->min_perf_pct == 100 && limits->max_perf_pct == 100)
++ if (IS_ENABLED(CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE))
+ policy->policy = CPUFREQ_POLICY_PERFORMANCE;
+ else
+ policy->policy = CPUFREQ_POLICY_POWERSAVE;
+@@ -2186,46 +2255,16 @@
+ static int intel_cpufreq_verify_policy(struct cpufreq_policy *policy)
+ {
+ struct cpudata *cpu = all_cpu_data[policy->cpu];
+- struct perf_limits *perf_limits = limits;
+
+ update_turbo_state();
+- policy->cpuinfo.max_freq = limits->turbo_disabled ?
++ policy->cpuinfo.max_freq = global.no_turbo || global.turbo_disabled ?
+ cpu->pstate.max_freq : cpu->pstate.turbo_freq;
+
+ cpufreq_verify_within_cpu_limits(policy);
+
+- if (per_cpu_limits)
+- perf_limits = cpu->perf_limits;
+-
+- mutex_lock(&intel_pstate_limits_lock);
+-
+- intel_pstate_update_perf_limits(policy, perf_limits);
+-
+- mutex_unlock(&intel_pstate_limits_lock);
+-
+ return 0;
+ }
+
+-static unsigned int intel_cpufreq_turbo_update(struct cpudata *cpu,
+- struct cpufreq_policy *policy,
+- unsigned int target_freq)
+-{
+- unsigned int max_freq;
+-
+- update_turbo_state();
+-
+- max_freq = limits->no_turbo || limits->turbo_disabled ?
+- cpu->pstate.max_freq : cpu->pstate.turbo_freq;
+- policy->cpuinfo.max_freq = max_freq;
+- if (policy->max > max_freq)
+- policy->max = max_freq;
+-
+- if (target_freq > max_freq)
+- target_freq = max_freq;
+-
+- return target_freq;
+-}
+-
+ static int intel_cpufreq_target(struct cpufreq_policy *policy,
+ unsigned int target_freq,
+ unsigned int relation)
+@@ -2234,8 +2273,10 @@
+ struct cpufreq_freqs freqs;
+ int target_pstate;
+
++ update_turbo_state();
++
+ freqs.old = policy->cur;
+- freqs.new = intel_cpufreq_turbo_update(cpu, policy, target_freq);
++ freqs.new = target_freq;
+
+ cpufreq_freq_transition_begin(policy, &freqs);
+ switch (relation) {
+@@ -2255,6 +2296,7 @@
+ wrmsrl_on_cpu(policy->cpu, MSR_IA32_PERF_CTL,
+ pstate_funcs.get_val(cpu, target_pstate));
+ }
++ freqs.new = target_pstate * cpu->pstate.scaling;
+ cpufreq_freq_transition_end(policy, &freqs, false);
+
+ return 0;
+@@ -2266,10 +2308,12 @@
+ struct cpudata *cpu = all_cpu_data[policy->cpu];
+ int target_pstate;
+
+- target_freq = intel_cpufreq_turbo_update(cpu, policy, target_freq);
++ update_turbo_state();
++
+ target_pstate = DIV_ROUND_UP(target_freq, cpu->pstate.scaling);
++ target_pstate = intel_pstate_prepare_request(cpu, target_pstate);
+ intel_pstate_update_pstate(cpu, target_pstate);
+- return target_freq;
++ return target_pstate * cpu->pstate.scaling;
+ }
+
+ static int intel_cpufreq_cpu_init(struct cpufreq_policy *policy)
+@@ -2299,6 +2343,113 @@
+
+ static struct cpufreq_driver *intel_pstate_driver = &intel_pstate;
+
++static void intel_pstate_driver_cleanup(void)
++{
++ unsigned int cpu;
++
++ get_online_cpus();
++ for_each_online_cpu(cpu) {
++ if (all_cpu_data[cpu]) {
++ if (intel_pstate_driver == &intel_pstate)
++ intel_pstate_clear_update_util_hook(cpu);
++
++ kfree(all_cpu_data[cpu]);
++ all_cpu_data[cpu] = NULL;
++ }
++ }
++ put_online_cpus();
++}
++
++static int intel_pstate_register_driver(void)
++{
++ int ret;
++
++ intel_pstate_init_limits(&global);
++
++ ret = cpufreq_register_driver(intel_pstate_driver);
++ if (ret) {
++ intel_pstate_driver_cleanup();
++ return ret;
++ }
++
++ mutex_lock(&intel_pstate_limits_lock);
++ driver_registered = true;
++ mutex_unlock(&intel_pstate_limits_lock);
++
++ if (intel_pstate_driver == &intel_pstate && !hwp_active &&
++ pstate_funcs.get_target_pstate != get_target_pstate_use_cpu_load)
++ intel_pstate_debug_expose_params();
++
++ return 0;
++}
++
++static int intel_pstate_unregister_driver(void)
++{
++ if (hwp_active)
++ return -EBUSY;
++
++ if (intel_pstate_driver == &intel_pstate && !hwp_active &&
++ pstate_funcs.get_target_pstate != get_target_pstate_use_cpu_load)
++ intel_pstate_debug_hide_params();
++
++ mutex_lock(&intel_pstate_limits_lock);
++ driver_registered = false;
++ mutex_unlock(&intel_pstate_limits_lock);
++
++ cpufreq_unregister_driver(intel_pstate_driver);
++ intel_pstate_driver_cleanup();
++
++ return 0;
++}
++
++static ssize_t intel_pstate_show_status(char *buf)
++{
++ if (!driver_registered)
++ return sprintf(buf, "off\n");
++
++ return sprintf(buf, "%s\n", intel_pstate_driver == &intel_pstate ?
++ "active" : "passive");
++}
++
++static int intel_pstate_update_status(const char *buf, size_t size)
++{
++ int ret;
++
++ if (size == 3 && !strncmp(buf, "off", size))
++ return driver_registered ?
++ intel_pstate_unregister_driver() : -EINVAL;
++
++ if (size == 6 && !strncmp(buf, "active", size)) {
++ if (driver_registered) {
++ if (intel_pstate_driver == &intel_pstate)
++ return 0;
++
++ ret = intel_pstate_unregister_driver();
++ if (ret)
++ return ret;
++ }
++
++ intel_pstate_driver = &intel_pstate;
++ return intel_pstate_register_driver();
++ }
++
++ if (size == 7 && !strncmp(buf, "passive", size)) {
++ if (driver_registered) {
++ if (intel_pstate_driver != &intel_pstate)
++ return 0;
++
++ ret = intel_pstate_unregister_driver();
++ if (ret)
++ return ret;
++ }
++
++ intel_pstate_driver = &intel_cpufreq;
++ return intel_pstate_register_driver();
++ }
++
++ return -EINVAL;
++}
++
+ static int no_load __initdata;
+ static int no_hwp __initdata;
+ static int hwp_only __initdata;
+@@ -2486,9 +2637,9 @@
+
+ static int __init intel_pstate_init(void)
+ {
+- int cpu, rc = 0;
+ const struct x86_cpu_id *id;
+ struct cpu_defaults *cpu_def;
++ int rc = 0;
-- return get_avg_pstate(cpu) - pid_calc(&cpu->pid, cpu_load);
-+ sample->busy_scaled = busy_frac * 100;
-+ return get_avg_pstate(cpu) - pid_calc(&cpu->pid, sample->busy_scaled);
+ if (no_load)
+ return -ENODEV;
+@@ -2520,45 +2671,29 @@
+ if (intel_pstate_platform_pwr_mgmt_exists())
+ return -ENODEV;
+
++ if (!hwp_active && hwp_only)
++ return -ENOTSUPP;
++
+ pr_info("Intel P-state driver initializing\n");
+
+ all_cpu_data = vzalloc(sizeof(void *) * num_possible_cpus());
+ if (!all_cpu_data)
+ return -ENOMEM;
+
+- if (!hwp_active && hwp_only)
+- goto out;
+-
+ intel_pstate_request_control_from_smm();
+
+- rc = cpufreq_register_driver(intel_pstate_driver);
+- if (rc)
+- goto out;
+-
+- if (intel_pstate_driver == &intel_pstate && !hwp_active &&
+- pstate_funcs.get_target_pstate != get_target_pstate_use_cpu_load)
+- intel_pstate_debug_expose_params();
+-
+ intel_pstate_sysfs_expose_params();
+
++ mutex_lock(&intel_pstate_driver_lock);
++ rc = intel_pstate_register_driver();
++ mutex_unlock(&intel_pstate_driver_lock);
++ if (rc)
++ return rc;
++
+ if (hwp_active)
+ pr_info("HWP enabled\n");
+
+- return rc;
+-out:
+- get_online_cpus();
+- for_each_online_cpu(cpu) {
+- if (all_cpu_data[cpu]) {
+- if (intel_pstate_driver == &intel_pstate)
+- intel_pstate_clear_update_util_hook(cpu);
+-
+- kfree(all_cpu_data[cpu]);
+- }
+- }
+-
+- put_online_cpus();
+- vfree(all_cpu_data);
+- return -ENODEV;
++ return 0;
}
+ device_initcall(intel_pstate_init);
- static inline int32_t get_target_pstate_use_performance(struct cpudata *cpu)
diff --git a/linux-macbook.install b/linux.install
index da6dcfa7b76..da6dcfa7b76 100644
--- a/linux-macbook.install
+++ b/linux.install
diff --git a/linux-macbook.preset b/linux.preset
index 66709a8c153..66709a8c153 100644
--- a/linux-macbook.preset
+++ b/linux.preset
diff --git a/macbook-suspend.patch b/macbook-suspend.patch
index 2b85a931d71..7f3cc8dbc15 100644
--- a/macbook-suspend.patch
+++ b/macbook-suspend.patch
@@ -14,7 +14,7 @@ index ee72ebe..e347047 100644
@@ -3405,6 +3407,11 @@ void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev)
end = __end_pci_fixups_final;
break;
-
+
+ case pci_fixup_assign:
+ start = __start_pci_fixups_assign;
+ end = __end_pci_fixups_assign;
@@ -36,19 +36,18 @@ index 55641a3..730d6fd 100644
/* Fall through */
default:
pbus_size_io(bus, realloc_head ? 0 : additional_io_size,
-diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 6a67ab9..3ba05f0 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
-@@ -283,6 +283,9 @@
+@@ -299,6 +299,9 @@
VMLINUX_SYMBOL(__start_pci_fixups_final) = .; \
- *(.pci_fixup_final) \
+ KEEP(*(.pci_fixup_final)) \
VMLINUX_SYMBOL(__end_pci_fixups_final) = .; \
+ VMLINUX_SYMBOL(__start_pci_fixups_assign) = .; \
-+ *(.pci_fixup_assign) \
++ KEEP(*(.pci_fixup_assign)) \
+ VMLINUX_SYMBOL(__end_pci_fixups_assign) = .; \
VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \
- *(.pci_fixup_enable) \
+ KEEP(*(.pci_fixup_enable)) \
VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \
diff --git a/include/linux/pci.h b/include/linux/pci.h
index b67e4df..14a35bb 100644
@@ -77,10 +76,9 @@ index 48958d3..248acdb 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -877,6 +877,7 @@ static void check_section(const char *modname, struct elf_info *elf,
-
+
#define ALL_PCI_INIT_SECTIONS \
".pci_fixup_early", ".pci_fixup_header", ".pci_fixup_final", \
+ ".pci_fixup_assign", \
".pci_fixup_enable", ".pci_fixup_resume", \
".pci_fixup_resume_early", ".pci_fixup_suspend"
-
diff --git a/net_handle_no_dst_on_skb_in_icmp6_send.patch b/net_handle_no_dst_on_skb_in_icmp6_send.patch
deleted file mode 100644
index 06448a90aff..00000000000
--- a/net_handle_no_dst_on_skb_in_icmp6_send.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 79dc7e3f1cd323be4c81aa1a94faa1b3ed987fb2 Mon Sep 17 00:00:00 2001
-From: David Ahern <dsa@cumulusnetworks.com>
-Date: Sun, 27 Nov 2016 18:52:53 -0800
-Subject: [PATCH] net: handle no dst on skb in icmp6_send
-
-Andrey reported the following while fuzzing the kernel with syzkaller:
-
-kasan: CONFIG_KASAN_INLINE enabled
-kasan: GPF could be caused by NULL-ptr deref or user memory access
-general protection fault: 0000 [#1] SMP KASAN
-Modules linked in:
-CPU: 0 PID: 3859 Comm: a.out Not tainted 4.9.0-rc6+ #429
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-task: ffff8800666d4200 task.stack: ffff880067348000
-RIP: 0010:[<ffffffff833617ec>] [<ffffffff833617ec>]
-icmp6_send+0x5fc/0x1e30 net/ipv6/icmp.c:451
-RSP: 0018:ffff88006734f2c0 EFLAGS: 00010206
-RAX: ffff8800666d4200 RBX: 0000000000000000 RCX: 0000000000000000
-RDX: 0000000000000000 RSI: dffffc0000000000 RDI: 0000000000000018
-RBP: ffff88006734f630 R08: ffff880064138418 R09: 0000000000000003
-R10: dffffc0000000000 R11: 0000000000000005 R12: 0000000000000000
-R13: ffffffff84e7e200 R14: ffff880064138484 R15: ffff8800641383c0
-FS: 00007fb3887a07c0(0000) GS:ffff88006cc00000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-CR2: 0000000020000000 CR3: 000000006b040000 CR4: 00000000000006f0
-Stack:
- ffff8800666d4200 ffff8800666d49f8 ffff8800666d4200 ffffffff84c02460
- ffff8800666d4a1a 1ffff1000ccdaa2f ffff88006734f498 0000000000000046
- ffff88006734f440 ffffffff832f4269 ffff880064ba7456 0000000000000000
-Call Trace:
- [<ffffffff83364ddc>] icmpv6_param_prob+0x2c/0x40 net/ipv6/icmp.c:557
- [< inline >] ip6_tlvopt_unknown net/ipv6/exthdrs.c:88
- [<ffffffff83394405>] ip6_parse_tlv+0x555/0x670 net/ipv6/exthdrs.c:157
- [<ffffffff8339a759>] ipv6_parse_hopopts+0x199/0x460 net/ipv6/exthdrs.c:663
- [<ffffffff832ee773>] ipv6_rcv+0xfa3/0x1dc0 net/ipv6/ip6_input.c:191
- ...
-
-icmp6_send / icmpv6_send is invoked for both rx and tx paths. In both
-cases the dst->dev should be preferred for determining the L3 domain
-if the dst has been set on the skb. Fallback to the skb->dev if it has
-not. This covers the case reported here where icmp6_send is invoked on
-Rx before the route lookup.
-
-Fixes: 5d41ce29e ("net: icmp6_send should use dst dev to determine L3 domain")
-Reported-by: Andrey Konovalov <andreyknvl@google.com>
-Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- net/ipv6/icmp.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
-index 7370ad2..2772004 100644
---- a/net/ipv6/icmp.c
-+++ b/net/ipv6/icmp.c
-@@ -447,8 +447,10 @@ static void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,
-
- if (__ipv6_addr_needs_scope_id(addr_type))
- iif = skb->dev->ifindex;
-- else
-- iif = l3mdev_master_ifindex(skb_dst(skb)->dev);
-+ else {
-+ dst = skb_dst(skb);
-+ iif = l3mdev_master_ifindex(dst ? dst->dev : skb->dev);
-+ }
-
- /*
- * Must not send error if the source does not uniquely
diff --git a/poweroff-quirk-workaround.patch b/poweroff-quirk-workaround.patch
index 833181df379..1e8613dcd84 100644
--- a/poweroff-quirk-workaround.patch
+++ b/poweroff-quirk-workaround.patch
@@ -2,7 +2,7 @@
+++ linux-4.9/drivers/pci/quirks.c 2017-02-09 21:27:32.370965329 -0500
@@ -4551,6 +4551,24 @@
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x443, quirk_intel_qat_vf_cap);
-
+
/*
+ * On Mac Pro 11, the allocation of pci bridge memory resource
+ * broke ACPI Sleep Type register region.