lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
 <BY3PR18MB4707134E6C53529760BFE5C3A0432@BY3PR18MB4707.namprd18.prod.outlook.com>
Date: Mon, 21 Oct 2024 12:43:07 +0000
From: Sai Krishna Gajula <saikrishnag@...vell.com>
To: Kalesh Anakkur Purayil <kalesh-anakkur.purayil@...adcom.com>
CC: "davem@...emloft.net" <davem@...emloft.net>,
        "edumazet@...gle.com"
	<edumazet@...gle.com>,
        "kuba@...nel.org" <kuba@...nel.org>,
        "pabeni@...hat.com" <pabeni@...hat.com>,
        "netdev@...r.kernel.org"
	<netdev@...r.kernel.org>,
        "linux-kernel@...r.kernel.org"
	<linux-kernel@...r.kernel.org>,
        Sunil Kovvuri Goutham <sgoutham@...vell.com>,
        Geethasowjanya Akula <gakula@...vell.com>,
        Linu Cherian
	<lcherian@...vell.com>, Jerin Jacob <jerinj@...vell.com>,
        Hariprasad Kelam
	<hkelam@...vell.com>,
        Subbaraya Sundeep Bhatta <sbhatta@...vell.com>
Subject: Re: [net-next PATCH 2/6] octeontx2-af: CN20k basic mbox operations
 and structures


> -----Original Message-----
> From: Kalesh Anakkur Purayil <kalesh-anakkur.purayil@...adcom.com>
> Sent: Monday, October 21, 2024 9:01 AM
> To: Sai Krishna Gajula <saikrishnag@...vell.com>
> Cc: davem@...emloft.net; edumazet@...gle.com; kuba@...nel.org;
> pabeni@...hat.com; netdev@...r.kernel.org; linux-kernel@...r.kernel.org;
> Sunil Kovvuri Goutham <sgoutham@...vell.com>; Geethasowjanya Akula
> <gakula@...vell.com>; Linu Cherian <lcherian@...vell.com>; Jerin Jacob
> <jerinj@...vell.com>; Hariprasad Kelam <hkelam@...vell.com>; Subbaraya
> Sundeep Bhatta <sbhatta@...vell.com>
> Subject: Re: [net-next PATCH 2/6] octeontx2-af: CN20k basic
> mbox operations and structures
> 
> On Sat, Oct 19, 2024 at 2:02 AM Sai Krishna <saikrishnag@...vell.com>
> wrote:
> >
> > This patch adds basic mbox operation APIs and structures to add support
> > for mbox module on CN20k silicon. There are few CSR offsets, interrupts
> > changed between CN20k and prior Octeon series of devices.
> >
> > Signed-off-by: Sunil Kovvuri Goutham <sgoutham@...vell.com>
> > Signed-off-by: Sai Krishna <saikrishnag@...vell.com>
> > ---
> >  .../ethernet/marvell/octeontx2/af/Makefile    |  3 +-
> >  .../ethernet/marvell/octeontx2/af/cn20k/api.h | 22 +++++++
> >  .../marvell/octeontx2/af/cn20k/mbox_init.c    | 52 +++++++++++++++
> >  .../ethernet/marvell/octeontx2/af/cn20k/reg.h | 27 ++++++++
> >  .../net/ethernet/marvell/octeontx2/af/mbox.c  |  3 +
> >  .../net/ethernet/marvell/octeontx2/af/mbox.h  |  7 ++
> >  .../net/ethernet/marvell/octeontx2/af/rvu.c   | 65 +++++++++++++++----
> >  .../net/ethernet/marvell/octeontx2/af/rvu.h   | 22 +++++++
> >  .../marvell/octeontx2/af/rvu_struct.h         |  6 +-
> >  9 files changed, 192 insertions(+), 15 deletions(-)
> >  create mode 100644
> drivers/net/ethernet/marvell/octeontx2/af/cn20k/api.h
> >  create mode 100644
> drivers/net/ethernet/marvell/octeontx2/af/cn20k/mbox_init.c
> >  create mode 100644
> drivers/net/ethernet/marvell/octeontx2/af/cn20k/reg.h
> >
> > diff --git a/drivers/net/ethernet/marvell/octeontx2/af/Makefile
> b/drivers/net/ethernet/marvell/octeontx2/af/Makefile
> > index 3cf4c8285c90..38d8599dc6eb 100644
> > --- a/drivers/net/ethernet/marvell/octeontx2/af/Makefile
> > +++ b/drivers/net/ethernet/marvell/octeontx2/af/Makefile
> > @@ -11,4 +11,5 @@ rvu_mbox-y := mbox.o rvu_trace.o
> >  rvu_af-y := cgx.o rvu.o rvu_cgx.o rvu_npa.o rvu_nix.o \
> >                   rvu_reg.o rvu_npc.o rvu_debugfs.o ptp.o rvu_npc_fs.o \
> >                   rvu_cpt.o rvu_devlink.o rpm.o rvu_cn10k.o rvu_switch.o \
> > -                 rvu_sdp.o rvu_npc_hash.o mcs.o mcs_rvu_if.o mcs_cnf10kb.o
> > +                 rvu_sdp.o rvu_npc_hash.o mcs.o mcs_rvu_if.o mcs_cnf10kb.o \
> > +                 cn20k/mbox_init.o
> > diff --git a/drivers/net/ethernet/marvell/octeontx2/af/cn20k/api.h
> b/drivers/net/ethernet/marvell/octeontx2/af/cn20k/api.h
> > new file mode 100644
> > index 000000000000..b57bd38181aa
> > --- /dev/null
> > +++ b/drivers/net/ethernet/marvell/octeontx2/af/cn20k/api.h
> > @@ -0,0 +1,22 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/* Marvell RVU Admin Function driver
> > + *
> > + * Copyright (C) 2024 Marvell.
> > + *
> > + */
> > +
> > +#ifndef CN20K_API_H
> > +#define CN20K_API_H
> > +
> > +#include "../rvu.h"
> > +
> > +struct ng_rvu {
> > +       struct mbox_ops         *rvu_mbox_ops;
> > +       struct qmem             *pf_mbox_addr;
> > +};
> > +
> > +/* Mbox related APIs */
> > +int cn20k_rvu_mbox_init(struct rvu *rvu, int type, int num);
> > +int cn20k_rvu_get_mbox_regions(struct rvu *rvu, void **mbox_addr,
> > +                              int num, int type, unsigned long *pf_bmap);
> > +#endif /* CN20K_API_H */
> > diff --git a/drivers/net/ethernet/marvell/octeontx2/af/cn20k/mbox_init.c
> b/drivers/net/ethernet/marvell/octeontx2/af/cn20k/mbox_init.c
> > new file mode 100644
> > index 000000000000..0d7ad31e5dfb
> > --- /dev/null
> > +++ b/drivers/net/ethernet/marvell/octeontx2/af/cn20k/mbox_init.c
> > @@ -0,0 +1,52 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/* Marvell RVU Admin Function driver
> > + *
> > + * Copyright (C) 2024 Marvell.
> > + *
> > + */
> > +
> > +#include <linux/interrupt.h>
> > +#include <linux/irq.h>
> > +
> > +#include "rvu_trace.h"
> > +#include "mbox.h"
> > +#include "reg.h"
> > +#include "api.h"
> > +
> > +int cn20k_rvu_get_mbox_regions(struct rvu *rvu, void **mbox_addr,
> > +                              int num, int type, unsigned long *pf_bmap)
> > +{
> > +       int region;
> > +       u64 bar;
> > +
> > +       for (region = 0; region < num; region++) {
> > +               if (!test_bit(region, pf_bmap))
> > +                       continue;
> > +
> > +               bar = (u64)phys_to_virt((u64)rvu->ng_rvu->pf_mbox_addr->base);
> > +               bar += region * MBOX_SIZE;
> > +
> > +               mbox_addr[region] = (void *)bar;
> > +
> > +               if (!mbox_addr[region])
> > +                       goto error;
> [Kalesh] Maybe you can return directly from here as there is no
> cleanup action performed under the label.

Ack, will submit V2 patch with the suggested changes.

> > +       }
> > +       return 0;
> > +
> > +error:
> > +       return -ENOMEM;
> > +}
> > +
> > +int cn20k_rvu_mbox_init(struct rvu *rvu, int type, int ndevs)
> > +{
> > +       int dev;
> > +
> > +       if (!is_cn20k(rvu->pdev))
> > +               return 0;
> > +

...
...

> > diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu.h
> b/drivers/net/ethernet/marvell/octeontx2/af/rvu.h
> > index 938a911cbf1c..9fd7aea8c481 100644
> > --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu.h
> > +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu.h
> > @@ -444,6 +444,10 @@ struct mbox_wq_info {
> >         struct workqueue_struct *mbox_wq;
> >  };
> >
> > +struct mbox_ops {
> > +       irqreturn_t (*pf_intr_handler)(int irq, void *rvu_irq);
> > +};
> > +
> >  struct channel_fwdata {
> >         struct sdp_node_info info;
> >         u8 valid;
> > @@ -594,6 +598,7 @@ struct rvu {
> >         spinlock_t              cpt_intr_lock;
> >
> >         struct mutex            mbox_lock; /* Serialize mbox up and down msgs */
> > +       struct ng_rvu           *ng_rvu;
> >  };
> >
> >  static inline void rvu_write64(struct rvu *rvu, u64 block, u64 offset, u64 val)
> > @@ -875,11 +880,28 @@ static inline bool is_cgx_vf(struct rvu *rvu, u16
> pcifunc)
> >                 is_pf_cgxmapped(rvu, rvu_get_pf(pcifunc)));
> >  }
> >
> > +#define CN20K_CHIPID   0x20
> > +
> > +/*
> > + * Silicon check for CN20K family
> > + */
> > +static inline bool is_cn20k(struct pci_dev *pdev)
> > +{
> > +       if ((pdev->subsystem_device & 0xFF) == CN20K_CHIPID)
> > +               return true;
> > +
> > +       return false;
> [Kalesh] You can simplify this as:
> return (pdev->subsystem_device & 0xFF) == CN20K_CHIPID;

Ack, will submit V2 patch with the suggested changes.

> > +}
> > +
> >  #define M(_name, _id, fn_name, req, rsp)                               \
> >  int rvu_mbox_handler_ ## fn_name(struct rvu *, struct req *, struct rsp *);
> >  MBOX_MESSAGES
> >  #undef M
> >
> > +/* Mbox APIs */
> > +void rvu_queue_work(struct mbox_wq_info *mw, int first,
> > +                   int mdevs, u64 intr);
> > +
> >  int rvu_cgx_init(struct rvu *rvu);
> >  int rvu_cgx_exit(struct rvu *rvu);
> >  void *rvu_cgx_pdata(u8 cgx_id, struct rvu *rvu);
> > diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h
> b/drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h
> > index fc8da2090657..90cb063d00f0 100644
> > --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h
> > +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h
> > @@ -33,7 +33,8 @@ enum rvu_block_addr_e {
> >         BLKADDR_NDC_NIX1_RX     = 0x10ULL,
> >         BLKADDR_NDC_NIX1_TX     = 0x11ULL,
> >         BLKADDR_APR             = 0x16ULL,
> > -       BLK_COUNT               = 0x17ULL,
> > +       BLKADDR_MBOX            = 0x1bULL,
> > +       BLK_COUNT               = 0x1cULL,
> >  };
> >
> >  /* RVU Block Type Enumeration */
> > @@ -49,7 +50,8 @@ enum rvu_block_type_e {
> >         BLKTYPE_TIM  = 0x8,
> >         BLKTYPE_CPT  = 0x9,
> >         BLKTYPE_NDC  = 0xa,
> > -       BLKTYPE_MAX  = 0xa,
> > +       BLKTYPE_MBOX = 0x13,
> > +       BLKTYPE_MAX  = 0x13,
> >  };
> >
> >  /* RVU Admin function Interrupt Vector Enumeration */
> > --
> > 2.25.1
> >
> >
> 
> 
> --
> Regards,
> Kalesh A P

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ