Re: [Cbe-oss-dev] [PATCH 07/15] ps3flash: Refuse to work in lpars other than OtherOS
From: Andre Heider <hidden>
Date: 2011-08-06 12:40:20
On Thu, Aug 4, 2011 at 9:27 PM, Geert Uytterhoeven [off-list ref] w= rote:
On Thu, Aug 4, 2011 at 18:40, Andre Heider [off-list ref] wrote:quoted
On Thu, Aug 4, 2011 at 12:34 AM, Geoff Levand [off-list ref] wrot=
e:
quoted
quoted
On 08/01/2011 01:02 PM, Andre Heider wrote:quoted
--- a/drivers/char/ps3flash.c +++ b/drivers/char/ps3flash.c@@ -25,6 +25,7 @@=A0#include <asm/lv1call.h> =A0#include <asm/ps3stor.h> +#include <asm/firmware.h> =A0#define DEVICE_NAME =A0 =A0 =A0 =A0 =A0"ps3flash"@@ -455,6 +456,12 @@ static struct ps3_system_bus_driver ps3flash =3D =
{quoted
quoted
quoted
=A0static int __init ps3flash_init(void) =A0{ + =A0 =A0 if (!firmware_has_feature(FW_FEATURE_PS3_LV1)) + =A0 =A0 =A0 =A0 =A0 =A0 return -ENODEV;Is this needed? =A0Won'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?quoted
quoted
+ + =A0 =A0 if (ps3_get_ss_laid() !=3D PS3_SS_LAID_OTHEROS) + =A0 =A0 =A0 =A0 =A0 =A0 return -ENODEV; + =A0 =A0 =A0 return ps3_system_bus_driver_register(&ps3flash); =A0}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