On 21.05.2019 13:39, Christoph Hellwig wrote: > On Thu, May 16, 2019 at 02:47:20PM +0300, laurentiu.tudor@xxxxxxx wrote: >> + hcd->localmem_pool = devm_gen_pool_create(dev, PAGE_SHIFT, >> + dev_to_node(dev), >> + "ohci-sm501"); >> + if (IS_ERR(hcd->localmem_pool)) { >> + retval = PTR_ERR(hcd->localmem_pool); >> + goto err5; >> + } >> + >> + local_mem = devm_ioremap(dev, mem->start, resource_size(mem)); >> + if (!local_mem) { >> + retval = -ENOMEM; >> + goto err5; >> + } >> + >> + retval = gen_pool_add_virt(hcd->localmem_pool, >> + (unsigned long)local_mem, >> + mem->start - mem->parent->start, >> + resource_size(mem), >> + dev_to_node(dev)); > > I wonder if having a helper for these operations would be useful, > explaining what we do here. That is create a pool for a resource, > where the virtual address is the ioremap of said resource. We > could also make that a managed API so that you can get rid of the > cleanup path. This is close to what I've already prepared in the next spin. It's a new usb hcd api so it's not as abstract as your idea. I think we can discuss on it after I'll send it. --- Best Regards, Laurentiu