From: Tianyu Li Date: Thu, 26 Aug 2021 01:47:31 +0000 (+0800) Subject: dpdk: fix prefetch assert on Arm X-Git-Tag: v22.02-rc0~43 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=db79ac0502f3a2ecc20d4fa2e9f9be20bfb8e18c;p=vpp.git dpdk: fix prefetch assert on Arm CLIB_PREFETCH (cop[1], CLIB_CACHE_LINE_BYTES * 3, STORE); Note on 64 bytes cache line size arm machines, CLIB_CACHE_LINE_BYTES 128 CLIB_CACHE_PREFETCH_BYTES 6 above CLIB_PREFETCH () macro will be expand to ASSERT ((size) <= 4 * CLIB_CACHE_PREFETCH_BYTES); it will hit assert due to size (i.e. 3 * 128) > 4 * 64 Solution: Change to CLIB_PREFETCH (cop[1], sizeof(*cop[1]), STORE); Type: fix Signed-off-by: Tianyu Li Reviewed-by: Lijian Zhang Change-Id: Id0981fd5bd2b25ff71db4197b25578d0b7a9803e --- diff --git a/src/plugins/dpdk/cryptodev/cryptodev_op_data_path.c b/src/plugins/dpdk/cryptodev/cryptodev_op_data_path.c index 4545e24fc83..771d8045e84 100644 --- a/src/plugins/dpdk/cryptodev/cryptodev_op_data_path.c +++ b/src/plugins/dpdk/cryptodev/cryptodev_op_data_path.c @@ -169,8 +169,8 @@ cryptodev_frame_linked_algs_enqueue (vlib_main_t *vm, if (n_elts > 2) { - CLIB_PREFETCH (cop[1], CLIB_CACHE_LINE_BYTES * 3, STORE); - CLIB_PREFETCH (cop[2], CLIB_CACHE_LINE_BYTES * 3, STORE); + CLIB_PREFETCH (cop[1], sizeof (*cop[1]), STORE); + CLIB_PREFETCH (cop[2], sizeof (*cop[2]), STORE); clib_prefetch_load (&fe[1]); clib_prefetch_load (&fe[2]); } @@ -286,8 +286,8 @@ cryptodev_frame_aead_enqueue (vlib_main_t *vm, if (n_elts > 2) { - CLIB_PREFETCH (cop[1], CLIB_CACHE_LINE_BYTES * 3, STORE); - CLIB_PREFETCH (cop[2], CLIB_CACHE_LINE_BYTES * 3, STORE); + CLIB_PREFETCH (cop[1], sizeof (*cop[1]), STORE); + CLIB_PREFETCH (cop[2], sizeof (*cop[2]), STORE); clib_prefetch_load (&fe[1]); clib_prefetch_load (&fe[2]); }