[EXT] Re: [PATCH] common/cnxk: use cas with release semantics for batch alloc
Ferruh Yigit
ferruh.yigit at intel.com
Tue Jan 11 14:46:26 CET 2022
On 1/11/2022 12:26 PM, Ashwin Sekhar Thalakalath Kottilveetil wrote:
> CAS is compare and swap. CASL is compare and swap with release semantics.
>
What does 'release semantics' mean? What is functional difference in both?
> But on CNXK platform, the functionality of CAS* instructions is completely different when it is done to specific addresses. These APIs are meant for use for such special cases. These cannot be made ARM generic.
>
> Ashwin Sekhar T K
>
>> -----Original Message-----
>> From: Ferruh Yigit <ferruh.yigit at intel.com>
>> Sent: Tuesday, January 11, 2022 5:42 PM
>> To: Ashwin Sekhar Thalakalath Kottilveetil <asekhar at marvell.com>;
>> dev at dpdk.org; Honnappa Nagarahalli <Honnappa.Nagarahalli at arm.com>;
>> Ruifeng Wang (Arm Technology China) <Ruifeng.Wang at arm.com>
>> Cc: Nithin Kumar Dabilpuram <ndabilpuram at marvell.com>; Jerin Jacob
>> Kollanukkaran <jerinj at marvell.com>; Sunil Kumar Kori
>> <skori at marvell.com>; Satha Koteswara Rao Kottidi
>> <skoteshwar at marvell.com>; Pavan Nikhilesh Bhagavatula
>> <pbhagavatula at marvell.com>; Kiran Kumar Kokkilagadda
>> <kirankumark at marvell.com>; Satheesh Paul <psatheesh at marvell.com>;
>> Anoob Joseph <anoobj at marvell.com>; Akhil Goyal <gakhil at marvell.com>
>> Subject: [EXT] Re: [PATCH] common/cnxk: use cas with release semantics for
>> batch alloc
>>
>> External Email
>>
>> ----------------------------------------------------------------------
>> On 1/11/2022 12:08 PM, Ferruh Yigit wrote:
>>> On 11/30/2021 5:45 AM, Ashwin Sekhar T K wrote:
>>>> Before issuing the batch alloc, we clear the first word of cache
>>>> lines so that NPA can update the status. Make sure that this line
>>>> clear is flushed before the batch alloc is issued.
>>>>
>>>> Signed-off-by: Ashwin Sekhar T K <asekhar at marvell.com>
>>>> ---
>>>> drivers/common/cnxk/roc_io.h | 12 ++++++++++++
>>>> drivers/common/cnxk/roc_io_generic.h | 9 +++++++++
>>>> drivers/common/cnxk/roc_npa.h | 2 +-
>>>> 3 files changed, 22 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/common/cnxk/roc_io.h
>>>> b/drivers/common/cnxk/roc_io.h index fe5f7f46d0..4f15503c29 100644
>>>> --- a/drivers/common/cnxk/roc_io.h
>>>> +++ b/drivers/common/cnxk/roc_io.h
>>>> @@ -78,6 +78,18 @@ roc_atomic64_cas(uint64_t compare, uint64_t
>> swap,
>>>> int64_t *ptr)
>>>> return compare;
>>>> }
>>>> +static __plt_always_inline uint64_t
>>>> +roc_atomic64_casl(uint64_t compare, uint64_t swap, int64_t *ptr) {
>>>> + asm volatile(PLT_CPU_FEATURE_PREAMBLE
>>>> + "casl %[compare], %[swap], [%[ptr]]\n"
>>>> + : [compare] "+r"(compare)
>>>> + : [swap] "r"(swap), [ptr] "r"(ptr)
>>>> + : "memory");
>>>> +
>>>
>>> out of curiosity, what is the "cas with release semantics"?
>>> briefly, what is the difference between 'cas' and 'casl'?
>>
>> + Honnappa & Ruifeng,
>>
>> Isn't this API Arm wide, instead of being cnxk specific?
>> Does it make sense to make this API for arm and cnxk use from there?
More information about the dev
mailing list