xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_TRB_OVERFETCH;
+ xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
+ xhci->dma_mask_bits = 36;
}
- if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -637,8 +637,11 @@ static int xhci_move_dequeue_past_td(str
* For devices with more than one control interface, we assume the
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
-@@ -2399,6 +2399,8 @@ static const struct usb_audio_quirk_flag
+@@ -2401,6 +2401,8 @@ static const struct usb_audio_quirk_flag
QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
QUIRK_FLAG_ALIGN_TRANSFER),
* non-error returns are a promise to giveback() the urb later
* we drop ownership so next owner (or urb unlink) can get it
*/
-@@ -5395,6 +5498,7 @@ static const struct hc_driver xhci_hc_dr
+@@ -5400,6 +5503,7 @@ static const struct hc_driver xhci_hc_dr
.endpoint_reset = xhci_endpoint_reset,
.check_bandwidth = xhci_check_bandwidth,
.reset_bandwidth = xhci_reset_bandwidth,
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
-@@ -4985,6 +4985,7 @@ static const struct {
+@@ -4994,6 +4994,7 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
int ret = 0;
bool invalid_bdaddr;
size_t i;
-@@ -5013,7 +5014,8 @@ static int hci_dev_setup_sync(struct hci
+@@ -5022,7 +5023,8 @@ static int hci_dev_setup_sync(struct hci
test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
if (!ret) {
if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) &&
xhci->quirks |= XHCI_TRB_OVERFETCH;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
+ xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
+ xhci->dma_mask_bits = 36;
}
- if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -710,6 +710,16 @@ static int xhci_move_dequeue_past_td(str
if (addr == 0) {
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1631,6 +1631,9 @@ struct xhci_hcd {
+@@ -1632,6 +1632,9 @@ struct xhci_hcd {
#define XHCI_ETRON_HOST BIT_ULL(49)
#define XHCI_LIMIT_ENDPOINT_INTERVAL_9 BIT_ULL(50)
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
+ xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG;
+ xhci->dma_mask_bits = 36;
}
- if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1633,6 +1633,7 @@ struct xhci_hcd {
+@@ -1634,6 +1634,7 @@ struct xhci_hcd {
/* Downstream VLI fixes */
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56)
static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
{
struct pci_dev *pdev = to_pci_dev(dev);
-@@ -457,6 +469,8 @@ static void xhci_pci_quirks(struct devic
- xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
+@@ -458,6 +470,8 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG;
+ xhci->dma_mask_bits = 36;
+ if (xhci_vl805_get_fw_version(pdev) < VL805_FW_VER_0138C0)
+ xhci->quirks |= XHCI_VLI_HUB_TT_QUIRK;
}
return 0;
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1634,6 +1634,7 @@ struct xhci_hcd {
+@@ -1635,6 +1635,7 @@ struct xhci_hcd {
/* Downstream VLI fixes */
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56)
#define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(57)
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
spin_unlock(&bp->lock);
-@@ -2901,6 +2929,37 @@ static void macb_configure_dma(struct ma
+@@ -2919,6 +2947,37 @@ static void macb_configure_dma(struct ma
}
}
static void macb_init_hw(struct macb *bp)
{
u32 config;
-@@ -2929,6 +2988,11 @@ static void macb_init_hw(struct macb *bp
+@@ -2947,6 +3006,11 @@ static void macb_init_hw(struct macb *bp
if (bp->caps & MACB_CAPS_JUMBO)
bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK;
macb_configure_dma(bp);
/* Enable RX partial store and forward and set watermark */
-@@ -3296,6 +3360,52 @@ static void gem_get_ethtool_strings(stru
+@@ -3314,6 +3378,52 @@ static void gem_get_ethtool_strings(stru
}
}
static struct net_device_stats *macb_get_stats(struct net_device *dev)
{
struct macb *bp = netdev_priv(dev);
-@@ -3883,6 +3993,8 @@ static const struct ethtool_ops macb_eth
+@@ -3901,6 +4011,8 @@ static const struct ethtool_ops macb_eth
};
static const struct ethtool_ops gem_ethtool_ops = {
.get_regs_len = macb_get_regs_len,
.get_regs = macb_get_regs,
.get_wol = macb_get_wol,
-@@ -3892,6 +4004,8 @@ static const struct ethtool_ops gem_etht
+@@ -3910,6 +4022,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,
.get_link_ksettings = macb_get_link_ksettings,
.set_link_ksettings = macb_set_link_ksettings,
.get_ringparam = macb_get_ringparam,
-@@ -5213,6 +5327,11 @@ static int macb_probe(struct platform_de
+@@ -5231,6 +5345,11 @@ static int macb_probe(struct platform_de
}
}
}
spin_lock_init(&bp->lock);
spin_lock_init(&bp->stats_lock);
-@@ -5273,6 +5392,21 @@ static int macb_probe(struct platform_de
+@@ -5291,6 +5410,21 @@ static int macb_probe(struct platform_de
else
bp->phy_interface = interface;
/* IP specific init */
err = init(pdev);
if (err)
-@@ -5344,6 +5478,19 @@ static void macb_remove(struct platform_
+@@ -5362,6 +5496,19 @@ static void macb_remove(struct platform_
}
}
static int __maybe_unused macb_suspend(struct device *dev)
{
struct net_device *netdev = dev_get_drvdata(dev);
-@@ -5616,6 +5763,7 @@ static const struct dev_pm_ops macb_pm_o
+@@ -5634,6 +5781,7 @@ static const struct dev_pm_ops macb_pm_o
static struct platform_driver macb_driver = {
.probe = macb_probe,
.remove_new = macb_remove,
source "drivers/gpu/drm/etnaviv/Kconfig"
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
-@@ -225,3 +225,4 @@ obj-y += solomon/
+@@ -224,3 +224,4 @@ obj-y += solomon/
obj-$(CONFIG_DRM_SPRD) += sprd/
obj-$(CONFIG_DRM_LOONGSON) += loongson/
obj-$(CONFIG_DRM_POWERVR) += imagination/
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
-@@ -4985,7 +4985,8 @@ static const struct {
+@@ -4994,7 +4994,8 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -5176,6 +5176,17 @@ static const struct macb_config versal_c
+@@ -5194,6 +5194,17 @@ static const struct macb_config versal_c
.usrio = &macb_default_usrio,
};
static const struct of_device_id macb_dt_ids[] = {
{ .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config },
{ .compatible = "cdns,macb" },
-@@ -5196,6 +5207,7 @@ static const struct of_device_id macb_dt
+@@ -5214,6 +5225,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 },
return;
/* Fast path: if the BO is still retained by someone, no need to test
-@@ -786,7 +786,7 @@ int vc4_create_bo_ioctl(struct drm_devic
+@@ -790,7 +790,7 @@ int vc4_create_bo_ioctl(struct drm_devic
struct vc4_bo *bo = NULL;
int ret;
return -ENODEV;
ret = vc4_grab_bin_bo(vc4, vc4file);
-@@ -816,7 +816,7 @@ int vc4_mmap_bo_ioctl(struct drm_device
+@@ -820,7 +820,7 @@ int vc4_mmap_bo_ioctl(struct drm_device
struct drm_vc4_mmap_bo *args = data;
struct drm_gem_object *gem_obj;
return -ENODEV;
gem_obj = drm_gem_object_lookup(file_priv, args->handle);
-@@ -842,7 +842,7 @@ vc4_create_shader_bo_ioctl(struct drm_de
+@@ -846,7 +846,7 @@ vc4_create_shader_bo_ioctl(struct drm_de
struct vc4_bo *bo = NULL;
int ret;
return -ENODEV;
if (args->size == 0)
-@@ -921,7 +921,7 @@ int vc4_set_tiling_ioctl(struct drm_devi
+@@ -925,7 +925,7 @@ int vc4_set_tiling_ioctl(struct drm_devi
struct vc4_bo *bo;
bool t_format;
return -ENODEV;
if (args->flags != 0)
-@@ -967,7 +967,7 @@ int vc4_get_tiling_ioctl(struct drm_devi
+@@ -971,7 +971,7 @@ int vc4_get_tiling_ioctl(struct drm_devi
struct drm_gem_object *gem_obj;
struct vc4_bo *bo;
return -ENODEV;
if (args->flags != 0 || args->modifier != 0)
-@@ -1010,7 +1010,7 @@ int vc4_bo_cache_init(struct drm_device
+@@ -1014,7 +1014,7 @@ int vc4_bo_cache_init(struct drm_device
int ret;
int i;
return -ENODEV;
/* Create the initial set of BO labels that the kernel will
-@@ -1074,7 +1074,7 @@ int vc4_label_bo_ioctl(struct drm_device
+@@ -1078,7 +1078,7 @@ int vc4_label_bo_ioctl(struct drm_device
struct drm_gem_object *gem_obj;
int ret = 0, label;
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
-@@ -1461,7 +1461,7 @@ static int sc16is7xx_setup_mctrl_ports(s
+@@ -1473,7 +1473,7 @@ static int sc16is7xx_setup_mctrl_ports(s
}
static const struct serial_rs485 sc16is7xx_rs485_supported = {
if (xhci->quirks & XHCI_NEC_HOST)
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1630,6 +1630,7 @@ struct xhci_hcd {
+@@ -1631,6 +1631,7 @@ struct xhci_hcd {
#define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48)
#define XHCI_ETRON_HOST BIT_ULL(49)
#define XHCI_LIMIT_ENDPOINT_INTERVAL_9 BIT_ULL(50)
--- a/block/genhd.c
+++ b/block/genhd.c
-@@ -383,16 +383,18 @@ int disk_scan_partitions(struct gendisk
+@@ -405,16 +405,18 @@ static void add_disk_final(struct gendis
}
/**
{
struct device *ddev = disk_to_dev(disk);
-@@ -452,6 +454,8 @@ int __must_check device_add_disk(struct
+@@ -474,6 +476,8 @@ int __must_check device_add_disk(struct
ddev->parent = parent;
ddev->groups = groups;
dev_set_name(ddev, "%s", disk->disk_name);
if (!(disk->flags & GENHD_FL_HIDDEN))
ddev->devt = MKDEV(disk->major, disk->first_minor);
ret = device_add(ddev);
-@@ -553,6 +557,22 @@ out_exit_elevator:
+@@ -557,6 +561,22 @@ out_exit_elevator:
elevator_exit(disk->queue);
return ret;
}
void xpcs_get_interfaces(struct dw_xpcs *xpcs, unsigned long *interfaces)
{
int i, j;
-@@ -1365,6 +1392,7 @@ static const struct dw_xpcs_desc xpcs_de
+@@ -1347,6 +1374,7 @@ static const struct dw_xpcs_desc xpcs_de
static const struct phylink_pcs_ops xpcs_phylink_ops = {
.pcs_validate = xpcs_validate,
+++ /dev/null
-From: Qingfang Deng <dqfext@gmail.com>
-Date: Sat, 1 Mar 2025 21:55:16 +0800
-Subject: [PATCH] ppp: use IFF_NO_QUEUE in virtual interfaces
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-For PPPoE, PPTP, and PPPoL2TP, the start_xmit() function directly
-forwards packets to the underlying network stack and never returns
-anything other than 1. So these interfaces do not require a qdisc,
-and the IFF_NO_QUEUE flag should be set.
-
-Introduces a direct_xmit flag in struct ppp_channel to indicate when
-IFF_NO_QUEUE should be applied. The flag is set in ppp_connect_channel()
-for relevant protocols.
-
-While at it, remove the usused latency member from struct ppp_channel.
-
-Signed-off-by: Qingfang Deng <dqfext@gmail.com>
-Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
-Link: https://patch.msgid.link/20250301135517.695809-1-dqfext@gmail.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
----
-
---- a/drivers/net/ppp/ppp_generic.c
-+++ b/drivers/net/ppp/ppp_generic.c
-@@ -3507,6 +3507,10 @@ ppp_connect_channel(struct channel *pch,
- ret = -ENOTCONN;
- goto outl;
- }
-+ if (pch->chan->direct_xmit)
-+ ppp->dev->priv_flags |= IFF_NO_QUEUE;
-+ else
-+ ppp->dev->priv_flags &= ~IFF_NO_QUEUE;
- spin_unlock_bh(&pch->downl);
- if (pch->file.hdrlen > ppp->file.hdrlen)
- ppp->file.hdrlen = pch->file.hdrlen;
---- a/drivers/net/ppp/pppoe.c
-+++ b/drivers/net/ppp/pppoe.c
-@@ -699,6 +699,7 @@ static int pppoe_connect(struct socket *
- po->chan.mtu = dev->mtu - sizeof(struct pppoe_hdr) - 2;
- po->chan.private = sk;
- po->chan.ops = &pppoe_chan_ops;
-+ po->chan.direct_xmit = true;
-
- error = ppp_register_net_channel(dev_net(dev), &po->chan);
- if (error) {
---- a/drivers/net/ppp/pptp.c
-+++ b/drivers/net/ppp/pptp.c
-@@ -469,6 +469,7 @@ static int pptp_connect(struct socket *s
- po->chan.mtu -= PPTP_HEADER_OVERHEAD;
-
- po->chan.hdrlen = 2 + sizeof(struct pptp_gre_header);
-+ po->chan.direct_xmit = true;
- error = ppp_register_channel(&po->chan);
- if (error) {
- pr_err("PPTP: failed to register PPP channel (%d)\n", error);
---- a/include/linux/ppp_channel.h
-+++ b/include/linux/ppp_channel.h
-@@ -42,8 +42,7 @@ struct ppp_channel {
- int hdrlen; /* amount of headroom channel needs */
- void *ppp; /* opaque to channel */
- int speed; /* transfer rate (bytes/second) */
-- /* the following is not used at present */
-- int latency; /* overhead time in milliseconds */
-+ bool direct_xmit; /* no qdisc, xmit directly */
- };
-
- #ifdef __KERNEL__
---- a/net/l2tp/l2tp_ppp.c
-+++ b/net/l2tp/l2tp_ppp.c
-@@ -796,6 +796,7 @@ static int pppol2tp_connect(struct socke
- po->chan.private = sk;
- po->chan.ops = &pppol2tp_chan_ops;
- po->chan.mtu = pppol2tp_tunnel_mtu(tunnel);
-+ po->chan.direct_xmit = true;
-
- error = ppp_register_net_channel(sock_net(sk), &po->chan);
- if (error) {
+++ /dev/null
-From 1a3e9b7a6b09e8ab3d2af019e4a392622685855e Mon Sep 17 00:00:00 2001
-From: Qingfang Deng <dqfext@gmail.com>
-Date: Tue, 10 Jun 2025 16:32:10 +0800
-Subject: [PATCH] ppp: convert to percpu netstats
-
-Convert to percpu netstats to avoid lock contention when reading them.
-
-Signed-off-by: Qingfang Deng <dqfext@gmail.com>
-Link: https://patch.msgid.link/20250610083211.909015-1-dqfext@gmail.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
----
- drivers/net/ppp/ppp_generic.c | 52 +++++++++++++----------------------
- 1 file changed, 19 insertions(+), 33 deletions(-)
-
---- a/drivers/net/ppp/ppp_generic.c
-+++ b/drivers/net/ppp/ppp_generic.c
-@@ -108,18 +108,6 @@ struct ppp_file {
- #define PF_TO_CHANNEL(pf) PF_TO_X(pf, struct channel)
-
- /*
-- * Data structure to hold primary network stats for which
-- * we want to use 64 bit storage. Other network stats
-- * are stored in dev->stats of the ppp strucute.
-- */
--struct ppp_link_stats {
-- u64 rx_packets;
-- u64 tx_packets;
-- u64 rx_bytes;
-- u64 tx_bytes;
--};
--
--/*
- * Data structure describing one ppp unit.
- * A ppp unit corresponds to a ppp network interface device
- * and represents a multilink bundle.
-@@ -162,7 +150,6 @@ struct ppp {
- struct bpf_prog *active_filter; /* filter for pkts to reset idle */
- #endif /* CONFIG_PPP_FILTER */
- struct net *ppp_net; /* the net we belong to */
-- struct ppp_link_stats stats64; /* 64 bit network stats */
- };
-
- /*
-@@ -1544,23 +1531,12 @@ ppp_net_siocdevprivate(struct net_device
- static void
- ppp_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats64)
- {
-- struct ppp *ppp = netdev_priv(dev);
--
-- ppp_recv_lock(ppp);
-- stats64->rx_packets = ppp->stats64.rx_packets;
-- stats64->rx_bytes = ppp->stats64.rx_bytes;
-- ppp_recv_unlock(ppp);
--
-- ppp_xmit_lock(ppp);
-- stats64->tx_packets = ppp->stats64.tx_packets;
-- stats64->tx_bytes = ppp->stats64.tx_bytes;
-- ppp_xmit_unlock(ppp);
--
- stats64->rx_errors = dev->stats.rx_errors;
- stats64->tx_errors = dev->stats.tx_errors;
- stats64->rx_dropped = dev->stats.rx_dropped;
- stats64->tx_dropped = dev->stats.tx_dropped;
- stats64->rx_length_errors = dev->stats.rx_length_errors;
-+ dev_fetch_sw_netstats(stats64, dev->tstats);
- }
-
- static int ppp_dev_init(struct net_device *dev)
-@@ -1658,6 +1634,7 @@ static void ppp_setup(struct net_device
- dev->type = ARPHRD_PPP;
- dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
- dev->priv_destructor = ppp_dev_priv_destructor;
-+ dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
- netif_keep_dst(dev);
- }
-
-@@ -1803,8 +1780,7 @@ ppp_send_frame(struct ppp *ppp, struct s
- #endif /* CONFIG_PPP_FILTER */
- }
-
-- ++ppp->stats64.tx_packets;
-- ppp->stats64.tx_bytes += skb->len - PPP_PROTO_LEN;
-+ dev_sw_netstats_tx_add(ppp->dev, 1, skb->len - PPP_PROTO_LEN);
-
- switch (proto) {
- case PPP_IP:
-@@ -2482,8 +2458,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp,
- break;
- }
-
-- ++ppp->stats64.rx_packets;
-- ppp->stats64.rx_bytes += skb->len - 2;
-+ dev_sw_netstats_rx_add(ppp->dev, skb->len - PPP_PROTO_LEN);
-
- npi = proto_to_npindex(proto);
- if (npi < 0) {
-@@ -3311,14 +3286,25 @@ static void
- ppp_get_stats(struct ppp *ppp, struct ppp_stats *st)
- {
- struct slcompress *vj = ppp->vj;
-+ int cpu;
-
- memset(st, 0, sizeof(*st));
-- st->p.ppp_ipackets = ppp->stats64.rx_packets;
-+ for_each_possible_cpu(cpu) {
-+ struct pcpu_sw_netstats *p = per_cpu_ptr(ppp->dev->tstats, cpu);
-+ u64 rx_packets, rx_bytes, tx_packets, tx_bytes;
-+
-+ rx_packets = u64_stats_read(&p->rx_packets);
-+ rx_bytes = u64_stats_read(&p->rx_bytes);
-+ tx_packets = u64_stats_read(&p->tx_packets);
-+ tx_bytes = u64_stats_read(&p->tx_bytes);
-+
-+ st->p.ppp_ipackets += rx_packets;
-+ st->p.ppp_ibytes += rx_bytes;
-+ st->p.ppp_opackets += tx_packets;
-+ st->p.ppp_obytes += tx_bytes;
-+ }
- st->p.ppp_ierrors = ppp->dev->stats.rx_errors;
-- st->p.ppp_ibytes = ppp->stats64.rx_bytes;
-- st->p.ppp_opackets = ppp->stats64.tx_packets;
- st->p.ppp_oerrors = ppp->dev->stats.tx_errors;
-- st->p.ppp_obytes = ppp->stats64.tx_bytes;
- if (!vj)
- return;
- st->vj.vjs_packets = vj->sls_o_compressed + vj->sls_o_uncompressed;
- rwlock_t upl; /* protects `ppp' and 'bridge' */
+ spinlock_t upl; /* protects `ppp' and 'bridge' */
struct channel __rcu *bridge; /* "bridged" ppp channel */
+ struct rcu_head rcu; /* for RCU-deferred free of the channel */
#ifdef CONFIG_PPP_MULTILINK
- u8 avail; /* flag used in multilink stuff */
-@@ -639,34 +639,34 @@ static struct bpf_prog *compat_ppp_get_f
+@@ -640,34 +640,34 @@ static struct bpf_prog *compat_ppp_get_f
*/
static int ppp_bridge_channels(struct channel *pch, struct channel *pchb)
{
synchronize_rcu();
if (pchb)
-@@ -680,25 +680,25 @@ static int ppp_unbridge_channels(struct
+@@ -681,25 +681,25 @@ static int ppp_unbridge_channels(struct
{
struct channel *pchb, *pchbb;
synchronize_rcu();
-@@ -2147,10 +2147,9 @@ static int ppp_mp_explode(struct ppp *pp
+@@ -2172,10 +2172,9 @@ static int ppp_mp_explode(struct ppp *pp
#endif /* CONFIG_PPP_MULTILINK */
/* Try to send data out on a channel */
spin_lock(&pch->downl);
if (pch->chan) {
-@@ -2169,7 +2168,6 @@ static void __ppp_channel_push(struct ch
+@@ -2194,7 +2193,6 @@ static void __ppp_channel_push(struct ch
spin_unlock(&pch->downl);
/* see if there is anything from the attached unit to be sent */
if (skb_queue_empty(&pch->file.xq)) {
if (ppp)
__ppp_xmit_process(ppp, NULL);
}
-@@ -2177,15 +2175,18 @@ static void __ppp_channel_push(struct ch
+@@ -2202,15 +2200,18 @@ static void __ppp_channel_push(struct ch
static void ppp_channel_push(struct channel *pch)
{
}
/*
-@@ -2287,6 +2288,7 @@ void
+@@ -2312,6 +2313,7 @@ void
ppp_input(struct ppp_channel *chan, struct sk_buff *skb)
{
struct channel *pch = chan->ppp;
int proto;
if (!pch) {
-@@ -2298,18 +2300,19 @@ ppp_input(struct ppp_channel *chan, stru
+@@ -2323,18 +2325,19 @@ ppp_input(struct ppp_channel *chan, stru
if (ppp_channel_bridge_input(pch, skb))
return;
/* put it on the channel queue */
skb_queue_tail(&pch->file.rq, skb);
/* drop old frames if queue too long */
-@@ -2318,11 +2321,11 @@ ppp_input(struct ppp_channel *chan, stru
+@@ -2343,11 +2346,11 @@ ppp_input(struct ppp_channel *chan, stru
kfree_skb(skb);
wake_up_interruptible(&pch->file.rwait);
} else {
}
/* Put a 0-length skb in the receive queue as an error indication */
-@@ -2331,20 +2334,22 @@ ppp_input_error(struct ppp_channel *chan
+@@ -2356,20 +2359,22 @@ ppp_input_error(struct ppp_channel *chan
{
struct channel *pch = chan->ppp;
struct sk_buff *skb;
}
/*
-@@ -2892,7 +2897,6 @@ int ppp_register_net_channel(struct net
+@@ -2917,7 +2922,6 @@ int ppp_register_net_channel(struct net
pn = ppp_pernet(net);
pch->chan = chan;
pch->chan_net = get_net_track(net, &pch->ns_tracker, GFP_KERNEL);
chan->ppp = pch;
-@@ -2903,7 +2907,7 @@ int ppp_register_net_channel(struct net
+@@ -2928,7 +2932,7 @@ int ppp_register_net_channel(struct net
#endif /* CONFIG_PPP_MULTILINK */
init_rwsem(&pch->chan_sem);
spin_lock_init(&pch->downl);
spin_lock_bh(&pn->all_channels_lock);
pch->file.index = ++pn->last_channel_index;
-@@ -2932,13 +2936,15 @@ int ppp_channel_index(struct ppp_channel
+@@ -2957,13 +2961,15 @@ int ppp_channel_index(struct ppp_channel
int ppp_unit_number(struct ppp_channel *chan)
{
struct channel *pch = chan->ppp;
}
return unit;
}
-@@ -2950,12 +2956,14 @@ char *ppp_dev_name(struct ppp_channel *c
+@@ -2975,12 +2981,14 @@ char *ppp_dev_name(struct ppp_channel *c
{
struct channel *pch = chan->ppp;
char *name = NULL;
}
return name;
}
-@@ -3478,9 +3486,9 @@ ppp_connect_channel(struct channel *pch,
+@@ -3505,9 +3513,9 @@ ppp_connect_channel(struct channel *pch,
ppp = ppp_find_unit(pn, unit);
if (!ppp)
goto out;
rcu_dereference_protected(pch->bridge, lockdep_is_held(&pch->upl)))
goto outl;
-@@ -3505,13 +3513,13 @@ ppp_connect_channel(struct channel *pch,
+@@ -3532,13 +3540,13 @@ ppp_connect_channel(struct channel *pch,
ppp->dev->hard_header_len = hdrlen;
list_add_tail_rcu(&pch->clist, &ppp->channels);
++ppp->n_channels;
out:
mutex_unlock(&pn->all_ppp_mutex);
return ret;
-@@ -3526,10 +3534,9 @@ ppp_disconnect_channel(struct channel *p
+@@ -3553,10 +3561,9 @@ ppp_disconnect_channel(struct channel *p
struct ppp *ppp;
int err = -EINVAL;
if (error < 0)
goto err_put;
-@@ -1058,11 +1070,11 @@ static inline struct pppox_sock *pppoe_g
+@@ -1059,11 +1071,11 @@ static inline struct pppox_sock *pppoe_g
int i;
for (i = 0; i < PPPOE_HASH_SIZE; i++) {
}
}
-@@ -1071,19 +1083,19 @@ out:
+@@ -1072,19 +1084,19 @@ out:
}
static void *pppoe_seq_start(struct seq_file *seq, loff_t *pos)
++*pos;
if (v == SEQ_START_TOKEN) {
-@@ -1091,14 +1103,15 @@ static void *pppoe_seq_next(struct seq_f
+@@ -1092,14 +1104,15 @@ static void *pppoe_seq_next(struct seq_f
goto out;
}
po = v;
if (po)
break;
}
-@@ -1109,10 +1122,9 @@ out:
+@@ -1110,10 +1123,9 @@ out:
}
static void pppoe_seq_stop(struct seq_file *seq, void *v)
}
static const struct seq_operations pppoe_seq_ops = {
-@@ -1155,7 +1167,7 @@ static __net_init int pppoe_init_net(str
+@@ -1156,7 +1168,7 @@ static __net_init int pppoe_init_net(str
struct pppoe_net *pn = pppoe_pernet(net);
struct proc_dir_entry *pde;
+++ /dev/null
-From 42fcb213e58a7da33d5d2d7517b4e521025c68c3 Mon Sep 17 00:00:00 2001
-From: Qingfang Deng <dqfext@gmail.com>
-Date: Thu, 29 Jan 2026 09:29:02 +0800
-Subject: [PATCH] ppp: enable TX scatter-gather
-
-PPP channels using chan->direct_xmit prepend the PPP header to a skb and
-call dev_queue_xmit() directly. In this mode the skb does not need to be
-linear, but the PPP netdevice currently does not advertise
-scatter-gather features, causing unnecessary linearization and
-preventing GSO.
-
-Enable NETIF_F_SG and NETIF_F_FRAGLIST on PPP devices. In case a linear
-buffer is required (PPP compression, multilink, and channels without
-direct_xmit), call skb_linearize() explicitly.
-
-Signed-off-by: Qingfang Deng <dqfext@gmail.com>
-Link: https://patch.msgid.link/20260129012902.941-1-dqfext@gmail.com
-Signed-off-by: Paolo Abeni <pabeni@redhat.com>
----
- drivers/net/ppp/ppp_generic.c | 30 +++++++++++++++++++++++++-----
- 1 file changed, 25 insertions(+), 5 deletions(-)
-
---- a/drivers/net/ppp/ppp_generic.c
-+++ b/drivers/net/ppp/ppp_generic.c
-@@ -1635,6 +1635,8 @@ static void ppp_setup(struct net_device
- dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
- dev->priv_destructor = ppp_dev_priv_destructor;
- dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
-+ dev->features = NETIF_F_SG | NETIF_F_FRAGLIST;
-+ dev->hw_features = dev->features;
- netif_keep_dst(dev);
- }
-
-@@ -1699,6 +1701,10 @@ pad_compress_skb(struct ppp *ppp, struct
- ppp->xcomp->comp_extra + ppp->dev->hard_header_len;
- int compressor_skb_size = ppp->dev->mtu +
- ppp->xcomp->comp_extra + PPP_HDRLEN;
-+
-+ if (skb_linearize(skb))
-+ return NULL;
-+
- new_skb = alloc_skb(new_skb_size, GFP_ATOMIC);
- if (!new_skb) {
- if (net_ratelimit())
-@@ -1786,6 +1792,10 @@ ppp_send_frame(struct ppp *ppp, struct s
- case PPP_IP:
- if (!ppp->vj || (ppp->flags & SC_COMP_TCP) == 0)
- break;
-+
-+ if (skb_linearize(skb))
-+ goto drop;
-+
- /* try to do VJ TCP header compression */
- new_skb = alloc_skb(skb->len + ppp->dev->hard_header_len - 2,
- GFP_ATOMIC);
-@@ -1883,19 +1893,26 @@ ppp_push(struct ppp *ppp)
- }
-
- if ((ppp->flags & SC_MULTILINK) == 0) {
-+ struct ppp_channel *chan;
- /* not doing multilink: send it down the first channel */
- list = list->next;
- pch = list_entry(list, struct channel, clist);
-
- spin_lock(&pch->downl);
-- if (pch->chan) {
-- if (pch->chan->ops->start_xmit(pch->chan, skb))
-- ppp->xmit_pending = NULL;
-- } else {
-- /* channel got unregistered */
-+ chan = pch->chan;
-+ if (unlikely(!chan || (!chan->direct_xmit && skb_linearize(skb)))) {
-+ /* channel got unregistered, or it requires a linear
-+ * skb but linearization failed
-+ */
- kfree_skb(skb);
- ppp->xmit_pending = NULL;
-+ goto out;
- }
-+
-+ if (chan->ops->start_xmit(chan, skb))
-+ ppp->xmit_pending = NULL;
-+
-+out:
- spin_unlock(&pch->downl);
- return;
- }
-@@ -1980,6 +1997,8 @@ static int ppp_mp_explode(struct ppp *pp
- return 0; /* can't take now, leave it in xmit_pending */
-
- /* Do protocol field compression */
-+ if (skb_linearize(skb))
-+ goto err_linearize;
- p = skb->data;
- len = skb->len;
- if (*p == 0 && mp_protocol_compress) {
-@@ -2138,6 +2157,7 @@ static int ppp_mp_explode(struct ppp *pp
-
- noskb:
- spin_unlock(&pch->downl);
-+ err_linearize:
- if (ppp->debug & 1)
- netdev_err(ppp->dev, "PPP: no memory (fragment)\n");
- ++ppp->dev->stats.tx_errors;
goto drop;
ph = pppoe_hdr(skb);
-@@ -1182,6 +1183,160 @@ static struct pernet_operations pppoe_ne
+@@ -1183,6 +1184,160 @@ static struct pernet_operations pppoe_ne
.size = sizeof(struct pppoe_net),
};
static int __init pppoe_init(void)
{
int err;
-@@ -1198,6 +1353,8 @@ static int __init pppoe_init(void)
+@@ -1199,6 +1354,8 @@ static int __init pppoe_init(void)
if (err)
goto out_unregister_pppoe_proto;
dev_add_pack(&pppoes_ptype);
dev_add_pack(&pppoed_ptype);
register_netdevice_notifier(&pppoe_notifier);
-@@ -1217,6 +1374,8 @@ static void __exit pppoe_exit(void)
+@@ -1218,6 +1375,8 @@ static void __exit pppoe_exit(void)
unregister_netdevice_notifier(&pppoe_notifier);
dev_remove_pack(&pppoed_ptype);
dev_remove_pack(&pppoes_ptype);
# CONFIG_DRM_ITE_IT6505 is not set
# CONFIG_DRM_ITE_IT66121 is not set
# CONFIG_DRM_KOMEDA is not set
-# CONFIG_DRM_LIB_RANDOM is not set
# CONFIG_DRM_LIMA is not set
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
# CONFIG_DRM_LOGICVC is not set
# CONFIG_GPIO_XILINX is not set
# CONFIG_GPIO_XRA1403 is not set
# CONFIG_GPIO_ZEVIO is not set
+# CONFIG_GPU_BUDDY is not set
# CONFIG_GP_PCI1XXXX is not set
# CONFIG_GREENASIA_FF is not set
# CONFIG_GREYBUS is not set
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -2067,7 +2067,7 @@ config PADATA
+@@ -2070,7 +2070,7 @@ config PADATA
bool
config ASN1
#include "mtdcore.h"
-@@ -1109,6 +1110,8 @@ int mtd_device_parse_register(struct mtd
+@@ -1124,6 +1125,8 @@ int mtd_device_parse_register(struct mtd
register_reboot_notifier(&mtd->reboot_notifier);
}
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
-@@ -780,7 +780,8 @@ int add_mtd_device(struct mtd_info *mtd)
+@@ -787,7 +787,8 @@ int add_mtd_device(struct mtd_info *mtd)
mutex_unlock(&mtd_table_mutex);
-LINUX_VERSION-6.12 = .100
-LINUX_KERNEL_HASH-6.12.100 = 67f973533406492e86774bacbcefae50d50d5c34cbf703c47ec526a5efdcee90
+LINUX_VERSION-6.12 = .102
+LINUX_KERNEL_HASH-6.12.102 = 694bb5f49371323ab9c2b7040bd358ed81bffbe80b372d76507045828f655803
--- a/Makefile
+++ b/Makefile
-@@ -594,7 +594,7 @@ export RUSTC_BOOTSTRAP := 1
+@@ -599,7 +599,7 @@ export RUSTC_BOOTSTRAP := 1
# Allows finding `.clippy.toml` in out-of-srctree builds.
export CLIPPY_CONF_DIR := $(srctree)
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1537,6 +1537,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
+@@ -1540,6 +1540,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
the unaligned access emulation.
see arch/parisc/kernel/unaligned.c for reference
+++ /dev/null
-From mboxrd@z Thu Jan 1 00:00:00 1970
-Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171])
- (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 E21C8288505
- for <linux-kernel@vger.kernel.org>; Thu, 4 Jun 2026 04:33:28 +0000 (UTC)
-Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171
-ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
- t=1780547610; cv=none; b=etyZo0OyhUqjP7uilzMxrxpciaSPMfy/bjTlRJHKQAVZI7wfiKIcSseI0qLKxs+ZZVXjSBVb9XkRx6wv1J1tIhnX1B05x7wsAalhdNQ2U3MXPMry/UQyOqdm4dZCOXmgH7QyBgOj6R2Wut8H6BOXXL1xNBaepv3/mcpBY70BCHA=
-ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
- s=arc-20240116; t=1780547610; c=relaxed/simple;
- bh=znsYbCd3J/zBJf011rGd2IwHfSBduyyknRNq8tHCn3o=;
- h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=LL42+GGikVgj/uqwqIGA6MOyAJ2UH8mIKVUrBuOZeDUP0W7r1OSGkX3MVBDGP4RdtMa1POOtKgZKq3HmV4cukhDmptrDr4/apZewmR6iiuVkE/5npQPI3uvRDToL7+1tLQiEInfsIhepbOeJhKJVN9ooBQc0vsM0BqfLIKuVAUE=
-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=IpyqsAnz; arc=none smtp.client-ip=209.85.214.171
-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="IpyqsAnz"
-Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2bf1f074a12so3135465ad.0
- for <linux-kernel@vger.kernel.org>; Wed, 03 Jun 2026 21:33:28 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=gmail.com; s=20251104; t=1780547608; x=1781152408; 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=nzzlPlmRDjR3Sm37Uj3XzYfzUGKs2aHK4Uo/5tRTKUQ=;
- b=IpyqsAnzHBguWHykAHZ7XZ3pFVlC8Y28/fNGSwfIgWy6Hn0B9MSoyPYTISj79X2wBX
- MNpWmG8arCfnNC/Un+B1pm/MYhwACbdblNMWEiBHx39rbz1VTTV1g2zCX1pCl9MavgT5
- hReYo62WmMHykCgwFieZcZ/M7+8+o2RvKACVDZc8Me+vF6Gb8u/pfz+8TpQ6r4ReU0i4
- oOwa+EyyFxO6zklNtjSJjf8SQz0NIFJG296oAalZzp33yIvB/4JFURNhizKwvkL48d31
- +M97V3QevBz2Fr4xs9npsNH2hhdWe+YyT34oEwlbtHqGpMyHqUbGXj8AXxFfKBgqxYAE
- 9uxQ==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=1e100.net; s=20251104; t=1780547608; x=1781152408;
- 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=nzzlPlmRDjR3Sm37Uj3XzYfzUGKs2aHK4Uo/5tRTKUQ=;
- b=aYJeS8qfh/ocavnM0jpvlOpXjFo5GLLUgPkTCz1EqmZsHXRfeicLk1ZTho/CQs+zzB
- c325qbG7oXLiPQ3dkZovafQDOMkAmALoEga/2xlfS1V9GLaLAdPP8kFvllumvAvPyMyg
- o96U7iGqvBTCaRtUM2iwGIpDERtzzFrZR6Ce7y953zWEqabcC4+R8sGLodpGu4k+GmxK
- 1S+jLF0vMBR27+5ZDaDl0oevhjBb2z0um04waB/wMdyCBE2fIqi2PdQqIVSR3SfRA6jQ
- BTJQfJE3COEnHv3CFxB96oNuvI7DjRB06k3RI4ZLPMPtikPhTjXD/oRL9vRT1BYvx+9Q
- 5T1Q==
-X-Forwarded-Encrypted: i=1; AFNElJ9RQSSGteY/jh+TH8qQkMTRr2RrY74VLc0V8PJaR74DrpGzoCyYbVqjZCIMow6+zw2kzQwUxO/sijCpZ4Y=@vger.kernel.org
-X-Gm-Message-State: AOJu0YwqtfHGNvtfQFSYlveHZ/f53XAwpOc2PXM0Fs/UwOmBIE0a8qel
- SqMJ/WAyhlkR3QHUSRskvVfM+Shorkq5SE/o5/MZqQJqsYPIepLu19B7
-X-Gm-Gg: Acq92OEnoGF4ajpv1R0u26KX429aPMVUmLN/uIRHCUpeWQZ1YB3icXJkScnkgZCTJQd
- 7yvQwTGjtk847ZsX64fH/pYvpTbdQTPpoh8H0WbsR41zh6wcFBbOJATd+qwuRPmetPoTXZeTTY6
- uyQhj75BwMCj3pp8/i7Cr2xDqih2EtoXXbS2AnOWUxORbhJ2ML04COV3pNvuSND4g/qRTleU6ib
- zKWK6glAzpTp+eIEE3cZzuJV6fjy2rhxX9MR2z4mHe8BkI6kYDioGv4CnCFmXpZ80MbjKOlN7k/
- baOAAuFTy2uoYvtkhmt0kgAkd+gsh12vtrtGmNHCPaGeNIHn6qtUZVcmMpIUmTZ4F9RnSPv4CKw
- NhL5m20J1urrYbQ2FAZf+Nur0izzWfTyKO78IvYkfK3m70cm6rL5i0lsjbQZ3tAK7FjfVqxYrsU
- qzXoiA1z9Unam6tvdvJUtcPNNuy6d6uaBaY5krITunAVJ6hF/ym0XuOoSzF4UXRXcYTO09vgfTp
- L0dwz3a1Fk8yIVWfFTVsQnDvsI9c6QZjP298LPpomNUl8ZcmxOaF2iJ
-X-Received: by 2002:a17:903:1786:b0:2c0:c38d:9d37 with SMTP id d9443c01a7336-2c163d92f23mr64816865ad.25.1780547608050;
- Wed, 03 Jun 2026 21:33:28 -0700 (PDT)
-Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32])
- by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c85df0a63b3sm3503663a12.21.2026.06.03.21.33.26
- (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
- Wed, 03 Jun 2026 21:33:27 -0700 (PDT)
-From: Rosen Penev <rosenp@gmail.com>
-To: linuxppc-dev@lists.ozlabs.org
-Cc: Scott Wood <oss@buserror.net>,
- Madhavan Srinivasan <maddy@linux.ibm.com>,
- Michael Ellerman <mpe@ellerman.id.au>,
- Nicholas Piggin <npiggin@gmail.com>,
- "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
- Frank Li <Frank.Li@nxp.com>,
- Li Yang <leoyang.li@nxp.com>,
- linux-kernel@vger.kernel.org (open list)
-Subject: [PATCH] powerpc/85xx: Add fsl,ifc to common device ids
-Date: Wed, 3 Jun 2026 21:33:09 -0700
-Message-ID: <20260604043309.91280-1-rosenp@gmail.com>
-X-Mailer: git-send-email 2.54.0
-Precedence: bulk
-X-Mailing-List: linux-kernel@vger.kernel.org
-List-Id: <linux-kernel.vger.kernel.org>
-List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
-List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
-MIME-Version: 1.0
-Content-Transfer-Encoding: 8bit
-
-Add fsl,ifc to mpc85xx_common_ids so that of_platform_bus_probe
-creates a platform device for the IFC node even without 'simple-bus'
-in its compatible property. On P1010 and similar platforms the IFC
-node is a direct child of the root, so it must be explicitly matched
-to be populated.
-
-Fixes: 0bf51cc9e9e5 ("powerpc: dts: mpc85xx: remove simple-bus compatible from ifc node")
-
-Assisted-by: opencode:big-pickle
-Signed-off-by: Rosen Penev <rosenp@gmail.com>
----
- arch/powerpc/platforms/85xx/common.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/arch/powerpc/platforms/85xx/common.c
-+++ b/arch/powerpc/platforms/85xx/common.c
-@@ -42,6 +42,8 @@ static const struct of_device_id mpc85xx
- { .compatible = "fsl,qoriq-pcie-v2.3", },
- { .compatible = "fsl,qoriq-pcie-v2.2", },
- { .compatible = "fsl,fman", },
-+ /* IFC NAND and NOR controllers */
-+ { .compatible = "fsl,ifc", },
- {},
- };
-
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
-@@ -199,6 +199,15 @@ static ssize_t mtd_erasesize_show(struct
+@@ -208,6 +208,15 @@ static ssize_t mtd_erasesize_show(struct
}
MTD_DEVICE_ATTR_RO(erasesize);
static ssize_t mtd_writesize_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
-@@ -344,6 +353,7 @@ static struct attribute *mtd_attrs[] = {
+@@ -353,6 +362,7 @@ static struct attribute *mtd_attrs[] = {
&dev_attr_flags.attr,
&dev_attr_size.attr,
&dev_attr_erasesize.attr,
}
static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -2088,6 +2307,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2091,6 +2310,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2117,6 +2342,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2120,6 +2345,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(0) +
/* IFLA_IPTUN_FWMARK */
nla_total_size(4) +
0;
}
-@@ -2124,6 +2367,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2127,6 +2370,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2133,9 +2379,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2136,9 +2382,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2175,6 +2439,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2178,6 +2442,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
}
--- a/net/netfilter/nft_flow_offload.c
+++ b/net/netfilter/nft_flow_offload.c
-@@ -494,47 +494,14 @@ static struct nft_expr_type nft_flow_off
+@@ -493,47 +493,14 @@ static struct nft_expr_type nft_flow_off
.owner = THIS_MODULE,
};
--- 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
+@@ -8508,7 +8508,7 @@ static int nft_register_flowtable_net_ho
err = flowtable->data.type->setup(&flowtable->data,
hook->ops.dev,
FLOW_BLOCK_BIND);
--- a/drivers/net/ethernet/mediatek/Kconfig
+++ b/drivers/net/ethernet/mediatek/Kconfig
-@@ -26,7 +26,6 @@ config NET_MEDIATEK_SOC
+@@ -18,7 +18,6 @@ config NET_MEDIATEK_SOC
select PHYLINK
select DIMLIB
select PAGE_POOL
/**
* ata_build_rw_tf - Build ATA taskfile for given read/write request
* @qc: Metadata associated with the taskfile to build
-@@ -4827,6 +4838,9 @@ void __ata_qc_complete(struct ata_queued
+@@ -4845,6 +4856,9 @@ void __ata_qc_complete(struct ata_queued
link->active_tag = ATA_TAG_POISON;
ap->nr_active_links--;
}
/* clear exclusive status */
if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL &&
-@@ -5556,6 +5570,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5574,6 +5588,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1;
#endif
ata_sff_port_init(ap);
ata_force_pflags(ap);
-@@ -5572,6 +5589,12 @@ void ata_port_free(struct ata_port *ap)
+@@ -5590,6 +5607,12 @@ void ata_port_free(struct ata_port *ap)
kfree(ap->pmp_link);
kfree(ap->slave_link);
ida_free(&ata_ida, ap->print_id);
kfree(ap);
}
EXPORT_SYMBOL_GPL(ata_port_free);
-@@ -5976,7 +5999,23 @@ int ata_host_register(struct ata_host *h
+@@ -5994,7 +6017,23 @@ int ata_host_register(struct ata_host *h
WARN_ON(1);
return -EINVAL;
}
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1891,6 +1891,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS
+@@ -1894,6 +1894,15 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS
config ARCH_HAS_MEMBARRIER_SYNC_CORE
bool
help
--- a/init/main.c
+++ b/init/main.c
-@@ -633,6 +633,29 @@ static inline void setup_nr_cpu_ids(void
+@@ -588,6 +588,29 @@ static inline void setup_nr_cpu_ids(void
static inline void smp_prepare_cpus(unsigned int maxcpus) { }
#endif
/*
* We need to store the untouched command line for future reference.
* We also need to store the touched command line since the parameter
-@@ -938,6 +961,7 @@ void start_kernel(void)
+@@ -893,6 +916,7 @@ void start_kernel(void)
jump_label_init();
static_call_init();
early_security_init();
#include <linux/percpu.h>
#include <linux/kmod.h>
#include <linux/kprobes.h>
-@@ -972,6 +973,17 @@ void start_kernel(void)
+@@ -927,6 +928,17 @@ void start_kernel(void)
pr_notice("Kernel command line: %s\n", saved_command_line);
/* parameters may set static keys */
--- a/drivers/net/ethernet/Kconfig
+++ b/drivers/net/ethernet/Kconfig
-@@ -201,5 +201,6 @@ source "drivers/net/ethernet/wangxun/Kco
+@@ -202,5 +202,6 @@ source "drivers/net/ethernet/wangxun/Kco
source "drivers/net/ethernet/wiznet/Kconfig"
source "drivers/net/ethernet/xilinx/Kconfig"
source "drivers/net/ethernet/xircom/Kconfig"
endif # ETHERNET
--- a/drivers/net/ethernet/Makefile
+++ b/drivers/net/ethernet/Makefile
-@@ -105,4 +105,5 @@ obj-$(CONFIG_NET_VENDOR_XILINX) += xilin
+@@ -106,4 +106,5 @@ obj-$(CONFIG_NET_VENDOR_XILINX) += xilin
obj-$(CONFIG_NET_VENDOR_XIRCOM) += xircom/
obj-$(CONFIG_NET_VENDOR_SYNOPSYS) += synopsys/
obj-$(CONFIG_NET_VENDOR_PENSANDO) += pensando/