* [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
@ 2019-02-23 8:48 Ioana Ciornei
2019-02-23 8:48 ` [PATCH 1/3] soc: fsl: dpio: enable frame data cache stashing per software portal Ioana Ciornei
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Ioana Ciornei @ 2019-02-23 8:48 UTC (permalink / raw)
To: Leo Li
Cc: Roy Pledge, Ioana Ciocoi Radulescu, Laurentiu Tudor,
Horia Geanta, brouer, netdev, linux-kernel, Ioana Ciornei
The first two patches enable cache stashing and configure the core cluster
destination per software portal while the third patch is the one
configuring the amount of stashing on a queue.
Ioana Ciornei (3):
soc: fsl: dpio: enable frame data cache stashing per software portal
soc: fsl: dpio: configure cache stashing destination
dpaa2-eth: configure the cache stashing amount on a queue
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 7 +++-
drivers/soc/fsl/Kconfig | 1 +
drivers/soc/fsl/dpio/dpio-cmd.h | 5 +++
drivers/soc/fsl/dpio/dpio-driver.c | 52 ++++++++++++++++++++++++
drivers/soc/fsl/dpio/dpio.c | 16 ++++++++
drivers/soc/fsl/dpio/dpio.h | 5 +++
drivers/soc/fsl/dpio/qbman-portal.c | 4 +-
7 files changed, 87 insertions(+), 3 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] soc: fsl: dpio: enable frame data cache stashing per software portal
2019-02-23 8:48 [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing Ioana Ciornei
@ 2019-02-23 8:48 ` Ioana Ciornei
2019-02-23 8:48 ` [PATCH 2/3] soc: fsl: dpio: configure cache stashing destination Ioana Ciornei
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Ioana Ciornei @ 2019-02-23 8:48 UTC (permalink / raw)
To: Leo Li
Cc: Roy Pledge, Ioana Ciocoi Radulescu, Laurentiu Tudor,
Horia Geanta, brouer, netdev, linux-kernel, Ioana Ciornei
Enable cache stashing on the frame data dequeued using this software
portal. Also, enable dropping a stash request transaction when the
target request queue is almost full.
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
drivers/soc/fsl/dpio/qbman-portal.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/soc/fsl/dpio/qbman-portal.c b/drivers/soc/fsl/dpio/qbman-portal.c
index 5a73397..d020135 100644
--- a/drivers/soc/fsl/dpio/qbman-portal.c
+++ b/drivers/soc/fsl/dpio/qbman-portal.c
@@ -169,9 +169,9 @@ struct qbman_swp *qbman_swp_init(const struct qbman_swp_desc *d)
3, /* RPM: Valid bit mode, RCR in array mode */
2, /* DCM: Discrete consumption ack mode */
3, /* EPM: Valid bit mode, EQCR in array mode */
- 0, /* mem stashing drop enable == FALSE */
+ 1, /* mem stashing drop enable == TRUE */
1, /* mem stashing priority == TRUE */
- 0, /* mem stashing enable == FALSE */
+ 1, /* mem stashing enable == TRUE */
1, /* dequeue stashing priority == TRUE */
0, /* dequeue stashing enable == FALSE */
0); /* EQCR_CI stashing priority == FALSE */
--
1.9.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] soc: fsl: dpio: configure cache stashing destination
2019-02-23 8:48 [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing Ioana Ciornei
2019-02-23 8:48 ` [PATCH 1/3] soc: fsl: dpio: enable frame data cache stashing per software portal Ioana Ciornei
@ 2019-02-23 8:48 ` Ioana Ciornei
2019-02-23 8:48 ` [PATCH 3/3] dpaa2-eth: configure the cache stashing amount on a queue Ioana Ciornei
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Ioana Ciornei @ 2019-02-23 8:48 UTC (permalink / raw)
To: Leo Li
Cc: Roy Pledge, Ioana Ciocoi Radulescu, Laurentiu Tudor,
Horia Geanta, brouer, netdev, linux-kernel, Ioana Ciornei
Depending on the SoC version and the CPU id, configure the cache
stashing destination for a specific dpio.
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
drivers/soc/fsl/Kconfig | 1 +
drivers/soc/fsl/dpio/dpio-cmd.h | 5 ++++
drivers/soc/fsl/dpio/dpio-driver.c | 52 ++++++++++++++++++++++++++++++++++++++
drivers/soc/fsl/dpio/dpio.c | 16 ++++++++++++
drivers/soc/fsl/dpio/dpio.h | 5 ++++
5 files changed, 79 insertions(+)
diff --git a/drivers/soc/fsl/Kconfig b/drivers/soc/fsl/Kconfig
index 8f80e8b..61f8e14 100644
--- a/drivers/soc/fsl/Kconfig
+++ b/drivers/soc/fsl/Kconfig
@@ -22,6 +22,7 @@ config FSL_GUTS
config FSL_MC_DPIO
tristate "QorIQ DPAA2 DPIO driver"
depends on FSL_MC_BUS
+ select SOC_BUS
help
Driver for the DPAA2 DPIO object. A DPIO provides queue and
buffer management facilities for software to interact with
diff --git a/drivers/soc/fsl/dpio/dpio-cmd.h b/drivers/soc/fsl/dpio/dpio-cmd.h
index 5814d2f..e13fd3a 100644
--- a/drivers/soc/fsl/dpio/dpio-cmd.h
+++ b/drivers/soc/fsl/dpio/dpio-cmd.h
@@ -26,6 +26,7 @@
#define DPIO_CMDID_DISABLE DPIO_CMD(0x003)
#define DPIO_CMDID_GET_ATTR DPIO_CMD(0x004)
#define DPIO_CMDID_RESET DPIO_CMD(0x005)
+#define DPIO_CMDID_SET_STASHING_DEST DPIO_CMD(0x120)
struct dpio_cmd_open {
__le32 dpio_id;
@@ -47,4 +48,8 @@ struct dpio_rsp_get_attr {
__le32 qbman_version;
};
+struct dpio_stashing_dest {
+ u8 sdest;
+};
+
#endif /* _FSL_DPIO_CMD_H */
diff --git a/drivers/soc/fsl/dpio/dpio-driver.c b/drivers/soc/fsl/dpio/dpio-driver.c
index a28799b..c0cdc89 100644
--- a/drivers/soc/fsl/dpio/dpio-driver.c
+++ b/drivers/soc/fsl/dpio/dpio-driver.c
@@ -14,6 +14,7 @@
#include <linux/dma-mapping.h>
#include <linux/delay.h>
#include <linux/io.h>
+#include <linux/sys_soc.h>
#include <linux/fsl/mc.h>
#include <soc/fsl/dpaa2-io.h>
@@ -32,6 +33,46 @@ struct dpio_priv {
static cpumask_var_t cpus_unused_mask;
+static const struct soc_device_attribute ls1088a_soc[] = {
+ {.family = "QorIQ LS1088A"},
+ { /* sentinel */ }
+};
+
+static const struct soc_device_attribute ls2080a_soc[] = {
+ {.family = "QorIQ LS2080A"},
+ { /* sentinel */ }
+};
+
+static const struct soc_device_attribute ls2088a_soc[] = {
+ {.family = "QorIQ LS2088A"},
+ { /* sentinel */ }
+};
+
+static const struct soc_device_attribute lx2160a_soc[] = {
+ {.family = "QorIQ LX2160A"},
+ { /* sentinel */ }
+};
+
+static int dpaa2_dpio_get_cluster_sdest(struct fsl_mc_device *dpio_dev, int cpu)
+{
+ int cluster_base, cluster_size;
+
+ if (soc_device_match(ls1088a_soc)) {
+ cluster_base = 2;
+ cluster_size = 4;
+ } else if (soc_device_match(ls2080a_soc) ||
+ soc_device_match(ls2088a_soc) ||
+ soc_device_match(lx2160a_soc)) {
+ cluster_base = 0;
+ cluster_size = 2;
+ } else {
+ dev_err(&dpio_dev->dev, "unknown SoC version\n");
+ return -1;
+ }
+
+ return cluster_base + cpu / cluster_size;
+}
+
static irqreturn_t dpio_irq_handler(int irq_num, void *arg)
{
struct device *dev = (struct device *)arg;
@@ -89,6 +130,7 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev)
int err = -ENOMEM;
struct device *dev = &dpio_dev->dev;
int possible_next_cpu;
+ int sdest;
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
@@ -145,6 +187,16 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev)
desc.cpu = possible_next_cpu;
cpumask_clear_cpu(possible_next_cpu, cpus_unused_mask);
+ sdest = dpaa2_dpio_get_cluster_sdest(dpio_dev, desc.cpu);
+ if (sdest >= 0) {
+ err = dpio_set_stashing_destination(dpio_dev->mc_io, 0,
+ dpio_dev->mc_handle,
+ sdest);
+ if (err)
+ dev_err(dev, "dpio_set_stashing_destination failed for cpu%d\n",
+ desc.cpu);
+ }
+
/*
* Set the CENA regs to be the cache inhibited area of the portal to
* avoid coherency issues if a user migrates to another core.
diff --git a/drivers/soc/fsl/dpio/dpio.c b/drivers/soc/fsl/dpio/dpio.c
index 521bc69..af74c59 100644
--- a/drivers/soc/fsl/dpio/dpio.c
+++ b/drivers/soc/fsl/dpio/dpio.c
@@ -166,6 +166,22 @@ int dpio_get_attributes(struct fsl_mc_io *mc_io,
return 0;
}
+int dpio_set_stashing_destination(struct fsl_mc_io *mc_io,
+ u32 cmd_flags,
+ u16 token,
+ u8 sdest)
+{
+ struct fsl_mc_command cmd = { 0 };
+ struct dpio_stashing_dest *dpio_cmd;
+
+ cmd.header = mc_encode_cmd_header(DPIO_CMDID_SET_STASHING_DEST,
+ cmd_flags, token);
+ dpio_cmd = (struct dpio_stashing_dest *)cmd.params;
+ dpio_cmd->sdest = sdest;
+
+ return mc_send_command(mc_io, &cmd);
+}
+
/**
* dpio_get_api_version - Get Data Path I/O API version
* @mc_io: Pointer to MC portal's DPIO object
diff --git a/drivers/soc/fsl/dpio/dpio.h b/drivers/soc/fsl/dpio/dpio.h
index b2ac4ba..da06f72 100644
--- a/drivers/soc/fsl/dpio/dpio.h
+++ b/drivers/soc/fsl/dpio/dpio.h
@@ -75,6 +75,11 @@ int dpio_get_attributes(struct fsl_mc_io *mc_io,
u16 token,
struct dpio_attr *attr);
+int dpio_set_stashing_destination(struct fsl_mc_io *mc_io,
+ u32 cmd_flags,
+ u16 token,
+ u8 dest);
+
int dpio_get_api_version(struct fsl_mc_io *mc_io,
u32 cmd_flags,
u16 *major_ver,
--
1.9.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] dpaa2-eth: configure the cache stashing amount on a queue
2019-02-23 8:48 [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing Ioana Ciornei
2019-02-23 8:48 ` [PATCH 1/3] soc: fsl: dpio: enable frame data cache stashing per software portal Ioana Ciornei
2019-02-23 8:48 ` [PATCH 2/3] soc: fsl: dpio: configure cache stashing destination Ioana Ciornei
@ 2019-02-23 8:48 ` Ioana Ciornei
2019-02-25 6:06 ` [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing David Miller
2019-02-26 23:42 ` Li Yang
4 siblings, 0 replies; 9+ messages in thread
From: Ioana Ciornei @ 2019-02-23 8:48 UTC (permalink / raw)
To: Leo Li
Cc: Roy Pledge, Ioana Ciocoi Radulescu, Laurentiu Tudor,
Horia Geanta, brouer, netdev, linux-kernel, Ioana Ciornei
Configure the amount of 64 bytes of frame, annotation and context data
that will be cache stashed for a specific frame queue. Since the frame
context is not used, configure that only 64 bytes of frame data and 64
bytes of annotation will be stashed.
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
index c500ea7..3c03fca8 100644
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
@@ -2303,9 +2303,14 @@ static int setup_rx_flow(struct dpaa2_eth_priv *priv,
queue.destination.type = DPNI_DEST_DPCON;
queue.destination.priority = 1;
queue.user_context = (u64)(uintptr_t)fq;
+ queue.flc.stash_control = 1;
+ queue.flc.value &= 0xFFFFFFFFFFFFFFC0;
+ /* 01 01 00 - data, annotation, flow context */
+ queue.flc.value |= 0x14;
err = dpni_set_queue(priv->mc_io, 0, priv->mc_token,
DPNI_QUEUE_RX, 0, fq->flowid,
- DPNI_QUEUE_OPT_USER_CTX | DPNI_QUEUE_OPT_DEST,
+ DPNI_QUEUE_OPT_USER_CTX | DPNI_QUEUE_OPT_DEST |
+ DPNI_QUEUE_OPT_FLC,
&queue);
if (err) {
dev_err(dev, "dpni_set_queue(RX) failed\n");
--
1.9.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
2019-02-23 8:48 [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing Ioana Ciornei
` (2 preceding siblings ...)
2019-02-23 8:48 ` [PATCH 3/3] dpaa2-eth: configure the cache stashing amount on a queue Ioana Ciornei
@ 2019-02-25 6:06 ` David Miller
2019-02-25 7:00 ` Ioana Ciornei
2019-02-26 23:42 ` Li Yang
4 siblings, 1 reply; 9+ messages in thread
From: David Miller @ 2019-02-25 6:06 UTC (permalink / raw)
To: ioana.ciornei
Cc: leoyang.li, roy.pledge, ruxandra.radulescu, laurentiu.tudor,
horia.geanta, brouer, netdev, linux-kernel
From: Ioana Ciornei <ioana.ciornei@nxp.com>
Date: Sat, 23 Feb 2019 08:48:42 +0000
> The first two patches enable cache stashing and configure the core cluster
> destination per software portal while the third patch is the one
> configuring the amount of stashing on a queue.
Should I merge this series in via my networking tree?
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
2019-02-25 6:06 ` [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing David Miller
@ 2019-02-25 7:00 ` Ioana Ciornei
2019-02-26 19:03 ` Li Yang
0 siblings, 1 reply; 9+ messages in thread
From: Ioana Ciornei @ 2019-02-25 7:00 UTC (permalink / raw)
To: David Miller
Cc: Leo Li, Roy Pledge, Ioana Ciocoi Radulescu, Laurentiu Tudor,
Horia Geanta, brouer, netdev, linux-kernel
> Subject: Re: [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
>
> From: Ioana Ciornei <ioana.ciornei@nxp.com>
> Date: Sat, 23 Feb 2019 08:48:42 +0000
>
> > The first two patches enable cache stashing and configure the core
> > cluster destination per software portal while the third patch is the
> > one configuring the amount of stashing on a queue.
>
> Should I merge this series in via my networking tree?
Even though it would be really good to have this on the networking tree as soon as possible, I am afraid that patch 2/3 is not going to apply cleanly because it touches the same areas of code that some other patches on Leo's tree are.
Thanks,
Ioana C
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
2019-02-25 7:00 ` Ioana Ciornei
@ 2019-02-26 19:03 ` Li Yang
2019-02-26 20:31 ` David Miller
0 siblings, 1 reply; 9+ messages in thread
From: Li Yang @ 2019-02-26 19:03 UTC (permalink / raw)
To: Ioana Ciornei
Cc: David Miller, Roy Pledge, Ioana Ciocoi Radulescu,
Laurentiu Tudor, Horia Geanta, brouer, netdev, linux-kernel
On Mon, Feb 25, 2019 at 1:01 AM Ioana Ciornei <ioana.ciornei@nxp.com> wrote:
>
> > Subject: Re: [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
> >
> > From: Ioana Ciornei <ioana.ciornei@nxp.com>
> > Date: Sat, 23 Feb 2019 08:48:42 +0000
> >
> > > The first two patches enable cache stashing and configure the core
> > > cluster destination per software portal while the third patch is the
> > > one configuring the amount of stashing on a queue.
> >
> > Should I merge this series in via my networking tree?
>
> Even though it would be really good to have this on the networking tree as soon as possible, I am afraid that patch 2/3 is not going to apply cleanly because it touches the same areas of code that some other patches on Leo's tree are.
Hi David,
What shall we do if we want to get this in the 5.1? Since the change
on the ethernet driver is pretty small, can I get your ACK on that
patch and merge the series through my tree? Otherwise I can also try
to get the dpio patches in next merge window, and you can apply the
Ethernet patch after that.
Regards,
Leo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
2019-02-26 19:03 ` Li Yang
@ 2019-02-26 20:31 ` David Miller
0 siblings, 0 replies; 9+ messages in thread
From: David Miller @ 2019-02-26 20:31 UTC (permalink / raw)
To: leoyang.li
Cc: ioana.ciornei, roy.pledge, ruxandra.radulescu, laurentiu.tudor,
horia.geanta, brouer, netdev, linux-kernel
From: Li Yang <leoyang.li@nxp.com>
Date: Tue, 26 Feb 2019 13:03:17 -0600
> On Mon, Feb 25, 2019 at 1:01 AM Ioana Ciornei <ioana.ciornei@nxp.com> wrote:
>>
>> > Subject: Re: [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
>> >
>> > From: Ioana Ciornei <ioana.ciornei@nxp.com>
>> > Date: Sat, 23 Feb 2019 08:48:42 +0000
>> >
>> > > The first two patches enable cache stashing and configure the core
>> > > cluster destination per software portal while the third patch is the
>> > > one configuring the amount of stashing on a queue.
>> >
>> > Should I merge this series in via my networking tree?
>>
>> Even though it would be really good to have this on the networking tree as soon as possible, I am afraid that patch 2/3 is not going to apply cleanly because it touches the same areas of code that some other patches on Leo's tree are.
>
> Hi David,
>
> What shall we do if we want to get this in the 5.1? Since the change
> on the ethernet driver is pretty small, can I get your ACK on that
> patch and merge the series through my tree?
Sure.
Acked-by: David S. Miller <davem@davemloft.net>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing
2019-02-23 8:48 [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing Ioana Ciornei
` (3 preceding siblings ...)
2019-02-25 6:06 ` [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing David Miller
@ 2019-02-26 23:42 ` Li Yang
4 siblings, 0 replies; 9+ messages in thread
From: Li Yang @ 2019-02-26 23:42 UTC (permalink / raw)
To: Ioana Ciornei
Cc: Roy Pledge, Ioana Ciocoi Radulescu, Laurentiu Tudor,
Horia Geanta, brouer, netdev, linux-kernel
On Sat, Feb 23, 2019 at 2:49 AM Ioana Ciornei <ioana.ciornei@nxp.com> wrote:
>
> The first two patches enable cache stashing and configure the core cluster
> destination per software portal while the third patch is the one
> configuring the amount of stashing on a queue.
Series applied for next. Thanks.
Regards,
Leo
>
> Ioana Ciornei (3):
> soc: fsl: dpio: enable frame data cache stashing per software portal
> soc: fsl: dpio: configure cache stashing destination
> dpaa2-eth: configure the cache stashing amount on a queue
>
> drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 7 +++-
> drivers/soc/fsl/Kconfig | 1 +
> drivers/soc/fsl/dpio/dpio-cmd.h | 5 +++
> drivers/soc/fsl/dpio/dpio-driver.c | 52 ++++++++++++++++++++++++
> drivers/soc/fsl/dpio/dpio.c | 16 ++++++++
> drivers/soc/fsl/dpio/dpio.h | 5 +++
> drivers/soc/fsl/dpio/qbman-portal.c | 4 +-
> 7 files changed, 87 insertions(+), 3 deletions(-)
>
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-02-26 23:42 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-23 8:48 [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing Ioana Ciornei
2019-02-23 8:48 ` [PATCH 1/3] soc: fsl: dpio: enable frame data cache stashing per software portal Ioana Ciornei
2019-02-23 8:48 ` [PATCH 2/3] soc: fsl: dpio: configure cache stashing destination Ioana Ciornei
2019-02-23 8:48 ` [PATCH 3/3] dpaa2-eth: configure the cache stashing amount on a queue Ioana Ciornei
2019-02-25 6:06 ` [PATCH 0/3] soc: fsl: dpio: enable and configure cache stashing David Miller
2019-02-25 7:00 ` Ioana Ciornei
2019-02-26 19:03 ` Li Yang
2019-02-26 20:31 ` David Miller
2019-02-26 23:42 ` Li Yang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).