Age | Commit message (Collapse) | Author |
|
Fix kernel crash issue meet when do 720p Camera recording
on WFD source side, the crash is related with timer schedule,
fixed by add protection code in gckOS_StartTimer function.
Kernel crash log:
[<c004ffec>] (__bug+0x1c/0x28) from [<c00a7e00>] (queue_delayed_work_on+0x10c/0x148)
[<c00a7e00>] (queue_delayed_work_on+0x10c/0x148) from [<c046f4d0>] (gckOS_StartTimer+0x44/0x84)
[<c046f4d0>] (gckOS_StartTimer+0x44/0x84) from [<c047f4ac>] (gckHARDWARE_SetPowerManagementState+0xa24/0xa5c)
[<c047f4ac>] (gckHARDWARE_SetPowerManagementState+0xa24/0xa5c) from [<c046e608>] (gckOS_Broadcast+0xb8/0xe8)
[<c046e608>] (gckOS_Broadcast+0xb8/0xe8) from [<c0475734>] (_TryToIdleGPU+0xd8/0x18c)
[<c0475734>] (_TryToIdleGPU+0xd8/0x18c) from [<c0476cdc>] (gckEVENT_Notify+0x2dc/0x4c8)
[<c0476cdc>] (gckEVENT_Notify+0x2dc/0x4c8) from [<c047d494>] (gckHARDWARE_Interrupt+0x58/0x68)
[<c047d494>] (gckHARDWARE_Interrupt+0x58/0x68) from [<c04693a8>] (threadRoutine+0x20/0x78)
[<c04693a8>] (threadRoutine+0x20/0x78) from [<c00ad0c8>] (kthread+0x80/0x88)
[<c00ad0c8>] (kthread+0x80/0x88) from [<c004d408>] (kernel_thread_exit+0x0/0x8)
Signed-off-by: Richard Liu <r66033@freescale.com>
Acked-by: Jason Liu
|
|
cpufreq and pu power management will oprate the same register, it looks should
keep them operating in order not concurrent. Then use the cpufreq mutex in xPU
driver to make sure.
Another code bug is in pu power management which base regulator framework, we
set the reister directly not regulator, then there is the chance set_volatage
will miss the chance if this time voltage setting as the last time setting
before PU disable, but we have to do this, so add regulator_sync_voltage to
force sync the voltage setting. The drawback is setting twice...
Note:
This patch is temporary and supposed to be replaced it once we find the
root cause.
Signed-off-by: Robin Gong <b38343@freescale.com>
Acked-by: Jason Liu
|
|
alloc_pages_exact is added by Vivante in gpu git commit
e3debfdf4c3f29519ee66d60ac9b5e4db4c41026.
alloc_pages_exact is more easy make memory fragment,
video playback and camera recording case need large
physical continue memory, using alloc_pages_exact will
easy make memory fragment and no large physical continue
memory, it will impact video playback and camera case.
Signed-off-by: Richard Liu <r66033@freescale.com>
|
|
this issue cause system boot with multi-user switch on JB4.3,
root cause is gpu memory cannot be multi-locked in same process,
gpu memory lock reference is added to allow multi-lock in kernel driver.
Signed-off-by: Xianzhong <b07117@freescale.com>
Acked-by: Jason Liu
|
|
The baseAddress of contiguousVidMem is the actual physical address
which is not subtracted by gpu baseAddress, but the allocated physical address
has been subtracted by gpu baseAddress in gckVIDMEM_Lock,
so the invalid offset is produced and used to calculate the logical address.
Signed-off-by: Xianzhong <b07117@freescale.com>
Acked-by: Shawn Guo
|
|
The random hang is still found in one SabreSD RevB board
Signed-off-by: Xianzhong <b07117@freescale.com>
Acked-by: Lily Zhang
|
|
-Remove the __devinit for suspend/resume function.
-Replace __devinit to __devexit for remove function.
Cherry-pick from 3.5.7 branch.
Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Integrate 4.6.9p12 release kernel part code.
Signed-off-by: Loren Huang <b02279@freescale.com>
Signed-off-by: Xianzhong <b07117@freescale.com>
Acked-by: Lily Zhang
|
|
After enabling runtime pm the suspend/resume entry is changed.
-Add new entry for suspend/resume in runtime pm frame work.
-Add static define for all runtime pm function.
Cherry-pick from 3.5.7 kernel branch.
Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Remove gpu_regulator since 3.5.7 doesn't need it.
Cherry-pick from 3.5.7 branch.
Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
use new PU power on/off interface in GPU driver
Cherry-pick from 3.5.7 branch.
Signed-off-by: Robin Gong <b38343@freescale.com>
Acked-by: Lily Zhang
|
|
Add a gcdSUPPRESS_OOM_MESSAGE build option which can be used to enable an out-of-memory message in kernel.
Signed-off-by: Loren Huang <b02279@freescale.com>
Fixed Conflicts:
drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
Acked-by: Lily Zhang
|
|
Add global value gpu3DMinClock so that minimum 3D clock can be change by user.
When gpu min clock is too low, it may cause IPU starvation issue in certain case.
Use echo x > /sys/module/galcore/parameters/gpu3DMinClock to change it.
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Add a gcdSUPPRESS_OOM_MESSAGE build option which can be used to enable an out-of-memory message in kernel.
Signed-off-by: Loren Huang <b02279@freescale.com>
Conflicts:
drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
Acked-by: Lily Zhang
|
|
More information can be dumped when lower-mem killer is triggered
Signed-off-by: Xianzhong <b07117@freescale.com>
Acked-by: Lily Zhang
|
|
This is linux kernel part of gpu4.6.9p11.1 upgrade.
Signed-off-by: Xianzhong <b07117@freescale.com>
Acked-by: Lily Zhang
|
|
-Power on VG core to makesure VG can be initalized if there is only
VG core in SoC.
-Power off VG core after initalization is done.
-Adjust VG power and clock state to match above changing.
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
-4.6.9p11 kernel code integration
-Additionally release runtime pm and regulator when destory gpu driver
to avoid reference count mismatch.
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Using notify mechanism instead of global variable to
trigger gpu3d clock change through thermal driver
Signed-off-by: Rong Dian <b38775@freescale.com>
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Cherry-pick from imx_3.5.7 branch.
Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Cherry-pick from imx_3.5.7 branch.
-Add runtime pm function.
-Set bus frequency to high when gpu power is on.
Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Cherry-pick from imx_3.5.7 branch.
-Comment regulator setting code temperarily for 3.5 kernel.
-Adjust clock setting code based on new clock framework.
-Disable dynamic frequency change feature as it depends on thermal
driver.
-Use DTS to get reserved memory information.
-Comment cpu check code for 3.5 kernel.
-Comment GPU reset code for 3.5 kernel.
Signed-off-by: Loren HUANG <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Integrate both 4.6.9p9.1 and 4.6.9p10.
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
add gpu regulator management in gpu driver
Signed-off-by: Robin Gong <b38343@freescale.com>
Acked-by: Lily Zhang
Signed-off-by: Robin Gong <b38343@freescale.com>
|
|
Merge vivante 4.6.9 p7 kernel part code.
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
the original low memory killer only take care of system memory accounting,
but for so large shared memory occupy by GPU, and each process memory
killer account become unfair, very large 3D game will not killed firstly
if it going to background.
Add this account to let real large memory user get killed if going to background
eg, the "angry bird Space" will acquire 68,215,360 GPU memory for 1-6 toll-gate.
The test show it can quicker recovery from memory shortage situation,
since it's very like to be killed after add so much GPU memory for such 3D game.
Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
Acked-by: Lily Zhang
|
|
Merge vivante 4.6.9 kernel part code
Updated clock management code
Updated gpu reset code
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Galcore reads baseAddress parameter from GPU resource set by kernel
Signed-off-by: Larry Li <b20787@freescale.com>
Acked-by: Lily Zhang
|
|
Use allocated GPU resource to enable GPU.
Memroy address on imx6sl board starts from 0x80000000
and GC320 can access [baseAddress, baseAddress + 2G) only without MMU.
So to make GC320 work, baseAddres must be set to 0x80000000, and all
address sent to GC320 must be a offset to baseAddress. GC355 doesn't
need this baseAddress, that means it needs a real physcial adress,
rather than the offset to baseAddress.
Original code always change phsysical address to 'offset' before use it,
no matter it is used by GC355 or GC320, so only one of them can work.
Solution is to move address adjustion to arch specific part. So each
core can get what it wants.
Signed-off-by: Larry Li <b20787@freescale.com>
Acked-by: Lily Zhang
|
|
the original low memory killer only take care of system memory accounting,
but for so large shared memory occupy by GPU, and each process memory
killer account become unfair, very large 3D game will not killed firstly
if it going to background.
Add this account to let real large memory user get killed if going to background
eg, the "angry bird Space" will acquire 68,215,360 GPU memory for 1-6 toll-gate.
The test show it can quicker recovery from memory shortage situation,
since it's very like to be killed after add so much GPU memory for such 3D game.
Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
|
|
This code is in 4.6.8 package.
This patch will cause suspend/resume failure
and data abort for vg applications.
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Merge vivante 4.6.8 kernel part code
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
-This patch from vivante.They need to bypass the
reference count in clock management code as they
may touch clock while they just want to change
power state.
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Merge vivante 4.6.7p1 kernel part code
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Remove a workaround for suspend/resume:
The workaround is turn on clock before gpu entering suspend.
After clock code bug is fixed, this workaround becomes no necessary.
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
fix random hang up issue especially run CTS provided by Viv
Signed-off-by: Richard Liu <r66033@freescale.com>
Acked-by: Lily Zhang
|
|
Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
Acked-by: Lily Zhang
|
|
Merge vivante 4.6.6p2 kernel part code
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Merge vivante 4.6.6 kernel part code
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
separate gpu 2d and vg core clock and axi clock operation
Signed-off-by: Wu Guoxing <b39297@freescale.com>
Acked-by: Lily Zhang
|
|
Update the fsl copyright of gpu kernel driver to 2012
Signed-off-by: Huang Loren <b02279@freescale.com>
|
|
mx6dl do not have shader clock, and the shader clock is used
as 2d clock. so, operate differently for mx6q & mx6dl
Signed-off-by: Wu Guoxing <b39297@freescale.com>
Acked-by: Lily Zhang
|
|
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
viv code is using mutex to wait for pm events,
kernel will see this as a dead lock and give a warrning, as the mutex
can be hold for a long time.
Signed-off-by: Wu Guoxing <b39297@freescale.com>
Acked-by: Lily Zhang
|
|
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|
|
Avoid necessary clk_disable operation
Signed-off-by: Larry Li <b20787@freescale.com>
|
|
-Correct gc355 initial power state to poweroff.
-Separate clock gating operation in function gckOS_SetGPUPower().
-Turn on clock while suspend GPU cores.
-Remove clock switch in drv_open().
Signed-off-by: Loren Huang <b02279@freescale.com>
Acked-by: Lily Zhang
|