You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.8 KiB
78 lines
2.8 KiB
From 9fb3bab32b430a90670e6c65cc15070c54a9a2d5 Mon Sep 17 00:00:00 2001
|
|
From: Alaa Hleihel <ahleihel@redhat.com>
|
|
Date: Tue, 12 May 2020 10:55:16 -0400
|
|
Subject: [PATCH 200/312] [netdrv] net/mlx5: Fix failing fw tracer allocation
|
|
on s390
|
|
|
|
Message-id: <20200512105530.4207-111-ahleihel@redhat.com>
|
|
Patchwork-id: 306982
|
|
Patchwork-instance: patchwork
|
|
O-Subject: [RHEL8.3 BZ 1789382 110/124] net/mlx5: Fix failing fw tracer allocation on s390
|
|
Bugzilla: 1789382
|
|
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
|
|
RH-Acked-by: Kamal Heib <kheib@redhat.com>
|
|
RH-Acked-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
Bugzilla: http://bugzilla.redhat.com/1789382
|
|
Upstream: v5.7-rc3
|
|
|
|
commit a019b36123aec9700b21ae0724710f62928a8bc1
|
|
Author: Niklas Schnelle <schnelle@linux.ibm.com>
|
|
Date: Thu Apr 9 09:46:20 2020 +0200
|
|
|
|
net/mlx5: Fix failing fw tracer allocation on s390
|
|
|
|
On s390 FORCE_MAX_ZONEORDER is 9 instead of 11, thus a larger kzalloc()
|
|
allocation as done for the firmware tracer will always fail.
|
|
|
|
Looking at mlx5_fw_tracer_save_trace(), it is actually the driver itself
|
|
that copies the debug data into the trace array and there is no need for
|
|
the allocation to be contiguous in physical memory. We can therefor use
|
|
kvzalloc() instead of kzalloc() and get rid of the large contiguous
|
|
allcoation.
|
|
|
|
Fixes: f53aaa31cce7 ("net/mlx5: FW tracer, implement tracer logic")
|
|
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
|
|
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
|
|
|
|
Signed-off-by: Alaa Hleihel <ahleihel@redhat.com>
|
|
Signed-off-by: Frantisek Hrbata <fhrbata@redhat.com>
|
|
---
|
|
drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
|
|
index c9c9b479bda5..5ce6ebbc7f10 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c
|
|
@@ -935,7 +935,7 @@ struct mlx5_fw_tracer *mlx5_fw_tracer_create(struct mlx5_core_dev *dev)
|
|
return NULL;
|
|
}
|
|
|
|
- tracer = kzalloc(sizeof(*tracer), GFP_KERNEL);
|
|
+ tracer = kvzalloc(sizeof(*tracer), GFP_KERNEL);
|
|
if (!tracer)
|
|
return ERR_PTR(-ENOMEM);
|
|
|
|
@@ -982,7 +982,7 @@ struct mlx5_fw_tracer *mlx5_fw_tracer_create(struct mlx5_core_dev *dev)
|
|
tracer->dev = NULL;
|
|
destroy_workqueue(tracer->work_queue);
|
|
free_tracer:
|
|
- kfree(tracer);
|
|
+ kvfree(tracer);
|
|
return ERR_PTR(err);
|
|
}
|
|
|
|
@@ -1061,7 +1061,7 @@ void mlx5_fw_tracer_destroy(struct mlx5_fw_tracer *tracer)
|
|
mlx5_fw_tracer_destroy_log_buf(tracer);
|
|
flush_workqueue(tracer->work_queue);
|
|
destroy_workqueue(tracer->work_queue);
|
|
- kfree(tracer);
|
|
+ kvfree(tracer);
|
|
}
|
|
|
|
static int fw_tracer_event(struct notifier_block *nb, unsigned long action, void *data)
|
|
--
|
|
2.13.6
|
|
|