From: Ivo van Doorn <ivdoorn@gmail.com>
To: Roland Dreier <rdreier@cisco.com>
Cc: Adam Baker <linux@baker-net.org.uk>,
rt2400-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org,
kernel-stuff@comcast.net
Subject: Re: [Rt2400-devel] [PATCH] rt2500usb - Don't claim 050d:705{0/a}
Date: Fri, 26 Oct 2007 23:34:54 +0200 [thread overview]
Message-ID: <200710262334.54684.IvDoorn@gmail.com> (raw)
In-Reply-To: <adaejfhzlnh.fsf@cisco.com>
On Friday 26 October 2007, Roland Dreier wrote:
> > The function that is returning ENODEV is the driver probe function. According
> > to Documentation/DocBook/writing_usb_driver/ch03.html when that function is
> > called
> >
> > "The driver now needs to verify that this device is actually one that it can
> > accept. If so, it returns 0. If not, or if any error occurs during
> > initialization, an errorcode (such as -ENOMEM or -ENODEV) is returned from
> > the probe function."
> >
> > It isn't a device the driver can accept so it returns -ENODEV
>
> That's all true but irrelevant. That error return isn't propagated
> back to userspace when it runs modprobe (and in fact it *can't* be
> sanely returned to userspace -- what do you do if the probe function
> succeeds for two devices and fails for a third?). So there's not
> really any way for userspace to loop through a list of modules until
> one succeeds.
We are mixing 2 things up I think.
We have module loading, which is called when the module is loaded and
will register what PCI or USB devices it supports.
And we have hardware probing, which results in the kernel calling the probe()
function of the usb_driver or pci_driver structure.
The the return value of the module loading is not an issue, since indeed that is called
while the hardware might not be present.
The hardware probing _is_ called when the hardware is present, reason is simple,
hotplugging detects the new card and checks all registered USB/PCI ID's for a driver
that matches the device. If it matches the probe() function is called.
And that is where the ENODEV error could be checked, if the driver decides that the
plugged in device it was offere by the kernel is not a device it supports it needs
to tell that to the kernel. In turn the kernel can continue looking into the registered
USB/PCI ID lists to find a different driver that does support the hardware.
Ivo
prev parent reply other threads:[~2007-10-26 21:15 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-24 23:22 [PATCH] rt2500usb - Don't claim 050d:705{0/a} Parag Warudkar
2007-10-25 19:35 ` [Rt2400-devel] " Adam Baker
2007-10-25 22:33 ` Parag Warudkar
2007-10-25 21:15 ` Ivo van Doorn
2007-10-25 22:41 ` Parag Warudkar
2007-10-26 18:39 ` Ivo van Doorn
2007-10-26 19:10 ` Roland Dreier
2007-10-26 19:58 ` Adam Baker
2007-10-26 20:05 ` Roland Dreier
2007-10-26 21:34 ` Ivo van Doorn [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200710262334.54684.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=kernel-stuff@comcast.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@baker-net.org.uk \
--cc=rdreier@cisco.com \
--cc=rt2400-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox