Skip to content

Commit e3b3656

Browse files
committed
Merge tag 'drm-fixes-for-v4.8-final' of git://people.freedesktop.org/~airlied/linux
Pull drm fixes from Dave Airlie: "drm fixes for final 4.8. One big regression fix for udl, along with two amdgpu fixes and two nouveau fixes. All seems pretty safe and useful" * tag 'drm-fixes-for-v4.8-final' of git://people.freedesktop.org/~airlied/linux: drm/udl: fix line iterator in damage handling drm/radeon/si/dpm: add workaround for for Jet parts drm/amdgpu: disable CRTCs before teardown drm/nouveau: Revert "bus: remove cpu_coherent flag" drm/nouveau/fifo/nv04: avoid ramht race against cookie insertion
2 parents c6169de + 90fd68d commit e3b3656

File tree

8 files changed

+16
-3
lines changed

8 files changed

+16
-3
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1708,11 +1708,11 @@ void amdgpu_device_fini(struct amdgpu_device *adev)
17081708

17091709
DRM_INFO("amdgpu: finishing device.\n");
17101710
adev->shutdown = true;
1711+
drm_crtc_force_disable_all(adev->ddev);
17111712
/* evict vram memory */
17121713
amdgpu_bo_evict_vram(adev);
17131714
amdgpu_ib_pool_fini(adev);
17141715
amdgpu_fence_driver_fini(adev);
1715-
drm_crtc_force_disable_all(adev->ddev);
17161716
amdgpu_fbdev_fini(adev);
17171717
r = amdgpu_fini(adev);
17181718
kfree(adev->ip_block_status);

drivers/gpu/drm/nouveau/include/nvkm/core/device.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ struct nvkm_device_func {
175175
void (*fini)(struct nvkm_device *, bool suspend);
176176
resource_size_t (*resource_addr)(struct nvkm_device *, unsigned bar);
177177
resource_size_t (*resource_size)(struct nvkm_device *, unsigned bar);
178+
bool cpu_coherent;
178179
};
179180

180181
struct nvkm_device_quirk {

drivers/gpu/drm/nouveau/nouveau_bo.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,8 @@ nouveau_bo_new(struct drm_device *dev, int size, int align,
209209
nvbo->tile_flags = tile_flags;
210210
nvbo->bo.bdev = &drm->ttm.bdev;
211211

212-
nvbo->force_coherent = flags & TTM_PL_FLAG_UNCACHED;
212+
if (!nvxx_device(&drm->device)->func->cpu_coherent)
213+
nvbo->force_coherent = flags & TTM_PL_FLAG_UNCACHED;
213214

214215
nvbo->page_shift = 12;
215216
if (drm->client.vm) {

drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1614,6 +1614,7 @@ nvkm_device_pci_func = {
16141614
.fini = nvkm_device_pci_fini,
16151615
.resource_addr = nvkm_device_pci_resource_addr,
16161616
.resource_size = nvkm_device_pci_resource_size,
1617+
.cpu_coherent = !IS_ENABLED(CONFIG_ARM),
16171618
};
16181619

16191620
int

drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ nvkm_device_tegra_func = {
245245
.fini = nvkm_device_tegra_fini,
246246
.resource_addr = nvkm_device_tegra_resource_addr,
247247
.resource_size = nvkm_device_tegra_resource_size,
248+
.cpu_coherent = false,
248249
};
249250

250251
int

drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv04.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ nv04_fifo_dma_object_dtor(struct nvkm_fifo_chan *base, int cookie)
3737
{
3838
struct nv04_fifo_chan *chan = nv04_fifo_chan(base);
3939
struct nvkm_instmem *imem = chan->fifo->base.engine.subdev.device->imem;
40+
41+
mutex_lock(&chan->fifo->base.engine.subdev.mutex);
4042
nvkm_ramht_remove(imem->ramht, cookie);
43+
mutex_unlock(&chan->fifo->base.engine.subdev.mutex);
4144
}
4245

4346
static int

drivers/gpu/drm/radeon/si_dpm.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3015,6 +3015,12 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev,
30153015
if (rdev->pdev->device == 0x6811 &&
30163016
rdev->pdev->revision == 0x81)
30173017
max_mclk = 120000;
3018+
/* limit sclk/mclk on Jet parts for stability */
3019+
if (rdev->pdev->device == 0x6665 &&
3020+
rdev->pdev->revision == 0xc3) {
3021+
max_sclk = 75000;
3022+
max_mclk = 80000;
3023+
}
30183024

30193025
if (rps->vce_active) {
30203026
rps->evclk = rdev->pm.dpm.vce_states[rdev->pm.dpm.vce_level].evclk;

drivers/gpu/drm/udl/udl_fb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ int udl_handle_damage(struct udl_framebuffer *fb, int x, int y,
122122
return 0;
123123
cmd = urb->transfer_buffer;
124124

125-
for (i = y; i < height ; i++) {
125+
for (i = y; i < y + height ; i++) {
126126
const int line_offset = fb->base.pitches[0] * i;
127127
const int byte_offset = line_offset + (x * bpp);
128128
const int dev_byte_offset = (fb->base.width * bpp * i) + (x * bpp);

0 commit comments

Comments
 (0)