[POWERPC] spu_base: fix initialisation on systems with no SPEs
This change fixes the case where spu_base and spufs are initialised on a system with no SPEs - unconditionally create the spu_lists so spu_alloc doesn't explode, and check for spu_management ops before starting spufs. Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com> arch/powerpc/platforms/cell/spu_base.c | 7 ++++--- arch/powerpc/platforms/cell/spufs/inode.c | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-)
This commit is contained in:
parent
befdc746ee
commit
ccf17e9d00
@ -36,6 +36,8 @@
|
|||||||
#include <asm/xmon.h>
|
#include <asm/xmon.h>
|
||||||
|
|
||||||
const struct spu_management_ops *spu_management_ops;
|
const struct spu_management_ops *spu_management_ops;
|
||||||
|
EXPORT_SYMBOL_GPL(spu_management_ops);
|
||||||
|
|
||||||
const struct spu_priv1_ops *spu_priv1_ops;
|
const struct spu_priv1_ops *spu_priv1_ops;
|
||||||
|
|
||||||
static struct list_head spu_list[MAX_NUMNODES];
|
static struct list_head spu_list[MAX_NUMNODES];
|
||||||
@ -589,6 +591,9 @@ static int __init init_spu_base(void)
|
|||||||
{
|
{
|
||||||
int i, ret = 0;
|
int i, ret = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < MAX_NUMNODES; i++)
|
||||||
|
INIT_LIST_HEAD(&spu_list[i]);
|
||||||
|
|
||||||
if (!spu_management_ops)
|
if (!spu_management_ops)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
@ -597,9 +602,6 @@ static int __init init_spu_base(void)
|
|||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
for (i = 0; i < MAX_NUMNODES; i++)
|
|
||||||
INIT_LIST_HEAD(&spu_list[i]);
|
|
||||||
|
|
||||||
ret = spu_enumerate_spus(create_spu);
|
ret = spu_enumerate_spus(create_spu);
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include <asm/prom.h>
|
#include <asm/prom.h>
|
||||||
#include <asm/semaphore.h>
|
#include <asm/semaphore.h>
|
||||||
#include <asm/spu.h>
|
#include <asm/spu.h>
|
||||||
|
#include <asm/spu_priv1.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
||||||
#include "spufs.h"
|
#include "spufs.h"
|
||||||
@ -665,6 +666,10 @@ static int __init spufs_init(void)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
ret = -ENODEV;
|
||||||
|
if (!spu_management_ops)
|
||||||
|
goto out;
|
||||||
|
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
spufs_inode_cache = kmem_cache_create("spufs_inode_cache",
|
spufs_inode_cache = kmem_cache_create("spufs_inode_cache",
|
||||||
sizeof(struct spufs_inode_info), 0,
|
sizeof(struct spufs_inode_info), 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user