mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
drm imx, i915, amdgpu, panfrost, virtio, etnaviv fixes
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJdHthAAAoJEAx081l5xIa+m4wQAJAFm0YimQFznAzVHat2fpCc 61cT27GjT1Zbg3LlO2euIKbJ328VWMndxWqXbM6+BXFh3Cd5uOw39az3q5ihLs8t U1/dWt4UKHirGkbSB+qHan6C6rXPVOGjcuwL7cQxnwB+p7RV+dud36/Eq71sQ7yc vqaiSuEIBkElOQ8TDR92nK/ty1bzmFoky6/UWkVPxq560Yo8B6TlhS+guzdwDE3F DaS2y8Yi0FLowwrWMXpzzjVrxjcb+TzcM7p0iSToZsfXRapBkHa4PUskfbLZA6j8 GSye5wc65WKbX4FxuFEj4koeBMUu5IBP7MrlR1tfouATBhUe5cibW7/MFAoDEQuh /5icw+/1gp1rqjApaA3vHrPzbiBOBOZGhHQqDCtHZXTkbulp1sFLVJdbX02SYK+d kj5tQFxMDdOeGwmZDVNhF13id5go2vmY4vYY+APhiNbQT3ibsh+fejBe5zUVa8U0 iTmeTE7L+SB/5jS9Lcp3S8ZfUwcOTONn2cRcOuPO+38lzx3WE6HaYrR2FUbe7OVU CBFQD1Cl+jDjUJ0W1JPwTrvIbK0aUYhkIzT3pmBMlA6N62SKmuQH+Z1nPJY0THsi RNkTMHgPd7m01zUjOMCjpucbygdKDtPGTLcxd3djZediJhpjwgapy1NySzfotEcp ZkhRs/3ddNFvxibRpz41 =Ipfl -----END PGP SIGNATURE----- Merge tag 'drm-fixes-2019-07-05-1' of git://anongit.freedesktop.org/drm/drm Pull drm fixes from Dave Airlie: "I skipped last week because there wasn't much worth doing, this week got a few more fixes in. amdgpu: - default register value change - runpm regression fix - fan control fix i915: - fix Ironlake regression panfrost: - fix a double free virtio: - fix a locking bug imx: - crtc disable fixes" * tag 'drm-fixes-2019-07-05-1' of git://anongit.freedesktop.org/drm/drm: drm/imx: only send event on crtc disable if kept disabled drm/imx: notify drm core before sending event during crtc disable drm/i915/ringbuffer: EMIT_INVALIDATE *before* switch context drm/amdgpu/gfx9: use reset default for PA_SC_FIFO_SIZE drm/amdgpu: Don't skip display settings in hwmgr_resume() drm/amd/powerplay: use hardware fan control if no powerplay fan table drm/panfrost: Fix a double-free error drm/etnaviv: add missing failure path to destroy suballoc drm/virtio: move drm_connector_update_edid_property() call
This commit is contained in:
commit
3f9c4dc633
10 changed files with 22 additions and 31 deletions
|
@ -1959,25 +1959,6 @@ static void gfx_v9_0_constants_init(struct amdgpu_device *adev)
|
|||
mutex_unlock(&adev->srbm_mutex);
|
||||
|
||||
gfx_v9_0_init_compute_vmid(adev);
|
||||
|
||||
mutex_lock(&adev->grbm_idx_mutex);
|
||||
/*
|
||||
* making sure that the following register writes will be broadcasted
|
||||
* to all the shaders
|
||||
*/
|
||||
gfx_v9_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
|
||||
|
||||
WREG32_SOC15(GC, 0, mmPA_SC_FIFO_SIZE,
|
||||
(adev->gfx.config.sc_prim_fifo_size_frontend <<
|
||||
PA_SC_FIFO_SIZE__SC_FRONTEND_PRIM_FIFO_SIZE__SHIFT) |
|
||||
(adev->gfx.config.sc_prim_fifo_size_backend <<
|
||||
PA_SC_FIFO_SIZE__SC_BACKEND_PRIM_FIFO_SIZE__SHIFT) |
|
||||
(adev->gfx.config.sc_hiz_tile_fifo_size <<
|
||||
PA_SC_FIFO_SIZE__SC_HIZ_TILE_FIFO_SIZE__SHIFT) |
|
||||
(adev->gfx.config.sc_earlyz_tile_fifo_size <<
|
||||
PA_SC_FIFO_SIZE__SC_EARLYZ_TILE_FIFO_SIZE__SHIFT));
|
||||
mutex_unlock(&adev->grbm_idx_mutex);
|
||||
|
||||
}
|
||||
|
||||
static void gfx_v9_0_wait_for_rlc_serdes(struct amdgpu_device *adev)
|
||||
|
|
|
@ -326,7 +326,7 @@ int hwmgr_resume(struct pp_hwmgr *hwmgr)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
|
||||
ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -916,8 +916,10 @@ static int init_thermal_controller(
|
|||
PHM_PlatformCaps_ThermalController
|
||||
);
|
||||
|
||||
if (0 == powerplay_table->usFanTableOffset)
|
||||
if (0 == powerplay_table->usFanTableOffset) {
|
||||
hwmgr->thermal_controller.use_hw_fan_control = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
fan_table = (const PPTable_Generic_SubTable_Header *)
|
||||
(((unsigned long)powerplay_table) +
|
||||
|
|
|
@ -694,6 +694,7 @@ struct pp_thermal_controller_info {
|
|||
uint8_t ucType;
|
||||
uint8_t ucI2cLine;
|
||||
uint8_t ucI2cAddress;
|
||||
uint8_t use_hw_fan_control;
|
||||
struct pp_fan_info fanInfo;
|
||||
struct pp_advance_fan_control_parameters advanceFanControlParameters;
|
||||
};
|
||||
|
|
|
@ -2092,6 +2092,10 @@ static int polaris10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* use hardware fan control */
|
||||
if (hwmgr->thermal_controller.use_hw_fan_control)
|
||||
return 0;
|
||||
|
||||
tmp64 = hwmgr->thermal_controller.advanceFanControlParameters.
|
||||
usPWMMin * duty100;
|
||||
do_div(tmp64, 10000);
|
||||
|
|
|
@ -760,7 +760,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
|
|||
if (IS_ERR(gpu->cmdbuf_suballoc)) {
|
||||
dev_err(gpu->dev, "Failed to create cmdbuf suballocator\n");
|
||||
ret = PTR_ERR(gpu->cmdbuf_suballoc);
|
||||
goto fail;
|
||||
goto destroy_iommu;
|
||||
}
|
||||
|
||||
/* Create buffer: */
|
||||
|
@ -768,7 +768,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
|
|||
PAGE_SIZE);
|
||||
if (ret) {
|
||||
dev_err(gpu->dev, "could not create command buffer\n");
|
||||
goto destroy_iommu;
|
||||
goto destroy_suballoc;
|
||||
}
|
||||
|
||||
if (gpu->mmu->version == ETNAVIV_IOMMU_V1 &&
|
||||
|
@ -800,6 +800,9 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
|
|||
free_buffer:
|
||||
etnaviv_cmdbuf_free(&gpu->buffer);
|
||||
gpu->buffer.suballoc = NULL;
|
||||
destroy_suballoc:
|
||||
etnaviv_cmdbuf_suballoc_destroy(gpu->cmdbuf_suballoc);
|
||||
gpu->cmdbuf_suballoc = NULL;
|
||||
destroy_iommu:
|
||||
etnaviv_iommu_destroy(gpu->mmu);
|
||||
gpu->mmu = NULL;
|
||||
|
|
|
@ -1888,12 +1888,12 @@ static int ring_request_alloc(struct i915_request *request)
|
|||
*/
|
||||
request->reserved_space += LEGACY_REQUEST_SIZE;
|
||||
|
||||
ret = switch_context(request);
|
||||
/* Unconditionally invalidate GPU caches and TLBs. */
|
||||
ret = request->engine->emit_flush(request, EMIT_INVALIDATE);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Unconditionally invalidate GPU caches and TLBs. */
|
||||
ret = request->engine->emit_flush(request, EMIT_INVALIDATE);
|
||||
ret = switch_context(request);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -91,14 +91,14 @@ static void ipu_crtc_atomic_disable(struct drm_crtc *crtc,
|
|||
ipu_dc_disable(ipu);
|
||||
ipu_prg_disable(ipu);
|
||||
|
||||
drm_crtc_vblank_off(crtc);
|
||||
|
||||
spin_lock_irq(&crtc->dev->event_lock);
|
||||
if (crtc->state->event) {
|
||||
if (crtc->state->event && !crtc->state->active) {
|
||||
drm_crtc_send_vblank_event(crtc, crtc->state->event);
|
||||
crtc->state->event = NULL;
|
||||
}
|
||||
spin_unlock_irq(&crtc->dev->event_lock);
|
||||
|
||||
drm_crtc_vblank_off(crtc);
|
||||
}
|
||||
|
||||
static void imx_drm_crtc_reset(struct drm_crtc *crtc)
|
||||
|
|
|
@ -63,7 +63,7 @@ static int panfrost_ioctl_create_bo(struct drm_device *dev, void *data,
|
|||
return 0;
|
||||
|
||||
err_free:
|
||||
drm_gem_object_put_unlocked(&shmem->base);
|
||||
drm_gem_handle_delete(file, args->handle);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -619,11 +619,11 @@ static void virtio_gpu_cmd_get_edid_cb(struct virtio_gpu_device *vgdev,
|
|||
output = vgdev->outputs + scanout;
|
||||
|
||||
new_edid = drm_do_get_edid(&output->conn, virtio_get_edid_block, resp);
|
||||
drm_connector_update_edid_property(&output->conn, new_edid);
|
||||
|
||||
spin_lock(&vgdev->display_info_lock);
|
||||
old_edid = output->edid;
|
||||
output->edid = new_edid;
|
||||
drm_connector_update_edid_property(&output->conn, output->edid);
|
||||
spin_unlock(&vgdev->display_info_lock);
|
||||
|
||||
kfree(old_edid);
|
||||
|
|
Loading…
Reference in a new issue