On 5/21/2024 3:17 AM, Chaoyong He wrote:
>> On 4/19/2024 6:23 AM, Chaoyong He wrote:
>>> Refactor data structure and related logic to make the secondary
>>> process can work as expect.
>>>
>>
>> Hi Chaoyong,
>>
>> Patchset looks good, but I have a question related to the motivation of 
>> moving
>> so many structs to process private data?
>>
>> Normally ethdev is process private, and ethdev->data is shared. Primary
>> configures the device and secondary learns shared data and uses it for
>> datapath.
>> There are cases, like file descriptors for same file can be different for 
>> different
>> process and process private structure is used.
>>
>> In below patches, device private data level structs seems moved to the 
>> process
>> private structure, is the intention both primary process and secondary 
>> process
>> do the control path and configuration?
>> If so, just a reminder that this is not intended usage of the multi-process
>> support and many control APIs are not designed as thread-safe.
>>
>> Would you mind describing a little more about your use case that requires
>> below process private data changes?
> 
> The main motivation of these changes is to solve the problems when customers 
> using the 
> secondary process (they use primary process for monitor and secondary process 
> for rx/tx/configuration ...).
> 

Got it, if you want to do 'configuration' on the secondary, it requires
more information, and as this is not shared you need to move them to
process private.

This approach requires synchronizing secondaries for this control path.
So more work for the application layer.

I understand you are trying to enable your customer, and this is a
solution but I am not sure this is the best approach. And this solution
won't be portable, because many PMDs won't support configuring from
secondary.

Can you guide your customer that configuring on primary and limit
secondaries for the datapath?
This way only some limited information is required to shared with
secondaries (lets say like firmware application version) and these can
be passed via shared data or even MP communication.

Although this is not a hard requirement, I believe this can make both
your and your customer's life easier in long run.


> The NFP card support different firmware applications, this means we need read 
> message from firmware to 
> decide to run which logic.
> 
> And with single-pf firmware (this means one PCI BDF address for multi 
> physical ports), we also need 
> read message (how many ports totally) from firmware before attach to the 
> primary process.
> 
> All this relates with CPP and symbol table, and they are different for 
> primary process and secondary process.
> If still put them in the process shared section (ethdev->data), the 
> assignment logic in secondary process will overwrite it 
> and cause the primary process crash.
> 
> So we move them into the process private section (ethdev->process_private).
> 



Reply via email to