static int __init ps3_create_spu(struct spu *spu, void *data) { int result; pr_debug("%s:%d spu_%d\n", __func__, __LINE__, spu->number); spu->pdata = kzalloc(sizeof(struct spu_pdata), GFP_KERNEL); if (!spu->pdata) { result = -ENOMEM; goto fail_malloc; } spu_pdata(spu)->resource_id = (unsigned long)data; /* Init cached reg values to HV defaults. */ spu_pdata(spu)->cache.sr1 = 0x33; result = construct_spu(spu); if (result) goto fail_construct; /* For now, just go ahead and enable it. */ result = enable_spu(spu); if (result) goto fail_enable; /* Make sure the spu is in SPE_EX_STATE_EXECUTED. */ /* need something better here!!! */ while (in_be64(&spu_pdata(spu)->shadow->spe_execution_status) != SPE_EX_STATE_EXECUTED) (void)0; return result; fail_enable: fail_construct: ps3_destroy_spu(spu); fail_malloc: return result; }
static int __init ps3_create_spu(struct spu *spu, void *data) { int result; pr_debug("%s:%d spu_%d\n", __func__, __LINE__, spu->number); spu->pdata = kzalloc(sizeof(struct spu_pdata), GFP_KERNEL); if (!spu->pdata) { result = -ENOMEM; goto fail_malloc; } spu_pdata(spu)->resource_id = (unsigned long)data; spu_pdata(spu)->cache.sr1 = 0x33; result = construct_spu(spu); if (result) goto fail_construct; result = enable_spu(spu); if (result) goto fail_enable; while (in_be64(&spu_pdata(spu)->shadow->spe_execution_status) != SPE_EX_STATE_EXECUTED) (void)0; return result; fail_enable: fail_construct: ps3_destroy_spu(spu); fail_malloc: return result; }