linux/drivers/gpu/drm/nouveau
Lyude Paul 7cb95eeea6 drm/nouveau/i2c: Enable i2c pads & busses during preinit
It turns out that while disabling i2c bus access from software when the
GPU is suspended was a step in the right direction with:

commit 342406e4fb ("drm/nouveau/i2c: Disable i2c bus access after
->fini()")

We also ended up accidentally breaking the vbios init scripts on some
older Tesla GPUs, as apparently said scripts can actually use the i2c
bus. Since these scripts are executed before initializing any
subdevices, we end up failing to acquire access to the i2c bus which has
left a number of cards with their fan controllers uninitialized. Luckily
this doesn't break hardware - it just means the fan gets stuck at 100%.

This also means that we've always been using our i2c busses before
initializing them during the init scripts for older GPUs, we just didn't
notice it until we started preventing them from being used until init.
It's pretty impressive this never caused us any issues before!

So, fix this by initializing our i2c pad and busses during subdev
pre-init. We skip initializing aux busses during pre-init, as those are
guaranteed to only ever be used by nouveau for DP aux transactions.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Tested-by: Marc Meledandri <m.meledandri@gmail.com>
Fixes: 342406e4fb ("drm/nouveau/i2c: Disable i2c bus access after ->fini()")
Cc: stable@vger.kernel.org
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2019-07-19 16:26:50 +10:00
..
dispnv04 treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
dispnv50 drm/nouveau/disp/nv50-: fix center/aspect-corrected scaling 2019-07-19 16:26:50 +10:00
include drm/nouveau/core: support versioned firmware loading 2019-06-07 15:13:58 +10:00
nvif treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
nvkm drm/nouveau/i2c: Enable i2c pads & busses during preinit 2019-07-19 16:26:50 +10:00
Kbuild treewide: Add SPDX license identifier - Kbuild 2019-05-30 11:32:33 -07:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
nouveau_abi16.c drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nouveau_abi16.h
nouveau_acpi.c drm/nouveau: fix nouveau_dsm_get_client_id()'s return type 2018-05-18 17:09:46 +10:00
nouveau_acpi.h
nouveau_backlight.c drm/nouveau: register backlight on pascal and newer 2019-01-11 16:25:54 +10:00
nouveau_bios.c
nouveau_bios.h
nouveau_bo.c drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nouveau_bo.h drm/nouveau: Replace ttm_bo_unref with ttm_bo_put 2019-01-28 11:43:11 -05:00
nouveau_chan.c drm/nouveau/svm: initial support for shared virtual memory 2019-02-20 09:00:02 +10:00
nouveau_chan.h drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nouveau_connector.c drm/nouveau/kms: disallow dual-link harder if hdmi connection detected 2019-07-19 16:26:50 +10:00
nouveau_connector.h drm/nouveau/drm/nouveau: Don't forget to label dp_aux devices 2018-12-11 15:37:09 +10:00
nouveau_crtc.h
nouveau_debugfs.c drm/nouveau/debugfs: Fix check of pm_runtime_get_sync failure 2019-03-22 09:57:58 +10:00
nouveau_debugfs.h
nouveau_display.c drm/nouveau: Remove duplicate ACPI_VIDEO_NOTIFY_PROBE definition 2019-05-01 11:08:39 +10:00
nouveau_display.h drm/nouveau/kms/nv04-nv4x: move resume code to dispnv04 init hook 2019-02-20 08:59:59 +10:00
nouveau_dma.c drm/nouveau/fifo/gv100: return work submission token in channel ctor args 2018-12-11 15:37:49 +10:00
nouveau_dma.h drm/nouveau/drm/nv50-: remove allocation of sw class 2018-05-18 15:01:26 +10:00
nouveau_dmem.c Merge branch 'linux-5.1' of git://github.com/skeggsb/linux into drm-fixes 2019-03-22 10:39:35 +10:00
nouveau_dmem.h drm/nouveau/dmem: device memory helpers for SVM 2019-02-20 09:00:02 +10:00
nouveau_dp.c
nouveau_drm.c drm/nouveau/core: allow detected chipset to be overridden 2019-05-14 16:58:06 +10:00
nouveau_drv.h drm/ttm: Define a single DRM_FILE_PAGE_OFFSET constant 2019-03-19 15:03:53 -05:00
nouveau_encoder.h drm/nouveau/kms/nv50: handle SetControlOutputResource from head 2018-05-18 15:01:28 +10:00
nouveau_fbcon.c drm/nouveau: Use drm_fb_helper_fill_info 2019-03-27 10:03:16 +01:00
nouveau_fbcon.h drm/nouveau: Use drm_fb_helper_fill_info 2019-03-27 10:03:16 +01:00
nouveau_fence.c dma-buf: allow reserving more than one shared fence slot 2018-10-25 13:45:07 +02:00
nouveau_fence.h drm/nouveau/kms/nv04-nv4x: move a bunch of pre-nv50 page flip code to dispnv04 2019-02-20 08:59:59 +10:00
nouveau_gem.c drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nouveau_gem.h
nouveau_hwmon.c drm/nouveau/hwmon: potential uninitialized variables 2018-07-16 18:06:29 +10:00
nouveau_hwmon.h
nouveau_ioc32.c
nouveau_ioctl.h
nouveau_led.c
nouveau_led.h
nouveau_mem.c
nouveau_mem.h
nouveau_nvif.c
nouveau_platform.c drm/nouveau: Replace drm_dev_unref with drm_dev_put 2018-07-16 18:06:30 +10:00
nouveau_platform.h
nouveau_prime.c
nouveau_reg.h
nouveau_sgdma.c
nouveau_svm.c drm/nouveau/svm: new ioctl to migrate process memory to GPU memory 2019-02-20 09:00:03 +10:00
nouveau_svm.h drm/nouveau/svm: new ioctl to migrate process memory to GPU memory 2019-02-20 09:00:03 +10:00
nouveau_ttm.c drm/ttm: Quick-test mmap offset in ttm_bo_mmap() 2019-03-19 15:03:53 -05:00
nouveau_ttm.h
nouveau_usif.c
nouveau_usif.h
nouveau_vga.c drm/nouveau: Remove useless poll_disable() call in switcheroo_set_state() 2018-09-07 06:54:26 +10:00
nouveau_vga.h
nouveau_vmm.c drm/nouveau/svm: initial support for shared virtual memory 2019-02-20 09:00:02 +10:00
nouveau_vmm.h drm/nouveau/svm: initial support for shared virtual memory 2019-02-20 09:00:02 +10:00
nv04_fbcon.c
nv04_fence.c
nv10_fence.c
nv10_fence.h
nv17_fence.c
nv50_display.h drm/nouveau/kms/nv50-: split each resource type into their own source files 2018-05-18 15:01:28 +10:00
nv50_fbcon.c
nv50_fence.c
nv84_fence.c drm/nouveau: prepare for enabling svm with existing userspace interfaces 2019-02-20 09:00:01 +10:00
nvc0_fbcon.c
nvc0_fence.c