Chris Boot wrote:On 11/02/2012 12:16, Clemens Ladisch wrote:Stefan Richter wrote:On Feb 10 Chris Boot wrote:+ /* ignore targets on the local node */
+ if (device->node == device->card->local_node) {
+ dev_set_drvdata(&unit->device, NULL);
+ return 0;
+ }
But I do wonder: Shouldn't this be implemented by returning from the
driver probe method with an error? If so, which errno should be returned?
-ENODEV or -ENXIO.
Perhaps,
It's what really_probe() in drivers/base/dd.c requires:
if (ret != -ENODEV&& ret != -ENXIO) {
/* driver matched but the probe failed */
printk(KERN_WARNING
"%s: probe of %s failed with error %d\n",
drv->name, dev_name(dev), ret);
} else {
pr_debug("%s: probe of %s rejects match %d\n",
drv->name, dev_name(dev), ret);
}
but the meaning of those isn't quite what is happening here. We aren't
saying the device doesn't exist or is inaccessible, just that we don't
want to talk to it...
ENODEV does not mean "no device" but "no _such_ device".