[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RFC: ABI support for special memory area



On Thu, Mar 2, 2017 at 7:16 AM, Suprateeka R Hegde
<hegdesmailbox@gmail.com> wrote:
> On 23-Feb-2017 09:49 PM, H.J. Lu wrote:
>>
>>  The default implementation of __gnu_mbind_setup is
>>
>> int
>> __gnu_mbind_setup (unsigned int type, void *addr, size_t length)
>> {
>>   return 0;
>> }
>>
>> which can be overridden by a different implementation at link-time.
>>
>
> Since this is a design that allows vendor specific extension and
> implementation, would it OK if we make it more generic?

Yes.

> Instead of a fixed 3 arguments (type, addr, len), how about something like a
> pointer to a generic MBIND_CONTEXT struct (say of type __gnu_mbind_context
> defined)?  And let the implementation define the actual struct.

We can add more arguments.  But they must be predefined since
__gnu_mbind_setup is called from ld.so which must know what to
pass to __gnu_mbind_setup.

> I would like to handle NVM/NVMe (long back I had mentioned about
> PT_PERSISTENT) through this MBIND and my implementation of handling NVM/NVMe
> needs more data to be passed to such "setup" functions.

I call it MBIND since a MBIND segment is inside a LOAD segment and
my real __gnu_mbind_setup will call mbind to move a MBIND region to
a NUMA node after it has been loaded and relocated. We can give it
a different name if you have a better one.

> Or is this __gnu_mbind_setup should be considered as a very basic /
> fundamental function (used just to setup the "memory area") and
> implementations/vendors are expected to write wrapper/handler functions to
> handle other aspects of the special memory? In that case the fixed set of
> basic args looks OK.

That is correct.  __gnu_mbind_setup is platform specific.  We can pass as
much as we need to __gnu_mbind_setup.  But they have to be fixed.

> IMHO this __gnu_mbind_setup is a very good design to be generic enough and
> not be very specific/basic/fundamental runtime support.
>

Thanks.

-- 
H.J.