mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 01:34:14 +08:00
[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>
|
||||
|
||||
const struct spu_management_ops *spu_management_ops;
|
||||
EXPORT_SYMBOL_GPL(spu_management_ops);
|
||||
|
||||
const struct spu_priv1_ops *spu_priv1_ops;
|
||||
|
||||
static struct list_head spu_list[MAX_NUMNODES];
|
||||
@ -589,6 +591,9 @@ static int __init init_spu_base(void)
|
||||
{
|
||||
int i, ret = 0;
|
||||
|
||||
for (i = 0; i < MAX_NUMNODES; i++)
|
||||
INIT_LIST_HEAD(&spu_list[i]);
|
||||
|
||||
if (!spu_management_ops)
|
||||
goto out;
|
||||
|
||||
@ -597,9 +602,6 @@ static int __init init_spu_base(void)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
for (i = 0; i < MAX_NUMNODES; i++)
|
||||
INIT_LIST_HEAD(&spu_list[i]);
|
||||
|
||||
ret = spu_enumerate_spus(create_spu);
|
||||
|
||||
if (ret) {
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include <asm/prom.h>
|
||||
#include <asm/semaphore.h>
|
||||
#include <asm/spu.h>
|
||||
#include <asm/spu_priv1.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
#include "spufs.h"
|
||||
@ -665,6 +666,10 @@ static int __init spufs_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = -ENODEV;
|
||||
if (!spu_management_ops)
|
||||
goto out;
|
||||
|
||||
ret = -ENOMEM;
|
||||
spufs_inode_cache = kmem_cache_create("spufs_inode_cache",
|
||||
sizeof(struct spufs_inode_info), 0,
|
||||
|
Loading…
Reference in New Issue
Block a user