Skip to content

Commit a3a3d47

Browse files
committed
Merge branch 'linux-4.14' of git://github.com/skeggsb/linux into drm-fixes
some nouveau fixes. * 'linux-4.14' of git://github.com/skeggsb/linux: drm/nouveau/fbcon: fix oops without fbdev emulation drm/nouveau/kms/nv50: fix oops during DP IRQ handling on non-MST boards drm/nouveau/bsp/g92: disable by default drm/nouveau/mmu: flush tlbs before deleting page tables
2 parents 2de0307 + 4813766 commit a3a3d47

4 files changed

Lines changed: 11 additions & 5 deletions

File tree

drivers/gpu/drm/nouveau/nouveau_fbcon.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ void
223223
nouveau_fbcon_accel_save_disable(struct drm_device *dev)
224224
{
225225
struct nouveau_drm *drm = nouveau_drm(dev);
226-
if (drm->fbcon) {
226+
if (drm->fbcon && drm->fbcon->helper.fbdev) {
227227
drm->fbcon->saved_flags = drm->fbcon->helper.fbdev->flags;
228228
drm->fbcon->helper.fbdev->flags |= FBINFO_HWACCEL_DISABLED;
229229
}
@@ -233,7 +233,7 @@ void
233233
nouveau_fbcon_accel_restore(struct drm_device *dev)
234234
{
235235
struct nouveau_drm *drm = nouveau_drm(dev);
236-
if (drm->fbcon) {
236+
if (drm->fbcon && drm->fbcon->helper.fbdev) {
237237
drm->fbcon->helper.fbdev->flags = drm->fbcon->saved_flags;
238238
}
239239
}
@@ -245,7 +245,8 @@ nouveau_fbcon_accel_fini(struct drm_device *dev)
245245
struct nouveau_fbdev *fbcon = drm->fbcon;
246246
if (fbcon && drm->channel) {
247247
console_lock();
248-
fbcon->helper.fbdev->flags |= FBINFO_HWACCEL_DISABLED;
248+
if (fbcon->helper.fbdev)
249+
fbcon->helper.fbdev->flags |= FBINFO_HWACCEL_DISABLED;
249250
console_unlock();
250251
nouveau_channel_idle(drm->channel);
251252
nvif_object_fini(&fbcon->twod);

drivers/gpu/drm/nouveau/nv50_display.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3265,11 +3265,14 @@ nv50_mstm = {
32653265
void
32663266
nv50_mstm_service(struct nv50_mstm *mstm)
32673267
{
3268-
struct drm_dp_aux *aux = mstm->mgr.aux;
3268+
struct drm_dp_aux *aux = mstm ? mstm->mgr.aux : NULL;
32693269
bool handled = true;
32703270
int ret;
32713271
u8 esi[8] = {};
32723272

3273+
if (!aux)
3274+
return;
3275+
32733276
while (handled) {
32743277
ret = drm_dp_dpcd_read(aux, DP_SINK_COUNT_ESI, esi, 8);
32753278
if (ret != 8) {

drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ int
3939
g84_bsp_new(struct nvkm_device *device, int index, struct nvkm_engine **pengine)
4040
{
4141
return nvkm_xtensa_new_(&g84_bsp, device, index,
42-
true, 0x103000, pengine);
42+
device->chipset != 0x92, 0x103000, pengine);
4343
}

drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,8 @@ nvkm_vm_unmap_pgt(struct nvkm_vm *vm, int big, u32 fpde, u32 lpde)
241241
mmu->func->map_pgt(vpgd->obj, pde, vpgt->mem);
242242
}
243243

244+
mmu->func->flush(vm);
245+
244246
nvkm_memory_del(&pgt);
245247
}
246248
}

0 commit comments

Comments
 (0)