* [patch net-next 10/16] mlxsw: spectrum_switchdev: Use generic mc flood function
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Use the generic mc flood function to decide whether to flood mc to a port
when mc is being enabled / disabled.
Move this function in the file to avoid forward declaration.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
.../net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 79806af..19ac206 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -742,6 +742,14 @@ static int mlxsw_sp_port_attr_mrouter_set(struct mlxsw_sp_port *mlxsw_sp_port,
return 0;
}
+static bool mlxsw_sp_mc_flood(const struct mlxsw_sp_bridge_port *bridge_port)
+{
+ const struct mlxsw_sp_bridge_device *bridge_device;
+
+ bridge_device = bridge_port->bridge_device;
+ return !bridge_device->multicast_enabled ? true : bridge_port->mrouter;
+}
+
static int mlxsw_sp_port_mc_disabled_set(struct mlxsw_sp_port *mlxsw_sp_port,
struct switchdev_trans *trans,
struct net_device *orig_dev,
@@ -770,7 +778,7 @@ static int mlxsw_sp_port_mc_disabled_set(struct mlxsw_sp_port *mlxsw_sp_port,
list_for_each_entry(bridge_port, &bridge_device->ports_list, list) {
enum mlxsw_sp_flood_type packet_type = MLXSW_SP_FLOOD_TYPE_MC;
- bool member = mc_disabled ? true : bridge_port->mrouter;
+ bool member = mlxsw_sp_mc_flood(bridge_port);
err = mlxsw_sp_bridge_port_flood_table_set(mlxsw_sp_port,
bridge_port,
@@ -829,14 +837,6 @@ static int mlxsw_sp_port_attr_set(struct net_device *dev,
return err;
}
-static bool mlxsw_sp_mc_flood(const struct mlxsw_sp_bridge_port *bridge_port)
-{
- const struct mlxsw_sp_bridge_device *bridge_device;
-
- bridge_device = bridge_port->bridge_device;
- return !bridge_device->multicast_enabled ? true : bridge_port->mrouter;
-}
-
static int
mlxsw_sp_port_vlan_fid_join(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan,
struct mlxsw_sp_bridge_port *bridge_port)
--
2.9.5
^ permalink raw reply related
* [patch net-next 09/16] mlxsw: spectrum_switchdev: Disable mdb when mc is disabled
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Remove all the mdb entries from the HW when mc is being disabled and
re-write them when it is being enabled.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
.../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 41 +++++++++++++++++++---
1 file changed, 37 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index cea257a..79806af 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -121,6 +121,11 @@ mlxsw_sp_bridge_port_fdb_flush(struct mlxsw_sp *mlxsw_sp,
struct mlxsw_sp_bridge_port *bridge_port,
u16 fid_index);
+static void
+mlxsw_sp_bridge_mdb_mc_enable_sync(struct mlxsw_sp_port *mlxsw_sp_port,
+ struct mlxsw_sp_bridge_device
+ *bridge_device);
+
static struct mlxsw_sp_bridge_device *
mlxsw_sp_bridge_device_find(const struct mlxsw_sp_bridge *bridge,
const struct net_device *br_dev)
@@ -757,6 +762,12 @@ static int mlxsw_sp_port_mc_disabled_set(struct mlxsw_sp_port *mlxsw_sp_port,
if (!bridge_device)
return 0;
+ if (bridge_device->multicast_enabled != !mc_disabled) {
+ bridge_device->multicast_enabled = !mc_disabled;
+ mlxsw_sp_bridge_mdb_mc_enable_sync(mlxsw_sp_port,
+ bridge_device);
+ }
+
list_for_each_entry(bridge_port, &bridge_device->ports_list, list) {
enum mlxsw_sp_flood_type packet_type = MLXSW_SP_FLOOD_TYPE_MC;
bool member = mc_disabled ? true : bridge_port->mrouter;
@@ -1207,9 +1218,8 @@ static int mlxsw_sp_port_mdb_op(struct mlxsw_sp *mlxsw_sp, const char *addr,
return err;
}
-/* clean the an entry from the HW and write there a full new entry */
-static int mlxsw_sp_port_smid_full_entry(struct mlxsw_sp *mlxsw_sp,
- u16 mid_idx)
+static int mlxsw_sp_port_smid_full_entry(struct mlxsw_sp *mlxsw_sp, u16 mid_idx,
+ long *ports_bitmap)
{
char *smid_pl;
int err, i;
@@ -1224,6 +1234,9 @@ static int mlxsw_sp_port_smid_full_entry(struct mlxsw_sp *mlxsw_sp,
mlxsw_reg_smid_port_mask_set(smid_pl, i, 1);
}
+ for_each_set_bit(i, ports_bitmap, mlxsw_core_max_ports(mlxsw_sp->core))
+ mlxsw_reg_smid_port_set(smid_pl, i, 1);
+
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(smid), smid_pl);
kfree(smid_pl);
return err;
@@ -1273,7 +1286,8 @@ mlxsw_sp_mc_write_mdb_entry(struct mlxsw_sp *mlxsw_sp,
return false;
mid->mid = mid_idx;
- err = mlxsw_sp_port_smid_full_entry(mlxsw_sp, mid_idx);
+ err = mlxsw_sp_port_smid_full_entry(mlxsw_sp, mid_idx,
+ mid->ports_in_mid);
if (err)
return false;
@@ -1414,6 +1428,25 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
return err;
}
+static void
+mlxsw_sp_bridge_mdb_mc_enable_sync(struct mlxsw_sp_port *mlxsw_sp_port,
+ struct mlxsw_sp_bridge_device
+ *bridge_device)
+{
+ struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
+ struct mlxsw_sp_mid *mid;
+ bool mc_enabled;
+
+ mc_enabled = bridge_device->multicast_enabled;
+
+ list_for_each_entry(mid, &bridge_device->mids_list, list) {
+ if (mc_enabled)
+ mlxsw_sp_mc_write_mdb_entry(mlxsw_sp, mid);
+ else
+ mlxsw_sp_mc_remove_mdb_entry(mlxsw_sp, mid);
+ }
+}
+
static int mlxsw_sp_port_obj_add(struct net_device *dev,
const struct switchdev_obj *obj,
struct switchdev_trans *trans)
--
2.9.5
^ permalink raw reply related
* [patch net-next 08/16] mlxsw: spectrum_switchdev: Don't write mids to the HW when mc is disabled
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Don't write multicast related data to the HW when mc is disabled.
Also, don't allocate mid id to new mids (so the remove function could know
that they weren't wrote to the HW)
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
.../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 7f622de..cea257a 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -1290,6 +1290,9 @@ mlxsw_sp_mc_write_mdb_entry(struct mlxsw_sp *mlxsw_sp,
static int mlxsw_sp_mc_remove_mdb_entry(struct mlxsw_sp *mlxsw_sp,
struct mlxsw_sp_mid *mid)
{
+ if (!mid->in_hw)
+ return 0;
+
clear_bit(mid->mid, mlxsw_sp->bridge->mids_bitmap);
mid->in_hw = false;
return mlxsw_sp_port_mdb_op(mlxsw_sp, mid->addr, mid->fid, mid->mid,
@@ -1319,11 +1322,15 @@ mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
ether_addr_copy(mid->addr, addr);
mid->fid = fid;
mid->in_hw = false;
+
+ if (!bridge_device->multicast_enabled)
+ goto out;
+
if (!mlxsw_sp_mc_write_mdb_entry(mlxsw_sp, mid))
goto err_write_mdb_entry;
+out:
list_add_tail(&mid->list, &bridge_device->mids_list);
-
return mid;
err_write_mdb_entry:
@@ -1391,6 +1398,9 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
}
set_bit(mlxsw_sp_port->local_port, mid->ports_in_mid);
+ if (!bridge_device->multicast_enabled)
+ return 0;
+
err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, true);
if (err) {
netdev_err(dev, "Unable to set SMID\n");
@@ -1476,9 +1486,12 @@ __mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
struct net_device *dev = mlxsw_sp_port->dev;
int err;
- err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, false);
- if (err)
- netdev_err(dev, "Unable to remove port from SMID\n");
+ if (bridge_port->bridge_device->multicast_enabled) {
+ err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, false);
+
+ if (err)
+ netdev_err(dev, "Unable to remove port from SMID\n");
+ }
err = mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid);
if (err)
--
2.9.5
^ permalink raw reply related
* [patch net-next 07/16] mlxsw: spectrum_switchdev: Break mid deletion into two function
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Break mid deletion into two function, so it will be possible in the future
to delete a mid entry for other reasons then switchdev command (like port
deletion).
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
.../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 32 ++++++++++++++--------
1 file changed, 20 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 9dd05d8..7f622de 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -1468,6 +1468,25 @@ static int mlxsw_sp_port_vlans_del(struct mlxsw_sp_port *mlxsw_sp_port,
return 0;
}
+static int
+__mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
+ struct mlxsw_sp_bridge_port *bridge_port,
+ struct mlxsw_sp_mid *mid)
+{
+ struct net_device *dev = mlxsw_sp_port->dev;
+ int err;
+
+ err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, false);
+ if (err)
+ netdev_err(dev, "Unable to remove port from SMID\n");
+
+ err = mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid);
+ if (err)
+ netdev_err(dev, "Unable to remove MC SFD\n");
+
+ return err;
+}
+
static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
const struct switchdev_obj_port_mdb *mdb)
{
@@ -1479,8 +1498,6 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
struct mlxsw_sp_bridge_port *bridge_port;
struct mlxsw_sp_mid *mid;
u16 fid_index;
- u16 mid_idx;
- int err = 0;
bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
if (!bridge_port)
@@ -1501,16 +1518,7 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
return -EINVAL;
}
- err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, false);
- if (err)
- netdev_err(dev, "Unable to remove port from SMID\n");
-
- mid_idx = mid->mid;
- err = mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid);
- if (err)
- netdev_err(dev, "Unable to remove MC SFD\n");
-
- return err;
+ return __mlxsw_sp_port_mdb_del(mlxsw_sp_port, bridge_port, mid);
}
static int mlxsw_sp_port_obj_del(struct net_device *dev,
--
2.9.5
^ permalink raw reply related
* [patch net-next 05/16] mlxsw: spectrum_switchdev: Break smid write function
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Break the smid write function into two, one that cleans the ports that
might be still written there and one that changes an exiting mid entry.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
.../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 42 +++++++++++++++-------
1 file changed, 30 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 2ba8a44..09ead97 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -1190,7 +1190,7 @@ mlxsw_sp_port_fdb_set(struct mlxsw_sp_port *mlxsw_sp_port,
}
static int mlxsw_sp_port_mdb_op(struct mlxsw_sp *mlxsw_sp, const char *addr,
- u16 fid, u16 mid, bool adding)
+ u16 fid, u16 mid_idx, bool adding)
{
char *sfd_pl;
int err;
@@ -1201,16 +1201,16 @@ static int mlxsw_sp_port_mdb_op(struct mlxsw_sp *mlxsw_sp, const char *addr,
mlxsw_reg_sfd_pack(sfd_pl, mlxsw_sp_sfd_op(adding), 0);
mlxsw_reg_sfd_mc_pack(sfd_pl, 0, addr, fid,
- MLXSW_REG_SFD_REC_ACTION_NOP, mid);
+ MLXSW_REG_SFD_REC_ACTION_NOP, mid_idx);
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfd), sfd_pl);
kfree(sfd_pl);
return err;
}
-static int mlxsw_sp_port_smid_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 mid,
- bool add, bool clear_all_ports)
+/* clean the an entry from the HW and write there a full new entry */
+static int mlxsw_sp_port_smid_full_entry(struct mlxsw_sp *mlxsw_sp,
+ u16 mid_idx)
{
- struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
char *smid_pl;
int err, i;
@@ -1218,12 +1218,29 @@ static int mlxsw_sp_port_smid_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 mid,
if (!smid_pl)
return -ENOMEM;
- mlxsw_reg_smid_pack(smid_pl, mid, mlxsw_sp_port->local_port, add);
- if (clear_all_ports) {
- for (i = 1; i < mlxsw_core_max_ports(mlxsw_sp->core); i++)
- if (mlxsw_sp->ports[i])
- mlxsw_reg_smid_port_mask_set(smid_pl, i, 1);
+ mlxsw_reg_smid_pack(smid_pl, mid_idx, 0, false);
+ for (i = 1; i < mlxsw_core_max_ports(mlxsw_sp->core); i++) {
+ if (mlxsw_sp->ports[i])
+ mlxsw_reg_smid_port_mask_set(smid_pl, i, 1);
}
+
+ err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(smid), smid_pl);
+ kfree(smid_pl);
+ return err;
+}
+
+static int mlxsw_sp_port_smid_set(struct mlxsw_sp_port *mlxsw_sp_port,
+ u16 mid_idx, bool add)
+{
+ struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
+ char *smid_pl;
+ int err;
+
+ smid_pl = kmalloc(MLXSW_REG_SMID_LEN, GFP_KERNEL);
+ if (!smid_pl)
+ return -ENOMEM;
+
+ mlxsw_reg_smid_pack(smid_pl, mid_idx, mlxsw_sp_port->local_port, add);
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(smid), smid_pl);
kfree(smid_pl);
return err;
@@ -1336,10 +1353,11 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
return -ENOMEM;
}
is_new_mid = true;
+ mlxsw_sp_port_smid_full_entry(mlxsw_sp, mid->mid);
}
set_bit(mlxsw_sp_port->local_port, mid->ports_in_mid);
- err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, true, is_new_mid);
+ err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, true);
if (err) {
netdev_err(dev, "Unable to set SMID\n");
goto err_out;
@@ -1458,7 +1476,7 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
return -EINVAL;
}
- err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, false, false);
+ err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, false);
if (err)
netdev_err(dev, "Unable to remove port from SMID\n");
--
2.9.5
^ permalink raw reply related
* [patch net-next 06/16] mlxsw: spectrum_switchdev: Attach mid id allocation to HW write
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Attach mid getting and releasing mid id to the HW write / remove, and add
a flag to indicate whether the mid is in the HW. It is done because mid id
is also HW index to this mid.
This change allows adding in the following patches the ability to have a
mid in the mdb cache but not in the HW. It will be useful for being able
to disable the multicast.
It means that the mdb is being written / delete to the HW in the mid
allocation / removing function, not after them.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 1 +
.../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 88 ++++++++++++++--------
2 files changed, 56 insertions(+), 33 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
index 6fd0afe..e907ec4 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
@@ -94,6 +94,7 @@ struct mlxsw_sp_mid {
unsigned char addr[ETH_ALEN];
u16 fid;
u16 mid;
+ bool in_hw;
unsigned long *ports_in_mid; /* bits array */
};
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 09ead97..9dd05d8 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -1260,6 +1260,42 @@ mlxsw_sp_mid *__mlxsw_sp_mc_get(struct mlxsw_sp_bridge_device *bridge_device,
return NULL;
}
+static bool
+mlxsw_sp_mc_write_mdb_entry(struct mlxsw_sp *mlxsw_sp,
+ struct mlxsw_sp_mid *mid)
+{
+ u16 mid_idx;
+ int err;
+
+ mid_idx = find_first_zero_bit(mlxsw_sp->bridge->mids_bitmap,
+ MLXSW_SP_MID_MAX);
+ if (mid_idx == MLXSW_SP_MID_MAX)
+ return false;
+
+ mid->mid = mid_idx;
+ err = mlxsw_sp_port_smid_full_entry(mlxsw_sp, mid_idx);
+ if (err)
+ return false;
+
+ err = mlxsw_sp_port_mdb_op(mlxsw_sp, mid->addr, mid->fid, mid_idx,
+ true);
+ if (err)
+ return false;
+
+ set_bit(mid_idx, mlxsw_sp->bridge->mids_bitmap);
+ mid->in_hw = true;
+ return true;
+}
+
+static int mlxsw_sp_mc_remove_mdb_entry(struct mlxsw_sp *mlxsw_sp,
+ struct mlxsw_sp_mid *mid)
+{
+ clear_bit(mid->mid, mlxsw_sp->bridge->mids_bitmap);
+ mid->in_hw = false;
+ return mlxsw_sp_port_mdb_op(mlxsw_sp, mid->addr, mid->fid, mid->mid,
+ false);
+}
+
static struct
mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
struct mlxsw_sp_bridge_device *bridge_device,
@@ -1268,12 +1304,6 @@ mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
{
struct mlxsw_sp_mid *mid;
size_t alloc_size;
- u16 mid_idx;
-
- mid_idx = find_first_zero_bit(mlxsw_sp->bridge->mids_bitmap,
- MLXSW_SP_MID_MAX);
- if (mid_idx == MLXSW_SP_MID_MAX)
- return NULL;
mid = kzalloc(sizeof(*mid), GFP_KERNEL);
if (!mid)
@@ -1281,36 +1311,43 @@ mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
alloc_size = sizeof(unsigned long) *
BITS_TO_LONGS(mlxsw_core_max_ports(mlxsw_sp->core));
+
mid->ports_in_mid = kzalloc(alloc_size, GFP_KERNEL);
- if (!mid->ports_in_mid) {
- kfree(mid);
- return NULL;
- }
+ if (!mid->ports_in_mid)
+ goto err_ports_in_mid_alloc;
- set_bit(mid_idx, mlxsw_sp->bridge->mids_bitmap);
ether_addr_copy(mid->addr, addr);
mid->fid = fid;
- mid->mid = mid_idx;
+ mid->in_hw = false;
+ if (!mlxsw_sp_mc_write_mdb_entry(mlxsw_sp, mid))
+ goto err_write_mdb_entry;
+
list_add_tail(&mid->list, &bridge_device->mids_list);
return mid;
+
+err_write_mdb_entry:
+ kfree(mid->ports_in_mid);
+err_ports_in_mid_alloc:
+ kfree(mid);
+ return NULL;
}
static int mlxsw_sp_port_remove_from_mid(struct mlxsw_sp_port *mlxsw_sp_port,
struct mlxsw_sp_mid *mid)
{
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
+ int err = 0;
clear_bit(mlxsw_sp_port->local_port, mid->ports_in_mid);
if (bitmap_empty(mid->ports_in_mid,
mlxsw_core_max_ports(mlxsw_sp->core))) {
+ err = mlxsw_sp_mc_remove_mdb_entry(mlxsw_sp, mid);
list_del(&mid->list);
- clear_bit(mid->mid, mlxsw_sp->bridge->mids_bitmap);
kfree(mid->ports_in_mid);
kfree(mid);
- return 1;
}
- return 0;
+ return err;
}
static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
@@ -1324,7 +1361,6 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
struct mlxsw_sp_bridge_device *bridge_device;
struct mlxsw_sp_bridge_port *bridge_port;
struct mlxsw_sp_mid *mid;
- bool is_new_mid = false;
u16 fid_index;
int err = 0;
@@ -1352,8 +1388,6 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
netdev_err(dev, "Unable to allocate MC group\n");
return -ENOMEM;
}
- is_new_mid = true;
- mlxsw_sp_port_smid_full_entry(mlxsw_sp, mid->mid);
}
set_bit(mlxsw_sp_port->local_port, mid->ports_in_mid);
@@ -1363,15 +1397,6 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
goto err_out;
}
- if (is_new_mid) {
- err = mlxsw_sp_port_mdb_op(mlxsw_sp, mdb->addr, fid_index,
- mid->mid, true);
- if (err) {
- netdev_err(dev, "Unable to set MC SFD\n");
- goto err_out;
- }
- }
-
return 0;
err_out:
@@ -1481,12 +1506,9 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
netdev_err(dev, "Unable to remove port from SMID\n");
mid_idx = mid->mid;
- if (mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid)) {
- err = mlxsw_sp_port_mdb_op(mlxsw_sp, mdb->addr, fid_index,
- mid_idx, false);
- if (err)
- netdev_err(dev, "Unable to remove MC SFD\n");
- }
+ err = mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid);
+ if (err)
+ netdev_err(dev, "Unable to remove MC SFD\n");
return err;
}
--
2.9.5
^ permalink raw reply related
* [patch net-next 04/16] mlxsw: spectrum_switchdev: Save mids list per bridge device
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Instead of saving all the mids in the same list, save them per vlan
device. This change allows a more efficient mid find.
Also, in the next patches, there will be added a lot of loops over all the
mids in bridge device for multicast disable, mrouter change and ndb flush.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
.../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 49 +++++++++++-----------
1 file changed, 24 insertions(+), 25 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index cb2275ed..2ba8a44 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -67,7 +67,6 @@ struct mlxsw_sp_bridge {
u32 ageing_time;
bool vlan_enabled_exists;
struct list_head bridges_list;
- struct list_head mids_list;
DECLARE_BITMAP(mids_bitmap, MLXSW_SP_MID_MAX);
const struct mlxsw_sp_bridge_ops *bridge_8021q_ops;
const struct mlxsw_sp_bridge_ops *bridge_8021d_ops;
@@ -77,6 +76,7 @@ struct mlxsw_sp_bridge_device {
struct net_device *dev;
struct list_head list;
struct list_head ports_list;
+ struct list_head mids_list;
u8 vlan_enabled:1,
multicast_enabled:1;
const struct mlxsw_sp_bridge_ops *ops;
@@ -161,6 +161,7 @@ mlxsw_sp_bridge_device_create(struct mlxsw_sp_bridge *bridge,
} else {
bridge_device->ops = bridge->bridge_8021d_ops;
}
+ INIT_LIST_HEAD(&bridge_device->mids_list);
list_add(&bridge_device->list, &bridge->bridges_list);
return bridge_device;
@@ -170,10 +171,17 @@ static void
mlxsw_sp_bridge_device_destroy(struct mlxsw_sp_bridge *bridge,
struct mlxsw_sp_bridge_device *bridge_device)
{
+ struct mlxsw_sp_mid *mid, *tmp;
+
list_del(&bridge_device->list);
if (bridge_device->vlan_enabled)
bridge->vlan_enabled_exists = false;
WARN_ON(!list_empty(&bridge_device->ports_list));
+ list_for_each_entry_safe(mid, tmp, &bridge_device->mids_list, list) {
+ list_del(&mid->list);
+ clear_bit(mid->mid, bridge->mids_bitmap);
+ kfree(mid);
+ }
kfree(bridge_device);
}
@@ -1221,22 +1229,25 @@ static int mlxsw_sp_port_smid_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 mid,
return err;
}
-static struct mlxsw_sp_mid *__mlxsw_sp_mc_get(struct mlxsw_sp *mlxsw_sp,
- const unsigned char *addr,
- u16 fid)
+static struct
+mlxsw_sp_mid *__mlxsw_sp_mc_get(struct mlxsw_sp_bridge_device *bridge_device,
+ const unsigned char *addr,
+ u16 fid)
{
struct mlxsw_sp_mid *mid;
- list_for_each_entry(mid, &mlxsw_sp->bridge->mids_list, list) {
+ list_for_each_entry(mid, &bridge_device->mids_list, list) {
if (ether_addr_equal(mid->addr, addr) && mid->fid == fid)
return mid;
}
return NULL;
}
-static struct mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
- const unsigned char *addr,
- u16 fid)
+static struct
+mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
+ struct mlxsw_sp_bridge_device *bridge_device,
+ const unsigned char *addr,
+ u16 fid)
{
struct mlxsw_sp_mid *mid;
size_t alloc_size;
@@ -1263,7 +1274,7 @@ static struct mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
ether_addr_copy(mid->addr, addr);
mid->fid = fid;
mid->mid = mid_idx;
- list_add_tail(&mid->list, &mlxsw_sp->bridge->mids_list);
+ list_add_tail(&mid->list, &bridge_device->mids_list);
return mid;
}
@@ -1316,9 +1327,10 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
fid_index = mlxsw_sp_fid_index(mlxsw_sp_port_vlan->fid);
- mid = __mlxsw_sp_mc_get(mlxsw_sp, mdb->addr, fid_index);
+ mid = __mlxsw_sp_mc_get(bridge_device, mdb->addr, fid_index);
if (!mid) {
- mid = __mlxsw_sp_mc_alloc(mlxsw_sp, mdb->addr, fid_index);
+ mid = __mlxsw_sp_mc_alloc(mlxsw_sp, bridge_device, mdb->addr,
+ fid_index);
if (!mid) {
netdev_err(dev, "Unable to allocate MC group\n");
return -ENOMEM;
@@ -1440,7 +1452,7 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
fid_index = mlxsw_sp_fid_index(mlxsw_sp_port_vlan->fid);
- mid = __mlxsw_sp_mc_get(mlxsw_sp, mdb->addr, fid_index);
+ mid = __mlxsw_sp_mc_get(bridge_device, mdb->addr, fid_index);
if (!mid) {
netdev_err(dev, "Unable to remove port from MC DB\n");
return -EINVAL;
@@ -1995,17 +2007,6 @@ static void mlxsw_sp_fdb_fini(struct mlxsw_sp *mlxsw_sp)
}
-static void mlxsw_sp_mids_fini(struct mlxsw_sp *mlxsw_sp)
-{
- struct mlxsw_sp_mid *mid, *tmp;
-
- list_for_each_entry_safe(mid, tmp, &mlxsw_sp->bridge->mids_list, list) {
- list_del(&mid->list);
- clear_bit(mid->mid, mlxsw_sp->bridge->mids_bitmap);
- kfree(mid);
- }
-}
-
int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp)
{
struct mlxsw_sp_bridge *bridge;
@@ -2017,7 +2018,6 @@ int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp)
bridge->mlxsw_sp = mlxsw_sp;
INIT_LIST_HEAD(&mlxsw_sp->bridge->bridges_list);
- INIT_LIST_HEAD(&mlxsw_sp->bridge->mids_list);
bridge->bridge_8021q_ops = &mlxsw_sp_bridge_8021q_ops;
bridge->bridge_8021d_ops = &mlxsw_sp_bridge_8021d_ops;
@@ -2028,7 +2028,6 @@ int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp)
void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp)
{
mlxsw_sp_fdb_fini(mlxsw_sp);
- mlxsw_sp_mids_fini(mlxsw_sp);
WARN_ON(!list_empty(&mlxsw_sp->bridge->bridges_list));
kfree(mlxsw_sp->bridge);
}
--
2.9.5
^ permalink raw reply related
* [patch net-next 03/16] mlxsw: spectrum_switchdev: Remove reference count from mid
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Since there is a bitmap for the ports registered to each mid, there is no
need for a ref count, since it will always be the number of set bits in
this bitmap. Any check of the ref count was replaced with checking if the
bitmap is empty.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 1 -
.../net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 20 ++++++++++----------
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
index 0424bee..6fd0afe 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
@@ -94,7 +94,6 @@ struct mlxsw_sp_mid {
unsigned char addr[ETH_ALEN];
u16 fid;
u16 mid;
- unsigned int ref_count;
unsigned long *ports_in_mid; /* bits array */
};
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 0fde16a..cb2275ed 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -1263,19 +1263,19 @@ static struct mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
ether_addr_copy(mid->addr, addr);
mid->fid = fid;
mid->mid = mid_idx;
- mid->ref_count = 0;
list_add_tail(&mid->list, &mlxsw_sp->bridge->mids_list);
return mid;
}
-static int __mlxsw_sp_mc_dec_ref(struct mlxsw_sp_port *mlxsw_sp_port,
- struct mlxsw_sp_mid *mid)
+static int mlxsw_sp_port_remove_from_mid(struct mlxsw_sp_port *mlxsw_sp_port,
+ struct mlxsw_sp_mid *mid)
{
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
clear_bit(mlxsw_sp_port->local_port, mid->ports_in_mid);
- if (--mid->ref_count == 0) {
+ if (bitmap_empty(mid->ports_in_mid,
+ mlxsw_core_max_ports(mlxsw_sp->core))) {
list_del(&mid->list);
clear_bit(mid->mid, mlxsw_sp->bridge->mids_bitmap);
kfree(mid->ports_in_mid);
@@ -1296,6 +1296,7 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
struct mlxsw_sp_bridge_device *bridge_device;
struct mlxsw_sp_bridge_port *bridge_port;
struct mlxsw_sp_mid *mid;
+ bool is_new_mid = false;
u16 fid_index;
int err = 0;
@@ -1322,18 +1323,17 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
netdev_err(dev, "Unable to allocate MC group\n");
return -ENOMEM;
}
+ is_new_mid = true;
}
- mid->ref_count++;
set_bit(mlxsw_sp_port->local_port, mid->ports_in_mid);
- err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, true,
- mid->ref_count == 1);
+ err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, true, is_new_mid);
if (err) {
netdev_err(dev, "Unable to set SMID\n");
goto err_out;
}
- if (mid->ref_count == 1) {
+ if (is_new_mid) {
err = mlxsw_sp_port_mdb_op(mlxsw_sp, mdb->addr, fid_index,
mid->mid, true);
if (err) {
@@ -1345,7 +1345,7 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
return 0;
err_out:
- __mlxsw_sp_mc_dec_ref(mlxsw_sp_port, mid);
+ mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid);
return err;
}
@@ -1451,7 +1451,7 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
netdev_err(dev, "Unable to remove port from SMID\n");
mid_idx = mid->mid;
- if (__mlxsw_sp_mc_dec_ref(mlxsw_sp_port, mid)) {
+ if (mlxsw_sp_port_remove_from_mid(mlxsw_sp_port, mid)) {
err = mlxsw_sp_port_mdb_op(mlxsw_sp, mdb->addr, fid_index,
mid_idx, false);
if (err)
--
2.9.5
^ permalink raw reply related
* [patch net-next 02/16] mlxsw: spectrum_switchdev: Add a ports bitmap to the mid db
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Add a bitmap of ports to the mid struct to hold the ports that are
registered to this mid.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 1 +
.../net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 20 +++++++++++++++++---
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
index 7180d8f..0424bee 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
@@ -95,6 +95,7 @@ struct mlxsw_sp_mid {
u16 fid;
u16 mid;
unsigned int ref_count;
+ unsigned long *ports_in_mid; /* bits array */
};
enum mlxsw_sp_span_type {
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 22f8d74..0fde16a 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -1239,6 +1239,7 @@ static struct mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
u16 fid)
{
struct mlxsw_sp_mid *mid;
+ size_t alloc_size;
u16 mid_idx;
mid_idx = find_first_zero_bit(mlxsw_sp->bridge->mids_bitmap,
@@ -1250,6 +1251,14 @@ static struct mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
if (!mid)
return NULL;
+ alloc_size = sizeof(unsigned long) *
+ BITS_TO_LONGS(mlxsw_core_max_ports(mlxsw_sp->core));
+ mid->ports_in_mid = kzalloc(alloc_size, GFP_KERNEL);
+ if (!mid->ports_in_mid) {
+ kfree(mid);
+ return NULL;
+ }
+
set_bit(mid_idx, mlxsw_sp->bridge->mids_bitmap);
ether_addr_copy(mid->addr, addr);
mid->fid = fid;
@@ -1260,12 +1269,16 @@ static struct mlxsw_sp_mid *__mlxsw_sp_mc_alloc(struct mlxsw_sp *mlxsw_sp,
return mid;
}
-static int __mlxsw_sp_mc_dec_ref(struct mlxsw_sp *mlxsw_sp,
+static int __mlxsw_sp_mc_dec_ref(struct mlxsw_sp_port *mlxsw_sp_port,
struct mlxsw_sp_mid *mid)
{
+ struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
+
+ clear_bit(mlxsw_sp_port->local_port, mid->ports_in_mid);
if (--mid->ref_count == 0) {
list_del(&mid->list);
clear_bit(mid->mid, mlxsw_sp->bridge->mids_bitmap);
+ kfree(mid->ports_in_mid);
kfree(mid);
return 1;
}
@@ -1311,6 +1324,7 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
}
}
mid->ref_count++;
+ set_bit(mlxsw_sp_port->local_port, mid->ports_in_mid);
err = mlxsw_sp_port_smid_set(mlxsw_sp_port, mid->mid, true,
mid->ref_count == 1);
@@ -1331,7 +1345,7 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
return 0;
err_out:
- __mlxsw_sp_mc_dec_ref(mlxsw_sp, mid);
+ __mlxsw_sp_mc_dec_ref(mlxsw_sp_port, mid);
return err;
}
@@ -1437,7 +1451,7 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
netdev_err(dev, "Unable to remove port from SMID\n");
mid_idx = mid->mid;
- if (__mlxsw_sp_mc_dec_ref(mlxsw_sp, mid)) {
+ if (__mlxsw_sp_mc_dec_ref(mlxsw_sp_port, mid)) {
err = mlxsw_sp_port_mdb_op(mlxsw_sp, mdb->addr, fid_index,
mid_idx, false);
if (err)
--
2.9.5
^ permalink raw reply related
* [patch net-next 01/16] mlxsw: spectrum_switchdev: Change mc_router to mrouter
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
In-Reply-To: <20170920141516.1402-1-jiri@resnulli.us>
From: Nogah Frankel <nogahf@mellanox.com>
Change the naming of mc_router to mrouter to keep consistency.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
.../net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index d39ffbf..22f8d74 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -699,10 +699,10 @@ static int mlxsw_sp_port_attr_br_vlan_set(struct mlxsw_sp_port *mlxsw_sp_port,
return -EINVAL;
}
-static int mlxsw_sp_port_attr_mc_router_set(struct mlxsw_sp_port *mlxsw_sp_port,
- struct switchdev_trans *trans,
- struct net_device *orig_dev,
- bool is_port_mc_router)
+static int mlxsw_sp_port_attr_mrouter_set(struct mlxsw_sp_port *mlxsw_sp_port,
+ struct switchdev_trans *trans,
+ struct net_device *orig_dev,
+ bool is_port_mrouter)
{
struct mlxsw_sp_bridge_port *bridge_port;
int err;
@@ -720,12 +720,12 @@ static int mlxsw_sp_port_attr_mc_router_set(struct mlxsw_sp_port *mlxsw_sp_port,
err = mlxsw_sp_bridge_port_flood_table_set(mlxsw_sp_port, bridge_port,
MLXSW_SP_FLOOD_TYPE_MC,
- is_port_mc_router);
+ is_port_mrouter);
if (err)
return err;
out:
- bridge_port->mrouter = is_port_mc_router;
+ bridge_port->mrouter = is_port_mrouter;
return 0;
}
@@ -793,9 +793,9 @@ static int mlxsw_sp_port_attr_set(struct net_device *dev,
attr->u.vlan_filtering);
break;
case SWITCHDEV_ATTR_ID_PORT_MROUTER:
- err = mlxsw_sp_port_attr_mc_router_set(mlxsw_sp_port, trans,
- attr->orig_dev,
- attr->u.mrouter);
+ err = mlxsw_sp_port_attr_mrouter_set(mlxsw_sp_port, trans,
+ attr->orig_dev,
+ attr->u.mrouter);
break;
case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED:
err = mlxsw_sp_port_mc_disabled_set(mlxsw_sp_port, trans,
--
2.9.5
^ permalink raw reply related
* [patch net-next 00/16] mlxsw: Multicast flood update
From: Jiri Pirko @ 2017-09-20 14:15 UTC (permalink / raw)
To: netdev; +Cc: davem, nogahf, idosch, mlxsw
From: Jiri Pirko <jiri@mellanox.com>
Nogah says:
Currently, there are four erroneous flows in MC flood:
1. When MC is disabled it affects only the flood table for unregistered
MC packets, but packets that match an entry in the MDB are unaffected.
2. When MC is disabled, MC packets are being sent to all the ports in the
bridge (like BC and link-local MC packets) regardless of the designated
flag (BR_MCAST_FLAG).
3. When a port is being deleted from a bridge it might remain in the MDB.
4. When MC is enabled packets are flooded to the mrouter ports only if
they don't match any entry in the MDB, when they should always be
flooded to them.
What these problems have in common is the discrepancy between how the
hardware handles MDB and mcast flood, and how the driver does it. Each
of these problems needs fixing either in the MDB code, or in mcast flood
code, and some in both.
Patches 1-6 change the way the MDB is handled in the driver to make the
following changes easier.
Patches 7-8 fix problem number 1 by removing the MDB from the HW when MC
is being disabled and restoring it when it is being enabled.
Patches 9-10 fix problem number 2 by offloading the flood table by the
appropriate flag.
Patch 11 fixes problem number 3 by adding MDB flush to the port removal.
Patches 12-14 fix problem number 4 by adding the mrouter ports to every
MDB entry in the HW to mimic the wanted behaviour.
Nogah Frankel (16):
mlxsw: spectrum_switchdev: Change mc_router to mrouter
mlxsw: spectrum_switchdev: Add a ports bitmap to the mid db
mlxsw: spectrum_switchdev: Remove reference count from mid
mlxsw: spectrum_switchdev: Save mids list per bridge device
mlxsw: spectrum_switchdev: Break smid write function
mlxsw: spectrum_switchdev: Attach mid id allocation to HW write
mlxsw: spectrum_switchdev: Break mid deletion into two function
mlxsw: spectrum_switchdev: Don't write mids to the HW when mc is
disabled
mlxsw: spectrum_switchdev: Disable mdb when mc is disabled
mlxsw: spectrum_switchdev: Use generic mc flood function
mlxsw: spectrum_switchdev: Flood mc when mc is disabled by user flag
mlxsw: spectrum_switchdev: Flush the mdb when a port is being removed
mlxsw: spectrum_switchdev: Flood all mc packets to mrouter ports
mlxsw: spectrum_switchdev: Update the mdb of mrouter port change
mlxsw: spectrum_switchdev: Remove mrouter flood in mdb flush
mlxsw: spectrum_switchdev: Consider mrouter status for mdb changes
drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 3 +-
.../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 417 ++++++++++++++++-----
2 files changed, 323 insertions(+), 97 deletions(-)
--
2.9.5
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Paweł Staszewski @ 2017-09-20 14:03 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Wei Wang, Linux Kernel Network Developers, edumazet
In-Reply-To: <1505915099.29839.95.camel@edumazet-glaptop3.roam.corp.google.com>
Nit much more after adding this patch
https://bugzilla.kernel.org/attachment.cgi?id=258529
W dniu 2017-09-20 o 15:44, Eric Dumazet pisze:
> On Wed, 2017-09-20 at 15:39 +0200, Paweł Staszewski wrote:
>> W dniu 2017-09-20 o 15:34, Eric Dumazet pisze:
>>> Could you try this debug patch ?
>>>
>>> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
>>> index f535779d9dc1dfe36934c2abba4e43d053ac5d6f..1eaa3553a724dc8c048f67b556337072d5addc82 100644
>>> --- a/include/linux/netdevice.h
>>> +++ b/include/linux/netdevice.h
>>> @@ -3331,7 +3331,14 @@ void netdev_run_todo(void);
>>> */
>>> static inline void dev_put(struct net_device *dev)
>>> {
>>> - this_cpu_dec(*dev->pcpu_refcnt);
>>> + int __percpu *pref = READ_ONCE(dev->pcpu_refcnt);
>>> +
>>> + if (!pref) {
>>> + pr_err("no pcpu_refcnt on dev %p(%s) state %d dismantle %d\n",
>>> + dev, dev->name, dev->reg_state, dev->dismantle);
>>> + BUG();
>>> + }
>>> + this_cpu_dec(*pref);
>>> }
>>>
>>> /**
>>>
>>>
>>>
>> You want me to add this patch to what kernel version ?
>> currently im after git bisect reset - so mainline stable
>>
> Simply us the latest net-next as mentioned in the thread title, thanks.
>
>
>
^ permalink raw reply
* Re: [PATCH net-next 08/10] net/smc: introduce a delay
From: Leon Romanovsky @ 2017-09-20 14:03 UTC (permalink / raw)
To: Ursula Braun
Cc: davem, netdev, linux-rdma, linux-s390, jwi, schwidefsky,
heiko.carstens, raspl
In-Reply-To: <20170920115813.63745-9-ubraun@linux.vnet.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 388 bytes --]
On Wed, Sep 20, 2017 at 01:58:11PM +0200, Ursula Braun wrote:
> The number of outstanding work requests is limited. If all work
> requests are in use, tx processing is postponed to another scheduling
> of the tx worker. Switch to a delayed worker to have a gap for tx
> completion queue events before the next retry.
>
How will delay prevent and protect the resource exhausting?
Thanks
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH net-next 3/4] qed: Fix maximum number of CQs for iWARP
From: Leon Romanovsky @ 2017-09-20 13:50 UTC (permalink / raw)
To: Kalderon, Michal
Cc: davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, Elior, Ariel
In-Reply-To: <CY1PR0701MB2012B07A2FCD08D598CCFEDB88610-UpKza+2NMNLHMJvQ0dyT705OhdzP3rhOnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 1158 bytes --]
On Wed, Sep 20, 2017 at 05:46:35AM +0000, Kalderon, Michal wrote:
> From: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> Sent: Tuesday, September 19, 2017 8:46 PM
> On Tue, Sep 19, 2017 at 08:26:18PM +0300, Michal Kalderon wrote:
> >> The maximum number of CQs supported is bound to the number
> >> of connections supported, which differs between RoCE and iWARP.
> >>
> >> This fixes a crash that occurred in iWARP when running 1000 sessions
> >> using perftest.
> >>
> >> Signed-off-by: Michal Kalderon <Michal.Kalderon-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org>
> >> Signed-off-by: Ariel Elior <Ariel.Elior-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org>
> >> ---
> >
> >It is worth to add Fixes line.
> >
> >Thanks
> The original code was there before we had iWARP support, so this doesn't
> exactly fix an older commit, but fixes iWARP code in general.
So add Fixes which points to iWARP ennoblement patch.
Thanks
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Eric Dumazet @ 2017-09-20 13:44 UTC (permalink / raw)
To: Paweł Staszewski; +Cc: Wei Wang, Linux Kernel Network Developers, edumazet
In-Reply-To: <686ea8f0-d9f8-82bc-ca68-f1d97614aa6b@itcare.pl>
On Wed, 2017-09-20 at 15:39 +0200, Paweł Staszewski wrote:
>
> W dniu 2017-09-20 o 15:34, Eric Dumazet pisze:
> > Could you try this debug patch ?
> >
> > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> > index f535779d9dc1dfe36934c2abba4e43d053ac5d6f..1eaa3553a724dc8c048f67b556337072d5addc82 100644
> > --- a/include/linux/netdevice.h
> > +++ b/include/linux/netdevice.h
> > @@ -3331,7 +3331,14 @@ void netdev_run_todo(void);
> > */
> > static inline void dev_put(struct net_device *dev)
> > {
> > - this_cpu_dec(*dev->pcpu_refcnt);
> > + int __percpu *pref = READ_ONCE(dev->pcpu_refcnt);
> > +
> > + if (!pref) {
> > + pr_err("no pcpu_refcnt on dev %p(%s) state %d dismantle %d\n",
> > + dev, dev->name, dev->reg_state, dev->dismantle);
> > + BUG();
> > + }
> > + this_cpu_dec(*pref);
> > }
> >
> > /**
> >
> >
> >
>
> You want me to add this patch to what kernel version ?
> currently im after git bisect reset - so mainline stable
>
Simply us the latest net-next as mentioned in the thread title, thanks.
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Paweł Staszewski @ 2017-09-20 13:39 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Wei Wang, Linux Kernel Network Developers, edumazet
In-Reply-To: <1505914479.29839.92.camel@edumazet-glaptop3.roam.corp.google.com>
W dniu 2017-09-20 o 15:34, Eric Dumazet pisze:
> Could you try this debug patch ?
>
> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> index f535779d9dc1dfe36934c2abba4e43d053ac5d6f..1eaa3553a724dc8c048f67b556337072d5addc82 100644
> --- a/include/linux/netdevice.h
> +++ b/include/linux/netdevice.h
> @@ -3331,7 +3331,14 @@ void netdev_run_todo(void);
> */
> static inline void dev_put(struct net_device *dev)
> {
> - this_cpu_dec(*dev->pcpu_refcnt);
> + int __percpu *pref = READ_ONCE(dev->pcpu_refcnt);
> +
> + if (!pref) {
> + pr_err("no pcpu_refcnt on dev %p(%s) state %d dismantle %d\n",
> + dev, dev->name, dev->reg_state, dev->dismantle);
> + BUG();
> + }
> + this_cpu_dec(*pref);
> }
>
> /**
>
>
>
You want me to add this patch to what kernel version ?
currently im after git bisect reset - so mainline stable
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Eric Dumazet @ 2017-09-20 13:37 UTC (permalink / raw)
To: Paweł Staszewski; +Cc: Wei Wang, Linux Kernel Network Developers, edumazet
In-Reply-To: <1505914479.29839.92.camel@edumazet-glaptop3.roam.corp.google.com>
On Wed, 2017-09-20 at 06:34 -0700, Eric Dumazet wrote:
> Could you try this debug patch ?
>
> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> index f535779d9dc1dfe36934c2abba4e43d053ac5d6f..1eaa3553a724dc8c048f67b556337072d5addc82 100644
> --- a/include/linux/netdevice.h
> +++ b/include/linux/netdevice.h
> @@ -3331,7 +3331,14 @@ void netdev_run_todo(void);
> */
> static inline void dev_put(struct net_device *dev)
> {
> - this_cpu_dec(*dev->pcpu_refcnt);
> + int __percpu *pref = READ_ONCE(dev->pcpu_refcnt);
> +
> + if (!pref) {
> + pr_err("no pcpu_refcnt on dev %p(%s) state %d dismantle %d\n",
> + dev, dev->name, dev->reg_state, dev->dismantle);
> + BUG();
> + }
> + this_cpu_dec(*pref);
> }
>
> /**
>
And since the console will be filled by stack trace, maybe instead of
BUG() use some infinite loop ?
for (;;)
cpu_relax();
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Eric Dumazet @ 2017-09-20 13:34 UTC (permalink / raw)
To: Paweł Staszewski; +Cc: Wei Wang, Linux Kernel Network Developers, edumazet
In-Reply-To: <07c29702-cd0b-32af-df0a-83ad24b8c785@itcare.pl>
Could you try this debug patch ?
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index f535779d9dc1dfe36934c2abba4e43d053ac5d6f..1eaa3553a724dc8c048f67b556337072d5addc82 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -3331,7 +3331,14 @@ void netdev_run_todo(void);
*/
static inline void dev_put(struct net_device *dev)
{
- this_cpu_dec(*dev->pcpu_refcnt);
+ int __percpu *pref = READ_ONCE(dev->pcpu_refcnt);
+
+ if (!pref) {
+ pr_err("no pcpu_refcnt on dev %p(%s) state %d dismantle %d\n",
+ dev, dev->name, dev->reg_state, dev->dismantle);
+ BUG();
+ }
+ this_cpu_dec(*pref);
}
/**
^ permalink raw reply related
* Re: [PATCH iproute2 json v2 05/27] ip: ipaddress.c: add support for json output
From: Sabrina Dubroca @ 2017-09-20 13:33 UTC (permalink / raw)
To: Julien Fortin; +Cc: netdev, roopa, nikolay, dsa
In-Reply-To: <20170817173614.54987-6-julien@cumulusnetworks.com>
Hi Julien,
2017-08-17, 10:35:52 -0700, Julien Fortin wrote:
> From: Julien Fortin <julien@cumulusnetworks.com>
>
> This patch converts all output (mostly fprintfs) to the new ip_print api
> which handle both regular and json output.
> Initialize a json_writer and open an array object if -json was specified.
> Note that the JSON attribute naming follows the NETLINK_ATTRIBUTE naming.
[snip]
This patch (commit d0e720111aad) changed the output of "ip addr":
Before:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
After:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128scope host
valid_lft forever preferred_lft forever
The space following the mask is missing.
Could you have a look?
Thanks.
--
Sabrina
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Paweł Staszewski @ 2017-09-20 13:16 UTC (permalink / raw)
To: Eric Dumazet, Wei Wang; +Cc: Linux Kernel Network Developers, edumazet
In-Reply-To: <1505913075.29839.90.camel@edumazet-glaptop3.roam.corp.google.com>
Yes sorry for top-posting also.
Configuration:
Ethernet devices:
lspci | grep Etherne
02:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network
Connection (rev 01)
02:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network
Connection (rev 01)
04:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit
SFI/SFP+ Network Connection (rev 01)
04:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit
SFI/SFP+ Network Connection (rev 01)
07:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit
SFI/SFP+ Network Connection (rev 01)
07:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit
SFI/SFP+ Network Connection (rev 01)
81:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit
SFI/SFP+ Network Connection (rev 01)
81:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit
SFI/SFP+ Network Connection (rev 01)
83:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit
SFI/SFP+ Network Connection (rev 01)
83:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit
SFI/SFP+ Network Connection (rev 01)
ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode
DEFAULT qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state
DOWN mode DEFAULT qlen 8192
link/ether 00:25:90:e4:97:9a brd ff:ff:ff:ff:ff:ff
3: enp2s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state
DOWN mode DEFAULT qlen 8192
link/ether 00:25:90:e4:97:9b brd ff:ff:ff:ff:ff:ff
4: enp4s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq
master bond1 state UP mode DEFAULT qlen 8192
link/ether 0c:c4:7a:bc:b8:68 brd ff:ff:ff:ff:ff:ff
5: enp4s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq
master bond0 state UP mode DEFAULT qlen 8192
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
6: enp7s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq
master bond1 state UP mode DEFAULT qlen 8192
link/ether 0c:c4:7a:bc:b8:68 brd ff:ff:ff:ff:ff:ff
7: enp7s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq
master bond0 state UP mode DEFAULT qlen 8192
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
8: enp129s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq
master bond1 state UP mode DEFAULT qlen 8192
link/ether 0c:c4:7a:bc:b8:68 brd ff:ff:ff:ff:ff:ff
9: enp129s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq
master bond0 state UP mode DEFAULT qlen 8192
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
10: enp131s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc
mq master bond1 state UP mode DEFAULT qlen 8192
link/ether 0c:c4:7a:bc:b8:68 brd ff:ff:ff:ff:ff:ff
11: enp131s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc
mq master bond0 state UP mode DEFAULT qlen 8192
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
12: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
13: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
14: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:68 brd ff:ff:ff:ff:ff:ff
15: vlan4091@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
16: vlan4032@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
17: vlan514@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
18: vlan87@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
19: vlan518@bond1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:68 brd ff:ff:ff:ff:ff:ff
20: vlan646@bond1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:68 brd ff:ff:ff:ff:ff:ff
21: vlan370@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
22: vlan3212@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
23: vlan746@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:bc:b8:69 brd ff:ff:ff:ff:ff:ff
There are bonds:
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: enp4s0f1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 0c:c4:7a:bc:b8:69
Slave queue ID: 0
Slave Interface: enp7s0f1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:25:90:e3:dd:9d
Slave queue ID: 0
Slave Interface: enp129s0f1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:25:90:e3:da:e1
Slave queue ID: 0
Slave Interface: enp131s0f1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 0c:c4:7a:bc:b1:fd
Slave queue ID: 0
cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: enp4s0f0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 0c:c4:7a:bc:b8:68
Slave queue ID: 0
Slave Interface: enp7s0f0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:25:90:e3:dd:9c
Slave queue ID: 0
Slave Interface: enp129s0f0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:25:90:e3:da:e0
Slave queue ID: 0
Slave Interface: enp131s0f0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 0c:c4:7a:bc:b1:fc
Slave queue ID: 0
About routing - installed frr with bgp/zebra support
6x BGP sessions with full BGP table ~600k prefixes
Ando some clients bgp sessions where prefixes from upstreams are advertised.
About 20 L3 ipv4 nexthops
W dniu 2017-09-20 o 15:11, Eric Dumazet pisze:
> Sorry for top-posting, but this is to give context to Wei, since Pawel
> used a top posting way to report his bisection.
>
> Wei, can you take a look at Pawel report ?
>
> Crash happens in dst_destroy() at following :
>
> if (dst->dev)
> dev_put(dst->dev); <<CRASH>>
>
>
> dst->dev is not NULL, but netdev->pcpu_refcnt is NULL
>
> 65 ff 08 decl %gs:(%rax) // CRASH since rax = NULL
>
>
>
> Pawel, please share your netdevices and routing setup ?
>
> Thanks !
>
> On Wed, 2017-09-20 at 14:49 +0200, Paweł Staszewski wrote:
>> And the last one
>>
>> git bisect good
>> Bisecting: 1 revision left to test after this (roughly 1 step)
>> [1cfb71eeb12047bcdbd3e6730ffed66e810a0855] ipv6: take dst->__refcnt for
>> insertion into fib6 tree
>>
>> With this have kernel panic same as always
>>
>> git bisect bad
>> Bisecting: 0 revisions left to test after this (roughly 0 steps)
>> [b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4: mark DST_NOGC and
>> remove the operation of dst_free()
>>
>>
>>
>> W dniu 2017-09-20 o 14:23, Paweł Staszewski pisze:
>>> Almost there
>>>
>>> Bisecting: 6 revisions left to test after this (roughly 3 steps)
>>> [ad65a2f05695aced349e308193c6e2a6b1d87112] ipv6: call dst_hold_safe()
>>> properly
>>>
>>>
>>>
>>> W dniu 2017-09-20 o 13:02, Paweł Staszewski pisze:
>>>> Ok resumed and soo far:
>>>>
>>>> Panic:
>>>>
>>>> # bad: [9cc9a5cb176ccb4f2cda5ac34da5a659926f125f] datapath: Avoid
>>>> using stack larger than 1024.
>>>> git bisect bad 9cc9a5cb176ccb4f2cda5ac34da5a659926f125f
>>>>
>>>> No panic:
>>>>
>>>> # good: [073cf9e20c333ab29744717a23f9e43ec7512a20] Merge branch
>>>> 'udp-reduce-cache-pressure'
>>>> git bisect good 073cf9e20c333ab29744717a23f9e43ec7512a20
>>>>
>>>>
>>>> W dniu 2017-09-20 o 12:22, Paweł Staszewski pisze:
>>>>> Soo far bisected and marked:
>>>>>
>>>>> git bisect start
>>>>> # bad: [07dd6cc1fff160143e82cf5df78c1db0b6e03355] Linux 4.13.2
>>>>> git bisect bad 07dd6cc1fff160143e82cf5df78c1db0b6e03355
>>>>> # good: [5d7d2e03e0f01a992e3521b180c3d3e67905f269] Linux 4.12.13
>>>>> git bisect good 5d7d2e03e0f01a992e3521b180c3d3e67905f269
>>>>> # good: [6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c] Linux 4.12
>>>>> git bisect good 6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c
>>>>> # bad: [ac7b75966c9c86426b55fe1c50ae148aa4571075] Merge tag
>>>>> 'pinctrl-v4.13-1' of
>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
>>>>> git bisect bad ac7b75966c9c86426b55fe1c50ae148aa4571075
>>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>>> 'next' of
>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>>> 'next' of
>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>>> 'next' of
>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>>>
>>>>>
>>>>>
>>>>> W dniu 2017-09-20 o 12:21, Paweł Staszewski pisze:
>>>>>> Ok kernel crashed with different panic that i didnt catch when i
>>>>>> was doing bisect and now my bisection is broken :)
>>>>>>
>>>>>> git bisect good
>>>>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
>>>>>> error: Your local changes to the following files would be
>>>>>> overwritten by checkout:
>>>>>> Documentation/00-INDEX
>>>>>> Documentation/ABI/stable/sysfs-class-udc
>>>>>> Documentation/ABI/testing/configfs-usb-gadget-uac1
>>>>>> Documentation/ABI/testing/ima_policy
>>>>>> Documentation/ABI/testing/sysfs-bus-iio
>>>>>> Documentation/ABI/testing/sysfs-bus-iio-meas-spec
>>>>>> Documentation/ABI/testing/sysfs-bus-iio-timer-stm32
>>>>>> Documentation/ABI/testing/sysfs-class-net
>>>>>> Documentation/ABI/testing/sysfs-class-power-twl4030
>>>>>> Documentation/ABI/testing/sysfs-class-typec
>>>>>> Documentation/DMA-API.txt
>>>>>> Documentation/IRQ-domain.txt
>>>>>> Documentation/Makefile
>>>>>> Documentation/PCI/MSI-HOWTO.txt
>>>>>> Documentation/RCU/00-INDEX
>>>>>> Documentation/RCU/Design/Requirements/Requirements.html
>>>>>> Documentation/RCU/checklist.txt
>>>>>> Documentation/admin-guide/README.rst
>>>>>> Documentation/admin-guide/devices.txt
>>>>>> Documentation/admin-guide/index.rst
>>>>>> Documentation/admin-guide/kernel-parameters.txt
>>>>>> Documentation/admin-guide/pm/cpufreq.rst
>>>>>> Documentation/admin-guide/pm/intel_pstate.rst
>>>>>> Documentation/admin-guide/ras.rst
>>>>>> Documentation/arm/Atmel/README
>>>>>> Documentation/block/biodoc.txt
>>>>>> Documentation/conf.py
>>>>>> Documentation/core-api/assoc_array.rst
>>>>>> Documentation/core-api/atomic_ops.rst
>>>>>> Documentation/core-api/index.rst
>>>>>> Documentation/crypto/asymmetric-keys.txt
>>>>>> Documentation/dev-tools/index.rst
>>>>>> Documentation/dev-tools/sparse.rst
>>>>>> Documentation/devicetree/bindings/arm/amlogic.txt
>>>>>> Documentation/devicetree/bindings/arm/atmel-at91.txt
>>>>>> Documentation/devicetree/bindings/arm/ccn.txt
>>>>>> Documentation/devicetree/bindings/arm/cpus.txt
>>>>>> Documentation/devicetree/bindings/arm/gemini.txt
>>>>>> Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
>>>>>> Documentation/devicetree/bindings/arm/keystone/keystone.txt
>>>>>> Documentation/devicetree/bindings/arm/mediatek.txt
>>>>>> Documentation/devicetree/bindings/arm/rockchip.txt
>>>>>> Documentation/devicetree/bindings/arm/shmobile.txt
>>>>>> Documentation/devicetree/bindings/arm/tegra.txt
>>>>>> Documentation/devicetree/bindings/ata/ahci-fsl-qoriq.txt
>>>>>> Documentation/devicetree/bindings/bus/brcm,gisb-arb.txt
>>>>>> Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt
>>>>>> Documentation/devicetree/bindings/cpufreq/ti-cpufreq.txt
>>>>>> Documentation/devicetree/bindings/gpio/gpio_atmel.txt
>>>>>> Documentation/devicetree/bindings/iio/adc/amlogic,meson-saradc.txt
>>>>>> Documentation/devicetree/bindings/iio/adc/renesas,gyroadc.txt
>>>>>> Documentation/devicetree/bindings/iio/adc/st,stm32-adc.txt
>>>>>> Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt
>>>>>> Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-nmi.txt
>>>>>>
>>>>>> Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-vic.txt
>>>>>>
>>>>>> Documentation/devicetree/bindings/interrupt-controller/mediatek,sysirq.txt
>>>>>>
>>>>>> Documentation/devicetree/bindings/leds/common.txt
>>>>>> Documentation/devicetree/bindings/mfd/hi6421.txt
>>>>>> Documentation/devicetree/bindings/mfd/tps65910.txt
>>>>>> Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
>>>>>> Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
>>>>>> Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
>>>>>> Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
>>>>>> Documentation/devicetree/bindings/mtd/atmel-nand.txt
>>>>>> Documentation/devicetree/bindings/net/dsa/b53.txt
>>>>>> Documentation/devicetree/bindings/net/ethernet.txt
>>>>>> Documentation/devicetree/bindings/net/macb.txt
>>>>>> Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
>>>>>> Documentation/devicetree/bindings/net/ti,wilink-st.txt
>>>>>> Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
>>>>>> Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
>>>>>> Documentation/devicetree/bindings/opp/opp.txt
>>>>>> Documentation/devicetree/bindings/phy/bcm-ns-usb3-phy.txt
>>>>>> Documentation/devicetree/bindings/phy/brcm-sata-phy.txt
>>>>>> Documentation/devicetree/bindings/phy/meson8b-usb2-phy.txt
>>>>>> Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt
>>>>>> Documentation/devicetree/bindings/power/rockchip-io-domain.txt
>>>>>> Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>>>>>> Documentation/devicetree/bindings/property-units.txt
>>>>>> Documentation/devicetree/bindings/regulator/regulator.txt
>>>>>> Documentation/devicetree/bindings/serial/8
>>>>>> error: The following untracked working tree files would be
>>>>>> overwritten by checkout:
>>>>>> Documentation/ABI/testing/sysfs-class-net-phydev
>>>>>> Documentation/DocBook/.gitignore
>>>>>> Documentation/DocBook/Makefile
>>>>>> Documentation/DocBook/filesystems.tmpl
>>>>>> Documentation/DocBook/kernel-hacking.tmpl
>>>>>> Documentation/DocBook/kernel-locking.tmpl
>>>>>> Documentation/DocBook/kgdb.tmpl
>>>>>> Documentation/DocBook/libata.tmpl
>>>>>> Documentation/DocBook/librs.tmpl
>>>>>> Documentation/DocBook/lsm.tmpl
>>>>>> Documentation/DocBook/mtdnand.tmpl
>>>>>> Documentation/DocBook/networking.tmpl
>>>>>> Documentation/DocBook/rapidio.tmpl
>>>>>> Documentation/DocBook/s390-drivers.tmpl
>>>>>> Documentation/DocBook/scsi.tmpl
>>>>>> Documentation/DocBook/sh.tmpl
>>>>>> Documentation/DocBook/stylesheet.xsl
>>>>>> Documentation/DocBook/w1.tmpl
>>>>>> Documentation/DocBook/z8530book.tmpl
>>>>>> Documentation/Makefile.sphinx
>>>>>> Documentation/RCU/trace.txt
>>>>>> Documentation/devicetree/bindings/i2c/i2c-mt6577.txt
>>>>>> Documentation/devicetree/bindings/misc/allwinner,syscon.txt
>>>>>> Documentation/devicetree/bindings/net/cortina.txt
>>>>>> Documentation/devicetree/bindings/net/dsa/ksz.txt
>>>>>> Documentation/devicetree/bindings/net/dwmac-sun8i.txt
>>>>>> Documentation/devicetree/bindings/net/qca,qca7000.txt
>>>>>> Documentation/devicetree/bindings/power/max8903-charger.txt
>>>>>> Documentation/devicetree/bindings/power_supply/maxim,max14656.txt
>>>>>> Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
>>>>>> Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
>>>>>> Documentation/doc-guide/docbook.rst
>>>>>> Documentation/networking/tls.txt
>>>>>> Documentation/prctl/no_new_privs.txt
>>>>>> Documentation/prctl/seccomp_filter.txt
>>>>>> Documentation/security/00-INDEX
>>>>>> Documentation/security/IMA-templates.txt
>>>>>> Documentation/security/LSM.txt
>>>>>> Documentation/security/LoadPin.txt
>>>>>> Documentation/security/SELinux.txt
>>>>>> Documentation/security/Smack.txt
>>>>>> Documentation/security/Yama.txt
>>>>>> Documentation/security/apparmor.txt
>>>>>> Documentation/security/conf.py
>>>>>> Documentation/security/credentials.txt
>>>>>> Documentation/security/keys-ecryptfs.txt
>>>>>> Documentation/security/keys-request-key.txt
>>>>>> Documentation/security/keys-trusted-encrypted.txt
>>>>>> Documentation/security/keys.txt
>>>>>> Documentation/security/self-protection.txt
>>>>>> Documentation/security/tomoyo.txt
>>>>>> Documentation/sphinx/convert_template.sed
>>>>>> Documentation/sphinx/post_convert.sed
>>>>>> Documentation/sphinx/tmplcvt
>>>>>> Documentation/usb/typec.rst
>>>>>> Documentation/usb/usb3-debug-port.rst
>>>>>> arch/arm/boot/dts/rk1108-evb.dts
>>>>>> arch/arm/boot/dts/rk1108.dtsi
>>>>>> arch/arm/boot/dts/tegra20-whistler.dts
>>>>>> arch/arm/mach-omap2/opp.c
>>>>>> arch/arm/mach-omap2/pmu.c
>>>>>> arch/ia64/include/asm/siginfo.h
>>>>>> arch/m32r/include/uapi/asm/siginfo.h
>>>>>> arch/microblaze/include/asm/bitops.h
>>>>>> arch/microblaze/include/asm/bug.h
>>>>>> arch/microblaze/include/asm/bugs.h
>>>>>> arch/microblaze/include/asm/div64.h
>>>>>> arch/microblaze/include/asm/emergency-restart.h
>>>>>> arch/microblaze/include/asm/fb.h
>>>>>> arch/microblaze/include/asm/hardirq.h
>>>>>> arch/microblaze/include/asm/irq_regs.h
>>>>>> arch/microblaze/include/asm/kdebug.h
>>>>>> arch/microblaze/include/asm/kmap_types.h
>>>>>> arch/microblaze/include/asm/linkage.h
>>>>>> arch/microblaze/include/asm/local.h
>>>>>> arch/microblaze/include/asm/local64.h
>>>>>> arch/microblaze/include/asm/parport.h
>>>>>> arch/microblaze/include/asm/percpu.h
>>>>>> arch/microblaze/include/asm/serial.h
>>>>>> arch/microblaze/include/asm/shmparam.h
>>>>>> arch/microblaze/include/asm/topology.h
>>>>>> arch/microblaze/include/asm/ucontext.h
>>>>>> arch/microblaze/include/asm/vga.h
>>>>>> arch/microblaze/include/asm/xor.h
>>>>>> arch/microblaze/include/uapi/asm/bitsperlong.h
>>>>>> arch/microblaze/include/uapi/asm/errno.h
>>>>>> arch/microblaze/include/uapi/asm/fcntl.h
>>>>>> arch/microblaze/include/uapi/asm/ioctl.h
>>>>>> arch/microblaze/include/uapi/asm/ioctls.h
>>>>>> arch/microblaze/include/uapi/asm/ipcbuf.h
>>>>>> arch/microblaze/include/uapi/asm/kvm_para.h
>>>>>> arch/microblaze/include/uapi/asm/mman.h
>>>>>> arch/microblaze/include/uapi/asm/msgbuf.h
>>>>>> arch/microblaze/include/uapi/asm/param.h
>>>>>> arch/microblaze/include/uapi/asm/poll.h
>>>>>> arch/microblaze/include/uapi/asm/resource.h
>>>>>> arch/microblaze/include/uapi/asm/sembuf.h
>>>>>> arch/microblaze/include/uapi/asm/shmbuf.h
>>>>>> arch/microblaze/include/uapi/asm/siginfo.h
>>>>>> arch/microblaze/include/uapi/asm/signal.h
>>>>>> arch/microblaze/includ
>>>>>> Aborting
>>>>>>
>>>>>>
>>>>>>
>>>>>> W dniu 2017-09-20 o 11:45, Paweł Staszewski pisze:
>>>>>>> Ok looks like ending bisection
>>>>>>>
>>>>>>>
>>>>>>> Latest bisected kernel when there is no kernel panic 4.12.0+ (from
>>>>>>> next) - but only this warning:
>>>>>>>
>>>>>>> [ 309.030019] NETDEV WATCHDOG: enp4s0f0 (ixgbe): transmit queue 0
>>>>>>> timed out
>>>>>>> [ 309.030034] ------------[ cut here ]------------
>>>>>>> [ 309.030040] WARNING: CPU: 35 PID: 0 at dev_watchdog+0xcf/0x139
>>>>>>> [ 309.030041] Modules linked in: bonding ipmi_si
>>>>>>> x86_pkg_temp_thermal
>>>>>>> [ 309.030045] CPU: 35 PID: 0 Comm: swapper/35 Not tainted 4.12.0+ #5
>>>>>>> [ 309.030046] task: ffff88086d98a000 task.stack: ffffc90003378000
>>>>>>> [ 309.030048] RIP: 0010:dev_watchdog+0xcf/0x139
>>>>>>> [ 309.030049] RSP: 0018:ffff88087fbc3ea8 EFLAGS: 00010246
>>>>>>> [ 309.030050] RAX: 000000000000003d RBX: ffff88046b680000 RCX:
>>>>>>> 0000000000000000
>>>>>>> [ 309.030050] RDX: ffff88087fbd2f01 RSI: 0000000000000000 RDI:
>>>>>>> ffff88087fbcda08
>>>>>>> [ 309.030051] RBP: ffff88087fbc3eb8 R08: 0000000000000000 R09:
>>>>>>> ffff88087ff80a04
>>>>>>> [ 309.030051] R10: 0000000000000000 R11: ffff88086d98a001 R12:
>>>>>>> 0000000000000000
>>>>>>> [ 309.030052] R13: ffff88087fbc3ef8 R14: ffff88086d98a000 R15:
>>>>>>> ffffffff81c06008
>>>>>>> [ 309.030053] FS: 0000000000000000(0000)
>>>>>>> GS:ffff88087fbc0000(0000) knlGS:0000000000000000
>>>>>>> [ 309.030054] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>>>>> [ 309.030054] CR2: 00007fba600f6098 CR3: 000000086b955000 CR4:
>>>>>>> 00000000001406e0
>>>>>>> [ 309.030055] Call Trace:
>>>>>>> [ 309.030057] <IRQ>
>>>>>>> [ 309.030059] ? netif_tx_lock+0x79/0x79
>>>>>>> [ 309.030062] call_timer_fn.isra.24+0x17/0x77
>>>>>>> [ 309.030063] run_timer_softirq+0x118/0x161
>>>>>>> [ 309.030065] ? netif_tx_lock+0x79/0x79
>>>>>>> [ 309.030066] ? ktime_get+0x2b/0x42
>>>>>>> [ 309.030070] ? lapic_next_deadline+0x21/0x27
>>>>>>> [ 309.030073] ? clockevents_program_event+0xa8/0xc5
>>>>>>> [ 309.030076] __do_softirq+0xa8/0x19d
>>>>>>> [ 309.030078] irq_exit+0x5d/0x6b
>>>>>>> [ 309.030079] smp_apic_timer_interrupt+0x2a/0x36
>>>>>>> [ 309.030082] apic_timer_interrupt+0x89/0x90
>>>>>>> [ 309.030085] RIP: 0010:mwait_idle+0x4e/0x6a
>>>>>>> [ 309.030086] RSP: 0018:ffffc9000337be98 EFLAGS: 00000246
>>>>>>> ORIG_RAX: ffffffffffffff10
>>>>>>> [ 309.030087] RAX: 0000000000000000 RBX: 0000000000000000 RCX:
>>>>>>> 0000000000000000
>>>>>>> [ 309.030087] RDX: 0000000000000000 RSI: 0000000000000000 RDI:
>>>>>>> ffff88086d98a000
>>>>>>> [ 309.030088] RBP: ffffc9000337be98 R08: ffff88046f8279a0 R09:
>>>>>>> ffff88046f827040
>>>>>>> [ 309.030089] R10: ffff88086d98a000 R11: ffff88086d98a000 R12:
>>>>>>> 0000000000000000
>>>>>>> [ 309.030089] R13: ffff88086d98a000 R14: ffff88086d98a000 R15:
>>>>>>> ffff88086d98a000
>>>>>>> [ 309.030090] </IRQ>
>>>>>>> [ 309.030094] arch_cpu_idle+0xa/0xc
>>>>>>> [ 309.030095] default_idle_call+0x19/0x1b
>>>>>>> [ 309.030102] do_idle+0xbc/0x196
>>>>>>> [ 309.030104] cpu_startup_entry+0x1d/0x20
>>>>>>> [ 309.030105] start_secondary+0xd8/0xdc
>>>>>>> [ 309.030108] secondary_startup_64+0x9f/0x9f
>>>>>>> [ 309.030109] Code: cc 75 bd eb 35 48 89 df c6 05 c3 dc 74 00 01
>>>>>>> e8 3a 62 fe ff 44 89 e1 48 89 de 48 89 c2 48 c7 c7 0f 65 a4 81 31
>>>>>>> c0 e8 3d 4c b5 ff <0f> ff 48 8b 83 e0 01 00 00 48 89 df ff 50 78
>>>>>>> 48 8b 05 a0 bc 6a
>>>>>>> [ 309.030128] ---[ end trace 9102cb25703ae2d9 ]---
>>>>>>>
>>>>>>>
>>>>>>> I just marked it as good - cause this problem above is differend -
>>>>>>> and im going to:
>>>>>>>
>>>>>>> git bisect good
>>>>>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> W dniu 2017-09-20 o 10:44, Paweł Staszewski pisze:
>>>>>>>> Trying to make video from ipmi :)
>>>>>>>>
>>>>>>>> with that results:
>>>>>>>>
>>>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258521
>>>>>>>>
>>>>>>>> catched two more lines where it starts - panic from 4.13.2.
>>>>>>>>
>>>>>>>>
>>>>>>>> Now will try tro do some bisection
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> W dniu 2017-09-20 o 09:58, Paweł Staszewski pisze:
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Will try bisecting tonight
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> W dniu 2017-09-20 o 05:24, Eric Dumazet pisze:
>>>>>>>>>> On Wed, 2017-09-20 at 02:06 +0200, Paweł Staszewski wrote:
>>>>>>>>>>> Just checked kernel 4.13.2 and same problem
>>>>>>>>>>>
>>>>>>>>>>> Just after start all 6 bgp sessions - and kernel starts to
>>>>>>>>>>> learn routes
>>>>>>>>>>> it panic.
>>>>>>>>>>>
>>>>>>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258509
>>>>>>>>>>>
>>>>>>>>>> Unfortunately we have not enough information from these traces.
>>>>>>>>>>
>>>>>>>>>> Can you get a full stack trace ?
>>>>>>>>>>
>>>>>>>>>> Alternatively, can you bisect ?
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>
>
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Paweł Staszewski @ 2017-09-20 13:09 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Linux Kernel Network Developers
In-Reply-To: <1d2a316a-fc71-dae5-cd10-11defc7d2aeb@itcare.pl>
So far path for bisect was:
git bisect start
# bad: [ac7b75966c9c86426b55fe1c50ae148aa4571075] Merge tag
'pinctrl-v4.13-1' of
git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
git bisect bad ac7b75966c9c86426b55fe1c50ae148aa4571075
# good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch 'next'
of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
# bad: [9cc9a5cb176ccb4f2cda5ac34da5a659926f125f] datapath: Avoid using
stack larger than 1024.
git bisect bad 9cc9a5cb176ccb4f2cda5ac34da5a659926f125f
# good: [073cf9e20c333ab29744717a23f9e43ec7512a20] Merge branch
'udp-reduce-cache-pressure'
git bisect good 073cf9e20c333ab29744717a23f9e43ec7512a20
# bad: [8abd5599a520e9f188a750f1bde9dde5fb856230] Merge branch
's390-net-updates-part-2'
git bisect bad 8abd5599a520e9f188a750f1bde9dde5fb856230
# good: [2fae5d0e647c6470d206e72b5fc24972bb900f70] Merge branch
'bpf-ctx-narrow'
git bisect good 2fae5d0e647c6470d206e72b5fc24972bb900f70
# good: [41500c3e2a19ffcf40a7158fce1774de08e26ba2] rds: tcp: remove
cp_outgoing
git bisect good 41500c3e2a19ffcf40a7158fce1774de08e26ba2
# bad: [8917a777be3ba566377be05117f71b93a5fd909d] tcp: md5: add
TCP_MD5SIG_EXT socket option to set a key address prefix
git bisect bad 8917a777be3ba566377be05117f71b93a5fd909d
# good: [4a6ce2b6f2ecabbddcfe47e7cf61dd0f00b10e36] net: introduce a new
function dst_dev_put()
git bisect good 4a6ce2b6f2ecabbddcfe47e7cf61dd0f00b10e36
# bad: [a4c2fd7f78915a0d7c5275e7612e7793157a01f2] net: remove
DST_NOCACHE flag
git bisect bad a4c2fd7f78915a0d7c5275e7612e7793157a01f2
# bad: [ad65a2f05695aced349e308193c6e2a6b1d87112] ipv6: call
dst_hold_safe() properly
git bisect bad ad65a2f05695aced349e308193c6e2a6b1d87112
No PANIC
# good: [9df16efadd2a8a82731dc76ff656c771e261827f] ipv4: call
dst_hold_safe() properly
git bisect good 9df16efadd2a8a82731dc76ff656c771e261827f
PANIC
# bad: [1cfb71eeb12047bcdbd3e6730ffed66e810a0855] ipv6: take
dst->__refcnt for insertion into fib6 tree
git bisect bad 1cfb71eeb12047bcdbd3e6730ffed66e810a0855
PANIC
# bad: [b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4: mark DST_NOGC
and remove the operation of dst_free()
git bisect bad b838d5e1c5b6e57b10ec8af2268824041e3ea911
# first bad commit: [b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4:
mark DST_NOGC and remove the operation of dst_free()
W dniu 2017-09-20 o 15:05, Paweł Staszewski pisze:
> hmm
>
> But after
>
> b838d5e1c5b6e57b10ec8af2268824041e3ea911 is the first bad commit
> commit b838d5e1c5b6e57b10ec8af2268824041e3ea911
> Author: Wei Wang <weiwan@google.com>
> Date: Sat Jun 17 10:42:32 2017 -0700
>
> ipv4: mark DST_NOGC and remove the operation of dst_free()
>
> With the previous preparation patches, we are ready to get rid of the
> dst gc operation in ipv4 code and release dst based on refcnt only.
> So this patch adds DST_NOGC flag for all IPv4 dst and remove the
> calls
> to dst_free().
> At this point, all dst created in ipv4 code do not use the dst gc
> anymore and will be destroyed at the point when refcnt drops to 0.
>
> Signed-off-by: Wei Wang <weiwan@google.com>
> Acked-by: Martin KaFai Lau <kafai@fb.com>
> Signed-off-by: David S. Miller <davem@davemloft.net>
>
> :040000 040000 9b7e7fb641de6531fc7887473ca47ef7cb6a11da
> 831a73b71d3df1755f3e24c0d3c86d7a93fd55e2 M net
>
>
> Still panic - soo will back to past 3 steps and will try to get again
> bisect without panic.
>
>
>
> W dniu 2017-09-20 o 14:49, Paweł Staszewski pisze:
>> And the last one
>>
>> git bisect good
>> Bisecting: 1 revision left to test after this (roughly 1 step)
>> [1cfb71eeb12047bcdbd3e6730ffed66e810a0855] ipv6: take dst->__refcnt
>> for insertion into fib6 tree
>>
>> With this have kernel panic same as always
>>
>> git bisect bad
>> Bisecting: 0 revisions left to test after this (roughly 0 steps)
>> [b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4: mark DST_NOGC and
>> remove the operation of dst_free()
>>
>>
>>
>> W dniu 2017-09-20 o 14:23, Paweł Staszewski pisze:
>>> Almost there
>>>
>>> Bisecting: 6 revisions left to test after this (roughly 3 steps)
>>> [ad65a2f05695aced349e308193c6e2a6b1d87112] ipv6: call
>>> dst_hold_safe() properly
>>>
>>>
>>>
>>> W dniu 2017-09-20 o 13:02, Paweł Staszewski pisze:
>>>> Ok resumed and soo far:
>>>>
>>>> Panic:
>>>>
>>>> # bad: [9cc9a5cb176ccb4f2cda5ac34da5a659926f125f] datapath: Avoid
>>>> using stack larger than 1024.
>>>> git bisect bad 9cc9a5cb176ccb4f2cda5ac34da5a659926f125f
>>>>
>>>> No panic:
>>>>
>>>> # good: [073cf9e20c333ab29744717a23f9e43ec7512a20] Merge branch
>>>> 'udp-reduce-cache-pressure'
>>>> git bisect good 073cf9e20c333ab29744717a23f9e43ec7512a20
>>>>
>>>>
>>>> W dniu 2017-09-20 o 12:22, Paweł Staszewski pisze:
>>>>> Soo far bisected and marked:
>>>>>
>>>>> git bisect start
>>>>> # bad: [07dd6cc1fff160143e82cf5df78c1db0b6e03355] Linux 4.13.2
>>>>> git bisect bad 07dd6cc1fff160143e82cf5df78c1db0b6e03355
>>>>> # good: [5d7d2e03e0f01a992e3521b180c3d3e67905f269] Linux 4.12.13
>>>>> git bisect good 5d7d2e03e0f01a992e3521b180c3d3e67905f269
>>>>> # good: [6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c] Linux 4.12
>>>>> git bisect good 6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c
>>>>> # bad: [ac7b75966c9c86426b55fe1c50ae148aa4571075] Merge tag
>>>>> 'pinctrl-v4.13-1' of
>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
>>>>> git bisect bad ac7b75966c9c86426b55fe1c50ae148aa4571075
>>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>>> 'next' of
>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>>> 'next' of
>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>>> 'next' of
>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>>>
>>>>>
>>>>>
>>>>> W dniu 2017-09-20 o 12:21, Paweł Staszewski pisze:
>>>>>> Ok kernel crashed with different panic that i didnt catch when i
>>>>>> was doing bisect and now my bisection is broken :)
>>>>>>
>>>>>> git bisect good
>>>>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
>>>>>> error: Your local changes to the following files would be
>>>>>> overwritten by checkout:
>>>>>> Documentation/00-INDEX
>>>>>> Documentation/ABI/stable/sysfs-class-udc
>>>>>> Documentation/ABI/testing/configfs-usb-gadget-uac1
>>>>>> Documentation/ABI/testing/ima_policy
>>>>>> Documentation/ABI/testing/sysfs-bus-iio
>>>>>> Documentation/ABI/testing/sysfs-bus-iio-meas-spec
>>>>>> Documentation/ABI/testing/sysfs-bus-iio-timer-stm32
>>>>>> Documentation/ABI/testing/sysfs-class-net
>>>>>> Documentation/ABI/testing/sysfs-class-power-twl4030
>>>>>> Documentation/ABI/testing/sysfs-class-typec
>>>>>> Documentation/DMA-API.txt
>>>>>> Documentation/IRQ-domain.txt
>>>>>> Documentation/Makefile
>>>>>> Documentation/PCI/MSI-HOWTO.txt
>>>>>> Documentation/RCU/00-INDEX
>>>>>> Documentation/RCU/Design/Requirements/Requirements.html
>>>>>> Documentation/RCU/checklist.txt
>>>>>> Documentation/admin-guide/README.rst
>>>>>> Documentation/admin-guide/devices.txt
>>>>>> Documentation/admin-guide/index.rst
>>>>>> Documentation/admin-guide/kernel-parameters.txt
>>>>>> Documentation/admin-guide/pm/cpufreq.rst
>>>>>> Documentation/admin-guide/pm/intel_pstate.rst
>>>>>> Documentation/admin-guide/ras.rst
>>>>>> Documentation/arm/Atmel/README
>>>>>> Documentation/block/biodoc.txt
>>>>>> Documentation/conf.py
>>>>>> Documentation/core-api/assoc_array.rst
>>>>>> Documentation/core-api/atomic_ops.rst
>>>>>> Documentation/core-api/index.rst
>>>>>> Documentation/crypto/asymmetric-keys.txt
>>>>>> Documentation/dev-tools/index.rst
>>>>>> Documentation/dev-tools/sparse.rst
>>>>>> Documentation/devicetree/bindings/arm/amlogic.txt
>>>>>> Documentation/devicetree/bindings/arm/atmel-at91.txt
>>>>>> Documentation/devicetree/bindings/arm/ccn.txt
>>>>>> Documentation/devicetree/bindings/arm/cpus.txt
>>>>>> Documentation/devicetree/bindings/arm/gemini.txt
>>>>>> Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
>>>>>> Documentation/devicetree/bindings/arm/keystone/keystone.txt
>>>>>> Documentation/devicetree/bindings/arm/mediatek.txt
>>>>>> Documentation/devicetree/bindings/arm/rockchip.txt
>>>>>> Documentation/devicetree/bindings/arm/shmobile.txt
>>>>>> Documentation/devicetree/bindings/arm/tegra.txt
>>>>>> Documentation/devicetree/bindings/ata/ahci-fsl-qoriq.txt
>>>>>> Documentation/devicetree/bindings/bus/brcm,gisb-arb.txt
>>>>>> Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt
>>>>>> Documentation/devicetree/bindings/cpufreq/ti-cpufreq.txt
>>>>>> Documentation/devicetree/bindings/gpio/gpio_atmel.txt
>>>>>> Documentation/devicetree/bindings/iio/adc/amlogic,meson-saradc.txt
>>>>>> Documentation/devicetree/bindings/iio/adc/renesas,gyroadc.txt
>>>>>> Documentation/devicetree/bindings/iio/adc/st,stm32-adc.txt
>>>>>> Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt
>>>>>> Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-nmi.txt
>>>>>>
>>>>>> Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-vic.txt
>>>>>>
>>>>>> Documentation/devicetree/bindings/interrupt-controller/mediatek,sysirq.txt
>>>>>>
>>>>>> Documentation/devicetree/bindings/leds/common.txt
>>>>>> Documentation/devicetree/bindings/mfd/hi6421.txt
>>>>>> Documentation/devicetree/bindings/mfd/tps65910.txt
>>>>>> Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
>>>>>> Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
>>>>>> Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
>>>>>> Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
>>>>>> Documentation/devicetree/bindings/mtd/atmel-nand.txt
>>>>>> Documentation/devicetree/bindings/net/dsa/b53.txt
>>>>>> Documentation/devicetree/bindings/net/ethernet.txt
>>>>>> Documentation/devicetree/bindings/net/macb.txt
>>>>>> Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
>>>>>> Documentation/devicetree/bindings/net/ti,wilink-st.txt
>>>>>> Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
>>>>>> Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
>>>>>> Documentation/devicetree/bindings/opp/opp.txt
>>>>>> Documentation/devicetree/bindings/phy/bcm-ns-usb3-phy.txt
>>>>>> Documentation/devicetree/bindings/phy/brcm-sata-phy.txt
>>>>>> Documentation/devicetree/bindings/phy/meson8b-usb2-phy.txt
>>>>>> Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt
>>>>>> Documentation/devicetree/bindings/power/rockchip-io-domain.txt
>>>>>> Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>>>>>> Documentation/devicetree/bindings/property-units.txt
>>>>>> Documentation/devicetree/bindings/regulator/regulator.txt
>>>>>> Documentation/devicetree/bindings/serial/8
>>>>>> error: The following untracked working tree files would be
>>>>>> overwritten by checkout:
>>>>>> Documentation/ABI/testing/sysfs-class-net-phydev
>>>>>> Documentation/DocBook/.gitignore
>>>>>> Documentation/DocBook/Makefile
>>>>>> Documentation/DocBook/filesystems.tmpl
>>>>>> Documentation/DocBook/kernel-hacking.tmpl
>>>>>> Documentation/DocBook/kernel-locking.tmpl
>>>>>> Documentation/DocBook/kgdb.tmpl
>>>>>> Documentation/DocBook/libata.tmpl
>>>>>> Documentation/DocBook/librs.tmpl
>>>>>> Documentation/DocBook/lsm.tmpl
>>>>>> Documentation/DocBook/mtdnand.tmpl
>>>>>> Documentation/DocBook/networking.tmpl
>>>>>> Documentation/DocBook/rapidio.tmpl
>>>>>> Documentation/DocBook/s390-drivers.tmpl
>>>>>> Documentation/DocBook/scsi.tmpl
>>>>>> Documentation/DocBook/sh.tmpl
>>>>>> Documentation/DocBook/stylesheet.xsl
>>>>>> Documentation/DocBook/w1.tmpl
>>>>>> Documentation/DocBook/z8530book.tmpl
>>>>>> Documentation/Makefile.sphinx
>>>>>> Documentation/RCU/trace.txt
>>>>>> Documentation/devicetree/bindings/i2c/i2c-mt6577.txt
>>>>>> Documentation/devicetree/bindings/misc/allwinner,syscon.txt
>>>>>> Documentation/devicetree/bindings/net/cortina.txt
>>>>>> Documentation/devicetree/bindings/net/dsa/ksz.txt
>>>>>> Documentation/devicetree/bindings/net/dwmac-sun8i.txt
>>>>>> Documentation/devicetree/bindings/net/qca,qca7000.txt
>>>>>> Documentation/devicetree/bindings/power/max8903-charger.txt
>>>>>> Documentation/devicetree/bindings/power_supply/maxim,max14656.txt
>>>>>> Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
>>>>>> Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
>>>>>> Documentation/doc-guide/docbook.rst
>>>>>> Documentation/networking/tls.txt
>>>>>> Documentation/prctl/no_new_privs.txt
>>>>>> Documentation/prctl/seccomp_filter.txt
>>>>>> Documentation/security/00-INDEX
>>>>>> Documentation/security/IMA-templates.txt
>>>>>> Documentation/security/LSM.txt
>>>>>> Documentation/security/LoadPin.txt
>>>>>> Documentation/security/SELinux.txt
>>>>>> Documentation/security/Smack.txt
>>>>>> Documentation/security/Yama.txt
>>>>>> Documentation/security/apparmor.txt
>>>>>> Documentation/security/conf.py
>>>>>> Documentation/security/credentials.txt
>>>>>> Documentation/security/keys-ecryptfs.txt
>>>>>> Documentation/security/keys-request-key.txt
>>>>>> Documentation/security/keys-trusted-encrypted.txt
>>>>>> Documentation/security/keys.txt
>>>>>> Documentation/security/self-protection.txt
>>>>>> Documentation/security/tomoyo.txt
>>>>>> Documentation/sphinx/convert_template.sed
>>>>>> Documentation/sphinx/post_convert.sed
>>>>>> Documentation/sphinx/tmplcvt
>>>>>> Documentation/usb/typec.rst
>>>>>> Documentation/usb/usb3-debug-port.rst
>>>>>> arch/arm/boot/dts/rk1108-evb.dts
>>>>>> arch/arm/boot/dts/rk1108.dtsi
>>>>>> arch/arm/boot/dts/tegra20-whistler.dts
>>>>>> arch/arm/mach-omap2/opp.c
>>>>>> arch/arm/mach-omap2/pmu.c
>>>>>> arch/ia64/include/asm/siginfo.h
>>>>>> arch/m32r/include/uapi/asm/siginfo.h
>>>>>> arch/microblaze/include/asm/bitops.h
>>>>>> arch/microblaze/include/asm/bug.h
>>>>>> arch/microblaze/include/asm/bugs.h
>>>>>> arch/microblaze/include/asm/div64.h
>>>>>> arch/microblaze/include/asm/emergency-restart.h
>>>>>> arch/microblaze/include/asm/fb.h
>>>>>> arch/microblaze/include/asm/hardirq.h
>>>>>> arch/microblaze/include/asm/irq_regs.h
>>>>>> arch/microblaze/include/asm/kdebug.h
>>>>>> arch/microblaze/include/asm/kmap_types.h
>>>>>> arch/microblaze/include/asm/linkage.h
>>>>>> arch/microblaze/include/asm/local.h
>>>>>> arch/microblaze/include/asm/local64.h
>>>>>> arch/microblaze/include/asm/parport.h
>>>>>> arch/microblaze/include/asm/percpu.h
>>>>>> arch/microblaze/include/asm/serial.h
>>>>>> arch/microblaze/include/asm/shmparam.h
>>>>>> arch/microblaze/include/asm/topology.h
>>>>>> arch/microblaze/include/asm/ucontext.h
>>>>>> arch/microblaze/include/asm/vga.h
>>>>>> arch/microblaze/include/asm/xor.h
>>>>>> arch/microblaze/include/uapi/asm/bitsperlong.h
>>>>>> arch/microblaze/include/uapi/asm/errno.h
>>>>>> arch/microblaze/include/uapi/asm/fcntl.h
>>>>>> arch/microblaze/include/uapi/asm/ioctl.h
>>>>>> arch/microblaze/include/uapi/asm/ioctls.h
>>>>>> arch/microblaze/include/uapi/asm/ipcbuf.h
>>>>>> arch/microblaze/include/uapi/asm/kvm_para.h
>>>>>> arch/microblaze/include/uapi/asm/mman.h
>>>>>> arch/microblaze/include/uapi/asm/msgbuf.h
>>>>>> arch/microblaze/include/uapi/asm/param.h
>>>>>> arch/microblaze/include/uapi/asm/poll.h
>>>>>> arch/microblaze/include/uapi/asm/resource.h
>>>>>> arch/microblaze/include/uapi/asm/sembuf.h
>>>>>> arch/microblaze/include/uapi/asm/shmbuf.h
>>>>>> arch/microblaze/include/uapi/asm/siginfo.h
>>>>>> arch/microblaze/include/uapi/asm/signal.h
>>>>>> arch/microblaze/includ
>>>>>> Aborting
>>>>>>
>>>>>>
>>>>>>
>>>>>> W dniu 2017-09-20 o 11:45, Paweł Staszewski pisze:
>>>>>>> Ok looks like ending bisection
>>>>>>>
>>>>>>>
>>>>>>> Latest bisected kernel when there is no kernel panic 4.12.0+
>>>>>>> (from next) - but only this warning:
>>>>>>>
>>>>>>> [ 309.030019] NETDEV WATCHDOG: enp4s0f0 (ixgbe): transmit queue
>>>>>>> 0 timed out
>>>>>>> [ 309.030034] ------------[ cut here ]------------
>>>>>>> [ 309.030040] WARNING: CPU: 35 PID: 0 at dev_watchdog+0xcf/0x139
>>>>>>> [ 309.030041] Modules linked in: bonding ipmi_si
>>>>>>> x86_pkg_temp_thermal
>>>>>>> [ 309.030045] CPU: 35 PID: 0 Comm: swapper/35 Not tainted
>>>>>>> 4.12.0+ #5
>>>>>>> [ 309.030046] task: ffff88086d98a000 task.stack: ffffc90003378000
>>>>>>> [ 309.030048] RIP: 0010:dev_watchdog+0xcf/0x139
>>>>>>> [ 309.030049] RSP: 0018:ffff88087fbc3ea8 EFLAGS: 00010246
>>>>>>> [ 309.030050] RAX: 000000000000003d RBX: ffff88046b680000 RCX:
>>>>>>> 0000000000000000
>>>>>>> [ 309.030050] RDX: ffff88087fbd2f01 RSI: 0000000000000000 RDI:
>>>>>>> ffff88087fbcda08
>>>>>>> [ 309.030051] RBP: ffff88087fbc3eb8 R08: 0000000000000000 R09:
>>>>>>> ffff88087ff80a04
>>>>>>> [ 309.030051] R10: 0000000000000000 R11: ffff88086d98a001 R12:
>>>>>>> 0000000000000000
>>>>>>> [ 309.030052] R13: ffff88087fbc3ef8 R14: ffff88086d98a000 R15:
>>>>>>> ffffffff81c06008
>>>>>>> [ 309.030053] FS: 0000000000000000(0000)
>>>>>>> GS:ffff88087fbc0000(0000) knlGS:0000000000000000
>>>>>>> [ 309.030054] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>>>>> [ 309.030054] CR2: 00007fba600f6098 CR3: 000000086b955000 CR4:
>>>>>>> 00000000001406e0
>>>>>>> [ 309.030055] Call Trace:
>>>>>>> [ 309.030057] <IRQ>
>>>>>>> [ 309.030059] ? netif_tx_lock+0x79/0x79
>>>>>>> [ 309.030062] call_timer_fn.isra.24+0x17/0x77
>>>>>>> [ 309.030063] run_timer_softirq+0x118/0x161
>>>>>>> [ 309.030065] ? netif_tx_lock+0x79/0x79
>>>>>>> [ 309.030066] ? ktime_get+0x2b/0x42
>>>>>>> [ 309.030070] ? lapic_next_deadline+0x21/0x27
>>>>>>> [ 309.030073] ? clockevents_program_event+0xa8/0xc5
>>>>>>> [ 309.030076] __do_softirq+0xa8/0x19d
>>>>>>> [ 309.030078] irq_exit+0x5d/0x6b
>>>>>>> [ 309.030079] smp_apic_timer_interrupt+0x2a/0x36
>>>>>>> [ 309.030082] apic_timer_interrupt+0x89/0x90
>>>>>>> [ 309.030085] RIP: 0010:mwait_idle+0x4e/0x6a
>>>>>>> [ 309.030086] RSP: 0018:ffffc9000337be98 EFLAGS: 00000246
>>>>>>> ORIG_RAX: ffffffffffffff10
>>>>>>> [ 309.030087] RAX: 0000000000000000 RBX: 0000000000000000 RCX:
>>>>>>> 0000000000000000
>>>>>>> [ 309.030087] RDX: 0000000000000000 RSI: 0000000000000000 RDI:
>>>>>>> ffff88086d98a000
>>>>>>> [ 309.030088] RBP: ffffc9000337be98 R08: ffff88046f8279a0 R09:
>>>>>>> ffff88046f827040
>>>>>>> [ 309.030089] R10: ffff88086d98a000 R11: ffff88086d98a000 R12:
>>>>>>> 0000000000000000
>>>>>>> [ 309.030089] R13: ffff88086d98a000 R14: ffff88086d98a000 R15:
>>>>>>> ffff88086d98a000
>>>>>>> [ 309.030090] </IRQ>
>>>>>>> [ 309.030094] arch_cpu_idle+0xa/0xc
>>>>>>> [ 309.030095] default_idle_call+0x19/0x1b
>>>>>>> [ 309.030102] do_idle+0xbc/0x196
>>>>>>> [ 309.030104] cpu_startup_entry+0x1d/0x20
>>>>>>> [ 309.030105] start_secondary+0xd8/0xdc
>>>>>>> [ 309.030108] secondary_startup_64+0x9f/0x9f
>>>>>>> [ 309.030109] Code: cc 75 bd eb 35 48 89 df c6 05 c3 dc 74 00
>>>>>>> 01 e8 3a 62 fe ff 44 89 e1 48 89 de 48 89 c2 48 c7 c7 0f 65 a4
>>>>>>> 81 31 c0 e8 3d 4c b5 ff <0f> ff 48 8b 83 e0 01 00 00 48 89 df ff
>>>>>>> 50 78 48 8b 05 a0 bc 6a
>>>>>>> [ 309.030128] ---[ end trace 9102cb25703ae2d9 ]---
>>>>>>>
>>>>>>>
>>>>>>> I just marked it as good - cause this problem above is differend
>>>>>>> - and im going to:
>>>>>>>
>>>>>>> git bisect good
>>>>>>> Bisecting: 1787 revisions left to test after this (roughly 11
>>>>>>> steps)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> W dniu 2017-09-20 o 10:44, Paweł Staszewski pisze:
>>>>>>>> Trying to make video from ipmi :)
>>>>>>>>
>>>>>>>> with that results:
>>>>>>>>
>>>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258521
>>>>>>>>
>>>>>>>> catched two more lines where it starts - panic from 4.13.2.
>>>>>>>>
>>>>>>>>
>>>>>>>> Now will try tro do some bisection
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> W dniu 2017-09-20 o 09:58, Paweł Staszewski pisze:
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Will try bisecting tonight
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> W dniu 2017-09-20 o 05:24, Eric Dumazet pisze:
>>>>>>>>>> On Wed, 2017-09-20 at 02:06 +0200, Paweł Staszewski wrote:
>>>>>>>>>>> Just checked kernel 4.13.2 and same problem
>>>>>>>>>>>
>>>>>>>>>>> Just after start all 6 bgp sessions - and kernel starts to
>>>>>>>>>>> learn routes
>>>>>>>>>>> it panic.
>>>>>>>>>>>
>>>>>>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258509
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Unfortunately we have not enough information from these traces.
>>>>>>>>>>
>>>>>>>>>> Can you get a full stack trace ?
>>>>>>>>>>
>>>>>>>>>> Alternatively, can you bisect ?
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Eric Dumazet @ 2017-09-20 13:11 UTC (permalink / raw)
To: Paweł Staszewski, Wei Wang; +Cc: Linux Kernel Network Developers, edumazet
In-Reply-To: <3324f95f-7686-81e0-a973-1a9220c918fe@itcare.pl>
Sorry for top-posting, but this is to give context to Wei, since Pawel
used a top posting way to report his bisection.
Wei, can you take a look at Pawel report ?
Crash happens in dst_destroy() at following :
if (dst->dev)
dev_put(dst->dev); <<CRASH>>
dst->dev is not NULL, but netdev->pcpu_refcnt is NULL
65 ff 08 decl %gs:(%rax) // CRASH since rax = NULL
Pawel, please share your netdevices and routing setup ?
Thanks !
On Wed, 2017-09-20 at 14:49 +0200, Paweł Staszewski wrote:
> And the last one
>
> git bisect good
> Bisecting: 1 revision left to test after this (roughly 1 step)
> [1cfb71eeb12047bcdbd3e6730ffed66e810a0855] ipv6: take dst->__refcnt for
> insertion into fib6 tree
>
> With this have kernel panic same as always
>
> git bisect bad
> Bisecting: 0 revisions left to test after this (roughly 0 steps)
> [b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4: mark DST_NOGC and
> remove the operation of dst_free()
>
>
>
> W dniu 2017-09-20 o 14:23, Paweł Staszewski pisze:
> > Almost there
> >
> > Bisecting: 6 revisions left to test after this (roughly 3 steps)
> > [ad65a2f05695aced349e308193c6e2a6b1d87112] ipv6: call dst_hold_safe()
> > properly
> >
> >
> >
> > W dniu 2017-09-20 o 13:02, Paweł Staszewski pisze:
> >> Ok resumed and soo far:
> >>
> >> Panic:
> >>
> >> # bad: [9cc9a5cb176ccb4f2cda5ac34da5a659926f125f] datapath: Avoid
> >> using stack larger than 1024.
> >> git bisect bad 9cc9a5cb176ccb4f2cda5ac34da5a659926f125f
> >>
> >> No panic:
> >>
> >> # good: [073cf9e20c333ab29744717a23f9e43ec7512a20] Merge branch
> >> 'udp-reduce-cache-pressure'
> >> git bisect good 073cf9e20c333ab29744717a23f9e43ec7512a20
> >>
> >>
> >> W dniu 2017-09-20 o 12:22, Paweł Staszewski pisze:
> >>> Soo far bisected and marked:
> >>>
> >>> git bisect start
> >>> # bad: [07dd6cc1fff160143e82cf5df78c1db0b6e03355] Linux 4.13.2
> >>> git bisect bad 07dd6cc1fff160143e82cf5df78c1db0b6e03355
> >>> # good: [5d7d2e03e0f01a992e3521b180c3d3e67905f269] Linux 4.12.13
> >>> git bisect good 5d7d2e03e0f01a992e3521b180c3d3e67905f269
> >>> # good: [6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c] Linux 4.12
> >>> git bisect good 6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c
> >>> # bad: [ac7b75966c9c86426b55fe1c50ae148aa4571075] Merge tag
> >>> 'pinctrl-v4.13-1' of
> >>> git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
> >>> git bisect bad ac7b75966c9c86426b55fe1c50ae148aa4571075
> >>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
> >>> 'next' of
> >>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
> >>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
> >>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
> >>> 'next' of
> >>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
> >>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
> >>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
> >>> 'next' of
> >>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
> >>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
> >>>
> >>>
> >>>
> >>> W dniu 2017-09-20 o 12:21, Paweł Staszewski pisze:
> >>>> Ok kernel crashed with different panic that i didnt catch when i
> >>>> was doing bisect and now my bisection is broken :)
> >>>>
> >>>> git bisect good
> >>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
> >>>> error: Your local changes to the following files would be
> >>>> overwritten by checkout:
> >>>> Documentation/00-INDEX
> >>>> Documentation/ABI/stable/sysfs-class-udc
> >>>> Documentation/ABI/testing/configfs-usb-gadget-uac1
> >>>> Documentation/ABI/testing/ima_policy
> >>>> Documentation/ABI/testing/sysfs-bus-iio
> >>>> Documentation/ABI/testing/sysfs-bus-iio-meas-spec
> >>>> Documentation/ABI/testing/sysfs-bus-iio-timer-stm32
> >>>> Documentation/ABI/testing/sysfs-class-net
> >>>> Documentation/ABI/testing/sysfs-class-power-twl4030
> >>>> Documentation/ABI/testing/sysfs-class-typec
> >>>> Documentation/DMA-API.txt
> >>>> Documentation/IRQ-domain.txt
> >>>> Documentation/Makefile
> >>>> Documentation/PCI/MSI-HOWTO.txt
> >>>> Documentation/RCU/00-INDEX
> >>>> Documentation/RCU/Design/Requirements/Requirements.html
> >>>> Documentation/RCU/checklist.txt
> >>>> Documentation/admin-guide/README.rst
> >>>> Documentation/admin-guide/devices.txt
> >>>> Documentation/admin-guide/index.rst
> >>>> Documentation/admin-guide/kernel-parameters.txt
> >>>> Documentation/admin-guide/pm/cpufreq.rst
> >>>> Documentation/admin-guide/pm/intel_pstate.rst
> >>>> Documentation/admin-guide/ras.rst
> >>>> Documentation/arm/Atmel/README
> >>>> Documentation/block/biodoc.txt
> >>>> Documentation/conf.py
> >>>> Documentation/core-api/assoc_array.rst
> >>>> Documentation/core-api/atomic_ops.rst
> >>>> Documentation/core-api/index.rst
> >>>> Documentation/crypto/asymmetric-keys.txt
> >>>> Documentation/dev-tools/index.rst
> >>>> Documentation/dev-tools/sparse.rst
> >>>> Documentation/devicetree/bindings/arm/amlogic.txt
> >>>> Documentation/devicetree/bindings/arm/atmel-at91.txt
> >>>> Documentation/devicetree/bindings/arm/ccn.txt
> >>>> Documentation/devicetree/bindings/arm/cpus.txt
> >>>> Documentation/devicetree/bindings/arm/gemini.txt
> >>>> Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
> >>>> Documentation/devicetree/bindings/arm/keystone/keystone.txt
> >>>> Documentation/devicetree/bindings/arm/mediatek.txt
> >>>> Documentation/devicetree/bindings/arm/rockchip.txt
> >>>> Documentation/devicetree/bindings/arm/shmobile.txt
> >>>> Documentation/devicetree/bindings/arm/tegra.txt
> >>>> Documentation/devicetree/bindings/ata/ahci-fsl-qoriq.txt
> >>>> Documentation/devicetree/bindings/bus/brcm,gisb-arb.txt
> >>>> Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt
> >>>> Documentation/devicetree/bindings/cpufreq/ti-cpufreq.txt
> >>>> Documentation/devicetree/bindings/gpio/gpio_atmel.txt
> >>>> Documentation/devicetree/bindings/iio/adc/amlogic,meson-saradc.txt
> >>>> Documentation/devicetree/bindings/iio/adc/renesas,gyroadc.txt
> >>>> Documentation/devicetree/bindings/iio/adc/st,stm32-adc.txt
> >>>> Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt
> >>>> Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-nmi.txt
> >>>>
> >>>> Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-vic.txt
> >>>>
> >>>> Documentation/devicetree/bindings/interrupt-controller/mediatek,sysirq.txt
> >>>>
> >>>> Documentation/devicetree/bindings/leds/common.txt
> >>>> Documentation/devicetree/bindings/mfd/hi6421.txt
> >>>> Documentation/devicetree/bindings/mfd/tps65910.txt
> >>>> Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
> >>>> Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
> >>>> Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
> >>>> Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
> >>>> Documentation/devicetree/bindings/mtd/atmel-nand.txt
> >>>> Documentation/devicetree/bindings/net/dsa/b53.txt
> >>>> Documentation/devicetree/bindings/net/ethernet.txt
> >>>> Documentation/devicetree/bindings/net/macb.txt
> >>>> Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
> >>>> Documentation/devicetree/bindings/net/ti,wilink-st.txt
> >>>> Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
> >>>> Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
> >>>> Documentation/devicetree/bindings/opp/opp.txt
> >>>> Documentation/devicetree/bindings/phy/bcm-ns-usb3-phy.txt
> >>>> Documentation/devicetree/bindings/phy/brcm-sata-phy.txt
> >>>> Documentation/devicetree/bindings/phy/meson8b-usb2-phy.txt
> >>>> Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt
> >>>> Documentation/devicetree/bindings/power/rockchip-io-domain.txt
> >>>> Documentation/devicetree/bindings/power/supply/bq27xxx.txt
> >>>> Documentation/devicetree/bindings/property-units.txt
> >>>> Documentation/devicetree/bindings/regulator/regulator.txt
> >>>> Documentation/devicetree/bindings/serial/8
> >>>> error: The following untracked working tree files would be
> >>>> overwritten by checkout:
> >>>> Documentation/ABI/testing/sysfs-class-net-phydev
> >>>> Documentation/DocBook/.gitignore
> >>>> Documentation/DocBook/Makefile
> >>>> Documentation/DocBook/filesystems.tmpl
> >>>> Documentation/DocBook/kernel-hacking.tmpl
> >>>> Documentation/DocBook/kernel-locking.tmpl
> >>>> Documentation/DocBook/kgdb.tmpl
> >>>> Documentation/DocBook/libata.tmpl
> >>>> Documentation/DocBook/librs.tmpl
> >>>> Documentation/DocBook/lsm.tmpl
> >>>> Documentation/DocBook/mtdnand.tmpl
> >>>> Documentation/DocBook/networking.tmpl
> >>>> Documentation/DocBook/rapidio.tmpl
> >>>> Documentation/DocBook/s390-drivers.tmpl
> >>>> Documentation/DocBook/scsi.tmpl
> >>>> Documentation/DocBook/sh.tmpl
> >>>> Documentation/DocBook/stylesheet.xsl
> >>>> Documentation/DocBook/w1.tmpl
> >>>> Documentation/DocBook/z8530book.tmpl
> >>>> Documentation/Makefile.sphinx
> >>>> Documentation/RCU/trace.txt
> >>>> Documentation/devicetree/bindings/i2c/i2c-mt6577.txt
> >>>> Documentation/devicetree/bindings/misc/allwinner,syscon.txt
> >>>> Documentation/devicetree/bindings/net/cortina.txt
> >>>> Documentation/devicetree/bindings/net/dsa/ksz.txt
> >>>> Documentation/devicetree/bindings/net/dwmac-sun8i.txt
> >>>> Documentation/devicetree/bindings/net/qca,qca7000.txt
> >>>> Documentation/devicetree/bindings/power/max8903-charger.txt
> >>>> Documentation/devicetree/bindings/power_supply/maxim,max14656.txt
> >>>> Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
> >>>> Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
> >>>> Documentation/doc-guide/docbook.rst
> >>>> Documentation/networking/tls.txt
> >>>> Documentation/prctl/no_new_privs.txt
> >>>> Documentation/prctl/seccomp_filter.txt
> >>>> Documentation/security/00-INDEX
> >>>> Documentation/security/IMA-templates.txt
> >>>> Documentation/security/LSM.txt
> >>>> Documentation/security/LoadPin.txt
> >>>> Documentation/security/SELinux.txt
> >>>> Documentation/security/Smack.txt
> >>>> Documentation/security/Yama.txt
> >>>> Documentation/security/apparmor.txt
> >>>> Documentation/security/conf.py
> >>>> Documentation/security/credentials.txt
> >>>> Documentation/security/keys-ecryptfs.txt
> >>>> Documentation/security/keys-request-key.txt
> >>>> Documentation/security/keys-trusted-encrypted.txt
> >>>> Documentation/security/keys.txt
> >>>> Documentation/security/self-protection.txt
> >>>> Documentation/security/tomoyo.txt
> >>>> Documentation/sphinx/convert_template.sed
> >>>> Documentation/sphinx/post_convert.sed
> >>>> Documentation/sphinx/tmplcvt
> >>>> Documentation/usb/typec.rst
> >>>> Documentation/usb/usb3-debug-port.rst
> >>>> arch/arm/boot/dts/rk1108-evb.dts
> >>>> arch/arm/boot/dts/rk1108.dtsi
> >>>> arch/arm/boot/dts/tegra20-whistler.dts
> >>>> arch/arm/mach-omap2/opp.c
> >>>> arch/arm/mach-omap2/pmu.c
> >>>> arch/ia64/include/asm/siginfo.h
> >>>> arch/m32r/include/uapi/asm/siginfo.h
> >>>> arch/microblaze/include/asm/bitops.h
> >>>> arch/microblaze/include/asm/bug.h
> >>>> arch/microblaze/include/asm/bugs.h
> >>>> arch/microblaze/include/asm/div64.h
> >>>> arch/microblaze/include/asm/emergency-restart.h
> >>>> arch/microblaze/include/asm/fb.h
> >>>> arch/microblaze/include/asm/hardirq.h
> >>>> arch/microblaze/include/asm/irq_regs.h
> >>>> arch/microblaze/include/asm/kdebug.h
> >>>> arch/microblaze/include/asm/kmap_types.h
> >>>> arch/microblaze/include/asm/linkage.h
> >>>> arch/microblaze/include/asm/local.h
> >>>> arch/microblaze/include/asm/local64.h
> >>>> arch/microblaze/include/asm/parport.h
> >>>> arch/microblaze/include/asm/percpu.h
> >>>> arch/microblaze/include/asm/serial.h
> >>>> arch/microblaze/include/asm/shmparam.h
> >>>> arch/microblaze/include/asm/topology.h
> >>>> arch/microblaze/include/asm/ucontext.h
> >>>> arch/microblaze/include/asm/vga.h
> >>>> arch/microblaze/include/asm/xor.h
> >>>> arch/microblaze/include/uapi/asm/bitsperlong.h
> >>>> arch/microblaze/include/uapi/asm/errno.h
> >>>> arch/microblaze/include/uapi/asm/fcntl.h
> >>>> arch/microblaze/include/uapi/asm/ioctl.h
> >>>> arch/microblaze/include/uapi/asm/ioctls.h
> >>>> arch/microblaze/include/uapi/asm/ipcbuf.h
> >>>> arch/microblaze/include/uapi/asm/kvm_para.h
> >>>> arch/microblaze/include/uapi/asm/mman.h
> >>>> arch/microblaze/include/uapi/asm/msgbuf.h
> >>>> arch/microblaze/include/uapi/asm/param.h
> >>>> arch/microblaze/include/uapi/asm/poll.h
> >>>> arch/microblaze/include/uapi/asm/resource.h
> >>>> arch/microblaze/include/uapi/asm/sembuf.h
> >>>> arch/microblaze/include/uapi/asm/shmbuf.h
> >>>> arch/microblaze/include/uapi/asm/siginfo.h
> >>>> arch/microblaze/include/uapi/asm/signal.h
> >>>> arch/microblaze/includ
> >>>> Aborting
> >>>>
> >>>>
> >>>>
> >>>> W dniu 2017-09-20 o 11:45, Paweł Staszewski pisze:
> >>>>> Ok looks like ending bisection
> >>>>>
> >>>>>
> >>>>> Latest bisected kernel when there is no kernel panic 4.12.0+ (from
> >>>>> next) - but only this warning:
> >>>>>
> >>>>> [ 309.030019] NETDEV WATCHDOG: enp4s0f0 (ixgbe): transmit queue 0
> >>>>> timed out
> >>>>> [ 309.030034] ------------[ cut here ]------------
> >>>>> [ 309.030040] WARNING: CPU: 35 PID: 0 at dev_watchdog+0xcf/0x139
> >>>>> [ 309.030041] Modules linked in: bonding ipmi_si
> >>>>> x86_pkg_temp_thermal
> >>>>> [ 309.030045] CPU: 35 PID: 0 Comm: swapper/35 Not tainted 4.12.0+ #5
> >>>>> [ 309.030046] task: ffff88086d98a000 task.stack: ffffc90003378000
> >>>>> [ 309.030048] RIP: 0010:dev_watchdog+0xcf/0x139
> >>>>> [ 309.030049] RSP: 0018:ffff88087fbc3ea8 EFLAGS: 00010246
> >>>>> [ 309.030050] RAX: 000000000000003d RBX: ffff88046b680000 RCX:
> >>>>> 0000000000000000
> >>>>> [ 309.030050] RDX: ffff88087fbd2f01 RSI: 0000000000000000 RDI:
> >>>>> ffff88087fbcda08
> >>>>> [ 309.030051] RBP: ffff88087fbc3eb8 R08: 0000000000000000 R09:
> >>>>> ffff88087ff80a04
> >>>>> [ 309.030051] R10: 0000000000000000 R11: ffff88086d98a001 R12:
> >>>>> 0000000000000000
> >>>>> [ 309.030052] R13: ffff88087fbc3ef8 R14: ffff88086d98a000 R15:
> >>>>> ffffffff81c06008
> >>>>> [ 309.030053] FS: 0000000000000000(0000)
> >>>>> GS:ffff88087fbc0000(0000) knlGS:0000000000000000
> >>>>> [ 309.030054] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> >>>>> [ 309.030054] CR2: 00007fba600f6098 CR3: 000000086b955000 CR4:
> >>>>> 00000000001406e0
> >>>>> [ 309.030055] Call Trace:
> >>>>> [ 309.030057] <IRQ>
> >>>>> [ 309.030059] ? netif_tx_lock+0x79/0x79
> >>>>> [ 309.030062] call_timer_fn.isra.24+0x17/0x77
> >>>>> [ 309.030063] run_timer_softirq+0x118/0x161
> >>>>> [ 309.030065] ? netif_tx_lock+0x79/0x79
> >>>>> [ 309.030066] ? ktime_get+0x2b/0x42
> >>>>> [ 309.030070] ? lapic_next_deadline+0x21/0x27
> >>>>> [ 309.030073] ? clockevents_program_event+0xa8/0xc5
> >>>>> [ 309.030076] __do_softirq+0xa8/0x19d
> >>>>> [ 309.030078] irq_exit+0x5d/0x6b
> >>>>> [ 309.030079] smp_apic_timer_interrupt+0x2a/0x36
> >>>>> [ 309.030082] apic_timer_interrupt+0x89/0x90
> >>>>> [ 309.030085] RIP: 0010:mwait_idle+0x4e/0x6a
> >>>>> [ 309.030086] RSP: 0018:ffffc9000337be98 EFLAGS: 00000246
> >>>>> ORIG_RAX: ffffffffffffff10
> >>>>> [ 309.030087] RAX: 0000000000000000 RBX: 0000000000000000 RCX:
> >>>>> 0000000000000000
> >>>>> [ 309.030087] RDX: 0000000000000000 RSI: 0000000000000000 RDI:
> >>>>> ffff88086d98a000
> >>>>> [ 309.030088] RBP: ffffc9000337be98 R08: ffff88046f8279a0 R09:
> >>>>> ffff88046f827040
> >>>>> [ 309.030089] R10: ffff88086d98a000 R11: ffff88086d98a000 R12:
> >>>>> 0000000000000000
> >>>>> [ 309.030089] R13: ffff88086d98a000 R14: ffff88086d98a000 R15:
> >>>>> ffff88086d98a000
> >>>>> [ 309.030090] </IRQ>
> >>>>> [ 309.030094] arch_cpu_idle+0xa/0xc
> >>>>> [ 309.030095] default_idle_call+0x19/0x1b
> >>>>> [ 309.030102] do_idle+0xbc/0x196
> >>>>> [ 309.030104] cpu_startup_entry+0x1d/0x20
> >>>>> [ 309.030105] start_secondary+0xd8/0xdc
> >>>>> [ 309.030108] secondary_startup_64+0x9f/0x9f
> >>>>> [ 309.030109] Code: cc 75 bd eb 35 48 89 df c6 05 c3 dc 74 00 01
> >>>>> e8 3a 62 fe ff 44 89 e1 48 89 de 48 89 c2 48 c7 c7 0f 65 a4 81 31
> >>>>> c0 e8 3d 4c b5 ff <0f> ff 48 8b 83 e0 01 00 00 48 89 df ff 50 78
> >>>>> 48 8b 05 a0 bc 6a
> >>>>> [ 309.030128] ---[ end trace 9102cb25703ae2d9 ]---
> >>>>>
> >>>>>
> >>>>> I just marked it as good - cause this problem above is differend -
> >>>>> and im going to:
> >>>>>
> >>>>> git bisect good
> >>>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> W dniu 2017-09-20 o 10:44, Paweł Staszewski pisze:
> >>>>>> Trying to make video from ipmi :)
> >>>>>>
> >>>>>> with that results:
> >>>>>>
> >>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258521
> >>>>>>
> >>>>>> catched two more lines where it starts - panic from 4.13.2.
> >>>>>>
> >>>>>>
> >>>>>> Now will try tro do some bisection
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> W dniu 2017-09-20 o 09:58, Paweł Staszewski pisze:
> >>>>>>> Hi
> >>>>>>>
> >>>>>>>
> >>>>>>> Will try bisecting tonight
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> W dniu 2017-09-20 o 05:24, Eric Dumazet pisze:
> >>>>>>>> On Wed, 2017-09-20 at 02:06 +0200, Paweł Staszewski wrote:
> >>>>>>>>> Just checked kernel 4.13.2 and same problem
> >>>>>>>>>
> >>>>>>>>> Just after start all 6 bgp sessions - and kernel starts to
> >>>>>>>>> learn routes
> >>>>>>>>> it panic.
> >>>>>>>>>
> >>>>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258509
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> Unfortunately we have not enough information from these traces.
> >>>>>>>>
> >>>>>>>> Can you get a full stack trace ?
> >>>>>>>>
> >>>>>>>> Alternatively, can you bisect ?
> >>>>>>>>
> >>>>>>>> Thanks.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>
> >>>
> >>
> >>
> >
> >
>
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Paweł Staszewski @ 2017-09-20 13:05 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Linux Kernel Network Developers
In-Reply-To: <3324f95f-7686-81e0-a973-1a9220c918fe@itcare.pl>
hmm
But after
b838d5e1c5b6e57b10ec8af2268824041e3ea911 is the first bad commit
commit b838d5e1c5b6e57b10ec8af2268824041e3ea911
Author: Wei Wang <weiwan@google.com>
Date: Sat Jun 17 10:42:32 2017 -0700
ipv4: mark DST_NOGC and remove the operation of dst_free()
With the previous preparation patches, we are ready to get rid of the
dst gc operation in ipv4 code and release dst based on refcnt only.
So this patch adds DST_NOGC flag for all IPv4 dst and remove the calls
to dst_free().
At this point, all dst created in ipv4 code do not use the dst gc
anymore and will be destroyed at the point when refcnt drops to 0.
Signed-off-by: Wei Wang <weiwan@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
:040000 040000 9b7e7fb641de6531fc7887473ca47ef7cb6a11da
831a73b71d3df1755f3e24c0d3c86d7a93fd55e2 M net
Still panic - soo will back to past 3 steps and will try to get again
bisect without panic.
W dniu 2017-09-20 o 14:49, Paweł Staszewski pisze:
> And the last one
>
> git bisect good
> Bisecting: 1 revision left to test after this (roughly 1 step)
> [1cfb71eeb12047bcdbd3e6730ffed66e810a0855] ipv6: take dst->__refcnt
> for insertion into fib6 tree
>
> With this have kernel panic same as always
>
> git bisect bad
> Bisecting: 0 revisions left to test after this (roughly 0 steps)
> [b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4: mark DST_NOGC and
> remove the operation of dst_free()
>
>
>
> W dniu 2017-09-20 o 14:23, Paweł Staszewski pisze:
>> Almost there
>>
>> Bisecting: 6 revisions left to test after this (roughly 3 steps)
>> [ad65a2f05695aced349e308193c6e2a6b1d87112] ipv6: call dst_hold_safe()
>> properly
>>
>>
>>
>> W dniu 2017-09-20 o 13:02, Paweł Staszewski pisze:
>>> Ok resumed and soo far:
>>>
>>> Panic:
>>>
>>> # bad: [9cc9a5cb176ccb4f2cda5ac34da5a659926f125f] datapath: Avoid
>>> using stack larger than 1024.
>>> git bisect bad 9cc9a5cb176ccb4f2cda5ac34da5a659926f125f
>>>
>>> No panic:
>>>
>>> # good: [073cf9e20c333ab29744717a23f9e43ec7512a20] Merge branch
>>> 'udp-reduce-cache-pressure'
>>> git bisect good 073cf9e20c333ab29744717a23f9e43ec7512a20
>>>
>>>
>>> W dniu 2017-09-20 o 12:22, Paweł Staszewski pisze:
>>>> Soo far bisected and marked:
>>>>
>>>> git bisect start
>>>> # bad: [07dd6cc1fff160143e82cf5df78c1db0b6e03355] Linux 4.13.2
>>>> git bisect bad 07dd6cc1fff160143e82cf5df78c1db0b6e03355
>>>> # good: [5d7d2e03e0f01a992e3521b180c3d3e67905f269] Linux 4.12.13
>>>> git bisect good 5d7d2e03e0f01a992e3521b180c3d3e67905f269
>>>> # good: [6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c] Linux 4.12
>>>> git bisect good 6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c
>>>> # bad: [ac7b75966c9c86426b55fe1c50ae148aa4571075] Merge tag
>>>> 'pinctrl-v4.13-1' of
>>>> git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
>>>> git bisect bad ac7b75966c9c86426b55fe1c50ae148aa4571075
>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>> 'next' of
>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>> 'next' of
>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>>> 'next' of
>>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>>
>>>>
>>>>
>>>> W dniu 2017-09-20 o 12:21, Paweł Staszewski pisze:
>>>>> Ok kernel crashed with different panic that i didnt catch when i
>>>>> was doing bisect and now my bisection is broken :)
>>>>>
>>>>> git bisect good
>>>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
>>>>> error: Your local changes to the following files would be
>>>>> overwritten by checkout:
>>>>> Documentation/00-INDEX
>>>>> Documentation/ABI/stable/sysfs-class-udc
>>>>> Documentation/ABI/testing/configfs-usb-gadget-uac1
>>>>> Documentation/ABI/testing/ima_policy
>>>>> Documentation/ABI/testing/sysfs-bus-iio
>>>>> Documentation/ABI/testing/sysfs-bus-iio-meas-spec
>>>>> Documentation/ABI/testing/sysfs-bus-iio-timer-stm32
>>>>> Documentation/ABI/testing/sysfs-class-net
>>>>> Documentation/ABI/testing/sysfs-class-power-twl4030
>>>>> Documentation/ABI/testing/sysfs-class-typec
>>>>> Documentation/DMA-API.txt
>>>>> Documentation/IRQ-domain.txt
>>>>> Documentation/Makefile
>>>>> Documentation/PCI/MSI-HOWTO.txt
>>>>> Documentation/RCU/00-INDEX
>>>>> Documentation/RCU/Design/Requirements/Requirements.html
>>>>> Documentation/RCU/checklist.txt
>>>>> Documentation/admin-guide/README.rst
>>>>> Documentation/admin-guide/devices.txt
>>>>> Documentation/admin-guide/index.rst
>>>>> Documentation/admin-guide/kernel-parameters.txt
>>>>> Documentation/admin-guide/pm/cpufreq.rst
>>>>> Documentation/admin-guide/pm/intel_pstate.rst
>>>>> Documentation/admin-guide/ras.rst
>>>>> Documentation/arm/Atmel/README
>>>>> Documentation/block/biodoc.txt
>>>>> Documentation/conf.py
>>>>> Documentation/core-api/assoc_array.rst
>>>>> Documentation/core-api/atomic_ops.rst
>>>>> Documentation/core-api/index.rst
>>>>> Documentation/crypto/asymmetric-keys.txt
>>>>> Documentation/dev-tools/index.rst
>>>>> Documentation/dev-tools/sparse.rst
>>>>> Documentation/devicetree/bindings/arm/amlogic.txt
>>>>> Documentation/devicetree/bindings/arm/atmel-at91.txt
>>>>> Documentation/devicetree/bindings/arm/ccn.txt
>>>>> Documentation/devicetree/bindings/arm/cpus.txt
>>>>> Documentation/devicetree/bindings/arm/gemini.txt
>>>>> Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
>>>>> Documentation/devicetree/bindings/arm/keystone/keystone.txt
>>>>> Documentation/devicetree/bindings/arm/mediatek.txt
>>>>> Documentation/devicetree/bindings/arm/rockchip.txt
>>>>> Documentation/devicetree/bindings/arm/shmobile.txt
>>>>> Documentation/devicetree/bindings/arm/tegra.txt
>>>>> Documentation/devicetree/bindings/ata/ahci-fsl-qoriq.txt
>>>>> Documentation/devicetree/bindings/bus/brcm,gisb-arb.txt
>>>>> Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt
>>>>> Documentation/devicetree/bindings/cpufreq/ti-cpufreq.txt
>>>>> Documentation/devicetree/bindings/gpio/gpio_atmel.txt
>>>>> Documentation/devicetree/bindings/iio/adc/amlogic,meson-saradc.txt
>>>>> Documentation/devicetree/bindings/iio/adc/renesas,gyroadc.txt
>>>>> Documentation/devicetree/bindings/iio/adc/st,stm32-adc.txt
>>>>> Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt
>>>>> Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-nmi.txt
>>>>>
>>>>> Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-vic.txt
>>>>>
>>>>> Documentation/devicetree/bindings/interrupt-controller/mediatek,sysirq.txt
>>>>>
>>>>> Documentation/devicetree/bindings/leds/common.txt
>>>>> Documentation/devicetree/bindings/mfd/hi6421.txt
>>>>> Documentation/devicetree/bindings/mfd/tps65910.txt
>>>>> Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
>>>>> Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
>>>>> Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
>>>>> Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
>>>>> Documentation/devicetree/bindings/mtd/atmel-nand.txt
>>>>> Documentation/devicetree/bindings/net/dsa/b53.txt
>>>>> Documentation/devicetree/bindings/net/ethernet.txt
>>>>> Documentation/devicetree/bindings/net/macb.txt
>>>>> Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
>>>>> Documentation/devicetree/bindings/net/ti,wilink-st.txt
>>>>> Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
>>>>> Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
>>>>> Documentation/devicetree/bindings/opp/opp.txt
>>>>> Documentation/devicetree/bindings/phy/bcm-ns-usb3-phy.txt
>>>>> Documentation/devicetree/bindings/phy/brcm-sata-phy.txt
>>>>> Documentation/devicetree/bindings/phy/meson8b-usb2-phy.txt
>>>>> Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt
>>>>> Documentation/devicetree/bindings/power/rockchip-io-domain.txt
>>>>> Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>>>>> Documentation/devicetree/bindings/property-units.txt
>>>>> Documentation/devicetree/bindings/regulator/regulator.txt
>>>>> Documentation/devicetree/bindings/serial/8
>>>>> error: The following untracked working tree files would be
>>>>> overwritten by checkout:
>>>>> Documentation/ABI/testing/sysfs-class-net-phydev
>>>>> Documentation/DocBook/.gitignore
>>>>> Documentation/DocBook/Makefile
>>>>> Documentation/DocBook/filesystems.tmpl
>>>>> Documentation/DocBook/kernel-hacking.tmpl
>>>>> Documentation/DocBook/kernel-locking.tmpl
>>>>> Documentation/DocBook/kgdb.tmpl
>>>>> Documentation/DocBook/libata.tmpl
>>>>> Documentation/DocBook/librs.tmpl
>>>>> Documentation/DocBook/lsm.tmpl
>>>>> Documentation/DocBook/mtdnand.tmpl
>>>>> Documentation/DocBook/networking.tmpl
>>>>> Documentation/DocBook/rapidio.tmpl
>>>>> Documentation/DocBook/s390-drivers.tmpl
>>>>> Documentation/DocBook/scsi.tmpl
>>>>> Documentation/DocBook/sh.tmpl
>>>>> Documentation/DocBook/stylesheet.xsl
>>>>> Documentation/DocBook/w1.tmpl
>>>>> Documentation/DocBook/z8530book.tmpl
>>>>> Documentation/Makefile.sphinx
>>>>> Documentation/RCU/trace.txt
>>>>> Documentation/devicetree/bindings/i2c/i2c-mt6577.txt
>>>>> Documentation/devicetree/bindings/misc/allwinner,syscon.txt
>>>>> Documentation/devicetree/bindings/net/cortina.txt
>>>>> Documentation/devicetree/bindings/net/dsa/ksz.txt
>>>>> Documentation/devicetree/bindings/net/dwmac-sun8i.txt
>>>>> Documentation/devicetree/bindings/net/qca,qca7000.txt
>>>>> Documentation/devicetree/bindings/power/max8903-charger.txt
>>>>> Documentation/devicetree/bindings/power_supply/maxim,max14656.txt
>>>>> Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
>>>>> Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
>>>>> Documentation/doc-guide/docbook.rst
>>>>> Documentation/networking/tls.txt
>>>>> Documentation/prctl/no_new_privs.txt
>>>>> Documentation/prctl/seccomp_filter.txt
>>>>> Documentation/security/00-INDEX
>>>>> Documentation/security/IMA-templates.txt
>>>>> Documentation/security/LSM.txt
>>>>> Documentation/security/LoadPin.txt
>>>>> Documentation/security/SELinux.txt
>>>>> Documentation/security/Smack.txt
>>>>> Documentation/security/Yama.txt
>>>>> Documentation/security/apparmor.txt
>>>>> Documentation/security/conf.py
>>>>> Documentation/security/credentials.txt
>>>>> Documentation/security/keys-ecryptfs.txt
>>>>> Documentation/security/keys-request-key.txt
>>>>> Documentation/security/keys-trusted-encrypted.txt
>>>>> Documentation/security/keys.txt
>>>>> Documentation/security/self-protection.txt
>>>>> Documentation/security/tomoyo.txt
>>>>> Documentation/sphinx/convert_template.sed
>>>>> Documentation/sphinx/post_convert.sed
>>>>> Documentation/sphinx/tmplcvt
>>>>> Documentation/usb/typec.rst
>>>>> Documentation/usb/usb3-debug-port.rst
>>>>> arch/arm/boot/dts/rk1108-evb.dts
>>>>> arch/arm/boot/dts/rk1108.dtsi
>>>>> arch/arm/boot/dts/tegra20-whistler.dts
>>>>> arch/arm/mach-omap2/opp.c
>>>>> arch/arm/mach-omap2/pmu.c
>>>>> arch/ia64/include/asm/siginfo.h
>>>>> arch/m32r/include/uapi/asm/siginfo.h
>>>>> arch/microblaze/include/asm/bitops.h
>>>>> arch/microblaze/include/asm/bug.h
>>>>> arch/microblaze/include/asm/bugs.h
>>>>> arch/microblaze/include/asm/div64.h
>>>>> arch/microblaze/include/asm/emergency-restart.h
>>>>> arch/microblaze/include/asm/fb.h
>>>>> arch/microblaze/include/asm/hardirq.h
>>>>> arch/microblaze/include/asm/irq_regs.h
>>>>> arch/microblaze/include/asm/kdebug.h
>>>>> arch/microblaze/include/asm/kmap_types.h
>>>>> arch/microblaze/include/asm/linkage.h
>>>>> arch/microblaze/include/asm/local.h
>>>>> arch/microblaze/include/asm/local64.h
>>>>> arch/microblaze/include/asm/parport.h
>>>>> arch/microblaze/include/asm/percpu.h
>>>>> arch/microblaze/include/asm/serial.h
>>>>> arch/microblaze/include/asm/shmparam.h
>>>>> arch/microblaze/include/asm/topology.h
>>>>> arch/microblaze/include/asm/ucontext.h
>>>>> arch/microblaze/include/asm/vga.h
>>>>> arch/microblaze/include/asm/xor.h
>>>>> arch/microblaze/include/uapi/asm/bitsperlong.h
>>>>> arch/microblaze/include/uapi/asm/errno.h
>>>>> arch/microblaze/include/uapi/asm/fcntl.h
>>>>> arch/microblaze/include/uapi/asm/ioctl.h
>>>>> arch/microblaze/include/uapi/asm/ioctls.h
>>>>> arch/microblaze/include/uapi/asm/ipcbuf.h
>>>>> arch/microblaze/include/uapi/asm/kvm_para.h
>>>>> arch/microblaze/include/uapi/asm/mman.h
>>>>> arch/microblaze/include/uapi/asm/msgbuf.h
>>>>> arch/microblaze/include/uapi/asm/param.h
>>>>> arch/microblaze/include/uapi/asm/poll.h
>>>>> arch/microblaze/include/uapi/asm/resource.h
>>>>> arch/microblaze/include/uapi/asm/sembuf.h
>>>>> arch/microblaze/include/uapi/asm/shmbuf.h
>>>>> arch/microblaze/include/uapi/asm/siginfo.h
>>>>> arch/microblaze/include/uapi/asm/signal.h
>>>>> arch/microblaze/includ
>>>>> Aborting
>>>>>
>>>>>
>>>>>
>>>>> W dniu 2017-09-20 o 11:45, Paweł Staszewski pisze:
>>>>>> Ok looks like ending bisection
>>>>>>
>>>>>>
>>>>>> Latest bisected kernel when there is no kernel panic 4.12.0+
>>>>>> (from next) - but only this warning:
>>>>>>
>>>>>> [ 309.030019] NETDEV WATCHDOG: enp4s0f0 (ixgbe): transmit queue
>>>>>> 0 timed out
>>>>>> [ 309.030034] ------------[ cut here ]------------
>>>>>> [ 309.030040] WARNING: CPU: 35 PID: 0 at dev_watchdog+0xcf/0x139
>>>>>> [ 309.030041] Modules linked in: bonding ipmi_si
>>>>>> x86_pkg_temp_thermal
>>>>>> [ 309.030045] CPU: 35 PID: 0 Comm: swapper/35 Not tainted
>>>>>> 4.12.0+ #5
>>>>>> [ 309.030046] task: ffff88086d98a000 task.stack: ffffc90003378000
>>>>>> [ 309.030048] RIP: 0010:dev_watchdog+0xcf/0x139
>>>>>> [ 309.030049] RSP: 0018:ffff88087fbc3ea8 EFLAGS: 00010246
>>>>>> [ 309.030050] RAX: 000000000000003d RBX: ffff88046b680000 RCX:
>>>>>> 0000000000000000
>>>>>> [ 309.030050] RDX: ffff88087fbd2f01 RSI: 0000000000000000 RDI:
>>>>>> ffff88087fbcda08
>>>>>> [ 309.030051] RBP: ffff88087fbc3eb8 R08: 0000000000000000 R09:
>>>>>> ffff88087ff80a04
>>>>>> [ 309.030051] R10: 0000000000000000 R11: ffff88086d98a001 R12:
>>>>>> 0000000000000000
>>>>>> [ 309.030052] R13: ffff88087fbc3ef8 R14: ffff88086d98a000 R15:
>>>>>> ffffffff81c06008
>>>>>> [ 309.030053] FS: 0000000000000000(0000)
>>>>>> GS:ffff88087fbc0000(0000) knlGS:0000000000000000
>>>>>> [ 309.030054] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>>>> [ 309.030054] CR2: 00007fba600f6098 CR3: 000000086b955000 CR4:
>>>>>> 00000000001406e0
>>>>>> [ 309.030055] Call Trace:
>>>>>> [ 309.030057] <IRQ>
>>>>>> [ 309.030059] ? netif_tx_lock+0x79/0x79
>>>>>> [ 309.030062] call_timer_fn.isra.24+0x17/0x77
>>>>>> [ 309.030063] run_timer_softirq+0x118/0x161
>>>>>> [ 309.030065] ? netif_tx_lock+0x79/0x79
>>>>>> [ 309.030066] ? ktime_get+0x2b/0x42
>>>>>> [ 309.030070] ? lapic_next_deadline+0x21/0x27
>>>>>> [ 309.030073] ? clockevents_program_event+0xa8/0xc5
>>>>>> [ 309.030076] __do_softirq+0xa8/0x19d
>>>>>> [ 309.030078] irq_exit+0x5d/0x6b
>>>>>> [ 309.030079] smp_apic_timer_interrupt+0x2a/0x36
>>>>>> [ 309.030082] apic_timer_interrupt+0x89/0x90
>>>>>> [ 309.030085] RIP: 0010:mwait_idle+0x4e/0x6a
>>>>>> [ 309.030086] RSP: 0018:ffffc9000337be98 EFLAGS: 00000246
>>>>>> ORIG_RAX: ffffffffffffff10
>>>>>> [ 309.030087] RAX: 0000000000000000 RBX: 0000000000000000 RCX:
>>>>>> 0000000000000000
>>>>>> [ 309.030087] RDX: 0000000000000000 RSI: 0000000000000000 RDI:
>>>>>> ffff88086d98a000
>>>>>> [ 309.030088] RBP: ffffc9000337be98 R08: ffff88046f8279a0 R09:
>>>>>> ffff88046f827040
>>>>>> [ 309.030089] R10: ffff88086d98a000 R11: ffff88086d98a000 R12:
>>>>>> 0000000000000000
>>>>>> [ 309.030089] R13: ffff88086d98a000 R14: ffff88086d98a000 R15:
>>>>>> ffff88086d98a000
>>>>>> [ 309.030090] </IRQ>
>>>>>> [ 309.030094] arch_cpu_idle+0xa/0xc
>>>>>> [ 309.030095] default_idle_call+0x19/0x1b
>>>>>> [ 309.030102] do_idle+0xbc/0x196
>>>>>> [ 309.030104] cpu_startup_entry+0x1d/0x20
>>>>>> [ 309.030105] start_secondary+0xd8/0xdc
>>>>>> [ 309.030108] secondary_startup_64+0x9f/0x9f
>>>>>> [ 309.030109] Code: cc 75 bd eb 35 48 89 df c6 05 c3 dc 74 00 01
>>>>>> e8 3a 62 fe ff 44 89 e1 48 89 de 48 89 c2 48 c7 c7 0f 65 a4 81 31
>>>>>> c0 e8 3d 4c b5 ff <0f> ff 48 8b 83 e0 01 00 00 48 89 df ff 50 78
>>>>>> 48 8b 05 a0 bc 6a
>>>>>> [ 309.030128] ---[ end trace 9102cb25703ae2d9 ]---
>>>>>>
>>>>>>
>>>>>> I just marked it as good - cause this problem above is differend
>>>>>> - and im going to:
>>>>>>
>>>>>> git bisect good
>>>>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> W dniu 2017-09-20 o 10:44, Paweł Staszewski pisze:
>>>>>>> Trying to make video from ipmi :)
>>>>>>>
>>>>>>> with that results:
>>>>>>>
>>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258521
>>>>>>>
>>>>>>> catched two more lines where it starts - panic from 4.13.2.
>>>>>>>
>>>>>>>
>>>>>>> Now will try tro do some bisection
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> W dniu 2017-09-20 o 09:58, Paweł Staszewski pisze:
>>>>>>>> Hi
>>>>>>>>
>>>>>>>>
>>>>>>>> Will try bisecting tonight
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> W dniu 2017-09-20 o 05:24, Eric Dumazet pisze:
>>>>>>>>> On Wed, 2017-09-20 at 02:06 +0200, Paweł Staszewski wrote:
>>>>>>>>>> Just checked kernel 4.13.2 and same problem
>>>>>>>>>>
>>>>>>>>>> Just after start all 6 bgp sessions - and kernel starts to
>>>>>>>>>> learn routes
>>>>>>>>>> it panic.
>>>>>>>>>>
>>>>>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258509
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Unfortunately we have not enough information from these traces.
>>>>>>>>>
>>>>>>>>> Can you get a full stack trace ?
>>>>>>>>>
>>>>>>>>> Alternatively, can you bisect ?
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
^ permalink raw reply
* Re: Latest net-next from GIT panic
From: Paweł Staszewski @ 2017-09-20 12:49 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Linux Kernel Network Developers
In-Reply-To: <cfc04422-51bd-0a28-6a8c-6b57179e8af2@itcare.pl>
And the last one
git bisect good
Bisecting: 1 revision left to test after this (roughly 1 step)
[1cfb71eeb12047bcdbd3e6730ffed66e810a0855] ipv6: take dst->__refcnt for
insertion into fib6 tree
With this have kernel panic same as always
git bisect bad
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4: mark DST_NOGC and
remove the operation of dst_free()
W dniu 2017-09-20 o 14:23, Paweł Staszewski pisze:
> Almost there
>
> Bisecting: 6 revisions left to test after this (roughly 3 steps)
> [ad65a2f05695aced349e308193c6e2a6b1d87112] ipv6: call dst_hold_safe()
> properly
>
>
>
> W dniu 2017-09-20 o 13:02, Paweł Staszewski pisze:
>> Ok resumed and soo far:
>>
>> Panic:
>>
>> # bad: [9cc9a5cb176ccb4f2cda5ac34da5a659926f125f] datapath: Avoid
>> using stack larger than 1024.
>> git bisect bad 9cc9a5cb176ccb4f2cda5ac34da5a659926f125f
>>
>> No panic:
>>
>> # good: [073cf9e20c333ab29744717a23f9e43ec7512a20] Merge branch
>> 'udp-reduce-cache-pressure'
>> git bisect good 073cf9e20c333ab29744717a23f9e43ec7512a20
>>
>>
>> W dniu 2017-09-20 o 12:22, Paweł Staszewski pisze:
>>> Soo far bisected and marked:
>>>
>>> git bisect start
>>> # bad: [07dd6cc1fff160143e82cf5df78c1db0b6e03355] Linux 4.13.2
>>> git bisect bad 07dd6cc1fff160143e82cf5df78c1db0b6e03355
>>> # good: [5d7d2e03e0f01a992e3521b180c3d3e67905f269] Linux 4.12.13
>>> git bisect good 5d7d2e03e0f01a992e3521b180c3d3e67905f269
>>> # good: [6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c] Linux 4.12
>>> git bisect good 6f7da290413ba713f0cdd9ff1a2a9bb129ef4f6c
>>> # bad: [ac7b75966c9c86426b55fe1c50ae148aa4571075] Merge tag
>>> 'pinctrl-v4.13-1' of
>>> git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
>>> git bisect bad ac7b75966c9c86426b55fe1c50ae148aa4571075
>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>> 'next' of
>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>> 'next' of
>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>> # good: [e24dd9ee5399747b71c1d982a484fc7601795f31] Merge branch
>>> 'next' of
>>> git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
>>> git bisect good e24dd9ee5399747b71c1d982a484fc7601795f31
>>>
>>>
>>>
>>> W dniu 2017-09-20 o 12:21, Paweł Staszewski pisze:
>>>> Ok kernel crashed with different panic that i didnt catch when i
>>>> was doing bisect and now my bisection is broken :)
>>>>
>>>> git bisect good
>>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
>>>> error: Your local changes to the following files would be
>>>> overwritten by checkout:
>>>> Documentation/00-INDEX
>>>> Documentation/ABI/stable/sysfs-class-udc
>>>> Documentation/ABI/testing/configfs-usb-gadget-uac1
>>>> Documentation/ABI/testing/ima_policy
>>>> Documentation/ABI/testing/sysfs-bus-iio
>>>> Documentation/ABI/testing/sysfs-bus-iio-meas-spec
>>>> Documentation/ABI/testing/sysfs-bus-iio-timer-stm32
>>>> Documentation/ABI/testing/sysfs-class-net
>>>> Documentation/ABI/testing/sysfs-class-power-twl4030
>>>> Documentation/ABI/testing/sysfs-class-typec
>>>> Documentation/DMA-API.txt
>>>> Documentation/IRQ-domain.txt
>>>> Documentation/Makefile
>>>> Documentation/PCI/MSI-HOWTO.txt
>>>> Documentation/RCU/00-INDEX
>>>> Documentation/RCU/Design/Requirements/Requirements.html
>>>> Documentation/RCU/checklist.txt
>>>> Documentation/admin-guide/README.rst
>>>> Documentation/admin-guide/devices.txt
>>>> Documentation/admin-guide/index.rst
>>>> Documentation/admin-guide/kernel-parameters.txt
>>>> Documentation/admin-guide/pm/cpufreq.rst
>>>> Documentation/admin-guide/pm/intel_pstate.rst
>>>> Documentation/admin-guide/ras.rst
>>>> Documentation/arm/Atmel/README
>>>> Documentation/block/biodoc.txt
>>>> Documentation/conf.py
>>>> Documentation/core-api/assoc_array.rst
>>>> Documentation/core-api/atomic_ops.rst
>>>> Documentation/core-api/index.rst
>>>> Documentation/crypto/asymmetric-keys.txt
>>>> Documentation/dev-tools/index.rst
>>>> Documentation/dev-tools/sparse.rst
>>>> Documentation/devicetree/bindings/arm/amlogic.txt
>>>> Documentation/devicetree/bindings/arm/atmel-at91.txt
>>>> Documentation/devicetree/bindings/arm/ccn.txt
>>>> Documentation/devicetree/bindings/arm/cpus.txt
>>>> Documentation/devicetree/bindings/arm/gemini.txt
>>>> Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
>>>> Documentation/devicetree/bindings/arm/keystone/keystone.txt
>>>> Documentation/devicetree/bindings/arm/mediatek.txt
>>>> Documentation/devicetree/bindings/arm/rockchip.txt
>>>> Documentation/devicetree/bindings/arm/shmobile.txt
>>>> Documentation/devicetree/bindings/arm/tegra.txt
>>>> Documentation/devicetree/bindings/ata/ahci-fsl-qoriq.txt
>>>> Documentation/devicetree/bindings/bus/brcm,gisb-arb.txt
>>>> Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt
>>>> Documentation/devicetree/bindings/cpufreq/ti-cpufreq.txt
>>>> Documentation/devicetree/bindings/gpio/gpio_atmel.txt
>>>> Documentation/devicetree/bindings/iio/adc/amlogic,meson-saradc.txt
>>>> Documentation/devicetree/bindings/iio/adc/renesas,gyroadc.txt
>>>> Documentation/devicetree/bindings/iio/adc/st,stm32-adc.txt
>>>> Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt
>>>> Documentation/devicetree/bindings/interrupt-controller/allwinner,sunxi-nmi.txt
>>>>
>>>> Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-vic.txt
>>>>
>>>> Documentation/devicetree/bindings/interrupt-controller/mediatek,sysirq.txt
>>>>
>>>> Documentation/devicetree/bindings/leds/common.txt
>>>> Documentation/devicetree/bindings/mfd/hi6421.txt
>>>> Documentation/devicetree/bindings/mfd/tps65910.txt
>>>> Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
>>>> Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
>>>> Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
>>>> Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
>>>> Documentation/devicetree/bindings/mtd/atmel-nand.txt
>>>> Documentation/devicetree/bindings/net/dsa/b53.txt
>>>> Documentation/devicetree/bindings/net/ethernet.txt
>>>> Documentation/devicetree/bindings/net/macb.txt
>>>> Documentation/devicetree/bindings/net/marvell-orion-mdio.txt
>>>> Documentation/devicetree/bindings/net/ti,wilink-st.txt
>>>> Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
>>>> Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
>>>> Documentation/devicetree/bindings/opp/opp.txt
>>>> Documentation/devicetree/bindings/phy/bcm-ns-usb3-phy.txt
>>>> Documentation/devicetree/bindings/phy/brcm-sata-phy.txt
>>>> Documentation/devicetree/bindings/phy/meson8b-usb2-phy.txt
>>>> Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt
>>>> Documentation/devicetree/bindings/power/rockchip-io-domain.txt
>>>> Documentation/devicetree/bindings/power/supply/bq27xxx.txt
>>>> Documentation/devicetree/bindings/property-units.txt
>>>> Documentation/devicetree/bindings/regulator/regulator.txt
>>>> Documentation/devicetree/bindings/serial/8
>>>> error: The following untracked working tree files would be
>>>> overwritten by checkout:
>>>> Documentation/ABI/testing/sysfs-class-net-phydev
>>>> Documentation/DocBook/.gitignore
>>>> Documentation/DocBook/Makefile
>>>> Documentation/DocBook/filesystems.tmpl
>>>> Documentation/DocBook/kernel-hacking.tmpl
>>>> Documentation/DocBook/kernel-locking.tmpl
>>>> Documentation/DocBook/kgdb.tmpl
>>>> Documentation/DocBook/libata.tmpl
>>>> Documentation/DocBook/librs.tmpl
>>>> Documentation/DocBook/lsm.tmpl
>>>> Documentation/DocBook/mtdnand.tmpl
>>>> Documentation/DocBook/networking.tmpl
>>>> Documentation/DocBook/rapidio.tmpl
>>>> Documentation/DocBook/s390-drivers.tmpl
>>>> Documentation/DocBook/scsi.tmpl
>>>> Documentation/DocBook/sh.tmpl
>>>> Documentation/DocBook/stylesheet.xsl
>>>> Documentation/DocBook/w1.tmpl
>>>> Documentation/DocBook/z8530book.tmpl
>>>> Documentation/Makefile.sphinx
>>>> Documentation/RCU/trace.txt
>>>> Documentation/devicetree/bindings/i2c/i2c-mt6577.txt
>>>> Documentation/devicetree/bindings/misc/allwinner,syscon.txt
>>>> Documentation/devicetree/bindings/net/cortina.txt
>>>> Documentation/devicetree/bindings/net/dsa/ksz.txt
>>>> Documentation/devicetree/bindings/net/dwmac-sun8i.txt
>>>> Documentation/devicetree/bindings/net/qca,qca7000.txt
>>>> Documentation/devicetree/bindings/power/max8903-charger.txt
>>>> Documentation/devicetree/bindings/power_supply/maxim,max14656.txt
>>>> Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
>>>> Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt
>>>> Documentation/doc-guide/docbook.rst
>>>> Documentation/networking/tls.txt
>>>> Documentation/prctl/no_new_privs.txt
>>>> Documentation/prctl/seccomp_filter.txt
>>>> Documentation/security/00-INDEX
>>>> Documentation/security/IMA-templates.txt
>>>> Documentation/security/LSM.txt
>>>> Documentation/security/LoadPin.txt
>>>> Documentation/security/SELinux.txt
>>>> Documentation/security/Smack.txt
>>>> Documentation/security/Yama.txt
>>>> Documentation/security/apparmor.txt
>>>> Documentation/security/conf.py
>>>> Documentation/security/credentials.txt
>>>> Documentation/security/keys-ecryptfs.txt
>>>> Documentation/security/keys-request-key.txt
>>>> Documentation/security/keys-trusted-encrypted.txt
>>>> Documentation/security/keys.txt
>>>> Documentation/security/self-protection.txt
>>>> Documentation/security/tomoyo.txt
>>>> Documentation/sphinx/convert_template.sed
>>>> Documentation/sphinx/post_convert.sed
>>>> Documentation/sphinx/tmplcvt
>>>> Documentation/usb/typec.rst
>>>> Documentation/usb/usb3-debug-port.rst
>>>> arch/arm/boot/dts/rk1108-evb.dts
>>>> arch/arm/boot/dts/rk1108.dtsi
>>>> arch/arm/boot/dts/tegra20-whistler.dts
>>>> arch/arm/mach-omap2/opp.c
>>>> arch/arm/mach-omap2/pmu.c
>>>> arch/ia64/include/asm/siginfo.h
>>>> arch/m32r/include/uapi/asm/siginfo.h
>>>> arch/microblaze/include/asm/bitops.h
>>>> arch/microblaze/include/asm/bug.h
>>>> arch/microblaze/include/asm/bugs.h
>>>> arch/microblaze/include/asm/div64.h
>>>> arch/microblaze/include/asm/emergency-restart.h
>>>> arch/microblaze/include/asm/fb.h
>>>> arch/microblaze/include/asm/hardirq.h
>>>> arch/microblaze/include/asm/irq_regs.h
>>>> arch/microblaze/include/asm/kdebug.h
>>>> arch/microblaze/include/asm/kmap_types.h
>>>> arch/microblaze/include/asm/linkage.h
>>>> arch/microblaze/include/asm/local.h
>>>> arch/microblaze/include/asm/local64.h
>>>> arch/microblaze/include/asm/parport.h
>>>> arch/microblaze/include/asm/percpu.h
>>>> arch/microblaze/include/asm/serial.h
>>>> arch/microblaze/include/asm/shmparam.h
>>>> arch/microblaze/include/asm/topology.h
>>>> arch/microblaze/include/asm/ucontext.h
>>>> arch/microblaze/include/asm/vga.h
>>>> arch/microblaze/include/asm/xor.h
>>>> arch/microblaze/include/uapi/asm/bitsperlong.h
>>>> arch/microblaze/include/uapi/asm/errno.h
>>>> arch/microblaze/include/uapi/asm/fcntl.h
>>>> arch/microblaze/include/uapi/asm/ioctl.h
>>>> arch/microblaze/include/uapi/asm/ioctls.h
>>>> arch/microblaze/include/uapi/asm/ipcbuf.h
>>>> arch/microblaze/include/uapi/asm/kvm_para.h
>>>> arch/microblaze/include/uapi/asm/mman.h
>>>> arch/microblaze/include/uapi/asm/msgbuf.h
>>>> arch/microblaze/include/uapi/asm/param.h
>>>> arch/microblaze/include/uapi/asm/poll.h
>>>> arch/microblaze/include/uapi/asm/resource.h
>>>> arch/microblaze/include/uapi/asm/sembuf.h
>>>> arch/microblaze/include/uapi/asm/shmbuf.h
>>>> arch/microblaze/include/uapi/asm/siginfo.h
>>>> arch/microblaze/include/uapi/asm/signal.h
>>>> arch/microblaze/includ
>>>> Aborting
>>>>
>>>>
>>>>
>>>> W dniu 2017-09-20 o 11:45, Paweł Staszewski pisze:
>>>>> Ok looks like ending bisection
>>>>>
>>>>>
>>>>> Latest bisected kernel when there is no kernel panic 4.12.0+ (from
>>>>> next) - but only this warning:
>>>>>
>>>>> [ 309.030019] NETDEV WATCHDOG: enp4s0f0 (ixgbe): transmit queue 0
>>>>> timed out
>>>>> [ 309.030034] ------------[ cut here ]------------
>>>>> [ 309.030040] WARNING: CPU: 35 PID: 0 at dev_watchdog+0xcf/0x139
>>>>> [ 309.030041] Modules linked in: bonding ipmi_si
>>>>> x86_pkg_temp_thermal
>>>>> [ 309.030045] CPU: 35 PID: 0 Comm: swapper/35 Not tainted 4.12.0+ #5
>>>>> [ 309.030046] task: ffff88086d98a000 task.stack: ffffc90003378000
>>>>> [ 309.030048] RIP: 0010:dev_watchdog+0xcf/0x139
>>>>> [ 309.030049] RSP: 0018:ffff88087fbc3ea8 EFLAGS: 00010246
>>>>> [ 309.030050] RAX: 000000000000003d RBX: ffff88046b680000 RCX:
>>>>> 0000000000000000
>>>>> [ 309.030050] RDX: ffff88087fbd2f01 RSI: 0000000000000000 RDI:
>>>>> ffff88087fbcda08
>>>>> [ 309.030051] RBP: ffff88087fbc3eb8 R08: 0000000000000000 R09:
>>>>> ffff88087ff80a04
>>>>> [ 309.030051] R10: 0000000000000000 R11: ffff88086d98a001 R12:
>>>>> 0000000000000000
>>>>> [ 309.030052] R13: ffff88087fbc3ef8 R14: ffff88086d98a000 R15:
>>>>> ffffffff81c06008
>>>>> [ 309.030053] FS: 0000000000000000(0000)
>>>>> GS:ffff88087fbc0000(0000) knlGS:0000000000000000
>>>>> [ 309.030054] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>>> [ 309.030054] CR2: 00007fba600f6098 CR3: 000000086b955000 CR4:
>>>>> 00000000001406e0
>>>>> [ 309.030055] Call Trace:
>>>>> [ 309.030057] <IRQ>
>>>>> [ 309.030059] ? netif_tx_lock+0x79/0x79
>>>>> [ 309.030062] call_timer_fn.isra.24+0x17/0x77
>>>>> [ 309.030063] run_timer_softirq+0x118/0x161
>>>>> [ 309.030065] ? netif_tx_lock+0x79/0x79
>>>>> [ 309.030066] ? ktime_get+0x2b/0x42
>>>>> [ 309.030070] ? lapic_next_deadline+0x21/0x27
>>>>> [ 309.030073] ? clockevents_program_event+0xa8/0xc5
>>>>> [ 309.030076] __do_softirq+0xa8/0x19d
>>>>> [ 309.030078] irq_exit+0x5d/0x6b
>>>>> [ 309.030079] smp_apic_timer_interrupt+0x2a/0x36
>>>>> [ 309.030082] apic_timer_interrupt+0x89/0x90
>>>>> [ 309.030085] RIP: 0010:mwait_idle+0x4e/0x6a
>>>>> [ 309.030086] RSP: 0018:ffffc9000337be98 EFLAGS: 00000246
>>>>> ORIG_RAX: ffffffffffffff10
>>>>> [ 309.030087] RAX: 0000000000000000 RBX: 0000000000000000 RCX:
>>>>> 0000000000000000
>>>>> [ 309.030087] RDX: 0000000000000000 RSI: 0000000000000000 RDI:
>>>>> ffff88086d98a000
>>>>> [ 309.030088] RBP: ffffc9000337be98 R08: ffff88046f8279a0 R09:
>>>>> ffff88046f827040
>>>>> [ 309.030089] R10: ffff88086d98a000 R11: ffff88086d98a000 R12:
>>>>> 0000000000000000
>>>>> [ 309.030089] R13: ffff88086d98a000 R14: ffff88086d98a000 R15:
>>>>> ffff88086d98a000
>>>>> [ 309.030090] </IRQ>
>>>>> [ 309.030094] arch_cpu_idle+0xa/0xc
>>>>> [ 309.030095] default_idle_call+0x19/0x1b
>>>>> [ 309.030102] do_idle+0xbc/0x196
>>>>> [ 309.030104] cpu_startup_entry+0x1d/0x20
>>>>> [ 309.030105] start_secondary+0xd8/0xdc
>>>>> [ 309.030108] secondary_startup_64+0x9f/0x9f
>>>>> [ 309.030109] Code: cc 75 bd eb 35 48 89 df c6 05 c3 dc 74 00 01
>>>>> e8 3a 62 fe ff 44 89 e1 48 89 de 48 89 c2 48 c7 c7 0f 65 a4 81 31
>>>>> c0 e8 3d 4c b5 ff <0f> ff 48 8b 83 e0 01 00 00 48 89 df ff 50 78
>>>>> 48 8b 05 a0 bc 6a
>>>>> [ 309.030128] ---[ end trace 9102cb25703ae2d9 ]---
>>>>>
>>>>>
>>>>> I just marked it as good - cause this problem above is differend -
>>>>> and im going to:
>>>>>
>>>>> git bisect good
>>>>> Bisecting: 1787 revisions left to test after this (roughly 11 steps)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> W dniu 2017-09-20 o 10:44, Paweł Staszewski pisze:
>>>>>> Trying to make video from ipmi :)
>>>>>>
>>>>>> with that results:
>>>>>>
>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258521
>>>>>>
>>>>>> catched two more lines where it starts - panic from 4.13.2.
>>>>>>
>>>>>>
>>>>>> Now will try tro do some bisection
>>>>>>
>>>>>>
>>>>>>
>>>>>> W dniu 2017-09-20 o 09:58, Paweł Staszewski pisze:
>>>>>>> Hi
>>>>>>>
>>>>>>>
>>>>>>> Will try bisecting tonight
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> W dniu 2017-09-20 o 05:24, Eric Dumazet pisze:
>>>>>>>> On Wed, 2017-09-20 at 02:06 +0200, Paweł Staszewski wrote:
>>>>>>>>> Just checked kernel 4.13.2 and same problem
>>>>>>>>>
>>>>>>>>> Just after start all 6 bgp sessions - and kernel starts to
>>>>>>>>> learn routes
>>>>>>>>> it panic.
>>>>>>>>>
>>>>>>>>> https://bugzilla.kernel.org/attachment.cgi?id=258509
>>>>>>>>>
>>>>>>>>
>>>>>>>> Unfortunately we have not enough information from these traces.
>>>>>>>>
>>>>>>>> Can you get a full stack trace ?
>>>>>>>>
>>>>>>>> Alternatively, can you bisect ?
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
^ permalink raw reply
* Re: mwifiex: make const arrays static to shink object code size
From: Kalle Valo @ 2017-09-20 12:47 UTC (permalink / raw)
To: Colin Ian King
Cc: Amitkumar Karwar, Nishant Sarmukadam, Ganapathi Bhat, Xinming Hu,
linux-wireless, netdev, kernel-janitors, linux-kernel
In-Reply-To: <20170916153424.28285-1-colin.king@canonical.com>
Colin Ian King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Don't populate const arrays on the stack, instead make them static
> Makes the object code smaller by nearly 300 bytes:
>
> Before:
> text data bss dec hex filename
> 69260 16149 576 85985 14fe1 cfg80211.o
>
> After:
> text data bss dec hex filename
> 68385 16725 576 85686 14eb6 cfg80211.o
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
Patch applied to wireless-drivers-next.git, thanks.
d157bcfaf854 mwifiex: make const arrays static to shink object code size
--
https://patchwork.kernel.org/patch/9954375/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox