On Thu, Jul 29, 2010 at 03:29:37PM -0500, Tom Tucker wrote:

>> Also, I'd like to see a strong defence of this new user space API
>> particularly:
>>   1) Why can't this be done with the existing ibv_reg_mr, like huge
>>      pages are.

> The ibv_reg_mr API assumes that the memory being registered was  
> allocated in user mode and is part of the current->mm VMA. It uses  
> get_user_pages which will scoff and jeer at kernel memory.

I'm confused? What is the vaddr input then? How does userspace get
that value? Isn't it created by mmap or the like?

Ie for the PCI-E example you gave I assume the flow is that userspace
mmaps devices/pci0000:00/0000:00:XX.X/resourceX to get the IO memory
and then passes that through to ibv_reg_mr?

IMHO, ibv_reg_mr API should accept any valid vaddr available to the
process and if it bombs for certain kinds of vaddrs then it is just a
bug..

>>   2) How is it possible for userspace to know when it should use
>>      ibv_reg_mr vs ibv_reg_io_mr?

> By virtue of the device that it is mmap'ing. If I mmap my_vmstat_driver,  
> I know that the memory I am mapping is a kernel buffer.

Yah, but what if the next version of your vmstat driver changes the
kind of memory it returns?

>> On first glance, this seems like a hugely bad API to me :)

> Well hopefully now that it's purpose is revealed you will change your  
> view and we can collaboratively make it better :-)

I don't object to the idea, just to the notion that user space is
supposed to somehow know that one vaddr is different from another
vaddr and call the right API - seems impossible to use correctly to
me.

What would you have to do to implement this using scheme using
ibv_reg_mr as the entry point?

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to