-LINUX_VERSION-6.6 = .79
-LINUX_KERNEL_HASH-6.6.79 = 07a6f904470da1a099aa1683e3025a999dd82f2438f78b006b80c6ae2e9dfe8d
+LINUX_VERSION-6.6 = .80
+LINUX_KERNEL_HASH-6.6.80 = 6cf911d01324f45c9dd2f44cf06f55bda0ecf383bc498f132a0c549768531327
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -4262,14 +4262,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -4268,14 +4268,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
commit->event = kzalloc(sizeof(*commit->event),
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
-@@ -7280,6 +7280,19 @@ int intel_atomic_commit(struct drm_devic
+@@ -7298,6 +7298,19 @@ int intel_atomic_commit(struct drm_devic
state->base.legacy_cursor_update = false;
}
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4483,13 +4483,7 @@ static inline void ____napi_schedule(str
+@@ -4514,13 +4514,7 @@ static inline void ____napi_schedule(str
*/
thread = READ_ONCE(napi->thread);
if (thread) {
wake_up_process(thread);
return;
}
-@@ -6645,8 +6639,6 @@ static int napi_poll(struct napi_struct
+@@ -6676,8 +6670,6 @@ static int napi_poll(struct napi_struct
static int napi_thread_wait(struct napi_struct *napi)
{
set_current_state(TASK_INTERRUPTIBLE);
while (!kthread_should_stop()) {
-@@ -6655,15 +6647,13 @@ static int napi_thread_wait(struct napi_
+@@ -6686,15 +6678,13 @@ static int napi_thread_wait(struct napi_
* Testing SCHED bit is not enough because SCHED bit might be
* set by some other busy poll thread or by napi_disable().
*/
static inline void rps_lock_irqsave(struct softnet_data *sd,
unsigned long *flags)
{
-@@ -4451,6 +4477,7 @@ EXPORT_SYMBOL(__dev_direct_xmit);
+@@ -4482,6 +4508,7 @@ EXPORT_SYMBOL(__dev_direct_xmit);
/*************************************************************************
* Receiver routines
*************************************************************************/
int netdev_max_backlog __read_mostly = 1000;
EXPORT_SYMBOL(netdev_max_backlog);
-@@ -4483,12 +4510,16 @@ static inline void ____napi_schedule(str
+@@ -4514,12 +4541,16 @@ static inline void ____napi_schedule(str
*/
thread = READ_ONCE(napi->thread);
if (thread) {
list_add_tail(&napi->poll_list, &sd->poll_list);
WRITE_ONCE(napi->list_owner, smp_processor_id());
/* If not called from net_rx_action()
-@@ -4734,6 +4765,11 @@ static void napi_schedule_rps(struct sof
+@@ -4765,6 +4796,11 @@ static void napi_schedule_rps(struct sof
#ifdef CONFIG_RPS
if (sd != mysd) {
sd->rps_ipi_next = mysd->rps_ipi_list;
mysd->rps_ipi_list = sd;
-@@ -5957,7 +5993,7 @@ static void net_rps_action_and_irq_enabl
+@@ -5988,7 +6024,7 @@ static void net_rps_action_and_irq_enabl
#ifdef CONFIG_RPS
struct softnet_data *remsd = sd->rps_ipi_list;
sd->rps_ipi_list = NULL;
local_irq_enable();
-@@ -5972,7 +6008,7 @@ static void net_rps_action_and_irq_enabl
+@@ -6003,7 +6039,7 @@ static void net_rps_action_and_irq_enabl
static bool sd_has_rps_ipi_waiting(struct softnet_data *sd)
{
#ifdef CONFIG_RPS
#else
return false;
#endif
-@@ -6016,7 +6052,7 @@ static int process_backlog(struct napi_s
+@@ -6047,7 +6083,7 @@ static int process_backlog(struct napi_s
* We can use a plain write instead of clear_bit(),
* and we dont need an smp_mb() memory barrier.
*/
again = false;
} else {
skb_queue_splice_tail_init(&sd->input_pkt_queue,
-@@ -6682,43 +6718,48 @@ static void skb_defer_free_flush(struct
+@@ -6713,43 +6749,48 @@ static void skb_defer_free_flush(struct
}
}
return 0;
}
-@@ -11303,7 +11344,7 @@ static int dev_cpu_dead(unsigned int old
+@@ -11334,7 +11375,7 @@ static int dev_cpu_dead(unsigned int old
list_del_init(&napi->poll_list);
if (napi->poll == process_backlog)
else
____napi_schedule(sd, napi);
}
-@@ -11311,12 +11352,14 @@ static int dev_cpu_dead(unsigned int old
+@@ -11342,12 +11383,14 @@ static int dev_cpu_dead(unsigned int old
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable();
/* Process offline CPU's input_pkt_queue */
while ((skb = __skb_dequeue(&oldsd->process_queue))) {
-@@ -11579,6 +11622,38 @@ static struct pernet_operations __net_in
+@@ -11610,6 +11653,38 @@ static struct pernet_operations __net_in
*
*/
/*
* This is called single threaded during boot, so no need
* to take the rtnl semaphore.
-@@ -11629,7 +11704,10 @@ static int __init net_dev_init(void)
+@@ -11660,7 +11735,10 @@ static int __init net_dev_init(void)
init_gro_hash(&sd->backlog);
sd->backlog.poll = process_backlog;
sd->backlog.weight = weight_p;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -3306,6 +3306,7 @@ static inline void dev_xmit_recursion_de
+@@ -3308,6 +3308,7 @@ static inline void dev_xmit_recursion_de
__this_cpu_dec(softnet_data.xmit.recursion);
}
spin_unlock_irq(&sd->input_pkt_queue.lock);
else if (!IS_ENABLED(CONFIG_PREEMPT_RT))
local_irq_enable();
-@@ -4784,6 +4784,23 @@ static void napi_schedule_rps(struct sof
+@@ -4815,6 +4815,23 @@ static void napi_schedule_rps(struct sof
__napi_schedule_irqoff(&mysd->backlog);
}
{
if (IS_ENABLED(CONFIG_RPS) || use_backlog_threads())
spin_unlock_irq(&sd->input_pkt_queue.lock);
-@@ -4789,12 +4789,12 @@ void kick_defer_list_purge(struct softne
+@@ -4820,12 +4820,12 @@ void kick_defer_list_purge(struct softne
unsigned long flags;
if (use_backlog_threads()) {
} else if (!cmpxchg(&sd->defer_ipi_scheduled, 0, 1)) {
smp_call_function_single_async(cpu, &sd->defer_csd);
-@@ -4856,7 +4856,7 @@ static int enqueue_to_backlog(struct sk_
+@@ -4887,7 +4887,7 @@ static int enqueue_to_backlog(struct sk_
reason = SKB_DROP_REASON_NOT_SPECIFIED;
sd = &per_cpu(softnet_data, cpu);
if (!netif_running(skb->dev))
goto drop;
qlen = skb_queue_len(&sd->input_pkt_queue);
-@@ -4865,7 +4865,7 @@ static int enqueue_to_backlog(struct sk_
+@@ -4896,7 +4896,7 @@ static int enqueue_to_backlog(struct sk_
enqueue:
__skb_queue_tail(&sd->input_pkt_queue, skb);
input_queue_tail_incr_save(sd, qtail);
return NET_RX_SUCCESS;
}
-@@ -4880,7 +4880,7 @@ enqueue:
+@@ -4911,7 +4911,7 @@ enqueue:
drop:
sd->dropped++;
dev_core_stats_rx_dropped_inc(skb->dev);
kfree_skb_reason(skb, reason);
-@@ -5911,7 +5911,7 @@ static void flush_backlog(struct work_st
+@@ -5942,7 +5942,7 @@ static void flush_backlog(struct work_st
local_bh_disable();
sd = this_cpu_ptr(&softnet_data);
skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
__skb_unlink(skb, &sd->input_pkt_queue);
-@@ -5919,7 +5919,7 @@ static void flush_backlog(struct work_st
+@@ -5950,7 +5950,7 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd);
}
}
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
-@@ -5937,14 +5937,14 @@ static bool flush_required(int cpu)
+@@ -5968,14 +5968,14 @@ static bool flush_required(int cpu)
struct softnet_data *sd = &per_cpu(softnet_data, cpu);
bool do_flush;
return do_flush;
#endif
-@@ -6059,7 +6059,7 @@ static int process_backlog(struct napi_s
+@@ -6090,7 +6090,7 @@ static int process_backlog(struct napi_s
}
if (skb_queue_empty(&sd->input_pkt_queue)) {
/*
* Inline a custom version of __napi_complete().
-@@ -6075,7 +6075,7 @@ static int process_backlog(struct napi_s
+@@ -6106,7 +6106,7 @@ static int process_backlog(struct napi_s
skb_queue_splice_tail_init(&sd->input_pkt_queue,
&sd->process_queue);
}
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -9765,6 +9765,15 @@ static void netdev_sync_lower_features(s
+@@ -9796,6 +9796,15 @@ static void netdev_sync_lower_features(s
}
}
static netdev_features_t netdev_fix_features(struct net_device *dev,
netdev_features_t features)
{
-@@ -9846,15 +9855,9 @@ static netdev_features_t netdev_fix_feat
+@@ -9877,15 +9886,9 @@ static netdev_features_t netdev_fix_feat
features &= ~NETIF_F_LRO;
}
}
if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) {
-@@ -9862,6 +9865,11 @@ static netdev_features_t netdev_fix_feat
+@@ -9893,6 +9896,11 @@ static netdev_features_t netdev_fix_feat
features &= ~NETIF_F_HW_TLS_RX;
}
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -10672,6 +10672,8 @@ struct rtnl_link_stats64 *dev_get_stats(
+@@ -10703,6 +10703,8 @@ struct rtnl_link_stats64 *dev_get_stats(
ops->ndo_get_stats64(dev, storage);
} else if (ops->ndo_get_stats) {
netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev));
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -4567,6 +4567,9 @@ static inline void netif_addr_unlock_bh(
+@@ -4569,6 +4569,9 @@ static inline void netif_addr_unlock_bh(
void ether_setup(struct net_device *dev);
unsigned char name_assign_type,
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -10359,25 +10359,12 @@ err_free_name:
+@@ -10390,25 +10390,12 @@ err_free_name:
}
EXPORT_SYMBOL(register_netdevice);
/* make sure we BUG if trying to hit standard
* register/unregister code path
*/
-@@ -10397,12 +10384,32 @@ int init_dummy_netdev(struct net_device
+@@ -10428,12 +10415,32 @@ int init_dummy_netdev(struct net_device
* because users of this 'device' dont need to change
* its refcount.
*/
/**
* register_netdev - register a network device
* @dev: device to register
-@@ -10996,6 +11003,19 @@ void free_netdev(struct net_device *dev)
+@@ -11027,6 +11034,19 @@ void free_netdev(struct net_device *dev)
EXPORT_SYMBOL(free_netdev);
/**
/**
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6612,7 +6612,7 @@ static int __napi_poll(struct napi_struc
+@@ -6643,7 +6643,7 @@ static int __napi_poll(struct napi_struc
* accidentally calling ->poll() when NAPI is not scheduled.
*/
work = 0;
mtd->nvmem = nvmem_register(&config);
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
-@@ -940,7 +940,7 @@ struct nvmem_device *nvmem_register(cons
+@@ -918,7 +918,7 @@ struct nvmem_device *nvmem_register(cons
nvmem->nkeepout = config->nkeepout;
if (config->of_node)
nvmem->dev.of_node = config->of_node;
switch (config->id) {
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
-@@ -89,7 +89,6 @@ struct nvmem_cell_info {
+@@ -91,7 +91,6 @@ struct nvmem_cell_info {
* @read_only: Device is read-only.
* @root_only: Device is accessibly to root only.
* @of_node: If given, this will be used instead of the parent's of_node.
* @reg_read: Callback to read data.
* @reg_write: Callback to write data.
* @size: Device size.
-@@ -122,7 +121,6 @@ struct nvmem_config {
+@@ -126,7 +125,6 @@ struct nvmem_config {
bool ignore_wp;
struct nvmem_layout *layout;
struct device_node *of_node;
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
-@@ -846,14 +846,6 @@ static int nvmem_add_cells_from_layout(s
+@@ -823,14 +823,6 @@ static int nvmem_add_cells_from_layout(s
}
#if IS_ENABLED(CONFIG_OF)
#endif /* ifndef _LINUX_NVMEM_CONSUMER_H */
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
-@@ -244,6 +244,27 @@ nvmem_layout_get_match_data(struct nvmem
+@@ -241,6 +241,27 @@ nvmem_layout_get_match_data(struct nvmem
#endif /* CONFIG_NVMEM */
+++ /dev/null
-From ec9c08a1cb8dc5e8e003f95f5f62de41dde235bb Mon Sep 17 00:00:00 2001
-From: Miquel Raynal <miquel.raynal@bootlin.com>
-Date: Fri, 15 Dec 2023 11:15:29 +0000
-Subject: [PATCH] nvmem: Create a header for internal sharing
-
-Before adding all the NVMEM layout bus infrastructure to the core, let's
-move the main nvmem_device structure in an internal header, only
-available to the core. This way all the additional code can be added in
-a dedicated file in order to keep the current core file tidy.
-
-Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
-Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
-Link: https://lore.kernel.org/r/20231215111536.316972-4-srinivas.kandagatla@linaro.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/nvmem/core.c | 24 +-----------------------
- drivers/nvmem/internals.h | 35 +++++++++++++++++++++++++++++++++++
- 2 files changed, 36 insertions(+), 23 deletions(-)
- create mode 100644 drivers/nvmem/internals.h
-
---- a/drivers/nvmem/core.c
-+++ b/drivers/nvmem/core.c
-@@ -19,29 +19,7 @@
- #include <linux/of.h>
- #include <linux/slab.h>
-
--struct nvmem_device {
-- struct module *owner;
-- struct device dev;
-- int stride;
-- int word_size;
-- int id;
-- struct kref refcnt;
-- size_t size;
-- bool read_only;
-- bool root_only;
-- int flags;
-- enum nvmem_type type;
-- struct bin_attribute eeprom;
-- struct device *base_dev;
-- struct list_head cells;
-- const struct nvmem_keepout *keepout;
-- unsigned int nkeepout;
-- nvmem_reg_read_t reg_read;
-- nvmem_reg_write_t reg_write;
-- struct gpio_desc *wp_gpio;
-- struct nvmem_layout *layout;
-- void *priv;
--};
-+#include "internals.h"
-
- #define to_nvmem_device(d) container_of(d, struct nvmem_device, dev)
-
---- /dev/null
-+++ b/drivers/nvmem/internals.h
-@@ -0,0 +1,35 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+
-+#ifndef _LINUX_NVMEM_INTERNALS_H
-+#define _LINUX_NVMEM_INTERNALS_H
-+
-+#include <linux/device.h>
-+#include <linux/nvmem-consumer.h>
-+#include <linux/nvmem-provider.h>
-+
-+struct nvmem_device {
-+ struct module *owner;
-+ struct device dev;
-+ struct list_head node;
-+ int stride;
-+ int word_size;
-+ int id;
-+ struct kref refcnt;
-+ size_t size;
-+ bool read_only;
-+ bool root_only;
-+ int flags;
-+ enum nvmem_type type;
-+ struct bin_attribute eeprom;
-+ struct device *base_dev;
-+ struct list_head cells;
-+ const struct nvmem_keepout *keepout;
-+ unsigned int nkeepout;
-+ nvmem_reg_read_t reg_read;
-+ nvmem_reg_write_t reg_write;
-+ struct gpio_desc *wp_gpio;
-+ struct nvmem_layout *layout;
-+ void *priv;
-+};
-+
-+#endif /* ifndef _LINUX_NVMEM_INTERNALS_H */
+++ /dev/null
-From 1b7c298a4ecbc28cc6ee94005734bff55eb83d22 Mon Sep 17 00:00:00 2001
-From: Miquel Raynal <miquel.raynal@bootlin.com>
-Date: Fri, 15 Dec 2023 11:15:30 +0000
-Subject: [PATCH] nvmem: Simplify the ->add_cells() hook
-
-The layout entry is not used and will anyway be made useless by the new
-layout bus infrastructure coming next, so drop it. While at it, clarify
-the kdoc entry.
-
-Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
-Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
-Link: https://lore.kernel.org/r/20231215111536.316972-5-srinivas.kandagatla@linaro.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/nvmem/core.c | 2 +-
- drivers/nvmem/layouts/onie-tlv.c | 3 +--
- drivers/nvmem/layouts/sl28vpd.c | 3 +--
- include/linux/nvmem-provider.h | 8 +++-----
- 4 files changed, 6 insertions(+), 10 deletions(-)
-
---- a/drivers/nvmem/core.c
-+++ b/drivers/nvmem/core.c
-@@ -815,7 +815,7 @@ static int nvmem_add_cells_from_layout(s
- int ret;
-
- if (layout && layout->add_cells) {
-- ret = layout->add_cells(&nvmem->dev, nvmem, layout);
-+ ret = layout->add_cells(&nvmem->dev, nvmem);
- if (ret)
- return ret;
- }
---- a/drivers/nvmem/layouts/onie-tlv.c
-+++ b/drivers/nvmem/layouts/onie-tlv.c
-@@ -182,8 +182,7 @@ static bool onie_tlv_crc_is_valid(struct
- return true;
- }
-
--static int onie_tlv_parse_table(struct device *dev, struct nvmem_device *nvmem,
-- struct nvmem_layout *layout)
-+static int onie_tlv_parse_table(struct device *dev, struct nvmem_device *nvmem)
- {
- struct onie_tlv_hdr hdr;
- size_t table_len, data_len, hdr_len;
---- a/drivers/nvmem/layouts/sl28vpd.c
-+++ b/drivers/nvmem/layouts/sl28vpd.c
-@@ -80,8 +80,7 @@ static int sl28vpd_v1_check_crc(struct d
- return 0;
- }
-
--static int sl28vpd_add_cells(struct device *dev, struct nvmem_device *nvmem,
-- struct nvmem_layout *layout)
-+static int sl28vpd_add_cells(struct device *dev, struct nvmem_device *nvmem)
- {
- const struct nvmem_cell_info *pinfo;
- struct nvmem_cell_info info = {0};
---- a/include/linux/nvmem-provider.h
-+++ b/include/linux/nvmem-provider.h
-@@ -156,9 +156,8 @@ struct nvmem_cell_table {
- *
- * @name: Layout name.
- * @of_match_table: Open firmware match table.
-- * @add_cells: Will be called if a nvmem device is found which
-- * has this layout. The function will add layout
-- * specific cells with nvmem_add_one_cell().
-+ * @add_cells: Called to populate the layout using
-+ * nvmem_add_one_cell().
- * @fixup_cell_info: Will be called before a cell is added. Can be
- * used to modify the nvmem_cell_info.
- * @owner: Pointer to struct module.
-@@ -172,8 +171,7 @@ struct nvmem_cell_table {
- struct nvmem_layout {
- const char *name;
- const struct of_device_id *of_match_table;
-- int (*add_cells)(struct device *dev, struct nvmem_device *nvmem,
-- struct nvmem_layout *layout);
-+ int (*add_cells)(struct device *dev, struct nvmem_device *nvmem);
- void (*fixup_cell_info)(struct nvmem_device *nvmem,
- struct nvmem_layout *layout,
- struct nvmem_cell_info *cell);
+++ /dev/null
-From 1172460e716784ac7e1049a537bdca8edbf97360 Mon Sep 17 00:00:00 2001
-From: Miquel Raynal <miquel.raynal@bootlin.com>
-Date: Fri, 15 Dec 2023 11:15:31 +0000
-Subject: [PATCH] nvmem: Move and rename ->fixup_cell_info()
-
-This hook is meant to be used by any provider and instantiating a layout
-just for this is useless. Let's instead move this hook to the nvmem
-device and add it to the config structure to be easily shared by the
-providers.
-
-While at moving this hook, rename it ->fixup_dt_cell_info() to clarify
-its main intended purpose.
-
-Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
-Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
-Link: https://lore.kernel.org/r/20231215111536.316972-6-srinivas.kandagatla@linaro.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/nvmem/core.c | 6 +++---
- drivers/nvmem/imx-ocotp.c | 11 +++--------
- drivers/nvmem/internals.h | 2 ++
- drivers/nvmem/mtk-efuse.c | 11 +++--------
- include/linux/nvmem-provider.h | 9 ++++-----
- 5 files changed, 15 insertions(+), 24 deletions(-)
-
---- a/drivers/nvmem/core.c
-+++ b/drivers/nvmem/core.c
-@@ -674,7 +674,6 @@ static int nvmem_validate_keepouts(struc
-
- static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
- {
-- struct nvmem_layout *layout = nvmem->layout;
- struct device *dev = &nvmem->dev;
- struct device_node *child;
- const __be32 *addr;
-@@ -704,8 +703,8 @@ static int nvmem_add_cells_from_dt(struc
-
- info.np = of_node_get(child);
-
-- if (layout && layout->fixup_cell_info)
-- layout->fixup_cell_info(nvmem, layout, &info);
-+ if (nvmem->fixup_dt_cell_info)
-+ nvmem->fixup_dt_cell_info(nvmem, &info);
-
- ret = nvmem_add_one_cell(nvmem, &info);
- kfree(info.name);
-@@ -894,6 +893,7 @@ struct nvmem_device *nvmem_register(cons
-
- kref_init(&nvmem->refcnt);
- INIT_LIST_HEAD(&nvmem->cells);
-+ nvmem->fixup_dt_cell_info = config->fixup_dt_cell_info;
-
- nvmem->owner = config->owner;
- if (!nvmem->owner && config->dev->driver)
---- a/drivers/nvmem/imx-ocotp.c
-+++ b/drivers/nvmem/imx-ocotp.c
-@@ -583,17 +583,12 @@ static const struct of_device_id imx_oco
- };
- MODULE_DEVICE_TABLE(of, imx_ocotp_dt_ids);
-
--static void imx_ocotp_fixup_cell_info(struct nvmem_device *nvmem,
-- struct nvmem_layout *layout,
-- struct nvmem_cell_info *cell)
-+static void imx_ocotp_fixup_dt_cell_info(struct nvmem_device *nvmem,
-+ struct nvmem_cell_info *cell)
- {
- cell->read_post_process = imx_ocotp_cell_pp;
- }
-
--static struct nvmem_layout imx_ocotp_layout = {
-- .fixup_cell_info = imx_ocotp_fixup_cell_info,
--};
--
- static int imx_ocotp_probe(struct platform_device *pdev)
- {
- struct device *dev = &pdev->dev;
-@@ -619,7 +614,7 @@ static int imx_ocotp_probe(struct platfo
- imx_ocotp_nvmem_config.size = 4 * priv->params->nregs;
- imx_ocotp_nvmem_config.dev = dev;
- imx_ocotp_nvmem_config.priv = priv;
-- imx_ocotp_nvmem_config.layout = &imx_ocotp_layout;
-+ imx_ocotp_nvmem_config.fixup_dt_cell_info = &imx_ocotp_fixup_dt_cell_info;
-
- priv->config = &imx_ocotp_nvmem_config;
-
---- a/drivers/nvmem/internals.h
-+++ b/drivers/nvmem/internals.h
-@@ -23,6 +23,8 @@ struct nvmem_device {
- struct bin_attribute eeprom;
- struct device *base_dev;
- struct list_head cells;
-+ void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
-+ struct nvmem_cell_info *cell);
- const struct nvmem_keepout *keepout;
- unsigned int nkeepout;
- nvmem_reg_read_t reg_read;
---- a/drivers/nvmem/mtk-efuse.c
-+++ b/drivers/nvmem/mtk-efuse.c
-@@ -45,9 +45,8 @@ static int mtk_efuse_gpu_speedbin_pp(voi
- return 0;
- }
-
--static void mtk_efuse_fixup_cell_info(struct nvmem_device *nvmem,
-- struct nvmem_layout *layout,
-- struct nvmem_cell_info *cell)
-+static void mtk_efuse_fixup_dt_cell_info(struct nvmem_device *nvmem,
-+ struct nvmem_cell_info *cell)
- {
- size_t sz = strlen(cell->name);
-
-@@ -61,10 +60,6 @@ static void mtk_efuse_fixup_cell_info(st
- cell->read_post_process = mtk_efuse_gpu_speedbin_pp;
- }
-
--static struct nvmem_layout mtk_efuse_layout = {
-- .fixup_cell_info = mtk_efuse_fixup_cell_info,
--};
--
- static int mtk_efuse_probe(struct platform_device *pdev)
- {
- struct device *dev = &pdev->dev;
-@@ -91,7 +86,7 @@ static int mtk_efuse_probe(struct platfo
- econfig.priv = priv;
- econfig.dev = dev;
- if (pdata->uses_post_processing)
-- econfig.layout = &mtk_efuse_layout;
-+ econfig.fixup_dt_cell_info = &mtk_efuse_fixup_dt_cell_info;
- nvmem = devm_nvmem_register(dev, &econfig);
-
- return PTR_ERR_OR_ZERO(nvmem);
---- a/include/linux/nvmem-provider.h
-+++ b/include/linux/nvmem-provider.h
-@@ -83,6 +83,8 @@ struct nvmem_cell_info {
- * @cells: Optional array of pre-defined NVMEM cells.
- * @ncells: Number of elements in cells.
- * @add_legacy_fixed_of_cells: Read fixed NVMEM cells from old OF syntax.
-+ * @fixup_dt_cell_info: Will be called before a cell is added. Can be
-+ * used to modify the nvmem_cell_info.
- * @keepout: Optional array of keepout ranges (sorted ascending by start).
- * @nkeepout: Number of elements in the keepout array.
- * @type: Type of the nvmem storage
-@@ -113,6 +115,8 @@ struct nvmem_config {
- const struct nvmem_cell_info *cells;
- int ncells;
- bool add_legacy_fixed_of_cells;
-+ void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
-+ struct nvmem_cell_info *cell);
- const struct nvmem_keepout *keepout;
- unsigned int nkeepout;
- enum nvmem_type type;
-@@ -158,8 +162,6 @@ struct nvmem_cell_table {
- * @of_match_table: Open firmware match table.
- * @add_cells: Called to populate the layout using
- * nvmem_add_one_cell().
-- * @fixup_cell_info: Will be called before a cell is added. Can be
-- * used to modify the nvmem_cell_info.
- * @owner: Pointer to struct module.
- * @node: List node.
- *
-@@ -172,9 +174,6 @@ struct nvmem_layout {
- const char *name;
- const struct of_device_id *of_match_table;
- int (*add_cells)(struct device *dev, struct nvmem_device *nvmem);
-- void (*fixup_cell_info)(struct nvmem_device *nvmem,
-- struct nvmem_layout *layout,
-- struct nvmem_cell_info *cell);
-
- /* private */
- struct module *owner;
}
memcpy(val, ((u8 *)p) + skipbytes, bytes);
-@@ -157,8 +161,30 @@ static const struct ocotp_devtype_data i
+@@ -179,8 +183,30 @@ static const struct ocotp_devtype_data i
},
};
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -10989,7 +10989,8 @@ void free_netdev(struct net_device *dev)
+@@ -11020,7 +11020,8 @@ void free_netdev(struct net_device *dev)
dev->xdp_bulkq = NULL;
/* Compatibility with error handling in drivers */
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -3597,6 +3597,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3628,6 +3628,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev);
static inline void gro_normal_list(struct napi_struct *napi)
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
-@@ -2084,7 +2084,10 @@ void tcp_v4_destroy_sock(struct sock *sk
+@@ -2101,7 +2101,10 @@ void tcp_v4_destroy_sock(struct sock *sk
struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
netdev_features_t features);
static int __qcom_scm_set_dload_mode(struct device *dev, bool enable)
{
struct qcom_scm_desc desc = {
-@@ -1473,6 +1496,13 @@ static int qcom_scm_probe(struct platfor
+@@ -1474,6 +1497,13 @@ static int qcom_scm_probe(struct platfor
__get_convention();
--- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
-@@ -1528,7 +1528,8 @@ static int qcom_scm_probe(struct platfor
+@@ -1529,7 +1529,8 @@ static int qcom_scm_probe(struct platfor
static void qcom_scm_shutdown(struct platform_device *pdev)
{
/* Clean shutdown, disable download mode to allow normal restart */
static int __qcom_scm_set_dload_mode(struct device *dev, bool enable)
{
struct qcom_scm_desc desc = {
-@@ -1473,6 +1496,13 @@ static int qcom_scm_probe(struct platfor
+@@ -1474,6 +1497,13 @@ static int qcom_scm_probe(struct platfor
__get_convention();
/* Format flags */
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
-@@ -587,6 +589,7 @@ struct uvc_device {
+@@ -591,6 +593,7 @@ struct uvc_device {
struct input_dev *input;
char input_phys[64];