Provide a set of default region flags and make them overwritable via
a module parameter array.
Set PS3_STORAGE_FLAG_SKIP_ACL for region 0, so it can be accessed
from the GameOS lpar.

Signed-off-by: Andre Heider <a.hei...@gmail.com>
---
 drivers/block/ps3disk.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c
index 30dae10..483806e 100644
--- a/drivers/block/ps3disk.c
+++ b/drivers/block/ps3disk.c
@@ -39,6 +39,19 @@
 #define PS3DISK_NAME           "ps3d%c%c"
 
 
+static unsigned int region_flags[] = {
+       PS3_STORAGE_FLAG_SKIP_ACL,              /* raw disk */
+       PS3_STORAGE_FLAG_DEFAULT,               /* core os */
+       PS3_STORAGE_FLAG_DEFAULT,               /* gameos pup */
+       PS3_STORAGE_FLAG_DEFAULT,               /* n/a */
+       PS3_STORAGE_FLAG_DEFAULT,               /* n/a */
+       PS3_STORAGE_FLAG_DEFAULT,               /* n/a */
+       PS3_STORAGE_FLAG_DEFAULT,               /* n/a */
+       PS3_STORAGE_FLAG_DEFAULT,               /* n/a */
+};
+module_param_array(region_flags, uint, NULL, S_IRUGO);
+MODULE_PARM_DESC(region_flags, "Region flags");
+
 struct ps3disk_private {
        spinlock_t lock;                /* Request queue spinlock */
        struct request_queue *queue;
@@ -453,6 +466,9 @@ static int __devinit ps3disk_probe(struct 
ps3_system_bus_device *_dev)
                goto fail_free_priv;
        }
 
+       for (region_idx = 0; region_idx < dev->num_regions; region_idx++)
+               dev->regions[region_idx].flags = region_flags[region_idx];
+
        error = ps3stor_setup(dev, ps3disk_interrupt);
        if (error)
                goto fail_free_bounce;
-- 
1.7.5.4

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to