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

Andre Heider a.heider at gmail.com
Sat Aug 6 22:40:20 EST 2011


On Thu, Aug 4, 2011 at 9:27 PM, Geert Uytterhoeven <geert at linux-m68k.org> wrote:
> 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.

Aha, makes perfect sense.

Thanks Geert


More information about the Linuxppc-dev mailing list