-LINUX_VERSION-5.10 = .179
-LINUX_KERNEL_HASH-5.10.179 = 1bbd445c154b053eea46acc883be548a98179988a9ed3a0b81bddfbf30a37e29
+LINUX_VERSION-5.10 = .180
+LINUX_KERNEL_HASH-5.10.180 = da839a4bf1f6c964b9bde593bd58928f106f53690ff677e226bc50cf368b0c29
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
-@@ -3000,7 +3000,8 @@ static int _regulator_list_voltage(struc
+@@ -3076,7 +3076,8 @@ static int _regulator_list_voltage(struc
return rdev->desc->fixed_uV;
if (ops->list_voltage) {
return -EINVAL;
if (lock)
regulator_lock(rdev);
-@@ -3151,7 +3152,8 @@ int regulator_list_hardware_vsel(struct
+@@ -3227,7 +3228,8 @@ int regulator_list_hardware_vsel(struct
struct regulator_dev *rdev = regulator->rdev;
const struct regulator_ops *ops = rdev->desc->ops;
return -EINVAL;
if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap)
return -EOPNOTSUPP;
-@@ -4074,6 +4076,9 @@ int regulator_set_voltage_time(struct re
+@@ -4150,6 +4152,9 @@ int regulator_set_voltage_time(struct re
for (i = 0; i < rdev->desc->n_voltages; i++) {
/* We only look for exact voltage matches here */
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
-@@ -4079,6 +4079,9 @@ int regulator_set_voltage_time(struct re
+@@ -4155,6 +4155,9 @@ int regulator_set_voltage_time(struct re
if (i < rdev->desc->linear_min_sel)
continue;
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
-@@ -3000,9 +3000,10 @@ static int _regulator_list_voltage(struc
+@@ -3076,9 +3076,10 @@ static int _regulator_list_voltage(struc
return rdev->desc->fixed_uV;
if (ops->list_voltage) {
if (lock)
regulator_lock(rdev);
ret = ops->list_voltage(rdev, selector);
-@@ -3152,9 +3153,10 @@ int regulator_list_hardware_vsel(struct
+@@ -3228,9 +3229,10 @@ int regulator_list_hardware_vsel(struct
struct regulator_dev *rdev = regulator->rdev;
const struct regulator_ops *ops = rdev->desc->ops;
--- a/drivers/dma/at_xdmac.c
+++ b/drivers/dma/at_xdmac.c
-@@ -865,7 +865,7 @@ at_xdmac_interleaved_queue_desc(struct d
+@@ -866,7 +866,7 @@ at_xdmac_interleaved_queue_desc(struct d
* match the one of another channel. If not, it could lead to spurious
* flag status.
*/
| AT_XDMAC_CC_DIF(0)
| AT_XDMAC_CC_SIF(0)
| AT_XDMAC_CC_MBSIZE_SIXTEEN
-@@ -1047,7 +1047,7 @@ at_xdmac_prep_dma_memcpy(struct dma_chan
+@@ -1048,7 +1048,7 @@ at_xdmac_prep_dma_memcpy(struct dma_chan
* match the one of another channel. If not, it could lead to spurious
* flag status.
*/
| AT_XDMAC_CC_DAM_INCREMENTED_AM
| AT_XDMAC_CC_SAM_INCREMENTED_AM
| AT_XDMAC_CC_DIF(0)
-@@ -1153,7 +1153,7 @@ static struct at_xdmac_desc *at_xdmac_me
+@@ -1154,7 +1154,7 @@ static struct at_xdmac_desc *at_xdmac_me
* match the one of another channel. If not, it could lead to spurious
* flag status.
*/
/* ----- Channels ----- */
struct at_xdmac_chan {
struct dma_chan chan;
-@@ -213,6 +225,7 @@ struct at_xdmac {
- struct clk *clk;
+@@ -214,6 +226,7 @@ struct at_xdmac {
u32 save_gim;
+ u32 save_gs;
struct dma_pool *at_xdmac_desc_pool;
+ const struct at_xdmac_layout *layout;
struct at_xdmac_chan chan[];
};
-@@ -245,9 +258,33 @@ struct at_xdmac_desc {
+@@ -246,9 +259,33 @@ struct at_xdmac_desc {
struct list_head xfer_node;
} __aligned(sizeof(u64));
}
#define at_xdmac_read(atxdmac, reg) readl_relaxed((atxdmac)->regs + (reg))
-@@ -343,8 +380,10 @@ static void at_xdmac_start_xfer(struct a
+@@ -344,8 +381,10 @@ static void at_xdmac_start_xfer(struct a
first->active_xfer = true;
/* Tell xdmac where to get the first descriptor. */
at_xdmac_chan_write(atchan, AT_XDMAC_CNDA, reg);
/*
-@@ -539,6 +578,7 @@ static int at_xdmac_compute_chan_conf(st
+@@ -540,6 +579,7 @@ static int at_xdmac_compute_chan_conf(st
enum dma_transfer_direction direction)
{
struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
int csize, dwidth;
if (direction == DMA_DEV_TO_MEM) {
-@@ -546,12 +586,14 @@ static int at_xdmac_compute_chan_conf(st
+@@ -547,12 +587,14 @@ static int at_xdmac_compute_chan_conf(st
AT91_XDMAC_DT_PERID(atchan->perid)
| AT_XDMAC_CC_DAM_INCREMENTED_AM
| AT_XDMAC_CC_SAM_FIXED_AM
csize = ffs(atchan->sconfig.src_maxburst) - 1;
if (csize < 0) {
dev_err(chan2dev(chan), "invalid src maxburst value\n");
-@@ -569,12 +611,14 @@ static int at_xdmac_compute_chan_conf(st
+@@ -570,12 +612,14 @@ static int at_xdmac_compute_chan_conf(st
AT91_XDMAC_DT_PERID(atchan->perid)
| AT_XDMAC_CC_DAM_FIXED_AM
| AT_XDMAC_CC_SAM_INCREMENTED_AM
csize = ffs(atchan->sconfig.dst_maxburst) - 1;
if (csize < 0) {
dev_err(chan2dev(chan), "invalid src maxburst value\n");
-@@ -864,10 +908,12 @@ at_xdmac_interleaved_queue_desc(struct d
+@@ -865,10 +909,12 @@ at_xdmac_interleaved_queue_desc(struct d
* ERRATA: Even if useless for memory transfers, the PERID has to not
* match the one of another channel. If not, it could lead to spurious
* flag status.
| AT_XDMAC_CC_MBSIZE_SIXTEEN
| AT_XDMAC_CC_TYPE_MEM_TRAN;
-@@ -1046,12 +1092,14 @@ at_xdmac_prep_dma_memcpy(struct dma_chan
+@@ -1047,12 +1093,14 @@ at_xdmac_prep_dma_memcpy(struct dma_chan
* ERRATA: Even if useless for memory transfers, the PERID has to not
* match the one of another channel. If not, it could lead to spurious
* flag status.
| AT_XDMAC_CC_MBSIZE_SIXTEEN
| AT_XDMAC_CC_TYPE_MEM_TRAN;
unsigned long irqflags;
-@@ -1152,12 +1200,14 @@ static struct at_xdmac_desc *at_xdmac_me
+@@ -1153,12 +1201,14 @@ static struct at_xdmac_desc *at_xdmac_me
* ERRATA: Even if useless for memory transfers, the PERID has to not
* match the one of another channel. If not, it could lead to spurious
* flag status.
| AT_XDMAC_CC_MBSIZE_SIXTEEN
| AT_XDMAC_CC_MEMSET_HW_MODE
| AT_XDMAC_CC_TYPE_MEM_TRAN;
-@@ -1436,7 +1486,7 @@ at_xdmac_tx_status(struct dma_chan *chan
+@@ -1437,7 +1487,7 @@ at_xdmac_tx_status(struct dma_chan *chan
mask = AT_XDMAC_CC_TYPE | AT_XDMAC_CC_DSYNC;
value = AT_XDMAC_CC_TYPE_PER_TRAN | AT_XDMAC_CC_DSYNC_PER2MEM;
if ((desc->lld.mbr_cfg & mask) == value) {
while (!(at_xdmac_chan_read(atchan, AT_XDMAC_CIS) & AT_XDMAC_CIS_FIS))
cpu_relax();
}
-@@ -1494,7 +1544,7 @@ at_xdmac_tx_status(struct dma_chan *chan
+@@ -1495,7 +1545,7 @@ at_xdmac_tx_status(struct dma_chan *chan
* FIFO flush ensures that data are really written.
*/
if ((desc->lld.mbr_cfg & mask) == value) {
while (!(at_xdmac_chan_read(atchan, AT_XDMAC_CIS) & AT_XDMAC_CIS_FIS))
cpu_relax();
}
-@@ -1762,7 +1812,7 @@ static int at_xdmac_device_pause(struct
+@@ -1763,7 +1813,7 @@ static int at_xdmac_device_pause(struct
return 0;
spin_lock_irqsave(&atchan->lock, flags);
while (at_xdmac_chan_read(atchan, AT_XDMAC_CC)
& (AT_XDMAC_CC_WRIP | AT_XDMAC_CC_RDIP))
cpu_relax();
-@@ -1785,7 +1835,7 @@ static int at_xdmac_device_resume(struct
+@@ -1786,7 +1836,7 @@ static int at_xdmac_device_resume(struct
return 0;
}
clear_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status);
spin_unlock_irqrestore(&atchan->lock, flags);
-@@ -1992,6 +2042,10 @@ static int at_xdmac_probe(struct platfor
+@@ -1995,6 +2045,10 @@ static int at_xdmac_probe(struct platfor
atxdmac->regs = base;
atxdmac->irq = irq;
atxdmac->clk = devm_clk_get(&pdev->dev, "dma_clk");
if (IS_ERR(atxdmac->clk)) {
dev_err(&pdev->dev, "can't get dma_clk\n");
-@@ -2134,6 +2188,10 @@ static const struct dev_pm_ops atmel_xdm
+@@ -2137,6 +2191,10 @@ static const struct dev_pm_ops atmel_xdm
static const struct of_device_id atmel_xdmac_dt_ids[] = {
{
.compatible = "atmel,sama5d4-dma",
};
/* ----- Channels ----- */
-@@ -268,6 +287,7 @@ static const struct at_xdmac_layout at_x
+@@ -269,6 +288,7 @@ static const struct at_xdmac_layout at_x
.gswf = 0x40,
.chan_cc_reg_base = 0x50,
.sdif = true,
};
static const struct at_xdmac_layout at_xdmac_sama7g5_layout = {
-@@ -280,6 +300,7 @@ static const struct at_xdmac_layout at_x
+@@ -281,6 +301,7 @@ static const struct at_xdmac_layout at_x
.gswf = 0x50,
.chan_cc_reg_base = 0x60,
.sdif = false,
};
static inline void __iomem *at_xdmac_chan_reg_base(struct at_xdmac *atxdmac, unsigned int chan_nb)
-@@ -2003,6 +2024,30 @@ static int atmel_xdmac_resume(struct dev
+@@ -2006,6 +2027,30 @@ static int atmel_xdmac_resume(struct dev
}
#endif /* CONFIG_PM_SLEEP */
static int at_xdmac_probe(struct platform_device *pdev)
{
struct at_xdmac *atxdmac;
-@@ -2147,6 +2192,8 @@ static int at_xdmac_probe(struct platfor
+@@ -2150,6 +2195,8 @@ static int at_xdmac_probe(struct platfor
dev_info(&pdev->dev, "%d channels, mapped at 0x%p\n",
nr_channels, atxdmac->regs);
struct rpi_firmware;
enum rpi_firmware_property_status {
-@@ -161,5 +163,6 @@ static inline struct rpi_firmware *rpi_f
+@@ -169,5 +171,6 @@ static inline struct rpi_firmware *devm_
return NULL;
}
#endif
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -8655,8 +8655,6 @@ int alloc_contig_range(unsigned long sta
+@@ -8671,8 +8671,6 @@ int alloc_contig_range(unsigned long sta
/* Make sure the range is really isolated. */
if (test_pages_isolated(outer_start, end, 0)) {
static DEFINE_MUTEX(transaction_lock);
static void response_callback(struct mbox_client *cl, void *msg)
-@@ -273,6 +275,7 @@ static int rpi_firmware_probe(struct pla
+@@ -280,6 +282,7 @@ static int rpi_firmware_probe(struct pla
kref_init(&fw->consumers);
platform_set_drvdata(pdev, fw);
rpi_firmware_print_firmware_revision(fw);
rpi_register_hwmon_driver(dev, fw);
-@@ -302,6 +305,8 @@ static int rpi_firmware_remove(struct pl
+@@ -309,6 +312,8 @@ static int rpi_firmware_remove(struct pl
rpi_firmware_put(fw);
return 0;
}
-@@ -315,7 +320,7 @@ static int rpi_firmware_remove(struct pl
+@@ -322,7 +327,7 @@ static int rpi_firmware_remove(struct pl
*/
struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node)
{
struct rpi_firmware *fw;
if (!pdev)
-@@ -328,12 +333,9 @@ struct rpi_firmware *rpi_firmware_get(st
+@@ -335,12 +340,9 @@ struct rpi_firmware *rpi_firmware_get(st
if (!kref_get_unless_zero(&fw->consumers))
goto err_put_device;
return NULL;
}
EXPORT_SYMBOL_GPL(rpi_firmware_get);
-@@ -353,7 +355,18 @@ static struct platform_driver rpi_firmwa
+@@ -382,7 +384,18 @@ static struct platform_driver rpi_firmwa
.shutdown = rpi_firmware_shutdown,
.remove = rpi_firmware_remove,
};
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -357,15 +378,32 @@ static struct platform_driver rpi_firmwa
+@@ -386,15 +407,32 @@ static struct platform_driver rpi_firmwa
.remove = rpi_firmware_remove,
};
}
static void
-@@ -333,6 +370,7 @@ static int rpi_firmware_probe(struct pla
+@@ -340,6 +377,7 @@ static int rpi_firmware_probe(struct pla
g_pdev = pdev;
rpi_firmware_print_firmware_revision(fw);
MODULE_DESCRIPTION("BCM2835 clock driver");
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -469,7 +469,7 @@ out2:
+@@ -498,7 +498,7 @@ out2:
out1:
return ret;
}
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
-@@ -1474,13 +1474,16 @@ struct nft_trans_chain {
+@@ -1475,13 +1475,16 @@ struct nft_trans_chain {
struct nft_trans_table {
bool update;
nft_trans_table_update(trans) = true;
list_add_tail(&trans->list, &ctx->net->nft.commit_list);
return 0;
-@@ -7918,11 +7922,10 @@ static int nf_tables_commit(struct net *
+@@ -7932,11 +7936,10 @@ static int nf_tables_commit(struct net *
switch (trans->msg_type) {
case NFT_MSG_NEWTABLE:
if (nft_trans_table_update(trans)) {
} else {
nft_clear(net, trans->ctx.table);
}
-@@ -8139,11 +8142,9 @@ static int __nf_tables_abort(struct net
+@@ -8153,11 +8156,9 @@ static int __nf_tables_abort(struct net
switch (trans->msg_type) {
case NFT_MSG_NEWTABLE:
if (nft_trans_table_update(trans)) {
return PTR_ERR(plat_dat);
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
-@@ -1392,7 +1392,7 @@ static int rk_gmac_probe(struct platform
+@@ -1386,7 +1386,7 @@ static int rk_gmac_probe(struct platform
if (ret)
return ret;
#define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */
-@@ -1164,6 +1166,11 @@ static const struct usb_device_id option
+@@ -1169,6 +1171,11 @@ static const struct usb_device_id option
.driver_info = ZLP },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) },
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -7107,7 +7107,7 @@ static void __ref alloc_node_mem_map(str
+@@ -7123,7 +7123,7 @@ static void __ref alloc_node_mem_map(str
if (pgdat == NODE_DATA(0)) {
mem_map = NODE_DATA(0)->node_mem_map;
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1822,6 +1822,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1823,6 +1823,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
/*
* When we registered the protocol we saved the socket in the data
-@@ -1829,6 +1830,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1830,6 +1831,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
/*
* Yank back the headers [hope the device set this
-@@ -1841,7 +1843,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1842,7 +1844,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2089,12 +2091,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2090,12 +2092,12 @@ static int packet_rcv(struct sk_buff *sk
unsigned int snaplen, res;
bool is_drop_n_account = false;
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2220,12 +2222,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2221,12 +2223,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3339,6 +3341,7 @@ static int packet_create(struct net *net
+@@ -3342,6 +3344,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
@@ -3982,6 +3985,16 @@ packet_setsockopt(struct socket *sock, i
- po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
+ WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0;
}
+ case PACKET_RECV_TYPE:
break;
--- a/net/packet/internal.h
+++ b/net/packet/internal.h
-@@ -137,6 +137,7 @@ struct packet_sock {
+@@ -136,6 +136,7 @@ struct packet_sock {
int (*xmit)(struct sk_buff *skb);
struct packet_type prot_hook ____cacheline_aligned_in_smp;
atomic_t tp_drops ____cacheline_aligned_in_smp;
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -5455,6 +5455,7 @@ static int mv88e6xxx_register_switch(str
+@@ -5456,6 +5456,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/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
-@@ -1269,6 +1269,7 @@ static const struct of_device_id qcom_sc
+@@ -1268,6 +1268,7 @@ static const struct of_device_id qcom_sc
SCM_HAS_BUS_CLK)
},
{ .compatible = "qcom,scm-ipq4019" },
+++ /dev/null
-From 84909e85881d67244240c9f40974ce12a51e3886 Mon Sep 17 00:00:00 2001
-From: Ansuel Smith <ansuelsmth@gmail.com>
-Date: Tue, 11 May 2021 23:09:45 +0200
-Subject: [PATCH] ARM: dts: qcom: reduce pci IO size to 64K
-
-The current value is probably a typo and is actually uncommon to find
-1MB IO space even on a x86 arch. Also with recent changes to the pci
-driver, pci1 and pci2 now fails to function as any connected device
-fails any reg read/write. Reduce this to 64K as it should be more than
-enough and 3 * 64K of total IO space doesn't exceed the IO_SPACE_LIMIT
-hardcoded for the ARM arch.
-
-Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
----
- arch/arm/boot/dts/qcom-ipq8064.dtsi | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
-+++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
-@@ -1163,7 +1163,7 @@
- #address-cells = <3>;
- #size-cells = <2>;
-
-- ranges = <0x81000000 0 0x0fe00000 0x0fe00000 0 0x00100000 /* downstream I/O */
-+ ranges = <0x81000000 0 0x0fe00000 0x0fe00000 0 0x00010000 /* downstream I/O */
- 0x82000000 0 0x08000000 0x08000000 0 0x07e00000>; /* non-prefetchable memory */
-
- interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
-@@ -1214,7 +1214,7 @@
- #address-cells = <3>;
- #size-cells = <2>;
-
-- ranges = <0x81000000 0 0x31e00000 0x31e00000 0 0x00100000 /* downstream I/O */
-+ ranges = <0x81000000 0 0x31e00000 0x31e00000 0 0x00010000 /* downstream I/O */
- 0x82000000 0 0x2e000000 0x2e000000 0 0x03e00000>; /* non-prefetchable memory */
-
- interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
-@@ -1265,7 +1265,7 @@
- #address-cells = <3>;
- #size-cells = <2>;
-
-- ranges = <0x81000000 0 0x35e00000 0x35e00000 0 0x00100000 /* downstream I/O */
-+ ranges = <0x81000000 0 0x35e00000 0x35e00000 0 0x00010000 /* downstream I/O */
- 0x82000000 0 0x32000000 0x32000000 0 0x03e00000>; /* non-prefetchable memory */
-
- interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
#define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
-@@ -288,7 +288,7 @@ static const struct serial8250_config ua
+@@ -289,7 +289,7 @@ static const struct serial8250_config ua
.tx_loadsz = 16,
.fcr = UART_FCR_ENABLE_FIFO |
UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT,
},
[PORT_NPCM] = {
.name = "Nuvoton 16550",
-@@ -2713,6 +2713,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2723,6 +2723,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags;
unsigned int baud, quot, frac = 0;