From 3623561c3acc01445ccc1693f49c97bc9edda1c7 Mon Sep 17 00:00:00 2001 From: "Justin M. Forbes" Date: Thu, 7 Oct 2021 15:38:33 -0500 Subject: kernel-5.14.10-0 * Thu Oct 07 2021 Justin M. Forbes [5.14.10-0] - Revert "net: stmmac: dwmac-rk: fix unbalanced pm_runtime_enable warnings" (Peter Robinson) - e100e: Fix packet loss issues seen on Intel network controller (Mark Pearson) - bpf: Fix integer overflow in prealloc_elems_and_freelist() (Tatsuhiko Yasumatsu) - Revert "acpi: prefer booting with ACPI over DTS" (Justin M. Forbes) Resolves: rhbz# Signed-off-by: Justin M. Forbes --- patch-5.14-redhat.patch | 255 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 196 insertions(+), 59 deletions(-) (limited to 'patch-5.14-redhat.patch') diff --git a/patch-5.14-redhat.patch b/patch-5.14-redhat.patch index eb00458c5..73a387e96 100644 --- a/patch-5.14-redhat.patch +++ b/patch-5.14-redhat.patch @@ -1,12 +1,10 @@ arch/arm/Kconfig | 4 +- arch/arm64/Kconfig | 3 +- .../boot/dts/rockchip/rk3399-pinebook-pro.dts | 6 +- - arch/arm64/kernel/acpi.c | 2 +- arch/s390/include/asm/ipl.h | 1 + arch/s390/kernel/ipl.c | 5 + arch/s390/kernel/setup.c | 4 + arch/x86/kernel/setup.c | 22 +- - block/bfq-iosched.c | 16 +- crypto/rng.c | 73 ++- drivers/acpi/apei/hest.c | 8 + drivers/acpi/irq.c | 17 +- @@ -22,6 +20,11 @@ drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 + drivers/input/rmi4/rmi_driver.c | 124 +++-- drivers/iommu/iommu.c | 22 + + drivers/net/ethernet/intel/e1000e/e1000.h | 4 +- + drivers/net/ethernet/intel/e1000e/ich8lan.c | 31 +- + drivers/net/ethernet/intel/e1000e/ich8lan.h | 3 + + drivers/net/ethernet/intel/e1000e/netdev.c | 29 +- + drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 9 + drivers/net/wireguard/main.c | 6 + drivers/pci/quirks.c | 24 + drivers/usb/core/hub.c | 7 + @@ -33,6 +36,7 @@ include/linux/rmi.h | 1 + include/linux/security.h | 5 + init/Kconfig | 2 +- + kernel/bpf/stackmap.c | 3 +- kernel/module_signing.c | 9 +- mm/cma.c | 10 + security/integrity/platform_certs/load_uefi.c | 6 +- @@ -52,7 +56,7 @@ tools/testing/selftests/bpf/progs/linked_maps2.c | 76 --- tools/testing/selftests/bpf/progs/linked_vars1.c | 54 -- tools/testing/selftests/bpf/progs/linked_vars2.c | 55 --- - 54 files changed, 658 insertions(+), 1508 deletions(-) + 58 files changed, 716 insertions(+), 1511 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2fb7012c3246..47718b4f2f75 100644 @@ -115,19 +119,6 @@ index 2b5f001ff4a6..dae8c252bc2b 100644 label = "USB-C"; op-sink-microwatt = <1000000>; power-role = "dual"; -diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c -index f3851724fe35..cac21da49455 100644 ---- a/arch/arm64/kernel/acpi.c -+++ b/arch/arm64/kernel/acpi.c -@@ -40,7 +40,7 @@ int acpi_pci_disabled = 1; /* skip ACPI PCI scan and IRQ initialization */ - EXPORT_SYMBOL(acpi_pci_disabled); - - static bool param_acpi_off __initdata; --static bool param_acpi_on __initdata; -+static bool param_acpi_on __initdata = true; - static bool param_acpi_force __initdata; - - static int __init parse_acpi(char *arg) diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h index a9e2c7295b35..6ff11f3a2d47 100644 --- a/arch/s390/include/asm/ipl.h @@ -222,47 +213,6 @@ index d103e8489ec1..16ef6bcceed2 100644 reserve_initrd(); -diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c -index 3a1038b6eeb3..9360c65169ff 100644 ---- a/block/bfq-iosched.c -+++ b/block/bfq-iosched.c -@@ -2662,15 +2662,6 @@ bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq) - * are likely to increase the throughput. - */ - bfqq->new_bfqq = new_bfqq; -- /* -- * The above assignment schedules the following redirections: -- * each time some I/O for bfqq arrives, the process that -- * generated that I/O is disassociated from bfqq and -- * associated with new_bfqq. Here we increases new_bfqq->ref -- * in advance, adding the number of processes that are -- * expected to be associated with new_bfqq as they happen to -- * issue I/O. -- */ - new_bfqq->ref += process_refs; - return new_bfqq; - } -@@ -2733,10 +2724,6 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq, - { - struct bfq_queue *in_service_bfqq, *new_bfqq; - -- /* if a merge has already been setup, then proceed with that first */ -- if (bfqq->new_bfqq) -- return bfqq->new_bfqq; -- - /* - * Check delayed stable merge for rotational or non-queueing - * devs. For this branch to be executed, bfqq must not be -@@ -2838,6 +2825,9 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq, - if (bfq_too_late_for_merging(bfqq)) - return NULL; - -+ if (bfqq->new_bfqq) -+ return bfqq->new_bfqq; -+ - if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq)) - return NULL; - diff --git a/crypto/rng.c b/crypto/rng.c index fea082b25fe4..50a9d040bed1 100644 --- a/crypto/rng.c @@ -1299,6 +1249,179 @@ index 63f0af10c403..195be16dbd39 100644 /* * Changes the default domain of an iommu group that has *only* one device * +diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h +index 5b2143f4b1f8..3178efd98006 100644 +--- a/drivers/net/ethernet/intel/e1000e/e1000.h ++++ b/drivers/net/ethernet/intel/e1000e/e1000.h +@@ -113,7 +113,8 @@ enum e1000_boards { + board_pch2lan, + board_pch_lpt, + board_pch_spt, +- board_pch_cnp ++ board_pch_cnp, ++ board_pch_tgp + }; + + struct e1000_ps_page { +@@ -499,6 +500,7 @@ extern const struct e1000_info e1000_pch2_info; + extern const struct e1000_info e1000_pch_lpt_info; + extern const struct e1000_info e1000_pch_spt_info; + extern const struct e1000_info e1000_pch_cnp_info; ++extern const struct e1000_info e1000_pch_tgp_info; + extern const struct e1000_info e1000_es2_info; + + void e1000e_ptp_init(struct e1000_adapter *adapter); +diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c +index a80336c4319b..f8b3e758a8d2 100644 +--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c ++++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c +@@ -4804,7 +4804,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw) + static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw) + { + struct e1000_mac_info *mac = &hw->mac; +- u32 ctrl_ext, txdctl, snoop; ++ u32 ctrl_ext, txdctl, snoop, fflt_dbg; + s32 ret_val; + u16 i; + +@@ -4863,6 +4863,15 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw) + snoop = (u32)~(PCIE_NO_SNOOP_ALL); + e1000e_set_pcie_no_snoop(hw, snoop); + ++ /* Enable workaround for packet loss issue on TGP PCH ++ * Do not gate DMA clock from the modPHY block ++ */ ++ if (mac->type >= e1000_pch_tgp) { ++ fflt_dbg = er32(FFLT_DBG); ++ fflt_dbg |= E1000_FFLT_DBG_DONT_GATE_WAKE_DMA_CLK; ++ ew32(FFLT_DBG, fflt_dbg); ++ } ++ + ctrl_ext = er32(CTRL_EXT); + ctrl_ext |= E1000_CTRL_EXT_RO_DIS; + ew32(CTRL_EXT, ctrl_ext); +@@ -5983,3 +5992,23 @@ const struct e1000_info e1000_pch_cnp_info = { + .phy_ops = &ich8_phy_ops, + .nvm_ops = &spt_nvm_ops, + }; ++ ++const struct e1000_info e1000_pch_tgp_info = { ++ .mac = e1000_pch_tgp, ++ .flags = FLAG_IS_ICH ++ | FLAG_HAS_WOL ++ | FLAG_HAS_HW_TIMESTAMP ++ | FLAG_HAS_CTRLEXT_ON_LOAD ++ | FLAG_HAS_AMT ++ | FLAG_HAS_FLASH ++ | FLAG_HAS_JUMBO_FRAMES ++ | FLAG_APME_IN_WUC, ++ .flags2 = FLAG2_HAS_PHY_STATS ++ | FLAG2_HAS_EEE, ++ .pba = 26, ++ .max_hw_frame_size = 9022, ++ .get_variants = e1000_get_variants_ich8lan, ++ .mac_ops = &ich8_mac_ops, ++ .phy_ops = &ich8_phy_ops, ++ .nvm_ops = &spt_nvm_ops, ++}; +diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.h b/drivers/net/ethernet/intel/e1000e/ich8lan.h +index e757896287eb..8f2a8f4ce0ee 100644 +--- a/drivers/net/ethernet/intel/e1000e/ich8lan.h ++++ b/drivers/net/ethernet/intel/e1000e/ich8lan.h +@@ -286,6 +286,9 @@ + /* Proprietary Latency Tolerance Reporting PCI Capability */ + #define E1000_PCI_LTR_CAP_LPT 0xA8 + ++/* Don't gate wake DMA clock */ ++#define E1000_FFLT_DBG_DONT_GATE_WAKE_DMA_CLK 0x1000 ++ + void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw); + void e1000e_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw, + bool state); +diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c +index 757a54c39eef..774f849027f0 100644 +--- a/drivers/net/ethernet/intel/e1000e/netdev.c ++++ b/drivers/net/ethernet/intel/e1000e/netdev.c +@@ -51,6 +51,7 @@ static const struct e1000_info *e1000_info_tbl[] = { + [board_pch_lpt] = &e1000_pch_lpt_info, + [board_pch_spt] = &e1000_pch_spt_info, + [board_pch_cnp] = &e1000_pch_cnp_info, ++ [board_pch_tgp] = &e1000_pch_tgp_info, + }; + + struct e1000_reg_info { +@@ -7844,20 +7845,20 @@ static const struct pci_device_id e1000_pci_tbl[] = { + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V11), board_pch_cnp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_LM12), board_pch_spt }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V12), board_pch_spt }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM13), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V13), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM14), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V14), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM15), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V15), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM16), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V16), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM17), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V17), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM18), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V18), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM19), board_pch_cnp }, +- { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V19), board_pch_cnp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM13), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V13), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM14), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V14), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_LM15), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_TGP_I219_V15), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM16), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V16), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM17), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V17), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM18), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V18), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM19), board_pch_tgp }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V19), board_pch_tgp }, + + { 0, 0, 0, 0, 0, 0, 0 } /* terminate list */ + }; +diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +index ed817011a94a..280ac0129572 100644 +--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c ++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + #include "stmmac_platform.h" + +@@ -1528,6 +1529,9 @@ static int rk_gmac_powerup(struct rk_priv_data *bsp_priv) + return ret; + } + ++ pm_runtime_enable(dev); ++ pm_runtime_get_sync(dev); ++ + if (bsp_priv->integrated_phy) + rk_gmac_integrated_phy_powerup(bsp_priv); + +@@ -1536,9 +1540,14 @@ static int rk_gmac_powerup(struct rk_priv_data *bsp_priv) + + static void rk_gmac_powerdown(struct rk_priv_data *gmac) + { ++ struct device *dev = &gmac->pdev->dev; ++ + if (gmac->integrated_phy) + rk_gmac_integrated_phy_powerdown(gmac); + ++ pm_runtime_put_sync(dev); ++ pm_runtime_disable(dev); ++ + phy_power_on(gmac, false); + gmac_clk_enable(gmac, false); + } diff --git a/drivers/net/wireguard/main.c b/drivers/net/wireguard/main.c index 75dbe77b0b4b..4bd6dd722f44 100644 --- a/drivers/net/wireguard/main.c @@ -1573,6 +1696,20 @@ index 55f9f7738ebb..564553afb251 100644 select IO_WQ default y help +diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c +index 6fbc2abe9c91..2553caf4f74a 100644 +--- a/kernel/bpf/stackmap.c ++++ b/kernel/bpf/stackmap.c +@@ -63,7 +63,8 @@ static inline int stack_map_data_size(struct bpf_map *map) + + static int prealloc_elems_and_freelist(struct bpf_stack_map *smap) + { +- u32 elem_size = sizeof(struct stack_map_bucket) + smap->map.value_size; ++ u64 elem_size = sizeof(struct stack_map_bucket) + ++ (u64)smap->map.value_size; + int err; + + smap->elems = bpf_map_area_alloc(elem_size * smap->map.max_entries, diff --git a/kernel/module_signing.c b/kernel/module_signing.c index 8723ae70ea1f..fb2d773498c2 100644 --- a/kernel/module_signing.c @@ -1700,10 +1837,10 @@ index 9ffa9e9c5c55..36484cc9842d 100644 int security_perf_event_open(struct perf_event_attr *attr, int type) { diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile -index f405b20c1e6c..a8e298a22709 100644 +index 93f1f124ef89..70905889a07b 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile -@@ -424,7 +424,6 @@ $(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \ +@@ -425,7 +425,6 @@ $(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \ $(TRUNNER_BPF_OBJS) \ $(TRUNNER_BPF_SKELS) \ $(TRUNNER_BPF_LSKELS) \ -- cgit