KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-5.4 = .142
+LINUX_VERSION-5.4 = .143
-LINUX_KERNEL_HASH-5.4.142 = 99785728968564ba27c7e552d024b560072dcbc885540912eabb5c021e231451
+LINUX_KERNEL_HASH-5.4.143 = 0953650b05a5f806d76c5691583e94e141f4f691bc0ba75a60b643740f021d24
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2461,6 +2461,11 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2469,6 +2469,11 @@ static int lan78xx_reset(struct lan78xx_
int ret = 0;
unsigned long timeout;
u8 sig;
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
buf |= HW_CFG_LRST_;
-@@ -2514,6 +2519,9 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2522,6 +2527,9 @@ static int lan78xx_reset(struct lan78xx_
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
buf |= HW_CFG_MEF_;
ret = lan78xx_write_reg(dev, HW_CFG, buf);
ret = lan78xx_read_reg(dev, USB_CFG0, &buf);
-@@ -2569,6 +2577,9 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2577,6 +2585,9 @@ static int lan78xx_reset(struct lan78xx_
buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
}
}
USB_PORT_FEAT_C_OVER_CURRENT);
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
-@@ -1993,6 +1993,85 @@ free_interfaces:
+@@ -1999,6 +1999,85 @@ free_interfaces:
if (cp->string == NULL &&
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2643,6 +2643,22 @@ static int lan78xx_open(struct net_devic
+@@ -2651,6 +2651,22 @@ static int lan78xx_open(struct net_devic
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
-@@ -2925,8 +2934,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -2933,8 +2942,14 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_RX_CSUM_ENABLE)
dev->net->features |= NETIF_F_RXCSUM;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2175,6 +2175,22 @@ static int lan78xx_phy_init(struct lan78
+@@ -2183,6 +2183,22 @@ static int lan78xx_phy_init(struct lan78
mii_adv_to_linkmode_adv_t(fc, mii_adv);
linkmode_or(phydev->advertising, fc, phydev->advertising);
if (phydev->mdio.dev.of_node) {
u32 reg;
int len;
-@@ -2652,22 +2668,6 @@ static int lan78xx_open(struct net_devic
+@@ -2660,22 +2676,6 @@ static int lan78xx_open(struct net_devic
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
-@@ -3768,7 +3773,12 @@ static int lan78xx_probe(struct usb_inte
+@@ -3776,7 +3781,12 @@ static int lan78xx_probe(struct usb_inte
netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2180,7 +2180,7 @@ static int lan78xx_phy_init(struct lan78
+@@ -2188,7 +2188,7 @@ static int lan78xx_phy_init(struct lan78
mii_adv_to_linkmode_adv_t(fc, mii_adv);
linkmode_or(phydev->advertising, fc, phydev->advertising);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -3169,7 +3169,7 @@ static int rx_submit(struct lan78xx_net
+@@ -3177,7 +3177,7 @@ static int rx_submit(struct lan78xx_net
size_t size = dev->rx_urb_size;
int ret = 0;
* have been called previously. Use for set_configuration, set_interface,
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
-@@ -1120,6 +1120,21 @@ static void remove_intf_ep_devs(struct u
+@@ -1126,6 +1126,21 @@ static void remove_intf_ep_devs(struct u
intf->ep_devs_created = 0;
}
+ /* Acknowledge any pending PHY interrupt, lest it be the last */
+ phy_read(phydev, LAN88XX_INT_STS);
+
+ mutex_lock(&phydev->lock);
phy_read_status(phydev);
-
- if (!phydev->link && dev->link_on) {
+ link = phydev->link;
kfree(sdev->inquiry);
kfree(sdev);
-@@ -868,6 +877,8 @@ static struct bin_attribute dev_attr_vpd
+@@ -871,6 +880,8 @@ static struct bin_attribute dev_attr_vpd
sdev_vpd_pg_attr(pg83);
sdev_vpd_pg_attr(pg80);
static ssize_t show_inquiry(struct file *filep, struct kobject *kobj,
struct bin_attribute *bin_attr,
-@@ -1200,12 +1211,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
+@@ -1203,12 +1214,18 @@ static umode_t scsi_sdev_bin_attr_is_vis
struct scsi_device *sdev = to_scsi_device(dev);
return S_IRUGO;
}
-@@ -1248,8 +1265,10 @@ static struct attribute *scsi_sdev_attrs
+@@ -1251,8 +1268,10 @@ static struct attribute *scsi_sdev_attrs
};
static struct bin_attribute *scsi_sdev_bin_attrs[] = {
/*
* The Mellanox Tavor device gives false positive parity errors. Mark this
* device with a broken_parity_status to allow PCI scanning code to "skip"
-@@ -3321,6 +3322,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -3322,6 +3323,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
/*
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
* To work around this, query the size it should be configured to by the
-@@ -3346,6 +3349,8 @@ static void quirk_intel_ntb(struct pci_d
+@@ -3347,6 +3350,8 @@ static void quirk_intel_ntb(struct pci_d
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
/*
* Some BIOS implementations leave the Intel GPU interrupts enabled, even
* though no one is handling them (e.g., if the i915 driver is never
-@@ -3384,6 +3389,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3385,6 +3390,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
-@@ -2524,6 +2524,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VI
+@@ -2525,6 +2525,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VI
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3364, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8380_0, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi);
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
-@@ -2530,6 +2530,9 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VI
+@@ -2531,6 +2531,9 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VI
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_BROADCOM, 0x43ec, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_BROADCOM, 0x43ef, quirk_disable_all_msi);
+++ /dev/null
-From: =?utf-8?q?Marek_Beh=C3=BAn?= <kabel@kernel.org>
-Subject: [PATCH v2] cpufreq: armada-37xx: forbid cpufreq for 1.2 GHz variant
-Date: Thu, 1 Jul 2021 00:56:01 +0200
-
-The 1.2 GHz variant of the Armada 3720 SOC is unstable with DVFS: when
-the SOC boots, the WTMI firmware sets clocks and AVS values that work
-correctly with 1.2 GHz CPU frequency, but random crashes occur once
-cpufreq driver starts scaling.
-
-We do not know currently what is the reason:
-- it may be that the voltage value for L0 for 1.2 GHz variant provided
- by the vendor in the OTP is simply incorrect when scaling is used,
-- it may be that some delay is needed somewhere,
-- it may be something else.
-
-The most sane solution now seems to be to simply forbid the cpufreq
-driver on 1.2 GHz variant.
-
-Signed-off-by: Marek BehĂșn <kabel@kernel.org>
-Fixes: 92ce45fb875d ("cpufreq: Add DVFS support for Armada 37xx")
----
- drivers/cpufreq/armada-37xx-cpufreq.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
---- a/drivers/cpufreq/armada-37xx-cpufreq.c
-+++ b/drivers/cpufreq/armada-37xx-cpufreq.c
-@@ -102,7 +102,11 @@ struct armada_37xx_dvfs {
- };
-
- static struct armada_37xx_dvfs armada_37xx_dvfs[] = {
-- {.cpu_freq_max = 1200*1000*1000, .divider = {1, 2, 4, 6} },
-+ /*
-+ * The cpufreq scaling for 1.2 GHz variant of the SOC is currently
-+ * unstable because we do not know how to configure it properly.
-+ */
-+ /* {.cpu_freq_max = 1200*1000*1000, .divider = {1, 2, 4, 6} }, */
- {.cpu_freq_max = 1000*1000*1000, .divider = {1, 2, 4, 5} },
- {.cpu_freq_max = 800*1000*1000, .divider = {1, 2, 3, 4} },
- {.cpu_freq_max = 600*1000*1000, .divider = {2, 4, 5, 6} },
#include <linux/platform_data/x86/apple.h>
#include <linux/pm_runtime.h>
#include <linux/suspend.h>
-@@ -5727,3 +5728,34 @@ static void apex_pci_fixup_class(struct
+@@ -5728,3 +5729,34 @@ static void apex_pci_fixup_class(struct
}
DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);