intel_ips -- ensure we do not enable gpu turbo mode without driver linkage
Both when polling the current turbo status (in poll_turbo_status mode) and when handling thermal events (in ips_irq_handler) the current status of GPU turbo is updated to match the hardware status. However if during driver initialisation we were unable aquire linkage to the i915 driver enabling GPU turbo will lead to an oops on the first attempt to determine GPU busy status. Ensure that we do not enable GPU turbo unless we have driver linkage. BugLink: http://bugs.launchpad.net/bugs/632430 Cc: stable@kernel.org Signed-off-by: Andy Whitcroft <apw@canonical.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
This commit is contained in:
Родитель
a8c096adbd
Коммит
070c0ee1ef
|
@ -715,7 +715,8 @@ static void update_turbo_limits(struct ips_driver *ips)
|
|||
u32 hts = thm_readl(THM_HTS);
|
||||
|
||||
ips->cpu_turbo_enabled = !(hts & HTS_PCTD_DIS);
|
||||
ips->gpu_turbo_enabled = !(hts & HTS_GTD_DIS);
|
||||
if (ips->gpu_busy)
|
||||
ips->gpu_turbo_enabled = !(hts & HTS_GTD_DIS);
|
||||
ips->core_power_limit = thm_readw(THM_MPCPC);
|
||||
ips->mch_power_limit = thm_readw(THM_MMGPC);
|
||||
ips->mcp_temp_limit = thm_readw(THM_PTL);
|
||||
|
@ -1185,7 +1186,8 @@ static irqreturn_t ips_irq_handler(int irq, void *arg)
|
|||
STS_GPL_SHIFT;
|
||||
/* ignore EC CPU vs GPU pref */
|
||||
ips->cpu_turbo_enabled = !(sts & STS_PCTD_DIS);
|
||||
ips->gpu_turbo_enabled = !(sts & STS_GTD_DIS);
|
||||
if (ips->gpu_busy)
|
||||
ips->gpu_turbo_enabled = !(sts & STS_GTD_DIS);
|
||||
ips->mcp_temp_limit = (sts & STS_PTL_MASK) >>
|
||||
STS_PTL_SHIFT;
|
||||
ips->mcp_power_limit = (tc1 & STS_PPL_MASK) >>
|
||||
|
|
Загрузка…
Ссылка в новой задаче