summaryrefslogtreecommitdiff
path: root/sys-kernel
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2021-03-21 13:58:04 +0000
committerV3n3RiX <venerix@redcorelinux.org>2021-03-21 13:58:04 +0000
commit4f3f3eb2dc6e39db5256710e4e86b7878ad8b1df (patch)
tree7918b6fe24b5bd5b3d137f06447c1635efa3892b /sys-kernel
parentf11122ea3f965ee72f61ed409cf293422568d318 (diff)
sys-kernel/linux-{image,sources}-redcore : version bump (v5.11.8)
Diffstat (limited to 'sys-kernel')
-rw-r--r--sys-kernel/linux-image-redcore/Manifest2
-rw-r--r--sys-kernel/linux-image-redcore/files/5.11-amdgpu-drop-weird-assert.patch11
-rw-r--r--sys-kernel/linux-image-redcore/files/5.11-enable_alx_wol.patch474
-rw-r--r--sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch48
-rw-r--r--sys-kernel/linux-image-redcore/linux-image-redcore-5.11.8.ebuild (renamed from sys-kernel/linux-image-redcore/linux-image-redcore-5.11.6.ebuild)2
-rw-r--r--sys-kernel/linux-sources-redcore/Manifest2
-rw-r--r--sys-kernel/linux-sources-redcore/files/5.11-amdgpu-drop-weird-assert.patch11
-rw-r--r--sys-kernel/linux-sources-redcore/files/5.11-enable_alx_wol.patch474
-rw-r--r--sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch48
-rw-r--r--sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.8.ebuild (renamed from sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.6.ebuild)2
10 files changed, 50 insertions, 1024 deletions
diff --git a/sys-kernel/linux-image-redcore/Manifest b/sys-kernel/linux-image-redcore/Manifest
index 65a0f60a..7e53c998 100644
--- a/sys-kernel/linux-image-redcore/Manifest
+++ b/sys-kernel/linux-image-redcore/Manifest
@@ -1 +1 @@
-DIST linux-5.11.6.tar.xz 117637692 BLAKE2B c94885a274c835ce13e109aed4307831a1e57283c2e475dca1fc9c3c0cce97ad599e485b0413dabd182c5d48f9e5e30d071c3f9dcd0d6954e1affe0014279024 SHA512 52761568a81a4f2c8fa7e2ecd4a8d1b4657fc4fd9e31b3d0ba1d65a5ea968db16b0c77e4ae05ddef084f49f419899205b7658de1050b970670ba3111d9c49abb
+DIST linux-5.11.8.tar.xz 117631188 BLAKE2B 48028845215ba4514735575b2cf0f9bd67c224168074c406d01188ab28483ab139d6fab42dda6be10b04c9716e7be91fc6f5e4bbd58984bea40b7e7cff60e477 SHA512 2b78607a2cafab6bd49c18cc4f79f26df3694f3984d6d24936dc722e72dca567f86eff3ae87f8560ed9bb363410a6ec7bccc33f3d1c9ab2bc3385be5f6a99da6
diff --git a/sys-kernel/linux-image-redcore/files/5.11-amdgpu-drop-weird-assert.patch b/sys-kernel/linux-image-redcore/files/5.11-amdgpu-drop-weird-assert.patch
deleted file mode 100644
index 8c8d7946..00000000
--- a/sys-kernel/linux-image-redcore/files/5.11-amdgpu-drop-weird-assert.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur linux-5.11.3/drivers/gpu/drm/amd/display/dc/core/dc_link.c linux-5.11.3-p/drivers/gpu/drm/amd/display/dc/core/dc_link.c
---- linux-5.11.3/drivers/gpu/drm/amd/display/dc/core/dc_link.c 2021-03-04 12:15:45.000000000 +0100
-+++ linux-5.11.3-p/drivers/gpu/drm/amd/display/dc/core/dc_link.c 2021-03-06 14:03:25.611661668 +0100
-@@ -2566,7 +2566,6 @@
- if (pipe_ctx->plane_state == NULL)
- frame_ramp = 0;
- } else {
-- ASSERT(false);
- return false;
- }
-
diff --git a/sys-kernel/linux-image-redcore/files/5.11-enable_alx_wol.patch b/sys-kernel/linux-image-redcore/files/5.11-enable_alx_wol.patch
deleted file mode 100644
index 55505fbd..00000000
--- a/sys-kernel/linux-image-redcore/files/5.11-enable_alx_wol.patch
+++ /dev/null
@@ -1,474 +0,0 @@
-diff -Naur linux-5.4.1/drivers/net/ethernet/atheros/alx/ethtool.c linux-5.4.1.new/drivers/net/ethernet/atheros/alx/ethtool.c
---- linux-5.4.1/drivers/net/ethernet/atheros/alx/ethtool.c 2019-11-29 10:10:32.000000000 +0100
-+++ linux-5.4.1.new/drivers/net/ethernet/atheros/alx/ethtool.c 2019-12-03 14:24:48.939847862 +0100
-@@ -310,11 +310,47 @@
- }
- }
-
-+static void alx_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
-+{
-+ struct alx_priv *alx = netdev_priv(netdev);
-+ struct alx_hw *hw = &alx->hw;
-+
-+ wol->supported = WAKE_MAGIC | WAKE_PHY;
-+ wol->wolopts = 0;
-+
-+ if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC)
-+ wol->wolopts |= WAKE_MAGIC;
-+ if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY)
-+ wol->wolopts |= WAKE_PHY;
-+}
-+
-+static int alx_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
-+{
-+ struct alx_priv *alx = netdev_priv(netdev);
-+ struct alx_hw *hw = &alx->hw;
-+
-+ if (wol->wolopts & ~(WAKE_MAGIC | WAKE_PHY))
-+ return -EOPNOTSUPP;
-+
-+ hw->sleep_ctrl = 0;
-+
-+ if (wol->wolopts & WAKE_MAGIC)
-+ hw->sleep_ctrl |= ALX_SLEEP_WOL_MAGIC;
-+ if (wol->wolopts & WAKE_PHY)
-+ hw->sleep_ctrl |= ALX_SLEEP_WOL_PHY;
-+
-+ device_set_wakeup_enable(&alx->hw.pdev->dev, hw->sleep_ctrl);
-+
-+ return 0;
-+}
-+
- const struct ethtool_ops alx_ethtool_ops = {
- .get_pauseparam = alx_get_pauseparam,
- .set_pauseparam = alx_set_pauseparam,
- .get_msglevel = alx_get_msglevel,
- .set_msglevel = alx_set_msglevel,
-+ .get_wol = alx_get_wol,
-+ .set_wol = alx_set_wol,
- .get_link = ethtool_op_get_link,
- .get_strings = alx_get_strings,
- .get_sset_count = alx_get_sset_count,
-diff -Naur linux-5.4.1/drivers/net/ethernet/atheros/alx/hw.c linux-5.4.1.new/drivers/net/ethernet/atheros/alx/hw.c
---- linux-5.4.1/drivers/net/ethernet/atheros/alx/hw.c 2019-11-29 10:10:32.000000000 +0100
-+++ linux-5.4.1.new/drivers/net/ethernet/atheros/alx/hw.c 2019-12-03 14:24:48.939847862 +0100
-@@ -332,6 +332,16 @@
- alx_write_mem32(hw, ALX_STAD1, val);
- }
-
-+static void alx_enable_osc(struct alx_hw *hw)
-+{
-+ u32 val;
-+
-+ /* rising edge */
-+ val = alx_read_mem32(hw, ALX_MISC);
-+ alx_write_mem32(hw, ALX_MISC, val & ~ALX_MISC_INTNLOSC_OPEN);
-+ alx_write_mem32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN);
-+}
-+
- static void alx_reset_osc(struct alx_hw *hw, u8 rev)
- {
- u32 val, val2;
-@@ -848,6 +858,66 @@
- }
- }
-
-+
-+/* NOTE:
-+ * 1. phy link must be established before calling this function
-+ * 2. wol option (pattern,magic,link,etc.) is configed before call it.
-+ */
-+int alx_pre_suspend(struct alx_hw *hw, int speed, u8 duplex)
-+{
-+ u32 master, mac, phy, val;
-+ int err = 0;
-+
-+ master = alx_read_mem32(hw, ALX_MASTER);
-+ master &= ~ALX_MASTER_PCLKSEL_SRDS;
-+ mac = hw->rx_ctrl;
-+ /* 10/100 half */
-+ ALX_SET_FIELD(mac, ALX_MAC_CTRL_SPEED, ALX_MAC_CTRL_SPEED_10_100);
-+ mac &= ~(ALX_MAC_CTRL_FULLD | ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_TX_EN);
-+
-+ phy = alx_read_mem32(hw, ALX_PHY_CTRL);
-+ phy &= ~(ALX_PHY_CTRL_DSPRST_OUT | ALX_PHY_CTRL_CLS);
-+ phy |= ALX_PHY_CTRL_RST_ANALOG | ALX_PHY_CTRL_HIB_PULSE |
-+ ALX_PHY_CTRL_HIB_EN;
-+
-+ /* without any activity */
-+ if (!(hw->sleep_ctrl & ALX_SLEEP_ACTIVE)) {
-+ err = alx_write_phy_reg(hw, ALX_MII_IER, 0);
-+ if (err)
-+ return err;
-+ phy |= ALX_PHY_CTRL_IDDQ | ALX_PHY_CTRL_POWER_DOWN;
-+ } else {
-+ if (hw->sleep_ctrl & (ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_CIFS))
-+ mac |= ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_BRD_EN;
-+ if (hw->sleep_ctrl & ALX_SLEEP_CIFS)
-+ mac |= ALX_MAC_CTRL_TX_EN;
-+ if (duplex == DUPLEX_FULL)
-+ mac |= ALX_MAC_CTRL_FULLD;
-+ if (speed == SPEED_1000)
-+ ALX_SET_FIELD(mac, ALX_MAC_CTRL_SPEED,
-+ ALX_MAC_CTRL_SPEED_1000);
-+ phy |= ALX_PHY_CTRL_DSPRST_OUT;
-+ err = alx_write_phy_ext(hw, ALX_MIIEXT_ANEG,
-+ ALX_MIIEXT_S3DIG10,
-+ ALX_MIIEXT_S3DIG10_SL);
-+ if (err)
-+ return err;
-+ }
-+
-+ alx_enable_osc(hw);
-+ hw->rx_ctrl = mac;
-+ alx_write_mem32(hw, ALX_MASTER, master);
-+ alx_write_mem32(hw, ALX_MAC_CTRL, mac);
-+ alx_write_mem32(hw, ALX_PHY_CTRL, phy);
-+
-+ /* set val of PDLL D3PLLOFF */
-+ val = alx_read_mem32(hw, ALX_PDLL_TRNS1);
-+ val |= ALX_PDLL_TRNS1_D3PLLOFF_EN;
-+ alx_write_mem32(hw, ALX_PDLL_TRNS1, val);
-+
-+ return 0;
-+}
-+
- bool alx_phy_configured(struct alx_hw *hw)
- {
- u32 cfg, hw_cfg;
-@@ -920,6 +990,26 @@
- return alx_read_phy_reg(hw, ALX_MII_ISR, &isr);
- }
-
-+int alx_config_wol(struct alx_hw *hw)
-+{
-+ u32 wol = 0;
-+ int err = 0;
-+
-+ /* turn on magic packet event */
-+ if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC)
-+ wol |= ALX_WOL0_MAGIC_EN | ALX_WOL0_PME_MAGIC_EN;
-+
-+ /* turn on link up event */
-+ if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY) {
-+ wol |= ALX_WOL0_LINK_EN | ALX_WOL0_PME_LINK;
-+ /* only link up can wake up */
-+ err = alx_write_phy_reg(hw, ALX_MII_IER, ALX_IER_LINK_UP);
-+ }
-+ alx_write_mem32(hw, ALX_WOL0, wol);
-+
-+ return err;
-+}
-+
- void alx_disable_rss(struct alx_hw *hw)
- {
- u32 ctrl = alx_read_mem32(hw, ALX_RXQ0);
-@@ -1045,6 +1135,71 @@
- }
-
-
-+int alx_select_powersaving_speed(struct alx_hw *hw, int *speed, u8 *duplex)
-+{
-+ int i, err;
-+ u16 lpa;
-+
-+ err = alx_read_phy_link(hw);
-+ if (err)
-+ return err;
-+
-+ if (hw->link_speed == SPEED_UNKNOWN) {
-+ *speed = SPEED_UNKNOWN;
-+ *duplex = DUPLEX_UNKNOWN;
-+ return 0;
-+ }
-+
-+ err = alx_read_phy_reg(hw, MII_LPA, &lpa);
-+ if (err)
-+ return err;
-+
-+ if (!(lpa & LPA_LPACK)) {
-+ *speed = hw->link_speed;
-+ return 0;
-+ }
-+
-+ if (lpa & LPA_10FULL) {
-+ *speed = SPEED_10;
-+ *duplex = DUPLEX_FULL;
-+ } else if (lpa & LPA_10HALF) {
-+ *speed = SPEED_10;
-+ *duplex = DUPLEX_HALF;
-+ } else if (lpa & LPA_100FULL) {
-+ *speed = SPEED_100;
-+ *duplex = DUPLEX_FULL;
-+ } else {
-+ *speed = SPEED_100;
-+ *duplex = DUPLEX_HALF;
-+ }
-+
-+ if (*speed == hw->link_speed && *duplex == hw->duplex)
-+ return 0;
-+ err = alx_write_phy_reg(hw, ALX_MII_IER, 0);
-+ if (err)
-+ return err;
-+ err = alx_setup_speed_duplex(hw, alx_speed_to_ethadv(*speed, *duplex) |
-+ ADVERTISED_Autoneg, ALX_FC_ANEG |
-+ ALX_FC_RX | ALX_FC_TX);
-+ if (err)
-+ return err;
-+
-+ /* wait for linkup */
-+ for (i = 0; i < ALX_MAX_SETUP_LNK_CYCLE; i++) {
-+ msleep(100);
-+
-+ err = alx_read_phy_link(hw);
-+ if (err < 0)
-+ return err;
-+ if (hw->link_speed != SPEED_UNKNOWN)
-+ break;
-+ }
-+ if (i == ALX_MAX_SETUP_LNK_CYCLE)
-+ return -ETIMEDOUT;
-+
-+ return 0;
-+}
-+
- bool alx_get_phy_info(struct alx_hw *hw)
- {
- u16 devs1, devs2;
-diff -Naur linux-5.4.1/drivers/net/ethernet/atheros/alx/hw.h linux-5.4.1.new/drivers/net/ethernet/atheros/alx/hw.h
---- linux-5.4.1/drivers/net/ethernet/atheros/alx/hw.h 2019-11-29 10:10:32.000000000 +0100
-+++ linux-5.4.1.new/drivers/net/ethernet/atheros/alx/hw.h 2019-12-03 14:24:48.940847869 +0100
-@@ -487,6 +487,8 @@
- u8 flowctrl;
- u32 adv_cfg;
-
-+ u32 sleep_ctrl;
-+
- spinlock_t mdio_lock;
- struct mdio_if_info mdio;
- u16 phy_id[2];
-@@ -549,12 +551,14 @@
- void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en);
- int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl);
- void alx_post_phy_link(struct alx_hw *hw);
-+int alx_pre_suspend(struct alx_hw *hw, int speed, u8 duplex);
- int alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data);
- int alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data);
- int alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata);
- int alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data);
- int alx_read_phy_link(struct alx_hw *hw);
- int alx_clear_phy_intr(struct alx_hw *hw);
-+int alx_config_wol(struct alx_hw *hw);
- void alx_cfg_mac_flowcontrol(struct alx_hw *hw, u8 fc);
- void alx_start_mac(struct alx_hw *hw);
- int alx_reset_mac(struct alx_hw *hw);
-@@ -563,6 +567,7 @@
- void alx_configure_basic(struct alx_hw *hw);
- void alx_mask_msix(struct alx_hw *hw, int index, bool mask);
- void alx_disable_rss(struct alx_hw *hw);
-+int alx_select_powersaving_speed(struct alx_hw *hw, int *speed, u8 *duplex);
- bool alx_get_phy_info(struct alx_hw *hw);
- void alx_update_hw_stats(struct alx_hw *hw);
-
-diff -Naur linux-5.4.1/drivers/net/ethernet/atheros/alx/main.c linux-5.4.1.new/drivers/net/ethernet/atheros/alx/main.c
---- linux-5.4.1/drivers/net/ethernet/atheros/alx/main.c 2019-11-29 10:10:32.000000000 +0100
-+++ linux-5.4.1.new/drivers/net/ethernet/atheros/alx/main.c 2019-12-03 14:24:48.940847869 +0100
-@@ -1069,6 +1069,7 @@
- alx->dev->max_mtu = ALX_MAX_FRAME_LEN(ALX_MAX_FRAME_SIZE);
- alx->tx_ringsz = 256;
- alx->rx_ringsz = 512;
-+ hw->sleep_ctrl = ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_WOL_PHY;
- hw->imt = 200;
- alx->int_mask = ALX_ISR_MISC;
- hw->dma_chnl = hw->max_dma_chnl;
-@@ -1343,6 +1344,66 @@
- return 0;
- }
-
-+static int __alx_shutdown(struct pci_dev *pdev, bool *wol_en)
-+{
-+ struct alx_priv *alx = pci_get_drvdata(pdev);
-+ struct net_device *netdev = alx->dev;
-+ struct alx_hw *hw = &alx->hw;
-+ int err, speed;
-+ u8 duplex;
-+
-+ netif_device_detach(netdev);
-+
-+ if (netif_running(netdev))
-+ __alx_stop(alx);
-+
-+#ifdef CONFIG_PM_SLEEP
-+ err = pci_save_state(pdev);
-+ if (err)
-+ return err;
-+#endif
-+
-+ err = alx_select_powersaving_speed(hw, &speed, &duplex);
-+ if (err)
-+ return err;
-+ err = alx_clear_phy_intr(hw);
-+ if (err)
-+ return err;
-+ err = alx_pre_suspend(hw, speed, duplex);
-+ if (err)
-+ return err;
-+ err = alx_config_wol(hw);
-+ if (err)
-+ return err;
-+
-+ *wol_en = false;
-+ if (hw->sleep_ctrl & ALX_SLEEP_ACTIVE) {
-+ netif_info(alx, wol, netdev,
-+ "wol: ctrl=%X, speed=%X\n",
-+ hw->sleep_ctrl, speed);
-+ device_set_wakeup_enable(&pdev->dev, true);
-+ *wol_en = true;
-+ }
-+
-+ pci_disable_device(pdev);
-+
-+ return 0;
-+}
-+
-+static void alx_shutdown(struct pci_dev *pdev)
-+{
-+ int err;
-+ bool wol_en;
-+
-+ err = __alx_shutdown(pdev, &wol_en);
-+ if (!err) {
-+ pci_wake_from_d3(pdev, wol_en);
-+ pci_set_power_state(pdev, PCI_D3hot);
-+ } else {
-+ dev_err(&pdev->dev, "shutdown fail %d\n", err);
-+ }
-+}
-+
- static void alx_link_check(struct work_struct *work)
- {
- struct alx_priv *alx;
-@@ -1836,6 +1897,7 @@
- goto out_unmap;
- }
-
-+ device_set_wakeup_enable(&pdev->dev, hw->sleep_ctrl);
- netdev_info(netdev,
- "Qualcomm Atheros AR816x/AR817x Ethernet [%pM]\n",
- netdev->dev_addr);
-@@ -1878,37 +1940,70 @@
- static int alx_suspend(struct device *dev)
- {
- struct alx_priv *alx = dev_get_drvdata(dev);
-+ struct pci_dev *pdev = alx->hw.pdev;
-+ int err;
-+ bool wol_en;
-
-- if (!netif_running(alx->dev))
-- return 0;
-- netif_device_detach(alx->dev);
-- __alx_stop(alx);
-+ err = __alx_shutdown(pdev, &wol_en);
-+ if (err) {
-+ dev_err(&pdev->dev, "shutdown fail in suspend %d\n", err);
-+ return err;
-+ }
-+
-+ if (wol_en) {
-+ pci_prepare_to_sleep(pdev);
-+ } else {
-+ pci_wake_from_d3(pdev, false);
-+ pci_set_power_state(pdev, PCI_D3hot);
-+ }
- return 0;
- }
-
- static int alx_resume(struct device *dev)
- {
- struct alx_priv *alx = dev_get_drvdata(dev);
-+ struct net_device *netdev = alx->dev;
- struct alx_hw *hw = &alx->hw;
-+ struct pci_dev *pdev = hw->pdev;
- int err;
-
-+ pci_set_power_state(pdev, PCI_D0);
-+ pci_restore_state(pdev);
-+ pci_save_state(pdev);
-+
-+ pci_enable_wake(pdev, PCI_D3hot, 0);
-+ pci_enable_wake(pdev, PCI_D3cold, 0);
-+
-+ hw->link_speed = SPEED_UNKNOWN;
-+ alx->int_mask = ALX_ISR_MISC;
-+
-+ alx_reset_pcie(hw);
- alx_reset_phy(hw);
-
-- if (!netif_running(alx->dev))
-- return 0;
-- netif_device_attach(alx->dev);
-+ err = alx_reset_mac(hw);
-+ if (err) {
-+ netif_err(alx, hw, alx->dev,
-+ "resume:reset_mac fail %d\n", err);
-+ return -EIO;
-+ }
-
-- rtnl_lock();
-- err = __alx_open(alx, true);
-- rtnl_unlock();
-+ err = alx_setup_speed_duplex(hw, hw->adv_cfg, hw->flowctrl);
-+ if (err) {
-+ netif_err(alx, hw, alx->dev,
-+ "resume:setup_speed_duplex fail %d\n", err);
-+ return -EIO;
-+ }
-+
-+ if (netif_running(netdev)) {
-+ err = __alx_open(alx, true);
-+ if (err)
-+ return err;
-+ }
-
-- return err;
-+ netif_device_attach(netdev);
-+ return err;
- }
-
--static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume);
--#define ALX_PM_OPS (&alx_pm_ops)
--#else
--#define ALX_PM_OPS NULL
- #endif
-
-
-@@ -1954,6 +2049,8 @@
- }
-
- pci_set_master(pdev);
-+ pci_enable_wake(pdev, PCI_D3hot, 0);
-+ pci_enable_wake(pdev, PCI_D3cold, 0);
-
- alx_reset_pcie(hw);
- if (!alx_reset_mac(hw))
-@@ -2003,11 +2100,20 @@
- {}
- };
-
-+#ifdef CONFIG_PM_SLEEP
-+static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume);
-+#define ALX_PM_OPS (&alx_pm_ops)
-+#else
-+#define ALX_PM_OPS NULL
-+#endif
-+
-+
- static struct pci_driver alx_driver = {
- .name = alx_drv_name,
- .id_table = alx_pci_tbl,
- .probe = alx_probe,
- .remove = alx_remove,
-+ .shutdown = alx_shutdown,
- .err_handler = &alx_err_handlers,
- .driver.pm = ALX_PM_OPS,
- };
diff --git a/sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch b/sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch
index 850534b0..d2f62db2 100644
--- a/sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch
+++ b/sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch
@@ -102,13 +102,13 @@ index 1b7f8debada6..05f722d7d065 100644
If set, provide RFC2861 behavior and time out the congestion
window after an idle period. An idle period is defined at
diff --git a/Makefile b/Makefile
-index 472136a7881e..019982f76148 100644
+index d8a39ece170d..a1023be11847 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
VERSION = 5
PATCHLEVEL = 11
- SUBLEVEL = 6
+ SUBLEVEL = 8
-EXTRAVERSION =
+EXTRAVERSION = -hardened1
NAME = 💕 Valentine's Day Edition 💕
@@ -667,7 +667,7 @@ index 000000000000..3fa188ac8f67
+ unregister_sysctl_table(usb_table_header);
+}
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
-index 8f07b0516100..2c9db43d2a7b 100644
+index a566bb494e24..b305e25d94f8 100644
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -71,6 +71,9 @@ MODULE_PARM_DESC(autosuspend, "default autosuspend delay");
@@ -680,7 +680,7 @@ index 8f07b0516100..2c9db43d2a7b 100644
static bool match_endpoint(struct usb_endpoint_descriptor *epd,
struct usb_endpoint_descriptor **bulk_in,
struct usb_endpoint_descriptor **bulk_out,
-@@ -978,6 +981,9 @@ static int __init usb_init(void)
+@@ -1010,6 +1013,9 @@ static int __init usb_init(void)
usb_debugfs_init();
usb_acpi_register();
@@ -690,7 +690,7 @@ index 8f07b0516100..2c9db43d2a7b 100644
retval = bus_register(&usb_bus_type);
if (retval)
goto bus_register_failed;
-@@ -1012,6 +1018,8 @@ static int __init usb_init(void)
+@@ -1044,6 +1050,8 @@ static int __init usb_init(void)
bus_notifier_failed:
bus_unregister(&usb_bus_type);
bus_register_failed:
@@ -699,7 +699,7 @@ index 8f07b0516100..2c9db43d2a7b 100644
usb_acpi_unregister();
usb_debugfs_cleanup();
out:
-@@ -1035,6 +1043,7 @@ static void __exit usb_exit(void)
+@@ -1067,6 +1075,7 @@ static void __exit usb_exit(void)
usb_hub_cleanup();
bus_unregister_notifier(&usb_bus_type, &usb_bus_nb);
bus_unregister(&usb_bus_type);
@@ -1090,10 +1090,10 @@ index 5e76af742c80..9a6c682ec127 100644
extern phys_addr_t per_cpu_ptr_to_phys(void *addr);
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
-index 9a38f579bc76..8f92d4c8b90f 100644
+index 419a4d77de00..886b8a9b554e 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
-@@ -1314,6 +1314,14 @@ static inline int perf_is_paranoid(void)
+@@ -1316,6 +1316,14 @@ static inline int perf_is_paranoid(void)
return sysctl_perf_event_paranoid > -1;
}
@@ -1216,10 +1216,10 @@ index 37803f3e6d49..35cf6f806b3f 100644
#define TTY_MAGIC 0x5401
diff --git a/include/linux/usb.h b/include/linux/usb.h
-index 7d72c4e0713c..653265115e56 100644
+index d6a41841b93e..f7f3d138b4e6 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
-@@ -2035,6 +2035,17 @@ extern void usb_led_activity(enum usb_led_event ev);
+@@ -2037,6 +2037,17 @@ extern void usb_led_activity(enum usb_led_event ev);
static inline void usb_led_activity(enum usb_led_event ev) {}
#endif
@@ -1499,10 +1499,10 @@ index de7eac903a2a..5602178f3d21 100644
/**
diff --git a/kernel/events/core.c b/kernel/events/core.c
-index 55d18791a72d..4a3afd654462 100644
+index 8425dbc1d239..7ce0ad5cead5 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
-@@ -409,8 +409,13 @@ static cpumask_var_t perf_online_mask;
+@@ -410,8 +410,13 @@ static cpumask_var_t perf_online_mask;
* 0 - disallow raw tracepoint access for unpriv
* 1 - disallow cpu events for unpriv
* 2 - disallow kernel profiling for unpriv
@@ -1516,7 +1516,7 @@ index 55d18791a72d..4a3afd654462 100644
/* Minimum for 512 kiB + 1 user control page */
int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */
-@@ -11750,7 +11755,7 @@ SYSCALL_DEFINE5(perf_event_open,
+@@ -11783,7 +11788,7 @@ SYSCALL_DEFINE5(perf_event_open,
return -EINVAL;
/* Do we allow access to perf_event_open(2) ? */
@@ -1661,7 +1661,7 @@ index 9d71046ea247..dac925e8ea9a 100644
void tasklet_setup(struct tasklet_struct *t,
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index c9fbdd848138..f0e54f792dd5 100644
+index 62fbd09b5dc1..36470990b2e6 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -103,38 +103,44 @@
@@ -1867,10 +1867,10 @@ index c9fbdd848138..f0e54f792dd5 100644
EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
EXPORT_SYMBOL(proc_dostring);
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
-index 743c852e10f2..08f52988d806 100644
+index 788b9d137de4..371d160251fb 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
-@@ -1587,7 +1587,7 @@ static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now,
+@@ -1605,7 +1605,7 @@ static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now,
}
}
@@ -2074,7 +2074,7 @@ index dc7206032387..62fcbf1515bd 100644
mm->brk = brk;
goto success;
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 519a60d5b6f7..afc305dda700 100644
+index a723e81a5da2..5a9f4333c597 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -72,6 +72,7 @@
@@ -2101,7 +2101,7 @@ index 519a60d5b6f7..afc305dda700 100644
#ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY
volatile unsigned long latent_entropy __latent_entropy;
EXPORT_SYMBOL(latent_entropy);
-@@ -1544,6 +1554,25 @@ static void __free_pages_ok(struct page *page, unsigned int order,
+@@ -1548,6 +1558,25 @@ static void __free_pages_ok(struct page *page, unsigned int order,
local_irq_restore(flags);
}
@@ -2127,7 +2127,7 @@ index 519a60d5b6f7..afc305dda700 100644
void __free_pages_core(struct page *page, unsigned int order)
{
unsigned int nr_pages = 1 << order;
-@@ -1563,7 +1592,6 @@ void __free_pages_core(struct page *page, unsigned int order)
+@@ -1567,7 +1596,6 @@ void __free_pages_core(struct page *page, unsigned int order)
}
__ClearPageReserved(p);
set_page_count(p, 0);
@@ -2135,7 +2135,7 @@ index 519a60d5b6f7..afc305dda700 100644
atomic_long_add(nr_pages, &page_zone(page)->managed_pages);
/*
-@@ -1630,6 +1658,7 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn,
+@@ -1634,6 +1662,7 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn,
{
if (early_page_uninitialised(pfn))
return;
@@ -2143,7 +2143,7 @@ index 519a60d5b6f7..afc305dda700 100644
__free_pages_core(page, order);
}
-@@ -1721,6 +1750,7 @@ static void __init deferred_free_range(unsigned long pfn,
+@@ -1725,6 +1754,7 @@ static void __init deferred_free_range(unsigned long pfn,
if (nr_pages == pageblock_nr_pages &&
(pfn & (pageblock_nr_pages - 1)) == 0) {
set_pageblock_migratetype(page, MIGRATE_MOVABLE);
@@ -2151,7 +2151,7 @@ index 519a60d5b6f7..afc305dda700 100644
__free_pages_core(page, pageblock_order);
return;
}
-@@ -1728,6 +1758,7 @@ static void __init deferred_free_range(unsigned long pfn,
+@@ -1732,6 +1762,7 @@ static void __init deferred_free_range(unsigned long pfn,
for (i = 0; i < nr_pages; i++, page++, pfn++) {
if ((pfn & (pageblock_nr_pages - 1)) == 0)
set_pageblock_migratetype(page, MIGRATE_MOVABLE);
@@ -2159,7 +2159,7 @@ index 519a60d5b6f7..afc305dda700 100644
__free_pages_core(page, 0);
}
}
-@@ -2296,6 +2327,12 @@ inline void post_alloc_hook(struct page *page, unsigned int order,
+@@ -2300,6 +2331,12 @@ inline void post_alloc_hook(struct page *page, unsigned int order,
kernel_unpoison_pages(page, 1 << order);
set_page_owner(page, order, gfp_flags);
@@ -2275,7 +2275,7 @@ index 0b775cb5c108..fa125646c8b4 100644
static int __init setup_slab_nomerge(char *str)
{
diff --git a/mm/slub.c b/mm/slub.c
-index 69dacc61b843..2bb05afe7adf 100644
+index c86037b38253..67c6f3c930e3 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -127,6 +127,12 @@ static inline bool kmem_cache_debug(struct kmem_cache *s)
diff --git a/sys-kernel/linux-image-redcore/linux-image-redcore-5.11.6.ebuild b/sys-kernel/linux-image-redcore/linux-image-redcore-5.11.8.ebuild
index 4a74f280..a63475f4 100644
--- a/sys-kernel/linux-image-redcore/linux-image-redcore-5.11.6.ebuild
+++ b/sys-kernel/linux-image-redcore/linux-image-redcore-5.11.8.ebuild
@@ -35,7 +35,6 @@ RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}"/"${KV_MAJOR}"-ath10k-be-quiet.patch
- "${FILESDIR}"/"${KV_MAJOR}"-enable_alx_wol.patch
"${FILESDIR}"/"${KV_MAJOR}"-ata-fix-NCQ-LOG-strings-and-move-to-debug.patch
"${FILESDIR}"/"${KV_MAJOR}"-radeon_dp_aux_transfer_native-no-ratelimited_debug.patch
"${FILESDIR}"/"${KV_MAJOR}"-acpi-use-kern_warning_even_when_error.patch
@@ -54,7 +53,6 @@ PATCHES=(
"${FILESDIR}"/"${KV_MAJOR}"-k10temp-add-Renoir-support.patch
"${FILESDIR}"/"${KV_MAJOR}"-0001-Revert-cpufreq-Avoid-configuring-old-governors-as-de.patch
"${FILESDIR}"/"${KV_MAJOR}"-revert-parts-of-a00ec3874e7d326ab2dffbed92faddf6a77a84e9-no-Intel-NO.patch
- "${FILESDIR}"/"${KV_MAJOR}"-amdgpu-drop-weird-assert.patch
"${FILESDIR}"/"${KV_MAJOR}"-amdgpu-FDO-bug1488.patch
"${FILESDIR}"/"${KV_MAJOR}"-linux-hardened.patch
"${FILESDIR}"/"${KV_MAJOR}"-uksm-linux-hardened.patch
diff --git a/sys-kernel/linux-sources-redcore/Manifest b/sys-kernel/linux-sources-redcore/Manifest
index 65a0f60a..7e53c998 100644
--- a/sys-kernel/linux-sources-redcore/Manifest
+++ b/sys-kernel/linux-sources-redcore/Manifest
@@ -1 +1 @@
-DIST linux-5.11.6.tar.xz 117637692 BLAKE2B c94885a274c835ce13e109aed4307831a1e57283c2e475dca1fc9c3c0cce97ad599e485b0413dabd182c5d48f9e5e30d071c3f9dcd0d6954e1affe0014279024 SHA512 52761568a81a4f2c8fa7e2ecd4a8d1b4657fc4fd9e31b3d0ba1d65a5ea968db16b0c77e4ae05ddef084f49f419899205b7658de1050b970670ba3111d9c49abb
+DIST linux-5.11.8.tar.xz 117631188 BLAKE2B 48028845215ba4514735575b2cf0f9bd67c224168074c406d01188ab28483ab139d6fab42dda6be10b04c9716e7be91fc6f5e4bbd58984bea40b7e7cff60e477 SHA512 2b78607a2cafab6bd49c18cc4f79f26df3694f3984d6d24936dc722e72dca567f86eff3ae87f8560ed9bb363410a6ec7bccc33f3d1c9ab2bc3385be5f6a99da6
diff --git a/sys-kernel/linux-sources-redcore/files/5.11-amdgpu-drop-weird-assert.patch b/sys-kernel/linux-sources-redcore/files/5.11-amdgpu-drop-weird-assert.patch
deleted file mode 100644
index 8c8d7946..00000000
--- a/sys-kernel/linux-sources-redcore/files/5.11-amdgpu-drop-weird-assert.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur linux-5.11.3/drivers/gpu/drm/amd/display/dc/core/dc_link.c linux-5.11.3-p/drivers/gpu/drm/amd/display/dc/core/dc_link.c
---- linux-5.11.3/drivers/gpu/drm/amd/display/dc/core/dc_link.c 2021-03-04 12:15:45.000000000 +0100
-+++ linux-5.11.3-p/drivers/gpu/drm/amd/display/dc/core/dc_link.c 2021-03-06 14:03:25.611661668 +0100
-@@ -2566,7 +2566,6 @@
- if (pipe_ctx->plane_state == NULL)
- frame_ramp = 0;
- } else {
-- ASSERT(false);
- return false;
- }
-
diff --git a/sys-kernel/linux-sources-redcore/files/5.11-enable_alx_wol.patch b/sys-kernel/linux-sources-redcore/files/5.11-enable_alx_wol.patch
deleted file mode 100644
index 55505fbd..00000000
--- a/sys-kernel/linux-sources-redcore/files/5.11-enable_alx_wol.patch
+++ /dev/null
@@ -1,474 +0,0 @@
-diff -Naur linux-5.4.1/drivers/net/ethernet/atheros/alx/ethtool.c linux-5.4.1.new/drivers/net/ethernet/atheros/alx/ethtool.c
---- linux-5.4.1/drivers/net/ethernet/atheros/alx/ethtool.c 2019-11-29 10:10:32.000000000 +0100
-+++ linux-5.4.1.new/drivers/net/ethernet/atheros/alx/ethtool.c 2019-12-03 14:24:48.939847862 +0100
-@@ -310,11 +310,47 @@
- }
- }
-
-+static void alx_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
-+{
-+ struct alx_priv *alx = netdev_priv(netdev);
-+ struct alx_hw *hw = &alx->hw;
-+
-+ wol->supported = WAKE_MAGIC | WAKE_PHY;
-+ wol->wolopts = 0;
-+
-+ if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC)
-+ wol->wolopts |= WAKE_MAGIC;
-+ if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY)
-+ wol->wolopts |= WAKE_PHY;
-+}
-+
-+static int alx_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
-+{
-+ struct alx_priv *alx = netdev_priv(netdev);
-+ struct alx_hw *hw = &alx->hw;
-+
-+ if (wol->wolopts & ~(WAKE_MAGIC | WAKE_PHY))
-+ return -EOPNOTSUPP;
-+
-+ hw->sleep_ctrl = 0;
-+
-+ if (wol->wolopts & WAKE_MAGIC)
-+ hw->sleep_ctrl |= ALX_SLEEP_WOL_MAGIC;
-+ if (wol->wolopts & WAKE_PHY)
-+ hw->sleep_ctrl |= ALX_SLEEP_WOL_PHY;
-+
-+ device_set_wakeup_enable(&alx->hw.pdev->dev, hw->sleep_ctrl);
-+
-+ return 0;
-+}
-+
- const struct ethtool_ops alx_ethtool_ops = {
- .get_pauseparam = alx_get_pauseparam,
- .set_pauseparam = alx_set_pauseparam,
- .get_msglevel = alx_get_msglevel,
- .set_msglevel = alx_set_msglevel,
-+ .get_wol = alx_get_wol,
-+ .set_wol = alx_set_wol,
- .get_link = ethtool_op_get_link,
- .get_strings = alx_get_strings,
- .get_sset_count = alx_get_sset_count,
-diff -Naur linux-5.4.1/drivers/net/ethernet/atheros/alx/hw.c linux-5.4.1.new/drivers/net/ethernet/atheros/alx/hw.c
---- linux-5.4.1/drivers/net/ethernet/atheros/alx/hw.c 2019-11-29 10:10:32.000000000 +0100
-+++ linux-5.4.1.new/drivers/net/ethernet/atheros/alx/hw.c 2019-12-03 14:24:48.939847862 +0100
-@@ -332,6 +332,16 @@
- alx_write_mem32(hw, ALX_STAD1, val);
- }
-
-+static void alx_enable_osc(struct alx_hw *hw)
-+{
-+ u32 val;
-+
-+ /* rising edge */
-+ val = alx_read_mem32(hw, ALX_MISC);
-+ alx_write_mem32(hw, ALX_MISC, val & ~ALX_MISC_INTNLOSC_OPEN);
-+ alx_write_mem32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN);
-+}
-+
- static void alx_reset_osc(struct alx_hw *hw, u8 rev)
- {
- u32 val, val2;
-@@ -848,6 +858,66 @@
- }
- }
-
-+
-+/* NOTE:
-+ * 1. phy link must be established before calling this function
-+ * 2. wol option (pattern,magic,link,etc.) is configed before call it.
-+ */
-+int alx_pre_suspend(struct alx_hw *hw, int speed, u8 duplex)
-+{
-+ u32 master, mac, phy, val;
-+ int err = 0;
-+
-+ master = alx_read_mem32(hw, ALX_MASTER);
-+ master &= ~ALX_MASTER_PCLKSEL_SRDS;
-+ mac = hw->rx_ctrl;
-+ /* 10/100 half */
-+ ALX_SET_FIELD(mac, ALX_MAC_CTRL_SPEED, ALX_MAC_CTRL_SPEED_10_100);
-+ mac &= ~(ALX_MAC_CTRL_FULLD | ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_TX_EN);
-+
-+ phy = alx_read_mem32(hw, ALX_PHY_CTRL);
-+ phy &= ~(ALX_PHY_CTRL_DSPRST_OUT | ALX_PHY_CTRL_CLS);
-+ phy |= ALX_PHY_CTRL_RST_ANALOG | ALX_PHY_CTRL_HIB_PULSE |
-+ ALX_PHY_CTRL_HIB_EN;
-+
-+ /* without any activity */
-+ if (!(hw->sleep_ctrl & ALX_SLEEP_ACTIVE)) {
-+ err = alx_write_phy_reg(hw, ALX_MII_IER, 0);
-+ if (err)
-+ return err;
-+ phy |= ALX_PHY_CTRL_IDDQ | ALX_PHY_CTRL_POWER_DOWN;
-+ } else {
-+ if (hw->sleep_ctrl & (ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_CIFS))
-+ mac |= ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_BRD_EN;
-+ if (hw->sleep_ctrl & ALX_SLEEP_CIFS)
-+ mac |= ALX_MAC_CTRL_TX_EN;
-+ if (duplex == DUPLEX_FULL)
-+ mac |= ALX_MAC_CTRL_FULLD;
-+ if (speed == SPEED_1000)
-+ ALX_SET_FIELD(mac, ALX_MAC_CTRL_SPEED,
-+ ALX_MAC_CTRL_SPEED_1000);
-+ phy |= ALX_PHY_CTRL_DSPRST_OUT;
-+ err = alx_write_phy_ext(hw, ALX_MIIEXT_ANEG,
-+ ALX_MIIEXT_S3DIG10,
-+ ALX_MIIEXT_S3DIG10_SL);
-+ if (err)
-+ return err;
-+ }
-+
-+ alx_enable_osc(hw);
-+ hw->rx_ctrl = mac;
-+ alx_write_mem32(hw, ALX_MASTER, master);
-+ alx_write_mem32(hw, ALX_MAC_CTRL, mac);
-+ alx_write_mem32(hw, ALX_PHY_CTRL, phy);
-+
-+ /* set val of PDLL D3PLLOFF */
-+ val = alx_read_mem32(hw, ALX_PDLL_TRNS1);
-+ val |= ALX_PDLL_TRNS1_D3PLLOFF_EN;
-+ alx_write_mem32(hw, ALX_PDLL_TRNS1, val);
-+
-+ return 0;
-+}
-+
- bool alx_phy_configured(struct alx_hw *hw)
- {
- u32 cfg, hw_cfg;
-@@ -920,6 +990,26 @@
- return alx_read_phy_reg(hw, ALX_MII_ISR, &isr);
- }
-
-+int alx_config_wol(struct alx_hw *hw)
-+{
-+ u32 wol = 0;
-+ int err = 0;
-+
-+ /* turn on magic packet event */
-+ if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC)
-+ wol |= ALX_WOL0_MAGIC_EN | ALX_WOL0_PME_MAGIC_EN;
-+
-+ /* turn on link up event */
-+ if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY) {
-+ wol |= ALX_WOL0_LINK_EN | ALX_WOL0_PME_LINK;
-+ /* only link up can wake up */
-+ err = alx_write_phy_reg(hw, ALX_MII_IER, ALX_IER_LINK_UP);
-+ }
-+ alx_write_mem32(hw, ALX_WOL0, wol);
-+
-+ return err;
-+}
-+
- void alx_disable_rss(struct alx_hw *hw)
- {
- u32 ctrl = alx_read_mem32(hw, ALX_RXQ0);
-@@ -1045,6 +1135,71 @@
- }
-
-
-+int alx_select_powersaving_speed(struct alx_hw *hw, int *speed, u8 *duplex)
-+{
-+ int i, err;
-+ u16 lpa;
-+
-+ err = alx_read_phy_link(hw);
-+ if (err)
-+ return err;
-+
-+ if (hw->link_speed == SPEED_UNKNOWN) {
-+ *speed = SPEED_UNKNOWN;
-+ *duplex = DUPLEX_UNKNOWN;
-+ return 0;
-+ }
-+
-+ err = alx_read_phy_reg(hw, MII_LPA, &lpa);
-+ if (err)
-+ return err;
-+
-+ if (!(lpa & LPA_LPACK)) {
-+ *speed = hw->link_speed;
-+ return 0;
-+ }
-+
-+ if (lpa & LPA_10FULL) {
-+ *speed = SPEED_10;
-+ *duplex = DUPLEX_FULL;
-+ } else if (lpa & LPA_10HALF) {
-+ *speed = SPEED_10;
-+ *duplex = DUPLEX_HALF;
-+ } else if (lpa & LPA_100FULL) {
-+ *speed = SPEED_100;
-+ *duplex = DUPLEX_FULL;
-+ } else {
-+ *speed = SPEED_100;
-+ *duplex = DUPLEX_HALF;
-+ }
-+
-+ if (*speed == hw->link_speed && *duplex == hw->duplex)
-+ return 0;
-+ err = alx_write_phy_reg(hw, ALX_MII_IER, 0);
-+ if (err)
-+ return err;
-+ err = alx_setup_speed_duplex(hw, alx_speed_to_ethadv(*speed, *duplex) |
-+ ADVERTISED_Autoneg, ALX_FC_ANEG |
-+ ALX_FC_RX | ALX_FC_TX);
-+ if (err)
-+ return err;
-+
-+ /* wait for linkup */
-+ for (i = 0; i < ALX_MAX_SETUP_LNK_CYCLE; i++) {
-+ msleep(100);
-+
-+ err = alx_read_phy_link(hw);
-+ if (err < 0)
-+ return err;
-+ if (hw->link_speed != SPEED_UNKNOWN)
-+ break;
-+ }
-+ if (i == ALX_MAX_SETUP_LNK_CYCLE)
-+ return -ETIMEDOUT;
-+
-+ return 0;
-+}
-+
- bool alx_get_phy_info(struct alx_hw *hw)
- {
- u16 devs1, devs2;
-diff -Naur linux-5.4.1/drivers/net/ethernet/atheros/alx/hw.h linux-5.4.1.new/drivers/net/ethernet/atheros/alx/hw.h
---- linux-5.4.1/drivers/net/ethernet/atheros/alx/hw.h 2019-11-29 10:10:32.000000000 +0100
-+++ linux-5.4.1.new/drivers/net/ethernet/atheros/alx/hw.h 2019-12-03 14:24:48.940847869 +0100
-@@ -487,6 +487,8 @@
- u8 flowctrl;
- u32 adv_cfg;
-
-+ u32 sleep_ctrl;
-+
- spinlock_t mdio_lock;
- struct mdio_if_info mdio;
- u16 phy_id[2];
-@@ -549,12 +551,14 @@
- void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en);
- int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl);
- void alx_post_phy_link(struct alx_hw *hw);
-+int alx_pre_suspend(struct alx_hw *hw, int speed, u8 duplex);
- int alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data);
- int alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data);
- int alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata);
- int alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data);
- int alx_read_phy_link(struct alx_hw *hw);
- int alx_clear_phy_intr(struct alx_hw *hw);
-+int alx_config_wol(struct alx_hw *hw);
- void alx_cfg_mac_flowcontrol(struct alx_hw *hw, u8 fc);
- void alx_start_mac(struct alx_hw *hw);
- int alx_reset_mac(struct alx_hw *hw);
-@@ -563,6 +567,7 @@
- void alx_configure_basic(struct alx_hw *hw);
- void alx_mask_msix(struct alx_hw *hw, int index, bool mask);
- void alx_disable_rss(struct alx_hw *hw);
-+int alx_select_powersaving_speed(struct alx_hw *hw, int *speed, u8 *duplex);
- bool alx_get_phy_info(struct alx_hw *hw);
- void alx_update_hw_stats(struct alx_hw *hw);
-
-diff -Naur linux-5.4.1/drivers/net/ethernet/atheros/alx/main.c linux-5.4.1.new/drivers/net/ethernet/atheros/alx/main.c
---- linux-5.4.1/drivers/net/ethernet/atheros/alx/main.c 2019-11-29 10:10:32.000000000 +0100
-+++ linux-5.4.1.new/drivers/net/ethernet/atheros/alx/main.c 2019-12-03 14:24:48.940847869 +0100
-@@ -1069,6 +1069,7 @@
- alx->dev->max_mtu = ALX_MAX_FRAME_LEN(ALX_MAX_FRAME_SIZE);
- alx->tx_ringsz = 256;
- alx->rx_ringsz = 512;
-+ hw->sleep_ctrl = ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_WOL_PHY;
- hw->imt = 200;
- alx->int_mask = ALX_ISR_MISC;
- hw->dma_chnl = hw->max_dma_chnl;
-@@ -1343,6 +1344,66 @@
- return 0;
- }
-
-+static int __alx_shutdown(struct pci_dev *pdev, bool *wol_en)
-+{
-+ struct alx_priv *alx = pci_get_drvdata(pdev);
-+ struct net_device *netdev = alx->dev;
-+ struct alx_hw *hw = &alx->hw;
-+ int err, speed;
-+ u8 duplex;
-+
-+ netif_device_detach(netdev);
-+
-+ if (netif_running(netdev))
-+ __alx_stop(alx);
-+
-+#ifdef CONFIG_PM_SLEEP
-+ err = pci_save_state(pdev);
-+ if (err)
-+ return err;
-+#endif
-+
-+ err = alx_select_powersaving_speed(hw, &speed, &duplex);
-+ if (err)
-+ return err;
-+ err = alx_clear_phy_intr(hw);
-+ if (err)
-+ return err;
-+ err = alx_pre_suspend(hw, speed, duplex);
-+ if (err)
-+ return err;
-+ err = alx_config_wol(hw);
-+ if (err)
-+ return err;
-+
-+ *wol_en = false;
-+ if (hw->sleep_ctrl & ALX_SLEEP_ACTIVE) {
-+ netif_info(alx, wol, netdev,
-+ "wol: ctrl=%X, speed=%X\n",
-+ hw->sleep_ctrl, speed);
-+ device_set_wakeup_enable(&pdev->dev, true);
-+ *wol_en = true;
-+ }
-+
-+ pci_disable_device(pdev);
-+
-+ return 0;
-+}
-+
-+static void alx_shutdown(struct pci_dev *pdev)
-+{
-+ int err;
-+ bool wol_en;
-+
-+ err = __alx_shutdown(pdev, &wol_en);
-+ if (!err) {
-+ pci_wake_from_d3(pdev, wol_en);
-+ pci_set_power_state(pdev, PCI_D3hot);
-+ } else {
-+ dev_err(&pdev->dev, "shutdown fail %d\n", err);
-+ }
-+}
-+
- static void alx_link_check(struct work_struct *work)
- {
- struct alx_priv *alx;
-@@ -1836,6 +1897,7 @@
- goto out_unmap;
- }
-
-+ device_set_wakeup_enable(&pdev->dev, hw->sleep_ctrl);
- netdev_info(netdev,
- "Qualcomm Atheros AR816x/AR817x Ethernet [%pM]\n",
- netdev->dev_addr);
-@@ -1878,37 +1940,70 @@
- static int alx_suspend(struct device *dev)
- {
- struct alx_priv *alx = dev_get_drvdata(dev);
-+ struct pci_dev *pdev = alx->hw.pdev;
-+ int err;
-+ bool wol_en;
-
-- if (!netif_running(alx->dev))
-- return 0;
-- netif_device_detach(alx->dev);
-- __alx_stop(alx);
-+ err = __alx_shutdown(pdev, &wol_en);
-+ if (err) {
-+ dev_err(&pdev->dev, "shutdown fail in suspend %d\n", err);
-+ return err;
-+ }
-+
-+ if (wol_en) {
-+ pci_prepare_to_sleep(pdev);
-+ } else {
-+ pci_wake_from_d3(pdev, false);
-+ pci_set_power_state(pdev, PCI_D3hot);
-+ }
- return 0;
- }
-
- static int alx_resume(struct device *dev)
- {
- struct alx_priv *alx = dev_get_drvdata(dev);
-+ struct net_device *netdev = alx->dev;
- struct alx_hw *hw = &alx->hw;
-+ struct pci_dev *pdev = hw->pdev;
- int err;
-
-+ pci_set_power_state(pdev, PCI_D0);
-+ pci_restore_state(pdev);
-+ pci_save_state(pdev);
-+
-+ pci_enable_wake(pdev, PCI_D3hot, 0);
-+ pci_enable_wake(pdev, PCI_D3cold, 0);
-+
-+ hw->link_speed = SPEED_UNKNOWN;
-+ alx->int_mask = ALX_ISR_MISC;
-+
-+ alx_reset_pcie(hw);
- alx_reset_phy(hw);
-
-- if (!netif_running(alx->dev))
-- return 0;
-- netif_device_attach(alx->dev);
-+ err = alx_reset_mac(hw);
-+ if (err) {
-+ netif_err(alx, hw, alx->dev,
-+ "resume:reset_mac fail %d\n", err);
-+ return -EIO;
-+ }
-
-- rtnl_lock();
-- err = __alx_open(alx, true);
-- rtnl_unlock();
-+ err = alx_setup_speed_duplex(hw, hw->adv_cfg, hw->flowctrl);
-+ if (err) {
-+ netif_err(alx, hw, alx->dev,
-+ "resume:setup_speed_duplex fail %d\n", err);
-+ return -EIO;
-+ }
-+
-+ if (netif_running(netdev)) {
-+ err = __alx_open(alx, true);
-+ if (err)
-+ return err;
-+ }
-
-- return err;
-+ netif_device_attach(netdev);
-+ return err;
- }
-
--static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume);
--#define ALX_PM_OPS (&alx_pm_ops)
--#else
--#define ALX_PM_OPS NULL
- #endif
-
-
-@@ -1954,6 +2049,8 @@
- }
-
- pci_set_master(pdev);
-+ pci_enable_wake(pdev, PCI_D3hot, 0);
-+ pci_enable_wake(pdev, PCI_D3cold, 0);
-
- alx_reset_pcie(hw);
- if (!alx_reset_mac(hw))
-@@ -2003,11 +2100,20 @@
- {}
- };
-
-+#ifdef CONFIG_PM_SLEEP
-+static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume);
-+#define ALX_PM_OPS (&alx_pm_ops)
-+#else
-+#define ALX_PM_OPS NULL
-+#endif
-+
-+
- static struct pci_driver alx_driver = {
- .name = alx_drv_name,
- .id_table = alx_pci_tbl,
- .probe = alx_probe,
- .remove = alx_remove,
-+ .shutdown = alx_shutdown,
- .err_handler = &alx_err_handlers,
- .driver.pm = ALX_PM_OPS,
- };
diff --git a/sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch b/sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch
index 850534b0..d2f62db2 100644
--- a/sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch
+++ b/sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch
@@ -102,13 +102,13 @@ index 1b7f8debada6..05f722d7d065 100644
If set, provide RFC2861 behavior and time out the congestion
window after an idle period. An idle period is defined at
diff --git a/Makefile b/Makefile
-index 472136a7881e..019982f76148 100644
+index d8a39ece170d..a1023be11847 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
VERSION = 5
PATCHLEVEL = 11
- SUBLEVEL = 6
+ SUBLEVEL = 8
-EXTRAVERSION =
+EXTRAVERSION = -hardened1
NAME = 💕 Valentine's Day Edition 💕
@@ -667,7 +667,7 @@ index 000000000000..3fa188ac8f67
+ unregister_sysctl_table(usb_table_header);
+}
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
-index 8f07b0516100..2c9db43d2a7b 100644
+index a566bb494e24..b305e25d94f8 100644
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -71,6 +71,9 @@ MODULE_PARM_DESC(autosuspend, "default autosuspend delay");
@@ -680,7 +680,7 @@ index 8f07b0516100..2c9db43d2a7b 100644
static bool match_endpoint(struct usb_endpoint_descriptor *epd,
struct usb_endpoint_descriptor **bulk_in,
struct usb_endpoint_descriptor **bulk_out,
-@@ -978,6 +981,9 @@ static int __init usb_init(void)
+@@ -1010,6 +1013,9 @@ static int __init usb_init(void)
usb_debugfs_init();
usb_acpi_register();
@@ -690,7 +690,7 @@ index 8f07b0516100..2c9db43d2a7b 100644
retval = bus_register(&usb_bus_type);
if (retval)
goto bus_register_failed;
-@@ -1012,6 +1018,8 @@ static int __init usb_init(void)
+@@ -1044,6 +1050,8 @@ static int __init usb_init(void)
bus_notifier_failed:
bus_unregister(&usb_bus_type);
bus_register_failed:
@@ -699,7 +699,7 @@ index 8f07b0516100..2c9db43d2a7b 100644
usb_acpi_unregister();
usb_debugfs_cleanup();
out:
-@@ -1035,6 +1043,7 @@ static void __exit usb_exit(void)
+@@ -1067,6 +1075,7 @@ static void __exit usb_exit(void)
usb_hub_cleanup();
bus_unregister_notifier(&usb_bus_type, &usb_bus_nb);
bus_unregister(&usb_bus_type);
@@ -1090,10 +1090,10 @@ index 5e76af742c80..9a6c682ec127 100644
extern phys_addr_t per_cpu_ptr_to_phys(void *addr);
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
-index 9a38f579bc76..8f92d4c8b90f 100644
+index 419a4d77de00..886b8a9b554e 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
-@@ -1314,6 +1314,14 @@ static inline int perf_is_paranoid(void)
+@@ -1316,6 +1316,14 @@ static inline int perf_is_paranoid(void)
return sysctl_perf_event_paranoid > -1;
}
@@ -1216,10 +1216,10 @@ index 37803f3e6d49..35cf6f806b3f 100644
#define TTY_MAGIC 0x5401
diff --git a/include/linux/usb.h b/include/linux/usb.h
-index 7d72c4e0713c..653265115e56 100644
+index d6a41841b93e..f7f3d138b4e6 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
-@@ -2035,6 +2035,17 @@ extern void usb_led_activity(enum usb_led_event ev);
+@@ -2037,6 +2037,17 @@ extern void usb_led_activity(enum usb_led_event ev);
static inline void usb_led_activity(enum usb_led_event ev) {}
#endif
@@ -1499,10 +1499,10 @@ index de7eac903a2a..5602178f3d21 100644
/**
diff --git a/kernel/events/core.c b/kernel/events/core.c
-index 55d18791a72d..4a3afd654462 100644
+index 8425dbc1d239..7ce0ad5cead5 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
-@@ -409,8 +409,13 @@ static cpumask_var_t perf_online_mask;
+@@ -410,8 +410,13 @@ static cpumask_var_t perf_online_mask;
* 0 - disallow raw tracepoint access for unpriv
* 1 - disallow cpu events for unpriv
* 2 - disallow kernel profiling for unpriv
@@ -1516,7 +1516,7 @@ index 55d18791a72d..4a3afd654462 100644
/* Minimum for 512 kiB + 1 user control page */
int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */
-@@ -11750,7 +11755,7 @@ SYSCALL_DEFINE5(perf_event_open,
+@@ -11783,7 +11788,7 @@ SYSCALL_DEFINE5(perf_event_open,
return -EINVAL;
/* Do we allow access to perf_event_open(2) ? */
@@ -1661,7 +1661,7 @@ index 9d71046ea247..dac925e8ea9a 100644
void tasklet_setup(struct tasklet_struct *t,
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index c9fbdd848138..f0e54f792dd5 100644
+index 62fbd09b5dc1..36470990b2e6 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -103,38 +103,44 @@
@@ -1867,10 +1867,10 @@ index c9fbdd848138..f0e54f792dd5 100644
EXPORT_SYMBOL(proc_dointvec_ms_jiffies);
EXPORT_SYMBOL(proc_dostring);
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
-index 743c852e10f2..08f52988d806 100644
+index 788b9d137de4..371d160251fb 100644
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
-@@ -1587,7 +1587,7 @@ static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now,
+@@ -1605,7 +1605,7 @@ static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now,
}
}
@@ -2074,7 +2074,7 @@ index dc7206032387..62fcbf1515bd 100644
mm->brk = brk;
goto success;
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 519a60d5b6f7..afc305dda700 100644
+index a723e81a5da2..5a9f4333c597 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -72,6 +72,7 @@
@@ -2101,7 +2101,7 @@ index 519a60d5b6f7..afc305dda700 100644
#ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY
volatile unsigned long latent_entropy __latent_entropy;
EXPORT_SYMBOL(latent_entropy);
-@@ -1544,6 +1554,25 @@ static void __free_pages_ok(struct page *page, unsigned int order,
+@@ -1548,6 +1558,25 @@ static void __free_pages_ok(struct page *page, unsigned int order,
local_irq_restore(flags);
}
@@ -2127,7 +2127,7 @@ index 519a60d5b6f7..afc305dda700 100644
void __free_pages_core(struct page *page, unsigned int order)
{
unsigned int nr_pages = 1 << order;
-@@ -1563,7 +1592,6 @@ void __free_pages_core(struct page *page, unsigned int order)
+@@ -1567,7 +1596,6 @@ void __free_pages_core(struct page *page, unsigned int order)
}
__ClearPageReserved(p);
set_page_count(p, 0);
@@ -2135,7 +2135,7 @@ index 519a60d5b6f7..afc305dda700 100644
atomic_long_add(nr_pages, &page_zone(page)->managed_pages);
/*
-@@ -1630,6 +1658,7 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn,
+@@ -1634,6 +1662,7 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn,
{
if (early_page_uninitialised(pfn))
return;
@@ -2143,7 +2143,7 @@ index 519a60d5b6f7..afc305dda700 100644
__free_pages_core(page, order);
}
-@@ -1721,6 +1750,7 @@ static void __init deferred_free_range(unsigned long pfn,
+@@ -1725,6 +1754,7 @@ static void __init deferred_free_range(unsigned long pfn,
if (nr_pages == pageblock_nr_pages &&
(pfn & (pageblock_nr_pages - 1)) == 0) {
set_pageblock_migratetype(page, MIGRATE_MOVABLE);
@@ -2151,7 +2151,7 @@ index 519a60d5b6f7..afc305dda700 100644
__free_pages_core(page, pageblock_order);
return;
}
-@@ -1728,6 +1758,7 @@ static void __init deferred_free_range(unsigned long pfn,
+@@ -1732,6 +1762,7 @@ static void __init deferred_free_range(unsigned long pfn,
for (i = 0; i < nr_pages; i++, page++, pfn++) {
if ((pfn & (pageblock_nr_pages - 1)) == 0)
set_pageblock_migratetype(page, MIGRATE_MOVABLE);
@@ -2159,7 +2159,7 @@ index 519a60d5b6f7..afc305dda700 100644
__free_pages_core(page, 0);
}
}
-@@ -2296,6 +2327,12 @@ inline void post_alloc_hook(struct page *page, unsigned int order,
+@@ -2300,6 +2331,12 @@ inline void post_alloc_hook(struct page *page, unsigned int order,
kernel_unpoison_pages(page, 1 << order);
set_page_owner(page, order, gfp_flags);
@@ -2275,7 +2275,7 @@ index 0b775cb5c108..fa125646c8b4 100644
static int __init setup_slab_nomerge(char *str)
{
diff --git a/mm/slub.c b/mm/slub.c
-index 69dacc61b843..2bb05afe7adf 100644
+index c86037b38253..67c6f3c930e3 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -127,6 +127,12 @@ static inline bool kmem_cache_debug(struct kmem_cache *s)
diff --git a/sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.6.ebuild b/sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.8.ebuild
index 4744d06b..0926edee 100644
--- a/sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.6.ebuild
+++ b/sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.8.ebuild
@@ -29,7 +29,6 @@ RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}"/"${KV_MAJOR}"-ath10k-be-quiet.patch
- "${FILESDIR}"/"${KV_MAJOR}"-enable_alx_wol.patch
"${FILESDIR}"/"${KV_MAJOR}"-ata-fix-NCQ-LOG-strings-and-move-to-debug.patch
"${FILESDIR}"/"${KV_MAJOR}"-radeon_dp_aux_transfer_native-no-ratelimited_debug.patch
"${FILESDIR}"/"${KV_MAJOR}"-acpi-use-kern_warning_even_when_error.patch
@@ -48,7 +47,6 @@ PATCHES=(
"${FILESDIR}"/"${KV_MAJOR}"-k10temp-add-Renoir-support.patch
"${FILESDIR}"/"${KV_MAJOR}"-0001-Revert-cpufreq-Avoid-configuring-old-governors-as-de.patch
"${FILESDIR}"/"${KV_MAJOR}"-revert-parts-of-a00ec3874e7d326ab2dffbed92faddf6a77a84e9-no-Intel-NO.patch
- "${FILESDIR}"/"${KV_MAJOR}"-amdgpu-drop-weird-assert.patch
"${FILESDIR}"/"${KV_MAJOR}"-amdgpu-FDO-bug1488.patch
"${FILESDIR}"/"${KV_MAJOR}"-linux-hardened.patch
"${FILESDIR}"/"${KV_MAJOR}"-uksm-linux-hardened.patch