request_firmware in DMA region
greg at kroah.com
Wed Mar 18 13:09:37 EDT 2020
On Wed, Mar 18, 2020 at 04:55:47PM +0000, Lucas Tanure wrote:
> On 2020-03-18 14:46, Greg KH wrote:
> > On Wed, Mar 18, 2020 at 02:29:24PM +0000, Lucas Tanure wrote:
> > > Hi,
> > >
> > > I'm sending firmware to usb device with this code:
> > > But it`s falling because the request firmware call didn't put my firmware in
> > > a DMA capable area. That's my guess.
> > >
> > > So how to request firmware in DMA capable area?
> > kmalloc your buffer used for USB transfers.
> Thanks, worked.
> > Do you have a pointer to your driver anywhere? The code you show below
> > isn't in any kernel source that I can see.
> I`m working to get permission for that.
It will have to happen eventually, might as well do it now so that you
can get help with it :)
> Quick question: Why my usb driver doesn't unload after I disconnected it ?
Who knows, we can't see the code, odds are there is a bug somewhere.
> This driver is meant to load a new firmware into the board only. And after
> the bootloader finished the download the board with show it self with a
> different vendor and product id.
> All the firmware download in done in probe, so there is no need for this
> driver after that. Can my driver unload it self ?
Why do you need a kernel driver at all, you can do all of that from
userspace using libusb today.
And no, a driver can not unload itself, but it does not have to bind to
a device if you don't want to, which should keep it from ever actually
sticking to a device after the probe call has returned.
More information about the Kernelnewbies