summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin M. Forbes <jforbes@fedoraproject.org>2017-12-04 07:44:43 -0600
committerJustin M. Forbes <jforbes@fedoraproject.org>2017-12-04 07:44:43 -0600
commitc5708d5b6ee91238bbe2b0176ddf284b1f71251c (patch)
tree48c9327b2114ee201e6d4820ab86295242649a02
parent6f8cd48d501f2cb2c6a1b57fd5815a1970388775 (diff)
downloadkernel-c5708d5b6ee91238bbe2b0176ddf284b1f71251c.tar.gz
kernel-c5708d5b6ee91238bbe2b0176ddf284b1f71251c.tar.xz
kernel-c5708d5b6ee91238bbe2b0176ddf284b1f71251c.zip
Linux v4.14.3 rebase
-rw-r--r--0001-PATCH-staging-rtl8822be-fix-wrong-dma-unmap-len.patch46
-rw-r--r--0001-power-supply-max17042_battery-Add-support-for-ACPI-e.patch78
-rw-r--r--0001-powerpc-64s-radix-Fix-128TB-512TB-virtual-address-bo.patch204
-rw-r--r--0002-power-supply-max17042_battery-Fix-ACPI-interrupt-iss.patch80
-rw-r--r--0002-powerpc-64s-hash-Fix-512T-hint-detection-to-use-128T.patch49
-rw-r--r--0003-powerpc-64s-hash-Fix-128TB-512TB-virtual-address-bou.patch129
-rw-r--r--0004-powerpc-64s-hash-Fix-fork-with-512TB-process-address.patch48
-rw-r--r--0005-powerpc-64s-hash-Allow-MAP_FIXED-allocations-to-cros.patch38
-rw-r--r--0011-Input-goodix-Add-support-for-capacitive-home-button.patch53
-rw-r--r--0013-iio-accel-bmc150-Add-support-for-BOSC0200-ACPI-devic.patch32
-rw-r--r--0015-i2c-cht-wc-Add-Intel-Cherry-Trail-Whiskey-Cove-SMBUS.patch410
-rw-r--r--1-2-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-NMI.patch296
-rw-r--r--1-3-net-set-tb--fast_sk_family.patch50
-rw-r--r--2-3-net-use-inet6_rcv_saddr-to-compare-sockets.patch44
-rw-r--r--3-3-inet-fix-improper-empty-comparison.patch53
-rw-r--r--CVE-2017-16538.patch166
-rw-r--r--CVE-2017-7477.patch73
-rw-r--r--HID-rmi-Check-that-a-device-is-a-RMI-device-before-c.patch54
-rw-r--r--Input-synaptics---Disable-kernel-tracking-on-SMBus-devices.patch51
-rw-r--r--ahci-don-t-ignore-result-code-of-ahci_reset_controller.patch77
-rw-r--r--allwinner-net-emac.patch1469
-rw-r--r--arm-of-restrict-dma-configuration.patch121
-rw-r--r--arm-tegra-fix-gpu-iommu.patch39
-rw-r--r--arm64-Revert-allwinner-a64-pine64-Use-dcdc1-regulato.patch41
-rw-r--r--arm64-aw64-devices.patch712
-rw-r--r--arm64-cavium-fixes.patch455
-rw-r--r--arm64-socionext-96b-enablement.patch201
-rw-r--r--arm64-xgene-acpi-fix.patch38
-rw-r--r--baseconfig/CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ1
-rw-r--r--baseconfig/CONFIG_ALTERA_MSGDMA1
-rw-r--r--baseconfig/CONFIG_ATH10K_USB1
-rw-r--r--baseconfig/CONFIG_BATTERY_MAX1721X1
-rw-r--r--baseconfig/CONFIG_BLK_CPQ_CISS_DA1
-rw-r--r--baseconfig/CONFIG_BNXT_FLOWER_OFFLOAD1
-rw-r--r--baseconfig/CONFIG_BPF_STREAM_PARSER1
-rw-r--r--baseconfig/CONFIG_CCS8111
-rw-r--r--baseconfig/CONFIG_CEC_PIN1
-rw-r--r--baseconfig/CONFIG_CISS_SCSI_TAPE1
-rw-r--r--baseconfig/CONFIG_CLK_HSDK1
-rw-r--r--baseconfig/CONFIG_CLOCK_THERMAL1
-rw-r--r--baseconfig/CONFIG_CRYPTO_DEV_SP_CCP1
-rw-r--r--baseconfig/CONFIG_DEVFREQ_THERMAL1
-rw-r--r--baseconfig/CONFIG_DP83867_PHY2
-rw-r--r--baseconfig/CONFIG_DVB_DDBRIDGE_MSIENABLE1
-rw-r--r--baseconfig/CONFIG_GPIO_BD9571MWV1
-rw-r--r--baseconfig/CONFIG_GPIO_TPS684701
-rw-r--r--baseconfig/CONFIG_INFINIBAND_EXP_USER_ACCESS1
-rw-r--r--baseconfig/CONFIG_INPUT_PWM_VIBRA1
-rw-r--r--baseconfig/CONFIG_INPUT_RK805_PWRKEY1
-rw-r--r--baseconfig/CONFIG_IP_DCCP2
-rw-r--r--baseconfig/CONFIG_IR_GPIO_TX1
-rw-r--r--baseconfig/CONFIG_IR_PWM_TX1
-rw-r--r--baseconfig/CONFIG_LEDS_AS3645A1
-rw-r--r--baseconfig/CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT1
-rw-r--r--baseconfig/CONFIG_LTC24711
-rw-r--r--baseconfig/CONFIG_MDIO_I2C1
-rw-r--r--baseconfig/CONFIG_MFD_BD9571MWV1
-rw-r--r--baseconfig/CONFIG_MFD_TPS684701
-rw-r--r--baseconfig/CONFIG_MLX5_ESWITCH1
-rw-r--r--baseconfig/CONFIG_MLX5_MPFS1
-rw-r--r--baseconfig/CONFIG_MMC_BLOCK_BOUNCE1
-rw-r--r--baseconfig/CONFIG_NET_NSH1
-rw-r--r--baseconfig/CONFIG_NET_VENDOR_HUAWEI1
-rw-r--r--baseconfig/CONFIG_NFT_FIB_NETDEV1
-rw-r--r--baseconfig/CONFIG_PHYLINK1
-rw-r--r--baseconfig/CONFIG_PHY_MVEBU_CP110_COMPHY1
-rw-r--r--baseconfig/CONFIG_PI4331
-rw-r--r--baseconfig/CONFIG_PINCTRL_RK8051
-rw-r--r--baseconfig/CONFIG_PINCTRL_SPRD1
-rw-r--r--baseconfig/CONFIG_PINCTRL_SPRD_SC98601
-rw-r--r--baseconfig/CONFIG_PM_OPP2
-rw-r--r--baseconfig/CONFIG_QCOM_GLINK_SSR1
-rw-r--r--baseconfig/CONFIG_R8822BE1
-rw-r--r--baseconfig/CONFIG_REGULATOR_BD9571MWV1
-rw-r--r--baseconfig/CONFIG_RESET_ATTACK_MITIGATION1
-rw-r--r--baseconfig/CONFIG_RESET_HSDK_V11
-rw-r--r--baseconfig/CONFIG_RMNET1
-rw-r--r--baseconfig/CONFIG_ROCKCHIP_PHY1
-rw-r--r--baseconfig/CONFIG_RPMSG_QCOM_GLINK_SMEM1
-rw-r--r--baseconfig/CONFIG_SENSORS_IBM_CFFPS1
-rw-r--r--baseconfig/CONFIG_SENSORS_TPS536791
-rw-r--r--baseconfig/CONFIG_SERIO_GPIO_PS21
-rw-r--r--baseconfig/CONFIG_SFP1
-rw-r--r--baseconfig/CONFIG_SLAB_FREELIST_HARDENED1
-rw-r--r--baseconfig/CONFIG_SND_BCD20002
-rw-r--r--baseconfig/CONFIG_SND_HDA_POWER_SAVE_DEFAULT2
-rw-r--r--baseconfig/CONFIG_SND_SOC_CS431301
-rw-r--r--baseconfig/CONFIG_SND_SOC_WM85241
-rw-r--r--baseconfig/CONFIG_SQUASHFS_ZSTD1
-rw-r--r--baseconfig/CONFIG_STRING_SELFTEST1
-rw-r--r--baseconfig/CONFIG_W1_SLAVE_DS28051
-rw-r--r--baseconfig/CONFIG_WIL6210_DEBUGFS1
-rw-r--r--baseconfig/CONFIG_ZRAM_WRITEBACK1
-rw-r--r--baseconfig/arm/CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG1
-rw-r--r--baseconfig/arm/CONFIG_CRYPTO_SHA256_ARM642
-rw-r--r--baseconfig/arm/CONFIG_DRM_DW_HDMI_CEC1
-rw-r--r--baseconfig/arm/CONFIG_DRM_VC4_HDMI_CEC1
-rw-r--r--baseconfig/arm/CONFIG_EXTCON_USBC_CROS_EC1
-rw-r--r--baseconfig/arm/CONFIG_HW_RANDOM_IMX_RNGC1
-rw-r--r--baseconfig/arm/CONFIG_I2C_DESIGNWARE_CORE2
-rw-r--r--baseconfig/arm/CONFIG_I2C_DESIGNWARE_PLATFORM2
-rw-r--r--baseconfig/arm/CONFIG_MESON_GX_SOCINFO1
-rw-r--r--baseconfig/arm/CONFIG_MTD_NAND_PXA3xx (renamed from baseconfig/arm/armv7/CONFIG_MTD_NAND_PXA3xx)0
-rw-r--r--baseconfig/arm/CONFIG_ROCKCHIP_PHY1
-rw-r--r--baseconfig/arm/CONFIG_SND_SOC_TEGRA20_AC97 (renamed from baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_AC97)0
-rw-r--r--baseconfig/arm/CONFIG_SND_SOC_TEGRA20_DAS (renamed from baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_DAS)0
-rw-r--r--baseconfig/arm/CONFIG_SND_SOC_TEGRA20_I2S (renamed from baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA20_I2S)0
-rw-r--r--baseconfig/arm/CONFIG_SND_SOC_TEGRA20_SPDIF (renamed from baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_SPDIF)0
-rw-r--r--baseconfig/arm/CONFIG_SND_SOC_TEGRA30_AHUB (renamed from baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA30_AHUB)0
-rw-r--r--baseconfig/arm/CONFIG_SND_SOC_TEGRA30_I2S (renamed from baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA30_I2S)0
-rw-r--r--baseconfig/arm/CONFIG_TINYDRM_REPAPER1
-rw-r--r--baseconfig/arm/CONFIG_TINYDRM_ST75861
-rw-r--r--baseconfig/arm/CONFIG_VIDEO_MESON_AO_CEC1
-rw-r--r--baseconfig/arm/arm64/CONFIG_ARM64_PMEM1
-rw-r--r--baseconfig/arm/arm64/CONFIG_CRYPTO_AES_ARM642
-rw-r--r--baseconfig/arm/arm64/CONFIG_GPIO_THUNDERX1
-rw-r--r--baseconfig/arm/arm64/CONFIG_MMC_QCOM_DML2
-rw-r--r--baseconfig/arm/arm64/CONFIG_PHY_MVEBU_CP110_COMPHY1
-rw-r--r--baseconfig/arm/arm64/CONFIG_USB_CONFIGFS_F_LB_SS1
-rw-r--r--baseconfig/arm/arm64/CONFIG_VIDEO_QCOM_CAMSS1
-rw-r--r--baseconfig/arm/arm64/CONFIG_VMAP_STACK1
-rw-r--r--baseconfig/arm/armv7/CONFIG_DRM_SUN4I_BACKEND (renamed from baseconfig/arm/CONFIG_DRM_SUN4I_BACKEND)0
-rw-r--r--baseconfig/arm/armv7/CONFIG_DRM_SUN4I_HDMI_CEC1
-rw-r--r--baseconfig/arm/armv7/CONFIG_MMC_QCOM_DML1
-rw-r--r--baseconfig/arm/armv7/CONFIG_PWM_TIECAP1
-rw-r--r--baseconfig/arm/armv7/CONFIG_RTC_DRV_ARMADA38X1
-rw-r--r--baseconfig/arm/armv7/CONFIG_SUN4I_A10_CCU1
-rw-r--r--baseconfig/arm/armv7/CONFIG_SUN8I_R40_CCU1
-rw-r--r--baseconfig/arm/armv7/armv7/CONFIG_BATTERY_BQ27XXX_HDQ1
-rw-r--r--baseconfig/arm/armv7/armv7/CONFIG_IMX_REMOTEPROC1
-rw-r--r--baseconfig/arm/armv7/armv7/CONFIG_MMC_QCOM_DML2
-rw-r--r--baseconfig/arm/armv7/armv7/CONFIG_VIDEO_QCOM_CAMSS1
-rw-r--r--baseconfig/arm/armv7/lpae/CONFIG_SND_SOC_TEGRA20_DAS1
-rw-r--r--baseconfig/powerpc/CONFIG_PPC_MEMTRACE1
-rw-r--r--baseconfig/powerpc/CONFIG_PPC_VAS1
-rw-r--r--baseconfig/powerpc/CONFIG_SENSORS_IBM_CFFPS1
-rw-r--r--baseconfig/s390x/CONFIG_BLK_CPQ_CISS_DA1
-rw-r--r--baseconfig/s390x/CONFIG_CMA1
-rw-r--r--baseconfig/s390x/CONFIG_CMA_AREAS1
-rw-r--r--baseconfig/s390x/CONFIG_CMA_DEBUG1
-rw-r--r--baseconfig/s390x/CONFIG_CMA_DEBUGFS1
-rw-r--r--baseconfig/s390x/CONFIG_MFD_BD9571MWV1
-rw-r--r--baseconfig/s390x/CONFIG_MFD_RTSX_USB1
-rw-r--r--baseconfig/s390x/CONFIG_MFD_TPS684701
-rw-r--r--baseconfig/s390x/CONFIG_MFD_VIPERBOARD1
-rw-r--r--baseconfig/s390x/CONFIG_VMCP_CMA_SIZE1
-rw-r--r--baseconfig/x86/CONFIG_CONFIG_PINCTRL_LEWISBURG1
-rw-r--r--baseconfig/x86/CONFIG_HYPERV_VSOCKETS1
-rw-r--r--baseconfig/x86/CONFIG_INTEL_RDT1
-rw-r--r--baseconfig/x86/CONFIG_MAXSMP2
-rw-r--r--baseconfig/x86/CONFIG_PINCTRL_DENVERTON1
-rw-r--r--baseconfig/x86/CONFIG_XEN_PVCALLS_BACKEND1
-rw-r--r--baseconfig/x86/x86_64/CONFIG_AMD_MEM_ENCRYPT1
-rw-r--r--baseconfig/x86/x86_64/CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT1
-rw-r--r--baseconfig/x86/x86_64/CONFIG_DEVICE_PRIVATE1
-rw-r--r--baseconfig/x86/x86_64/CONFIG_DEVICE_PUBLIC1
-rw-r--r--baseconfig/x86/x86_64/CONFIG_HMM_MIRROR1
-rw-r--r--baseconfig/x86/x86_64/CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT1
-rw-r--r--baseconfig/x86/x86_64/CONFIG_NR_CPUS2
-rw-r--r--baseconfig/x86/x86_64/CONFIG_X86_5LEVEL1
-rw-r--r--bcm2837-bluetooth-support.patch606
-rw-r--r--bcm2837-move-dt.patch516
-rw-r--r--bcm283x-vc4-fixes.patch1803
-rw-r--r--config_generation2
-rw-r--r--drm-cma-reduce-dmesg-logs.patch53
-rw-r--r--drm-i915-Boost-GPU-clocks-if-we-miss-the-pageflip-s-vblank.patch200
-rw-r--r--drm-i915-boost-GPU-clocks-if-we-miss-the-pageflip.patch238
-rw-r--r--efi-lockdown.patch1643
-rw-r--r--kernel-aarch64-debug.config97
-rw-r--r--kernel-aarch64.config97
-rw-r--r--kernel-armv7hl-debug.config89
-rw-r--r--kernel-armv7hl-lpae-debug.config88
-rw-r--r--kernel-armv7hl-lpae.config88
-rw-r--r--kernel-armv7hl.config89
-rw-r--r--kernel-i686-PAE.config77
-rw-r--r--kernel-i686-PAEdebug.config75
-rw-r--r--kernel-i686-debug.config75
-rw-r--r--kernel-i686.config77
-rw-r--r--kernel-ppc64-debug.config72
-rw-r--r--kernel-ppc64.config72
-rw-r--r--kernel-ppc64le-debug.config72
-rw-r--r--kernel-ppc64le.config72
-rw-r--r--kernel-s390x-debug.config80
-rw-r--r--kernel-s390x.config80
-rw-r--r--kernel-x86_64-debug.config81
-rw-r--r--kernel-x86_64.config85
-rw-r--r--kernel.spec139
-rw-r--r--media-hdpvr-Fix-an-error-handling-path-in-hdpvr_probe.patch106
-rw-r--r--net-mlxsw-reg-Add-high-and-low-temperature-thresholds.patch79
-rw-r--r--no-pcspkr-modalias.patch8
-rw-r--r--pci-mark-amd-stoney-gpu-ats-as-broken.patch47
-rw-r--r--qcom-Force-host-mode-for-USB-on-apq8016-sbc.patch93
-rw-r--r--qcom-clk-gpu-msm.patch27
-rw-r--r--qcom-display-iommu.patch1960
-rw-r--r--qcom-msm-ci_hdrc_msm_probe-missing-of_node_get.patch45
-rw-r--r--qcom-msm89xx-fixes.patch159
-rw-r--r--qxl-fixes.patch324
-rw-r--r--qxl_cursor_fix.patch565
-rw-r--r--selinux-Generalize-support-for-NNP-nosuid-SELinux-do.patch220
-rw-r--r--silence-fbcon-logo.patch19
-rw-r--r--sources6
-rw-r--r--v3-1-2-Input-synaptics-rmi4---RMI4-can-also-use-SMBUS-version-3.patch42
202 files changed, 4368 insertions, 11242 deletions
diff --git a/0001-PATCH-staging-rtl8822be-fix-wrong-dma-unmap-len.patch b/0001-PATCH-staging-rtl8822be-fix-wrong-dma-unmap-len.patch
new file mode 100644
index 000000000..540b925eb
--- /dev/null
+++ b/0001-PATCH-staging-rtl8822be-fix-wrong-dma-unmap-len.patch
@@ -0,0 +1,46 @@
+From 37af97ef14c201b1db8dd341aabd262da23e48aa Mon Sep 17 00:00:00 2001
+From: Fedora Kernel Team <kernel-team@fedoraproject.org>
+Date: Mon, 30 Oct 2017 11:38:27 -0500
+Subject: [PATCH] [PATCH] staging: rtl8822be: fix wrong dma unmap len
+
+Patch fixes splat:
+
+r8822be 0000:04:00.0: DMA-API: device driver frees DMA memory with different size
+[device address=0x0000000078477000] [map size=4096 bytes] [unmap size=424 bytes]
+<snip>
+Call Trace:
+ debug_dma_unmap_page+0xa5/0xb0
+ ? unmap_single+0x2f/0x40
+ _rtl8822be_send_bcn_or_cmd_packet+0x2c5/0x300 [r8822be]
+ ? _rtl8822be_send_bcn_or_cmd_packet+0x2c5/0x300 [r8822be]
+ rtl8822b_halmac_cb_write_data_rsvd_page+0x51/0xc0 [r8822be]
+ _halmac_write_data_rsvd_page+0x22/0x30 [r8822be]
+ halmac_download_rsvd_page_88xx+0xee/0x1f0 [r8822be]
+ halmac_dlfw_to_mem_88xx+0x80/0x120 [r8822be]
+ halmac_download_firmware_88xx.part.47+0x477/0x600 [r8822be]
+ halmac_download_firmware_88xx+0x32/0x40 [r8822be]
+ rtl_halmac_dlfw+0x70/0x120 [r8822be]
+ rtl_halmac_init_hal+0x5f/0x1b0 [r8822be]
+ rtl8822be_hw_init+0x8a2/0x1040 [r8822be]
+
+Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
+---
+ drivers/staging/rtlwifi/rtl8822be/fw.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/staging/rtlwifi/rtl8822be/fw.c b/drivers/staging/rtlwifi/rtl8822be/fw.c
+index 8e24da1..a2cc548 100644
+--- a/drivers/staging/rtlwifi/rtl8822be/fw.c
++++ b/drivers/staging/rtlwifi/rtl8822be/fw.c
+@@ -419,7 +419,7 @@ static bool _rtl8822be_send_bcn_or_cmd_packet(struct ieee80211_hw *hw,
+ dma_addr = rtlpriv->cfg->ops->get_desc(
+ hw, (u8 *)pbd_desc, true, HW_DESC_TXBUFF_ADDR);
+
+- pci_unmap_single(rtlpci->pdev, dma_addr, skb->len,
++ pci_unmap_single(rtlpci->pdev, dma_addr, pskb->len,
+ PCI_DMA_TODEVICE);
+ kfree_skb(pskb);
+
+--
+2.13.6
+
diff --git a/0001-power-supply-max17042_battery-Add-support-for-ACPI-e.patch b/0001-power-supply-max17042_battery-Add-support-for-ACPI-e.patch
deleted file mode 100644
index 858cd5a34..000000000
--- a/0001-power-supply-max17042_battery-Add-support-for-ACPI-e.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 075bb90dbb4d894938c5859e3850987238db9cd8 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Fri, 11 Aug 2017 22:30:55 +0200
-Subject: [PATCH 1/2] power: supply: max17042_battery: Add support for ACPI
- enumeration
-
-Some x86 devices enumerate a max17047 fuel-gauge through a MAX17047
-ACPI firmware-node, add support for this.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- drivers/power/supply/max17042_battery.c | 22 +++++++++++++++++++++-
- 1 file changed, 21 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
-index aecaaa2b0586..b2ddb7eb69c6 100644
---- a/drivers/power/supply/max17042_battery.c
-+++ b/drivers/power/supply/max17042_battery.c
-@@ -22,6 +22,7 @@
- * This driver is based on max17040_battery.c
- */
-
-+#include <linux/acpi.h>
- #include <linux/init.h>
- #include <linux/module.h>
- #include <linux/slab.h>
-@@ -982,6 +983,8 @@ static int max17042_probe(struct i2c_client *client,
- struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
- const struct power_supply_desc *max17042_desc = &max17042_psy_desc;
- struct power_supply_config psy_cfg = {};
-+ const struct acpi_device_id *acpi_id;
-+ struct device *dev = &client->dev;
- struct max17042_chip *chip;
- int ret;
- int i;
-@@ -995,7 +998,15 @@ static int max17042_probe(struct i2c_client *client,
- return -ENOMEM;
-
- chip->client = client;
-- chip->chip_type = id->driver_data;
-+ if (id) {
-+ chip->chip_type = id->driver_data;
-+ } else {
-+ acpi_id = acpi_match_device(dev->driver->acpi_match_table, dev);
-+ if (!acpi_id)
-+ return -ENODEV;
-+
-+ chip->chip_type = acpi_id->driver_data;
-+ }
- chip->regmap = devm_regmap_init_i2c(client, &max17042_regmap_config);
- if (IS_ERR(chip->regmap)) {
- dev_err(&client->dev, "Failed to initialize regmap\n");
-@@ -1104,6 +1115,14 @@ static int max17042_resume(struct device *dev)
- static SIMPLE_DEV_PM_OPS(max17042_pm_ops, max17042_suspend,
- max17042_resume);
-
-+#ifdef CONFIG_ACPI
-+static const struct acpi_device_id max17042_acpi_match[] = {
-+ { "MAX17047", MAXIM_DEVICE_TYPE_MAX17047 },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(acpi, max17042_acpi_match);
-+#endif
-+
- #ifdef CONFIG_OF
- static const struct of_device_id max17042_dt_match[] = {
- { .compatible = "maxim,max17042" },
-@@ -1125,6 +1144,7 @@ MODULE_DEVICE_TABLE(i2c, max17042_id);
- static struct i2c_driver max17042_i2c_driver = {
- .driver = {
- .name = "max17042",
-+ .acpi_match_table = ACPI_PTR(max17042_acpi_match),
- .of_match_table = of_match_ptr(max17042_dt_match),
- .pm = &max17042_pm_ops,
- },
---
-2.13.4
-
diff --git a/0001-powerpc-64s-radix-Fix-128TB-512TB-virtual-address-bo.patch b/0001-powerpc-64s-radix-Fix-128TB-512TB-virtual-address-bo.patch
deleted file mode 100644
index 4d2bbfaf7..000000000
--- a/0001-powerpc-64s-radix-Fix-128TB-512TB-virtual-address-bo.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-From aca20afc84cf8578e044c67c4949672ac98f064a Mon Sep 17 00:00:00 2001
-From: Nicholas Piggin <npiggin@gmail.com>
-Date: Tue, 28 Nov 2017 11:26:54 +0100
-Subject: [PATCH 1/5] powerpc/64s/radix: Fix 128TB-512TB virtual address
- boundary case allocation
-
-commit 85e3f1adcb9d49300b0a943bb93f9604be375bfb upstream.
-
-Radix VA space allocations test addresses against mm->task_size which
-is 512TB, even in cases where the intention is to limit allocation to
-below 128TB.
-
-This results in mmap with a hint address below 128TB but address +
-length above 128TB succeeding when it should fail (as hash does after
-the previous patch).
-
-Set the high address limit to be considered up front, and base
-subsequent allocation checks on that consistently.
-
-Fixes: f4ea6dcb08ea ("powerpc/mm: Enable mappings above 128TB")
-Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
-Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/powerpc/mm/hugetlbpage-radix.c | 26 ++++++++++++------
- arch/powerpc/mm/mmap.c | 55 ++++++++++++++++++++++---------------
- 2 files changed, 50 insertions(+), 31 deletions(-)
-
-diff --git a/arch/powerpc/mm/hugetlbpage-radix.c b/arch/powerpc/mm/hugetlbpage-radix.c
-index a12e86395025..0a3d71aae175 100644
---- a/arch/powerpc/mm/hugetlbpage-radix.c
-+++ b/arch/powerpc/mm/hugetlbpage-radix.c
-@@ -48,17 +48,28 @@ radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
- struct mm_struct *mm = current->mm;
- struct vm_area_struct *vma;
- struct hstate *h = hstate_file(file);
-+ int fixed = (flags & MAP_FIXED);
-+ unsigned long high_limit;
- struct vm_unmapped_area_info info;
-
-- if (unlikely(addr > mm->context.addr_limit && addr < TASK_SIZE))
-- mm->context.addr_limit = TASK_SIZE;
-+ high_limit = DEFAULT_MAP_WINDOW;
-+ if (addr >= high_limit || (fixed && (addr + len > high_limit)))
-+ high_limit = TASK_SIZE;
-
- if (len & ~huge_page_mask(h))
- return -EINVAL;
-- if (len > mm->task_size)
-+ if (len > high_limit)
- return -ENOMEM;
-+ if (fixed) {
-+ if (addr > high_limit - len)
-+ return -ENOMEM;
-+ }
-
-- if (flags & MAP_FIXED) {
-+ if (unlikely(addr > mm->context.addr_limit &&
-+ mm->context.addr_limit != TASK_SIZE))
-+ mm->context.addr_limit = TASK_SIZE;
-+
-+ if (fixed) {
- if (prepare_hugepage_range(file, addr, len))
- return -EINVAL;
- return addr;
-@@ -67,7 +78,7 @@ radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
- if (addr) {
- addr = ALIGN(addr, huge_page_size(h));
- vma = find_vma(mm, addr);
-- if (mm->task_size - len >= addr &&
-+ if (high_limit - len >= addr &&
- (!vma || addr + len <= vm_start_gap(vma)))
- return addr;
- }
-@@ -78,12 +89,9 @@ radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
- info.flags = VM_UNMAPPED_AREA_TOPDOWN;
- info.length = len;
- info.low_limit = PAGE_SIZE;
-- info.high_limit = current->mm->mmap_base;
-+ info.high_limit = mm->mmap_base + (high_limit - DEFAULT_MAP_WINDOW);
- info.align_mask = PAGE_MASK & ~huge_page_mask(h);
- info.align_offset = 0;
-
-- if (addr > DEFAULT_MAP_WINDOW)
-- info.high_limit += mm->context.addr_limit - DEFAULT_MAP_WINDOW;
--
- return vm_unmapped_area(&info);
- }
-diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
-index 5d78b193fec4..6d476a7b5611 100644
---- a/arch/powerpc/mm/mmap.c
-+++ b/arch/powerpc/mm/mmap.c
-@@ -106,22 +106,32 @@ radix__arch_get_unmapped_area(struct file *filp, unsigned long addr,
- {
- struct mm_struct *mm = current->mm;
- struct vm_area_struct *vma;
-+ int fixed = (flags & MAP_FIXED);
-+ unsigned long high_limit;
- struct vm_unmapped_area_info info;
-
-+ high_limit = DEFAULT_MAP_WINDOW;
-+ if (addr >= high_limit || (fixed && (addr + len > high_limit)))
-+ high_limit = TASK_SIZE;
-+
-+ if (len > high_limit)
-+ return -ENOMEM;
-+ if (fixed) {
-+ if (addr > high_limit - len)
-+ return -ENOMEM;
-+ }
-+
- if (unlikely(addr > mm->context.addr_limit &&
- mm->context.addr_limit != TASK_SIZE))
- mm->context.addr_limit = TASK_SIZE;
-
-- if (len > mm->task_size - mmap_min_addr)
-- return -ENOMEM;
--
-- if (flags & MAP_FIXED)
-+ if (fixed)
- return addr;
-
- if (addr) {
- addr = PAGE_ALIGN(addr);
- vma = find_vma(mm, addr);
-- if (mm->task_size - len >= addr && addr >= mmap_min_addr &&
-+ if (high_limit - len >= addr && addr >= mmap_min_addr &&
- (!vma || addr + len <= vm_start_gap(vma)))
- return addr;
- }
-@@ -129,13 +139,9 @@ radix__arch_get_unmapped_area(struct file *filp, unsigned long addr,
- info.flags = 0;
- info.length = len;
- info.low_limit = mm->mmap_base;
-+ info.high_limit = high_limit;
- info.align_mask = 0;
-
-- if (unlikely(addr > DEFAULT_MAP_WINDOW))
-- info.high_limit = mm->context.addr_limit;
-- else
-- info.high_limit = DEFAULT_MAP_WINDOW;
--
- return vm_unmapped_area(&info);
- }
-
-@@ -149,37 +155,42 @@ radix__arch_get_unmapped_area_topdown(struct file *filp,
- struct vm_area_struct *vma;
- struct mm_struct *mm = current->mm;
- unsigned long addr = addr0;
-+ int fixed = (flags & MAP_FIXED);
-+ unsigned long high_limit;
- struct vm_unmapped_area_info info;
-
-+ high_limit = DEFAULT_MAP_WINDOW;
-+ if (addr >= high_limit || (fixed && (addr + len > high_limit)))
-+ high_limit = TASK_SIZE;
-+
-+ if (len > high_limit)
-+ return -ENOMEM;
-+ if (fixed) {
-+ if (addr > high_limit - len)
-+ return -ENOMEM;
-+ }
-+
- if (unlikely(addr > mm->context.addr_limit &&
- mm->context.addr_limit != TASK_SIZE))
- mm->context.addr_limit = TASK_SIZE;
-
-- /* requested length too big for entire address space */
-- if (len > mm->task_size - mmap_min_addr)
-- return -ENOMEM;
--
-- if (flags & MAP_FIXED)
-+ if (fixed)
- return addr;
-
-- /* requesting a specific address */
- if (addr) {
- addr = PAGE_ALIGN(addr);
- vma = find_vma(mm, addr);
-- if (mm->task_size - len >= addr && addr >= mmap_min_addr &&
-- (!vma || addr + len <= vm_start_gap(vma)))
-+ if (high_limit - len >= addr && addr >= mmap_min_addr &&
-+ (!vma || addr + len <= vm_start_gap(vma)))
- return addr;
- }
-
- info.flags = VM_UNMAPPED_AREA_TOPDOWN;
- info.length = len;
- info.low_limit = max(PAGE_SIZE, mmap_min_addr);
-- info.high_limit = mm->mmap_base;
-+ info.high_limit = mm->mmap_base + (high_limit - DEFAULT_MAP_WINDOW);
- info.align_mask = 0;
-
-- if (addr > DEFAULT_MAP_WINDOW)
-- info.high_limit += mm->context.addr_limit - DEFAULT_MAP_WINDOW;
--
- addr = vm_unmapped_area(&info);
- if (!(addr & ~PAGE_MASK))
- return addr;
---
-2.14.3
-
diff --git a/0002-power-supply-max17042_battery-Fix-ACPI-interrupt-iss.patch b/0002-power-supply-max17042_battery-Fix-ACPI-interrupt-iss.patch
deleted file mode 100644
index 6daecaf4d..000000000
--- a/0002-power-supply-max17042_battery-Fix-ACPI-interrupt-iss.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 27b9d46d25c873b351757c44ce523bf0ede1d08e Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Mon, 14 Aug 2017 11:02:59 +0200
-Subject: [PATCH 2/2] power: supply: max17042_battery: Fix ACPI interrupt
- issues
-
-On some x86/ACPI boards the DSDT defines an ACPI event handler for
-the max17047 IRQ, this causes several problems:
-
-1) We need to share the IRQ to avoid an error getting it
-
-2) Even of we are willing to share, we may fail to share because some
- DSDTs claim it exclusivly
-
-3) If we are unable to share the IRQ, or the IRQ is only listed as an
- ACPI event source and not in the max1704 firmware node, then the
- charge threshold IRQ (which is used to give an IRQ every 1 percent
- charge change) becomes a problem, the ACPI event handler will not
- update this to the next 1 percent threshold, so the IRQ keeps firing
- and we get an IRQ storm pegging 1 CPU core.
-
- This happens despite the max17042 driver not setting the charge
- threshold because Windows uses it and leaves it set on reboot.
-
- So if we are unable to get the IRQ we need to reprogram the
- charge threshold to its disabled setting.
-
-This commit fixes al of the above, while at it it also makes the error
-msg when being unable to get the IRQ consistent with other messages.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- drivers/power/supply/max17042_battery.c | 20 +++++++++++++++-----
- 1 file changed, 15 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
-index b2ddb7eb69c6..18a44e4ed6ff 100644
---- a/drivers/power/supply/max17042_battery.c
-+++ b/drivers/power/supply/max17042_battery.c
-@@ -1050,11 +1050,18 @@ static int max17042_probe(struct i2c_client *client,
- }
-
- if (client->irq) {
-+ unsigned int flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT;
-+
-+ /*
-+ * On ACPI systems the IRQ may be handled by ACPI-event code,
-+ * so we need to share (if the ACPI code is willing to share).
-+ */
-+ if (acpi_id)
-+ flags |= IRQF_SHARED | IRQF_PROBE_SHARED;
-+
- ret = devm_request_threaded_irq(&client->dev, client->irq,
- NULL,
-- max17042_thread_handler,
-- IRQF_TRIGGER_FALLING |
-- IRQF_ONESHOT,
-+ max17042_thread_handler, flags,
- chip->battery->desc->name,
- chip);
- if (!ret) {
-@@ -1064,10 +1071,13 @@ static int max17042_probe(struct i2c_client *client,
- max17042_set_soc_threshold(chip, 1);
- } else {
- client->irq = 0;
-- dev_err(&client->dev, "%s(): cannot get IRQ\n",
-- __func__);
-+ if (ret != -EBUSY)
-+ dev_err(&client->dev, "Failed to get IRQ\n");
- }
- }
-+ /* Not able to update the charge threshold when exceeded? -> disable */
-+ if (!client->irq)
-+ regmap_write(chip->regmap, MAX17042_SALRT_Th, 0xff00);
-
- regmap_read(chip->regmap, MAX17042_STATUS, &val);
- if (val & STATUS_POR_BIT) {
---
-2.13.4
-
diff --git a/0002-powerpc-64s-hash-Fix-512T-hint-detection-to-use-128T.patch b/0002-powerpc-64s-hash-Fix-512T-hint-detection-to-use-128T.patch
deleted file mode 100644
index fc6b806d7..000000000
--- a/0002-powerpc-64s-hash-Fix-512T-hint-detection-to-use-128T.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 75c7f5172c113af1ea3cf094436c9e03191673e0 Mon Sep 17 00:00:00 2001
-From: Michael Ellerman <mpe@ellerman.id.au>
-Date: Tue, 28 Nov 2017 11:26:55 +0100
-Subject: [PATCH 2/5] powerpc/64s/hash: Fix 512T hint detection to use >= 128T
-
-commit 7ece370996b694ae263025e056ad785afc1be5ab upstream.
-
-Currently userspace is able to request mmap() search between 128T-512T
-by specifying a hint address that is greater than 128T. But that means
-a hint of 128T exactly will return an address below 128T, which is
-confusing and wrong.
-
-So fix the logic to check the hint is greater than *or equal* to 128T.
-
-Fixes: f4ea6dcb08ea ("powerpc/mm: Enable mappings above 128TB")
-Suggested-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
-Suggested-by: Nicholas Piggin <npiggin@gmail.com>
-[mpe: Split out of Nick's bigger patch]
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/powerpc/mm/slice.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
-index 45f6740dd407..48a5312103a1 100644
---- a/arch/powerpc/mm/slice.c
-+++ b/arch/powerpc/mm/slice.c
-@@ -419,7 +419,7 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
- /*
- * Check if we need to expland slice area.
- */
-- if (unlikely(addr > mm->context.addr_limit &&
-+ if (unlikely(addr >= mm->context.addr_limit &&
- mm->context.addr_limit != TASK_SIZE)) {
- mm->context.addr_limit = TASK_SIZE;
- on_each_cpu(slice_flush_segments, mm, 1);
-@@ -427,7 +427,7 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
- /*
- * This mmap request can allocate upt to 512TB
- */
-- if (addr > DEFAULT_MAP_WINDOW)
-+ if (addr >= DEFAULT_MAP_WINDOW)
- high_limit = mm->context.addr_limit;
- else
- high_limit = DEFAULT_MAP_WINDOW;
---
-2.14.3
-
diff --git a/0003-powerpc-64s-hash-Fix-128TB-512TB-virtual-address-bou.patch b/0003-powerpc-64s-hash-Fix-128TB-512TB-virtual-address-bou.patch
deleted file mode 100644
index 009068a3b..000000000
--- a/0003-powerpc-64s-hash-Fix-128TB-512TB-virtual-address-bou.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From e90387a8d2227f95bf5e5b5ffd816d48a87466e2 Mon Sep 17 00:00:00 2001
-From: Nicholas Piggin <npiggin@gmail.com>
-Date: Tue, 28 Nov 2017 11:26:56 +0100
-Subject: [PATCH 3/5] powerpc/64s/hash: Fix 128TB-512TB virtual address
- boundary case allocation
-
-commit 6a72dc038b615229a1b285829d6c8378d15c2347 upstream.
-
-When allocating VA space with a hint that crosses 128TB, the SLB
-addr_limit variable is not expanded if addr is not > 128TB, but the
-slice allocation looks at task_size, which is 512TB. This results in
-slice_check_fit() incorrectly succeeding because the slice_count
-truncates off bit 128 of the requested mask, so the comparison to the
-available mask succeeds.
-
-Fix this by using mm->context.addr_limit instead of mm->task_size for
-testing allocation limits. This causes such allocations to fail.
-
-Fixes: f4ea6dcb08ea ("powerpc/mm: Enable mappings above 128TB")
-Reported-by: Florian Weimer <fweimer@redhat.com>
-Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
-Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/powerpc/mm/slice.c | 50 ++++++++++++++++++++++++-------------------------
- 1 file changed, 24 insertions(+), 26 deletions(-)
-
-diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
-index 48a5312103a1..3889201b560c 100644
---- a/arch/powerpc/mm/slice.c
-+++ b/arch/powerpc/mm/slice.c
-@@ -96,7 +96,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
- {
- struct vm_area_struct *vma;
-
-- if ((mm->task_size - len) < addr)
-+ if ((mm->context.addr_limit - len) < addr)
- return 0;
- vma = find_vma(mm, addr);
- return (!vma || (addr + len) <= vm_start_gap(vma));
-@@ -133,7 +133,7 @@ static void slice_mask_for_free(struct mm_struct *mm, struct slice_mask *ret)
- if (!slice_low_has_vma(mm, i))
- ret->low_slices |= 1u << i;
-
-- if (mm->task_size <= SLICE_LOW_TOP)
-+ if (mm->context.addr_limit <= SLICE_LOW_TOP)
- return;
-
- for (i = 0; i < GET_HIGH_SLICE_INDEX(mm->context.addr_limit); i++)
-@@ -412,25 +412,31 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
- struct slice_mask compat_mask;
- int fixed = (flags & MAP_FIXED);
- int pshift = max_t(int, mmu_psize_defs[psize].shift, PAGE_SHIFT);
-+ unsigned long page_size = 1UL << pshift;
- struct mm_struct *mm = current->mm;
- unsigned long newaddr;
- unsigned long high_limit;
-
-- /*
-- * Check if we need to expland slice area.
-- */
-- if (unlikely(addr >= mm->context.addr_limit &&
-- mm->context.addr_limit != TASK_SIZE)) {
-- mm->context.addr_limit = TASK_SIZE;
-+ high_limit = DEFAULT_MAP_WINDOW;
-+ if (addr >= high_limit)
-+ high_limit = TASK_SIZE;
-+
-+ if (len > high_limit)
-+ return -ENOMEM;
-+ if (len & (page_size - 1))
-+ return -EINVAL;
-+ if (fixed) {
-+ if (addr & (page_size - 1))
-+ return -EINVAL;
-+ if (addr > high_limit - len)
-+ return -ENOMEM;
-+ }
-+
-+ if (high_limit > mm->context.addr_limit) {
-+ mm->context.addr_limit = high_limit;
- on_each_cpu(slice_flush_segments, mm, 1);
- }
-- /*
-- * This mmap request can allocate upt to 512TB
-- */
-- if (addr >= DEFAULT_MAP_WINDOW)
-- high_limit = mm->context.addr_limit;
-- else
-- high_limit = DEFAULT_MAP_WINDOW;
-+
- /*
- * init different masks
- */
-@@ -446,27 +452,19 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
-
- /* Sanity checks */
- BUG_ON(mm->task_size == 0);
-+ BUG_ON(mm->context.addr_limit == 0);
- VM_BUG_ON(radix_enabled());
-
- slice_dbg("slice_get_unmapped_area(mm=%p, psize=%d...\n", mm, psize);
- slice_dbg(" addr=%lx, len=%lx, flags=%lx, topdown=%d\n",
- addr, len, flags, topdown);
-
-- if (len > mm->task_size)
-- return -ENOMEM;
-- if (len & ((1ul << pshift) - 1))
-- return -EINVAL;
-- if (fixed && (addr & ((1ul << pshift) - 1)))
-- return -EINVAL;
-- if (fixed && addr > (mm->task_size - len))
-- return -ENOMEM;
--
- /* If hint, make sure it matches our alignment restrictions */
- if (!fixed && addr) {
-- addr = _ALIGN_UP(addr, 1ul << pshift);
-+ addr = _ALIGN_UP(addr, page_size);
- slice_dbg(" aligned addr=%lx\n", addr);
- /* Ignore hint if it's too large or overlaps a VMA */
-- if (addr > mm->task_size - len ||
-+ if (addr > high_limit - len ||
- !slice_area_is_free(mm, addr, len))
- addr = 0;
- }
---
-2.14.3
-
diff --git a/0004-powerpc-64s-hash-Fix-fork-with-512TB-process-address.patch b/0004-powerpc-64s-hash-Fix-fork-with-512TB-process-address.patch
deleted file mode 100644
index 75d9d3241..000000000
--- a/0004-powerpc-64s-hash-Fix-fork-with-512TB-process-address.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From fe50aa4374f20333d9b077bbe09397d38112b081 Mon Sep 17 00:00:00 2001
-From: Nicholas Piggin <npiggin@gmail.com>
-Date: Tue, 28 Nov 2017 11:26:57 +0100
-Subject: [PATCH 4/5] powerpc/64s/hash: Fix fork() with 512TB process address
- space
-
-commit effc1b25088502fbd30305c79773de2d1f7470a6 upstream.
-
-Hash unconditionally resets the addr_limit to default (128TB) when the
-mm context is initialised. If a process has > 128TB mappings when it
-forks, the child will not get the 512TB addr_limit, so accesses to
-valid > 128TB mappings will fail in the child.
-
-Fix this by only resetting the addr_limit to default if it was 0. Non
-zero indicates it was duplicated from the parent (0 means exec()).
-
-Fixes: f4ea6dcb08ea ("powerpc/mm: Enable mappings above 128TB")
-Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
-Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/powerpc/mm/mmu_context_book3s64.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/arch/powerpc/mm/mmu_context_book3s64.c b/arch/powerpc/mm/mmu_context_book3s64.c
-index a75f63833284..bb9cdf01fc4f 100644
---- a/arch/powerpc/mm/mmu_context_book3s64.c
-+++ b/arch/powerpc/mm/mmu_context_book3s64.c
-@@ -95,11 +95,11 @@ static int hash__init_new_context(struct mm_struct *mm)
- return index;
-
- /*
-- * We do switch_slb() early in fork, even before we setup the
-- * mm->context.addr_limit. Default to max task size so that we copy the
-- * default values to paca which will help us to handle slb miss early.
-+ * In the case of exec, use the default limit,
-+ * otherwise inherit it from the mm we are duplicating.
- */
-- mm->context.addr_limit = DEFAULT_MAP_WINDOW_USER64;
-+ if (!mm->context.addr_limit)
-+ mm->context.addr_limit = DEFAULT_MAP_WINDOW_USER64;
-
- /*
- * The old code would re-promote on fork, we don't do that when using
---
-2.14.3
-
diff --git a/0005-powerpc-64s-hash-Allow-MAP_FIXED-allocations-to-cros.patch b/0005-powerpc-64s-hash-Allow-MAP_FIXED-allocations-to-cros.patch
deleted file mode 100644
index e7e9a4acf..000000000
--- a/0005-powerpc-64s-hash-Allow-MAP_FIXED-allocations-to-cros.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 2beb551e379191c2a24e7db8c4fcc64fef4b921a Mon Sep 17 00:00:00 2001
-From: Nicholas Piggin <npiggin@gmail.com>
-Date: Tue, 28 Nov 2017 11:26:58 +0100
-Subject: [PATCH 5/5] powerpc/64s/hash: Allow MAP_FIXED allocations to cross
- 128TB boundary
-
-commit 35602f82d0c765f991420e319c8d3a596c921eb8 upstream.
-
-While mapping hints with a length that cross 128TB are disallowed,
-MAP_FIXED allocations that cross 128TB are allowed. These are failing
-on hash (on radix they succeed). Add an additional case for fixed
-mappings to expand the addr_limit when crossing 128TB.
-
-Fixes: f4ea6dcb08ea ("powerpc/mm: Enable mappings above 128TB")
-Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
-Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
-Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/powerpc/mm/slice.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
-index 3889201b560c..a4f93699194b 100644
---- a/arch/powerpc/mm/slice.c
-+++ b/arch/powerpc/mm/slice.c
-@@ -418,7 +418,7 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
- unsigned long high_limit;
-
- high_limit = DEFAULT_MAP_WINDOW;
-- if (addr >= high_limit)
-+ if (addr >= high_limit || (fixed && (addr + len > high_limit)))
- high_limit = TASK_SIZE;
-
- if (len > high_limit)
---
-2.14.3
-
diff --git a/0011-Input-goodix-Add-support-for-capacitive-home-button.patch b/0011-Input-goodix-Add-support-for-capacitive-home-button.patch
deleted file mode 100644
index 162357c21..000000000
--- a/0011-Input-goodix-Add-support-for-capacitive-home-button.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 2a99775c336303d2efc43eab4f24b34722a28faa Mon Sep 17 00:00:00 2001
-From: "Sergei A. Trusov" <sergei.a.trusov@ya.ru>
-Date: Tue, 20 Jun 2017 18:08:35 +0200
-Subject: [PATCH 11/16] Input: goodix: Add support for capacitive home button
-
-On some x86 tablets with a Goodix touchscreen, the Windows logo on the
-front is a capacitive home button. Touching this button results in a touch
-with bit 4 of the first byte set, while only the lower 4 bits (0-3) are
-used to indicate the number of touches.
-
-Report a KEY_LEFTMETA press when this happens.
-
-Note that the hardware might support more than one button, in which
-case the "id" byte of coor_data would identify the button in question.
-This is not implemented as we don't have access to hardware with
-multiple buttons.
-
-Signed-off-by: Sergei A. Trusov <sergei.a.trusov@ya.ru>
-Acked-by: Bastien Nocera <hadess@hadess.net>
----
- drivers/input/touchscreen/goodix.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
-index 240b16f3ee97..903137d9cf7d 100644
---- a/drivers/input/touchscreen/goodix.c
-+++ b/drivers/input/touchscreen/goodix.c
-@@ -267,6 +267,12 @@ static void goodix_process_events(struct goodix_ts_data *ts)
- if (touch_num < 0)
- return;
-
-+ /*
-+ * Bit 4 of the first byte reports the status of the capacitive
-+ * Windows/Home button.
-+ */
-+ input_report_key(ts->input_dev, KEY_LEFTMETA, !!(point_data[0] & BIT(4)));
-+
- for (i = 0; i < touch_num; i++)
- goodix_ts_report_touch(ts,
- &point_data[1 + GOODIX_CONTACT_SIZE * i]);
-@@ -612,6 +618,9 @@ static int goodix_request_input_dev(struct goodix_ts_data *ts)
- ts->input_dev->id.product = ts->id;
- ts->input_dev->id.version = ts->version;
-
-+ /* Capacitive Windows/Home button on some devices */
-+ input_set_capability(ts->input_dev, EV_KEY, KEY_LEFTMETA);
-+
- error = input_register_device(ts->input_dev);
- if (error) {
- dev_err(&ts->client->dev,
---
-2.13.0
-
diff --git a/0013-iio-accel-bmc150-Add-support-for-BOSC0200-ACPI-devic.patch b/0013-iio-accel-bmc150-Add-support-for-BOSC0200-ACPI-devic.patch
deleted file mode 100644
index 8eb41ee3f..000000000
--- a/0013-iio-accel-bmc150-Add-support-for-BOSC0200-ACPI-devic.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From bf3e9581e10a19b2ce77a45fe001116d269b4c7f Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Sun, 18 Jun 2017 12:47:38 +0200
-Subject: [PATCH 13/16] iio: accel: bmc150: Add support for BOSC0200 ACPI
- device id
-
-Add support for the BOSC0200 ACPI device id used on some x86 tablets.
-note driver_data is not set to a specific model, driver_data is not
-used anyways (instead detection is done on the chip_id reg) and the
-2 tablets with a BOSC0200 ACPI device id I've have 2 different chips,
-one has a BMA250E, the other a BMA222E.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- drivers/iio/accel/bmc150-accel-i2c.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/iio/accel/bmc150-accel-i2c.c b/drivers/iio/accel/bmc150-accel-i2c.c
-index 8ca8041267ef..f85014fbaa12 100644
---- a/drivers/iio/accel/bmc150-accel-i2c.c
-+++ b/drivers/iio/accel/bmc150-accel-i2c.c
-@@ -64,6 +64,7 @@ static const struct acpi_device_id bmc150_accel_acpi_match[] = {
- {"BMA250E", bma250e},
- {"BMA222E", bma222e},
- {"BMA0280", bma280},
-+ {"BOSC0200"},
- { },
- };
- MODULE_DEVICE_TABLE(acpi, bmc150_accel_acpi_match);
---
-2.13.0
-
diff --git a/0015-i2c-cht-wc-Add-Intel-Cherry-Trail-Whiskey-Cove-SMBUS.patch b/0015-i2c-cht-wc-Add-Intel-Cherry-Trail-Whiskey-Cove-SMBUS.patch
deleted file mode 100644
index 5d7497ce1..000000000
--- a/0015-i2c-cht-wc-Add-Intel-Cherry-Trail-Whiskey-Cove-SMBUS.patch
+++ /dev/null
@@ -1,410 +0,0 @@
-From bd0d7169342e47919f68e75d659968f02b62f84b Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Fri, 3 Mar 2017 23:48:50 +0100
-Subject: [PATCH 15/16] i2c-cht-wc: Add Intel Cherry Trail Whiskey Cove SMBUS
- controller driver
-
-The Intel Cherry Trail Whiskey Cove PMIC does not contain a builtin
-battery charger, instead boards with this PMIC use an external TI
-bq24292i charger IC, which is connected to a SMBUS controller built into
-the PMIC.
-
-This commit adds an i2c-bus driver for the PMIC's builtin SMBUS
-controller. The probe function for this i2c-bus will also register an
-i2c-client for the TI bq24292i charger after the i2c-bus has been
-registered.
-
-Note that several device-properties are set on the client-device to
-tell the bq24190 power-supply driver to integrate the Whiskey Cove PMIC
-and e.g. use the PMIC's BC1.2 detection (through extcon) to determine
-the maximum input current.
-
-Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
-Changes in v2:
--Various style (mostly captialization and variable name) fixes
--Use device-properties instead of platform_data for the i2c_board_info
----
- drivers/i2c/busses/Kconfig | 8 +
- drivers/i2c/busses/Makefile | 1 +
- drivers/i2c/busses/i2c-cht-wc.c | 336 ++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 345 insertions(+)
- create mode 100644 drivers/i2c/busses/i2c-cht-wc.c
-
-diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
-index 144cbadc7c72..18c96178b177 100644
---- a/drivers/i2c/busses/Kconfig
-+++ b/drivers/i2c/busses/Kconfig
-@@ -187,6 +187,14 @@ config I2C_PIIX4
- This driver can also be built as a module. If so, the module
- will be called i2c-piix4.
-
-+config I2C_CHT_WC
-+ tristate "Intel Cherry Trail Whiskey Cove PMIC smbus controller"
-+ depends on INTEL_SOC_PMIC_CHTWC
-+ help
-+ If you say yes to this option, support will be included for the
-+ SMBus controller found in the Intel Cherry Trail Whiskey Cove PMIC
-+ found on some Intel Cherry Trail systems.
-+
- config I2C_NFORCE2
- tristate "Nvidia nForce2, nForce3 and nForce4"
- depends on PCI
-diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
-index 30b60855fbcd..f6443fa44f61 100644
---- a/drivers/i2c/busses/Makefile
-+++ b/drivers/i2c/busses/Makefile
-@@ -12,6 +12,7 @@ obj-$(CONFIG_I2C_ALI15X3) += i2c-ali15x3.o
- obj-$(CONFIG_I2C_AMD756) += i2c-amd756.o
- obj-$(CONFIG_I2C_AMD756_S4882) += i2c-amd756-s4882.o
- obj-$(CONFIG_I2C_AMD8111) += i2c-amd8111.o
-+obj-$(CONFIG_I2C_CHT_WC) += i2c-cht-wc.o
- obj-$(CONFIG_I2C_I801) += i2c-i801.o
- obj-$(CONFIG_I2C_ISCH) += i2c-isch.o
- obj-$(CONFIG_I2C_ISMT) += i2c-ismt.o
-diff --git a/drivers/i2c/busses/i2c-cht-wc.c b/drivers/i2c/busses/i2c-cht-wc.c
-new file mode 100644
-index 000000000000..ccf0785bcb75
---- /dev/null
-+++ b/drivers/i2c/busses/i2c-cht-wc.c
-@@ -0,0 +1,336 @@
-+/*
-+ * Intel CHT Whiskey Cove PMIC I2C Master driver
-+ * Copyright (C) 2017 Hans de Goede <hdegoede@redhat.com>
-+ *
-+ * Based on various non upstream patches to support the CHT Whiskey Cove PMIC:
-+ * Copyright (C) 2011 - 2014 Intel Corporation. All rights reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License version
-+ * 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ */
-+
-+#include <linux/completion.h>
-+#include <linux/delay.h>
-+#include <linux/i2c.h>
-+#include <linux/interrupt.h>
-+#include <linux/irq.h>
-+#include <linux/irqdomain.h>
-+#include <linux/mfd/intel_soc_pmic.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+
-+#define CHT_WC_I2C_CTRL 0x5e24
-+#define CHT_WC_I2C_CTRL_WR BIT(0)
-+#define CHT_WC_I2C_CTRL_RD BIT(1)
-+#define CHT_WC_I2C_CLIENT_ADDR 0x5e25
-+#define CHT_WC_I2C_REG_OFFSET 0x5e26
-+#define CHT_WC_I2C_WRDATA 0x5e27
-+#define CHT_WC_I2C_RDDATA 0x5e28
-+
-+#define CHT_WC_EXTCHGRIRQ 0x6e0a
-+#define CHT_WC_EXTCHGRIRQ_CLIENT_IRQ BIT(0)
-+#define CHT_WC_EXTCHGRIRQ_WRITE_IRQ BIT(1)
-+#define CHT_WC_EXTCHGRIRQ_READ_IRQ BIT(2)
-+#define CHT_WC_EXTCHGRIRQ_NACK_IRQ BIT(3)
-+#define CHT_WC_EXTCHGRIRQ_ADAP_IRQMASK ((u8)GENMASK(3, 1))
-+#define CHT_WC_EXTCHGRIRQ_MSK 0x6e17
-+
-+struct cht_wc_i2c_adap {
-+ struct i2c_adapter adapter;
-+ wait_queue_head_t wait;
-+ struct irq_chip irqchip;
-+ struct mutex irqchip_lock;
-+ struct regmap *regmap;
-+ struct irq_domain *irq_domain;
-+ struct i2c_client *client;
-+ int client_irq;
-+ u8 irq_mask;
-+ u8 old_irq_mask;
-+ bool nack;
-+ bool done;
-+};
-+
-+static irqreturn_t cht_wc_i2c_adap_thread_handler(int id, void *data)
-+{
-+ struct cht_wc_i2c_adap *adap = data;
-+ int ret, reg;
-+
-+ /* Read IRQs */
-+ ret = regmap_read(adap->regmap, CHT_WC_EXTCHGRIRQ, &reg);
-+ if (ret) {
-+ dev_err(&adap->adapter.dev, "Error reading extchgrirq reg\n");
-+ return IRQ_NONE;
-+ }
-+
-+ reg &= ~adap->irq_mask;
-+
-+ /*
-+ * Immediately ack IRQs, so that if new IRQs arrives while we're
-+ * handling the previous ones our irq will re-trigger when we're done.
-+ */
-+ ret = regmap_write(adap->regmap, CHT_WC_EXTCHGRIRQ, reg);
-+ if (ret)
-+ dev_err(&adap->adapter.dev, "Error writing extchgrirq reg\n");
-+
-+ /*
-+ * Do NOT use handle_nested_irq here, the client irq handler will
-+ * likely want to do i2c transfers and the i2c controller uses this
-+ * interrupt handler as well, so running the client irq handler from
-+ * this thread will cause things to lock up.
-+ */
-+ if (reg & CHT_WC_EXTCHGRIRQ_CLIENT_IRQ) {
-+ /*
-+ * generic_handle_irq expects local IRQs to be disabled
-+ * as normally it is called from interrupt context.
-+ */
-+ local_irq_disable();
-+ generic_handle_irq(adap->client_irq);
-+ local_irq_enable();
-+ }
-+
-+ if (reg & CHT_WC_EXTCHGRIRQ_ADAP_IRQMASK) {
-+ adap->nack = !!(reg & CHT_WC_EXTCHGRIRQ_NACK_IRQ);
-+ adap->done = true;
-+ wake_up(&adap->wait);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static u32 cht_wc_i2c_adap_master_func(struct i2c_adapter *adap)
-+{
-+ /* This i2c adapter only supports SMBUS byte transfers */
-+ return I2C_FUNC_SMBUS_BYTE_DATA;
-+}
-+
-+static int cht_wc_i2c_adap_smbus_xfer(struct i2c_adapter *_adap, u16 addr,
-+ unsigned short flags, char read_write,
-+ u8 command, int size,
-+ union i2c_smbus_data *data)
-+{
-+ struct cht_wc_i2c_adap *adap = i2c_get_adapdata(_adap);
-+ int ret, reg;
-+
-+ adap->nack = false;
-+ adap->done = false;
-+
-+ ret = regmap_write(adap->regmap, CHT_WC_I2C_CLIENT_ADDR, addr);
-+ if (ret)
-+ return ret;
-+
-+ if (read_write == I2C_SMBUS_WRITE) {
-+ ret = regmap_write(adap->regmap, CHT_WC_I2C_WRDATA, data->byte);
-+ if (ret)
-+ return ret;
-+ }
-+
-+ ret = regmap_write(adap->regmap, CHT_WC_I2C_REG_OFFSET, command);
-+ if (ret)
-+ return ret;
-+
-+ ret = regmap_write(adap->regmap, CHT_WC_I2C_CTRL,
-+ (read_write == I2C_SMBUS_WRITE) ?
-+ CHT_WC_I2C_CTRL_WR : CHT_WC_I2C_CTRL_RD);
-+ if (ret)
-+ return ret;
-+
-+ /* 3 second timeout, during cable plug the PMIC responds quite slow */
-+ ret = wait_event_timeout(adap->wait, adap->done, 3 * HZ);
-+ if (ret == 0)
-+ return -ETIMEDOUT;
-+ if (adap->nack)
-+ return -EIO;
-+
-+ if (read_write == I2C_SMBUS_READ) {
-+ ret = regmap_read(adap->regmap, CHT_WC_I2C_RDDATA, &reg);
-+ if (ret)
-+ return ret;
-+
-+ data->byte = reg;
-+ }
-+
-+ return 0;
-+}
-+
-+static const struct i2c_algorithm cht_wc_i2c_adap_algo = {
-+ .functionality = cht_wc_i2c_adap_master_func,
-+ .smbus_xfer = cht_wc_i2c_adap_smbus_xfer,
-+};
-+
-+/**** irqchip for the client connected to the extchgr i2c adapter ****/
-+static void cht_wc_i2c_irq_lock(struct irq_data *data)
-+{
-+ struct cht_wc_i2c_adap *adap = irq_data_get_irq_chip_data(data);
-+
-+ mutex_lock(&adap->irqchip_lock);
-+}
-+
-+static void cht_wc_i2c_irq_sync_unlock(struct irq_data *data)
-+{
-+ struct cht_wc_i2c_adap *adap = irq_data_get_irq_chip_data(data);
-+ int ret;
-+
-+ if (adap->irq_mask != adap->old_irq_mask) {
-+ ret = regmap_write(adap->regmap, CHT_WC_EXTCHGRIRQ_MSK,
-+ adap->irq_mask);
-+ if (ret == 0)
-+ adap->old_irq_mask = adap->irq_mask;
-+ else
-+ dev_err(&adap->adapter.dev, "Error writing EXTCHGRIRQ_MSK\n");
-+ }
-+
-+ mutex_unlock(&adap->irqchip_lock);
-+}
-+
-+static void cht_wc_i2c_irq_enable(struct irq_data *data)
-+{
-+ struct cht_wc_i2c_adap *adap = irq_data_get_irq_chip_data(data);
-+
-+ adap->irq_mask &= ~CHT_WC_EXTCHGRIRQ_CLIENT_IRQ;
-+}
-+
-+static void cht_wc_i2c_irq_disable(struct irq_data *data)
-+{
-+ struct cht_wc_i2c_adap *adap = irq_data_get_irq_chip_data(data);
-+
-+ adap->irq_mask |= CHT_WC_EXTCHGRIRQ_CLIENT_IRQ;
-+}
-+
-+static const struct irq_chip cht_wc_i2c_irq_chip = {
-+ .irq_bus_lock = cht_wc_i2c_irq_lock,
-+ .irq_bus_sync_unlock = cht_wc_i2c_irq_sync_unlock,
-+ .irq_disable = cht_wc_i2c_irq_disable,
-+ .irq_enable = cht_wc_i2c_irq_enable,
-+ .name = "cht_wc_ext_chrg_irq_chip",
-+};
-+
-+static const struct property_entry bq24190_props[] = {
-+ PROPERTY_ENTRY_STRING("extcon-name", "cht_wcove_pwrsrc"),
-+ PROPERTY_ENTRY_BOOL("omit-battery-class"),
-+ PROPERTY_ENTRY_BOOL("disable-reset"),
-+ { }
-+};
-+
-+static int cht_wc_i2c_adap_i2c_probe(struct platform_device *pdev)
-+{
-+ struct intel_soc_pmic *pmic = dev_get_drvdata(pdev->dev.parent);
-+ struct cht_wc_i2c_adap *adap;
-+ struct i2c_board_info board_info = {
-+ .type = "bq24190",
-+ .addr = 0x6b,
-+ .properties = bq24190_props,
-+ };
-+ int ret, irq;
-+
-+ irq = platform_get_irq(pdev, 0);
-+ if (irq < 0) {
-+ dev_err(&pdev->dev, "Error missing irq resource\n");
-+ return -EINVAL;
-+ }
-+
-+ adap = devm_kzalloc(&pdev->dev, sizeof(*adap), GFP_KERNEL);
-+ if (!adap)
-+ return -ENOMEM;
-+
-+ init_waitqueue_head(&adap->wait);
-+ mutex_init(&adap->irqchip_lock);
-+ adap->irqchip = cht_wc_i2c_irq_chip;
-+ adap->regmap = pmic->regmap;
-+ adap->adapter.owner = THIS_MODULE;
-+ adap->adapter.class = I2C_CLASS_HWMON;
-+ adap->adapter.algo = &cht_wc_i2c_adap_algo;
-+ strlcpy(adap->adapter.name, "PMIC I2C Adapter",
-+ sizeof(adap->adapter.name));
-+ adap->adapter.dev.parent = &pdev->dev;
-+
-+ /* Clear and activate i2c-adapter interrupts, disable client IRQ */
-+ adap->old_irq_mask = adap->irq_mask = ~CHT_WC_EXTCHGRIRQ_ADAP_IRQMASK;
-+ ret = regmap_write(adap->regmap, CHT_WC_EXTCHGRIRQ, ~adap->irq_mask);
-+ if (ret)
-+ return ret;
-+
-+ ret = regmap_write(adap->regmap, CHT_WC_EXTCHGRIRQ_MSK, adap->irq_mask);
-+ if (ret)
-+ return ret;
-+
-+ /* Alloc and register client IRQ */
-+ adap->irq_domain = irq_domain_add_linear(pdev->dev.of_node, 1,
-+ &irq_domain_simple_ops, NULL);
-+ if (!adap->irq_domain)
-+ return -ENOMEM;
-+
-+ adap->client_irq = irq_create_mapping(adap->irq_domain, 0);
-+ if (!adap->client_irq) {
-+ ret = -ENOMEM;
-+ goto remove_irq_domain;
-+ }
-+
-+ irq_set_chip_data(adap->client_irq, adap);
-+ irq_set_chip_and_handler(adap->client_irq, &adap->irqchip,
-+ handle_simple_irq);
-+
-+ ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
-+ cht_wc_i2c_adap_thread_handler,
-+ IRQF_ONESHOT, "PMIC I2C Adapter", adap);
-+ if (ret)
-+ goto remove_irq_domain;
-+
-+ i2c_set_adapdata(&adap->adapter, adap);
-+ ret = i2c_add_adapter(&adap->adapter);
-+ if (ret)
-+ goto remove_irq_domain;
-+
-+ board_info.irq = adap->client_irq;
-+ adap->client = i2c_new_device(&adap->adapter, &board_info);
-+ if (!adap->client) {
-+ ret = -ENOMEM;
-+ goto del_adapter;
-+ }
-+
-+ platform_set_drvdata(pdev, adap);
-+ return 0;
-+
-+del_adapter:
-+ i2c_del_adapter(&adap->adapter);
-+remove_irq_domain:
-+ irq_domain_remove(adap->irq_domain);
-+ return ret;
-+}
-+
-+static int cht_wc_i2c_adap_i2c_remove(struct platform_device *pdev)
-+{
-+ struct cht_wc_i2c_adap *adap = platform_get_drvdata(pdev);
-+
-+ i2c_unregister_device(adap->client);
-+ i2c_del_adapter(&adap->adapter);
-+ irq_domain_remove(adap->irq_domain);
-+
-+ return 0;
-+}
-+
-+static struct platform_device_id cht_wc_i2c_adap_id_table[] = {
-+ { .name = "cht_wcove_ext_chgr" },
-+ {},
-+};
-+MODULE_DEVICE_TABLE(platform, cht_wc_i2c_adap_id_table);
-+
-+struct platform_driver cht_wc_i2c_adap_driver = {
-+ .probe = cht_wc_i2c_adap_i2c_probe,
-+ .remove = cht_wc_i2c_adap_i2c_remove,
-+ .driver = {
-+ .name = "cht_wcove_ext_chgr",
-+ },
-+ .id_table = cht_wc_i2c_adap_id_table,
-+};
-+module_platform_driver(cht_wc_i2c_adap_driver);
-+
-+MODULE_DESCRIPTION("Intel CHT Whiskey Cove PMIC I2C Master driver");
-+MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>");
-+MODULE_LICENSE("GPL");
---
-2.13.0
-
diff --git a/1-2-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-NMI.patch b/1-2-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-NMI.patch
deleted file mode 100644
index ca079af42..000000000
--- a/1-2-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-NMI.patch
+++ /dev/null
@@ -1,296 +0,0 @@
-From patchwork Mon Nov 6 12:31:12 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [1/2] kvm: vmx: Reinstate support for CPUs without virtual NMI
-From: Paolo Bonzini <pbonzini@redhat.com>
-X-Patchwork-Id: 10043403
-Message-Id: <1509971473-74491-2-git-send-email-pbonzini@redhat.com>
-To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org
-Cc: rkrcmar@redhat.com, stable@vger.kernel.org
-Date: Mon, 6 Nov 2017 13:31:12 +0100
-
-This is more or less a revert of commit 2c82878b0cb3 ("KVM: VMX: require
-virtual NMI support", 2017-03-27); it turns out that Core 2 Duo machines
-only had virtual NMIs in some SKUs.
-
-The revert is not trivial because in the meanwhile there have been several
-fixes to nested NMI injection. Therefore, the entire vNMI state is moved
-to struct loaded_vmcs.
-
-Another change compared to before the patch is a simplification here:
-
- if (unlikely(!cpu_has_virtual_nmis() && vmx->soft_vnmi_blocked &&
- !(is_guest_mode(vcpu) && nested_cpu_has_virtual_nmis(
- get_vmcs12(vcpu))))) {
-
-The final condition here is always true (because nested_cpu_has_virtual_nmis
-is always false) and is removed.
-
-Fixes: 2c82878b0cb38fd516fd612c67852a6bbf282003
-Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1490803
-Cc: stable@vger.kernel.org
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
----
- arch/x86/kvm/vmx.c | 150 +++++++++++++++++++++++++++++++++++++----------------
- 1 file changed, 106 insertions(+), 44 deletions(-)
-
-diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index e6c8ffa84968..d6b3b12ae1e2 100644
---- a/arch/x86/kvm/vmx.c
-+++ b/arch/x86/kvm/vmx.c
-@@ -202,6 +202,10 @@ struct loaded_vmcs {
- bool nmi_known_unmasked;
- unsigned long vmcs_host_cr3; /* May not match real cr3 */
- unsigned long vmcs_host_cr4; /* May not match real cr4 */
-+ /* Support for vnmi-less CPUs */
-+ int soft_vnmi_blocked;
-+ ktime_t entry_time;
-+ s64 vnmi_blocked_time;
- struct list_head loaded_vmcss_on_cpu_link;
- };
-
-@@ -1291,6 +1295,11 @@ static inline bool cpu_has_vmx_invpcid(void)
- SECONDARY_EXEC_ENABLE_INVPCID;
- }
-
-+static inline bool cpu_has_virtual_nmis(void)
-+{
-+ return vmcs_config.pin_based_exec_ctrl & PIN_BASED_VIRTUAL_NMIS;
-+}
-+
- static inline bool cpu_has_vmx_wbinvd_exit(void)
- {
- return vmcs_config.cpu_based_2nd_exec_ctrl &
-@@ -1348,11 +1357,6 @@ static inline bool nested_cpu_has2(struct vmcs12 *vmcs12, u32 bit)
- (vmcs12->secondary_vm_exec_control & bit);
- }
-
--static inline bool nested_cpu_has_virtual_nmis(struct vmcs12 *vmcs12)
--{
-- return vmcs12->pin_based_vm_exec_control & PIN_BASED_VIRTUAL_NMIS;
--}
--
- static inline bool nested_cpu_has_preemption_timer(struct vmcs12 *vmcs12)
- {
- return vmcs12->pin_based_vm_exec_control &
-@@ -3712,9 +3716,9 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf)
- &_vmexit_control) < 0)
- return -EIO;
-
-- min = PIN_BASED_EXT_INTR_MASK | PIN_BASED_NMI_EXITING |
-- PIN_BASED_VIRTUAL_NMIS;
-- opt = PIN_BASED_POSTED_INTR | PIN_BASED_VMX_PREEMPTION_TIMER;
-+ min = PIN_BASED_EXT_INTR_MASK | PIN_BASED_NMI_EXITING;
-+ opt = PIN_BASED_VIRTUAL_NMIS | PIN_BASED_POSTED_INTR |
-+ PIN_BASED_VMX_PREEMPTION_TIMER;
- if (adjust_vmx_controls(min, opt, MSR_IA32_VMX_PINBASED_CTLS,
- &_pin_based_exec_control) < 0)
- return -EIO;
-@@ -5669,7 +5673,8 @@ static void enable_irq_window(struct kvm_vcpu *vcpu)
-
- static void enable_nmi_window(struct kvm_vcpu *vcpu)
- {
-- if (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_STI) {
-+ if (!cpu_has_virtual_nmis() ||
-+ vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_STI) {
- enable_irq_window(vcpu);
- return;
- }
-@@ -5709,6 +5714,19 @@ static void vmx_inject_nmi(struct kvm_vcpu *vcpu)
- {
- struct vcpu_vmx *vmx = to_vmx(vcpu);
-
-+ if (!cpu_has_virtual_nmis()) {
-+ /*
-+ * Tracking the NMI-blocked state in software is built upon
-+ * finding the next open IRQ window. This, in turn, depends on
-+ * well-behaving guests: They have to keep IRQs disabled at
-+ * least as long as the NMI handler runs. Otherwise we may
-+ * cause NMI nesting, maybe breaking the guest. But as this is
-+ * highly unlikely, we can live with the residual risk.
-+ */
-+ vmx->loaded_vmcs->soft_vnmi_blocked = 1;
-+ vmx->loaded_vmcs->vnmi_blocked_time = 0;
-+ }
-+
- ++vcpu->stat.nmi_injections;
- vmx->loaded_vmcs->nmi_known_unmasked = false;
-
-@@ -5727,6 +5745,8 @@ static bool vmx_get_nmi_mask(struct kvm_vcpu *vcpu)
- struct vcpu_vmx *vmx = to_vmx(vcpu);
- bool masked;
-
-+ if (!cpu_has_virtual_nmis())
-+ return vmx->loaded_vmcs->soft_vnmi_blocked;
- if (vmx->loaded_vmcs->nmi_known_unmasked)
- return false;
- masked = vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_NMI;
-@@ -5738,13 +5758,20 @@ static void vmx_set_nmi_mask(struct kvm_vcpu *vcpu, bool masked)
- {
- struct vcpu_vmx *vmx = to_vmx(vcpu);
-
-- vmx->loaded_vmcs->nmi_known_unmasked = !masked;
-- if (masked)
-- vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
-- GUEST_INTR_STATE_NMI);
-- else
-- vmcs_clear_bits(GUEST_INTERRUPTIBILITY_INFO,
-- GUEST_INTR_STATE_NMI);
-+ if (!cpu_has_virtual_nmis()) {
-+ if (vmx->loaded_vmcs->soft_vnmi_blocked != masked) {
-+ vmx->loaded_vmcs->soft_vnmi_blocked = masked;
-+ vmx->loaded_vmcs->vnmi_blocked_time = 0;
-+ }
-+ } else {
-+ vmx->loaded_vmcs->nmi_known_unmasked = !masked;
-+ if (masked)
-+ vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
-+ GUEST_INTR_STATE_NMI);
-+ else
-+ vmcs_clear_bits(GUEST_INTERRUPTIBILITY_INFO,
-+ GUEST_INTR_STATE_NMI);
-+ }
- }
-
- static int vmx_nmi_allowed(struct kvm_vcpu *vcpu)
-@@ -5752,6 +5779,10 @@ static int vmx_nmi_allowed(struct kvm_vcpu *vcpu)
- if (to_vmx(vcpu)->nested.nested_run_pending)
- return 0;
-
-+ if (!cpu_has_virtual_nmis() &&
-+ to_vmx(vcpu)->loaded_vmcs->soft_vnmi_blocked)
-+ return 0;
-+
- return !(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) &
- (GUEST_INTR_STATE_MOV_SS | GUEST_INTR_STATE_STI
- | GUEST_INTR_STATE_NMI));
-@@ -6479,6 +6510,7 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu)
- * AAK134, BY25.
- */
- if (!(to_vmx(vcpu)->idt_vectoring_info & VECTORING_INFO_VALID_MASK) &&
-+ cpu_has_virtual_nmis() &&
- (exit_qualification & INTR_INFO_UNBLOCK_NMI))
- vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO, GUEST_INTR_STATE_NMI);
-
-@@ -6965,7 +6997,7 @@ static struct loaded_vmcs *nested_get_current_vmcs02(struct vcpu_vmx *vmx)
- }
-
- /* Create a new VMCS */
-- item = kmalloc(sizeof(struct vmcs02_list), GFP_KERNEL);
-+ item = kzalloc(sizeof(struct vmcs02_list), GFP_KERNEL);
- if (!item)
- return NULL;
- item->vmcs02.vmcs = alloc_vmcs();
-@@ -7982,6 +8014,7 @@ static int handle_pml_full(struct kvm_vcpu *vcpu)
- * "blocked by NMI" bit has to be set before next VM entry.
- */
- if (!(to_vmx(vcpu)->idt_vectoring_info & VECTORING_INFO_VALID_MASK) &&
-+ cpu_has_virtual_nmis() &&
- (exit_qualification & INTR_INFO_UNBLOCK_NMI))
- vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
- GUEST_INTR_STATE_NMI);
-@@ -8826,6 +8859,25 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
- return 0;
- }
-
-+ if (unlikely(!cpu_has_virtual_nmis() &&
-+ vmx->loaded_vmcs->soft_vnmi_blocked)) {
-+ if (vmx_interrupt_allowed(vcpu)) {
-+ vmx->loaded_vmcs->soft_vnmi_blocked = 0;
-+ } else if (vmx->loaded_vmcs->vnmi_blocked_time > 1000000000LL &&
-+ vcpu->arch.nmi_pending) {
-+ /*
-+ * This CPU don't support us in finding the end of an
-+ * NMI-blocked window if the guest runs with IRQs
-+ * disabled. So we pull the trigger after 1 s of
-+ * futile waiting, but inform the user about this.
-+ */
-+ printk(KERN_WARNING "%s: Breaking out of NMI-blocked "
-+ "state on VCPU %d after 1 s timeout\n",
-+ __func__, vcpu->vcpu_id);
-+ vmx->loaded_vmcs->soft_vnmi_blocked = 0;
-+ }
-+ }
-+
- if (exit_reason < kvm_vmx_max_exit_handlers
- && kvm_vmx_exit_handlers[exit_reason])
- return kvm_vmx_exit_handlers[exit_reason](vcpu);
-@@ -9108,33 +9160,38 @@ static void vmx_recover_nmi_blocking(struct vcpu_vmx *vmx)
-
- idtv_info_valid = vmx->idt_vectoring_info & VECTORING_INFO_VALID_MASK;
-
-- if (vmx->loaded_vmcs->nmi_known_unmasked)
-- return;
-- /*
-- * Can't use vmx->exit_intr_info since we're not sure what
-- * the exit reason is.
-- */
-- exit_intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
-- unblock_nmi = (exit_intr_info & INTR_INFO_UNBLOCK_NMI) != 0;
-- vector = exit_intr_info & INTR_INFO_VECTOR_MASK;
-- /*
-- * SDM 3: 27.7.1.2 (September 2008)
-- * Re-set bit "block by NMI" before VM entry if vmexit caused by
-- * a guest IRET fault.
-- * SDM 3: 23.2.2 (September 2008)
-- * Bit 12 is undefined in any of the following cases:
-- * If the VM exit sets the valid bit in the IDT-vectoring
-- * information field.
-- * If the VM exit is due to a double fault.
-- */
-- if ((exit_intr_info & INTR_INFO_VALID_MASK) && unblock_nmi &&
-- vector != DF_VECTOR && !idtv_info_valid)
-- vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
-- GUEST_INTR_STATE_NMI);
-- else
-- vmx->loaded_vmcs->nmi_known_unmasked =
-- !(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO)
-- & GUEST_INTR_STATE_NMI);
-+ if (cpu_has_virtual_nmis()) {
-+ if (vmx->loaded_vmcs->nmi_known_unmasked)
-+ return;
-+ /*
-+ * Can't use vmx->exit_intr_info since we're not sure what
-+ * the exit reason is.
-+ */
-+ exit_intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
-+ unblock_nmi = (exit_intr_info & INTR_INFO_UNBLOCK_NMI) != 0;
-+ vector = exit_intr_info & INTR_INFO_VECTOR_MASK;
-+ /*
-+ * SDM 3: 27.7.1.2 (September 2008)
-+ * Re-set bit "block by NMI" before VM entry if vmexit caused by
-+ * a guest IRET fault.
-+ * SDM 3: 23.2.2 (September 2008)
-+ * Bit 12 is undefined in any of the following cases:
-+ * If the VM exit sets the valid bit in the IDT-vectoring
-+ * information field.
-+ * If the VM exit is due to a double fault.
-+ */
-+ if ((exit_intr_info & INTR_INFO_VALID_MASK) && unblock_nmi &&
-+ vector != DF_VECTOR && !idtv_info_valid)
-+ vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
-+ GUEST_INTR_STATE_NMI);
-+ else
-+ vmx->loaded_vmcs->nmi_known_unmasked =
-+ !(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO)
-+ & GUEST_INTR_STATE_NMI);
-+ } else if (unlikely(vmx->loaded_vmcs->soft_vnmi_blocked))
-+ vmx->loaded_vmcs->vnmi_blocked_time +=
-+ ktime_to_ns(ktime_sub(ktime_get(),
-+ vmx->loaded_vmcs->entry_time));
- }
-
- static void __vmx_complete_interrupts(struct kvm_vcpu *vcpu,
-@@ -9251,6 +9308,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
- struct vcpu_vmx *vmx = to_vmx(vcpu);
- unsigned long debugctlmsr, cr3, cr4;
-
-+ /* Record the guest's net vcpu time for enforced NMI injections. */
-+ if (unlikely(!cpu_has_virtual_nmis() &&
-+ vmx->loaded_vmcs->soft_vnmi_blocked))
-+ vmx->loaded_vmcs->entry_time = ktime_get();
-+
- /* Don't enter VMX if guest state is invalid, let the exit handler
- start emulation until we arrive back to a valid state */
- if (vmx->emulation_required)
diff --git a/1-3-net-set-tb--fast_sk_family.patch b/1-3-net-set-tb--fast_sk_family.patch
deleted file mode 100644
index dbe5250ab..000000000
--- a/1-3-net-set-tb--fast_sk_family.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From patchwork Mon Sep 18 16:28:55 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [1/3] net: set tb->fast_sk_family
-X-Patchwork-Submitter: Josef Bacik <josef@toxicpanda.com>
-X-Patchwork-Id: 815031
-X-Patchwork-Delegate: davem@davemloft.net
-Message-Id: <1505752137-15522-2-git-send-email-jbacik@fb.com>
-To: davem@davemloft.net, netdev@vger.kernel.org,
- linux-kernel@vger.kernel.org, crobinso@redhat.com,
- labbott@redhat.com, kernel-team@fb.com
-Cc: Josef Bacik <jbacik@fb.com>, stable@vger.kernel.org
-Date: Mon, 18 Sep 2017 12:28:55 -0400
-From: josef@toxicpanda.com
-List-Id: <netdev.vger.kernel.org>
-
-From: Josef Bacik <jbacik@fb.com>
-
-We need to set the tb->fast_sk_family properly so we can use the proper
-comparison function for all subsequent reuseport bind requests.
-
-Cc: stable@vger.kernel.org
-Fixes: 637bc8bbe6c0 ("inet: reset tb->fastreuseport when adding a reuseport sk")
-Reported-and-tested-by: Cole Robinson <crobinso@redhat.com>
-Signed-off-by: Josef Bacik <jbacik@fb.com>
----
- net/ipv4/inet_connection_sock.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
-index b9c64b40a83a..f87f4805e244 100644
---- a/net/ipv4/inet_connection_sock.c
-+++ b/net/ipv4/inet_connection_sock.c
-@@ -328,6 +328,7 @@ int inet_csk_get_port(struct sock *sk, unsigned short snum)
- tb->fastuid = uid;
- tb->fast_rcv_saddr = sk->sk_rcv_saddr;
- tb->fast_ipv6_only = ipv6_only_sock(sk);
-+ tb->fast_sk_family = sk->sk_family;
- #if IS_ENABLED(CONFIG_IPV6)
- tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr;
- #endif
-@@ -354,6 +355,7 @@ int inet_csk_get_port(struct sock *sk, unsigned short snum)
- tb->fastuid = uid;
- tb->fast_rcv_saddr = sk->sk_rcv_saddr;
- tb->fast_ipv6_only = ipv6_only_sock(sk);
-+ tb->fast_sk_family = sk->sk_family;
- #if IS_ENABLED(CONFIG_IPV6)
- tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr;
- #endif
diff --git a/2-3-net-use-inet6_rcv_saddr-to-compare-sockets.patch b/2-3-net-use-inet6_rcv_saddr-to-compare-sockets.patch
deleted file mode 100644
index 3d64361df..000000000
--- a/2-3-net-use-inet6_rcv_saddr-to-compare-sockets.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From patchwork Mon Sep 18 16:28:56 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [2/3] net: use inet6_rcv_saddr to compare sockets
-X-Patchwork-Submitter: Josef Bacik <josef@toxicpanda.com>
-X-Patchwork-Id: 815028
-X-Patchwork-Delegate: davem@davemloft.net
-Message-Id: <1505752137-15522-3-git-send-email-jbacik@fb.com>
-To: davem@davemloft.net, netdev@vger.kernel.org,
- linux-kernel@vger.kernel.org, crobinso@redhat.com,
- labbott@redhat.com, kernel-team@fb.com
-Cc: Josef Bacik <jbacik@fb.com>, stable@vger.kernel.org
-Date: Mon, 18 Sep 2017 12:28:56 -0400
-From: josef@toxicpanda.com
-List-Id: <netdev.vger.kernel.org>
-
-From: Josef Bacik <jbacik@fb.com>
-
-In ipv6_rcv_saddr_equal() we need to use inet6_rcv_saddr(sk) for the
-ipv6 compare with the fast socket information to make sure we're doing
-the proper comparisons.
-
-Cc: stable@vger.kernel.org
-Fixes: 637bc8bbe6c0 ("inet: reset tb->fastreuseport when adding a reuseport sk")
-Reported-and-tested-by: Cole Robinson <crobinso@redhat.com>
-Signed-off-by: Josef Bacik <jbacik@fb.com>
----
- net/ipv4/inet_connection_sock.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
-index f87f4805e244..a1bf30438bc5 100644
---- a/net/ipv4/inet_connection_sock.c
-+++ b/net/ipv4/inet_connection_sock.c
-@@ -266,7 +266,7 @@ static inline int sk_reuseport_match(struct inet_bind_bucket *tb,
- #if IS_ENABLED(CONFIG_IPV6)
- if (tb->fast_sk_family == AF_INET6)
- return ipv6_rcv_saddr_equal(&tb->fast_v6_rcv_saddr,
-- &sk->sk_v6_rcv_saddr,
-+ inet6_rcv_saddr(sk),
- tb->fast_rcv_saddr,
- sk->sk_rcv_saddr,
- tb->fast_ipv6_only,
diff --git a/3-3-inet-fix-improper-empty-comparison.patch b/3-3-inet-fix-improper-empty-comparison.patch
deleted file mode 100644
index 421a235cb..000000000
--- a/3-3-inet-fix-improper-empty-comparison.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From patchwork Mon Sep 18 16:28:57 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [3/3] inet: fix improper empty comparison
-X-Patchwork-Submitter: Josef Bacik <josef@toxicpanda.com>
-X-Patchwork-Id: 815029
-X-Patchwork-Delegate: davem@davemloft.net
-Message-Id: <1505752137-15522-4-git-send-email-jbacik@fb.com>
-To: davem@davemloft.net, netdev@vger.kernel.org,
- linux-kernel@vger.kernel.org, crobinso@redhat.com,
- labbott@redhat.com, kernel-team@fb.com
-Cc: Josef Bacik <jbacik@fb.com>, stable@vger.kernel.org
-Date: Mon, 18 Sep 2017 12:28:57 -0400
-From: josef@toxicpanda.com
-List-Id: <netdev.vger.kernel.org>
-
-From: Josef Bacik <jbacik@fb.com>
-
-When doing my reuseport rework I screwed up and changed a
-
-if (hlist_empty(&tb->owners))
-
-to
-
-if (!hlist_empty(&tb->owners))
-
-This is obviously bad as all of the reuseport/reuse logic was reversed,
-which caused weird problems like allowing an ipv4 bind conflict if we
-opened an ipv4 only socket on a port followed by an ipv6 only socket on
-the same port.
-
-Cc: stable@vger.kernel.org
-Fixes: b9470c27607b ("inet: kill smallest_size and smallest_port")
-Reported-by: Cole Robinson <crobinso@redhat.com>
-Signed-off-by: Josef Bacik <jbacik@fb.com>
----
- net/ipv4/inet_connection_sock.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
-index a1bf30438bc5..c039c937ba90 100644
---- a/net/ipv4/inet_connection_sock.c
-+++ b/net/ipv4/inet_connection_sock.c
-@@ -321,7 +321,7 @@ int inet_csk_get_port(struct sock *sk, unsigned short snum)
- goto fail_unlock;
- }
- success:
-- if (!hlist_empty(&tb->owners)) {
-+ if (hlist_empty(&tb->owners)) {
- tb->fastreuse = reuse;
- if (sk->sk_reuseport) {
- tb->fastreuseport = FASTREUSEPORT_ANY;
diff --git a/CVE-2017-16538.patch b/CVE-2017-16538.patch
deleted file mode 100644
index e9cf4b054..000000000
--- a/CVE-2017-16538.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From patchwork Tue Sep 26 21:10:20 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [1/2] media: dvb-usb-v2: lmedm04: Improve logic checking of warm
- start.
-From: Malcolm Priestley <tvboxspy@gmail.com>
-X-Patchwork-Id: 44566
-Message-Id: <20170926211021.11036-1-tvboxspy@gmail.com>
-To: linux-media@vger.kernel.org
-Cc: Andrey Konovalov <andreyknvl@google.com>,
- Malcolm Priestley <tvboxspy@gmail.com>
-Date: Tue, 26 Sep 2017 22:10:20 +0100
-
-Warm start has no check as whether a genuine device has
-connected and proceeds to next execution path.
-
-Check device should read 0x47 at offset of 2 on USB descriptor read
-and it is the amount requested of 6 bytes.
-
-Fix for
-kasan: CONFIG_KASAN_INLINE enabled
-kasan: GPF could be caused by NULL-ptr deref or user memory access as
-
-Reported-by: Andrey Konovalov <andreyknvl@google.com>
-Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
----
- drivers/media/usb/dvb-usb-v2/lmedm04.c | 26 ++++++++++++++++++--------
- 1 file changed, 18 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c
-index 5e320fa4a795..992f2011a6ba 100644
---- a/drivers/media/usb/dvb-usb-v2/lmedm04.c
-+++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c
-@@ -494,18 +494,23 @@ static int lme2510_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid,
-
- static int lme2510_return_status(struct dvb_usb_device *d)
- {
-- int ret = 0;
-+ int ret;
- u8 *data;
-
-- data = kzalloc(10, GFP_KERNEL);
-+ data = kzalloc(6, GFP_KERNEL);
- if (!data)
- return -ENOMEM;
-
-- ret |= usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0),
-- 0x06, 0x80, 0x0302, 0x00, data, 0x0006, 200);
-- info("Firmware Status: %x (%x)", ret , data[2]);
-+ ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0),
-+ 0x06, 0x80, 0x0302, 0x00,
-+ data, 0x6, 200);
-+ if (ret != 6)
-+ ret = -EINVAL;
-+ else
-+ ret = data[2];
-+
-+ info("Firmware Status: %6ph", data);
-
-- ret = (ret < 0) ? -ENODEV : data[2];
- kfree(data);
- return ret;
- }
-@@ -1189,6 +1194,7 @@ static int lme2510_get_adapter_count(struct dvb_usb_device *d)
- static int lme2510_identify_state(struct dvb_usb_device *d, const char **name)
- {
- struct lme2510_state *st = d->priv;
-+ int status;
-
- usb_reset_configuration(d->udev);
-
-@@ -1197,12 +1203,16 @@ static int lme2510_identify_state(struct dvb_usb_device *d, const char **name)
-
- st->dvb_usb_lme2510_firmware = dvb_usb_lme2510_firmware;
-
-- if (lme2510_return_status(d) == 0x44) {
-+ status = lme2510_return_status(d);
-+ if (status == 0x44) {
- *name = lme_firmware_switch(d, 0);
- return COLD;
- }
-
-- return 0;
-+ if (status != 0x47)
-+ return -EINVAL;
-+
-+ return WARM;
- }
-
- static int lme2510_get_stream_config(struct dvb_frontend *fe, u8 *ts_type,
-From patchwork Tue Sep 26 21:10:21 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [2/2] media: dvb-usb-v2: lmedm04: move ts2020 attach to
- dm04_lme2510_tuner
-From: Malcolm Priestley <tvboxspy@gmail.com>
-X-Patchwork-Id: 44567
-Message-Id: <20170926211021.11036-2-tvboxspy@gmail.com>
-To: linux-media@vger.kernel.org
-Cc: Andrey Konovalov <andreyknvl@google.com>,
- Malcolm Priestley <tvboxspy@gmail.com>
-Date: Tue, 26 Sep 2017 22:10:21 +0100
-
-When the tuner was split from m88rs2000 the attach function is in wrong
-place.
-
-Move to dm04_lme2510_tuner to trap errors on failure and removing
-a call to lme_coldreset.
-
-Prevents driver starting up without any tuner connected.
-
-Fixes to trap for ts2020 fail.
-LME2510(C): FE Found M88RS2000
-ts2020: probe of 0-0060 failed with error -11
-...
-LME2510(C): TUN Found RS2000 tuner
-kasan: CONFIG_KASAN_INLINE enabled
-kasan: GPF could be caused by NULL-ptr deref or user memory access
-general protection fault: 0000 [#1] PREEMPT SMP KASAN
-
-Reported-by: Andrey Konovalov <andreyknvl@google.com>
-Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
-Tested-by: Andrey Konovalov <andreyknvl@google.com>
----
- drivers/media/usb/dvb-usb-v2/lmedm04.c | 13 ++++++-------
- 1 file changed, 6 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c
-index 992f2011a6ba..be26c029546b 100644
---- a/drivers/media/usb/dvb-usb-v2/lmedm04.c
-+++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c
-@@ -1076,8 +1076,6 @@ static int dm04_lme2510_frontend_attach(struct dvb_usb_adapter *adap)
-
- if (adap->fe[0]) {
- info("FE Found M88RS2000");
-- dvb_attach(ts2020_attach, adap->fe[0], &ts2020_config,
-- &d->i2c_adap);
- st->i2c_tuner_gate_w = 5;
- st->i2c_tuner_gate_r = 5;
- st->i2c_tuner_addr = 0x60;
-@@ -1143,17 +1141,18 @@ static int dm04_lme2510_tuner(struct dvb_usb_adapter *adap)
- ret = st->tuner_config;
- break;
- case TUNER_RS2000:
-- ret = st->tuner_config;
-+ if (dvb_attach(ts2020_attach, adap->fe[0],
-+ &ts2020_config, &d->i2c_adap))
-+ ret = st->tuner_config;
- break;
- default:
- break;
- }
-
-- if (ret)
-+ if (ret) {
- info("TUN Found %s tuner", tun_msg[ret]);
-- else {
-- info("TUN No tuner found --- resetting device");
-- lme_coldreset(d);
-+ } else {
-+ info("TUN No tuner found");
- return -ENODEV;
- }
-
diff --git a/CVE-2017-7477.patch b/CVE-2017-7477.patch
deleted file mode 100644
index 6405614cc..000000000
--- a/CVE-2017-7477.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 4d6fa57b4dab0d77f4d8e9d9c73d1e63f6fe8fee Mon Sep 17 00:00:00 2001
-From: "Jason A. Donenfeld" <Jason@zx2c4.com>
-Date: Fri, 21 Apr 2017 23:14:48 +0200
-Subject: macsec: avoid heap overflow in skb_to_sgvec
-
-While this may appear as a humdrum one line change, it's actually quite
-important. An sk_buff stores data in three places:
-
-1. A linear chunk of allocated memory in skb->data. This is the easiest
- one to work with, but it precludes using scatterdata since the memory
- must be linear.
-2. The array skb_shinfo(skb)->frags, which is of maximum length
- MAX_SKB_FRAGS. This is nice for scattergather, since these fragments
- can point to different pages.
-3. skb_shinfo(skb)->frag_list, which is a pointer to another sk_buff,
- which in turn can have data in either (1) or (2).
-
-The first two are rather easy to deal with, since they're of a fixed
-maximum length, while the third one is not, since there can be
-potentially limitless chains of fragments. Fortunately dealing with
-frag_list is opt-in for drivers, so drivers don't actually have to deal
-with this mess. For whatever reason, macsec decided it wanted pain, and
-so it explicitly specified NETIF_F_FRAGLIST.
-
-Because dealing with (1), (2), and (3) is insane, most users of sk_buff
-doing any sort of crypto or paging operation calls a convenient function
-called skb_to_sgvec (which happens to be recursive if (3) is in use!).
-This takes a sk_buff as input, and writes into its output pointer an
-array of scattergather list items. Sometimes people like to declare a
-fixed size scattergather list on the stack; othertimes people like to
-allocate a fixed size scattergather list on the heap. However, if you're
-doing it in a fixed-size fashion, you really shouldn't be using
-NETIF_F_FRAGLIST too (unless you're also ensuring the sk_buff and its
-frag_list children arent't shared and then you check the number of
-fragments in total required.)
-
-Macsec specifically does this:
-
- size += sizeof(struct scatterlist) * (MAX_SKB_FRAGS + 1);
- tmp = kmalloc(size, GFP_ATOMIC);
- *sg = (struct scatterlist *)(tmp + sg_offset);
- ...
- sg_init_table(sg, MAX_SKB_FRAGS + 1);
- skb_to_sgvec(skb, sg, 0, skb->len);
-
-Specifying MAX_SKB_FRAGS + 1 is the right answer usually, but not if you're
-using NETIF_F_FRAGLIST, in which case the call to skb_to_sgvec will
-overflow the heap, and disaster ensues.
-
-Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-Cc: stable@vger.kernel.org
-Cc: security@kernel.org
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/macsec.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
-index ff0a5ed..dbab05a 100644
---- a/drivers/net/macsec.c
-+++ b/drivers/net/macsec.c
-@@ -2716,7 +2716,7 @@ static netdev_tx_t macsec_start_xmit(struct sk_buff *skb,
- }
-
- #define MACSEC_FEATURES \
-- (NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST)
-+ (NETIF_F_SG | NETIF_F_HIGHDMA)
- static struct lock_class_key macsec_netdev_addr_lock_key;
-
- static int macsec_dev_init(struct net_device *dev)
---
-cgit v1.1
-
diff --git a/HID-rmi-Check-that-a-device-is-a-RMI-device-before-c.patch b/HID-rmi-Check-that-a-device-is-a-RMI-device-before-c.patch
deleted file mode 100644
index d6a8e6a52..000000000
--- a/HID-rmi-Check-that-a-device-is-a-RMI-device-before-c.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From ef14a4bf0910d06c7e202552914028d4956809cb Mon Sep 17 00:00:00 2001
-From: Andrew Duggan <aduggan@synaptics.com>
-Date: Tue, 17 Oct 2017 18:37:36 -0700
-Subject: [PATCH] HID: rmi: Check that a device is a RMI device before calling
- RMI functions
-
-The hid-rmi driver may handle non rmi devices on composite USB devices.
-Callbacks need to make sure that the current device is a RMI device before
-calling RMI specific functions. Most callbacks already have this check, but
-this patch adds checks to the remaining callbacks.
-
-Reported-by: Hendrik Langer <hendrik.langer@gmx.de>
-Tested-by: Hendrik Langer <hendrik.langer@gmx.de>
-Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
-Signed-off-by: Jiri Kosina <jkosina@suse.cz>
----
- drivers/hid/hid-rmi.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
-index ef241d66562e..0f43c4292685 100644
---- a/drivers/hid/hid-rmi.c
-+++ b/drivers/hid/hid-rmi.c
-@@ -368,6 +368,11 @@ static int rmi_check_sanity(struct hid_device *hdev, u8 *data, int size)
- static int rmi_raw_event(struct hid_device *hdev,
- struct hid_report *report, u8 *data, int size)
- {
-+ struct rmi_data *hdata = hid_get_drvdata(hdev);
-+
-+ if (!(hdata->device_flags & RMI_DEVICE))
-+ return 0;
-+
- size = rmi_check_sanity(hdev, data, size);
- if (size < 2)
- return 0;
-@@ -713,9 +718,11 @@ static void rmi_remove(struct hid_device *hdev)
- {
- struct rmi_data *hdata = hid_get_drvdata(hdev);
-
-- clear_bit(RMI_STARTED, &hdata->flags);
-- cancel_work_sync(&hdata->reset_work);
-- rmi_unregister_transport_device(&hdata->xport);
-+ if (hdata->device_flags & RMI_DEVICE) {
-+ clear_bit(RMI_STARTED, &hdata->flags);
-+ cancel_work_sync(&hdata->reset_work);
-+ rmi_unregister_transport_device(&hdata->xport);
-+ }
-
- hid_hw_stop(hdev);
- }
---
-2.14.3
-
diff --git a/Input-synaptics---Disable-kernel-tracking-on-SMBus-devices.patch b/Input-synaptics---Disable-kernel-tracking-on-SMBus-devices.patch
deleted file mode 100644
index 81e858fd0..000000000
--- a/Input-synaptics---Disable-kernel-tracking-on-SMBus-devices.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From patchwork Thu Sep 28 20:07:19 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-Subject: Input: synaptics - Disable kernel tracking on SMBus devices
-From: Andrew Duggan <aduggan@synaptics.com>
-X-Patchwork-Id: 9976729
-Message-Id: <1506629239-5940-1-git-send-email-aduggan@synaptics.com>
-To: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
-Cc: Andrew Duggan <aduggan@synaptics.com>,
- Dmitry Torokhov <dmitry.torokhov@gmail.com>,
- Benjamin Tissoires <benjamin.tissoires@redhat.com>,
- =?UTF-8?q?Kamil=20P=C3=A1ral?= <kparal@redhat.com>
-Date: Thu, 28 Sep 2017 13:07:19 -0700
-
-In certain situations kernel tracking seems to be getting confused
-and incorrectly reporting the slot of a contact. On example is when
-the user does a three finger click or tap and then places two fingers
-on the touchpad in the same area. The kernel tracking code seems to
-continue to think that there are three contacts on the touchpad and
-incorrectly alternates the slot of one of the contacts. The result that
-is the input subsystem reports a stream of button press and release
-events as the reported slot changes.
-
-Kernel tracking was originally enabled to prevent cursor jumps, but it
-is unclear how much of an issue kernel jumps actually are. This patch
-simply disabled kernel tracking for now.
-
-Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1482640
-
-Signed-off-by: Andrew Duggan <aduggan@synaptics.com>
-Tested-by: Kamil Páral <kparal@redhat.com>
-Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
----
- drivers/input/mouse/synaptics.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
-index 5af0b7d..ee5466a 100644
---- a/drivers/input/mouse/synaptics.c
-+++ b/drivers/input/mouse/synaptics.c
-@@ -1709,8 +1709,7 @@ static int synaptics_create_intertouch(struct psmouse *psmouse,
- .sensor_pdata = {
- .sensor_type = rmi_sensor_touchpad,
- .axis_align.flip_y = true,
-- /* to prevent cursors jumps: */
-- .kernel_tracking = true,
-+ .kernel_tracking = false,
- .topbuttonpad = topbuttonpad,
- },
- .f30_data = {
diff --git a/ahci-don-t-ignore-result-code-of-ahci_reset_controller.patch b/ahci-don-t-ignore-result-code-of-ahci_reset_controller.patch
deleted file mode 100644
index 771ca7950..000000000
--- a/ahci-don-t-ignore-result-code-of-ahci_reset_controller.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From patchwork Mon Oct 2 18:31:24 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: ahci: don't ignore result code of ahci_reset_controller()
-X-Patchwork-Submitter: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-X-Patchwork-Id: 820637
-X-Patchwork-Delegate: davem@davemloft.net
-Message-Id: <20171002183124.17003-1-ard.biesheuvel@linaro.org>
-To: linux-ide@vger.kernel.org, tj@kernel.org
-Cc: graeme.gregory@linaro.org, leif.lindholm@linaro.org,
- daniel.thompson@Linaro.org, Ard Biesheuvel <ard.biesheuvel@linaro.org>
-Date: Mon, 2 Oct 2017 19:31:24 +0100
-From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-List-Id: <linux-ide.vger.kernel.org>
-
-ahci_pci_reset_controller() calls ahci_reset_controller(), which may
-fail, but ignores the result code and always returns success. This
-may result in failures like below
-
- ahci 0000:02:00.0: version 3.0
- ahci 0000:02:00.0: enabling device (0000 -> 0003)
- ahci 0000:02:00.0: SSS flag set, parallel bus scan disabled
- ahci 0000:02:00.0: controller reset failed (0xffffffff)
- ahci 0000:02:00.0: failed to stop engine (-5)
- ... repeated many times ...
- ahci 0000:02:00.0: failed to stop engine (-5)
- Unable to handle kernel paging request at virtual address ffff0000093f9018
- ...
- PC is at ahci_stop_engine+0x5c/0xd8 [libahci]
- LR is at ahci_deinit_port.constprop.12+0x1c/0xc0 [libahci]
- ...
- [<ffff000000a17014>] ahci_stop_engine+0x5c/0xd8 [libahci]
- [<ffff000000a196b4>] ahci_deinit_port.constprop.12+0x1c/0xc0 [libahci]
- [<ffff000000a197d8>] ahci_init_controller+0x80/0x168 [libahci]
- [<ffff000000a260f8>] ahci_pci_init_controller+0x60/0x68 [ahci]
- [<ffff000000a26f94>] ahci_init_one+0x75c/0xd88 [ahci]
- [<ffff000008430324>] local_pci_probe+0x3c/0xb8
- [<ffff000008431728>] pci_device_probe+0x138/0x170
- [<ffff000008585e54>] driver_probe_device+0x2dc/0x458
- [<ffff0000085860e4>] __driver_attach+0x114/0x118
- [<ffff000008583ca8>] bus_for_each_dev+0x60/0xa0
- [<ffff000008585638>] driver_attach+0x20/0x28
- [<ffff0000085850b0>] bus_add_driver+0x1f0/0x2a8
- [<ffff000008586ae0>] driver_register+0x60/0xf8
- [<ffff00000842f9b4>] __pci_register_driver+0x3c/0x48
- [<ffff000000a3001c>] ahci_pci_driver_init+0x1c/0x1000 [ahci]
- [<ffff000008083918>] do_one_initcall+0x38/0x120
-
-where an obvious hardware level failure results in an unnecessary 15 second
-delay and a subsequent crash.
-
-So record the result code of ahci_reset_controller() and relay it, rather
-than ignoring it.
-
-Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
----
- drivers/ata/ahci.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
-index 5a5fd0b404eb..649e799df9c1 100644
---- a/drivers/ata/ahci.c
-+++ b/drivers/ata/ahci.c
-@@ -621,8 +621,11 @@ static void ahci_pci_save_initial_config(struct pci_dev *pdev,
- static int ahci_pci_reset_controller(struct ata_host *host)
- {
- struct pci_dev *pdev = to_pci_dev(host->dev);
-+ int rc;
-
-- ahci_reset_controller(host);
-+ rc = ahci_reset_controller(host);
-+ if (rc)
-+ return rc;
-
- if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
- struct ahci_host_priv *hpriv = host->private_data;
diff --git a/allwinner-net-emac.patch b/allwinner-net-emac.patch
index f5d680bde..6d4f11d90 100644
--- a/allwinner-net-emac.patch
+++ b/allwinner-net-emac.patch
@@ -1,18 +1,575 @@
-From 83e18f0ad4793ea83e03cb8e608bdd2939e76d78 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 4 Sep 2017 13:04:34 +0100
-Subject: [PATCH 1/4] Revert "net: stmmac: sun8i: Remove the compatibles"
+From 1b28a544627ddce094091946f06f99bc41d0098f Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 24 Oct 2017 19:57:12 +0200
+Subject: [PATCH 01/11] net: stmmac: snps, dwmac-mdio MDIOs are automatically
+ registered
+
+stmmac bindings docs said that its mdio node must have
+compatible = "snps,dwmac-mdio";
+Since dwmac-sun8i does not have any good reasons to not doing it, all
+their MDIO node must have it.
+
+Since these compatible is automatically registered, dwmac-sun8i compatible
+does not need to be in need_mdio_ids.
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+---
+ drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+index 6383695004a5..645ef949705f 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+@@ -318,10 +318,6 @@ static int stmmac_dt_phy(struct plat_stmmacenet_data *plat,
+ bool mdio = true;
+ static const struct of_device_id need_mdio_ids[] = {
+ { .compatible = "snps,dwc-qos-ethernet-4.10" },
+- { .compatible = "allwinner,sun8i-a83t-emac" },
+- { .compatible = "allwinner,sun8i-h3-emac" },
+- { .compatible = "allwinner,sun8i-v3s-emac" },
+- { .compatible = "allwinner,sun50i-a64-emac" },
+ {},
+ };
+
+--
+2.14.3
-This reverts commit ad4540cc5aa3dccb8e1e12458d57f8c40fae5a1c.
+From 9a5b1d9a7614b022512744896d889e76f687e90a Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 24 Oct 2017 19:57:13 +0200
+Subject: [PATCH 02/11] net: stmmac: dwmac-sun8i: Handle integrated/external
+ MDIOs
+
+The Allwinner H3 SoC have two distinct MDIO bus, only one could be
+active at the same time.
+The selection of the active MDIO bus are done via some bits in the EMAC
+register of the system controller.
+
+This patch implement this MDIO switch via a custom MDIO-mux.
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+---
+ drivers/net/ethernet/stmicro/stmmac/Kconfig | 1 +
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 353 ++++++++++++++--------
+ 2 files changed, 224 insertions(+), 130 deletions(-)
+
+diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
+index 97035766c291..e28c0d2c58e9 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
++++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
+@@ -159,6 +159,7 @@ config DWMAC_SUN8I
+ tristate "Allwinner sun8i GMAC support"
+ default ARCH_SUNXI
+ depends on OF && (ARCH_SUNXI || COMPILE_TEST)
++ select MDIO_BUS_MUX
+ ---help---
+ Support for Allwinner H3 A83T A64 EMAC ethernet controllers.
+
+diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
+index 39c2122a4f26..b3eb344bb158 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
+@@ -17,6 +17,7 @@
+ #include <linux/clk.h>
+ #include <linux/io.h>
+ #include <linux/iopoll.h>
++#include <linux/mdio-mux.h>
+ #include <linux/mfd/syscon.h>
+ #include <linux/module.h>
+ #include <linux/of_device.h>
+@@ -41,14 +42,14 @@
+ * This value is used for disabling properly EMAC
+ * and used as a good starting value in case of the
+ * boot process(uboot) leave some stuff.
+- * @internal_phy: Does the MAC embed an internal PHY
++ * @soc_has_internal_phy: Does the MAC embed an internal PHY
+ * @support_mii: Does the MAC handle MII
+ * @support_rmii: Does the MAC handle RMII
+ * @support_rgmii: Does the MAC handle RGMII
+ */
+ struct emac_variant {
+ u32 default_syscon_value;
+- int internal_phy;
++ bool soc_has_internal_phy;
+ bool support_mii;
+ bool support_rmii;
+ bool support_rgmii;
+@@ -61,7 +62,8 @@ struct emac_variant {
+ * @rst_ephy: reference to the optional EPHY reset for the internal PHY
+ * @variant: reference to the current board variant
+ * @regmap: regmap for using the syscon
+- * @use_internal_phy: Does the current PHY choice imply using the internal PHY
++ * @internal_phy_powered: Does the internal PHY is enabled
++ * @mux_handle: Internal pointer used by mdio-mux lib
+ */
+ struct sunxi_priv_data {
+ struct clk *tx_clk;
+@@ -70,12 +72,13 @@ struct sunxi_priv_data {
+ struct reset_control *rst_ephy;
+ const struct emac_variant *variant;
+ struct regmap *regmap;
+- bool use_internal_phy;
++ bool internal_phy_powered;
++ void *mux_handle;
+ };
+
+ static const struct emac_variant emac_variant_h3 = {
+ .default_syscon_value = 0x58000,
+- .internal_phy = PHY_INTERFACE_MODE_MII,
++ .soc_has_internal_phy = true,
+ .support_mii = true,
+ .support_rmii = true,
+ .support_rgmii = true
+@@ -83,20 +86,20 @@ static const struct emac_variant emac_variant_h3 = {
+
+ static const struct emac_variant emac_variant_v3s = {
+ .default_syscon_value = 0x38000,
+- .internal_phy = PHY_INTERFACE_MODE_MII,
++ .soc_has_internal_phy = true,
+ .support_mii = true
+ };
+
+ static const struct emac_variant emac_variant_a83t = {
+ .default_syscon_value = 0,
+- .internal_phy = 0,
++ .soc_has_internal_phy = false,
+ .support_mii = true,
+ .support_rgmii = true
+ };
+
+ static const struct emac_variant emac_variant_a64 = {
+ .default_syscon_value = 0,
+- .internal_phy = 0,
++ .soc_has_internal_phy = false,
+ .support_mii = true,
+ .support_rmii = true,
+ .support_rgmii = true
+@@ -195,6 +198,9 @@ static const struct emac_variant emac_variant_a64 = {
+ #define H3_EPHY_LED_POL BIT(17) /* 1: active low, 0: active high */
+ #define H3_EPHY_SHUTDOWN BIT(16) /* 1: shutdown, 0: power up */
+ #define H3_EPHY_SELECT BIT(15) /* 1: internal PHY, 0: external PHY */
++#define H3_EPHY_MUX_MASK (H3_EPHY_SHUTDOWN | H3_EPHY_SELECT)
++#define DWMAC_SUN8I_MDIO_MUX_INTERNAL_ID 1
++#define DWMAC_SUN8I_MDIO_MUX_EXTERNAL_ID 2
+
+ /* H3/A64 specific bits */
+ #define SYSCON_RMII_EN BIT(13) /* 1: enable RMII (overrides EPIT) */
+@@ -634,6 +640,159 @@ static int sun8i_dwmac_reset(struct stmmac_priv *priv)
+ return 0;
+ }
+
++/* Search in mdio-mux node for internal PHY node and get its clk/reset */
++static int get_ephy_nodes(struct stmmac_priv *priv)
++{
++ struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
++ struct device_node *mdio_mux, *iphynode;
++ struct device_node *mdio_internal;
++ int ret;
++
++ mdio_mux = of_get_child_by_name(priv->device->of_node, "mdio-mux");
++ if (!mdio_mux) {
++ dev_err(priv->device, "Cannot get mdio-mux node\n");
++ return -ENODEV;
++ }
++
++ mdio_internal = of_find_compatible_node(mdio_mux, NULL,
++ "allwinner,sun8i-h3-mdio-internal");
++ if (!mdio_internal) {
++ dev_err(priv->device, "Cannot get internal_mdio node\n");
++ return -ENODEV;
++ }
++
++ /* Seek for internal PHY */
++ for_each_child_of_node(mdio_internal, iphynode) {
++ gmac->ephy_clk = of_clk_get(iphynode, 0);
++ if (IS_ERR(gmac->ephy_clk))
++ continue;
++ gmac->rst_ephy = of_reset_control_get_exclusive(iphynode, NULL);
++ if (IS_ERR(gmac->rst_ephy)) {
++ ret = PTR_ERR(gmac->rst_ephy);
++ if (ret == -EPROBE_DEFER)
++ return ret;
++ continue;
++ }
++ dev_info(priv->device, "Found internal PHY node\n");
++ return 0;
++ }
++ return -ENODEV;
++}
++
++static int sun8i_dwmac_power_internal_phy(struct stmmac_priv *priv)
++{
++ struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
++ int ret;
++
++ if (gmac->internal_phy_powered) {
++ dev_warn(priv->device, "Internal PHY already powered\n");
++ return 0;
++ }
++
++ dev_info(priv->device, "Powering internal PHY\n");
++ ret = clk_prepare_enable(gmac->ephy_clk);
++ if (ret) {
++ dev_err(priv->device, "Cannot enable internal PHY\n");
++ return ret;
++ }
++
++ /* Make sure the EPHY is properly reseted, as U-Boot may leave
++ * it at deasserted state, and thus it may fail to reset EMAC.
++ */
++ reset_control_assert(gmac->rst_ephy);
++
++ ret = reset_control_deassert(gmac->rst_ephy);
++ if (ret) {
++ dev_err(priv->device, "Cannot deassert internal phy\n");
++ clk_disable_unprepare(gmac->ephy_clk);
++ return ret;
++ }
++
++ gmac->internal_phy_powered = true;
++
++ return 0;
++}
++
++static int sun8i_dwmac_unpower_internal_phy(struct sunxi_priv_data *gmac)
++{
++ if (!gmac->internal_phy_powered)
++ return 0;
++
++ clk_disable_unprepare(gmac->ephy_clk);
++ reset_control_assert(gmac->rst_ephy);
++ gmac->internal_phy_powered = false;
++ return 0;
++}
++
++/* MDIO multiplexing switch function
++ * This function is called by the mdio-mux layer when it thinks the mdio bus
++ * multiplexer needs to switch.
++ * 'current_child' is the current value of the mux register
++ * 'desired_child' is the value of the 'reg' property of the target child MDIO
++ * node.
++ * The first time this function is called, current_child == -1.
++ * If current_child == desired_child, then the mux is already set to the
++ * correct bus.
++ */
++static int mdio_mux_syscon_switch_fn(int current_child, int desired_child,
++ void *data)
++{
++ struct stmmac_priv *priv = data;
++ struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
++ u32 reg, val;
++ int ret = 0;
++ bool need_power_ephy = false;
++
++ if (current_child ^ desired_child) {
++ regmap_read(gmac->regmap, SYSCON_EMAC_REG, &reg);
++ switch (desired_child) {
++ case DWMAC_SUN8I_MDIO_MUX_INTERNAL_ID:
++ dev_info(priv->device, "Switch mux to internal PHY");
++ val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SELECT;
++
++ need_power_ephy = true;
++ break;
++ case DWMAC_SUN8I_MDIO_MUX_EXTERNAL_ID:
++ dev_info(priv->device, "Switch mux to external PHY");
++ val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SHUTDOWN;
++ need_power_ephy = false;
++ break;
++ default:
++ dev_err(priv->device, "Invalid child ID %x\n",
++ desired_child);
++ return -EINVAL;
++ }
++ regmap_write(gmac->regmap, SYSCON_EMAC_REG, val);
++ if (need_power_ephy) {
++ ret = sun8i_dwmac_power_internal_phy(priv);
++ if (ret)
++ return ret;
++ } else {
++ sun8i_dwmac_unpower_internal_phy(gmac);
++ }
++ /* After changing syscon value, the MAC need reset or it will
++ * use the last value (and so the last PHY set).
++ */
++ ret = sun8i_dwmac_reset(priv);
++ }
++ return ret;
++}
++
++static int sun8i_dwmac_register_mdio_mux(struct stmmac_priv *priv)
++{
++ int ret;
++ struct device_node *mdio_mux;
++ struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
++
++ mdio_mux = of_get_child_by_name(priv->device->of_node, "mdio-mux");
++ if (!mdio_mux)
++ return -ENODEV;
++
++ ret = mdio_mux_init(priv->device, mdio_mux, mdio_mux_syscon_switch_fn,
++ &gmac->mux_handle, priv, priv->mii);
++ return ret;
++}
++
+ static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv)
+ {
+ struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
+@@ -648,35 +807,25 @@ static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv)
+ "Current syscon value is not the default %x (expect %x)\n",
+ val, reg);
+
+- if (gmac->variant->internal_phy) {
+- if (!gmac->use_internal_phy) {
+- /* switch to external PHY interface */
+- reg &= ~H3_EPHY_SELECT;
+- } else {
+- reg |= H3_EPHY_SELECT;
+- reg &= ~H3_EPHY_SHUTDOWN;
+- dev_dbg(priv->device, "Select internal_phy %x\n", reg);
+-
+- if (of_property_read_bool(priv->plat->phy_node,
+- "allwinner,leds-active-low"))
+- reg |= H3_EPHY_LED_POL;
+- else
+- reg &= ~H3_EPHY_LED_POL;
+-
+- /* Force EPHY xtal frequency to 24MHz. */
+- reg |= H3_EPHY_CLK_SEL;
+-
+- ret = of_mdio_parse_addr(priv->device,
+- priv->plat->phy_node);
+- if (ret < 0) {
+- dev_err(priv->device, "Could not parse MDIO addr\n");
+- return ret;
+- }
+- /* of_mdio_parse_addr returns a valid (0 ~ 31) PHY
+- * address. No need to mask it again.
+- */
+- reg |= ret << H3_EPHY_ADDR_SHIFT;
++ if (gmac->variant->soc_has_internal_phy) {
++ if (of_property_read_bool(priv->plat->phy_node,
++ "allwinner,leds-active-low"))
++ reg |= H3_EPHY_LED_POL;
++ else
++ reg &= ~H3_EPHY_LED_POL;
++
++ /* Force EPHY xtal frequency to 24MHz. */
++ reg |= H3_EPHY_CLK_SEL;
++
++ ret = of_mdio_parse_addr(priv->device, priv->plat->phy_node);
++ if (ret < 0) {
++ dev_err(priv->device, "Could not parse MDIO addr\n");
++ return ret;
+ }
++ /* of_mdio_parse_addr returns a valid (0 ~ 31) PHY
++ * address. No need to mask it again.
++ */
++ reg |= 1 << H3_EPHY_ADDR_SHIFT;
+ }
+
+ if (!of_property_read_u32(node, "allwinner,tx-delay-ps", &val)) {
+@@ -746,81 +895,21 @@ static void sun8i_dwmac_unset_syscon(struct sunxi_priv_data *gmac)
+ regmap_write(gmac->regmap, SYSCON_EMAC_REG, reg);
+ }
+
+-static int sun8i_dwmac_power_internal_phy(struct stmmac_priv *priv)
++static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv)
+ {
+- struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
+- int ret;
+-
+- if (!gmac->use_internal_phy)
+- return 0;
+-
+- ret = clk_prepare_enable(gmac->ephy_clk);
+- if (ret) {
+- dev_err(priv->device, "Cannot enable ephy\n");
+- return ret;
+- }
+-
+- /* Make sure the EPHY is properly reseted, as U-Boot may leave
+- * it at deasserted state, and thus it may fail to reset EMAC.
+- */
+- reset_control_assert(gmac->rst_ephy);
++ struct sunxi_priv_data *gmac = priv;
+
+- ret = reset_control_deassert(gmac->rst_ephy);
+- if (ret) {
+- dev_err(priv->device, "Cannot deassert ephy\n");
+- clk_disable_unprepare(gmac->ephy_clk);
+- return ret;
++ if (gmac->variant->soc_has_internal_phy) {
++ /* sun8i_dwmac_exit could be called with mdiomux uninit */
++ if (gmac->mux_handle)
++ mdio_mux_uninit(gmac->mux_handle);
++ if (gmac->internal_phy_powered)
++ sun8i_dwmac_unpower_internal_phy(gmac);
+ }
+
+- return 0;
+-}
+-
+-static int sun8i_dwmac_unpower_internal_phy(struct sunxi_priv_data *gmac)
+-{
+- if (!gmac->use_internal_phy)
+- return 0;
+-
+- clk_disable_unprepare(gmac->ephy_clk);
+- reset_control_assert(gmac->rst_ephy);
+- return 0;
+-}
+-
+-/* sun8i_power_phy() - Activate the PHY:
+- * In case of error, no need to call sun8i_unpower_phy(),
+- * it will be called anyway by sun8i_dwmac_exit()
+- */
+-static int sun8i_power_phy(struct stmmac_priv *priv)
+-{
+- int ret;
+-
+- ret = sun8i_dwmac_power_internal_phy(priv);
+- if (ret)
+- return ret;
+-
+- ret = sun8i_dwmac_set_syscon(priv);
+- if (ret)
+- return ret;
+-
+- /* After changing syscon value, the MAC need reset or it will use
+- * the last value (and so the last PHY set.
+- */
+- ret = sun8i_dwmac_reset(priv);
+- if (ret)
+- return ret;
+- return 0;
+-}
+-
+-static void sun8i_unpower_phy(struct sunxi_priv_data *gmac)
+-{
+ sun8i_dwmac_unset_syscon(gmac);
+- sun8i_dwmac_unpower_internal_phy(gmac);
+-}
+-
+-static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv)
+-{
+- struct sunxi_priv_data *gmac = priv;
+
+- sun8i_unpower_phy(gmac);
++ reset_control_put(gmac->rst_ephy);
+
+ clk_disable_unprepare(gmac->tx_clk);
+
+@@ -849,7 +938,7 @@ static struct mac_device_info *sun8i_dwmac_setup(void *ppriv)
+ if (!mac)
+ return NULL;
+
+- ret = sun8i_power_phy(priv);
++ ret = sun8i_dwmac_set_syscon(priv);
+ if (ret)
+ return NULL;
+
+@@ -889,6 +978,8 @@ static int sun8i_dwmac_probe(struct platform_device *pdev)
+ struct sunxi_priv_data *gmac;
+ struct device *dev = &pdev->dev;
+ int ret;
++ struct stmmac_priv *priv;
++ struct net_device *ndev;
+
+ ret = stmmac_get_platform_resources(pdev, &stmmac_res);
+ if (ret)
+@@ -932,29 +1023,6 @@ static int sun8i_dwmac_probe(struct platform_device *pdev)
+ }
+
+ plat_dat->interface = of_get_phy_mode(dev->of_node);
+- if (plat_dat->interface == gmac->variant->internal_phy) {
+- dev_info(&pdev->dev, "Will use internal PHY\n");
+- gmac->use_internal_phy = true;
+- gmac->ephy_clk = of_clk_get(plat_dat->phy_node, 0);
+- if (IS_ERR(gmac->ephy_clk)) {
+- ret = PTR_ERR(gmac->ephy_clk);
+- dev_err(&pdev->dev, "Cannot get EPHY clock: %d\n", ret);
+- return -EINVAL;
+- }
+-
+- gmac->rst_ephy = of_reset_control_get(plat_dat->phy_node, NULL);
+- if (IS_ERR(gmac->rst_ephy)) {
+- ret = PTR_ERR(gmac->rst_ephy);
+- if (ret == -EPROBE_DEFER)
+- return ret;
+- dev_err(&pdev->dev, "No EPHY reset control found %d\n",
+- ret);
+- return -EINVAL;
+- }
+- } else {
+- dev_info(&pdev->dev, "Will use external PHY\n");
+- gmac->use_internal_phy = false;
+- }
+
+ /* platform data specifying hardware features and callbacks.
+ * hardware features were copied from Allwinner drivers.
+@@ -973,9 +1041,34 @@ static int sun8i_dwmac_probe(struct platform_device *pdev)
+
+ ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
+ if (ret)
+- sun8i_dwmac_exit(pdev, plat_dat->bsp_priv);
++ goto dwmac_exit;
++
++ ndev = dev_get_drvdata(&pdev->dev);
++ priv = netdev_priv(ndev);
++ /* The mux must be registered after parent MDIO
++ * so after stmmac_dvr_probe()
++ */
++ if (gmac->variant->soc_has_internal_phy) {
++ ret = get_ephy_nodes(priv);
++ if (ret)
++ goto dwmac_exit;
++ ret = sun8i_dwmac_register_mdio_mux(priv);
++ if (ret) {
++ dev_err(&pdev->dev, "Failed to register mux\n");
++ goto dwmac_mux;
++ }
++ } else {
++ ret = sun8i_dwmac_reset(priv);
++ if (ret)
++ goto dwmac_exit;
++ }
+
+ return ret;
++dwmac_mux:
++ sun8i_dwmac_unset_syscon(gmac);
++dwmac_exit:
++ sun8i_dwmac_exit(pdev, plat_dat->bsp_priv);
++return ret;
+ }
+
+ static const struct of_device_id sun8i_dwmac_match[] = {
+--
+2.14.3
+
+From f58f11ebb67468471ed8f232c576f348dd1a32b1 Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 24 Oct 2017 19:57:14 +0200
+Subject: [PATCH 03/11] net: stmmac: sun8i: Restore the compatibles
+
+The original dwmac-sun8i DT bindings have some issue on how to handle
+integrated PHY and was reverted in last RC of 4.13.
+But now we have a solution so we need to get back that was reverted.
+
+This patch restore compatibles about dwmac-sun8i
+This reverts commit ad4540cc5aa3 ("net: stmmac: sun8i: Remove the compatibles")
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
-index 39c2122a4f26..fffd6d5fc907 100644
+index b3eb344bb158..e5ff734d4f9b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
-@@ -979,6 +979,14 @@ static int sun8i_dwmac_probe(struct platform_device *pdev)
+@@ -1072,6 +1072,14 @@ return ret;
}
static const struct of_device_id sun8i_dwmac_match[] = {
@@ -28,26 +585,483 @@ index 39c2122a4f26..fffd6d5fc907 100644
};
MODULE_DEVICE_TABLE(of, sun8i_dwmac_match);
--
-2.13.5
+2.14.3
+
+From 54678636d98cd9625f342c831015e302642bf104 Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 31 Oct 2017 09:19:08 +0100
+Subject: [PATCH 04/11] dt-bindings: net: Restore sun8i dwmac binding
+
+The original dwmac-sun8i DT bindings have some issue on how to handle
+integrated PHY and was reverted in last RC of 4.13.
+But now we have a solution so we need to get back that was reverted.
+
+This patch restore dt-bindings documentation about dwmac-sun8i
+This reverts commit 8aa33ec2f481 ("dt-bindings: net: Revert sun8i dwmac binding")
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Acked-by: Rob Herring <robh@kernel.org>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
+---
+ .../devicetree/bindings/net/dwmac-sun8i.txt | 84 ++++++++++++++++++++++
+ 1 file changed, 84 insertions(+)
+ create mode 100644 Documentation/devicetree/bindings/net/dwmac-sun8i.txt
+
+diff --git a/Documentation/devicetree/bindings/net/dwmac-sun8i.txt b/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
+new file mode 100644
+index 000000000000..725f3b187886
+--- /dev/null
++++ b/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
+@@ -0,0 +1,84 @@
++* Allwinner sun8i GMAC ethernet controller
++
++This device is a platform glue layer for stmmac.
++Please see stmmac.txt for the other unchanged properties.
++
++Required properties:
++- compatible: should be one of the following string:
++ "allwinner,sun8i-a83t-emac"
++ "allwinner,sun8i-h3-emac"
++ "allwinner,sun8i-v3s-emac"
++ "allwinner,sun50i-a64-emac"
++- reg: address and length of the register for the device.
++- interrupts: interrupt for the device
++- interrupt-names: should be "macirq"
++- clocks: A phandle to the reference clock for this device
++- clock-names: should be "stmmaceth"
++- resets: A phandle to the reset control for this device
++- reset-names: should be "stmmaceth"
++- phy-mode: See ethernet.txt
++- phy-handle: See ethernet.txt
++- #address-cells: shall be 1
++- #size-cells: shall be 0
++- syscon: A phandle to the syscon of the SoC with one of the following
++ compatible string:
++ - allwinner,sun8i-h3-system-controller
++ - allwinner,sun8i-v3s-system-controller
++ - allwinner,sun50i-a64-system-controller
++ - allwinner,sun8i-a83t-system-controller
++
++Optional properties:
++- allwinner,tx-delay-ps: TX clock delay chain value in ps. Range value is 0-700. Default is 0)
++- allwinner,rx-delay-ps: RX clock delay chain value in ps. Range value is 0-3100. Default is 0)
++Both delay properties need to be a multiple of 100. They control the delay for
++external PHY.
++
++Optional properties for the following compatibles:
++ - "allwinner,sun8i-h3-emac",
++ - "allwinner,sun8i-v3s-emac":
++- allwinner,leds-active-low: EPHY LEDs are active low
++
++Required child node of emac:
++- mdio bus node: should be named mdio
++
++Required properties of the mdio node:
++- #address-cells: shall be 1
++- #size-cells: shall be 0
++
++The device node referenced by "phy" or "phy-handle" should be a child node
++of the mdio node. See phy.txt for the generic PHY bindings.
++
++Required properties of the phy node with the following compatibles:
++ - "allwinner,sun8i-h3-emac",
++ - "allwinner,sun8i-v3s-emac":
++- clocks: a phandle to the reference clock for the EPHY
++- resets: a phandle to the reset control for the EPHY
++
++Example:
++
++emac: ethernet@1c0b000 {
++ compatible = "allwinner,sun8i-h3-emac";
++ syscon = <&syscon>;
++ reg = <0x01c0b000 0x104>;
++ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "macirq";
++ resets = <&ccu RST_BUS_EMAC>;
++ reset-names = "stmmaceth";
++ clocks = <&ccu CLK_BUS_EMAC>;
++ clock-names = "stmmaceth";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ phy-handle = <&int_mii_phy>;
++ phy-mode = "mii";
++ allwinner,leds-active-low;
++ mdio: mdio {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ int_mii_phy: ethernet-phy@1 {
++ reg = <1>;
++ clocks = <&ccu CLK_BUS_EPHY>;
++ resets = <&ccu RST_BUS_EPHY>;
++ };
++ };
++};
+--
+2.14.3
+
+From 227bc8c6bfad58c32c7a6c3bbc13d99eb6d266c0 Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 31 Oct 2017 09:19:09 +0100
+Subject: [PATCH 05/11] dt-bindings: net: dwmac-sun8i: update documentation
+ about integrated PHY
-From fa4788d88903c1e535d034c3dd3fcd386685a02c Mon Sep 17 00:00:00 2001
+This patch add documentation about the MDIO switch used on sun8i-h3-emac
+for integrated PHY.
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+---
+ .../devicetree/bindings/net/dwmac-sun8i.txt | 147 +++++++++++++++++++--
+ 1 file changed, 135 insertions(+), 12 deletions(-)
+
+diff --git a/Documentation/devicetree/bindings/net/dwmac-sun8i.txt b/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
+index 725f3b187886..3d6d5fa0c4d5 100644
+--- a/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
++++ b/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
+@@ -4,18 +4,18 @@ This device is a platform glue layer for stmmac.
+ Please see stmmac.txt for the other unchanged properties.
+
+ Required properties:
+-- compatible: should be one of the following string:
++- compatible: must be one of the following string:
+ "allwinner,sun8i-a83t-emac"
+ "allwinner,sun8i-h3-emac"
+ "allwinner,sun8i-v3s-emac"
+ "allwinner,sun50i-a64-emac"
+ - reg: address and length of the register for the device.
+ - interrupts: interrupt for the device
+-- interrupt-names: should be "macirq"
++- interrupt-names: must be "macirq"
+ - clocks: A phandle to the reference clock for this device
+-- clock-names: should be "stmmaceth"
++- clock-names: must be "stmmaceth"
+ - resets: A phandle to the reset control for this device
+-- reset-names: should be "stmmaceth"
++- reset-names: must be "stmmaceth"
+ - phy-mode: See ethernet.txt
+ - phy-handle: See ethernet.txt
+ - #address-cells: shall be 1
+@@ -39,23 +39,42 @@ Optional properties for the following compatibles:
+ - allwinner,leds-active-low: EPHY LEDs are active low
+
+ Required child node of emac:
+-- mdio bus node: should be named mdio
++- mdio bus node: should be named mdio with compatible "snps,dwmac-mdio"
+
+ Required properties of the mdio node:
+ - #address-cells: shall be 1
+ - #size-cells: shall be 0
+
+-The device node referenced by "phy" or "phy-handle" should be a child node
++The device node referenced by "phy" or "phy-handle" must be a child node
+ of the mdio node. See phy.txt for the generic PHY bindings.
+
+-Required properties of the phy node with the following compatibles:
++The following compatibles require that the emac node have a mdio-mux child
++node called "mdio-mux":
++ - "allwinner,sun8i-h3-emac"
++ - "allwinner,sun8i-v3s-emac":
++Required properties for the mdio-mux node:
++ - compatible = "allwinner,sun8i-h3-mdio-mux"
++ - mdio-parent-bus: a phandle to EMAC mdio
++ - one child mdio for the integrated mdio with the compatible
++ "allwinner,sun8i-h3-mdio-internal"
++ - one child mdio for the external mdio if present (V3s have none)
++Required properties for the mdio-mux children node:
++ - reg: 1 for internal MDIO bus, 2 for external MDIO bus
++
++The following compatibles require a PHY node representing the integrated
++PHY, under the integrated MDIO bus node if an mdio-mux node is used:
+ - "allwinner,sun8i-h3-emac",
+ - "allwinner,sun8i-v3s-emac":
++
++Additional information regarding generic multiplexer properties can be found
++at Documentation/devicetree/bindings/net/mdio-mux.txt
++
++Required properties of the integrated phy node:
+ - clocks: a phandle to the reference clock for the EPHY
+ - resets: a phandle to the reset control for the EPHY
++- Must be a child of the integrated mdio
+
+-Example:
+-
++Example with integrated PHY:
+ emac: ethernet@1c0b000 {
+ compatible = "allwinner,sun8i-h3-emac";
+ syscon = <&syscon>;
+@@ -72,13 +91,117 @@ emac: ethernet@1c0b000 {
+ phy-handle = <&int_mii_phy>;
+ phy-mode = "mii";
+ allwinner,leds-active-low;
++
++ mdio: mdio {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ compatible = "snps,dwmac-mdio";
++ };
++
++ mdio-mux {
++ compatible = "mdio-mux", "allwinner,sun8i-h3-mdio-mux";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ mdio-parent-bus = <&mdio>;
++
++ int_mdio: mdio@1 {
++ compatible = "allwinner,sun8i-h3-mdio-internal";
++ reg = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ int_mii_phy: ethernet-phy@1 {
++ reg = <1>;
++ clocks = <&ccu CLK_BUS_EPHY>;
++ resets = <&ccu RST_BUS_EPHY>;
++ phy-is-integrated;
++ };
++ };
++ ext_mdio: mdio@2 {
++ reg = <2>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ };
++ };
++};
++
++Example with external PHY:
++emac: ethernet@1c0b000 {
++ compatible = "allwinner,sun8i-h3-emac";
++ syscon = <&syscon>;
++ reg = <0x01c0b000 0x104>;
++ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "macirq";
++ resets = <&ccu RST_BUS_EMAC>;
++ reset-names = "stmmaceth";
++ clocks = <&ccu CLK_BUS_EMAC>;
++ clock-names = "stmmaceth";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ phy-handle = <&ext_rgmii_phy>;
++ phy-mode = "rgmii";
++ allwinner,leds-active-low;
++
++ mdio: mdio {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ compatible = "snps,dwmac-mdio";
++ };
++
++ mdio-mux {
++ compatible = "allwinner,sun8i-h3-mdio-mux";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ mdio-parent-bus = <&mdio>;
++
++ int_mdio: mdio@1 {
++ compatible = "allwinner,sun8i-h3-mdio-internal";
++ reg = <1>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ int_mii_phy: ethernet-phy@1 {
++ reg = <1>;
++ clocks = <&ccu CLK_BUS_EPHY>;
++ resets = <&ccu RST_BUS_EPHY>;
++ };
++ };
++ ext_mdio: mdio@2 {
++ reg = <2>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ ext_rgmii_phy: ethernet-phy@1 {
++ reg = <1>;
++ };
++ }:
++ };
++};
++
++Example with SoC without integrated PHY
++
++emac: ethernet@1c0b000 {
++ compatible = "allwinner,sun8i-a83t-emac";
++ syscon = <&syscon>;
++ reg = <0x01c0b000 0x104>;
++ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "macirq";
++ resets = <&ccu RST_BUS_EMAC>;
++ reset-names = "stmmaceth";
++ clocks = <&ccu CLK_BUS_EMAC>;
++ clock-names = "stmmaceth";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ phy-handle = <&ext_rgmii_phy>;
++ phy-mode = "rgmii";
++
+ mdio: mdio {
++ compatible = "snps,dwmac-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+- int_mii_phy: ethernet-phy@1 {
++ ext_rgmii_phy: ethernet-phy@1 {
+ reg = <1>;
+- clocks = <&ccu CLK_BUS_EPHY>;
+- resets = <&ccu RST_BUS_EPHY>;
+ };
+ };
+ };
+--
+2.14.3
+
+From 1de79efa35a1130c7a085f62b9d9b666d79b9a89 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 4 Sep 2017 13:04:41 +0100
-Subject: [PATCH 2/4] Revert "arm: dts: sunxi: Revert EMAC changes"
+Date: Wed, 1 Nov 2017 14:04:20 +0000
+Subject: [PATCH 06/11] arm: dts: sunxi: h3/h5: Restore EMAC changes
+
+The original dwmac-sun8i DT bindings have some issue on how to handle
+integrated PHY and was reverted in last RC of 4.13.
+But now we have a solution so we need to get back that was reverted.
-This reverts commit fe45174b72aead678da581bab9e9a37c9b26a070.
+This patch restore sunxi-h3-h5.dtsi
+This reverts partially commit fe45174b72ae ("arm: dts: sunxi: Revert EMAC changes")
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
---
- arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 9 ++++++++
- arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts | 19 +++++++++++++++++
- arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts | 7 ++++++
- arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 8 +++++++
- arch/arm/boot/dts/sun8i-h3-orangepi-one.dts | 8 +++++++
+ arch/arm/boot/dts/sunxi-h3-h5.dtsi | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+index 11240a8313c2..d38282b9e5d4 100644
+--- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
++++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+@@ -391,6 +391,32 @@
+ clocks = <&osc24M>;
+ };
+
++ emac: ethernet@1c30000 {
++ compatible = "allwinner,sun8i-h3-emac";
++ syscon = <&syscon>;
++ reg = <0x01c30000 0x10000>;
++ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
++ interrupt-names = "macirq";
++ resets = <&ccu RST_BUS_EMAC>;
++ reset-names = "stmmaceth";
++ clocks = <&ccu CLK_BUS_EMAC>;
++ clock-names = "stmmaceth";
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++
++ mdio: mdio {
++ #address-cells = <1>;
++ #size-cells = <0>;
++ int_mii_phy: ethernet-phy@1 {
++ compatible = "ethernet-phy-ieee802.3-c22";
++ reg = <1>;
++ clocks = <&ccu CLK_BUS_EPHY>;
++ resets = <&ccu RST_BUS_EPHY>;
++ };
++ };
++ };
++
+ spi0: spi@01c68000 {
+ compatible = "allwinner,sun8i-h3-spi";
+ reg = <0x01c68000 0x1000>;
+--
+2.14.3
+
+From 65233cba93184e0efa8d94f907d65af947d197a1 Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 31 Oct 2017 09:19:11 +0100
+Subject: [PATCH 07/11] ARM: dts: sunxi: h3/h5: represent the mdio switch used
+ by sun8i-h3-emac
+
+Since dwmac-sun8i could use either an integrated PHY or an external PHY
+(which could be at same MDIO address), we need to represent this selection
+by a MDIO switch.
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+---
+ arch/arm/boot/dts/sunxi-h3-h5.dtsi | 31 +++++++++++++++++++++++++++----
+ 1 file changed, 27 insertions(+), 4 deletions(-)
+
+diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+index d38282b9e5d4..2721b39c1875 100644
+--- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
++++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+@@ -408,11 +408,34 @@
+ mdio: mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+- int_mii_phy: ethernet-phy@1 {
+- compatible = "ethernet-phy-ieee802.3-c22";
++ compatible = "snps,dwmac-mdio";
++ };
++
++ mdio-mux {
++ compatible = "allwinner,sun8i-h3-mdio-mux";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ mdio-parent-bus = <&mdio>;
++ /* Only one MDIO is usable at the time */
++ internal_mdio: mdio@1 {
++ compatible = "allwinner,sun8i-h3-mdio-internal";
+ reg = <1>;
+- clocks = <&ccu CLK_BUS_EPHY>;
+- resets = <&ccu RST_BUS_EPHY>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ int_mii_phy: ethernet-phy@1 {
++ compatible = "ethernet-phy-ieee802.3-c22";
++ reg = <1>;
++ clocks = <&ccu CLK_BUS_EPHY>;
++ resets = <&ccu RST_BUS_EPHY>;
++ };
++ };
++
++ external_mdio: mdio@2 {
++ reg = <2>;
++ #address-cells = <1>;
++ #size-cells = <0>;
+ };
+ };
+ };
+--
+2.14.3
+
+From b705315d36dbe1b31062f30c987b3a502b437c85 Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Wed, 1 Nov 2017 14:08:45 +0000
+Subject: [PATCH 08/11] ARM: dts: sunxi: Restore EMAC changes (boards)
+
+The original dwmac-sun8i DT bindings have some issue on how to handle
+integrated PHY and was reverted in last RC of 4.13.
+But now we have a solution so we need to get back that was reverted.
+
+This patch restore all boards DT about dwmac-sun8i
+This reverts partially commit fe45174b72ae ("arm: dts: sunxi: Revert EMAC changes")
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
+---
+ arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 9 +++++++++
+ arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts | 19 +++++++++++++++++++
+ arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts | 19 +++++++++++++++++++
+ arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts | 7 +++++++
+ arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 8 ++++++++
+ arch/arm/boot/dts/sun8i-h3-orangepi-one.dts | 8 ++++++++
arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts | 5 +++++
- arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts | 8 +++++++
- arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts | 22 +++++++++++++++++++
- arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts | 16 ++++++++++++++
- arch/arm/boot/dts/sunxi-h3-h5.dtsi | 26 +++++++++++++++++++++++
- 10 files changed, 128 insertions(+)
+ arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts | 8 ++++++++
+ arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts | 22 ++++++++++++++++++++++
+ arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts | 16 ++++++++++++++++
+ 10 files changed, 121 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
index b1502df7b509..6713d0f2b3f4 100644
@@ -77,7 +1091,7 @@ index b1502df7b509..6713d0f2b3f4 100644
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins_a>;
diff --git a/arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts b/arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts
-index a337af1de322..d756ff825116 100644
+index a337af1de322..3f95d806355b 100644
--- a/arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts
+++ b/arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts
@@ -52,6 +52,7 @@
@@ -88,7 +1102,7 @@ index a337af1de322..d756ff825116 100644
serial0 = &uart0;
serial1 = &uart1;
};
-@@ -114,12 +115,30 @@
+@@ -114,6 +115,24 @@
status = "okay";
};
@@ -103,22 +1117,43 @@ index a337af1de322..d756ff825116 100644
+ status = "okay";
+};
+
++&external_mdio {
++ ext_rgmii_phy: ethernet-phy@1 {
++ compatible = "ethernet-phy-ieee802.3-c22";
++ reg = <0>;
++ };
++};
++
&ir {
pinctrl-names = "default";
pinctrl-0 = <&ir_pins_a>;
+diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
+index 8ddd1b2cc097..ef0371811296 100644
+--- a/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
++++ b/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
+@@ -62,3 +62,22 @@
+ &ohci2 {
status = "okay";
};
-
-+&mdio {
++
++&emac {
++ pinctrl-names = "default";
++ pinctrl-0 = <&emac_rgmii_pins>;
++ phy-supply = <&reg_gmac_3v3>;
++ phy-handle = <&ext_rgmii_phy>;
++ phy-mode = "rgmii";
++
++ allwinner,leds-active-low;
++
++ status = "okay";
++};
++
++&external_mdio {
+ ext_rgmii_phy: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
-+ reg = <0>;
++ reg = <7>;
+ };
+};
-+
- &mmc0 {
- pinctrl-names = "default";
- pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts
index 8d2cc6e9a03f..78f6c24952dd 100644
--- a/arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts
@@ -229,7 +1264,7 @@ index 1a044b17d6c6..998b60f8d295 100644
pinctrl-names = "default";
pinctrl-0 = <&ir_pins_a>;
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
-index 828ae7a526d9..331ed683ac62 100644
+index 828ae7a526d9..3002c025e187 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts
@@ -47,6 +47,10 @@
@@ -258,7 +1293,7 @@ index 828ae7a526d9..331ed683ac62 100644
+ status = "okay";
+};
+
-+&mdio {
++&external_mdio {
+ ext_rgmii_phy: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <0>;
@@ -269,7 +1304,7 @@ index 828ae7a526d9..331ed683ac62 100644
pinctrl-names = "default";
pinctrl-0 = <&mmc2_8bit_pins>;
diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts
-index 97920b12a944..80026f3caafc 100644
+index 97920b12a944..6dbf7b2e0c13 100644
--- a/arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts
+++ b/arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts
@@ -61,3 +61,19 @@
@@ -286,71 +1321,39 @@ index 97920b12a944..80026f3caafc 100644
+ status = "okay";
+};
+
-+&mdio {
++&external_mdio {
+ ext_rgmii_phy: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+};
-diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
-index 11240a8313c2..d38282b9e5d4 100644
---- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
-+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
-@@ -391,6 +391,32 @@
- clocks = <&osc24M>;
- };
-
-+ emac: ethernet@1c30000 {
-+ compatible = "allwinner,sun8i-h3-emac";
-+ syscon = <&syscon>;
-+ reg = <0x01c30000 0x10000>;
-+ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
-+ interrupt-names = "macirq";
-+ resets = <&ccu RST_BUS_EMAC>;
-+ reset-names = "stmmaceth";
-+ clocks = <&ccu CLK_BUS_EMAC>;
-+ clock-names = "stmmaceth";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ status = "disabled";
-+
-+ mdio: mdio {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ int_mii_phy: ethernet-phy@1 {
-+ compatible = "ethernet-phy-ieee802.3-c22";
-+ reg = <1>;
-+ clocks = <&ccu CLK_BUS_EPHY>;
-+ resets = <&ccu RST_BUS_EPHY>;
-+ };
-+ };
-+ };
-+
- spi0: spi@01c68000 {
- compatible = "allwinner,sun8i-h3-spi";
- reg = <0x01c68000 0x1000>;
--
-2.13.5
+2.14.3
-From 4aba5ca95496899165ee7ceef5d9c60a6e7b15dd Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 4 Sep 2017 13:04:47 +0100
-Subject: [PATCH 3/4] Revert "arm64: dts: allwinner: Revert EMAC changes"
+From 516b88bfa40cf54732d2ba5e689fdf592a742ec3 Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 31 Oct 2017 09:19:13 +0100
+Subject: [PATCH 09/11] arm64: dts: allwinner: A64: Restore EMAC changes
+
+The original dwmac-sun8i DT bindings have some issue on how to handle
+integrated PHY and was reverted in last RC of 4.13.
+But now we have a solution so we need to get back that was reverted.
-This reverts commit 87e1f5e8bb4bd584de0a8f3b1e42196dca221d02.
+This patch restore arm64 DT about dwmac-sun8i for A64
+This reverts commit 87e1f5e8bb4b ("arm64: dts: allwinner: Revert EMAC changes")
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
---
.../boot/dts/allwinner/sun50i-a64-bananapi-m64.dts | 16 ++++++++++++++++
.../boot/dts/allwinner/sun50i-a64-pine64-plus.dts | 15 +++++++++++++++
arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 17 +++++++++++++++++
.../dts/allwinner/sun50i-a64-sopine-baseboard.dts | 16 ++++++++++++++++
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 20 ++++++++++++++++++++
- .../boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts | 17 +++++++++++++++++
- .../boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts | 17 +++++++++++++++++
- .../boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 17 +++++++++++++++++
- 8 files changed, 135 insertions(+)
+ 5 files changed, 84 insertions(+)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
-index 6872135d7f84..ba2fde2909f9 100644
+index d347f52e27f6..45bdbfb96126 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
@@ -51,6 +51,7 @@
@@ -361,8 +1364,8 @@ index 6872135d7f84..ba2fde2909f9 100644
serial0 = &uart0;
serial1 = &uart1;
};
-@@ -67,6 +68,14 @@
- };
+@@ -69,6 +70,14 @@
+ status = "okay";
};
+&emac {
@@ -376,7 +1379,7 @@ index 6872135d7f84..ba2fde2909f9 100644
&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pins>;
-@@ -77,6 +86,13 @@
+@@ -79,6 +88,13 @@
bias-pull-up;
};
@@ -414,7 +1417,7 @@ index f82ccf332c0f..24f1aac366d6 100644
+ };
+};
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
-index 7c533b6d4ba9..827168bc22ed 100644
+index d06e34b5d192..806442d3e846 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
@@ -51,6 +51,7 @@
@@ -425,7 +1428,7 @@ index 7c533b6d4ba9..827168bc22ed 100644
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
-@@ -78,6 +79,15 @@
+@@ -71,6 +72,15 @@
status = "okay";
};
@@ -441,7 +1444,7 @@ index 7c533b6d4ba9..827168bc22ed 100644
&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pins>;
-@@ -88,6 +98,13 @@
+@@ -81,6 +91,13 @@
bias-pull-up;
};
@@ -456,7 +1459,7 @@ index 7c533b6d4ba9..827168bc22ed 100644
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins>;
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
-index d891a1a27f6c..216e3a5dafae 100644
+index 17ccc12b58df..0eb2acedf8c3 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
@@ -53,6 +53,7 @@
@@ -490,7 +1493,7 @@ index d891a1a27f6c..216e3a5dafae 100644
pinctrl-names = "default";
pinctrl-0 = <&mmc2_pins>;
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-index 68aadc9b96dc..bd0f33b77f57 100644
+index 8c8db1b057df..50f17bab0c07 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -449,6 +449,26 @@
@@ -520,8 +1523,31 @@ index 68aadc9b96dc..bd0f33b77f57 100644
gic: interrupt-controller@1c81000 {
compatible = "arm,gic-400";
reg = <0x01c81000 0x1000>,
+--
+2.14.3
+
+From 070173449eb88e9cf9c91889c77f53616911f4d0 Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 31 Oct 2017 09:19:14 +0100
+Subject: [PATCH 10/11] arm64: dts: allwinner: H5: Restore EMAC changes
+
+The original dwmac-sun8i DT bindings have some issue on how to handle
+integrated PHY and was reverted in last RC of 4.13.
+But now we have a solution so we need to get back that was reverted.
+
+This patch restore arm64 DT about dwmac-sun8i for H5
+This reverts a part of commit 87e1f5e8bb4b ("arm64: dts: allwinner: Revert EMAC changes")
+
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
+---
+ arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts | 17 +++++++++++++++++
+ .../arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts | 17 +++++++++++++++++
+ .../boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 17 +++++++++++++++++
+ 3 files changed, 51 insertions(+)
+
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
-index 1c2387bd5df6..968908761194 100644
+index 1c2387bd5df6..6eb8092d8e57 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
@@ -50,6 +50,7 @@
@@ -545,7 +1571,7 @@ index 1c2387bd5df6..968908761194 100644
+ status = "okay";
+};
+
-+&mdio {
++&external_mdio {
+ ext_rgmii_phy: ethernet-phy@7 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <7>;
@@ -556,7 +1582,7 @@ index 1c2387bd5df6..968908761194 100644
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts
-index 4f77c8470f6c..a8296feee884 100644
+index 4f77c8470f6c..a0ca925175aa 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts
@@ -59,6 +59,7 @@
@@ -567,7 +1593,7 @@ index 4f77c8470f6c..a8296feee884 100644
serial0 = &uart0;
};
-@@ -136,12 +137,28 @@
+@@ -136,6 +137,22 @@
status = "okay";
};
@@ -580,24 +1606,18 @@ index 4f77c8470f6c..a8296feee884 100644
+ status = "okay";
+};
+
- &ir {
- pinctrl-names = "default";
- pinctrl-0 = <&ir_pins_a>;
- status = "okay";
- };
-
-+&mdio {
++&external_mdio {
+ ext_rgmii_phy: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+};
+
- &mmc0 {
+ &ir {
pinctrl-names = "default";
- pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
+ pinctrl-0 = <&ir_pins_a>;
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
-index 6be06873e5af..d906b302cbcd 100644
+index 6be06873e5af..b47790650144 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
@@ -54,6 +54,7 @@
@@ -608,7 +1628,7 @@ index 6be06873e5af..d906b302cbcd 100644
serial0 = &uart0;
};
-@@ -143,12 +144,28 @@
+@@ -143,6 +144,22 @@
status = "okay";
};
@@ -621,126 +1641,151 @@ index 6be06873e5af..d906b302cbcd 100644
+ status = "okay";
+};
+
- &ir {
- pinctrl-names = "default";
- pinctrl-0 = <&ir_pins_a>;
- status = "okay";
- };
-
-+&mdio {
++&external_mdio {
+ ext_rgmii_phy: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+};
+
- &mmc0 {
+ &ir {
pinctrl-names = "default";
- pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
+ pinctrl-0 = <&ir_pins_a>;
--
-2.13.5
+2.14.3
+
+From 63118a9f7808a0a67c23e7d276138c996e094eae Mon Sep 17 00:00:00 2001
+From: Corentin LABBE <clabbe.montjoie@gmail.com>
+Date: Tue, 31 Oct 2017 09:19:15 +0100
+Subject: [PATCH 11/11] arm64: dts: allwinner: add snps, dwmac-mdio compatible
+ to emac/mdio
+
+stmmac bindings docs said that its mdio node must have
+compatible = "snps,dwmac-mdio";
+Since dwmac-sun8i does not have any good reasons to not doing it, all
+their MDIO node must have it.
-From 11190f020b948ccdf15061b6df8cc2836a2afcb1 Mon Sep 17 00:00:00 2001
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
+Acked-by: Florian Fainelli <f.fainelli@gmail.com>
+---
+ arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+index 50f17bab0c07..8fd75c95937a 100644
+--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+@@ -464,6 +464,7 @@
+ #size-cells = <0>;
+
+ mdio: mdio {
++ compatible = "snps,dwmac-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+--
+2.14.3
+
+From patchwork Fri Nov 10 09:26:54 2017
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: arm64: allwinner: a64: add Ethernet PHY regulator for several boards
+From: Icenowy Zheng <icenowy@aosc.io>
+X-Patchwork-Id: 10052659
+Message-Id: <20171110092654.10746-1-icenowy@aosc.io>
+To: Maxime Ripard <maxime.ripard@free-electrons.com>,
+ Chen-Yu Tsai <wens@csie.org>
+Cc: linux-sunxi@googlegroups.com, linux-kernel@vger.kernel.org,
+ linux-arm-kernel@lists.infradead.org, Icenowy Zheng <icenowy@aosc.io>
+Date: Fri, 10 Nov 2017 17:26:54 +0800
+
+On several A64 boards the Ethernet PHY is powered by the DC1SW regulator
+on the AXP803 PMIC.
+
+Add phy-handle property to these boards' emac node.
+
+Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
+Acked-by: Corentin LABBE <clabbe.montjoie@gmail.com>
+Tested-by: Corentin LABBE <clabbe.montjoie@gmail.com>
+---
+ arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts | 1 +
+ arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 1 +
+ arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
+index 45bdbfb96126..4a8d3f83a36e 100644
+--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
+@@ -75,6 +75,7 @@
+ pinctrl-0 = <&rgmii_pins>;
+ phy-mode = "rgmii";
+ phy-handle = <&ext_rgmii_phy>;
++ phy-supply = <&reg_dc1sw>;
+ status = "okay";
+ };
+
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
+index 806442d3e846..604cdaedac38 100644
+--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
+@@ -77,6 +77,7 @@
+ pinctrl-0 = <&rmii_pins>;
+ phy-mode = "rmii";
+ phy-handle = <&ext_rmii_phy1>;
++ phy-supply = <&reg_dc1sw>;
+ status = "okay";
+
+ };
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
+index 0eb2acedf8c3..a053a6ac5267 100644
+--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
+@@ -82,6 +82,7 @@
+ pinctrl-0 = <&rgmii_pins>;
+ phy-mode = "rgmii";
+ phy-handle = <&ext_rgmii_phy>;
++ phy-supply = <&reg_dc1sw>;
+ status = "okay";
+ };
+
+From 79e7d6c8bfe67fce8c8fe4953e74ce7f420dd732 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 4 Sep 2017 13:04:55 +0100
-Subject: [PATCH 4/4] Revert "dt-bindings: net: Revert sun8i dwmac binding"
+Date: Tue, 21 Nov 2017 15:43:19 +0000
+Subject: [PATCH] ARM: dts: sunxi: sun8i-h3-nanopi-m1-plus: Add missing
+ regulator
+
+This patch add the missing regulator for sun8i-h3-nanopi-m1-plus.
-This reverts commit 8aa33ec2f4812d1ee96f4c02ba013f5b9c514343.
+Fixes: ("ARM: dts: sunxi: Restore EMAC changes (boards)")
+Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
- .../devicetree/bindings/net/dwmac-sun8i.txt | 84 ++++++++++++++++++++++
- 1 file changed, 84 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/net/dwmac-sun8i.txt
+ arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
-diff --git a/Documentation/devicetree/bindings/net/dwmac-sun8i.txt b/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
-new file mode 100644
-index 000000000000..725f3b187886
---- /dev/null
-+++ b/Documentation/devicetree/bindings/net/dwmac-sun8i.txt
-@@ -0,0 +1,84 @@
-+* Allwinner sun8i GMAC ethernet controller
-+
-+This device is a platform glue layer for stmmac.
-+Please see stmmac.txt for the other unchanged properties.
-+
-+Required properties:
-+- compatible: should be one of the following string:
-+ "allwinner,sun8i-a83t-emac"
-+ "allwinner,sun8i-h3-emac"
-+ "allwinner,sun8i-v3s-emac"
-+ "allwinner,sun50i-a64-emac"
-+- reg: address and length of the register for the device.
-+- interrupts: interrupt for the device
-+- interrupt-names: should be "macirq"
-+- clocks: A phandle to the reference clock for this device
-+- clock-names: should be "stmmaceth"
-+- resets: A phandle to the reset control for this device
-+- reset-names: should be "stmmaceth"
-+- phy-mode: See ethernet.txt
-+- phy-handle: See ethernet.txt
-+- #address-cells: shall be 1
-+- #size-cells: shall be 0
-+- syscon: A phandle to the syscon of the SoC with one of the following
-+ compatible string:
-+ - allwinner,sun8i-h3-system-controller
-+ - allwinner,sun8i-v3s-system-controller
-+ - allwinner,sun50i-a64-system-controller
-+ - allwinner,sun8i-a83t-system-controller
-+
-+Optional properties:
-+- allwinner,tx-delay-ps: TX clock delay chain value in ps. Range value is 0-700. Default is 0)
-+- allwinner,rx-delay-ps: RX clock delay chain value in ps. Range value is 0-3100. Default is 0)
-+Both delay properties need to be a multiple of 100. They control the delay for
-+external PHY.
-+
-+Optional properties for the following compatibles:
-+ - "allwinner,sun8i-h3-emac",
-+ - "allwinner,sun8i-v3s-emac":
-+- allwinner,leds-active-low: EPHY LEDs are active low
-+
-+Required child node of emac:
-+- mdio bus node: should be named mdio
-+
-+Required properties of the mdio node:
-+- #address-cells: shall be 1
-+- #size-cells: shall be 0
-+
-+The device node referenced by "phy" or "phy-handle" should be a child node
-+of the mdio node. See phy.txt for the generic PHY bindings.
+diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
+index ef0371811296..738ef1d9e844 100644
+--- a/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
++++ b/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
+@@ -45,6 +45,17 @@
+ / {
+ model = "FriendlyArm NanoPi M1 Plus";
+ compatible = "friendlyarm,nanopi-m1-plus", "allwinner,sun8i-h3";
+
-+Required properties of the phy node with the following compatibles:
-+ - "allwinner,sun8i-h3-emac",
-+ - "allwinner,sun8i-v3s-emac":
-+- clocks: a phandle to the reference clock for the EPHY
-+- resets: a phandle to the reset control for the EPHY
++ reg_gmac_3v3: gmac-3v3 {
++ compatible = "regulator-fixed";
++ regulator-name = "gmac-3v3";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ startup-delay-us = <100000>;
++ enable-active-high;
++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
++ };
+
-+Example:
-+
-+emac: ethernet@1c0b000 {
-+ compatible = "allwinner,sun8i-h3-emac";
-+ syscon = <&syscon>;
-+ reg = <0x01c0b000 0x104>;
-+ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
-+ interrupt-names = "macirq";
-+ resets = <&ccu RST_BUS_EMAC>;
-+ reset-names = "stmmaceth";
-+ clocks = <&ccu CLK_BUS_EMAC>;
-+ clock-names = "stmmaceth";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+
-+ phy-handle = <&int_mii_phy>;
-+ phy-mode = "mii";
-+ allwinner,leds-active-low;
-+ mdio: mdio {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ int_mii_phy: ethernet-phy@1 {
-+ reg = <1>;
-+ clocks = <&ccu CLK_BUS_EPHY>;
-+ resets = <&ccu RST_BUS_EPHY>;
-+ };
-+ };
-+};
+ };
+
+ &ehci1 {
--
-2.13.5
+2.14.3
diff --git a/arm-of-restrict-dma-configuration.patch b/arm-of-restrict-dma-configuration.patch
deleted file mode 100644
index cc9ddd965..000000000
--- a/arm-of-restrict-dma-configuration.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 723288836628bc1c0855f3bb7b64b1803e4b9e4a Mon Sep 17 00:00:00 2001
-From: Robin Murphy <robin.murphy@arm.com>
-Date: Thu, 31 Aug 2017 11:32:54 +0100
-Subject: of: restrict DMA configuration
-
-Moving DMA configuration to happen later at driver probe time had the
-unnoticed side-effect that we now perform DMA configuration for *every*
-device represented in DT, rather than only those explicitly created by
-the of_platform and PCI code.
-
-As Christoph points out, this is not really the best thing to do. Whilst
-there may well be other DMA-capable buses that can benefit from having
-their children automatically configured after the bridge has probed,
-there are also plenty of others like USB, MDIO, etc. that definitely do
-not support DMA and should not be indiscriminately processed.
-
-The good news is that in most cases the DT "dma-ranges" property serves
-as an appropriate indicator - per a strict interpretation of the spec,
-anything lacking a "dma-ranges" property should be considered not to
-have a mapping of DMA address space from its children to its parent,
-thus anything for which of_dma_get_range() does not succeed does not
-need DMA configuration. Certain bus types have a general expectation of
-DMA capability and carry a well-established precedent that an absent
-"dma-ranges" implies the same as the empty property, so we automatically
-opt those in to DMA configuration regardless, to avoid regressing most
-existing platforms.
-
-Fixes: 09515ef5ddad ("of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices")
-Reported-by: Christoph Hellwig <hch@lst.de>
-Signed-off-by: Robin Murphy <robin.murphy@arm.com>
-Acked-by: Rob Herring <robh@kernel.org>
-Signed-off-by: Christoph Hellwig <hch@lst.de>
----
- drivers/of/device.c | 48 ++++++++++++++++++++++++++++++++----------------
- 1 file changed, 32 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/of/device.c b/drivers/of/device.c
-index e0a28ea..04c4c95 100644
---- a/drivers/of/device.c
-+++ b/drivers/of/device.c
-@@ -9,6 +9,9 @@
- #include <linux/module.h>
- #include <linux/mod_devicetable.h>
- #include <linux/slab.h>
-+#include <linux/pci.h>
-+#include <linux/platform_device.h>
-+#include <linux/amba/bus.h>
-
- #include <asm/errno.h>
- #include "of_private.h"
-@@ -84,31 +87,28 @@ int of_device_add(struct platform_device *ofdev)
- */
- int of_dma_configure(struct device *dev, struct device_node *np)
- {
-- u64 dma_addr, paddr, size;
-+ u64 dma_addr, paddr, size = 0;
- int ret;
- bool coherent;
- unsigned long offset;
- const struct iommu_ops *iommu;
- u64 mask;
-
-- /*
-- * Set default coherent_dma_mask to 32 bit. Drivers are expected to
-- * setup the correct supported mask.
-- */
-- if (!dev->coherent_dma_mask)
-- dev->coherent_dma_mask = DMA_BIT_MASK(32);
--
-- /*
-- * Set it to coherent_dma_mask by default if the architecture
-- * code has not set it.
-- */
-- if (!dev->dma_mask)
-- dev->dma_mask = &dev->coherent_dma_mask;
--
- ret = of_dma_get_range(np, &dma_addr, &paddr, &size);
- if (ret < 0) {
-+ /*
-+ * For legacy reasons, we have to assume some devices need
-+ * DMA configuration regardless of whether "dma-ranges" is
-+ * correctly specified or not.
-+ */
-+ if (!dev_is_pci(dev) &&
-+#ifdef CONFIG_ARM_AMBA
-+ dev->bus != &amba_bustype &&
-+#endif
-+ dev->bus != &platform_bus_type)
-+ return ret == -ENODEV ? 0 : ret;
-+
- dma_addr = offset = 0;
-- size = max(dev->coherent_dma_mask, dev->coherent_dma_mask + 1);
- } else {
- offset = PFN_DOWN(paddr - dma_addr);
-
-@@ -129,6 +129,22 @@ int of_dma_configure(struct device *dev, struct device_node *np)
- dev_dbg(dev, "dma_pfn_offset(%#08lx)\n", offset);
- }
-
-+ /*
-+ * Set default coherent_dma_mask to 32 bit. Drivers are expected to
-+ * setup the correct supported mask.
-+ */
-+ if (!dev->coherent_dma_mask)
-+ dev->coherent_dma_mask = DMA_BIT_MASK(32);
-+ /*
-+ * Set it to coherent_dma_mask by default if the architecture
-+ * code has not set it.
-+ */
-+ if (!dev->dma_mask)
-+ dev->dma_mask = &dev->coherent_dma_mask;
-+
-+ if (!size)
-+ size = max(dev->coherent_dma_mask, dev->coherent_dma_mask + 1);
-+
- dev->dma_pfn_offset = offset;
-
- /*
---
-cgit v1.1
-
diff --git a/arm-tegra-fix-gpu-iommu.patch b/arm-tegra-fix-gpu-iommu.patch
deleted file mode 100644
index c775c88b4..000000000
--- a/arm-tegra-fix-gpu-iommu.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From patchwork Sun Jul 9 16:36:14 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: ARM: tegra: Register host1x node with iommu binding on tegra124
-From: Paul Kocialkowski <contact@paulk.fr>
-X-Patchwork-Id: 9831825
-Message-Id: <20170709163614.6746-1-contact@paulk.fr>
-To: linux-arm-kernel@lists.infradead.org, linux-tegra@vger.kernel.org,
- linux-kernel@vger.kernel.org
-Cc: Thierry Reding <thierry.reding@gmail.com>,
- Stephen Warren <swarren@wwwdotorg.org>,
- Mikko Perttunen <mperttunen@nvidia.com>,
- Paul Kocialkowski <contact@paulk.fr>,
- Jonathan Hunter <jonathanh@nvidia.com>
-Date: Sun, 9 Jul 2017 19:36:14 +0300
-
-This registers the host1x node with the SMMU (as HC swgroup) to allow
-the host1x code to attach to it. It avoid failing the probe sequence,
-which resulted in the tegra drm driver not probing and thus nothing
-being displayed on-screen.
-
-Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
----
- arch/arm/boot/dts/tegra124.dtsi | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/arm/boot/dts/tegra124.dtsi b/arch/arm/boot/dts/tegra124.dtsi
-index 187a36c6d0fc..b3b89befffeb 100644
---- a/arch/arm/boot/dts/tegra124.dtsi
-+++ b/arch/arm/boot/dts/tegra124.dtsi
-@@ -85,6 +85,7 @@
- clocks = <&tegra_car TEGRA124_CLK_HOST1X>;
- resets = <&tegra_car 28>;
- reset-names = "host1x";
-+ iommus = <&mc TEGRA_SWGROUP_HC>;
-
- #address-cells = <2>;
- #size-cells = <2>;
diff --git a/arm64-Revert-allwinner-a64-pine64-Use-dcdc1-regulato.patch b/arm64-Revert-allwinner-a64-pine64-Use-dcdc1-regulato.patch
new file mode 100644
index 000000000..33f9271b7
--- /dev/null
+++ b/arm64-Revert-allwinner-a64-pine64-Use-dcdc1-regulato.patch
@@ -0,0 +1,41 @@
+From 90e388ca5d8bbee022f9ed5fc24137b31579fa6e Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Wed, 22 Nov 2017 15:52:36 +0000
+Subject: [PATCH] Revert "arm64: allwinner: a64: pine64: Use dcdc1 regulator
+ for mmc0"
+
+This reverts commit 3f241bfa60bdc9c4fde63fa6664a8ce00fd668c6.
+---
+ arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
+index d06e34b5d192..caf8b6fbe5e3 100644
+--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
+@@ -61,6 +61,13 @@
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
++
++ reg_vcc3v3: vcc3v3 {
++ compatible = "regulator-fixed";
++ regulator-name = "vcc3v3";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ };
+ };
+
+ &ehci0 {
+@@ -84,7 +91,7 @@
+ &mmc0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mmc0_pins>;
+- vmmc-supply = <&reg_dcdc1>;
++ vmmc-supply = <&reg_vcc3v3>;
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
+ cd-inverted;
+ disable-wp;
+--
+2.14.3
+
diff --git a/arm64-aw64-devices.patch b/arm64-aw64-devices.patch
deleted file mode 100644
index 94b1b2b04..000000000
--- a/arm64-aw64-devices.patch
+++ /dev/null
@@ -1,712 +0,0 @@
-From 4c0a84757b5a0365a5dde82e732972eda80a32b1 Mon Sep 17 00:00:00 2001
-From: Icenowy Zheng <icenowy@aosc.io>
-Date: Thu, 18 May 2017 15:16:51 +0800
-Subject: arm64: allwinner: a64: add DTSI file for AXP803 PMIC
-
-As nearly all A64 boards are using AXP803 PMIC, add a DTSI file for it,
-like the old DTSI files for AXP20x/22x, for the common parts of the
-PMIC.
-
-Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
-Acked-by: Mark Brown <broonie@kernel.org>
-Signed-off-by: Chen-Yu Tsai <wens@csie.org>
----
- arch/arm64/boot/dts/allwinner/axp803.dtsi | 150 ++++++++++++++++++++++++++++++
- 1 file changed, 150 insertions(+)
- create mode 100644 arch/arm64/boot/dts/allwinner/axp803.dtsi
-
-diff --git a/arch/arm64/boot/dts/allwinner/axp803.dtsi b/arch/arm64/boot/dts/allwinner/axp803.dtsi
-new file mode 100644
-index 0000000..ff8af52
---- /dev/null
-+++ b/arch/arm64/boot/dts/allwinner/axp803.dtsi
-@@ -0,0 +1,150 @@
-+/*
-+ * Copyright 2017 Icenowy Zheng <icenowy@aosc.xyz>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively,
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use,
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * AXP803 Integrated Power Management Chip
-+ * http://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf
-+ */
-+
-+&axp803 {
-+ interrupt-controller;
-+ #interrupt-cells = <1>;
-+
-+ regulators {
-+ /* Default work frequency for buck regulators */
-+ x-powers,dcdc-freq = <3000>;
-+
-+ reg_aldo1: aldo1 {
-+ regulator-name = "aldo1";
-+ };
-+
-+ reg_aldo2: aldo2 {
-+ regulator-name = "aldo2";
-+ };
-+
-+ reg_aldo3: aldo3 {
-+ regulator-name = "aldo3";
-+ };
-+
-+ reg_dc1sw: dc1sw {
-+ regulator-name = "dc1sw";
-+ };
-+
-+ reg_dcdc1: dcdc1 {
-+ regulator-name = "dcdc1";
-+ };
-+
-+ reg_dcdc2: dcdc2 {
-+ regulator-name = "dcdc2";
-+ };
-+
-+ reg_dcdc3: dcdc3 {
-+ regulator-name = "dcdc3";
-+ };
-+
-+ reg_dcdc4: dcdc4 {
-+ regulator-name = "dcdc4";
-+ };
-+
-+ reg_dcdc5: dcdc5 {
-+ regulator-name = "dcdc5";
-+ };
-+
-+ reg_dcdc6: dcdc6 {
-+ regulator-name = "dcdc6";
-+ };
-+
-+ reg_dldo1: dldo1 {
-+ regulator-name = "dldo1";
-+ };
-+
-+ reg_dldo2: dldo2 {
-+ regulator-name = "dldo2";
-+ };
-+
-+ reg_dldo3: dldo3 {
-+ regulator-name = "dldo3";
-+ };
-+
-+ reg_dldo4: dldo4 {
-+ regulator-name = "dldo4";
-+ };
-+
-+ reg_eldo1: eldo1 {
-+ regulator-name = "eldo1";
-+ };
-+
-+ reg_eldo2: eldo2 {
-+ regulator-name = "eldo2";
-+ };
-+
-+ reg_eldo3: eldo3 {
-+ regulator-name = "eldo3";
-+ };
-+
-+ reg_fldo1: fldo1 {
-+ regulator-name = "fldo1";
-+ };
-+
-+ reg_fldo2: fldo2 {
-+ regulator-name = "fldo2";
-+ };
-+
-+ reg_ldo_io0: ldo-io0 {
-+ regulator-name = "ldo-io0";
-+ status = "disabled";
-+ };
-+
-+ reg_ldo_io1: ldo-io1 {
-+ regulator-name = "ldo-io1";
-+ status = "disabled";
-+ };
-+
-+ reg_rtc_ldo: rtc-ldo {
-+ /* RTC_LDO is a fixed, always-on regulator */
-+ regulator-always-on;
-+ regulator-min-microvolt = <3000000>;
-+ regulator-max-microvolt = <3000000>;
-+ regulator-name = "rtc-ldo";
-+ };
-+ };
-+};
---
-cgit v1.1
-From 535ca50858e2d8bf1618ace056cd96f0b3d01133 Mon Sep 17 00:00:00 2001
-From: Icenowy Zheng <icenowy@aosc.io>
-Date: Tue, 6 Jun 2017 13:59:32 +0800
-Subject: arm64: allwinner: a64: add NMI (R_INTC) controller on A64
-
-Allwinner A64 SoC features a R_INTC controller, which controls the NMI
-line, and this interrupt line is usually connected to the AXP PMIC.
-
-Add support for it.
-
-Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
-[wens@csie.org: Add fallback sun6i-a31-r-intc compatible]
-Signed-off-by: Chen-Yu Tsai <wens@csie.org>
-Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
----
- arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-index 9d00622..78c7c9d 100644
---- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -487,6 +487,15 @@
- <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
- };
-
-+ r_intc: interrupt-controller@1f00c00 {
-+ compatible = "allwinner,sun50i-a64-r-intc",
-+ "allwinner,sun6i-a31-r-intc";
-+ interrupt-controller;
-+ #interrupt-cells = <2>;
-+ reg = <0x01f00c00 0x400>;
-+ interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
-+ };
-+
- r_ccu: clock@1f01400 {
- compatible = "allwinner,sun50i-a64-r-ccu";
- reg = <0x01f01400 0x100>;
---
-cgit v1.1
-From bf397214530ee5c873dac7b12126b250afd3831f Mon Sep 17 00:00:00 2001
-From: Jagan Teki <jagan@amarulasolutions.com>
-Date: Mon, 14 Aug 2017 16:06:53 +0530
-Subject: arm64: allwinner: a64: Add initial NanoPi A64 support
-
-NanoPi A64 is a new board of high performance with low cost
-designed by FriendlyElec., using the Allwinner A64 SOC.
-
-Nanopi A64 features
-- Allwinner A64, 64-bit Quad-core Cortex-A53@648MHz to 1.152GHz, DVFS
-- 1GB DDR3 RAM
-- MicroSD
-- Gigabit Ethernet (RTL8211E)
-- Wi-Fi 802.11b/g/n
-- IR receiver
-- Audio In/Out
-- Video In/Out
-- Serial Debug Port
-- microUSB 5V 2A DC power-supply
-
-Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
-Signed-off-by: Chen-Yu Tsai <wens@csie.org>
----
- arch/arm64/boot/dts/allwinner/Makefile | 1 +
- .../boot/dts/allwinner/sun50i-a64-nanopi-a64.dts | 207 +++++++++++++++++++++
- 2 files changed, 208 insertions(+)
- create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
-
-diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
-index 108f12c..c997b5c 100644
---- a/arch/arm64/boot/dts/allwinner/Makefile
-+++ b/arch/arm64/boot/dts/allwinner/Makefile
-@@ -1,4 +1,5 @@
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-bananapi-m64.dtb
-+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-nanopi-a64.dtb
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-orangepi-win.dtb
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
-diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
-new file mode 100644
-index 0000000..2beef9e
---- /dev/null
-+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
-@@ -0,0 +1,207 @@
-+/*
-+ * Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively,
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use,
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+
-+#include "sun50i-a64.dtsi"
-+
-+#include <dt-bindings/gpio/gpio.h>
-+
-+/ {
-+ model = "FriendlyARM NanoPi A64";
-+ compatible = "friendlyarm,nanopi-a64", "allwinner,sun50i-a64";
-+
-+ aliases {
-+ serial0 = &uart0;
-+ };
-+
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+};
-+
-+&ehci0 {
-+ status = "okay";
-+};
-+
-+&ehci1 {
-+ status = "okay";
-+};
-+
-+/* i2c1 connected with gpio headers like pine64, bananapi */
-+&i2c1 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&i2c1_pins>;
-+ status = "disabled";
-+};
-+
-+&i2c1_pins {
-+ bias-pull-up;
-+};
-+
-+&mmc0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&mmc0_pins>;
-+ vmmc-supply = <&reg_dcdc1>;
-+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
-+ cd-inverted;
-+ disable-wp;
-+ bus-width = <4>;
-+ status = "okay";
-+};
-+
-+&ohci0 {
-+ status = "okay";
-+};
-+
-+&ohci1 {
-+ status = "okay";
-+};
-+
-+&r_rsb {
-+ status = "okay";
-+
-+ axp803: pmic@3a3 {
-+ compatible = "x-powers,axp803";
-+ reg = <0x3a3>;
-+ interrupt-parent = <&r_intc>;
-+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
-+ };
-+};
-+
-+#include "axp803.dtsi"
-+
-+&reg_aldo2 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc-pl";
-+};
-+
-+&reg_aldo3 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <3000000>;
-+ regulator-max-microvolt = <3000000>;
-+ regulator-name = "vcc-pll-avcc";
-+};
-+
-+&reg_dcdc1 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <3000000>;
-+ regulator-max-microvolt = <3000000>;
-+ regulator-name = "vcc-3v";
-+};
-+
-+&reg_dcdc2 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1040000>;
-+ regulator-max-microvolt = <1300000>;
-+ regulator-name = "vdd-cpux";
-+};
-+
-+/* DCDC3 is polyphased with DCDC2 */
-+
-+&reg_dcdc5 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1500000>;
-+ regulator-max-microvolt = <1500000>;
-+ regulator-name = "vcc-dram";
-+};
-+
-+&reg_dcdc6 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1100000>;
-+ regulator-max-microvolt = <1100000>;
-+ regulator-name = "vdd-sys";
-+};
-+
-+&reg_dldo1 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <3300000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc-hdmi-dsi";
-+};
-+
-+&reg_dldo4 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <3000000>;
-+ regulator-max-microvolt = <3000000>;
-+ regulator-name = "vcc-pg-wifi-io";
-+};
-+
-+&reg_eldo1 {
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <1800000>;
-+ regulator-name = "cpvdd";
-+};
-+
-+&reg_fldo1 {
-+ regulator-min-microvolt = <1200000>;
-+ regulator-max-microvolt = <1200000>;
-+ regulator-name = "vcc-1v2-hsic";
-+};
-+
-+/*
-+ * The A64 chip cannot work without this regulator off, although
-+ * it seems to be only driving the AR100 core.
-+ * Maybe we don't still know well about CPUs domain.
-+ */
-+&reg_fldo2 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1100000>;
-+ regulator-max-microvolt = <1100000>;
-+ regulator-name = "vdd-cpus";
-+};
-+
-+&reg_rtc_ldo {
-+ regulator-name = "vcc-rtc";
-+};
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_pins_a>;
-+ status = "okay";
-+};
-+
-+&usbphy {
-+ status = "okay";
-+};
---
-cgit v1.1
-From 4969efb28b4301b09aba621f30cf81c582c018a8 Mon Sep 17 00:00:00 2001
-From: Jagan Teki <jagan@amarulasolutions.com>
-Date: Mon, 14 Aug 2017 16:16:04 +0530
-Subject: arm64: allwinner: a64: Add A64-OLinuXino initial support
-
-OLimex A64-OLinuXino is an open-source hardware board
-using the Allwinner A64 SOC.
-
-OLimex A64-OLinuXino has
-- A64 Quad-core Cortex-A53 64bit
-- 1GB or 2GB RAM DDR3L @ 672Mhz
-- microSD slot and 4/8/16GB eMMC
-- Debug TTL UART
-- HDMI
-- LCD
-- IR receiver
-- 5V DC power supply
-
-Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
-Signed-off-by: Chen-Yu Tsai <wens@csie.org>
----
- arch/arm64/boot/dts/allwinner/Makefile | 1 +
- .../boot/dts/allwinner/sun50i-a64-olinuxino.dts | 199 +++++++++++++++++++++
- 2 files changed, 200 insertions(+)
- create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
-
-diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
-index c997b5c..19c3fbd 100644
---- a/arch/arm64/boot/dts/allwinner/Makefile
-+++ b/arch/arm64/boot/dts/allwinner/Makefile
-@@ -1,5 +1,6 @@
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-bananapi-m64.dtb
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-nanopi-a64.dtb
-+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino.dtb
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-orangepi-win.dtb
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb
- dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
-diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
-new file mode 100644
-index 0000000..338e7861
---- /dev/null
-+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
-@@ -0,0 +1,199 @@
-+/*
-+ * Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively,
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use,
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+
-+#include "sun50i-a64.dtsi"
-+
-+#include <dt-bindings/gpio/gpio.h>
-+
-+/ {
-+ model = "Olimex A64-Olinuxino";
-+ compatible = "olimex,a64-olinuxino", "allwinner,sun50i-a64";
-+
-+ aliases {
-+ serial0 = &uart0;
-+ };
-+
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+};
-+
-+&mmc0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&mmc0_pins>;
-+ vmmc-supply = <&reg_dcdc1>;
-+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
-+ cd-inverted;
-+ disable-wp;
-+ bus-width = <4>;
-+ status = "okay";
-+};
-+
-+&r_rsb {
-+ status = "okay";
-+
-+ axp803: pmic@3a3 {
-+ compatible = "x-powers,axp803";
-+ reg = <0x3a3>;
-+ interrupt-parent = <&r_intc>;
-+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
-+ };
-+};
-+
-+#include "axp803.dtsi"
-+
-+&reg_aldo1 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <2800000>;
-+ regulator-max-microvolt = <2800000>;
-+ regulator-name = "vcc-pe";
-+};
-+
-+&reg_aldo2 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <3300000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc-pl";
-+};
-+
-+&reg_aldo3 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <3000000>;
-+ regulator-max-microvolt = <3000000>;
-+ regulator-name = "vcc-pll-avcc";
-+};
-+
-+&reg_dcdc1 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <3300000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc-3v3";
-+};
-+
-+&reg_dcdc2 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1040000>;
-+ regulator-max-microvolt = <1300000>;
-+ regulator-name = "vdd-cpux";
-+};
-+
-+/* DCDC3 is polyphased with DCDC2 */
-+
-+&reg_dcdc5 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1500000>;
-+ regulator-max-microvolt = <1500000>;
-+ regulator-name = "vcc-ddr3";
-+};
-+
-+&reg_dcdc6 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1100000>;
-+ regulator-max-microvolt = <1100000>;
-+ regulator-name = "vdd-sys";
-+};
-+
-+&reg_dldo1 {
-+ regulator-min-microvolt = <3300000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc-hdmi";
-+};
-+
-+&reg_dldo2 {
-+ regulator-min-microvolt = <3300000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc-mipi";
-+};
-+
-+&reg_dldo3 {
-+ regulator-min-microvolt = <2800000>;
-+ regulator-max-microvolt = <2800000>;
-+ regulator-name = "vcc-avdd-csi";
-+};
-+
-+&reg_dldo4 {
-+ regulator-min-microvolt = <3300000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc-wifi-io";
-+};
-+
-+&reg_eldo1 {
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <1800000>;
-+ regulator-name = "cpvdd";
-+};
-+
-+&reg_eldo2 {
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <1800000>;
-+ regulator-name = "vcc-dvdd-csi";
-+};
-+
-+&reg_fldo1 {
-+ regulator-min-microvolt = <1200000>;
-+ regulator-max-microvolt = <1200000>;
-+ regulator-name = "vcc-1v2-hsic";
-+};
-+
-+/*
-+ * The A64 chip cannot work without this regulator off, although
-+ * it seems to be only driving the AR100 core.
-+ * Maybe we don't still know well about CPUs domain.
-+ */
-+&reg_fldo2 {
-+ regulator-always-on;
-+ regulator-min-microvolt = <1100000>;
-+ regulator-max-microvolt = <1100000>;
-+ regulator-name = "vdd-cpus";
-+};
-+
-+&reg_rtc_ldo {
-+ regulator-name = "vcc-rtc";
-+};
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_pins_a>;
-+ status = "okay";
-+};
---
-cgit v1.1
diff --git a/arm64-cavium-fixes.patch b/arm64-cavium-fixes.patch
deleted file mode 100644
index a898bb779..000000000
--- a/arm64-cavium-fixes.patch
+++ /dev/null
@@ -1,455 +0,0 @@
-From c03847b4a603846903ee72a5e1baab03e0591423 Mon Sep 17 00:00:00 2001
-From: Ashok Kumar Sekar <asekar@redhat.com>
-Date: Fri, 23 Sep 2016 04:16:19 -0700
-Subject: [PATCH 1/8] PCI: Vulcan: AHCI PCI bar fix for Broadcom Vulcan early
- silicon
-
-PCI BAR 5 is not setup correctly for the on-board AHCI
-controller on Broadcom's Vulcan processor. Added a quirk to fix BAR 5
-by using BAR 4's resources which are populated correctly but NOT used
-by the AHCI controller actually.
-
-Signed-off-by: Ashok Kumar Sekar <asekar@redhat.com>
-Signed-off-by: Jayachandran C <jchandra@broadcom.com>
-Signed-off-by: Robert Richter <rrichter@cavium.com>
----
- drivers/pci/quirks.c | 24 ++++++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index dc624fb34e72..94b7bdf63b19 100644
---- a/drivers/pci/quirks.c
-+++ b/drivers/pci/quirks.c
-@@ -3994,6 +3994,30 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9084,
- quirk_bridge_cavm_thrx2_pcie_root);
-
- /*
-+ * PCI BAR 5 is not setup correctly for the on-board AHCI controller
-+ * on Broadcom's Vulcan processor. Added a quirk to fix BAR 5 by
-+ * using BAR 4's resources which are populated correctly and NOT
-+ * actually used by the AHCI controller.
-+ */
-+static void quirk_fix_vulcan_ahci_bars(struct pci_dev *dev)
-+{
-+ struct resource *r = &dev->resource[4];
-+
-+ if (!(r->flags & IORESOURCE_MEM) || (r->start == 0))
-+ return;
-+
-+ /* Set BAR5 resource to BAR4 */
-+ dev->resource[5] = *r;
-+
-+ /* Update BAR5 in pci config space */
-+ pci_write_config_dword(dev, PCI_BASE_ADDRESS_5, r->start);
-+
-+ /* Clear BAR4's resource */
-+ memset(r, 0, sizeof(*r));
-+}
-+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_BROADCOM, 0x9027, quirk_fix_vulcan_ahci_bars);
-+
-+/*
- * Intersil/Techwell TW686[4589]-based video capture cards have an empty (zero)
- * class code. Fix it.
- */
---
-2.11.0
-
-From c84892e4b6b671fda7e499a0bb0787bd026de015 Mon Sep 17 00:00:00 2001
-From: Jayachandran C <jnair@caviumnetworks.com>
-Date: Fri, 10 Mar 2017 10:04:52 +0000
-Subject: [PATCH 2/8] ahci: thunderx2: Fix for errata that affects stop engine
-
-Apply workaround for this errata:
- Synopsis: Resetting PxCMD.ST may hang the SATA device
-
- Description: An internal ping-pong buffer state is not reset
- correctly for an PxCMD.ST=0 command for a SATA channel. This
- may cause the SATA interface to hang when a PxCMD.ST=0 command
- is received.
-
- Workaround: A SATA_BIU_CORE_ENABLE.sw_init_bsi must be asserted
- by the driver whenever the PxCMD.ST needs to be de-asserted. This
- will reset both the ports. So, it may not always work in a 2
- channel SATA system.
-
- Resolution: Fix in B0.
-
-Add the code to ahci_stop_engine() to do this. It is not easy to
-stop the other "port" since it is associated with a different AHCI
-interface. Please note that with this fix, SATA reset does not
-hang any more, but it can cause failures on the other interface
-if that is in active use.
-
-Unfortunately, we have nothing other the the CPU ID to check if the
-SATA block has this issue.
-
-Signed-off-by: Jayachandran C <jnair@caviumnetworks.com>
-[added check to restict to pci devs on the soc only]
-Signed-off-by: Robert Richter <rrichter@cavium.com>
----
- drivers/ata/libahci.c | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
-index 3e286d86ab42..9116bba1b07d 100644
---- a/drivers/ata/libahci.c
-+++ b/drivers/ata/libahci.c
-@@ -669,6 +669,23 @@ int ahci_stop_engine(struct ata_port *ap)
- tmp &= ~PORT_CMD_START;
- writel(tmp, port_mmio + PORT_CMD);
-
-+#ifdef CONFIG_ARM64
-+ /* Rev Ax of Cavium CN99XX needs a hack for port stop */
-+ if (dev_is_pci(ap->host->dev) &&
-+ to_pci_dev(ap->host->dev)->vendor == 0x14e4 &&
-+ to_pci_dev(ap->host->dev)->device == 0x9027 &&
-+ MIDR_IS_CPU_MODEL_RANGE(read_cpuid_id(),
-+ MIDR_CPU_MODEL(ARM_CPU_IMP_BRCM, BRCM_CPU_PART_VULCAN),
-+ MIDR_CPU_VAR_REV(0, 0),
-+ MIDR_CPU_VAR_REV(0, MIDR_REVISION_MASK))) {
-+ tmp = readl(hpriv->mmio + 0x8000);
-+ writel(tmp | (1 << 26), hpriv->mmio + 0x8000);
-+ udelay(1);
-+ writel(tmp & ~(1 << 26), hpriv->mmio + 0x8000);
-+ dev_warn(ap->host->dev, "CN99XX stop engine fix applied!\n");
-+ }
-+#endif
-+
- /* wait for engine to stop. This could be as long as 500 msec */
- tmp = ata_wait_register(ap, port_mmio + PORT_CMD,
- PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500);
---
-2.11.0
-
-From 98a39621952f6a13c5198e79f1c080ea6fc1d092 Mon Sep 17 00:00:00 2001
-From: Jayachandran C <jnair@caviumnetworks.com>
-Date: Sun, 22 Feb 1998 18:42:42 -0800
-Subject: [PATCH 3/8] ahci: thunderx2: stop engine fix update
-
-The current reset fix fails during continuous reboot test. The failure
-happens when both the on-board SATA slots are used and when one of the
-controllers are reset.
-
-The latest ThunderX2 firmware (3.1) enables hardware error interrupts and
-when the reset fix fails, we get a hang with the print:
-[ 14.839308] sd 1:0:0:0: [sdb] 468862128 512-byte logical blocks: (240 GB/224 GiB)
-[ 14.846796] sd 1:0:0:0: [sdb] 4096-byte physical blocks
-[ 14.852036] sd 1:0:0:0: [sdb] Write Protect is off
-[ 14.856843] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
-[ 14.866022] ata2.00: Enabling discard_zeroes_data
-
- *** NBU BAR Error 0x1e25c ***
- AddrLo 0x1d80180 AddrHi 0x0
-
-To fix this issue, update the SATA reset fix to increase the delays between register writes.
-
-Signed-off-by: Jayachandran C <jnair@caviumnetworks.com>
-Signed-off-by: Robert Richter <rrichter@cavium.com>
----
- drivers/ata/libahci.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
-index 9116bba1b07d..1d3e614bad2b 100644
---- a/drivers/ata/libahci.c
-+++ b/drivers/ata/libahci.c
-@@ -679,10 +679,11 @@ int ahci_stop_engine(struct ata_port *ap)
- MIDR_CPU_VAR_REV(0, 0),
- MIDR_CPU_VAR_REV(0, MIDR_REVISION_MASK))) {
- tmp = readl(hpriv->mmio + 0x8000);
-+ udelay(100);
- writel(tmp | (1 << 26), hpriv->mmio + 0x8000);
-- udelay(1);
-+ udelay(100);
- writel(tmp & ~(1 << 26), hpriv->mmio + 0x8000);
-- dev_warn(ap->host->dev, "CN99XX stop engine fix applied!\n");
-+ dev_warn(ap->host->dev, "CN99XX SATA reset workaround applied\n");
- }
- #endif
-
---
-2.11.0
-
-From 33c107d2a2b570cd5246262108ad07cc102e9fcd Mon Sep 17 00:00:00 2001
-From: Robert Richter <rrichter@cavium.com>
-Date: Thu, 16 Mar 2017 18:01:59 +0100
-Subject: [PATCH 4/8] iommu/arm-smmu, ACPI: Enable Cavium SMMU-v2
-
-In next IORT spec release there will be a definition of a Cavium
-specific model. Until then, enable the Cavium SMMU using cpu id
-registers. All versions of Cavium's SMMUv2 implementation must be
-enabled.
-
-Signed-off-by: Robert Richter <rrichter@cavium.com>
----
- drivers/iommu/arm-smmu.c | 22 +++++++++++++++++++++-
- 1 file changed, 21 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
-index d42cad5a3d52..37aee96ccc0e 100644
---- a/drivers/iommu/arm-smmu.c
-+++ b/drivers/iommu/arm-smmu.c
-@@ -53,6 +53,8 @@
-
- #include <linux/amba/bus.h>
-
-+#include <asm/cputype.h>
-+
- #include "io-pgtable.h"
- #include "arm-smmu-regs.h"
-
-@@ -1871,6 +1873,24 @@ static const struct of_device_id arm_smmu_of_match[] = {
- MODULE_DEVICE_TABLE(of, arm_smmu_of_match);
-
- #ifdef CONFIG_ACPI
-+
-+static int acpi_smmu_enable_cavium(struct arm_smmu_device *smmu, int ret)
-+{
-+ u32 cpu_model;
-+
-+ if (!IS_ENABLED(CONFIG_ARM64))
-+ return ret;
-+
-+ cpu_model = read_cpuid_id() & MIDR_CPU_MODEL_MASK;
-+ if (cpu_model != MIDR_THUNDERX)
-+ return ret;
-+
-+ smmu->version = ARM_SMMU_V2;
-+ smmu->model = CAVIUM_SMMUV2;
-+
-+ return 0;
-+}
-+
- static int acpi_smmu_get_data(u32 model, struct arm_smmu_device *smmu)
- {
- int ret = 0;
-@@ -1901,7 +1921,7 @@ static int acpi_smmu_get_data(u32 model, struct arm_smmu_device *smmu)
- ret = -ENODEV;
- }
-
-- return ret;
-+ return acpi_smmu_enable_cavium(smmu, ret);
- }
-
- static int arm_smmu_device_acpi_probe(struct platform_device *pdev,
---
-2.11.0
-
-From 5523edb06c95d7ac9e81d94366e71d929c08ebd4 Mon Sep 17 00:00:00 2001
-From: Robert Richter <rrichter@cavium.com>
-Date: Wed, 12 Apr 2017 15:06:03 +0200
-Subject: [PATCH 5/8] iommu: Print a message with the default domain type
- created
-
-There are several ways the bypass mode can be enabled. With commit
-
- fccb4e3b8ab0 iommu: Allow default domain type to be set on the kernel command line
-
-there is the option to switch into bypass mode. And, depending on
-devicetree options, bypass mode can be also enabled. This makes it
-hard to determine if direct mapping is enabled. Print message with the
-default domain type case.
-
-Signed-off-by: Robert Richter <rrichter@cavium.com>
----
- drivers/iommu/iommu.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
-index 3f6ea160afed..7aaafaca6baf 100644
---- a/drivers/iommu/iommu.c
-+++ b/drivers/iommu/iommu.c
-@@ -599,7 +599,9 @@ int iommu_group_add_device(struct iommu_group *group, struct device *dev)
-
- trace_add_device_to_group(group->id, dev);
-
-- pr_info("Adding device %s to group %d\n", dev_name(dev), group->id);
-+ pr_info("Adding device %s to group %d, default domain type %d\n",
-+ dev_name(dev), group->id,
-+ group->default_domain ? group->default_domain->type : -1);
-
- return 0;
-
---
-2.11.0
-
-From 71e0ad5ab606077c24a96d69f4bfed58d7ef16c7 Mon Sep 17 00:00:00 2001
-From: Robert Richter <rrichter@cavium.com>
-Date: Thu, 4 May 2017 17:48:48 +0200
-Subject: [PATCH 6/8] iommu, aarch64: Set bypass mode per default
-
-We see a performance degradation if smmu is enabled in non-bypass mode.
-This is a problem in the kernel's implememntation. Until that is solved,
-enable smmu in bypass mode per default.
-
-We have tested that SMMU passthrough mode doesn't effect VFIO on both
-CN88xx and CN99xx and haven't found any issues.
-
-Signed-off-by: Robert Richter <rrichter@cavium.com>
----
- drivers/iommu/iommu.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
-index 7aaafaca6baf..24de0b934221 100644
---- a/drivers/iommu/iommu.c
-+++ b/drivers/iommu/iommu.c
-@@ -36,7 +36,12 @@
-
- static struct kset *iommu_group_kset;
- static DEFINE_IDA(iommu_group_ida);
-+
-+#ifdef CONFIG_ARM64
-+static unsigned int iommu_def_domain_type = IOMMU_DOMAIN_IDENTITY;
-+#else
- static unsigned int iommu_def_domain_type = IOMMU_DOMAIN_DMA;
-+#endif
-
- struct iommu_callback_data {
- const struct iommu_ops *ops;
---
-2.11.0
-
-From 27f103963f926d6a7a8adaad1ee227fd3b51f591 Mon Sep 17 00:00:00 2001
-From: Robert Richter <rrichter@cavium.com>
-Date: Wed, 12 Apr 2017 10:31:15 +0200
-Subject: [PATCH 7/8] iommu/arm-smmu, ACPI: Enable Cavium SMMU-v3
-
-In next IORT spec release there will be a definition of a Cavium
-specific model. Until then, enable the Cavium SMMU using cpu id
-registers. Early silicon versions (A1) of Cavium's CN99xx SMMUv3
-implementation must be enabled. For later silicon versions (B0) the
-iort change will be in place.
-
-Signed-off-by: Robert Richter <rrichter@cavium.com>
----
- drivers/acpi/arm64/iort.c | 16 ++++++++++++++--
- drivers/iommu/arm-smmu-v3.c | 19 +++++++++++++++++++
- 2 files changed, 33 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
-index a3215ee671c1..b603af92eec2 100644
---- a/drivers/acpi/arm64/iort.c
-+++ b/drivers/acpi/arm64/iort.c
-@@ -26,6 +26,8 @@
- #include <linux/platform_device.h>
- #include <linux/slab.h>
-
-+#include <asm/cputype.h>
-+
- #define IORT_TYPE_MASK(type) (1 << (type))
- #define IORT_MSI_TYPE (1 << ACPI_IORT_NODE_ITS_GROUP)
- #define IORT_IOMMU_TYPE ((1 << ACPI_IORT_NODE_SMMU) | \
-@@ -824,13 +826,22 @@ static int __init arm_smmu_v3_count_resources(struct acpi_iort_node *node)
- return num_res;
- }
-
-+static bool is_cavium_cn99xx_smmu_v3(void)
-+{
-+ u32 cpu_model = read_cpuid_id() & MIDR_CPU_MODEL_MASK;
-+
-+ return cpu_model == MIDR_CPU_MODEL(ARM_CPU_IMP_BRCM,
-+ BRCM_CPU_PART_VULCAN);
-+}
-+
- static bool arm_smmu_v3_is_combined_irq(struct acpi_iort_smmu_v3 *smmu)
- {
- /*
- * Cavium ThunderX2 implementation doesn't not support unique
- * irq line. Use single irq line for all the SMMUv3 interrupts.
- */
-- if (smmu->model != ACPI_IORT_SMMU_V3_CAVIUM_CN99XX)
-+ if (smmu->model != ACPI_IORT_SMMU_V3_CAVIUM_CN99XX
-+ && !is_cavium_cn99xx_smmu_v3())
- return false;
-
- /*
-@@ -848,7 +859,8 @@ static unsigned long arm_smmu_v3_resource_size(struct acpi_iort_smmu_v3 *smmu)
- * Override the size, for Cavium ThunderX2 implementation
- * which doesn't support the page 1 SMMU register space.
- */
-- if (smmu->model == ACPI_IORT_SMMU_V3_CAVIUM_CN99XX)
-+ if (smmu->model == ACPI_IORT_SMMU_V3_CAVIUM_CN99XX
-+ || is_cavium_cn99xx_smmu_v3())
- return SZ_64K;
-
- return SZ_128K;
-diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
-index 568c400eeaed..d147cb5c7309 100644
---- a/drivers/iommu/arm-smmu-v3.c
-+++ b/drivers/iommu/arm-smmu-v3.c
-@@ -39,6 +39,8 @@
-
- #include <linux/amba/bus.h>
-
-+#include <asm/cputype.h>
-+
- #include "io-pgtable.h"
-
- /* MMIO registers */
-@@ -2659,6 +2661,21 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
- }
-
- #ifdef CONFIG_ACPI
-+
-+static void acpi_smmu_enable_cavium(struct arm_smmu_device *smmu)
-+{
-+ u32 cpu_model;
-+
-+ if (!IS_ENABLED(CONFIG_ARM64))
-+ return;
-+
-+ cpu_model = read_cpuid_id() & MIDR_CPU_MODEL_MASK;
-+ if (cpu_model != MIDR_CPU_MODEL(ARM_CPU_IMP_BRCM, BRCM_CPU_PART_VULCAN))
-+ return;
-+
-+ smmu->options |= ARM_SMMU_OPT_PAGE0_REGS_ONLY;
-+}
-+
- static void acpi_smmu_get_options(u32 model, struct arm_smmu_device *smmu)
- {
- switch (model) {
-@@ -2670,6 +2687,8 @@ static void acpi_smmu_get_options(u32 model, struct arm_smmu_device *smmu)
- break;
- }
-
-+ acpi_smmu_enable_cavium(smmu);
-+
- dev_notice(smmu->dev, "option mask 0x%x\n", smmu->options);
- }
-
---
-2.11.0
-
-From ff677cc625b52b93351dd73d7881251067f0e976 Mon Sep 17 00:00:00 2001
-From: Radha Mohan Chintakuntla <rchintakuntla@cavium.com>
-Date: Wed, 20 Aug 2014 15:10:58 -0700
-Subject: [PATCH 8/8] arm64: gicv3: its: Increase FORCE_MAX_ZONEORDER for
- Cavium ThunderX
-
-In case of ARCH_THUNDER, there is a need to allocate the GICv3 ITS table
-which is bigger than the allowed max order. So we are forcing it only in
-case of 4KB page size.
-
-Signed-off-by: Radha Mohan Chintakuntla <rchintakuntla@cavium.com>
-[rric: use ARM64_4K_PAGES since we have now ARM64_16K_PAGES, change order]
-Signed-off-by: Robert Richter <rrichter@cavium.com>
----
- arch/arm64/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
-index 2c3e2d693d76..023867378f45 100644
---- a/arch/arm64/Kconfig
-+++ b/arch/arm64/Kconfig
-@@ -784,6 +784,7 @@ config FORCE_MAX_ZONEORDER
- default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
- default "13" if (ARCH_THUNDER && !ARM64_64K_PAGES)
- default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
-+ default "13" if (ARM64_4K_PAGES && ARCH_THUNDER)
- default "11"
- help
- The kernel memory allocator divides physically contiguous memory
---
-2.11.0
-
diff --git a/arm64-socionext-96b-enablement.patch b/arm64-socionext-96b-enablement.patch
index 8eb99ea42..0a7df3a19 100644
--- a/arm64-socionext-96b-enablement.patch
+++ b/arm64-socionext-96b-enablement.patch
@@ -108,6 +108,158 @@ index fd4b7f6..14e2419 100644
--
cgit v1.1
+From 33d983b5bb2929ae242606925e708092b1dfdd8f Mon Sep 17 00:00:00 2001
+From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Date: Sat, 2 Sep 2017 11:01:22 +0100
+Subject: drivers/irqchip: gicv3: add workaround for Synquacer pre-ITS
+
+In their infinite wisdom, the Socionext engineers have decided
+that ITS device IDs should not be hardwired, but it should be
+left up to the software to assign them, by allowing it to
+redirect MSI doorbell writes via a separate hardware block
+that issues the doorbell write with a device ID that is
+derived from the memory address. This completely breaks any
+kind of isolation, or virtualization in general, for that
+matter, but add support for it nonetheless.
+
+Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+---
+ arch/arm64/Kconfig | 8 +++++++
+ drivers/irqchip/irq-gic-v3-its.c | 48 +++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 51 insertions(+), 5 deletions(-)
+
+diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
+index 0df64a6..c4361df 100644
+--- a/arch/arm64/Kconfig
++++ b/arch/arm64/Kconfig
+@@ -539,6 +539,14 @@ config QCOM_QDF2400_ERRATUM_0065
+
+ If unsure, say Y.
+
++config SOCIONEXT_SYNQUACER_PREITS
++ bool "Socionext Synquacer: Workaround for GICv3 pre-ITS"
++ default y
++ help
++ Socionext Synquacer SoCs implement a separate h/w block to generate
++ MSI doorbell writes with non-zero values for the device ID.
++
++ If unsure, say Y.
+ endmenu
+
+
+diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
+index e8d8934..0d372f1 100644
+--- a/drivers/irqchip/irq-gic-v3-its.c
++++ b/drivers/irqchip/irq-gic-v3-its.c
+@@ -46,6 +46,7 @@
+ #define ITS_FLAGS_CMDQ_NEEDS_FLUSHING (1ULL << 0)
+ #define ITS_FLAGS_WORKAROUND_CAVIUM_22375 (1ULL << 1)
+ #define ITS_FLAGS_WORKAROUND_CAVIUM_23144 (1ULL << 2)
++#define ITS_FLAGS_WORKAROUND_SOCIONEXT_PREITS (1ULL << 3)
+
+ #define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING (1 << 0)
+
+@@ -99,6 +100,10 @@ struct its_node {
+ struct its_collection *collections;
+ struct list_head its_device_list;
+ u64 flags;
++#ifdef CONFIG_SOCIONEXT_SYNQUACER_PREITS
++ u64 pre_its_base;
++ u64 pre_its_size;
++#endif
+ u32 ite_size;
+ u32 device_ids;
+ int numa_node;
+@@ -1102,13 +1107,29 @@ static void its_irq_compose_msi_msg(struct irq_data *d, struct msi_msg *msg)
+ u64 addr;
+
+ its = its_dev->its;
+- addr = its->phys_base + GITS_TRANSLATER;
++
++#ifdef CONFIG_SOCIONEXT_SYNQUACER_PREITS
++ if (its->flags & ITS_FLAGS_WORKAROUND_SOCIONEXT_PREITS)
++
++ /*
++ * The Socionext Synquacer SoC has a so-called 'pre-ITS',
++ * which maps 32-bit writes into a separate window of size
++ * '4 << device_id_bits' onto writes to GITS_TRANSLATER with
++ * device ID taken from bits [device_id_bits + 1:2] of the
++ * window offset.
++ */
++ addr = its->pre_its_base + (its_dev->device_id << 2);
++ else
++#endif
++ addr = its->phys_base + GITS_TRANSLATER;
+
+ msg->address_lo = lower_32_bits(addr);
+ msg->address_hi = upper_32_bits(addr);
+ msg->data = its_get_event_id(d);
+
+- iommu_dma_map_msi_msg(d->irq, msg);
++ if (!IS_ENABLED(CONFIG_SOCIONEXT_SYNQUACER_PREITS) ||
++ !(its->flags & ITS_FLAGS_WORKAROUND_SOCIONEXT_PREITS))
++ iommu_dma_map_msi_msg(d->irq, msg);
+ }
+
+ static int its_irq_set_irqchip_state(struct irq_data *d,
+@@ -1666,6 +1687,11 @@ static int its_alloc_tables(struct its_node *its)
+ ids = 0x14; /* 20 bits, 8MB */
+ }
+
++#ifdef CONFIG_SOCIONEXT_SYNQUACER_PREITS
++ if (its->flags & ITS_FLAGS_WORKAROUND_SOCIONEXT_PREITS)
++ ids = ilog2(its->pre_its_size) - 2;
++#endif
++
+ its->device_ids = ids;
+
+ for (i = 0; i < GITS_BASER_NR_REGS; i++) {
+@@ -2788,11 +2814,21 @@ static const struct gic_quirk its_quirks[] = {
+ }
+ };
+
+-static void its_enable_quirks(struct its_node *its)
++static void its_enable_quirks(struct its_node *its,
++ struct fwnode_handle *handle)
+ {
+ u32 iidr = readl_relaxed(its->base + GITS_IIDR);
+
+ gic_enable_quirks(iidr, its_quirks, its);
++
++#ifdef CONFIG_SOCIONEXT_SYNQUACER_PREITS
++ if (!fwnode_property_read_u64_array(handle,
++ "socionext,synquacer-pre-its",
++ &its->pre_its_base, 2)) {
++ its->flags |= ITS_FLAGS_WORKAROUND_SOCIONEXT_PREITS;
++ pr_info("ITS: enabling workaround for Socionext Synquacer pre-ITS\n");
++ }
++#endif
+ }
+
+ static int its_init_domain(struct fwnode_handle *handle, struct its_node *its)
+@@ -2812,7 +2848,9 @@ static int its_init_domain(struct fwnode_handle *handle, struct its_node *its)
+
+ inner_domain->parent = its_parent;
+ irq_domain_update_bus_token(inner_domain, DOMAIN_BUS_NEXUS);
+- inner_domain->flags |= IRQ_DOMAIN_FLAG_MSI_REMAP;
++
++ if (!(its->flags & ITS_FLAGS_WORKAROUND_SOCIONEXT_PREITS))
++ inner_domain->flags |= IRQ_DOMAIN_FLAG_MSI_REMAP;
+ info->ops = &its_msi_domain_ops;
+ info->data = its;
+ inner_domain->host_data = info;
+@@ -2966,7 +3004,7 @@ static int __init its_probe_one(struct resource *res,
+ }
+ its->cmd_write = its->cmd_base;
+
+- its_enable_quirks(its);
++ its_enable_quirks(its, handle);
+
+ err = its_alloc_tables(its);
+ if (err)
+--
+cgit v1.1
+
From 26e7bb47b0fb03a01be1e391a08c7375b45335a2 Mon Sep 17 00:00:00 2001
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Mon, 21 Aug 2017 20:29:05 +0100
@@ -173,6 +325,7 @@ index c61be97..7d5a23e 100644
--- a/drivers/pci/dwc/Makefile
+++ b/drivers/pci/dwc/Makefile
@@ -1,5 +1,6 @@
+ # SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_PCIE_DW) += pcie-designware.o
obj-$(CONFIG_PCIE_DW_HOST) += pcie-designware-host.o
+obj-$(CONFIG_PCIE_DW_HOST_ECAM) += pcie-designware-ecam.o
@@ -2896,3 +3049,51 @@ index 0000000..4695969
--
cgit v1.1
+From d2fc584f8237746a84e6ec8690d8884f148fc449 Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Tue, 10 Oct 2017 11:35:51 +0100
+Subject: [PATCH] add interrupt.h, sort alphabetically
+
+Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
+---
+ drivers/net/ethernet/socionext/netsec/netsec_platform.c | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/net/ethernet/socionext/netsec/netsec_platform.c b/drivers/net/ethernet/socionext/netsec/netsec_platform.c
+index 624f6a7093f6..79072bae917d 100644
+--- a/drivers/net/ethernet/socionext/netsec/netsec_platform.c
++++ b/drivers/net/ethernet/socionext/netsec/netsec_platform.c
+@@ -14,21 +14,22 @@
+ */
+
+ #include <linux/acpi.h>
+-#include <linux/device.h>
+-#include <linux/ctype.h>
+-#include <linux/netdevice.h>
+-#include <linux/types.h>
+ #include <linux/bitops.h>
++#include <linux/clk.h>
++#include <linux/ctype.h>
++#include <linux/device.h>
+ #include <linux/dma-mapping.h>
++#include <linux/io.h>
++#include <linux/interrupt.h>
+ #include <linux/module.h>
+-#include <linux/sizes.h>
+-#include <linux/platform_device.h>
+-#include <linux/clk.h>
++#include <linux/netdevice.h>
+ #include <linux/of.h>
+ #include <linux/of_device.h>
+ #include <linux/of_net.h>
+-#include <linux/io.h>
++#include <linux/platform_device.h>
+ #include <linux/pm_runtime.h>
++#include <linux/sizes.h>
++#include <linux/types.h>
+
+ #include "netsec.h"
+
+--
+2.14.2
+
diff --git a/arm64-xgene-acpi-fix.patch b/arm64-xgene-acpi-fix.patch
deleted file mode 100644
index e0df833c0..000000000
--- a/arm64-xgene-acpi-fix.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From bdb9458a3382ba745a66be5526d3899103c76eda Mon Sep 17 00:00:00 2001
-From: Loc Ho <lho@apm.com>
-Date: Fri, 21 Jul 2017 11:24:37 -0700
-Subject: ACPI: APEI: Enable APEI multiple GHES source to share a single
- external IRQ
-
-X-Gene platforms describe multiple GHES error sources with the same
-hardware error notification type (external interrupt) and interrupt
-number.
-
-Change the GHES interrupt request to support sharing the same IRQ.
-
-This change includs contributions from Tuan Phan <tphan@apm.com>.
-
-Signed-off-by: Loc Ho <lho@apm.com>
-Acked-by: Borislav Petkov <bp@suse.de>
-Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
----
- drivers/acpi/apei/ghes.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
-index d661d45..eed09fc 100644
---- a/drivers/acpi/apei/ghes.c
-+++ b/drivers/acpi/apei/ghes.c
-@@ -1157,7 +1157,8 @@ static int ghes_probe(struct platform_device *ghes_dev)
- generic->header.source_id);
- goto err_edac_unreg;
- }
-- rc = request_irq(ghes->irq, ghes_irq_func, 0, "GHES IRQ", ghes);
-+ rc = request_irq(ghes->irq, ghes_irq_func, IRQF_SHARED,
-+ "GHES IRQ", ghes);
- if (rc) {
- pr_err(GHES_PFX "Failed to register IRQ for generic hardware error source: %d\n",
- generic->header.source_id);
---
-cgit v1.1
-
diff --git a/baseconfig/CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ b/baseconfig/CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ
new file mode 100644
index 000000000..40a287f0f
--- /dev/null
+++ b/baseconfig/CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ
@@ -0,0 +1 @@
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
diff --git a/baseconfig/CONFIG_ALTERA_MSGDMA b/baseconfig/CONFIG_ALTERA_MSGDMA
new file mode 100644
index 000000000..7a1edd837
--- /dev/null
+++ b/baseconfig/CONFIG_ALTERA_MSGDMA
@@ -0,0 +1 @@
+CONFIG_ALTERA_MSGDMA=m
diff --git a/baseconfig/CONFIG_ATH10K_USB b/baseconfig/CONFIG_ATH10K_USB
new file mode 100644
index 000000000..29021503d
--- /dev/null
+++ b/baseconfig/CONFIG_ATH10K_USB
@@ -0,0 +1 @@
+CONFIG_ATH10K_USB=m
diff --git a/baseconfig/CONFIG_BATTERY_MAX1721X b/baseconfig/CONFIG_BATTERY_MAX1721X
new file mode 100644
index 000000000..98c04567c
--- /dev/null
+++ b/baseconfig/CONFIG_BATTERY_MAX1721X
@@ -0,0 +1 @@
+# CONFIG_BATTERY_MAX1721X is not set
diff --git a/baseconfig/CONFIG_BLK_CPQ_CISS_DA b/baseconfig/CONFIG_BLK_CPQ_CISS_DA
deleted file mode 100644
index be7870097..000000000
--- a/baseconfig/CONFIG_BLK_CPQ_CISS_DA
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_BLK_CPQ_CISS_DA=m
diff --git a/baseconfig/CONFIG_BNXT_FLOWER_OFFLOAD b/baseconfig/CONFIG_BNXT_FLOWER_OFFLOAD
new file mode 100644
index 000000000..170bbf312
--- /dev/null
+++ b/baseconfig/CONFIG_BNXT_FLOWER_OFFLOAD
@@ -0,0 +1 @@
+CONFIG_BNXT_FLOWER_OFFLOAD=y
diff --git a/baseconfig/CONFIG_BPF_STREAM_PARSER b/baseconfig/CONFIG_BPF_STREAM_PARSER
new file mode 100644
index 000000000..7cf783506
--- /dev/null
+++ b/baseconfig/CONFIG_BPF_STREAM_PARSER
@@ -0,0 +1 @@
+CONFIG_BPF_STREAM_PARSER=y
diff --git a/baseconfig/CONFIG_CCS811 b/baseconfig/CONFIG_CCS811
new file mode 100644
index 000000000..931f14e2a
--- /dev/null
+++ b/baseconfig/CONFIG_CCS811
@@ -0,0 +1 @@
+# CONFIG_CCS811 is not set
diff --git a/baseconfig/CONFIG_CEC_PIN b/baseconfig/CONFIG_CEC_PIN
new file mode 100644
index 000000000..395ddfbf2
--- /dev/null
+++ b/baseconfig/CONFIG_CEC_PIN
@@ -0,0 +1 @@
+CONFIG_CEC_PIN=y
diff --git a/baseconfig/CONFIG_CISS_SCSI_TAPE b/baseconfig/CONFIG_CISS_SCSI_TAPE
deleted file mode 100644
index 2170cc840..000000000
--- a/baseconfig/CONFIG_CISS_SCSI_TAPE
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_CISS_SCSI_TAPE=y
diff --git a/baseconfig/CONFIG_CLK_HSDK b/baseconfig/CONFIG_CLK_HSDK
new file mode 100644
index 000000000..e1788bbc5
--- /dev/null
+++ b/baseconfig/CONFIG_CLK_HSDK
@@ -0,0 +1 @@
+# CONFIG_CLK_HSDK is not set
diff --git a/baseconfig/CONFIG_CLOCK_THERMAL b/baseconfig/CONFIG_CLOCK_THERMAL
new file mode 100644
index 000000000..72ca05f2c
--- /dev/null
+++ b/baseconfig/CONFIG_CLOCK_THERMAL
@@ -0,0 +1 @@
+# CONFIG_CLOCK_THERMAL is not set
diff --git a/baseconfig/CONFIG_CRYPTO_DEV_SP_CCP b/baseconfig/CONFIG_CRYPTO_DEV_SP_CCP
new file mode 100644
index 000000000..c494dcc87
--- /dev/null
+++ b/baseconfig/CONFIG_CRYPTO_DEV_SP_CCP
@@ -0,0 +1 @@
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
diff --git a/baseconfig/CONFIG_DEVFREQ_THERMAL b/baseconfig/CONFIG_DEVFREQ_THERMAL
new file mode 100644
index 000000000..5b90f9082
--- /dev/null
+++ b/baseconfig/CONFIG_DEVFREQ_THERMAL
@@ -0,0 +1 @@
+# CONFIG_DEVFREQ_THERMAL is not set
diff --git a/baseconfig/CONFIG_DP83867_PHY b/baseconfig/CONFIG_DP83867_PHY
index 5ba3d57bd..2bb3289c3 100644
--- a/baseconfig/CONFIG_DP83867_PHY
+++ b/baseconfig/CONFIG_DP83867_PHY
@@ -1 +1 @@
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
diff --git a/baseconfig/CONFIG_DVB_DDBRIDGE_MSIENABLE b/baseconfig/CONFIG_DVB_DDBRIDGE_MSIENABLE
new file mode 100644
index 000000000..4f0814b60
--- /dev/null
+++ b/baseconfig/CONFIG_DVB_DDBRIDGE_MSIENABLE
@@ -0,0 +1 @@
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
diff --git a/baseconfig/CONFIG_GPIO_BD9571MWV b/baseconfig/CONFIG_GPIO_BD9571MWV
new file mode 100644
index 000000000..0cdd67b34
--- /dev/null
+++ b/baseconfig/CONFIG_GPIO_BD9571MWV
@@ -0,0 +1 @@
+CONFIG_GPIO_BD9571MWV=m
diff --git a/baseconfig/CONFIG_GPIO_TPS68470 b/baseconfig/CONFIG_GPIO_TPS68470
new file mode 100644
index 000000000..3176e956e
--- /dev/null
+++ b/baseconfig/CONFIG_GPIO_TPS68470
@@ -0,0 +1 @@
+CONFIG_GPIO_TPS68470=y
diff --git a/baseconfig/CONFIG_INFINIBAND_EXP_USER_ACCESS b/baseconfig/CONFIG_INFINIBAND_EXP_USER_ACCESS
new file mode 100644
index 000000000..478415c11
--- /dev/null
+++ b/baseconfig/CONFIG_INFINIBAND_EXP_USER_ACCESS
@@ -0,0 +1 @@
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
diff --git a/baseconfig/CONFIG_INPUT_PWM_VIBRA b/baseconfig/CONFIG_INPUT_PWM_VIBRA
new file mode 100644
index 000000000..39a51b490
--- /dev/null
+++ b/baseconfig/CONFIG_INPUT_PWM_VIBRA
@@ -0,0 +1 @@
+# CONFIG_INPUT_PWM_VIBRA is not set
diff --git a/baseconfig/CONFIG_INPUT_RK805_PWRKEY b/baseconfig/CONFIG_INPUT_RK805_PWRKEY
new file mode 100644
index 000000000..4ce96f558
--- /dev/null
+++ b/baseconfig/CONFIG_INPUT_RK805_PWRKEY
@@ -0,0 +1 @@
+CONFIG_INPUT_RK805_PWRKEY=m
diff --git a/baseconfig/CONFIG_IP_DCCP b/baseconfig/CONFIG_IP_DCCP
index 26ba41376..6ecb43a3e 100644
--- a/baseconfig/CONFIG_IP_DCCP
+++ b/baseconfig/CONFIG_IP_DCCP
@@ -1 +1 @@
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
diff --git a/baseconfig/CONFIG_IR_GPIO_TX b/baseconfig/CONFIG_IR_GPIO_TX
new file mode 100644
index 000000000..4b6b484bb
--- /dev/null
+++ b/baseconfig/CONFIG_IR_GPIO_TX
@@ -0,0 +1 @@
+CONFIG_IR_GPIO_TX=m
diff --git a/baseconfig/CONFIG_IR_PWM_TX b/baseconfig/CONFIG_IR_PWM_TX
new file mode 100644
index 000000000..4dfd41870
--- /dev/null
+++ b/baseconfig/CONFIG_IR_PWM_TX
@@ -0,0 +1 @@
+CONFIG_IR_PWM_TX=m
diff --git a/baseconfig/CONFIG_LEDS_AS3645A b/baseconfig/CONFIG_LEDS_AS3645A
new file mode 100644
index 000000000..25d6f9f10
--- /dev/null
+++ b/baseconfig/CONFIG_LEDS_AS3645A
@@ -0,0 +1 @@
+CONFIG_LEDS_AS3645A=m
diff --git a/baseconfig/CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT b/baseconfig/CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT
new file mode 100644
index 000000000..336528547
--- /dev/null
+++ b/baseconfig/CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT
@@ -0,0 +1 @@
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
diff --git a/baseconfig/CONFIG_LTC2471 b/baseconfig/CONFIG_LTC2471
new file mode 100644
index 000000000..5d272ac29
--- /dev/null
+++ b/baseconfig/CONFIG_LTC2471
@@ -0,0 +1 @@
+# CONFIG_LTC2471 is not set
diff --git a/baseconfig/CONFIG_MDIO_I2C b/baseconfig/CONFIG_MDIO_I2C
new file mode 100644
index 000000000..df7d9e025
--- /dev/null
+++ b/baseconfig/CONFIG_MDIO_I2C
@@ -0,0 +1 @@
+CONFIG_MDIO_I2C=m
diff --git a/baseconfig/CONFIG_MFD_BD9571MWV b/baseconfig/CONFIG_MFD_BD9571MWV
new file mode 100644
index 000000000..28d27a0e5
--- /dev/null
+++ b/baseconfig/CONFIG_MFD_BD9571MWV
@@ -0,0 +1 @@
+CONFIG_MFD_BD9571MWV=m
diff --git a/baseconfig/CONFIG_MFD_TPS68470 b/baseconfig/CONFIG_MFD_TPS68470
new file mode 100644
index 000000000..10fd40465
--- /dev/null
+++ b/baseconfig/CONFIG_MFD_TPS68470
@@ -0,0 +1 @@
+CONFIG_MFD_TPS68470=y
diff --git a/baseconfig/CONFIG_MLX5_ESWITCH b/baseconfig/CONFIG_MLX5_ESWITCH
new file mode 100644
index 000000000..8a69e0671
--- /dev/null
+++ b/baseconfig/CONFIG_MLX5_ESWITCH
@@ -0,0 +1 @@
+CONFIG_MLX5_ESWITCH=y
diff --git a/baseconfig/CONFIG_MLX5_MPFS b/baseconfig/CONFIG_MLX5_MPFS
new file mode 100644
index 000000000..6799ed484
--- /dev/null
+++ b/baseconfig/CONFIG_MLX5_MPFS
@@ -0,0 +1 @@
+CONFIG_MLX5_MPFS=y
diff --git a/baseconfig/CONFIG_MMC_BLOCK_BOUNCE b/baseconfig/CONFIG_MMC_BLOCK_BOUNCE
deleted file mode 100644
index 4470e8359..000000000
--- a/baseconfig/CONFIG_MMC_BLOCK_BOUNCE
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_MMC_BLOCK_BOUNCE=y
diff --git a/baseconfig/CONFIG_NET_NSH b/baseconfig/CONFIG_NET_NSH
new file mode 100644
index 000000000..2a9a24e04
--- /dev/null
+++ b/baseconfig/CONFIG_NET_NSH
@@ -0,0 +1 @@
+CONFIG_NET_NSH=m
diff --git a/baseconfig/CONFIG_NET_VENDOR_HUAWEI b/baseconfig/CONFIG_NET_VENDOR_HUAWEI
new file mode 100644
index 000000000..ae01b9160
--- /dev/null
+++ b/baseconfig/CONFIG_NET_VENDOR_HUAWEI
@@ -0,0 +1 @@
+# CONFIG_NET_VENDOR_HUAWEI is not set
diff --git a/baseconfig/CONFIG_NFT_FIB_NETDEV b/baseconfig/CONFIG_NFT_FIB_NETDEV
new file mode 100644
index 000000000..273bfeb6a
--- /dev/null
+++ b/baseconfig/CONFIG_NFT_FIB_NETDEV
@@ -0,0 +1 @@
+CONFIG_NFT_FIB_NETDEV=m
diff --git a/baseconfig/CONFIG_PHYLINK b/baseconfig/CONFIG_PHYLINK
new file mode 100644
index 000000000..cc1e23e0b
--- /dev/null
+++ b/baseconfig/CONFIG_PHYLINK
@@ -0,0 +1 @@
+CONFIG_PHYLINK=m
diff --git a/baseconfig/CONFIG_PHY_MVEBU_CP110_COMPHY b/baseconfig/CONFIG_PHY_MVEBU_CP110_COMPHY
new file mode 100644
index 000000000..8c104689f
--- /dev/null
+++ b/baseconfig/CONFIG_PHY_MVEBU_CP110_COMPHY
@@ -0,0 +1 @@
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
diff --git a/baseconfig/CONFIG_PI433 b/baseconfig/CONFIG_PI433
new file mode 100644
index 000000000..b275e1e6a
--- /dev/null
+++ b/baseconfig/CONFIG_PI433
@@ -0,0 +1 @@
+# CONFIG_PI433 is not set
diff --git a/baseconfig/CONFIG_PINCTRL_RK805 b/baseconfig/CONFIG_PINCTRL_RK805
new file mode 100644
index 000000000..47b4fd855
--- /dev/null
+++ b/baseconfig/CONFIG_PINCTRL_RK805
@@ -0,0 +1 @@
+CONFIG_PINCTRL_RK805=m
diff --git a/baseconfig/CONFIG_PINCTRL_SPRD b/baseconfig/CONFIG_PINCTRL_SPRD
new file mode 100644
index 000000000..cffa73544
--- /dev/null
+++ b/baseconfig/CONFIG_PINCTRL_SPRD
@@ -0,0 +1 @@
+# CONFIG_PINCTRL_SPRD is not set
diff --git a/baseconfig/CONFIG_PINCTRL_SPRD_SC9860 b/baseconfig/CONFIG_PINCTRL_SPRD_SC9860
new file mode 100644
index 000000000..f9b405f96
--- /dev/null
+++ b/baseconfig/CONFIG_PINCTRL_SPRD_SC9860
@@ -0,0 +1 @@
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
diff --git a/baseconfig/CONFIG_PM_OPP b/baseconfig/CONFIG_PM_OPP
index a77bd27f8..bbe2b56ba 100644
--- a/baseconfig/CONFIG_PM_OPP
+++ b/baseconfig/CONFIG_PM_OPP
@@ -1 +1 @@
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
diff --git a/baseconfig/CONFIG_QCOM_GLINK_SSR b/baseconfig/CONFIG_QCOM_GLINK_SSR
new file mode 100644
index 000000000..1c67b32f7
--- /dev/null
+++ b/baseconfig/CONFIG_QCOM_GLINK_SSR
@@ -0,0 +1 @@
+# CONFIG_QCOM_GLINK_SSR is not set
diff --git a/baseconfig/CONFIG_R8822BE b/baseconfig/CONFIG_R8822BE
new file mode 100644
index 000000000..2f7c08787
--- /dev/null
+++ b/baseconfig/CONFIG_R8822BE
@@ -0,0 +1 @@
+CONFIG_R8822BE=m
diff --git a/baseconfig/CONFIG_REGULATOR_BD9571MWV b/baseconfig/CONFIG_REGULATOR_BD9571MWV
new file mode 100644
index 000000000..3b0acb786
--- /dev/null
+++ b/baseconfig/CONFIG_REGULATOR_BD9571MWV
@@ -0,0 +1 @@
+CONFIG_REGULATOR_BD9571MWV=m
diff --git a/baseconfig/CONFIG_RESET_ATTACK_MITIGATION b/baseconfig/CONFIG_RESET_ATTACK_MITIGATION
new file mode 100644
index 000000000..8202a7865
--- /dev/null
+++ b/baseconfig/CONFIG_RESET_ATTACK_MITIGATION
@@ -0,0 +1 @@
+CONFIG_RESET_ATTACK_MITIGATION=y
diff --git a/baseconfig/CONFIG_RESET_HSDK_V1 b/baseconfig/CONFIG_RESET_HSDK_V1
new file mode 100644
index 000000000..4c2b97d79
--- /dev/null
+++ b/baseconfig/CONFIG_RESET_HSDK_V1
@@ -0,0 +1 @@
+# CONFIG_RESET_HSDK_V1 is not set
diff --git a/baseconfig/CONFIG_RMNET b/baseconfig/CONFIG_RMNET
new file mode 100644
index 000000000..5e8c115b5
--- /dev/null
+++ b/baseconfig/CONFIG_RMNET
@@ -0,0 +1 @@
+# CONFIG_RMNET is not set
diff --git a/baseconfig/CONFIG_ROCKCHIP_PHY b/baseconfig/CONFIG_ROCKCHIP_PHY
new file mode 100644
index 000000000..4ca60873a
--- /dev/null
+++ b/baseconfig/CONFIG_ROCKCHIP_PHY
@@ -0,0 +1 @@
+# CONFIG_ROCKCHIP_PHY is not set
diff --git a/baseconfig/CONFIG_RPMSG_QCOM_GLINK_SMEM b/baseconfig/CONFIG_RPMSG_QCOM_GLINK_SMEM
new file mode 100644
index 000000000..c2c0a0c78
--- /dev/null
+++ b/baseconfig/CONFIG_RPMSG_QCOM_GLINK_SMEM
@@ -0,0 +1 @@
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
diff --git a/baseconfig/CONFIG_SENSORS_IBM_CFFPS b/baseconfig/CONFIG_SENSORS_IBM_CFFPS
new file mode 100644
index 000000000..a217d973e
--- /dev/null
+++ b/baseconfig/CONFIG_SENSORS_IBM_CFFPS
@@ -0,0 +1 @@
+# CONFIG_SENSORS_IBM_CFFPS is not set
diff --git a/baseconfig/CONFIG_SENSORS_TPS53679 b/baseconfig/CONFIG_SENSORS_TPS53679
new file mode 100644
index 000000000..461a703df
--- /dev/null
+++ b/baseconfig/CONFIG_SENSORS_TPS53679
@@ -0,0 +1 @@
+CONFIG_SENSORS_TPS53679=m
diff --git a/baseconfig/CONFIG_SERIO_GPIO_PS2 b/baseconfig/CONFIG_SERIO_GPIO_PS2
new file mode 100644
index 000000000..22c1adbfb
--- /dev/null
+++ b/baseconfig/CONFIG_SERIO_GPIO_PS2
@@ -0,0 +1 @@
+# CONFIG_SERIO_GPIO_PS2 is not set
diff --git a/baseconfig/CONFIG_SFP b/baseconfig/CONFIG_SFP
new file mode 100644
index 000000000..db57db12e
--- /dev/null
+++ b/baseconfig/CONFIG_SFP
@@ -0,0 +1 @@
+CONFIG_SFP=m
diff --git a/baseconfig/CONFIG_SLAB_FREELIST_HARDENED b/baseconfig/CONFIG_SLAB_FREELIST_HARDENED
new file mode 100644
index 000000000..52602d279
--- /dev/null
+++ b/baseconfig/CONFIG_SLAB_FREELIST_HARDENED
@@ -0,0 +1 @@
+CONFIG_SLAB_FREELIST_HARDENED=y
diff --git a/baseconfig/CONFIG_SND_BCD2000 b/baseconfig/CONFIG_SND_BCD2000
index b56c9162f..0a60c490b 100644
--- a/baseconfig/CONFIG_SND_BCD2000
+++ b/baseconfig/CONFIG_SND_BCD2000
@@ -1 +1 @@
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
diff --git a/baseconfig/CONFIG_SND_HDA_POWER_SAVE_DEFAULT b/baseconfig/CONFIG_SND_HDA_POWER_SAVE_DEFAULT
index ce02ec981..ba018972d 100644
--- a/baseconfig/CONFIG_SND_HDA_POWER_SAVE_DEFAULT
+++ b/baseconfig/CONFIG_SND_HDA_POWER_SAVE_DEFAULT
@@ -1 +1 @@
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
diff --git a/baseconfig/CONFIG_SND_SOC_CS43130 b/baseconfig/CONFIG_SND_SOC_CS43130
new file mode 100644
index 000000000..3fad16f6d
--- /dev/null
+++ b/baseconfig/CONFIG_SND_SOC_CS43130
@@ -0,0 +1 @@
+CONFIG_SND_SOC_CS43130=m
diff --git a/baseconfig/CONFIG_SND_SOC_WM8524 b/baseconfig/CONFIG_SND_SOC_WM8524
new file mode 100644
index 000000000..1eb33d7e5
--- /dev/null
+++ b/baseconfig/CONFIG_SND_SOC_WM8524
@@ -0,0 +1 @@
+CONFIG_SND_SOC_WM8524=m
diff --git a/baseconfig/CONFIG_SQUASHFS_ZSTD b/baseconfig/CONFIG_SQUASHFS_ZSTD
new file mode 100644
index 000000000..023fb21e0
--- /dev/null
+++ b/baseconfig/CONFIG_SQUASHFS_ZSTD
@@ -0,0 +1 @@
+CONFIG_SQUASHFS_ZSTD=y
diff --git a/baseconfig/CONFIG_STRING_SELFTEST b/baseconfig/CONFIG_STRING_SELFTEST
new file mode 100644
index 000000000..dbff6d7fa
--- /dev/null
+++ b/baseconfig/CONFIG_STRING_SELFTEST
@@ -0,0 +1 @@
+# CONFIG_STRING_SELFTEST is not set
diff --git a/baseconfig/CONFIG_W1_SLAVE_DS2805 b/baseconfig/CONFIG_W1_SLAVE_DS2805
new file mode 100644
index 000000000..eddd3bbb3
--- /dev/null
+++ b/baseconfig/CONFIG_W1_SLAVE_DS2805
@@ -0,0 +1 @@
+CONFIG_W1_SLAVE_DS2805=m
diff --git a/baseconfig/CONFIG_WIL6210_DEBUGFS b/baseconfig/CONFIG_WIL6210_DEBUGFS
new file mode 100644
index 000000000..f0f5fe7cf
--- /dev/null
+++ b/baseconfig/CONFIG_WIL6210_DEBUGFS
@@ -0,0 +1 @@
+CONFIG_WIL6210_DEBUGFS=y
diff --git a/baseconfig/CONFIG_ZRAM_WRITEBACK b/baseconfig/CONFIG_ZRAM_WRITEBACK
new file mode 100644
index 000000000..9a566b71c
--- /dev/null
+++ b/baseconfig/CONFIG_ZRAM_WRITEBACK
@@ -0,0 +1 @@
+# CONFIG_ZRAM_WRITEBACK is not set
diff --git a/baseconfig/arm/CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG b/baseconfig/arm/CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG
new file mode 100644
index 000000000..62fd0b85a
--- /dev/null
+++ b/baseconfig/arm/CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG
@@ -0,0 +1 @@
+CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y
diff --git a/baseconfig/arm/CONFIG_CRYPTO_SHA256_ARM64 b/baseconfig/arm/CONFIG_CRYPTO_SHA256_ARM64
index ba32f8501..3aa7dacbf 100644
--- a/baseconfig/arm/CONFIG_CRYPTO_SHA256_ARM64
+++ b/baseconfig/arm/CONFIG_CRYPTO_SHA256_ARM64
@@ -1 +1 @@
-CONFIG_CRYPTO_SHA256_ARM64=m
+CONFIG_CRYPTO_SHA256_ARM64=y
diff --git a/baseconfig/arm/CONFIG_DRM_DW_HDMI_CEC b/baseconfig/arm/CONFIG_DRM_DW_HDMI_CEC
new file mode 100644
index 000000000..a3e178eae
--- /dev/null
+++ b/baseconfig/arm/CONFIG_DRM_DW_HDMI_CEC
@@ -0,0 +1 @@
+CONFIG_DRM_DW_HDMI_CEC=m
diff --git a/baseconfig/arm/CONFIG_DRM_VC4_HDMI_CEC b/baseconfig/arm/CONFIG_DRM_VC4_HDMI_CEC
new file mode 100644
index 000000000..da0132c1f
--- /dev/null
+++ b/baseconfig/arm/CONFIG_DRM_VC4_HDMI_CEC
@@ -0,0 +1 @@
+CONFIG_DRM_VC4_HDMI_CEC=y
diff --git a/baseconfig/arm/CONFIG_EXTCON_USBC_CROS_EC b/baseconfig/arm/CONFIG_EXTCON_USBC_CROS_EC
new file mode 100644
index 000000000..831bc6ea7
--- /dev/null
+++ b/baseconfig/arm/CONFIG_EXTCON_USBC_CROS_EC
@@ -0,0 +1 @@
+CONFIG_EXTCON_USBC_CROS_EC=m
diff --git a/baseconfig/arm/CONFIG_HW_RANDOM_IMX_RNGC b/baseconfig/arm/CONFIG_HW_RANDOM_IMX_RNGC
new file mode 100644
index 000000000..e7b39a2c7
--- /dev/null
+++ b/baseconfig/arm/CONFIG_HW_RANDOM_IMX_RNGC
@@ -0,0 +1 @@
+CONFIG_HW_RANDOM_IMX_RNGC=m
diff --git a/baseconfig/arm/CONFIG_I2C_DESIGNWARE_CORE b/baseconfig/arm/CONFIG_I2C_DESIGNWARE_CORE
index 661ffb01a..f9cdc633b 100644
--- a/baseconfig/arm/CONFIG_I2C_DESIGNWARE_CORE
+++ b/baseconfig/arm/CONFIG_I2C_DESIGNWARE_CORE
@@ -1 +1 @@
-CONFIG_I2C_DESIGNWARE_CORE=m
+CONFIG_I2C_DESIGNWARE_CORE=y
diff --git a/baseconfig/arm/CONFIG_I2C_DESIGNWARE_PLATFORM b/baseconfig/arm/CONFIG_I2C_DESIGNWARE_PLATFORM
index cec2f8633..3d50a3e8a 100644
--- a/baseconfig/arm/CONFIG_I2C_DESIGNWARE_PLATFORM
+++ b/baseconfig/arm/CONFIG_I2C_DESIGNWARE_PLATFORM
@@ -1 +1 @@
-CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
diff --git a/baseconfig/arm/CONFIG_MESON_GX_SOCINFO b/baseconfig/arm/CONFIG_MESON_GX_SOCINFO
new file mode 100644
index 000000000..ce5ba6f4a
--- /dev/null
+++ b/baseconfig/arm/CONFIG_MESON_GX_SOCINFO
@@ -0,0 +1 @@
+CONFIG_MESON_GX_SOCINFO=y
diff --git a/baseconfig/arm/armv7/CONFIG_MTD_NAND_PXA3xx b/baseconfig/arm/CONFIG_MTD_NAND_PXA3xx
index 584b57ea1..584b57ea1 100644
--- a/baseconfig/arm/armv7/CONFIG_MTD_NAND_PXA3xx
+++ b/baseconfig/arm/CONFIG_MTD_NAND_PXA3xx
diff --git a/baseconfig/arm/CONFIG_ROCKCHIP_PHY b/baseconfig/arm/CONFIG_ROCKCHIP_PHY
new file mode 100644
index 000000000..e49faf8f9
--- /dev/null
+++ b/baseconfig/arm/CONFIG_ROCKCHIP_PHY
@@ -0,0 +1 @@
+CONFIG_ROCKCHIP_PHY=m
diff --git a/baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_AC97 b/baseconfig/arm/CONFIG_SND_SOC_TEGRA20_AC97
index fa8e0e012..fa8e0e012 100644
--- a/baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_AC97
+++ b/baseconfig/arm/CONFIG_SND_SOC_TEGRA20_AC97
diff --git a/baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_DAS b/baseconfig/arm/CONFIG_SND_SOC_TEGRA20_DAS
index 82205dc43..82205dc43 100644
--- a/baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_DAS
+++ b/baseconfig/arm/CONFIG_SND_SOC_TEGRA20_DAS
diff --git a/baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA20_I2S b/baseconfig/arm/CONFIG_SND_SOC_TEGRA20_I2S
index abfe22877..abfe22877 100644
--- a/baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA20_I2S
+++ b/baseconfig/arm/CONFIG_SND_SOC_TEGRA20_I2S
diff --git a/baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_SPDIF b/baseconfig/arm/CONFIG_SND_SOC_TEGRA20_SPDIF
index 0f05cfffa..0f05cfffa 100644
--- a/baseconfig/arm/armv7/armv7/CONFIG_SND_SOC_TEGRA20_SPDIF
+++ b/baseconfig/arm/CONFIG_SND_SOC_TEGRA20_SPDIF
diff --git a/baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA30_AHUB b/baseconfig/arm/CONFIG_SND_SOC_TEGRA30_AHUB
index d5632de51..d5632de51 100644
--- a/baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA30_AHUB
+++ b/baseconfig/arm/CONFIG_SND_SOC_TEGRA30_AHUB
diff --git a/baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA30_I2S b/baseconfig/arm/CONFIG_SND_SOC_TEGRA30_I2S
index c7fabc77b..c7fabc77b 100644
--- a/baseconfig/arm/armv7/CONFIG_SND_SOC_TEGRA30_I2S
+++ b/baseconfig/arm/CONFIG_SND_SOC_TEGRA30_I2S
diff --git a/baseconfig/arm/CONFIG_TINYDRM_REPAPER b/baseconfig/arm/CONFIG_TINYDRM_REPAPER
new file mode 100644
index 000000000..c4d2874fa
--- /dev/null
+++ b/baseconfig/arm/CONFIG_TINYDRM_REPAPER
@@ -0,0 +1 @@
+# CONFIG_TINYDRM_REPAPER is not set
diff --git a/baseconfig/arm/CONFIG_TINYDRM_ST7586 b/baseconfig/arm/CONFIG_TINYDRM_ST7586
new file mode 100644
index 000000000..2b9e29f63
--- /dev/null
+++ b/baseconfig/arm/CONFIG_TINYDRM_ST7586
@@ -0,0 +1 @@
+# CONFIG_TINYDRM_ST7586 is not set
diff --git a/baseconfig/arm/CONFIG_VIDEO_MESON_AO_CEC b/baseconfig/arm/CONFIG_VIDEO_MESON_AO_CEC
new file mode 100644
index 000000000..499a44076
--- /dev/null
+++ b/baseconfig/arm/CONFIG_VIDEO_MESON_AO_CEC
@@ -0,0 +1 @@
+CONFIG_VIDEO_MESON_AO_CEC=m
diff --git a/baseconfig/arm/arm64/CONFIG_ARM64_PMEM b/baseconfig/arm/arm64/CONFIG_ARM64_PMEM
new file mode 100644
index 000000000..9325600d1
--- /dev/null
+++ b/baseconfig/arm/arm64/CONFIG_ARM64_PMEM
@@ -0,0 +1 @@
+# CONFIG_ARM64_PMEM is not set
diff --git a/baseconfig/arm/arm64/CONFIG_CRYPTO_AES_ARM64 b/baseconfig/arm/arm64/CONFIG_CRYPTO_AES_ARM64
index 113c72b8c..dd0ae2c1d 100644
--- a/baseconfig/arm/arm64/CONFIG_CRYPTO_AES_ARM64
+++ b/baseconfig/arm/arm64/CONFIG_CRYPTO_AES_ARM64
@@ -1 +1 @@
-CONFIG_CRYPTO_AES_ARM64=m
+CONFIG_CRYPTO_AES_ARM64=y
diff --git a/baseconfig/arm/arm64/CONFIG_GPIO_THUNDERX b/baseconfig/arm/arm64/CONFIG_GPIO_THUNDERX
new file mode 100644
index 000000000..6895cc045
--- /dev/null
+++ b/baseconfig/arm/arm64/CONFIG_GPIO_THUNDERX
@@ -0,0 +1 @@
+CONFIG_GPIO_THUNDERX=m
diff --git a/baseconfig/arm/arm64/CONFIG_MMC_QCOM_DML b/baseconfig/arm/arm64/CONFIG_MMC_QCOM_DML
index 059d0d4f2..48facf367 100644
--- a/baseconfig/arm/arm64/CONFIG_MMC_QCOM_DML
+++ b/baseconfig/arm/arm64/CONFIG_MMC_QCOM_DML
@@ -1 +1 @@
-CONFIG_MMC_QCOM_DML=m
+CONFIG_MMC_QCOM_DML=y
diff --git a/baseconfig/arm/arm64/CONFIG_PHY_MVEBU_CP110_COMPHY b/baseconfig/arm/arm64/CONFIG_PHY_MVEBU_CP110_COMPHY
new file mode 100644
index 000000000..1902b0c1f
--- /dev/null
+++ b/baseconfig/arm/arm64/CONFIG_PHY_MVEBU_CP110_COMPHY
@@ -0,0 +1 @@
+CONFIG_PHY_MVEBU_CP110_COMPHY=m
diff --git a/baseconfig/arm/arm64/CONFIG_USB_CONFIGFS_F_LB_SS b/baseconfig/arm/arm64/CONFIG_USB_CONFIGFS_F_LB_SS
new file mode 100644
index 000000000..213edb5a1
--- /dev/null
+++ b/baseconfig/arm/arm64/CONFIG_USB_CONFIGFS_F_LB_SS
@@ -0,0 +1 @@
+# CONFIG_USB_CONFIGFS_F_LB_SS is not set
diff --git a/baseconfig/arm/arm64/CONFIG_VIDEO_QCOM_CAMSS b/baseconfig/arm/arm64/CONFIG_VIDEO_QCOM_CAMSS
new file mode 100644
index 000000000..5e2512c4c
--- /dev/null
+++ b/baseconfig/arm/arm64/CONFIG_VIDEO_QCOM_CAMSS
@@ -0,0 +1 @@
+CONFIG_VIDEO_QCOM_CAMSS=m
diff --git a/baseconfig/arm/arm64/CONFIG_VMAP_STACK b/baseconfig/arm/arm64/CONFIG_VMAP_STACK
new file mode 100644
index 000000000..8bd986875
--- /dev/null
+++ b/baseconfig/arm/arm64/CONFIG_VMAP_STACK
@@ -0,0 +1 @@
+CONFIG_VMAP_STACK=y
diff --git a/baseconfig/arm/CONFIG_DRM_SUN4I_BACKEND b/baseconfig/arm/armv7/CONFIG_DRM_SUN4I_BACKEND
index c1d1d2121..c1d1d2121 100644
--- a/baseconfig/arm/CONFIG_DRM_SUN4I_BACKEND
+++ b/baseconfig/arm/armv7/CONFIG_DRM_SUN4I_BACKEND
diff --git a/baseconfig/arm/armv7/CONFIG_DRM_SUN4I_HDMI_CEC b/baseconfig/arm/armv7/CONFIG_DRM_SUN4I_HDMI_CEC
new file mode 100644
index 000000000..8ba73409c
--- /dev/null
+++ b/baseconfig/arm/armv7/CONFIG_DRM_SUN4I_HDMI_CEC
@@ -0,0 +1 @@
+# CONFIG_DRM_SUN4I_HDMI_CEC is not set
diff --git a/baseconfig/arm/armv7/CONFIG_MMC_QCOM_DML b/baseconfig/arm/armv7/CONFIG_MMC_QCOM_DML
deleted file mode 100644
index 059d0d4f2..000000000
--- a/baseconfig/arm/armv7/CONFIG_MMC_QCOM_DML
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_MMC_QCOM_DML=m
diff --git a/baseconfig/arm/armv7/CONFIG_PWM_TIECAP b/baseconfig/arm/armv7/CONFIG_PWM_TIECAP
new file mode 100644
index 000000000..84f1e9b57
--- /dev/null
+++ b/baseconfig/arm/armv7/CONFIG_PWM_TIECAP
@@ -0,0 +1 @@
+CONFIG_PWM_TIECAP=m
diff --git a/baseconfig/arm/armv7/CONFIG_RTC_DRV_ARMADA38X b/baseconfig/arm/armv7/CONFIG_RTC_DRV_ARMADA38X
deleted file mode 100644
index 7dcdafcbb..000000000
--- a/baseconfig/arm/armv7/CONFIG_RTC_DRV_ARMADA38X
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_RTC_DRV_ARMADA38X=m
diff --git a/baseconfig/arm/armv7/CONFIG_SUN4I_A10_CCU b/baseconfig/arm/armv7/CONFIG_SUN4I_A10_CCU
new file mode 100644
index 000000000..3b2ba681a
--- /dev/null
+++ b/baseconfig/arm/armv7/CONFIG_SUN4I_A10_CCU
@@ -0,0 +1 @@
+CONFIG_SUN4I_A10_CCU=y
diff --git a/baseconfig/arm/armv7/CONFIG_SUN8I_R40_CCU b/baseconfig/arm/armv7/CONFIG_SUN8I_R40_CCU
new file mode 100644
index 000000000..149900927
--- /dev/null
+++ b/baseconfig/arm/armv7/CONFIG_SUN8I_R40_CCU
@@ -0,0 +1 @@
+CONFIG_SUN8I_R40_CCU=y
diff --git a/baseconfig/arm/armv7/armv7/CONFIG_BATTERY_BQ27XXX_HDQ b/baseconfig/arm/armv7/armv7/CONFIG_BATTERY_BQ27XXX_HDQ
new file mode 100644
index 000000000..2be078588
--- /dev/null
+++ b/baseconfig/arm/armv7/armv7/CONFIG_BATTERY_BQ27XXX_HDQ
@@ -0,0 +1 @@
+CONFIG_BATTERY_BQ27XXX_HDQ=m
diff --git a/baseconfig/arm/armv7/armv7/CONFIG_IMX_REMOTEPROC b/baseconfig/arm/armv7/armv7/CONFIG_IMX_REMOTEPROC
new file mode 100644
index 000000000..53983d8af
--- /dev/null
+++ b/baseconfig/arm/armv7/armv7/CONFIG_IMX_REMOTEPROC
@@ -0,0 +1 @@
+CONFIG_IMX_REMOTEPROC=m
diff --git a/baseconfig/arm/armv7/armv7/CONFIG_MMC_QCOM_DML b/baseconfig/arm/armv7/armv7/CONFIG_MMC_QCOM_DML
index 059d0d4f2..48facf367 100644
--- a/baseconfig/arm/armv7/armv7/CONFIG_MMC_QCOM_DML
+++ b/baseconfig/arm/armv7/armv7/CONFIG_MMC_QCOM_DML
@@ -1 +1 @@
-CONFIG_MMC_QCOM_DML=m
+CONFIG_MMC_QCOM_DML=y
diff --git a/baseconfig/arm/armv7/armv7/CONFIG_VIDEO_QCOM_CAMSS b/baseconfig/arm/armv7/armv7/CONFIG_VIDEO_QCOM_CAMSS
new file mode 100644
index 000000000..5e2512c4c
--- /dev/null
+++ b/baseconfig/arm/armv7/armv7/CONFIG_VIDEO_QCOM_CAMSS
@@ -0,0 +1 @@
+CONFIG_VIDEO_QCOM_CAMSS=m
diff --git a/baseconfig/arm/armv7/lpae/CONFIG_SND_SOC_TEGRA20_DAS b/baseconfig/arm/armv7/lpae/CONFIG_SND_SOC_TEGRA20_DAS
deleted file mode 100644
index 71a38a48c..000000000
--- a/baseconfig/arm/armv7/lpae/CONFIG_SND_SOC_TEGRA20_DAS
+++ /dev/null
@@ -1 +0,0 @@
-# CONFIG_SND_SOC_TEGRA20_DAS is not set
diff --git a/baseconfig/powerpc/CONFIG_PPC_MEMTRACE b/baseconfig/powerpc/CONFIG_PPC_MEMTRACE
new file mode 100644
index 000000000..c783714d8
--- /dev/null
+++ b/baseconfig/powerpc/CONFIG_PPC_MEMTRACE
@@ -0,0 +1 @@
+# CONFIG_PPC_MEMTRACE is not set
diff --git a/baseconfig/powerpc/CONFIG_PPC_VAS b/baseconfig/powerpc/CONFIG_PPC_VAS
new file mode 100644
index 000000000..ec767da00
--- /dev/null
+++ b/baseconfig/powerpc/CONFIG_PPC_VAS
@@ -0,0 +1 @@
+CONFIG_PPC_VAS=y
diff --git a/baseconfig/powerpc/CONFIG_SENSORS_IBM_CFFPS b/baseconfig/powerpc/CONFIG_SENSORS_IBM_CFFPS
new file mode 100644
index 000000000..31f260384
--- /dev/null
+++ b/baseconfig/powerpc/CONFIG_SENSORS_IBM_CFFPS
@@ -0,0 +1 @@
+CONFIG_SENSORS_IBM_CFFPS=m
diff --git a/baseconfig/s390x/CONFIG_BLK_CPQ_CISS_DA b/baseconfig/s390x/CONFIG_BLK_CPQ_CISS_DA
deleted file mode 100644
index 2e6c723ac..000000000
--- a/baseconfig/s390x/CONFIG_BLK_CPQ_CISS_DA
+++ /dev/null
@@ -1 +0,0 @@
-# CONFIG_BLK_CPQ_CISS_DA is not set
diff --git a/baseconfig/s390x/CONFIG_CMA b/baseconfig/s390x/CONFIG_CMA
new file mode 100644
index 000000000..309c9e771
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_CMA
@@ -0,0 +1 @@
+CONFIG_CMA=y
diff --git a/baseconfig/s390x/CONFIG_CMA_AREAS b/baseconfig/s390x/CONFIG_CMA_AREAS
new file mode 100644
index 000000000..5474a48e9
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_CMA_AREAS
@@ -0,0 +1 @@
+CONFIG_CMA_AREAS=7
diff --git a/baseconfig/s390x/CONFIG_CMA_DEBUG b/baseconfig/s390x/CONFIG_CMA_DEBUG
new file mode 100644
index 000000000..64ff80c56
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_CMA_DEBUG
@@ -0,0 +1 @@
+# CONFIG_CMA_DEBUG is not set
diff --git a/baseconfig/s390x/CONFIG_CMA_DEBUGFS b/baseconfig/s390x/CONFIG_CMA_DEBUGFS
new file mode 100644
index 000000000..fba89903a
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_CMA_DEBUGFS
@@ -0,0 +1 @@
+# CONFIG_CMA_DEBUGFS is not set
diff --git a/baseconfig/s390x/CONFIG_MFD_BD9571MWV b/baseconfig/s390x/CONFIG_MFD_BD9571MWV
new file mode 100644
index 000000000..d321ad3c6
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_MFD_BD9571MWV
@@ -0,0 +1 @@
+# CONFIG_MFD_BD9571MWV is not set
diff --git a/baseconfig/s390x/CONFIG_MFD_RTSX_USB b/baseconfig/s390x/CONFIG_MFD_RTSX_USB
new file mode 100644
index 000000000..b6efa65e7
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_MFD_RTSX_USB
@@ -0,0 +1 @@
+# CONFIG_MFD_RTSX_USB is not set
diff --git a/baseconfig/s390x/CONFIG_MFD_TPS68470 b/baseconfig/s390x/CONFIG_MFD_TPS68470
new file mode 100644
index 000000000..e82f415aa
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_MFD_TPS68470
@@ -0,0 +1 @@
+# CONFIG_MFD_TPS68470 is not set
diff --git a/baseconfig/s390x/CONFIG_MFD_VIPERBOARD b/baseconfig/s390x/CONFIG_MFD_VIPERBOARD
new file mode 100644
index 000000000..1d4d00579
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_MFD_VIPERBOARD
@@ -0,0 +1 @@
+# CONFIG_MFD_VIPERBOARD is not set
diff --git a/baseconfig/s390x/CONFIG_VMCP_CMA_SIZE b/baseconfig/s390x/CONFIG_VMCP_CMA_SIZE
new file mode 100644
index 000000000..aee0667ac
--- /dev/null
+++ b/baseconfig/s390x/CONFIG_VMCP_CMA_SIZE
@@ -0,0 +1 @@
+CONFIG_VMCP_CMA_SIZE=4
diff --git a/baseconfig/x86/CONFIG_CONFIG_PINCTRL_LEWISBURG b/baseconfig/x86/CONFIG_CONFIG_PINCTRL_LEWISBURG
new file mode 100644
index 000000000..c2c51192e
--- /dev/null
+++ b/baseconfig/x86/CONFIG_CONFIG_PINCTRL_LEWISBURG
@@ -0,0 +1 @@
+CONFIG_PINCTRL_LEWISBURG=m
diff --git a/baseconfig/x86/CONFIG_HYPERV_VSOCKETS b/baseconfig/x86/CONFIG_HYPERV_VSOCKETS
new file mode 100644
index 000000000..bd21cd675
--- /dev/null
+++ b/baseconfig/x86/CONFIG_HYPERV_VSOCKETS
@@ -0,0 +1 @@
+CONFIG_HYPERV_VSOCKETS=m
diff --git a/baseconfig/x86/CONFIG_INTEL_RDT b/baseconfig/x86/CONFIG_INTEL_RDT
new file mode 100644
index 000000000..0dcef9a32
--- /dev/null
+++ b/baseconfig/x86/CONFIG_INTEL_RDT
@@ -0,0 +1 @@
+CONFIG_INTEL_RDT=y
diff --git a/baseconfig/x86/CONFIG_MAXSMP b/baseconfig/x86/CONFIG_MAXSMP
index 8d0fa581d..d0d71de53 100644
--- a/baseconfig/x86/CONFIG_MAXSMP
+++ b/baseconfig/x86/CONFIG_MAXSMP
@@ -1 +1 @@
-CONFIG_MAXSMP=y
+# CONFIG_MAXSMP is not set
diff --git a/baseconfig/x86/CONFIG_PINCTRL_DENVERTON b/baseconfig/x86/CONFIG_PINCTRL_DENVERTON
new file mode 100644
index 000000000..ec6b4e8e1
--- /dev/null
+++ b/baseconfig/x86/CONFIG_PINCTRL_DENVERTON
@@ -0,0 +1 @@
+CONFIG_PINCTRL_DENVERTON=m
diff --git a/baseconfig/x86/CONFIG_XEN_PVCALLS_BACKEND b/baseconfig/x86/CONFIG_XEN_PVCALLS_BACKEND
new file mode 100644
index 000000000..3a5b2c46d
--- /dev/null
+++ b/baseconfig/x86/CONFIG_XEN_PVCALLS_BACKEND
@@ -0,0 +1 @@
+# CONFIG_XEN_PVCALLS_BACKEND is not set
diff --git a/baseconfig/x86/x86_64/CONFIG_AMD_MEM_ENCRYPT b/baseconfig/x86/x86_64/CONFIG_AMD_MEM_ENCRYPT
new file mode 100644
index 000000000..f9eacfabc
--- /dev/null
+++ b/baseconfig/x86/x86_64/CONFIG_AMD_MEM_ENCRYPT
@@ -0,0 +1 @@
+CONFIG_AMD_MEM_ENCRYPT=y
diff --git a/baseconfig/x86/x86_64/CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT b/baseconfig/x86/x86_64/CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
new file mode 100644
index 000000000..e41f0cf8f
--- /dev/null
+++ b/baseconfig/x86/x86_64/CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
@@ -0,0 +1 @@
+# CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT is not set
diff --git a/baseconfig/x86/x86_64/CONFIG_DEVICE_PRIVATE b/baseconfig/x86/x86_64/CONFIG_DEVICE_PRIVATE
new file mode 100644
index 000000000..ef0a4ad5b
--- /dev/null
+++ b/baseconfig/x86/x86_64/CONFIG_DEVICE_PRIVATE
@@ -0,0 +1 @@
+CONFIG_DEVICE_PRIVATE=y
diff --git a/baseconfig/x86/x86_64/CONFIG_DEVICE_PUBLIC b/baseconfig/x86/x86_64/CONFIG_DEVICE_PUBLIC
new file mode 100644
index 000000000..c790e941b
--- /dev/null
+++ b/baseconfig/x86/x86_64/CONFIG_DEVICE_PUBLIC
@@ -0,0 +1 @@
+CONFIG_DEVICE_PUBLIC=y
diff --git a/baseconfig/x86/x86_64/CONFIG_HMM_MIRROR b/baseconfig/x86/x86_64/CONFIG_HMM_MIRROR
new file mode 100644
index 000000000..11dfee6c1
--- /dev/null
+++ b/baseconfig/x86/x86_64/CONFIG_HMM_MIRROR
@@ -0,0 +1 @@
+CONFIG_HMM_MIRROR=y
diff --git a/baseconfig/x86/x86_64/CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT b/baseconfig/x86/x86_64/CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT
new file mode 100644
index 000000000..4a06cfcc2
--- /dev/null
+++ b/baseconfig/x86/x86_64/CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT
@@ -0,0 +1 @@
+CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y
diff --git a/baseconfig/x86/x86_64/CONFIG_NR_CPUS b/baseconfig/x86/x86_64/CONFIG_NR_CPUS
index 441191641..27d187f4d 100644
--- a/baseconfig/x86/x86_64/CONFIG_NR_CPUS
+++ b/baseconfig/x86/x86_64/CONFIG_NR_CPUS
@@ -1 +1 @@
-CONFIG_NR_CPUS=8192
+CONFIG_NR_CPUS=1024
diff --git a/baseconfig/x86/x86_64/CONFIG_X86_5LEVEL b/baseconfig/x86/x86_64/CONFIG_X86_5LEVEL
new file mode 100644
index 000000000..db301f396
--- /dev/null
+++ b/baseconfig/x86/x86_64/CONFIG_X86_5LEVEL
@@ -0,0 +1 @@
+# CONFIG_X86_5LEVEL is not set
diff --git a/bcm2837-bluetooth-support.patch b/bcm2837-bluetooth-support.patch
index bdba4aa28..c272c1efe 100644
--- a/bcm2837-bluetooth-support.patch
+++ b/bcm2837-bluetooth-support.patch
@@ -1,597 +1,3 @@
-From 98dc77d57169f51d100f8b0cb3e4d1e0911ef7a4 Mon Sep 17 00:00:00 2001
-From: Loic Poulain <loic.poulain@gmail.com>
-Date: Tue, 4 Jul 2017 12:57:56 +0200
-Subject: Bluetooth: hci_bcm: Make bcm_request_irq fail if no IRQ resource
-
-In case of no IRQ resource associated to the bcm_device, requesting
-IRQ should return an error in order to not enable low power mgmt.
-
-Signed-off-by: Loic Poulain <loic.poulain@gmail.com>
-Reported-by: Ian Molton <ian@mnementh.co.uk>
-Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
----
- drivers/bluetooth/hci_bcm.c | 30 ++++++++++++++++--------------
- 1 file changed, 16 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
-index 6a662d0..6b42372 100644
---- a/drivers/bluetooth/hci_bcm.c
-+++ b/drivers/bluetooth/hci_bcm.c
-@@ -176,7 +176,7 @@ static irqreturn_t bcm_host_wake(int irq, void *data)
- static int bcm_request_irq(struct bcm_data *bcm)
- {
- struct bcm_device *bdev = bcm->dev;
-- int err = 0;
-+ int err;
-
- /* If this is not a platform device, do not enable PM functionalities */
- mutex_lock(&bcm_device_lock);
-@@ -185,21 +185,23 @@ static int bcm_request_irq(struct bcm_data *bcm)
- goto unlock;
- }
-
-- if (bdev->irq > 0) {
-- err = devm_request_irq(&bdev->pdev->dev, bdev->irq,
-- bcm_host_wake, IRQF_TRIGGER_RISING,
-- "host_wake", bdev);
-- if (err)
-- goto unlock;
-+ if (bdev->irq <= 0) {
-+ err = -EOPNOTSUPP;
-+ goto unlock;
-+ }
-
-- device_init_wakeup(&bdev->pdev->dev, true);
-+ err = devm_request_irq(&bdev->pdev->dev, bdev->irq, bcm_host_wake,
-+ IRQF_TRIGGER_RISING, "host_wake", bdev);
-+ if (err)
-+ goto unlock;
-
-- pm_runtime_set_autosuspend_delay(&bdev->pdev->dev,
-- BCM_AUTOSUSPEND_DELAY);
-- pm_runtime_use_autosuspend(&bdev->pdev->dev);
-- pm_runtime_set_active(&bdev->pdev->dev);
-- pm_runtime_enable(&bdev->pdev->dev);
-- }
-+ device_init_wakeup(&bdev->pdev->dev, true);
-+
-+ pm_runtime_set_autosuspend_delay(&bdev->pdev->dev,
-+ BCM_AUTOSUSPEND_DELAY);
-+ pm_runtime_use_autosuspend(&bdev->pdev->dev);
-+ pm_runtime_set_active(&bdev->pdev->dev);
-+ pm_runtime_enable(&bdev->pdev->dev);
-
- unlock:
- mutex_unlock(&bcm_device_lock);
---
-cgit v1.1
-
-From 74183a1c50a3c61e62d2e585107ea3c0b942a3ff Mon Sep 17 00:00:00 2001
-From: Marcel Holtmann <marcel@holtmann.org>
-Date: Wed, 16 Aug 2017 09:53:30 +0200
-Subject: Bluetooth: hci_bcm: Use operation speed of 4Mbps only for ACPI
- devices
-
-Not all Broadcom controller support the 4Mbps operational speed on UART
-devices. This is because the UART clock setting changes might not be
-supported.
-
- < HCI Command: Broadcom Write UART Clock Setting (0x3f|0x0045) plen 1
- 01 .
- > HCI Event: Command Complete (0x0e) plen 4
- Broadcom Write UART Clock Setting (0x3f|0x0045) ncmd 1
- Status: Unknown HCI Command (0x01)
-
-To support any operational speed higher than 3Mbps, support for this
-command is required. With that respect it is better to not enforce any
-operational speed by default. Only when its support is known, then allow
-for higher operational speed.
-
-This patch assigns the 4Mbps opertional speed only for devices
-discovered through ACPI and leave all others at the default 115200.
-
-Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
----
- drivers/bluetooth/hci_bcm.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
-index 6b42372..1eb286a 100644
---- a/drivers/bluetooth/hci_bcm.c
-+++ b/drivers/bluetooth/hci_bcm.c
-@@ -59,6 +59,7 @@ struct bcm_device {
- bool clk_enabled;
-
- u32 init_speed;
-+ u32 oper_speed;
- int irq;
- u8 irq_polarity;
-
-@@ -303,6 +304,7 @@ static int bcm_open(struct hci_uart *hu)
- if (hu->tty->dev->parent == dev->pdev->dev.parent) {
- bcm->dev = dev;
- hu->init_speed = dev->init_speed;
-+ hu->oper_speed = dev->oper_speed;
- #ifdef CONFIG_PM
- dev->hu = hu;
- #endif
-@@ -699,8 +701,10 @@ static int bcm_resource(struct acpi_resource *ares, void *data)
-
- case ACPI_RESOURCE_TYPE_SERIAL_BUS:
- sb = &ares->data.uart_serial_bus;
-- if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_UART)
-+ if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_UART) {
- dev->init_speed = sb->default_baud_rate;
-+ dev->oper_speed = 4000000;
-+ }
- break;
-
- default:
-@@ -853,7 +857,6 @@ static const struct hci_uart_proto bcm_proto = {
- .name = "Broadcom",
- .manufacturer = 15,
- .init_speed = 115200,
-- .oper_speed = 4000000,
- .open = bcm_open,
- .close = bcm_close,
- .flush = bcm_flush,
---
-cgit v1.1
-
-From 33cd149e767be9afbab9fcd3d5165a2de62313c8 Mon Sep 17 00:00:00 2001
-From: Loic Poulain <loic.poulain@gmail.com>
-Date: Thu, 17 Aug 2017 19:59:51 +0200
-Subject: Bluetooth: hci_bcm: Add serdev support
-
-Add basic support for Broadcom serial slave devices.
-Probe the serial device, retrieve its maximum speed and
-register a new hci uart device.
-
-Tested/compatible with bcm43438 (RPi3).
-
-Signed-off-by: Loic Poulain <loic.poulain@gmail.com>
-Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
----
- drivers/bluetooth/Kconfig | 1 +
- drivers/bluetooth/hci_bcm.c | 85 +++++++++++++++++++++++++++++++++++++++++++--
- 2 files changed, 84 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig
-index 3a6ead6..fae5a74 100644
---- a/drivers/bluetooth/Kconfig
-+++ b/drivers/bluetooth/Kconfig
-@@ -168,6 +168,7 @@ config BT_HCIUART_INTEL
- config BT_HCIUART_BCM
- bool "Broadcom protocol support"
- depends on BT_HCIUART
-+ depends on BT_HCIUART_SERDEV
- select BT_HCIUART_H4
- select BT_BCM
- help
-diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
-index 1eb286a..34882f1 100644
---- a/drivers/bluetooth/hci_bcm.c
-+++ b/drivers/bluetooth/hci_bcm.c
-@@ -27,6 +27,8 @@
- #include <linux/firmware.h>
- #include <linux/module.h>
- #include <linux/acpi.h>
-+#include <linux/of.h>
-+#include <linux/property.h>
- #include <linux/platform_device.h>
- #include <linux/clk.h>
- #include <linux/gpio/consumer.h>
-@@ -34,6 +36,7 @@
- #include <linux/interrupt.h>
- #include <linux/dmi.h>
- #include <linux/pm_runtime.h>
-+#include <linux/serdev.h>
-
- #include <net/bluetooth/bluetooth.h>
- #include <net/bluetooth/hci_core.h>
-@@ -46,6 +49,7 @@
-
- #define BCM_AUTOSUSPEND_DELAY 5000 /* default autosleep delay */
-
-+/* platform device driver resources */
- struct bcm_device {
- struct list_head list;
-
-@@ -69,6 +73,12 @@ struct bcm_device {
- #endif
- };
-
-+/* serdev driver resources */
-+struct bcm_serdev {
-+ struct hci_uart hu;
-+};
-+
-+/* generic bcm uart resources */
- struct bcm_data {
- struct sk_buff *rx_skb;
- struct sk_buff_head txq;
-@@ -80,6 +90,14 @@ struct bcm_data {
- static DEFINE_MUTEX(bcm_device_lock);
- static LIST_HEAD(bcm_device_list);
-
-+static inline void host_set_baudrate(struct hci_uart *hu, unsigned int speed)
-+{
-+ if (hu->serdev)
-+ serdev_device_set_baudrate(hu->serdev, speed);
-+ else
-+ hci_uart_set_baudrate(hu, speed);
-+}
-+
- static int bcm_set_baudrate(struct hci_uart *hu, unsigned int speed)
- {
- struct hci_dev *hdev = hu->hdev;
-@@ -290,6 +308,14 @@ static int bcm_open(struct hci_uart *hu)
-
- hu->priv = bcm;
-
-+ /* If this is a serdev defined device, then only use
-+ * serdev open primitive and skip the rest.
-+ */
-+ if (hu->serdev) {
-+ serdev_device_open(hu->serdev);
-+ goto out;
-+ }
-+
- if (!hu->tty->dev)
- goto out;
-
-@@ -325,6 +351,12 @@ static int bcm_close(struct hci_uart *hu)
-
- bt_dev_dbg(hu->hdev, "hu %p", hu);
-
-+ /* If this is a serdev defined device, only use serdev
-+ * close primitive and then continue as usual.
-+ */
-+ if (hu->serdev)
-+ serdev_device_close(hu->serdev);
-+
- /* Protect bcm->dev against removal of the device or driver */
- mutex_lock(&bcm_device_lock);
- if (bcm_device_exists(bdev)) {
-@@ -400,7 +432,7 @@ static int bcm_setup(struct hci_uart *hu)
- speed = 0;
-
- if (speed)
-- hci_uart_set_baudrate(hu, speed);
-+ host_set_baudrate(hu, speed);
-
- /* Operational speed if any */
- if (hu->oper_speed)
-@@ -413,7 +445,7 @@ static int bcm_setup(struct hci_uart *hu)
- if (speed) {
- err = bcm_set_baudrate(hu, speed);
- if (!err)
-- hci_uart_set_baudrate(hu, speed);
-+ host_set_baudrate(hu, speed);
- }
-
- finalize:
-@@ -906,9 +938,57 @@ static struct platform_driver bcm_driver = {
- },
- };
-
-+static int bcm_serdev_probe(struct serdev_device *serdev)
-+{
-+ struct bcm_serdev *bcmdev;
-+ u32 speed;
-+ int err;
-+
-+ bcmdev = devm_kzalloc(&serdev->dev, sizeof(*bcmdev), GFP_KERNEL);
-+ if (!bcmdev)
-+ return -ENOMEM;
-+
-+ bcmdev->hu.serdev = serdev;
-+ serdev_device_set_drvdata(serdev, bcmdev);
-+
-+ err = device_property_read_u32(&serdev->dev, "max-speed", &speed);
-+ if (!err)
-+ bcmdev->hu.oper_speed = speed;
-+
-+ return hci_uart_register_device(&bcmdev->hu, &bcm_proto);
-+}
-+
-+static void bcm_serdev_remove(struct serdev_device *serdev)
-+{
-+ struct bcm_serdev *bcmdev = serdev_device_get_drvdata(serdev);
-+
-+ hci_uart_unregister_device(&bcmdev->hu);
-+}
-+
-+#ifdef CONFIG_OF
-+static const struct of_device_id bcm_bluetooth_of_match[] = {
-+ { .compatible = "brcm,bcm43438-bt" },
-+ { },
-+};
-+MODULE_DEVICE_TABLE(of, bcm_bluetooth_of_match);
-+#endif
-+
-+static struct serdev_device_driver bcm_serdev_driver = {
-+ .probe = bcm_serdev_probe,
-+ .remove = bcm_serdev_remove,
-+ .driver = {
-+ .name = "hci_uart_bcm",
-+ .of_match_table = of_match_ptr(bcm_bluetooth_of_match),
-+ },
-+};
-+
- int __init bcm_init(void)
- {
-+ /* For now, we need to keep both platform device
-+ * driver (ACPI generated) and serdev driver (DT).
-+ */
- platform_driver_register(&bcm_driver);
-+ serdev_device_driver_register(&bcm_serdev_driver);
-
- return hci_uart_register_proto(&bcm_proto);
- }
-@@ -916,6 +996,7 @@ int __init bcm_init(void)
- int __exit bcm_deinit(void)
- {
- platform_driver_unregister(&bcm_driver);
-+ serdev_device_driver_unregister(&bcm_serdev_driver);
-
- return hci_uart_unregister_proto(&bcm_proto);
- }
---
-cgit v1.1
-
-From 01d5e44ace8a20fc51e0d530f98acb3c365345a5 Mon Sep 17 00:00:00 2001
-From: Marcel Holtmann <marcel@holtmann.org>
-Date: Thu, 17 Aug 2017 21:41:09 +0200
-Subject: Bluetooth: hci_bcm: Handle empty packet after firmware loading
-
-The Broadcom controller on the Raspberry Pi3 sends an empty packet with
-packet type 0x00 after launching the firmware. This will cause logging
-of errors.
-
- Bluetooth: hci0: Frame reassembly failed (-84)
-
-Since this seems to be an intented behaviour of the controller, handle
-it gracefully by parsing that empty packet with packet type 0x00 and
-then just simply report it as diagnostic packet.
-
-With that change no errors are logging and the packet itself is actually
-recorded in the Bluetooth monitor traces.
-
- < HCI Command: Broadcom Launch RAM (0x3f|0x004e) plen 4
- Address: 0xffffffff
- > HCI Event: Command Complete (0x0e) plen 4
- Broadcom Launch RAM (0x3f|0x004e) ncmd 1
- Status: Success (0x00)
- = Vendor Diagnostic (len 0)
- < HCI Command: Broadcom Update UART Baud Rate (0x3f|0x0018) plen 6
- 00 00 00 10 0e 00 ......
- > HCI Event: Command Complete (0x0e) plen 4
- Broadcom Update UART Baud Rate (0x3f|0x0018) ncmd 1
- Status: Success (0x00)
- < HCI Command: Reset (0x03|0x0003) plen 0
- > HCI Event: Command Complete (0x0e) plen 4
- Reset (0x03|0x0003) ncmd 1
- Status: Success (0x00)
-
-Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
----
- drivers/bluetooth/hci_bcm.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
-index 34882f1..e254011 100644
---- a/drivers/bluetooth/hci_bcm.c
-+++ b/drivers/bluetooth/hci_bcm.c
-@@ -44,6 +44,9 @@
- #include "btbcm.h"
- #include "hci_uart.h"
-
-+#define BCM_NULL_PKT 0x00
-+#define BCM_NULL_SIZE 0
-+
- #define BCM_LM_DIAG_PKT 0x07
- #define BCM_LM_DIAG_SIZE 63
-
-@@ -468,11 +471,19 @@ finalize:
- .lsize = 0, \
- .maxlen = BCM_LM_DIAG_SIZE
-
-+#define BCM_RECV_NULL \
-+ .type = BCM_NULL_PKT, \
-+ .hlen = BCM_NULL_SIZE, \
-+ .loff = 0, \
-+ .lsize = 0, \
-+ .maxlen = BCM_NULL_SIZE
-+
- static const struct h4_recv_pkt bcm_recv_pkts[] = {
- { H4_RECV_ACL, .recv = hci_recv_frame },
- { H4_RECV_SCO, .recv = hci_recv_frame },
- { H4_RECV_EVENT, .recv = hci_recv_frame },
- { BCM_RECV_LM_DIAG, .recv = hci_recv_diag },
-+ { BCM_RECV_NULL, .recv = hci_recv_diag },
- };
-
- static int bcm_recv(struct hci_uart *hu, const void *data, int count)
---
-cgit v1.1
-
-From c34dc3bfa7642fda423208579015d615f7becfa0 Mon Sep 17 00:00:00 2001
-From: Ian Molton <ian@mnementh.co.uk>
-Date: Sat, 8 Jul 2017 17:37:41 +0100
-Subject: Bluetooth: hci_serdev: Introduce hci_uart_unregister_device()
-
-Several drivers have the same (and incorrect) code in their
-_remove() handler.
-
-Coalesce this into a shared function.
-
-Signed-off-by: Ian Molton <ian@mnementh.co.uk>
-Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
-Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
----
- drivers/bluetooth/hci_serdev.c | 13 +++++++++++++
- drivers/bluetooth/hci_uart.h | 1 +
- 2 files changed, 14 insertions(+)
-
-diff --git a/drivers/bluetooth/hci_serdev.c b/drivers/bluetooth/hci_serdev.c
-index aea9301..b725ac4 100644
---- a/drivers/bluetooth/hci_serdev.c
-+++ b/drivers/bluetooth/hci_serdev.c
-@@ -354,3 +354,16 @@ err_alloc:
- return err;
- }
- EXPORT_SYMBOL_GPL(hci_uart_register_device);
-+
-+void hci_uart_unregister_device(struct hci_uart *hu)
-+{
-+ struct hci_dev *hdev = hu->hdev;
-+
-+ hci_unregister_dev(hdev);
-+ hci_free_dev(hdev);
-+
-+ cancel_work_sync(&hu->write_work);
-+
-+ hu->proto->close(hu);
-+}
-+EXPORT_SYMBOL_GPL(hci_uart_unregister_device);
-diff --git a/drivers/bluetooth/hci_uart.h b/drivers/bluetooth/hci_uart.h
-index c6e9e1c..d9cd95d 100644
---- a/drivers/bluetooth/hci_uart.h
-+++ b/drivers/bluetooth/hci_uart.h
-@@ -112,6 +112,7 @@ struct hci_uart {
- int hci_uart_register_proto(const struct hci_uart_proto *p);
- int hci_uart_unregister_proto(const struct hci_uart_proto *p);
- int hci_uart_register_device(struct hci_uart *hu, const struct hci_uart_proto *p);
-+void hci_uart_unregister_device(struct hci_uart *hu);
-
- int hci_uart_tx_wakeup(struct hci_uart *hu);
- int hci_uart_init_ready(struct hci_uart *hu);
---
-cgit v1.1
-
-From patchwork Thu Aug 17 17:59:48 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [v4,1/4] dt-bindings: net: bluetooth: Add broadcom-bluetooth
-X-Patchwork-Submitter: Loic Poulain <loic.poulain@gmail.com>
-X-Patchwork-Id: 802828
-Message-Id: <1502992791-10265-1-git-send-email-loic.poulain@gmail.com>
-To: robh+dt@kernel.org, f.fainelli@gmail.com, rjui@broadcom.com,
- marcel@holtmann.org, johan.hedberg@gmail.com, stefan.wahren@i2se.com
-Cc: devicetree@vger.kernel.org, linux-bluetooth@vger.kernel.org,
- linux-rpi-kernel@lists.infradead.org, Loic Poulain <loic.poulain@gmail.com>
-Date: Thu, 17 Aug 2017 19:59:48 +0200
-From: Loic Poulain <loic.poulain@gmail.com>
-List-Id: <devicetree.vger.kernel.org>
-
-Add binding document for serial bluetooth chips using
-Broadcom protocol.
-
-Signed-off-by: Loic Poulain <loic.poulain@gmail.com>
-Acked-by: Rob Herring <robh@kernel.org>
-Acked-by: Rob Herring <robh@kernel.org>
-Acked-by: Rob Herring <robh@kernel.org>
----
- v2: dt-bindings as separate patch
- rebase on upcoming pi3 dts changes
- v3: changes in bcm serdev drivers:
- name refactoring and additional comments
- Add generic host_set_baudrate method
- Use agnostic device_property_read
- v4: changes in doc and dts:
- Add additional params to broadcom bt dt-bindings
- Set the max baudrate to 2000000 instead of 921600
- use chosen/stdout-path instead of console=
- remove useless earlyprintk
- same changes in bcm283x.dtsi
-
- .../devicetree/bindings/net/broadcom-bluetooth.txt | 35 ++++++++++++++++++++++
- 1 file changed, 35 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/net/broadcom-bluetooth.txt
-
-diff --git a/Documentation/devicetree/bindings/net/broadcom-bluetooth.txt b/Documentation/devicetree/bindings/net/broadcom-bluetooth.txt
-new file mode 100644
-index 0000000..4194ff7
---- /dev/null
-+++ b/Documentation/devicetree/bindings/net/broadcom-bluetooth.txt
-@@ -0,0 +1,35 @@
-+Broadcom Bluetooth Chips
-+---------------------
-+
-+This documents the binding structure and common properties for serial
-+attached Broadcom devices.
-+
-+Serial attached Broadcom devices shall be a child node of the host UART
-+device the slave device is attached to.
-+
-+Required properties:
-+
-+ - compatible: should contain one of the following:
-+ * "brcm,bcm43438-bt"
-+
-+Optional properties:
-+
-+ - max-speed: see Documentation/devicetree/bindings/serial/slave-device.txt
-+ - shutdown-gpios: GPIO specifier, used to enable the BT module
-+ - device-wakeup-gpios: GPIO specifier, used to wakeup the controller
-+ - host-wakeup-gpios: GPIO specifier, used to wakeup the host processor
-+ - clocks: clock specifier if external clock provided to the controller
-+ - clock-names: should be "extclk"
-+
-+
-+Example:
-+
-+&uart2 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart2_pins>;
-+
-+ bluetooth {
-+ compatible = "brcm,bcm43438-bt";
-+ max-speed = <921600>;
-+ };
-+};
-From a92507095467d77f4fd05f54ae8d299459c2c3a3 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Sun, 10 Sep 2017 19:29:23 +0100
-Subject: [PATCH 1/2] ARM: dts: bcm283x: Use stdout-path instead of console
- bootarg
-
-Add the serial port config to "chosen/stdout-path".
-Create serial0/1 aliases referring to uart0 ant uart1 paths.
-Remove unneeded earlyprintk.
-
-Signed-off-by: Loic Poulain <loic.poulain@xxxxxxxxx>
-Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
----
- arch/arm/boot/dts/bcm283x.dtsi | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
-index 431dcfc900c0..013431e3d7c3 100644
---- a/arch/arm/boot/dts/bcm283x.dtsi
-+++ b/arch/arm/boot/dts/bcm283x.dtsi
-@@ -20,8 +20,13 @@
- #address-cells = <1>;
- #size-cells = <1>;
-
-+ aliases {
-+ serial0 = &uart0;
-+ serial1 = &uart1;
-+ };
-+
- chosen {
-- bootargs = "earlyprintk console=ttyAMA0";
-+ stdout-path = "serial0:115200n8";
- };
-
- thermal-zones {
---
-2.13.5
-
From 50252c318fe2fcfcbd0832fa835e7fd1fafd7d2d Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Sun, 10 Sep 2017 19:30:02 +0100
@@ -613,18 +19,6 @@ diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-r
index 20725ca487f3..e4488cb3067e 100644
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
-@@ -8,6 +8,11 @@
- compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
- model = "Raspberry Pi 3 Model B";
-
-+ chosen {
-+ /* 8250 auxiliar UART instead of pl011 */
-+ stdout-path = "serial1:115200n8";
-+ };
-+
- memory {
- reg = <0 0x40000000>;
- };
@@ -24,6 +29,11 @@
pinctrl-names = "default";
pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>;
diff --git a/bcm2837-move-dt.patch b/bcm2837-move-dt.patch
deleted file mode 100644
index 018cf81d7..000000000
--- a/bcm2837-move-dt.patch
+++ /dev/null
@@ -1,516 +0,0 @@
-From 3bfe25fa9f8a56c5c877c7fd854d89238787c6d8 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Wed, 26 Jul 2017 13:01:56 -0700
-Subject: ARM: dts: bcm283x: Move the BCM2837 DT contents from arm64 to arm.
-
-BCM2837 is somewhat unusual in that we build its DT on both arm32 and
-arm64. Most devices are being run in arm32 mode.
-
-Having the body of the DT for 2837 separate from 2835/6 has been a
-source of pain, as we often need to make changes that span both
-directories simultaneously (for example, the thermal changes for 4.13,
-or anything that changes the name of a node referenced by '&' from
-board files). Other changes are made more complicated than they need
-to be, such as the SDHOST enabling, because we have to split a single
-logical change into a 283[56] half and a 2837 half.
-
-To fix this, make the stub board include file live in arm64 instead of
-arm32, and keep all of BCM283x's contents in arm32. From here on, our
-changes to DT contents can be submitted through a single tree.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
----
- arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 42 ++++++++++-
- arch/arm/boot/dts/bcm2837.dtsi | 86 ++++++++++++++++++++++
- arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi | 1 -
- arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts | 42 +----------
- arch/arm64/boot/dts/broadcom/bcm2837.dtsi | 86 ----------------------
- .../boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi | 1 -
- .../boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi | 1 -
- arch/arm64/boot/dts/broadcom/bcm283x.dtsi | 1 -
- 8 files changed, 128 insertions(+), 132 deletions(-)
- create mode 100644 arch/arm/boot/dts/bcm2837.dtsi
- delete mode 120000 arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi
- delete mode 100644 arch/arm64/boot/dts/broadcom/bcm2837.dtsi
- delete mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi
- delete mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi
- delete mode 120000 arch/arm64/boot/dts/broadcom/bcm283x.dtsi
-
-diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
-index c72a27d..972f14d 100644
---- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
-+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
-@@ -1 +1,41 @@
--#include "arm64/broadcom/bcm2837-rpi-3-b.dts"
-+/dts-v1/;
-+#include "bcm2837.dtsi"
-+#include "bcm2835-rpi.dtsi"
-+#include "bcm283x-rpi-smsc9514.dtsi"
-+#include "bcm283x-rpi-usb-host.dtsi"
-+
-+/ {
-+ compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
-+ model = "Raspberry Pi 3 Model B";
-+
-+ memory {
-+ reg = <0 0x40000000>;
-+ };
-+
-+ leds {
-+ act {
-+ gpios = <&gpio 47 0>;
-+ };
-+ };
-+};
-+
-+&uart1 {
-+ status = "okay";
-+};
-+
-+/* SDHCI is used to control the SDIO for wireless */
-+&sdhci {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&emmc_gpio34>;
-+ status = "okay";
-+ bus-width = <4>;
-+ non-removable;
-+};
-+
-+/* SDHOST is used to drive the SD card */
-+&sdhost {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&sdhost_gpio48>;
-+ status = "okay";
-+ bus-width = <4>;
-+};
-diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
-new file mode 100644
-index 0000000..2d5de6f0
---- /dev/null
-+++ b/arch/arm/boot/dts/bcm2837.dtsi
-@@ -0,0 +1,86 @@
-+#include "bcm283x.dtsi"
-+
-+/ {
-+ compatible = "brcm,bcm2837";
-+
-+ soc {
-+ ranges = <0x7e000000 0x3f000000 0x1000000>,
-+ <0x40000000 0x40000000 0x00001000>;
-+ dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
-+
-+ local_intc: local_intc {
-+ compatible = "brcm,bcm2836-l1-intc";
-+ reg = <0x40000000 0x100>;
-+ interrupt-controller;
-+ #interrupt-cells = <1>;
-+ interrupt-parent = <&local_intc>;
-+ };
-+ };
-+
-+ timer {
-+ compatible = "arm,armv7-timer";
-+ interrupt-parent = <&local_intc>;
-+ interrupts = <0>, // PHYS_SECURE_PPI
-+ <1>, // PHYS_NONSECURE_PPI
-+ <3>, // VIRT_PPI
-+ <2>; // HYP_PPI
-+ always-on;
-+ };
-+
-+ cpus: cpus {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+
-+ cpu0: cpu@0 {
-+ device_type = "cpu";
-+ compatible = "arm,cortex-a53";
-+ reg = <0>;
-+ enable-method = "spin-table";
-+ cpu-release-addr = <0x0 0x000000d8>;
-+ };
-+
-+ cpu1: cpu@1 {
-+ device_type = "cpu";
-+ compatible = "arm,cortex-a53";
-+ reg = <1>;
-+ enable-method = "spin-table";
-+ cpu-release-addr = <0x0 0x000000e0>;
-+ };
-+
-+ cpu2: cpu@2 {
-+ device_type = "cpu";
-+ compatible = "arm,cortex-a53";
-+ reg = <2>;
-+ enable-method = "spin-table";
-+ cpu-release-addr = <0x0 0x000000e8>;
-+ };
-+
-+ cpu3: cpu@3 {
-+ device_type = "cpu";
-+ compatible = "arm,cortex-a53";
-+ reg = <3>;
-+ enable-method = "spin-table";
-+ cpu-release-addr = <0x0 0x000000f0>;
-+ };
-+ };
-+};
-+
-+/* Make the BCM2835-style global interrupt controller be a child of the
-+ * CPU-local interrupt controller.
-+ */
-+&intc {
-+ compatible = "brcm,bcm2836-armctrl-ic";
-+ reg = <0x7e00b200 0x200>;
-+ interrupt-parent = <&local_intc>;
-+ interrupts = <8>;
-+};
-+
-+&cpu_thermal {
-+ coefficients = <(-538) 412000>;
-+};
-+
-+/* enable thermal sensor with the correct compatible property set */
-+&thermal {
-+ compatible = "brcm,bcm2837-thermal";
-+ status = "okay";
-+};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi b/arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi
-deleted file mode 120000
-index 3937b77..0000000
---- a/arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi
-+++ /dev/null
-@@ -1 +0,0 @@
--../../../../arm/boot/dts/bcm2835-rpi.dtsi
-\ No newline at end of file
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
-index 972f14d..699d340 100644
---- a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
-+++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts
-@@ -1,41 +1 @@
--/dts-v1/;
--#include "bcm2837.dtsi"
--#include "bcm2835-rpi.dtsi"
--#include "bcm283x-rpi-smsc9514.dtsi"
--#include "bcm283x-rpi-usb-host.dtsi"
--
--/ {
-- compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
-- model = "Raspberry Pi 3 Model B";
--
-- memory {
-- reg = <0 0x40000000>;
-- };
--
-- leds {
-- act {
-- gpios = <&gpio 47 0>;
-- };
-- };
--};
--
--&uart1 {
-- status = "okay";
--};
--
--/* SDHCI is used to control the SDIO for wireless */
--&sdhci {
-- pinctrl-names = "default";
-- pinctrl-0 = <&emmc_gpio34>;
-- status = "okay";
-- bus-width = <4>;
-- non-removable;
--};
--
--/* SDHOST is used to drive the SD card */
--&sdhost {
-- pinctrl-names = "default";
-- pinctrl-0 = <&sdhost_gpio48>;
-- status = "okay";
-- bus-width = <4>;
--};
-+#include "arm/bcm2837-rpi-3-b.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
-deleted file mode 100644
-index 2d5de6f0..0000000
---- a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi
-+++ /dev/null
-@@ -1,86 +0,0 @@
--#include "bcm283x.dtsi"
--
--/ {
-- compatible = "brcm,bcm2837";
--
-- soc {
-- ranges = <0x7e000000 0x3f000000 0x1000000>,
-- <0x40000000 0x40000000 0x00001000>;
-- dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
--
-- local_intc: local_intc {
-- compatible = "brcm,bcm2836-l1-intc";
-- reg = <0x40000000 0x100>;
-- interrupt-controller;
-- #interrupt-cells = <1>;
-- interrupt-parent = <&local_intc>;
-- };
-- };
--
-- timer {
-- compatible = "arm,armv7-timer";
-- interrupt-parent = <&local_intc>;
-- interrupts = <0>, // PHYS_SECURE_PPI
-- <1>, // PHYS_NONSECURE_PPI
-- <3>, // VIRT_PPI
-- <2>; // HYP_PPI
-- always-on;
-- };
--
-- cpus: cpus {
-- #address-cells = <1>;
-- #size-cells = <0>;
--
-- cpu0: cpu@0 {
-- device_type = "cpu";
-- compatible = "arm,cortex-a53";
-- reg = <0>;
-- enable-method = "spin-table";
-- cpu-release-addr = <0x0 0x000000d8>;
-- };
--
-- cpu1: cpu@1 {
-- device_type = "cpu";
-- compatible = "arm,cortex-a53";
-- reg = <1>;
-- enable-method = "spin-table";
-- cpu-release-addr = <0x0 0x000000e0>;
-- };
--
-- cpu2: cpu@2 {
-- device_type = "cpu";
-- compatible = "arm,cortex-a53";
-- reg = <2>;
-- enable-method = "spin-table";
-- cpu-release-addr = <0x0 0x000000e8>;
-- };
--
-- cpu3: cpu@3 {
-- device_type = "cpu";
-- compatible = "arm,cortex-a53";
-- reg = <3>;
-- enable-method = "spin-table";
-- cpu-release-addr = <0x0 0x000000f0>;
-- };
-- };
--};
--
--/* Make the BCM2835-style global interrupt controller be a child of the
-- * CPU-local interrupt controller.
-- */
--&intc {
-- compatible = "brcm,bcm2836-armctrl-ic";
-- reg = <0x7e00b200 0x200>;
-- interrupt-parent = <&local_intc>;
-- interrupts = <8>;
--};
--
--&cpu_thermal {
-- coefficients = <(-538) 412000>;
--};
--
--/* enable thermal sensor with the correct compatible property set */
--&thermal {
-- compatible = "brcm,bcm2837-thermal";
-- status = "okay";
--};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi
-deleted file mode 120000
-index dca7c05..0000000
---- a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi
-+++ /dev/null
-@@ -1 +0,0 @@
--../../../../arm/boot/dts/bcm283x-rpi-smsc9514.dtsi
-\ No newline at end of file
-diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi
-deleted file mode 120000
-index cbeebe3..0000000
---- a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi
-+++ /dev/null
-@@ -1 +0,0 @@
--../../../../arm/boot/dts/bcm283x-rpi-usb-host.dtsi
-\ No newline at end of file
-diff --git a/arch/arm64/boot/dts/broadcom/bcm283x.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x.dtsi
-deleted file mode 120000
-index 5f54e4c..0000000
---- a/arch/arm64/boot/dts/broadcom/bcm283x.dtsi
-+++ /dev/null
-@@ -1 +0,0 @@
--../../../../arm/boot/dts/bcm283x.dtsi
-\ No newline at end of file
---
-cgit v1.1
-
-From 4188ea2aeb6dd8f99ab77662f463e41bc464a704 Mon Sep 17 00:00:00 2001
-From: Stefan Wahren <stefan.wahren@i2se.com>
-Date: Sun, 30 Jul 2017 19:10:32 +0200
-Subject: ARM: bcm283x: Define UART pinmuxing on board level
-
-Until RPI 3 and Zero W the pl011 (uart0) was always on pin 14/15. So in
-order to take care of them and other boards in the future,
-we need to define UART pinmuxing on board level.
-
-This work based on Eric Anholt's patch "ARM: bcm2385: Don't force pl011
-onto pins 14/15." and Fabian Vogt's patch "ARM64: dts: bcm2837: assign
-uart0 to BT and uart1 to pin headers".
-
-Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
-Reviewed-by: Eric Anholt <eric@anholt.net>
-Signed-off-by: Eric Anholt <eric@anholt.net>
----
- arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 6 ++++++
- arch/arm/boot/dts/bcm2835-rpi-a.dts | 6 ++++++
- arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 6 ++++++
- arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 6 ++++++
- arch/arm/boot/dts/bcm2835-rpi-b.dts | 6 ++++++
- arch/arm/boot/dts/bcm2835-rpi-zero.dts | 6 ++++++
- arch/arm/boot/dts/bcm2835-rpi.dtsi | 2 +-
- arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 6 ++++++
- arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 10 ++++++++++
- 9 files changed, 53 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
-index d070454..9f86649 100644
---- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
-+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
-@@ -99,3 +99,9 @@
- &hdmi {
- hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
- };
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_gpio14>;
-+ status = "okay";
-+};
-diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts
-index 46d078e..4b1af06 100644
---- a/arch/arm/boot/dts/bcm2835-rpi-a.dts
-+++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts
-@@ -94,3 +94,9 @@
- &hdmi {
- hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
- };
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_gpio14>;
-+ status = "okay";
-+};
-diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
-index 432088e..a846f1e 100644
---- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
-+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
-@@ -101,3 +101,9 @@
- &hdmi {
- hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
- };
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_gpio14>;
-+ status = "okay";
-+};
-diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
-index 4133bc2..e860964 100644
---- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
-+++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
-@@ -94,3 +94,9 @@
- &hdmi {
- hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
- };
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_gpio14>;
-+ status = "okay";
-+};
-diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
-index 4d56fe3..5d77f3f 100644
---- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
-+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
-@@ -89,3 +89,9 @@
- &hdmi {
- hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
- };
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_gpio14>;
-+ status = "okay";
-+};
-diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
-index 79a20d5..7036240 100644
---- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts
-+++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
-@@ -103,3 +103,9 @@
- &hdmi {
- hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
- };
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_gpio14>;
-+ status = "okay";
-+};
-diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
-index e55b362..e36c392 100644
---- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
-+++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
-@@ -39,7 +39,7 @@
- };
-
- alt0: alt0 {
-- brcm,pins = <4 5 7 8 9 10 11 14 15>;
-+ brcm,pins = <4 5 7 8 9 10 11>;
- brcm,function = <BCM2835_FSEL_ALT0>;
- };
- };
-diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
-index bf19e8c..e8de414 100644
---- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
-+++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
-@@ -39,3 +39,9 @@
- &hdmi {
- hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
- };
-+
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_gpio14>;
-+ status = "okay";
-+};
-diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
-index 972f14d..20725ca 100644
---- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
-+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
-@@ -19,7 +19,17 @@
- };
- };
-
-+/* uart0 communicates with the BT module */
-+&uart0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>;
-+ status = "okay";
-+};
-+
-+/* uart1 is mapped to the pin header */
- &uart1 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart1_gpio14>;
- status = "okay";
- };
-
---
-cgit v1.1
-
diff --git a/bcm283x-vc4-fixes.patch b/bcm283x-vc4-fixes.patch
deleted file mode 100644
index d17ff1873..000000000
--- a/bcm283x-vc4-fixes.patch
+++ /dev/null
@@ -1,1803 +0,0 @@
-From d74617cb4aebe5a4cb3eeda3070053ccfc36a0ae Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Tue, 25 Jul 2017 09:27:32 -0700
-Subject: [PATCH 1/6] drm/vc4: Demote user-accessible DRM_ERROR paths to
- DRM_DEBUG.
-
-Userspace shouldn't be able to spam dmesg by passing bad arguments.
-This has particularly become an issues since we started using a bad
-argument to set_tiling to detect if set_tiling was supported.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Fixes: 83753117f1de ("drm/vc4: Add get/set tiling ioctls.")
-Link: https://patchwork.freedesktop.org/patch/msgid/20170725162733.28007-1-eric@anholt.net
-Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
----
- drivers/gpu/drm/vc4/vc4_bo.c | 14 +++---
- drivers/gpu/drm/vc4/vc4_gem.c | 10 ++--
- drivers/gpu/drm/vc4/vc4_kms.c | 2 +-
- drivers/gpu/drm/vc4/vc4_render_cl.c | 40 +++++++--------
- drivers/gpu/drm/vc4/vc4_validate.c | 78 +++++++++++++++---------------
- drivers/gpu/drm/vc4/vc4_validate_shaders.c | 72 +++++++++++++--------------
- 6 files changed, 108 insertions(+), 108 deletions(-)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
-index 487f96412d35..ede80199001d 100644
---- a/drivers/gpu/drm/vc4/vc4_bo.c
-+++ b/drivers/gpu/drm/vc4/vc4_bo.c
-@@ -389,7 +389,7 @@ vc4_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags)
- struct vc4_bo *bo = to_vc4_bo(obj);
-
- if (bo->validated_shader) {
-- DRM_ERROR("Attempting to export shader BO\n");
-+ DRM_DEBUG("Attempting to export shader BO\n");
- return ERR_PTR(-EINVAL);
- }
-
-@@ -410,7 +410,7 @@ int vc4_mmap(struct file *filp, struct vm_area_struct *vma)
- bo = to_vc4_bo(gem_obj);
-
- if (bo->validated_shader && (vma->vm_flags & VM_WRITE)) {
-- DRM_ERROR("mmaping of shader BOs for writing not allowed.\n");
-+ DRM_DEBUG("mmaping of shader BOs for writing not allowed.\n");
- return -EINVAL;
- }
-
-@@ -435,7 +435,7 @@ int vc4_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
- struct vc4_bo *bo = to_vc4_bo(obj);
-
- if (bo->validated_shader && (vma->vm_flags & VM_WRITE)) {
-- DRM_ERROR("mmaping of shader BOs for writing not allowed.\n");
-+ DRM_DEBUG("mmaping of shader BOs for writing not allowed.\n");
- return -EINVAL;
- }
-
-@@ -447,7 +447,7 @@ void *vc4_prime_vmap(struct drm_gem_object *obj)
- struct vc4_bo *bo = to_vc4_bo(obj);
-
- if (bo->validated_shader) {
-- DRM_ERROR("mmaping of shader BOs not allowed.\n");
-+ DRM_DEBUG("mmaping of shader BOs not allowed.\n");
- return ERR_PTR(-EINVAL);
- }
-
-@@ -501,7 +501,7 @@ int vc4_mmap_bo_ioctl(struct drm_device *dev, void *data,
-
- gem_obj = drm_gem_object_lookup(file_priv, args->handle);
- if (!gem_obj) {
-- DRM_ERROR("Failed to look up GEM BO %d\n", args->handle);
-+ DRM_DEBUG("Failed to look up GEM BO %d\n", args->handle);
- return -EINVAL;
- }
-
-@@ -605,7 +605,7 @@ int vc4_set_tiling_ioctl(struct drm_device *dev, void *data,
-
- gem_obj = drm_gem_object_lookup(file_priv, args->handle);
- if (!gem_obj) {
-- DRM_ERROR("Failed to look up GEM BO %d\n", args->handle);
-+ DRM_DEBUG("Failed to look up GEM BO %d\n", args->handle);
- return -ENOENT;
- }
- bo = to_vc4_bo(gem_obj);
-@@ -636,7 +636,7 @@ int vc4_get_tiling_ioctl(struct drm_device *dev, void *data,
-
- gem_obj = drm_gem_object_lookup(file_priv, args->handle);
- if (!gem_obj) {
-- DRM_ERROR("Failed to look up GEM BO %d\n", args->handle);
-+ DRM_DEBUG("Failed to look up GEM BO %d\n", args->handle);
- return -ENOENT;
- }
- bo = to_vc4_bo(gem_obj);
-diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
-index d5b821ad06af..a3e45e67f417 100644
---- a/drivers/gpu/drm/vc4/vc4_gem.c
-+++ b/drivers/gpu/drm/vc4/vc4_gem.c
-@@ -659,7 +659,7 @@ vc4_cl_lookup_bos(struct drm_device *dev,
- /* See comment on bo_index for why we have to check
- * this.
- */
-- DRM_ERROR("Rendering requires BOs to validate\n");
-+ DRM_DEBUG("Rendering requires BOs to validate\n");
- return -EINVAL;
- }
-
-@@ -691,7 +691,7 @@ vc4_cl_lookup_bos(struct drm_device *dev,
- struct drm_gem_object *bo = idr_find(&file_priv->object_idr,
- handles[i]);
- if (!bo) {
-- DRM_ERROR("Failed to look up GEM BO %d: %d\n",
-+ DRM_DEBUG("Failed to look up GEM BO %d: %d\n",
- i, handles[i]);
- ret = -EINVAL;
- spin_unlock(&file_priv->table_lock);
-@@ -729,7 +729,7 @@ vc4_get_bcl(struct drm_device *dev, struct vc4_exec_info *exec)
- args->shader_rec_count >= (UINT_MAX /
- sizeof(struct vc4_shader_state)) ||
- temp_size < exec_size) {
-- DRM_ERROR("overflow in exec arguments\n");
-+ DRM_DEBUG("overflow in exec arguments\n");
- ret = -EINVAL;
- goto fail;
- }
-@@ -974,7 +974,7 @@ vc4_wait_bo_ioctl(struct drm_device *dev, void *data,
-
- gem_obj = drm_gem_object_lookup(file_priv, args->handle);
- if (!gem_obj) {
-- DRM_ERROR("Failed to look up GEM BO %d\n", args->handle);
-+ DRM_DEBUG("Failed to look up GEM BO %d\n", args->handle);
- return -EINVAL;
- }
- bo = to_vc4_bo(gem_obj);
-@@ -1009,7 +1009,7 @@ vc4_submit_cl_ioctl(struct drm_device *dev, void *data,
- int ret = 0;
-
- if ((args->flags & ~VC4_SUBMIT_CL_USE_CLEAR_COLOR) != 0) {
-- DRM_ERROR("Unknown flags: 0x%02x\n", args->flags);
-+ DRM_DEBUG("Unknown flags: 0x%02x\n", args->flags);
- return -EINVAL;
- }
-
-diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
-index bc6ecdc6f104..b2c55eb09ca3 100644
---- a/drivers/gpu/drm/vc4/vc4_kms.c
-+++ b/drivers/gpu/drm/vc4/vc4_kms.c
-@@ -204,7 +204,7 @@ static struct drm_framebuffer *vc4_fb_create(struct drm_device *dev,
- gem_obj = drm_gem_object_lookup(file_priv,
- mode_cmd->handles[0]);
- if (!gem_obj) {
-- DRM_ERROR("Failed to look up GEM BO %d\n",
-+ DRM_DEBUG("Failed to look up GEM BO %d\n",
- mode_cmd->handles[0]);
- return ERR_PTR(-ENOENT);
- }
-diff --git a/drivers/gpu/drm/vc4/vc4_render_cl.c b/drivers/gpu/drm/vc4/vc4_render_cl.c
-index 5dc19429d4ae..da3bfd53f0bd 100644
---- a/drivers/gpu/drm/vc4/vc4_render_cl.c
-+++ b/drivers/gpu/drm/vc4/vc4_render_cl.c
-@@ -378,14 +378,14 @@ static int vc4_full_res_bounds_check(struct vc4_exec_info *exec,
- u32 render_tiles_stride = DIV_ROUND_UP(exec->args->width, 32);
-
- if (surf->offset > obj->base.size) {
-- DRM_ERROR("surface offset %d > BO size %zd\n",
-+ DRM_DEBUG("surface offset %d > BO size %zd\n",
- surf->offset, obj->base.size);
- return -EINVAL;
- }
-
- if ((obj->base.size - surf->offset) / VC4_TILE_BUFFER_SIZE <
- render_tiles_stride * args->max_y_tile + args->max_x_tile) {
-- DRM_ERROR("MSAA tile %d, %d out of bounds "
-+ DRM_DEBUG("MSAA tile %d, %d out of bounds "
- "(bo size %zd, offset %d).\n",
- args->max_x_tile, args->max_y_tile,
- obj->base.size,
-@@ -401,7 +401,7 @@ static int vc4_rcl_msaa_surface_setup(struct vc4_exec_info *exec,
- struct drm_vc4_submit_rcl_surface *surf)
- {
- if (surf->flags != 0 || surf->bits != 0) {
-- DRM_ERROR("MSAA surface had nonzero flags/bits\n");
-+ DRM_DEBUG("MSAA surface had nonzero flags/bits\n");
- return -EINVAL;
- }
-
-@@ -415,7 +415,7 @@ static int vc4_rcl_msaa_surface_setup(struct vc4_exec_info *exec,
- exec->rcl_write_bo[exec->rcl_write_bo_count++] = *obj;
-
- if (surf->offset & 0xf) {
-- DRM_ERROR("MSAA write must be 16b aligned.\n");
-+ DRM_DEBUG("MSAA write must be 16b aligned.\n");
- return -EINVAL;
- }
-
-@@ -437,7 +437,7 @@ static int vc4_rcl_surface_setup(struct vc4_exec_info *exec,
- int ret;
-
- if (surf->flags & ~VC4_SUBMIT_RCL_SURFACE_READ_IS_FULL_RES) {
-- DRM_ERROR("Extra flags set\n");
-+ DRM_DEBUG("Extra flags set\n");
- return -EINVAL;
- }
-
-@@ -453,12 +453,12 @@ static int vc4_rcl_surface_setup(struct vc4_exec_info *exec,
-
- if (surf->flags & VC4_SUBMIT_RCL_SURFACE_READ_IS_FULL_RES) {
- if (surf == &exec->args->zs_write) {
-- DRM_ERROR("general zs write may not be a full-res.\n");
-+ DRM_DEBUG("general zs write may not be a full-res.\n");
- return -EINVAL;
- }
-
- if (surf->bits != 0) {
-- DRM_ERROR("load/store general bits set with "
-+ DRM_DEBUG("load/store general bits set with "
- "full res load/store.\n");
- return -EINVAL;
- }
-@@ -473,19 +473,19 @@ static int vc4_rcl_surface_setup(struct vc4_exec_info *exec,
- if (surf->bits & ~(VC4_LOADSTORE_TILE_BUFFER_TILING_MASK |
- VC4_LOADSTORE_TILE_BUFFER_BUFFER_MASK |
- VC4_LOADSTORE_TILE_BUFFER_FORMAT_MASK)) {
-- DRM_ERROR("Unknown bits in load/store: 0x%04x\n",
-+ DRM_DEBUG("Unknown bits in load/store: 0x%04x\n",
- surf->bits);
- return -EINVAL;
- }
-
- if (tiling > VC4_TILING_FORMAT_LT) {
-- DRM_ERROR("Bad tiling format\n");
-+ DRM_DEBUG("Bad tiling format\n");
- return -EINVAL;
- }
-
- if (buffer == VC4_LOADSTORE_TILE_BUFFER_ZS) {
- if (format != 0) {
-- DRM_ERROR("No color format should be set for ZS\n");
-+ DRM_DEBUG("No color format should be set for ZS\n");
- return -EINVAL;
- }
- cpp = 4;
-@@ -499,16 +499,16 @@ static int vc4_rcl_surface_setup(struct vc4_exec_info *exec,
- cpp = 4;
- break;
- default:
-- DRM_ERROR("Bad tile buffer format\n");
-+ DRM_DEBUG("Bad tile buffer format\n");
- return -EINVAL;
- }
- } else {
-- DRM_ERROR("Bad load/store buffer %d.\n", buffer);
-+ DRM_DEBUG("Bad load/store buffer %d.\n", buffer);
- return -EINVAL;
- }
-
- if (surf->offset & 0xf) {
-- DRM_ERROR("load/store buffer must be 16b aligned.\n");
-+ DRM_DEBUG("load/store buffer must be 16b aligned.\n");
- return -EINVAL;
- }
-
-@@ -533,7 +533,7 @@ vc4_rcl_render_config_surface_setup(struct vc4_exec_info *exec,
- int cpp;
-
- if (surf->flags != 0) {
-- DRM_ERROR("No flags supported on render config.\n");
-+ DRM_DEBUG("No flags supported on render config.\n");
- return -EINVAL;
- }
-
-@@ -541,7 +541,7 @@ vc4_rcl_render_config_surface_setup(struct vc4_exec_info *exec,
- VC4_RENDER_CONFIG_FORMAT_MASK |
- VC4_RENDER_CONFIG_MS_MODE_4X |
- VC4_RENDER_CONFIG_DECIMATE_MODE_4X)) {
-- DRM_ERROR("Unknown bits in render config: 0x%04x\n",
-+ DRM_DEBUG("Unknown bits in render config: 0x%04x\n",
- surf->bits);
- return -EINVAL;
- }
-@@ -556,7 +556,7 @@ vc4_rcl_render_config_surface_setup(struct vc4_exec_info *exec,
- exec->rcl_write_bo[exec->rcl_write_bo_count++] = *obj;
-
- if (tiling > VC4_TILING_FORMAT_LT) {
-- DRM_ERROR("Bad tiling format\n");
-+ DRM_DEBUG("Bad tiling format\n");
- return -EINVAL;
- }
-
-@@ -569,7 +569,7 @@ vc4_rcl_render_config_surface_setup(struct vc4_exec_info *exec,
- cpp = 4;
- break;
- default:
-- DRM_ERROR("Bad tile buffer format\n");
-+ DRM_DEBUG("Bad tile buffer format\n");
- return -EINVAL;
- }
-
-@@ -590,7 +590,7 @@ int vc4_get_rcl(struct drm_device *dev, struct vc4_exec_info *exec)
-
- if (args->min_x_tile > args->max_x_tile ||
- args->min_y_tile > args->max_y_tile) {
-- DRM_ERROR("Bad render tile set (%d,%d)-(%d,%d)\n",
-+ DRM_DEBUG("Bad render tile set (%d,%d)-(%d,%d)\n",
- args->min_x_tile, args->min_y_tile,
- args->max_x_tile, args->max_y_tile);
- return -EINVAL;
-@@ -599,7 +599,7 @@ int vc4_get_rcl(struct drm_device *dev, struct vc4_exec_info *exec)
- if (has_bin &&
- (args->max_x_tile > exec->bin_tiles_x ||
- args->max_y_tile > exec->bin_tiles_y)) {
-- DRM_ERROR("Render tiles (%d,%d) outside of bin config "
-+ DRM_DEBUG("Render tiles (%d,%d) outside of bin config "
- "(%d,%d)\n",
- args->max_x_tile, args->max_y_tile,
- exec->bin_tiles_x, exec->bin_tiles_y);
-@@ -642,7 +642,7 @@ int vc4_get_rcl(struct drm_device *dev, struct vc4_exec_info *exec)
- */
- if (!setup.color_write && !setup.zs_write &&
- !setup.msaa_color_write && !setup.msaa_zs_write) {
-- DRM_ERROR("RCL requires color or Z/S write\n");
-+ DRM_DEBUG("RCL requires color or Z/S write\n");
- return -EINVAL;
- }
-
-diff --git a/drivers/gpu/drm/vc4/vc4_validate.c b/drivers/gpu/drm/vc4/vc4_validate.c
-index 814b512c6b9a..2db485abb186 100644
---- a/drivers/gpu/drm/vc4/vc4_validate.c
-+++ b/drivers/gpu/drm/vc4/vc4_validate.c
-@@ -109,7 +109,7 @@ vc4_use_bo(struct vc4_exec_info *exec, uint32_t hindex)
- struct vc4_bo *bo;
-
- if (hindex >= exec->bo_count) {
-- DRM_ERROR("BO index %d greater than BO count %d\n",
-+ DRM_DEBUG("BO index %d greater than BO count %d\n",
- hindex, exec->bo_count);
- return NULL;
- }
-@@ -117,7 +117,7 @@ vc4_use_bo(struct vc4_exec_info *exec, uint32_t hindex)
- bo = to_vc4_bo(&obj->base);
-
- if (bo->validated_shader) {
-- DRM_ERROR("Trying to use shader BO as something other than "
-+ DRM_DEBUG("Trying to use shader BO as something other than "
- "a shader\n");
- return NULL;
- }
-@@ -172,7 +172,7 @@ vc4_check_tex_size(struct vc4_exec_info *exec, struct drm_gem_cma_object *fbo,
- * our math.
- */
- if (width > 4096 || height > 4096) {
-- DRM_ERROR("Surface dimensions (%d,%d) too large",
-+ DRM_DEBUG("Surface dimensions (%d,%d) too large",
- width, height);
- return false;
- }
-@@ -191,7 +191,7 @@ vc4_check_tex_size(struct vc4_exec_info *exec, struct drm_gem_cma_object *fbo,
- aligned_height = round_up(height, utile_h);
- break;
- default:
-- DRM_ERROR("buffer tiling %d unsupported\n", tiling_format);
-+ DRM_DEBUG("buffer tiling %d unsupported\n", tiling_format);
- return false;
- }
-
-@@ -200,7 +200,7 @@ vc4_check_tex_size(struct vc4_exec_info *exec, struct drm_gem_cma_object *fbo,
-
- if (size + offset < size ||
- size + offset > fbo->base.size) {
-- DRM_ERROR("Overflow in %dx%d (%dx%d) fbo size (%d + %d > %zd)\n",
-+ DRM_DEBUG("Overflow in %dx%d (%dx%d) fbo size (%d + %d > %zd)\n",
- width, height,
- aligned_width, aligned_height,
- size, offset, fbo->base.size);
-@@ -214,7 +214,7 @@ static int
- validate_flush(VALIDATE_ARGS)
- {
- if (!validate_bin_pos(exec, untrusted, exec->args->bin_cl_size - 1)) {
-- DRM_ERROR("Bin CL must end with VC4_PACKET_FLUSH\n");
-+ DRM_DEBUG("Bin CL must end with VC4_PACKET_FLUSH\n");
- return -EINVAL;
- }
- exec->found_flush = true;
-@@ -226,13 +226,13 @@ static int
- validate_start_tile_binning(VALIDATE_ARGS)
- {
- if (exec->found_start_tile_binning_packet) {
-- DRM_ERROR("Duplicate VC4_PACKET_START_TILE_BINNING\n");
-+ DRM_DEBUG("Duplicate VC4_PACKET_START_TILE_BINNING\n");
- return -EINVAL;
- }
- exec->found_start_tile_binning_packet = true;
-
- if (!exec->found_tile_binning_mode_config_packet) {
-- DRM_ERROR("missing VC4_PACKET_TILE_BINNING_MODE_CONFIG\n");
-+ DRM_DEBUG("missing VC4_PACKET_TILE_BINNING_MODE_CONFIG\n");
- return -EINVAL;
- }
-
-@@ -243,7 +243,7 @@ static int
- validate_increment_semaphore(VALIDATE_ARGS)
- {
- if (!validate_bin_pos(exec, untrusted, exec->args->bin_cl_size - 2)) {
-- DRM_ERROR("Bin CL must end with "
-+ DRM_DEBUG("Bin CL must end with "
- "VC4_PACKET_INCREMENT_SEMAPHORE\n");
- return -EINVAL;
- }
-@@ -264,7 +264,7 @@ validate_indexed_prim_list(VALIDATE_ARGS)
-
- /* Check overflow condition */
- if (exec->shader_state_count == 0) {
-- DRM_ERROR("shader state must precede primitives\n");
-+ DRM_DEBUG("shader state must precede primitives\n");
- return -EINVAL;
- }
- shader_state = &exec->shader_state[exec->shader_state_count - 1];
-@@ -281,7 +281,7 @@ validate_indexed_prim_list(VALIDATE_ARGS)
-
- if (offset > ib->base.size ||
- (ib->base.size - offset) / index_size < length) {
-- DRM_ERROR("IB access overflow (%d + %d*%d > %zd)\n",
-+ DRM_DEBUG("IB access overflow (%d + %d*%d > %zd)\n",
- offset, length, index_size, ib->base.size);
- return -EINVAL;
- }
-@@ -301,13 +301,13 @@ validate_gl_array_primitive(VALIDATE_ARGS)
-
- /* Check overflow condition */
- if (exec->shader_state_count == 0) {
-- DRM_ERROR("shader state must precede primitives\n");
-+ DRM_DEBUG("shader state must precede primitives\n");
- return -EINVAL;
- }
- shader_state = &exec->shader_state[exec->shader_state_count - 1];
-
- if (length + base_index < length) {
-- DRM_ERROR("primitive vertex count overflow\n");
-+ DRM_DEBUG("primitive vertex count overflow\n");
- return -EINVAL;
- }
- max_index = length + base_index - 1;
-@@ -324,7 +324,7 @@ validate_gl_shader_state(VALIDATE_ARGS)
- uint32_t i = exec->shader_state_count++;
-
- if (i >= exec->shader_state_size) {
-- DRM_ERROR("More requests for shader states than declared\n");
-+ DRM_DEBUG("More requests for shader states than declared\n");
- return -EINVAL;
- }
-
-@@ -332,7 +332,7 @@ validate_gl_shader_state(VALIDATE_ARGS)
- exec->shader_state[i].max_index = 0;
-
- if (exec->shader_state[i].addr & ~0xf) {
-- DRM_ERROR("high bits set in GL shader rec reference\n");
-+ DRM_DEBUG("high bits set in GL shader rec reference\n");
- return -EINVAL;
- }
-
-@@ -356,7 +356,7 @@ validate_tile_binning_config(VALIDATE_ARGS)
- int bin_slot;
-
- if (exec->found_tile_binning_mode_config_packet) {
-- DRM_ERROR("Duplicate VC4_PACKET_TILE_BINNING_MODE_CONFIG\n");
-+ DRM_DEBUG("Duplicate VC4_PACKET_TILE_BINNING_MODE_CONFIG\n");
- return -EINVAL;
- }
- exec->found_tile_binning_mode_config_packet = true;
-@@ -368,14 +368,14 @@ validate_tile_binning_config(VALIDATE_ARGS)
-
- if (exec->bin_tiles_x == 0 ||
- exec->bin_tiles_y == 0) {
-- DRM_ERROR("Tile binning config of %dx%d too small\n",
-+ DRM_DEBUG("Tile binning config of %dx%d too small\n",
- exec->bin_tiles_x, exec->bin_tiles_y);
- return -EINVAL;
- }
-
- if (flags & (VC4_BIN_CONFIG_DB_NON_MS |
- VC4_BIN_CONFIG_TILE_BUFFER_64BIT)) {
-- DRM_ERROR("unsupported binning config flags 0x%02x\n", flags);
-+ DRM_DEBUG("unsupported binning config flags 0x%02x\n", flags);
- return -EINVAL;
- }
-
-@@ -493,20 +493,20 @@ vc4_validate_bin_cl(struct drm_device *dev,
- const struct cmd_info *info;
-
- if (cmd >= ARRAY_SIZE(cmd_info)) {
-- DRM_ERROR("0x%08x: packet %d out of bounds\n",
-+ DRM_DEBUG("0x%08x: packet %d out of bounds\n",
- src_offset, cmd);
- return -EINVAL;
- }
-
- info = &cmd_info[cmd];
- if (!info->name) {
-- DRM_ERROR("0x%08x: packet %d invalid\n",
-+ DRM_DEBUG("0x%08x: packet %d invalid\n",
- src_offset, cmd);
- return -EINVAL;
- }
-
- if (src_offset + info->len > len) {
-- DRM_ERROR("0x%08x: packet %d (%s) length 0x%08x "
-+ DRM_DEBUG("0x%08x: packet %d (%s) length 0x%08x "
- "exceeds bounds (0x%08x)\n",
- src_offset, cmd, info->name, info->len,
- src_offset + len);
-@@ -519,7 +519,7 @@ vc4_validate_bin_cl(struct drm_device *dev,
- if (info->func && info->func(exec,
- dst_pkt + 1,
- src_pkt + 1)) {
-- DRM_ERROR("0x%08x: packet %d (%s) failed to validate\n",
-+ DRM_DEBUG("0x%08x: packet %d (%s) failed to validate\n",
- src_offset, cmd, info->name);
- return -EINVAL;
- }
-@@ -537,7 +537,7 @@ vc4_validate_bin_cl(struct drm_device *dev,
- exec->ct0ea = exec->ct0ca + dst_offset;
-
- if (!exec->found_start_tile_binning_packet) {
-- DRM_ERROR("Bin CL missing VC4_PACKET_START_TILE_BINNING\n");
-+ DRM_DEBUG("Bin CL missing VC4_PACKET_START_TILE_BINNING\n");
- return -EINVAL;
- }
-
-@@ -549,7 +549,7 @@ vc4_validate_bin_cl(struct drm_device *dev,
- * semaphore increment.
- */
- if (!exec->found_increment_semaphore_packet || !exec->found_flush) {
-- DRM_ERROR("Bin CL missing VC4_PACKET_INCREMENT_SEMAPHORE + "
-+ DRM_DEBUG("Bin CL missing VC4_PACKET_INCREMENT_SEMAPHORE + "
- "VC4_PACKET_FLUSH\n");
- return -EINVAL;
- }
-@@ -588,11 +588,11 @@ reloc_tex(struct vc4_exec_info *exec,
- uint32_t remaining_size = tex->base.size - p0;
-
- if (p0 > tex->base.size - 4) {
-- DRM_ERROR("UBO offset greater than UBO size\n");
-+ DRM_DEBUG("UBO offset greater than UBO size\n");
- goto fail;
- }
- if (p1 > remaining_size - 4) {
-- DRM_ERROR("UBO clamp would allow reads "
-+ DRM_DEBUG("UBO clamp would allow reads "
- "outside of UBO\n");
- goto fail;
- }
-@@ -612,14 +612,14 @@ reloc_tex(struct vc4_exec_info *exec,
- if (VC4_GET_FIELD(p3, VC4_TEX_P2_PTYPE) ==
- VC4_TEX_P2_PTYPE_CUBE_MAP_STRIDE) {
- if (cube_map_stride) {
-- DRM_ERROR("Cube map stride set twice\n");
-+ DRM_DEBUG("Cube map stride set twice\n");
- goto fail;
- }
-
- cube_map_stride = p3 & VC4_TEX_P2_CMST_MASK;
- }
- if (!cube_map_stride) {
-- DRM_ERROR("Cube map stride not set\n");
-+ DRM_DEBUG("Cube map stride not set\n");
- goto fail;
- }
- }
-@@ -660,7 +660,7 @@ reloc_tex(struct vc4_exec_info *exec,
- case VC4_TEXTURE_TYPE_RGBA64:
- case VC4_TEXTURE_TYPE_YUV422R:
- default:
-- DRM_ERROR("Texture format %d unsupported\n", type);
-+ DRM_DEBUG("Texture format %d unsupported\n", type);
- goto fail;
- }
- utile_w = utile_width(cpp);
-@@ -713,7 +713,7 @@ reloc_tex(struct vc4_exec_info *exec,
- level_size = aligned_width * cpp * aligned_height;
-
- if (offset < level_size) {
-- DRM_ERROR("Level %d (%dx%d -> %dx%d) size %db "
-+ DRM_DEBUG("Level %d (%dx%d -> %dx%d) size %db "
- "overflowed buffer bounds (offset %d)\n",
- i, level_width, level_height,
- aligned_width, aligned_height,
-@@ -764,7 +764,7 @@ validate_gl_shader_rec(struct drm_device *dev,
-
- nr_relocs = ARRAY_SIZE(shader_reloc_offsets) + nr_attributes;
- if (nr_relocs * 4 > exec->shader_rec_size) {
-- DRM_ERROR("overflowed shader recs reading %d handles "
-+ DRM_DEBUG("overflowed shader recs reading %d handles "
- "from %d bytes left\n",
- nr_relocs, exec->shader_rec_size);
- return -EINVAL;
-@@ -774,7 +774,7 @@ validate_gl_shader_rec(struct drm_device *dev,
- exec->shader_rec_size -= nr_relocs * 4;
-
- if (packet_size > exec->shader_rec_size) {
-- DRM_ERROR("overflowed shader recs copying %db packet "
-+ DRM_DEBUG("overflowed shader recs copying %db packet "
- "from %d bytes left\n",
- packet_size, exec->shader_rec_size);
- return -EINVAL;
-@@ -794,7 +794,7 @@ validate_gl_shader_rec(struct drm_device *dev,
-
- for (i = 0; i < shader_reloc_count; i++) {
- if (src_handles[i] > exec->bo_count) {
-- DRM_ERROR("Shader handle %d too big\n", src_handles[i]);
-+ DRM_DEBUG("Shader handle %d too big\n", src_handles[i]);
- return -EINVAL;
- }
-
-@@ -810,13 +810,13 @@ validate_gl_shader_rec(struct drm_device *dev,
-
- if (((*(uint16_t *)pkt_u & VC4_SHADER_FLAG_FS_SINGLE_THREAD) == 0) !=
- to_vc4_bo(&bo[0]->base)->validated_shader->is_threaded) {
-- DRM_ERROR("Thread mode of CL and FS do not match\n");
-+ DRM_DEBUG("Thread mode of CL and FS do not match\n");
- return -EINVAL;
- }
-
- if (to_vc4_bo(&bo[1]->base)->validated_shader->is_threaded ||
- to_vc4_bo(&bo[2]->base)->validated_shader->is_threaded) {
-- DRM_ERROR("cs and vs cannot be threaded\n");
-+ DRM_DEBUG("cs and vs cannot be threaded\n");
- return -EINVAL;
- }
-
-@@ -831,7 +831,7 @@ validate_gl_shader_rec(struct drm_device *dev,
- *(uint32_t *)(pkt_v + o) = bo[i]->paddr + src_offset;
-
- if (src_offset != 0) {
-- DRM_ERROR("Shaders must be at offset 0 of "
-+ DRM_DEBUG("Shaders must be at offset 0 of "
- "the BO.\n");
- return -EINVAL;
- }
-@@ -842,7 +842,7 @@ validate_gl_shader_rec(struct drm_device *dev,
-
- if (validated_shader->uniforms_src_size >
- exec->uniforms_size) {
-- DRM_ERROR("Uniforms src buffer overflow\n");
-+ DRM_DEBUG("Uniforms src buffer overflow\n");
- return -EINVAL;
- }
-
-@@ -900,7 +900,7 @@ validate_gl_shader_rec(struct drm_device *dev,
-
- if (vbo->base.size < offset ||
- vbo->base.size - offset < attr_size) {
-- DRM_ERROR("BO offset overflow (%d + %d > %zu)\n",
-+ DRM_DEBUG("BO offset overflow (%d + %d > %zu)\n",
- offset, attr_size, vbo->base.size);
- return -EINVAL;
- }
-@@ -909,7 +909,7 @@ validate_gl_shader_rec(struct drm_device *dev,
- max_index = ((vbo->base.size - offset - attr_size) /
- stride);
- if (state->max_index > max_index) {
-- DRM_ERROR("primitives use index %d out of "
-+ DRM_DEBUG("primitives use index %d out of "
- "supplied %d\n",
- state->max_index, max_index);
- return -EINVAL;
-diff --git a/drivers/gpu/drm/vc4/vc4_validate_shaders.c b/drivers/gpu/drm/vc4/vc4_validate_shaders.c
-index 0b2df5c6efb4..d3f15bf60900 100644
---- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c
-+++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c
-@@ -200,7 +200,7 @@ check_tmu_write(struct vc4_validated_shader_info *validated_shader,
- uint32_t clamp_reg, clamp_offset;
-
- if (sig == QPU_SIG_SMALL_IMM) {
-- DRM_ERROR("direct TMU read used small immediate\n");
-+ DRM_DEBUG("direct TMU read used small immediate\n");
- return false;
- }
-
-@@ -209,7 +209,7 @@ check_tmu_write(struct vc4_validated_shader_info *validated_shader,
- */
- if (is_mul ||
- QPU_GET_FIELD(inst, QPU_OP_ADD) != QPU_A_ADD) {
-- DRM_ERROR("direct TMU load wasn't an add\n");
-+ DRM_DEBUG("direct TMU load wasn't an add\n");
- return false;
- }
-
-@@ -220,13 +220,13 @@ check_tmu_write(struct vc4_validated_shader_info *validated_shader,
- */
- clamp_reg = raddr_add_a_to_live_reg_index(inst);
- if (clamp_reg == ~0) {
-- DRM_ERROR("direct TMU load wasn't clamped\n");
-+ DRM_DEBUG("direct TMU load wasn't clamped\n");
- return false;
- }
-
- clamp_offset = validation_state->live_min_clamp_offsets[clamp_reg];
- if (clamp_offset == ~0) {
-- DRM_ERROR("direct TMU load wasn't clamped\n");
-+ DRM_DEBUG("direct TMU load wasn't clamped\n");
- return false;
- }
-
-@@ -238,7 +238,7 @@ check_tmu_write(struct vc4_validated_shader_info *validated_shader,
-
- if (!(add_b == QPU_MUX_A && raddr_a == QPU_R_UNIF) &&
- !(add_b == QPU_MUX_B && raddr_b == QPU_R_UNIF)) {
-- DRM_ERROR("direct TMU load didn't add to a uniform\n");
-+ DRM_DEBUG("direct TMU load didn't add to a uniform\n");
- return false;
- }
-
-@@ -246,14 +246,14 @@ check_tmu_write(struct vc4_validated_shader_info *validated_shader,
- } else {
- if (raddr_a == QPU_R_UNIF || (sig != QPU_SIG_SMALL_IMM &&
- raddr_b == QPU_R_UNIF)) {
-- DRM_ERROR("uniform read in the same instruction as "
-+ DRM_DEBUG("uniform read in the same instruction as "
- "texture setup.\n");
- return false;
- }
- }
-
- if (validation_state->tmu_write_count[tmu] >= 4) {
-- DRM_ERROR("TMU%d got too many parameters before dispatch\n",
-+ DRM_DEBUG("TMU%d got too many parameters before dispatch\n",
- tmu);
- return false;
- }
-@@ -265,7 +265,7 @@ check_tmu_write(struct vc4_validated_shader_info *validated_shader,
- */
- if (!is_direct) {
- if (validation_state->needs_uniform_address_update) {
-- DRM_ERROR("Texturing with undefined uniform address\n");
-+ DRM_DEBUG("Texturing with undefined uniform address\n");
- return false;
- }
-
-@@ -336,35 +336,35 @@ validate_uniform_address_write(struct vc4_validated_shader_info *validated_shade
- case QPU_SIG_LOAD_TMU1:
- break;
- default:
-- DRM_ERROR("uniforms address change must be "
-+ DRM_DEBUG("uniforms address change must be "
- "normal math\n");
- return false;
- }
-
- if (is_mul || QPU_GET_FIELD(inst, QPU_OP_ADD) != QPU_A_ADD) {
-- DRM_ERROR("Uniform address reset must be an ADD.\n");
-+ DRM_DEBUG("Uniform address reset must be an ADD.\n");
- return false;
- }
-
- if (QPU_GET_FIELD(inst, QPU_COND_ADD) != QPU_COND_ALWAYS) {
-- DRM_ERROR("Uniform address reset must be unconditional.\n");
-+ DRM_DEBUG("Uniform address reset must be unconditional.\n");
- return false;
- }
-
- if (QPU_GET_FIELD(inst, QPU_PACK) != QPU_PACK_A_NOP &&
- !(inst & QPU_PM)) {
-- DRM_ERROR("No packing allowed on uniforms reset\n");
-+ DRM_DEBUG("No packing allowed on uniforms reset\n");
- return false;
- }
-
- if (add_lri == -1) {
-- DRM_ERROR("First argument of uniform address write must be "
-+ DRM_DEBUG("First argument of uniform address write must be "
- "an immediate value.\n");
- return false;
- }
-
- if (validation_state->live_immediates[add_lri] != expected_offset) {
-- DRM_ERROR("Resetting uniforms with offset %db instead of %db\n",
-+ DRM_DEBUG("Resetting uniforms with offset %db instead of %db\n",
- validation_state->live_immediates[add_lri],
- expected_offset);
- return false;
-@@ -372,7 +372,7 @@ validate_uniform_address_write(struct vc4_validated_shader_info *validated_shade
-
- if (!(add_b == QPU_MUX_A && raddr_a == QPU_R_UNIF) &&
- !(add_b == QPU_MUX_B && raddr_b == QPU_R_UNIF)) {
-- DRM_ERROR("Second argument of uniform address write must be "
-+ DRM_DEBUG("Second argument of uniform address write must be "
- "a uniform.\n");
- return false;
- }
-@@ -417,7 +417,7 @@ check_reg_write(struct vc4_validated_shader_info *validated_shader,
- switch (waddr) {
- case QPU_W_UNIFORMS_ADDRESS:
- if (is_b) {
-- DRM_ERROR("relative uniforms address change "
-+ DRM_DEBUG("relative uniforms address change "
- "unsupported\n");
- return false;
- }
-@@ -452,11 +452,11 @@ check_reg_write(struct vc4_validated_shader_info *validated_shader,
- /* XXX: I haven't thought about these, so don't support them
- * for now.
- */
-- DRM_ERROR("Unsupported waddr %d\n", waddr);
-+ DRM_DEBUG("Unsupported waddr %d\n", waddr);
- return false;
-
- case QPU_W_VPM_ADDR:
-- DRM_ERROR("General VPM DMA unsupported\n");
-+ DRM_DEBUG("General VPM DMA unsupported\n");
- return false;
-
- case QPU_W_VPM:
-@@ -559,7 +559,7 @@ check_instruction_writes(struct vc4_validated_shader_info *validated_shader,
- bool ok;
-
- if (is_tmu_write(waddr_add) && is_tmu_write(waddr_mul)) {
-- DRM_ERROR("ADD and MUL both set up textures\n");
-+ DRM_DEBUG("ADD and MUL both set up textures\n");
- return false;
- }
-
-@@ -588,7 +588,7 @@ check_branch(uint64_t inst,
- * there's no need for it.
- */
- if (waddr_add != QPU_W_NOP || waddr_mul != QPU_W_NOP) {
-- DRM_ERROR("branch instruction at %d wrote a register.\n",
-+ DRM_DEBUG("branch instruction at %d wrote a register.\n",
- validation_state->ip);
- return false;
- }
-@@ -614,7 +614,7 @@ check_instruction_reads(struct vc4_validated_shader_info *validated_shader,
- validated_shader->uniforms_size += 4;
-
- if (validation_state->needs_uniform_address_update) {
-- DRM_ERROR("Uniform read with undefined uniform "
-+ DRM_DEBUG("Uniform read with undefined uniform "
- "address\n");
- return false;
- }
-@@ -660,19 +660,19 @@ vc4_validate_branches(struct vc4_shader_validation_state *validation_state)
- continue;
-
- if (ip - last_branch < 4) {
-- DRM_ERROR("Branch at %d during delay slots\n", ip);
-+ DRM_DEBUG("Branch at %d during delay slots\n", ip);
- return false;
- }
- last_branch = ip;
-
- if (inst & QPU_BRANCH_REG) {
-- DRM_ERROR("branching from register relative "
-+ DRM_DEBUG("branching from register relative "
- "not supported\n");
- return false;
- }
-
- if (!(inst & QPU_BRANCH_REL)) {
-- DRM_ERROR("relative branching required\n");
-+ DRM_DEBUG("relative branching required\n");
- return false;
- }
-
-@@ -682,13 +682,13 @@ vc4_validate_branches(struct vc4_shader_validation_state *validation_state)
- * end of the shader object.
- */
- if (branch_imm % sizeof(inst) != 0) {
-- DRM_ERROR("branch target not aligned\n");
-+ DRM_DEBUG("branch target not aligned\n");
- return false;
- }
-
- branch_target_ip = after_delay_ip + (branch_imm >> 3);
- if (branch_target_ip >= validation_state->max_ip) {
-- DRM_ERROR("Branch at %d outside of shader (ip %d/%d)\n",
-+ DRM_DEBUG("Branch at %d outside of shader (ip %d/%d)\n",
- ip, branch_target_ip,
- validation_state->max_ip);
- return false;
-@@ -699,7 +699,7 @@ vc4_validate_branches(struct vc4_shader_validation_state *validation_state)
- * the shader.
- */
- if (after_delay_ip >= validation_state->max_ip) {
-- DRM_ERROR("Branch at %d continues past shader end "
-+ DRM_DEBUG("Branch at %d continues past shader end "
- "(%d/%d)\n",
- ip, after_delay_ip, validation_state->max_ip);
- return false;
-@@ -709,7 +709,7 @@ vc4_validate_branches(struct vc4_shader_validation_state *validation_state)
- }
-
- if (max_branch_target > validation_state->max_ip - 3) {
-- DRM_ERROR("Branch landed after QPU_SIG_PROG_END");
-+ DRM_DEBUG("Branch landed after QPU_SIG_PROG_END");
- return false;
- }
-
-@@ -750,7 +750,7 @@ vc4_handle_branch_target(struct vc4_shader_validation_state *validation_state)
- return true;
-
- if (texturing_in_progress(validation_state)) {
-- DRM_ERROR("Branch target landed during TMU setup\n");
-+ DRM_DEBUG("Branch target landed during TMU setup\n");
- return false;
- }
-
-@@ -837,7 +837,7 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
- case QPU_SIG_LAST_THREAD_SWITCH:
- if (!check_instruction_writes(validated_shader,
- &validation_state)) {
-- DRM_ERROR("Bad write at ip %d\n", ip);
-+ DRM_DEBUG("Bad write at ip %d\n", ip);
- goto fail;
- }
-
-@@ -855,7 +855,7 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
- validated_shader->is_threaded = true;
-
- if (ip < last_thread_switch_ip + 3) {
-- DRM_ERROR("Thread switch too soon after "
-+ DRM_DEBUG("Thread switch too soon after "
- "last switch at ip %d\n", ip);
- goto fail;
- }
-@@ -867,7 +867,7 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
- case QPU_SIG_LOAD_IMM:
- if (!check_instruction_writes(validated_shader,
- &validation_state)) {
-- DRM_ERROR("Bad LOAD_IMM write at ip %d\n", ip);
-+ DRM_DEBUG("Bad LOAD_IMM write at ip %d\n", ip);
- goto fail;
- }
- break;
-@@ -878,14 +878,14 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
- goto fail;
-
- if (ip < last_thread_switch_ip + 3) {
-- DRM_ERROR("Branch in thread switch at ip %d",
-+ DRM_DEBUG("Branch in thread switch at ip %d",
- ip);
- goto fail;
- }
-
- break;
- default:
-- DRM_ERROR("Unsupported QPU signal %d at "
-+ DRM_DEBUG("Unsupported QPU signal %d at "
- "instruction %d\n", sig, ip);
- goto fail;
- }
-@@ -898,7 +898,7 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
- }
-
- if (ip == validation_state.max_ip) {
-- DRM_ERROR("shader failed to terminate before "
-+ DRM_DEBUG("shader failed to terminate before "
- "shader BO end at %zd\n",
- shader_obj->base.size);
- goto fail;
-@@ -907,7 +907,7 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
- /* Might corrupt other thread */
- if (validated_shader->is_threaded &&
- validation_state.all_registers_used) {
-- DRM_ERROR("Shader uses threading, but uses the upper "
-+ DRM_DEBUG("Shader uses threading, but uses the upper "
- "half of the registers, too\n");
- goto fail;
- }
---
-2.13.5
-
-From 28b369f5abc790f56e668869d88f261ca7a27c55 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Tue, 8 Aug 2017 13:56:05 -0700
-Subject: [PATCH 2/6] drm/vc4: Fix leak of HDMI EDID
-
-We don't keep a pointer to it around anywhere, so it's our job to free
-it.
-
-Cc: Stefan Wahren <stefan.wahren@i2se.com>
-Link: https://github.com/anholt/linux/issues/101
-Fixes: c8b75bca92cb ("drm/vc4: Add KMS support for Raspberry Pi.")
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Link: https://patchwork.freedesktop.org/patch/msgid/20170808205605.4432-1-eric@anholt.net
-Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
----
- drivers/gpu/drm/vc4/vc4_hdmi.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index ed63d4e85762..f7803fd7f47c 100644
---- a/drivers/gpu/drm/vc4/vc4_hdmi.c
-+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -260,6 +260,7 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
- drm_mode_connector_update_edid_property(connector, edid);
- ret = drm_add_edid_modes(connector, edid);
- drm_edid_to_eld(connector, edid);
-+ kfree(edid);
-
- return ret;
- }
---
-2.13.5
-
-From 3b688b6d347f777a8e86165decc33198b063b8c0 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Tue, 25 Jul 2017 11:27:16 -0700
-Subject: [PATCH 3/6] drm/vc4: Start using u64_to_user_ptr.
-
-Chris Wilson pointed out this little cleanup in a review of new code,
-so let's fix up the code I was copying from.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Link: https://patchwork.freedesktop.org/patch/msgid/20170725182718.31468-1-eric@anholt.net
-Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
----
- drivers/gpu/drm/vc4/vc4_gem.c | 11 +++++------
- 1 file changed, 5 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
-index a3e45e67f417..8b551bc630c4 100644
---- a/drivers/gpu/drm/vc4/vc4_gem.c
-+++ b/drivers/gpu/drm/vc4/vc4_gem.c
-@@ -119,7 +119,7 @@ vc4_get_hang_state_ioctl(struct drm_device *dev, void *data,
- bo_state[i].size = vc4_bo->base.base.size;
- }
-
-- if (copy_to_user((void __user *)(uintptr_t)get_state->bo,
-+ if (copy_to_user(u64_to_user_ptr(get_state->bo),
- bo_state,
- state->bo_count * sizeof(*bo_state)))
- ret = -EFAULT;
-@@ -678,8 +678,7 @@ vc4_cl_lookup_bos(struct drm_device *dev,
- goto fail;
- }
-
-- if (copy_from_user(handles,
-- (void __user *)(uintptr_t)args->bo_handles,
-+ if (copy_from_user(handles, u64_to_user_ptr(args->bo_handles),
- exec->bo_count * sizeof(uint32_t))) {
- ret = -EFAULT;
- DRM_ERROR("Failed to copy in GEM handles\n");
-@@ -755,21 +754,21 @@ vc4_get_bcl(struct drm_device *dev, struct vc4_exec_info *exec)
- exec->shader_state_size = args->shader_rec_count;
-
- if (copy_from_user(bin,
-- (void __user *)(uintptr_t)args->bin_cl,
-+ u64_to_user_ptr(args->bin_cl),
- args->bin_cl_size)) {
- ret = -EFAULT;
- goto fail;
- }
-
- if (copy_from_user(exec->shader_rec_u,
-- (void __user *)(uintptr_t)args->shader_rec,
-+ u64_to_user_ptr(args->shader_rec),
- args->shader_rec_size)) {
- ret = -EFAULT;
- goto fail;
- }
-
- if (copy_from_user(exec->uniforms_u,
-- (void __user *)(uintptr_t)args->uniforms,
-+ u64_to_user_ptr(args->uniforms),
- args->uniforms_size)) {
- ret = -EFAULT;
- goto fail;
---
-2.13.5
-
-From da81d76bce216c160d2924a52e362b160bbb6ca1 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Tue, 25 Jul 2017 11:27:17 -0700
-Subject: [PATCH 4/6] drm/vc4: Add an ioctl for labeling GEM BOs for summary
- stats
-
-This has proven immensely useful for debugging memory leaks and
-overallocation (which is a rather serious concern on the platform,
-given that we typically run at about 256MB of CMA out of up to 1GB
-total memory, with framebuffers that are about 8MB ecah).
-
-The state of the art without this is to dump debug logs from every GL
-application, guess as to kernel allocations based on bo_stats, and try
-to merge that all together into a global picture of memory allocation
-state. With this, you can add a couple of calls to the debug build of
-the 3D driver and get a pretty detailed view of GPU memory usage from
-/debug/dri/0/bo_stats (or when we debug print to dmesg on allocation
-failure).
-
-The Mesa side currently labels at the gallium resource level (so you
-see that a 1920x20 pixmap has been created, presumably for the window
-system panel), but we could extend that to be even more useful with
-glObjectLabel() names being sent all the way down to the kernel.
-
-(partial) example of sorted debugfs output with Mesa labeling all
-resources:
-
- kernel BO cache: 16392kb BOs (3)
- tiling shadow 1920x1080: 8160kb BOs (1)
- resource 1920x1080@32/0: 8160kb BOs (1)
-scanout resource 1920x1080@32/0: 8100kb BOs (1)
- kernel: 8100kb BOs (1)
-
-v2: Use strndup_user(), use lockdep assertion instead of just a
- comment, fix an array[-1] reference, extend comment about name
- freeing.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Link: https://patchwork.freedesktop.org/patch/msgid/20170725182718.31468-2-eric@anholt.net
-Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
----
- drivers/gpu/drm/vc4/vc4_bo.c | 258 ++++++++++++++++++++++++++++--------
- drivers/gpu/drm/vc4/vc4_drv.c | 8 +-
- drivers/gpu/drm/vc4/vc4_drv.h | 39 +++++-
- drivers/gpu/drm/vc4/vc4_gem.c | 2 +-
- drivers/gpu/drm/vc4/vc4_render_cl.c | 2 +-
- drivers/gpu/drm/vc4/vc4_v3d.c | 3 +-
- include/uapi/drm/vc4_drm.h | 11 ++
- 7 files changed, 257 insertions(+), 66 deletions(-)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
-index ede80199001d..27c4a927311f 100644
---- a/drivers/gpu/drm/vc4/vc4_bo.c
-+++ b/drivers/gpu/drm/vc4/vc4_bo.c
-@@ -24,21 +24,35 @@
- #include "vc4_drv.h"
- #include "uapi/drm/vc4_drm.h"
-
-+static const char * const bo_type_names[] = {
-+ "kernel",
-+ "V3D",
-+ "V3D shader",
-+ "dumb",
-+ "binner",
-+ "RCL",
-+ "BCL",
-+ "kernel BO cache",
-+};
-+
-+static bool is_user_label(int label)
-+{
-+ return label >= VC4_BO_TYPE_COUNT;
-+}
-+
- static void vc4_bo_stats_dump(struct vc4_dev *vc4)
- {
-- DRM_INFO("num bos allocated: %d\n",
-- vc4->bo_stats.num_allocated);
-- DRM_INFO("size bos allocated: %dkb\n",
-- vc4->bo_stats.size_allocated / 1024);
-- DRM_INFO("num bos used: %d\n",
-- vc4->bo_stats.num_allocated - vc4->bo_stats.num_cached);
-- DRM_INFO("size bos used: %dkb\n",
-- (vc4->bo_stats.size_allocated -
-- vc4->bo_stats.size_cached) / 1024);
-- DRM_INFO("num bos cached: %d\n",
-- vc4->bo_stats.num_cached);
-- DRM_INFO("size bos cached: %dkb\n",
-- vc4->bo_stats.size_cached / 1024);
-+ int i;
-+
-+ for (i = 0; i < vc4->num_labels; i++) {
-+ if (!vc4->bo_labels[i].num_allocated)
-+ continue;
-+
-+ DRM_INFO("%30s: %6dkb BOs (%d)\n",
-+ vc4->bo_labels[i].name,
-+ vc4->bo_labels[i].size_allocated / 1024,
-+ vc4->bo_labels[i].num_allocated);
-+ }
- }
-
- #ifdef CONFIG_DEBUG_FS
-@@ -47,30 +61,103 @@ int vc4_bo_stats_debugfs(struct seq_file *m, void *unused)
- struct drm_info_node *node = (struct drm_info_node *)m->private;
- struct drm_device *dev = node->minor->dev;
- struct vc4_dev *vc4 = to_vc4_dev(dev);
-- struct vc4_bo_stats stats;
-+ int i;
-
-- /* Take a snapshot of the current stats with the lock held. */
- mutex_lock(&vc4->bo_lock);
-- stats = vc4->bo_stats;
-+ for (i = 0; i < vc4->num_labels; i++) {
-+ if (!vc4->bo_labels[i].num_allocated)
-+ continue;
-+
-+ seq_printf(m, "%30s: %6dkb BOs (%d)\n",
-+ vc4->bo_labels[i].name,
-+ vc4->bo_labels[i].size_allocated / 1024,
-+ vc4->bo_labels[i].num_allocated);
-+ }
- mutex_unlock(&vc4->bo_lock);
-
-- seq_printf(m, "num bos allocated: %d\n",
-- stats.num_allocated);
-- seq_printf(m, "size bos allocated: %dkb\n",
-- stats.size_allocated / 1024);
-- seq_printf(m, "num bos used: %d\n",
-- stats.num_allocated - stats.num_cached);
-- seq_printf(m, "size bos used: %dkb\n",
-- (stats.size_allocated - stats.size_cached) / 1024);
-- seq_printf(m, "num bos cached: %d\n",
-- stats.num_cached);
-- seq_printf(m, "size bos cached: %dkb\n",
-- stats.size_cached / 1024);
--
- return 0;
- }
- #endif
-
-+/* Takes ownership of *name and returns the appropriate slot for it in
-+ * the bo_labels[] array, extending it as necessary.
-+ *
-+ * This is inefficient and could use a hash table instead of walking
-+ * an array and strcmp()ing. However, the assumption is that user
-+ * labeling will be infrequent (scanout buffers and other long-lived
-+ * objects, or debug driver builds), so we can live with it for now.
-+ */
-+static int vc4_get_user_label(struct vc4_dev *vc4, const char *name)
-+{
-+ int i;
-+ int free_slot = -1;
-+
-+ for (i = 0; i < vc4->num_labels; i++) {
-+ if (!vc4->bo_labels[i].name) {
-+ free_slot = i;
-+ } else if (strcmp(vc4->bo_labels[i].name, name) == 0) {
-+ kfree(name);
-+ return i;
-+ }
-+ }
-+
-+ if (free_slot != -1) {
-+ WARN_ON(vc4->bo_labels[free_slot].num_allocated != 0);
-+ vc4->bo_labels[free_slot].name = name;
-+ return free_slot;
-+ } else {
-+ u32 new_label_count = vc4->num_labels + 1;
-+ struct vc4_label *new_labels =
-+ krealloc(vc4->bo_labels,
-+ new_label_count * sizeof(*new_labels),
-+ GFP_KERNEL);
-+
-+ if (!new_labels) {
-+ kfree(name);
-+ return -1;
-+ }
-+
-+ free_slot = vc4->num_labels;
-+ vc4->bo_labels = new_labels;
-+ vc4->num_labels = new_label_count;
-+
-+ vc4->bo_labels[free_slot].name = name;
-+ vc4->bo_labels[free_slot].num_allocated = 0;
-+ vc4->bo_labels[free_slot].size_allocated = 0;
-+
-+ return free_slot;
-+ }
-+}
-+
-+static void vc4_bo_set_label(struct drm_gem_object *gem_obj, int label)
-+{
-+ struct vc4_bo *bo = to_vc4_bo(gem_obj);
-+ struct vc4_dev *vc4 = to_vc4_dev(gem_obj->dev);
-+
-+ lockdep_assert_held(&vc4->bo_lock);
-+
-+ if (label != -1) {
-+ vc4->bo_labels[label].num_allocated++;
-+ vc4->bo_labels[label].size_allocated += gem_obj->size;
-+ }
-+
-+ vc4->bo_labels[bo->label].num_allocated--;
-+ vc4->bo_labels[bo->label].size_allocated -= gem_obj->size;
-+
-+ if (vc4->bo_labels[bo->label].num_allocated == 0 &&
-+ is_user_label(bo->label)) {
-+ /* Free user BO label slots on last unreference.
-+ * Slots are just where we track the stats for a given
-+ * name, and once a name is unused we can reuse that
-+ * slot.
-+ */
-+ kfree(vc4->bo_labels[bo->label].name);
-+ vc4->bo_labels[bo->label].name = NULL;
-+ }
-+
-+ bo->label = label;
-+}
-+
- static uint32_t bo_page_index(size_t size)
- {
- return (size / PAGE_SIZE) - 1;
-@@ -80,7 +167,8 @@ static uint32_t bo_page_index(size_t size)
- static void vc4_bo_destroy(struct vc4_bo *bo)
- {
- struct drm_gem_object *obj = &bo->base.base;
-- struct vc4_dev *vc4 = to_vc4_dev(obj->dev);
-+
-+ vc4_bo_set_label(obj, -1);
-
- if (bo->validated_shader) {
- kfree(bo->validated_shader->texture_samples);
-@@ -88,9 +176,6 @@ static void vc4_bo_destroy(struct vc4_bo *bo)
- bo->validated_shader = NULL;
- }
-
-- vc4->bo_stats.num_allocated--;
-- vc4->bo_stats.size_allocated -= obj->size;
--
- reservation_object_fini(&bo->_resv);
-
- drm_gem_cma_free_object(obj);
-@@ -99,12 +184,6 @@ static void vc4_bo_destroy(struct vc4_bo *bo)
- /* Must be called with bo_lock held. */
- static void vc4_bo_remove_from_cache(struct vc4_bo *bo)
- {
-- struct drm_gem_object *obj = &bo->base.base;
-- struct vc4_dev *vc4 = to_vc4_dev(obj->dev);
--
-- vc4->bo_stats.num_cached--;
-- vc4->bo_stats.size_cached -= obj->size;
--
- list_del(&bo->unref_head);
- list_del(&bo->size_head);
- }
-@@ -165,7 +244,8 @@ static void vc4_bo_cache_purge(struct drm_device *dev)
- }
-
- static struct vc4_bo *vc4_bo_get_from_cache(struct drm_device *dev,
-- uint32_t size)
-+ uint32_t size,
-+ enum vc4_kernel_bo_type type)
- {
- struct vc4_dev *vc4 = to_vc4_dev(dev);
- uint32_t page_index = bo_page_index(size);
-@@ -186,6 +266,8 @@ static struct vc4_bo *vc4_bo_get_from_cache(struct drm_device *dev,
- kref_init(&bo->base.base.refcount);
-
- out:
-+ if (bo)
-+ vc4_bo_set_label(&bo->base.base, type);
- mutex_unlock(&vc4->bo_lock);
- return bo;
- }
-@@ -208,8 +290,9 @@ struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size)
- return ERR_PTR(-ENOMEM);
-
- mutex_lock(&vc4->bo_lock);
-- vc4->bo_stats.num_allocated++;
-- vc4->bo_stats.size_allocated += size;
-+ bo->label = VC4_BO_TYPE_KERNEL;
-+ vc4->bo_labels[VC4_BO_TYPE_KERNEL].num_allocated++;
-+ vc4->bo_labels[VC4_BO_TYPE_KERNEL].size_allocated += size;
- mutex_unlock(&vc4->bo_lock);
- bo->resv = &bo->_resv;
- reservation_object_init(bo->resv);
-@@ -218,7 +301,7 @@ struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size)
- }
-
- struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
-- bool allow_unzeroed)
-+ bool allow_unzeroed, enum vc4_kernel_bo_type type)
- {
- size_t size = roundup(unaligned_size, PAGE_SIZE);
- struct vc4_dev *vc4 = to_vc4_dev(dev);
-@@ -229,7 +312,7 @@ struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
- return ERR_PTR(-EINVAL);
-
- /* First, try to get a vc4_bo from the kernel BO cache. */
-- bo = vc4_bo_get_from_cache(dev, size);
-+ bo = vc4_bo_get_from_cache(dev, size, type);
- if (bo) {
- if (!allow_unzeroed)
- memset(bo->base.vaddr, 0, bo->base.base.size);
-@@ -251,7 +334,13 @@ struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
- return ERR_PTR(-ENOMEM);
- }
- }
-- return to_vc4_bo(&cma_obj->base);
-+ bo = to_vc4_bo(&cma_obj->base);
-+
-+ mutex_lock(&vc4->bo_lock);
-+ vc4_bo_set_label(&cma_obj->base, type);
-+ mutex_unlock(&vc4->bo_lock);
-+
-+ return bo;
- }
-
- int vc4_dumb_create(struct drm_file *file_priv,
-@@ -268,7 +357,7 @@ int vc4_dumb_create(struct drm_file *file_priv,
- if (args->size < args->pitch * args->height)
- args->size = args->pitch * args->height;
-
-- bo = vc4_bo_create(dev, args->size, false);
-+ bo = vc4_bo_create(dev, args->size, false, VC4_BO_TYPE_DUMB);
- if (IS_ERR(bo))
- return PTR_ERR(bo);
-
-@@ -348,8 +437,7 @@ void vc4_free_object(struct drm_gem_object *gem_bo)
- list_add(&bo->size_head, cache_list);
- list_add(&bo->unref_head, &vc4->bo_cache.time_list);
-
-- vc4->bo_stats.num_cached++;
-- vc4->bo_stats.size_cached += gem_bo->size;
-+ vc4_bo_set_label(&bo->base.base, VC4_BO_TYPE_KERNEL_CACHE);
-
- vc4_bo_cache_free_old(dev);
-
-@@ -483,7 +571,7 @@ int vc4_create_bo_ioctl(struct drm_device *dev, void *data,
- * We can't allocate from the BO cache, because the BOs don't
- * get zeroed, and that might leak data between users.
- */
-- bo = vc4_bo_create(dev, args->size, false);
-+ bo = vc4_bo_create(dev, args->size, false, VC4_BO_TYPE_V3D);
- if (IS_ERR(bo))
- return PTR_ERR(bo);
-
-@@ -536,7 +624,7 @@ vc4_create_shader_bo_ioctl(struct drm_device *dev, void *data,
- return -EINVAL;
- }
-
-- bo = vc4_bo_create(dev, args->size, true);
-+ bo = vc4_bo_create(dev, args->size, true, VC4_BO_TYPE_V3D_SHADER);
- if (IS_ERR(bo))
- return PTR_ERR(bo);
-
-@@ -651,9 +739,24 @@ int vc4_get_tiling_ioctl(struct drm_device *dev, void *data,
- return 0;
- }
-
--void vc4_bo_cache_init(struct drm_device *dev)
-+int vc4_bo_cache_init(struct drm_device *dev)
- {
- struct vc4_dev *vc4 = to_vc4_dev(dev);
-+ int i;
-+
-+ /* Create the initial set of BO labels that the kernel will
-+ * use. This lets us avoid a bunch of string reallocation in
-+ * the kernel's draw and BO allocation paths.
-+ */
-+ vc4->bo_labels = kcalloc(VC4_BO_TYPE_COUNT, sizeof(*vc4->bo_labels),
-+ GFP_KERNEL);
-+ if (!vc4->bo_labels)
-+ return -ENOMEM;
-+ vc4->num_labels = VC4_BO_TYPE_COUNT;
-+
-+ BUILD_BUG_ON(ARRAY_SIZE(bo_type_names) != VC4_BO_TYPE_COUNT);
-+ for (i = 0; i < VC4_BO_TYPE_COUNT; i++)
-+ vc4->bo_labels[i].name = bo_type_names[i];
-
- mutex_init(&vc4->bo_lock);
-
-@@ -663,19 +766,66 @@ void vc4_bo_cache_init(struct drm_device *dev)
- setup_timer(&vc4->bo_cache.time_timer,
- vc4_bo_cache_time_timer,
- (unsigned long)dev);
-+
-+ return 0;
- }
-
- void vc4_bo_cache_destroy(struct drm_device *dev)
- {
- struct vc4_dev *vc4 = to_vc4_dev(dev);
-+ int i;
-
- del_timer(&vc4->bo_cache.time_timer);
- cancel_work_sync(&vc4->bo_cache.time_work);
-
- vc4_bo_cache_purge(dev);
-
-- if (vc4->bo_stats.num_allocated) {
-- DRM_ERROR("Destroying BO cache while BOs still allocated:\n");
-- vc4_bo_stats_dump(vc4);
-+ for (i = 0; i < vc4->num_labels; i++) {
-+ if (vc4->bo_labels[i].num_allocated) {
-+ DRM_ERROR("Destroying BO cache with %d %s "
-+ "BOs still allocated\n",
-+ vc4->bo_labels[i].num_allocated,
-+ vc4->bo_labels[i].name);
-+ }
-+
-+ if (is_user_label(i))
-+ kfree(vc4->bo_labels[i].name);
- }
-+ kfree(vc4->bo_labels);
-+}
-+
-+int vc4_label_bo_ioctl(struct drm_device *dev, void *data,
-+ struct drm_file *file_priv)
-+{
-+ struct vc4_dev *vc4 = to_vc4_dev(dev);
-+ struct drm_vc4_label_bo *args = data;
-+ char *name;
-+ struct drm_gem_object *gem_obj;
-+ int ret = 0, label;
-+
-+ if (!args->len)
-+ return -EINVAL;
-+
-+ name = strndup_user(u64_to_user_ptr(args->name), args->len + 1);
-+ if (IS_ERR(name))
-+ return PTR_ERR(name);
-+
-+ gem_obj = drm_gem_object_lookup(file_priv, args->handle);
-+ if (!gem_obj) {
-+ DRM_ERROR("Failed to look up GEM BO %d\n", args->handle);
-+ kfree(name);
-+ return -ENOENT;
-+ }
-+
-+ mutex_lock(&vc4->bo_lock);
-+ label = vc4_get_user_label(vc4, name);
-+ if (label != -1)
-+ vc4_bo_set_label(gem_obj, label);
-+ else
-+ ret = -ENOMEM;
-+ mutex_unlock(&vc4->bo_lock);
-+
-+ drm_gem_object_unreference_unlocked(gem_obj);
-+
-+ return ret;
- }
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
-index c6b487c3d2b7..75c1f50a7b5d 100644
---- a/drivers/gpu/drm/vc4/vc4_drv.c
-+++ b/drivers/gpu/drm/vc4/vc4_drv.c
-@@ -140,6 +140,7 @@ static const struct drm_ioctl_desc vc4_drm_ioctls[] = {
- DRM_IOCTL_DEF_DRV(VC4_GET_PARAM, vc4_get_param_ioctl, DRM_RENDER_ALLOW),
- DRM_IOCTL_DEF_DRV(VC4_SET_TILING, vc4_set_tiling_ioctl, DRM_RENDER_ALLOW),
- DRM_IOCTL_DEF_DRV(VC4_GET_TILING, vc4_get_tiling_ioctl, DRM_RENDER_ALLOW),
-+ DRM_IOCTL_DEF_DRV(VC4_LABEL_BO, vc4_label_bo_ioctl, DRM_RENDER_ALLOW),
- };
-
- static struct drm_driver vc4_drm_driver = {
-@@ -257,7 +258,9 @@ static int vc4_drm_bind(struct device *dev)
- vc4->dev = drm;
- drm->dev_private = vc4;
-
-- vc4_bo_cache_init(drm);
-+ ret = vc4_bo_cache_init(drm);
-+ if (ret)
-+ goto dev_unref;
-
- drm_mode_config_init(drm);
-
-@@ -281,8 +284,9 @@ static int vc4_drm_bind(struct device *dev)
- component_unbind_all(dev, drm);
- gem_destroy:
- vc4_gem_destroy(drm);
-- drm_dev_unref(drm);
- vc4_bo_cache_destroy(drm);
-+dev_unref:
-+ drm_dev_unref(drm);
- return ret;
- }
-
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index df22698d62ee..75d9957cb76d 100644
---- a/drivers/gpu/drm/vc4/vc4_drv.h
-+++ b/drivers/gpu/drm/vc4/vc4_drv.h
-@@ -11,6 +11,24 @@
- #include <drm/drm_encoder.h>
- #include <drm/drm_gem_cma_helper.h>
-
-+/* Don't forget to update vc4_bo.c: bo_type_names[] when adding to
-+ * this.
-+ */
-+enum vc4_kernel_bo_type {
-+ /* Any kernel allocation (gem_create_object hook) before it
-+ * gets another type set.
-+ */
-+ VC4_BO_TYPE_KERNEL,
-+ VC4_BO_TYPE_V3D,
-+ VC4_BO_TYPE_V3D_SHADER,
-+ VC4_BO_TYPE_DUMB,
-+ VC4_BO_TYPE_BIN,
-+ VC4_BO_TYPE_RCL,
-+ VC4_BO_TYPE_BCL,
-+ VC4_BO_TYPE_KERNEL_CACHE,
-+ VC4_BO_TYPE_COUNT
-+};
-+
- struct vc4_dev {
- struct drm_device *dev;
-
-@@ -46,14 +64,14 @@ struct vc4_dev {
- struct timer_list time_timer;
- } bo_cache;
-
-- struct vc4_bo_stats {
-+ u32 num_labels;
-+ struct vc4_label {
-+ const char *name;
- u32 num_allocated;
- u32 size_allocated;
-- u32 num_cached;
-- u32 size_cached;
-- } bo_stats;
-+ } *bo_labels;
-
-- /* Protects bo_cache and the BO stats. */
-+ /* Protects bo_cache and bo_labels. */
- struct mutex bo_lock;
-
- uint64_t dma_fence_context;
-@@ -169,6 +187,11 @@ struct vc4_bo {
- /* normally (resv == &_resv) except for imported bo's */
- struct reservation_object *resv;
- struct reservation_object _resv;
-+
-+ /* One of enum vc4_kernel_bo_type, or VC4_BO_TYPE_COUNT + i
-+ * for user-allocated labels.
-+ */
-+ int label;
- };
-
- static inline struct vc4_bo *
-@@ -460,7 +483,7 @@ struct vc4_validated_shader_info {
- struct drm_gem_object *vc4_create_object(struct drm_device *dev, size_t size);
- void vc4_free_object(struct drm_gem_object *gem_obj);
- struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t size,
-- bool from_cache);
-+ bool from_cache, enum vc4_kernel_bo_type type);
- int vc4_dumb_create(struct drm_file *file_priv,
- struct drm_device *dev,
- struct drm_mode_create_dumb *args);
-@@ -478,6 +501,8 @@ int vc4_get_tiling_ioctl(struct drm_device *dev, void *data,
- struct drm_file *file_priv);
- int vc4_get_hang_state_ioctl(struct drm_device *dev, void *data,
- struct drm_file *file_priv);
-+int vc4_label_bo_ioctl(struct drm_device *dev, void *data,
-+ struct drm_file *file_priv);
- int vc4_mmap(struct file *filp, struct vm_area_struct *vma);
- struct reservation_object *vc4_prime_res_obj(struct drm_gem_object *obj);
- int vc4_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
-@@ -485,7 +510,7 @@ struct drm_gem_object *vc4_prime_import_sg_table(struct drm_device *dev,
- struct dma_buf_attachment *attach,
- struct sg_table *sgt);
- void *vc4_prime_vmap(struct drm_gem_object *obj);
--void vc4_bo_cache_init(struct drm_device *dev);
-+int vc4_bo_cache_init(struct drm_device *dev);
- void vc4_bo_cache_destroy(struct drm_device *dev);
- int vc4_bo_stats_debugfs(struct seq_file *m, void *arg);
-
-diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
-index 8b551bc630c4..80f1953b4938 100644
---- a/drivers/gpu/drm/vc4/vc4_gem.c
-+++ b/drivers/gpu/drm/vc4/vc4_gem.c
-@@ -774,7 +774,7 @@ vc4_get_bcl(struct drm_device *dev, struct vc4_exec_info *exec)
- goto fail;
- }
-
-- bo = vc4_bo_create(dev, exec_size, true);
-+ bo = vc4_bo_create(dev, exec_size, true, VC4_BO_TYPE_BCL);
- if (IS_ERR(bo)) {
- DRM_ERROR("Couldn't allocate BO for binning\n");
- ret = PTR_ERR(bo);
-diff --git a/drivers/gpu/drm/vc4/vc4_render_cl.c b/drivers/gpu/drm/vc4/vc4_render_cl.c
-index da3bfd53f0bd..e0539731130b 100644
---- a/drivers/gpu/drm/vc4/vc4_render_cl.c
-+++ b/drivers/gpu/drm/vc4/vc4_render_cl.c
-@@ -320,7 +320,7 @@ static int vc4_create_rcl_bo(struct drm_device *dev, struct vc4_exec_info *exec,
-
- size += xtiles * ytiles * loop_body_size;
-
-- setup->rcl = &vc4_bo_create(dev, size, true)->base;
-+ setup->rcl = &vc4_bo_create(dev, size, true, VC4_BO_TYPE_RCL)->base;
- if (IS_ERR(setup->rcl))
- return PTR_ERR(setup->rcl);
- list_add_tail(&to_vc4_bo(&setup->rcl->base)->unref_head,
-diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c
-index 8c723da71f66..622cd43840b8 100644
---- a/drivers/gpu/drm/vc4/vc4_v3d.c
-+++ b/drivers/gpu/drm/vc4/vc4_v3d.c
-@@ -236,7 +236,8 @@ vc4_allocate_bin_bo(struct drm_device *drm)
- INIT_LIST_HEAD(&list);
-
- while (true) {
-- struct vc4_bo *bo = vc4_bo_create(drm, size, true);
-+ struct vc4_bo *bo = vc4_bo_create(drm, size, true,
-+ VC4_BO_TYPE_BIN);
-
- if (IS_ERR(bo)) {
- ret = PTR_ERR(bo);
-diff --git a/include/uapi/drm/vc4_drm.h b/include/uapi/drm/vc4_drm.h
-index 6ac4c5c014cb..551628e571f9 100644
---- a/include/uapi/drm/vc4_drm.h
-+++ b/include/uapi/drm/vc4_drm.h
-@@ -40,6 +40,7 @@ extern "C" {
- #define DRM_VC4_GET_PARAM 0x07
- #define DRM_VC4_SET_TILING 0x08
- #define DRM_VC4_GET_TILING 0x09
-+#define DRM_VC4_LABEL_BO 0x0a
-
- #define DRM_IOCTL_VC4_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl)
- #define DRM_IOCTL_VC4_WAIT_SEQNO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno)
-@@ -51,6 +52,7 @@ extern "C" {
- #define DRM_IOCTL_VC4_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_PARAM, struct drm_vc4_get_param)
- #define DRM_IOCTL_VC4_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SET_TILING, struct drm_vc4_set_tiling)
- #define DRM_IOCTL_VC4_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_TILING, struct drm_vc4_get_tiling)
-+#define DRM_IOCTL_VC4_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_LABEL_BO, struct drm_vc4_label_bo)
-
- struct drm_vc4_submit_rcl_surface {
- __u32 hindex; /* Handle index, or ~0 if not present. */
-@@ -311,6 +313,15 @@ struct drm_vc4_set_tiling {
- __u64 modifier;
- };
-
-+/**
-+ * struct drm_vc4_label_bo - Attach a name to a BO for debug purposes.
-+ */
-+struct drm_vc4_label_bo {
-+ __u32 handle;
-+ __u32 len;
-+ __u64 name;
-+};
-+
- #if defined(__cplusplus)
- }
- #endif
---
-2.13.5
-
-From 34cbed8ed9441caa13017108dac189e09c35f9af Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Wed, 2 Aug 2017 13:32:40 -0700
-Subject: [PATCH 5/6] drm/vc4: Fix double destroy of the BO cache on teardown.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It's also destroyed from the top level vc4_drv.c initialization, which
-is where the cache was actually initialized from.
-
-This used to just involve duplicate del_timer() and cancel_work_sync()
-being called, but it started causing kmalloc issues once we
-double-freed the new BO label array.
-
-Fixes: 1908a876f909 ("drm/vc4: Add an ioctl for labeling GEM BOs for summary stats")
-Signed-off-by: Eric Anholt <eric@anholt.net>
-Link: https://patchwork.freedesktop.org/patch/msgid/20170802203242.12815-1-eric@anholt.net
-Tested-by: Noralf Trønnes <noralf@tronnes.org>
-Acked-by: Noralf Trønnes <noralf@tronnes.org>
-Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
----
- drivers/gpu/drm/vc4/vc4_gem.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
-index 80f1953b4938..624177b9cce4 100644
---- a/drivers/gpu/drm/vc4/vc4_gem.c
-+++ b/drivers/gpu/drm/vc4/vc4_gem.c
-@@ -1117,6 +1117,4 @@ vc4_gem_destroy(struct drm_device *dev)
-
- if (vc4->hang_state)
- vc4_free_hang_state(dev, vc4->hang_state);
--
-- vc4_bo_cache_destroy(dev);
- }
---
-2.13.5
-
-From 4f218eea5be54c8506e6db700750e8b8019dc6af Mon Sep 17 00:00:00 2001
-From: Boris Brezillon <boris.brezillon@free-electrons.com>
-Date: Fri, 16 Jun 2017 10:30:33 +0200
-Subject: [PATCH 6/6] drm/vc4: Send a VBLANK event when disabling a CRTC
-
-VBLANK events are missed when the CRTC is being disabled because the
-driver does not wait till the end of the frame before stopping the
-HVS and PV blocks. In this case, we should explicitly issue a VBLANK
-event if there's one waiting.
-
-Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
-Reviewed-by: Eric Anholt <eric@anholt.net>
-Link: http://patchwork.freedesktop.org/patch/msgid/1497601833-24588-1-git-send-email-boris.brezillon@free-electrons.com
----
- drivers/gpu/drm/vc4/vc4_crtc.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index a12cc7ea99b6..b0582ad3f459 100644
---- a/drivers/gpu/drm/vc4/vc4_crtc.c
-+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -518,6 +518,19 @@ static void vc4_crtc_disable(struct drm_crtc *crtc)
- WARN_ON_ONCE((HVS_READ(SCALER_DISPSTATX(chan)) &
- (SCALER_DISPSTATX_FULL | SCALER_DISPSTATX_EMPTY)) !=
- SCALER_DISPSTATX_EMPTY);
-+
-+ /*
-+ * Make sure we issue a vblank event after disabling the CRTC if
-+ * someone was waiting it.
-+ */
-+ if (crtc->state->event) {
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&dev->event_lock, flags);
-+ drm_crtc_send_vblank_event(crtc, crtc->state->event);
-+ crtc->state->event = NULL;
-+ spin_unlock_irqrestore(&dev->event_lock, flags);
-+ }
- }
-
- static void vc4_crtc_update_dlist(struct drm_crtc *crtc)
---
-2.13.5
-
diff --git a/config_generation b/config_generation
index 6708b1022..64ae444f4 100644
--- a/config_generation
+++ b/config_generation
@@ -5,7 +5,7 @@
# x86_64
x86_64=baseconfig:baseconfig-x86:baseconfig-x86-x86_64
-x86_64-debug=baseconfig:baseconfig-x86:baseconfig-x86-x86_64:debugconfig:debugconfig-x86
+x86_64-debug=baseconfig:baseconfig-x86:baseconfig-x86-x86_64:debugconfig:debugconfig-x86:debugconfig-x86-x86_64
# i686
i686=baseconfig:baseconfig-x86:baseconfig-x86-i686
diff --git a/drm-cma-reduce-dmesg-logs.patch b/drm-cma-reduce-dmesg-logs.patch
index 2e39d6e70..d7252c498 100644
--- a/drm-cma-reduce-dmesg-logs.patch
+++ b/drm-cma-reduce-dmesg-logs.patch
@@ -41,56 +41,3 @@ index 373e33f22be4..020e7668dfab 100644
size);
ret = -ENOMEM;
goto error;
-From patchwork Wed Oct 4 12:54:47 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: cma: Take __GFP_NOWARN into account in cma_alloc()
-From: Boris Brezillon <boris.brezillon@free-electrons.com>
-X-Patchwork-Id: 180554
-Message-Id: <20171004125447.15195-1-boris.brezillon@free-electrons.com>
-To: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
- Laura Abbott <labbott@redhat.com>
-Cc: Boris Brezillon <boris.brezillon@free-electrons.com>,
- Jaewon Kim <jaewon31.kim@samsung.com>, dri-devel@lists.freedesktop.org
-Date: Wed, 4 Oct 2017 14:54:47 +0200
-
-cma_alloc() unconditionally prints an INFO message when the CMA
-allocation fails. Make this message conditional on the non-presence of
-__GFP_NOWARN in gfp_mask.
-
-Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
-Acked-by: Laura Abbott <labbott@redhat.com>
----
-Hello,
-
-This patch aims at removing INFO messages that are displayed when the
-VC4 driver tries to allocate buffer objects. From the driver perspective
-an allocation failure is acceptable, and the driver can possibly do
-something to make following allocation succeed (like flushing the VC4
-internal cache).
-
-Also, I don't understand why this message is only an INFO message, and
-not a WARN (pr_warn()). Please let me know if you have good reasons to
-keep it as an unconditional pr_info().
-
-Thanks,
-
-Boris
----
- mm/cma.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mm/cma.c b/mm/cma.c
-index c0da318c020e..022e52bd8370 100644
---- a/mm/cma.c
-+++ b/mm/cma.c
-@@ -460,7 +460,7 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align,
-
- trace_cma_alloc(pfn, page, count, align);
-
-- if (ret) {
-+ if (ret && !(gfp_mask & __GFP_NOWARN)) {
- pr_info("%s: alloc failed, req-size: %zu pages, ret: %d\n",
- __func__, count, ret);
- cma_debug_show_areas(cma);
diff --git a/drm-i915-Boost-GPU-clocks-if-we-miss-the-pageflip-s-vblank.patch b/drm-i915-Boost-GPU-clocks-if-we-miss-the-pageflip-s-vblank.patch
new file mode 100644
index 000000000..07f81116a
--- /dev/null
+++ b/drm-i915-Boost-GPU-clocks-if-we-miss-the-pageflip-s-vblank.patch
@@ -0,0 +1,200 @@
+From patchwork Thu Aug 17 12:37:06 2017
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+Subject: drm/i915: Boost GPU clocks if we miss the pageflip's vblank
+From: Chris Wilson <chris@chris-wilson.co.uk>
+X-Patchwork-Id: 172204
+Message-Id: <20170817123706.6777-1-chris@chris-wilson.co.uk>
+To: intel-gfx@lists.freedesktop.org
+Cc: Daniel Vetter <daniel.vetter@intel.com>
+Date: Thu, 17 Aug 2017 13:37:06 +0100
+
+If we miss the current vblank because the gpu was busy, that may cause a
+jitter as the frame rate temporarily drops. We try to limit the impact
+of this by then boosting the GPU clock to deliver the frame as quickly
+as possible. Originally done in commit 6ad790c0f5ac ("drm/i915: Boost GPU
+frequency if we detect outstanding pageflips") but was never forward
+ported to atomic and finally dropped in commit fd3a40242e87 ("drm/i915:
+Rip out legacy page_flip completion/irq handling").
+
+References: https://bugs.freedesktop.org/show_bug.cgi?id=102199
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Cc: Daniel Vetter <daniel.vetter@intel.com>
+Tested-by: Lyude Paul <lyude@redhat.com>
+Reviewed-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
+---
+ drivers/gpu/drm/i915/intel_display.c | 59 ++++++++++++++++++++++++++++++++++++
+ drivers/gpu/drm/i915/intel_drv.h | 1 -
+ drivers/gpu/drm/i915/intel_pm.c | 42 ++-----------------------
+ 3 files changed, 62 insertions(+), 40 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index 0e93ec201fe3..7d5b19553637 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -12636,6 +12636,55 @@ static const struct drm_crtc_funcs intel_crtc_funcs = {
+ .set_crc_source = intel_crtc_set_crc_source,
+ };
+
++struct wait_rps_boost {
++ struct wait_queue_entry wait;
++
++ struct drm_crtc *crtc;
++ struct drm_i915_gem_request *request;
++};
++
++static int do_rps_boost(struct wait_queue_entry *_wait,
++ unsigned mode, int sync, void *key)
++{
++ struct wait_rps_boost *wait = container_of(_wait, typeof(*wait), wait);
++ struct drm_i915_gem_request *rq = wait->request;
++
++ gen6_rps_boost(rq, NULL);
++ i915_gem_request_put(rq);
++
++ drm_crtc_vblank_put(wait->crtc);
++
++ list_del(&wait->wait.entry);
++ kfree(wait);
++ return 1;
++}
++
++static void add_rps_boost_after_vblank(struct drm_crtc *crtc,
++ struct dma_fence *fence)
++{
++ struct wait_rps_boost *wait;
++
++ if (!dma_fence_is_i915(fence))
++ return;
++
++ if (drm_crtc_vblank_get(crtc))
++ return;
++
++ wait = kmalloc(sizeof(*wait), GFP_KERNEL);
++ if (!wait) {
++ drm_crtc_vblank_put(crtc);
++ return;
++ }
++
++ wait->request = to_request(dma_fence_get(fence));
++ wait->crtc = crtc;
++
++ wait->wait.func = do_rps_boost;
++ wait->wait.flags = 0;
++
++ add_wait_queue(drm_crtc_vblank_waitqueue(crtc), &wait->wait);
++}
++
+ /**
+ * intel_prepare_plane_fb - Prepare fb for usage on plane
+ * @plane: drm plane to prepare for
+@@ -12733,12 +12782,22 @@ intel_prepare_plane_fb(struct drm_plane *plane,
+ return ret;
+
+ if (!new_state->fence) { /* implicit fencing */
++ struct dma_fence *fence;
++
+ ret = i915_sw_fence_await_reservation(&intel_state->commit_ready,
+ obj->resv, NULL,
+ false, I915_FENCE_TIMEOUT,
+ GFP_KERNEL);
+ if (ret < 0)
+ return ret;
++
++ fence = reservation_object_get_excl_rcu(obj->resv);
++ if (fence) {
++ add_rps_boost_after_vblank(new_state->crtc, fence);
++ dma_fence_put(fence);
++ }
++ } else {
++ add_rps_boost_after_vblank(new_state->crtc, new_state->fence);
+ }
+
+ return 0;
+diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
+index fa47285918f4..e092354b4d63 100644
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -1844,7 +1844,6 @@ void gen6_rps_reset_ei(struct drm_i915_private *dev_priv);
+ void gen6_rps_idle(struct drm_i915_private *dev_priv);
+ void gen6_rps_boost(struct drm_i915_gem_request *rq,
+ struct intel_rps_client *rps);
+-void intel_queue_rps_boost_for_request(struct drm_i915_gem_request *req);
+ void g4x_wm_get_hw_state(struct drm_device *dev);
+ void vlv_wm_get_hw_state(struct drm_device *dev);
+ void ilk_wm_get_hw_state(struct drm_device *dev);
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index ed662937ec3c..c9fa2eb1903c 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -6169,6 +6169,7 @@ void gen6_rps_boost(struct drm_i915_gem_request *rq,
+ struct intel_rps_client *rps)
+ {
+ struct drm_i915_private *i915 = rq->i915;
++ unsigned long flags;
+ bool boost;
+
+ /* This is intentionally racy! We peek at the state here, then
+@@ -6178,13 +6179,13 @@ void gen6_rps_boost(struct drm_i915_gem_request *rq,
+ return;
+
+ boost = false;
+- spin_lock_irq(&rq->lock);
++ spin_lock_irqsave(&rq->lock, flags);
+ if (!rq->waitboost && !i915_gem_request_completed(rq)) {
+ atomic_inc(&i915->rps.num_waiters);
+ rq->waitboost = true;
+ boost = true;
+ }
+- spin_unlock_irq(&rq->lock);
++ spin_unlock_irqrestore(&rq->lock, flags);
+ if (!boost)
+ return;
+
+@@ -9132,43 +9133,6 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val)
+ return DIV_ROUND_CLOSEST(val, GT_FREQUENCY_MULTIPLIER);
+ }
+
+-struct request_boost {
+- struct work_struct work;
+- struct drm_i915_gem_request *req;
+-};
+-
+-static void __intel_rps_boost_work(struct work_struct *work)
+-{
+- struct request_boost *boost = container_of(work, struct request_boost, work);
+- struct drm_i915_gem_request *req = boost->req;
+-
+- if (!i915_gem_request_completed(req))
+- gen6_rps_boost(req, NULL);
+-
+- i915_gem_request_put(req);
+- kfree(boost);
+-}
+-
+-void intel_queue_rps_boost_for_request(struct drm_i915_gem_request *req)
+-{
+- struct request_boost *boost;
+-
+- if (req == NULL || INTEL_GEN(req->i915) < 6)
+- return;
+-
+- if (i915_gem_request_completed(req))
+- return;
+-
+- boost = kmalloc(sizeof(*boost), GFP_ATOMIC);
+- if (boost == NULL)
+- return;
+-
+- boost->req = i915_gem_request_get(req);
+-
+- INIT_WORK(&boost->work, __intel_rps_boost_work);
+- queue_work(req->i915->wq, &boost->work);
+-}
+-
+ void intel_pm_setup(struct drm_i915_private *dev_priv)
+ {
+ mutex_init(&dev_priv->rps.hw_lock);
diff --git a/drm-i915-boost-GPU-clocks-if-we-miss-the-pageflip.patch b/drm-i915-boost-GPU-clocks-if-we-miss-the-pageflip.patch
deleted file mode 100644
index 0bd0e7cef..000000000
--- a/drm-i915-boost-GPU-clocks-if-we-miss-the-pageflip.patch
+++ /dev/null
@@ -1,238 +0,0 @@
-From 333e2a813cdfb86ff286ece6f13bec371aa03d7b Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris@chris-wilson.co.uk>
-Date: Thu, 17 Aug 2017 13:37:06 +0100
-Subject: [PATCH] drm/i915: Boost GPU clocks if we miss the pageflip's vblank
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-If we miss the current vblank because the gpu was busy, that may cause a
-jitter as the frame rate temporarily drops. We try to limit the impact
-of this by then boosting the GPU clock to deliver the frame as quickly
-as possible. Originally done in commit 6ad790c0f5ac ("drm/i915: Boost GPU
-frequency if we detect outstanding pageflips") but was never forward
-ported to atomic and finally dropped in commit fd3a40242e87 ("drm/i915:
-Rip out legacy page_flip completion/irq handling").
-
-One of the most typical use-cases for this is a mostly idle desktop.
-Rendering one frame of the desktop's frontbuffer can easily be
-accomplished by the GPU running at low frequency, but often exceeds
-the time budget of the desktop compositor. The result is that animations
-such as opening the menu, doing a fullscreen switch, or even just trying
-to move a window around are slow and jerky. We need to respond within a
-frame to give the best impression of a smooth UX, as a compromise we
-instead respond if that first frame misses its goal. The result should
-be a near-imperceivable initial delay and a smooth animation even
-starting from idle. The cost, as ever, is that we spend more power than
-is strictly necessary as we overestimate the required GPU frequency and
-then try to ramp down.
-
-This of course is reactionary, too little, too late; nevertheless it is
-surprisingly effective.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102199
-Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
-Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Cc: Daniel Vetter <daniel.vetter@intel.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20170817123706.6777-1-chris@chris-wilson.co.uk
-Tested-by: Lyude Paul <lyude@redhat.com>
-Reviewed-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
----
- drivers/gpu/drm/i915/i915_gem.c | 10 +++---
- drivers/gpu/drm/i915/intel_display.c | 63 ++++++++++++++++++++++++++++++++++++
- drivers/gpu/drm/i915/intel_pm.c | 14 ++++----
- 3 files changed, 77 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 969bac8404f1..7d409b29d75a 100644
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -355,6 +355,7 @@ i915_gem_object_wait_fence(struct dma_fence *fence,
- long timeout,
- struct intel_rps_client *rps)
- {
-+ unsigned long irq_flags;
- struct drm_i915_gem_request *rq;
-
- BUILD_BUG_ON(I915_WAIT_INTERRUPTIBLE != 0x1);
-@@ -410,9 +411,9 @@ i915_gem_object_wait_fence(struct dma_fence *fence,
- * Compensate by giving the synchronous client credit for
- * a waitboost next time.
- */
-- spin_lock(&rq->i915->rps.client_lock);
-+ spin_lock_irqsave(&rq->i915->rps.client_lock, irq_flags);
- list_del_init(&rps->link);
-- spin_unlock(&rq->i915->rps.client_lock);
-+ spin_unlock_irqrestore(&rq->i915->rps.client_lock, irq_flags);
- }
-
- return timeout;
-@@ -5029,6 +5030,7 @@ void i915_gem_release(struct drm_device *dev, struct drm_file *file)
- {
- struct drm_i915_file_private *file_priv = file->driver_priv;
- struct drm_i915_gem_request *request;
-+ unsigned long flags;
-
- /* Clean up our request list when the client is going away, so that
- * later retire_requests won't dereference our soon-to-be-gone
-@@ -5040,9 +5042,9 @@ void i915_gem_release(struct drm_device *dev, struct drm_file *file)
- spin_unlock(&file_priv->mm.lock);
-
- if (!list_empty(&file_priv->rps.link)) {
-- spin_lock(&to_i915(dev)->rps.client_lock);
-+ spin_lock_irqsave(&to_i915(dev)->rps.client_lock, flags);
- list_del(&file_priv->rps.link);
-- spin_unlock(&to_i915(dev)->rps.client_lock);
-+ spin_unlock_irqrestore(&to_i915(dev)->rps.client_lock, flags);
- }
- }
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 022125082649..875eb7aec2f1 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -13301,6 +13301,58 @@ static const struct drm_crtc_funcs intel_crtc_funcs = {
- .set_crc_source = intel_crtc_set_crc_source,
- };
-
-+struct wait_rps_boost {
-+ struct wait_queue_entry wait;
-+
-+ struct drm_crtc *crtc;
-+ struct drm_i915_gem_request *request;
-+};
-+
-+static int do_rps_boost(struct wait_queue_entry *_wait,
-+ unsigned mode, int sync, void *key)
-+{
-+ struct wait_rps_boost *wait = container_of(_wait, typeof(*wait), wait);
-+ struct drm_i915_gem_request *rq = wait->request;
-+
-+ gen6_rps_boost(rq->i915, NULL, rq->emitted_jiffies);
-+ i915_gem_request_put(rq);
-+
-+ drm_crtc_vblank_put(wait->crtc);
-+
-+ list_del(&wait->wait.entry);
-+ kfree(wait);
-+ return 1;
-+}
-+
-+static void add_rps_boost_after_vblank(struct drm_crtc *crtc,
-+ struct dma_fence *fence)
-+{
-+ struct wait_rps_boost *wait;
-+
-+ if (!dma_fence_is_i915(fence))
-+ return;
-+
-+ if (INTEL_GEN(to_i915(crtc->dev)) < 6)
-+ return;
-+
-+ if (drm_crtc_vblank_get(crtc))
-+ return;
-+
-+ wait = kmalloc(sizeof(*wait), GFP_KERNEL);
-+ if (!wait) {
-+ drm_crtc_vblank_put(crtc);
-+ return;
-+ }
-+
-+ wait->request = to_request(dma_fence_get(fence));
-+ wait->crtc = crtc;
-+
-+ wait->wait.func = do_rps_boost;
-+ wait->wait.flags = 0;
-+
-+ add_wait_queue(drm_crtc_vblank_waitqueue(crtc), &wait->wait);
-+}
-+
- /**
- * intel_prepare_plane_fb - Prepare fb for usage on plane
- * @plane: drm plane to prepare for
-@@ -13392,6 +13444,8 @@ intel_prepare_plane_fb(struct drm_plane *plane,
- return 0;
-
- if (!new_state->fence) { /* implicit fencing */
-+ struct dma_fence *fence;
-+
- ret = i915_sw_fence_await_reservation(&intel_state->commit_ready,
- obj->resv, NULL,
- false, I915_FENCE_TIMEOUT,
-@@ -13399,7 +13453,16 @@ intel_prepare_plane_fb(struct drm_plane *plane,
- if (ret < 0)
- return ret;
-
-+ fence = reservation_object_get_excl_rcu(obj->resv);
-+ if (fence) {
-+ add_rps_boost_after_vblank(new_state->crtc, fence);
-+ dma_fence_put(fence);
-+ }
-+
- i915_gem_object_wait_priority(obj, 0, I915_PRIORITY_DISPLAY);
-+
-+ } else {
-+ add_rps_boost_after_vblank(new_state->crtc, new_state->fence);
- }
-
- return 0;
-diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
-index 40b224b44d1b..b0ee9c4d33f4 100644
---- a/drivers/gpu/drm/i915/intel_pm.c
-+++ b/drivers/gpu/drm/i915/intel_pm.c
-@@ -6108,6 +6108,7 @@ void gen6_rps_busy(struct drm_i915_private *dev_priv)
-
- void gen6_rps_idle(struct drm_i915_private *dev_priv)
- {
-+ unsigned long flags;
- /* Flush our bottom-half so that it does not race with us
- * setting the idle frequency and so that it is bounded by
- * our rpm wakeref. And then disable the interrupts to stop any
-@@ -6127,16 +6128,17 @@ void gen6_rps_idle(struct drm_i915_private *dev_priv)
- }
- mutex_unlock(&dev_priv->rps.hw_lock);
-
-- spin_lock(&dev_priv->rps.client_lock);
-+ spin_lock_irqsave(&dev_priv->rps.client_lock, flags);
- while (!list_empty(&dev_priv->rps.clients))
- list_del_init(dev_priv->rps.clients.next);
-- spin_unlock(&dev_priv->rps.client_lock);
-+ spin_unlock_irqrestore(&dev_priv->rps.client_lock, flags);
- }
-
- void gen6_rps_boost(struct drm_i915_private *dev_priv,
- struct intel_rps_client *rps,
- unsigned long submitted)
- {
-+ unsigned long flags;
- /* This is intentionally racy! We peek at the state here, then
- * validate inside the RPS worker.
- */
-@@ -6151,14 +6153,14 @@ void gen6_rps_boost(struct drm_i915_private *dev_priv,
- if (rps && time_after(jiffies, submitted + DRM_I915_THROTTLE_JIFFIES))
- rps = NULL;
-
-- spin_lock(&dev_priv->rps.client_lock);
-+ spin_lock_irqsave(&dev_priv->rps.client_lock, flags);
- if (rps == NULL || list_empty(&rps->link)) {
-- spin_lock_irq(&dev_priv->irq_lock);
-+ spin_lock(&dev_priv->irq_lock);
- if (dev_priv->rps.interrupts_enabled) {
- dev_priv->rps.client_boost = true;
- schedule_work(&dev_priv->rps.work);
- }
-- spin_unlock_irq(&dev_priv->irq_lock);
-+ spin_unlock(&dev_priv->irq_lock);
-
- if (rps != NULL) {
- list_add(&rps->link, &dev_priv->rps.clients);
-@@ -6166,7 +6168,7 @@ void gen6_rps_boost(struct drm_i915_private *dev_priv,
- } else
- dev_priv->rps.boosts++;
- }
-- spin_unlock(&dev_priv->rps.client_lock);
-+ spin_unlock_irqrestore(&dev_priv->rps.client_lock, flags);
- }
-
- int intel_set_rps(struct drm_i915_private *dev_priv, u8 val)
diff --git a/efi-lockdown.patch b/efi-lockdown.patch
index e04878458..4ac65fd5d 100644
--- a/efi-lockdown.patch
+++ b/efi-lockdown.patch
@@ -1,53 +1,7 @@
-From df7d76ae50f18d4465e59fdf7f19d3df44906cb5 Mon Sep 17 00:00:00 2001
-From: Josh Boyer <jwboyer@fedoraproject.org>
-Date: Mon, 21 Nov 2016 23:55:55 +0000
-Subject: [PATCH 07/32] efi: Add EFI_SECURE_BOOT bit
-
-UEFI machines can be booted in Secure Boot mode. Add a EFI_SECURE_BOOT bit
-that can be passed to efi_enabled() to find out whether secure boot is
-enabled.
-
-This will be used by the SysRq+x handler, registered by the x86 arch, to find
-out whether secure boot mode is enabled so that it can be disabled.
-
-Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- arch/x86/kernel/setup.c | 1 +
- include/linux/efi.h | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 69780ed..447905e 100644
---- a/arch/x86/kernel/setup.c
-+++ b/arch/x86/kernel/setup.c
-@@ -1182,6 +1182,7 @@ void __init setup_arch(char **cmdline_p)
- pr_info("Secure boot disabled\n");
- break;
- case efi_secureboot_mode_enabled:
-+ set_bit(EFI_SECURE_BOOT, &efi.flags);
- pr_info("Secure boot enabled\n");
- break;
- default:
-diff --git a/include/linux/efi.h b/include/linux/efi.h
-index 94d34e0..6049600 100644
---- a/include/linux/efi.h
-+++ b/include/linux/efi.h
-@@ -1069,6 +1069,7 @@ extern int __init efi_setup_pcdp_console(char *);
- #define EFI_DBG 8 /* Print additional debug info at runtime */
- #define EFI_NX_PE_DATA 9 /* Can runtime data regions be mapped non-executable? */
- #define EFI_MEM_ATTR 10 /* Did firmware publish an EFI_MEMORY_ATTRIBUTES table? */
-+#define EFI_SECURE_BOOT 11 /* Are we in Secure Boot mode? */
-
- #ifdef CONFIG_EFI
- /*
---
-2.7.4
-
-From f05a90c19a9613d8d50597319ed91f691e25b689 Mon Sep 17 00:00:00 2001
+From 646ac5c07196bc3680e34188e55c8cc3565f65e7 Mon Sep 17 00:00:00 2001
From: David Howells <dhowells@redhat.com>
-Date: Mon, 21 Nov 2016 23:36:17 +0000
-Subject: [PATCH 09/32] Add the ability to lock down access to the running
+Date: Wed, 24 May 2017 14:56:00 +0100
+Subject: [PATCH 01/26] Add the ability to lock down access to the running
kernel image
Provide a single call to allow kernel code to determine whether the system
@@ -57,64 +11,70 @@ modules that aren't validly signed with a key we recognise, fiddling with
MSR registers and disallowing hibernation,
Signed-off-by: David Howells <dhowells@redhat.com>
+Acked-by: James Morris <james.l.morris@oracle.com>
---
- include/linux/kernel.h | 9 +++++++++
- include/linux/security.h | 11 +++++++++++
- security/Kconfig | 15 +++++++++++++++
+ include/linux/kernel.h | 17 ++++++++++++++
+ include/linux/security.h | 8 +++++++
+ security/Kconfig | 8 +++++++
security/Makefile | 3 +++
- security/lock_down.c | 40 ++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 78 insertions(+)
+ security/lock_down.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 96 insertions(+)
create mode 100644 security/lock_down.c
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
-index cb09238..3cd3be9 100644
+index 0ad4c3044cf9..362da2e4bf53 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
-@@ -273,6 +273,15 @@ extern int oops_may_print(void);
- void do_exit(long error_code) __noreturn;
- void complete_and_exit(struct completion *, long) __noreturn;
-
+@@ -287,6 +287,23 @@ static inline void refcount_error_report(struct pt_regs *regs, const char *err)
+ { }
+ #endif
+
+#ifdef CONFIG_LOCK_DOWN_KERNEL
-+extern bool kernel_is_locked_down(void);
++extern bool __kernel_is_locked_down(const char *what, bool first);
+#else
-+static inline bool kernel_is_locked_down(void)
++static inline bool __kernel_is_locked_down(const char *what, bool first)
+{
+ return false;
+}
+#endif
+
++#define kernel_is_locked_down(what) \
++ ({ \
++ static bool message_given; \
++ bool locked_down = __kernel_is_locked_down(what, !message_given); \
++ message_given = true; \
++ locked_down; \
++ })
++
/* Internal, do not use. */
int __must_check _kstrtoul(const char *s, unsigned int base, unsigned long *res);
int __must_check _kstrtol(const char *s, unsigned int base, long *res);
diff --git a/include/linux/security.h b/include/linux/security.h
-index d3868f2..187b74b 100644
+index ce6265960d6c..310775476b68 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
-@@ -1679,5 +1679,16 @@ static inline void free_secdata(void *secdata)
+@@ -1753,5 +1753,13 @@ static inline void free_secdata(void *secdata)
{ }
#endif /* CONFIG_SECURITY */
-
+
+#ifdef CONFIG_LOCK_DOWN_KERNEL
-+extern void lock_kernel_down(void);
-+#ifdef CONFIG_ALLOW_LOCKDOWN_LIFT
-+extern void lift_kernel_lockdown(void);
-+#endif
++extern void __init init_lockdown(void);
+#else
-+static inline void lock_kernel_down(void)
++static inline void __init init_lockdown(void)
+{
+}
+#endif
+
#endif /* ! __LINUX_SECURITY_H */
-
+
diff --git a/security/Kconfig b/security/Kconfig
-index d900f47..d9b391d 100644
+index e8e449444e65..8e01fd59ae7e 100644
--- a/security/Kconfig
+++ b/security/Kconfig
-@@ -193,6 +193,21 @@ config STATIC_USERMODEHELPER_PATH
+@@ -205,6 +205,14 @@ config STATIC_USERMODEHELPER_PATH
If you wish for all usermode helper programs to be disabled,
specify an empty string here (i.e. "").
-
+
+config LOCK_DOWN_KERNEL
+ bool "Allow the kernel to be 'locked down'"
+ help
@@ -123,18 +83,11 @@ index d900f47..d9b391d 100644
+ turns off various features that might otherwise allow access to the
+ kernel image (eg. setting MSR registers).
+
-+config ALLOW_LOCKDOWN_LIFT
-+ bool
-+ help
-+ Allow the lockdown on a kernel to be lifted, thereby restoring the
-+ ability of userspace to access the kernel image (eg. by SysRq+x under
-+ x86).
-+
source security/selinux/Kconfig
source security/smack/Kconfig
source security/tomoyo/Kconfig
diff --git a/security/Makefile b/security/Makefile
-index f2d71cd..8c4a43e 100644
+index f2d71cdb8e19..8c4a43e3d4e0 100644
--- a/security/Makefile
+++ b/security/Makefile
@@ -29,3 +29,6 @@ obj-$(CONFIG_CGROUP_DEVICE) += device_cgroup.o
@@ -146,10 +99,10 @@ index f2d71cd..8c4a43e 100644
+obj-$(CONFIG_LOCK_DOWN_KERNEL) += lock_down.o
diff --git a/security/lock_down.c b/security/lock_down.c
new file mode 100644
-index 0000000..5788c60
+index 000000000000..d8595c0e6673
--- /dev/null
+++ b/security/lock_down.c
-@@ -0,0 +1,40 @@
+@@ -0,0 +1,60 @@
+/* Lock down the kernel
+ *
+ * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved.
@@ -164,282 +117,110 @@ index 0000000..5788c60
+#include <linux/security.h>
+#include <linux/export.h>
+
-+static __read_mostly bool kernel_locked_down;
++static __ro_after_init bool kernel_locked_down;
+
+/*
+ * Put the kernel into lock-down mode.
+ */
-+void lock_kernel_down(void)
++static void __init lock_kernel_down(const char *where)
+{
-+ kernel_locked_down = true;
++ if (!kernel_locked_down) {
++ kernel_locked_down = true;
++ pr_notice("Kernel is locked down from %s; see man kernel_lockdown.7\n",
++ where);
++ }
+}
+
++static int __init lockdown_param(char *ignored)
++{
++ lock_kernel_down("command line");
++ return 0;
++}
++
++early_param("lockdown", lockdown_param);
++
+/*
-+ * Take the kernel out of lockdown mode.
++ * Lock the kernel down from very early in the arch setup. This must happen
++ * prior to things like ACPI being initialised.
+ */
-+void lift_kernel_lockdown(void)
++void __init init_lockdown(void)
+{
-+ kernel_locked_down = false;
++#ifdef CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT
++ if (efi_enabled(EFI_SECURE_BOOT))
++ lock_kernel_down("EFI secure boot");
++#endif
+}
+
+/**
+ * kernel_is_locked_down - Find out if the kernel is locked down
++ * @what: Tag to use in notice generated if lockdown is in effect
+ */
-+bool kernel_is_locked_down(void)
++bool __kernel_is_locked_down(const char *what, bool first)
+{
++ if (what && first && kernel_locked_down)
++ pr_notice("Lockdown: %s is restricted; see man kernel_lockdown.7\n",
++ what);
+ return kernel_locked_down;
+}
-+EXPORT_SYMBOL(kernel_is_locked_down);
++EXPORT_SYMBOL(__kernel_is_locked_down);
--
-2.7.4
-
-From fb6feb38e297260d050fc477c72683ac51d07ae3 Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells@redhat.com>
-Date: Mon, 21 Nov 2016 23:55:55 +0000
-Subject: [PATCH 10/32] efi: Lock down the kernel if booted in secure boot mode
+2.13.6
-UEFI Secure Boot provides a mechanism for ensuring that the firmware will
-only load signed bootloaders and kernels. Certain use cases may also
-require that all kernel modules also be signed. Add a configuration option
-that to lock down the kernel - which includes requiring validly signed
-modules - if the kernel is secure-booted.
-
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- arch/x86/Kconfig | 12 ++++++++++++
- arch/x86/kernel/setup.c | 8 +++++++-
- 2 files changed, 19 insertions(+), 1 deletion(-)
-
-diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 874c123..a315974 100644
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -1816,6 +1816,18 @@ config EFI_MIXED
-
- If unsure, say N.
-
-+config EFI_SECURE_BOOT_LOCK_DOWN
-+ def_bool n
-+ depends on EFI
-+ prompt "Lock down the kernel when UEFI Secure Boot is enabled"
-+ ---help---
-+ UEFI Secure Boot provides a mechanism for ensuring that the firmware
-+ will only load signed bootloaders and kernels. Certain use cases may
-+ also require that all kernel modules also be signed and that
-+ userspace is prevented from directly changing the running kernel
-+ image. Say Y here to automatically lock down the kernel when a
-+ system boots with UEFI Secure Boot enabled.
-+
- config SECCOMP
- def_bool y
- prompt "Enable seccomp to safely compute untrusted bytecode"
-diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 447905e..d44e60e 100644
---- a/arch/x86/kernel/setup.c
-+++ b/arch/x86/kernel/setup.c
-@@ -69,6 +69,7 @@
- #include <linux/crash_dump.h>
- #include <linux/tboot.h>
- #include <linux/jiffies.h>
-+#include <linux/security.h>
-
- #include <linux/usb/xhci-dbgp.h>
- #include <video/edid.h>
-@@ -1183,7 +1184,12 @@ void __init setup_arch(char **cmdline_p)
- break;
- case efi_secureboot_mode_enabled:
- set_bit(EFI_SECURE_BOOT, &efi.flags);
-- pr_info("Secure boot enabled\n");
-+ if (IS_ENABLED(CONFIG_EFI_SECURE_BOOT_LOCK_DOWN)) {
-+ lock_kernel_down();
-+ pr_info("Secure boot enabled and kernel locked down\n");
-+ } else {
-+ pr_info("Secure boot enabled\n");
-+ }
- break;
- default:
- pr_info("Secure boot could not be determined\n");
---
-2.7.4
+From 2c46467f43bc54324de5474a8355f98c692309e4 Mon Sep 17 00:00:00 2001
+From: Kyle McMartin <kyle@redhat.com>
+Date: Wed, 18 Oct 2017 14:02:25 +0100
+Subject: [PATCH 02/26] Add a SysRq option to lift kernel lockdown
-From 7182f2f5b254d6dc6d3105d2f99219a76adf9de0 Mon Sep 17 00:00:00 2001
-From: David Howells <dhowells@redhat.com>
-Date: Wed, 23 Nov 2016 13:22:22 +0000
-Subject: [PATCH 11/32] Enforce module signatures if the kernel is locked down
+Make an option to provide a sysrq key that will lift the kernel lockdown,
+thereby allowing the running kernel image to be accessed and modified.
-If the kernel is locked down, require that all modules have valid
-signatures that we can verify.
+On x86_64 this is triggered with SysRq+x, but this key may not be available
+on all arches, so it is set by setting LOCKDOWN_LIFT_KEY in asm/setup.h.
+Signed-off-by: Kyle McMartin <kyle@redhat.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+cc: x86@kernel.org
---
- kernel/module.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kernel/module.c b/kernel/module.c
-index 7eba6de..3331f2e 100644
---- a/kernel/module.c
-+++ b/kernel/module.c
-@@ -2756,7 +2756,7 @@ static int module_sig_check(struct load_info *info, int flags)
- }
-
- /* Not having a signature is only an error if we're strict. */
-- if (err == -ENOKEY && !sig_enforce)
-+ if (err == -ENOKEY && !sig_enforce && !kernel_is_locked_down())
- err = 0;
-
- return err;
---
-2.7.4
-
-From 7e97c58bcd0b4c082b889fb093a2779147532b9f Mon Sep 17 00:00:00 2001
-From: Matthew Garrett <matthew.garrett@nebula.com>
-Date: Tue, 22 Nov 2016 08:46:16 +0000
-Subject: [PATCH 12/32] Restrict /dev/mem and /dev/kmem when the kernel is
- locked down
-
-Allowing users to write to address space makes it possible for the kernel to
-be subverted, avoiding module loading restrictions. Prevent this when the
-kernel has been locked down.
-
-Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- drivers/char/mem.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/char/mem.c b/drivers/char/mem.c
-index 6d9cc2d..f814404 100644
---- a/drivers/char/mem.c
-+++ b/drivers/char/mem.c
-@@ -163,6 +163,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
- if (p != *ppos)
- return -EFBIG;
-
-+ if (kernel_is_locked_down())
-+ return -EPERM;
+ arch/x86/include/asm/setup.h | 2 ++
+ drivers/input/misc/uinput.c | 1 +
+ drivers/tty/sysrq.c | 19 ++++++++++++------
+ include/linux/input.h | 5 +++++
+ include/linux/sysrq.h | 8 +++++++-
+ kernel/debug/kdb/kdb_main.c | 2 +-
+ security/Kconfig | 8 ++++++++
+ security/lock_down.c | 47 ++++++++++++++++++++++++++++++++++++++++++++
+ 8 files changed, 84 insertions(+), 8 deletions(-)
+
+diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h
+index a65cf544686a..863f77582c09 100644
+--- a/arch/x86/include/asm/setup.h
++++ b/arch/x86/include/asm/setup.h
+@@ -8,6 +8,8 @@
+ #include <linux/linkage.h>
+ #include <asm/page_types.h>
+
++#define LOCKDOWN_LIFT_KEY 'x'
+
- if (!valid_phys_addr_range(p, count))
- return -EFAULT;
-
-@@ -513,6 +516,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
- char *kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */
- int err = 0;
-
-+ if (kernel_is_locked_down())
-+ return -EPERM;
-+
- if (p < (unsigned long) high_memory) {
- unsigned long to_write = min_t(unsigned long, count,
- (unsigned long)high_memory - p);
---
-2.7.4
-
-From b83b68a9a13120664eaabf21a7b3ff0b065bd5b2 Mon Sep 17 00:00:00 2001
-From: Kyle McMartin <kyle@redhat.com>
-Date: Mon, 21 Nov 2016 23:55:56 +0000
-Subject: [PATCH 13/32] Add a sysrq option to exit secure boot mode
-
-Make sysrq+x exit secure boot mode on x86_64, thereby allowing the running
-kernel image to be modified. This lifts the lockdown.
+ #ifdef __i386__
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- arch/x86/Kconfig | 10 ++++++++++
- arch/x86/kernel/setup.c | 31 +++++++++++++++++++++++++++++++
- drivers/input/misc/uinput.c | 1 +
- drivers/tty/sysrq.c | 19 +++++++++++++------
- include/linux/input.h | 5 +++++
- include/linux/sysrq.h | 8 +++++++-
- kernel/debug/kdb/kdb_main.c | 2 +-
- 7 files changed, 68 insertions(+), 8 deletions(-)
-
-diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index a315974..6931e68 100644
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -1828,6 +1828,16 @@ config EFI_SECURE_BOOT_LOCK_DOWN
- image. Say Y here to automatically lock down the kernel when a
- system boots with UEFI Secure Boot enabled.
-
-+config EFI_ALLOW_SECURE_BOOT_EXIT
-+ def_bool n
-+ depends on EFI_SECURE_BOOT_LOCK_DOWN && MAGIC_SYSRQ
-+ select ALLOW_LOCKDOWN_LIFT
-+ prompt "Allow secure boot mode to be exited with SysRq+x on a keyboard"
-+ ---help---
-+ Allow secure boot mode to be exited and the kernel lockdown lifted by
-+ typing SysRq+x on a keyboard attached to the system (not permitted
-+ through procfs).
-+
- config SECCOMP
- def_bool y
- prompt "Enable seccomp to safely compute untrusted bytecode"
-diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index d44e60e..f7635d0 100644
---- a/arch/x86/kernel/setup.c
-+++ b/arch/x86/kernel/setup.c
-@@ -71,6 +71,11 @@
- #include <linux/jiffies.h>
- #include <linux/security.h>
-
-+#include <linux/fips.h>
-+#include <linux/cred.h>
-+#include <linux/sysrq.h>
-+#include <linux/init_task.h>
-+
- #include <linux/usb/xhci-dbgp.h>
- #include <video/edid.h>
-
-@@ -1328,6 +1333,32 @@ void __init i386_reserve_resources(void)
-
- #endif /* CONFIG_X86_32 */
-
-+#ifdef CONFIG_EFI_ALLOW_SECURE_BOOT_EXIT
-+
-+static void sysrq_handle_secure_boot(int key)
-+{
-+ if (!efi_enabled(EFI_SECURE_BOOT))
-+ return;
-+
-+ pr_info("Secure boot disabled\n");
-+ lift_kernel_lockdown();
-+}
-+static struct sysrq_key_op secure_boot_sysrq_op = {
-+ .handler = sysrq_handle_secure_boot,
-+ .help_msg = "unSB(x)",
-+ .action_msg = "Disabling Secure Boot restrictions",
-+ .enable_mask = SYSRQ_DISABLE_USERSPACE,
-+};
-+static int __init secure_boot_sysrq(void)
-+{
-+ if (efi_enabled(EFI_SECURE_BOOT))
-+ register_sysrq_key('x', &secure_boot_sysrq_op);
-+ return 0;
-+}
-+late_initcall(secure_boot_sysrq);
-+#endif /*CONFIG_EFI_ALLOW_SECURE_BOOT_EXIT*/
-+
-+
- static struct notifier_block kernel_offset_notifier = {
- .notifier_call = dump_kernel_offset
- };
+ #include <linux/pfn.h>
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
-index 022be0e..4a054a5 100644
+index 443151de90c6..45a1f5460805 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
-@@ -387,6 +387,7 @@ static int uinput_allocate_device(struct uinput_device *udev)
+@@ -408,6 +408,7 @@ static int uinput_allocate_device(struct uinput_device *udev)
if (!udev->dev)
return -ENOMEM;
-
+
+ udev->dev->flags |= INPUTDEV_FLAGS_SYNTHETIC;
udev->dev->event = uinput_dev_event;
input_set_drvdata(udev->dev, udev);
-
+
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
-index 7113674..e1addc3 100644
+index 3ffc1ce29023..8b766dbad6dd 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
-@@ -479,6 +479,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
+@@ -481,6 +481,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
/* x: May be registered on mips for TLB dump */
/* x: May be registered on ppc/powerpc for xmon */
/* x: May be registered on sparc64 for global PMU dump */
@@ -447,17 +228,17 @@ index 7113674..e1addc3 100644
NULL, /* x */
/* y: May be registered on sparc64 for global register dump */
NULL, /* y */
-@@ -522,7 +523,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
+@@ -524,7 +525,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
sysrq_key_table[i] = op_p;
}
-
+
-void __handle_sysrq(int key, bool check_mask)
+void __handle_sysrq(int key, unsigned int from)
{
struct sysrq_key_op *op_p;
int orig_log_level;
-@@ -542,11 +543,15 @@ void __handle_sysrq(int key, bool check_mask)
-
+@@ -544,11 +545,15 @@ void __handle_sysrq(int key, bool check_mask)
+
op_p = __sysrq_get_key_op(key);
if (op_p) {
+ /* Ban synthetic events from some sysrq functionality */
@@ -473,7 +254,7 @@ index 7113674..e1addc3 100644
pr_cont("%s\n", op_p->action_msg);
console_loglevel = orig_log_level;
op_p->handler(key);
-@@ -578,7 +583,7 @@ void __handle_sysrq(int key, bool check_mask)
+@@ -580,7 +585,7 @@ void __handle_sysrq(int key, bool check_mask)
void handle_sysrq(int key)
{
if (sysrq_on())
@@ -481,18 +262,18 @@ index 7113674..e1addc3 100644
+ __handle_sysrq(key, SYSRQ_FROM_KERNEL);
}
EXPORT_SYMBOL(handle_sysrq);
-
-@@ -659,7 +664,7 @@ static void sysrq_do_reset(unsigned long _state)
+
+@@ -661,7 +666,7 @@ static void sysrq_do_reset(unsigned long _state)
static void sysrq_handle_reset_request(struct sysrq_state *state)
{
if (state->reset_requested)
- __handle_sysrq(sysrq_xlate[KEY_B], false);
+ __handle_sysrq(sysrq_xlate[KEY_B], SYSRQ_FROM_KERNEL);
-
+
if (sysrq_reset_downtime_ms)
mod_timer(&state->keyreset_timer,
-@@ -810,8 +815,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
-
+@@ -812,8 +817,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
+
default:
if (sysrq->active && value && value != 2) {
+ int from = sysrq->handle.dev->flags & INPUTDEV_FLAGS_SYNTHETIC ?
@@ -503,17 +284,17 @@ index 7113674..e1addc3 100644
}
break;
}
-@@ -1095,7 +1102,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
-
+@@ -1097,7 +1104,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
+
if (get_user(c, buf))
return -EFAULT;
- __handle_sysrq(c, false);
+ __handle_sysrq(c, SYSRQ_FROM_PROC);
}
-
+
return count;
diff --git a/include/linux/input.h b/include/linux/input.h
-index a65e3b2..8b03571 100644
+index fb5e23c7ed98..9d2b45a21ade 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -42,6 +42,7 @@ struct input_value {
@@ -527,29 +308,29 @@ index a65e3b2..8b03571 100644
@@ -124,6 +125,8 @@ struct input_dev {
const char *uniq;
struct input_id id;
-
+
+ unsigned int flags;
+
unsigned long propbit[BITS_TO_LONGS(INPUT_PROP_CNT)];
-
+
unsigned long evbit[BITS_TO_LONGS(EV_CNT)];
@@ -190,6 +193,8 @@ struct input_dev {
};
#define to_input_dev(d) container_of(d, struct input_dev, dev)
-
+
+#define INPUTDEV_FLAGS_SYNTHETIC 0x000000001
+
/*
* Verify that we are in sync with input_device_id mod_devicetable.h #defines
*/
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
-index 387fa7d..f7c52a9 100644
+index 387fa7d05c98..f7c52a9ea394 100644
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
@@ -28,6 +28,8 @@
#define SYSRQ_ENABLE_BOOT 0x0080
#define SYSRQ_ENABLE_RTNICE 0x0100
-
+
+#define SYSRQ_DISABLE_USERSPACE 0x00010000
+
struct sysrq_key_op {
@@ -558,7 +339,7 @@ index 387fa7d..f7c52a9 100644
@@ -42,8 +44,12 @@ struct sysrq_key_op {
* are available -- else NULL's).
*/
-
+
+#define SYSRQ_FROM_KERNEL 0x0001
+#define SYSRQ_FROM_PROC 0x0002
+#define SYSRQ_FROM_SYNTHETIC 0x0004
@@ -570,25 +351,179 @@ index 387fa7d..f7c52a9 100644
int unregister_sysrq_key(int key, struct sysrq_key_op *op);
struct sysrq_key_op *__sysrq_get_key_op(int key);
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
-index ca18391..c4524b8 100644
+index c8146d53ca67..b480cadf9272 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
-@@ -1967,7 +1967,7 @@ static int kdb_sr(int argc, const char **argv)
+@@ -1970,7 +1970,7 @@ static int kdb_sr(int argc, const char **argv)
return KDB_ARGCOUNT;
-
+
kdb_trap_printk++;
- __handle_sysrq(*argv[1], check_mask);
+ __handle_sysrq(*argv[1], check_mask ? SYSRQ_FROM_KERNEL : 0);
kdb_trap_printk--;
-
+
return 0;
+diff --git a/security/Kconfig b/security/Kconfig
+index 8e01fd59ae7e..453cc89c198a 100644
+--- a/security/Kconfig
++++ b/security/Kconfig
+@@ -213,6 +213,14 @@ config LOCK_DOWN_KERNEL
+ turns off various features that might otherwise allow access to the
+ kernel image (eg. setting MSR registers).
+
++config ALLOW_LOCKDOWN_LIFT_BY_SYSRQ
++ bool "Allow the kernel lockdown to be lifted by SysRq"
++ depends on LOCK_DOWN_KERNEL && MAGIC_SYSRQ
++ help
++ Allow the lockdown on a kernel to be lifted, by pressing a SysRq key
++ combination on a wired keyboard.
++
++
+ source security/selinux/Kconfig
+ source security/smack/Kconfig
+ source security/tomoyo/Kconfig
+diff --git a/security/lock_down.c b/security/lock_down.c
+index d8595c0e6673..2c6b00f0c229 100644
+--- a/security/lock_down.c
++++ b/security/lock_down.c
+@@ -11,8 +11,14 @@
+
+ #include <linux/security.h>
+ #include <linux/export.h>
++#include <linux/sysrq.h>
++#include <asm/setup.h>
+
++#ifdef CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ
++static __read_mostly bool kernel_locked_down;
++#else
+ static __ro_after_init bool kernel_locked_down;
++#endif
+
+ /*
+ * Put the kernel into lock-down mode.
+@@ -58,3 +64,44 @@ bool __kernel_is_locked_down(const char *what, bool first)
+ return kernel_locked_down;
+ }
+ EXPORT_SYMBOL(__kernel_is_locked_down);
++
++#ifdef CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ
++
++/*
++ * Take the kernel out of lockdown mode.
++ */
++static void lift_kernel_lockdown(void)
++{
++ pr_notice("Lifting lockdown\n");
++ kernel_locked_down = false;
++}
++
++/*
++ * Allow lockdown to be lifted by pressing something like SysRq+x (and not by
++ * echoing the appropriate letter into the sysrq-trigger file).
++ */
++static void sysrq_handle_lockdown_lift(int key)
++{
++ if (kernel_locked_down)
++ lift_kernel_lockdown();
++}
++
++static struct sysrq_key_op lockdown_lift_sysrq_op = {
++ .handler = sysrq_handle_lockdown_lift,
++ .help_msg = "unSB(x)",
++ .action_msg = "Disabling Secure Boot restrictions",
++ .enable_mask = SYSRQ_DISABLE_USERSPACE,
++};
++
++static int __init lockdown_lift_sysrq(void)
++{
++ if (kernel_locked_down) {
++ lockdown_lift_sysrq_op.help_msg[5] = LOCKDOWN_LIFT_KEY;
++ register_sysrq_key(LOCKDOWN_LIFT_KEY, &lockdown_lift_sysrq_op);
++ }
++ return 0;
++}
++
++late_initcall(lockdown_lift_sysrq);
++
++#endif /* CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ */
+--
+2.13.6
+
+From 4c389db9daee3a3a444339a7d789de1d9366f736 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Wed, 24 May 2017 14:56:01 +0100
+Subject: [PATCH 03/26] Enforce module signatures if the kernel is locked down
+
+If the kernel is locked down, require that all modules have valid
+signatures that we can verify.
+
+Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+Reviewed-by: James Morris <james.l.morris@oracle.com>
+---
+ kernel/module.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/module.c b/kernel/module.c
+index de66ec825992..3d9a3270c179 100644
+--- a/kernel/module.c
++++ b/kernel/module.c
+@@ -2781,7 +2781,8 @@ static int module_sig_check(struct load_info *info, int flags)
+ }
+
+ /* Not having a signature is only an error if we're strict. */
+- if (err == -ENOKEY && !sig_enforce)
++ if (err == -ENOKEY && !sig_enforce &&
++ !kernel_is_locked_down("Loading of unsigned modules"))
+ err = 0;
+
+ return err;
--
-2.7.4
+2.13.6
-From 8884bd44932e595323fcddfb09c2a2a586134cdf Mon Sep 17 00:00:00 2001
+From 59312c44aa46939a14b3fbfeb510f94b4a73c8a1 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
-Date: Tue, 22 Nov 2016 08:46:15 +0000
-Subject: [PATCH 14/32] kexec: Disable at runtime if the kernel is locked down
+Date: Wed, 24 May 2017 14:56:02 +0100
+Subject: [PATCH 04/26] Restrict /dev/{mem,kmem,port} when the kernel is locked
+ down
+
+Allowing users to read and write to core kernel memory makes it possible
+for the kernel to be subverted, avoiding module loading restrictions, and
+also to steal cryptographic information.
+
+Disallow /dev/mem and /dev/kmem from being opened this when the kernel has
+been locked down to prevent this.
+
+Also disallow /dev/port from being opened to prevent raw ioport access and
+thus DMA from being used to accomplish the same thing.
+
+Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
+Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+---
+ drivers/char/mem.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/char/mem.c b/drivers/char/mem.c
+index 593a8818aca9..0ce5ac0a5c6b 100644
+--- a/drivers/char/mem.c
++++ b/drivers/char/mem.c
+@@ -762,6 +762,8 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)
+
+ static int open_port(struct inode *inode, struct file *filp)
+ {
++ if (kernel_is_locked_down("/dev/mem,kmem,port"))
++ return -EPERM;
+ return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
+ }
+
+--
+2.13.6
+
+From 6304f16efd61e66701f4b331e95da3cafb5f5f76 Mon Sep 17 00:00:00 2001
+From: Matthew Garrett <matthew.garrett@nebula.com>
+Date: Wed, 24 May 2017 14:56:02 +0100
+Subject: [PATCH 05/26] kexec: Disable at runtime if the kernel is locked down
kexec permits the loading and execution of arbitrary code in ring 0, which
is something that lock-down is meant to prevent. It makes sense to disable
@@ -599,22 +534,26 @@ image to be booted.
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Acked-by: Dave Young <dyoung@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+Reviewed-by: James Morris <james.l.morris@oracle.com>
+cc: kexec@lists.infradead.org
---
kernel/kexec.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/kernel/kexec.c b/kernel/kexec.c
-index 980936a..46de8e6 100644
+index e62ec4dc6620..7dadfed9b676 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
-@@ -194,6 +194,13 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
+@@ -202,6 +202,13 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
return -EPERM;
-
+
/*
+ * kexec can be used to circumvent module loading restrictions, so
+ * prevent loading in that case
+ */
-+ if (kernel_is_locked_down())
++ if (kernel_is_locked_down("kexec of unsigned images"))
+ return -EPERM;
+
+ /*
@@ -622,12 +561,12 @@ index 980936a..46de8e6 100644
* This leaves us room for future extensions.
*/
--
-2.7.4
+2.13.6
-From cace563d1743c3d2faf1e46bd4df8e63e2310207 Mon Sep 17 00:00:00 2001
+From cd00079900870855cea3573253a95c331ccab523 Mon Sep 17 00:00:00 2001
From: Dave Young <dyoung@redhat.com>
-Date: Tue, 22 Nov 2016 08:46:15 +0000
-Subject: [PATCH 15/32] Copy secure_boot flag in boot params across kexec
+Date: Wed, 24 May 2017 14:56:02 +0100
+Subject: [PATCH 06/26] Copy secure_boot flag in boot params across kexec
reboot
Kexec reboot in case secure boot being enabled does not keep the secure
@@ -643,68 +582,73 @@ stub. Fixing this issue by copying secure_boot flag across kexec reboot.
Signed-off-by: Dave Young <dyoung@redhat.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: kexec@lists.infradead.org
---
arch/x86/kernel/kexec-bzimage64.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/kernel/kexec-bzimage64.c b/arch/x86/kernel/kexec-bzimage64.c
-index d0a814a..3551bca 100644
+index fb095ba0c02f..7d0fac5bcbbe 100644
--- a/arch/x86/kernel/kexec-bzimage64.c
+++ b/arch/x86/kernel/kexec-bzimage64.c
@@ -179,6 +179,7 @@ setup_efi_state(struct boot_params *params, unsigned long params_load_addr,
if (efi_enabled(EFI_OLD_MEMMAP))
return 0;
-
+
+ params->secure_boot = boot_params.secure_boot;
ei->efi_loader_signature = current_ei->efi_loader_signature;
ei->efi_systab = current_ei->efi_systab;
ei->efi_systab_hi = current_ei->efi_systab_hi;
--
-2.7.4
+2.13.6
-From 08a3467acbc28bb469d1eebd0f5fd40b944d984a Mon Sep 17 00:00:00 2001
-From: "Lee, Chun-Yi" <joeyli.kernel@gmail.com>
-Date: Wed, 23 Nov 2016 13:49:19 +0000
-Subject: [PATCH 16/32] kexec_file: Disable at runtime if securelevel has been
- set
+From de2ac5da82fc55156134820ba32095710b935ad5 Mon Sep 17 00:00:00 2001
+From: Chun-Yi Lee <joeyli.kernel@gmail.com>
+Date: Wed, 24 May 2017 14:56:03 +0100
+Subject: [PATCH 07/26] kexec_file: Disable at runtime if the kernel is locked
+ down
-When KEXEC_VERIFY_SIG is not enabled, kernel should not loads image
-through kexec_file systemcall if securelevel has been set.
+When KEXEC_VERIFY_SIG is not enabled, kernel should not load images
+through kexec_file systemcall if the kernel is locked down.
This code was showed in Matthew's patch but not in git:
https://lkml.org/lkml/2015/3/13/778
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
-Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
+Signed-off-by: Chun-Yi Lee <jlee@suse.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: James Morris <james.l.morris@oracle.com>
+cc: kexec@lists.infradead.org
---
- kernel/kexec_file.c | 6 ++++++
- 1 file changed, 6 insertions(+)
+ kernel/kexec_file.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c
-index b56a558..003cade 100644
+index 9f48f4412297..ff6523f2dcc2 100644
--- a/kernel/kexec_file.c
+++ b/kernel/kexec_file.c
-@@ -268,6 +268,12 @@ SYSCALL_DEFINE5(kexec_file_load, int, kernel_fd, int, initrd_fd,
+@@ -255,6 +255,13 @@ SYSCALL_DEFINE5(kexec_file_load, int, kernel_fd, int, initrd_fd,
if (!capable(CAP_SYS_BOOT) || kexec_load_disabled)
return -EPERM;
-
+
+ /* Don't permit images to be loaded into trusted kernels if we're not
+ * going to verify the signature on them
+ */
-+ if (!IS_ENABLED(CONFIG_KEXEC_VERIFY_SIG) && kernel_is_locked_down())
++ if (!IS_ENABLED(CONFIG_KEXEC_VERIFY_SIG) &&
++ kernel_is_locked_down("kexec of unsigned images"))
+ return -EPERM;
+
/* Make sure we have a legal set of flags */
if (flags != (flags & KEXEC_FILE_FLAGS))
return -EINVAL;
--
-2.7.4
+2.13.6
-From 925fd10d7a99a6f999dde76daf2b1ef1238b251a Mon Sep 17 00:00:00 2001
+From ba823f2b5125605fcbac150fe27e622fd224ea61 Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
-Date: Tue, 22 Nov 2016 08:46:15 +0000
-Subject: [PATCH 17/32] hibernate: Disable when the kernel is locked down
+Date: Wed, 24 May 2017 14:56:03 +0100
+Subject: [PATCH 08/26] hibernate: Disable when the kernel is locked down
There is currently no way to verify the resume image when returning
from hibernate. This might compromise the signed modules trust model,
@@ -713,30 +657,32 @@ kernel is locked down.
Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: linux-pm@vger.kernel.org
---
kernel/power/hibernate.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
-index 86385af..1629798 100644
+index a5c36e9c56a6..f2eafefeec50 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
-@@ -67,7 +67,7 @@ static const struct platform_hibernation_ops *hibernation_ops;
-
+@@ -70,7 +70,7 @@ static const struct platform_hibernation_ops *hibernation_ops;
+
bool hibernation_available(void)
{
- return (nohibernate == 0);
-+ return nohibernate == 0 && !kernel_is_locked_down();
++ return nohibernate == 0 && !kernel_is_locked_down("Hibernation");
}
-
+
/**
--
-2.7.4
+2.13.6
-From b14fb5fcd60c84a09a15bd7ec974b6fbce68335c Mon Sep 17 00:00:00 2001
+From 9e78666a6153d72c3e50160a30ead699ba508d8f Mon Sep 17 00:00:00 2001
From: Matthew Garrett <mjg59@srcf.ucam.org>
-Date: Wed, 23 Nov 2016 13:28:17 +0000
-Subject: [PATCH 18/32] uswsusp: Disable when the kernel is locked down
+Date: Wed, 24 May 2017 14:56:03 +0100
+Subject: [PATCH 09/26] uswsusp: Disable when the kernel is locked down
uswsusp allows a user process to dump and then restore kernel state, which
makes it possible to modify the running kernel. Disable this if the kernel
@@ -744,31 +690,34 @@ is locked down.
Signed-off-by: Matthew Garrett <mjg59@srcf.ucam.org>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+Reviewed-by: James Morris <james.l.morris@oracle.com>
+cc: linux-pm@vger.kernel.org
---
kernel/power/user.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/power/user.c b/kernel/power/user.c
-index 22df9f7..e4b926d 100644
+index 22df9f7ff672..678ade9decfe 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -52,6 +52,9 @@ static int snapshot_open(struct inode *inode, struct file *filp)
if (!hibernation_available())
return -EPERM;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("/dev/snapshot"))
+ return -EPERM;
+
lock_system_sleep();
-
+
if (!atomic_add_unless(&snapshot_device_available, -1, 0)) {
--
-2.7.4
+2.13.6
-From d8167273e7562e5aa866d2b65e25bb1962de972c Mon Sep 17 00:00:00 2001
+From 334fa071b01ced7f48b2920208addfb1eab5d0fe Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
-Date: Tue, 22 Nov 2016 08:46:15 +0000
-Subject: [PATCH 19/32] PCI: Lock down BAR access when the kernel is locked
+Date: Wed, 24 May 2017 14:56:03 +0100
+Subject: [PATCH 10/26] PCI: Lock down BAR access when the kernel is locked
down
Any hardware that can potentially generate DMA has to be locked down in
@@ -779,55 +728,58 @@ sufficiently IOMMU-isolated devices.
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Acked-by: Bjorn Helgaas <bhelgaas@google.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: linux-pci@vger.kernel.org
---
drivers/pci/pci-sysfs.c | 9 +++++++++
- drivers/pci/proc.c | 8 +++++++-
- drivers/pci/syscall.c | 2 +-
- 3 files changed, 17 insertions(+), 2 deletions(-)
+ drivers/pci/proc.c | 9 ++++++++-
+ drivers/pci/syscall.c | 3 ++-
+ 3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
-index 0666287..b10992c 100644
+index 1eecfa301f7f..e1a3b0e765c2 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
-@@ -718,6 +718,9 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj,
+@@ -881,6 +881,9 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj,
loff_t init_off = off;
u8 *data = (u8 *) buf;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("Direct PCI access"))
+ return -EPERM;
+
if (off > dev->cfg_size)
return 0;
if (off + count > dev->cfg_size) {
-@@ -1009,6 +1012,9 @@ static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
+@@ -1175,6 +1178,9 @@ static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
enum pci_mmap_state mmap_type;
struct resource *res = &pdev->resource[bar];
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("Direct PCI access"))
+ return -EPERM;
+
if (res->flags & IORESOURCE_MEM && iomem_is_exclusive(res->start))
return -EINVAL;
-
-@@ -1108,6 +1114,9 @@ static ssize_t pci_write_resource_io(struct file *filp, struct kobject *kobj,
+
+@@ -1255,6 +1261,9 @@ static ssize_t pci_write_resource_io(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr, char *buf,
loff_t off, size_t count)
{
-+ if (kernel_is_locked_down())
++ if (kernel_is_locked_down("Direct PCI access"))
+ return -EPERM;
+
return pci_resource_io(filp, kobj, attr, buf, off, count, true);
}
-
+
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
-index f82710a..139d6f0 100644
+index 098360d7ff81..a6c53d855daa 100644
--- a/drivers/pci/proc.c
+++ b/drivers/pci/proc.c
@@ -116,6 +116,9 @@ static ssize_t proc_bus_pci_write(struct file *file, const char __user *buf,
int size = dev->cfg_size;
int cnt;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("Direct PCI access"))
+ return -EPERM;
+
if (pos >= size)
@@ -836,42 +788,44 @@ index f82710a..139d6f0 100644
@@ -195,6 +198,9 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd,
#endif /* HAVE_PCI_MMAP */
int ret = 0;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("Direct PCI access"))
+ return -EPERM;
+
switch (cmd) {
case PCIIOC_CONTROLLER:
ret = pci_domain_nr(dev->bus);
-@@ -233,7 +239,7 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma)
+@@ -236,7 +242,8 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma)
struct pci_filp_private *fpriv = file->private_data;
int i, ret, write_combine = 0, res_bit = IORESOURCE_MEM;
-
+
- if (!capable(CAP_SYS_RAWIO))
-+ if (!capable(CAP_SYS_RAWIO) || kernel_is_locked_down())
++ if (!capable(CAP_SYS_RAWIO) ||
++ kernel_is_locked_down("Direct PCI access"))
return -EPERM;
-
+
if (fpriv->mmap_state == pci_mmap_io) {
diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c
-index 9bf993e..c095247 100644
+index 9bf993e1f71e..afa01cc3ceec 100644
--- a/drivers/pci/syscall.c
+++ b/drivers/pci/syscall.c
-@@ -92,7 +92,7 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
+@@ -92,7 +92,8 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
u32 dword;
int err = 0;
-
+
- if (!capable(CAP_SYS_ADMIN))
-+ if (!capable(CAP_SYS_ADMIN) || kernel_is_locked_down())
++ if (!capable(CAP_SYS_ADMIN) ||
++ kernel_is_locked_down("Direct PCI access"))
return -EPERM;
-
+
dev = pci_get_bus_and_slot(bus, dfn);
--
-2.7.4
+2.13.6
-From 169d13e0c5240ac6aad13aace5ecbdb3de2cfada Mon Sep 17 00:00:00 2001
+From 7e608c45ac2ab6c8e125aaf3993b8257352ac631 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
-Date: Tue, 22 Nov 2016 08:46:16 +0000
-Subject: [PATCH 20/32] x86: Lock down IO port access when the kernel is locked
+Date: Wed, 24 May 2017 14:56:04 +0100
+Subject: [PATCH 11/26] x86: Lock down IO port access when the kernel is locked
down
IO port access would permit users to gain access to PCI configuration
@@ -884,97 +838,98 @@ KDDISABIO console ioctls.
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: x86@kernel.org
---
- arch/x86/kernel/ioport.c | 4 ++--
- drivers/char/mem.c | 2 ++
- 2 files changed, 4 insertions(+), 2 deletions(-)
+ arch/x86/kernel/ioport.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/ioport.c b/arch/x86/kernel/ioport.c
-index b01bc8517..4ccaace 100644
+index 9c3cf0944bce..2c0f058651c5 100644
--- a/arch/x86/kernel/ioport.c
+++ b/arch/x86/kernel/ioport.c
-@@ -29,7 +29,7 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
-
+@@ -30,7 +30,8 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
+
if ((from + num <= from) || (from + num > IO_BITMAP_BITS))
return -EINVAL;
- if (turn_on && !capable(CAP_SYS_RAWIO))
-+ if (turn_on && (!capable(CAP_SYS_RAWIO) || kernel_is_locked_down()))
++ if (turn_on && (!capable(CAP_SYS_RAWIO) ||
++ kernel_is_locked_down("ioperm")))
return -EPERM;
-
+
/*
-@@ -113,7 +113,7 @@ SYSCALL_DEFINE1(iopl, unsigned int, level)
+@@ -120,7 +121,8 @@ SYSCALL_DEFINE1(iopl, unsigned int, level)
return -EINVAL;
/* Trying to gain more privileges? */
if (level > old) {
- if (!capable(CAP_SYS_RAWIO))
-+ if (!capable(CAP_SYS_RAWIO) || kernel_is_locked_down())
++ if (!capable(CAP_SYS_RAWIO) ||
++ kernel_is_locked_down("iopl"))
return -EPERM;
}
regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) |
-diff --git a/drivers/char/mem.c b/drivers/char/mem.c
-index f814404..9afebb6 100644
---- a/drivers/char/mem.c
-+++ b/drivers/char/mem.c
-@@ -741,6 +741,8 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)
-
- static int open_port(struct inode *inode, struct file *filp)
- {
-+ if (kernel_is_locked_down())
-+ return -EPERM;
- return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
- }
-
--
-2.7.4
+2.13.6
-From efd24f7e9af624b62f39efce4f60b31f0ca643d8 Mon Sep 17 00:00:00 2001
+From 2644bf492568e3733bc841112c6e8628a6e01b8e Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
-Date: Tue, 22 Nov 2016 08:46:17 +0000
-Subject: [PATCH 21/32] x86: Restrict MSR access when the kernel is locked down
+Date: Wed, 24 May 2017 14:56:04 +0100
+Subject: [PATCH 12/26] x86/msr: Restrict MSR access when the kernel is locked
+ down
Writing to MSRs should not be allowed if the kernel is locked down, since
it could lead to execution of arbitrary code in kernel mode. Based on a
patch by Kees Cook.
-Cc: Kees Cook <keescook@chromium.org>
+MSR accesses are logged for the purposes of building up a whitelist as per
+Alan Cox's suggestion.
+
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Acked-by: Kees Cook <keescook@chromium.org>
+Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: x86@kernel.org
---
- arch/x86/kernel/msr.c | 7 +++++++
- 1 file changed, 7 insertions(+)
+ arch/x86/kernel/msr.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
-index ef68880..fbcce02 100644
+index ef688804f80d..dfb61d358196 100644
--- a/arch/x86/kernel/msr.c
+++ b/arch/x86/kernel/msr.c
-@@ -84,6 +84,9 @@ static ssize_t msr_write(struct file *file, const char __user *buf,
+@@ -84,6 +84,11 @@ static ssize_t msr_write(struct file *file, const char __user *buf,
int err = 0;
ssize_t bytes = 0;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("Direct MSR access")) {
++ pr_info("Direct access to MSR %x\n", reg);
+ return -EPERM;
++ }
+
if (count % 8)
return -EINVAL; /* Invalid chunk size */
-
-@@ -131,6 +134,10 @@ static long msr_ioctl(struct file *file, unsigned int ioc, unsigned long arg)
- err = -EBADF;
+
+@@ -135,6 +140,11 @@ static long msr_ioctl(struct file *file, unsigned int ioc, unsigned long arg)
+ err = -EFAULT;
break;
}
-+ if (kernel_is_locked_down()) {
++ if (kernel_is_locked_down("Direct MSR access")) {
++ pr_info("Direct access to MSR %x\n", regs[1]); /* Display %ecx */
+ err = -EPERM;
+ break;
+ }
- if (copy_from_user(&regs, uregs, sizeof regs)) {
- err = -EFAULT;
+ err = wrmsr_safe_regs_on_cpu(cpu, regs);
+ if (err)
break;
--
-2.7.4
+2.13.6
-From 62ebdffbcb0726b98562e9f1173a6d5967755764 Mon Sep 17 00:00:00 2001
+From e6850fffe186e252cc94e8747e589076e215ca1a Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
-Date: Tue, 22 Nov 2016 08:46:16 +0000
-Subject: [PATCH 22/32] asus-wmi: Restrict debugfs interface when the kernel is
+Date: Wed, 24 May 2017 14:56:04 +0100
+Subject: [PATCH 13/26] asus-wmi: Restrict debugfs interface when the kernel is
locked down
We have no way of validating what all of the Asus WMI methods do on a given
@@ -985,51 +940,54 @@ kernel is locked down.
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: acpi4asus-user@lists.sourceforge.net
+cc: platform-driver-x86@vger.kernel.org
---
drivers/platform/x86/asus-wmi.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
-index 43cb680..9be3e08 100644
+index 48e1541dc8d4..ef5587469337 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
-@@ -1898,6 +1898,9 @@ static int show_dsts(struct seq_file *m, void *data)
+@@ -1905,6 +1905,9 @@ static int show_dsts(struct seq_file *m, void *data)
int err;
u32 retval = -1;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("Asus WMI"))
+ return -EPERM;
+
err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval);
-
+
if (err < 0)
-@@ -1914,6 +1917,9 @@ static int show_devs(struct seq_file *m, void *data)
+@@ -1921,6 +1924,9 @@ static int show_devs(struct seq_file *m, void *data)
int err;
u32 retval = -1;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("Asus WMI"))
+ return -EPERM;
+
err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param,
&retval);
-
-@@ -1938,6 +1944,9 @@ static int show_call(struct seq_file *m, void *data)
+
+@@ -1945,6 +1951,9 @@ static int show_call(struct seq_file *m, void *data)
union acpi_object *obj;
acpi_status status;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("Asus WMI"))
+ return -EPERM;
+
status = wmi_evaluate_method(ASUS_WMI_MGMT_GUID,
- 1, asus->debug.method_id,
+ 0, asus->debug.method_id,
&input, &output);
--
-2.7.4
+2.13.6
-From 31f493d03dde1854fa9e540f87a751fbeeb41cb9 Mon Sep 17 00:00:00 2001
+From 6dda2a4dbc8bb80efaa55aba6d54382e986305c5 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
-Date: Tue, 22 Nov 2016 08:46:16 +0000
-Subject: [PATCH 23/32] ACPI: Limit access to custom_method when the kernel is
+Date: Wed, 24 May 2017 14:56:04 +0100
+Subject: [PATCH 14/26] ACPI: Limit access to custom_method when the kernel is
locked down
custom_method effectively allows arbitrary access to system memory, making
@@ -1038,63 +996,68 @@ Disable it if the kernel is locked down.
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: linux-acpi@vger.kernel.org
---
drivers/acpi/custom_method.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/acpi/custom_method.c b/drivers/acpi/custom_method.c
-index c68e724..e4d721c 100644
+index c68e72414a67..b33fba70ec51 100644
--- a/drivers/acpi/custom_method.c
+++ b/drivers/acpi/custom_method.c
@@ -29,6 +29,9 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf,
struct acpi_table_header table;
acpi_status status;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("ACPI custom methods"))
+ return -EPERM;
+
if (!(*ppos)) {
/* parse the table header to get the table length */
if (count <= sizeof(struct acpi_table_header))
--
-2.7.4
+2.13.6
-From 1dec5dc62c78f78b9efe44aac3d6119d97b67017 Mon Sep 17 00:00:00 2001
+From 64caa33410f85663cf0a65e4c09b8b8d28a219ad Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@redhat.com>
-Date: Tue, 22 Nov 2016 08:46:16 +0000
-Subject: [PATCH 24/32] acpi: Ignore acpi_rsdp kernel param when the kernel has
+Date: Wed, 24 May 2017 14:56:05 +0100
+Subject: [PATCH 15/26] acpi: Ignore acpi_rsdp kernel param when the kernel has
been locked down
This option allows userspace to pass the RSDP address to the kernel, which
-makes it possible for a user to circumvent any restrictions imposed on
-loading modules. Ignore the option when the kernel is locked down.
+makes it possible for a user to modify the workings of hardware . Reject
+the option when the kernel is locked down.
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: Dave Young <dyoung@redhat.com>
+cc: linux-acpi@vger.kernel.org
---
drivers/acpi/osl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
-index db78d35..d4d4ba3 100644
+index db78d353bab1..36c6527c1b0a 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -192,7 +192,7 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
acpi_physical_address pa = 0;
-
+
#ifdef CONFIG_KEXEC
- if (acpi_rsdp)
-+ if (acpi_rsdp && !kernel_is_locked_down())
++ if (acpi_rsdp && !kernel_is_locked_down("ACPI RSDP specification"))
return acpi_rsdp;
#endif
-
+
--
-2.7.4
+2.13.6
-From 96eaf04100d7365d93f898013175351c7d2702a6 Mon Sep 17 00:00:00 2001
+From d87ce06969f2d4da0c864e8a4cf6c820d950cd1f Mon Sep 17 00:00:00 2001
From: Linn Crosetto <linn@hpe.com>
-Date: Wed, 23 Nov 2016 13:32:27 +0000
-Subject: [PATCH 25/32] acpi: Disable ACPI table override if the kernel is
+Date: Wed, 24 May 2017 14:56:05 +0100
+Subject: [PATCH 16/26] acpi: Disable ACPI table override if the kernel is
locked down
From the kernel documentation (initrd_table_override.txt):
@@ -1109,19 +1072,21 @@ so do not allow ACPI tables to be overridden if the kernel is locked down.
Signed-off-by: Linn Crosetto <linn@hpe.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: linux-acpi@vger.kernel.org
---
drivers/acpi/tables.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c
-index 2604189..601096d 100644
+index 80ce2a7d224b..5cc13c42daf9 100644
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
-@@ -542,6 +542,11 @@ void __init acpi_table_upgrade(void)
+@@ -526,6 +526,11 @@ void __init acpi_table_upgrade(void)
if (table_nr == 0)
return;
-
-+ if (kernel_is_locked_down()) {
+
++ if (kernel_is_locked_down("ACPI table override")) {
+ pr_notice("kernel is locked down, ignoring table override\n");
+ return;
+ }
@@ -1130,12 +1095,12 @@ index 2604189..601096d 100644
memblock_find_in_range(0, ACPI_TABLE_UPGRADE_MAX_PHYS,
all_tables_size, PAGE_SIZE);
--
-2.7.4
+2.13.6
-From 521979b819b853f7578ba8edef8b33bc2077026d Mon Sep 17 00:00:00 2001
+From 547e2ca9cbfd420a15dd70e1c1c24b7040f88058 Mon Sep 17 00:00:00 2001
From: Linn Crosetto <linn@hpe.com>
-Date: Wed, 23 Nov 2016 13:39:41 +0000
-Subject: [PATCH 26/32] acpi: Disable APEI error injection if the kernel is
+Date: Wed, 24 May 2017 14:56:05 +0100
+Subject: [PATCH 17/26] acpi: Disable APEI error injection if the kernel is
locked down
ACPI provides an error injection mechanism, EINJ, for debugging and testing
@@ -1155,146 +1120,33 @@ the kernel is locked down.
Signed-off-by: Linn Crosetto <linn@hpe.com>
Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: "Lee, Chun-Yi" <jlee@suse.com>
+cc: linux-acpi@vger.kernel.org
---
drivers/acpi/apei/einj.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/acpi/apei/einj.c b/drivers/acpi/apei/einj.c
-index ec50c32..e082718 100644
+index b38737c83a24..6d71e1e97b20 100644
--- a/drivers/acpi/apei/einj.c
+++ b/drivers/acpi/apei/einj.c
@@ -518,6 +518,9 @@ static int einj_error_inject(u32 type, u32 flags, u64 param1, u64 param2,
int rc;
u64 base_addr, size;
-
-+ if (kernel_is_locked_down())
+
++ if (kernel_is_locked_down("ACPI error injection"))
+ return -EPERM;
+
/* If user manually set "flags", make sure it is legal */
if (flags && (flags &
~(SETWA_FLAGS_APICID|SETWA_FLAGS_MEM|SETWA_FLAGS_PCIE_SBDF)))
--
-2.7.4
-
-From fe597dad1cba83345d62c4079c0d8861c426698c Mon Sep 17 00:00:00 2001
-From: Matthew Garrett <mjg59@coreos.com>
-Date: Wed, 23 Nov 2016 13:41:23 +0000
-Subject: [PATCH 27/32] Enable cold boot attack mitigation
-
----
- arch/x86/boot/compressed/eboot.c | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
-diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
-index 801c7a1..ef9409b 100644
---- a/arch/x86/boot/compressed/eboot.c
-+++ b/arch/x86/boot/compressed/eboot.c
-@@ -604,6 +604,31 @@ void setup_graphics(struct boot_params *boot_params)
- }
- }
-
-+#define MEMORY_ONLY_RESET_CONTROL_GUID \
-+ EFI_GUID (0xe20939be, 0x32d4, 0x41be, 0xa1, 0x50, 0x89, 0x7f, 0x85, 0xd4, 0x98, 0x29)
-+
-+static void enable_reset_attack_mitigation(void)
-+{
-+ static const efi_guid_t var_guid = MEMORY_ONLY_RESET_CONTROL_GUID;
-+ static const efi_char16_t MemoryOverwriteRequestControl_name[] = {
-+ 'M', 'e', 'm', 'o', 'r', 'y',
-+ 'O', 'v', 'e', 'r', 'w', 'r', 'i', 't', 'e',
-+ 'R', 'e', 'q', 'u', 'e', 's', 't',
-+ 'C', 'o', 'n', 't', 'r', 'o', 'l',
-+ 0
-+ };
-+ u8 val = 1;
-+
-+ /* Ignore the return value here - there's not really a lot we can do */
-+ efi_call_runtime(set_variable,
-+ (efi_char16_t *)MemoryOverwriteRequestControl_name,
-+ (efi_guid_t *)&var_guid,
-+ EFI_VARIABLE_NON_VOLATILE |
-+ EFI_VARIABLE_BOOTSERVICE_ACCESS |
-+ EFI_VARIABLE_RUNTIME_ACCESS,
-+ sizeof(val), val);
-+}
-+
- /*
- * Because the x86 boot code expects to be passed a boot_params we
- * need to create one ourselves (usually the bootloader would create
-@@ -988,6 +1013,9 @@ struct boot_params *efi_main(struct efi_config *c,
- else
- setup_boot_services32(efi_early);
-
-+ /* Ask the firmware to clear memory if we don't have a clean shutdown */
-+ enable_reset_attack_mitigation();
-+
- /*
- * If the boot loader gave us a value for secure_boot then we use that,
- * otherwise we ask the BIOS.
---
-2.7.4
-
-From 04fac895731801bc6cb26a6061f1c353c80a866c Mon Sep 17 00:00:00 2001
-From: "Lee, Chun-Yi" <jlee@suse.com>
-Date: Wed, 23 Nov 2016 13:52:16 +0000
-Subject: [PATCH 28/32] bpf: Restrict kernel image access functions when the
- kernel is locked down
-
-There are some bpf functions can be used to read kernel memory:
-bpf_probe_read, bpf_probe_write_user and bpf_trace_printk. These allow
-private keys in kernel memory (e.g. the hibernation image signing key) to
-be read by an eBPF program. Prohibit those functions when the kernel is
-locked down.
-
-Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
-Signed-off-by: David Howells <dhowells@redhat.com>
----
- kernel/trace/bpf_trace.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
-index cee9802..7fde851 100644
---- a/kernel/trace/bpf_trace.c
-+++ b/kernel/trace/bpf_trace.c
-@@ -65,6 +65,11 @@ BPF_CALL_3(bpf_probe_read, void *, dst, u32, size, const void *, unsafe_ptr)
- {
- int ret;
-
-+ if (kernel_is_locked_down()) {
-+ memset(dst, 0, size);
-+ return -EPERM;
-+ }
-+
- ret = probe_kernel_read(dst, unsafe_ptr, size);
- if (unlikely(ret < 0))
- memset(dst, 0, size);
-@@ -84,6 +89,9 @@ static const struct bpf_func_proto bpf_probe_read_proto = {
- BPF_CALL_3(bpf_probe_write_user, void *, unsafe_ptr, const void *, src,
- u32, size)
- {
-+ if (kernel_is_locked_down())
-+ return -EPERM;
-+
- /*
- * Ensure we're in user context which is safe for the helper to
- * run. This helper has no business in a kthread.
-@@ -143,6 +151,9 @@ BPF_CALL_5(bpf_trace_printk, char *, fmt, u32, fmt_size, u64, arg1,
- if (fmt[--fmt_size] != 0)
- return -EINVAL;
-
-+ if (kernel_is_locked_down())
-+ return __trace_printk(1, fmt, 0, 0, 0);
-+
- /* check format string for allowed specifiers */
- for (i = 0; i < fmt_size; i++) {
- if ((!isprint(fmt[i]) && !isspace(fmt[i])) || !isascii(fmt[i]))
---
-2.7.4
+2.13.6
-From 707d0e14c2c0d6c3139ff4bcb16ee22c462b4304 Mon Sep 17 00:00:00 2001
+From abbf8de44feab5f50b316d6491926d8d9029cb49 Mon Sep 17 00:00:00 2001
From: David Howells <dhowells@redhat.com>
-Date: Tue, 22 Nov 2016 10:10:34 +0000
-Subject: [PATCH 29/32] scsi: Lock down the eata driver
+Date: Wed, 24 May 2017 14:56:06 +0100
+Subject: [PATCH 18/26] scsi: Lock down the eata driver
When the kernel is running in secure boot mode, we lock down the kernel to
prevent userspace from modifying the running kernel image. Whilst this
@@ -1306,75 +1158,73 @@ The eata driver takes a single string parameter that contains a slew of
settings, including hardware resource configuration. Prohibit use of the
parameter if the kernel is locked down.
-Suggested-by: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
+Suggested-by: Alan Cox <gnomes@lxorguk.ukuu.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Dario Ballabio <ballabio_dario@emc.com>
cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com>
cc: "Martin K. Petersen" <martin.petersen@oracle.com>
cc: linux-scsi@vger.kernel.org
---
- drivers/scsi/eata.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
+ drivers/scsi/eata.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c
-index 227dd2c..5c036d10 100644
+index 6501c330d8c8..72fceaa8f3da 100644
--- a/drivers/scsi/eata.c
+++ b/drivers/scsi/eata.c
-@@ -1552,8 +1552,13 @@ static int eata2x_detect(struct scsi_host_template *tpnt)
-
+@@ -1552,8 +1552,11 @@ static int eata2x_detect(struct scsi_host_template *tpnt)
+
tpnt->proc_name = "eata2x";
-
+
- if (strlen(boot_options))
+ if (strlen(boot_options)) {
-+ if (kernel_is_locked_down()) {
-+ pr_err("Command line-specified device addresses, irqs and dma channels are not permitted when the kernel is locked down\n");
++ if (kernel_is_locked_down("Command line-specified device addresses, irqs and dma channels"))
+ return -EPERM;
-+ }
option_setup(boot_options);
+ }
-
+
#if defined(MODULE)
/* io_port could have been modified when loading as a module */
--
-2.7.4
+2.13.6
-From 07e05e0b7d806a05eba55092630bb75a92311344 Mon Sep 17 00:00:00 2001
+From 116b02dff661d497c10099862b8b86e6cd2262ae Mon Sep 17 00:00:00 2001
From: David Howells <dhowells@redhat.com>
-Date: Fri, 25 Nov 2016 14:37:45 +0000
-Subject: [PATCH 30/32] Prohibit PCMCIA CIS storage when the kernel is locked
+Date: Wed, 24 May 2017 14:56:06 +0100
+Subject: [PATCH 19/26] Prohibit PCMCIA CIS storage when the kernel is locked
down
Prohibit replacement of the PCMCIA Card Information Structure when the
kernel is locked down.
+Suggested-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: David Howells <dhowells@redhat.com>
+cc: linux-pcmcia@lists.infradead.org
---
- drivers/pcmcia/cistpl.c | 5 +++++
- 1 file changed, 5 insertions(+)
+ drivers/pcmcia/cistpl.c | 3 +++
+ 1 file changed, 3 insertions(+)
diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c
-index 55ef7d1..193e4f7 100644
+index 55ef7d1fd8da..b7a0e42eeb25 100644
--- a/drivers/pcmcia/cistpl.c
+++ b/drivers/pcmcia/cistpl.c
-@@ -1578,6 +1578,11 @@ static ssize_t pccard_store_cis(struct file *filp, struct kobject *kobj,
+@@ -1578,6 +1578,9 @@ static ssize_t pccard_store_cis(struct file *filp, struct kobject *kobj,
struct pcmcia_socket *s;
int error;
-
-+ if (kernel_is_locked_down()) {
-+ pr_err("Direct CIS storage isn't permitted when the kernel is locked down\n");
+
++ if (kernel_is_locked_down("Direct PCMCIA CIS storage"))
+ return -EPERM;
-+ }
+
s = to_socket(container_of(kobj, struct device, kobj));
-
+
if (off)
--
-2.7.4
+2.13.6
-From cf1e877adbe35c5f72a9d85570b494aa3f35be6a Mon Sep 17 00:00:00 2001
+From f3dc03aa368cfde123bc1b60bda287091c9d43b4 Mon Sep 17 00:00:00 2001
From: David Howells <dhowells@redhat.com>
-Date: Wed, 7 Dec 2016 10:28:39 +0000
-Subject: [PATCH 31/32] Lock down TIOCSSERIAL
+Date: Wed, 24 May 2017 14:56:06 +0100
+Subject: [PATCH 20/26] Lock down TIOCSSERIAL
Lock down TIOCSSERIAL as that can be used to change the ioport and irq
settings on a serial port. This only appears to be an issue for the serial
@@ -1383,20 +1233,21 @@ ignore attempts to change port/irq or give an error.
Reported-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: David Howells <dhowells@redhat.com>
+cc: Jiri Slaby <jslaby@suse.com>
---
drivers/tty/serial/serial_core.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
-index 9939c3d..7c040e2 100644
+index 3a14cccbd7ff..41f0922ad842 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
-@@ -820,6 +820,12 @@ static int uart_set_info(struct tty_struct *tty, struct tty_port *port,
- new_flags = new_info->flags;
+@@ -842,6 +842,12 @@ static int uart_set_info(struct tty_struct *tty, struct tty_port *port,
+ new_flags = (__force upf_t)new_info->flags;
old_custom_divisor = uport->custom_divisor;
-
-+ if ((change_port || change_irq) && kernel_is_locked_down()) {
-+ pr_err("Using TIOCSSERIAL to change device addresses, irqs and dma channels is not permitted when the kernel is locked down\n");
+
++ if ((change_port || change_irq) &&
++ kernel_is_locked_down("Using TIOCSSERIAL to change device addresses, irqs and dma channels")) {
+ retval = -EPERM;
+ goto exit;
+ }
@@ -1405,5 +1256,457 @@ index 9939c3d..7c040e2 100644
retval = -EPERM;
if (change_irq || change_port ||
--
-2.7.4
+2.13.6
+
+From 9d266defc89a73c6dcca3b67ad70b95ac99b8e53 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Wed, 24 May 2017 14:56:06 +0100
+Subject: [PATCH 21/26] Lock down module params that specify hardware
+ parameters (eg. ioport)
+
+Provided an annotation for module parameters that specify hardware
+parameters (such as io ports, iomem addresses, irqs, dma channels, fixed
+dma buffers and other types).
+
+Suggested-by: Alan Cox <gnomes@lxorguk.ukuu.org.uk>
+Signed-off-by: David Howells <dhowells@redhat.com>
+---
+ kernel/params.c | 26 +++++++++++++++++++++-----
+ 1 file changed, 21 insertions(+), 5 deletions(-)
+
+diff --git a/kernel/params.c b/kernel/params.c
+index 60b2d8101355..422979adb60a 100644
+--- a/kernel/params.c
++++ b/kernel/params.c
+@@ -108,13 +108,19 @@ bool parameq(const char *a, const char *b)
+ return parameqn(a, b, strlen(a)+1);
+ }
+
+-static void param_check_unsafe(const struct kernel_param *kp)
++static bool param_check_unsafe(const struct kernel_param *kp,
++ const char *doing)
+ {
+ if (kp->flags & KERNEL_PARAM_FL_UNSAFE) {
+ pr_warn("Setting dangerous option %s - tainting kernel\n",
+ kp->name);
+ add_taint(TAINT_USER, LOCKDEP_STILL_OK);
+ }
++
++ if (kp->flags & KERNEL_PARAM_FL_HWPARAM &&
++ kernel_is_locked_down("Command line-specified device addresses, irqs and dma channels"))
++ return false;
++ return true;
+ }
+
+ static int parse_one(char *param,
+@@ -144,8 +150,10 @@ static int parse_one(char *param,
+ pr_debug("handling %s with %p\n", param,
+ params[i].ops->set);
+ kernel_param_lock(params[i].mod);
+- param_check_unsafe(&params[i]);
+- err = params[i].ops->set(val, &params[i]);
++ if (param_check_unsafe(&params[i], doing))
++ err = params[i].ops->set(val, &params[i]);
++ else
++ err = -EPERM;
+ kernel_param_unlock(params[i].mod);
+ return err;
+ }
+@@ -556,6 +564,12 @@ static ssize_t param_attr_show(struct module_attribute *mattr,
+ return count;
+ }
+
++#ifdef CONFIG_MODULES
++#define mod_name(mod) (mod)->name
++#else
++#define mod_name(mod) "unknown"
++#endif
++
+ /* sysfs always hands a nul-terminated string in buf. We rely on that. */
+ static ssize_t param_attr_store(struct module_attribute *mattr,
+ struct module_kobject *mk,
+@@ -568,8 +582,10 @@ static ssize_t param_attr_store(struct module_attribute *mattr,
+ return -EPERM;
+
+ kernel_param_lock(mk->mod);
+- param_check_unsafe(attribute->param);
+- err = attribute->param->ops->set(buf, attribute->param);
++ if (param_check_unsafe(attribute->param, mod_name(mk->mod)))
++ err = attribute->param->ops->set(buf, attribute->param);
++ else
++ err = -EPERM;
+ kernel_param_unlock(mk->mod);
+ if (!err)
+ return len;
+--
+2.13.6
+
+From 17a8caed6507846edd0a7016cdcd97fe46cca263 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Wed, 24 May 2017 14:56:07 +0100
+Subject: [PATCH 22/26] x86/mmiotrace: Lock down the testmmiotrace module
+
+The testmmiotrace module shouldn't be permitted when the kernel is locked
+down as it can be used to arbitrarily read and write MMIO space.
+
+Suggested-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: David Howells <dhowells@redhat.com
+cc: Thomas Gleixner <tglx@linutronix.de>
+cc: Steven Rostedt <rostedt@goodmis.org>
+cc: Ingo Molnar <mingo@kernel.org>
+cc: "H. Peter Anvin" <hpa@zytor.com>
+cc: x86@kernel.org
+---
+ arch/x86/mm/testmmiotrace.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/x86/mm/testmmiotrace.c b/arch/x86/mm/testmmiotrace.c
+index f6ae6830b341..bbaad357f5d7 100644
+--- a/arch/x86/mm/testmmiotrace.c
++++ b/arch/x86/mm/testmmiotrace.c
+@@ -115,6 +115,9 @@ static int __init init(void)
+ {
+ unsigned long size = (read_far) ? (8 << 20) : (16 << 10);
+
++ if (kernel_is_locked_down("MMIO trace testing"))
++ return -EPERM;
++
+ if (mmio_address == 0) {
+ pr_err("you have to use the module argument mmio_address.\n");
+ pr_err("DO NOT LOAD THIS MODULE UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!\n");
+--
+2.13.6
+
+From 79ae67bf5f7eda526abaa80b01b19e08c1ed3558 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Wed, 18 Oct 2017 17:28:02 +0100
+Subject: [PATCH 23/26] debugfs: Disallow use of debugfs files when the kernel
+ is locked down
+
+Disallow opening of debugfs files when the kernel is locked down as various
+drivers give raw access to hardware through debugfs.
+
+Accesses to tracefs should use /sys/kernel/tracing/ rather than
+/sys/kernel/debug/tracing/. Possibly a symlink should be emplaced.
+
+Normal device interaction should be done through configfs or a miscdev, not
+debugfs.
+
+Note that this makes it unnecessary to specifically lock down show_dsts(),
+show_devs() and show_call() in the asus-wmi driver.
+
+Signed-off-by: David Howells <dhowells@redhat.com>
+cc: Andy Shevchenko <andy.shevchenko@gmail.com>
+cc: acpi4asus-user@lists.sourceforge.net
+cc: platform-driver-x86@vger.kernel.org
+cc: Matthew Garrett <matthew.garrett@nebula.com>
+cc: Thomas Gleixner <tglx@linutronix.de>
+---
+ fs/debugfs/file.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/fs/debugfs/file.c b/fs/debugfs/file.c
+index 6dabc4a10396..32b5168a7e91 100644
+--- a/fs/debugfs/file.c
++++ b/fs/debugfs/file.c
+@@ -103,6 +103,9 @@ static int open_proxy_open(struct inode *inode, struct file *filp)
+ const struct file_operations *real_fops = NULL;
+ int srcu_idx, r;
+
++ if (kernel_is_locked_down("debugfs"))
++ return -EPERM;
++
+ r = debugfs_use_file_start(dentry, &srcu_idx);
+ if (r) {
+ r = -ENOENT;
+@@ -232,6 +235,9 @@ static int full_proxy_open(struct inode *inode, struct file *filp)
+ struct file_operations *proxy_fops = NULL;
+ int srcu_idx, r;
+
++ if (kernel_is_locked_down("debugfs"))
++ return -EPERM;
++
+ r = debugfs_use_file_start(dentry, &srcu_idx);
+ if (r) {
+ r = -ENOENT;
+--
+2.13.6
+
+From 87ed5c02f0946c855730420cbf1daa6a2dfc54d7 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Thu, 19 Oct 2017 13:58:19 +0100
+Subject: [PATCH 24/26] Lock down /proc/kcore
+
+Disallow access to /proc/kcore when the kernel is locked down to prevent
+access to cryptographic data.
+
+Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: James Morris <james.l.morris@oracle.com>
+---
+ fs/proc/kcore.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
+index 45629f4b5402..176cf749e650 100644
+--- a/fs/proc/kcore.c
++++ b/fs/proc/kcore.c
+@@ -549,6 +549,8 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
+
+ static int open_kcore(struct inode *inode, struct file *filp)
+ {
++ if (kernel_is_locked_down("/proc/kcore"))
++ return -EPERM;
+ if (!capable(CAP_SYS_RAWIO))
+ return -EPERM;
+
+--
+2.13.6
+
+From 2bce9ca3a24e0b35dcf665e6ba082f0a796c6aad Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Thu, 19 Oct 2017 14:18:53 +0100
+Subject: [PATCH 25/26] efi: Add an EFI_SECURE_BOOT flag to indicate secure
+ boot mode
+
+UEFI machines can be booted in Secure Boot mode. Add an EFI_SECURE_BOOT
+flag that can be passed to efi_enabled() to find out whether secure boot is
+enabled.
+
+Move the switch-statement in x86's setup_arch() that inteprets the
+secure_boot boot parameter to generic code and set the bit there.
+
+Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Signed-off-by: David Howells <dhowells@redhat.com>
+Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+cc: linux-efi@vger.kernel.org
+---
+ arch/x86/kernel/setup.c | 14 +-------------
+ drivers/firmware/efi/Makefile | 1 +
+ drivers/firmware/efi/secureboot.c | 38 ++++++++++++++++++++++++++++++++++++++
+ include/linux/efi.h | 16 ++++++++++------
+ 4 files changed, 50 insertions(+), 19 deletions(-)
+ create mode 100644 drivers/firmware/efi/secureboot.c
+
+diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
+index 0957dd73d127..7c2162f9e769 100644
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -1197,19 +1197,7 @@ void __init setup_arch(char **cmdline_p)
+ /* Allocate bigger log buffer */
+ setup_log_buf(1);
+
+- if (efi_enabled(EFI_BOOT)) {
+- switch (boot_params.secure_boot) {
+- case efi_secureboot_mode_disabled:
+- pr_info("Secure boot disabled\n");
+- break;
+- case efi_secureboot_mode_enabled:
+- pr_info("Secure boot enabled\n");
+- break;
+- default:
+- pr_info("Secure boot could not be determined\n");
+- break;
+- }
+- }
++ efi_set_secure_boot(boot_params.secure_boot);
+
+ reserve_initrd();
+
+diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile
+index 0329d319d89a..883f9f7eefc6 100644
+--- a/drivers/firmware/efi/Makefile
++++ b/drivers/firmware/efi/Makefile
+@@ -23,6 +23,7 @@ obj-$(CONFIG_EFI_FAKE_MEMMAP) += fake_mem.o
+ obj-$(CONFIG_EFI_BOOTLOADER_CONTROL) += efibc.o
+ obj-$(CONFIG_EFI_TEST) += test/
+ obj-$(CONFIG_EFI_DEV_PATH_PARSER) += dev-path-parser.o
++obj-$(CONFIG_EFI) += secureboot.o
+ obj-$(CONFIG_APPLE_PROPERTIES) += apple-properties.o
+
+ arm-obj-$(CONFIG_EFI) := arm-init.o arm-runtime.o
+diff --git a/drivers/firmware/efi/secureboot.c b/drivers/firmware/efi/secureboot.c
+new file mode 100644
+index 000000000000..9070055de0a1
+--- /dev/null
++++ b/drivers/firmware/efi/secureboot.c
+@@ -0,0 +1,38 @@
++/* Core kernel secure boot support.
++ *
++ * Copyright (C) 2017 Red Hat, Inc. All Rights Reserved.
++ * Written by David Howells (dhowells@redhat.com)
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public Licence
++ * as published by the Free Software Foundation; either version
++ * 2 of the Licence, or (at your option) any later version.
++ */
++
++#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
++
++#include <linux/efi.h>
++#include <linux/kernel.h>
++#include <linux/printk.h>
++
++/*
++ * Decide what to do when UEFI secure boot mode is enabled.
++ */
++void __init efi_set_secure_boot(enum efi_secureboot_mode mode)
++{
++ if (efi_enabled(EFI_BOOT)) {
++ switch (mode) {
++ case efi_secureboot_mode_disabled:
++ pr_info("Secure boot disabled\n");
++ break;
++ case efi_secureboot_mode_enabled:
++ set_bit(EFI_SECURE_BOOT, &efi.flags);
++ pr_info("Secure boot enabled\n");
++ break;
++ default:
++ pr_warning("Secure boot could not be determined (mode %u)\n",
++ mode);
++ break;
++ }
++ }
++}
+diff --git a/include/linux/efi.h b/include/linux/efi.h
+index 66f4a4e79f4b..7c7a7e33e4d1 100644
+--- a/include/linux/efi.h
++++ b/include/linux/efi.h
+@@ -1103,6 +1103,14 @@ extern int __init efi_setup_pcdp_console(char *);
+ #define EFI_DBG 8 /* Print additional debug info at runtime */
+ #define EFI_NX_PE_DATA 9 /* Can runtime data regions be mapped non-executable? */
+ #define EFI_MEM_ATTR 10 /* Did firmware publish an EFI_MEMORY_ATTRIBUTES table? */
++#define EFI_SECURE_BOOT 11 /* Are we in Secure Boot mode? */
++
++enum efi_secureboot_mode {
++ efi_secureboot_mode_unset,
++ efi_secureboot_mode_unknown,
++ efi_secureboot_mode_disabled,
++ efi_secureboot_mode_enabled,
++};
+
+ #ifdef CONFIG_EFI
+ /*
+@@ -1115,6 +1123,7 @@ static inline bool efi_enabled(int feature)
+ extern void efi_reboot(enum reboot_mode reboot_mode, const char *__unused);
+
+ extern bool efi_is_table_address(unsigned long phys_addr);
++extern void __init efi_set_secure_boot(enum efi_secureboot_mode mode);
+ #else
+ static inline bool efi_enabled(int feature)
+ {
+@@ -1133,6 +1142,7 @@ static inline bool efi_is_table_address(unsigned long phys_addr)
+ {
+ return false;
+ }
++static inline void efi_set_secure_boot(enum efi_secureboot_mode mode) {}
+ #endif
+
+ extern int efi_status_to_err(efi_status_t status);
+@@ -1518,12 +1528,6 @@ efi_status_t efi_setup_gop(efi_system_table_t *sys_table_arg,
+ bool efi_runtime_disabled(void);
+ extern void efi_call_virt_check_flags(unsigned long flags, const char *call);
+
+-enum efi_secureboot_mode {
+- efi_secureboot_mode_unset,
+- efi_secureboot_mode_unknown,
+- efi_secureboot_mode_disabled,
+- efi_secureboot_mode_enabled,
+-};
+ enum efi_secureboot_mode efi_get_secureboot(efi_system_table_t *sys_table);
+
+ #ifdef CONFIG_RESET_ATTACK_MITIGATION
+--
+2.13.6
+
+From 163d6a313399a4d50c5c7e42e3dd642ca8d495d7 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Thu, 19 Oct 2017 14:05:02 +0100
+Subject: [PATCH 26/26] efi: Lock down the kernel if booted in secure boot mode
+
+UEFI Secure Boot provides a mechanism for ensuring that the firmware will
+only load signed bootloaders and kernels. Certain use cases may also
+require that all kernel modules also be signed. Add a configuration option
+that to lock down the kernel - which includes requiring validly signed
+modules - if the kernel is secure-booted.
+
+Signed-off-by: David Howells <dhowells@redhat.com>
+Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+cc: linux-efi@vger.kernel.org
+---
+ arch/x86/kernel/setup.c | 6 ++++--
+ security/Kconfig | 14 ++++++++++++++
+ security/lock_down.c | 1 +
+ 3 files changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
+index 7c2162f9e769..4e38327efb2e 100644
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -64,6 +64,7 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/ctype.h>
+ #include <linux/uaccess.h>
++#include <linux/security.h>
+
+ #include <linux/percpu.h>
+ #include <linux/crash_dump.h>
+@@ -1039,6 +1040,9 @@ void __init setup_arch(char **cmdline_p)
+ if (efi_enabled(EFI_BOOT))
+ efi_init();
+
++ efi_set_secure_boot(boot_params.secure_boot);
++ init_lockdown();
++
+ dmi_scan_machine();
+ dmi_memdev_walk();
+ dmi_set_dump_stack_arch_desc();
+@@ -1197,8 +1201,6 @@ void __init setup_arch(char **cmdline_p)
+ /* Allocate bigger log buffer */
+ setup_log_buf(1);
+
+- efi_set_secure_boot(boot_params.secure_boot);
+-
+ reserve_initrd();
+
+ acpi_table_upgrade();
+diff --git a/security/Kconfig b/security/Kconfig
+index 453cc89c198a..974731ac4f85 100644
+--- a/security/Kconfig
++++ b/security/Kconfig
+@@ -220,6 +220,20 @@ config ALLOW_LOCKDOWN_LIFT_BY_SYSRQ
+ Allow the lockdown on a kernel to be lifted, by pressing a SysRq key
+ combination on a wired keyboard.
+
++config LOCK_DOWN_IN_EFI_SECURE_BOOT
++ bool "Lock down the kernel in EFI Secure Boot mode"
++ default n
++ select LOCK_DOWN_KERNEL
++ depends on EFI
++ help
++ UEFI Secure Boot provides a mechanism for ensuring that the firmware
++ will only load signed bootloaders and kernels. Secure boot mode may
++ be determined from EFI variables provided by the system firmware if
++ not indicated by the boot parameters.
++
++ Enabling this option turns on results in kernel lockdown being
++ triggered if EFI Secure Boot is set.
++
+
+ source security/selinux/Kconfig
+ source security/smack/Kconfig
+diff --git a/security/lock_down.c b/security/lock_down.c
+index 2c6b00f0c229..527f7e51dc8d 100644
+--- a/security/lock_down.c
++++ b/security/lock_down.c
+@@ -12,6 +12,7 @@
+ #include <linux/security.h>
+ #include <linux/export.h>
+ #include <linux/sysrq.h>
++#include <linux/efi.h>
+ #include <asm/setup.h>
+
+ #ifdef CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ
+--
+2.13.6
diff --git a/kernel-aarch64-debug.config b/kernel-aarch64-debug.config
index cd7ca3f3e..1e35231c2 100644
--- a/kernel-aarch64-debug.config
+++ b/kernel-aarch64-debug.config
@@ -178,7 +178,9 @@ CONFIG_AK8975=m
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -257,6 +259,7 @@ CONFIG_ARM64_ERRATUM_858921=y
CONFIG_ARM64_HW_AFDBM=y
CONFIG_ARM64_LSE_ATOMICS=y
CONFIG_ARM64_PAN=y
+# CONFIG_ARM64_PMEM is not set
CONFIG_ARM64_PTDUMP_DEBUGFS=y
CONFIG_ARM64_PTDUMP=y
# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
@@ -330,6 +333,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -470,6 +474,7 @@ CONFIG_BATTERY_AXP20X=m
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -519,7 +524,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_BLK_DEV_BSGLIB=y
@@ -577,6 +581,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -588,6 +593,7 @@ CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -758,11 +764,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_CC_STACKPROTECTOR_NONE=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -841,9 +849,9 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
CONFIG_CLKDEV_LOOKUP=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
CONFIG_CLK_SP810=y
CONFIG_CLKSRC_VERSATILE=y
@@ -952,8 +960,8 @@ CONFIG_CRYPTO_AES_ARM64_BS=m
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
CONFIG_CRYPTO_AES_ARM64_CE=y
-CONFIG_CRYPTO_AES_ARM64=m
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
+CONFIG_CRYPTO_AES_ARM64=y
CONFIG_CRYPTO_AES_ARM_BS=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_AES_TI=m
@@ -1000,6 +1008,8 @@ CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
CONFIG_CRYPTO_DEV_QCE=m
CONFIG_CRYPTO_DEV_ROCKCHIP=m
CONFIG_CRYPTO_DEV_SAFEXCEL=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
+CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1047,7 +1057,7 @@ CONFIG_CRYPTO_SHA1_ARM64_CE=y
CONFIG_CRYPTO_SHA1_ARM_NEON=y
CONFIG_CRYPTO_SHA1_ARM=y
CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256_ARM64=m
+CONFIG_CRYPTO_SHA256_ARM64=y
CONFIG_CRYPTO_SHA256_ARM=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA2_ARM64_CE=y
@@ -1232,7 +1242,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1255,6 +1265,7 @@ CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_DP_AUX_CHARDEV=y
CONFIG_DRM_DUMB_VGA_DAC=m
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
CONFIG_DRM_DW_HDMI=m
CONFIG_DRM_FBDEV_EMULATION=y
@@ -1318,7 +1329,6 @@ CONFIG_DRM_ROCKCHIP=m
CONFIG_DRM_SIL_SII8620=m
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_STM is not set
-CONFIG_DRM_SUN4I_BACKEND=m
CONFIG_DRM_SUN8I_MIXER=m
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_TEGRA_DEBUG is not set
@@ -1329,6 +1339,7 @@ CONFIG_DRM_TI_TFP410=m
CONFIG_DRM_TOSHIBA_TC358767=m
CONFIG_DRM_UDL=m
# CONFIG_DRM_VBOXVIDEO is not set
+CONFIG_DRM_VC4_HDMI_CEC=y
CONFIG_DRM_VC4=m
CONFIG_DRM_VGEM=m
CONFIG_DRM_VIA=m
@@ -1360,6 +1371,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1510,6 +1522,7 @@ CONFIG_EXTCON_GPIO=m
CONFIG_EXTCON_QCOM_SPMI_MISC=m
# CONFIG_EXTCON_RT8973A is not set
# CONFIG_EXTCON_SM5502 is not set
+CONFIG_EXTCON_USBC_CROS_EC=m
CONFIG_EXTCON_USB_GPIO=m
CONFIG_EXTCON=y
CONFIG_EXTRA_FIRMWARE=""
@@ -1722,6 +1735,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
CONFIG_GPIO_AXP209=m
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_DEVRES=y
CONFIG_GPIO_DWAPB=m
@@ -1754,7 +1768,9 @@ CONFIG_GPIO_PL061=y
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_TEGRA=y
+CONFIG_GPIO_THUNDERX=m
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1965,6 +1981,7 @@ CONFIG_HWPOISON_INJECT=m
CONFIG_HW_RANDOM_BCM2835=m
CONFIG_HW_RANDOM_CAVIUM=m
CONFIG_HW_RANDOM_HISI=m
+CONFIG_HW_RANDOM_IMX_RNGC=m
CONFIG_HW_RANDOM_MESON=m
CONFIG_HW_RANDOM_MSM=m
CONFIG_HW_RANDOM_OMAP=m
@@ -2003,10 +2020,10 @@ CONFIG_I2C_CROS_EC_TUNNEL=m
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEMUX_PINCTRL is not set
-CONFIG_I2C_DESIGNWARE_CORE=m
+CONFIG_I2C_DESIGNWARE_CORE=y
# CONFIG_I2C_DESIGNWARE is not set
CONFIG_I2C_DESIGNWARE_PCI=m
-CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_DESIGNWARE_SLAVE=y
CONFIG_I2C_DIOLAN_U2C=m
# CONFIG_I2C_EG20T is not set
@@ -2160,6 +2177,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -2237,8 +2255,10 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2421,6 +2441,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2436,6 +2457,7 @@ CONFIG_IR_MESON=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -2668,6 +2690,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2767,6 +2790,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2791,6 +2815,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2871,6 +2896,7 @@ CONFIG_MDIO_BUS_MUX=m
CONFIG_MDIO_BUS_MUX_MMIOREG=m
CONFIG_MDIO_GPIO=m
CONFIG_MDIO_HISI_FEMAC=m
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_SUN4I is not set
CONFIG_MDIO_THUNDER=m
@@ -2925,6 +2951,7 @@ CONFIG_MEMSTICK_TIFM_MS=m
CONFIG_MESON_EFUSE=m
CONFIG_MESON_GXBB_WATCHDOG=m
CONFIG_MESON_GXL_PHY=m
+CONFIG_MESON_GX_SOCINFO=y
CONFIG_MESON_SARADC=m
CONFIG_MESON_SM=y
# CONFIG_MESON_WATCHDOG is not set
@@ -2947,6 +2974,7 @@ CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X_RSB=m
CONFIG_MFD_AXP20X=y
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_I2C=m
@@ -3020,6 +3048,7 @@ CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VEXPRESS_SYSREG=y
CONFIG_MFD_VIPERBOARD=m
@@ -3064,8 +3093,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -3088,7 +3119,6 @@ CONFIG_MMA7660=m
# CONFIG_MMC35240 is not set
CONFIG_MMC_ARMMMCI=m
CONFIG_MMC_BCM2835=m
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CAVIUM_THUNDERX=m
@@ -3103,7 +3133,7 @@ CONFIG_MMC_DW_ROCKCHIP=m
CONFIG_MMC_MESON_GX=m
# CONFIG_MMC_MTK is not set
CONFIG_MMC_MVSDIO=m
-CONFIG_MMC_QCOM_DML=m
+CONFIG_MMC_QCOM_DML=y
CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
@@ -3235,6 +3265,7 @@ CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_NAND_OMAP2 is not set
# CONFIG_MTD_NAND_OXNAS is not set
+CONFIG_MTD_NAND_PXA3xx=m
CONFIG_MTD_OF_PARTS=m
# CONFIG_MTD_ONENAND is not set
# CONFIG_MTD_OOPS is not set
@@ -3474,6 +3505,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3544,6 +3576,7 @@ CONFIG_NET_VENDOR_EMULEX=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3705,6 +3738,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -4007,8 +4041,10 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHY_HI6220_USB=m
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
CONFIG_PHY_MESON8B_USB2=m
# CONFIG_PHY_MESON_GXL_USB2 is not set
+CONFIG_PHY_MVEBU_CP110_COMPHY=m
CONFIG_PHY_MVEBU_SATA=y
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
@@ -4033,6 +4069,7 @@ CONFIG_PHY_SUN4I_USB=m
CONFIG_PHY_TEGRA_XUSB=m
# CONFIG_PHY_TUSB1210 is not set
CONFIG_PHY_XGENE=y
+# CONFIG_PI433 is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
@@ -4061,7 +4098,10 @@ CONFIG_PINCTRL_MVEBU=y
CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
CONFIG_PINCTRL_QDF2XXX=y
+CONFIG_PINCTRL_RK805=m
CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SUNRISEPOINT is not set
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -4187,6 +4227,7 @@ CONFIG_QCOM_COINCELL=m
CONFIG_QCOM_EMAC=m
# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set
CONFIG_QCOM_FALKOR_ERRATUM_1009=y
+# CONFIG_QCOM_GLINK_SSR is not set
CONFIG_QCOM_GSBI=y
CONFIG_QCOM_HIDMA=m
CONFIG_QCOM_HIDMA_MGMT=m
@@ -4238,6 +4279,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4313,6 +4355,7 @@ CONFIG_REGULATOR_ACT8865=m
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
# CONFIG_REGULATOR_DEBUG is not set
@@ -4367,9 +4410,11 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=y
CONFIG_RESET_HISI=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SCI is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
@@ -4390,6 +4435,7 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
CONFIG_ROCKCHIP_ANALOGIX_DP=y
CONFIG_ROCKCHIP_CDN_DP=y
CONFIG_ROCKCHIP_DW_HDMI=y
@@ -4399,6 +4445,7 @@ CONFIG_ROCKCHIP_INNO_HDMI=y
CONFIG_ROCKCHIP_IODOMAIN=m
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_ROCKCHIP_MBOX=y
+CONFIG_ROCKCHIP_PHY=m
CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_ROCKCHIP_SARADC=m
CONFIG_ROCKCHIP_THERMAL=m
@@ -4410,6 +4457,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
CONFIG_RPMSG=m
CONFIG_RPMSG_QCOM_GLINK_RPM=m
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPMSG_QCOM_SMD=m
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
@@ -4785,6 +4833,7 @@ CONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IIO_HWMON=m
CONFIG_SENSORS_INA209=m
@@ -4875,6 +4924,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4959,6 +5009,7 @@ CONFIG_SERIO_AMBAKMI=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4972,6 +5023,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4981,7 +5033,7 @@ CONFIG_SH_ETH=m
# CONFIG_SIGMA is not set
CONFIG_SIGMATEL_FIR=m
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
-CONFIG_SIMPLE_PM_BUS=y
+# CONFIG_SIMPLE_PM_BUS is not set
CONFIG_SIS190=m
CONFIG_SIS900=m
# CONFIG_SKFP is not set
@@ -4990,6 +5042,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -5035,7 +5088,7 @@ CONFIG_SND_AUDIO_GRAPH_CARD=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
@@ -5099,7 +5152,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -5192,6 +5245,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5258,6 +5312,12 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TAS5086 is not set
# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SOC_TAS5720 is not set
+CONFIG_SND_SOC_TEGRA20_AC97=m
+CONFIG_SND_SOC_TEGRA20_DAS=m
+CONFIG_SND_SOC_TEGRA20_I2S=m
+CONFIG_SND_SOC_TEGRA20_SPDIF=m
+CONFIG_SND_SOC_TEGRA30_AHUB=m
+CONFIG_SND_SOC_TEGRA30_I2S=m
# CONFIG_SND_SOC_TEGRA_ALC5632 is not set
CONFIG_SND_SOC_TEGRA=m
CONFIG_SND_SOC_TEGRA_MAX98090=m
@@ -5277,6 +5337,7 @@ CONFIG_SND_SOC_TPA6130A2=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5402,6 +5463,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
CONFIG_SRAM=y
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5435,6 +5497,7 @@ CONFIG_STMMAC_ETH=m
CONFIG_STMMAC_PLATFORM=m
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_STUB_CLK_HI6220=y
@@ -5621,6 +5684,8 @@ CONFIG_TIGON3=m
# CONFIG_TIMER_STATS is not set
CONFIG_TINYDRM_MI0283QT=m
CONFIG_TINYDRM_MIPI_DBI=m
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
CONFIG_TIPC=m
# CONFIG_TIPC_MEDIA_IB is not set
CONFIG_TIPC_MEDIA_UDP=y
@@ -6243,6 +6308,7 @@ CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+CONFIG_VIDEO_MESON_AO_CEC=m
CONFIG_VIDEO_MEYE=m
CONFIG_VIDEO_MXB=m
CONFIG_VIDEO_NOON010PC30=m
@@ -6251,6 +6317,7 @@ CONFIG_VIDEO_NOON010PC30=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_QCOM_CAMSS=m
CONFIG_VIDEO_QCOM_VENUS=m
CONFIG_VIDEO_SAA6588=m
CONFIG_VIDEO_SAA7134_ALSA=m
@@ -6312,6 +6379,7 @@ CONFIG_VLAN_8021Q_GVRP=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_MVRP=y
CONFIG_VLSI_FIR=m
+CONFIG_VMAP_STACK=y
# CONFIG_VME_BUS is not set
# CONFIG_VMXNET3 is not set
CONFIG_VORTEX=m
@@ -6348,6 +6416,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -6367,6 +6436,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6461,6 +6531,7 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-aarch64.config b/kernel-aarch64.config
index 677a69050..355143eaf 100644
--- a/kernel-aarch64.config
+++ b/kernel-aarch64.config
@@ -178,7 +178,9 @@ CONFIG_AK8975=m
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -257,6 +259,7 @@ CONFIG_ARM64_ERRATUM_858921=y
CONFIG_ARM64_HW_AFDBM=y
CONFIG_ARM64_LSE_ATOMICS=y
CONFIG_ARM64_PAN=y
+# CONFIG_ARM64_PMEM is not set
CONFIG_ARM64_PTDUMP_DEBUGFS=y
# CONFIG_ARM64_PTDUMP is not set
# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
@@ -330,6 +333,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -470,6 +474,7 @@ CONFIG_BATTERY_AXP20X=m
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -519,7 +524,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_BLK_DEV_BSGLIB=y
@@ -577,6 +581,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -588,6 +593,7 @@ CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -758,11 +764,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_CC_STACKPROTECTOR_NONE=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -841,9 +849,9 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
CONFIG_CLKDEV_LOOKUP=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
CONFIG_CLK_SP810=y
CONFIG_CLKSRC_VERSATILE=y
@@ -951,8 +959,8 @@ CONFIG_CRYPTO_AES_ARM64_BS=m
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
CONFIG_CRYPTO_AES_ARM64_CE=y
-CONFIG_CRYPTO_AES_ARM64=m
CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
+CONFIG_CRYPTO_AES_ARM64=y
CONFIG_CRYPTO_AES_ARM_BS=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_AES_TI=m
@@ -999,6 +1007,8 @@ CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
CONFIG_CRYPTO_DEV_QCE=m
CONFIG_CRYPTO_DEV_ROCKCHIP=m
CONFIG_CRYPTO_DEV_SAFEXCEL=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
+CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1046,7 +1056,7 @@ CONFIG_CRYPTO_SHA1_ARM64_CE=y
CONFIG_CRYPTO_SHA1_ARM_NEON=y
CONFIG_CRYPTO_SHA1_ARM=y
CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256_ARM64=m
+CONFIG_CRYPTO_SHA256_ARM64=y
CONFIG_CRYPTO_SHA256_ARM=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA2_ARM64_CE=y
@@ -1222,7 +1232,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1245,6 +1255,7 @@ CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_DP_AUX_CHARDEV=y
CONFIG_DRM_DUMB_VGA_DAC=m
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
CONFIG_DRM_DW_HDMI=m
CONFIG_DRM_FBDEV_EMULATION=y
@@ -1308,7 +1319,6 @@ CONFIG_DRM_ROCKCHIP=m
CONFIG_DRM_SIL_SII8620=m
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_STM is not set
-CONFIG_DRM_SUN4I_BACKEND=m
CONFIG_DRM_SUN8I_MIXER=m
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_TEGRA_DEBUG is not set
@@ -1319,6 +1329,7 @@ CONFIG_DRM_TI_TFP410=m
CONFIG_DRM_TOSHIBA_TC358767=m
CONFIG_DRM_UDL=m
# CONFIG_DRM_VBOXVIDEO is not set
+CONFIG_DRM_VC4_HDMI_CEC=y
CONFIG_DRM_VC4=m
CONFIG_DRM_VGEM=m
CONFIG_DRM_VIA=m
@@ -1350,6 +1361,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1500,6 +1512,7 @@ CONFIG_EXTCON_GPIO=m
CONFIG_EXTCON_QCOM_SPMI_MISC=m
# CONFIG_EXTCON_RT8973A is not set
# CONFIG_EXTCON_SM5502 is not set
+CONFIG_EXTCON_USBC_CROS_EC=m
CONFIG_EXTCON_USB_GPIO=m
CONFIG_EXTCON=y
CONFIG_EXTRA_FIRMWARE=""
@@ -1705,6 +1718,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
CONFIG_GPIO_AXP209=m
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_DEVRES=y
CONFIG_GPIO_DWAPB=m
@@ -1737,7 +1751,9 @@ CONFIG_GPIO_PL061=y
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_TEGRA=y
+CONFIG_GPIO_THUNDERX=m
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1948,6 +1964,7 @@ CONFIG_HWPOISON_INJECT=m
CONFIG_HW_RANDOM_BCM2835=m
CONFIG_HW_RANDOM_CAVIUM=m
CONFIG_HW_RANDOM_HISI=m
+CONFIG_HW_RANDOM_IMX_RNGC=m
CONFIG_HW_RANDOM_MESON=m
CONFIG_HW_RANDOM_MSM=m
CONFIG_HW_RANDOM_OMAP=m
@@ -1986,10 +2003,10 @@ CONFIG_I2C_CROS_EC_TUNNEL=m
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEMUX_PINCTRL is not set
-CONFIG_I2C_DESIGNWARE_CORE=m
+CONFIG_I2C_DESIGNWARE_CORE=y
# CONFIG_I2C_DESIGNWARE is not set
CONFIG_I2C_DESIGNWARE_PCI=m
-CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_DESIGNWARE_SLAVE=y
CONFIG_I2C_DIOLAN_U2C=m
# CONFIG_I2C_EG20T is not set
@@ -2143,6 +2160,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -2220,8 +2238,10 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2404,6 +2424,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2419,6 +2440,7 @@ CONFIG_IR_MESON=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -2649,6 +2671,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2748,6 +2771,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2772,6 +2796,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2851,6 +2876,7 @@ CONFIG_MDIO_BUS_MUX=m
CONFIG_MDIO_BUS_MUX_MMIOREG=m
CONFIG_MDIO_GPIO=m
CONFIG_MDIO_HISI_FEMAC=m
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_SUN4I is not set
CONFIG_MDIO_THUNDER=m
@@ -2905,6 +2931,7 @@ CONFIG_MEMSTICK_TIFM_MS=m
CONFIG_MESON_EFUSE=m
CONFIG_MESON_GXBB_WATCHDOG=m
CONFIG_MESON_GXL_PHY=m
+CONFIG_MESON_GX_SOCINFO=y
CONFIG_MESON_SARADC=m
CONFIG_MESON_SM=y
# CONFIG_MESON_WATCHDOG is not set
@@ -2927,6 +2954,7 @@ CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X_RSB=m
CONFIG_MFD_AXP20X=y
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_I2C=m
@@ -3000,6 +3028,7 @@ CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VEXPRESS_SYSREG=y
CONFIG_MFD_VIPERBOARD=m
@@ -3044,8 +3073,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -3068,7 +3099,6 @@ CONFIG_MMA7660=m
# CONFIG_MMC35240 is not set
CONFIG_MMC_ARMMMCI=m
CONFIG_MMC_BCM2835=m
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CAVIUM_THUNDERX=m
@@ -3083,7 +3113,7 @@ CONFIG_MMC_DW_ROCKCHIP=m
CONFIG_MMC_MESON_GX=m
# CONFIG_MMC_MTK is not set
CONFIG_MMC_MVSDIO=m
-CONFIG_MMC_QCOM_DML=m
+CONFIG_MMC_QCOM_DML=y
CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
@@ -3214,6 +3244,7 @@ CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_NAND_OMAP2 is not set
# CONFIG_MTD_NAND_OXNAS is not set
+CONFIG_MTD_NAND_PXA3xx=m
CONFIG_MTD_OF_PARTS=m
# CONFIG_MTD_ONENAND is not set
# CONFIG_MTD_OOPS is not set
@@ -3453,6 +3484,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3523,6 +3555,7 @@ CONFIG_NET_VENDOR_EMULEX=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3684,6 +3717,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3986,8 +4020,10 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHY_HI6220_USB=m
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
CONFIG_PHY_MESON8B_USB2=m
# CONFIG_PHY_MESON_GXL_USB2 is not set
+CONFIG_PHY_MVEBU_CP110_COMPHY=m
CONFIG_PHY_MVEBU_SATA=y
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
@@ -4012,6 +4048,7 @@ CONFIG_PHY_SUN4I_USB=m
CONFIG_PHY_TEGRA_XUSB=m
# CONFIG_PHY_TUSB1210 is not set
CONFIG_PHY_XGENE=y
+# CONFIG_PI433 is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
@@ -4040,7 +4077,10 @@ CONFIG_PINCTRL_MVEBU=y
CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
CONFIG_PINCTRL_QDF2XXX=y
+CONFIG_PINCTRL_RK805=m
CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SUNRISEPOINT is not set
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -4165,6 +4205,7 @@ CONFIG_QCOM_COINCELL=m
CONFIG_QCOM_EMAC=m
# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set
CONFIG_QCOM_FALKOR_ERRATUM_1009=y
+# CONFIG_QCOM_GLINK_SSR is not set
CONFIG_QCOM_GSBI=y
CONFIG_QCOM_HIDMA=m
CONFIG_QCOM_HIDMA_MGMT=m
@@ -4216,6 +4257,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4291,6 +4333,7 @@ CONFIG_REGULATOR_ACT8865=m
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
# CONFIG_REGULATOR_DEBUG is not set
@@ -4345,9 +4388,11 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=y
CONFIG_RESET_HISI=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SCI is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
@@ -4368,6 +4413,7 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
CONFIG_ROCKCHIP_ANALOGIX_DP=y
CONFIG_ROCKCHIP_CDN_DP=y
CONFIG_ROCKCHIP_DW_HDMI=y
@@ -4377,6 +4423,7 @@ CONFIG_ROCKCHIP_INNO_HDMI=y
CONFIG_ROCKCHIP_IODOMAIN=m
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_ROCKCHIP_MBOX=y
+CONFIG_ROCKCHIP_PHY=m
CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_ROCKCHIP_SARADC=m
CONFIG_ROCKCHIP_THERMAL=m
@@ -4388,6 +4435,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
CONFIG_RPMSG=m
CONFIG_RPMSG_QCOM_GLINK_RPM=m
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPMSG_QCOM_SMD=m
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
@@ -4763,6 +4811,7 @@ CONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IIO_HWMON=m
CONFIG_SENSORS_INA209=m
@@ -4853,6 +4902,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4937,6 +4987,7 @@ CONFIG_SERIO_AMBAKMI=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4950,6 +5001,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4959,7 +5011,7 @@ CONFIG_SH_ETH=m
# CONFIG_SIGMA is not set
CONFIG_SIGMATEL_FIR=m
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
-CONFIG_SIMPLE_PM_BUS=y
+# CONFIG_SIMPLE_PM_BUS is not set
CONFIG_SIS190=m
CONFIG_SIS900=m
# CONFIG_SKFP is not set
@@ -4968,6 +5020,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -5013,7 +5066,7 @@ CONFIG_SND_AUDIO_GRAPH_CARD=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
@@ -5077,7 +5130,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -5169,6 +5222,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5235,6 +5289,12 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TAS5086 is not set
# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SOC_TAS5720 is not set
+CONFIG_SND_SOC_TEGRA20_AC97=m
+CONFIG_SND_SOC_TEGRA20_DAS=m
+CONFIG_SND_SOC_TEGRA20_I2S=m
+CONFIG_SND_SOC_TEGRA20_SPDIF=m
+CONFIG_SND_SOC_TEGRA30_AHUB=m
+CONFIG_SND_SOC_TEGRA30_I2S=m
# CONFIG_SND_SOC_TEGRA_ALC5632 is not set
CONFIG_SND_SOC_TEGRA=m
CONFIG_SND_SOC_TEGRA_MAX98090=m
@@ -5254,6 +5314,7 @@ CONFIG_SND_SOC_TPA6130A2=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5379,6 +5440,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
CONFIG_SRAM=y
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5412,6 +5474,7 @@ CONFIG_STMMAC_ETH=m
CONFIG_STMMAC_PLATFORM=m
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_STUB_CLK_HI6220=y
@@ -5598,6 +5661,8 @@ CONFIG_TIGON3=m
# CONFIG_TIMER_STATS is not set
CONFIG_TINYDRM_MI0283QT=m
CONFIG_TINYDRM_MIPI_DBI=m
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
CONFIG_TIPC=m
# CONFIG_TIPC_MEDIA_IB is not set
CONFIG_TIPC_MEDIA_UDP=y
@@ -6220,6 +6285,7 @@ CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+CONFIG_VIDEO_MESON_AO_CEC=m
CONFIG_VIDEO_MEYE=m
CONFIG_VIDEO_MXB=m
CONFIG_VIDEO_NOON010PC30=m
@@ -6228,6 +6294,7 @@ CONFIG_VIDEO_NOON010PC30=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_QCOM_CAMSS=m
CONFIG_VIDEO_QCOM_VENUS=m
CONFIG_VIDEO_SAA6588=m
CONFIG_VIDEO_SAA7134_ALSA=m
@@ -6289,6 +6356,7 @@ CONFIG_VLAN_8021Q_GVRP=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_MVRP=y
CONFIG_VLSI_FIR=m
+CONFIG_VMAP_STACK=y
# CONFIG_VME_BUS is not set
# CONFIG_VMXNET3 is not set
CONFIG_VORTEX=m
@@ -6325,6 +6393,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -6344,6 +6413,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6438,6 +6508,7 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-armv7hl-debug.config b/kernel-armv7hl-debug.config
index 5347087c6..4656caba8 100644
--- a/kernel-armv7hl-debug.config
+++ b/kernel-armv7hl-debug.config
@@ -156,7 +156,9 @@ CONFIG_AK8975=m
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -361,6 +363,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -500,6 +503,7 @@ CONFIG_BATMAN_ADV_MCAST=y
CONFIG_BATMAN_ADV_NC=y
CONFIG_BATTERY_AXP20X=m
# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set
+CONFIG_BATTERY_BQ27XXX_HDQ=m
CONFIG_BATTERY_BQ27XXX_I2C=m
CONFIG_BATTERY_BQ27XXX=m
CONFIG_BATTERY_DA9052=m
@@ -511,6 +515,7 @@ CONFIG_BATTERY_DA9052=m
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_RX51=m
CONFIG_BATTERY_SBS=m
CONFIG_BATTERY_TWL4030_MADC=m
@@ -560,7 +565,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_BLK_DEV_BSGLIB=y
@@ -620,6 +624,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -630,6 +635,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -799,11 +805,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CCS811 is not set
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_CC_STACKPROTECTOR_NONE=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -886,8 +894,8 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
CONFIG_CLK_SP810=y
CONFIG_CLKSRC_VERSATILE=y
@@ -1053,7 +1061,9 @@ CONFIG_CRYPTO_DEV_QCE=m
CONFIG_CRYPTO_DEV_ROCKCHIP=m
CONFIG_CRYPTO_DEV_S5P=m
CONFIG_CRYPTO_DEV_SAHARA=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_SUN4I_SS=m
+CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1100,7 +1110,7 @@ CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM_NEON=y
CONFIG_CRYPTO_SHA1_ARM=y
CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256_ARM64=m
+CONFIG_CRYPTO_SHA256_ARM64=y
CONFIG_CRYPTO_SHA256_ARM=y
CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_SHA2_ARM_CE is not set
@@ -1296,7 +1306,7 @@ CONFIG_DONGLE=y
CONFIG_DOVE_THERMAL=m
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1319,6 +1329,7 @@ CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_DP_AUX_CHARDEV=y
CONFIG_DRM_DUMB_VGA_DAC=m
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
CONFIG_DRM_DW_HDMI=m
CONFIG_DRM_ETNAVIV=m
@@ -1425,6 +1436,7 @@ CONFIG_DRM_SIL_SII8620=m
CONFIG_DRM_STI=m
# CONFIG_DRM_STM is not set
CONFIG_DRM_SUN4I_BACKEND=m
+# CONFIG_DRM_SUN4I_HDMI_CEC is not set
CONFIG_DRM_SUN4I_HDMI=m
CONFIG_DRM_SUN4I=m
CONFIG_DRM_SUN8I_MIXER=m
@@ -1439,6 +1451,7 @@ CONFIG_DRM_TI_TFP410=m
CONFIG_DRM_TOSHIBA_TC358767=m
CONFIG_DRM_UDL=m
# CONFIG_DRM_VBOXVIDEO is not set
+CONFIG_DRM_VC4_HDMI_CEC=y
CONFIG_DRM_VC4=m
CONFIG_DRM_VGEM=m
CONFIG_DRM_VIA=m
@@ -1470,6 +1483,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1624,6 +1638,7 @@ CONFIG_EXTCON_PALMAS=m
CONFIG_EXTCON_QCOM_SPMI_MISC=m
# CONFIG_EXTCON_RT8973A is not set
# CONFIG_EXTCON_SM5502 is not set
+CONFIG_EXTCON_USBC_CROS_EC=m
CONFIG_EXTCON_USB_GPIO=m
CONFIG_EXTCON=y
CONFIG_EXTRA_FIRMWARE=""
@@ -1846,6 +1861,7 @@ CONFIG_GPIO_74X164=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
CONFIG_GPIO_AXP209=m
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_DA9052=m
CONFIG_GPIO_DA9055=m
@@ -1887,6 +1903,7 @@ CONFIG_GPIO_TPS65218=m
CONFIG_GPIO_TPS6586X=y
CONFIG_GPIO_TPS65910=y
CONFIG_GPIO_TPS65912=m
+CONFIG_GPIO_TPS68470=y
CONFIG_GPIO_TS4800=m
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
@@ -2098,6 +2115,7 @@ CONFIG_HWMON=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_HWPOISON_INJECT=m
CONFIG_HW_RANDOM_BCM2835=m
+CONFIG_HW_RANDOM_IMX_RNGC=m
CONFIG_HW_RANDOM_MESON=m
CONFIG_HW_RANDOM_MSM=m
CONFIG_HW_RANDOM_MXC_RNGA=m
@@ -2137,10 +2155,10 @@ CONFIG_I2C_CROS_EC_TUNNEL=m
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEMUX_PINCTRL is not set
-CONFIG_I2C_DESIGNWARE_CORE=m
+CONFIG_I2C_DESIGNWARE_CORE=y
# CONFIG_I2C_DESIGNWARE is not set
CONFIG_I2C_DESIGNWARE_PCI=m
-CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_DESIGNWARE_SLAVE=y
CONFIG_I2C_DIOLAN_U2C=m
# CONFIG_I2C_EG20T is not set
@@ -2275,6 +2293,7 @@ CONFIG_IMX7_PM_DOMAINS=y
CONFIG_IMX_DMA=m
CONFIG_IMX_GPCV2=y
CONFIG_IMX_IPUV3_CORE=m
+CONFIG_IMX_REMOTEPROC=m
CONFIG_IMX_SDMA=m
CONFIG_IMX_THERMAL=m
CONFIG_IMX_WEIM=y
@@ -2304,6 +2323,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
# CONFIG_INFINIBAND_CXGB3 is not set
# CONFIG_INFINIBAND_CXGB4 is not set
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
# CONFIG_INFINIBAND_I40IW is not set
# CONFIG_INFINIBAND_IPOIB_CM is not set
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
@@ -2387,8 +2407,10 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2575,6 +2597,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2590,6 +2613,7 @@ CONFIG_IR_MESON=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_CROSSBAR=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
@@ -2843,6 +2867,7 @@ CONFIG_LCD_VGG2432A4=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2946,6 +2971,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2970,6 +2996,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=32768
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -3071,6 +3098,7 @@ CONFIG_MDIO_BUS_MUX=m
CONFIG_MDIO_BUS_MUX_MMIOREG=m
CONFIG_MDIO_GPIO=m
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
CONFIG_MDIO_SUN4I=m
# CONFIG_MDIO_THUNDER is not set
@@ -3124,6 +3152,7 @@ CONFIG_MEMSTICK_TIFM_MS=m
CONFIG_MESON_EFUSE=m
# CONFIG_MESON_GXBB_WATCHDOG is not set
# CONFIG_MESON_GXL_PHY is not set
+CONFIG_MESON_GX_SOCINFO=y
CONFIG_MESON_SARADC=m
CONFIG_MESON_SM=y
CONFIG_MESON_WATCHDOG=m
@@ -3146,6 +3175,7 @@ CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X_RSB=m
CONFIG_MFD_AXP20X=y
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_I2C=m
@@ -3221,6 +3251,7 @@ CONFIG_MFD_TPS65910=y
CONFIG_MFD_TPS65912_I2C=y
CONFIG_MFD_TPS65912_SPI=y
CONFIG_MFD_TPS65912=y
+CONFIG_MFD_TPS68470=y
CONFIG_MFD_TPS80031=y
CONFIG_MFD_VEXPRESS_SYSREG=y
CONFIG_MFD_VIPERBOARD=m
@@ -3266,8 +3297,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
# CONFIG_MLX5_INFINIBAND is not set
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -3290,7 +3323,6 @@ CONFIG_MMA8452=m
# CONFIG_MMC35240 is not set
CONFIG_MMC_ARMMMCI=m
CONFIG_MMC_BCM2835=m
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3307,7 +3339,7 @@ CONFIG_MMC_MVSDIO=m
CONFIG_MMC_MXC=m
CONFIG_MMC_OMAP_HS=m
CONFIG_MMC_OMAP=m
-CONFIG_MMC_QCOM_DML=m
+CONFIG_MMC_QCOM_DML=y
CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
@@ -3719,6 +3751,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3790,6 +3823,7 @@ CONFIG_NET_VENDOR_FREESCALE=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3951,6 +3985,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -4299,10 +4334,12 @@ CONFIG_PHY_EXYNOS_DP_VIDEO=m
CONFIG_PHY_EXYNOS_MIPI_VIDEO=m
CONFIG_PHY_EXYNOS_PCIE=y
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
CONFIG_PHY_MESON8B_USB2=m
# CONFIG_PHY_MESON_GXL_USB2 is not set
CONFIG_PHY_MIPHY28LP=m
# CONFIG_PHY_MIPHY365X is not set
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
CONFIG_PHY_MVEBU_SATA=y
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
@@ -4328,6 +4365,7 @@ CONFIG_PHY_SUN4I_USB=m
CONFIG_PHY_SUN9I_USB=m
CONFIG_PHY_TEGRA_XUSB=m
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
@@ -4359,8 +4397,11 @@ CONFIG_PINCTRL_MVEBU=y
CONFIG_PINCTRL_PALMAS=y
CONFIG_PINCTRL_QCOM_SPMI_PMIC=m
CONFIG_PINCTRL_QCOM_SSBI_PMIC=m
+CONFIG_PINCTRL_RK805=m
CONFIG_PINCTRL_SAMSUNG=y
CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SUNRISEPOINT is not set
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -4504,6 +4545,7 @@ CONFIG_QCOM_CLK_SMD_RPM=m
CONFIG_QCOM_COINCELL=m
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
CONFIG_QCOM_GSBI=m
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
@@ -4553,6 +4595,7 @@ CONFIG_R8169=m
CONFIG_R8188EU=m
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4632,6 +4675,7 @@ CONFIG_REGULATOR_AD5398=m
CONFIG_REGULATOR_ANATOP=m
CONFIG_REGULATOR_AS3722=m
CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BD9571MWV=m
CONFIG_REGULATOR_DA9052=m
CONFIG_REGULATOR_DA9055=m
CONFIG_REGULATOR_DA9210=m
@@ -4704,8 +4748,10 @@ CONFIG_REISERFS_PROC_INFO=y
CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SCI is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
@@ -4726,6 +4772,7 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
CONFIG_ROCKCHIP_ANALOGIX_DP=y
CONFIG_ROCKCHIP_CDN_DP=y
CONFIG_ROCKCHIP_DW_HDMI=y
@@ -4735,6 +4782,7 @@ CONFIG_ROCKCHIP_INNO_HDMI=y
CONFIG_ROCKCHIP_IODOMAIN=m
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_ROCKCHIP_MBOX=y
+CONFIG_ROCKCHIP_PHY=m
CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_ROCKCHIP_SARADC=m
CONFIG_ROCKCHIP_THERMAL=m
@@ -4746,6 +4794,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
CONFIG_RPMSG=m
CONFIG_RPMSG_QCOM_GLINK_RPM=m
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPMSG_QCOM_SMD=m
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
@@ -5142,6 +5191,7 @@ CONFIG_SENSORS_GPIO_FAN=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IIO_HWMON=m
CONFIG_SENSORS_INA209=m
@@ -5233,6 +5283,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_TWL4030_MADC=m
@@ -5336,6 +5387,7 @@ CONFIG_SERIO_AMBAKMI=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_NVEC_PS2=y
@@ -5350,6 +5402,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -5359,7 +5412,7 @@ CONFIG_SI7020=m
# CONFIG_SIGMA is not set
CONFIG_SIGMATEL_FIR=m
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
-CONFIG_SIMPLE_PM_BUS=y
+# CONFIG_SIMPLE_PM_BUS is not set
CONFIG_SIS190=m
CONFIG_SIS900=m
# CONFIG_SKFP is not set
@@ -5368,6 +5421,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -5417,7 +5471,7 @@ CONFIG_SND_AUDIO_GRAPH_CARD=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
@@ -5486,7 +5540,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -5599,6 +5653,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
CONFIG_SND_SOC_CS42XX8_I2C=m
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5714,6 +5769,7 @@ CONFIG_SND_SOC_TWL4030=m
CONFIG_SND_SOC_TWL6040=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5873,6 +5929,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
CONFIG_SRAM=y
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5914,11 +5971,13 @@ CONFIG_ST_REMOTEPROC=m
CONFIG_STRICT_DEVMEM=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_STRICT_MODULE_RWX=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_ST_THERMAL=m
CONFIG_ST_THERMAL_MEMMAP=m
# CONFIG_ST_THERMAL_SYSCFG is not set
+CONFIG_SUN4I_A10_CCU=y
CONFIG_SUN4I_EMAC=m
CONFIG_SUN4I_GPADC=m
CONFIG_SUN5I_CCU=y
@@ -5928,6 +5987,7 @@ CONFIG_SUN8I_A33_CCU=y
CONFIG_SUN8I_A83T_CCU=y
CONFIG_SUN8I_DE2_CCU=y
CONFIG_SUN8I_H3_CCU=y
+CONFIG_SUN8I_R40_CCU=y
CONFIG_SUN8I_R_CCU=y
CONFIG_SUN8I_V3S_CCU=y
CONFIG_SUN9I_A80_CCU=y
@@ -6114,6 +6174,8 @@ CONFIG_TIGON3=m
# CONFIG_TIMER_STATS is not set
CONFIG_TINYDRM_MI0283QT=m
CONFIG_TINYDRM_MIPI_DBI=m
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
CONFIG_TIPC=m
# CONFIG_TIPC_MEDIA_IB is not set
CONFIG_TIPC_MEDIA_UDP=y
@@ -6780,6 +6842,7 @@ CONFIG_VIDEO_IMX_VDOA=m
CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+CONFIG_VIDEO_MESON_AO_CEC=m
CONFIG_VIDEO_MEYE=m
CONFIG_VIDEO_MUX=m
CONFIG_VIDEO_MXB=m
@@ -6793,6 +6856,7 @@ CONFIG_VIDEO_OMAP3=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_QCOM_CAMSS=m
CONFIG_VIDEO_QCOM_VENUS=m
CONFIG_VIDEO_S5P_FIMC=m
CONFIG_VIDEO_S5P_MIPI_CSIS=m
@@ -6907,6 +6971,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -6926,6 +6991,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -7024,6 +7090,7 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-armv7hl-lpae-debug.config b/kernel-armv7hl-lpae-debug.config
index a698cae79..d1dd32b16 100644
--- a/kernel-armv7hl-lpae-debug.config
+++ b/kernel-armv7hl-lpae-debug.config
@@ -154,7 +154,9 @@ CONFIG_AK8975=m
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -347,6 +349,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -490,6 +493,7 @@ CONFIG_BATTERY_AXP20X=m
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_SBS=m
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -537,7 +541,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_BLK_DEV_BSGLIB=y
@@ -597,6 +600,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -607,6 +611,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -775,11 +780,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CCS811 is not set
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_CC_STACKPROTECTOR_NONE=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -859,8 +866,8 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
CONFIG_CLK_SP810=y
CONFIG_CLKSRC_VERSATILE=y
@@ -1001,7 +1008,9 @@ CONFIG_CRYPTO_DEV_MV_CESA=m
CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
CONFIG_CRYPTO_DEV_ROCKCHIP=m
CONFIG_CRYPTO_DEV_S5P=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_SUN4I_SS=m
+CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1048,7 +1057,7 @@ CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM_NEON=y
CONFIG_CRYPTO_SHA1_ARM=y
CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256_ARM64=m
+CONFIG_CRYPTO_SHA256_ARM64=y
CONFIG_CRYPTO_SHA256_ARM=y
CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_SHA2_ARM_CE is not set
@@ -1242,7 +1251,7 @@ CONFIG_DONGLE=y
CONFIG_DOVE_THERMAL=m
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1265,6 +1274,7 @@ CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_DP_AUX_CHARDEV=y
CONFIG_DRM_DUMB_VGA_DAC=m
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
CONFIG_DRM_DW_HDMI=m
CONFIG_DRM_EXYNOS5433_DECON=y
@@ -1340,6 +1350,7 @@ CONFIG_DRM_SIL_SII8620=m
CONFIG_DRM_STI=m
# CONFIG_DRM_STM is not set
CONFIG_DRM_SUN4I_BACKEND=m
+# CONFIG_DRM_SUN4I_HDMI_CEC is not set
CONFIG_DRM_SUN4I_HDMI=m
CONFIG_DRM_SUN4I=m
CONFIG_DRM_SUN8I_MIXER=m
@@ -1353,6 +1364,7 @@ CONFIG_DRM_TI_TFP410=m
CONFIG_DRM_TOSHIBA_TC358767=m
CONFIG_DRM_UDL=m
# CONFIG_DRM_VBOXVIDEO is not set
+CONFIG_DRM_VC4_HDMI_CEC=y
CONFIG_DRM_VC4=m
CONFIG_DRM_VGEM=m
CONFIG_DRM_VIA=m
@@ -1384,6 +1396,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1534,6 +1547,7 @@ CONFIG_EXTCON_MAX8997=m
# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
# CONFIG_EXTCON_RT8973A is not set
# CONFIG_EXTCON_SM5502 is not set
+CONFIG_EXTCON_USBC_CROS_EC=m
CONFIG_EXTCON_USB_GPIO=m
CONFIG_EXTCON=y
CONFIG_EXTRA_FIRMWARE=""
@@ -1751,6 +1765,7 @@ CONFIG_GPIO_74X164=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
CONFIG_GPIO_AXP209=m
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_DAVINCI=y
CONFIG_GPIO_DEVRES=y
@@ -1786,6 +1801,7 @@ CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_TPIC2810 is not set
CONFIG_GPIO_TPS65910=y
CONFIG_GPIO_TPS65912=m
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1995,6 +2011,7 @@ CONFIG_HWMON=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_HWPOISON_INJECT=m
CONFIG_HW_RANDOM_BCM2835=m
+CONFIG_HW_RANDOM_IMX_RNGC=m
CONFIG_HW_RANDOM_MESON=m
CONFIG_HW_RANDOM_OMAP=m
CONFIG_HW_RANDOM_TIMERIOMEM=m
@@ -2029,10 +2046,10 @@ CONFIG_I2C_CROS_EC_TUNNEL=m
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEMUX_PINCTRL is not set
-CONFIG_I2C_DESIGNWARE_CORE=m
+CONFIG_I2C_DESIGNWARE_CORE=y
# CONFIG_I2C_DESIGNWARE is not set
CONFIG_I2C_DESIGNWARE_PCI=m
-CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_DESIGNWARE_SLAVE=y
CONFIG_I2C_DIOLAN_U2C=m
# CONFIG_I2C_EG20T is not set
@@ -2183,6 +2200,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
# CONFIG_INFINIBAND_CXGB3 is not set
# CONFIG_INFINIBAND_CXGB4 is not set
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
# CONFIG_INFINIBAND_I40IW is not set
# CONFIG_INFINIBAND_IPOIB_CM is not set
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
@@ -2261,8 +2279,10 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2446,6 +2466,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2461,6 +2482,7 @@ CONFIG_IR_MESON=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_CROSSBAR=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
@@ -2710,6 +2732,7 @@ CONFIG_LCD_VGG2432A4=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2810,6 +2833,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2834,6 +2858,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=32768
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2928,6 +2953,7 @@ CONFIG_MDIO_BUS_MUX=m
CONFIG_MDIO_BUS_MUX_MMIOREG=m
CONFIG_MDIO_GPIO=m
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
CONFIG_MDIO_SUN4I=m
# CONFIG_MDIO_THUNDER is not set
@@ -2979,6 +3005,7 @@ CONFIG_MEMSTICK_TIFM_MS=m
CONFIG_MESON_EFUSE=m
# CONFIG_MESON_GXBB_WATCHDOG is not set
# CONFIG_MESON_GXL_PHY is not set
+CONFIG_MESON_GX_SOCINFO=y
CONFIG_MESON_SARADC=m
CONFIG_MESON_SM=y
CONFIG_MESON_WATCHDOG=m
@@ -3001,6 +3028,7 @@ CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X_RSB=m
CONFIG_MFD_AXP20X=y
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_I2C=m
@@ -3073,6 +3101,7 @@ CONFIG_MFD_TPS65910=y
CONFIG_MFD_TPS65912_I2C=y
CONFIG_MFD_TPS65912_SPI=y
CONFIG_MFD_TPS65912=y
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VEXPRESS_SYSREG=y
CONFIG_MFD_VIPERBOARD=m
@@ -3118,8 +3147,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
# CONFIG_MLX5_INFINIBAND is not set
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -3142,7 +3173,6 @@ CONFIG_MMA8452=m
# CONFIG_MMC35240 is not set
CONFIG_MMC_ARMMMCI=m
CONFIG_MMC_BCM2835=m
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3157,7 +3187,6 @@ CONFIG_MMC_DW_ROCKCHIP=m
# CONFIG_MMC_MTK is not set
CONFIG_MMC_MVSDIO=m
CONFIG_MMC_OMAP_HS=m
-CONFIG_MMC_QCOM_DML=m
CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
@@ -3546,6 +3575,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3616,6 +3646,7 @@ CONFIG_NET_VENDOR_EMULEX=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3775,6 +3806,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -4080,8 +4112,10 @@ CONFIG_PHY_EXYNOS_DP_VIDEO=m
CONFIG_PHY_EXYNOS_MIPI_VIDEO=m
CONFIG_PHY_EXYNOS_PCIE=y
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
CONFIG_PHY_MESON8B_USB2=m
# CONFIG_PHY_MESON_GXL_USB2 is not set
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
CONFIG_PHY_MVEBU_SATA=y
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
@@ -4101,6 +4135,7 @@ CONFIG_PHY_SUN4I_USB=m
CONFIG_PHY_SUN9I_USB=m
CONFIG_PHY_TEGRA_XUSB=m
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
@@ -4122,8 +4157,11 @@ CONFIG_PINCTRL_DOVE=y
# CONFIG_PINCTRL_MSM8994 is not set
# CONFIG_PINCTRL_MSM8996 is not set
CONFIG_PINCTRL_MVEBU=y
+CONFIG_PINCTRL_RK805=m
CONFIG_PINCTRL_SAMSUNG=y
CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SUNRISEPOINT is not set
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -4237,6 +4275,7 @@ CONFIG_PWM_SAMSUNG=m
CONFIG_PWM_SUN4I=m
CONFIG_PWM_SYSFS=y
CONFIG_PWM_TEGRA=m
+CONFIG_PWM_TIECAP=m
CONFIG_PWM=y
CONFIG_PWRSEQ_EMMC=y
CONFIG_PWRSEQ_SD8787=m
@@ -4246,6 +4285,7 @@ CONFIG_PWRSEQ_SIMPLE=y
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QCOM_PM8XXX_XOADC=m
@@ -4279,6 +4319,7 @@ CONFIG_R8169=m
CONFIG_R8188EU=m
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4355,6 +4396,7 @@ CONFIG_REGULATOR_AD5398=m
# CONFIG_REGULATOR_ANATOP is not set
CONFIG_REGULATOR_AS3722=m
CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BD9571MWV=m
CONFIG_REGULATOR_DA9210=m
CONFIG_REGULATOR_DA9211=m
# CONFIG_REGULATOR_DEBUG is not set
@@ -4414,8 +4456,10 @@ CONFIG_REISERFS_PROC_INFO=y
CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SCI is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
@@ -4436,6 +4480,7 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
CONFIG_ROCKCHIP_ANALOGIX_DP=y
CONFIG_ROCKCHIP_CDN_DP=y
CONFIG_ROCKCHIP_DW_HDMI=y
@@ -4445,6 +4490,7 @@ CONFIG_ROCKCHIP_INNO_HDMI=y
CONFIG_ROCKCHIP_IODOMAIN=m
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_ROCKCHIP_MBOX=y
+CONFIG_ROCKCHIP_PHY=m
CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_ROCKCHIP_SARADC=m
CONFIG_ROCKCHIP_THERMAL=m
@@ -4455,6 +4501,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4836,6 +4883,7 @@ CONFIG_SENSORS_GPIO_FAN=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IIO_HWMON=m
CONFIG_SENSORS_INA209=m
@@ -4926,6 +4974,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -5016,6 +5065,7 @@ CONFIG_SERIO_AMBAKMI=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -5029,6 +5079,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -5038,7 +5089,7 @@ CONFIG_SI7020=m
# CONFIG_SIGMA is not set
CONFIG_SIGMATEL_FIR=m
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
-CONFIG_SIMPLE_PM_BUS=y
+# CONFIG_SIMPLE_PM_BUS is not set
CONFIG_SIS190=m
CONFIG_SIS900=m
# CONFIG_SKFP is not set
@@ -5047,6 +5098,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -5095,7 +5147,7 @@ CONFIG_SND_AUDIO_GRAPH_CARD=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
@@ -5159,7 +5211,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -5256,6 +5308,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5328,7 +5381,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SOC_TAS5720 is not set
# CONFIG_SND_SOC_TEGRA20_AC97 is not set
-# CONFIG_SND_SOC_TEGRA20_DAS is not set
+CONFIG_SND_SOC_TEGRA20_DAS=m
CONFIG_SND_SOC_TEGRA20_I2S=m
# CONFIG_SND_SOC_TEGRA20_SPDIF is not set
CONFIG_SND_SOC_TEGRA30_AHUB=m
@@ -5352,6 +5405,7 @@ CONFIG_SND_SOC_TPA6130A2=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5483,6 +5537,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
CONFIG_SRAM=y
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5518,8 +5573,10 @@ CONFIG_STMMAC_PLATFORM=m
CONFIG_STRICT_DEVMEM=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_STRICT_MODULE_RWX=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
+CONFIG_SUN4I_A10_CCU=y
CONFIG_SUN4I_EMAC=m
CONFIG_SUN4I_GPADC=m
CONFIG_SUN5I_CCU=y
@@ -5529,6 +5586,7 @@ CONFIG_SUN8I_A33_CCU=y
CONFIG_SUN8I_A83T_CCU=y
CONFIG_SUN8I_DE2_CCU=y
CONFIG_SUN8I_H3_CCU=y
+CONFIG_SUN8I_R40_CCU=y
CONFIG_SUN8I_R_CCU=y
CONFIG_SUN8I_V3S_CCU=y
CONFIG_SUN9I_A80_CCU=y
@@ -5709,6 +5767,8 @@ CONFIG_TIGON3=m
CONFIG_TI_MESSAGE_MANAGER=m
CONFIG_TINYDRM_MI0283QT=m
CONFIG_TINYDRM_MIPI_DBI=m
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
CONFIG_TIPC=m
# CONFIG_TIPC_MEDIA_IB is not set
CONFIG_TIPC_MEDIA_UDP=y
@@ -6343,6 +6403,7 @@ CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+CONFIG_VIDEO_MESON_AO_CEC=m
CONFIG_VIDEO_MEYE=m
CONFIG_VIDEO_MUX=m
CONFIG_VIDEO_MXB=m
@@ -6457,6 +6518,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -6476,6 +6538,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6584,6 +6647,7 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-armv7hl-lpae.config b/kernel-armv7hl-lpae.config
index 73b557b16..0160a3634 100644
--- a/kernel-armv7hl-lpae.config
+++ b/kernel-armv7hl-lpae.config
@@ -154,7 +154,9 @@ CONFIG_AK8975=m
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -346,6 +348,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -489,6 +492,7 @@ CONFIG_BATTERY_AXP20X=m
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_SBS=m
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -536,7 +540,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_BLK_DEV_BSGLIB=y
@@ -596,6 +599,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -606,6 +610,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -774,11 +779,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CCS811 is not set
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_CC_STACKPROTECTOR_NONE=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -858,8 +865,8 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
CONFIG_CLK_SP810=y
CONFIG_CLKSRC_VERSATILE=y
@@ -999,7 +1006,9 @@ CONFIG_CRYPTO_DEV_MV_CESA=m
CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
CONFIG_CRYPTO_DEV_ROCKCHIP=m
CONFIG_CRYPTO_DEV_S5P=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_SUN4I_SS=m
+CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1046,7 +1055,7 @@ CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM_NEON=y
CONFIG_CRYPTO_SHA1_ARM=y
CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256_ARM64=m
+CONFIG_CRYPTO_SHA256_ARM64=y
CONFIG_CRYPTO_SHA256_ARM=y
CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_SHA2_ARM_CE is not set
@@ -1232,7 +1241,7 @@ CONFIG_DONGLE=y
CONFIG_DOVE_THERMAL=m
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1255,6 +1264,7 @@ CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_DP_AUX_CHARDEV=y
CONFIG_DRM_DUMB_VGA_DAC=m
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
CONFIG_DRM_DW_HDMI=m
CONFIG_DRM_EXYNOS5433_DECON=y
@@ -1330,6 +1340,7 @@ CONFIG_DRM_SIL_SII8620=m
CONFIG_DRM_STI=m
# CONFIG_DRM_STM is not set
CONFIG_DRM_SUN4I_BACKEND=m
+# CONFIG_DRM_SUN4I_HDMI_CEC is not set
CONFIG_DRM_SUN4I_HDMI=m
CONFIG_DRM_SUN4I=m
CONFIG_DRM_SUN8I_MIXER=m
@@ -1343,6 +1354,7 @@ CONFIG_DRM_TI_TFP410=m
CONFIG_DRM_TOSHIBA_TC358767=m
CONFIG_DRM_UDL=m
# CONFIG_DRM_VBOXVIDEO is not set
+CONFIG_DRM_VC4_HDMI_CEC=y
CONFIG_DRM_VC4=m
CONFIG_DRM_VGEM=m
CONFIG_DRM_VIA=m
@@ -1374,6 +1386,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1524,6 +1537,7 @@ CONFIG_EXTCON_MAX8997=m
# CONFIG_EXTCON_QCOM_SPMI_MISC is not set
# CONFIG_EXTCON_RT8973A is not set
# CONFIG_EXTCON_SM5502 is not set
+CONFIG_EXTCON_USBC_CROS_EC=m
CONFIG_EXTCON_USB_GPIO=m
CONFIG_EXTCON=y
CONFIG_EXTRA_FIRMWARE=""
@@ -1734,6 +1748,7 @@ CONFIG_GPIO_74X164=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
CONFIG_GPIO_AXP209=m
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_DAVINCI=y
CONFIG_GPIO_DEVRES=y
@@ -1769,6 +1784,7 @@ CONFIG_GPIO_TEGRA=y
# CONFIG_GPIO_TPIC2810 is not set
CONFIG_GPIO_TPS65910=y
CONFIG_GPIO_TPS65912=m
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1978,6 +1994,7 @@ CONFIG_HWMON=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_HWPOISON_INJECT=m
CONFIG_HW_RANDOM_BCM2835=m
+CONFIG_HW_RANDOM_IMX_RNGC=m
CONFIG_HW_RANDOM_MESON=m
CONFIG_HW_RANDOM_OMAP=m
CONFIG_HW_RANDOM_TIMERIOMEM=m
@@ -2012,10 +2029,10 @@ CONFIG_I2C_CROS_EC_TUNNEL=m
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEMUX_PINCTRL is not set
-CONFIG_I2C_DESIGNWARE_CORE=m
+CONFIG_I2C_DESIGNWARE_CORE=y
# CONFIG_I2C_DESIGNWARE is not set
CONFIG_I2C_DESIGNWARE_PCI=m
-CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_DESIGNWARE_SLAVE=y
CONFIG_I2C_DIOLAN_U2C=m
# CONFIG_I2C_EG20T is not set
@@ -2166,6 +2183,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
# CONFIG_INFINIBAND_CXGB3 is not set
# CONFIG_INFINIBAND_CXGB4 is not set
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
# CONFIG_INFINIBAND_I40IW is not set
# CONFIG_INFINIBAND_IPOIB_CM is not set
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
@@ -2244,8 +2262,10 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2429,6 +2449,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2444,6 +2465,7 @@ CONFIG_IR_MESON=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_CROSSBAR=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
@@ -2691,6 +2713,7 @@ CONFIG_LCD_VGG2432A4=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2791,6 +2814,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2815,6 +2839,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=32768
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2908,6 +2933,7 @@ CONFIG_MDIO_BUS_MUX=m
CONFIG_MDIO_BUS_MUX_MMIOREG=m
CONFIG_MDIO_GPIO=m
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
CONFIG_MDIO_SUN4I=m
# CONFIG_MDIO_THUNDER is not set
@@ -2959,6 +2985,7 @@ CONFIG_MEMSTICK_TIFM_MS=m
CONFIG_MESON_EFUSE=m
# CONFIG_MESON_GXBB_WATCHDOG is not set
# CONFIG_MESON_GXL_PHY is not set
+CONFIG_MESON_GX_SOCINFO=y
CONFIG_MESON_SARADC=m
CONFIG_MESON_SM=y
CONFIG_MESON_WATCHDOG=m
@@ -2981,6 +3008,7 @@ CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X_RSB=m
CONFIG_MFD_AXP20X=y
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_I2C=m
@@ -3053,6 +3081,7 @@ CONFIG_MFD_TPS65910=y
CONFIG_MFD_TPS65912_I2C=y
CONFIG_MFD_TPS65912_SPI=y
CONFIG_MFD_TPS65912=y
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VEXPRESS_SYSREG=y
CONFIG_MFD_VIPERBOARD=m
@@ -3098,8 +3127,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
# CONFIG_MLX5_INFINIBAND is not set
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -3122,7 +3153,6 @@ CONFIG_MMA8452=m
# CONFIG_MMC35240 is not set
CONFIG_MMC_ARMMMCI=m
CONFIG_MMC_BCM2835=m
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3137,7 +3167,6 @@ CONFIG_MMC_DW_ROCKCHIP=m
# CONFIG_MMC_MTK is not set
CONFIG_MMC_MVSDIO=m
CONFIG_MMC_OMAP_HS=m
-CONFIG_MMC_QCOM_DML=m
CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
@@ -3525,6 +3554,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3595,6 +3625,7 @@ CONFIG_NET_VENDOR_EMULEX=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3754,6 +3785,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -4059,8 +4091,10 @@ CONFIG_PHY_EXYNOS_DP_VIDEO=m
CONFIG_PHY_EXYNOS_MIPI_VIDEO=m
CONFIG_PHY_EXYNOS_PCIE=y
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
CONFIG_PHY_MESON8B_USB2=m
# CONFIG_PHY_MESON_GXL_USB2 is not set
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
CONFIG_PHY_MVEBU_SATA=y
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
@@ -4080,6 +4114,7 @@ CONFIG_PHY_SUN4I_USB=m
CONFIG_PHY_SUN9I_USB=m
CONFIG_PHY_TEGRA_XUSB=m
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
@@ -4101,8 +4136,11 @@ CONFIG_PINCTRL_DOVE=y
# CONFIG_PINCTRL_MSM8994 is not set
# CONFIG_PINCTRL_MSM8996 is not set
CONFIG_PINCTRL_MVEBU=y
+CONFIG_PINCTRL_RK805=m
CONFIG_PINCTRL_SAMSUNG=y
CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SUNRISEPOINT is not set
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -4215,6 +4253,7 @@ CONFIG_PWM_SAMSUNG=m
CONFIG_PWM_SUN4I=m
CONFIG_PWM_SYSFS=y
CONFIG_PWM_TEGRA=m
+CONFIG_PWM_TIECAP=m
CONFIG_PWM=y
CONFIG_PWRSEQ_EMMC=y
CONFIG_PWRSEQ_SD8787=m
@@ -4224,6 +4263,7 @@ CONFIG_PWRSEQ_SIMPLE=y
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QCOM_PM8XXX_XOADC=m
@@ -4257,6 +4297,7 @@ CONFIG_R8169=m
CONFIG_R8188EU=m
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4333,6 +4374,7 @@ CONFIG_REGULATOR_AD5398=m
# CONFIG_REGULATOR_ANATOP is not set
CONFIG_REGULATOR_AS3722=m
CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BD9571MWV=m
CONFIG_REGULATOR_DA9210=m
CONFIG_REGULATOR_DA9211=m
# CONFIG_REGULATOR_DEBUG is not set
@@ -4392,8 +4434,10 @@ CONFIG_REISERFS_PROC_INFO=y
CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SCI is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
@@ -4414,6 +4458,7 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
CONFIG_ROCKCHIP_ANALOGIX_DP=y
CONFIG_ROCKCHIP_CDN_DP=y
CONFIG_ROCKCHIP_DW_HDMI=y
@@ -4423,6 +4468,7 @@ CONFIG_ROCKCHIP_INNO_HDMI=y
CONFIG_ROCKCHIP_IODOMAIN=m
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_ROCKCHIP_MBOX=y
+CONFIG_ROCKCHIP_PHY=m
CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_ROCKCHIP_SARADC=m
CONFIG_ROCKCHIP_THERMAL=m
@@ -4433,6 +4479,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4814,6 +4861,7 @@ CONFIG_SENSORS_GPIO_FAN=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IIO_HWMON=m
CONFIG_SENSORS_INA209=m
@@ -4904,6 +4952,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4994,6 +5043,7 @@ CONFIG_SERIO_AMBAKMI=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -5007,6 +5057,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -5016,7 +5067,7 @@ CONFIG_SI7020=m
# CONFIG_SIGMA is not set
CONFIG_SIGMATEL_FIR=m
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
-CONFIG_SIMPLE_PM_BUS=y
+# CONFIG_SIMPLE_PM_BUS is not set
CONFIG_SIS190=m
CONFIG_SIS900=m
# CONFIG_SKFP is not set
@@ -5025,6 +5076,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -5073,7 +5125,7 @@ CONFIG_SND_AUDIO_GRAPH_CARD=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
@@ -5137,7 +5189,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -5233,6 +5285,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5305,7 +5358,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SOC_TAS5720 is not set
# CONFIG_SND_SOC_TEGRA20_AC97 is not set
-# CONFIG_SND_SOC_TEGRA20_DAS is not set
+CONFIG_SND_SOC_TEGRA20_DAS=m
CONFIG_SND_SOC_TEGRA20_I2S=m
# CONFIG_SND_SOC_TEGRA20_SPDIF is not set
CONFIG_SND_SOC_TEGRA30_AHUB=m
@@ -5329,6 +5382,7 @@ CONFIG_SND_SOC_TPA6130A2=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5460,6 +5514,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
CONFIG_SRAM=y
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5495,8 +5550,10 @@ CONFIG_STMMAC_PLATFORM=m
CONFIG_STRICT_DEVMEM=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_STRICT_MODULE_RWX=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
+CONFIG_SUN4I_A10_CCU=y
CONFIG_SUN4I_EMAC=m
CONFIG_SUN4I_GPADC=m
CONFIG_SUN5I_CCU=y
@@ -5506,6 +5563,7 @@ CONFIG_SUN8I_A33_CCU=y
CONFIG_SUN8I_A83T_CCU=y
CONFIG_SUN8I_DE2_CCU=y
CONFIG_SUN8I_H3_CCU=y
+CONFIG_SUN8I_R40_CCU=y
CONFIG_SUN8I_R_CCU=y
CONFIG_SUN8I_V3S_CCU=y
CONFIG_SUN9I_A80_CCU=y
@@ -5686,6 +5744,8 @@ CONFIG_TIGON3=m
CONFIG_TI_MESSAGE_MANAGER=m
CONFIG_TINYDRM_MI0283QT=m
CONFIG_TINYDRM_MIPI_DBI=m
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
CONFIG_TIPC=m
# CONFIG_TIPC_MEDIA_IB is not set
CONFIG_TIPC_MEDIA_UDP=y
@@ -6320,6 +6380,7 @@ CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+CONFIG_VIDEO_MESON_AO_CEC=m
CONFIG_VIDEO_MEYE=m
CONFIG_VIDEO_MUX=m
CONFIG_VIDEO_MXB=m
@@ -6434,6 +6495,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -6453,6 +6515,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6561,6 +6624,7 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-armv7hl.config b/kernel-armv7hl.config
index b6cfd9612..b7d0628e4 100644
--- a/kernel-armv7hl.config
+++ b/kernel-armv7hl.config
@@ -156,7 +156,9 @@ CONFIG_AK8975=m
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -360,6 +362,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -499,6 +502,7 @@ CONFIG_BATMAN_ADV_MCAST=y
CONFIG_BATMAN_ADV_NC=y
CONFIG_BATTERY_AXP20X=m
# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set
+CONFIG_BATTERY_BQ27XXX_HDQ=m
CONFIG_BATTERY_BQ27XXX_I2C=m
CONFIG_BATTERY_BQ27XXX=m
CONFIG_BATTERY_DA9052=m
@@ -510,6 +514,7 @@ CONFIG_BATTERY_DA9052=m
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_RX51=m
CONFIG_BATTERY_SBS=m
CONFIG_BATTERY_TWL4030_MADC=m
@@ -559,7 +564,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_BLK_DEV_BSGLIB=y
@@ -619,6 +623,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -629,6 +634,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -798,11 +804,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CCS811 is not set
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_CC_STACKPROTECTOR_NONE=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -885,8 +893,8 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
CONFIG_CLK_SP810=y
CONFIG_CLKSRC_VERSATILE=y
@@ -1051,7 +1059,9 @@ CONFIG_CRYPTO_DEV_QCE=m
CONFIG_CRYPTO_DEV_ROCKCHIP=m
CONFIG_CRYPTO_DEV_S5P=m
CONFIG_CRYPTO_DEV_SAHARA=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_SUN4I_SS=m
+CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1098,7 +1108,7 @@ CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SHA1_ARM_NEON=y
CONFIG_CRYPTO_SHA1_ARM=y
CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256_ARM64=m
+CONFIG_CRYPTO_SHA256_ARM64=y
CONFIG_CRYPTO_SHA256_ARM=y
CONFIG_CRYPTO_SHA256=y
# CONFIG_CRYPTO_SHA2_ARM_CE is not set
@@ -1286,7 +1296,7 @@ CONFIG_DONGLE=y
CONFIG_DOVE_THERMAL=m
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1309,6 +1319,7 @@ CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_DP_AUX_CHARDEV=y
CONFIG_DRM_DUMB_VGA_DAC=m
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
CONFIG_DRM_DW_HDMI=m
CONFIG_DRM_ETNAVIV=m
@@ -1415,6 +1426,7 @@ CONFIG_DRM_SIL_SII8620=m
CONFIG_DRM_STI=m
# CONFIG_DRM_STM is not set
CONFIG_DRM_SUN4I_BACKEND=m
+# CONFIG_DRM_SUN4I_HDMI_CEC is not set
CONFIG_DRM_SUN4I_HDMI=m
CONFIG_DRM_SUN4I=m
CONFIG_DRM_SUN8I_MIXER=m
@@ -1429,6 +1441,7 @@ CONFIG_DRM_TI_TFP410=m
CONFIG_DRM_TOSHIBA_TC358767=m
CONFIG_DRM_UDL=m
# CONFIG_DRM_VBOXVIDEO is not set
+CONFIG_DRM_VC4_HDMI_CEC=y
CONFIG_DRM_VC4=m
CONFIG_DRM_VGEM=m
CONFIG_DRM_VIA=m
@@ -1460,6 +1473,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1614,6 +1628,7 @@ CONFIG_EXTCON_PALMAS=m
CONFIG_EXTCON_QCOM_SPMI_MISC=m
# CONFIG_EXTCON_RT8973A is not set
# CONFIG_EXTCON_SM5502 is not set
+CONFIG_EXTCON_USBC_CROS_EC=m
CONFIG_EXTCON_USB_GPIO=m
CONFIG_EXTCON=y
CONFIG_EXTRA_FIRMWARE=""
@@ -1829,6 +1844,7 @@ CONFIG_GPIO_74X164=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
CONFIG_GPIO_AXP209=m
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_DA9052=m
CONFIG_GPIO_DA9055=m
@@ -1870,6 +1886,7 @@ CONFIG_GPIO_TPS65218=m
CONFIG_GPIO_TPS6586X=y
CONFIG_GPIO_TPS65910=y
CONFIG_GPIO_TPS65912=m
+CONFIG_GPIO_TPS68470=y
CONFIG_GPIO_TS4800=m
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
@@ -2081,6 +2098,7 @@ CONFIG_HWMON=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_HWPOISON_INJECT=m
CONFIG_HW_RANDOM_BCM2835=m
+CONFIG_HW_RANDOM_IMX_RNGC=m
CONFIG_HW_RANDOM_MESON=m
CONFIG_HW_RANDOM_MSM=m
CONFIG_HW_RANDOM_MXC_RNGA=m
@@ -2120,10 +2138,10 @@ CONFIG_I2C_CROS_EC_TUNNEL=m
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEMUX_PINCTRL is not set
-CONFIG_I2C_DESIGNWARE_CORE=m
+CONFIG_I2C_DESIGNWARE_CORE=y
# CONFIG_I2C_DESIGNWARE is not set
CONFIG_I2C_DESIGNWARE_PCI=m
-CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_DESIGNWARE_SLAVE=y
CONFIG_I2C_DIOLAN_U2C=m
# CONFIG_I2C_EG20T is not set
@@ -2258,6 +2276,7 @@ CONFIG_IMX7_PM_DOMAINS=y
CONFIG_IMX_DMA=m
CONFIG_IMX_GPCV2=y
CONFIG_IMX_IPUV3_CORE=m
+CONFIG_IMX_REMOTEPROC=m
CONFIG_IMX_SDMA=m
CONFIG_IMX_THERMAL=m
CONFIG_IMX_WEIM=y
@@ -2287,6 +2306,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
# CONFIG_INFINIBAND_CXGB3 is not set
# CONFIG_INFINIBAND_CXGB4 is not set
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
# CONFIG_INFINIBAND_I40IW is not set
# CONFIG_INFINIBAND_IPOIB_CM is not set
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
@@ -2370,8 +2390,10 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2558,6 +2580,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2573,6 +2596,7 @@ CONFIG_IR_MESON=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_CROSSBAR=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
@@ -2824,6 +2848,7 @@ CONFIG_LCD_VGG2432A4=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2927,6 +2952,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2951,6 +2977,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=32768
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -3051,6 +3078,7 @@ CONFIG_MDIO_BUS_MUX=m
CONFIG_MDIO_BUS_MUX_MMIOREG=m
CONFIG_MDIO_GPIO=m
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
CONFIG_MDIO_SUN4I=m
# CONFIG_MDIO_THUNDER is not set
@@ -3104,6 +3132,7 @@ CONFIG_MEMSTICK_TIFM_MS=m
CONFIG_MESON_EFUSE=m
# CONFIG_MESON_GXBB_WATCHDOG is not set
# CONFIG_MESON_GXL_PHY is not set
+CONFIG_MESON_GX_SOCINFO=y
CONFIG_MESON_SARADC=m
CONFIG_MESON_SM=y
CONFIG_MESON_WATCHDOG=m
@@ -3126,6 +3155,7 @@ CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X_RSB=m
CONFIG_MFD_AXP20X=y
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
CONFIG_MFD_CROS_EC_I2C=m
@@ -3201,6 +3231,7 @@ CONFIG_MFD_TPS65910=y
CONFIG_MFD_TPS65912_I2C=y
CONFIG_MFD_TPS65912_SPI=y
CONFIG_MFD_TPS65912=y
+CONFIG_MFD_TPS68470=y
CONFIG_MFD_TPS80031=y
CONFIG_MFD_VEXPRESS_SYSREG=y
CONFIG_MFD_VIPERBOARD=m
@@ -3246,8 +3277,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
# CONFIG_MLX5_INFINIBAND is not set
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -3270,7 +3303,6 @@ CONFIG_MMA8452=m
# CONFIG_MMC35240 is not set
CONFIG_MMC_ARMMMCI=m
CONFIG_MMC_BCM2835=m
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3287,7 +3319,7 @@ CONFIG_MMC_MVSDIO=m
CONFIG_MMC_MXC=m
CONFIG_MMC_OMAP_HS=m
CONFIG_MMC_OMAP=m
-CONFIG_MMC_QCOM_DML=m
+CONFIG_MMC_QCOM_DML=y
CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_RICOH_MMC=y
@@ -3698,6 +3730,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3769,6 +3802,7 @@ CONFIG_NET_VENDOR_FREESCALE=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3930,6 +3964,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -4278,10 +4313,12 @@ CONFIG_PHY_EXYNOS_DP_VIDEO=m
CONFIG_PHY_EXYNOS_MIPI_VIDEO=m
CONFIG_PHY_EXYNOS_PCIE=y
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
CONFIG_PHY_MESON8B_USB2=m
# CONFIG_PHY_MESON_GXL_USB2 is not set
CONFIG_PHY_MIPHY28LP=m
# CONFIG_PHY_MIPHY365X is not set
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
CONFIG_PHY_MVEBU_SATA=y
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
@@ -4307,6 +4344,7 @@ CONFIG_PHY_SUN4I_USB=m
CONFIG_PHY_SUN9I_USB=m
CONFIG_PHY_TEGRA_XUSB=m
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
# CONFIG_PID_IN_CONTEXTIDR is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
@@ -4338,8 +4376,11 @@ CONFIG_PINCTRL_MVEBU=y
CONFIG_PINCTRL_PALMAS=y
CONFIG_PINCTRL_QCOM_SPMI_PMIC=m
CONFIG_PINCTRL_QCOM_SSBI_PMIC=m
+CONFIG_PINCTRL_RK805=m
CONFIG_PINCTRL_SAMSUNG=y
CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SUNRISEPOINT is not set
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -4482,6 +4523,7 @@ CONFIG_QCOM_CLK_SMD_RPM=m
CONFIG_QCOM_COINCELL=m
# CONFIG_QCOM_EBI2 is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
CONFIG_QCOM_GSBI=m
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
@@ -4531,6 +4573,7 @@ CONFIG_R8169=m
CONFIG_R8188EU=m
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4610,6 +4653,7 @@ CONFIG_REGULATOR_AD5398=m
CONFIG_REGULATOR_ANATOP=m
CONFIG_REGULATOR_AS3722=m
CONFIG_REGULATOR_AXP20X=m
+CONFIG_REGULATOR_BD9571MWV=m
CONFIG_REGULATOR_DA9052=m
CONFIG_REGULATOR_DA9055=m
CONFIG_REGULATOR_DA9210=m
@@ -4682,8 +4726,10 @@ CONFIG_REISERFS_PROC_INFO=y
CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_GPIO=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SCI is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
@@ -4704,6 +4750,7 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
CONFIG_ROCKCHIP_ANALOGIX_DP=y
CONFIG_ROCKCHIP_CDN_DP=y
CONFIG_ROCKCHIP_DW_HDMI=y
@@ -4713,6 +4760,7 @@ CONFIG_ROCKCHIP_INNO_HDMI=y
CONFIG_ROCKCHIP_IODOMAIN=m
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_ROCKCHIP_MBOX=y
+CONFIG_ROCKCHIP_PHY=m
CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_ROCKCHIP_SARADC=m
CONFIG_ROCKCHIP_THERMAL=m
@@ -4724,6 +4772,7 @@ CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
CONFIG_RPMSG=m
CONFIG_RPMSG_QCOM_GLINK_RPM=m
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPMSG_QCOM_SMD=m
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
@@ -5120,6 +5169,7 @@ CONFIG_SENSORS_GPIO_FAN=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IIO_HWMON=m
CONFIG_SENSORS_INA209=m
@@ -5211,6 +5261,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_TWL4030_MADC=m
@@ -5314,6 +5365,7 @@ CONFIG_SERIO_AMBAKMI=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_NVEC_PS2=y
@@ -5328,6 +5380,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -5337,7 +5390,7 @@ CONFIG_SI7020=m
# CONFIG_SIGMA is not set
CONFIG_SIGMATEL_FIR=m
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
-CONFIG_SIMPLE_PM_BUS=y
+# CONFIG_SIMPLE_PM_BUS is not set
CONFIG_SIS190=m
CONFIG_SIS900=m
# CONFIG_SKFP is not set
@@ -5346,6 +5399,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -5395,7 +5449,7 @@ CONFIG_SND_AUDIO_GRAPH_CARD=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
@@ -5464,7 +5518,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -5576,6 +5630,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
CONFIG_SND_SOC_CS42XX8_I2C=m
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5691,6 +5746,7 @@ CONFIG_SND_SOC_TWL4030=m
CONFIG_SND_SOC_TWL6040=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5850,6 +5906,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
CONFIG_SRAM=y
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5891,11 +5948,13 @@ CONFIG_ST_REMOTEPROC=m
CONFIG_STRICT_DEVMEM=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_STRICT_MODULE_RWX=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_ST_THERMAL=m
CONFIG_ST_THERMAL_MEMMAP=m
# CONFIG_ST_THERMAL_SYSCFG is not set
+CONFIG_SUN4I_A10_CCU=y
CONFIG_SUN4I_EMAC=m
CONFIG_SUN4I_GPADC=m
CONFIG_SUN5I_CCU=y
@@ -5905,6 +5964,7 @@ CONFIG_SUN8I_A33_CCU=y
CONFIG_SUN8I_A83T_CCU=y
CONFIG_SUN8I_DE2_CCU=y
CONFIG_SUN8I_H3_CCU=y
+CONFIG_SUN8I_R40_CCU=y
CONFIG_SUN8I_R_CCU=y
CONFIG_SUN8I_V3S_CCU=y
CONFIG_SUN9I_A80_CCU=y
@@ -6091,6 +6151,8 @@ CONFIG_TIGON3=m
# CONFIG_TIMER_STATS is not set
CONFIG_TINYDRM_MI0283QT=m
CONFIG_TINYDRM_MIPI_DBI=m
+# CONFIG_TINYDRM_REPAPER is not set
+# CONFIG_TINYDRM_ST7586 is not set
CONFIG_TIPC=m
# CONFIG_TIPC_MEDIA_IB is not set
CONFIG_TIPC_MEDIA_UDP=y
@@ -6757,6 +6819,7 @@ CONFIG_VIDEO_IMX_VDOA=m
CONFIG_VIDEO_IVTV=m
# CONFIG_VIDEO_M5MOLS is not set
# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+CONFIG_VIDEO_MESON_AO_CEC=m
CONFIG_VIDEO_MEYE=m
CONFIG_VIDEO_MUX=m
CONFIG_VIDEO_MXB=m
@@ -6770,6 +6833,7 @@ CONFIG_VIDEO_OMAP3=m
CONFIG_VIDEO_PVRUSB2_DVB=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_QCOM_CAMSS=m
CONFIG_VIDEO_QCOM_VENUS=m
CONFIG_VIDEO_S5P_FIMC=m
CONFIG_VIDEO_S5P_MIPI_CSIS=m
@@ -6884,6 +6948,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -6903,6 +6968,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -7001,6 +7067,7 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-i686-PAE.config b/kernel-i686-PAE.config
index c41b1366c..45918b967 100644
--- a/kernel-i686-PAE.config
+++ b/kernel-i686-PAE.config
@@ -197,7 +197,9 @@ CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
# CONFIG_ALIX is not set
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -252,6 +254,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -388,6 +391,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_OLPC=y
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
@@ -430,7 +434,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_BLK_DEV_AMD74XX=y
@@ -489,6 +492,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -499,6 +503,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -658,11 +663,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_CC_STACKPROTECTOR=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -740,9 +747,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -860,6 +868,7 @@ CONFIG_CRYPTO_DEV_QAT_C62X=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1024,6 +1033,7 @@ CONFIG_DEV_APPLETALK=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1081,7 +1091,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DPTF_POWER=m
@@ -1196,6 +1206,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1589,6 +1600,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMD8111 is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_CRYSTAL_COVE=y
# CONFIG_GPIO_CS5535 is not set
@@ -1624,6 +1636,7 @@ CONFIG_GPIO_SCH=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1857,6 +1870,7 @@ CONFIG_HYPERV=m
CONFIG_HYPERV_NET=m
CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_VSOCKETS=m
CONFIG_HYSDN_CAPI=y
CONFIG_HYSDN=m
CONFIG_HZ_1000=y
@@ -2028,6 +2042,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -2102,7 +2117,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2142,6 +2159,7 @@ CONFIG_INTEL_POWERCLAMP=m
CONFIG_INTEL_PUNIT_IPC=m
CONFIG_INTEL_RAPL=m
CONFIG_INTEL_RDT_A=y
+CONFIG_INTEL_RDT=y
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SCU_IPC is not set
CONFIG_INTEL_SMARTCONNECT=y
@@ -2193,7 +2211,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2320,6 +2338,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2334,6 +2353,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -2565,6 +2585,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2665,6 +2686,7 @@ CONFIG_LOAD_UEFI_KEYS=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
CONFIG_LOCK_DOWN_KERNEL=y
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2689,6 +2711,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2752,7 +2775,7 @@ CONFIG_MAX30100=m
# CONFIG_MAX9611 is not set
# CONFIG_MAXIM_THERMOCOUPLE is not set
CONFIG_MAX_RAW_DEVS=8192
-CONFIG_MAXSMP=y
+# CONFIG_MAXSMP is not set
# CONFIG_MC3230 is not set
# CONFIG_MCB is not set
# CONFIG_MCE_AMD_INJ is not set
@@ -2776,6 +2799,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2840,6 +2864,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2907,6 +2932,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -2956,8 +2982,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
# CONFIG_MLX5_INFINIBAND is not set
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2978,7 +3006,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3339,6 +3366,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3408,6 +3436,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3569,6 +3598,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3871,6 +3901,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3880,6 +3912,7 @@ CONFIG_PHYSICAL_START=0x400000
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
# CONFIG_PINCTRL_AMD is not set
@@ -3887,10 +3920,15 @@ CONFIG_PINCTRL_BAYTRAIL=y
CONFIG_PINCTRL_BROXTON=m
# CONFIG_PINCTRL_CANNONLAKE is not set
CONFIG_PINCTRL_CHERRYVIEW=y
+CONFIG_PINCTRL_DENVERTON=m
# CONFIG_PINCTRL_GEMINILAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
+CONFIG_PINCTRL_LEWISBURG=m
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
CONFIG_PINCTRL_SUNRISEPOINT=m
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -3909,7 +3947,7 @@ CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
CONFIG_PMIC_OPREGION=y
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -4001,6 +4039,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -4030,6 +4069,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4098,6 +4138,7 @@ CONFIG_REALTEK_PHY=m
# CONFIG_REFCOUNT_FULL is not set
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -4112,6 +4153,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -4131,6 +4174,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -4138,6 +4183,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4515,6 +4561,7 @@ CONFIG_SENSORS_HDAPS=m
CONFIG_SENSORS_I5500=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_INA209=m
@@ -4606,6 +4653,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4679,6 +4727,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4692,6 +4741,7 @@ CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
CONFIG_SFI=y
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4711,6 +4761,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4755,7 +4806,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4818,7 +4869,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4907,6 +4958,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -4994,6 +5046,7 @@ CONFIG_SND_SOC_SSM4567=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5093,6 +5146,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5127,6 +5181,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5956,6 +6011,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5975,6 +6031,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6098,6 +6155,7 @@ CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_PCIDEV_FRONTEND=m
+# CONFIG_XEN_PVCALLS_BACKEND is not set
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVH=y
CONFIG_XEN_PV=y
@@ -6151,6 +6209,7 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_ZONE_DMA=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-i686-PAEdebug.config b/kernel-i686-PAEdebug.config
index 1020a8ce0..9bb1564fc 100644
--- a/kernel-i686-PAEdebug.config
+++ b/kernel-i686-PAEdebug.config
@@ -197,7 +197,9 @@ CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
# CONFIG_ALIX is not set
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -253,6 +255,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -389,6 +392,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_OLPC=y
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
@@ -431,7 +435,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_BLK_DEV_AMD74XX=y
@@ -490,6 +493,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -500,6 +504,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -659,11 +664,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_CC_STACKPROTECTOR=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -741,9 +748,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -862,6 +870,7 @@ CONFIG_CRYPTO_DEV_QAT_C62X=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1034,6 +1043,7 @@ CONFIG_DEV_APPLETALK=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1092,7 +1102,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DPTF_POWER=m
@@ -1207,6 +1217,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1607,6 +1618,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMD8111 is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_CRYSTAL_COVE=y
# CONFIG_GPIO_CS5535 is not set
@@ -1642,6 +1654,7 @@ CONFIG_GPIO_SCH=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1875,6 +1888,7 @@ CONFIG_HYPERV=m
CONFIG_HYPERV_NET=m
CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_VSOCKETS=m
CONFIG_HYSDN_CAPI=y
CONFIG_HYSDN=m
CONFIG_HZ_1000=y
@@ -2046,6 +2060,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -2120,7 +2135,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2160,6 +2177,7 @@ CONFIG_INTEL_POWERCLAMP=m
CONFIG_INTEL_PUNIT_IPC=m
CONFIG_INTEL_RAPL=m
CONFIG_INTEL_RDT_A=y
+CONFIG_INTEL_RDT=y
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SCU_IPC is not set
CONFIG_INTEL_SMARTCONNECT=y
@@ -2211,7 +2229,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2338,6 +2356,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2352,6 +2371,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -2585,6 +2605,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2685,6 +2706,7 @@ CONFIG_LOAD_UEFI_KEYS=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
CONFIG_LOCK_DOWN_KERNEL=y
CONFIG_LOCKD_V4=y
CONFIG_LOCK_STAT=y
@@ -2709,6 +2731,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2796,6 +2819,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2860,6 +2884,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2927,6 +2952,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -2976,8 +3002,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
# CONFIG_MLX5_INFINIBAND is not set
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2998,7 +3026,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3359,6 +3386,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3428,6 +3456,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3589,6 +3618,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3891,6 +3921,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3900,6 +3932,7 @@ CONFIG_PHYSICAL_START=0x400000
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
# CONFIG_PINCTRL_AMD is not set
@@ -3907,10 +3940,15 @@ CONFIG_PINCTRL_BAYTRAIL=y
CONFIG_PINCTRL_BROXTON=m
# CONFIG_PINCTRL_CANNONLAKE is not set
CONFIG_PINCTRL_CHERRYVIEW=y
+CONFIG_PINCTRL_DENVERTON=m
# CONFIG_PINCTRL_GEMINILAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
+CONFIG_PINCTRL_LEWISBURG=m
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
CONFIG_PINCTRL_SUNRISEPOINT=m
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -3929,7 +3967,7 @@ CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
CONFIG_PMIC_OPREGION=y
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -4022,6 +4060,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -4051,6 +4090,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4119,6 +4159,7 @@ CONFIG_REALTEK_PHY=m
CONFIG_REFCOUNT_FULL=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -4133,6 +4174,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -4152,6 +4195,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -4159,6 +4204,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4536,6 +4582,7 @@ CONFIG_SENSORS_HDAPS=m
CONFIG_SENSORS_I5500=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_INA209=m
@@ -4627,6 +4674,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4700,6 +4748,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4713,6 +4762,7 @@ CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
CONFIG_SFI=y
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4732,6 +4782,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4776,7 +4827,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4839,7 +4890,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4929,6 +4980,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5016,6 +5068,7 @@ CONFIG_SND_SOC_SSM4567=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5115,6 +5168,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5149,6 +5203,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5978,6 +6033,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5997,6 +6053,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6120,6 +6177,7 @@ CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_PCIDEV_FRONTEND=m
+# CONFIG_XEN_PVCALLS_BACKEND is not set
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVH=y
CONFIG_XEN_PV=y
@@ -6173,6 +6231,7 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_ZONE_DMA=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-i686-debug.config b/kernel-i686-debug.config
index 8e739d7fc..1a81d84c1 100644
--- a/kernel-i686-debug.config
+++ b/kernel-i686-debug.config
@@ -197,7 +197,9 @@ CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
# CONFIG_ALIX is not set
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -253,6 +255,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -389,6 +392,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_OLPC=y
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
@@ -431,7 +435,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_BLK_DEV_AMD74XX=y
@@ -490,6 +493,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -500,6 +504,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -659,11 +664,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_CC_STACKPROTECTOR=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -741,9 +748,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -862,6 +870,7 @@ CONFIG_CRYPTO_DEV_QAT_C62X=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1034,6 +1043,7 @@ CONFIG_DEV_APPLETALK=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1092,7 +1102,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DPTF_POWER=m
@@ -1207,6 +1217,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1607,6 +1618,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMD8111 is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_CRYSTAL_COVE=y
CONFIG_GPIO_CS5535=y
@@ -1642,6 +1654,7 @@ CONFIG_GPIO_SCH=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1875,6 +1888,7 @@ CONFIG_HYPERV=m
CONFIG_HYPERV_NET=m
CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_VSOCKETS=m
CONFIG_HYSDN_CAPI=y
CONFIG_HYSDN=m
CONFIG_HZ_1000=y
@@ -2046,6 +2060,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -2120,7 +2135,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2160,6 +2177,7 @@ CONFIG_INTEL_POWERCLAMP=m
CONFIG_INTEL_PUNIT_IPC=m
CONFIG_INTEL_RAPL=m
CONFIG_INTEL_RDT_A=y
+CONFIG_INTEL_RDT=y
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SCU_IPC is not set
CONFIG_INTEL_SMARTCONNECT=y
@@ -2211,7 +2229,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2338,6 +2356,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2352,6 +2371,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -2585,6 +2605,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2685,6 +2706,7 @@ CONFIG_LOAD_UEFI_KEYS=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
CONFIG_LOCK_DOWN_KERNEL=y
CONFIG_LOCKD_V4=y
CONFIG_LOCK_STAT=y
@@ -2709,6 +2731,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2796,6 +2819,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2860,6 +2884,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2927,6 +2952,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -2976,8 +3002,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
# CONFIG_MLX5_INFINIBAND is not set
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2998,7 +3026,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3359,6 +3386,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3428,6 +3456,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3589,6 +3618,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3891,6 +3921,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3900,6 +3932,7 @@ CONFIG_PHYSICAL_START=0x400000
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
# CONFIG_PINCTRL_AMD is not set
@@ -3907,10 +3940,15 @@ CONFIG_PINCTRL_BAYTRAIL=y
CONFIG_PINCTRL_BROXTON=m
# CONFIG_PINCTRL_CANNONLAKE is not set
CONFIG_PINCTRL_CHERRYVIEW=y
+CONFIG_PINCTRL_DENVERTON=m
# CONFIG_PINCTRL_GEMINILAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
+CONFIG_PINCTRL_LEWISBURG=m
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
CONFIG_PINCTRL_SUNRISEPOINT=m
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -3929,7 +3967,7 @@ CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
CONFIG_PMIC_OPREGION=y
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -4022,6 +4060,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -4051,6 +4090,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4119,6 +4159,7 @@ CONFIG_REALTEK_PHY=m
CONFIG_REFCOUNT_FULL=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -4133,6 +4174,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -4152,6 +4195,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -4159,6 +4204,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4536,6 +4582,7 @@ CONFIG_SENSORS_HDAPS=m
CONFIG_SENSORS_I5500=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_INA209=m
@@ -4627,6 +4674,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4700,6 +4748,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4713,6 +4762,7 @@ CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
CONFIG_SFI=y
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4732,6 +4782,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4776,7 +4827,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4839,7 +4890,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4929,6 +4980,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5016,6 +5068,7 @@ CONFIG_SND_SOC_SSM4567=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5115,6 +5168,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5149,6 +5203,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5978,6 +6033,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5997,6 +6053,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6119,6 +6176,7 @@ CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_PCIDEV_FRONTEND=m
+# CONFIG_XEN_PVCALLS_BACKEND is not set
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVH=y
CONFIG_XEN_PV=y
@@ -6171,6 +6229,7 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_ZONE_DMA=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-i686.config b/kernel-i686.config
index 323dc8e1c..6549136f6 100644
--- a/kernel-i686.config
+++ b/kernel-i686.config
@@ -197,7 +197,9 @@ CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
# CONFIG_ALIX is not set
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -252,6 +254,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -388,6 +391,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
CONFIG_BATTERY_OLPC=y
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
@@ -430,7 +434,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_BLK_DEV_AMD74XX=y
@@ -489,6 +492,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -499,6 +503,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -658,11 +663,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_CC_STACKPROTECTOR=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -740,9 +747,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -860,6 +868,7 @@ CONFIG_CRYPTO_DEV_QAT_C62X=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1024,6 +1033,7 @@ CONFIG_DEV_APPLETALK=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1081,7 +1091,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DPTF_POWER=m
@@ -1196,6 +1206,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1589,6 +1600,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMD8111 is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_CRYSTAL_COVE=y
CONFIG_GPIO_CS5535=y
@@ -1624,6 +1636,7 @@ CONFIG_GPIO_SCH=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1857,6 +1870,7 @@ CONFIG_HYPERV=m
CONFIG_HYPERV_NET=m
CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_VSOCKETS=m
CONFIG_HYSDN_CAPI=y
CONFIG_HYSDN=m
CONFIG_HZ_1000=y
@@ -2028,6 +2042,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -2102,7 +2117,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2142,6 +2159,7 @@ CONFIG_INTEL_POWERCLAMP=m
CONFIG_INTEL_PUNIT_IPC=m
CONFIG_INTEL_RAPL=m
CONFIG_INTEL_RDT_A=y
+CONFIG_INTEL_RDT=y
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SCU_IPC is not set
CONFIG_INTEL_SMARTCONNECT=y
@@ -2193,7 +2211,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2320,6 +2338,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2334,6 +2353,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -2565,6 +2585,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2665,6 +2686,7 @@ CONFIG_LOAD_UEFI_KEYS=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
CONFIG_LOCK_DOWN_KERNEL=y
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2689,6 +2711,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2752,7 +2775,7 @@ CONFIG_MAX30100=m
# CONFIG_MAX9611 is not set
# CONFIG_MAXIM_THERMOCOUPLE is not set
CONFIG_MAX_RAW_DEVS=8192
-CONFIG_MAXSMP=y
+# CONFIG_MAXSMP is not set
# CONFIG_MC3230 is not set
# CONFIG_MCB is not set
# CONFIG_MCE_AMD_INJ is not set
@@ -2776,6 +2799,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2840,6 +2864,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2907,6 +2932,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -2956,8 +2982,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
# CONFIG_MLX5_INFINIBAND is not set
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2978,7 +3006,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3339,6 +3366,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3408,6 +3436,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3569,6 +3598,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3871,6 +3901,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3880,6 +3912,7 @@ CONFIG_PHYSICAL_START=0x400000
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
# CONFIG_PINCTRL_AMD is not set
@@ -3887,10 +3920,15 @@ CONFIG_PINCTRL_BAYTRAIL=y
CONFIG_PINCTRL_BROXTON=m
# CONFIG_PINCTRL_CANNONLAKE is not set
CONFIG_PINCTRL_CHERRYVIEW=y
+CONFIG_PINCTRL_DENVERTON=m
# CONFIG_PINCTRL_GEMINILAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
+CONFIG_PINCTRL_LEWISBURG=m
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
CONFIG_PINCTRL_SUNRISEPOINT=m
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -3909,7 +3947,7 @@ CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
CONFIG_PMIC_OPREGION=y
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -4001,6 +4039,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -4030,6 +4069,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4098,6 +4138,7 @@ CONFIG_REALTEK_PHY=m
# CONFIG_REFCOUNT_FULL is not set
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -4112,6 +4153,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -4131,6 +4174,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -4138,6 +4183,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4515,6 +4561,7 @@ CONFIG_SENSORS_HDAPS=m
CONFIG_SENSORS_I5500=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_INA209=m
@@ -4606,6 +4653,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4679,6 +4727,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4692,6 +4741,7 @@ CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
CONFIG_SFI=y
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4711,6 +4761,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4755,7 +4806,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4818,7 +4869,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4907,6 +4958,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -4994,6 +5046,7 @@ CONFIG_SND_SOC_SSM4567=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5093,6 +5146,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5127,6 +5181,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5956,6 +6011,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5975,6 +6031,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6097,6 +6154,7 @@ CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_PCIDEV_FRONTEND=m
+# CONFIG_XEN_PVCALLS_BACKEND is not set
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVH=y
CONFIG_XEN_PV=y
@@ -6149,6 +6207,7 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_ZONE_DMA=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-ppc64-debug.config b/kernel-ppc64-debug.config
index 0c7047250..06bb87cad 100644
--- a/kernel-ppc64-debug.config
+++ b/kernel-ppc64-debug.config
@@ -153,7 +153,9 @@ CONFIG_AIX_PARTITION=y
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALTIVEC=y
@@ -201,6 +203,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -336,6 +339,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -377,7 +381,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
# CONFIG_BLK_DEV_AEC62XX is not set
@@ -474,6 +477,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -485,6 +489,7 @@ CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOOTX_TEXT=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -646,9 +651,11 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -724,9 +731,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -840,6 +848,7 @@ CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV=m
CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES=m
CONFIG_CRYPTO_DEV_NX_ENCRYPT=m
CONFIG_CRYPTO_DEV_NX=y
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m
CONFIG_CRYPTO_DEV_VMX=y
@@ -1005,6 +1014,7 @@ CONFIG_DEV_DAX_PMEM=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1061,7 +1071,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1162,6 +1172,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1522,6 +1533,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DWAPB is not set
CONFIG_GPIO_EXAR=m
@@ -1548,6 +1560,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
# CONFIG_GPIO_UCB1400 is not set
@@ -1941,6 +1954,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -2015,7 +2029,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
CONFIG_INPUT_TOUCHSCREEN=y
@@ -2068,7 +2084,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2191,6 +2207,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2205,6 +2222,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_ALL_CPUS=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
@@ -2437,6 +2455,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2535,6 +2554,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
CONFIG_LOCK_STAT=y
@@ -2560,6 +2580,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2641,6 +2662,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
CONFIG_MDIO_GPIO=m
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2709,6 +2731,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=m
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2773,6 +2796,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -2817,8 +2841,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2839,7 +2865,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3185,6 +3210,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3253,6 +3279,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_IBM=y
CONFIG_NET_VENDOR_INTEL=y
@@ -3415,6 +3442,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3683,6 +3711,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3690,12 +3720,16 @@ CONFIG_PHYLIB=y
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
# CONFIG_PINCONF is not set
# CONFIG_PINCTRL_CANNONLAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SX150X is not set
# CONFIG_PINMUX is not set
CONFIG_PKCS7_MESSAGE_PARSER=y
@@ -3715,7 +3749,7 @@ CONFIG_PM_DEBUG=y
CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -3760,6 +3794,7 @@ CONFIG_PPC_EMULATED_STATS=y
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
CONFIG_PPC_ICSWX=y
CONFIG_PPC_MAPLE=y
+# CONFIG_PPC_MEMTRACE is not set
# CONFIG_PPC_MPC5200_LPBFIFO is not set
CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
# CONFIG_PPC_PASEMI is not set
@@ -3774,6 +3809,7 @@ CONFIG_PPC_SMLPAR=y
CONFIG_PPC_SPLPAR=y
CONFIG_PPC_SUBPAGE_PROT=y
CONFIG_PPC_TRANSACTIONAL_MEM=y
+CONFIG_PPC_VAS=y
CONFIG_PPC=y
CONFIG_PPDEV=m
CONFIG_PPP_ASYNC=m
@@ -3836,6 +3872,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -3865,6 +3902,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -3932,6 +3970,7 @@ CONFIG_REALTEK_PHY=m
CONFIG_REFCOUNT_FULL=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -3946,6 +3985,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -3965,6 +4006,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -3972,6 +4015,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4343,6 +4387,7 @@ CONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBM_CFFPS=m
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IBMPOWERNV=y
# CONFIG_SENSORS_IIO_HWMON is not set
@@ -4433,6 +4478,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4508,6 +4554,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4521,6 +4568,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4540,6 +4588,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4590,7 +4639,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4653,7 +4702,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
# CONFIG_SND_HDA_INTEL is not set
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4745,6 +4794,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -4807,6 +4857,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TS3A227E is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -4901,6 +4952,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -4934,6 +4986,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5748,6 +5801,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5768,6 +5822,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -5869,6 +5924,7 @@ CONFIG_ZLIB_INFLATE=y
# CONFIG_ZONE_DEVICE is not set
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-ppc64.config b/kernel-ppc64.config
index 1d697184b..e6e9c4e43 100644
--- a/kernel-ppc64.config
+++ b/kernel-ppc64.config
@@ -153,7 +153,9 @@ CONFIG_AIX_PARTITION=y
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALTIVEC=y
@@ -200,6 +202,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -335,6 +338,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -376,7 +380,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
# CONFIG_BLK_DEV_AEC62XX is not set
@@ -473,6 +476,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -484,6 +488,7 @@ CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOOTX_TEXT=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -645,9 +650,11 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -723,9 +730,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -838,6 +846,7 @@ CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV=m
CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES=m
CONFIG_CRYPTO_DEV_NX_ENCRYPT=m
CONFIG_CRYPTO_DEV_NX=y
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m
CONFIG_CRYPTO_DEV_VMX=y
@@ -995,6 +1004,7 @@ CONFIG_DEV_DAX_PMEM=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1050,7 +1060,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1151,6 +1161,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1504,6 +1515,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DWAPB is not set
CONFIG_GPIO_EXAR=m
@@ -1530,6 +1542,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
# CONFIG_GPIO_UCB1400 is not set
@@ -1923,6 +1936,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -1997,7 +2011,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
CONFIG_INPUT_TOUCHSCREEN=y
@@ -2050,7 +2066,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2173,6 +2189,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2187,6 +2204,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_ALL_CPUS=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
@@ -2417,6 +2435,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2515,6 +2534,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2540,6 +2560,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2620,6 +2641,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
CONFIG_MDIO_GPIO=m
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2688,6 +2710,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=m
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2752,6 +2775,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -2796,8 +2820,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2818,7 +2844,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3163,6 +3188,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3231,6 +3257,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_IBM=y
CONFIG_NET_VENDOR_INTEL=y
@@ -3393,6 +3420,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3661,6 +3689,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3668,12 +3698,16 @@ CONFIG_PHYLIB=y
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
# CONFIG_PINCONF is not set
# CONFIG_PINCTRL_CANNONLAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SX150X is not set
# CONFIG_PINMUX is not set
CONFIG_PKCS7_MESSAGE_PARSER=y
@@ -3693,7 +3727,7 @@ CONFIG_PM_DEBUG=y
CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -3738,6 +3772,7 @@ CONFIG_PPC_EMULATED_STATS=y
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
CONFIG_PPC_ICSWX=y
CONFIG_PPC_MAPLE=y
+# CONFIG_PPC_MEMTRACE is not set
# CONFIG_PPC_MPC5200_LPBFIFO is not set
CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
# CONFIG_PPC_PASEMI is not set
@@ -3752,6 +3787,7 @@ CONFIG_PPC_SMLPAR=y
CONFIG_PPC_SPLPAR=y
CONFIG_PPC_SUBPAGE_PROT=y
CONFIG_PPC_TRANSACTIONAL_MEM=y
+CONFIG_PPC_VAS=y
CONFIG_PPC=y
CONFIG_PPDEV=m
CONFIG_PPP_ASYNC=m
@@ -3813,6 +3849,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -3842,6 +3879,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -3909,6 +3947,7 @@ CONFIG_REALTEK_PHY=m
# CONFIG_REFCOUNT_FULL is not set
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -3923,6 +3962,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -3942,6 +3983,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -3949,6 +3992,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4320,6 +4364,7 @@ CONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBM_CFFPS=m
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IBMPOWERNV=y
# CONFIG_SENSORS_IIO_HWMON is not set
@@ -4410,6 +4455,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4485,6 +4531,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4498,6 +4545,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4517,6 +4565,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4567,7 +4616,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4630,7 +4679,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
# CONFIG_SND_HDA_INTEL is not set
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4721,6 +4770,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -4783,6 +4833,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TS3A227E is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -4877,6 +4928,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -4910,6 +4962,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5724,6 +5777,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5744,6 +5798,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -5845,6 +5900,7 @@ CONFIG_ZLIB_INFLATE=y
# CONFIG_ZONE_DEVICE is not set
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-ppc64le-debug.config b/kernel-ppc64le-debug.config
index 33fbd04f8..66c67d2c5 100644
--- a/kernel-ppc64le-debug.config
+++ b/kernel-ppc64le-debug.config
@@ -148,7 +148,9 @@ CONFIG_AIX_PARTITION=y
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALTIVEC=y
@@ -194,6 +196,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -329,6 +332,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -370,7 +374,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_BLK_DEV_BSGLIB=y
@@ -430,6 +433,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -441,6 +445,7 @@ CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOOTX_TEXT=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -602,9 +607,11 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -680,9 +687,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -794,6 +802,7 @@ CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV=m
CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES=m
CONFIG_CRYPTO_DEV_NX_ENCRYPT=m
CONFIG_CRYPTO_DEV_NX=y
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m
CONFIG_CRYPTO_DEV_VMX=y
@@ -959,6 +968,7 @@ CONFIG_DEV_DAX_PMEM=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1016,7 +1026,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1117,6 +1127,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1475,6 +1486,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DWAPB is not set
CONFIG_GPIO_EXAR=m
@@ -1501,6 +1513,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
# CONFIG_GPIO_UCB1400 is not set
@@ -1886,6 +1899,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -1960,7 +1974,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
CONFIG_INPUT_TOUCHSCREEN=y
@@ -2013,7 +2029,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2136,6 +2152,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2150,6 +2167,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_ALL_CPUS=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
@@ -2382,6 +2400,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2480,6 +2499,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
CONFIG_LOCK_STAT=y
@@ -2505,6 +2525,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2586,6 +2607,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
CONFIG_MDIO_GPIO=m
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2654,6 +2676,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=m
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2718,6 +2741,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -2762,8 +2786,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2784,7 +2810,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3129,6 +3154,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3197,6 +3223,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_IBM=y
CONFIG_NET_VENDOR_INTEL=y
@@ -3359,6 +3386,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3625,6 +3653,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3632,12 +3662,16 @@ CONFIG_PHYLIB=y
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
# CONFIG_PINCONF is not set
# CONFIG_PINCTRL_CANNONLAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SX150X is not set
# CONFIG_PINMUX is not set
CONFIG_PKCS7_MESSAGE_PARSER=y
@@ -3653,7 +3687,7 @@ CONFIG_PM_DEBUG=y
CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -3699,6 +3733,7 @@ CONFIG_PPC_EMULATED_STATS=y
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
CONFIG_PPC_ICSWX=y
# CONFIG_PPC_MAPLE is not set
+# CONFIG_PPC_MEMTRACE is not set
# CONFIG_PPC_MPC5200_LPBFIFO is not set
CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
# CONFIG_PPC_PASEMI is not set
@@ -3713,6 +3748,7 @@ CONFIG_PPC_SMLPAR=y
CONFIG_PPC_SPLPAR=y
CONFIG_PPC_SUBPAGE_PROT=y
CONFIG_PPC_TRANSACTIONAL_MEM=y
+CONFIG_PPC_VAS=y
CONFIG_PPC=y
CONFIG_PPDEV=m
CONFIG_PPP_ASYNC=m
@@ -3775,6 +3811,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -3804,6 +3841,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -3871,6 +3909,7 @@ CONFIG_REALTEK_PHY=m
CONFIG_REFCOUNT_FULL=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -3885,6 +3924,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -3904,6 +3945,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -3911,6 +3954,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4282,6 +4326,7 @@ CONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBM_CFFPS=m
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IBMPOWERNV=y
# CONFIG_SENSORS_IIO_HWMON is not set
@@ -4372,6 +4417,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4445,6 +4491,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4458,6 +4505,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4477,6 +4525,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4520,7 +4569,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4583,7 +4632,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
# CONFIG_SND_HDA_INTEL is not set
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4673,6 +4722,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -4735,6 +4785,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TS3A227E is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -4829,6 +4880,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -4862,6 +4914,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5676,6 +5729,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5696,6 +5750,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -5791,6 +5846,7 @@ CONFIG_ZLIB_INFLATE=y
# CONFIG_ZONE_DEVICE is not set
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-ppc64le.config b/kernel-ppc64le.config
index f668b8e62..0d18af253 100644
--- a/kernel-ppc64le.config
+++ b/kernel-ppc64le.config
@@ -148,7 +148,9 @@ CONFIG_AIX_PARTITION=y
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALTIVEC=y
@@ -193,6 +195,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -328,6 +331,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -369,7 +373,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_BLK_DEV_BSGLIB=y
@@ -429,6 +432,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -440,6 +444,7 @@ CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOOTX_TEXT=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -601,9 +606,11 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -679,9 +686,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -792,6 +800,7 @@ CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV=m
CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES=m
CONFIG_CRYPTO_DEV_NX_ENCRYPT=m
CONFIG_CRYPTO_DEV_NX=y
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m
CONFIG_CRYPTO_DEV_VMX=y
@@ -949,6 +958,7 @@ CONFIG_DEV_DAX_PMEM=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1005,7 +1015,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1106,6 +1116,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1457,6 +1468,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DWAPB is not set
CONFIG_GPIO_EXAR=m
@@ -1483,6 +1495,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
# CONFIG_GPIO_UCB1400 is not set
@@ -1868,6 +1881,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -1942,7 +1956,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
CONFIG_INPUT_TOUCHSCREEN=y
@@ -1995,7 +2011,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2118,6 +2134,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2132,6 +2149,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_ALL_CPUS=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_IRQSOFF_TRACER is not set
@@ -2362,6 +2380,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2460,6 +2479,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2485,6 +2505,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2565,6 +2586,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
CONFIG_MDIO_GPIO=m
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2633,6 +2655,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=m
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2697,6 +2720,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -2741,8 +2765,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2763,7 +2789,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3107,6 +3132,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3175,6 +3201,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_IBM=y
CONFIG_NET_VENDOR_INTEL=y
@@ -3337,6 +3364,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3603,6 +3631,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3610,12 +3640,16 @@ CONFIG_PHYLIB=y
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
# CONFIG_PINCONF is not set
# CONFIG_PINCTRL_CANNONLAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SX150X is not set
# CONFIG_PINMUX is not set
CONFIG_PKCS7_MESSAGE_PARSER=y
@@ -3631,7 +3665,7 @@ CONFIG_PM_DEBUG=y
CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -3677,6 +3711,7 @@ CONFIG_PPC_EMULATED_STATS=y
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
CONFIG_PPC_ICSWX=y
# CONFIG_PPC_MAPLE is not set
+# CONFIG_PPC_MEMTRACE is not set
# CONFIG_PPC_MPC5200_LPBFIFO is not set
CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
# CONFIG_PPC_PASEMI is not set
@@ -3691,6 +3726,7 @@ CONFIG_PPC_SMLPAR=y
CONFIG_PPC_SPLPAR=y
CONFIG_PPC_SUBPAGE_PROT=y
CONFIG_PPC_TRANSACTIONAL_MEM=y
+CONFIG_PPC_VAS=y
CONFIG_PPC=y
CONFIG_PPDEV=m
CONFIG_PPP_ASYNC=m
@@ -3752,6 +3788,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -3781,6 +3818,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -3848,6 +3886,7 @@ CONFIG_REALTEK_PHY=m
# CONFIG_REFCOUNT_FULL is not set
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -3862,6 +3901,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -3881,6 +3922,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -3888,6 +3931,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4259,6 +4303,7 @@ CONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBM_CFFPS=m
CONFIG_SENSORS_IBMPEX=m
CONFIG_SENSORS_IBMPOWERNV=y
# CONFIG_SENSORS_IIO_HWMON is not set
@@ -4349,6 +4394,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4422,6 +4468,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4435,6 +4482,7 @@ CONFIG_SERIO=y
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
CONFIG_SGI_PARTITION=y
CONFIG_SH_ETH=m
@@ -4454,6 +4502,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4497,7 +4546,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4560,7 +4609,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
# CONFIG_SND_HDA_INTEL is not set
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4649,6 +4698,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -4711,6 +4761,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TS3A227E is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -4805,6 +4856,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -4838,6 +4890,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5652,6 +5705,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5672,6 +5726,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -5767,6 +5822,7 @@ CONFIG_ZLIB_INFLATE=y
# CONFIG_ZONE_DEVICE is not set
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-s390x-debug.config b/kernel-s390x-debug.config
index dc9e7643a..acca1bb10 100644
--- a/kernel-s390x-debug.config
+++ b/kernel-s390x-debug.config
@@ -148,7 +148,9 @@ CONFIG_AIX_PARTITION=y
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
# CONFIG_ALIM7101_WDT is not set
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
# CONFIG_ALTERA_STAPL is not set
# CONFIG_ALTERA_TSE is not set
CONFIG_ALX=m
@@ -197,6 +199,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -331,6 +334,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -372,7 +376,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_BLK_DEV_BSGLIB=y
@@ -431,6 +434,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -441,6 +445,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -599,12 +604,14 @@ CONFIG_CASSINI=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CCW_CONSOLE=y
CONFIG_CCWGROUP=m
CONFIG_CCW=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -682,9 +689,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -692,7 +700,10 @@ CONFIG_CM32181=m
# CONFIG_CM3323 is not set
CONFIG_CM3605=m
# CONFIG_CM36651 is not set
-# CONFIG_CMA is not set
+CONFIG_CMA_AREAS=7
+# CONFIG_CMA_DEBUGFS is not set
+# CONFIG_CMA_DEBUG is not set
+CONFIG_CMA=y
# CONFIG_CMDLINE_PARTITION is not set
CONFIG_CMM_IUCV=y
CONFIG_CMM=m
@@ -787,6 +798,7 @@ CONFIG_CRYPTO_DEV_CHELSIO=m
CONFIG_CRYPTO_DEV_HIFN_795X=m
CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -955,6 +967,7 @@ CONFIG_DEV_APPLETALK=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1012,7 +1025,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
# CONFIG_DP83640_PHY is not set
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1112,6 +1125,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1446,6 +1460,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DWAPB is not set
CONFIG_GPIO_EXAR=m
@@ -1472,6 +1487,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1835,6 +1851,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
# CONFIG_INFINIBAND_CXGB3 is not set
# CONFIG_INFINIBAND_CXGB4 is not set
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -1909,7 +1926,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
# CONFIG_INPUT_POLLDEV is not set
CONFIG_INPUT_POWERMATE=m
# CONFIG_INPUT_PWM_BEEPER is not set
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
# CONFIG_INPUT_SPARSEKMAP is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -1962,7 +1981,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2085,6 +2104,7 @@ CONFIG_IRDA_FAST_RR=y
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2099,6 +2119,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_DOMAIN_DEBUG=y
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -2323,6 +2344,7 @@ CONFIG_LCS=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2420,6 +2442,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
CONFIG_LOCK_STAT=y
@@ -2444,6 +2467,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2525,6 +2549,7 @@ CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_DEVICE=m
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2593,6 +2618,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2632,7 +2658,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_RN5T618 is not set
# CONFIG_MFD_RT5033 is not set
# CONFIG_MFD_RTSX_PCI is not set
-CONFIG_MFD_RTSX_USB=m
+# CONFIG_MFD_RTSX_USB is not set
# CONFIG_MFD_SEC_CORE is not set
# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_MFD_SKY81452 is not set
@@ -2657,8 +2683,9 @@ CONFIG_MFD_SM501_GPIO=y
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS68470 is not set
# CONFIG_MFD_TPS80031 is not set
-CONFIG_MFD_VIPERBOARD=m
+# CONFIG_MFD_VIPERBOARD is not set
# CONFIG_MFD_VX855 is not set
# CONFIG_MFD_WL1273_CORE is not set
# CONFIG_MFD_WM831X_I2C is not set
@@ -2700,8 +2727,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2722,7 +2751,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3063,6 +3091,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
# CONFIG_NET_PACKET_ENGINE is not set
CONFIG_NET_PKTGEN=m
@@ -3131,6 +3160,7 @@ CONFIG_NET_VENDOR_AQUANTIA=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_MARVELL is not set
@@ -3289,6 +3319,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3555,6 +3586,8 @@ CONFIG_PFAULT=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=m
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3562,12 +3595,16 @@ CONFIG_PHYLIB=m
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
# CONFIG_PINCONF is not set
# CONFIG_PINCTRL_CANNONLAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SX150X is not set
# CONFIG_PINMUX is not set
CONFIG_PKCS7_MESSAGE_PARSER=y
@@ -3584,7 +3621,7 @@ CONFIG_PM_DEBUG=y
# CONFIG_PM_DEVFREQ is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -3664,6 +3701,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QDIO=m
@@ -3698,6 +3736,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -3764,6 +3803,7 @@ CONFIG_REALTEK_PHY=m
CONFIG_REFCOUNT_FULL=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -3777,7 +3817,9 @@ CONFIG_REISERFS_PROC_INFO=y
CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
# CONFIG_RESET_CONTROLLER is not set
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -3797,6 +3839,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -3804,6 +3848,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4185,6 +4230,7 @@ CONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_INA209=m
@@ -4274,6 +4320,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4343,6 +4390,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
# CONFIG_SERIO is not set
CONFIG_SERIO_LIBPS2=m
@@ -4355,6 +4403,7 @@ CONFIG_SERIO_SERPORT=m
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
# CONFIG_SGI_PARTITION is not set
CONFIG_SHARED_KERNEL=y
@@ -4374,6 +4423,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4419,7 +4469,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4482,7 +4532,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4571,6 +4621,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -4633,6 +4684,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TS3A227E is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -4724,6 +4776,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -4758,6 +4811,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5532,6 +5586,7 @@ CONFIG_VLAN_8021Q_GVRP=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_MVRP=y
CONFIG_VLSI_FIR=m
+CONFIG_VMCP_CMA_SIZE=4
CONFIG_VMCP=y
# CONFIG_VME_BUS is not set
CONFIG_VMLOGRDR=m
@@ -5570,6 +5625,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5590,6 +5646,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
# CONFIG_WDTPCI is not set
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -5679,6 +5736,7 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-s390x.config b/kernel-s390x.config
index 058b61400..b5c7f851f 100644
--- a/kernel-s390x.config
+++ b/kernel-s390x.config
@@ -148,7 +148,9 @@ CONFIG_AIX_PARTITION=y
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
# CONFIG_ALIM7101_WDT is not set
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
# CONFIG_ALTERA_STAPL is not set
# CONFIG_ALTERA_TSE is not set
CONFIG_ALX=m
@@ -196,6 +198,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -330,6 +333,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -371,7 +375,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
CONFIG_BLK_DEV_BSGLIB=y
@@ -430,6 +433,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -440,6 +444,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -598,12 +603,14 @@ CONFIG_CASSINI=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CCW_CONSOLE=y
CONFIG_CCWGROUP=m
CONFIG_CCW=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -681,9 +688,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -691,7 +699,10 @@ CONFIG_CM32181=m
# CONFIG_CM3323 is not set
CONFIG_CM3605=m
# CONFIG_CM36651 is not set
-# CONFIG_CMA is not set
+CONFIG_CMA_AREAS=7
+# CONFIG_CMA_DEBUGFS is not set
+# CONFIG_CMA_DEBUG is not set
+CONFIG_CMA=y
# CONFIG_CMDLINE_PARTITION is not set
CONFIG_CMM_IUCV=y
CONFIG_CMM=m
@@ -785,6 +796,7 @@ CONFIG_CRYPTO_DEV_CHELSIO=m
CONFIG_CRYPTO_DEV_HIFN_795X=m
CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -945,6 +957,7 @@ CONFIG_DEV_APPLETALK=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1001,7 +1014,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
# CONFIG_DP83640_PHY is not set
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DRAGONRISE_FF=y
@@ -1101,6 +1114,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1428,6 +1442,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
# CONFIG_GPIO_DWAPB is not set
CONFIG_GPIO_EXAR=m
@@ -1454,6 +1469,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1817,6 +1833,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
# CONFIG_INFINIBAND_CXGB3 is not set
# CONFIG_INFINIBAND_CXGB4 is not set
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
@@ -1891,7 +1908,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
# CONFIG_INPUT_POLLDEV is not set
CONFIG_INPUT_POWERMATE=m
# CONFIG_INPUT_PWM_BEEPER is not set
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
# CONFIG_INPUT_SPARSEKMAP is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -1944,7 +1963,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2067,6 +2086,7 @@ CONFIG_IRDA_FAST_RR=y
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2081,6 +2101,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
CONFIG_IRQ_DOMAIN_DEBUG=y
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -2303,6 +2324,7 @@ CONFIG_LCS=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2400,6 +2422,7 @@ CONFIG_LMP91000=m
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+# CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT is not set
# CONFIG_LOCK_DOWN_KERNEL is not set
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2424,6 +2447,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2504,6 +2528,7 @@ CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_DEVICE=m
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2572,6 +2597,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_AXP20X is not set
# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2611,7 +2637,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
# CONFIG_MFD_RN5T618 is not set
# CONFIG_MFD_RT5033 is not set
# CONFIG_MFD_RTSX_PCI is not set
-CONFIG_MFD_RTSX_USB=m
+# CONFIG_MFD_RTSX_USB is not set
# CONFIG_MFD_SEC_CORE is not set
# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_MFD_SKY81452 is not set
@@ -2636,8 +2662,9 @@ CONFIG_MFD_SM501_GPIO=y
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS68470 is not set
# CONFIG_MFD_TPS80031 is not set
-CONFIG_MFD_VIPERBOARD=m
+# CONFIG_MFD_VIPERBOARD is not set
# CONFIG_MFD_VX855 is not set
# CONFIG_MFD_WL1273_CORE is not set
# CONFIG_MFD_WM831X_I2C is not set
@@ -2679,8 +2706,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -2701,7 +2730,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3041,6 +3069,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
# CONFIG_NET_PACKET_ENGINE is not set
CONFIG_NET_PKTGEN=m
@@ -3109,6 +3138,7 @@ CONFIG_NET_VENDOR_AQUANTIA=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_MARVELL is not set
@@ -3267,6 +3297,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3533,6 +3564,8 @@ CONFIG_PFAULT=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=m
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3540,12 +3573,16 @@ CONFIG_PHYLIB=m
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
# CONFIG_PINCONF is not set
# CONFIG_PINCTRL_CANNONLAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
# CONFIG_PINCTRL is not set
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
# CONFIG_PINCTRL_SX150X is not set
# CONFIG_PINMUX is not set
CONFIG_PKCS7_MESSAGE_PARSER=y
@@ -3562,7 +3599,7 @@ CONFIG_PM_DEBUG=y
# CONFIG_PM_DEVFREQ is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -3641,6 +3678,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QDIO=m
@@ -3675,6 +3713,7 @@ CONFIG_R8169=m
# CONFIG_R8188EU is not set
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -3741,6 +3780,7 @@ CONFIG_REALTEK_PHY=m
# CONFIG_REFCOUNT_FULL is not set
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -3754,7 +3794,9 @@ CONFIG_REISERFS_PROC_INFO=y
CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
# CONFIG_RESET_CONTROLLER is not set
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -3774,6 +3816,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -3781,6 +3825,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4162,6 +4207,7 @@ CONFIG_SENSORS_GL520SM=m
# CONFIG_SENSORS_HMC5843_SPI is not set
# CONFIG_SENSORS_I5K_AMB is not set
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_INA209=m
@@ -4251,6 +4297,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4320,6 +4367,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
# CONFIG_SERIO is not set
CONFIG_SERIO_LIBPS2=m
@@ -4332,6 +4380,7 @@ CONFIG_SERIO_SERPORT=m
CONFIG_SFC_FALCON=m
CONFIG_SFC_FALCON_MTD=y
# CONFIG_SFC is not set
+CONFIG_SFP=m
# CONFIG_SGI_IOC4 is not set
# CONFIG_SGI_PARTITION is not set
CONFIG_SHARED_KERNEL=y
@@ -4351,6 +4400,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4396,7 +4446,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4459,7 +4509,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4547,6 +4597,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -4609,6 +4660,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TS3A227E is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -4700,6 +4752,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -4734,6 +4787,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -5508,6 +5562,7 @@ CONFIG_VLAN_8021Q_GVRP=y
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_MVRP=y
CONFIG_VLSI_FIR=m
+CONFIG_VMCP_CMA_SIZE=4
CONFIG_VMCP=y
# CONFIG_VME_BUS is not set
CONFIG_VMLOGRDR=m
@@ -5546,6 +5601,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -5566,6 +5622,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
# CONFIG_WDTPCI is not set
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -5655,6 +5712,7 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_ZLIB_INFLATE=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-x86_64-debug.config b/kernel-x86_64-debug.config
index d260a9646..99f92b549 100644
--- a/kernel-x86_64-debug.config
+++ b/kernel-x86_64-debug.config
@@ -199,7 +199,9 @@ CONFIG_ALIENWARE_WMI=m
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -207,6 +209,8 @@ CONFIG_ALX=m
CONFIG_AMD8111_ETH=m
CONFIG_AMD_IOMMU_V2=m
CONFIG_AMD_IOMMU=y
+# CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT is not set
+CONFIG_AMD_MEM_ENCRYPT=y
CONFIG_AMD_NUMA=y
CONFIG_AMD_PHY=m
CONFIG_AMD_XGBE_DCB=y
@@ -254,6 +258,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -394,6 +399,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
CONFIG_BATTERY_MAX17042=m
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -435,7 +441,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_BLK_DEV_AMD74XX=y
@@ -500,6 +505,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -510,6 +516,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -670,11 +677,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_CC_STACKPROTECTOR=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -753,9 +762,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -886,6 +896,7 @@ CONFIG_CRYPTO_DEV_QAT_C62X=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1073,6 +1084,9 @@ CONFIG_DEV_DAX_PMEM=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
+CONFIG_DEVICE_PRIVATE=y
+CONFIG_DEVICE_PUBLIC=y
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1133,7 +1147,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DPTF_POWER=m
@@ -1248,6 +1262,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1645,6 +1660,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_AMD8111 is not set
# CONFIG_GPIO_AMDPT is not set
# CONFIG_GPIO_AXP209 is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_CRYSTAL_COVE=y
# CONFIG_GPIO_CS5535 is not set
@@ -1679,6 +1695,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1849,6 +1866,7 @@ CONFIG_HISAX_W6692=y
CONFIG_HIST_TRIGGERS=y
# CONFIG_HMC6352 is not set
# CONFIG_HMC_DRV is not set
+CONFIG_HMM_MIRROR=y
CONFIG_HOLTEK_FF=y
# CONFIG_HOSTAP is not set
CONFIG_HOTPLUG_CPU=y
@@ -1911,6 +1929,7 @@ CONFIG_HYPERV=m
CONFIG_HYPERV_NET=m
CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_VSOCKETS=m
CONFIG_HYSDN_CAPI=y
CONFIG_HYSDN=m
CONFIG_HZ_1000=y
@@ -2086,6 +2105,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_HFI1=m
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
@@ -2163,7 +2183,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
# CONFIG_INPUT_PWM_BEEPER is not set
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2208,6 +2230,7 @@ CONFIG_INTEL_POWERCLAMP=m
CONFIG_INTEL_PUNIT_IPC=m
CONFIG_INTEL_RAPL=m
CONFIG_INTEL_RDT_A=y
+CONFIG_INTEL_RDT=y
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SCU_IPC is not set
CONFIG_INTEL_SMARTCONNECT=y
@@ -2261,7 +2284,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2388,6 +2411,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2402,6 +2426,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_REMAP=y
# CONFIG_IRQSOFF_TRACER is not set
@@ -2635,6 +2660,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2735,6 +2761,7 @@ CONFIG_LOAD_UEFI_KEYS=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y
CONFIG_LOCK_DOWN_KERNEL=y
CONFIG_LOCKD_V4=y
CONFIG_LOCK_STAT=y
@@ -2759,6 +2786,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2838,6 +2866,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2906,6 +2935,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X=y
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2973,6 +3003,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -3021,8 +3052,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -3044,7 +3077,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3396,6 +3428,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3465,6 +3498,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3626,6 +3660,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3930,6 +3965,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3939,6 +3976,7 @@ CONFIG_PHYSICAL_START=0x1000000
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
# CONFIG_PINCTRL_AMD is not set
@@ -3946,9 +3984,14 @@ CONFIG_PINCTRL_BAYTRAIL=y
CONFIG_PINCTRL_BROXTON=m
# CONFIG_PINCTRL_CANNONLAKE is not set
CONFIG_PINCTRL_CHERRYVIEW=y
+CONFIG_PINCTRL_DENVERTON=m
# CONFIG_PINCTRL_GEMINILAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
+CONFIG_PINCTRL_LEWISBURG=m
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
CONFIG_PINCTRL_SUNRISEPOINT=m
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -3967,7 +4010,7 @@ CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
CONFIG_PMIC_OPREGION=y
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -4058,6 +4101,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -4087,6 +4131,7 @@ CONFIG_R8169=m
CONFIG_R8188EU=m
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4156,6 +4201,7 @@ CONFIG_REALTEK_PHY=m
CONFIG_REFCOUNT_FULL=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -4170,6 +4216,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -4189,6 +4237,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -4196,6 +4246,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4574,6 +4625,7 @@ CONFIG_SENSORS_HDAPS=m
CONFIG_SENSORS_I5500=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_INA209=m
@@ -4665,6 +4717,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4736,6 +4789,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4753,6 +4807,7 @@ CONFIG_SFC_MCDI_MON=y
CONFIG_SFC_MTD=y
CONFIG_SFC_SRIOV=y
CONFIG_SFI=y
+CONFIG_SFP=m
# CONFIG_SGI_GRU_DEBUG is not set
CONFIG_SGI_GRU=m
CONFIG_SGI_IOC4=m
@@ -4775,6 +4830,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4819,7 +4875,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4882,7 +4938,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4972,6 +5028,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5059,6 +5116,7 @@ CONFIG_SND_SOC_SSM4567=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5162,6 +5220,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5195,6 +5254,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -6028,6 +6088,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -6047,6 +6108,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6095,6 +6157,7 @@ CONFIG_WMI_BMOF=m
CONFIG_WQ_WATCHDOG=y
# CONFIG_WW_MUTEX_SELFTEST is not set
# CONFIG_X25 is not set
+# CONFIG_X86_5LEVEL is not set
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_X86_ACPI_CPUFREQ_CPB=y
CONFIG_X86_ACPI_CPUFREQ=m
@@ -6161,6 +6224,7 @@ CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_PCIDEV_FRONTEND=m
+# CONFIG_XEN_PVCALLS_BACKEND is not set
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVH=y
CONFIG_XEN_PV=y
@@ -6215,6 +6279,7 @@ CONFIG_ZONE_DEVICE=y
CONFIG_ZONE_DMA=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel-x86_64.config b/kernel-x86_64.config
index 11c0799b6..7f94bd96e 100644
--- a/kernel-x86_64.config
+++ b/kernel-x86_64.config
@@ -199,7 +199,9 @@ CONFIG_ALIENWARE_WMI=m
CONFIG_ALI_FIR=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ=y
# CONFIG_ALTERA_MBOX is not set
+CONFIG_ALTERA_MSGDMA=m
CONFIG_ALTERA_STAPL=m
CONFIG_ALTERA_TSE=m
CONFIG_ALX=m
@@ -207,6 +209,8 @@ CONFIG_ALX=m
CONFIG_AMD8111_ETH=m
CONFIG_AMD_IOMMU_V2=m
CONFIG_AMD_IOMMU=y
+# CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT is not set
+CONFIG_AMD_MEM_ENCRYPT=y
CONFIG_AMD_NUMA=y
CONFIG_AMD_PHY=m
CONFIG_AMD_XGBE_DCB=y
@@ -253,6 +257,7 @@ CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
CONFIG_ATH10K_SDIO=m
# CONFIG_ATH10K_TRACING is not set
+CONFIG_ATH10K_USB=m
CONFIG_ATH5K_DEBUG=y
CONFIG_ATH5K=m
# CONFIG_ATH5K_TRACER is not set
@@ -393,6 +398,7 @@ CONFIG_BATMAN_ADV_NC=y
# CONFIG_BATTERY_LEGO_EV3 is not set
# CONFIG_BATTERY_MAX17040 is not set
CONFIG_BATTERY_MAX17042=m
+# CONFIG_BATTERY_MAX1721X is not set
# CONFIG_BATTERY_SBS is not set
CONFIG_BAYCOM_EPP=m
CONFIG_BAYCOM_PAR=m
@@ -434,7 +440,6 @@ CONFIG_BINFMT_MISC=m
CONFIG_BINFMT_SCRIPT=y
CONFIG_BLK_CGROUP=y
# CONFIG_BLK_CMDLINE_PARSER is not set
-CONFIG_BLK_CPQ_CISS_DA=m
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_BLK_DEV_AMD74XX=y
@@ -499,6 +504,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNXT_DCB=y
+CONFIG_BNXT_FLOWER_OFFLOAD=y
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_BONDING=m
@@ -509,6 +515,7 @@ CONFIG_BONDING=m
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_BOUNCE=y
CONFIG_BPF_JIT=y
+CONFIG_BPF_STREAM_PARSER=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPQETHER=m
# CONFIG_BRCMDBG is not set
@@ -669,11 +676,13 @@ CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_CCS811 is not set
CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_CC_STACKPROTECTOR=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD=m
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_CEC_PIN=y
CONFIG_CEC_PLATFORM_DRIVERS=y
CONFIG_CEPH_FSCACHE=y
CONFIG_CEPH_FS=m
@@ -752,9 +761,10 @@ CONFIG_CIFS_STATS=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
-CONFIG_CISS_SCSI_TAPE=y
CONFIG_CLEANCACHE=y
+# CONFIG_CLK_HSDK is not set
# CONFIG_CLK_QORIQ is not set
+# CONFIG_CLOCK_THERMAL is not set
CONFIG_CLS_U32_MARK=y
CONFIG_CLS_U32_PERF=y
CONFIG_CM32181=m
@@ -884,6 +894,7 @@ CONFIG_CRYPTO_DEV_QAT_C62X=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+# CONFIG_CRYPTO_DEV_SP_CCP is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DRBG_CTR=y
@@ -1063,6 +1074,9 @@ CONFIG_DEV_DAX_PMEM=m
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_THERMAL is not set
+CONFIG_DEVICE_PRIVATE=y
+CONFIG_DEVICE_PUBLIC=y
# CONFIG_DEVKMEM is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
@@ -1122,7 +1136,7 @@ CONFIG_DNS_RESOLVER=m
CONFIG_DONGLE=y
CONFIG_DP83640_PHY=m
CONFIG_DP83848_PHY=m
-CONFIG_DP83867_PHY=m
+# CONFIG_DP83867_PHY is not set
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_DPOT_DAC=m
CONFIG_DPTF_POWER=m
@@ -1237,6 +1251,7 @@ CONFIG_DVB_BUDGET_PATCH=m
CONFIG_DVB_CORE=m
# CONFIG_DVB_CXD2099 is not set
CONFIG_DVB_DDBRIDGE=m
+# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set
# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set
CONFIG_DVB_DM1105=m
CONFIG_DVB_DYNAMIC_MINORS=y
@@ -1627,6 +1642,7 @@ CONFIG_GIRBIL_DONGLE=m
# CONFIG_GPIO_AMD8111 is not set
# CONFIG_GPIO_AMDPT is not set
# CONFIG_GPIO_AXP209 is not set
+CONFIG_GPIO_BD9571MWV=m
# CONFIG_GPIO_BT8XX is not set
CONFIG_GPIO_CRYSTAL_COVE=y
# CONFIG_GPIO_CS5535 is not set
@@ -1661,6 +1677,7 @@ CONFIG_GPIO_PCI_IDIO_16=m
# CONFIG_GPIO_SYSCON is not set
# CONFIG_GPIO_SYSFS is not set
# CONFIG_GPIO_TPIC2810 is not set
+CONFIG_GPIO_TPS68470=y
# CONFIG_GPIO_TS4900 is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_VIPERBOARD=m
@@ -1831,6 +1848,7 @@ CONFIG_HISAX_W6692=y
CONFIG_HIST_TRIGGERS=y
# CONFIG_HMC6352 is not set
# CONFIG_HMC_DRV is not set
+CONFIG_HMM_MIRROR=y
CONFIG_HOLTEK_FF=y
# CONFIG_HOSTAP is not set
CONFIG_HOTPLUG_CPU=y
@@ -1893,6 +1911,7 @@ CONFIG_HYPERV=m
CONFIG_HYPERV_NET=m
CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_VSOCKETS=m
CONFIG_HYSDN_CAPI=y
CONFIG_HYSDN=m
CONFIG_HZ_1000=y
@@ -2068,6 +2087,7 @@ CONFIG_INET=y
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
CONFIG_INFINIBAND_CXGB4=m
+# CONFIG_INFINIBAND_EXP_USER_ACCESS is not set
CONFIG_INFINIBAND_HFI1=m
CONFIG_INFINIBAND_I40IW=m
CONFIG_INFINIBAND_IPOIB_CM=y
@@ -2145,7 +2165,9 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_POLLDEV=m
CONFIG_INPUT_POWERMATE=m
# CONFIG_INPUT_PWM_BEEPER is not set
+# CONFIG_INPUT_PWM_VIBRA is not set
CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_RK805_PWRKEY=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_SPARSEKMAP=m
CONFIG_INPUT_TABLET=y
@@ -2190,6 +2212,7 @@ CONFIG_INTEL_POWERCLAMP=m
CONFIG_INTEL_PUNIT_IPC=m
CONFIG_INTEL_RAPL=m
CONFIG_INTEL_RDT_A=y
+CONFIG_INTEL_RDT=y
CONFIG_INTEL_RST=m
# CONFIG_INTEL_SCU_IPC is not set
CONFIG_INTEL_SMARTCONNECT=y
@@ -2243,7 +2266,7 @@ CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3=y
# CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_IP_DCCP=m
+# CONFIG_IP_DCCP is not set
CONFIG_IPDDP_ENCAP=y
CONFIG_IPDDP=m
CONFIG_IP_FIB_TRIE_STATS=y
@@ -2370,6 +2393,7 @@ CONFIG_IRDA=m
CONFIG_IR_ENE=m
CONFIG_IR_FINTEK=m
CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_GPIO_TX=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IGORPLUGUSB=m
CONFIG_IR_IGUANA=m
@@ -2384,6 +2408,7 @@ CONFIG_IR_MCEUSB=m
CONFIG_IR_NEC_DECODER=m
CONFIG_IRNET=m
CONFIG_IR_NUVOTON=m
+CONFIG_IR_PWM_TX=m
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_REMAP=y
# CONFIG_IRQSOFF_TRACER is not set
@@ -2615,6 +2640,7 @@ CONFIG_LCD_PLATFORM=m
# CONFIG_LDM_DEBUG is not set
CONFIG_LDM_PARTITION=y
# CONFIG_LEDS_AAT1290 is not set
+CONFIG_LEDS_AS3645A=m
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_BD2802 is not set
@@ -2715,6 +2741,7 @@ CONFIG_LOAD_UEFI_KEYS=y
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_LOCKD=m
+CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y
CONFIG_LOCK_DOWN_KERNEL=y
CONFIG_LOCKD_V4=y
# CONFIG_LOCK_STAT is not set
@@ -2739,6 +2766,7 @@ CONFIG_LPFC_NVME_INITIATOR=y
CONFIG_LPFC_NVME_TARGET=y
CONFIG_LSI_ET1011C_PHY=m
CONFIG_LSM_MMAP_MIN_ADDR=65536
+# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_LTC2632 is not set
@@ -2796,7 +2824,7 @@ CONFIG_MAX30100=m
# CONFIG_MAX9611 is not set
# CONFIG_MAXIM_THERMOCOUPLE is not set
CONFIG_MAX_RAW_DEVS=8192
-CONFIG_MAXSMP=y
+# CONFIG_MAXSMP is not set
# CONFIG_MC3230 is not set
# CONFIG_MCB is not set
# CONFIG_MCE_AMD_INJ is not set
@@ -2818,6 +2846,7 @@ CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
CONFIG_MD_LINEAR=m
@@ -2886,6 +2915,7 @@ CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X=y
# CONFIG_MFD_BCM590XX is not set
+CONFIG_MFD_BD9571MWV=m
CONFIG_MFD_CORE=y
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_CROS_EC is not set
@@ -2953,6 +2983,7 @@ CONFIG_MFD_SM501=m
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_TPS65912_SPI is not set
+CONFIG_MFD_TPS68470=y
# CONFIG_MFD_TPS80031 is not set
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_VX855=m
@@ -3001,8 +3032,10 @@ CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_CORE_IPOIB=y
CONFIG_MLX5_CORE=m
# CONFIG_MLX5_EN_IPSEC is not set
+CONFIG_MLX5_ESWITCH=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_INFINIBAND=m
+CONFIG_MLX5_MPFS=y
# CONFIG_MLX90614 is not set
CONFIG_MLX_CPLD_PLATFORM=m
CONFIG_MLXFW=m
@@ -3024,7 +3057,6 @@ CONFIG_MMA7660=m
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
# CONFIG_MMC35240 is not set
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_CB710=m
@@ -3376,6 +3408,7 @@ CONFIG_NETLABEL=y
CONFIG_NETLINK_DIAG=m
CONFIG_NET_MPLS_GSO=m
CONFIG_NET_NCSI=y
+CONFIG_NET_NSH=m
CONFIG_NET_NS=y
CONFIG_NET_PACKET_ENGINE=y
CONFIG_NET_PKTGEN=m
@@ -3445,6 +3478,7 @@ CONFIG_NET_VENDOR_EXAR=y
# CONFIG_NET_VENDOR_FUJITSU is not set
# CONFIG_NET_VENDOR_HISILICON is not set
# CONFIG_NET_VENDOR_HP is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_INTEL=y
CONFIG_NET_VENDOR_MARVELL=y
@@ -3606,6 +3640,7 @@ CONFIG_NFT_EXTHDR=m
CONFIG_NFT_FIB_INET=m
CONFIG_NFT_FIB_IPV4=m
CONFIG_NFT_FIB_IPV6=m
+CONFIG_NFT_FIB_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m
CONFIG_NFT_HASH=m
CONFIG_NFT_LIMIT=m
@@ -3704,7 +3739,7 @@ CONFIG_NORTEL_HERMES=m
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
CONFIG_NOZOMI=m
-CONFIG_NR_CPUS=8192
+CONFIG_NR_CPUS=1024
CONFIG_NR_DEV_DAX=32768
CONFIG_NS83820=m
CONFIG_NSC_FIR=m
@@ -3910,6 +3945,8 @@ CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_PHONET is not set
# CONFIG_PHY_CPCAP_USB is not set
CONFIG_PHYLIB=y
+CONFIG_PHYLINK=m
+# CONFIG_PHY_MVEBU_CP110_COMPHY is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_QCOM_USB_HSIC is not set
@@ -3919,6 +3956,7 @@ CONFIG_PHYSICAL_START=0x1000000
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_TUSB1210 is not set
+# CONFIG_PI433 is not set
CONFIG_PID_NS=y
CONFIG_PINCONF=y
# CONFIG_PINCTRL_AMD is not set
@@ -3926,9 +3964,14 @@ CONFIG_PINCTRL_BAYTRAIL=y
CONFIG_PINCTRL_BROXTON=m
# CONFIG_PINCTRL_CANNONLAKE is not set
CONFIG_PINCTRL_CHERRYVIEW=y
+CONFIG_PINCTRL_DENVERTON=m
# CONFIG_PINCTRL_GEMINILAKE is not set
# CONFIG_PINCTRL_IPQ8074 is not set
+CONFIG_PINCTRL_LEWISBURG=m
# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_RK805=m
+# CONFIG_PINCTRL_SPRD is not set
+# CONFIG_PINCTRL_SPRD_SC9860 is not set
CONFIG_PINCTRL_SUNRISEPOINT=m
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL=y
@@ -3947,7 +3990,7 @@ CONFIG_PM_DEVFREQ=y
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_PMIC_DA903X is not set
CONFIG_PMIC_OPREGION=y
-# CONFIG_PM_OPP is not set
+CONFIG_PM_OPP=y
CONFIG_PM_STD_PARTITION=""
CONFIG_PM_TEST_SUSPEND=y
CONFIG_PM_TRACE_RTC=y
@@ -4037,6 +4080,7 @@ CONFIG_PWRSEQ_SIMPLE=m
# CONFIG_QCA7000_SPI is not set
# CONFIG_QCA7000_UART is not set
# CONFIG_QCOM_EMAC is not set
+# CONFIG_QCOM_GLINK_SSR is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_QCOM_HIDMA_MGMT is not set
CONFIG_QEDE=m
@@ -4066,6 +4110,7 @@ CONFIG_R8169=m
CONFIG_R8188EU=m
CONFIG_R8712U=m
CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
+CONFIG_R8822BE=m
CONFIG_RADIO_ADAPTERS=y
CONFIG_RADIO_AZTECH=m
CONFIG_RADIO_CADET=m
@@ -4135,6 +4180,7 @@ CONFIG_REALTEK_PHY=m
# CONFIG_REFCOUNT_FULL is not set
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP=y
+CONFIG_REGULATOR_BD9571MWV=m
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR is not set
# CONFIG_REGULATOR_TPS65132 is not set
@@ -4149,6 +4195,8 @@ CONFIG_RELAY=y
# CONFIG_RELOCATABLE_TEST is not set
CONFIG_RELOCATABLE=y
CONFIG_REMOTEPROC=m
+CONFIG_RESET_ATTACK_MITIGATION=y
+# CONFIG_RESET_HSDK_V1 is not set
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_RFD_FTL is not set
CONFIG_RFKILL_GPIO=m
@@ -4168,6 +4216,8 @@ CONFIG_RMI4_F55=y
CONFIG_RMI4_I2C=m
CONFIG_RMI4_SMB=m
CONFIG_RMI4_SPI=m
+# CONFIG_RMNET is not set
+# CONFIG_ROCKCHIP_PHY is not set
CONFIG_ROCKER=m
CONFIG_ROCKETPORT=m
CONFIG_ROMFS_FS=m
@@ -4175,6 +4225,7 @@ CONFIG_ROSE=m
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPMSG_CHAR is not set
# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_QCOM_GLINK_SMEM is not set
CONFIG_RPR0521=m
CONFIG_RSI_91X=m
CONFIG_RSI_DEBUGFS=y
@@ -4553,6 +4604,7 @@ CONFIG_SENSORS_HDAPS=m
CONFIG_SENSORS_I5500=m
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SENSORS_IBMAEM=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
CONFIG_SENSORS_IBMPEX=m
# CONFIG_SENSORS_IIO_HWMON is not set
CONFIG_SENSORS_INA209=m
@@ -4644,6 +4696,7 @@ CONFIG_SENSORS_TMP108=m
CONFIG_SENSORS_TMP401=m
CONFIG_SENSORS_TMP421=m
CONFIG_SENSORS_TPS40422=m
+CONFIG_SENSORS_TPS53679=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_SENSORS_TSL2563 is not set
CONFIG_SENSORS_UCD9000=m
@@ -4715,6 +4768,7 @@ CONFIG_SERIO_ALTERA_PS2=m
# CONFIG_SERIO_APBPS2 is not set
CONFIG_SERIO_ARC_PS2=m
# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_OLPC_APSP is not set
@@ -4732,6 +4786,7 @@ CONFIG_SFC_MCDI_MON=y
CONFIG_SFC_MTD=y
CONFIG_SFC_SRIOV=y
CONFIG_SFI=y
+CONFIG_SFP=m
# CONFIG_SGI_GRU_DEBUG is not set
CONFIG_SGI_GRU=m
CONFIG_SGI_IOC4=m
@@ -4754,6 +4809,7 @@ CONFIG_SKGE_GENESIS=y
CONFIG_SKGE=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_SKY2=m
+CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLICOSS is not set
@@ -4798,7 +4854,7 @@ CONFIG_SND_AU8830=m
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
# CONFIG_SND_AW2 is not set
CONFIG_SND_AZT3328=m
-CONFIG_SND_BCD2000=m
+# CONFIG_SND_BCD2000 is not set
CONFIG_SND_BEBOB=m
CONFIG_SND_BT87X=m
# CONFIG_SND_BT87X_OVERCLOCK is not set
@@ -4861,7 +4917,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=0
CONFIG_SND_HDA_INPUT_BEEP=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
CONFIG_SND_HDA_POWER_SAVE=y
CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_RECONFIG=y
@@ -4950,6 +5006,7 @@ CONFIG_SND_SOC_CS42L42=m
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
+CONFIG_SND_SOC_CS43130=m
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_DIO2125=m
@@ -5037,6 +5094,7 @@ CONFIG_SND_SOC_SSM4567=m
CONFIG_SND_SOC_TS3A227E=m
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
+CONFIG_SND_SOC_WM8524=m
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
@@ -5140,6 +5198,7 @@ CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SRAM is not set
# CONFIG_SRF04 is not set
# CONFIG_SRF08 is not set
@@ -5173,6 +5232,7 @@ CONFIG_STMMAC_ETH=m
# CONFIG_STMMAC_PLATFORM is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRING_SELFTEST is not set
CONFIG_STRIP_ASM_SYMS=y
# CONFIG_STRIP is not set
CONFIG_SUNDANCE=m
@@ -6006,6 +6066,7 @@ CONFIG_W1_SLAVE_DS2438=m
CONFIG_W1_SLAVE_DS2760=m
CONFIG_W1_SLAVE_DS2780=m
CONFIG_W1_SLAVE_DS2781=m
+CONFIG_W1_SLAVE_DS2805=m
CONFIG_W1_SLAVE_DS28E04=m
CONFIG_W1_SLAVE_SMEM=m
CONFIG_W1_SLAVE_THERM=m
@@ -6025,6 +6086,7 @@ CONFIG_WATCHDOG=y
CONFIG_WCN36XX=m
CONFIG_WDAT_WDT=m
CONFIG_WDTPCI=m
+CONFIG_WIL6210_DEBUGFS=y
CONFIG_WIL6210_ISR_COR=y
CONFIG_WIL6210=m
# CONFIG_WIL6210_TRACING is not set
@@ -6073,6 +6135,7 @@ CONFIG_WMI_BMOF=m
# CONFIG_WQ_WATCHDOG is not set
# CONFIG_WW_MUTEX_SELFTEST is not set
# CONFIG_X25 is not set
+# CONFIG_X86_5LEVEL is not set
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_X86_ACPI_CPUFREQ_CPB=y
CONFIG_X86_ACPI_CPUFREQ=m
@@ -6139,6 +6202,7 @@ CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_PCIDEV_FRONTEND=m
+# CONFIG_XEN_PVCALLS_BACKEND is not set
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVH=y
CONFIG_XEN_PV=y
@@ -6193,6 +6257,7 @@ CONFIG_ZONE_DEVICE=y
CONFIG_ZONE_DMA=y
# CONFIG_ZPA2326 is not set
CONFIG_ZRAM=m
+# CONFIG_ZRAM_WRITEBACK is not set
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_ZSMALLOC=y
CONFIG_ZSWAP=y
diff --git a/kernel.spec b/kernel.spec
index 0d747870b..4f5836187 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -17,7 +17,7 @@ Summary: The Linux kernel
%else
%global signkernel 0
%global signmodules 1
-%global zipmodules 0
+%global zipmodules 1
%endif
%if %{zipmodules}
@@ -42,19 +42,19 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be appended after the rcX and
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
#
-%global baserelease 302
+%global baserelease 300
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
# on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
# which yields a base_sublevel of 0.
-%define base_sublevel 13
+%define base_sublevel 14
## If this is a released kernel ##
%if 0%{?released_kernel}
# Do we have a -stable update to apply?
-%define stable_update 16
+%define stable_update 3
# Set rpm version accordingly
%if 0%{?stable_update}
%define stablerev %{stable_update}
@@ -187,7 +187,9 @@ Summary: The Linux kernel
# and debuginfo generation. Currently we rely on the old alldebug setting.
%global _build_id_links alldebug
-# kernel PAE is only built on i686 and ARMv7.
+# kernel PAE is only built on ARMv7 in rawhide.
+# Fedora 27 and earlier still support PAE, so change this on rebases.
+# %ifnarch armv7hl
%ifnarch i686 armv7hl
%define with_pae 0
%endif
@@ -388,7 +390,7 @@ Requires: kernel-modules-uname-r = %{KVERREL}%{?variant}
#
# List the packages used during the kernel build
#
-BuildRequires: kmod, patch, bash, sh-utils, tar, git
+BuildRequires: kmod, patch, bash, tar, git
BuildRequires: bzip2, xz, findutils, gzip, m4, perl-interpreter, perl-Carp, perl-devel, perl-generators, make, diffutils, gawk
BuildRequires: gcc, binutils, redhat-rpm-config, hmaccalc
BuildRequires: net-tools, hostname, bc, elfutils-devel
@@ -591,150 +593,68 @@ Patch303: ARM-tegra-usb-no-reset.patch
Patch304: allwinner-net-emac.patch
+Patch305: arm64-Revert-allwinner-a64-pine64-Use-dcdc1-regulato.patch
+
# https://www.spinics.net/lists/arm-kernel/msg554183.html
-Patch305: arm-imx6-hummingboard2.patch
+Patch306: arm-imx6-hummingboard2.patch
-Patch306: arm64-Add-option-of-13-for-FORCE_MAX_ZONEORDER.patch
+Patch307: arm64-Add-option-of-13-for-FORCE_MAX_ZONEORDER.patch
-# https://patchwork.kernel.org/patch/9815555/
-# https://patchwork.kernel.org/patch/9815651/
-# https://patchwork.kernel.org/patch/9819885/
# https://patchwork.kernel.org/patch/9820417/
-# https://patchwork.kernel.org/patch/9821151/
-# https://patchwork.kernel.org/patch/9821157/
Patch310: qcom-msm89xx-fixes.patch
-# https://patchwork.kernel.org/patch/9831825/
-# https://patchwork.kernel.org/patch/9833721/
-Patch311: arm-tegra-fix-gpu-iommu.patch
-
-# https://www.spinics.net/lists/linux-arm-msm/msg28203.html
-Patch312: qcom-display-iommu.patch
-
-# https://patchwork.kernel.org/patch/9839803/
-Patch313: qcom-Force-host-mode-for-USB-on-apq8016-sbc.patch
-
-# https://patchwork.kernel.org/patch/9850189/
-Patch314: qcom-msm-ci_hdrc_msm_probe-missing-of_node_get.patch
-
-# Hack until interconnect API lands upstream
-Patch315: qcom-clk-gpu-msm.patch
-
# https://patchwork.kernel.org/patch/10054387/
-Patch316: USB-ulpi-fix-bus-node-lookup.patch
+Patch311: USB-ulpi-fix-bus-node-lookup.patch
# Fix USB on the RPi https://patchwork.kernel.org/patch/9879371/
Patch321: bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch
-# Updat3 move of bcm2837, landed in 4.14
-Patch322: bcm2837-move-dt.patch
-
# bcm2837 bluetooth support
-#
Patch323: bcm2837-bluetooth-support.patch
-Patch324: bcm283x-vc4-fixes.patch
-
-Patch325: rpi-graphics-fix.patch
-
-# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?h=next-20170912&id=723288836628bc1c0855f3bb7b64b1803e4b9e4a
-Patch330: arm-of-restrict-dma-configuration.patch
-
-# Upstream ACPI fix
-Patch331: arm64-xgene-acpi-fix.patch
+Patch324: rpi-graphics-fix.patch
# Generic fixes and enablement for Socionext SoC and 96board
-Patch332: ahci-don-t-ignore-result-code-of-ahci_reset_controller.patch
-
# https://patchwork.kernel.org/patch/9980861/
-Patch333: PCI-aspm-deal-with-missing-root-ports-in-link-state-handling.patch
+Patch331: PCI-aspm-deal-with-missing-root-ports-in-link-state-handling.patch
# https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git/log/?h=synquacer-netsec
-Patch334: arm64-socionext-96b-enablement.patch
-
-# ThunderX fixes
-Patch335: arm64-cavium-fixes.patch
-
-Patch336: arm-exynos-fix-usb3.patch
+Patch332: arm64-socionext-96b-enablement.patch
-Patch337: arm64-aw64-devices.patch
+Patch335: arm-exynos-fix-usb3.patch
# 400 - IBM (ppc/s390x) patches
# 500 - Temp fixes/CVEs etc
-# CVE-2017-7477 rhbz 1445207 1445208
-Patch502: CVE-2017-7477.patch
-
-# CVE-2017-16644 rhbz 1516273 1516274
-Patch503: media-hdpvr-Fix-an-error-handling-path-in-hdpvr_probe.patch
-
-# CVE-2017-1000405 rhbz 1516514 1519115
-Patch504: 0001-mm-thp-Do-not-make-page-table-dirty-unconditionally-.patch
+# rhbz 1498016 1498017
+#Patch503: KEYS-don-t-let-add_key-update-an-uninstantiated-key.patch
# 600 - Patches for improved Bay and Cherry Trail device support
# Below patches are submitted upstream, awaiting review / merging
Patch601: 0001-Input-gpio_keys-Allow-suppression-of-input-events-fo.patch
Patch602: 0002-Input-soc_button_array-Suppress-power-button-presses.patch
Patch610: 0010-Input-silead-Add-support-for-capactive-home-button-f.patch
-Patch611: 0011-Input-goodix-Add-support-for-capacitive-home-button.patch
-# These patches are queued for 4.14 and can be dropped on rebase to 4.14-rc1
-Patch603: 0001-power-supply-max17042_battery-Add-support-for-ACPI-e.patch
-Patch604: 0002-power-supply-max17042_battery-Fix-ACPI-interrupt-iss.patch
-Patch613: 0013-iio-accel-bmc150-Add-support-for-BOSC0200-ACPI-devic.patch
-Patch615: 0015-i2c-cht-wc-Add-Intel-Cherry-Trail-Whiskey-Cove-SMBUS.patch
# rhbz 1476467
Patch617: Fix-for-module-sig-verification.patch
-# rhbz 1485086
-Patch619: pci-mark-amd-stoney-gpu-ats-as-broken.patch
-
-# Should fix our QXL issues
-Patch622: qxl-fixes.patch
-
# rhbz 1431375
-Patch624: input-rmi4-remove-the-need-for-artifical-IRQ.patch
-
-# rhbz 1432684
-Patch626: 1-3-net-set-tb--fast_sk_family.patch
-Patch627: 2-3-net-use-inet6_rcv_saddr-to-compare-sockets.patch
-Patch628: 3-3-inet-fix-improper-empty-comparison.patch
-
-# rhbz 1482648
-Patch630: Input-synaptics---Disable-kernel-tracking-on-SMBus-devices.patch
+Patch619: input-rmi4-remove-the-need-for-artifical-IRQ.patch
# Headed upstream
-Patch631: drm-i915-boost-GPU-clocks-if-we-miss-the-pageflip.patch
-
-# http://patchwork.ozlabs.org/patch/831938/
-Patch633: net-mlxsw-reg-Add-high-and-low-temperature-thresholds.patch
+Patch621: drm-i915-Boost-GPU-clocks-if-we-miss-the-pageflip-s-vblank.patch
-# Included in 4.14, backport requested on kernel@
-Patch634: selinux-Generalize-support-for-NNP-nosuid-SELinux-do.patch
+Patch623: 0001-PATCH-staging-rtl8822be-fix-wrong-dma-unmap-len.patch
# rhbz 1509461
-Patch635: v3-1-2-Input-synaptics-rmi4---RMI4-can-also-use-SMBUS-version-3.patch
-Patch636: v3-2-2-Input-synaptics---Lenovo-X1-Carbon-5-should-use-SMBUS-RMI.patch
+Patch625: v3-2-2-Input-synaptics---Lenovo-X1-Carbon-5-should-use-SMBUS-RMI.patch
-# rhbz 1490803
-Patch637: 1-2-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-NMI.patch
+# Fixes for QXL issues
+Patch627: qxl-fixes.patch
-# CVE-2017-16538 rhbz 1510826 1510854
-Patch639: CVE-2017-16538.patch
-
-# rhbz 1507931
-Patch640: qxl_cursor_fix.patch
-
-# rhbz 1462175
-Patch641: HID-rmi-Check-that-a-device-is-a-RMI-device-before-c.patch
-
-# rhbz 1518707
-Patch642: 0001-powerpc-64s-radix-Fix-128TB-512TB-virtual-address-bo.patch
-Patch643: 0002-powerpc-64s-hash-Fix-512T-hint-detection-to-use-128T.patch
-Patch644: 0003-powerpc-64s-hash-Fix-128TB-512TB-virtual-address-bou.patch
-Patch645: 0004-powerpc-64s-hash-Fix-fork-with-512TB-process-address.patch
-Patch646: 0005-powerpc-64s-hash-Allow-MAP_FIXED-allocations-to-cros.patch
+# CVE-2017-1000405 rhbz 1516514 1519115
+Patch628: 0001-mm-thp-Do-not-make-page-table-dirty-unconditionally-.patch
# END OF PATCH DEFINITIONS
@@ -1990,7 +1910,7 @@ pushd tools/thermal/tmon
make INSTALL_ROOT=%{buildroot} install
popd
pushd tools/iio
-make INSTALL_ROOT=%{buildroot} install
+make DESTDIR=%{buildroot} install
popd
pushd tools/gpio
make DESTDIR=%{buildroot} install
@@ -2290,6 +2210,9 @@ fi
#
#
%changelog
+* Mon Dec 04 2017 Justin M. Forbes <jforbes@fedoraproject.org> - 4.14.3-300
+- Linux v4.14.3 rebase
+
* Thu Nov 30 2017 Jeremy Cline <jeremy@jcline.org> - 4.13.16-302
- Fix CVE-2017-1000405 (rhbz 1516514 1519115)
diff --git a/media-hdpvr-Fix-an-error-handling-path-in-hdpvr_probe.patch b/media-hdpvr-Fix-an-error-handling-path-in-hdpvr_probe.patch
deleted file mode 100644
index 703b0d246..000000000
--- a/media-hdpvr-Fix-an-error-handling-path-in-hdpvr_probe.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From patchwork Fri Sep 22 13:07:06 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [media] hdpvr: Fix an error handling path in hdpvr_probe()
-From: Arvind Yadav <arvind.yadav.cs@gmail.com>
-X-Patchwork-Id: 9966135
-Message-Id: <b5c06a8e071d38fc4b4df20b7f9c8fb25d5408fe.1506085151.git.arvind.yadav.cs@gmail.com>
-To: andreyknvl@google.com, hverkuil@xs4all.nl, mchehab@kernel.org,
- laurent.pinchart@ideasonboard.com, dvyukov@google.com,
- kcc@google.com, syzkaller@googlegroups.com
-Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
-Date: Fri, 22 Sep 2017 18:37:06 +0530
-
-Here, hdpvr_register_videodev() is responsible for setup and
-register a video device. Also defining and initializing a worker.
-hdpvr_register_videodev() is calling by hdpvr_probe at last.
-So No need to flash any work here.
-Unregister v4l2, free buffers and memory. If hdpvr_probe() will fail.
-
-Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
-Reported-by: Andrey Konovalov <andreyknvl@google.com>
-Tested-by: Andrey Konovalov <andreyknvl@google.com>
----
- drivers/media/usb/hdpvr/hdpvr-core.c | 26 +++++++++++++++-----------
- 1 file changed, 15 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/media/usb/hdpvr/hdpvr-core.c b/drivers/media/usb/hdpvr/hdpvr-core.c
-index dbe29c6..1e8cbaf 100644
---- a/drivers/media/usb/hdpvr/hdpvr-core.c
-+++ b/drivers/media/usb/hdpvr/hdpvr-core.c
-@@ -292,7 +292,7 @@ static int hdpvr_probe(struct usb_interface *interface,
- /* register v4l2_device early so it can be used for printks */
- if (v4l2_device_register(&interface->dev, &dev->v4l2_dev)) {
- dev_err(&interface->dev, "v4l2_device_register failed\n");
-- goto error;
-+ goto error_free_dev;
- }
-
- mutex_init(&dev->io_mutex);
-@@ -301,7 +301,7 @@ static int hdpvr_probe(struct usb_interface *interface,
- dev->usbc_buf = kmalloc(64, GFP_KERNEL);
- if (!dev->usbc_buf) {
- v4l2_err(&dev->v4l2_dev, "Out of memory\n");
-- goto error;
-+ goto error_v4l2_unregister;
- }
-
- init_waitqueue_head(&dev->wait_buffer);
-@@ -339,13 +339,13 @@ static int hdpvr_probe(struct usb_interface *interface,
- }
- if (!dev->bulk_in_endpointAddr) {
- v4l2_err(&dev->v4l2_dev, "Could not find bulk-in endpoint\n");
-- goto error;
-+ goto error_put_usb;
- }
-
- /* init the device */
- if (hdpvr_device_init(dev)) {
- v4l2_err(&dev->v4l2_dev, "device init failed\n");
-- goto error;
-+ goto error_put_usb;
- }
-
- mutex_lock(&dev->io_mutex);
-@@ -353,7 +353,7 @@ static int hdpvr_probe(struct usb_interface *interface,
- mutex_unlock(&dev->io_mutex);
- v4l2_err(&dev->v4l2_dev,
- "allocating transfer buffers failed\n");
-- goto error;
-+ goto error_put_usb;
- }
- mutex_unlock(&dev->io_mutex);
-
-@@ -361,7 +361,7 @@ static int hdpvr_probe(struct usb_interface *interface,
- retval = hdpvr_register_i2c_adapter(dev);
- if (retval < 0) {
- v4l2_err(&dev->v4l2_dev, "i2c adapter register failed\n");
-- goto error;
-+ goto error_free_buffers;
- }
-
- client = hdpvr_register_ir_rx_i2c(dev);
-@@ -394,13 +394,17 @@ static int hdpvr_probe(struct usb_interface *interface,
- reg_fail:
- #if IS_ENABLED(CONFIG_I2C)
- i2c_del_adapter(&dev->i2c_adapter);
-+error_free_buffers:
- #endif
-+ hdpvr_free_buffers(dev);
-+error_put_usb:
-+ usb_put_dev(dev->udev);
-+ kfree(dev->usbc_buf);
-+error_v4l2_unregister:
-+ v4l2_device_unregister(&dev->v4l2_dev);
-+error_free_dev:
-+ kfree(dev);
- error:
-- if (dev) {
-- flush_work(&dev->worker);
-- /* this frees allocated memory */
-- hdpvr_delete(dev);
-- }
- return retval;
- }
-
diff --git a/net-mlxsw-reg-Add-high-and-low-temperature-thresholds.patch b/net-mlxsw-reg-Add-high-and-low-temperature-thresholds.patch
deleted file mode 100644
index 957200e17..000000000
--- a/net-mlxsw-reg-Add-high-and-low-temperature-thresholds.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From patchwork Mon Oct 30 09:51:18 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [net] mlxsw: reg: Add high and low temperature thresholds
-X-Patchwork-Submitter: Jiri Pirko <jiri@resnulli.us>
-X-Patchwork-Id: 831938
-X-Patchwork-Delegate: davem@davemloft.net
-Message-Id: <20171030095118.9098-1-jiri@resnulli.us>
-To: netdev@vger.kernel.org
-Cc: davem@davemloft.net, idosch@mellanox.com, mlxsw@mellanox.com
-Date: Mon, 30 Oct 2017 10:51:18 +0100
-From: Jiri Pirko <jiri@resnulli.us>
-List-Id: <netdev.vger.kernel.org>
-
-From: Ido Schimmel <idosch@mellanox.com>
-
-The ASIC has the ability to generate events whenever a sensor indicates
-the temperature goes above or below its high or low thresholds,
-respectively.
-
-In new firmware versions the firmware enforces a minimum of 5
-degrees Celsius difference between both thresholds. Make the driver
-conform to this requirement.
-
-Note that this is required even when the events are disabled, as in
-certain systems interrupts are generated via GPIO based on these
-thresholds.
-
-Fixes: 85926f877040 ("mlxsw: reg: Add definition of temperature management registers")
-Signed-off-by: Ido Schimmel <idosch@mellanox.com>
-Signed-off-by: Jiri Pirko <jiri@mellanox.com>
----
- drivers/net/ethernet/mellanox/mlxsw/reg.h | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h
-index 4afc848..5acfbe5 100644
---- a/drivers/net/ethernet/mellanox/mlxsw/reg.h
-+++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h
-@@ -5827,6 +5827,29 @@ MLXSW_ITEM32(reg, mtmp, mtr, 0x08, 30, 1);
- */
- MLXSW_ITEM32(reg, mtmp, max_temperature, 0x08, 0, 16);
-
-+/* reg_mtmp_tee
-+ * Temperature Event Enable.
-+ * 0 - Do not generate event
-+ * 1 - Generate event
-+ * 2 - Generate single event
-+ * Access: RW
-+ */
-+MLXSW_ITEM32(reg, mtmp, tee, 0x0C, 30, 2);
-+
-+#define MLXSW_REG_MTMP_THRESH_HI 0x348 /* 105 Celsius */
-+
-+/* reg_mtmp_temperature_threshold_hi
-+ * High threshold for Temperature Warning Event. In 0.125 Celsius.
-+ * Access: RW
-+ */
-+MLXSW_ITEM32(reg, mtmp, temperature_threshold_hi, 0x0C, 0, 16);
-+
-+/* reg_mtmp_temperature_threshold_lo
-+ * Low threshold for Temperature Warning Event. In 0.125 Celsius.
-+ * Access: RW
-+ */
-+MLXSW_ITEM32(reg, mtmp, temperature_threshold_lo, 0x10, 0, 16);
-+
- #define MLXSW_REG_MTMP_SENSOR_NAME_SIZE 8
-
- /* reg_mtmp_sensor_name
-@@ -5843,6 +5866,8 @@ static inline void mlxsw_reg_mtmp_pack(char *payload, u8 sensor_index,
- mlxsw_reg_mtmp_sensor_index_set(payload, sensor_index);
- mlxsw_reg_mtmp_mte_set(payload, max_temp_enable);
- mlxsw_reg_mtmp_mtr_set(payload, max_temp_reset);
-+ mlxsw_reg_mtmp_temperature_threshold_hi_set(payload,
-+ MLXSW_REG_MTMP_THRESH_HI);
- }
-
- static inline void mlxsw_reg_mtmp_unpack(char *payload, unsigned int *p_temp,
diff --git a/no-pcspkr-modalias.patch b/no-pcspkr-modalias.patch
index e43cd97eb..2ccd87202 100644
--- a/no-pcspkr-modalias.patch
+++ b/no-pcspkr-modalias.patch
@@ -9,7 +9,7 @@ Upstream-status: Fedora mustard
1 file changed, 1 deletion(-)
diff --git a/drivers/input/misc/pcspkr.c b/drivers/input/misc/pcspkr.c
-index 72b1fc3ab910..86907eaa4883 100644
+index 56ddba21de84..23534f420e68 100644
--- a/drivers/input/misc/pcspkr.c
+++ b/drivers/input/misc/pcspkr.c
@@ -23,7 +23,6 @@
@@ -17,6 +17,6 @@ index 72b1fc3ab910..86907eaa4883 100644
MODULE_DESCRIPTION("PC Speaker beeper driver");
MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:pcspkr");
-
- static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
- {
+
+ static int pcspkr_event(struct input_dev *dev, unsigned int type,
+ unsigned int code, int value)
diff --git a/pci-mark-amd-stoney-gpu-ats-as-broken.patch b/pci-mark-amd-stoney-gpu-ats-as-broken.patch
deleted file mode 100644
index 167c40223..000000000
--- a/pci-mark-amd-stoney-gpu-ats-as-broken.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 9b44b0b09decfbe388131a345ba780c57240a7a9 Mon Sep 17 00:00:00 2001
-From: Joerg Roedel <jroedel@suse.de>
-Date: Tue, 11 Jul 2017 15:48:00 -0500
-Subject: PCI: Mark AMD Stoney GPU ATS as broken
-
-ATS is broken on this hardware and causes IOMMU stalls and system failure.
-Disable ATS on these devices to make them usable again with IOMMU enabled.
-
-Note that the commit in the Fixes tag is not buggy; it just uncovers the
-problem in the hardware by increasing the ATS flush rate.
-
-Link: https://lists.linuxfoundation.org/pipermail/iommu/2017-March/020836.html
-Link: https://bugzilla.redhat.com/show_bug.cgi?id=1409201
-Fixes: b1516a14657a ("iommu/amd: Implement flush queue")
-Signed-off-by: Joerg Roedel <jroedel@suse.de>
-Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-Acked-by: Alex Deucher <alexander.deucher@amd.com>
----
- drivers/pci/quirks.c | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index 6967c6b..15ee4e9 100644
---- a/drivers/pci/quirks.c
-+++ b/drivers/pci/quirks.c
-@@ -4681,3 +4681,18 @@ static void quirk_intel_no_flr(struct pci_dev *dev)
- }
- DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_intel_no_flr);
- DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_intel_no_flr);
-+
-+#ifdef CONFIG_PCI_ATS
-+/*
-+ * Some devices have a broken ATS implementation causing IOMMU stalls.
-+ * Don't use ATS for those devices.
-+ */
-+static void quirk_no_ats(struct pci_dev *pdev)
-+{
-+ dev_info(&pdev->dev, "disabling ATS (broken on this device)\n");
-+ pdev->ats_cap = 0;
-+}
-+
-+/* AMD Stoney platform GPU */
-+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x98e4, quirk_no_ats);
-+#endif /* CONFIG_PCI_ATS */
---
-cgit v1.1
-
diff --git a/qcom-Force-host-mode-for-USB-on-apq8016-sbc.patch b/qcom-Force-host-mode-for-USB-on-apq8016-sbc.patch
deleted file mode 100644
index 4932539a3..000000000
--- a/qcom-Force-host-mode-for-USB-on-apq8016-sbc.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From patchwork Fri Jul 14 02:20:42 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [v2] arm64: dts: qcom: Force host mode for USB on apq8016-sbc
-From: Stephen Boyd <sboyd@codeaurora.org>
-X-Patchwork-Id: 9839803
-Message-Id: <20170714022042.13886-1-sboyd@codeaurora.org>
-To: Andy Gross <andy.gross@linaro.org>
-Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
- linux-arm-kernel@lists.infradead.org, Rob Clark <robdclark@gmail.com>
-Date: Thu, 13 Jul 2017 19:20:42 -0700
-
-Commit ed75d6a96905 ("arm64: dts: qcom: Collapse usb support into
-one node") breaks host mode support on apq8016-sbc boards. This
-is because the mux driver (tc7usb40mu) hasn't been merged.
-Without that driver, we can't toggle the GPIO going to the mux to
-route out the D+/D- lines to the USB hub that's on the board.
-
-One solution would be to totally revert this change, but that
-opens us up to other problems when two USB drivers are operating
-the same hardware block at the same time. Let's modify the DT so
-that the USB controller is always in host mode and connected to
-the hub so that things like USB keyboards and mouses work. This
-is the mode that most people prefer anyway with these devices. We
-also delete the usb-switch node because the binding was never
-accepted upstream.
-
-In the future, we can add muxing support and then update the DT
-to support both modes at runtime. Patches to support this are
-already on the mailing list.
-
-Fixes: ed75d6a96905 ("arm64: dts: qcom: Collapse usb support into one node")
-Reported-by: Rob Clark <robdclark@gmail.com>
-Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
----
-
-I noticed that I accidently removed the vbus notifier part of the phy.
-Without it, we'll change settings that shouldn't changed. The thing
-that we don't have is the ID pin on this board, not the vbus. That's
-the only difference from v1.
-
- arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi | 1 +
- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 13 ++++---------
- 2 files changed, 5 insertions(+), 9 deletions(-)
-
-diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
-index d94640812194..790b7775b901 100644
---- a/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
-+++ b/arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
-@@ -17,6 +17,7 @@
- function = PMIC_GPIO_FUNC_NORMAL;
- power-source = <PM8916_GPIO_VPH>;
- input-disable;
-+ output-high;
- };
- };
-
-diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
-index bd310ac1967a..bb9e29e6b164 100644
---- a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
-+++ b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
-@@ -213,11 +213,14 @@
- };
-
- usb@78d9000 {
-- extcon = <&usb_id>, <&usb_id>;
-+ extcon = <&usb_id>;
- status = "okay";
- adp-disable;
- hnp-disable;
- srp-disable;
-+ dr_mode = "host";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&usb_sw_sel_pm>;
- ulpi {
- phy {
- v1p8-supply = <&pm8916_l7>;
-@@ -342,14 +345,6 @@
- pinctrl-0 = <&usb_id_default>;
- };
-
-- usb-switch {
-- compatible = "toshiba,tc7usb40mu";
-- switch-gpios = <&pm8916_gpios 4 GPIO_ACTIVE_HIGH>;
-- extcon = <&usb_id>;
-- pinctrl-names = "default";
-- pinctrl-0 = <&usb_sw_sel_pm>;
-- };
--
- hdmi-out {
- compatible = "hdmi-connector";
- type = "a";
diff --git a/qcom-clk-gpu-msm.patch b/qcom-clk-gpu-msm.patch
deleted file mode 100644
index 657995d47..000000000
--- a/qcom-clk-gpu-msm.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From cf866c6ef2e421b5563ab34c04dd4b07be5aa013 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Sat, 7 Oct 2017 10:11:39 +0100
-Subject: [PATCH] hack for bus clk
-
-Turn it up to 11!
----
- drivers/gpu/drm/msm/msm_gpu.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
-index 9f3dbc236ab3..75acdda496b5 100644
---- a/drivers/gpu/drm/msm/msm_gpu.c
-+++ b/drivers/gpu/drm/msm/msm_gpu.c
-@@ -93,6 +93,9 @@ static int enable_clk(struct msm_gpu *gpu)
- {
- int i;
-
-+ if (gpu->grp_clks[4])
-+ clk_set_rate(gpu->grp_clks[4], INT_MAX);
-+
- if (gpu->core_clk && gpu->fast_rate)
- clk_set_rate(gpu->core_clk, gpu->fast_rate);
-
---
-2.14.2
-
diff --git a/qcom-display-iommu.patch b/qcom-display-iommu.patch
deleted file mode 100644
index 87d4473c8..000000000
--- a/qcom-display-iommu.patch
+++ /dev/null
@@ -1,1960 +0,0 @@
-From patchwork Thu Jul 13 12:07:44 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [RESEND,1/4] Docs: dt: document qcom iommu bindings
-From: Rob Clark <robdclark@gmail.com>
-X-Patchwork-Id: 9838369
-Message-Id: <20170713120747.20490-2-robdclark@gmail.com>
-To: iommu@lists.linux-foundation.org
-Cc: linux-arm-msm@vger.kernel.org, Archit Taneja <architt@codeaurora.org>,
- Rob Herring <robh@kernel.org>, Will Deacon <will.deacon@arm.com>,
- Sricharan <sricharan@codeaurora.org>,
- Mark Rutland <mark.rutland@arm.com>, Robin Murphy <robin.murphy@arm.com>,
- Rob Clark <robdclark@gmail.com>, devicetree@vger.kernel.org
-Date: Thu, 13 Jul 2017 08:07:44 -0400
-
-Cc: devicetree@vger.kernel.org
-Signed-off-by: Rob Clark <robdclark@gmail.com>
-Reviewed-by: Rob Herring <robh@kernel.org>
----
- .../devicetree/bindings/iommu/qcom,iommu.txt | 121 +++++++++++++++++++++
- 1 file changed, 121 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/iommu/qcom,iommu.txt
-
-diff --git a/Documentation/devicetree/bindings/iommu/qcom,iommu.txt b/Documentation/devicetree/bindings/iommu/qcom,iommu.txt
-new file mode 100644
-index 000000000000..b2641ceb2b40
---- /dev/null
-+++ b/Documentation/devicetree/bindings/iommu/qcom,iommu.txt
-@@ -0,0 +1,121 @@
-+* QCOM IOMMU v1 Implementation
-+
-+Qualcomm "B" family devices which are not compatible with arm-smmu have
-+a similar looking IOMMU but without access to the global register space,
-+and optionally requiring additional configuration to route context irqs
-+to non-secure vs secure interrupt line.
-+
-+** Required properties:
-+
-+- compatible : Should be one of:
-+
-+ "qcom,msm8916-iommu"
-+
-+ Followed by "qcom,msm-iommu-v1".
-+
-+- clock-names : Should be a pair of "iface" (required for IOMMUs
-+ register group access) and "bus" (required for
-+ the IOMMUs underlying bus access).
-+
-+- clocks : Phandles for respective clocks described by
-+ clock-names.
-+
-+- #address-cells : must be 1.
-+
-+- #size-cells : must be 1.
-+
-+- #iommu-cells : Must be 1. Index identifies the context-bank #.
-+
-+- ranges : Base address and size of the iommu context banks.
-+
-+- qcom,iommu-secure-id : secure-id.
-+
-+- List of sub-nodes, one per translation context bank. Each sub-node
-+ has the following required properties:
-+
-+ - compatible : Should be one of:
-+ - "qcom,msm-iommu-v1-ns" : non-secure context bank
-+ - "qcom,msm-iommu-v1-sec" : secure context bank
-+ - reg : Base address and size of context bank within the iommu
-+ - interrupts : The context fault irq.
-+
-+** Optional properties:
-+
-+- reg : Base address and size of the SMMU local base, should
-+ be only specified if the iommu requires configuration
-+ for routing of context bank irq's to secure vs non-
-+ secure lines. (Ie. if the iommu contains secure
-+ context banks)
-+
-+
-+** Examples:
-+
-+ apps_iommu: iommu@1e20000 {
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+ #iommu-cells = <1>;
-+ compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
-+ ranges = <0 0x1e20000 0x40000>;
-+ reg = <0x1ef0000 0x3000>;
-+ clocks = <&gcc GCC_SMMU_CFG_CLK>,
-+ <&gcc GCC_APSS_TCU_CLK>;
-+ clock-names = "iface", "bus";
-+ qcom,iommu-secure-id = <17>;
-+
-+ // mdp_0:
-+ iommu-ctx@4000 {
-+ compatible = "qcom,msm-iommu-v1-ns";
-+ reg = <0x4000 0x1000>;
-+ interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
-+ };
-+
-+ // venus_ns:
-+ iommu-ctx@5000 {
-+ compatible = "qcom,msm-iommu-v1-sec";
-+ reg = <0x5000 0x1000>;
-+ interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
-+ };
-+ };
-+
-+ gpu_iommu: iommu@1f08000 {
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+ #iommu-cells = <1>;
-+ compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
-+ ranges = <0 0x1f08000 0x10000>;
-+ clocks = <&gcc GCC_SMMU_CFG_CLK>,
-+ <&gcc GCC_GFX_TCU_CLK>;
-+ clock-names = "iface", "bus";
-+ qcom,iommu-secure-id = <18>;
-+
-+ // gfx3d_user:
-+ iommu-ctx@1000 {
-+ compatible = "qcom,msm-iommu-v1-ns";
-+ reg = <0x1000 0x1000>;
-+ interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
-+ };
-+
-+ // gfx3d_priv:
-+ iommu-ctx@2000 {
-+ compatible = "qcom,msm-iommu-v1-ns";
-+ reg = <0x2000 0x1000>;
-+ interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
-+ };
-+ };
-+
-+ ...
-+
-+ venus: video-codec@1d00000 {
-+ ...
-+ iommus = <&apps_iommu 5>;
-+ };
-+
-+ mdp: mdp@1a01000 {
-+ ...
-+ iommus = <&apps_iommu 4>;
-+ };
-+
-+ gpu@01c00000 {
-+ ...
-+ iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
-+ };
-From patchwork Thu Jul 13 12:07:45 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [RESEND,2/4] iommu: arm-smmu: split out register defines
-From: Rob Clark <robdclark@gmail.com>
-X-Patchwork-Id: 9838371
-Message-Id: <20170713120747.20490-3-robdclark@gmail.com>
-To: iommu@lists.linux-foundation.org
-Cc: linux-arm-msm@vger.kernel.org, Archit Taneja <architt@codeaurora.org>,
- Rob Herring <robh@kernel.org>, Will Deacon <will.deacon@arm.com>,
- Sricharan <sricharan@codeaurora.org>,
- Mark Rutland <mark.rutland@arm.com>, Robin Murphy <robin.murphy@arm.com>,
- Rob Clark <robdclark@gmail.com>
-Date: Thu, 13 Jul 2017 08:07:45 -0400
-
-I want to re-use some of these for qcom_iommu, which has (roughly) the
-same context-bank registers.
-
-Signed-off-by: Rob Clark <robdclark@gmail.com>
----
- drivers/iommu/arm-smmu-regs.h | 227 ++++++++++++++++++++++++++++++++++++++++++
- drivers/iommu/arm-smmu.c | 203 +------------------------------------
- 2 files changed, 228 insertions(+), 202 deletions(-)
- create mode 100644 drivers/iommu/arm-smmu-regs.h
-
-diff --git a/drivers/iommu/arm-smmu-regs.h b/drivers/iommu/arm-smmu-regs.h
-new file mode 100644
-index 000000000000..87589c863068
---- /dev/null
-+++ b/drivers/iommu/arm-smmu-regs.h
-@@ -0,0 +1,227 @@
-+/*
-+ * IOMMU API for ARM architected SMMU implementations.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * Copyright (C) 2013 ARM Limited
-+ *
-+ * Author: Will Deacon <will.deacon@arm.com>
-+ */
-+
-+#ifndef _ARM_SMMU_REGS_H
-+#define _ARM_SMMU_REGS_H
-+
-+/* Configuration registers */
-+#define ARM_SMMU_GR0_sCR0 0x0
-+#define sCR0_CLIENTPD (1 << 0)
-+#define sCR0_GFRE (1 << 1)
-+#define sCR0_GFIE (1 << 2)
-+#define sCR0_EXIDENABLE (1 << 3)
-+#define sCR0_GCFGFRE (1 << 4)
-+#define sCR0_GCFGFIE (1 << 5)
-+#define sCR0_USFCFG (1 << 10)
-+#define sCR0_VMIDPNE (1 << 11)
-+#define sCR0_PTM (1 << 12)
-+#define sCR0_FB (1 << 13)
-+#define sCR0_VMID16EN (1 << 31)
-+#define sCR0_BSU_SHIFT 14
-+#define sCR0_BSU_MASK 0x3
-+
-+/* Auxiliary Configuration register */
-+#define ARM_SMMU_GR0_sACR 0x10
-+
-+/* Identification registers */
-+#define ARM_SMMU_GR0_ID0 0x20
-+#define ARM_SMMU_GR0_ID1 0x24
-+#define ARM_SMMU_GR0_ID2 0x28
-+#define ARM_SMMU_GR0_ID3 0x2c
-+#define ARM_SMMU_GR0_ID4 0x30
-+#define ARM_SMMU_GR0_ID5 0x34
-+#define ARM_SMMU_GR0_ID6 0x38
-+#define ARM_SMMU_GR0_ID7 0x3c
-+#define ARM_SMMU_GR0_sGFSR 0x48
-+#define ARM_SMMU_GR0_sGFSYNR0 0x50
-+#define ARM_SMMU_GR0_sGFSYNR1 0x54
-+#define ARM_SMMU_GR0_sGFSYNR2 0x58
-+
-+#define ID0_S1TS (1 << 30)
-+#define ID0_S2TS (1 << 29)
-+#define ID0_NTS (1 << 28)
-+#define ID0_SMS (1 << 27)
-+#define ID0_ATOSNS (1 << 26)
-+#define ID0_PTFS_NO_AARCH32 (1 << 25)
-+#define ID0_PTFS_NO_AARCH32S (1 << 24)
-+#define ID0_CTTW (1 << 14)
-+#define ID0_NUMIRPT_SHIFT 16
-+#define ID0_NUMIRPT_MASK 0xff
-+#define ID0_NUMSIDB_SHIFT 9
-+#define ID0_NUMSIDB_MASK 0xf
-+#define ID0_EXIDS (1 << 8)
-+#define ID0_NUMSMRG_SHIFT 0
-+#define ID0_NUMSMRG_MASK 0xff
-+
-+#define ID1_PAGESIZE (1 << 31)
-+#define ID1_NUMPAGENDXB_SHIFT 28
-+#define ID1_NUMPAGENDXB_MASK 7
-+#define ID1_NUMS2CB_SHIFT 16
-+#define ID1_NUMS2CB_MASK 0xff
-+#define ID1_NUMCB_SHIFT 0
-+#define ID1_NUMCB_MASK 0xff
-+
-+#define ID2_OAS_SHIFT 4
-+#define ID2_OAS_MASK 0xf
-+#define ID2_IAS_SHIFT 0
-+#define ID2_IAS_MASK 0xf
-+#define ID2_UBS_SHIFT 8
-+#define ID2_UBS_MASK 0xf
-+#define ID2_PTFS_4K (1 << 12)
-+#define ID2_PTFS_16K (1 << 13)
-+#define ID2_PTFS_64K (1 << 14)
-+#define ID2_VMID16 (1 << 15)
-+
-+#define ID7_MAJOR_SHIFT 4
-+#define ID7_MAJOR_MASK 0xf
-+
-+/* Global TLB invalidation */
-+#define ARM_SMMU_GR0_TLBIVMID 0x64
-+#define ARM_SMMU_GR0_TLBIALLNSNH 0x68
-+#define ARM_SMMU_GR0_TLBIALLH 0x6c
-+#define ARM_SMMU_GR0_sTLBGSYNC 0x70
-+#define ARM_SMMU_GR0_sTLBGSTATUS 0x74
-+#define sTLBGSTATUS_GSACTIVE (1 << 0)
-+#define TLB_LOOP_TIMEOUT 1000000 /* 1s! */
-+#define TLB_SPIN_COUNT 10
-+
-+/* Stream mapping registers */
-+#define ARM_SMMU_GR0_SMR(n) (0x800 + ((n) << 2))
-+#define SMR_VALID (1 << 31)
-+#define SMR_MASK_SHIFT 16
-+#define SMR_ID_SHIFT 0
-+
-+#define ARM_SMMU_GR0_S2CR(n) (0xc00 + ((n) << 2))
-+#define S2CR_CBNDX_SHIFT 0
-+#define S2CR_CBNDX_MASK 0xff
-+#define S2CR_EXIDVALID (1 << 10)
-+#define S2CR_TYPE_SHIFT 16
-+#define S2CR_TYPE_MASK 0x3
-+enum arm_smmu_s2cr_type {
-+ S2CR_TYPE_TRANS,
-+ S2CR_TYPE_BYPASS,
-+ S2CR_TYPE_FAULT,
-+};
-+
-+#define S2CR_PRIVCFG_SHIFT 24
-+#define S2CR_PRIVCFG_MASK 0x3
-+enum arm_smmu_s2cr_privcfg {
-+ S2CR_PRIVCFG_DEFAULT,
-+ S2CR_PRIVCFG_DIPAN,
-+ S2CR_PRIVCFG_UNPRIV,
-+ S2CR_PRIVCFG_PRIV,
-+};
-+
-+/* Context bank attribute registers */
-+#define ARM_SMMU_GR1_CBAR(n) (0x0 + ((n) << 2))
-+#define CBAR_VMID_SHIFT 0
-+#define CBAR_VMID_MASK 0xff
-+#define CBAR_S1_BPSHCFG_SHIFT 8
-+#define CBAR_S1_BPSHCFG_MASK 3
-+#define CBAR_S1_BPSHCFG_NSH 3
-+#define CBAR_S1_MEMATTR_SHIFT 12
-+#define CBAR_S1_MEMATTR_MASK 0xf
-+#define CBAR_S1_MEMATTR_WB 0xf
-+#define CBAR_TYPE_SHIFT 16
-+#define CBAR_TYPE_MASK 0x3
-+#define CBAR_TYPE_S2_TRANS (0 << CBAR_TYPE_SHIFT)
-+#define CBAR_TYPE_S1_TRANS_S2_BYPASS (1 << CBAR_TYPE_SHIFT)
-+#define CBAR_TYPE_S1_TRANS_S2_FAULT (2 << CBAR_TYPE_SHIFT)
-+#define CBAR_TYPE_S1_TRANS_S2_TRANS (3 << CBAR_TYPE_SHIFT)
-+#define CBAR_IRPTNDX_SHIFT 24
-+#define CBAR_IRPTNDX_MASK 0xff
-+
-+#define ARM_SMMU_GR1_CBA2R(n) (0x800 + ((n) << 2))
-+#define CBA2R_RW64_32BIT (0 << 0)
-+#define CBA2R_RW64_64BIT (1 << 0)
-+#define CBA2R_VMID_SHIFT 16
-+#define CBA2R_VMID_MASK 0xffff
-+
-+#define ARM_SMMU_CB_SCTLR 0x0
-+#define ARM_SMMU_CB_ACTLR 0x4
-+#define ARM_SMMU_CB_RESUME 0x8
-+#define ARM_SMMU_CB_TTBCR2 0x10
-+#define ARM_SMMU_CB_TTBR0 0x20
-+#define ARM_SMMU_CB_TTBR1 0x28
-+#define ARM_SMMU_CB_TTBCR 0x30
-+#define ARM_SMMU_CB_CONTEXTIDR 0x34
-+#define ARM_SMMU_CB_S1_MAIR0 0x38
-+#define ARM_SMMU_CB_S1_MAIR1 0x3c
-+#define ARM_SMMU_CB_PAR 0x50
-+#define ARM_SMMU_CB_FSR 0x58
-+#define ARM_SMMU_CB_FAR 0x60
-+#define ARM_SMMU_CB_FSYNR0 0x68
-+#define ARM_SMMU_CB_S1_TLBIVA 0x600
-+#define ARM_SMMU_CB_S1_TLBIASID 0x610
-+#define ARM_SMMU_CB_S1_TLBIVAL 0x620
-+#define ARM_SMMU_CB_S2_TLBIIPAS2 0x630
-+#define ARM_SMMU_CB_S2_TLBIIPAS2L 0x638
-+#define ARM_SMMU_CB_TLBSYNC 0x7f0
-+#define ARM_SMMU_CB_TLBSTATUS 0x7f4
-+#define ARM_SMMU_CB_ATS1PR 0x800
-+#define ARM_SMMU_CB_ATSR 0x8f0
-+
-+#define SCTLR_S1_ASIDPNE (1 << 12)
-+#define SCTLR_CFCFG (1 << 7)
-+#define SCTLR_CFIE (1 << 6)
-+#define SCTLR_CFRE (1 << 5)
-+#define SCTLR_E (1 << 4)
-+#define SCTLR_AFE (1 << 2)
-+#define SCTLR_TRE (1 << 1)
-+#define SCTLR_M (1 << 0)
-+
-+#define ARM_MMU500_ACTLR_CPRE (1 << 1)
-+
-+#define ARM_MMU500_ACR_CACHE_LOCK (1 << 26)
-+#define ARM_MMU500_ACR_SMTNMB_TLBEN (1 << 8)
-+
-+#define CB_PAR_F (1 << 0)
-+
-+#define ATSR_ACTIVE (1 << 0)
-+
-+#define RESUME_RETRY (0 << 0)
-+#define RESUME_TERMINATE (1 << 0)
-+
-+#define TTBCR2_SEP_SHIFT 15
-+#define TTBCR2_SEP_UPSTREAM (0x7 << TTBCR2_SEP_SHIFT)
-+#define TTBCR2_AS (1 << 4)
-+
-+#define TTBRn_ASID_SHIFT 48
-+
-+#define FSR_MULTI (1 << 31)
-+#define FSR_SS (1 << 30)
-+#define FSR_UUT (1 << 8)
-+#define FSR_ASF (1 << 7)
-+#define FSR_TLBLKF (1 << 6)
-+#define FSR_TLBMCF (1 << 5)
-+#define FSR_EF (1 << 4)
-+#define FSR_PF (1 << 3)
-+#define FSR_AFF (1 << 2)
-+#define FSR_TF (1 << 1)
-+
-+#define FSR_IGN (FSR_AFF | FSR_ASF | \
-+ FSR_TLBMCF | FSR_TLBLKF)
-+#define FSR_FAULT (FSR_MULTI | FSR_SS | FSR_UUT | \
-+ FSR_EF | FSR_PF | FSR_TF | FSR_IGN)
-+
-+#define FSYNR0_WNR (1 << 4)
-+
-+#endif /* _ARM_SMMU_REGS_H */
-diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
-index 7ec30b08b3bd..ca9c20f915a8 100644
---- a/drivers/iommu/arm-smmu.c
-+++ b/drivers/iommu/arm-smmu.c
-@@ -54,6 +54,7 @@
- #include <linux/amba/bus.h>
-
- #include "io-pgtable.h"
-+#include "arm-smmu-regs.h"
-
- /* Maximum number of context banks per SMMU */
- #define ARM_SMMU_MAX_CBS 128
-@@ -83,211 +84,9 @@
- #define smmu_write_atomic_lq writel_relaxed
- #endif
-
--/* Configuration registers */
--#define ARM_SMMU_GR0_sCR0 0x0
--#define sCR0_CLIENTPD (1 << 0)
--#define sCR0_GFRE (1 << 1)
--#define sCR0_GFIE (1 << 2)
--#define sCR0_EXIDENABLE (1 << 3)
--#define sCR0_GCFGFRE (1 << 4)
--#define sCR0_GCFGFIE (1 << 5)
--#define sCR0_USFCFG (1 << 10)
--#define sCR0_VMIDPNE (1 << 11)
--#define sCR0_PTM (1 << 12)
--#define sCR0_FB (1 << 13)
--#define sCR0_VMID16EN (1 << 31)
--#define sCR0_BSU_SHIFT 14
--#define sCR0_BSU_MASK 0x3
--
--/* Auxiliary Configuration register */
--#define ARM_SMMU_GR0_sACR 0x10
--
--/* Identification registers */
--#define ARM_SMMU_GR0_ID0 0x20
--#define ARM_SMMU_GR0_ID1 0x24
--#define ARM_SMMU_GR0_ID2 0x28
--#define ARM_SMMU_GR0_ID3 0x2c
--#define ARM_SMMU_GR0_ID4 0x30
--#define ARM_SMMU_GR0_ID5 0x34
--#define ARM_SMMU_GR0_ID6 0x38
--#define ARM_SMMU_GR0_ID7 0x3c
--#define ARM_SMMU_GR0_sGFSR 0x48
--#define ARM_SMMU_GR0_sGFSYNR0 0x50
--#define ARM_SMMU_GR0_sGFSYNR1 0x54
--#define ARM_SMMU_GR0_sGFSYNR2 0x58
--
--#define ID0_S1TS (1 << 30)
--#define ID0_S2TS (1 << 29)
--#define ID0_NTS (1 << 28)
--#define ID0_SMS (1 << 27)
--#define ID0_ATOSNS (1 << 26)
--#define ID0_PTFS_NO_AARCH32 (1 << 25)
--#define ID0_PTFS_NO_AARCH32S (1 << 24)
--#define ID0_CTTW (1 << 14)
--#define ID0_NUMIRPT_SHIFT 16
--#define ID0_NUMIRPT_MASK 0xff
--#define ID0_NUMSIDB_SHIFT 9
--#define ID0_NUMSIDB_MASK 0xf
--#define ID0_EXIDS (1 << 8)
--#define ID0_NUMSMRG_SHIFT 0
--#define ID0_NUMSMRG_MASK 0xff
--
--#define ID1_PAGESIZE (1 << 31)
--#define ID1_NUMPAGENDXB_SHIFT 28
--#define ID1_NUMPAGENDXB_MASK 7
--#define ID1_NUMS2CB_SHIFT 16
--#define ID1_NUMS2CB_MASK 0xff
--#define ID1_NUMCB_SHIFT 0
--#define ID1_NUMCB_MASK 0xff
--
--#define ID2_OAS_SHIFT 4
--#define ID2_OAS_MASK 0xf
--#define ID2_IAS_SHIFT 0
--#define ID2_IAS_MASK 0xf
--#define ID2_UBS_SHIFT 8
--#define ID2_UBS_MASK 0xf
--#define ID2_PTFS_4K (1 << 12)
--#define ID2_PTFS_16K (1 << 13)
--#define ID2_PTFS_64K (1 << 14)
--#define ID2_VMID16 (1 << 15)
--
--#define ID7_MAJOR_SHIFT 4
--#define ID7_MAJOR_MASK 0xf
--
--/* Global TLB invalidation */
--#define ARM_SMMU_GR0_TLBIVMID 0x64
--#define ARM_SMMU_GR0_TLBIALLNSNH 0x68
--#define ARM_SMMU_GR0_TLBIALLH 0x6c
--#define ARM_SMMU_GR0_sTLBGSYNC 0x70
--#define ARM_SMMU_GR0_sTLBGSTATUS 0x74
--#define sTLBGSTATUS_GSACTIVE (1 << 0)
--#define TLB_LOOP_TIMEOUT 1000000 /* 1s! */
--#define TLB_SPIN_COUNT 10
--
--/* Stream mapping registers */
--#define ARM_SMMU_GR0_SMR(n) (0x800 + ((n) << 2))
--#define SMR_VALID (1 << 31)
--#define SMR_MASK_SHIFT 16
--#define SMR_ID_SHIFT 0
--
--#define ARM_SMMU_GR0_S2CR(n) (0xc00 + ((n) << 2))
--#define S2CR_CBNDX_SHIFT 0
--#define S2CR_CBNDX_MASK 0xff
--#define S2CR_EXIDVALID (1 << 10)
--#define S2CR_TYPE_SHIFT 16
--#define S2CR_TYPE_MASK 0x3
--enum arm_smmu_s2cr_type {
-- S2CR_TYPE_TRANS,
-- S2CR_TYPE_BYPASS,
-- S2CR_TYPE_FAULT,
--};
--
--#define S2CR_PRIVCFG_SHIFT 24
--#define S2CR_PRIVCFG_MASK 0x3
--enum arm_smmu_s2cr_privcfg {
-- S2CR_PRIVCFG_DEFAULT,
-- S2CR_PRIVCFG_DIPAN,
-- S2CR_PRIVCFG_UNPRIV,
-- S2CR_PRIVCFG_PRIV,
--};
--
--/* Context bank attribute registers */
--#define ARM_SMMU_GR1_CBAR(n) (0x0 + ((n) << 2))
--#define CBAR_VMID_SHIFT 0
--#define CBAR_VMID_MASK 0xff
--#define CBAR_S1_BPSHCFG_SHIFT 8
--#define CBAR_S1_BPSHCFG_MASK 3
--#define CBAR_S1_BPSHCFG_NSH 3
--#define CBAR_S1_MEMATTR_SHIFT 12
--#define CBAR_S1_MEMATTR_MASK 0xf
--#define CBAR_S1_MEMATTR_WB 0xf
--#define CBAR_TYPE_SHIFT 16
--#define CBAR_TYPE_MASK 0x3
--#define CBAR_TYPE_S2_TRANS (0 << CBAR_TYPE_SHIFT)
--#define CBAR_TYPE_S1_TRANS_S2_BYPASS (1 << CBAR_TYPE_SHIFT)
--#define CBAR_TYPE_S1_TRANS_S2_FAULT (2 << CBAR_TYPE_SHIFT)
--#define CBAR_TYPE_S1_TRANS_S2_TRANS (3 << CBAR_TYPE_SHIFT)
--#define CBAR_IRPTNDX_SHIFT 24
--#define CBAR_IRPTNDX_MASK 0xff
--
--#define ARM_SMMU_GR1_CBA2R(n) (0x800 + ((n) << 2))
--#define CBA2R_RW64_32BIT (0 << 0)
--#define CBA2R_RW64_64BIT (1 << 0)
--#define CBA2R_VMID_SHIFT 16
--#define CBA2R_VMID_MASK 0xffff
--
- /* Translation context bank */
- #define ARM_SMMU_CB(smmu, n) ((smmu)->cb_base + ((n) << (smmu)->pgshift))
-
--#define ARM_SMMU_CB_SCTLR 0x0
--#define ARM_SMMU_CB_ACTLR 0x4
--#define ARM_SMMU_CB_RESUME 0x8
--#define ARM_SMMU_CB_TTBCR2 0x10
--#define ARM_SMMU_CB_TTBR0 0x20
--#define ARM_SMMU_CB_TTBR1 0x28
--#define ARM_SMMU_CB_TTBCR 0x30
--#define ARM_SMMU_CB_CONTEXTIDR 0x34
--#define ARM_SMMU_CB_S1_MAIR0 0x38
--#define ARM_SMMU_CB_S1_MAIR1 0x3c
--#define ARM_SMMU_CB_PAR 0x50
--#define ARM_SMMU_CB_FSR 0x58
--#define ARM_SMMU_CB_FAR 0x60
--#define ARM_SMMU_CB_FSYNR0 0x68
--#define ARM_SMMU_CB_S1_TLBIVA 0x600
--#define ARM_SMMU_CB_S1_TLBIASID 0x610
--#define ARM_SMMU_CB_S1_TLBIVAL 0x620
--#define ARM_SMMU_CB_S2_TLBIIPAS2 0x630
--#define ARM_SMMU_CB_S2_TLBIIPAS2L 0x638
--#define ARM_SMMU_CB_TLBSYNC 0x7f0
--#define ARM_SMMU_CB_TLBSTATUS 0x7f4
--#define ARM_SMMU_CB_ATS1PR 0x800
--#define ARM_SMMU_CB_ATSR 0x8f0
--
--#define SCTLR_S1_ASIDPNE (1 << 12)
--#define SCTLR_CFCFG (1 << 7)
--#define SCTLR_CFIE (1 << 6)
--#define SCTLR_CFRE (1 << 5)
--#define SCTLR_E (1 << 4)
--#define SCTLR_AFE (1 << 2)
--#define SCTLR_TRE (1 << 1)
--#define SCTLR_M (1 << 0)
--
--#define ARM_MMU500_ACTLR_CPRE (1 << 1)
--
--#define ARM_MMU500_ACR_CACHE_LOCK (1 << 26)
--#define ARM_MMU500_ACR_SMTNMB_TLBEN (1 << 8)
--
--#define CB_PAR_F (1 << 0)
--
--#define ATSR_ACTIVE (1 << 0)
--
--#define RESUME_RETRY (0 << 0)
--#define RESUME_TERMINATE (1 << 0)
--
--#define TTBCR2_SEP_SHIFT 15
--#define TTBCR2_SEP_UPSTREAM (0x7 << TTBCR2_SEP_SHIFT)
--#define TTBCR2_AS (1 << 4)
--
--#define TTBRn_ASID_SHIFT 48
--
--#define FSR_MULTI (1 << 31)
--#define FSR_SS (1 << 30)
--#define FSR_UUT (1 << 8)
--#define FSR_ASF (1 << 7)
--#define FSR_TLBLKF (1 << 6)
--#define FSR_TLBMCF (1 << 5)
--#define FSR_EF (1 << 4)
--#define FSR_PF (1 << 3)
--#define FSR_AFF (1 << 2)
--#define FSR_TF (1 << 1)
--
--#define FSR_IGN (FSR_AFF | FSR_ASF | \
-- FSR_TLBMCF | FSR_TLBLKF)
--#define FSR_FAULT (FSR_MULTI | FSR_SS | FSR_UUT | \
-- FSR_EF | FSR_PF | FSR_TF | FSR_IGN)
--
--#define FSYNR0_WNR (1 << 4)
--
- #define MSI_IOVA_BASE 0x8000000
- #define MSI_IOVA_LENGTH 0x100000
-
-From patchwork Thu Jul 13 12:07:46 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [RESEND,3/4] iommu: add qcom_iommu
-From: Rob Clark <robdclark@gmail.com>
-X-Patchwork-Id: 9838375
-Message-Id: <20170713120747.20490-4-robdclark@gmail.com>
-To: iommu@lists.linux-foundation.org
-Cc: linux-arm-msm@vger.kernel.org, Archit Taneja <architt@codeaurora.org>,
- Rob Herring <robh@kernel.org>, Will Deacon <will.deacon@arm.com>,
- Sricharan <sricharan@codeaurora.org>,
- Mark Rutland <mark.rutland@arm.com>, Robin Murphy <robin.murphy@arm.com>,
- Rob Clark <robdclark@gmail.com>
-Date: Thu, 13 Jul 2017 08:07:46 -0400
-
-An iommu driver for Qualcomm "B" family devices which do implement the
-ARM SMMU spec, but not in a way that is compatible with how the arm-smmu
-driver is designed. It seems SMMU_SCR1.GASRAE=1 so the global register
-space is not accessible. This means it needs to get configuration from
-devicetree instead of setting it up dynamically.
-
-In the end, other than register definitions, there is not much code to
-share with arm-smmu (other than what has already been refactored out
-into the pgtable helpers).
-
-Signed-off-by: Rob Clark <robdclark@gmail.com>
-Tested-by: Riku Voipio <riku.voipio@linaro.org>
----
-v1: original
-v2: bindings cleanups and kconfig issues that kbuild robot pointed out
-v3: fix issues pointed out by Rob H. and actually make device removal
- work
-v4: fix WARN_ON() splats reported by Archit
-v5: some fixes to build as a module.. note that it cannot actually
- be built as a module yet (at minimum a bunch of other iommu syms
- that are needed are not exported, but there may be more to it
- than that), but at least qcom_iommu is ready should it become
- possible to build iommu drivers as modules.
-v6: Add additional pm-runtime get/puts around paths that can hit
- TLB inv, to avoid unclocked register access if device using the
- iommu is not powered on. And pre-emptively clear interrupts
- before registering IRQ handler just in case the bootloader has
- left us a surpise.
-v7: Address review comments from Robin (don't associate iommu_group
- with context bank, table lookup instead of list to find context
- bank, etc)
-v8: Fix silly bug on detach. Actually Robin already pointed it out
- but I somehow overlooked that comment when preparing v7.
-
- drivers/iommu/Kconfig | 10 +
- drivers/iommu/Makefile | 1 +
- drivers/iommu/qcom_iommu.c | 868 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 879 insertions(+)
- create mode 100644 drivers/iommu/qcom_iommu.c
-
-diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
-index 6ee3a25ae731..aa4b62893fe1 100644
---- a/drivers/iommu/Kconfig
-+++ b/drivers/iommu/Kconfig
-@@ -367,4 +367,14 @@ config MTK_IOMMU_V1
-
- if unsure, say N here.
-
-+config QCOM_IOMMU
-+ # Note: iommu drivers cannot (yet?) be built as modules
-+ bool "Qualcomm IOMMU Support"
-+ depends on ARCH_QCOM || COMPILE_TEST
-+ select IOMMU_API
-+ select IOMMU_IO_PGTABLE_LPAE
-+ select ARM_DMA_USE_IOMMU
-+ help
-+ Support for IOMMU on certain Qualcomm SoCs.
-+
- endif # IOMMU_SUPPORT
-diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
-index 195f7b997d8e..b910aea813a1 100644
---- a/drivers/iommu/Makefile
-+++ b/drivers/iommu/Makefile
-@@ -27,3 +27,4 @@ obj-$(CONFIG_TEGRA_IOMMU_SMMU) += tegra-smmu.o
- obj-$(CONFIG_EXYNOS_IOMMU) += exynos-iommu.o
- obj-$(CONFIG_FSL_PAMU) += fsl_pamu.o fsl_pamu_domain.o
- obj-$(CONFIG_S390_IOMMU) += s390-iommu.o
-+obj-$(CONFIG_QCOM_IOMMU) += qcom_iommu.o
-diff --git a/drivers/iommu/qcom_iommu.c b/drivers/iommu/qcom_iommu.c
-new file mode 100644
-index 000000000000..860cad1cb167
---- /dev/null
-+++ b/drivers/iommu/qcom_iommu.c
-@@ -0,0 +1,868 @@
-+/*
-+ * IOMMU API for QCOM secure IOMMUs. Somewhat based on arm-smmu.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
-+ *
-+ * Copyright (C) 2013 ARM Limited
-+ * Copyright (C) 2017 Red Hat
-+ */
-+
-+#include <linux/atomic.h>
-+#include <linux/clk.h>
-+#include <linux/delay.h>
-+#include <linux/dma-iommu.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/err.h>
-+#include <linux/interrupt.h>
-+#include <linux/io.h>
-+#include <linux/io-64-nonatomic-hi-lo.h>
-+#include <linux/iommu.h>
-+#include <linux/iopoll.h>
-+#include <linux/kconfig.h>
-+#include <linux/module.h>
-+#include <linux/mutex.h>
-+#include <linux/of.h>
-+#include <linux/of_address.h>
-+#include <linux/of_device.h>
-+#include <linux/of_iommu.h>
-+#include <linux/platform_device.h>
-+#include <linux/pm.h>
-+#include <linux/pm_runtime.h>
-+#include <linux/qcom_scm.h>
-+#include <linux/slab.h>
-+#include <linux/spinlock.h>
-+
-+#include "io-pgtable.h"
-+#include "arm-smmu-regs.h"
-+
-+#define SMMU_INTR_SEL_NS 0x2000
-+
-+struct qcom_iommu_ctx;
-+
-+struct qcom_iommu_dev {
-+ /* IOMMU core code handle */
-+ struct iommu_device iommu;
-+ struct device *dev;
-+ struct clk *iface_clk;
-+ struct clk *bus_clk;
-+ void __iomem *local_base;
-+ u32 sec_id;
-+ u8 num_ctxs;
-+ struct qcom_iommu_ctx *ctxs[0]; /* indexed by asid-1 */
-+};
-+
-+struct qcom_iommu_ctx {
-+ struct device *dev;
-+ void __iomem *base;
-+ bool secure_init;
-+ u8 asid; /* asid and ctx bank # are 1:1 */
-+};
-+
-+struct qcom_iommu_domain {
-+ struct io_pgtable_ops *pgtbl_ops;
-+ spinlock_t pgtbl_lock;
-+ struct mutex init_mutex; /* Protects iommu pointer */
-+ struct iommu_domain domain;
-+ struct qcom_iommu_dev *iommu;
-+};
-+
-+static struct qcom_iommu_domain *to_qcom_iommu_domain(struct iommu_domain *dom)
-+{
-+ return container_of(dom, struct qcom_iommu_domain, domain);
-+}
-+
-+static const struct iommu_ops qcom_iommu_ops;
-+
-+static struct qcom_iommu_dev * to_iommu(struct iommu_fwspec *fwspec)
-+{
-+ if (!fwspec || fwspec->ops != &qcom_iommu_ops)
-+ return NULL;
-+ return fwspec->iommu_priv;
-+}
-+
-+static struct qcom_iommu_ctx * to_ctx(struct iommu_fwspec *fwspec, unsigned asid)
-+{
-+ struct qcom_iommu_dev *qcom_iommu = to_iommu(fwspec);
-+ if (!qcom_iommu)
-+ return NULL;
-+ return qcom_iommu->ctxs[asid - 1];
-+}
-+
-+static inline void
-+iommu_writel(struct qcom_iommu_ctx *ctx, unsigned reg, u32 val)
-+{
-+ writel_relaxed(val, ctx->base + reg);
-+}
-+
-+static inline void
-+iommu_writeq(struct qcom_iommu_ctx *ctx, unsigned reg, u64 val)
-+{
-+ writeq_relaxed(val, ctx->base + reg);
-+}
-+
-+static inline u32
-+iommu_readl(struct qcom_iommu_ctx *ctx, unsigned reg)
-+{
-+ return readl_relaxed(ctx->base + reg);
-+}
-+
-+static inline u64
-+iommu_readq(struct qcom_iommu_ctx *ctx, unsigned reg)
-+{
-+ return readq_relaxed(ctx->base + reg);
-+}
-+
-+static void qcom_iommu_tlb_sync(void *cookie)
-+{
-+ struct iommu_fwspec *fwspec = cookie;
-+ unsigned i;
-+
-+ for (i = 0; i < fwspec->num_ids; i++) {
-+ struct qcom_iommu_ctx *ctx = to_ctx(fwspec, fwspec->ids[i]);
-+ unsigned int val, ret;
-+
-+ iommu_writel(ctx, ARM_SMMU_CB_TLBSYNC, 0);
-+
-+ ret = readl_poll_timeout(ctx->base + ARM_SMMU_CB_TLBSTATUS, val,
-+ (val & 0x1) == 0, 0, 5000000);
-+ if (ret)
-+ dev_err(ctx->dev, "timeout waiting for TLB SYNC\n");
-+ }
-+}
-+
-+static void qcom_iommu_tlb_inv_context(void *cookie)
-+{
-+ struct iommu_fwspec *fwspec = cookie;
-+ unsigned i;
-+
-+ for (i = 0; i < fwspec->num_ids; i++) {
-+ struct qcom_iommu_ctx *ctx = to_ctx(fwspec, fwspec->ids[i]);
-+ iommu_writel(ctx, ARM_SMMU_CB_S1_TLBIASID, ctx->asid);
-+ }
-+
-+ qcom_iommu_tlb_sync(cookie);
-+}
-+
-+static void qcom_iommu_tlb_inv_range_nosync(unsigned long iova, size_t size,
-+ size_t granule, bool leaf, void *cookie)
-+{
-+ struct iommu_fwspec *fwspec = cookie;
-+ unsigned i, reg;
-+
-+ reg = leaf ? ARM_SMMU_CB_S1_TLBIVAL : ARM_SMMU_CB_S1_TLBIVA;
-+
-+ for (i = 0; i < fwspec->num_ids; i++) {
-+ struct qcom_iommu_ctx *ctx = to_ctx(fwspec, fwspec->ids[i]);
-+ size_t s = size;
-+
-+ iova &= ~12UL;
-+ iova |= ctx->asid;
-+ do {
-+ iommu_writel(ctx, reg, iova);
-+ iova += granule;
-+ } while (s -= granule);
-+ }
-+}
-+
-+static const struct iommu_gather_ops qcom_gather_ops = {
-+ .tlb_flush_all = qcom_iommu_tlb_inv_context,
-+ .tlb_add_flush = qcom_iommu_tlb_inv_range_nosync,
-+ .tlb_sync = qcom_iommu_tlb_sync,
-+};
-+
-+static irqreturn_t qcom_iommu_fault(int irq, void *dev)
-+{
-+ struct qcom_iommu_ctx *ctx = dev;
-+ u32 fsr, fsynr;
-+ u64 iova;
-+
-+ fsr = iommu_readl(ctx, ARM_SMMU_CB_FSR);
-+
-+ if (!(fsr & FSR_FAULT))
-+ return IRQ_NONE;
-+
-+ fsynr = iommu_readl(ctx, ARM_SMMU_CB_FSYNR0);
-+ iova = iommu_readq(ctx, ARM_SMMU_CB_FAR);
-+
-+ dev_err_ratelimited(ctx->dev,
-+ "Unhandled context fault: fsr=0x%x, "
-+ "iova=0x%016llx, fsynr=0x%x, cb=%d\n",
-+ fsr, iova, fsynr, ctx->asid);
-+
-+ iommu_writel(ctx, ARM_SMMU_CB_FSR, fsr);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int qcom_iommu_init_domain(struct iommu_domain *domain,
-+ struct qcom_iommu_dev *qcom_iommu,
-+ struct iommu_fwspec *fwspec)
-+{
-+ struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain);
-+ struct io_pgtable_ops *pgtbl_ops;
-+ struct io_pgtable_cfg pgtbl_cfg;
-+ int i, ret = 0;
-+ u32 reg;
-+
-+ mutex_lock(&qcom_domain->init_mutex);
-+ if (qcom_domain->iommu)
-+ goto out_unlock;
-+
-+ pgtbl_cfg = (struct io_pgtable_cfg) {
-+ .pgsize_bitmap = qcom_iommu_ops.pgsize_bitmap,
-+ .ias = 32,
-+ .oas = 40,
-+ .tlb = &qcom_gather_ops,
-+ .iommu_dev = qcom_iommu->dev,
-+ };
-+
-+ qcom_domain->iommu = qcom_iommu;
-+ pgtbl_ops = alloc_io_pgtable_ops(ARM_32_LPAE_S1, &pgtbl_cfg, fwspec);
-+ if (!pgtbl_ops) {
-+ dev_err(qcom_iommu->dev, "failed to allocate pagetable ops\n");
-+ ret = -ENOMEM;
-+ goto out_clear_iommu;
-+ }
-+
-+ /* Update the domain's page sizes to reflect the page table format */
-+ domain->pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
-+ domain->geometry.aperture_end = (1ULL << pgtbl_cfg.ias) - 1;
-+ domain->geometry.force_aperture = true;
-+
-+ for (i = 0; i < fwspec->num_ids; i++) {
-+ struct qcom_iommu_ctx *ctx = to_ctx(fwspec, fwspec->ids[i]);
-+
-+ if (!ctx->secure_init) {
-+ ret = qcom_scm_restore_sec_cfg(qcom_iommu->sec_id, ctx->asid);
-+ if (ret) {
-+ dev_err(qcom_iommu->dev, "secure init failed: %d\n", ret);
-+ goto out_clear_iommu;
-+ }
-+ ctx->secure_init = true;
-+ }
-+
-+ /* TTBRs */
-+ iommu_writeq(ctx, ARM_SMMU_CB_TTBR0,
-+ pgtbl_cfg.arm_lpae_s1_cfg.ttbr[0] |
-+ ((u64)ctx->asid << TTBRn_ASID_SHIFT));
-+ iommu_writeq(ctx, ARM_SMMU_CB_TTBR1,
-+ pgtbl_cfg.arm_lpae_s1_cfg.ttbr[1] |
-+ ((u64)ctx->asid << TTBRn_ASID_SHIFT));
-+
-+ /* TTBCR */
-+ iommu_writel(ctx, ARM_SMMU_CB_TTBCR2,
-+ (pgtbl_cfg.arm_lpae_s1_cfg.tcr >> 32) |
-+ TTBCR2_SEP_UPSTREAM);
-+ iommu_writel(ctx, ARM_SMMU_CB_TTBCR,
-+ pgtbl_cfg.arm_lpae_s1_cfg.tcr);
-+
-+ /* MAIRs (stage-1 only) */
-+ iommu_writel(ctx, ARM_SMMU_CB_S1_MAIR0,
-+ pgtbl_cfg.arm_lpae_s1_cfg.mair[0]);
-+ iommu_writel(ctx, ARM_SMMU_CB_S1_MAIR1,
-+ pgtbl_cfg.arm_lpae_s1_cfg.mair[1]);
-+
-+ /* SCTLR */
-+ reg = SCTLR_CFIE | SCTLR_CFRE | SCTLR_AFE | SCTLR_TRE |
-+ SCTLR_M | SCTLR_S1_ASIDPNE;
-+
-+ if (IS_ENABLED(CONFIG_BIG_ENDIAN))
-+ reg |= SCTLR_E;
-+
-+ iommu_writel(ctx, ARM_SMMU_CB_SCTLR, reg);
-+ }
-+
-+ mutex_unlock(&qcom_domain->init_mutex);
-+
-+ /* Publish page table ops for map/unmap */
-+ qcom_domain->pgtbl_ops = pgtbl_ops;
-+
-+ return 0;
-+
-+out_clear_iommu:
-+ qcom_domain->iommu = NULL;
-+out_unlock:
-+ mutex_unlock(&qcom_domain->init_mutex);
-+ return ret;
-+}
-+
-+static struct iommu_domain *qcom_iommu_domain_alloc(unsigned type)
-+{
-+ struct qcom_iommu_domain *qcom_domain;
-+
-+ if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA)
-+ return NULL;
-+ /*
-+ * Allocate the domain and initialise some of its data structures.
-+ * We can't really do anything meaningful until we've added a
-+ * master.
-+ */
-+ qcom_domain = kzalloc(sizeof(*qcom_domain), GFP_KERNEL);
-+ if (!qcom_domain)
-+ return NULL;
-+
-+ if (type == IOMMU_DOMAIN_DMA &&
-+ iommu_get_dma_cookie(&qcom_domain->domain)) {
-+ kfree(qcom_domain);
-+ return NULL;
-+ }
-+
-+ mutex_init(&qcom_domain->init_mutex);
-+ spin_lock_init(&qcom_domain->pgtbl_lock);
-+
-+ return &qcom_domain->domain;
-+}
-+
-+static void qcom_iommu_domain_free(struct iommu_domain *domain)
-+{
-+ struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain);
-+
-+ if (WARN_ON(qcom_domain->iommu)) /* forgot to detach? */
-+ return;
-+
-+ iommu_put_dma_cookie(domain);
-+
-+ /* NOTE: unmap can be called after client device is powered off,
-+ * for example, with GPUs or anything involving dma-buf. So we
-+ * cannot rely on the device_link. Make sure the IOMMU is on to
-+ * avoid unclocked accesses in the TLB inv path:
-+ */
-+ pm_runtime_get_sync(qcom_domain->iommu->dev);
-+
-+ free_io_pgtable_ops(qcom_domain->pgtbl_ops);
-+
-+ pm_runtime_put_sync(qcom_domain->iommu->dev);
-+
-+ kfree(qcom_domain);
-+}
-+
-+static int qcom_iommu_attach_dev(struct iommu_domain *domain, struct device *dev)
-+{
-+ struct qcom_iommu_dev *qcom_iommu = to_iommu(dev->iommu_fwspec);
-+ struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain);
-+ int ret;
-+
-+ if (!qcom_iommu) {
-+ dev_err(dev, "cannot attach to IOMMU, is it on the same bus?\n");
-+ return -ENXIO;
-+ }
-+
-+ /* Ensure that the domain is finalized */
-+ pm_runtime_get_sync(qcom_iommu->dev);
-+ ret = qcom_iommu_init_domain(domain, qcom_iommu, dev->iommu_fwspec);
-+ pm_runtime_put_sync(qcom_iommu->dev);
-+ if (ret < 0)
-+ return ret;
-+
-+ /*
-+ * Sanity check the domain. We don't support domains across
-+ * different IOMMUs.
-+ */
-+ if (qcom_domain->iommu != qcom_iommu) {
-+ dev_err(dev, "cannot attach to IOMMU %s while already "
-+ "attached to domain on IOMMU %s\n",
-+ dev_name(qcom_domain->iommu->dev),
-+ dev_name(qcom_iommu->dev));
-+ return -EINVAL;
-+ }
-+
-+ return 0;
-+}
-+
-+static void qcom_iommu_detach_dev(struct iommu_domain *domain, struct device *dev)
-+{
-+ struct iommu_fwspec *fwspec = dev->iommu_fwspec;
-+ struct qcom_iommu_dev *qcom_iommu = to_iommu(fwspec);
-+ struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain);
-+ unsigned i;
-+
-+ if (!qcom_domain->iommu)
-+ return;
-+
-+ pm_runtime_get_sync(qcom_iommu->dev);
-+ for (i = 0; i < fwspec->num_ids; i++) {
-+ struct qcom_iommu_ctx *ctx = to_ctx(fwspec, fwspec->ids[i]);
-+
-+ /* Disable the context bank: */
-+ iommu_writel(ctx, ARM_SMMU_CB_SCTLR, 0);
-+ }
-+ pm_runtime_put_sync(qcom_iommu->dev);
-+
-+ qcom_domain->iommu = NULL;
-+}
-+
-+static int qcom_iommu_map(struct iommu_domain *domain, unsigned long iova,
-+ phys_addr_t paddr, size_t size, int prot)
-+{
-+ int ret;
-+ unsigned long flags;
-+ struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain);
-+ struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops;
-+
-+ if (!ops)
-+ return -ENODEV;
-+
-+ spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags);
-+ ret = ops->map(ops, iova, paddr, size, prot);
-+ spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags);
-+ return ret;
-+}
-+
-+static size_t qcom_iommu_unmap(struct iommu_domain *domain, unsigned long iova,
-+ size_t size)
-+{
-+ size_t ret;
-+ unsigned long flags;
-+ struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain);
-+ struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops;
-+
-+ if (!ops)
-+ return 0;
-+
-+ /* NOTE: unmap can be called after client device is powered off,
-+ * for example, with GPUs or anything involving dma-buf. So we
-+ * cannot rely on the device_link. Make sure the IOMMU is on to
-+ * avoid unclocked accesses in the TLB inv path:
-+ */
-+ pm_runtime_get_sync(qcom_domain->iommu->dev);
-+ spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags);
-+ ret = ops->unmap(ops, iova, size);
-+ spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags);
-+ pm_runtime_put_sync(qcom_domain->iommu->dev);
-+
-+ return ret;
-+}
-+
-+static phys_addr_t qcom_iommu_iova_to_phys(struct iommu_domain *domain,
-+ dma_addr_t iova)
-+{
-+ phys_addr_t ret;
-+ unsigned long flags;
-+ struct qcom_iommu_domain *qcom_domain = to_qcom_iommu_domain(domain);
-+ struct io_pgtable_ops *ops = qcom_domain->pgtbl_ops;
-+
-+ if (!ops)
-+ return 0;
-+
-+ spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags);
-+ ret = ops->iova_to_phys(ops, iova);
-+ spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags);
-+
-+ return ret;
-+}
-+
-+static bool qcom_iommu_capable(enum iommu_cap cap)
-+{
-+ switch (cap) {
-+ case IOMMU_CAP_CACHE_COHERENCY:
-+ /*
-+ * Return true here as the SMMU can always send out coherent
-+ * requests.
-+ */
-+ return true;
-+ case IOMMU_CAP_NOEXEC:
-+ return true;
-+ default:
-+ return false;
-+ }
-+}
-+
-+static int qcom_iommu_add_device(struct device *dev)
-+{
-+ struct qcom_iommu_dev *qcom_iommu = to_iommu(dev->iommu_fwspec);
-+ struct iommu_group *group;
-+ struct device_link *link;
-+
-+ if (!qcom_iommu)
-+ return -ENODEV;
-+
-+ /*
-+ * Establish the link between iommu and master, so that the
-+ * iommu gets runtime enabled/disabled as per the master's
-+ * needs.
-+ */
-+ link = device_link_add(dev, qcom_iommu->dev, DL_FLAG_PM_RUNTIME);
-+ if (!link) {
-+ dev_err(qcom_iommu->dev, "Unable to create device link between %s and %s\n",
-+ dev_name(qcom_iommu->dev), dev_name(dev));
-+ return -ENODEV;
-+ }
-+
-+ group = iommu_group_get_for_dev(dev);
-+ if (IS_ERR_OR_NULL(group))
-+ return PTR_ERR_OR_ZERO(group);
-+
-+ iommu_group_put(group);
-+ iommu_device_link(&qcom_iommu->iommu, dev);
-+
-+ return 0;
-+}
-+
-+static void qcom_iommu_remove_device(struct device *dev)
-+{
-+ struct qcom_iommu_dev *qcom_iommu = to_iommu(dev->iommu_fwspec);
-+
-+ if (!qcom_iommu)
-+ return;
-+
-+ iommu_device_unlink(&qcom_iommu->iommu, dev);
-+ iommu_group_remove_device(dev);
-+ iommu_fwspec_free(dev);
-+}
-+
-+static int qcom_iommu_of_xlate(struct device *dev, struct of_phandle_args *args)
-+{
-+ struct qcom_iommu_dev *qcom_iommu;
-+ struct platform_device *iommu_pdev;
-+ unsigned asid = args->args[0];
-+
-+ if (args->args_count != 1) {
-+ dev_err(dev, "incorrect number of iommu params found for %s "
-+ "(found %d, expected 1)\n",
-+ args->np->full_name, args->args_count);
-+ return -EINVAL;
-+ }
-+
-+ iommu_pdev = of_find_device_by_node(args->np);
-+ if (WARN_ON(!iommu_pdev))
-+ return -EINVAL;
-+
-+ qcom_iommu = platform_get_drvdata(iommu_pdev);
-+
-+ /* make sure the asid specified in dt is valid, so we don't have
-+ * to sanity check this elsewhere, since 'asid - 1' is used to
-+ * index into qcom_iommu->ctxs:
-+ */
-+ if (WARN_ON(asid < 1) ||
-+ WARN_ON(asid > qcom_iommu->num_ctxs))
-+ return -EINVAL;
-+
-+ if (!dev->iommu_fwspec->iommu_priv) {
-+ dev->iommu_fwspec->iommu_priv = qcom_iommu;
-+ } else {
-+ /* make sure devices iommus dt node isn't referring to
-+ * multiple different iommu devices. Multiple context
-+ * banks are ok, but multiple devices are not:
-+ */
-+ if (WARN_ON(qcom_iommu != dev->iommu_fwspec->iommu_priv))
-+ return -EINVAL;
-+ }
-+
-+ return iommu_fwspec_add_ids(dev, &asid, 1);
-+}
-+
-+static const struct iommu_ops qcom_iommu_ops = {
-+ .capable = qcom_iommu_capable,
-+ .domain_alloc = qcom_iommu_domain_alloc,
-+ .domain_free = qcom_iommu_domain_free,
-+ .attach_dev = qcom_iommu_attach_dev,
-+ .detach_dev = qcom_iommu_detach_dev,
-+ .map = qcom_iommu_map,
-+ .unmap = qcom_iommu_unmap,
-+ .map_sg = default_iommu_map_sg,
-+ .iova_to_phys = qcom_iommu_iova_to_phys,
-+ .add_device = qcom_iommu_add_device,
-+ .remove_device = qcom_iommu_remove_device,
-+ .device_group = generic_device_group,
-+ .of_xlate = qcom_iommu_of_xlate,
-+ .pgsize_bitmap = SZ_4K | SZ_64K | SZ_1M | SZ_16M,
-+};
-+
-+static int qcom_iommu_enable_clocks(struct qcom_iommu_dev *qcom_iommu)
-+{
-+ int ret;
-+
-+ ret = clk_prepare_enable(qcom_iommu->iface_clk);
-+ if (ret) {
-+ dev_err(qcom_iommu->dev, "Couldn't enable iface_clk\n");
-+ return ret;
-+ }
-+
-+ ret = clk_prepare_enable(qcom_iommu->bus_clk);
-+ if (ret) {
-+ dev_err(qcom_iommu->dev, "Couldn't enable bus_clk\n");
-+ clk_disable_unprepare(qcom_iommu->iface_clk);
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static void qcom_iommu_disable_clocks(struct qcom_iommu_dev *qcom_iommu)
-+{
-+ clk_disable_unprepare(qcom_iommu->bus_clk);
-+ clk_disable_unprepare(qcom_iommu->iface_clk);
-+}
-+
-+static int get_asid(const struct device_node *np)
-+{
-+ u32 reg;
-+
-+ /* read the "reg" property directly to get the relative address
-+ * of the context bank, and calculate the asid from that:
-+ */
-+ if (of_property_read_u32_index(np, "reg", 0, &reg))
-+ return -ENODEV;
-+
-+ return reg / 0x1000; /* context banks are 0x1000 apart */
-+}
-+
-+static int qcom_iommu_ctx_probe(struct platform_device *pdev)
-+{
-+ struct qcom_iommu_ctx *ctx;
-+ struct device *dev = &pdev->dev;
-+ struct qcom_iommu_dev *qcom_iommu = dev_get_drvdata(dev->parent);
-+ struct resource *res;
-+ int ret, irq;
-+
-+ ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
-+ if (!ctx)
-+ return -ENOMEM;
-+
-+ ctx->dev = dev;
-+ platform_set_drvdata(pdev, ctx);
-+
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ ctx->base = devm_ioremap_resource(dev, res);
-+ if (IS_ERR(ctx->base))
-+ return PTR_ERR(ctx->base);
-+
-+ irq = platform_get_irq(pdev, 0);
-+ if (irq < 0) {
-+ dev_err(dev, "failed to get irq\n");
-+ return -ENODEV;
-+ }
-+
-+ /* clear IRQs before registering fault handler, just in case the
-+ * boot-loader left us a surprise:
-+ */
-+ iommu_writel(ctx, ARM_SMMU_CB_FSR, iommu_readl(ctx, ARM_SMMU_CB_FSR));
-+
-+ ret = devm_request_irq(dev, irq,
-+ qcom_iommu_fault,
-+ IRQF_SHARED,
-+ "qcom-iommu-fault",
-+ ctx);
-+ if (ret) {
-+ dev_err(dev, "failed to request IRQ %u\n", irq);
-+ return ret;
-+ }
-+
-+ ret = get_asid(dev->of_node);
-+ if (ret < 0) {
-+ dev_err(dev, "missing reg property\n");
-+ return ret;
-+ }
-+
-+ ctx->asid = ret;
-+
-+ dev_dbg(dev, "found asid %u\n", ctx->asid);
-+
-+ qcom_iommu->ctxs[ctx->asid - 1] = ctx;
-+
-+ return 0;
-+}
-+
-+static int qcom_iommu_ctx_remove(struct platform_device *pdev)
-+{
-+ struct qcom_iommu_dev *qcom_iommu = dev_get_drvdata(pdev->dev.parent);
-+ struct qcom_iommu_ctx *ctx = platform_get_drvdata(pdev);
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ qcom_iommu->ctxs[ctx->asid - 1] = NULL;
-+
-+ return 0;
-+}
-+
-+static const struct of_device_id ctx_of_match[] = {
-+ { .compatible = "qcom,msm-iommu-v1-ns" },
-+ { .compatible = "qcom,msm-iommu-v1-sec" },
-+ { /* sentinel */ }
-+};
-+
-+static struct platform_driver qcom_iommu_ctx_driver = {
-+ .driver = {
-+ .name = "qcom-iommu-ctx",
-+ .of_match_table = of_match_ptr(ctx_of_match),
-+ },
-+ .probe = qcom_iommu_ctx_probe,
-+ .remove = qcom_iommu_ctx_remove,
-+};
-+
-+static int qcom_iommu_device_probe(struct platform_device *pdev)
-+{
-+ struct device_node *child;
-+ struct qcom_iommu_dev *qcom_iommu;
-+ struct device *dev = &pdev->dev;
-+ struct resource *res;
-+ int ret, sz, max_asid = 0;
-+
-+ /* find the max asid (which is 1:1 to ctx bank idx), so we know how
-+ * many child ctx devices we have:
-+ */
-+ for_each_child_of_node(dev->of_node, child)
-+ max_asid = max(max_asid, get_asid(child));
-+
-+ sz = sizeof(*qcom_iommu) + (max_asid * sizeof(qcom_iommu->ctxs[0]));
-+
-+ qcom_iommu = devm_kzalloc(dev, sz, GFP_KERNEL);
-+ if (!qcom_iommu)
-+ return -ENOMEM;
-+ qcom_iommu->num_ctxs = max_asid;
-+ qcom_iommu->dev = dev;
-+
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (res)
-+ qcom_iommu->local_base = devm_ioremap_resource(dev, res);
-+
-+ qcom_iommu->iface_clk = devm_clk_get(dev, "iface");
-+ if (IS_ERR(qcom_iommu->iface_clk)) {
-+ dev_err(dev, "failed to get iface clock\n");
-+ return PTR_ERR(qcom_iommu->iface_clk);
-+ }
-+
-+ qcom_iommu->bus_clk = devm_clk_get(dev, "bus");
-+ if (IS_ERR(qcom_iommu->bus_clk)) {
-+ dev_err(dev, "failed to get bus clock\n");
-+ return PTR_ERR(qcom_iommu->bus_clk);
-+ }
-+
-+ if (of_property_read_u32(dev->of_node, "qcom,iommu-secure-id",
-+ &qcom_iommu->sec_id)) {
-+ dev_err(dev, "missing qcom,iommu-secure-id property\n");
-+ return -ENODEV;
-+ }
-+
-+ platform_set_drvdata(pdev, qcom_iommu);
-+
-+ pm_runtime_enable(dev);
-+
-+ /* register context bank devices, which are child nodes: */
-+ ret = devm_of_platform_populate(dev);
-+ if (ret) {
-+ dev_err(dev, "Failed to populate iommu contexts\n");
-+ return ret;
-+ }
-+
-+ ret = iommu_device_sysfs_add(&qcom_iommu->iommu, dev, NULL,
-+ dev_name(dev));
-+ if (ret) {
-+ dev_err(dev, "Failed to register iommu in sysfs\n");
-+ return ret;
-+ }
-+
-+ iommu_device_set_ops(&qcom_iommu->iommu, &qcom_iommu_ops);
-+ iommu_device_set_fwnode(&qcom_iommu->iommu, dev->fwnode);
-+
-+ ret = iommu_device_register(&qcom_iommu->iommu);
-+ if (ret) {
-+ dev_err(dev, "Failed to register iommu\n");
-+ return ret;
-+ }
-+
-+ bus_set_iommu(&platform_bus_type, &qcom_iommu_ops);
-+
-+ if (qcom_iommu->local_base) {
-+ pm_runtime_get_sync(dev);
-+ writel_relaxed(0xffffffff, qcom_iommu->local_base + SMMU_INTR_SEL_NS);
-+ pm_runtime_put_sync(dev);
-+ }
-+
-+ return 0;
-+}
-+
-+static int qcom_iommu_device_remove(struct platform_device *pdev)
-+{
-+ struct qcom_iommu_dev *qcom_iommu = platform_get_drvdata(pdev);
-+
-+ bus_set_iommu(&platform_bus_type, NULL);
-+
-+ pm_runtime_force_suspend(&pdev->dev);
-+ platform_set_drvdata(pdev, NULL);
-+ iommu_device_sysfs_remove(&qcom_iommu->iommu);
-+ iommu_device_unregister(&qcom_iommu->iommu);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static int qcom_iommu_resume(struct device *dev)
-+{
-+ struct platform_device *pdev = to_platform_device(dev);
-+ struct qcom_iommu_dev *qcom_iommu = platform_get_drvdata(pdev);
-+
-+ return qcom_iommu_enable_clocks(qcom_iommu);
-+}
-+
-+static int qcom_iommu_suspend(struct device *dev)
-+{
-+ struct platform_device *pdev = to_platform_device(dev);
-+ struct qcom_iommu_dev *qcom_iommu = platform_get_drvdata(pdev);
-+
-+ qcom_iommu_disable_clocks(qcom_iommu);
-+
-+ return 0;
-+}
-+#endif
-+
-+static const struct dev_pm_ops qcom_iommu_pm_ops = {
-+ SET_RUNTIME_PM_OPS(qcom_iommu_suspend, qcom_iommu_resume, NULL)
-+ SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
-+ pm_runtime_force_resume)
-+};
-+
-+static const struct of_device_id qcom_iommu_of_match[] = {
-+ { .compatible = "qcom,msm-iommu-v1" },
-+ { /* sentinel */ }
-+};
-+MODULE_DEVICE_TABLE(of, qcom_iommu_of_match);
-+
-+static struct platform_driver qcom_iommu_driver = {
-+ .driver = {
-+ .name = "qcom-iommu",
-+ .of_match_table = of_match_ptr(qcom_iommu_of_match),
-+ .pm = &qcom_iommu_pm_ops,
-+ },
-+ .probe = qcom_iommu_device_probe,
-+ .remove = qcom_iommu_device_remove,
-+};
-+
-+static int __init qcom_iommu_init(void)
-+{
-+ int ret;
-+
-+ ret = platform_driver_register(&qcom_iommu_ctx_driver);
-+ if (ret)
-+ return ret;
-+
-+ ret = platform_driver_register(&qcom_iommu_driver);
-+ if (ret)
-+ platform_driver_unregister(&qcom_iommu_ctx_driver);
-+
-+ return ret;
-+}
-+
-+static void __exit qcom_iommu_exit(void)
-+{
-+ platform_driver_unregister(&qcom_iommu_driver);
-+ platform_driver_unregister(&qcom_iommu_ctx_driver);
-+}
-+
-+module_init(qcom_iommu_init);
-+module_exit(qcom_iommu_exit);
-+
-+IOMMU_OF_DECLARE(qcom_iommu_dev, "qcom,msm-iommu-v1", NULL);
-+
-+MODULE_DESCRIPTION("IOMMU API for QCOM IOMMU v1 implementations");
-+MODULE_LICENSE("GPL v2");
-From patchwork Thu Jul 13 12:07:47 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [RESEND,4/4] iommu: qcom: initialize secure page table
-From: Rob Clark <robdclark@gmail.com>
-X-Patchwork-Id: 9838373
-Message-Id: <20170713120747.20490-5-robdclark@gmail.com>
-To: iommu@lists.linux-foundation.org
-Cc: linux-arm-msm@vger.kernel.org, Archit Taneja <architt@codeaurora.org>,
- Rob Herring <robh@kernel.org>, Will Deacon <will.deacon@arm.com>,
- Sricharan <sricharan@codeaurora.org>,
- Mark Rutland <mark.rutland@arm.com>, Robin Murphy <robin.murphy@arm.com>,
- Stanimir Varbanov <stanimir.varbanov@linaro.org>,
- Rob Clark <robdclark@gmail.com>
-Date: Thu, 13 Jul 2017 08:07:47 -0400
-
-From: Stanimir Varbanov <stanimir.varbanov@linaro.org>
-
-This basically gets the secure page table size, allocates memory for
-secure pagetables and passes the physical address to the trusted zone.
-
-Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
-Signed-off-by: Rob Clark <robdclark@gmail.com>
----
- drivers/iommu/qcom_iommu.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 64 insertions(+)
-
-diff --git a/drivers/iommu/qcom_iommu.c b/drivers/iommu/qcom_iommu.c
-index 860cad1cb167..48b62aa52787 100644
---- a/drivers/iommu/qcom_iommu.c
-+++ b/drivers/iommu/qcom_iommu.c
-@@ -604,6 +604,51 @@ static void qcom_iommu_disable_clocks(struct qcom_iommu_dev *qcom_iommu)
- clk_disable_unprepare(qcom_iommu->iface_clk);
- }
-
-+static int qcom_iommu_sec_ptbl_init(struct device *dev)
-+{
-+ size_t psize = 0;
-+ unsigned int spare = 0;
-+ void *cpu_addr;
-+ dma_addr_t paddr;
-+ unsigned long attrs;
-+ static bool allocated = false;
-+ int ret;
-+
-+ if (allocated)
-+ return 0;
-+
-+ ret = qcom_scm_iommu_secure_ptbl_size(spare, &psize);
-+ if (ret) {
-+ dev_err(dev, "failed to get iommu secure pgtable size (%d)\n",
-+ ret);
-+ return ret;
-+ }
-+
-+ dev_info(dev, "iommu sec: pgtable size: %zu\n", psize);
-+
-+ attrs = DMA_ATTR_NO_KERNEL_MAPPING;
-+
-+ cpu_addr = dma_alloc_attrs(dev, psize, &paddr, GFP_KERNEL, attrs);
-+ if (!cpu_addr) {
-+ dev_err(dev, "failed to allocate %zu bytes for pgtable\n",
-+ psize);
-+ return -ENOMEM;
-+ }
-+
-+ ret = qcom_scm_iommu_secure_ptbl_init(paddr, psize, spare);
-+ if (ret) {
-+ dev_err(dev, "failed to init iommu pgtable (%d)\n", ret);
-+ goto free_mem;
-+ }
-+
-+ allocated = true;
-+ return 0;
-+
-+free_mem:
-+ dma_free_attrs(dev, psize, cpu_addr, paddr, attrs);
-+ return ret;
-+}
-+
- static int get_asid(const struct device_node *np)
- {
- u32 reg;
-@@ -700,6 +745,17 @@ static struct platform_driver qcom_iommu_ctx_driver = {
- .remove = qcom_iommu_ctx_remove,
- };
-
-+static bool qcom_iommu_has_secure_context(struct qcom_iommu_dev *qcom_iommu)
-+{
-+ struct device_node *child;
-+
-+ for_each_child_of_node(qcom_iommu->dev->of_node, child)
-+ if (of_device_is_compatible(child, "qcom,msm-iommu-v1-sec"))
-+ return true;
-+
-+ return false;
-+}
-+
- static int qcom_iommu_device_probe(struct platform_device *pdev)
- {
- struct device_node *child;
-@@ -744,6 +800,14 @@ static int qcom_iommu_device_probe(struct platform_device *pdev)
- return -ENODEV;
- }
-
-+ if (qcom_iommu_has_secure_context(qcom_iommu)) {
-+ ret = qcom_iommu_sec_ptbl_init(dev);
-+ if (ret) {
-+ dev_err(dev, "cannot init secure pg table(%d)\n", ret);
-+ return ret;
-+ }
-+ }
-+
- platform_set_drvdata(pdev, qcom_iommu);
-
- pm_runtime_enable(dev);
-From patchwork Mon Jun 12 12:43:15 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [1/3] ARM64: DT: add gpu for msm8916
-From: Rob Clark <robdclark@gmail.com>
-X-Patchwork-Id: 9781057
-Message-Id: <20170612124317.29313-1-robdclark@gmail.com>
-To: linux-arm-msm@vger.kernel.org
-Cc: Stephen Boyd <sboyd@codeaurora.org>, Andy Gross <agross@codeaurora.org>,
- Stanimir Varbanov <stanimir.varbanov@linaro.org>,
- Rob Clark <robdclark@gmail.com>
-Date: Mon, 12 Jun 2017 08:43:15 -0400
-
-Signed-off-by: Rob Clark <robdclark@gmail.com>
-Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
----
- arch/arm64/boot/dts/qcom/msm8916.dtsi | 35 +++++++++++++++++++++++++++++++++++
- 1 file changed, 35 insertions(+)
-
-diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
-index ab30939..24c24ab 100644
---- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
-+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
-@@ -204,6 +204,17 @@
-
- };
-
-+ gpu_opp_table: opp_table {
-+ compatible = "operating-points-v2";
-+
-+ opp-400000000 {
-+ opp-hz = /bits/ 64 <400000000>;
-+ };
-+ opp-19200000 {
-+ opp-hz = /bits/ 64 <19200000>;
-+ };
-+ };
-+
- timer {
- compatible = "arm,armv8-timer";
- interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-@@ -698,6 +709,30 @@
- #thermal-sensor-cells = <1>;
- };
-
-+ gpu@1c00000 {
-+ compatible = "qcom,adreno-306.0", "qcom,adreno";
-+ reg = <0x01c00000 0x20000>;
-+ reg-names = "kgsl_3d0_reg_memory";
-+ interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
-+ interrupt-names = "kgsl_3d0_irq";
-+ clock-names =
-+ "core",
-+ "iface",
-+ "mem",
-+ "mem_iface",
-+ "alt_mem_iface",
-+ "gfx3d";
-+ clocks =
-+ <&gcc GCC_OXILI_GFX3D_CLK>,
-+ <&gcc GCC_OXILI_AHB_CLK>,
-+ <&gcc GCC_OXILI_GMEM_CLK>,
-+ <&gcc GCC_BIMC_GFX_CLK>,
-+ <&gcc GCC_BIMC_GPU_CLK>,
-+ <&gcc GFX3D_CLK_SRC>;
-+ power-domains = <&gcc OXILI_GDSC>;
-+ operating-points-v2 = <&gpu_opp_table>;
-+ };
-+
- mdss: mdss@1a00000 {
- compatible = "qcom,mdss";
- reg = <0x1a00000 0x1000>,
-From patchwork Mon Jun 12 12:43:16 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [2/3] ARM64: DT: add video codec devicetree node
-From: Rob Clark <robdclark@gmail.com>
-X-Patchwork-Id: 9781059
-Message-Id: <20170612124317.29313-2-robdclark@gmail.com>
-To: linux-arm-msm@vger.kernel.org
-Cc: Stephen Boyd <sboyd@codeaurora.org>, Andy Gross <agross@codeaurora.org>,
- Stanimir Varbanov <stanimir.varbanov@linaro.org>,
- Rob Clark <robdclark@gmail.com>
-Date: Mon, 12 Jun 2017 08:43:16 -0400
-
-From: Stanimir Varbanov <stanimir.varbanov@linaro.org>
-
-Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
-Signed-off-by: Rob Clark <robdclark@gmail.com>
-Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
----
- arch/arm64/boot/dts/qcom/msm8916.dtsi | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
-diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
-index 24c24ab..1dcd632 100644
---- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
-+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
-@@ -88,6 +88,13 @@
- no-map;
- };
-
-+ venus_mem: venus@89900000 {
-+ compatible = "shared-dma-pool";
-+ reg = <0x0 0x89900000 0x0 0x800000>;
-+ alignment = <0x1000>;
-+ no-map;
-+ };
-+
- mba_mem: mba@8ea00000 {
- no-map;
- reg = <0 0x8ea00000 0 0x100000>;
-@@ -1214,6 +1221,27 @@
- };
- };
- };
-+
-+ venus: video-codec@1d00000 {
-+ compatible = "qcom,msm8916-venus";
-+ reg = <0x01d00000 0xff000>;
-+ interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
-+ power-domains = <&gcc VENUS_GDSC>;
-+ clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
-+ <&gcc GCC_VENUS0_AHB_CLK>,
-+ <&gcc GCC_VENUS0_AXI_CLK>;
-+ clock-names = "core", "iface", "bus";
-+ memory-region = <&venus_mem>;
-+ status = "okay";
-+
-+ video-decoder {
-+ compatible = "venus-decoder";
-+ };
-+
-+ video-encoder {
-+ compatible = "venus-encoder";
-+ };
-+ };
- };
-
- smd {
-From patchwork Mon Jun 12 12:43:17 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [3/3] ARM64: DT: add iommu for msm8916
-From: Rob Clark <robdclark@gmail.com>
-X-Patchwork-Id: 9781061
-Message-Id: <20170612124317.29313-3-robdclark@gmail.com>
-To: linux-arm-msm@vger.kernel.org
-Cc: Stephen Boyd <sboyd@codeaurora.org>, Andy Gross <agross@codeaurora.org>,
- Stanimir Varbanov <stanimir.varbanov@linaro.org>,
- Rob Clark <robdclark@gmail.com>
-Date: Mon, 12 Jun 2017 08:43:17 -0400
-
-Signed-off-by: Rob Clark <robdclark@gmail.com>
-Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
----
- arch/arm64/boot/dts/qcom/msm8916.dtsi | 57 +++++++++++++++++++++++++++++++++++
- 1 file changed, 57 insertions(+)
-
-diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
-index 1dcd632..9a1d7ef 100644
---- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
-+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
-@@ -716,6 +716,59 @@
- #thermal-sensor-cells = <1>;
- };
-
-+ apps_iommu: iommu@1ef0000 {
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+ #iommu-cells = <1>;
-+ compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
-+ ranges = <0 0x1e20000 0x40000>;
-+ reg = <0x1ef0000 0x3000>;
-+ clocks = <&gcc GCC_SMMU_CFG_CLK>,
-+ <&gcc GCC_APSS_TCU_CLK>;
-+ clock-names = "iface", "bus";
-+ qcom,iommu-secure-id = <17>;
-+
-+ // mdp_0:
-+ iommu-ctx@4000 {
-+ compatible = "qcom,msm-iommu-v1-ns";
-+ reg = <0x4000 0x1000>;
-+ interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
-+ };
-+
-+ // venus_ns:
-+ iommu-ctx@5000 {
-+ compatible = "qcom,msm-iommu-v1-sec";
-+ reg = <0x5000 0x1000>;
-+ interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
-+ };
-+ };
-+
-+ gpu_iommu: iommu@1f08000 {
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+ #iommu-cells = <1>;
-+ compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
-+ ranges = <0 0x1f08000 0x10000>;
-+ clocks = <&gcc GCC_SMMU_CFG_CLK>,
-+ <&gcc GCC_GFX_TCU_CLK>;
-+ clock-names = "iface", "bus";
-+ qcom,iommu-secure-id = <18>;
-+
-+ // gfx3d_user:
-+ iommu-ctx@1000 {
-+ compatible = "qcom,msm-iommu-v1-ns";
-+ reg = <0x1000 0x1000>;
-+ interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
-+ };
-+
-+ // gfx3d_priv:
-+ iommu-ctx@2000 {
-+ compatible = "qcom,msm-iommu-v1-ns";
-+ reg = <0x2000 0x1000>;
-+ interrupts = <GIC_SPI 242 0>;
-+ };
-+ };
-+
- gpu@1c00000 {
- compatible = "qcom,adreno-306.0", "qcom,adreno";
- reg = <0x01c00000 0x20000>;
-@@ -738,6 +791,7 @@
- <&gcc GFX3D_CLK_SRC>;
- power-domains = <&gcc OXILI_GDSC>;
- operating-points-v2 = <&gpu_opp_table>;
-+ iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
- };
-
- mdss: mdss@1a00000 {
-@@ -781,6 +835,8 @@
- "core_clk",
- "vsync_clk";
-
-+ iommus = <&apps_iommu 4>;
-+
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
-@@ -1231,6 +1287,7 @@
- <&gcc GCC_VENUS0_AHB_CLK>,
- <&gcc GCC_VENUS0_AXI_CLK>;
- clock-names = "core", "iface", "bus";
-+ iommus = <&apps_iommu 5>;
- memory-region = <&venus_mem>;
- status = "okay";
-
diff --git a/qcom-msm-ci_hdrc_msm_probe-missing-of_node_get.patch b/qcom-msm-ci_hdrc_msm_probe-missing-of_node_get.patch
deleted file mode 100644
index bc1884782..000000000
--- a/qcom-msm-ci_hdrc_msm_probe-missing-of_node_get.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From patchwork Tue Jul 18 23:31:28 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: usb: chipidea: msm: ci_hdrc_msm_probe() missing of_node_get()
-From: Frank Rowand <frowand.list@gmail.com>
-X-Patchwork-Id: 9850189
-Message-Id: <1500420688-11912-1-git-send-email-frowand.list@gmail.com>
-To: Peter Chen <Peter.Chen@nxp.com>,
- Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-usb@vger.kernel.org
-Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org
-Date: Tue, 18 Jul 2017 16:31:28 -0700
-
-From: Frank Rowand <frank.rowand@sony.com>
-
-Boot fails for qcom-apq8074-dragonboard on 4.13-rc1 with error:
-OF: ERROR: Bad of_node_put() on /soc/usb@f9a55000
-
-The error will occur if the configuration is set to:
- CONFIG_OF_OVERLAY y
- CONFIG_OF_UNITTEST y
- CONFIG_OF_DYNAMIC y
- CONFIG_OF_RESOLVE y
-
-If CONFIG_OF_DYNAMIC is enabled then of_node_release() detects an
-attempt to release a node that is still attached to the device tree.
-
-Signed-off-by: Frank Rowand <frank.rowand@sony.com>
----
- drivers/usb/chipidea/ci_hdrc_msm.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/usb/chipidea/ci_hdrc_msm.c b/drivers/usb/chipidea/ci_hdrc_msm.c
-index 0bdfcdcbf7a5..bb626120296f 100644
---- a/drivers/usb/chipidea/ci_hdrc_msm.c
-+++ b/drivers/usb/chipidea/ci_hdrc_msm.c
-@@ -251,7 +251,7 @@ static int ci_hdrc_msm_probe(struct platform_device *pdev)
- if (ret)
- goto err_mux;
-
-- ulpi_node = of_find_node_by_name(pdev->dev.of_node, "ulpi");
-+ ulpi_node = of_find_node_by_name(of_node_get(pdev->dev.of_node), "ulpi");
- if (ulpi_node) {
- phy_node = of_get_next_available_child(ulpi_node, NULL);
- ci->hsic = of_device_is_compatible(phy_node, "qcom,usb-hsic-phy");
diff --git a/qcom-msm89xx-fixes.patch b/qcom-msm89xx-fixes.patch
index a3298e432..f7ac2815c 100644
--- a/qcom-msm89xx-fixes.patch
+++ b/qcom-msm89xx-fixes.patch
@@ -1,81 +1,3 @@
-From 283d0e00a18b294ec56f1fb904896a546704faaf Mon Sep 17 00:00:00 2001
-From: Rob Clark <robdclark@gmail.com>
-Date: Fri, 30 Jun 2017 11:47:21 -0400
-Subject: [PATCH 3/6] soc: qcom: smsm: fix of_node refcnting problem
-
-of_find_node_with_property() drops the reference to the 'from' node,
-which eventually (after enough -EPROBE_DEFERs) drops the last reference
-to the node causing all sorts of fun problems, and this nice splat.
-
- BUG: sleeping function called from invalid context at ../kernel/locking/mutex.c:747
- in_atomic(): 1, irqs_disabled(): 128, pid: 33, name: kworker/0:1
- 4 locks held by kworker/0:1/33:
- #0: ("events"){.+.+.+}, at: [<ffff0000080fa91c>] process_one_work+0x1a4/0x728
- #1: (deferred_probe_work){+.+.+.}, at: [<ffff0000080fa91c>] process_one_work+0x1a4/0x728
- #2: (&dev->mutex){......}, at: [<ffff000008676078>] __device_attach+0x30/0x168
- #3: (devtree_lock){......}, at: [<ffff000008828fd0>] of_find_node_with_property+0x30/0xe0
- irq event stamp: 18976
- hardirqs last enabled at (18975): [<ffff00000815794c>] __down_trylock_console_sem+0x74/0xb8
- hardirqs last disabled at (18976): [<ffff0000089e26d4>] _raw_spin_lock_irqsave+0x2c/0x78
- softirqs last enabled at (16880): [<ffff0000080e0f00>] __do_softirq+0x580/0x640
- softirqs last disabled at (16871): [<ffff0000080e13a4>] irq_exit+0xe4/0x138
- CPU: 0 PID: 33 Comm: kworker/0:1 Tainted: G E 4.12.0-rc5+ #1455
- Hardware name: qualcomm dragonboard410c/dragonboard410c, BIOS 2017.07-rc1-00234-g22fa70a-dirty 06/26/2017
- Workqueue: events deferred_probe_work_func
- Call trace:
- [<ffff000008089ee0>] dump_backtrace+0x0/0x230
- [<ffff00000808a134>] show_stack+0x24/0x30
- [<ffff0000084e1944>] dump_stack+0xac/0xe8
- [<ffff00000810d7e0>] ___might_sleep+0x150/0x230
- [<ffff00000810d918>] __might_sleep+0x58/0x90
- [<ffff0000089dde18>] __mutex_lock+0x50/0x870
- [<ffff0000089de674>] mutex_lock_nested+0x3c/0x50
- [<ffff000008388ae0>] kernfs_remove+0x30/0x50
- [<ffff00000838b720>] sysfs_remove_dir+0x58/0x70
- [<ffff0000084e393c>] kobject_del+0x1c/0x58
- [<ffff0000084e374c>] kobject_put+0xb4/0x208
- [<ffff00000882c364>] of_node_put+0x24/0x30
- [<ffff000008829018>] of_find_node_with_property+0x78/0xe0
- [<ffff000000aff5f4>] qcom_smsm_probe+0x194/0x720 [smsm]
- [<ffff0000086793b4>] platform_drv_probe+0x74/0x110
- [<ffff0000086765bc>] driver_probe_device+0x2b4/0x420
- [<ffff000008676920>] __device_attach_driver+0xd0/0x150
- [<ffff000008673e78>] bus_for_each_drv+0x68/0xa8
- [<ffff00000867611c>] __device_attach+0xd4/0x168
- [<ffff000008676a1c>] device_initial_probe+0x24/0x30
- [<ffff000008675380>] bus_probe_device+0xa0/0xa8
- [<ffff000008675948>] deferred_probe_work_func+0xb8/0xf8
- [<ffff0000080fa9d4>] process_one_work+0x25c/0x728
- [<ffff0000080faef4>] worker_thread+0x54/0x3d8
- [<ffff0000081031d8>] kthread+0x110/0x140
- [<ffff000008082d90>] ret_from_fork+0x10/0x40
- OF: ERROR: Bad of_node_put() on /smsm
- CPU: 0 PID: 33 Comm: kworker/0:1 Tainted: G W E 4.12.0-rc5+ #1455
- Hardware name: qualcomm dragonboard410c/dragonboard410c, BIOS 2017.07-rc1-00234-g22fa70a-dirty 06/26/2017
- Workqueue: events deferred_probe_work_func
-
-Signed-off-by: Rob Clark <robdclark@gmail.com>
----
- drivers/soc/qcom/smsm.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/soc/qcom/smsm.c b/drivers/soc/qcom/smsm.c
-index d0337b2a71c8..a64ecd597a22 100644
---- a/drivers/soc/qcom/smsm.c
-+++ b/drivers/soc/qcom/smsm.c
-@@ -495,7 +495,8 @@ static int qcom_smsm_probe(struct platform_device *pdev)
- if (!smsm->hosts)
- return -ENOMEM;
-
-- local_node = of_find_node_with_property(pdev->dev.of_node, "#qcom,smem-state-cells");
-+ local_node = of_find_node_with_property(of_node_get(pdev->dev.of_node),
-+ "#qcom,smem-state-cells");
- if (!local_node) {
- dev_err(&pdev->dev, "no state entry\n");
- return -EINVAL;
---
-2.13.0
-
From 40cb129048e5d2456da8d9d6468f292da3071b91 Mon Sep 17 00:00:00 2001
From: Rob Clark <robdclark@gmail.com>
Date: Fri, 30 Jun 2017 16:40:23 -0400
@@ -107,84 +29,3 @@ index b1449ad67fc0..22ad37c9808c 100644
--
2.13.0
-
-From ae9b4fa55748cc9ce3c8ac039e46feab7257eff9 Mon Sep 17 00:00:00 2001
-From: Rob Clark <robdclark@gmail.com>
-Date: Sun, 2 Jul 2017 09:23:36 -0400
-Subject: [PATCH 5/6] soc: qcom: wcnss_ctrl: add missing MODULE_DEVICE_TABLE()
-
-This fixes a problem of wifi module not loading on db410c.
-
-Signed-off-by: Rob Clark <robdclark@gmail.com>
-Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
----
- drivers/soc/qcom/wcnss_ctrl.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/soc/qcom/wcnss_ctrl.c b/drivers/soc/qcom/wcnss_ctrl.c
-index b9069184df19..d008e5b82db4 100644
---- a/drivers/soc/qcom/wcnss_ctrl.c
-+++ b/drivers/soc/qcom/wcnss_ctrl.c
-@@ -347,6 +347,7 @@ static const struct of_device_id wcnss_ctrl_of_match[] = {
- { .compatible = "qcom,wcnss", },
- {}
- };
-+MODULE_DEVICE_TABLE(of, wcnss_ctrl_of_match);
-
- static struct rpmsg_driver wcnss_ctrl_driver = {
- .probe = wcnss_ctrl_probe,
---
-2.13.0
-
-From 173c1207986956ea4c00601a67c952751a1985e6 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 3 Jul 2017 10:10:21 +0100
-Subject: [PATCH 6/6] wcn36xx: check dma_mapping_error()
-
-Fixes splat:
-
- wcn36xx a204000.wcnss:smd-edge:wcnss:wifi: DMA-API: device driver failed to check map error[device address=0x00000000b45ba000] [size=3872 bytes] [mapped as single]
- ------------[ cut here ]------------
- WARNING: CPU: 0 PID: 0 at ../lib/dma-debug.c:1167 check_unmap+0x474/0x8d0
- Modules linked in: bnep(E) arc4(E) wcn36xx(E) mac80211(E) btqcomsmd(E) btqca(E) bluetooth(E) cfg80211(E) ecdh_generic(E) rfkill(E) vfat(E) fat(E) wcnss_ctrl qcom_wcnss_pil(E) mdt_loader(E) qcom_common(E) remoteproc(E) crc32_ce(E) virtio_ring(E) snd_soc_lpass_apq8016(E) snd_soc_lpass_cpu(E) virtio(E) snd_soc_lpass_platform(E) leds_gpio(E) snd_soc_hdmi_codec(E) snd_soc_apq8016_sbc(E) snd_soc_msm8916_digital(E) snd_soc_core(E) qcom_spmi_temp_alarm(E) ac97_bus(E) snd_pcm_dmaengine(E) snd_seq(E) snd_seq_device(E) snd_pcm(E) spi_qup(E) nvmem_qfprom(E) snd_timer(E) snd(E) soundcore(E) msm_rng(E) qcom_tsens(E) nvmem_core(E) uas(E) usb_storage(E) dm9601(E) cdc_ether(E) usbnet(E) mii(E) mmc_block(E) sdhci_msm(E) sdhci_pltfm(E) qcom_spmi_vadc(E) qcom_vadc_common(PE) clk_smd_rpm(E) industrialio(E)
- qcom_smd_regulator(E) pinctrl_spmi_mpp(E) pinctrl_spmi_gpio(E) rtc_pm8xxx(E) adv7511(E) smd_rpm(E) qcom_spmi_pmic(E) regmap_spmi(E) phy_msm_usb(E) usb3503(E) extcon_usb_gpio(E) ci_hdrc_msm(E) ci_hdrc(E) qcom_hwspinlock(E) udc_core(E) extcon_core(E) ehci_msm(E) i2c_qup(E) sdhci(E) msm(E) mmc_core(E) drm_kms_helper(E) syscopyarea(E) sysfillrect(E) sysimgblt(E) fb_sys_fops(E) spmi_pmic_arb(E) drm(E) spmi(E) qcom_smd(E) rpmsg_core smsm(E) gpio_keys(E) smp2p(E) smem(E) hwspinlock_core(E) sunrpc(E) scsi_transport_iscsi(E)
- CPU: 0 PID: 0 Comm: swapper/0 Tainted: P E 4.12.0-rc7+ #1476
- Hardware name: qualcomm dragonboard410c/dragonboard410c, BIOS 2017.07-rc1-00234-g22fa70a-dirty 06/26/2017
- task: ffff000009049780 task.stack: ffff000009030000
- PC is at check_unmap+0x474/0x8d0
- LR is at check_unmap+0x474/0x8d0
- ...
- Mapped at:
- dma_entry_alloc+0x68/0xa8
- debug_dma_map_page+0x94/0x148
- wcn36xx_dxe_fill_skb.isra.1+0xbc/0xf8 [wcn36xx]
- wcn36xx_dxe_init+0x244/0x398 [wcn36xx]
- wcn36xx_start+0xf4/0x298 [wcn36xx]
-
-v2: pbrobinson: add kfree_skb(skb);
-
-Signed-off-by: Rob Clark <robdclark@gmail.com>
-Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
----
- drivers/net/wireless/ath/wcn36xx/dxe.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/net/wireless/ath/wcn36xx/dxe.c b/drivers/net/wireless/ath/wcn36xx/dxe.c
-index 87dfdaf9044c..d5c810a8cc52 100644
---- a/drivers/net/wireless/ath/wcn36xx/dxe.c
-+++ b/drivers/net/wireless/ath/wcn36xx/dxe.c
-@@ -289,6 +289,11 @@ static int wcn36xx_dxe_fill_skb(struct device *dev, struct wcn36xx_dxe_ctl *ctl)
- skb_tail_pointer(skb),
- WCN36XX_PKT_SIZE,
- DMA_FROM_DEVICE);
-+ if (dma_mapping_error(dev, dxe->dst_addr_l)) {
-+ dev_err(dev, "unable to map skb\n");
-+ kfree_skb(skb);
-+ return -ENOMEM;
-+ }
- ctl->skb = skb;
-
- return 0;
---
-2.13.0
-
diff --git a/qxl-fixes.patch b/qxl-fixes.patch
index 558204ac5..933f27c4a 100644
--- a/qxl-fixes.patch
+++ b/qxl-fixes.patch
@@ -1,133 +1,201 @@
-From c463b4ad6b2ac5a40c959e6c636eafc7edb1a63b Mon Sep 17 00:00:00 2001
+From 56cbcb6c41932b19ef0d838f1ff25a662a2e403d Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Wed, 6 Sep 2017 11:31:51 +0200
-Subject: qxl: fix primary surface handling
+Date: Thu, 19 Oct 2017 08:21:49 +0200
+Subject: [PATCH] drm/qxl: replace QXL_INFO with DRM_DEBUG_DRIVER
-The atomic conversion of the qxl driver didn't got the primary surface
-handling completely right. It works in the common simple cases, but
-fails for example when changing the display resolution using xrandr or
-in multihead setups.
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/20171019062150.28090-2-kraxel@redhat.com
+---
+ drivers/gpu/drm/qxl/qxl_cmd.c | 16 +++++++---------
+ drivers/gpu/drm/qxl/qxl_drv.h | 26 +-------------------------
+ drivers/gpu/drm/qxl/qxl_fb.c | 13 +++++--------
+ drivers/gpu/drm/qxl/qxl_release.c | 5 ++---
+ drivers/gpu/drm/qxl/qxl_ttm.c | 4 ++--
+ 5 files changed, 17 insertions(+), 47 deletions(-)
-The rules are simple: There is one primary surface. Before defining a
-new one you have to destroy the old one.
+diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cmd.c
+index 74fc9362ecf9..8ec53d5abd62 100644
+--- a/drivers/gpu/drm/qxl/qxl_cmd.c
++++ b/drivers/gpu/drm/qxl/qxl_cmd.c
+@@ -219,7 +219,7 @@ int qxl_garbage_collect(struct qxl_device *qdev)
+ union qxl_release_info *info;
-This patch makes qxl_primary_atomic_update() destroy the primary surface
-before defining a new one. It fixes is_primary flag updates. It adds
-is_primary checks so we don't try to update the primary surface in case
-it already has the state we want it being in.
+ while (qxl_ring_pop(qdev->release_ring, &id)) {
+- QXL_INFO(qdev, "popped %lld\n", id);
++ DRM_DEBUG_DRIVER("popped %lld\n", id);
+ while (id) {
+ release = qxl_release_from_id_locked(qdev, id);
+ if (release == NULL)
+@@ -229,8 +229,8 @@ int qxl_garbage_collect(struct qxl_device *qdev)
+ next_id = info->next;
+ qxl_release_unmap(qdev, release, info);
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- drivers/gpu/drm/qxl/qxl_display.c | 34 +++++++++++++++++++---------------
- 1 file changed, 19 insertions(+), 15 deletions(-)
+- QXL_INFO(qdev, "popped %lld, next %lld\n", id,
+- next_id);
++ DRM_DEBUG_DRIVER("popped %lld, next %lld\n", id,
++ next_id);
-diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
-index 03fe182..7babdd8f 100644
---- a/drivers/gpu/drm/qxl/qxl_display.c
-+++ b/drivers/gpu/drm/qxl/qxl_display.c
-@@ -512,23 +512,25 @@ static void qxl_primary_atomic_update(struct drm_plane *plane,
- .y2 = qfb->base.height
- };
-
-- if (!old_state->fb) {
-- qxl_io_log(qdev,
-- "create primary fb: %dx%d,%d,%d\n",
-- bo->surf.width, bo->surf.height,
-- bo->surf.stride, bo->surf.format);
-+ if (old_state->fb) {
-+ qfb_old = to_qxl_framebuffer(old_state->fb);
-+ bo_old = gem_to_qxl_bo(qfb_old->obj);
-+ } else {
-+ bo_old = NULL;
-+ }
-
-- qxl_io_create_primary(qdev, 0, bo);
-- bo->is_primary = true;
-+ if (bo == bo_old)
- return;
-
-- } else {
-- qfb_old = to_qxl_framebuffer(old_state->fb);
-- bo_old = gem_to_qxl_bo(qfb_old->obj);
-+ if (bo_old && bo_old->is_primary) {
-+ qxl_io_destroy_primary(qdev);
- bo_old->is_primary = false;
+ switch (release->type) {
+ case QXL_RELEASE_DRAWABLE:
+@@ -248,7 +248,7 @@ int qxl_garbage_collect(struct qxl_device *qdev)
+ }
}
-
-- bo->is_primary = true;
-+ if (!bo->is_primary) {
-+ qxl_io_create_primary(qdev, 0, bo);
-+ bo->is_primary = true;
-+ }
- qxl_draw_dirty_fb(qdev, qfb, bo, 0, 0, &norect, 1, 1);
+
+- QXL_INFO(qdev, "%s: %d\n", __func__, i);
++ DRM_DEBUG_DRIVER("%d\n", i);
+
+ return i;
}
-
-@@ -537,13 +539,15 @@ static void qxl_primary_atomic_disable(struct drm_plane *plane,
+@@ -381,8 +381,7 @@ void qxl_io_create_primary(struct qxl_device *qdev,
{
- struct qxl_device *qdev = plane->dev->dev_private;
-
-- if (old_state->fb)
-- { struct qxl_framebuffer *qfb =
-+ if (old_state->fb) {
-+ struct qxl_framebuffer *qfb =
- to_qxl_framebuffer(old_state->fb);
- struct qxl_bo *bo = gem_to_qxl_bo(qfb->obj);
-
-- qxl_io_destroy_primary(qdev);
-- bo->is_primary = false;
-+ if (bo->is_primary) {
-+ qxl_io_destroy_primary(qdev);
-+ bo->is_primary = false;
-+ }
- }
+ struct qxl_surface_create *create;
+
+- QXL_INFO(qdev, "%s: qdev %p, ram_header %p\n", __func__, qdev,
+- qdev->ram_header);
++ DRM_DEBUG_DRIVER("qdev %p, ram_header %p\n", qdev, qdev->ram_header);
+ create = &qdev->ram_header->create_surface;
+ create->format = bo->surf.format;
+ create->width = bo->surf.width;
+@@ -390,8 +389,7 @@ void qxl_io_create_primary(struct qxl_device *qdev,
+ create->stride = bo->surf.stride;
+ create->mem = qxl_bo_physical_address(qdev, bo, offset);
+
+- QXL_INFO(qdev, "%s: mem = %llx, from %p\n", __func__, create->mem,
+- bo->kptr);
++ DRM_DEBUG_DRIVER("mem = %llx, from %p\n", create->mem, bo->kptr);
+
+ create->flags = QXL_SURF_FLAG_KEEP_DATA;
+ create->type = QXL_SURF_TYPE_PRIMARY;
+@@ -401,7 +399,7 @@ void qxl_io_create_primary(struct qxl_device *qdev,
+
+ void qxl_io_memslot_add(struct qxl_device *qdev, uint8_t id)
+ {
+- QXL_INFO(qdev, "qxl_memslot_add %d\n", id);
++ DRM_DEBUG_DRIVER("qxl_memslot_add %d\n", id);
+ wait_for_io_cmd(qdev, id, QXL_IO_MEMSLOT_ADD_ASYNC);
}
-
---
-cgit v0.12
-From 05026e6e19b29104ddba4e8979e6c7af17944695 Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Fri, 15 Sep 2017 12:46:15 +0200
-Subject: [testing] qxl: fix pinning
+diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
+index 3397a1907336..d707b351875c 100644
+--- a/drivers/gpu/drm/qxl/qxl_drv.h
++++ b/drivers/gpu/drm/qxl/qxl_drv.h
+@@ -62,33 +62,9 @@
-cleanup_fb() unpins the just activated framebuffer instead of the
-old one. Oops.
+ #define QXL_DEBUGFS_MAX_COMPONENTS 32
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- drivers/gpu/drm/qxl/qxl_display.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
+-extern int qxl_log_level;
+ extern int qxl_num_crtc;
+ extern int qxl_max_ioctls;
-diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
-index 7babdd8f..afc2272 100644
---- a/drivers/gpu/drm/qxl/qxl_display.c
-+++ b/drivers/gpu/drm/qxl/qxl_display.c
-@@ -705,14 +705,15 @@ static void qxl_plane_cleanup_fb(struct drm_plane *plane,
- struct drm_gem_object *obj;
- struct qxl_bo *user_bo;
-
-- if (!plane->state->fb) {
-- /* we never executed prepare_fb, so there's nothing to
-+ if (!old_state->fb) {
-+ /*
-+ * we never executed prepare_fb, so there's nothing to
- * unpin.
- */
- return;
+-enum {
+- QXL_INFO_LEVEL = 1,
+- QXL_DEBUG_LEVEL = 2,
+-};
+-
+-#define QXL_INFO(qdev, fmt, ...) do { \
+- if (qxl_log_level >= QXL_INFO_LEVEL) { \
+- qxl_io_log(qdev, fmt, __VA_ARGS__); \
+- } \
+- } while (0)
+-#define QXL_DEBUG(qdev, fmt, ...) do { \
+- if (qxl_log_level >= QXL_DEBUG_LEVEL) { \
+- qxl_io_log(qdev, fmt, __VA_ARGS__); \
+- } \
+- } while (0)
+-#define QXL_INFO_ONCE(qdev, fmt, ...) do { \
+- static int done; \
+- if (!done) { \
+- done = 1; \
+- QXL_INFO(qdev, fmt, __VA_ARGS__); \
+- } \
+- } while (0)
+-
+ #define DRM_FILE_OFFSET 0x100000000ULL
+ #define DRM_FILE_PAGE_OFFSET (DRM_FILE_OFFSET >> PAGE_SHIFT)
+
+@@ -351,7 +327,7 @@ int qxl_check_idle(struct qxl_ring *ring);
+ static inline void *
+ qxl_fb_virtual_address(struct qxl_device *qdev, unsigned long physical)
+ {
+- QXL_INFO(qdev, "not implemented (%lu)\n", physical);
++ DRM_DEBUG_DRIVER("not implemented (%lu)\n", physical);
+ return 0;
+ }
+
+diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
+index 844c4a31ca13..23af3e352673 100644
+--- a/drivers/gpu/drm/qxl/qxl_fb.c
++++ b/drivers/gpu/drm/qxl/qxl_fb.c
+@@ -240,18 +240,15 @@ static int qxlfb_create(struct qxl_fbdev *qfbdev,
+ return ret;
+
+ qbo = gem_to_qxl_bo(gobj);
+- QXL_INFO(qdev, "%s: %dx%d %d\n", __func__, mode_cmd.width,
+- mode_cmd.height, mode_cmd.pitches[0]);
++ DRM_DEBUG_DRIVER("%dx%d %d\n", mode_cmd.width,
++ mode_cmd.height, mode_cmd.pitches[0]);
+
+ shadow = vmalloc(mode_cmd.pitches[0] * mode_cmd.height);
+ /* TODO: what's the usual response to memory allocation errors? */
+ BUG_ON(!shadow);
+- QXL_INFO(qdev,
+- "surface0 at gpu offset %lld, mmap_offset %lld (virt %p, shadow %p)\n",
+- qxl_bo_gpu_offset(qbo),
+- qxl_bo_mmap_offset(qbo),
+- qbo->kptr,
+- shadow);
++ DRM_DEBUG_DRIVER("surface0 at gpu offset %lld, mmap_offset %lld (virt %p, shadow %p)\n",
++ qxl_bo_gpu_offset(qbo), qxl_bo_mmap_offset(qbo),
++ qbo->kptr, shadow);
+ size = mode_cmd.pitches[0] * mode_cmd.height;
+
+ info = drm_fb_helper_alloc_fbi(&qfbdev->helper);
+diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c
+index e6ec845b5be0..a6da6fa6ad58 100644
+--- a/drivers/gpu/drm/qxl/qxl_release.c
++++ b/drivers/gpu/drm/qxl/qxl_release.c
+@@ -154,7 +154,7 @@ qxl_release_alloc(struct qxl_device *qdev, int type,
+ return handle;
}
-
-- obj = to_qxl_framebuffer(plane->state->fb)->obj;
-+ obj = to_qxl_framebuffer(old_state->fb)->obj;
- user_bo = gem_to_qxl_bo(obj);
- qxl_bo_unpin(user_bo);
+ *ret = release;
+- QXL_INFO(qdev, "allocated release %d\n", handle);
++ DRM_DEBUG_DRIVER("allocated release %d\n", handle);
+ release->id = handle;
+ return handle;
}
+@@ -179,8 +179,7 @@ void
+ qxl_release_free(struct qxl_device *qdev,
+ struct qxl_release *release)
+ {
+- QXL_INFO(qdev, "release %d, type %d\n", release->id,
+- release->type);
++ DRM_DEBUG_DRIVER("release %d, type %d\n", release->id, release->type);
+
+ if (release->surface_release_id)
+ qxl_surface_id_dealloc(qdev, release->surface_release_id);
+diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
+index 7ecf8a4b9fe6..ab4823875311 100644
+--- a/drivers/gpu/drm/qxl/qxl_ttm.c
++++ b/drivers/gpu/drm/qxl/qxl_ttm.c
+@@ -136,8 +136,8 @@ int qxl_mmap(struct file *filp, struct vm_area_struct *vma)
+ "filp->private_data->minor->dev->dev_private == NULL\n");
+ return -EINVAL;
+ }
+- QXL_INFO(qdev, "%s: filp->private_data = 0x%p, vma->vm_pgoff = %lx\n",
+- __func__, filp->private_data, vma->vm_pgoff);
++ DRM_DEBUG_DRIVER("filp->private_data = 0x%p, vma->vm_pgoff = %lx\n",
++ filp->private_data, vma->vm_pgoff);
+
+ r = ttm_bo_mmap(filp, vma, &qdev->mman.bdev);
+ if (unlikely(r != 0))
--
-cgit v0.12
+2.14.3
-From 7a39a01887acc66d9b318d5e5898cf00d323eb8f Mon Sep 17 00:00:00 2001
+From 62676d10b483a2ff6e8b08c5e7c7d63a831343f5 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Wed, 18 Oct 2017 13:18:40 +0200
-Subject: qxl: alloc & use shadow for dumb buffers
+Date: Thu, 19 Oct 2017 08:21:50 +0200
+Subject: [PATCH] qxl: alloc & use shadow for dumb buffers
This patch changes the way the primary surface is used for dumb
framebuffers. Instead of configuring the bo itself as primary surface
@@ -148,6 +216,8 @@ case qemu is asked to write out a dump of the guest display (screendump
monitor command).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/20171019062150.28090-3-kraxel@redhat.com
---
drivers/gpu/drm/qxl/qxl_cmd.c | 6 ++++-
drivers/gpu/drm/qxl/qxl_display.c | 49 ++++++++++++++++++++++++++++++++++++---
@@ -156,10 +226,10 @@ Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
4 files changed, 54 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cmd.c
-index 74fc936..3eb9208 100644
+index 8ec53d5abd62..c0fb52c6d4ca 100644
--- a/drivers/gpu/drm/qxl/qxl_cmd.c
+++ b/drivers/gpu/drm/qxl/qxl_cmd.c
-@@ -388,7 +388,11 @@ void qxl_io_create_primary(struct qxl_device *qdev,
+@@ -387,7 +387,11 @@ void qxl_io_create_primary(struct qxl_device *qdev,
create->width = bo->surf.width;
create->height = bo->surf.height;
create->stride = bo->surf.stride;
@@ -170,10 +240,10 @@ index 74fc936..3eb9208 100644
+ create->mem = qxl_bo_physical_address(qdev, bo, offset);
+ }
- QXL_INFO(qdev, "%s: mem = %llx, from %p\n", __func__, create->mem,
- bo->kptr);
+ DRM_DEBUG_DRIVER("mem = %llx, from %p\n", create->mem, bo->kptr);
+
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
-index afc2272..da6648e 100644
+index afbf50d0c08f..4756b3c9bf2c 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -305,7 +305,9 @@ static const struct drm_crtc_funcs qxl_crtc_funcs = {
@@ -186,7 +256,7 @@ index afc2272..da6648e 100644
drm_gem_object_unreference_unlocked(qxl_fb->obj);
drm_framebuffer_cleanup(fb);
kfree(qxl_fb);
-@@ -511,6 +513,7 @@ static void qxl_primary_atomic_update(struct drm_plane *plane,
+@@ -508,6 +510,7 @@ static void qxl_primary_atomic_update(struct drm_plane *plane,
.x2 = qfb->base.width,
.y2 = qfb->base.height
};
@@ -194,7 +264,7 @@ index afc2272..da6648e 100644
if (old_state->fb) {
qfb_old = to_qxl_framebuffer(old_state->fb);
-@@ -522,15 +525,23 @@ static void qxl_primary_atomic_update(struct drm_plane *plane,
+@@ -519,15 +522,23 @@ static void qxl_primary_atomic_update(struct drm_plane *plane,
if (bo == bo_old)
return;
@@ -220,9 +290,9 @@ index afc2272..da6648e 100644
qxl_draw_dirty_fb(qdev, qfb, bo, 0, 0, &norect, 1, 1);
}
-@@ -682,8 +693,9 @@ void qxl_cursor_atomic_disable(struct drm_plane *plane,
- int qxl_plane_prepare_fb(struct drm_plane *plane,
- struct drm_plane_state *new_state)
+@@ -679,8 +690,9 @@ static void qxl_cursor_atomic_disable(struct drm_plane *plane,
+ static int qxl_plane_prepare_fb(struct drm_plane *plane,
+ struct drm_plane_state *new_state)
{
+ struct qxl_device *qdev = plane->dev->dev_private;
struct drm_gem_object *obj;
@@ -231,7 +301,7 @@ index afc2272..da6648e 100644
int ret;
if (!new_state->fb)
-@@ -692,6 +704,32 @@ int qxl_plane_prepare_fb(struct drm_plane *plane,
+@@ -689,6 +701,32 @@ static int qxl_plane_prepare_fb(struct drm_plane *plane,
obj = to_qxl_framebuffer(new_state->fb)->obj;
user_bo = gem_to_qxl_bo(obj);
@@ -264,7 +334,7 @@ index afc2272..da6648e 100644
ret = qxl_bo_pin(user_bo, QXL_GEM_DOMAIN_CPU, NULL);
if (ret)
return ret;
-@@ -716,6 +754,11 @@ static void qxl_plane_cleanup_fb(struct drm_plane *plane,
+@@ -713,6 +751,11 @@ static void qxl_plane_cleanup_fb(struct drm_plane *plane,
obj = to_qxl_framebuffer(old_state->fb)->obj;
user_bo = gem_to_qxl_bo(obj);
qxl_bo_unpin(user_bo);
@@ -277,10 +347,10 @@ index afc2272..da6648e 100644
static const uint32_t qxl_cursor_plane_formats[] = {
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
-index 3591d23..b5e9dc6 100644
+index d707b351875c..08752c0ffb35 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.h
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
-@@ -112,6 +112,8 @@ struct qxl_bo {
+@@ -89,6 +89,8 @@ struct qxl_bo {
/* Constant after initialization */
struct drm_gem_object gem_base;
bool is_primary; /* is this now a primary surface */
@@ -290,7 +360,7 @@ index 3591d23..b5e9dc6 100644
struct qxl_surface surf;
uint32_t surface_id;
diff --git a/drivers/gpu/drm/qxl/qxl_dumb.c b/drivers/gpu/drm/qxl/qxl_dumb.c
-index 5e65d5d..11085ab 100644
+index 5e65d5d2d937..11085ab01374 100644
--- a/drivers/gpu/drm/qxl/qxl_dumb.c
+++ b/drivers/gpu/drm/qxl/qxl_dumb.c
@@ -63,6 +63,7 @@ int qxl_mode_dumb_create(struct drm_file *file_priv,
@@ -302,5 +372,5 @@ index 5e65d5d..11085ab 100644
args->handle = handle;
return 0;
--
-2.13.5
+2.14.3
diff --git a/qxl_cursor_fix.patch b/qxl_cursor_fix.patch
deleted file mode 100644
index 8d59cb48b..000000000
--- a/qxl_cursor_fix.patch
+++ /dev/null
@@ -1,565 +0,0 @@
-From fda212272d75dd46a53bdeba9466c6f7db7ee3fa Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Fri, 17 Nov 2017 15:08:05 -0500
-Subject: [PATCH 1/2] drm/qxl: unref cursor bo when finished with it
-
-qxl_cursor_atomic_update allocs a bo for the cursor that
-it never frees up at the end of the function.
-
-This commit fixes that.
-
-Signed-off-by: Ray Strode <rstrode@redhat.com>
----
- drivers/gpu/drm/qxl/qxl_display.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
-index da6648e75374..dab9f860626f 100644
---- a/drivers/gpu/drm/qxl/qxl_display.c
-+++ b/drivers/gpu/drm/qxl/qxl_display.c
-@@ -551,61 +551,61 @@ static void qxl_primary_atomic_disable(struct drm_plane *plane,
- struct qxl_device *qdev = plane->dev->dev_private;
-
- if (old_state->fb) {
- struct qxl_framebuffer *qfb =
- to_qxl_framebuffer(old_state->fb);
- struct qxl_bo *bo = gem_to_qxl_bo(qfb->obj);
-
- if (bo->is_primary) {
- qxl_io_destroy_primary(qdev);
- bo->is_primary = false;
- }
- }
- }
-
- int qxl_plane_atomic_check(struct drm_plane *plane,
- struct drm_plane_state *state)
- {
- return 0;
- }
-
- static void qxl_cursor_atomic_update(struct drm_plane *plane,
- struct drm_plane_state *old_state)
- {
- struct drm_device *dev = plane->dev;
- struct qxl_device *qdev = dev->dev_private;
- struct drm_framebuffer *fb = plane->state->fb;
- struct qxl_release *release;
- struct qxl_cursor_cmd *cmd;
- struct qxl_cursor *cursor;
- struct drm_gem_object *obj;
-- struct qxl_bo *cursor_bo, *user_bo = NULL;
-+ struct qxl_bo *cursor_bo = NULL, *user_bo = NULL;
- int ret;
- void *user_ptr;
- int size = 64*64*4;
-
- ret = qxl_alloc_release_reserved(qdev, sizeof(*cmd),
- QXL_RELEASE_CURSOR_CMD,
- &release, NULL);
- if (ret)
- return;
-
- if (fb != old_state->fb) {
- obj = to_qxl_framebuffer(fb)->obj;
- user_bo = gem_to_qxl_bo(obj);
-
- /* pinning is done in the prepare/cleanup framevbuffer */
- ret = qxl_bo_kmap(user_bo, &user_ptr);
- if (ret)
- goto out_free_release;
-
- ret = qxl_alloc_bo_reserved(qdev, release,
- sizeof(struct qxl_cursor) + size,
- &cursor_bo);
- if (ret)
- goto out_kunmap;
-
- ret = qxl_release_reserve_list(release, true);
- if (ret)
- goto out_free_bo;
-
- ret = qxl_bo_kmap(cursor_bo, (void **)&cursor);
-@@ -621,60 +621,62 @@ static void qxl_cursor_atomic_update(struct drm_plane *plane,
- cursor->data_size = size;
- cursor->chunk.next_chunk = 0;
- cursor->chunk.prev_chunk = 0;
- cursor->chunk.data_size = size;
- memcpy(cursor->chunk.data, user_ptr, size);
- qxl_bo_kunmap(cursor_bo);
- qxl_bo_kunmap(user_bo);
-
- cmd = (struct qxl_cursor_cmd *) qxl_release_map(qdev, release);
- cmd->u.set.visible = 1;
- cmd->u.set.shape = qxl_bo_physical_address(qdev,
- cursor_bo, 0);
- cmd->type = QXL_CURSOR_SET;
- } else {
-
- ret = qxl_release_reserve_list(release, true);
- if (ret)
- goto out_free_release;
-
- cmd = (struct qxl_cursor_cmd *) qxl_release_map(qdev, release);
- cmd->type = QXL_CURSOR_MOVE;
- }
-
- cmd->u.position.x = plane->state->crtc_x + fb->hot_x;
- cmd->u.position.y = plane->state->crtc_y + fb->hot_y;
-
- qxl_release_unmap(qdev, release, &cmd->release_info);
- qxl_push_cursor_ring_release(qdev, release, QXL_CMD_CURSOR, false);
- qxl_release_fence_buffer_objects(release);
-
-+ qxl_bo_unref (&cursor_bo);
-+
- return;
-
- out_backoff:
- qxl_release_backoff_reserve_list(release);
- out_free_bo:
- qxl_bo_unref(&cursor_bo);
- out_kunmap:
- qxl_bo_kunmap(user_bo);
- out_free_release:
- qxl_release_free(qdev, release);
- return;
-
- }
-
- void qxl_cursor_atomic_disable(struct drm_plane *plane,
- struct drm_plane_state *old_state)
- {
- struct qxl_device *qdev = plane->dev->dev_private;
- struct qxl_release *release;
- struct qxl_cursor_cmd *cmd;
- int ret;
-
- ret = qxl_alloc_release_reserved(qdev, sizeof(*cmd),
- QXL_RELEASE_CURSOR_CMD,
- &release, NULL);
- if (ret)
- return;
-
- ret = qxl_release_reserve_list(release, true);
- if (ret) {
---
-2.14.3
-
-
-From c779c917be6cd38a0c39ebb10f75f223efc5ffef Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Fri, 17 Nov 2017 14:49:46 -0500
-Subject: [PATCH 2/2] drm/qxl: reapply cursor after resetting primary
-
-QXL associates mouse state with its primary plane.
-
-Destroying a primary plane and putting a new one
-in place has the side effect of destroying the cursor
-as well.
-
-This commit changes the driver to reapply the cursor
-any time a new primary is created. It achieves this
-by keeping a reference to the cursor bo on the qxl_crtc
-struct.
-
-This fix is very similar to commit 4532b241a4b which
-got implicitly reverted as part of implementing the
-atomic modeset feature.
-
-Signed-off-by: Ray Strode <rstrode@redhat.com>
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1512097
----
- drivers/gpu/drm/qxl/qxl_display.c | 59 +++++++++++++++++++++++++++++++++++++++
- drivers/gpu/drm/qxl/qxl_drv.h | 2 ++
- 2 files changed, 61 insertions(+)
-
-diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
-index dab9f860626f..ef5c3a83130f 100644
---- a/drivers/gpu/drm/qxl/qxl_display.c
-+++ b/drivers/gpu/drm/qxl/qxl_display.c
-@@ -262,60 +262,61 @@ static int qxl_add_common_modes(struct drm_connector *connector,
- mode = drm_cvt_mode(dev, common_modes[i].w, common_modes[i].h,
- 60, false, false, false);
- if (common_modes[i].w == pwidth && common_modes[i].h == pheight)
- mode->type |= DRM_MODE_TYPE_PREFERRED;
- drm_mode_probed_add(connector, mode);
- }
- return i - 1;
- }
-
- static void qxl_crtc_atomic_flush(struct drm_crtc *crtc,
- struct drm_crtc_state *old_crtc_state)
- {
- struct drm_device *dev = crtc->dev;
- struct drm_pending_vblank_event *event;
- unsigned long flags;
-
- if (crtc->state && crtc->state->event) {
- event = crtc->state->event;
- crtc->state->event = NULL;
-
- spin_lock_irqsave(&dev->event_lock, flags);
- drm_crtc_send_vblank_event(crtc, event);
- spin_unlock_irqrestore(&dev->event_lock, flags);
- }
- }
-
- static void qxl_crtc_destroy(struct drm_crtc *crtc)
- {
- struct qxl_crtc *qxl_crtc = to_qxl_crtc(crtc);
-
-+ qxl_bo_unref(&qxl_crtc->cursor_bo);
- drm_crtc_cleanup(crtc);
- kfree(qxl_crtc);
- }
-
- static const struct drm_crtc_funcs qxl_crtc_funcs = {
- .set_config = drm_atomic_helper_set_config,
- .destroy = qxl_crtc_destroy,
- .page_flip = drm_atomic_helper_page_flip,
- .reset = drm_atomic_helper_crtc_reset,
- .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
- .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
- };
-
- void qxl_user_framebuffer_destroy(struct drm_framebuffer *fb)
- {
- struct qxl_framebuffer *qxl_fb = to_qxl_framebuffer(fb);
- struct qxl_bo *bo = gem_to_qxl_bo(qxl_fb->obj);
-
- WARN_ON(bo->shadow);
- drm_gem_object_unreference_unlocked(qxl_fb->obj);
- drm_framebuffer_cleanup(fb);
- kfree(qxl_fb);
- }
-
- static int qxl_framebuffer_surface_dirty(struct drm_framebuffer *fb,
- struct drm_file *file_priv,
- unsigned flags, unsigned color,
- struct drm_clip_rect *clips,
- unsigned num_clips)
- {
-@@ -471,193 +472,251 @@ static void qxl_crtc_disable(struct drm_crtc *crtc)
- static const struct drm_crtc_helper_funcs qxl_crtc_helper_funcs = {
- .dpms = qxl_crtc_dpms,
- .disable = qxl_crtc_disable,
- .mode_fixup = qxl_crtc_mode_fixup,
- .mode_set_nofb = qxl_mode_set_nofb,
- .commit = qxl_crtc_commit,
- .atomic_flush = qxl_crtc_atomic_flush,
- };
-
- int qxl_primary_atomic_check(struct drm_plane *plane,
- struct drm_plane_state *state)
- {
- struct qxl_device *qdev = plane->dev->dev_private;
- struct qxl_framebuffer *qfb;
- struct qxl_bo *bo;
-
- if (!state->crtc || !state->fb)
- return 0;
-
- qfb = to_qxl_framebuffer(state->fb);
- bo = gem_to_qxl_bo(qfb->obj);
-
- if (bo->surf.stride * bo->surf.height > qdev->vram_size) {
- DRM_ERROR("Mode doesn't fit in vram size (vgamem)");
- return -EINVAL;
- }
-
- return 0;
- }
-
-+static int qxl_primary_apply_cursor(struct drm_plane *plane)
-+{
-+ struct drm_device *dev = plane->dev;
-+ struct qxl_device *qdev = dev->dev_private;
-+ struct drm_framebuffer *fb = plane->state->fb;
-+ struct qxl_crtc *qcrtc = to_qxl_crtc(plane->state->crtc);
-+ struct qxl_cursor_cmd *cmd;
-+ struct qxl_release *release;
-+ int ret = 0;
-+
-+ if (!qcrtc->cursor_bo)
-+ return 0;
-+
-+ ret = qxl_alloc_release_reserved(qdev, sizeof(*cmd),
-+ QXL_RELEASE_CURSOR_CMD,
-+ &release, NULL);
-+ if (ret)
-+ return ret;
-+
-+ ret = qxl_release_list_add(release, qcrtc->cursor_bo);
-+ if (ret)
-+ goto out_free_release;
-+
-+ ret = qxl_release_reserve_list(release, false);
-+ if (ret)
-+ goto out_free_release;
-+
-+ cmd = (struct qxl_cursor_cmd *)qxl_release_map(qdev, release);
-+ cmd->type = QXL_CURSOR_SET;
-+ cmd->u.set.position.x = plane->state->crtc_x + fb->hot_x;
-+ cmd->u.set.position.y = plane->state->crtc_y + fb->hot_y;
-+
-+ cmd->u.set.shape = qxl_bo_physical_address(qdev, qcrtc->cursor_bo, 0);
-+
-+ cmd->u.set.visible = 1;
-+ qxl_release_unmap(qdev, release, &cmd->release_info);
-+
-+ qxl_push_cursor_ring_release(qdev, release, QXL_CMD_CURSOR, false);
-+ qxl_release_fence_buffer_objects(release);
-+
-+ return ret;
-+
-+out_free_release:
-+ qxl_release_free(qdev, release);
-+ return ret;
-+}
-+
- static void qxl_primary_atomic_update(struct drm_plane *plane,
- struct drm_plane_state *old_state)
- {
- struct qxl_device *qdev = plane->dev->dev_private;
- struct qxl_framebuffer *qfb =
- to_qxl_framebuffer(plane->state->fb);
- struct qxl_framebuffer *qfb_old;
- struct qxl_bo *bo = gem_to_qxl_bo(qfb->obj);
- struct qxl_bo *bo_old;
- struct drm_clip_rect norect = {
- .x1 = 0,
- .y1 = 0,
- .x2 = qfb->base.width,
- .y2 = qfb->base.height
- };
-+ int ret;
- bool same_shadow = false;
-
- if (old_state->fb) {
- qfb_old = to_qxl_framebuffer(old_state->fb);
- bo_old = gem_to_qxl_bo(qfb_old->obj);
- } else {
- bo_old = NULL;
- }
-
- if (bo == bo_old)
- return;
-
- if (bo_old && bo_old->shadow && bo->shadow &&
- bo_old->shadow == bo->shadow) {
- same_shadow = true;
- }
-
- if (bo_old && bo_old->is_primary) {
- if (!same_shadow)
- qxl_io_destroy_primary(qdev);
- bo_old->is_primary = false;
-+
-+ ret = qxl_primary_apply_cursor(plane);
-+ if (ret) {
-+ DRM_ERROR("could not set cursor after creating primary");
-+ }
- }
-
- if (!bo->is_primary) {
- if (!same_shadow)
- qxl_io_create_primary(qdev, 0, bo);
- bo->is_primary = true;
- }
-
- qxl_draw_dirty_fb(qdev, qfb, bo, 0, 0, &norect, 1, 1);
- }
-
- static void qxl_primary_atomic_disable(struct drm_plane *plane,
- struct drm_plane_state *old_state)
- {
- struct qxl_device *qdev = plane->dev->dev_private;
-
- if (old_state->fb) {
- struct qxl_framebuffer *qfb =
- to_qxl_framebuffer(old_state->fb);
- struct qxl_bo *bo = gem_to_qxl_bo(qfb->obj);
-
- if (bo->is_primary) {
- qxl_io_destroy_primary(qdev);
- bo->is_primary = false;
- }
- }
- }
-
- int qxl_plane_atomic_check(struct drm_plane *plane,
- struct drm_plane_state *state)
- {
- return 0;
- }
-
- static void qxl_cursor_atomic_update(struct drm_plane *plane,
- struct drm_plane_state *old_state)
- {
- struct drm_device *dev = plane->dev;
- struct qxl_device *qdev = dev->dev_private;
- struct drm_framebuffer *fb = plane->state->fb;
-+ struct qxl_crtc *qcrtc = to_qxl_crtc(plane->state->crtc);
- struct qxl_release *release;
- struct qxl_cursor_cmd *cmd;
- struct qxl_cursor *cursor;
- struct drm_gem_object *obj;
- struct qxl_bo *cursor_bo = NULL, *user_bo = NULL;
- int ret;
- void *user_ptr;
- int size = 64*64*4;
-
- ret = qxl_alloc_release_reserved(qdev, sizeof(*cmd),
- QXL_RELEASE_CURSOR_CMD,
- &release, NULL);
- if (ret)
- return;
-
- if (fb != old_state->fb) {
- obj = to_qxl_framebuffer(fb)->obj;
- user_bo = gem_to_qxl_bo(obj);
-
- /* pinning is done in the prepare/cleanup framevbuffer */
- ret = qxl_bo_kmap(user_bo, &user_ptr);
- if (ret)
- goto out_free_release;
-
- ret = qxl_alloc_bo_reserved(qdev, release,
- sizeof(struct qxl_cursor) + size,
- &cursor_bo);
- if (ret)
- goto out_kunmap;
-
- ret = qxl_release_reserve_list(release, true);
- if (ret)
- goto out_free_bo;
-
- ret = qxl_bo_kmap(cursor_bo, (void **)&cursor);
- if (ret)
- goto out_backoff;
-
- cursor->header.unique = 0;
- cursor->header.type = SPICE_CURSOR_TYPE_ALPHA;
- cursor->header.width = 64;
- cursor->header.height = 64;
- cursor->header.hot_spot_x = fb->hot_x;
- cursor->header.hot_spot_y = fb->hot_y;
- cursor->data_size = size;
- cursor->chunk.next_chunk = 0;
- cursor->chunk.prev_chunk = 0;
- cursor->chunk.data_size = size;
- memcpy(cursor->chunk.data, user_ptr, size);
- qxl_bo_kunmap(cursor_bo);
- qxl_bo_kunmap(user_bo);
-
- cmd = (struct qxl_cursor_cmd *) qxl_release_map(qdev, release);
- cmd->u.set.visible = 1;
- cmd->u.set.shape = qxl_bo_physical_address(qdev,
- cursor_bo, 0);
- cmd->type = QXL_CURSOR_SET;
-+
-+ qxl_bo_unref (&qcrtc->cursor_bo);
-+ qcrtc->cursor_bo = cursor_bo;
-+ cursor_bo = NULL;
- } else {
-
- ret = qxl_release_reserve_list(release, true);
- if (ret)
- goto out_free_release;
-
- cmd = (struct qxl_cursor_cmd *) qxl_release_map(qdev, release);
- cmd->type = QXL_CURSOR_MOVE;
- }
-
- cmd->u.position.x = plane->state->crtc_x + fb->hot_x;
- cmd->u.position.y = plane->state->crtc_y + fb->hot_y;
-
- qxl_release_unmap(qdev, release, &cmd->release_info);
- qxl_push_cursor_ring_release(qdev, release, QXL_CMD_CURSOR, false);
- qxl_release_fence_buffer_objects(release);
-
- qxl_bo_unref (&cursor_bo);
-
- return;
-
- out_backoff:
- qxl_release_backoff_reserve_list(release);
- out_free_bo:
- qxl_bo_unref(&cursor_bo);
- out_kunmap:
- qxl_bo_kunmap(user_bo);
- out_free_release:
- qxl_release_free(qdev, release);
- return;
-diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
-index b5e9dc6eebac..d3e2373ef821 100644
---- a/drivers/gpu/drm/qxl/qxl_drv.h
-+++ b/drivers/gpu/drm/qxl/qxl_drv.h
-@@ -107,60 +107,62 @@ struct qxl_bo {
- struct ttm_bo_kmap_obj kmap;
- unsigned pin_count;
- void *kptr;
- int type;
-
- /* Constant after initialization */
- struct drm_gem_object gem_base;
- bool is_primary; /* is this now a primary surface */
- bool is_dumb;
- struct qxl_bo *shadow;
- bool hw_surf_alloc;
- struct qxl_surface surf;
- uint32_t surface_id;
- struct qxl_release *surf_create;
- };
- #define gem_to_qxl_bo(gobj) container_of((gobj), struct qxl_bo, gem_base)
- #define to_qxl_bo(tobj) container_of((tobj), struct qxl_bo, tbo)
-
- struct qxl_gem {
- struct mutex mutex;
- struct list_head objects;
- };
-
- struct qxl_bo_list {
- struct ttm_validate_buffer tv;
- };
-
- struct qxl_crtc {
- struct drm_crtc base;
- int index;
-+
-+ struct qxl_bo *cursor_bo;
- };
-
- struct qxl_output {
- int index;
- struct drm_connector base;
- struct drm_encoder enc;
- };
-
- struct qxl_framebuffer {
- struct drm_framebuffer base;
- struct drm_gem_object *obj;
- };
-
- #define to_qxl_crtc(x) container_of(x, struct qxl_crtc, base)
- #define drm_connector_to_qxl_output(x) container_of(x, struct qxl_output, base)
- #define drm_encoder_to_qxl_output(x) container_of(x, struct qxl_output, enc)
- #define to_qxl_framebuffer(x) container_of(x, struct qxl_framebuffer, base)
-
- struct qxl_mman {
- struct ttm_bo_global_ref bo_global_ref;
- struct drm_global_reference mem_global_ref;
- bool mem_global_referenced;
- struct ttm_bo_device bdev;
- };
-
- struct qxl_mode_info {
- bool mode_config_initialized;
-
- /* pointer to fbdev info structure */
- struct qxl_fbdev *qfbdev;
---
-2.14.3
-
diff --git a/selinux-Generalize-support-for-NNP-nosuid-SELinux-do.patch b/selinux-Generalize-support-for-NNP-nosuid-SELinux-do.patch
deleted file mode 100644
index 797566c8d..000000000
--- a/selinux-Generalize-support-for-NNP-nosuid-SELinux-do.patch
+++ /dev/null
@@ -1,220 +0,0 @@
-From af63f4193f9fbbbac50fc766417d74735afd87ef Mon Sep 17 00:00:00 2001
-From: Stephen Smalley <sds@tycho.nsa.gov>
-Date: Mon, 31 Jul 2017 10:12:46 -0400
-Subject: [PATCH] selinux: Generalize support for NNP/nosuid SELinux domain
- transitions
-
-As systemd ramps up enabling NNP (NoNewPrivileges) for system services,
-it is increasingly breaking SELinux domain transitions for those services
-and their descendants. systemd enables NNP not only for services whose
-unit files explicitly specify NoNewPrivileges=yes but also for services
-whose unit files specify any of the following options in combination with
-running without CAP_SYS_ADMIN (e.g. specifying User= or a
-CapabilityBoundingSet= without CAP_SYS_ADMIN): SystemCallFilter=,
-SystemCallArchitectures=, RestrictAddressFamilies=, RestrictNamespaces=,
-PrivateDevices=, ProtectKernelTunables=, ProtectKernelModules=,
-MemoryDenyWriteExecute=, or RestrictRealtime= as per the systemd.exec(5)
-man page.
-
-The end result is bad for the security of both SELinux-disabled and
-SELinux-enabled systems. Packagers have to turn off these
-options in the unit files to preserve SELinux domain transitions. For
-users who choose to disable SELinux, this means that they miss out on
-at least having the systemd-supported protections. For users who keep
-SELinux enabled, they may still be missing out on some protections
-because it isn't necessarily guaranteed that the SELinux policy for
-that service provides the same protections in all cases.
-
-commit 7b0d0b40cd78 ("selinux: Permit bounded transitions under
-NO_NEW_PRIVS or NOSUID.") allowed bounded transitions under NNP in
-order to support limited usage for sandboxing programs. However,
-defining typebounds for all of the affected service domains
-is impractical to implement in policy, since typebounds requires us
-to ensure that each domain is allowed everything all of its descendant
-domains are allowed, and this has to be repeated for the entire chain
-of domain transitions. There is no way to clone all allow rules from
-descendants to their ancestors in policy currently, and doing so would
-be undesirable even if it were practical, as it requires leaking
-permissions to objects and operations into ancestor domains that could
-weaken their own security in order to allow them to the descendants
-(e.g. if a descendant requires execmem permission, then so do all of
-its ancestors; if a descendant requires execute permission to a file,
-then so do all of its ancestors; if a descendant requires read to a
-symbolic link or temporary file, then so do all of its ancestors...).
-SELinux domains are intentionally not hierarchical / bounded in this
-manner normally, and making them so would undermine their protections
-and least privilege.
-
-We have long had a similar tension with SELinux transitions and nosuid
-mounts, albeit not as severe. Users often have had to choose between
-retaining nosuid on a mount and allowing SELinux domain transitions on
-files within those mounts. This likewise leads to unfortunate tradeoffs
-in security.
-
-Decouple NNP/nosuid from SELinux transitions, so that we don't have to
-make a choice between them. Introduce a nnp_nosuid_transition policy
-capability that enables transitions under NNP/nosuid to be based on
-a permission (nnp_transition for NNP; nosuid_transition for nosuid)
-between the old and new contexts in addition to the current support
-for bounded transitions. Domain transitions can then be allowed in
-policy without requiring the parent to be a strict superset of all of
-its children.
-
-With this change, systemd unit files can be left unmodified from upstream.
-SELinux-disabled and SELinux-enabled users will benefit from retaining any
-of the systemd-provided protections. SELinux policy will only need to
-be adapted to enable the new policy capability and to allow the
-new permissions between domain pairs as appropriate.
-
-NB: Allowing nnp_transition between two contexts opens up the potential
-for the old context to subvert the new context by installing seccomp
-filters before the execve. Allowing nosuid_transition between two contexts
-opens up the potential for a context transition to occur on a file from
-an untrusted filesystem (e.g. removable media or remote filesystem). Use
-with care.
-
-Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
-Signed-off-by: Paul Moore <paul@paul-moore.com>
----
- security/selinux/hooks.c | 47 +++++++++++++++++++++++++------------
- security/selinux/include/classmap.h | 2 ++
- security/selinux/include/security.h | 2 ++
- security/selinux/ss/services.c | 7 +++++-
- 4 files changed, 42 insertions(+), 16 deletions(-)
-
-diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
-index 00ad46e166f6..04b8e1082c9a 100644
---- a/security/selinux/hooks.c
-+++ b/security/selinux/hooks.c
-@@ -2318,6 +2318,7 @@ static int check_nnp_nosuid(const struct linux_binprm *bprm,
- int nnp = (bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS);
- int nosuid = !mnt_may_suid(bprm->file->f_path.mnt);
- int rc;
-+ u32 av;
-
- if (!nnp && !nosuid)
- return 0; /* neither NNP nor nosuid */
-@@ -2326,24 +2327,40 @@ static int check_nnp_nosuid(const struct linux_binprm *bprm,
- return 0; /* No change in credentials */
-
- /*
-- * The only transitions we permit under NNP or nosuid
-- * are transitions to bounded SIDs, i.e. SIDs that are
-- * guaranteed to only be allowed a subset of the permissions
-- * of the current SID.
-+ * If the policy enables the nnp_nosuid_transition policy capability,
-+ * then we permit transitions under NNP or nosuid if the
-+ * policy allows the corresponding permission between
-+ * the old and new contexts.
- */
-- rc = security_bounded_transition(old_tsec->sid, new_tsec->sid);
-- if (rc) {
-- /*
-- * On failure, preserve the errno values for NNP vs nosuid.
-- * NNP: Operation not permitted for caller.
-- * nosuid: Permission denied to file.
-- */
-+ if (selinux_policycap_nnp_nosuid_transition) {
-+ av = 0;
- if (nnp)
-- return -EPERM;
-- else
-- return -EACCES;
-+ av |= PROCESS2__NNP_TRANSITION;
-+ if (nosuid)
-+ av |= PROCESS2__NOSUID_TRANSITION;
-+ rc = avc_has_perm(old_tsec->sid, new_tsec->sid,
-+ SECCLASS_PROCESS2, av, NULL);
-+ if (!rc)
-+ return 0;
- }
-- return 0;
-+
-+ /*
-+ * We also permit NNP or nosuid transitions to bounded SIDs,
-+ * i.e. SIDs that are guaranteed to only be allowed a subset
-+ * of the permissions of the current SID.
-+ */
-+ rc = security_bounded_transition(old_tsec->sid, new_tsec->sid);
-+ if (!rc)
-+ return 0;
-+
-+ /*
-+ * On failure, preserve the errno values for NNP vs nosuid.
-+ * NNP: Operation not permitted for caller.
-+ * nosuid: Permission denied to file.
-+ */
-+ if (nnp)
-+ return -EPERM;
-+ return -EACCES;
- }
-
- static int selinux_bprm_set_creds(struct linux_binprm *bprm)
-diff --git a/security/selinux/include/classmap.h b/security/selinux/include/classmap.h
-index b9fe3434b036..35ffb29a69cb 100644
---- a/security/selinux/include/classmap.h
-+++ b/security/selinux/include/classmap.h
-@@ -48,6 +48,8 @@ struct security_class_mapping secclass_map[] = {
- "setrlimit", "rlimitinh", "dyntransition", "setcurrent",
- "execmem", "execstack", "execheap", "setkeycreate",
- "setsockcreate", "getrlimit", NULL } },
-+ { "process2",
-+ { "nnp_transition", "nosuid_transition", NULL } },
- { "system",
- { "ipc_info", "syslog_read", "syslog_mod",
- "syslog_console", "module_request", "module_load", NULL } },
-diff --git a/security/selinux/include/security.h b/security/selinux/include/security.h
-index e91f08c16c0b..3e323179159a 100644
---- a/security/selinux/include/security.h
-+++ b/security/selinux/include/security.h
-@@ -73,6 +73,7 @@ enum {
- POLICYDB_CAPABILITY_EXTSOCKCLASS,
- POLICYDB_CAPABILITY_ALWAYSNETWORK,
- POLICYDB_CAPABILITY_CGROUPSECLABEL,
-+ POLICYDB_CAPABILITY_NNP_NOSUID_TRANSITION,
- __POLICYDB_CAPABILITY_MAX
- };
- #define POLICYDB_CAPABILITY_MAX (__POLICYDB_CAPABILITY_MAX - 1)
-@@ -84,6 +85,7 @@ extern int selinux_policycap_openperm;
- extern int selinux_policycap_extsockclass;
- extern int selinux_policycap_alwaysnetwork;
- extern int selinux_policycap_cgroupseclabel;
-+extern int selinux_policycap_nnp_nosuid_transition;
-
- /*
- * type_datum properties
-diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
-index 2f02fa67ec2e..16c55de21b9f 100644
---- a/security/selinux/ss/services.c
-+++ b/security/selinux/ss/services.c
-@@ -76,7 +76,8 @@ char *selinux_policycap_names[__POLICYDB_CAPABILITY_MAX] = {
- "open_perms",
- "extended_socket_class",
- "always_check_network",
-- "cgroup_seclabel"
-+ "cgroup_seclabel",
-+ "nnp_nosuid_transition"
- };
-
- int selinux_policycap_netpeer;
-@@ -84,6 +85,7 @@ int selinux_policycap_openperm;
- int selinux_policycap_extsockclass;
- int selinux_policycap_alwaysnetwork;
- int selinux_policycap_cgroupseclabel;
-+int selinux_policycap_nnp_nosuid_transition;
-
- static DEFINE_RWLOCK(policy_rwlock);
-
-@@ -2009,6 +2011,9 @@ static void security_load_policycaps(void)
- selinux_policycap_cgroupseclabel =
- ebitmap_get_bit(&policydb.policycaps,
- POLICYDB_CAPABILITY_CGROUPSECLABEL);
-+ selinux_policycap_nnp_nosuid_transition =
-+ ebitmap_get_bit(&policydb.policycaps,
-+ POLICYDB_CAPABILITY_NNP_NOSUID_TRANSITION);
-
- for (i = 0; i < ARRAY_SIZE(selinux_policycap_names); i++)
- pr_info("SELinux: policy capability %s=%d\n",
---
-2.14.3
-
diff --git a/silence-fbcon-logo.patch b/silence-fbcon-logo.patch
index b8f099679..2054b3c6b 100644
--- a/silence-fbcon-logo.patch
+++ b/silence-fbcon-logo.patch
@@ -6,13 +6,13 @@ Subject: [PATCH] silence fbcon logo
Bugzilla: N/A
Upstream-status: Fedora mustard
---
- drivers/video/console/fbcon.c | 26 +++++++++++++++++++-------
+ drivers/video/fbdev/core/fbcon.c | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
-diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
+diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index afd3301ac40c..2e08ba0ade3e 100644
---- a/drivers/video/console/fbcon.c
-+++ b/drivers/video/console/fbcon.c
+--- a/drivers/video/fbdev/core/fbcon.c
++++ b/drivers/video/fbdev/core/fbcon.c
@@ -634,13 +634,15 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
kfree(save);
}
@@ -36,10 +36,11 @@ index afd3301ac40c..2e08ba0ade3e 100644
}
}
#endif /* MODULE */
-@@ -3654,6 +3656,16 @@ static void __exit fb_console_exit(void)
-
- module_exit(fb_console_exit);
-
+@@ -3671,4 +3671,15 @@ void __exit fb_console_exit(void)
+ do_unregister_con_driver(&fb_con);
+ console_unlock();
+ }
++
+#else
+
+static int __init quiet_logo(char *str)
@@ -51,8 +52,6 @@ index afd3301ac40c..2e08ba0ade3e 100644
+early_param("quiet", quiet_logo);
+
#endif
-
- MODULE_LICENSE("GPL");
--
2.7.4
diff --git a/sources b/sources
index 89bb739fa..5cfd93eb5 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (linux-4.13.tar.xz) = a557c2f0303ae618910b7106ff63d9978afddf470f03cb72aa748213e099a0ecd5f3119aea6cbd7b61df30ca6ef3ec57044d524b7babbaabddf8b08b8bafa7d2
-SHA512 (perf-man-4.13.tar.gz) = 9bcc2cd8e56ec583ed2d8e0b0c88e7a94035a1915e40b3177bb02d6c0f10ddd4df9b097b1f5af59efc624226b613e240ddba8ddc2156f3682f992d5455fc5c03
-SHA512 (patch-4.13.16.xz) = 6d9e6593477fb7aa663e6b9cdccb1d30df8d3bb3721b93afa9ddefce539d267bee062809dd6c50135ba113cf5220ef4b2799f25eca73c791ff59f4480189d211
+SHA512 (linux-4.14.tar.xz) = 77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8
+SHA512 (perf-man-4.14.tar.gz) = 76a9d8adc284cdffd4b3fbb060e7f9a14109267707ce1d03f4c3239cd70d8d164f697da3a0f90a363fbcac42a61d3c378afbcc2a86f112c501b9cb5ce74ef9f8
+SHA512 (patch-4.14.3.xz) = 36a08a4c1c93c4fefb95273f3bfe4cac724d8e7c4f90d6e42a11c3afbbdd35b537f3380985a730c9aca491359f9bbdc4747ac444dd6b2625443c28df285cf74a
diff --git a/v3-1-2-Input-synaptics-rmi4---RMI4-can-also-use-SMBUS-version-3.patch b/v3-1-2-Input-synaptics-rmi4---RMI4-can-also-use-SMBUS-version-3.patch
deleted file mode 100644
index 5a8825793..000000000
--- a/v3-1-2-Input-synaptics-rmi4---RMI4-can-also-use-SMBUS-version-3.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From patchwork Sun Nov 5 17:09:50 2017
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [v3,1/2] Input: synaptics-rmi4 - RMI4 can also use SMBUS version 3
-From: Yiannis Marangos <yiannis.marangos@gmail.com>
-X-Patchwork-Id: 10042385
-Message-Id: <20171105170951.20261-2-yiannis.marangos@gmail.com>
-To: linux-input@vger.kernel.org, dmitry.torokhov@gmail.com
-Cc: Yiannis Marangos <yiannis.marangos@gmail.com>
-Date: Sun, 5 Nov 2017 19:09:50 +0200
-
-Some synaptics devices such as LEN0073 use SMBUS version 3.
-
-Signed-off-by: Yiannis Marangos <yiannis.marangos@gmail.com>
-Acked-by: Benjamin Tissoires <benjamion.tissoires@redhat.com>
----
- drivers/input/rmi4/rmi_smbus.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/input/rmi4/rmi_smbus.c b/drivers/input/rmi4/rmi_smbus.c
-index 225025a0940c..b6ccf39c6a7b 100644
---- a/drivers/input/rmi4/rmi_smbus.c
-+++ b/drivers/input/rmi4/rmi_smbus.c
-@@ -312,7 +312,7 @@ static int rmi_smb_probe(struct i2c_client *client,
- rmi_smb->xport.dev = &client->dev;
- rmi_smb->xport.pdata = *pdata;
- rmi_smb->xport.pdata.irq = client->irq;
-- rmi_smb->xport.proto_name = "smb2";
-+ rmi_smb->xport.proto_name = "smb";
- rmi_smb->xport.ops = &rmi_smb_ops;
-
- smbus_version = rmi_smb_get_version(rmi_smb);
-@@ -322,7 +322,7 @@ static int rmi_smb_probe(struct i2c_client *client,
- rmi_dbg(RMI_DEBUG_XPORT, &client->dev, "Smbus version is %d",
- smbus_version);
-
-- if (smbus_version != 2) {
-+ if (smbus_version != 2 && smbus_version != 3) {
- dev_err(&client->dev, "Unrecognized SMB version %d\n",
- smbus_version);
- return -ENODEV;