Compile and runtime tested on lantiq/xrx200 and x86/64.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-4.14 = .193
+LINUX_VERSION-4.14 = .195
-LINUX_KERNEL_HASH-4.14.193 = 0b0fb41d4430e1a42738b341cbfd2f41951aa5cd02acabbd53f076119c8b9f03
+LINUX_KERNEL_HASH-4.14.195 = 394f28798670240baacd9e2cce521fbd79f8da5e1fc191695b0e11381445a021
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
#include "xhci.h"
#include "xhci-trace.h"
-@@ -272,6 +274,458 @@ static void xhci_pme_acpi_rtd3_enable(st
+@@ -276,6 +278,458 @@ static void xhci_pme_acpi_rtd3_enable(st
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
#endif /* CONFIG_ACPI */
/* called during probe() after chip reset completes */
static int xhci_pci_setup(struct usb_hcd *hcd)
{
-@@ -310,6 +764,22 @@ static int xhci_pci_probe(struct pci_dev
+@@ -314,6 +768,22 @@ static int xhci_pci_probe(struct pci_dev
struct hc_driver *driver;
struct usb_hcd *hcd;
driver = (struct hc_driver *)id->driver_data;
/* For some HW implementation, a XHCI reset is just not enough... */
-@@ -371,6 +841,16 @@ static void xhci_pci_remove(struct pci_d
+@@ -375,6 +845,16 @@ static void xhci_pci_remove(struct pci_d
{
struct xhci_hcd *xhci;
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -222,7 +222,7 @@ static void xhci_pci_quirks(struct devic
+@@ -225,7 +225,7 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_TRUST_TX_LENGTH;
if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
pdev->device == 0x0015)
*sum = csum_fold(csum_partial(diff, sizeof(diff),
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
-@@ -1872,15 +1872,15 @@ static int vxlan_build_skb(struct sk_buf
+@@ -1876,15 +1876,15 @@ static int vxlan_build_skb(struct sk_buf
return err;
vxh = __skb_push(skb, sizeof(*vxh));
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -673,6 +673,7 @@ static const struct of_device_id spidev_
+@@ -678,6 +678,7 @@ static const struct of_device_id spidev_
{ .compatible = "ge,achc" },
{ .compatible = "semtech,sx1301" },
{ .compatible = "siliconlabs,si3210" },
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -7621,8 +7621,6 @@ int alloc_contig_range(unsigned long sta
+@@ -7626,8 +7626,6 @@ int alloc_contig_range(unsigned long sta
/* Make sure the range is really isolated. */
if (test_pages_isolated(outer_start, end, false)) {
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2500,7 +2500,7 @@ static void lan78xx_init_stats(struct la
+@@ -2496,7 +2496,7 @@ static void lan78xx_init_stats(struct la
dev->stats.rollover_max.eee_tx_lpi_transitions = 0xFFFFFFFF;
dev->stats.rollover_max.eee_tx_lpi_time = 0xFFFFFFFF;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2516,6 +2516,22 @@ static int lan78xx_open(struct net_devic
+@@ -2512,6 +2512,22 @@ static int lan78xx_open(struct net_devic
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2000,6 +2000,7 @@ static int lan78xx_phy_init(struct lan78
+@@ -1996,6 +1996,7 @@ static int lan78xx_phy_init(struct lan78
{
int ret;
u32 mii_adv;
struct phy_device *phydev = dev->net->phydev;
phydev = phy_find_first(dev->mdiobus);
-@@ -2072,6 +2073,19 @@ static int lan78xx_phy_init(struct lan78
+@@ -2068,6 +2069,19 @@ static int lan78xx_phy_init(struct lan78
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2000,7 +2000,9 @@ static int lan78xx_phy_init(struct lan78
+@@ -1996,7 +1996,9 @@ static int lan78xx_phy_init(struct lan78
{
int ret;
u32 mii_adv;
struct phy_device *phydev = dev->net->phydev;
phydev = phy_find_first(dev->mdiobus);
-@@ -2073,18 +2075,27 @@ static int lan78xx_phy_init(struct lan78
+@@ -2069,18 +2071,27 @@ static int lan78xx_phy_init(struct lan78
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2196,7 +2196,7 @@ static int lan78xx_change_mtu(struct net
+@@ -2192,7 +2192,7 @@ static int lan78xx_change_mtu(struct net
if ((ll_mtu % dev->maxpacket) == 0)
return -EDOM;
netdev->mtu = new_mtu;
-@@ -2489,7 +2489,8 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2485,7 +2485,8 @@ static int lan78xx_reset(struct lan78xx_
buf |= FCT_TX_CTL_EN_;
ret = lan78xx_write_reg(dev, FCT_TX_CTL, buf);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2075,6 +2075,22 @@ static int lan78xx_phy_init(struct lan78
+@@ -2071,6 +2071,22 @@ static int lan78xx_phy_init(struct lan78
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
/* Set LED modes:
* led: 0=link/activity 1=link1000/activity
* 2=link100/activity 3=link10/activity
-@@ -2542,22 +2558,6 @@ static int lan78xx_open(struct net_devic
+@@ -2538,22 +2554,6 @@ static int lan78xx_open(struct net_devic
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2960,8 +2960,12 @@ static void lan78xx_rx_csum_offload(stru
+@@ -2890,8 +2890,12 @@ static void lan78xx_rx_csum_offload(stru
struct sk_buff *skb,
u32 rx_cmd_a, u32 rx_cmd_b)
{
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2281,7 +2281,7 @@ static int lan78xx_set_features(struct n
+@@ -2277,7 +2277,7 @@ static int lan78xx_set_features(struct n
pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
}
pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
else
pdata->rfe_ctl &= ~RFE_CTL_VLAN_FILTER_;
-@@ -2896,6 +2896,9 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -2826,6 +2826,9 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_TSO_CSUM_ENABLE)
dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
#define TX_OVERHEAD (8)
#define RXW_PADDING 2
-@@ -2281,6 +2282,11 @@ static int lan78xx_set_features(struct n
+@@ -2277,6 +2278,11 @@ static int lan78xx_set_features(struct n
pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
}
if (features & NETIF_F_HW_VLAN_CTAG_FILTER)
pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
else
-@@ -2896,6 +2902,9 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -2826,6 +2832,9 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_TSO_CSUM_ENABLE)
dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
if (DEFAULT_VLAN_FILTER_ENABLE)
dev->net->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
-@@ -2976,6 +2985,16 @@ static void lan78xx_rx_csum_offload(stru
+@@ -2906,6 +2915,16 @@ static void lan78xx_rx_csum_offload(stru
}
}
static void lan78xx_skb_return(struct lan78xx_net *dev, struct sk_buff *skb)
{
int status;
-@@ -3040,6 +3059,8 @@ static int lan78xx_rx(struct lan78xx_net
+@@ -2970,6 +2989,8 @@ static int lan78xx_rx(struct lan78xx_net
if (skb->len == size) {
lan78xx_rx_csum_offload(dev, skb,
rx_cmd_a, rx_cmd_b);
skb_trim(skb, skb->len - 4); /* remove fcs */
skb->truesize = size + sizeof(struct sk_buff);
-@@ -3058,6 +3079,7 @@ static int lan78xx_rx(struct lan78xx_net
+@@ -2988,6 +3009,7 @@ static int lan78xx_rx(struct lan78xx_net
skb_set_tail_pointer(skb2, size);
lan78xx_rx_csum_offload(dev, skb2, rx_cmd_a, rx_cmd_b);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2972,12 +2972,13 @@ static void lan78xx_rx_csum_offload(stru
+@@ -2902,12 +2902,13 @@ static void lan78xx_rx_csum_offload(stru
struct sk_buff *skb,
u32 rx_cmd_a, u32 rx_cmd_b)
{
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -416,6 +416,15 @@ static int msg_level = -1;
+@@ -412,6 +412,15 @@ static int msg_level = -1;
module_param(msg_level, int, 0);
MODULE_PARM_DESC(msg_level, "Override default message level");
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
-@@ -2899,8 +2908,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -2829,8 +2838,14 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_RX_CSUM_ENABLE)
dev->net->features |= NETIF_F_RXCSUM;
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -729,7 +729,9 @@ static void spi_set_cs(struct spi_device
+@@ -741,7 +741,9 @@ static void spi_set_cs(struct spi_device
enable = !enable;
if (gpio_is_valid(spi->cs_gpio)) {
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2591,6 +2591,8 @@ static int lan78xx_open(struct net_devic
+@@ -2587,6 +2587,8 @@ static int lan78xx_open(struct net_devic
dev->link_on = false;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2591,8 +2591,6 @@ static int lan78xx_open(struct net_devic
+@@ -2587,8 +2587,6 @@ static int lan78xx_open(struct net_devic
dev->link_on = false;
#include <linux/of_net.h>
#include "lan78xx.h"
-@@ -1764,6 +1765,7 @@ done:
+@@ -1760,6 +1761,7 @@ done:
static int lan78xx_mdio_init(struct lan78xx_net *dev)
{
int ret;
dev->mdiobus = mdiobus_alloc();
-@@ -1793,7 +1795,9 @@ static int lan78xx_mdio_init(struct lan7
+@@ -1789,7 +1791,9 @@ static int lan78xx_mdio_init(struct lan7
break;
}
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -426,6 +426,11 @@ static bool enable_tso;
+@@ -422,6 +422,11 @@ static bool enable_tso;
module_param(enable_tso, bool, 0644);
MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload");
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
-@@ -3735,7 +3740,12 @@ static int lan78xx_probe(struct usb_inte
- dev->pipe_intr = usb_rcvintpipe(dev->udev,
- dev->ep_intr->desc.bEndpointAddress &
- USB_ENDPOINT_NUMBER_MASK);
-- period = dev->ep_intr->desc.bInterval;
+@@ -3679,7 +3684,12 @@ static int lan78xx_probe(struct usb_inte
+ netdev->max_mtu = MAX_SINGLE_PACKET_SIZE;
+ netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER);
+
+- period = ep_intr->desc.bInterval;
+ if (int_urb_interval_ms <= 0)
-+ period = dev->ep_intr->desc.bInterval;
++ period = ep_intr->desc.bInterval;
+ else
+ period = int_urb_interval_ms * INT_URB_MICROFRAMES_PER_MS;
+
+ netif_notice(dev, probe, netdev, "int urb period %d\n", period);
-
maxp = usb_maxpacket(dev->udev, dev->pipe_intr, 0);
buf = kmalloc(maxp, GFP_KERNEL);
+ if (buf) {
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2464,6 +2464,15 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2460,6 +2460,15 @@ static int lan78xx_reset(struct lan78xx_
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
buf |= HW_CFG_MEF_;
/**
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -1029,6 +1029,9 @@ static int spi_transfer_one_message(stru
+@@ -1041,6 +1041,9 @@ static int spi_transfer_one_message(stru
list_for_each_entry(xfer, &msg->transfers, transfer_list) {
trace_spi_transfer_start(msg, xfer);
rwlock_t sk_callback_lock;
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -2750,6 +2750,7 @@ void sock_init_data(struct socket *sock,
+@@ -2771,6 +2771,7 @@ void sock_init_data(struct socket *sock,
sk->sk_max_pacing_rate = ~0U;
sk->sk_pacing_rate = ~0U;
--- a/tools/build/Build.include
+++ b/tools/build/Build.include
-@@ -98,4 +98,4 @@ cxx_flags = -Wp,-MD,$(depfile) -Wp,-MT,$
+@@ -99,4 +99,4 @@ cxx_flags = -Wp,-MD,$(depfile) -Wp,-MT,$
###
## HOSTCC C flags
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -3389,6 +3389,8 @@ static __net_initdata struct pernet_oper
+@@ -3410,6 +3410,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -6146,7 +6146,7 @@ static void __ref alloc_node_mem_map(str
+@@ -6151,7 +6151,7 @@ static void __ref alloc_node_mem_map(str
mem_map = NODE_DATA(0)->node_mem_map;
#if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -672,6 +672,7 @@ static const struct of_device_id spidev_
+@@ -677,6 +677,7 @@ static const struct of_device_id spidev_
{ .compatible = "lineartechnology,ltc2488" },
{ .compatible = "ge,achc" },
{ .compatible = "semtech,sx1301" },
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -729,7 +729,7 @@ static void spi_set_cs(struct spi_device
+@@ -741,7 +741,7 @@ static void spi_set_cs(struct spi_device
enable = !enable;
if (gpio_is_valid(spi->cs_gpio)) {
--- a/fs/jffs2/dir.c
+++ b/fs/jffs2/dir.c
-@@ -752,6 +752,24 @@ static int jffs2_mknod (struct inode *di
+@@ -756,6 +756,24 @@ static int jffs2_mknod (struct inode *di
return ret;
}
static int jffs2_rename (struct inode *old_dir_i, struct dentry *old_dentry,
struct inode *new_dir_i, struct dentry *new_dentry,
unsigned int flags)
-@@ -762,7 +780,7 @@ static int jffs2_rename (struct inode *o
+@@ -766,7 +784,7 @@ static int jffs2_rename (struct inode *o
uint8_t type;
uint32_t now;
return -EINVAL;
/* The VFS will check for us and prevent trying to rename a
-@@ -828,9 +846,14 @@ static int jffs2_rename (struct inode *o
+@@ -832,9 +850,14 @@ static int jffs2_rename (struct inode *o
if (d_is_dir(old_dentry) && !victim_f)
inc_nlink(new_dir_i);
--- a/fs/jffs2/dir.c
+++ b/fs/jffs2/dir.c
-@@ -777,18 +777,31 @@ static int jffs2_rename (struct inode *o
+@@ -781,18 +781,31 @@ static int jffs2_rename (struct inode *o
int ret;
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
struct jffs2_inode_info *victim_f = NULL;
victim_f = JFFS2_INODE_INFO(d_inode(new_dentry));
if (d_is_dir(new_dentry)) {
struct jffs2_full_dirent *fd;
-@@ -823,7 +836,7 @@ static int jffs2_rename (struct inode *o
+@@ -827,7 +840,7 @@ static int jffs2_rename (struct inode *o
if (ret)
return ret;
/* There was a victim. Kill it off nicely */
if (d_is_dir(new_dentry))
clear_nlink(d_inode(new_dentry));
-@@ -849,6 +862,12 @@ static int jffs2_rename (struct inode *o
+@@ -853,6 +866,12 @@ static int jffs2_rename (struct inode *o
if (flags & RENAME_WHITEOUT)
/* Replace with whiteout */
ret = jffs2_whiteout(old_dir_i, old_dentry);
else
/* Unlink the original */
ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
-@@ -880,7 +899,7 @@ static int jffs2_rename (struct inode *o
+@@ -884,7 +903,7 @@ static int jffs2_rename (struct inode *o
return ret;
}
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1836,6 +1836,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1838,6 +1838,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
-@@ -1843,6 +1844,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1845,6 +1846,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
/*
* Yank back the headers [hope the device set this
-@@ -1855,7 +1857,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1857,7 +1859,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)))
-@@ -2082,12 +2084,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2084,12 +2086,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;
-@@ -2214,12 +2216,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2216,12 +2218,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;
-@@ -3313,6 +3315,7 @@ static int packet_create(struct net *net
+@@ -3318,6 +3320,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;
-@@ -3935,6 +3938,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3940,6 +3943,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -3987,6 +4000,13 @@ static int packet_getsockopt(struct sock
+@@ -3992,6 +4005,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
u32 cmd_sgl_pos;
u32 cmd_sgl_start;
u32 tx_sgl_pos;
-@@ -462,7 +472,8 @@ alloc_bam_transaction(struct qcom_nand_c
+@@ -464,7 +474,8 @@ alloc_bam_transaction(struct qcom_nand_c
bam_txn_size =
sizeof(*bam_txn) + num_cw *
(sizeof(*bam_txn->data_sgl) * QPIC_PER_CW_DATA_SGL));
bam_txn_buf = devm_kzalloc(nandc->dev, bam_txn_size, GFP_KERNEL);
-@@ -472,6 +483,10 @@ alloc_bam_transaction(struct qcom_nand_c
+@@ -474,6 +485,10 @@ alloc_bam_transaction(struct qcom_nand_c
bam_txn = bam_txn_buf;
bam_txn_buf += sizeof(*bam_txn);
bam_txn->cmd_sgl = bam_txn_buf;
bam_txn_buf +=
sizeof(*bam_txn->cmd_sgl) * QPIC_PER_CW_CMD_SGL * num_cw;
-@@ -489,6 +504,8 @@ static void clear_bam_transaction(struct
+@@ -491,6 +506,8 @@ static void clear_bam_transaction(struct
if (!nandc->props->is_bam)
return;
dma_addr_t base_dma;
struct clk *core_clk;
-@@ -751,6 +761,66 @@ static int prepare_bam_async_desc(struct
+@@ -753,6 +763,66 @@ static int prepare_bam_async_desc(struct
}
/*
* Prepares the data descriptor for BAM DMA which will be used for NAND
* data reads and writes.
*/
-@@ -868,19 +938,22 @@ static int read_reg_dma(struct qcom_nand
+@@ -870,19 +940,22 @@ static int read_reg_dma(struct qcom_nand
{
bool flow_control = false;
void *vaddr;
}
/*
-@@ -897,13 +970,9 @@ static int write_reg_dma(struct qcom_nan
+@@ -899,13 +972,9 @@ static int write_reg_dma(struct qcom_nan
bool flow_control = false;
struct nandc_regs *regs = nandc->regs;
void *vaddr;
if (first == NAND_ERASED_CW_DETECT_CFG) {
if (flags & NAND_ERASED_CW_SET)
vaddr = ®s->erased_cw_detect_cfg_set;
-@@ -920,10 +989,15 @@ static int write_reg_dma(struct qcom_nan
+@@ -922,10 +991,15 @@ static int write_reg_dma(struct qcom_nan
if (first == NAND_DEV_CMD_VLD_RESTORE || first == NAND_DEV_CMD_VLD)
first = dev_cmd_reg_addr(nandc, NAND_DEV_CMD_VLD);
}
/*
-@@ -1187,7 +1261,8 @@ static int submit_descs(struct qcom_nand
+@@ -1189,7 +1263,8 @@ static int submit_descs(struct qcom_nand
}
if (bam_txn->cmd_sgl_pos > bam_txn->cmd_sgl_start) {
if (r)
return r;
}
-@@ -2725,6 +2800,7 @@ static int qcom_nandc_probe(struct platf
+@@ -2728,6 +2803,7 @@ static int qcom_nandc_probe(struct platf
if (IS_ERR(nandc->base))
return PTR_ERR(nandc->base);
}
--- a/drivers/mtd/nand/qcom_nandc.c
+++ b/drivers/mtd/nand/qcom_nandc.c
-@@ -1990,7 +1990,7 @@ static int qcom_nandc_write_oob(struct m
+@@ -1992,7 +1992,7 @@ static int qcom_nandc_write_oob(struct m
struct nand_ecc_ctrl *ecc = &chip->ecc;
u8 *oob = chip->oob_poi;
int data_size, oob_size;
host->use_ecc = true;
-@@ -2027,11 +2027,7 @@ static int qcom_nandc_write_oob(struct m
+@@ -2029,11 +2029,7 @@ static int qcom_nandc_write_oob(struct m
return -EIO;
}
}
static int qcom_nandc_block_bad(struct mtd_info *mtd, loff_t ofs)
-@@ -2081,7 +2077,7 @@ static int qcom_nandc_block_markbad(stru
+@@ -2083,7 +2079,7 @@ static int qcom_nandc_block_markbad(stru
struct qcom_nand_host *host = to_qcom_nand_host(chip);
struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
struct nand_ecc_ctrl *ecc = &chip->ecc;
clear_read_regs(nandc);
clear_bam_transaction(nandc);
-@@ -2114,11 +2110,7 @@ static int qcom_nandc_block_markbad(stru
+@@ -2116,11 +2112,7 @@ static int qcom_nandc_block_markbad(stru
return -EIO;
}
--- a/drivers/mtd/nand/qcom_nandc.c
+++ b/drivers/mtd/nand/qcom_nandc.c
-@@ -1725,6 +1725,7 @@ static int qcom_nandc_read_page(struct m
+@@ -1727,6 +1727,7 @@ static int qcom_nandc_read_page(struct m
u8 *data_buf, *oob_buf = NULL;
int ret;
data_buf = buf;
oob_buf = oob_required ? chip->oob_poi : NULL;
-@@ -1750,6 +1751,7 @@ static int qcom_nandc_read_page_raw(stru
+@@ -1752,6 +1753,7 @@ static int qcom_nandc_read_page_raw(stru
int i, ret;
int read_loc;
data_buf = buf;
oob_buf = chip->oob_poi;
-@@ -1850,6 +1852,8 @@ static int qcom_nandc_write_page(struct
+@@ -1852,6 +1854,8 @@ static int qcom_nandc_write_page(struct
u8 *data_buf, *oob_buf;
int i, ret;
clear_read_regs(nandc);
clear_bam_transaction(nandc);
-@@ -1902,6 +1906,9 @@ static int qcom_nandc_write_page(struct
+@@ -1904,6 +1908,9 @@ static int qcom_nandc_write_page(struct
free_descs(nandc);
return ret;
}
-@@ -1916,6 +1923,7 @@ static int qcom_nandc_write_page_raw(str
+@@ -1918,6 +1925,7 @@ static int qcom_nandc_write_page_raw(str
u8 *data_buf, *oob_buf;
int i, ret;
clear_read_regs(nandc);
clear_bam_transaction(nandc);
-@@ -1970,6 +1978,9 @@ static int qcom_nandc_write_page_raw(str
+@@ -1972,6 +1980,9 @@ static int qcom_nandc_write_page_raw(str
free_descs(nandc);
EXPORT_SYMBOL(dma_noop_ops);
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -4367,8 +4367,14 @@ void page_frag_free(void *addr)
+@@ -4372,8 +4372,14 @@ void page_frag_free(void *addr)
{
struct page *page = virt_to_head_page(addr);
static void enable_rams_ecc(struct fman_fpm_regs __iomem *fpm_rg)
{
-@@ -1919,7 +1941,10 @@ _return:
+@@ -1918,7 +1940,10 @@ _return:
static int fman_init(struct fman *fman)
{
struct fman_cfg *cfg = NULL;
if (is_init_done(fman->cfg))
return -EINVAL;
-@@ -1939,6 +1964,7 @@ static int fman_init(struct fman *fman)
+@@ -1938,6 +1963,7 @@ static int fman_init(struct fman *fman)
memset_io((void __iomem *)(fman->base_addr + CGP_OFFSET), 0,
fman->state->fm_port_num_of_cg);
/* Save LIODN info before FMan reset
* Skipping non-existent port 0 (i = 1)
*/
-@@ -1958,6 +1984,9 @@ static int fman_init(struct fman *fman)
+@@ -1957,6 +1983,9 @@ static int fman_init(struct fman *fman)
}
fman->liodn_base[i] = liodn_base;
}
err = fman_reset(fman);
if (err)
-@@ -2186,8 +2215,12 @@ int fman_set_port_params(struct fman *fm
+@@ -2185,8 +2214,12 @@ int fman_set_port_params(struct fman *fm
if (err)
goto return_err;
if (fman->state->rev_info.major < 6)
set_port_order_restoration(fman->fpm_regs, port_id);
-@@ -2813,7 +2846,8 @@ static struct fman *read_dts_node(struct
+@@ -2812,7 +2845,8 @@ static struct fman *read_dts_node(struct
of_node_put(muram_node);
};
static void add_addr_in_paddr(struct memac_regs __iomem *regs, u8 *adr,
-@@ -940,6 +941,34 @@ int memac_add_hash_mac_address(struct fm
+@@ -939,6 +940,34 @@ int memac_add_hash_mac_address(struct fm
return 0;
}
int memac_del_hash_mac_address(struct fman_mac *memac, enet_addr_t *eth_addr)
{
struct memac_regs __iomem *regs = memac->regs;
-@@ -963,8 +992,12 @@ int memac_del_hash_mac_address(struct fm
+@@ -962,8 +991,12 @@ int memac_del_hash_mac_address(struct fm
break;
}
}
kvmppc_booke_queue_irqprio(vcpu, BOOKE_IRQPRIO_DECREMENTER);
--- a/virt/kvm/arm/mmu.c
+++ b/virt/kvm/arm/mmu.c
-@@ -1028,9 +1028,11 @@ static int stage2_pmdp_test_and_clear_yo
+@@ -1022,9 +1022,11 @@ static int stage2_pmdp_test_and_clear_yo
* @guest_ipa: The IPA at which to insert the mapping
* @pa: The physical address of the device
* @size: The size of the mapping
{
phys_addr_t addr, end;
int ret = 0;
-@@ -1041,7 +1043,7 @@ int kvm_phys_addr_ioremap(struct kvm *kv
+@@ -1035,7 +1037,7 @@ int kvm_phys_addr_ioremap(struct kvm *kv
pfn = __phys_to_pfn(pa);
for (addr = guest_ipa; addr < end; addr += PAGE_SIZE) {
if (writable)
pte = kvm_s2pte_mkwrite(pte);
-@@ -1065,6 +1067,30 @@ out:
+@@ -1059,6 +1061,30 @@ out:
return ret;
}
static bool transparent_hugepage_adjust(kvm_pfn_t *pfnp, phys_addr_t *ipap)
{
kvm_pfn_t pfn = *pfnp;
-@@ -1341,6 +1367,18 @@ static int user_mem_abort(struct kvm_vcp
+@@ -1335,6 +1361,18 @@ static int user_mem_abort(struct kvm_vcp
hugetlb = true;
gfn = (fault_ipa & PMD_MASK) >> PAGE_SHIFT;
} else {
/*
* Pages belonging to memslots that don't have the same
* alignment for userspace and IPA cannot be mapped using
-@@ -1382,6 +1420,11 @@ static int user_mem_abort(struct kvm_vcp
+@@ -1376,6 +1414,11 @@ static int user_mem_abort(struct kvm_vcp
if (is_error_noslot_pfn(pfn))
return -EFAULT;
if (kvm_is_device_pfn(pfn)) {
mem_type = PAGE_S2_DEVICE;
flags |= KVM_S2PTE_FLAG_IS_IOMAP;
-@@ -1919,6 +1962,9 @@ int kvm_arch_prepare_memory_region(struc
+@@ -1913,6 +1956,9 @@ int kvm_arch_prepare_memory_region(struc
gpa_t gpa = mem->guest_phys_addr +
(vm_start - mem->userspace_addr);
phys_addr_t pa;
pa = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT;
pa += vm_start - vma->vm_start;
-@@ -1929,9 +1975,13 @@ int kvm_arch_prepare_memory_region(struc
+@@ -1923,9 +1969,13 @@ int kvm_arch_prepare_memory_region(struc
goto out;
}
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
-@@ -797,7 +797,7 @@ unlock_out:
+@@ -808,7 +808,7 @@ unlock_out:
clk_core_disable_unprepare(core->parent);
}
/* Set linkdown as the default for each GMAC. Its own MCR would be set
* up with the more appropriate value when mtk_phy_link_adjust call is
-@@ -2569,11 +2571,13 @@ static int mtk_probe(struct platform_dev
+@@ -2571,11 +2573,13 @@ static int mtk_probe(struct platform_dev
}
}
}
for (i = 0; i < 3; i++) {
-@@ -2699,17 +2703,20 @@ static int mtk_remove(struct platform_de
+@@ -2701,17 +2705,20 @@ static int mtk_remove(struct platform_de
static const struct mtk_soc_data mt2701_data = {
.caps = MTK_GMAC1_TRGMII,
if (!xhci->shared_hcd) {
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -283,6 +283,9 @@ static int xhci_pci_setup(struct usb_hcd
+@@ -287,6 +287,9 @@ static int xhci_pci_setup(struct usb_hcd
if (!xhci->sbrn)
pci_read_config_byte(pdev, XHCI_SBRN_OFFSET, &xhci->sbrn);