[PATCH 0/2] *** Memory Allocation: Fixes ignore_msk during find_next_n() in fb_array library***
Thomas Monjalon
thomas at monjalon.net
Mon Feb 20 12:03:44 CET 2023
Anatoly, please could you look at this?
13/01/2023 14:14, Vipin P R:
> ***
> In the lookahead logic, let's say after the Right-Shift-And operation to check for contiguity, we hit case http://code.dpdk.org/dpdk/latest/source/lib/eal/common/eal_common_fbarray.c#L235
>
> /* if first bit is not set, we've lost the run */
> if ((lookahead_msk & 1) == 0) {
> /*
> * we've scanned this far, so we know there are
> * no runs in the space we've lookahead-scanned
> * as well, so skip that on next iteration.
> */
> ignore_msk = ~((1ULL << need) - 1);
> msk_idx = lookahead_idx;
> break;
> }
> lets say for mask size of 64 bits : in msk_idx 4 we need 4 consecutive bits.
> let need = 4.
> lets say some of the bits starting from LSB are xx11011.
> Operating on the inverted mask for better clarity. RSA - RightShiftAnd, xx -- don't-care bits before
>
> This condition could hit if there aren't "need" number of contiguous bits starting from LSB.
> But, that doesn't necessarily mean there aren't "need" number of such bits elsewhere in the same lookahead_idx.
> We seem to be ignoring "need" number of bits starting from the LSB for the next iteration.
>
> Due to ignore_mask we might end losing some bits.
> /* if we have an ignore mask, ignore once */
> if (ignore_msk) {
> cur_msk &= ignore_msk;
> ignore_msk = 0;
> }
> e.g.
> lookahead_msk before RSA logic : xx11100 , need = 4, 2 bits lost
> lookahead_msk before RSA logic : xx11011, need = 4, 1 bit lost
> lookahead_msk before RSA logic : xx11110, need = 4, 3 bits lost
>
> NB : To understand the number of bits lost, look at need; that's the number of bits (starting from LSB) that's cleared to zero before the next iteration.
> ***
>
> Vipin P R (2):
> Memory Allocation: Fixes ignore_msk during find_next_n() in fb_array
> library
> Memory Allocation: Alternative fix for ignore_msk during find_next_n()
> in fb_array library
>
> lib/eal/common/eal_common_fbarray.c | 26 +++++++++++++++++++++++---
> 1 file changed, 23 insertions(+), 3 deletions(-)
>
>
More information about the dev
mailing list