{
gceSTATUS status;
- printk("Enter %s \n", __func__);
+ //printk("Enter %s \n", __func__);
msleep(50); //Wait for gpu finish
return;
}
- printk("Exit %s \n", __func__);
+ //printk("Exit %s \n", __func__);
}
static void gpu_early_resume(struct early_suspend *h)
{
gceSTATUS status;
- printk("Enter %s \n", __func__);
+ //printk("Enter %s \n", __func__);
status = gckHARDWARE_SetPowerManagementState(galDevice->kernel->hardware, gcvPOWER_IDLE);
return;
}
- printk("Exit %s \n", __func__);
+ //printk("Exit %s \n", __func__);
}
struct early_suspend gpu_early_suspend_info = {
gceSTATUS status;
gckGALDEVICE device;
- printk("Enter %s \n", __func__);
+ //printk("Enter %s \n", __func__);
device = platform_get_drvdata(dev);
return -1;
}
- printk("Exit %s \n", __func__);
+ //printk("Exit %s \n", __func__);
return 0;
}
gceSTATUS status;
gckGALDEVICE device;
- printk("Enter %s \n", __func__);
+ //printk("Enter %s \n", __func__);
device = platform_get_drvdata(dev);
return -1;
}
- printk("Exit %s \n", __func__);
+ //printk("Exit %s \n", __func__);
return 0;
}
PLINUX_MDL_MAP mdlMap;
PLINUX_MDL mdl = (PLINUX_MDL)Physical;
struct task_struct * task;
+ struct mm_struct * mm;
/* Verify the arguments. */
gcmkVERIFY_OBJECT(Os, gcvOBJ_OS);
/* Get the current pointer for the task with stored pid. */
task = FIND_TASK_BY_PID(mdlMap->pid);
+ if(task) {
+ mm = get_task_mm(task);
+ put_task_struct(task);
+ } else {
+ mm = gcvNULL;
+ }
- if (task != gcvNULL && task->mm != gcvNULL)
+ if (mm)
{
- down_write(&task->mm->mmap_sem);
- do_munmap(task->mm, (unsigned long)Logical, mdl->numPages*PAGE_SIZE);
- up_write(&task->mm->mmap_sem);
+ down_write(&mm->mmap_sem);
+ do_munmap(mm, (unsigned long)Logical, mdl->numPages*PAGE_SIZE);
+ up_write(&mm->mmap_sem);
+ mmput(mm);
}
else
{
PLINUX_MDL mdl;
PLINUX_MDL_MAP mdlMap;
struct task_struct * task;
+ struct mm_struct * mm;
#ifdef NO_DMA_COHERENT
unsigned size;
{
/* Get the current pointer for the task with stored pid. */
task = FIND_TASK_BY_PID(mdlMap->pid);
+ if(task) {
+ mm = get_task_mm(task);
+ put_task_struct(task);
+ } else {
+ mm = gcvNULL;
+ }
- if (task != gcvNULL && task->mm != gcvNULL)
+ if (mm)
{
- down_write(&task->mm->mmap_sem);
+ down_write(&mm->mmap_sem);
- if (do_munmap(task->mm,
+ if (do_munmap(mm,
(unsigned long)mdlMap->vmaAddr,
mdl->numPages * PAGE_SIZE) < 0)
{
(gctUINT32)mdlMap->vmaAddr);
}
- up_write(&task->mm->mmap_sem);
+ up_write(&mm->mmap_sem);
+ mmput(mm);
}
mdlMap->vmaAddr = gcvNULL;
PLINUX_MDL_MAP mdlMap;
PLINUX_MDL mdl = (PLINUX_MDL)Physical;
struct task_struct * task;
+ struct mm_struct * mm;
/* Verify the arguments. */
gcmkVERIFY_OBJECT(Os, gcvOBJ_OS);
{
/* Get the current pointer for the task with stored pid. */
task = FIND_TASK_BY_PID(mdlMap->pid);
+ if(task) {
+ mm = get_task_mm(task);
+ put_task_struct(task);
+ } else {
+ mm = gcvNULL;
+ }
- if (task != gcvNULL && task->mm != gcvNULL)
+ if (mm)
{
- down_write(&task->mm->mmap_sem);
- do_munmap(task->mm, (unsigned long)Logical, mdl->numPages * PAGE_SIZE);
- up_write(&task->mm->mmap_sem);
+ down_write(&mm->mmap_sem);
+ do_munmap(mm, (unsigned long)Logical, mdl->numPages * PAGE_SIZE);
+ up_write(&mm->mmap_sem);
+ mmput(mm);
}
mdlMap->vmaAddr = gcvNULL;
/* Success. */
status = gcvSTATUS_OK;
}
+ put_task_struct(task);
}
else
{