Skip to content

Commit e343973

Browse files
Hariprasad Kelamgregkh
authored andcommitted
Octeontx2-af: Add proper checks for fwdata
[ Upstream commit 4a3dba4 ] firmware populates MAC address, link modes (supported, advertised) and EEPROM data in shared firmware structure which kernel access via MAC block(CGX/RPM). Accessing fwdata, on boards booted with out MAC block leading to kernel panics. Internal error: Oops: 0000000096000005 [#1] SMP [ 10.460721] Modules linked in: [ 10.463779] CPU: 0 UID: 0 PID: 174 Comm: kworker/0:3 Not tainted 6.19.0-rc5-00154-g76ec646abdf7-dirty #3 PREEMPT [ 10.474045] Hardware name: Marvell OcteonTX CN98XX board (DT) [ 10.479793] Workqueue: events work_for_cpu_fn [ 10.484159] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 10.491124] pc : rvu_sdp_init+0x18/0x114 [ 10.495051] lr : rvu_probe+0xe58/0x1d18 Fixes: 9978144 ("Octeontx2-af: Fetch MAC channel info from firmware") Fixes: 5f21226 ("Octeontx2-pf: ethtool: support multi advertise mode") Signed-off-by: Hariprasad Kelam <hkelam@marvell.com> Link: https://patch.msgid.link/20260121094819.2566786-1-hkelam@marvell.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 236a657 commit e343973

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1222,6 +1222,9 @@ int rvu_mbox_handler_cgx_set_link_mode(struct rvu *rvu,
12221222
u8 cgx_idx, lmac;
12231223
void *cgxd;
12241224

1225+
if (!rvu->fwdata)
1226+
return LMAC_AF_ERR_FIRMWARE_DATA_NOT_MAPPED;
1227+
12251228
if (!is_cgx_config_permitted(rvu, req->hdr.pcifunc))
12261229
return -EPERM;
12271230

drivers/net/ethernet/marvell/octeontx2/af/rvu_sdp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ int rvu_sdp_init(struct rvu *rvu)
5656
struct rvu_pfvf *pfvf;
5757
u32 i = 0;
5858

59-
if (rvu->fwdata->channel_data.valid) {
59+
if (rvu->fwdata && rvu->fwdata->channel_data.valid) {
6060
sdp_pf_num[0] = 0;
6161
pfvf = &rvu->pf[sdp_pf_num[0]];
6262
pfvf->sdp_info = &rvu->fwdata->channel_data.info;

0 commit comments

Comments
 (0)