From 1914062386cb89ffdb54e624ecdb87330db73fd1 Mon Sep 17 00:00:00 2001 From: jc_gargma Date: Fri, 31 Jan 2020 15:04:00 -0800 Subject: Updated to 5.4.16 --- ...ert-e1000e-Make-watchdog-use-delayed-work.patch | 174 +++++++++++++++++++++ ...risepoint-Add-missing-Interrupt-Status-re.patch | 35 ----- ...-iwlwifi-mvm-fix-scan-config-command-size.patch | 48 ------ ...Add-DC-feature-mask-to-disable-fractional.patch | 80 ++++++++++ ...ert-e1000e-Make-watchdog-use-delayed-work.patch | 174 --------------------- ...Add-DC-feature-mask-to-disable-fractional.patch | 80 ---------- PKGBUILD | 18 +-- 7 files changed, 260 insertions(+), 349 deletions(-) create mode 100644 0011-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch delete mode 100644 0011-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch delete mode 100644 0012-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch create mode 100644 0012-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch delete mode 100644 0013-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch delete mode 100644 0014-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch diff --git a/0011-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch b/0011-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch new file mode 100644 index 0000000..221543b --- /dev/null +++ b/0011-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch @@ -0,0 +1,174 @@ +From cce47515454675d9c82448e865b42570f9eabc39 Mon Sep 17 00:00:00 2001 +From: Jeff Kirsher +Date: Sat, 4 Jan 2020 23:29:22 -0800 +Subject: [PATCH 13/16] e1000e: Revert "e1000e: Make watchdog use delayed work" + +This reverts commit 59653e6497d16f7ac1d9db088f3959f57ee8c3db. + +This is due to this commit causing driver crashes and connections to +reset unexpectedly. + +Signed-off-by: Jeff Kirsher +--- + drivers/net/ethernet/intel/e1000e/e1000.h | 5 +- + drivers/net/ethernet/intel/e1000e/netdev.c | 54 ++++++++++------------ + 2 files changed, 27 insertions(+), 32 deletions(-) + +diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h +index 6c51b1bad8c4..37a2314d3e6b 100644 +--- a/drivers/net/ethernet/intel/e1000e/e1000.h ++++ b/drivers/net/ethernet/intel/e1000e/e1000.h +@@ -185,13 +185,12 @@ struct e1000_phy_regs { + + /* board specific private data structure */ + struct e1000_adapter { ++ struct timer_list watchdog_timer; + struct timer_list phy_info_timer; + struct timer_list blink_timer; + + struct work_struct reset_task; +- struct delayed_work watchdog_task; +- +- struct workqueue_struct *e1000_workqueue; ++ struct work_struct watchdog_task; + + const struct e1000_info *ei; + +diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c +index d7d56e42a6aa..060daf66bf63 100644 +--- a/drivers/net/ethernet/intel/e1000e/netdev.c ++++ b/drivers/net/ethernet/intel/e1000e/netdev.c +@@ -1780,8 +1780,7 @@ static irqreturn_t e1000_intr_msi(int __always_unused irq, void *data) + } + /* guard against interrupt when we're going down */ + if (!test_bit(__E1000_DOWN, &adapter->state)) +- mod_delayed_work(adapter->e1000_workqueue, +- &adapter->watchdog_task, HZ); ++ mod_timer(&adapter->watchdog_timer, jiffies + 1); + } + + /* Reset on uncorrectable ECC error */ +@@ -1861,8 +1860,7 @@ static irqreturn_t e1000_intr(int __always_unused irq, void *data) + } + /* guard against interrupt when we're going down */ + if (!test_bit(__E1000_DOWN, &adapter->state)) +- mod_delayed_work(adapter->e1000_workqueue, +- &adapter->watchdog_task, HZ); ++ mod_timer(&adapter->watchdog_timer, jiffies + 1); + } + + /* Reset on uncorrectable ECC error */ +@@ -1907,8 +1905,7 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data) + hw->mac.get_link_status = true; + /* guard against interrupt when we're going down */ + if (!test_bit(__E1000_DOWN, &adapter->state)) +- mod_delayed_work(adapter->e1000_workqueue, +- &adapter->watchdog_task, HZ); ++ mod_timer(&adapter->watchdog_timer, jiffies + 1); + } + + if (!test_bit(__E1000_DOWN, &adapter->state)) +@@ -4281,6 +4278,7 @@ void e1000e_down(struct e1000_adapter *adapter, bool reset) + + napi_synchronize(&adapter->napi); + ++ del_timer_sync(&adapter->watchdog_timer); + del_timer_sync(&adapter->phy_info_timer); + + spin_lock(&adapter->stats64_lock); +@@ -5152,11 +5150,25 @@ static void e1000e_check_82574_phy_workaround(struct e1000_adapter *adapter) + } + } + ++/** ++ * e1000_watchdog - Timer Call-back ++ * @data: pointer to adapter cast into an unsigned long ++ **/ ++static void e1000_watchdog(struct timer_list *t) ++{ ++ struct e1000_adapter *adapter = from_timer(adapter, t, watchdog_timer); ++ ++ /* Do the rest outside of interrupt context */ ++ schedule_work(&adapter->watchdog_task); ++ ++ /* TODO: make this use queue_delayed_work() */ ++} ++ + static void e1000_watchdog_task(struct work_struct *work) + { + struct e1000_adapter *adapter = container_of(work, + struct e1000_adapter, +- watchdog_task.work); ++ watchdog_task); + struct net_device *netdev = adapter->netdev; + struct e1000_mac_info *mac = &adapter->hw.mac; + struct e1000_phy_info *phy = &adapter->hw.phy; +@@ -5404,9 +5416,8 @@ static void e1000_watchdog_task(struct work_struct *work) + + /* Reset the timer */ + if (!test_bit(__E1000_DOWN, &adapter->state)) +- queue_delayed_work(adapter->e1000_workqueue, +- &adapter->watchdog_task, +- round_jiffies(2 * HZ)); ++ mod_timer(&adapter->watchdog_timer, ++ round_jiffies(jiffies + 2 * HZ)); + } + + #define E1000_TX_FLAGS_CSUM 0x00000001 +@@ -7259,21 +7270,11 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + goto err_eeprom; + } + +- adapter->e1000_workqueue = alloc_workqueue("%s", WQ_MEM_RECLAIM, 0, +- e1000e_driver_name); +- +- if (!adapter->e1000_workqueue) { +- err = -ENOMEM; +- goto err_workqueue; +- } +- +- INIT_DELAYED_WORK(&adapter->watchdog_task, e1000_watchdog_task); +- queue_delayed_work(adapter->e1000_workqueue, &adapter->watchdog_task, +- 0); +- ++ timer_setup(&adapter->watchdog_timer, e1000_watchdog, 0); + timer_setup(&adapter->phy_info_timer, e1000_update_phy_info, 0); + + INIT_WORK(&adapter->reset_task, e1000_reset_task); ++ INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task); + INIT_WORK(&adapter->downshift_task, e1000e_downshift_workaround); + INIT_WORK(&adapter->update_phy_task, e1000e_update_phy_task); + INIT_WORK(&adapter->print_hang_task, e1000_print_hw_hang); +@@ -7367,9 +7368,6 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + return 0; + + err_register: +- flush_workqueue(adapter->e1000_workqueue); +- destroy_workqueue(adapter->e1000_workqueue); +-err_workqueue: + if (!(adapter->flags & FLAG_HAS_AMT)) + e1000e_release_hw_control(adapter); + err_eeprom: +@@ -7416,17 +7414,15 @@ static void e1000_remove(struct pci_dev *pdev) + */ + if (!down) + set_bit(__E1000_DOWN, &adapter->state); ++ del_timer_sync(&adapter->watchdog_timer); + del_timer_sync(&adapter->phy_info_timer); + + cancel_work_sync(&adapter->reset_task); ++ cancel_work_sync(&adapter->watchdog_task); + cancel_work_sync(&adapter->downshift_task); + cancel_work_sync(&adapter->update_phy_task); + cancel_work_sync(&adapter->print_hang_task); + +- cancel_delayed_work(&adapter->watchdog_task); +- flush_workqueue(adapter->e1000_workqueue); +- destroy_workqueue(adapter->e1000_workqueue); +- + if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { + cancel_work_sync(&adapter->tx_hwtstamp_work); + if (adapter->tx_hwtstamp_skb) { +-- +2.25.0 + diff --git a/0011-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch b/0011-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch deleted file mode 100644 index 13d562a..0000000 --- a/0011-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 93ca62c645759168768638e65d52452b4a9898a4 Mon Sep 17 00:00:00 2001 -From: Boyan Ding -Date: Wed, 1 Jan 2020 11:44:49 -0800 -Subject: [PATCH 11/16] pinctrl: sunrisepoint: Add missing Interrupt Status - register offset - -Commit 179e5a6114cc ("pinctrl: intel: Remove default Interrupt Status -offset") removes default interrupt status offset of GPIO controllers, -with previous commits explicitly providing the previously default -offsets. However, the is_offset value in SPTH_COMMUNITY is missing, -preventing related irq from being properly detected and handled. - -Fixes: f702e0b93cdb ("pinctrl: sunrisepoint: Provide Interrupt Status register offset") -Link: https://bugzilla.kernel.org/show_bug.cgi?id=205745 -Cc: stable@vger.kernel.org -Signed-off-by: Boyan Ding ---- - drivers/pinctrl/intel/pinctrl-sunrisepoint.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/pinctrl/intel/pinctrl-sunrisepoint.c b/drivers/pinctrl/intel/pinctrl-sunrisepoint.c -index 44d7f50bbc82..d936e7aa74c4 100644 ---- a/drivers/pinctrl/intel/pinctrl-sunrisepoint.c -+++ b/drivers/pinctrl/intel/pinctrl-sunrisepoint.c -@@ -49,6 +49,7 @@ - .padown_offset = SPT_PAD_OWN, \ - .padcfglock_offset = SPT_PADCFGLOCK, \ - .hostown_offset = SPT_HOSTSW_OWN, \ -+ .is_offset = SPT_GPI_IS, \ - .ie_offset = SPT_GPI_IE, \ - .pin_base = (s), \ - .npins = ((e) - (s) + 1), \ --- -2.25.0 - diff --git a/0012-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch b/0012-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch deleted file mode 100644 index 901b06d..0000000 --- a/0012-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 540f62738b8f3049e200a086cac75d14d289fae9 Mon Sep 17 00:00:00 2001 -From: Mehmet Akif Tasova -Date: Mon, 30 Dec 2019 15:48:16 +0200 -Subject: [PATCH 12/16] Revert "iwlwifi: mvm: fix scan config command size" - -Since v5.4-rc1 was released, iwlwifi started throwing errors when scan -commands were sent to the firmware with certain devices (depending on -the OTP burned in the device, which contains the list of available -channels). For instance: - -iwlwifi 0000:00:14.3: FW error in SYNC CMD SCAN_CFG_CMD - -This bug was reported in the ArchLinux bug tracker: -https://bugs.archlinux.org/task/64703 - -And also in a specific case in bugzilla, when the lar_disabled option -was set: https://bugzilla.kernel.org/show_bug.cgi?id=205193 - -Revert the commit that introduced this error, by using the number of -channels from the OTP instead of the number of channels that is -specified in the FW TLV that tells us how many channels it supports. - -This reverts commit 06eb547c4ae4382e70d556ba213d13c95ca1801b. - -Cc: stable@vger.kernel.org # v5.4+ -Signed-off-by: Mehmet Akif Tasova -[ Luca: reworded the commit message a bit. ] -Signed-off-by: Luca Coelho ---- - drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c -index fcafa22ec6ce..8aa567d7912c 100644 ---- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c -+++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c -@@ -1220,7 +1220,7 @@ static int iwl_mvm_legacy_config_scan(struct iwl_mvm *mvm) - cmd_size = sizeof(struct iwl_scan_config_v2); - else - cmd_size = sizeof(struct iwl_scan_config_v1); -- cmd_size += num_channels; -+ cmd_size += mvm->fw->ucode_capa.n_scan_channels; - - cfg = kzalloc(cmd_size, GFP_KERNEL); - if (!cfg) --- -2.25.0 - diff --git a/0012-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch b/0012-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch new file mode 100644 index 0000000..a120391 --- /dev/null +++ b/0012-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch @@ -0,0 +1,80 @@ +From f247d4a6fe42acc60b775457e3c35b8289532590 Mon Sep 17 00:00:00 2001 +From: Leo Li +Date: Mon, 21 Oct 2019 14:58:47 -0400 +Subject: [PATCH 14/16] drm/amdgpu: Add DC feature mask to disable fractional + pwm +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[Why] + +Some LED panel drivers might not like fractional PWM. In such cases, +backlight flickering may be observed. + +[How] + +Add a DC feature mask to disable fractional PWM, and associate it with +the preexisting dc_config flag. + +The flag is only plumbed through the dmcu firmware, so plumb it through +the driver path as well. + +To disable, add the following to the linux cmdline: +amdgpu.dcfeaturemask=0x4 + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204957 +Signed-off-by: Leo Li +Reviewed-by: Anthony Koo +Tested-by: Lukáš Krejčí +Signed-off-by: Alex Deucher +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +++ + drivers/gpu/drm/amd/display/dc/dce/dce_abm.c | 4 ++++ + drivers/gpu/drm/amd/include/amd_shared.h | 1 + + 3 files changed, 8 insertions(+) + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +index 4e9c15c409ba..25b72eb76add 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -697,6 +697,9 @@ static int amdgpu_dm_init(struct amdgpu_device *adev) + if (amdgpu_dc_feature_mask & DC_MULTI_MON_PP_MCLK_SWITCH_MASK) + init_data.flags.multi_mon_pp_mclk_switch = true; + ++ if (amdgpu_dc_feature_mask & DC_DISABLE_FRACTIONAL_PWM_MASK) ++ init_data.flags.disable_fractional_pwm = true; ++ + init_data.flags.power_down_display_on_boot = true; + + #ifdef CONFIG_DRM_AMD_DC_DCN2_0 +diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c +index 7700a855d77c..698b84acc44f 100644 +--- a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c ++++ b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c +@@ -404,6 +404,10 @@ static bool dce_abm_init_backlight(struct abm *abm) + /* Enable the backlight output */ + REG_UPDATE(BL_PWM_CNTL, BL_PWM_EN, 1); + ++ /* Disable fractional pwm if configured */ ++ REG_UPDATE(BL_PWM_CNTL, BL_PWM_FRACTIONAL_EN, ++ abm->ctx->dc->config.disable_fractional_pwm ? 0 : 1); ++ + /* Unlock group 2 backlight registers */ + REG_UPDATE(BL_PWM_GRP1_REG_LOCK, + BL_PWM_GRP1_REG_LOCK, 0); +diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h +index 8889aaceec60..5450ed762b7a 100644 +--- a/drivers/gpu/drm/amd/include/amd_shared.h ++++ b/drivers/gpu/drm/amd/include/amd_shared.h +@@ -143,6 +143,7 @@ enum PP_FEATURE_MASK { + enum DC_FEATURE_MASK { + DC_FBC_MASK = 0x1, + DC_MULTI_MON_PP_MCLK_SWITCH_MASK = 0x2, ++ DC_DISABLE_FRACTIONAL_PWM_MASK = 0x4, + }; + + enum amd_dpm_forced_level; +-- +2.25.0 + diff --git a/0013-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch b/0013-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch deleted file mode 100644 index 221543b..0000000 --- a/0013-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch +++ /dev/null @@ -1,174 +0,0 @@ -From cce47515454675d9c82448e865b42570f9eabc39 Mon Sep 17 00:00:00 2001 -From: Jeff Kirsher -Date: Sat, 4 Jan 2020 23:29:22 -0800 -Subject: [PATCH 13/16] e1000e: Revert "e1000e: Make watchdog use delayed work" - -This reverts commit 59653e6497d16f7ac1d9db088f3959f57ee8c3db. - -This is due to this commit causing driver crashes and connections to -reset unexpectedly. - -Signed-off-by: Jeff Kirsher ---- - drivers/net/ethernet/intel/e1000e/e1000.h | 5 +- - drivers/net/ethernet/intel/e1000e/netdev.c | 54 ++++++++++------------ - 2 files changed, 27 insertions(+), 32 deletions(-) - -diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h -index 6c51b1bad8c4..37a2314d3e6b 100644 ---- a/drivers/net/ethernet/intel/e1000e/e1000.h -+++ b/drivers/net/ethernet/intel/e1000e/e1000.h -@@ -185,13 +185,12 @@ struct e1000_phy_regs { - - /* board specific private data structure */ - struct e1000_adapter { -+ struct timer_list watchdog_timer; - struct timer_list phy_info_timer; - struct timer_list blink_timer; - - struct work_struct reset_task; -- struct delayed_work watchdog_task; -- -- struct workqueue_struct *e1000_workqueue; -+ struct work_struct watchdog_task; - - const struct e1000_info *ei; - -diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c -index d7d56e42a6aa..060daf66bf63 100644 ---- a/drivers/net/ethernet/intel/e1000e/netdev.c -+++ b/drivers/net/ethernet/intel/e1000e/netdev.c -@@ -1780,8 +1780,7 @@ static irqreturn_t e1000_intr_msi(int __always_unused irq, void *data) - } - /* guard against interrupt when we're going down */ - if (!test_bit(__E1000_DOWN, &adapter->state)) -- mod_delayed_work(adapter->e1000_workqueue, -- &adapter->watchdog_task, HZ); -+ mod_timer(&adapter->watchdog_timer, jiffies + 1); - } - - /* Reset on uncorrectable ECC error */ -@@ -1861,8 +1860,7 @@ static irqreturn_t e1000_intr(int __always_unused irq, void *data) - } - /* guard against interrupt when we're going down */ - if (!test_bit(__E1000_DOWN, &adapter->state)) -- mod_delayed_work(adapter->e1000_workqueue, -- &adapter->watchdog_task, HZ); -+ mod_timer(&adapter->watchdog_timer, jiffies + 1); - } - - /* Reset on uncorrectable ECC error */ -@@ -1907,8 +1905,7 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data) - hw->mac.get_link_status = true; - /* guard against interrupt when we're going down */ - if (!test_bit(__E1000_DOWN, &adapter->state)) -- mod_delayed_work(adapter->e1000_workqueue, -- &adapter->watchdog_task, HZ); -+ mod_timer(&adapter->watchdog_timer, jiffies + 1); - } - - if (!test_bit(__E1000_DOWN, &adapter->state)) -@@ -4281,6 +4278,7 @@ void e1000e_down(struct e1000_adapter *adapter, bool reset) - - napi_synchronize(&adapter->napi); - -+ del_timer_sync(&adapter->watchdog_timer); - del_timer_sync(&adapter->phy_info_timer); - - spin_lock(&adapter->stats64_lock); -@@ -5152,11 +5150,25 @@ static void e1000e_check_82574_phy_workaround(struct e1000_adapter *adapter) - } - } - -+/** -+ * e1000_watchdog - Timer Call-back -+ * @data: pointer to adapter cast into an unsigned long -+ **/ -+static void e1000_watchdog(struct timer_list *t) -+{ -+ struct e1000_adapter *adapter = from_timer(adapter, t, watchdog_timer); -+ -+ /* Do the rest outside of interrupt context */ -+ schedule_work(&adapter->watchdog_task); -+ -+ /* TODO: make this use queue_delayed_work() */ -+} -+ - static void e1000_watchdog_task(struct work_struct *work) - { - struct e1000_adapter *adapter = container_of(work, - struct e1000_adapter, -- watchdog_task.work); -+ watchdog_task); - struct net_device *netdev = adapter->netdev; - struct e1000_mac_info *mac = &adapter->hw.mac; - struct e1000_phy_info *phy = &adapter->hw.phy; -@@ -5404,9 +5416,8 @@ static void e1000_watchdog_task(struct work_struct *work) - - /* Reset the timer */ - if (!test_bit(__E1000_DOWN, &adapter->state)) -- queue_delayed_work(adapter->e1000_workqueue, -- &adapter->watchdog_task, -- round_jiffies(2 * HZ)); -+ mod_timer(&adapter->watchdog_timer, -+ round_jiffies(jiffies + 2 * HZ)); - } - - #define E1000_TX_FLAGS_CSUM 0x00000001 -@@ -7259,21 +7270,11 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) - goto err_eeprom; - } - -- adapter->e1000_workqueue = alloc_workqueue("%s", WQ_MEM_RECLAIM, 0, -- e1000e_driver_name); -- -- if (!adapter->e1000_workqueue) { -- err = -ENOMEM; -- goto err_workqueue; -- } -- -- INIT_DELAYED_WORK(&adapter->watchdog_task, e1000_watchdog_task); -- queue_delayed_work(adapter->e1000_workqueue, &adapter->watchdog_task, -- 0); -- -+ timer_setup(&adapter->watchdog_timer, e1000_watchdog, 0); - timer_setup(&adapter->phy_info_timer, e1000_update_phy_info, 0); - - INIT_WORK(&adapter->reset_task, e1000_reset_task); -+ INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task); - INIT_WORK(&adapter->downshift_task, e1000e_downshift_workaround); - INIT_WORK(&adapter->update_phy_task, e1000e_update_phy_task); - INIT_WORK(&adapter->print_hang_task, e1000_print_hw_hang); -@@ -7367,9 +7368,6 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) - return 0; - - err_register: -- flush_workqueue(adapter->e1000_workqueue); -- destroy_workqueue(adapter->e1000_workqueue); --err_workqueue: - if (!(adapter->flags & FLAG_HAS_AMT)) - e1000e_release_hw_control(adapter); - err_eeprom: -@@ -7416,17 +7414,15 @@ static void e1000_remove(struct pci_dev *pdev) - */ - if (!down) - set_bit(__E1000_DOWN, &adapter->state); -+ del_timer_sync(&adapter->watchdog_timer); - del_timer_sync(&adapter->phy_info_timer); - - cancel_work_sync(&adapter->reset_task); -+ cancel_work_sync(&adapter->watchdog_task); - cancel_work_sync(&adapter->downshift_task); - cancel_work_sync(&adapter->update_phy_task); - cancel_work_sync(&adapter->print_hang_task); - -- cancel_delayed_work(&adapter->watchdog_task); -- flush_workqueue(adapter->e1000_workqueue); -- destroy_workqueue(adapter->e1000_workqueue); -- - if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { - cancel_work_sync(&adapter->tx_hwtstamp_work); - if (adapter->tx_hwtstamp_skb) { --- -2.25.0 - diff --git a/0014-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch b/0014-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch deleted file mode 100644 index a120391..0000000 --- a/0014-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch +++ /dev/null @@ -1,80 +0,0 @@ -From f247d4a6fe42acc60b775457e3c35b8289532590 Mon Sep 17 00:00:00 2001 -From: Leo Li -Date: Mon, 21 Oct 2019 14:58:47 -0400 -Subject: [PATCH 14/16] drm/amdgpu: Add DC feature mask to disable fractional - pwm -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -[Why] - -Some LED panel drivers might not like fractional PWM. In such cases, -backlight flickering may be observed. - -[How] - -Add a DC feature mask to disable fractional PWM, and associate it with -the preexisting dc_config flag. - -The flag is only plumbed through the dmcu firmware, so plumb it through -the driver path as well. - -To disable, add the following to the linux cmdline: -amdgpu.dcfeaturemask=0x4 - -Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204957 -Signed-off-by: Leo Li -Reviewed-by: Anthony Koo -Tested-by: Lukáš Krejčí -Signed-off-by: Alex Deucher ---- - drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +++ - drivers/gpu/drm/amd/display/dc/dce/dce_abm.c | 4 ++++ - drivers/gpu/drm/amd/include/amd_shared.h | 1 + - 3 files changed, 8 insertions(+) - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index 4e9c15c409ba..25b72eb76add 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -697,6 +697,9 @@ static int amdgpu_dm_init(struct amdgpu_device *adev) - if (amdgpu_dc_feature_mask & DC_MULTI_MON_PP_MCLK_SWITCH_MASK) - init_data.flags.multi_mon_pp_mclk_switch = true; - -+ if (amdgpu_dc_feature_mask & DC_DISABLE_FRACTIONAL_PWM_MASK) -+ init_data.flags.disable_fractional_pwm = true; -+ - init_data.flags.power_down_display_on_boot = true; - - #ifdef CONFIG_DRM_AMD_DC_DCN2_0 -diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c -index 7700a855d77c..698b84acc44f 100644 ---- a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c -+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c -@@ -404,6 +404,10 @@ static bool dce_abm_init_backlight(struct abm *abm) - /* Enable the backlight output */ - REG_UPDATE(BL_PWM_CNTL, BL_PWM_EN, 1); - -+ /* Disable fractional pwm if configured */ -+ REG_UPDATE(BL_PWM_CNTL, BL_PWM_FRACTIONAL_EN, -+ abm->ctx->dc->config.disable_fractional_pwm ? 0 : 1); -+ - /* Unlock group 2 backlight registers */ - REG_UPDATE(BL_PWM_GRP1_REG_LOCK, - BL_PWM_GRP1_REG_LOCK, 0); -diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h -index 8889aaceec60..5450ed762b7a 100644 ---- a/drivers/gpu/drm/amd/include/amd_shared.h -+++ b/drivers/gpu/drm/amd/include/amd_shared.h -@@ -143,6 +143,7 @@ enum PP_FEATURE_MASK { - enum DC_FEATURE_MASK { - DC_FBC_MASK = 0x1, - DC_MULTI_MON_PP_MCLK_SWITCH_MASK = 0x2, -+ DC_DISABLE_FRACTIONAL_PWM_MASK = 0x4, - }; - - enum amd_dpm_forced_level; --- -2.25.0 - diff --git a/PKGBUILD b/PKGBUILD index 3e06c16..1ed1f7c 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -17,7 +17,7 @@ pkgbase=linux-ck _supver=5 _majver=4 -_minver=15 +_minver=16 _gccpatchver='20190822' _ckpatchversion=ck1 if [ "$_minver" == "0" ]; then @@ -49,10 +49,8 @@ source=( 0008-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch 0009-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch 0010-drm-i915-Limit-audio-CDCLK-2-BCLK-constraint-back-to.patch - 0011-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch - 0012-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch - 0013-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch - 0014-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch + 0011-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch + 0012-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch linux-ck-patch-${_supver}.${_majver}-${_ckpatchversion}.xz::http://ck.kolivas.org/patches/${_supver}.0/${_supver}.${_majver}/${_supver}.${_majver}-${_ckpatchversion}/patch-${_supver}.${_majver}-${_ckpatchversion}.xz graysky_bdver2-hotfix.patch kernel_gcc_patch-${_gccpatchver}.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/${_gccpatchver}.tar.gz @@ -65,7 +63,7 @@ validpgpkeys=( '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman ) # https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc -b2sums=('0384ac416aaca05ac73e77fae2cf85b2d773f343aa9a95191818a237354904b2c36404cbe08e373be832fa9f17c7961362dfe3be50f8cfe040c2eaddbab37da1' +b2sums=('cf99bbd992d8e90c4255c0ce81fd27793663fb2b300ea1bf686ca21933e6ec6cd2ce7a2bea7b59e235ad70bc05519fd06e033baa0d6e881df732d3a85bc6a17c' 'SKIP' '76c34ea8f8d6fafcbb12fa0e01821af5926e60046c37cee9855786b8bfe16b8ac5222d441335aa01b62e7ebfe2805a1175d00d3bc4ee1c2617173934284c4164' '5427a9283a9ccb38a63ba5bd680e331245bd134501ce66e912cb07c250e37810a895f4ae78371db2b0cfcbfcb1bee96daafc0e5c71f40ec9b8643d3a88a80bab' @@ -77,8 +75,6 @@ b2sums=('0384ac416aaca05ac73e77fae2cf85b2d773f343aa9a95191818a237354904b2c36404c 'ab7c15c8a219a7e895b39a10a452005252bb018749607676a7e436263a0876d096a5716c9bcbf30e2ff6bc4e525be22ac3838ab3d363373945d5bf5ce43648d4' 'bb35fce00e121769f4a85c01a799efa7e3eccae8fdd29993d5bbd574a2af50cabeafcf6a9bebf5713223cdb64a53fd7bbf41de7f0a84023531b160e0fe88dc52' '26082d1d89d9a6e44ea29be9056029f4af228cf22d6c4f6c9f32ed552859bcb8982dc57f63bcb216e220590a029800aeade0bf47356f7ef3ebbe9c0261674379' - 'aba17d1a3a4638d997c33ea385cfd4ac4008a13f31c026e86342169117aa6b238cdebdc4ddbe234e54c68816386ac0e401ecd9e5b49bd42e1ef60eecdf3ad89a' - 'd4878831fa03c17b590001d15ddbbfeb1a8747c961503c26aee330d213c0fbf6c2eab7226456083f52a5fb4b4ffd9bf7b2db741de7c7476a15873f2a8d9f7b74' '76bb50a23b822de85f3381a511b42bb46110a39d31ede81bd168cb708882b93be525576b1805da5383f35f6f18fab817ad195aa870ab75e7775855a150d172a1' '726d89aeb1f5df51cfa395e01edb4b8b36460b1f75611ee921d057dfb28cd2d6c41990bca4b40512b9398e0558c4028845252442d9ec1d8f13847a0ed9903a1d' '8faff0d2b95eda0b96e8042367634c45c1e823238e99793daeda5614efdc448dfe28172bf13f0d988cf4d5cbb4892089893e0183cd8825de7f54942283f2b5a0' @@ -114,10 +110,8 @@ prepare() { patch -p1 -i ../0008-drm-i915-Fix-audio-power-up-sequence-for-gen10-displ.patch patch -p1 -i ../0009-drm-i915-extend-audio-CDCLK-2-BCLK-constraint-to-mor.patch patch -p1 -i ../0010-drm-i915-Limit-audio-CDCLK-2-BCLK-constraint-back-to.patch - patch -p1 -i ../0011-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-re.patch - patch -p1 -i ../0012-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch - patch -p1 -i ../0013-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch - patch -p1 -i ../0014-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch + patch -p1 -i ../0011-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch + patch -p1 -i ../0012-drm-amdgpu-Add-DC-feature-mask-to-disable-fractional.patch # fix naming schema in EXTRAVERSION of ck patch set -- cgit v1.2.1