On Thu, Aug 4, 2011 at 9:27 PM, Geert Uytterhoeven <ge...@linux-m68k.org> wrote: > On Thu, Aug 4, 2011 at 18:40, Andre Heider <a.hei...@gmail.com> wrote: >> On Thu, Aug 4, 2011 at 12:34 AM, Geoff Levand <ge...@infradead.org> wrote: >>> On 08/01/2011 01:02 PM, Andre Heider wrote: >>>> --- a/drivers/char/ps3flash.c >>>> +++ b/drivers/char/ps3flash.c >>>> @@ -25,6 +25,7 @@ >>>> >>>> #include <asm/lv1call.h> >>>> #include <asm/ps3stor.h> >>>> +#include <asm/firmware.h> >>>> >>>> >>>> #define DEVICE_NAME "ps3flash" >>>> @@ -455,6 +456,12 @@ static struct ps3_system_bus_driver ps3flash = { >>>> >>>> static int __init ps3flash_init(void) >>>> { >>>> + if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) >>>> + return -ENODEV; >>> >>> Is this needed? Won't this driver only be loaded on PS3 hardware? >>> >> >> The same code is in drivers/block/ps3disk.c, I wasn't sure if it is >> missing here or redundant there. >> Should I remove it here? >> >>>> + >>>> + if (ps3_get_ss_laid() != PS3_SS_LAID_OTHEROS) >>>> + return -ENODEV; >>>> + >>>> return ps3_system_bus_driver_register(&ps3flash); >>>> } > > ps3flash_init() is called straight from module_init(), so it could be > called on non-PS3. > ps3_system_bus_driver_register() has the firmware_has_feature_check(), > so it will > reject non-PS3. > > But if your *_init() does any processing before calling > ps3_system_bus_driver_register() > (like ps3disk_init() does, and ps3flash_init() now does due to your > patch), you have to > do the check yourself, to make sure it returns early on non-PS3.
Aha, makes perfect sense. Thanks Geert _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev