[Cbe-oss-dev] [PATCH 07/15] ps3flash: Refuse to work in lpars other than OtherOS

Geert Uytterhoeven geert at linux-m68k.org
Fri Aug 5 05:27:08 EST 2011


On Thu, Aug 4, 2011 at 18:40, Andre Heider <a.heider at gmail.com> wrote:
> On Thu, Aug 4, 2011 at 12:34 AM, Geoff Levand <geoff at 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.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds


More information about the cbe-oss-dev mailing list