]> err.no Git - linux-2.6/blobdiff - arch/powerpc/platforms/cell/spufs/sched.c
[POWERPC] Fix build failure on Cell when CONFIG_SPU_FS=y
[linux-2.6] / arch / powerpc / platforms / cell / spufs / sched.c
index 17806e001e50c4dbf37fc8ff77b6754e4a5ffc3f..9ad53e637aee4c111b747acae0f58d1fa89131fe 100644 (file)
@@ -166,15 +166,7 @@ static int node_allowed(struct spu_context *ctx, int node)
        return rval;
 }
 
-static BLOCKING_NOTIFIER_HEAD(spu_switch_notifier);
-
-void spu_switch_notify(struct spu *spu, struct spu_context *ctx)
-{
-       blocking_notifier_call_chain(&spu_switch_notifier,
-                           ctx ? ctx->object_id : 0, spu);
-}
-
-static void notify_spus_active(void)
+void do_notify_spus_active(void)
 {
        int node;
 
@@ -201,22 +193,6 @@ static void notify_spus_active(void)
        }
 }
 
-int spu_switch_event_register(struct notifier_block * n)
-{
-       int ret;
-       ret = blocking_notifier_chain_register(&spu_switch_notifier, n);
-       if (!ret)
-               notify_spus_active();
-       return ret;
-}
-EXPORT_SYMBOL_GPL(spu_switch_event_register);
-
-int spu_switch_event_unregister(struct notifier_block * n)
-{
-       return blocking_notifier_chain_unregister(&spu_switch_notifier, n);
-}
-EXPORT_SYMBOL_GPL(spu_switch_event_unregister);
-
 /**
  * spu_bind_context - bind spu context to physical spu
  * @spu:       physical spu to bind to
@@ -594,7 +570,7 @@ static struct spu *find_victim(struct spu_context *ctx)
                list_for_each_entry(spu, &cbe_spu_info[node].spus, cbe_list) {
                        struct spu_context *tmp = spu->ctx;
 
-                       if (tmp->prio > ctx->prio &&
+                       if (tmp && tmp->prio > ctx->prio &&
                            (!victim || tmp->prio > victim->prio))
                                victim = spu->ctx;
                }
@@ -626,9 +602,9 @@ static struct spu *find_victim(struct spu_context *ctx)
 
                        mutex_lock(&cbe_spu_info[node].list_mutex);
                        cbe_spu_info[node].nr_active--;
+                       spu_unbind_context(spu, victim);
                        mutex_unlock(&cbe_spu_info[node].list_mutex);
 
-                       spu_unbind_context(spu, victim);
                        victim->stats.invol_ctx_switch++;
                        spu->stats.invol_ctx_switch++;
                        mutex_unlock(&victim->state_mutex);