4.15.17-stable review
Subsystems (6)
Greg Kroah-Hartman
maintainerPATCH 155/168 nfp: use full 40 bits of the NSP buffer address
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dirk van der Merwe <[email protected]>
[ Upstream commit 1489bbd10e16079ce30a53d3c22a431fd47af791 ]
The NSP default buffer is a piece of NFP memory where additional command data can be placed. Its format has been copied from host buffer, but the PCIe selection bits do not make sense in this case. If those get masked out from a NFP address - writes to random place in the chip memory may be issued and crash the device.
Even in the general NSP buffer case, it doesn't make sense to have the PCIe selection bits there anymore. These are unused at the moment, and when it becomes necessary, the PCIe selection bits should rather be moved to another register to utilise more bits for the buffer address.
This has never been an issue because the buffer used to be allocated in memory with less-than-38-bit-long address but that is about to change.
--- drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c +5 -4
@@ -68,10 +68,11 @@/* CPP address to retrieve the data from */ #define NSP_BUFFER 0x10#define NSP_BUFFER_CPP GENMASK_ULL(63, 40) -#define NSP_BUFFER_PCIE GENMASK_ULL(39, 38) -#define NSP_BUFFER_ADDRESS GENMASK_ULL(37, 0) +#define NSP_BUFFER_ADDRESS GENMASK_ULL(39, 0)#define NSP_DFLT_BUFFER 0x18 +#define NSP_DFLT_BUFFER_CPP GENMASK_ULL(63, 40) +#define NSP_DFLT_BUFFER_ADDRESS GENMASK_ULL(39, 0)#define NSP_DFLT_BUFFER_CONFIG 0x20#define NSP_DFLT_BUFFER_SIZE_MB GENMASK_ULL(7, 0)
@@ -412,8 +413,8 @@ static int nfp_nsp_command_buf(struct nfif (err <0 )return err; - cpp_id =FIELD_GET (NSP_BUFFER_CPP , reg) <<8 ; - cpp_buf =FIELD_GET (NSP_BUFFER_ADDRESS , reg); + cpp_id =FIELD_GET (NSP_DFLT_BUFFER_CPP , reg) <<8 ; + cpp_buf =FIELD_GET (NSP_DFLT_BUFFER_ADDRESS , reg);if (in_buf && in_size) { err =nfp_cpp_write (cpp, cpp_id, cpp_buf, in_buf, in_size);
Greg Kroah-Hartman
maintainerPATCH 156/168 ipv6: sr: fix seg6 encap performances with TSO enabled
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Lebrun <[email protected]>
[ Upstream commit 5807b22c9164a21cd1077a9bc587f0bba361f72d ]
Enabling TSO can lead to abysmal performances when using seg6 in encap mode, such as with the ixgbe driver. This patch adds a call to iptunnel_handle_offloads() to remove the encapsulation bit if needed.
Before:
root@comp4-seg6bpf:~# iperf3 -c fc00::55 Connecting to host fc00::55, port 5201 [ 4] local fc45::4 port 36592 connected to fc00::55 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 196 KBytes 1.60 Mbits/sec 47 6.66 KBytes [ 4] 1.00-2.00 sec 304 KBytes 2.49 Mbits/sec 100 5.33 KBytes [ 4] 2.00-3.00 sec 284 KBytes 2.32 Mbits/sec 92 5.33 KBytes
After:
root@comp4-seg6bpf:~# iperf3 -c fc00::55 Connecting to host fc00::55, port 5201 [ 4] local fc45::4 port 43062 connected to fc00::55 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 1.03 GBytes 8.89 Gbits/sec 0 743 KBytes [ 4] 1.00-2.00 sec 1.03 GBytes 8.87 Gbits/sec 0 743 KBytes [ 4] 2.00-3.00 sec 1.03 GBytes 8.87 Gbits/sec 0 743 KBytes
--- net/ipv6/seg6_iptunnel.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
net/ipv6/seg6_iptunnel.c +7 -9
@@ -16,6 +16,7 @@#include <linux/net.h> #include <linux/module.h> #include <net/ip.h> +#include <net/ip_tunnels.h> #include <net/lwtunnel.h> #include <net/netevent.h> #include <net/netns/generic.h>
@@ -211,11 +212,6 @@ static int seg6_do_srh(struct sk_buff *s tinfo =seg6_encap_lwtunnel (dst->lwtstate); -if (likely (!skb->encapsulation)) { -skb_reset_inner_headers (skb); - skb->encapsulation =1 ; - } -switch (tinfo->mode) {case SEG6_IPTUN_MODE_INLINE :if (skb->protocol !=htons (ETH_P_IPV6 ))
@@ -224,10 +220,12 @@ static int seg6_do_srh(struct sk_buff *s err =seg6_do_srh_inline (skb, tinfo->srh);if (err)return err; - -skb_reset_inner_headers (skb);break ;case SEG6_IPTUN_MODE_ENCAP : + err =iptunnel_handle_offloads (skb,SKB_GSO_IPXIP6 ); +if (err) +return err; +if (skb->protocol ==htons (ETH_P_IPV6 )) proto =IPPROTO_IPV6 ;else if (skb->protocol ==htons (ETH_P_IP ))
@@ -239,6 +237,8 @@ static int seg6_do_srh(struct sk_buff *sif (err)return err; +skb_set_inner_transport_header (skb,skb_transport_offset (skb)); +skb_set_inner_protocol (skb, skb->protocol); skb->protocol =htons (ETH_P_IPV6 );break ;case SEG6_IPTUN_MODE_L2ENCAP :
@@ -262,8 +262,6 @@ static int seg6_do_srh(struct sk_buff *sipv6_hdr (skb)->payload_len =htons (skb->len -sizeof (struct ipv6hdr ));skb_set_transport_header (skb,sizeof (struct ipv6hdr )); -skb_set_inner_protocol (skb, skb->protocol); -return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 157/168 net/mlx5e: Dont override vport admin link state in switchdev mode
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jianbo Liu <[email protected]>
The vport admin original link state will be re-applied after returning back to legacy mode, it is not right to change the admin link state value when in switchdev mode.
Use direct vport commands to alter logical vport state in netdev representor open/close flows rather than the administrative eswitch API.
--- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +6 -5
@@ -611,7 +611,6 @@ static int mlx5e_rep_open(struct net_devstruct mlx5e_priv *priv =netdev_priv (dev);struct mlx5e_rep_priv *rpriv = priv->ppriv;struct mlx5_eswitch_rep *rep = rpriv->rep; -struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;int err;mutex_lock (&priv->state_lock);
@@ -619,8 +618,9 @@ static int mlx5e_rep_open(struct net_devif (err) goto unlock; -if (!mlx5_eswitch_set_vport_state (esw, rep->vport, -MLX5_ESW_VPORT_ADMIN_STATE_UP )) +if (!mlx5_modify_vport_admin_state (priv->mdev, +MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT , + rep->vport,MLX5_ESW_VPORT_ADMIN_STATE_UP ))netif_carrier_on (dev); unlock:
@@ -633,11 +633,12 @@ static int mlx5e_rep_close(struct net_destruct mlx5e_priv *priv =netdev_priv (dev);struct mlx5e_rep_priv *rpriv = priv->ppriv;struct mlx5_eswitch_rep *rep = rpriv->rep; -struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;int ret;mutex_lock (&priv->state_lock); - (void )mlx5_eswitch_set_vport_state (esw, rep->vport,MLX5_ESW_VPORT_ADMIN_STATE_DOWN ); +mlx5_modify_vport_admin_state (priv->mdev, +MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT , + rep->vport,MLX5_ESW_VPORT_ADMIN_STATE_DOWN ); ret =mlx5e_close_locked (dev);mutex_unlock (&priv->state_lock);return ret;
Greg Kroah-Hartman
maintainerPATCH 158/168 net/mlx5e: Sync netdev vxlan ports at open
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shahar Klein <[email protected]>
[ Upstream commit a117f73dc2430443f23e18367fa545981129c1a6 ]
When mlx5_core is loaded it is expected to sync ports with all vxlan devices so it can support vxlan encap/decap. This is done via udp_tunnel_get_rx_info(). Currently this call is set in mlx5e_nic_enable() and if the netdev is not in NETREG_REGISTERED state it will not be called.
Normally on load the netdev state is not NETREG_REGISTERED so udp_tunnel_get_rx_info() will not be called.
Moving udp_tunnel_get_rx_info() to mlx5e_open() so it will be called on netdev UP event and allow encap/decap.
--- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +3 -6
@@ -2715,6 +2715,9 @@ int mlx5e_open(struct net_device *netdevmlx5_set_port_admin_status (priv->mdev,MLX5_PORT_UP );mutex_unlock (&priv->state_lock); +if (mlx5e_vxlan_allowed (priv->mdev)) +udp_tunnel_get_rx_info (netdev); +return err; }
@@ -4428,12 +4431,6 @@ static void mlx5e_nic_enable(struct mlx5#ifdef CONFIG_MLX5_CORE_EN_DCB mlx5e_dcbnl_init_app (priv);#endif -/* Device already registered: sync netdev system state */ -if (mlx5e_vxlan_allowed (mdev)) { -rtnl_lock (); -udp_tunnel_get_rx_info (netdev); -rtnl_unlock (); - }queue_work (priv->wq, &priv->set_rx_mode_work);
Greg Kroah-Hartman
maintainerPATCH 159/168 net/sched: fix NULL dereference in the error path of tunnel_key_init()
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Davide Caratti <[email protected]>
[ Upstream commit abdadd3cfd3e7ea3da61ac774f84777d1f702058 ]
when the following command
# tc action add action tunnel_key unset index 100
is run for the first time, and tunnel_key_init() fails to allocate struct tcf_tunnel_key_params, tunnel_key_release() dereferences NULL pointers. This causes the following error:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 IP: tunnel_key_release+0xd/0x40 [act_tunnel_key] PGD 8000000033787067 P4D 8000000033787067 PUD 74646067 PMD 0 Oops: 0000 [#1] SMP PTI Modules linked in: act_tunnel_key(E) act_csum ip6table_filter ip6_tables iptable_filter binfmt_misc ext4 mbcache jbd2 crct10dif_pclmul crc32_pclmul snd_hda_codec_generic ghash_clmulni_intel snd_hda_intel pcbc snd_hda_codec snd_hda_core snd_hwdep snd_seq aesni_intel snd_seq_device crypto_simd glue_helper snd_pcm cryptd joydev snd_timer pcspkr virtio_balloon snd i2c_piix4 soundcore nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c ata_generic pata_acpi qxl drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm virtio_net virtio_blk drm virtio_console crc32c_intel ata_piix serio_raw i2c_core virtio_pci libata virtio_ring virtio floppy dm_mirror dm_region_hash dm_log dm_mod CPU: 2 PID: 3101 Comm: tc Tainted: G E 4.16.0-rc4.act_vlan.orig+ #403 Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011 RIP: 0010:tunnel_key_release+0xd/0x40 [act_tunnel_key] RSP: 0018:ffffba46803b7768 EFLAGS: 00010286 RAX: ffffffffc09010a0 RBX: 0000000000000000 RCX: 0000000000000024 RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff99ee336d7480 RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000044 R10: 0000000000000220 R11: ffff99ee79d73131 R12: 0000000000000000 R13: ffff99ee32d67610 R14: ffff99ee7671dc38 R15: 00000000fffffff4 FS: 00007febcb2cd740(0000) GS:ffff99ee7fd00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000010 CR3: 000000007c8e4005 CR4: 00000000001606e0 Call Trace: __tcf_idr_release+0x79/0xf0 tunnel_key_init+0xd9/0x460 [act_tunnel_key] tcf_action_init_1+0x2cc/0x430 tcf_action_init+0xd3/0x1b0 tc_ctl_action+0x18b/0x240 rtnetlink_rcv_msg+0x29c/0x310 ? _cond_resched+0x15/0x30 ? __kmalloc_node_track_caller+0x1b9/0x270 ? rtnl_calcit.isra.28+0x100/0x100 netlink_rcv_skb+0xd2/0x110 netlink_unicast+0x17c/0x230 netlink_sendmsg+0x2cd/0x3c0 sock_sendmsg+0x30/0x40 ___sys_sendmsg+0x27a/0x290 __sys_sendmsg+0x51/0x90 do_syscall_64+0x6e/0x1a0 entry_SYSCALL_64_after_hwframe+0x3d/0xa2 RIP: 0033:0x7febca6deba0 RSP: 002b:00007ffe7b0dd128 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007ffe7b0dd250 RCX: 00007febca6deba0 RDX: 0000000000000000 RSI: 00007ffe7b0dd1a0 RDI: 0000000000000003 RBP: 000000005aaa90cb R08: 0000000000000002 R09: 0000000000000000 R10: 00007ffe7b0dcba0 R11: 0000000000000246 R12: 0000000000000000 R13: 00007ffe7b0dd264 R14: 0000000000000001 R15: 0000000000669f60 Code: 44 00 00 8b 0d b5 23 00 00 48 8b 87 48 10 00 00 48 8b 3c c8 e9 a5 e5 d8 c3 0f 1f 44 00 00 0f 1f 44 00 00 53 48 8b 9f b0 00 00 00 <83> 7b 10 01 74 0b 48 89 df 31 f6 5b e9 f2 fa 7f c3 48 8b 7b 18 RIP: tunnel_key_release+0xd/0x40 [act_tunnel_key] RSP: ffffba46803b7768 CR2: 0000000000000010
Fix this in tunnel_key_release(), ensuring 'param' is not NULL before dereferencing it.
--- net/sched/act_tunnel_key.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
net/sched/act_tunnel_key.c +5 -4
@@ -208,11 +208,12 @@ static void tunnel_key_release(struct tcstruct tcf_tunnel_key_params *params; params =rcu_dereference_protected (t->params,1 ); +if (params) { +if (params->tcft_action ==TCA_TUNNEL_KEY_ACT_SET ) +dst_release (¶ms->tcft_enc_metadata->dst); -if (params->tcft_action ==TCA_TUNNEL_KEY_ACT_SET ) -dst_release (¶ms->tcft_enc_metadata->dst); - -kfree_rcu (params, rcu); +kfree_rcu (params, rcu); + } } static int tunnel_key_dump_addresses(struct sk_buff *skb,
Greg Kroah-Hartman
maintainerPATCH 160/168 net/sched: fix NULL dereference on the error path of tcf_skbmod_init()
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Davide Caratti <[email protected]>
[ Upstream commit 2d433610176d6569e8b3a28f67bc72235bf69efc ]
when the following command
# tc action replace action skbmod swap mac index 100
is run for the first time, and tcf_skbmod_init() fails to allocate struct tcf_skbmod_params, tcf_skbmod_cleanup() calls kfree_rcu(NULL), thus causing the following error:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 IP: __call_rcu+0x23/0x2b0 PGD 8000000034057067 P4D 8000000034057067 PUD 74937067 PMD 0 Oops: 0002 [#1] SMP PTI Modules linked in: act_skbmod(E) psample ip6table_filter ip6_tables iptable_filter binfmt_misc ext4 snd_hda_codec_generic snd_hda_intel snd_hda_codec crct10dif_pclmul mbcache jbd2 crc32_pclmul snd_hda_core ghash_clmulni_intel snd_hwdep pcbc snd_seq snd_seq_device snd_pcm aesni_intel snd_timer crypto_simd glue_helper snd cryptd virtio_balloon joydev soundcore pcspkr i2c_piix4 nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c ata_generic pata_acpi qxl drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm virtio_console virtio_net virtio_blk ata_piix libata crc32c_intel virtio_pci serio_raw virtio_ring virtio i2c_core floppy dm_mirror dm_region_hash dm_log dm_mod [last unloaded: act_skbmod] CPU: 3 PID: 3144 Comm: tc Tainted: G E 4.16.0-rc4.act_vlan.orig+ #403 Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011 RIP: 0010:__call_rcu+0x23/0x2b0 RSP: 0018:ffffbd2e403e7798 EFLAGS: 00010246 RAX: ffffffffc0872080 RBX: ffff981d34bff780 RCX: 00000000ffffffff RDX: ffffffff922a5f00 RSI: 0000000000000000 RDI: 0000000000000000 RBP: 0000000000000000 R08: 0000000000000001 R09: 000000000000021f R10: 000000003d003000 R11: 0000000000aaaaaa R12: 0000000000000000 R13: ffffffff922a5f00 R14: 0000000000000001 R15: ffff981d3b698c2c FS: 00007f3678292740(0000) GS:ffff981d3fd80000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000008 CR3: 000000007c57a006 CR4: 00000000001606e0 Call Trace: __tcf_idr_release+0x79/0xf0 tcf_skbmod_init+0x1d1/0x210 [act_skbmod] tcf_action_init_1+0x2cc/0x430 tcf_action_init+0xd3/0x1b0 tc_ctl_action+0x18b/0x240 rtnetlink_rcv_msg+0x29c/0x310 ? _cond_resched+0x15/0x30 ? __kmalloc_node_track_caller+0x1b9/0x270 ? rtnl_calcit.isra.28+0x100/0x100 netlink_rcv_skb+0xd2/0x110 netlink_unicast+0x17c/0x230 netlink_sendmsg+0x2cd/0x3c0 sock_sendmsg+0x30/0x40 ___sys_sendmsg+0x27a/0x290 ? filemap_map_pages+0x34a/0x3a0 ? __handle_mm_fault+0xbfd/0xe20 __sys_sendmsg+0x51/0x90 do_syscall_64+0x6e/0x1a0 entry_SYSCALL_64_after_hwframe+0x3d/0xa2 RIP: 0033:0x7f36776a3ba0 RSP: 002b:00007fff4703b618 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007fff4703b740 RCX: 00007f36776a3ba0 RDX: 0000000000000000 RSI: 00007fff4703b690 RDI: 0000000000000003 RBP: 000000005aaaba36 R08: 0000000000000002 R09: 0000000000000000 R10: 00007fff4703b0a0 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fff4703b754 R14: 0000000000000001 R15: 0000000000669f60 Code: 5d e9 42 da ff ff 66 90 0f 1f 44 00 00 41 57 41 56 41 55 49 89 d5 41 54 55 48 89 fd 53 48 83 ec 08 40 f6 c7 07 0f 85 19 02 00 00 <48> 89 75 08 48 c7 45 00 00 00 00 00 9c 58 0f 1f 44 00 00 49 89 RIP: __call_rcu+0x23/0x2b0 RSP: ffffbd2e403e7798 CR2: 0000000000000008
Fix it in tcf_skbmod_cleanup(), ensuring that kfree_rcu(p, ...) is called only when p is not NULL.
--- net/sched/act_skbmod.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
net/sched/act_skbmod.c +2 -1
@@ -190,7 +190,8 @@ static void tcf_skbmod_cleanup(struct tcstruct tcf_skbmod_params *p; p =rcu_dereference_protected (d->skbmod_p,1 ); -kfree_rcu (p, rcu); +if (p) +kfree_rcu (p, rcu); } static int tcf_skbmod_dump(struct sk_buff *skb, struct tc_action *a,
Greg Kroah-Hartman
maintainerPATCH 161/168 strparser: Fix sign of err codes
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Watson <[email protected]>
[ Upstream commit cd00edc179863848abab5cc5683de5b7b5f70954 ]
strp_parser_err is called with a negative code everywhere, which then calls abort_parser with a negative code. strp_msg_timeout calls abort_parser directly with a positive code. Negate ETIMEDOUT to match signed-ness of other calls.
The default abort_parser callback, strp_abort_strp, sets sk->sk_err to err. Also negate the error here so sk_err always holds a positive value, as the rest of the net code expects. Currently a negative sk_err can result in endless loops, or user code that thinks it actually sent/received err bytes.
Found while testing net/tls_sw recv path.
--- net/strparser/strparser.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/strparser/strparser.c +2 -2
@@ -60,7 +60,7 @@ static void strp_abort_strp(struct strpastruct sock *sk = strp->sk;/* Report an error on the lower socket */ - sk->sk_err = err; + sk->sk_err = -err; sk->sk_error_report (sk); } }
@@ -458,7 +458,7 @@ static void strp_msg_timeout(struct work/* Message assembly timed out */ STRP_STATS_INCR (strp->stats.msg_timeouts); strp->cb.lock (strp); - strp->cb.abort_parser (strp,ETIMEDOUT ); + strp->cb.abort_parser (strp, -ETIMEDOUT ); strp->cb.unlock (strp); }
Greg Kroah-Hartman
maintainerPATCH 162/168 net/mlx4_en: Fix mixed PFC and Global pause user control requests
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eran Ben Elisha <[email protected]>
[ Upstream commit 6e8814ceb7e8f468659ef9253bd212c07ae19584 ]
Global pause and PFC configuration should be mutually exclusive (i.e. only one of them at most can be set). However, once PFC was turned off, driver automatically turned Global pause on. This is a bug.
Fix the driver behaviour to turn off PFC/Global once the user turned the other on.
This also fixed a weird behaviour that at a current time, the profile had both PFC and global pause configuration turned on, which is Hardware-wise impossible and caused returning false positive indication to query tools.
In addition, fix error code when setting global pause or PFC to change metadata only upon successful change.
Also, removed useless debug print.
--- drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c | 72 +++++++++++++----------- drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 33 ++++++----- drivers/net/ethernet/mellanox/mlx4/en_main.c | 4 - 3 files changed, 62 insertions(+), 47 deletions(-)
drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c +41 -31
@@ -156,57 +156,63 @@ static int mlx4_en_dcbnl_getnumtcs(strucstatic u8 mlx4_en_dcbnl_set_all (struct net_device *netdev) {struct mlx4_en_priv *priv =netdev_priv (netdev); +struct mlx4_en_port_profile *prof = priv->prof;struct mlx4_en_dev *mdev = priv->mdev; +u8 tx_pause, tx_ppp, rx_pause, rx_ppp;if (!(priv->dcbx_cap &DCB_CAP_DCBX_VER_CEE ))return 1 ;if (priv->cee_config.pfc_state) {int tc; + rx_ppp = prof->rx_ppp; + tx_ppp = prof->tx_ppp; - priv->prof->rx_pause =0 ; - priv->prof->tx_pause =0 ;for (tc =0 ; tc <CEE_DCBX_MAX_PRIO ; tc++) {u8 tc_mask =1 << tc;switch (priv->cee_config.dcb_pfc[tc]) {case pfc_disabled: - priv->prof->tx_ppp &= ~tc_mask; - priv->prof->rx_ppp &= ~tc_mask; + tx_ppp &= ~tc_mask; + rx_ppp &= ~tc_mask;break ;case pfc_enabled_full: - priv->prof->tx_ppp |= tc_mask; - priv->prof->rx_ppp |= tc_mask; + tx_ppp |= tc_mask; + rx_ppp |= tc_mask;break ;case pfc_enabled_tx: - priv->prof->tx_ppp |= tc_mask; - priv->prof->rx_ppp &= ~tc_mask; + tx_ppp |= tc_mask; + rx_ppp &= ~tc_mask;break ;case pfc_enabled_rx: - priv->prof->tx_ppp &= ~tc_mask; - priv->prof->rx_ppp |= tc_mask; + tx_ppp &= ~tc_mask; + rx_ppp |= tc_mask;break ;default :break ; } } -en_dbg (DRV , priv,"Set pfc on\n" ); + rx_pause = !!(rx_ppp || tx_ppp) ?0 : prof->rx_pause; + tx_pause = !!(rx_ppp || tx_ppp) ?0 : prof->tx_pause; }else { - priv->prof->rx_pause =1 ; - priv->prof->tx_pause =1 ; -en_dbg (DRV , priv,"Set pfc off\n" ); + rx_ppp =0 ; + tx_ppp =0 ; + rx_pause = prof->rx_pause; + tx_pause = prof->tx_pause; }if (mlx4_SET_PORT_general (mdev->dev, priv->port, priv->rx_skb_size +ETH_FCS_LEN , - priv->prof->tx_pause, - priv->prof->tx_ppp, - priv->prof->rx_pause, - priv->prof->rx_ppp)) { + tx_pause, tx_ppp, rx_pause, rx_ppp)) {en_err (priv,"Failed setting pause params\n" );return 1 ; } + prof->tx_ppp = tx_ppp; + prof->rx_ppp = rx_ppp; + prof->tx_pause = tx_pause; + prof->rx_pause = rx_pause; +return 0 ; }
@@ -408,6 +414,7 @@ static int mlx4_en_dcbnl_ieee_setpfc(strstruct mlx4_en_priv *priv =netdev_priv (dev);struct mlx4_en_port_profile *prof = priv->prof;struct mlx4_en_dev *mdev = priv->mdev; +u32 tx_pause, tx_ppp, rx_pause, rx_ppp;int err; en_dbg(DRV, priv, "cap: 0x%x en: 0x%x mbc: 0x%x delay: %d\n",
@@ -416,23 +423,26 @@ static int mlx4_en_dcbnl_ieee_setpfc(str pfc->mbc, pfc->delay); - prof->rx_pause = !pfc->pfc_en; - prof->tx_pause = !pfc->pfc_en; - prof->rx_ppp = pfc->pfc_en; - prof->tx_ppp = pfc->pfc_en; + rx_pause = prof->rx_pause && !pfc->pfc_en; + tx_pause = prof->tx_pause && !pfc->pfc_en; + rx_ppp = pfc->pfc_en; + tx_ppp = pfc->pfc_en; err =mlx4_SET_PORT_general (mdev->dev, priv->port, priv->rx_skb_size +ETH_FCS_LEN , - prof->tx_pause, - prof->tx_ppp, - prof->rx_pause, - prof->rx_ppp); -if (err) + tx_pause, tx_ppp, rx_pause, rx_ppp); +if (err) {en_err (priv,"Failed setting pause params\n" ); -else -mlx4_en_update_pfc_stats_bitmap (mdev->dev, &priv->stats_bitmap, - prof->rx_ppp, prof->rx_pause, - prof->tx_ppp, prof->tx_pause); +return err; + } + +mlx4_en_update_pfc_stats_bitmap (mdev->dev, &priv->stats_bitmap, + rx_ppp, rx_pause, tx_ppp, tx_pause); + + prof->tx_ppp = tx_ppp; + prof->rx_ppp = rx_ppp; + prof->rx_pause = rx_pause; + prof->tx_pause = tx_pause;return err; }
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +19 -14
@@ -1046,27 +1046,32 @@ static int mlx4_en_set_pauseparam(struct {struct mlx4_en_priv *priv =netdev_priv (dev);struct mlx4_en_dev *mdev = priv->mdev; +u8 tx_pause, tx_ppp, rx_pause, rx_ppp;int err;if (pause->autoneg)return -EINVAL ; - priv->prof->tx_pause = pause->tx_pause !=0 ; - priv->prof->rx_pause = pause->rx_pause !=0 ; + tx_pause = !!(pause->tx_pause); + rx_pause = !!(pause->rx_pause); + rx_ppp = priv->prof->rx_ppp && !(tx_pause || rx_pause); + tx_ppp = priv->prof->tx_ppp && !(tx_pause || rx_pause); + err =mlx4_SET_PORT_general (mdev->dev, priv->port, priv->rx_skb_size +ETH_FCS_LEN , - priv->prof->tx_pause, - priv->prof->tx_ppp, - priv->prof->rx_pause, - priv->prof->rx_ppp); -if (err) -en_err (priv,"Failed setting pause params\n" ); -else -mlx4_en_update_pfc_stats_bitmap (mdev->dev, &priv->stats_bitmap, - priv->prof->rx_ppp, - priv->prof->rx_pause, - priv->prof->tx_ppp, - priv->prof->tx_pause); + tx_pause, tx_ppp, rx_pause, rx_ppp); +if (err) { +en_err (priv,"Failed setting pause params, err = %d\n" , err); +return err; + } + +mlx4_en_update_pfc_stats_bitmap (mdev->dev, &priv->stats_bitmap, + rx_ppp, rx_pause, tx_ppp, tx_pause); + + priv->prof->tx_pause = tx_pause; + priv->prof->rx_pause = rx_pause; + priv->prof->tx_ppp = tx_ppp; + priv->prof->rx_ppp = rx_ppp;return err; }
drivers/net/ethernet/mellanox/mlx4/en_main.c +2 -2
@@ -163,9 +163,9 @@ static void mlx4_en_get_profile(struct m params->udp_rss =0 ; }for (i =1 ; i <=MLX4_MAX_PORTS ; i++) { - params->prof[i].rx_pause =1 ; + params->prof[i].rx_pause = !(pfcrx || pfctx); params->prof[i].rx_ppp = pfcrx; - params->prof[i].tx_pause =1 ; + params->prof[i].tx_pause = !(pfcrx || pfctx); params->prof[i].tx_ppp = pfctx; params->prof[i].tx_ring_size =MLX4_EN_DEF_TX_RING_SIZE ; params->prof[i].rx_ring_size =MLX4_EN_DEF_RX_RING_SIZE ;
Greg Kroah-Hartman
maintainerPATCH 163/168 net/mlx5e: Fix traffic being dropped on VF representor
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Roi Dayan <[email protected]>
[ Upstream commit 4246f698dd58e3c6246fa919ef0b0a1d29a57e4a ]
Increase representor netdev RQ size to avoid dropped packets. The current size (two) is just too small to keep up with conventional slow path traffic patterns.
Also match the SQ size to the RQ size.
--- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +7 -2
@@ -44,6 +44,11 @@#include "en_tc.h" #include "fs_core.h" +#define MLX5E_REP_PARAMS_LOG_SQ_SIZE \ + max(0x6, MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE) +#define MLX5E_REP_PARAMS_LOG_RQ_SIZE \ + max(0x6, MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE) +static const char mlx5e_rep_driver_name[] ="mlx5e_rep" ; static void mlx5e_rep_get_drvinfo(struct net_device *dev,
@@ -824,9 +829,9 @@ static void mlx5e_build_rep_params(struc MLX5_CQ_PERIOD_MODE_START_FROM_CQE :MLX5_CQ_PERIOD_MODE_START_FROM_EQE ; - params->log_sq_size =MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE ; + params->log_sq_size =MLX5E_REP_PARAMS_LOG_SQ_SIZE ; params->rq_wq_type =MLX5_WQ_TYPE_LINKED_LIST ; - params->log_rq_size =MLX5E_PARAMS_MINIMUM_LOG_RQ_SIZE ; + params->log_rq_size =MLX5E_REP_PARAMS_LOG_RQ_SIZE ; params->rx_am_enabled =MLX5_CAP_GEN (mdev, cq_moderation);mlx5e_set_rx_cq_mode_params (params, cq_period_mode);
Greg Kroah-Hartman
maintainerPATCH 164/168 vhost: validate log when IOTLB is enabled
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jason Wang <[email protected]>
[ Upstream commit d65026c6c62e7d9616c8ceb5a53b68bcdc050525 ]
Vq log_base is the userspace address of bitmap which has nothing to do with IOTLB. So it needs to be validated unconditionally otherwise we may try use 0 as log_base which may lead to pin pages that will lead unexpected result (e.g trigger BUG_ON() in set_bit_to_user()).
--- drivers/vhost/vhost.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
drivers/vhost/vhost.c +6 -8
@@ -1256,14 +1256,12 @@ static int vq_log_access_ok(struct vhost/* Caller should have vq mutex and device mutex */ int vhost_vq_access_ok (struct vhost_virtqueue *vq) { -if (vq->iotlb) { -/* When device IOTLB was used, the access validation -* will be validated during prefetching. -*/ -return 1 ; - } -return vq_access_ok (vq, vq->num, vq->desc, vq->avail, vq->used) && -vq_log_access_ok (vq, vq->log_base); +int ret =vq_log_access_ok (vq, vq->log_base); + +if (ret || vq->iotlb) +return ret; + +return vq_access_ok (vq, vq->num, vq->desc, vq->avail, vq->used); }EXPORT_SYMBOL_GPL (vhost_vq_access_ok);
Greg Kroah-Hartman
maintainerPATCH 165/168 route: check sysctl_fib_multipath_use_neigh earlier than hash
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xin Long <[email protected]>
[ Upstream commit 6174a30df1b902e1fedbd728f5343937e83e64e6 ]
Prior to this patch, when one packet is hashed into path [1] (hash <= nh_upper_bound) and it's neigh is dead, it will try path [2]. However, if path [2]'s neigh is alive but it's hash > nh_upper_bound, it will not return this alive path. This packet will never be sent even if path [2] is alive.
3.3.3.1/24:
nexthop via 1.1.1.254 dev eth1 weight 1 <--[1] (dead neigh) nexthop via 2.2.2.254 dev eth2 weight 1 <--[2]
With sysctl_fib_multipath_use_neigh set is supposed to find an available path respecting to the l3/l4 hash. But if there is no available route with this hash, it should at least return an alive route even with other hash.
This patch is to fix it by processing fib_multipath_use_neigh earlier than the hash check, so that it will at least return an alive route if there is when fib_multipath_use_neigh is enabled. It's also compatible with before when there are alive routes with the l3/l4 hash.
--- net/ipv4/fib_semantics.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)
net/ipv4/fib_semantics.c +11 -9
@@ -1746,18 +1746,20 @@ void fib_select_multipath(struct fib_resbool first = false;for_nexthops (fi) { +if (net->ipv4.sysctl_fib_multipath_use_neigh) { +if (!fib_good_nh (nh)) +continue ; +if (!first) { + res->nh_sel = nhsel; + first = true; + } + } +if (hash >atomic_read (&nh->nh_upper_bound))continue ; -if (!net->ipv4.sysctl_fib_multipath_use_neigh || -fib_good_nh (nh)) { - res->nh_sel = nhsel; -return ; - } -if (!first) { - res->nh_sel = nhsel; - first = true; - } + res->nh_sel = nhsel; +return ; } endfor_nexthops(fi); }#endif
Greg Kroah-Hartman
maintainerPATCH 166/168 team: move dev_mc_sync after master_upper_dev_link in team_port_add
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xin Long <[email protected]>
[ Upstream commit 982cf3b3999d39a2eaca0a65542df33c19b5d814 ]
The same fix as in 'bonding: move dev_mc_sync after master_upper_dev_link in bond_enslave' is needed for team driver.
The panic can be reproduced easily:
ip link add team1 type team
ip link set team1 up
ip link add link team1 vlan1 type vlan id 80
ip link set vlan1 master team1
--- drivers/net/team/team.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-)
drivers/net/team/team.c +5 -7
@@ -1197,11 +1197,6 @@ static int team_port_add(struct team *te goto err_dev_open; } -netif_addr_lock_bh (dev); -dev_uc_sync_multiple (port_dev, dev); -dev_mc_sync_multiple (port_dev, dev); -netif_addr_unlock_bh (dev); - err =vlan_vids_add_by_dev (port_dev, dev);if (err) { netdev_err(dev, "Failed to add vlan ids to device %s\n",
@@ -1241,6 +1236,11 @@ static int team_port_add(struct team *te goto err_option_port_add; } +netif_addr_lock_bh (dev); +dev_uc_sync_multiple (port_dev, dev); +dev_mc_sync_multiple (port_dev, dev); +netif_addr_unlock_bh (dev); + port->index =-1 ;list_add_tail_rcu (&port->list, &team->port_list);team_port_enable (team, port);
@@ -1265,8 +1265,6 @@ err_enable_netpoll:vlan_vids_del_by_dev (port_dev, dev); err_vids_add: -dev_uc_unsync (port_dev, dev); -dev_mc_unsync (port_dev, dev);dev_close (port_dev); err_dev_open:
Greg Kroah-Hartman
maintainerPATCH 167/168 vhost_net: add missing lock nesting notation
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jason Wang <[email protected]>
[ Upstream commit aaa3149bbee9ba9b4e6f0bd6e3e7d191edeae942 ]
We try to hold TX virtqueue mutex in vhost_net_rx_peek_head_len() after RX virtqueue mutex is held in handle_rx(). This requires an appropriate lock nesting notation to calm down deadlock detector.
--- drivers/vhost/net.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/vhost/net.c +2 -2
@@ -618,7 +618,7 @@ static int vhost_net_rx_peek_head_len(stif (!len && vq->busyloop_timeout) {/* Both tx vq and rx socket were polled here */ -mutex_lock (&vq->mutex); +mutex_lock_nested (&vq->mutex,1 );vhost_disable_notify (&net->dev, vq);preempt_disable ();
@@ -751,7 +751,7 @@ static void handle_rx(struct vhost_net *struct iov_iter fixup;__virtio16 num_buffers; -mutex_lock (&vq->mutex); +mutex_lock_nested (&vq->mutex,0 ); sock = vq->private_data;if (!sock) goto out;
Greg Kroah-Hartman
maintainerPATCH 168/168 net/mlx4_core: Fix memory leak while delete slaves resources
In reply to Greg Kroah-Hartman4.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Moshe Shemesh <[email protected]>
[ Upstream commit 461d5f1b59490ce0096dfda45e10038c122a7892 ]
mlx4_delete_all_resources_for_slave in resource tracker should free all memory allocated for a slave.
While releasing memory of fs_rule, it misses releasing memory of fs_rule->mirr_mbox.
--- drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +1 -0
@@ -5088,6 +5088,7 @@ static void rem_slave_fs_rule(struct mlx &tracker->res_tree[RES_FS_RULE]);list_del (&fs_rule->com.list);spin_unlock_irq (mlx4_tlock (dev)); +kfree (fs_rule->mirr_mbox);kfree (fs_rule); state =0 ;break ;
stable-rc/linux-4.15.y boot: 82 boots: 2 failed, 78 passed with 2 untried/unknown (v4.15.16-169-g99a63ea2bfce)
stable-rc/linux-4.15.y boot: 82 boots: 2 failed, 78 passed with 2 untried/unknown (v4.15.16-169-g99a63ea2bfce)
Full Boot Summary: https://kernelci.org/boot/all/job/stable-rc/branch/linux-4.15.y/kernel/v4.15.16-169-g99a63ea2bfce/
Full Build Summary: https://kernelci.org/build/stable-rc/branch/linux-4.15.y/kernel/v4.15.16-169-g99a63ea2bfce/
Tree: stable-rc
Branch: linux-4.15.y
Git Describe: v4.15.16-169-g99a63ea2bfce
Git Commit: 99a63ea2bfce072fa43311cceb4642c1b2ccca9c
Git URL: http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Tested: 40 unique boards, 15 SoC families, 15 builds out of 185
Boot Regressions Detected:
arm:
multi_v7_defconfig:
sun8i-a83t-allwinner-h8homlet-v2:
lab-free-electrons: failing since 1 day (last pass: v4.15.16-110-gc35a9efcac26 - first fail: v4.15.16-124-gff369be839c7)
mvebu_v7_defconfig:
armada-375-db:
lab-free-electrons: new failure (last pass: v4.15.16-124-gff369be839c7)Boot Failures Detected:
arm:
multi_v7_defconfig
sun8i-a83t-allwinner-h8homlet-v2: 1 failed lab
mvebu_v7_defconfig
armada-375-db: 1 failed lab
---
For more info write to <[email protected]>
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.15.17 release. There are 168 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu Apr 12 21:27:22 UTC 2018. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.15.17-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.15.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Guenter Roeck
maintainerQuoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.15.17 release. There are 168 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu Apr 12 21:27:22 UTC 2018. Anything received after that time might be too late.
Build results:
total: 147 pass: 147 fail: 0 Qemu test results: total: 141 pass: 141 fail: 0
Details are available at http://kerneltests.org/builders.
Guenter
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.15.17 release. There are 168 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu Apr 12 21:27:22 UTC 2018. Anything received after that time might be too late.
Results from Linaro’s test farm.
No regressions on arm64, arm and x86_64.
There is a regression in test 'select04' noted below. It is a false failure caused by an infrastructure issue on the server running qemu jobs. I re-ran the test and it passed (under qemu), and it passed on real hardware.
Summary
------------------------------------------------------------------------
kernel: 4.15.17-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.15.y
git commit: 99a63ea2bfce072fa43311cceb4642c1b2ccca9c
git describe: v4.15.16-169-g99a63ea2bfce
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.15-oe/build/v4.15.16-169-g99a63ea2bfce
Regressions (compared to build v4.15.16-124-gff369be839c7)
------------------------------------------------------------------------
qemu_x86_64:
ltp-syscalls-tests:
* runltp_syscalls
* select04
* test src: git://github.com/linux-test-project/ltp.git
Boards, architectures and test suites:
-------------------------------------
dragonboard-410c - arm64
* boot - pass: 20
* kselftest - skip: 20, pass: 45
* libhugetlbfs - skip: 1, pass: 90
* ltp-cap_bounds-tests - pass: 2
* ltp-containers-tests - skip: 17, pass: 64
* ltp-fcntl-locktests-tests - pass: 2
* ltp-filecaps-tests - pass: 2
* ltp-fs-tests - skip: 2, pass: 61
* ltp-fs_bind-tests - pass: 2
* ltp-fs_perms_simple-tests - pass: 19
* ltp-fsx-tests - pass: 2
* ltp-hugetlb-tests - skip: 1, pass: 21
* ltp-io-tests - pass: 3
* ltp-ipc-tests - pass: 9
* ltp-math-tests - pass: 11
* ltp-nptl-tests - pass: 2
* ltp-pty-tests - pass: 4
* ltp-sched-tests - pass: 14
* ltp-securebits-tests - pass: 4
* ltp-syscalls-tests - skip: 148, pass: 1002
* ltp-timers-tests - skip: 1, pass: 12
hi6220-hikey - arm64
* boot - pass: 20
* kselftest - skip: 17, pass: 48
* libhugetlbfs - skip: 1, pass: 90
* ltp-cap_bounds-tests - pass: 2
* ltp-containers-tests - skip: 17, pass: 64
* ltp-fcntl-locktests-tests - pass: 2
* ltp-filecaps-tests - pass: 2
* ltp-fs-tests - skip: 2, pass: 61
* ltp-fs_bind-tests - pass: 2
* ltp-fs_perms_simple-tests - pass: 19
* ltp-fsx-tests - pass: 2
* ltp-hugetlb-tests - skip: 1, pass: 21
* ltp-io-tests - pass: 3
* ltp-ipc-tests - pass: 9
* ltp-math-tests - pass: 11
* ltp-nptl-tests - pass: 2
* ltp-pty-tests - pass: 4
* ltp-sched-tests - skip: 4, pass: 10
* ltp-securebits-tests - pass: 4
* ltp-syscalls-tests - skip: 151, pass: 999
* ltp-timers-tests - skip: 1, pass: 12
juno-r2 - arm64
* boot - pass: 20
* kselftest - skip: 18, pass: 47
* libhugetlbfs - skip: 1, pass: 90
* ltp-cap_bounds-tests - pass: 2
* ltp-containers-tests - skip: 17, pass: 64
* ltp-fcntl-locktests-tests - pass: 2
* ltp-filecaps-tests - pass: 2
* ltp-fs-tests - skip: 2, pass: 61
* ltp-fs_bind-tests - pass: 2
* ltp-fs_perms_simple-tests - pass: 19
* ltp-fsx-tests - pass: 2
* ltp-hugetlb-tests - pass: 22
* ltp-io-tests - pass: 3
* ltp-ipc-tests - pass: 9
* ltp-math-tests - pass: 11
* ltp-nptl-tests - pass: 2
* ltp-pty-tests - pass: 4
* ltp-sched-tests - skip: 4, pass: 10
* ltp-securebits-tests - pass: 4
* ltp-syscalls-tests - skip: 149, pass: 1001
* ltp-timers-tests - skip: 1, pass: 12
qemu_x86_64
* boot - pass: 22
* kselftest - skip: 23, pass: 57
* kselftest-vsyscall-mode-native - skip: 23, pass: 57
* kselftest-vsyscall-mode-none - skip: 23, pass: 57
* libhugetlbfs - skip: 1, pass: 90
* ltp-cap_bounds-tests - pass: 2
* ltp-containers-tests - skip: 17, pass: 64
* ltp-fcntl-locktests-tests - pass: 2
* ltp-filecaps-tests - pass: 2
* ltp-fs-tests - skip: 6, pass: 57
* ltp-fs_bind-tests - pass: 2
* ltp-fs_perms_simple-tests - pass: 19
* ltp-fsx-tests - pass: 2
* ltp-hugetlb-tests - pass: 22
* ltp-io-tests - pass: 3
* ltp-ipc-tests - pass: 9
* ltp-math-tests - pass: 11
* ltp-nptl-tests - pass: 2
* ltp-pty-tests - pass: 4
* ltp-sched-tests - skip: 1, pass: 13
* ltp-securebits-tests - pass: 4
* ltp-syscalls-tests - skip: 148, fail: 2, pass: 1000
* ltp-timers-tests - skip: 1, pass: 12
x15 - arm
* boot - pass: 20
* kselftest - skip: 21, pass: 41
* libhugetlbfs - skip: 1, fail: 1, pass: 86
* ltp-cap_bounds-tests - pass: 2
* ltp-containers-tests - skip: 18, pass: 63
* ltp-fcntl-locktests-tests - pass: 2
* ltp-filecaps-tests - pass: 2
* ltp-fs-tests - skip: 2, pass: 61
* ltp-fs_bind-tests - pass: 2
* ltp-fs_perms_simple-tests - pass: 19
* ltp-fsx-tests - pass: 2
* ltp-hugetlb-tests - skip: 2, pass: 20
* ltp-io-tests - pass: 3
* ltp-ipc-tests - pass: 9
* ltp-math-tests - pass: 11
* ltp-nptl-tests - pass: 2
* ltp-pty-tests - pass: 4
* ltp-sched-tests - skip: 1, pass: 13
* ltp-securebits-tests - pass: 4
* ltp-syscalls-tests - skip: 97, pass: 1053
* ltp-timers-tests - skip: 1, pass: 12
x86_64
* boot - pass: 22
* kselftest - skip: 19, pass: 61
* kselftest-vsyscall-mode-native - skip: 19, pass: 61
* kselftest-vsyscall-mode-none - skip: 19, fail: 1, pass: 60
* libhugetlbfs - skip: 1, pass: 90
* ltp-cap_bounds-tests - pass: 2
* ltp-containers-tests - skip: 17, pass: 64
* ltp-fcntl-locktests-tests - pass: 2
* ltp-filecaps-tests - pass: 2
* ltp-fs-tests - skip: 1, pass: 62
* ltp-fs_bind-tests - pass: 2
* ltp-fs_perms_simple-tests - pass: 19
* ltp-fsx-tests - pass: 2
* ltp-hugetlb-tests - pass: 22
* ltp-io-tests - pass: 3
* ltp-ipc-tests - pass: 9
* ltp-math-tests - pass: 11
* ltp-nptl-tests - pass: 2
* ltp-pty-tests - pass: 4
* ltp-sched-tests - skip: 5, pass: 9
* ltp-securebits-tests - pass: 4
* ltp-syscalls-tests - skip: 119, pass: 1031
* ltp-timers-tests - skip: 1, pass: 12
--
Linaro QA (beta)
https://qa-reports.linaro.org