mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-05-04 09:31:26 +02:00
kernel: bump 6.12 to 6.12.78
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.78 Removed upstreamed: generic/pending-6.12/620-net-sfp-improve-Huawei-MA5671a-fixup.patch[1] generic/pending-6.12/704-net-phy-register-phy-led_triggers-during-probe-to-av.patch[2] airoha/patches-6.12/014-01-v6.13-net-airoha-fix-PSE-memory-configuration-in-airoha_fe.patch[3] airoha/patches-6.12/014-02-v6.13-net-airoha-read-default-PSE-reserved-pages-value-bef.patch[4] airoha/patches-6.12/031-01-v6.13-net-airoha-Read-completion-queue-data-in-airoha_qdma.patch[5] airoha/patches-6.12/128-v7.1-net-airoha-Remove-airoha_dev_stop-in-airoha_remove.patch[6] Manually rebased: airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch All patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=bbdf6d378e1ddbeadc04c57b182aadefcc3aa917 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=241cd64cf2e32b28ead151b1795cd8fef2b6e482 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=a04ac7bc97afe313e10ae4c73797c668dee47c5c 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=a9ed47c3663219e20406d566f02809de05373a42 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=4cba4373abac7ba27fdb33057a29b92efa8fd15d 6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.78&id=652ec118d8dc1b088e685d5562995b6665463771 Signed-off-by: John Audia <therealgraysky@proton.me> Link: https://github.com/openwrt/openwrt/pull/22607 [Fix 048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol] (cherry picked from commit bb3da35c904f15980c3e0c328ff599862356b489) Link: https://github.com/openwrt/openwrt/pull/22699 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
5c59e2f9ff
commit
ff235f09b5
@ -1,40 +0,0 @@
|
||||
From 8e38e08f2c560328a873c35aff1a0dbea6a7d084 Mon Sep 17 00:00:00 2001
|
||||
From: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
Date: Tue, 1 Oct 2024 12:10:25 +0200
|
||||
Subject: [PATCH 2/2] net: airoha: fix PSE memory configuration in
|
||||
airoha_fe_pse_ports_init()
|
||||
|
||||
Align PSE memory configuration to vendor SDK. In particular, increase
|
||||
initial value of PSE reserved memory in airoha_fe_pse_ports_init()
|
||||
routine by the value used for the second Packet Processor Engine (PPE2)
|
||||
and do not overwrite the default value.
|
||||
|
||||
Introduced by commit 23020f049327 ("net: airoha: Introduce ethernet support
|
||||
for EN7581 SoC")
|
||||
|
||||
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
Reviewed-by: Simon Horman <horms@kernel.org>
|
||||
Link: https://patch.msgid.link/20241001-airoha-eth-pse-fix-v2-2-9a56cdffd074@kernel.org
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/mediatek/airoha_eth.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
+++ b/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
@@ -1166,11 +1166,13 @@ static void airoha_fe_pse_ports_init(str
|
||||
[FE_PSE_PORT_GDM4] = 2,
|
||||
[FE_PSE_PORT_CDM5] = 2,
|
||||
};
|
||||
+ u32 all_rsv;
|
||||
int q;
|
||||
|
||||
+ all_rsv = airoha_fe_get_pse_all_rsv(eth);
|
||||
/* hw misses PPE2 oq rsv */
|
||||
- airoha_fe_set(eth, REG_FE_PSE_BUF_SET,
|
||||
- PSE_RSV_PAGES * pse_port_num_queues[FE_PSE_PORT_PPE2]);
|
||||
+ all_rsv += PSE_RSV_PAGES * pse_port_num_queues[FE_PSE_PORT_PPE2];
|
||||
+ airoha_fe_set(eth, REG_FE_PSE_BUF_SET, all_rsv);
|
||||
|
||||
/* CMD1 */
|
||||
for (q = 0; q < pse_port_num_queues[FE_PSE_PORT_CDM1]; q++)
|
||||
@ -1,52 +0,0 @@
|
||||
From 1f3e7ff4f296af1f4350f457d5bd82bc825e645a Mon Sep 17 00:00:00 2001
|
||||
From: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
Date: Tue, 1 Oct 2024 12:10:24 +0200
|
||||
Subject: [PATCH 1/2] net: airoha: read default PSE reserved pages value before
|
||||
updating
|
||||
|
||||
Store the default value for the number of PSE reserved pages in orig_val
|
||||
at the beginning of airoha_fe_set_pse_oq_rsv routine, before updating it
|
||||
with airoha_fe_set_pse_queue_rsv_pages().
|
||||
Introduce airoha_fe_get_pse_all_rsv utility routine.
|
||||
|
||||
Introduced by commit 23020f049327 ("net: airoha: Introduce ethernet support
|
||||
for EN7581 SoC")
|
||||
|
||||
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
Reviewed-by: Simon Horman <horms@kernel.org>
|
||||
Link: https://patch.msgid.link/20241001-airoha-eth-pse-fix-v2-1-9a56cdffd074@kernel.org
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/mediatek/airoha_eth.c | 14 ++++++++++----
|
||||
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
+++ b/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
@@ -1116,17 +1116,23 @@ static void airoha_fe_set_pse_queue_rsv_
|
||||
PSE_CFG_WR_EN_MASK | PSE_CFG_OQRSV_SEL_MASK);
|
||||
}
|
||||
|
||||
+static u32 airoha_fe_get_pse_all_rsv(struct airoha_eth *eth)
|
||||
+{
|
||||
+ u32 val = airoha_fe_rr(eth, REG_FE_PSE_BUF_SET);
|
||||
+
|
||||
+ return FIELD_GET(PSE_ALLRSV_MASK, val);
|
||||
+}
|
||||
+
|
||||
static int airoha_fe_set_pse_oq_rsv(struct airoha_eth *eth,
|
||||
u32 port, u32 queue, u32 val)
|
||||
{
|
||||
- u32 orig_val, tmp, all_rsv, fq_limit;
|
||||
+ u32 orig_val = airoha_fe_get_pse_queue_rsv_pages(eth, port, queue);
|
||||
+ u32 tmp, all_rsv, fq_limit;
|
||||
|
||||
airoha_fe_set_pse_queue_rsv_pages(eth, port, queue, val);
|
||||
|
||||
/* modify all rsv */
|
||||
- orig_val = airoha_fe_get_pse_queue_rsv_pages(eth, port, queue);
|
||||
- tmp = airoha_fe_rr(eth, REG_FE_PSE_BUF_SET);
|
||||
- all_rsv = FIELD_GET(PSE_ALLRSV_MASK, tmp);
|
||||
+ all_rsv = airoha_fe_get_pse_all_rsv(eth);
|
||||
all_rsv += (val - orig_val);
|
||||
airoha_fe_rmw(eth, REG_FE_PSE_BUF_SET, PSE_ALLRSV_MASK,
|
||||
FIELD_PREP(PSE_ALLRSV_MASK, all_rsv));
|
||||
@ -16,7 +16,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
+++ b/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
@@ -1709,9 +1709,11 @@ static int airoha_qdma_tx_napi_poll(stru
|
||||
@@ -1713,9 +1713,11 @@ static int airoha_qdma_tx_napi_poll(stru
|
||||
WRITE_ONCE(desc->msg1, 0);
|
||||
|
||||
if (skb) {
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (netif_tx_queue_stopped(txq) &&
|
||||
q->ndesc - q->queued >= q->free_thr)
|
||||
netif_tx_wake_queue(txq);
|
||||
@@ -2499,7 +2501,9 @@ static netdev_tx_t airoha_dev_xmit(struc
|
||||
@@ -2494,7 +2496,9 @@ static netdev_tx_t airoha_dev_xmit(struc
|
||||
q->queued += i;
|
||||
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
@ -1,92 +0,0 @@
|
||||
From 3affa310de523d63e52ea8e2efb3c476df29e414 Mon Sep 17 00:00:00 2001
|
||||
From: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
Date: Tue, 29 Oct 2024 13:17:09 +0100
|
||||
Subject: [PATCH 1/2] net: airoha: Read completion queue data in
|
||||
airoha_qdma_tx_napi_poll()
|
||||
|
||||
In order to avoid any possible race, read completion queue head and
|
||||
pending entry in airoha_qdma_tx_napi_poll routine instead of doing it in
|
||||
airoha_irq_handler. Remove unused airoha_tx_irq_queue unused fields.
|
||||
This is a preliminary patch to add Qdisc offload for airoha_eth driver.
|
||||
|
||||
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
Link: https://patch.msgid.link/20241029-airoha-en7581-tx-napi-work-v1-1-96ad1686b946@kernel.org
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/ethernet/mediatek/airoha_eth.c | 31 +++++++++-------------
|
||||
1 file changed, 13 insertions(+), 18 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
+++ b/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
@@ -752,11 +752,9 @@ struct airoha_tx_irq_queue {
|
||||
struct airoha_qdma *qdma;
|
||||
|
||||
struct napi_struct napi;
|
||||
- u32 *q;
|
||||
|
||||
int size;
|
||||
- int queued;
|
||||
- u16 head;
|
||||
+ u32 *q;
|
||||
};
|
||||
|
||||
struct airoha_hw_stats {
|
||||
@@ -1655,25 +1653,31 @@ static int airoha_qdma_init_rx(struct ai
|
||||
static int airoha_qdma_tx_napi_poll(struct napi_struct *napi, int budget)
|
||||
{
|
||||
struct airoha_tx_irq_queue *irq_q;
|
||||
+ int id, done = 0, irq_queued;
|
||||
struct airoha_qdma *qdma;
|
||||
struct airoha_eth *eth;
|
||||
- int id, done = 0;
|
||||
+ u32 status, head;
|
||||
|
||||
irq_q = container_of(napi, struct airoha_tx_irq_queue, napi);
|
||||
qdma = irq_q->qdma;
|
||||
id = irq_q - &qdma->q_tx_irq[0];
|
||||
eth = qdma->eth;
|
||||
|
||||
- while (irq_q->queued > 0 && done < budget) {
|
||||
- u32 qid, last, val = irq_q->q[irq_q->head];
|
||||
+ status = airoha_qdma_rr(qdma, REG_IRQ_STATUS(id));
|
||||
+ head = FIELD_GET(IRQ_HEAD_IDX_MASK, status);
|
||||
+ head = head % irq_q->size;
|
||||
+ irq_queued = FIELD_GET(IRQ_ENTRY_LEN_MASK, status);
|
||||
+
|
||||
+ while (irq_queued > 0 && done < budget) {
|
||||
+ u32 qid, last, val = irq_q->q[head];
|
||||
struct airoha_queue *q;
|
||||
|
||||
if (val == 0xff)
|
||||
break;
|
||||
|
||||
- irq_q->q[irq_q->head] = 0xff; /* mark as done */
|
||||
- irq_q->head = (irq_q->head + 1) % irq_q->size;
|
||||
- irq_q->queued--;
|
||||
+ irq_q->q[head] = 0xff; /* mark as done */
|
||||
+ head = (head + 1) % irq_q->size;
|
||||
+ irq_queued--;
|
||||
done++;
|
||||
|
||||
last = FIELD_GET(IRQ_DESC_IDX_MASK, val);
|
||||
@@ -2025,20 +2029,11 @@ static irqreturn_t airoha_irq_handler(in
|
||||
|
||||
if (intr[0] & INT_TX_MASK) {
|
||||
for (i = 0; i < ARRAY_SIZE(qdma->q_tx_irq); i++) {
|
||||
- struct airoha_tx_irq_queue *irq_q = &qdma->q_tx_irq[i];
|
||||
- u32 status, head;
|
||||
-
|
||||
if (!(intr[0] & TX_DONE_INT_MASK(i)))
|
||||
continue;
|
||||
|
||||
airoha_qdma_irq_disable(qdma, QDMA_INT_REG_IDX0,
|
||||
TX_DONE_INT_MASK(i));
|
||||
-
|
||||
- status = airoha_qdma_rr(qdma, REG_IRQ_STATUS(i));
|
||||
- head = FIELD_GET(IRQ_HEAD_IDX_MASK, status);
|
||||
- irq_q->head = head % irq_q->size;
|
||||
- irq_q->queued = FIELD_GET(IRQ_ENTRY_LEN_MASK, status);
|
||||
-
|
||||
napi_schedule(&qdma->q_tx_irq[i].napi);
|
||||
}
|
||||
}
|
||||
@ -101,7 +101,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
-obj-$(CONFIG_NET_AIROHA) += airoha_eth.o
|
||||
--- /dev/null
|
||||
+++ b/drivers/net/ethernet/airoha/airoha_eth.c
|
||||
@@ -0,0 +1,3358 @@
|
||||
@@ -0,0 +1,3357 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-only
|
||||
+/*
|
||||
+ * Copyright (c) 2024 AIROHA Inc
|
||||
@ -3433,7 +3433,6 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
+ if (!port)
|
||||
+ continue;
|
||||
+
|
||||
+ airoha_dev_stop(port->dev);
|
||||
+ unregister_netdev(port->dev);
|
||||
+ }
|
||||
+ free_netdev(eth->napi_dev);
|
||||
@ -3462,7 +3461,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
+MODULE_DESCRIPTION("Ethernet driver for Airoha SoC");
|
||||
--- a/drivers/net/ethernet/mediatek/airoha_eth.c
|
||||
+++ /dev/null
|
||||
@@ -1,3358 +0,0 @@
|
||||
@@ -1,3357 +0,0 @@
|
||||
-// SPDX-License-Identifier: GPL-2.0-only
|
||||
-/*
|
||||
- * Copyright (c) 2024 AIROHA Inc
|
||||
@ -6794,7 +6793,6 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
- if (!port)
|
||||
- continue;
|
||||
-
|
||||
- airoha_dev_stop(port->dev);
|
||||
- unregister_netdev(port->dev);
|
||||
- }
|
||||
- free_netdev(eth->napi_dev);
|
||||
|
||||
@ -236,9 +236,9 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
}
|
||||
free_netdev(eth->napi_dev);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
@@ -2414,6 +2526,7 @@ static void airoha_remove(struct platfor
|
||||
@@ -2413,6 +2525,7 @@ static void airoha_remove(struct platfor
|
||||
continue;
|
||||
|
||||
airoha_dev_stop(port->dev);
|
||||
unregister_netdev(port->dev);
|
||||
+ airoha_metadata_dst_free(port);
|
||||
}
|
||||
|
||||
@ -145,7 +145,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@@ -2504,6 +2561,7 @@ static void airoha_remove(struct platfor
|
||||
@@ -2503,6 +2560,7 @@ static void airoha_remove(struct platfor
|
||||
}
|
||||
free_netdev(eth->napi_dev);
|
||||
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
eth->xsi_rsts);
|
||||
if (err) {
|
||||
dev_err(eth->dev, "failed to get bulk xsi reset lines\n");
|
||||
@@ -3052,8 +3061,23 @@ static void airoha_remove(struct platfor
|
||||
@@ -3051,8 +3060,23 @@ static void airoha_remove(struct platfor
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
}
|
||||
|
||||
|
||||
@ -105,7 +105,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
fallthrough;
|
||||
case 2:
|
||||
if (airoha_ppe_is_enabled(eth, 1)) {
|
||||
@@ -3073,11 +3078,38 @@ static const char * const en7581_xsi_rst
|
||||
@@ -3072,11 +3077,38 @@ static const char * const en7581_xsi_rst
|
||||
"xfp-mac",
|
||||
};
|
||||
|
||||
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
msg1 = FIELD_PREP(QDMA_ETH_TXMSG_FPORT_MASK, fport) |
|
||||
FIELD_PREP(QDMA_ETH_TXMSG_METER_MASK, 0x7f);
|
||||
|
||||
@@ -3102,6 +3120,35 @@ static int airoha_en7581_get_src_port_id
|
||||
@@ -3101,6 +3119,35 @@ static int airoha_en7581_get_src_port_id
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static const struct airoha_eth_soc_data en7581_soc_data = {
|
||||
.version = 0x7581,
|
||||
.xsi_rsts_names = en7581_xsi_rsts_names,
|
||||
@@ -3112,8 +3159,19 @@ static const struct airoha_eth_soc_data
|
||||
@@ -3111,8 +3158,19 @@ static const struct airoha_eth_soc_data
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/airoha/airoha_eth.c
|
||||
+++ b/drivers/net/ethernet/airoha/airoha_eth.c
|
||||
@@ -3088,7 +3088,6 @@ static void airoha_remove(struct platfor
|
||||
@@ -3087,7 +3087,6 @@ static void airoha_remove(struct platfor
|
||||
}
|
||||
|
||||
static const char * const en7581_xsi_rsts_names[] = {
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
"hsi0-mac",
|
||||
"hsi1-mac",
|
||||
"hsi-mac",
|
||||
@@ -3120,7 +3119,6 @@ static int airoha_en7581_get_src_port_id
|
||||
@@ -3119,7 +3118,6 @@ static int airoha_en7581_get_src_port_id
|
||||
}
|
||||
|
||||
static const char * const an7583_xsi_rsts_names[] = {
|
||||
|
||||
@ -210,8 +210,8 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
}
|
||||
}
|
||||
free_netdev(eth->napi_dev);
|
||||
@@ -3080,6 +3219,10 @@ static void airoha_remove(struct platfor
|
||||
airoha_dev_stop(port->dev);
|
||||
@@ -3079,6 +3218,10 @@ static void airoha_remove(struct platfor
|
||||
|
||||
unregister_netdev(port->dev);
|
||||
airoha_metadata_dst_free(port);
|
||||
+ if (airhoa_is_phy_external(port)) {
|
||||
|
||||
@ -116,8 +116,8 @@ Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
|
||||
}
|
||||
}
|
||||
free_netdev(eth->napi_dev);
|
||||
@@ -3222,10 +3236,12 @@ static void airoha_remove(struct platfor
|
||||
airoha_dev_stop(port->dev);
|
||||
@@ -3221,10 +3235,12 @@ static void airoha_remove(struct platfor
|
||||
|
||||
unregister_netdev(port->dev);
|
||||
airoha_metadata_dst_free(port);
|
||||
+#if defined(CONFIG_PCS_AIROHA)
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
};
|
||||
|
||||
/* Uart divisor latch read */
|
||||
@@ -2835,6 +2843,12 @@ serial8250_do_set_termios(struct uart_po
|
||||
@@ -2841,6 +2849,12 @@ serial8250_do_set_termios(struct uart_po
|
||||
|
||||
serial8250_set_divisor(port, baud, quot, frac);
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -3385,12 +3385,19 @@ static int spi_nor_set_mtd_info(struct s
|
||||
@@ -3526,12 +3526,19 @@ static int spi_nor_set_mtd_info(struct s
|
||||
{
|
||||
struct mtd_info *mtd = &nor->mtd;
|
||||
struct device *dev = nor->dev;
|
||||
|
||||
@ -259,7 +259,7 @@ SVN-Revision: 35130
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/icmpv6.h>
|
||||
@@ -914,10 +915,10 @@ static void tcp_v6_send_response(const s
|
||||
@@ -915,10 +916,10 @@ static void tcp_v6_send_response(const s
|
||||
topt = (__be32 *)(t1 + 1);
|
||||
|
||||
if (tsecr) {
|
||||
@ -829,7 +829,7 @@ SVN-Revision: 35130
|
||||
*sum = csum_fold(csum_partial(diff, sizeof(diff),
|
||||
--- a/include/linux/etherdevice.h
|
||||
+++ b/include/linux/etherdevice.h
|
||||
@@ -559,7 +559,7 @@ static inline bool is_etherdev_addr(cons
|
||||
@@ -560,7 +560,7 @@ static inline bool is_etherdev_addr(cons
|
||||
* @b: Pointer to Ethernet header
|
||||
*
|
||||
* Compare two Ethernet headers, returns 0 if equal.
|
||||
@ -838,7 +838,7 @@ SVN-Revision: 35130
|
||||
* aligned OR the platform can handle unaligned access. This is the
|
||||
* case for all packets coming into netif_receive_skb or similar
|
||||
* entry points.
|
||||
@@ -582,11 +582,12 @@ static inline unsigned long compare_ethe
|
||||
@@ -583,11 +583,12 @@ static inline unsigned long compare_ethe
|
||||
fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6);
|
||||
return fold;
|
||||
#else
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
|
||||
@@ -304,9 +304,7 @@ int bcmgenet_mii_probe(struct net_device
|
||||
@@ -301,9 +301,7 @@ int bcmgenet_mii_probe(struct net_device
|
||||
struct device_node *dn = kdev->of_node;
|
||||
phy_interface_t phy_iface = priv->phy_interface;
|
||||
struct phy_device *phydev;
|
||||
|
||||
@ -1259,7 +1259,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
USB_PORT_FEAT_C_OVER_CURRENT);
|
||||
--- a/drivers/usb/core/message.c
|
||||
+++ b/drivers/usb/core/message.c
|
||||
@@ -2180,6 +2180,85 @@ free_interfaces:
|
||||
@@ -2238,6 +2238,85 @@ free_interfaces:
|
||||
if (cp->string == NULL &&
|
||||
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
|
||||
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
|
||||
|
||||
@ -18589,7 +18589,7 @@ Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
u32 xfer_resolution;
|
||||
--- a/sound/soc/soc-core.c
|
||||
+++ b/sound/soc/soc-core.c
|
||||
@@ -1437,7 +1437,15 @@ int snd_soc_runtime_set_dai_fmt(struct s
|
||||
@@ -1436,7 +1436,15 @@ int snd_soc_runtime_set_dai_fmt(struct s
|
||||
return 0;
|
||||
|
||||
for_each_rtd_codec_dais(rtd, i, codec_dai) {
|
||||
@ -18626,7 +18626,7 @@ Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
* For devices with more than one control interface, we assume the
|
||||
--- a/sound/usb/quirks.c
|
||||
+++ b/sound/usb/quirks.c
|
||||
@@ -2395,6 +2395,8 @@ static const struct usb_audio_quirk_flag
|
||||
@@ -2397,6 +2397,8 @@ static const struct usb_audio_quirk_flag
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
||||
{
|
||||
u32 *buf;
|
||||
@@ -3462,8 +3471,14 @@ static int lan78xx_bind(struct lan78xx_n
|
||||
@@ -3466,8 +3475,14 @@ static int lan78xx_bind(struct lan78xx_n
|
||||
if (DEFAULT_RX_CSUM_ENABLE)
|
||||
dev->net->features |= NETIF_F_RXCSUM;
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
|
||||
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
|
||||
{
|
||||
u32 *buf;
|
||||
@@ -4446,7 +4451,13 @@ static int lan78xx_probe(struct usb_inte
|
||||
@@ -4452,7 +4457,13 @@ static int lan78xx_probe(struct usb_inte
|
||||
if (ret < 0)
|
||||
goto out4;
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/usb/lan78xx.c
|
||||
+++ b/drivers/net/usb/lan78xx.c
|
||||
@@ -2913,6 +2913,11 @@ static int lan78xx_reset(struct lan78xx_
|
||||
@@ -2917,6 +2917,11 @@ static int lan78xx_reset(struct lan78xx_
|
||||
int ret;
|
||||
u32 buf;
|
||||
u8 sig;
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
|
||||
if (ret < 0)
|
||||
@@ -2981,6 +2986,10 @@ static int lan78xx_reset(struct lan78xx_
|
||||
@@ -2985,6 +2990,10 @@ static int lan78xx_reset(struct lan78xx_
|
||||
buf |= HW_CFG_CLK125_EN_;
|
||||
buf |= HW_CFG_REFCLK25_EN_;
|
||||
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
ret = lan78xx_write_reg(dev, HW_CFG, buf);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@@ -3083,6 +3092,9 @@ static int lan78xx_reset(struct lan78xx_
|
||||
@@ -3087,6 +3096,9 @@ static int lan78xx_reset(struct lan78xx_
|
||||
buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
@@ -2664,7 +2664,7 @@ static void bcmgenet_init_tx_ring(struct
|
||||
@@ -2657,7 +2657,7 @@ static void bcmgenet_init_tx_ring(struct
|
||||
|
||||
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
|
||||
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/* Disable rate control for now */
|
||||
bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
|
||||
TDMA_FLOW_PERIOD);
|
||||
@@ -4139,9 +4139,12 @@ static int bcmgenet_probe(struct platfor
|
||||
@@ -4132,9 +4132,12 @@ static int bcmgenet_probe(struct platfor
|
||||
netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
|
||||
|
||||
/* Set default coalescing parameters */
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
|
||||
@@ -310,6 +310,8 @@ int bcmgenet_mii_probe(struct net_device
|
||||
@@ -307,6 +307,8 @@ int bcmgenet_mii_probe(struct net_device
|
||||
/* Communicate the integrated PHY revision */
|
||||
if (priv->internal_phy)
|
||||
phy_flags = priv->gphy_rev;
|
||||
|
||||
@ -46,7 +46,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* have been called previously. Use for set_configuration, set_interface,
|
||||
--- a/drivers/usb/core/message.c
|
||||
+++ b/drivers/usb/core/message.c
|
||||
@@ -1267,6 +1267,21 @@ static void remove_intf_ep_devs(struct u
|
||||
@@ -1325,6 +1325,21 @@ static void remove_intf_ep_devs(struct u
|
||||
intf->ep_devs_created = 0;
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* @dev: the device whose endpoint is being disabled
|
||||
--- a/include/linux/usb.h
|
||||
+++ b/include/linux/usb.h
|
||||
@@ -1875,6 +1875,8 @@ extern int usb_clear_halt(struct usb_dev
|
||||
@@ -1879,6 +1879,8 @@ extern int usb_clear_halt(struct usb_dev
|
||||
extern int usb_reset_configuration(struct usb_device *dev);
|
||||
extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
|
||||
extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr);
|
||||
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
|
||||
{
|
||||
@@ -2493,6 +2496,11 @@ static void reset_umac(struct bcmgenet_p
|
||||
@@ -2486,6 +2489,11 @@ static void reset_umac(struct bcmgenet_p
|
||||
bcmgenet_rbuf_ctrl_set(priv, 0);
|
||||
udelay(10);
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -3907,6 +3907,7 @@ static int spi_set_cs_timing(struct spi_
|
||||
@@ -3906,6 +3906,7 @@ static int spi_set_cs_timing(struct spi_
|
||||
*/
|
||||
int spi_setup(struct spi_device *spi)
|
||||
{
|
||||
@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
unsigned bad_bits, ugly_bits;
|
||||
int status;
|
||||
|
||||
@@ -3933,6 +3934,14 @@ int spi_setup(struct spi_device *spi)
|
||||
@@ -3932,6 +3933,14 @@ int spi_setup(struct spi_device *spi)
|
||||
"setup: MOSI configured to idle low and high at the same time.\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
|
||||
{
|
||||
@@ -3430,6 +3433,17 @@ static int bcmgenet_open(struct net_devi
|
||||
@@ -3423,6 +3426,17 @@ static int bcmgenet_open(struct net_devi
|
||||
|
||||
bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause);
|
||||
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -3666,6 +3666,48 @@ static int xhci_align_td(struct xhci_hcd
|
||||
@@ -3667,6 +3667,48 @@ static int xhci_align_td(struct xhci_hcd
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* This is very similar to what ehci-q.c qtd_fill() does */
|
||||
int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
|
||||
struct urb *urb, int slot_id, unsigned int ep_index)
|
||||
@@ -3820,6 +3862,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3821,6 +3863,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
}
|
||||
|
||||
check_trb_math(urb, enqd_len);
|
||||
@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
|
||||
start_cycle, start_trb);
|
||||
return 0;
|
||||
@@ -3968,6 +4012,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
@@ -3969,6 +4013,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
/* Event on completion */
|
||||
field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);
|
||||
|
||||
|
||||
@ -51,7 +51,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR
|
||||
};
|
||||
|
||||
/*****************************************************************************\
|
||||
@@ -4565,6 +4575,15 @@ int sdhci_setup_host(struct sdhci_host *
|
||||
@@ -4572,6 +4582,15 @@ int sdhci_setup_host(struct sdhci_host *
|
||||
!(host->quirks2 & SDHCI_QUIRK2_BROKEN_DDR50))
|
||||
mmc->caps |= MMC_CAP_UHS_DDR50;
|
||||
|
||||
|
||||
@ -152,7 +152,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
unsigned int max_tx_length;
|
||||
--- a/drivers/net/ethernet/cadence/macb_main.c
|
||||
+++ b/drivers/net/ethernet/cadence/macb_main.c
|
||||
@@ -41,6 +41,9 @@
|
||||
@@ -42,6 +42,9 @@
|
||||
#include <linux/inetdevice.h>
|
||||
#include "macb.h"
|
||||
|
||||
@ -162,7 +162,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* This structure is only used for MACB on SiFive FU540 devices */
|
||||
struct sifive_fu540_macb_mgmt {
|
||||
void __iomem *reg;
|
||||
@@ -334,7 +337,7 @@ static int macb_mdio_wait_for_idle(struc
|
||||
@@ -335,7 +338,7 @@ static int macb_mdio_wait_for_idle(struc
|
||||
u32 val;
|
||||
|
||||
return readx_poll_timeout(MACB_READ_NSR, bp, val, val & MACB_BIT(IDLE),
|
||||
@ -171,7 +171,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
}
|
||||
|
||||
static int macb_mdio_read_c22(struct mii_bus *bus, int mii_id, int regnum)
|
||||
@@ -493,6 +496,19 @@ mdio_pm_exit:
|
||||
@@ -494,6 +497,19 @@ mdio_pm_exit:
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -191,7 +191,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static void macb_init_buffers(struct macb *bp)
|
||||
{
|
||||
struct macb_queue *queue;
|
||||
@@ -974,6 +990,7 @@ static int macb_mii_init(struct macb *bp
|
||||
@@ -1066,6 +1082,7 @@ static int macb_mii_init(struct macb *bp
|
||||
bp->mii_bus->write = &macb_mdio_write_c22;
|
||||
bp->mii_bus->read_c45 = &macb_mdio_read_c45;
|
||||
bp->mii_bus->write_c45 = &macb_mdio_write_c45;
|
||||
@ -199,7 +199,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
|
||||
bp->pdev->name, bp->pdev->id);
|
||||
bp->mii_bus->priv = bp;
|
||||
@@ -1639,6 +1656,11 @@ static int macb_rx(struct macb_queue *qu
|
||||
@@ -1731,6 +1748,11 @@ static int macb_rx(struct macb_queue *qu
|
||||
|
||||
macb_init_rx_ring(queue);
|
||||
queue_writel(queue, RBQP, queue->rx_ring_dma);
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
|
||||
|
||||
@@ -1941,8 +1963,9 @@ static irqreturn_t macb_interrupt(int ir
|
||||
@@ -2033,8 +2055,9 @@ static irqreturn_t macb_interrupt(int ir
|
||||
queue_writel(queue, ISR, MACB_BIT(TCOMP) |
|
||||
MACB_BIT(TXUBR));
|
||||
|
||||
@ -222,7 +222,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
wmb(); // ensure softirq can see update
|
||||
}
|
||||
|
||||
@@ -2398,6 +2421,11 @@ static netdev_tx_t macb_start_xmit(struc
|
||||
@@ -2490,6 +2513,11 @@ static netdev_tx_t macb_start_xmit(struc
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
spin_lock(&bp->lock);
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
|
||||
spin_unlock(&bp->lock);
|
||||
|
||||
@@ -2804,6 +2832,37 @@ static void macb_configure_dma(struct ma
|
||||
@@ -2901,6 +2929,37 @@ static void macb_configure_dma(struct ma
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,7 +272,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static void macb_init_hw(struct macb *bp)
|
||||
{
|
||||
u32 config;
|
||||
@@ -2832,6 +2891,11 @@ static void macb_init_hw(struct macb *bp
|
||||
@@ -2929,6 +2988,11 @@ static void macb_init_hw(struct macb *bp
|
||||
if (bp->caps & MACB_CAPS_JUMBO)
|
||||
bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK;
|
||||
|
||||
@ -284,7 +284,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
macb_configure_dma(bp);
|
||||
|
||||
/* Enable RX partial store and forward and set watermark */
|
||||
@@ -3199,6 +3263,52 @@ static void gem_get_ethtool_strings(stru
|
||||
@@ -3296,6 +3360,52 @@ static void gem_get_ethtool_strings(stru
|
||||
}
|
||||
}
|
||||
|
||||
@ -337,7 +337,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static struct net_device_stats *macb_get_stats(struct net_device *dev)
|
||||
{
|
||||
struct macb *bp = netdev_priv(dev);
|
||||
@@ -3783,6 +3893,8 @@ static const struct ethtool_ops macb_eth
|
||||
@@ -3883,6 +3993,8 @@ static const struct ethtool_ops macb_eth
|
||||
};
|
||||
|
||||
static const struct ethtool_ops gem_ethtool_ops = {
|
||||
@ -346,7 +346,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
.get_regs_len = macb_get_regs_len,
|
||||
.get_regs = macb_get_regs,
|
||||
.get_wol = macb_get_wol,
|
||||
@@ -3792,6 +3904,8 @@ static const struct ethtool_ops gem_etht
|
||||
@@ -3892,6 +4004,8 @@ static const struct ethtool_ops gem_etht
|
||||
.get_ethtool_stats = gem_get_ethtool_stats,
|
||||
.get_strings = gem_get_ethtool_strings,
|
||||
.get_sset_count = gem_get_sset_count,
|
||||
@ -355,7 +355,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
.get_link_ksettings = macb_get_link_ksettings,
|
||||
.set_link_ksettings = macb_set_link_ksettings,
|
||||
.get_ringparam = macb_get_ringparam,
|
||||
@@ -5113,6 +5227,11 @@ static int macb_probe(struct platform_de
|
||||
@@ -5213,6 +5327,11 @@ static int macb_probe(struct platform_de
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -367,7 +367,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
spin_lock_init(&bp->lock);
|
||||
spin_lock_init(&bp->stats_lock);
|
||||
|
||||
@@ -5173,6 +5292,21 @@ static int macb_probe(struct platform_de
|
||||
@@ -5273,6 +5392,21 @@ static int macb_probe(struct platform_de
|
||||
else
|
||||
bp->phy_interface = interface;
|
||||
|
||||
@ -389,7 +389,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* IP specific init */
|
||||
err = init(pdev);
|
||||
if (err)
|
||||
@@ -5244,6 +5378,19 @@ static void macb_remove(struct platform_
|
||||
@@ -5344,6 +5478,19 @@ static void macb_remove(struct platform_
|
||||
}
|
||||
}
|
||||
|
||||
@ -409,7 +409,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static int __maybe_unused macb_suspend(struct device *dev)
|
||||
{
|
||||
struct net_device *netdev = dev_get_drvdata(dev);
|
||||
@@ -5497,6 +5644,7 @@ static const struct dev_pm_ops macb_pm_o
|
||||
@@ -5607,6 +5754,7 @@ static const struct dev_pm_ops macb_pm_o
|
||||
static struct platform_driver macb_driver = {
|
||||
.probe = macb_probe,
|
||||
.remove_new = macb_remove,
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/pmdomain/bcm/bcm2835-power.c
|
||||
+++ b/drivers/pmdomain/bcm/bcm2835-power.c
|
||||
@@ -79,6 +79,7 @@
|
||||
@@ -80,6 +80,7 @@
|
||||
#define PM_IMAGE 0x108
|
||||
#define PM_GRAFX 0x10c
|
||||
#define PM_PROC 0x110
|
||||
@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
#define PM_ENAB BIT(12)
|
||||
#define PM_ISPRSTN BIT(8)
|
||||
#define PM_H264RSTN BIT(7)
|
||||
@@ -381,6 +382,9 @@ static int bcm2835_power_pd_power_on(str
|
||||
@@ -377,6 +378,9 @@ static int bcm2835_power_pd_power_on(str
|
||||
return bcm2835_power_power_on(pd, PM_GRAFX);
|
||||
|
||||
case BCM2835_POWER_DOMAIN_GRAFX_V3D:
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
return bcm2835_asb_power_on(pd, PM_GRAFX,
|
||||
ASB_V3D_M_CTRL, ASB_V3D_S_CTRL,
|
||||
PM_V3DRSTN);
|
||||
@@ -447,6 +451,9 @@ static int bcm2835_power_pd_power_off(st
|
||||
@@ -443,6 +447,9 @@ static int bcm2835_power_pd_power_off(st
|
||||
return bcm2835_power_power_off(pd, PM_GRAFX);
|
||||
|
||||
case BCM2835_POWER_DOMAIN_GRAFX_V3D:
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
return bcm2835_asb_power_off(pd, PM_GRAFX,
|
||||
ASB_V3D_M_CTRL, ASB_V3D_S_CTRL,
|
||||
PM_V3DRSTN);
|
||||
@@ -642,19 +649,21 @@ static int bcm2835_power_probe(struct pl
|
||||
@@ -638,19 +645,21 @@ static int bcm2835_power_probe(struct pl
|
||||
power->asb = pm->asb;
|
||||
power->rpivid_asb = pm->rpivid_asb;
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
BUG_ON(data->blksz > host->mmc->max_blk_size);
|
||||
BUG_ON(data->blocks > 65535);
|
||||
|
||||
@@ -4709,11 +4709,16 @@ int sdhci_setup_host(struct sdhci_host *
|
||||
@@ -4716,11 +4716,16 @@ int sdhci_setup_host(struct sdhci_host *
|
||||
spin_lock_init(&host->lock);
|
||||
|
||||
/*
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
retry_disable:
|
||||
--- a/drivers/gpu/drm/drm_mode_config.c
|
||||
+++ b/drivers/gpu/drm/drm_mode_config.c
|
||||
@@ -643,7 +643,7 @@ void drm_mode_config_validate(struct drm
|
||||
@@ -646,7 +646,7 @@ void drm_mode_config_validate(struct drm
|
||||
struct drm_encoder *encoder;
|
||||
struct drm_crtc *crtc;
|
||||
struct drm_plane *plane;
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/net/ethernet/cadence/macb_main.c
|
||||
+++ b/drivers/net/ethernet/cadence/macb_main.c
|
||||
@@ -5076,6 +5076,17 @@ static const struct macb_config versal_c
|
||||
@@ -5176,6 +5176,17 @@ static const struct macb_config versal_c
|
||||
.usrio = &macb_default_usrio,
|
||||
};
|
||||
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
static const struct of_device_id macb_dt_ids[] = {
|
||||
{ .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config },
|
||||
{ .compatible = "cdns,macb" },
|
||||
@@ -5096,6 +5107,7 @@ static const struct of_device_id macb_dt
|
||||
@@ -5196,6 +5207,7 @@ static const struct of_device_id macb_dt
|
||||
{ .compatible = "microchip,mpfs-macb", .data = &mpfs_config },
|
||||
{ .compatible = "microchip,sama7g5-gem", .data = &sama7g5_gem_config },
|
||||
{ .compatible = "microchip,sama7g5-emac", .data = &sama7g5_emac_config },
|
||||
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/nvme/host/pci.c
|
||||
+++ b/drivers/nvme/host/pci.c
|
||||
@@ -2109,6 +2109,7 @@ static void nvme_free_host_mem(struct nv
|
||||
@@ -2111,6 +2111,7 @@ static void nvme_free_host_mem(struct nv
|
||||
dev->nr_host_mem_descs = 0;
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
static int __nvme_alloc_host_mem(struct nvme_dev *dev, u64 preferred,
|
||||
u32 chunk_size)
|
||||
{
|
||||
@@ -2177,9 +2178,11 @@ out:
|
||||
@@ -2179,9 +2180,11 @@ out:
|
||||
dev->host_mem_descs = NULL;
|
||||
return -ENOMEM;
|
||||
}
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
u64 min_chunk = min_t(u64, preferred, PAGE_SIZE * MAX_ORDER_NR_PAGES);
|
||||
u64 hmminds = max_t(u32, dev->ctrl.hmminds * 4096, PAGE_SIZE * 2);
|
||||
u64 chunk_size;
|
||||
@@ -2192,6 +2195,7 @@ static int nvme_alloc_host_mem(struct nv
|
||||
@@ -2194,6 +2197,7 @@ static int nvme_alloc_host_mem(struct nv
|
||||
nvme_free_host_mem(dev);
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/kernel/cgroup/cgroup.c
|
||||
+++ b/kernel/cgroup/cgroup.c
|
||||
@@ -6932,6 +6932,39 @@ static int __init cgroup_disable(char *s
|
||||
@@ -6933,6 +6933,39 @@ static int __init cgroup_disable(char *s
|
||||
}
|
||||
__setup("cgroup_disable=", cgroup_disable);
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/drivers/net/dsa/bcm_sf2.c
|
||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||
@@ -1539,10 +1539,14 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
@@ -1543,10 +1543,14 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
rev = reg_readl(priv, REG_PHY_REVISION);
|
||||
priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK;
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/drivers/net/dsa/bcm_sf2.c
|
||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||
@@ -1553,6 +1553,12 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
@@ -1557,6 +1557,12 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff,
|
||||
priv->irq0, priv->irq1);
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
brcmnand_set_ecc_enabled(host, 1);
|
||||
return ret;
|
||||
}
|
||||
@@ -2363,13 +2355,10 @@ static int brcmnand_write_page(struct na
|
||||
@@ -2361,13 +2353,10 @@ static int brcmnand_write_page(struct na
|
||||
int oob_required, int page)
|
||||
{
|
||||
struct mtd_info *mtd = nand_to_mtd(chip);
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
}
|
||||
|
||||
static int brcmnand_write_page_raw(struct nand_chip *chip, const uint8_t *buf,
|
||||
@@ -2381,9 +2370,8 @@ static int brcmnand_write_page_raw(struc
|
||||
@@ -2379,9 +2368,8 @@ static int brcmnand_write_page_raw(struc
|
||||
u64 addr = (u64)page << chip->page_shift;
|
||||
int ret = 0;
|
||||
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
/* EDU info, per-transaction */
|
||||
const u16 *edu_offsets;
|
||||
void __iomem *edu_base;
|
||||
@@ -2478,18 +2509,190 @@ static int brcmnand_op_is_reset(const st
|
||||
@@ -2476,18 +2507,190 @@ static int brcmnand_op_is_reset(const st
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -268,7 +268,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
|
||||
if (brcmnand_op_is_status(op)) {
|
||||
status = op->instrs[1].ctx.data.buf.in;
|
||||
@@ -2513,11 +2716,7 @@ static int brcmnand_exec_op(struct nand_
|
||||
@@ -2511,11 +2714,7 @@ static int brcmnand_exec_op(struct nand_
|
||||
if (op->deassert_wp)
|
||||
brcmnand_wp(mtd, 0);
|
||||
|
||||
@ -281,7 +281,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
|
||||
if (op->deassert_wp)
|
||||
brcmnand_wp(mtd, 1);
|
||||
@@ -3130,6 +3329,15 @@ int brcmnand_probe(struct platform_devic
|
||||
@@ -3128,6 +3327,15 @@ int brcmnand_probe(struct platform_devic
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
|
||||
|
||||
--- a/drivers/net/ethernet/intel/igc/igc_main.c
|
||||
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
|
||||
@@ -7070,6 +7070,9 @@ static int igc_probe(struct pci_dev *pde
|
||||
@@ -7074,6 +7074,9 @@ static int igc_probe(struct pci_dev *pde
|
||||
netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
|
||||
NETDEV_XDP_ACT_XSK_ZEROCOPY;
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -3387,11 +3387,17 @@ static int of_phy_led(struct phy_device
|
||||
@@ -3382,11 +3382,17 @@ static int of_phy_led(struct phy_device
|
||||
if (index > U8_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Subject: [PATCH] Kconfig: add tristate for OID and ASNI string
|
||||
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -2063,7 +2063,7 @@ config PADATA
|
||||
@@ -2066,7 +2066,7 @@ config PADATA
|
||||
bool
|
||||
|
||||
config ASN1
|
||||
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -1687,6 +1687,7 @@ enum netdev_priv_flags {
|
||||
@@ -1689,6 +1689,7 @@ enum netdev_priv_flags {
|
||||
IFF_L3MDEV_RX_HANDLER = 1<<29,
|
||||
IFF_NO_ADDRCONF = BIT_ULL(30),
|
||||
IFF_TX_SKB_NO_LINEAR = BIT_ULL(31),
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
};
|
||||
|
||||
/* Specifies the type of the struct net_device::ml_priv pointer */
|
||||
@@ -2168,6 +2169,11 @@ struct net_device {
|
||||
@@ -2170,6 +2171,11 @@ struct net_device {
|
||||
const struct tlsdev_ops *tlsdev_ops;
|
||||
#endif
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
unsigned int operstate;
|
||||
unsigned char link_mode;
|
||||
|
||||
@@ -2237,6 +2243,10 @@ struct net_device {
|
||||
@@ -2239,6 +2245,10 @@ struct net_device {
|
||||
struct mctp_dev __rcu *mctp_ptr;
|
||||
#endif
|
||||
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.12 = .77
|
||||
LINUX_KERNEL_HASH-6.12.77 = 358836ebe5caef41e7ae9492e7fbcdf5be6e53ee43c99752aebda81e1b2cff67
|
||||
LINUX_VERSION-6.12 = .78
|
||||
LINUX_KERNEL_HASH-6.12.78 = 719781b4b4faececa0f568bbcbd4fea8f4aef40155e85ad66f61624bf2f4af3d
|
||||
|
||||
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -589,7 +589,7 @@ export RUSTC_BOOTSTRAP := 1
|
||||
@@ -590,7 +590,7 @@ export RUSTC_BOOTSTRAP := 1
|
||||
# Allows finding `.clippy.toml` in out-of-srctree builds.
|
||||
export CLIPPY_CONF_DIR := $(srctree)
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -1534,6 +1534,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
|
||||
@@ -1537,6 +1537,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
|
||||
the unaligned access emulation.
|
||||
see arch/parisc/kernel/unaligned.c for reference
|
||||
|
||||
|
||||
@ -202,7 +202,7 @@ Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
return !!nor->params->erase_map.uniform_region.erase_mask;
|
||||
}
|
||||
|
||||
@@ -2516,6 +2518,7 @@ static int spi_nor_select_erase(struct s
|
||||
@@ -2657,6 +2659,7 @@ static int spi_nor_select_erase(struct s
|
||||
{
|
||||
struct spi_nor_erase_map *map = &nor->params->erase_map;
|
||||
const struct spi_nor_erase_type *erase = NULL;
|
||||
@ -210,7 +210,7 @@ Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
struct mtd_info *mtd = &nor->mtd;
|
||||
int i;
|
||||
|
||||
@@ -2542,8 +2545,9 @@ static int spi_nor_select_erase(struct s
|
||||
@@ -2683,8 +2686,9 @@ static int spi_nor_select_erase(struct s
|
||||
*/
|
||||
for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) {
|
||||
if (map->erase_type[i].size) {
|
||||
@ -222,7 +222,7 @@ Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2551,6 +2555,9 @@ static int spi_nor_select_erase(struct s
|
||||
@@ -2692,6 +2696,9 @@ static int spi_nor_select_erase(struct s
|
||||
return -EINVAL;
|
||||
|
||||
mtd->erasesize = erase->size;
|
||||
|
||||
@ -1,149 +0,0 @@
|
||||
From patchwork Fri Mar 6 12:29:55 2026
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
|
||||
<noltari@gmail.com>
|
||||
X-Patchwork-Id: 14457090
|
||||
X-Patchwork-Delegate: kuba@kernel.org
|
||||
Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com
|
||||
[209.85.221.48])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
|
||||
(No client certificate requested)
|
||||
by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF3F4386459
|
||||
for <netdev@vger.kernel.org>; Fri, 6 Mar 2026 12:52:18 +0000 (UTC)
|
||||
Authentication-Results: smtp.subspace.kernel.org;
|
||||
arc=none smtp.client-ip=209.85.221.48
|
||||
ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
||||
t=1772801540; cv=none;
|
||||
b=LVeywxv8ajenPZ8Kr1arieKosbrf60O9l+ouIPKPFNt5btxWDZ59pIU9BfZjv5n9ifEOyUA/UD0phxnG77+oB/k6UCd7DdGQQASZB3NHq5cvmErbgXm0XG3C8BBxVXU5pF7atPS23kBqM9ptxsv3IaeH/fDFcj6k6SH61rGEpuQ=
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
|
||||
s=arc-20240116; t=1772801540; c=relaxed/simple;
|
||||
bh=HAy43ssDo0xlUcBDIU7vQZtNnpxG03JPCL6Ldi51ASI=;
|
||||
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type;
|
||||
b=OBk8kI0I91psFRaIxb6nCnAzQlsc7jrXkOPW8lL7cYCosY08yfQDwAlWBFfdFs/VDuVJjD5VEdeQeMt2K4kWGgjLNXhTrRqgs6JNe7PxALDJKvt+kcJ833TRz3hKl2eb2Ft6WnKPf/6hp5Q3qm8+/Q703ixD4sF/0aDNw1BrDY4=
|
||||
ARC-Authentication-Results: i=1; smtp.subspace.kernel.org;
|
||||
dmarc=pass (p=none dis=none) header.from=gmail.com;
|
||||
spf=pass smtp.mailfrom=gmail.com;
|
||||
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com
|
||||
header.b=RCEse1HL; arc=none smtp.client-ip=209.85.221.48
|
||||
Authentication-Results: smtp.subspace.kernel.org;
|
||||
dmarc=pass (p=none dis=none) header.from=gmail.com
|
||||
Authentication-Results: smtp.subspace.kernel.org;
|
||||
spf=pass smtp.mailfrom=gmail.com
|
||||
Authentication-Results: smtp.subspace.kernel.org;
|
||||
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com
|
||||
header.b="RCEse1HL"
|
||||
Received: by mail-wr1-f48.google.com with SMTP id
|
||||
ffacd0b85a97d-439b7c2788dso4008389f8f.1
|
||||
for <netdev@vger.kernel.org>; Fri, 06 Mar 2026 04:52:18 -0800 (PST)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=gmail.com; s=20230601; t=1772801537; x=1773406337;
|
||||
darn=vger.kernel.org;
|
||||
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
|
||||
:to:from:from:to:cc:subject:date:message-id:reply-to;
|
||||
bh=y8B8kg8ACcCsMXy3SgsyRYngVEpIsqkcoCsLOS/nNqQ=;
|
||||
b=RCEse1HLoUtQApOdbPXFvYItGrEKWhMZ5FH1L4npAxteGeWOhAEAekijg3Ur83ovNu
|
||||
D7j0Aio5nwazNQz3y4rO88a+svlEbLx5fyxypjkMFUV4PDnOpv7HYjT9Aw1NVdIwO6l+
|
||||
sTgZ1jssfWdVnLQwQe6naotyBRoBV2AugdTmASE0Okxrsi3juIOafyTCxnp4K0weRpaH
|
||||
XodiSWNrkHzZSWM6/wl3D42yExGGPiuDybF+9otR/5TaBWNzrcLkSb73hvP6va35kQWK
|
||||
mnp6OV+L7iHTbxYpTfTm4axD+IZ/Q/dtFxxA6XolA28oMQbRPK0SIHepheSZx4bgl64w
|
||||
FM4w==
|
||||
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=1e100.net; s=20230601; t=1772801537; x=1773406337;
|
||||
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
|
||||
:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
|
||||
:message-id:reply-to;
|
||||
bh=y8B8kg8ACcCsMXy3SgsyRYngVEpIsqkcoCsLOS/nNqQ=;
|
||||
b=KomubXrbvHQI4WbFxBztyfrvNNRRWm7V46yQSwx0bP8PXKIJP38kAYzK+ZKWhmcd7e
|
||||
LpS7422VcYyLywLRxlevD2YaXsF0CK6e00YpTtixakHxYs/4KxGaU21vfwYV8mRhfu7g
|
||||
HVmxKvNQ6DTdC7wAIGT6TrcZCK4VCvgCx3z9yC62hQc8C6w+9mDnnGPvXNR74ofvvXdC
|
||||
eVZjm56layRoEr4PTpR2F33OVSt8+HRikH7eBzIKtQ5n/lEKtmJKDHRaodAaCyFGWMWa
|
||||
qDVoOR8VI4NIJABfsOT6OqisXLPLf+jkKpGkCY2ioRPRKK9GzW4PgIuNcKvPQilQQkgD
|
||||
Xlnw==
|
||||
X-Forwarded-Encrypted: i=1;
|
||||
AJvYcCVcziiSg1n0cDakmiQXH3869FECP24dcIqrZzs8zKakP+vHT958hnq9Bp0alDnLeVtXgo0B8T4=@vger.kernel.org
|
||||
X-Gm-Message-State: AOJu0Yx2OF1e3PiuR4Zqpe9qXA6kz6T2CCtro6kv8eL2j4Zh2HCjWywo
|
||||
/rZTavazOZRoq7zTvc4fGZ/yupjkTT9xRPZCKRkM9pc0UuK/KDSP4pan
|
||||
X-Gm-Gg: ATEYQzx75s3OlYg8XKMgu042++2+ZPa/CZDw09DYtnwEHHBsuylQF0+eXzcFM166JtP
|
||||
EMuM6Nq/sGQx2WNTPNEyu1BRGci/SV005CzkExhd1KK52D/nC1c76MBxvAtioaI/+5tgNoyCg8v
|
||||
ZFRyiqDReKfJ6JHa3YRI213dTzMluN1sZTYNSqlWI1MwW66gaDCf0myU81ehAfiAff34wmxnm8C
|
||||
PUF0YrLYtgZl1I/ZcYM1npoL3PBOnrhaulSqhbn7S5NaZMkHLrNQm6ns1lof+7Ciju05dQpEcBe
|
||||
pumVg15Dy+PcSXQSSQt4CULH7bbuJvZ0PHJ7dS+74i/OqFSgxD4E7LCqM5ufHYdbESx0/ERaR/z
|
||||
CAyT3oTz6S1oMQCUTPevHjHjTbDOWhu74SqyTZETzwGnjZnfrPMa56ebQVRfYgOYW0bbx6j3O2M
|
||||
v3CSEBiXpdFTdaLuRcqIb56JeDryaHx87SOThqnYP6gMiu7EljKYIhr572Rpgz+UIRkrYyNjL9c
|
||||
BLmrcmhsXX4hU4X5KocoApkO04w
|
||||
X-Received: by 2002:a05:600c:8b8b:b0:483:103c:b1ee with SMTP id
|
||||
5b1f17b1804b1-48526922599mr34173745e9.8.1772801536778;
|
||||
Fri, 06 Mar 2026 04:52:16 -0800 (PST)
|
||||
Received: from skynet.lan
|
||||
(2a02-9142-4581-3c00-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net.
|
||||
[2a02:9142:4581:3c00::8])
|
||||
by smtp.gmail.com with ESMTPSA id
|
||||
5b1f17b1804b1-48527681a3esm76085715e9.4.2026.03.06.04.52.14
|
||||
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
|
||||
Fri, 06 Mar 2026 04:52:15 -0800 (PST)
|
||||
From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= <noltari@gmail.com>
|
||||
To: linux@armlinux.org.uk,
|
||||
andrew@lunn.ch,
|
||||
hkallweit1@gmail.com,
|
||||
davem@davemloft.net,
|
||||
edumazet@google.com,
|
||||
kuba@kernel.org,
|
||||
pabeni@redhat.com,
|
||||
mnhagan88@gmail.com,
|
||||
netdev@vger.kernel.org,
|
||||
linux-kernel@vger.kernel.org
|
||||
Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= <noltari@gmail.com>
|
||||
Subject: [PATCH net v3] net: sfp: improve Huawei MA5671a fixup
|
||||
Date: Fri, 6 Mar 2026 13:29:55 +0100
|
||||
Message-ID: <20260306125139.213637-1-noltari@gmail.com>
|
||||
X-Mailer: git-send-email 2.47.3
|
||||
Precedence: bulk
|
||||
X-Mailing-List: netdev@vger.kernel.org
|
||||
List-Id: <netdev.vger.kernel.org>
|
||||
List-Subscribe: <mailto:netdev+subscribe@vger.kernel.org>
|
||||
List-Unsubscribe: <mailto:netdev+unsubscribe@vger.kernel.org>
|
||||
MIME-Version: 1.0
|
||||
X-Patchwork-Delegate: kuba@kernel.org
|
||||
|
||||
With the current sfp_fixup_ignore_tx_fault() fixup we ignore the TX_FAULT
|
||||
signal, but we also need to apply sfp_fixup_ignore_los() in order to be
|
||||
able to communicate with the module even if the fiber isn't connected for
|
||||
configuration purposes.
|
||||
This is needed for all the MA5671a firmwares, excluding the FS modded
|
||||
firmware.
|
||||
|
||||
Fixes: 2069624dac19 ("net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT")
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
---
|
||||
v3: avoid using a vendor name in the function
|
||||
v2: rebase on top of net/main instead of linux/master
|
||||
|
||||
drivers/net/phy/sfp.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/phy/sfp.c
|
||||
+++ b/drivers/net/phy/sfp.c
|
||||
@@ -360,6 +360,12 @@ static void sfp_fixup_ignore_tx_fault(st
|
||||
sfp->state_ignore_mask |= SFP_F_TX_FAULT;
|
||||
}
|
||||
|
||||
+static void sfp_fixup_ignore_tx_fault_and_los(struct sfp *sfp)
|
||||
+{
|
||||
+ sfp_fixup_ignore_tx_fault(sfp);
|
||||
+ sfp_fixup_ignore_los(sfp);
|
||||
+}
|
||||
+
|
||||
static void sfp_fixup_ignore_hw(struct sfp *sfp, unsigned int mask)
|
||||
{
|
||||
sfp->state_hw_mask &= ~mask;
|
||||
@@ -523,7 +529,7 @@ static const struct sfp_quirk sfp_quirks
|
||||
// Huawei MA5671A can operate at 2500base-X, but report 1.2GBd NRZ in
|
||||
// their EEPROM
|
||||
SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex,
|
||||
- sfp_fixup_ignore_tx_fault),
|
||||
+ sfp_fixup_ignore_tx_fault_and_los),
|
||||
|
||||
// Lantech 8330-262D-E and 8330-265D can operate at 2500base-X, but
|
||||
// incorrectly report 2500MBd NRZ in their EEPROM.
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/netfilter/nf_tables_api.c
|
||||
+++ b/net/netfilter/nf_tables_api.c
|
||||
@@ -8724,7 +8724,7 @@ static int nft_register_flowtable_net_ho
|
||||
@@ -8722,7 +8722,7 @@ static int nft_register_flowtable_net_ho
|
||||
err = flowtable->data.type->setup(&flowtable->data,
|
||||
hook->ops.dev,
|
||||
FLOW_BLOCK_BIND);
|
||||
|
||||
@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -2037,6 +2037,9 @@ void phy_detach(struct phy_device *phyde
|
||||
@@ -2035,6 +2035,9 @@ void phy_detach(struct phy_device *phyde
|
||||
phydev->devlink = NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -1,116 +0,0 @@
|
||||
From 5225349f1e750dfd107a4c5dc97d91fa212dc1ed Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Lunn <andrew@lunn.ch>
|
||||
Date: Sat, 21 Feb 2026 14:51:54 -0600
|
||||
Subject: [PATCH] net: phy: register phy led_triggers during probe to avoid
|
||||
AB-BA deadlock
|
||||
|
||||
There is an AB-BA deadlock when both LEDS_TRIGGER_NETDEV and
|
||||
LED_TRIGGER_PHY are enabled:
|
||||
|
||||
[ 1362.049207] [<8054e4b8>] led_trigger_register+0x5c/0x1fc <-- Trying to get lock "triggers_list_lock" via down_write(&triggers_list_lock);
|
||||
[ 1362.054536] [<80662830>] phy_led_triggers_register+0xd0/0x234
|
||||
[ 1362.060329] [<8065e200>] phy_attach_direct+0x33c/0x40c
|
||||
[ 1362.065489] [<80651fc4>] phylink_fwnode_phy_connect+0x15c/0x23c
|
||||
[ 1362.071480] [<8066ee18>] mtk_open+0x7c/0xba0
|
||||
[ 1362.075849] [<806d714c>] __dev_open+0x280/0x2b0
|
||||
[ 1362.080384] [<806d7668>] __dev_change_flags+0x244/0x24c
|
||||
[ 1362.085598] [<806d7698>] dev_change_flags+0x28/0x78
|
||||
[ 1362.090528] [<807150e4>] dev_ioctl+0x4c0/0x654 <-- Hold lock "rtnl_mutex" by calling rtnl_lock();
|
||||
[ 1362.094985] [<80694360>] sock_ioctl+0x2f4/0x4e0
|
||||
[ 1362.099567] [<802e9c4c>] sys_ioctl+0x32c/0xd8c
|
||||
[ 1362.104022] [<80014504>] syscall_common+0x34/0x58
|
||||
|
||||
Here LED_TRIGGER_PHY is registering LED triggers during phy_attach
|
||||
while holding RTNL and then taking triggers_list_lock.
|
||||
|
||||
[ 1362.191101] [<806c2640>] register_netdevice_notifier+0x60/0x168 <-- Trying to get lock "rtnl_mutex" via rtnl_lock();
|
||||
[ 1362.197073] [<805504ac>] netdev_trig_activate+0x194/0x1e4
|
||||
[ 1362.202490] [<8054e28c>] led_trigger_set+0x1d4/0x360 <-- Hold lock "triggers_list_lock" by down_read(&triggers_list_lock);
|
||||
[ 1362.207511] [<8054eb38>] led_trigger_write+0xd8/0x14c
|
||||
[ 1362.212566] [<80381d98>] sysfs_kf_bin_write+0x80/0xbc
|
||||
[ 1362.217688] [<8037fcd8>] kernfs_fop_write_iter+0x17c/0x28c
|
||||
[ 1362.223174] [<802cbd70>] vfs_write+0x21c/0x3c4
|
||||
[ 1362.227712] [<802cc0c4>] ksys_write+0x78/0x12c
|
||||
[ 1362.232164] [<80014504>] syscall_common+0x34/0x58
|
||||
|
||||
Here LEDS_TRIGGER_NETDEV is being enabled on an LED. It first takes
|
||||
triggers_list_lock and then RTNL. A classical AB-BA deadlock.
|
||||
|
||||
phy_led_triggers_registers() does not require the RTNL, it does not
|
||||
make any calls into the network stack which require protection. There
|
||||
is also no requirement the PHY has been attached to a MAC, the
|
||||
triggers only make use of phydev state. This allows the call to
|
||||
phy_led_triggers_registers() to be placed elsewhere. PHY probe() and
|
||||
release() don't hold RTNL, so solving the AB-BA deadlock.
|
||||
|
||||
Reported-by: Shiji Yang <yangshiji66@outlook.com>
|
||||
Closes: https://lore.kernel.org/all/OS7PR01MB13602B128BA1AD3FA38B6D1FFBC69A@OS7PR01MB13602.jpnprd01.prod.outlook.com/
|
||||
Fixes: 06f502f57d0d ("leds: trigger: Introduce a NETDEV trigger")
|
||||
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
|
||||
---
|
||||
drivers/net/phy/phy_device.c | 25 +++++++++++++++++--------
|
||||
1 file changed, 17 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -1684,8 +1684,6 @@ int phy_attach_direct(struct net_device
|
||||
goto error;
|
||||
|
||||
phy_resume(phydev);
|
||||
- if (!phydev->is_on_sfp_module)
|
||||
- phy_led_triggers_register(phydev);
|
||||
|
||||
/**
|
||||
* If the external phy used by current mac interface is managed by
|
||||
@@ -2058,9 +2056,6 @@ void phy_detach(struct phy_device *phyde
|
||||
}
|
||||
phydev->phylink = NULL;
|
||||
|
||||
- if (!phydev->is_on_sfp_module)
|
||||
- phy_led_triggers_unregister(phydev);
|
||||
-
|
||||
if (phydev->mdio.dev.driver)
|
||||
module_put(phydev->mdio.dev.driver->owner);
|
||||
|
||||
@@ -3691,17 +3686,28 @@ static int phy_probe(struct device *dev)
|
||||
/* Set the state to READY by default */
|
||||
phydev->state = PHY_READY;
|
||||
|
||||
+ /* Register the PHY LED triggers */
|
||||
+ if (!phydev->is_on_sfp_module)
|
||||
+ phy_led_triggers_register(phydev);
|
||||
+
|
||||
/* Get the LEDs from the device tree, and instantiate standard
|
||||
* LEDs for them.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_PHYLIB_LEDS) && !phy_driver_is_genphy(phydev) &&
|
||||
- !phy_driver_is_genphy_10g(phydev))
|
||||
+ !phy_driver_is_genphy_10g(phydev)) {
|
||||
err = of_phy_leds(phydev);
|
||||
+ if (err)
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
|
||||
out:
|
||||
+ if (!phydev->is_on_sfp_module)
|
||||
+ phy_led_triggers_unregister(phydev);
|
||||
+
|
||||
/* Re-assert the reset signal on error */
|
||||
- if (err)
|
||||
- phy_device_reset(phydev, 1);
|
||||
+ phy_device_reset(phydev, 1);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -3716,6 +3722,9 @@ static int phy_remove(struct device *dev
|
||||
!phy_driver_is_genphy_10g(phydev))
|
||||
phy_leds_unregister(phydev);
|
||||
|
||||
+ if (!phydev->is_on_sfp_module)
|
||||
+ phy_led_triggers_unregister(phydev);
|
||||
+
|
||||
phydev->state = PHY_DOWN;
|
||||
|
||||
sfp_bus_del_upstream(phydev->sfp_bus);
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -2224,7 +2224,7 @@ struct net_device {
|
||||
@@ -2226,7 +2226,7 @@ struct net_device {
|
||||
#if IS_ENABLED(CONFIG_AX25)
|
||||
struct ax25_dev __rcu *ax25_ptr;
|
||||
#endif
|
||||
|
||||
@ -63,7 +63,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
/**
|
||||
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
||||
* @qc: Metadata associated with the taskfile to build
|
||||
@@ -4807,6 +4818,9 @@ void __ata_qc_complete(struct ata_queued
|
||||
@@ -4812,6 +4823,9 @@ void __ata_qc_complete(struct ata_queued
|
||||
link->active_tag = ATA_TAG_POISON;
|
||||
ap->nr_active_links--;
|
||||
}
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
/* clear exclusive status */
|
||||
if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL &&
|
||||
@@ -5536,6 +5550,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
@@ -5541,6 +5555,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
ap->stats.unhandled_irq = 1;
|
||||
ap->stats.idle_irq = 1;
|
||||
#endif
|
||||
@ -83,7 +83,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
ata_sff_port_init(ap);
|
||||
|
||||
ata_force_pflags(ap);
|
||||
@@ -5552,6 +5569,12 @@ void ata_port_free(struct ata_port *ap)
|
||||
@@ -5557,6 +5574,12 @@ void ata_port_free(struct ata_port *ap)
|
||||
kfree(ap->pmp_link);
|
||||
kfree(ap->slave_link);
|
||||
ida_free(&ata_ida, ap->print_id);
|
||||
@ -96,7 +96,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
kfree(ap);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ata_port_free);
|
||||
@@ -5956,7 +5979,23 @@ int ata_host_register(struct ata_host *h
|
||||
@@ -5961,7 +5984,23 @@ int ata_host_register(struct ata_host *h
|
||||
WARN_ON(1);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
|
||||
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -1888,6 +1888,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS
|
||||
@@ -1891,6 +1891,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS
|
||||
config ARCH_HAS_MEMBARRIER_SYNC_CORE
|
||||
bool
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
},
|
||||
[PORT_NPCM] = {
|
||||
.name = "Nuvoton 16550",
|
||||
@@ -2729,6 +2729,11 @@ serial8250_do_set_termios(struct uart_po
|
||||
@@ -2735,6 +2735,11 @@ serial8250_do_set_termios(struct uart_po
|
||||
unsigned long flags;
|
||||
unsigned int baud, quot, frac = 0;
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/core.c
|
||||
+++ b/drivers/mtd/spi-nor/core.c
|
||||
@@ -3300,6 +3300,18 @@ static const struct flash_info *spi_nor_
|
||||
@@ -3441,6 +3441,18 @@ static const struct flash_info *spi_nor_
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
static const struct flash_info *spi_nor_get_flash_info(struct spi_nor *nor,
|
||||
const char *name)
|
||||
{
|
||||
@@ -3474,6 +3486,9 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -3615,6 +3627,9 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
* CONFIG_CMDLINE is meant to be a default in case nothing else
|
||||
--- a/arch/arm64/Kconfig
|
||||
+++ b/arch/arm64/Kconfig
|
||||
@@ -2382,6 +2382,14 @@ config CMDLINE_FORCE
|
||||
@@ -2383,6 +2383,14 @@ config CMDLINE_FORCE
|
||||
|
||||
endchoice
|
||||
|
||||
|
||||
@ -201,7 +201,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
|
||||
|
||||
--- a/drivers/i2c/busses/i2c-pxa.c
|
||||
+++ b/drivers/i2c/busses/i2c-pxa.c
|
||||
@@ -1330,6 +1330,12 @@ static void i2c_pxa_unprepare_recovery(s
|
||||
@@ -1336,6 +1336,12 @@ static void i2c_pxa_unprepare_recovery(s
|
||||
i2c_pxa_enable(i2c);
|
||||
}
|
||||
|
||||
@ -214,7 +214,7 @@ Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
|
||||
static int i2c_pxa_init_recovery(struct pxa_i2c *i2c)
|
||||
{
|
||||
struct i2c_bus_recovery_info *bri = &i2c->recovery;
|
||||
@@ -1398,6 +1404,7 @@ static int i2c_pxa_init_recovery(struct
|
||||
@@ -1404,6 +1410,7 @@ static int i2c_pxa_init_recovery(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -242,7 +242,7 @@ the controller from the bad state described in the previous patch.
|
||||
|
||||
struct i2c_bus_recovery_info recovery;
|
||||
struct pinctrl *pinctrl;
|
||||
@@ -429,7 +431,7 @@ static int i2c_pxa_wait_bus_not_busy(str
|
||||
@@ -430,7 +432,7 @@ static int i2c_pxa_wait_bus_not_busy(str
|
||||
|
||||
while (1) {
|
||||
isr = readl(_ISR(i2c));
|
||||
@ -251,7 +251,7 @@ the controller from the bad state described in the previous patch.
|
||||
return 0;
|
||||
|
||||
if (isr & ISR_SAD)
|
||||
@@ -466,7 +468,7 @@ static int i2c_pxa_wait_master(struct px
|
||||
@@ -467,7 +469,7 @@ static int i2c_pxa_wait_master(struct px
|
||||
* quick check of the i2c lines themselves to ensure they've
|
||||
* gone high...
|
||||
*/
|
||||
@ -260,7 +260,7 @@ the controller from the bad state described in the previous patch.
|
||||
readl(_IBMR(i2c)) == (IBMR_SCLS | IBMR_SDAS)) {
|
||||
if (i2c_debug > 0)
|
||||
dev_dbg(&i2c->adap.dev, "%s: done\n", __func__);
|
||||
@@ -487,7 +489,7 @@ static int i2c_pxa_set_master(struct pxa
|
||||
@@ -488,7 +490,7 @@ static int i2c_pxa_set_master(struct pxa
|
||||
if (i2c_debug)
|
||||
dev_dbg(&i2c->adap.dev, "setting to bus master\n");
|
||||
|
||||
@ -269,7 +269,7 @@ the controller from the bad state described in the previous patch.
|
||||
dev_dbg(&i2c->adap.dev, "%s: unit is busy\n", __func__);
|
||||
if (!i2c_pxa_wait_master(i2c)) {
|
||||
dev_dbg(&i2c->adap.dev, "%s: error: unit busy\n", __func__);
|
||||
@@ -513,7 +515,7 @@ static int i2c_pxa_wait_slave(struct pxa
|
||||
@@ -514,7 +516,7 @@ static int i2c_pxa_wait_slave(struct pxa
|
||||
dev_dbg(&i2c->adap.dev, "%s: %ld: ISR=%08x, ICR=%08x, IBMR=%02x\n",
|
||||
__func__, (long)jiffies, readl(_ISR(i2c)), readl(_ICR(i2c)), readl(_IBMR(i2c)));
|
||||
|
||||
@ -278,7 +278,7 @@ the controller from the bad state described in the previous patch.
|
||||
(readl(_ISR(i2c)) & ISR_SAD) != 0 ||
|
||||
(readl(_ICR(i2c)) & ICR_SCLE) == 0) {
|
||||
if (i2c_debug > 1)
|
||||
@@ -1171,7 +1173,7 @@ static int i2c_pxa_pio_set_master(struct
|
||||
@@ -1177,7 +1179,7 @@ static int i2c_pxa_pio_set_master(struct
|
||||
/*
|
||||
* Wait for the bus to become free.
|
||||
*/
|
||||
@ -287,7 +287,7 @@ the controller from the bad state described in the previous patch.
|
||||
udelay(1000);
|
||||
|
||||
if (timeout < 0) {
|
||||
@@ -1316,7 +1318,7 @@ static void i2c_pxa_unprepare_recovery(s
|
||||
@@ -1322,7 +1324,7 @@ static void i2c_pxa_unprepare_recovery(s
|
||||
* handing control of the bus back to avoid the bus changing state.
|
||||
*/
|
||||
isr = readl(_ISR(i2c));
|
||||
@ -296,7 +296,7 @@ the controller from the bad state described in the previous patch.
|
||||
dev_dbg(&i2c->adap.dev,
|
||||
"recovery: resetting controller, ISR=0x%08x\n", isr);
|
||||
i2c_pxa_do_reset(i2c);
|
||||
@@ -1480,6 +1482,10 @@ static int i2c_pxa_probe(struct platform
|
||||
@@ -1486,6 +1488,10 @@ static int i2c_pxa_probe(struct platform
|
||||
i2c->fm_mask = pxa_reg_layout[i2c_type].fm;
|
||||
i2c->hs_mask = pxa_reg_layout[i2c_type].hs;
|
||||
|
||||
|
||||
@ -70,7 +70,7 @@ Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
|
||||
struct dsa_chip_data {
|
||||
--- a/include/net/dsa.h
|
||||
+++ b/include/net/dsa.h
|
||||
@@ -475,7 +475,7 @@ struct dsa_switch {
|
||||
@@ -476,7 +476,7 @@ struct dsa_switch {
|
||||
/*
|
||||
* User mii_bus and devices for the individual ports.
|
||||
*/
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
|
||||
struct mii_bus *user_mii_bus;
|
||||
|
||||
/* Ageing Time limits in msecs */
|
||||
@@ -611,24 +611,24 @@ static inline bool dsa_is_user_port(stru
|
||||
@@ -612,24 +612,24 @@ static inline bool dsa_is_user_port(stru
|
||||
dsa_switch_for_each_port_continue_reverse((_dp), (_ds)) \
|
||||
if (dsa_port_is_cpu((_dp)))
|
||||
|
||||
|
||||
@ -253,7 +253,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com
|
||||
if (!page)
|
||||
return false;
|
||||
|
||||
@@ -3401,7 +3484,6 @@ static struct its_device *its_create_dev
|
||||
@@ -3402,7 +3485,6 @@ static struct its_device *its_create_dev
|
||||
if (WARN_ON(!is_power_of_2(nvecs)))
|
||||
nvecs = roundup_pow_of_two(nvecs);
|
||||
|
||||
@ -261,7 +261,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com
|
||||
/*
|
||||
* Even if the device wants a single LPI, the ITT must be
|
||||
* sized as a power of two (and you need at least one bit...).
|
||||
@@ -3409,7 +3491,11 @@ static struct its_device *its_create_dev
|
||||
@@ -3413,7 +3495,11 @@ static struct its_device *its_create_dev
|
||||
nr_ites = max(2, nvecs);
|
||||
sz = nr_ites * (FIELD_GET(GITS_TYPER_ITT_ENTRY_SIZE, its->typer) + 1);
|
||||
sz = max(sz, ITS_ITT_ALIGN) + ITS_ITT_ALIGN - 1;
|
||||
@ -274,7 +274,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com
|
||||
if (alloc_lpis) {
|
||||
lpi_map = its_lpi_alloc(nvecs, &lpi_base, &nr_lpis);
|
||||
if (lpi_map)
|
||||
@@ -3421,9 +3507,9 @@ static struct its_device *its_create_dev
|
||||
@@ -3425,9 +3511,9 @@ static struct its_device *its_create_dev
|
||||
lpi_base = 0;
|
||||
}
|
||||
|
||||
@ -286,7 +286,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com
|
||||
bitmap_free(lpi_map);
|
||||
kfree(col_map);
|
||||
return NULL;
|
||||
@@ -3433,6 +3519,7 @@ static struct its_device *its_create_dev
|
||||
@@ -3437,6 +3523,7 @@ static struct its_device *its_create_dev
|
||||
|
||||
dev->its = its;
|
||||
dev->itt = itt;
|
||||
@ -294,7 +294,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com
|
||||
dev->nr_ites = nr_ites;
|
||||
dev->event_map.lpi_map = lpi_map;
|
||||
dev->event_map.col_map = col_map;
|
||||
@@ -3460,7 +3547,7 @@ static void its_free_device(struct its_d
|
||||
@@ -3464,7 +3551,7 @@ static void its_free_device(struct its_d
|
||||
list_del(&its_dev->entry);
|
||||
raw_spin_unlock_irqrestore(&its_dev->its->lock, flags);
|
||||
kfree(its_dev->event_map.col_map);
|
||||
@ -303,7 +303,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com
|
||||
kfree(its_dev);
|
||||
}
|
||||
|
||||
@@ -5160,8 +5247,9 @@ static int __init its_probe_one(struct i
|
||||
@@ -5164,8 +5251,9 @@ static int __init its_probe_one(struct i
|
||||
}
|
||||
}
|
||||
|
||||
@ -315,7 +315,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com
|
||||
if (!page) {
|
||||
err = -ENOMEM;
|
||||
goto out_unmap_sgir;
|
||||
@@ -5225,7 +5313,7 @@ static int __init its_probe_one(struct i
|
||||
@@ -5229,7 +5317,7 @@ static int __init its_probe_one(struct i
|
||||
out_free_tables:
|
||||
its_free_tables(its);
|
||||
out_free_cmd:
|
||||
@ -324,7 +324,7 @@ Link: https://lore.kernel.org/all/20241002141630.433502-2-steven.price@arm.com
|
||||
out_unmap_sgir:
|
||||
if (its->sgir_base)
|
||||
iounmap(its->sgir_base);
|
||||
@@ -5711,6 +5799,10 @@ int __init its_init(struct fwnode_handle
|
||||
@@ -5715,6 +5803,10 @@ int __init its_init(struct fwnode_handle
|
||||
bool has_v4_1 = false;
|
||||
int err;
|
||||
|
||||
|
||||
@ -35,7 +35,7 @@ Link: https://lore.kernel.org/all/20250216221634.364158-2-dmitry.osipenko@collab
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
--- a/arch/arm64/Kconfig
|
||||
+++ b/arch/arm64/Kconfig
|
||||
@@ -1297,6 +1297,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM
|
||||
@@ -1298,6 +1298,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
@ -70,7 +70,7 @@ Link: https://lore.kernel.org/all/20250216221634.364158-2-dmitry.osipenko@collab
|
||||
|
||||
if (!page)
|
||||
return NULL;
|
||||
@@ -4888,6 +4890,17 @@ static bool __maybe_unused its_enable_qu
|
||||
@@ -4892,6 +4894,17 @@ static bool __maybe_unused its_enable_qu
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -88,7 +88,7 @@ Link: https://lore.kernel.org/all/20250216221634.364158-2-dmitry.osipenko@collab
|
||||
static const struct gic_quirk its_quirks[] = {
|
||||
#ifdef CONFIG_CAVIUM_ERRATUM_22375
|
||||
{
|
||||
@@ -4955,6 +4968,14 @@ static const struct gic_quirk its_quirks
|
||||
@@ -4959,6 +4972,14 @@ static const struct gic_quirk its_quirks
|
||||
.property = "dma-noncoherent",
|
||||
.init = its_set_non_coherent,
|
||||
},
|
||||
|
||||
@ -67,7 +67,7 @@ Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2768,7 +2781,6 @@ serial8250_do_set_termios(struct uart_po
|
||||
@@ -2774,7 +2787,6 @@ serial8250_do_set_termios(struct uart_po
|
||||
if (termios->c_cflag & CRTSCTS)
|
||||
up->mcr |= UART_MCR_AFE;
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Matteo Croce <mcroce@microsoft.com>
|
||||
|
||||
if (priv->dma_cap.host_dma_width <= 32)
|
||||
gfp |= GFP_DMA32;
|
||||
@@ -4791,7 +4791,7 @@ static inline void stmmac_rx_refill(stru
|
||||
@@ -4756,7 +4756,7 @@ static inline void stmmac_rx_refill(stru
|
||||
struct stmmac_rx_queue *rx_q = &priv->dma_conf.rx_queue[queue];
|
||||
int dirty = stmmac_rx_dirty(priv, queue);
|
||||
unsigned int entry = rx_q->dirty_rx;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user