endif
LINUX_VERSION-5.4 = .155
-LINUX_VERSION-5.10 = .74
+LINUX_VERSION-5.10 = .75
LINUX_KERNEL_HASH-5.4.155 = cc0c0f902748d251cb22d0e69e3b8d260c447eb0072ef853da15da6cce775038
-LINUX_KERNEL_HASH-5.10.74 = 5755a6487018399812238205aba73a2693b0f9f3cd73d7cf1ce4d5436c3de1b0
+LINUX_KERNEL_HASH-5.10.75 = 0a2b2f5fefb90773190aaef4726ac363e03992aedc424b0a57eca092d084304b
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -265,6 +265,7 @@ static void xhci_pci_quirks(struct devic
+@@ -267,6 +267,7 @@ static void xhci_pci_quirks(struct devic
pdev->device == 0x0015) {
xhci->quirks |= XHCI_RESET_ON_RESUME;
xhci->quirks |= XHCI_ZERO_64B_REGS;
* non-error returns are a promise to giveback() the urb later
* we drop ownership so next owner (or urb unlink) can get it
*/
-@@ -5362,6 +5459,7 @@ static const struct hc_driver xhci_hc_dr
+@@ -5367,6 +5464,7 @@ static const struct hc_driver xhci_hc_dr
.endpoint_reset = xhci_endpoint_reset,
.check_bandwidth = xhci_check_bandwidth,
.reset_bandwidth = xhci_reset_bandwidth,
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -274,8 +274,10 @@ static void xhci_pci_quirks(struct devic
+@@ -276,8 +276,10 @@ static void xhci_pci_quirks(struct devic
pdev->device == 0x3432)
xhci->quirks |= XHCI_BROKEN_STREAMS;
pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI)
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -556,7 +556,10 @@ void xhci_find_new_dequeue_state(struct
+@@ -562,7 +562,10 @@ void xhci_find_new_dequeue_state(struct
struct xhci_virt_ep *ep = &dev->eps[ep_index];
struct xhci_ring *ep_ring;
struct xhci_segment *new_seg;
dma_addr_t addr;
u64 hw_dequeue;
bool cycle_found = false;
-@@ -594,7 +597,28 @@ void xhci_find_new_dequeue_state(struct
+@@ -600,7 +603,28 @@ void xhci_find_new_dequeue_state(struct
hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id);
new_seg = ep_ring->deq_seg;
new_deq = ep_ring->dequeue;
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -277,6 +277,7 @@ static void xhci_pci_quirks(struct devic
+@@ -279,6 +279,7 @@ static void xhci_pci_quirks(struct devic
if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) {
xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -653,6 +653,16 @@ void xhci_find_new_dequeue_state(struct
+@@ -659,6 +659,16 @@ void xhci_find_new_dequeue_state(struct
} while (!cycle_found || !td_last_trb_found);
aliases {
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
-@@ -322,7 +322,7 @@
+@@ -323,7 +323,7 @@
/ {
chosen {
&uart0 {
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
-@@ -319,6 +319,7 @@
+@@ -320,6 +320,7 @@
#include "bcm2711-rpi.dtsi"
#include "bcm283x-rpi-csi1-2lane.dtsi"
#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
/ {
chosen {
-@@ -585,6 +586,10 @@
+@@ -586,6 +587,10 @@
pinctrl-0 = <&audio_pins>;
};
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
-@@ -354,6 +354,10 @@
+@@ -355,6 +355,10 @@
i2c4 = &i2c4;
i2c5 = &i2c5;
i2c6 = &i2c6;
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
-@@ -349,11 +349,12 @@
+@@ -350,11 +350,12 @@
mmc0 = &emmc2;
mmc1 = &mmcnr;
mmc2 = &sdhost;
spi3 = &spi3;
spi4 = &spi4;
spi5 = &spi5;
-@@ -559,13 +560,6 @@
+@@ -560,13 +561,6 @@
pinctrl-0 = <&i2s_pins>;
};
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -4256,9 +4256,9 @@ void xhci_queue_new_dequeue_state(struct
+@@ -4262,9 +4262,9 @@ void xhci_queue_new_dequeue_state(struct
}
ep = &xhci->devs[slot_id]->eps[ep_index];
if ((ep->ep_state & SET_DEQ_PENDING)) {
+++ /dev/null
-From 9d51ba9909129465493d56a7134ce4220d2e69e9 Mon Sep 17 00:00:00 2001
-From: Jonathan Bell <jonathan@raspberrypi.com>
-Date: Mon, 16 Aug 2021 14:43:06 +0100
-Subject: [PATCH] xhci: guard accesses to ep_state in
- xhci_endpoint_reset()
-
-See https://github.com/raspberrypi/linux/issues/3981
-
-Two read-modify-write cycles on ep->ep_state are not guarded by
-xhci->lock. Fix these.
-
-Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
----
- drivers/usb/host/xhci.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -3270,10 +3270,13 @@ static void xhci_endpoint_reset(struct u
- return;
-
- /* Bail out if toggle is already being cleared by a endpoint reset */
-+ spin_lock_irqsave(&xhci->lock, flags);
- if (ep->ep_state & EP_HARD_CLEAR_TOGGLE) {
- ep->ep_state &= ~EP_HARD_CLEAR_TOGGLE;
-+ spin_unlock_irqrestore(&xhci->lock, flags);
- return;
- }
-+ spin_unlock_irqrestore(&xhci->lock, flags);
- /* Only interrupt and bulk ep's use data toggle, USB2 spec 5.5.4-> */
- if (usb_endpoint_xfer_control(&host_ep->desc) ||
- usb_endpoint_xfer_isoc(&host_ep->desc))
-@@ -3359,8 +3362,10 @@ static void xhci_endpoint_reset(struct u
- xhci_free_command(xhci, cfg_cmd);
- cleanup:
- xhci_free_command(xhci, stop_cmd);
-+ spin_lock_irqsave(&xhci->lock, flags);
- if (ep->ep_state & EP_SOFT_CLEAR_TOGGLE)
- ep->ep_state &= ~EP_SOFT_CLEAR_TOGGLE;
-+ spin_unlock_irqrestore(&xhci->lock, flags);
- }
-
- static int xhci_check_streams_endpoint(struct xhci_hcd *xhci,
gpios = <&virtgpio 0 0>;
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
-@@ -579,13 +579,13 @@
+@@ -580,13 +580,13 @@
};
&leds {
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -2088,6 +2088,7 @@ static int mv88e6xxx_port_fdb_add(struct
+@@ -2097,6 +2097,7 @@ static int mv88e6xxx_port_fdb_add(struct
struct mv88e6xxx_chip *chip = ds->priv;
int err;
mv88e6xxx_reg_lock(chip);
err = mv88e6xxx_port_db_load_purge(chip, port, addr, vid,
MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC);
-@@ -2102,6 +2103,7 @@ static int mv88e6xxx_port_fdb_del(struct
+@@ -2111,6 +2112,7 @@ static int mv88e6xxx_port_fdb_del(struct
struct mv88e6xxx_chip *chip = ds->priv;
int err;
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -2650,6 +2650,9 @@ static int mv88e6xxx_setup_port(struct m
+@@ -2659,6 +2659,9 @@ static int mv88e6xxx_setup_port(struct m
if (dsa_is_cpu_port(ds, port))
reg = 0;
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -2860,6 +2860,7 @@ static int mv88e6xxx_setup(struct dsa_sw
+@@ -2869,6 +2869,7 @@ static int mv88e6xxx_setup(struct dsa_sw
chip->ds = ds;
ds->slave_mii_bus = mv88e6xxx_default_mdio_bus(chip);
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -5422,6 +5422,7 @@ static int mv88e6xxx_register_switch(str
+@@ -5431,6 +5431,7 @@ static int mv88e6xxx_register_switch(str
ds->ops = &mv88e6xxx_switch_ops;
ds->ageing_time_min = chip->info->age_time_coeff;
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
--- a/drivers/net/ethernet/Kconfig
+++ b/drivers/net/ethernet/Kconfig
-@@ -158,6 +158,7 @@ source "drivers/net/ethernet/pasemi/Kcon
+@@ -159,6 +159,7 @@ source "drivers/net/ethernet/pasemi/Kcon
source "drivers/net/ethernet/pensando/Kconfig"
source "drivers/net/ethernet/qlogic/Kconfig"
source "drivers/net/ethernet/qualcomm/Kconfig"
--- a/drivers/net/ethernet/Kconfig
+++ b/drivers/net/ethernet/Kconfig
-@@ -162,6 +162,13 @@ source "drivers/net/ethernet/rdc/Kconfig
+@@ -163,6 +163,13 @@ source "drivers/net/ethernet/rdc/Kconfig
source "drivers/net/ethernet/realtek/Kconfig"
source "drivers/net/ethernet/renesas/Kconfig"
source "drivers/net/ethernet/rocker/Kconfig"