-----Original Message-----
> Date: Sat, 10 Feb 2018 18:23:42 +0000
> From: Matan Azrad <[email protected]>
> To: Jerin Jacob <[email protected]>, "[email protected]"
> <[email protected]>
> CC: Thomas Monjalon <[email protected]>, Konstantin Ananyev
> <[email protected]>, Pavan Nikhilesh
> <[email protected]>
> Subject: RE: [dpdk-dev] [PATCH] ethdev: fix a regression due to cache
> alignment issue
>
> Hi Jerin
Hi Matan,
>
> From: Jerin Jacob,Sent: Saturday, February 10, 2018 11:42 AM
> > Prior to "ethdev: add port ownership" change, the fast path structure struct
> > rte_eth_dev->data was cache aligned due to the fact that eth_dev_data was
> > allocated from rte_malloc with cache aligned attribute.
> > "ethdev: add port ownership" change set introduced a
> > rte_eth_dev_shared_data container for port ownership change, This
> > resulted in rte_eth_dev->data memory as cache unaligned.
> > Added a compiler alignment attribute to make sure rte_eth_dev->data
> > always cache aligned and hence compiler can load/store the elements in
> > struct rte_eth_dev_data as naturally aligned.
> >
> > Some platform like thunderx + l3fwd showed 1% regression in the
> > performance with the offending changeset.
> >
> > Fixes: 5b7ba31148a8 ("ethdev: add port ownership")
> >
>
> Are you sure the previous port data allocation(before port ownership) was
> cache aligned for all the ports for every system (cache line size
> 16\32\64\128...) or maybe it was only aligned to the first port (port_id=0)?
Yes, It was aligned to only for the first port.
>
> I think that if the answer is no, this fix fixes early patch, or just
> improvement.
I will send v2 as fixes early patch/improvement.
>
> > Cc: Matan Azrad <[email protected]>
> > Cc: Thomas Monjalon <[email protected]>
> > Cc: Konstantin Ananyev <[email protected]>
> >
> > Signed-off-by: Jerin Jacob <[email protected]>
> > Signed-off-by: Pavan Nikhilesh <[email protected]>
> > ---
> > lib/librte_ether/rte_ethdev_core.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/lib/librte_ether/rte_ethdev_core.h
> > b/lib/librte_ether/rte_ethdev_core.h
> > index 315b31723..e5681e466 100644
> > --- a/lib/librte_ether/rte_ethdev_core.h
> > +++ b/lib/librte_ether/rte_ethdev_core.h
> > @@ -601,7 +601,7 @@ struct rte_eth_dev_data {
> > struct rte_vlan_filter_conf vlan_filter_conf;
> > /**< VLAN filter configuration. */
> > struct rte_eth_dev_owner owner; /**< The port owner. */ -};
> > +} __rte_cache_aligned;
> >
> > /**
> > * @internal
> > --
> > 2.16.1
>