Home | History | Annotate | Download | only in i915
History log of /src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c
RevisionDateAuthorComments
 1.48  22-Sep-2022  riastradh i915: Make sure to call i915_drm_prepare too on suspend.
 1.47  21-Dec-2021  tnn i915_drm_resume_early: initialize ret

clang -Wsometimes-uninitialized says uninitialized use
on line 2043 when if statement on line 2037 is false
 1.46  19-Dec-2021  riastradh drm: Switch sense of #if __linux__ conditionals to use __NetBSD__.

Keep it consistent with the rest of drm.
 1.45  19-Dec-2021  riastradh i915: mutex_init/destroy and spin_lock_init/destroy audit
 1.44  19-Dec-2021  riastradh i915: Omit needless ifdef and do call intel_bios_init.
 1.43  19-Dec-2021  riastradh i915: Define i915_gem_uvm_ops.
 1.42  19-Dec-2021  riastradh i915: Omit needless reachover of i915_drm_driver.
 1.41  19-Dec-2021  riastradh i915: Nix drm_dev_alloc, and do drm_pci_attach in i915_driver_probe.

i915 uses a struct drm_device embedded in struct drm_i915_private
now, so we can't allocate it separately.
 1.40  19-Dec-2021  riastradh i915: machete
 1.39  19-Dec-2021  riastradh i915: Fix drm_dev_init argument.

Confusingly the parameter is named `parent' but means the struct
device that corresponds to the struct pci_dev. Use pci_dev_dev here
since it works in both APIs.
 1.38  19-Dec-2021  riastradh pdev is ifdef'd out, so ifdef out the declaration too


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.37  19-Dec-2021  riastradh Move local diff's location to above where it's used


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.36  19-Dec-2021  riastradh Emulate pdev->dev for NetBSD.


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.35  19-Dec-2021  riastradh Exclude call to dma_set_max_seg_size

We probably don't need to replicate this.


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.34  19-Dec-2021  riastradh Provide declarations, we use these from different files.


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.33  19-Dec-2021  riastradh Shuffle ifdefs for build. Remove local diff that doesn't build.


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.32  19-Dec-2021  riastradh Remove local diff


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.31  19-Dec-2021  riastradh restore lost ifdef of vga_switcheroo code


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.30  19-Dec-2021  riastradh Remove duplicate declaration of i915_device_ids

The one that compiles is in i915_pci.c now. No `pciidlist` in this
file!


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.29  19-Dec-2021  riastradh nbsd-namespace.h for the right mutex_init


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.28  19-Dec-2021  riastradh Remove local diff, side effect of backporting kabylake support.


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.27  19-Dec-2021  riastradh drm: Remove local diffs for drm_pci_set_busid.

Instead, move it to its own file that can be safely used without
bringing in a link/run-time dependency on pci.
 1.26  19-Dec-2021  riastradh Empty out drm_os_netbsd.h.
 1.25  19-Dec-2021  riastradh Distribute local changes from i915_dma.c
 1.24  19-Dec-2021  riastradh Restore local intel_acpi changes.
 1.23  19-Dec-2021  riastradh Restore #ifdef CONFIG_PNP tweak lost in merge.
 1.22  19-Dec-2021  riastradh Cleanup ifdef goo that got mangled.

Endifs without matching ifdefs and so on.


Author: Maya Rashish <maya@NetBSD.org>
 1.21  19-Dec-2021  riastradh First pass at i915, far from complete.

HEAVILY MODIFIED IN MERGE - maya
 1.20  18-Dec-2021  riastradh Merge linux-drm-v5-6-rc3
 1.19  14-Feb-2020  maya Reduce diffs by side-loading some header files like Linux.

From riastradh
 1.18  14-Feb-2020  riastradh Stub out console_lock/unlock and drm_fb_helper_set_suspend.

Reduce some more diffs.
 1.17  05-Dec-2019  maya branches: 1.17.2;
Add what appears to be the fixes to CVE-2019-0154, CVE-2019-0155.
This commit requires review, but I'd also like it to be tested by others
while it is being reviewed.

CVE-2019-0155:
It was discovered that the Intel i915 graphics chipsets allowed userspace
to modify page table entries via writes to MMIO from the Blitter Command
Streamer and expose kernel memory information. A local attacker could use
this to expose sensitive information or possibly elevate privileges.

CVE-2019-0154:
It was discovered that the Intel i915 graphics chipsets could cause
a system hang when userspace performed a read from GT memory mapped
input output (MMIO) when the product is in certain low power states.
A local attacker could use this to cause a denial of service.

From upstream commits to linux-4.4.y:
 1.16  13-Sep-2018  mrg branches: 1.16.4;
add support for kabylake and skylake GT4 (untested) GPUs.
largely taken from openbsd and linux 4.13 trees (which
have this code identical), with mimimal porting to netbsd.

i have not installed (and thus tested) the newer referenced
firmware files.

only real local change is to fix IS_BROXTON() macro to check
the things valid in this era of drm. previous match would
attach on KBL, and then a loop would never exit.

tested on kabylake P630. needs mesa 11.x or newer for GL
to work.

ok @riastradh.
 1.15  27-Aug-2018  riastradh Draft support for drm prime.
 1.14  27-Aug-2018  riastradh Call i915_drm_suspend_late too.
 1.13  27-Aug-2018  riastradh Attempt to hook up i915 suspend/resume callbacks.
 1.12  27-Aug-2018  riastradh Disable legacy mmap in i915.
 1.11  27-Aug-2018  riastradh Tweak ifdefs in i915_drv.c.
 1.10  27-Aug-2018  riastradh Disable and enable some i915 pm code.
 1.9  27-Aug-2018  riastradh struct drm_bus abstraction is no more. Cope.

struct drm_driver now has the bus-specific intr establish routine
(called request_irq/free_irq to match Linux's style).
 1.8  27-Aug-2018  riastradh don't provide dev_to_i915 and ifdef out all users (unused)
provide nsecs_to_jiffies64, hopefully msec_to_jiffies * 10^6
provide BUILD_BUG as a no-op
include linux/err.h instead of matching side-loading, too hard to
figure out what gets it.


Author: coypu <coypu@sdf.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.7  27-Aug-2018  riastradh merge linux-drm-v4-4-143
 1.6  26-Jul-2014  riastradh branches: 1.6.4; 1.6.28; 1.6.30;
Let the drm driver decide what part of what object gets mmapped.

Pass the file around too so radeon/ttm can get at it to verify access.

Add drm_gem_or_legacy_mmap_object for drivers to choose the previous
behaviour, like i915.
 1.5  16-Jul-2014  riastradh Get suspend/resume sorta working for i915drm.
 1.4  16-Jul-2014  riastradh Make it build and boot on my test machines.

Screen blanks on boot on the Ivy Bridge system with

DRM error in cpt_serr_int_handler: PCH transcoder A FIFO underrun

But after that everything is OK. Appears to be an upstream problem.
To investigate...

I think there's a cache flushing issue somewhere -- there are little
display artefacts on my T60.
 1.3  16-Jul-2014  riastradh fix merge conflicts
 1.2  18-Mar-2014  riastradh branches: 1.2.2; 1.2.4;
Merge riastradh-drm2 to HEAD.
 1.1  23-Jul-2013  riastradh branches: 1.1.1;
Initial revision
 1.1.1.4  18-Dec-2021  riastradh Import drm from Linux v5.6-rc3 (commit f8788d86ab28f61f7b46eb6be375f8a726783636)

drivers/gpu/drm -> sys/external/bsd/drm2/dist/drm
include/drm -> sys/external/bsd/drm2/dist/include/drm
include/uapi/drm -> sys/external/bsd/drm2/dist/include/uapi/drm

GPL exclusions in dist/drm:

- amd/amdgpu/amdgpu_atpx_handler.c
- arc/
- arm/
- armada/
- aspeed/
- atmel-hlcdc/
- bochs/
- bridge/
- cirrus/
- drm_dp_cec.c
- drm_dp_mst_topology_internal.h
- drm_edid_load.c
- drm_format_helper.c
- drm_gem_cma_helper.c
- drm_gem_framebuffer_helper.c
- drm_gem_shmem_helper.c
- drm_gem_ttm_helper.c
- drm_gem_vram_helper.c
- drm_hdcp.c
- drm_lease.c
- drm_mipi_dbi.c
- drm_simple_kms_helper.c
- drm_sysfs.c
- drm_trace.h
- drm_vram_helper_common.c
- drm_writeback.c
- etnaviv/
- exynos/
- fsl-dcu/
- gma500/
- hisilicon/
- i2c/tda9950.c
- i2c/tda998x_drv.c
- i915/gt/selftest_context.c
- i915/gt/selftest_engine.c
- i915/gt/selftest_engine.h
- i915/gt/selftest_engine_cs.c
- i915/gt/selftest_engine_pm.c
- i915/i915_trace.h
- i915/selftests/i915_live_selftests.h
- i915/selftests/i915_mock_selftests.h
- i915/selftests/i915_perf_selftests.h
- i915/selftests/lib_sw_fence.h
- imx/
- ingenic/
- lima/
- mcde/
- mediatek/
- meson/
- mgag200/
- msm/
- mxsfb/
- omapdrm/
- panel/
- panfrost/
- pl111/
- radeon/radeon_atpx_handler.c
- rcar-du/
- rockchip/
- selftests/drm_cmdline_selftests.h
- selftests/drm_modeset_selftests.h
- selftests/test-drm_cmdline_parser.c
- selftests/test-drm_damage_helper.c
- selftests/test-drm_dp_mst_helper.c
- selftests/test-drm_format.c
- selftests/test-drm_framebuffer.c
- selftests/test-drm_modeset_common.c
- selftests/test-drm_modeset_common.h
- selftests/test-drm_plane_helper.c
- selftests/test-drm_rect.c
- shmobile/
- sti/
- stm/
- sun4i/
- tegra/
- tilcdc/
- tiny/
- tve200/
- udl/
- v3d/
- vc4/
- virtio/virtgpu_trace.h
- virtio/virtgpu_trace_points.c
- vkms/
- vmwgfx/device_include/vmware_pack_begin.h
- vmwgfx/device_include/vmware_pack_end.h
- zte/

Exceptions -- these all appear to be files to which someone added
an SPDX license header automatically by a script that is not aware
of the default MIT licensing under drivers/gpu/drm:

- ast/ast_dp501.c
- ast/ast_dram_tables.h
- lib/drm_random.c
- lib/drm_random.h
- i915/display/intel_acpi.c
- i915/selftests/mock_gem_device.h
- i915/selftests/i915_mock_selftests.h
- i915/selftests/i915_live_selftests.h
- r128/ati_pcigart.h
- selftests/drm_mm_selftests.h
- selftests/test-drm_mm.c
- vmwgfx/device_include/vm_basic_types.h

GPL exclusions in dist/include/drm:

- bridge
- drm_client.h
- drm_fb_cma_helper.h
- drm_format_helper.h
- drm_gem_cma_helper.h
- drm_gem_shmem_helper.h
- drm_gem_ttm_helper.h
- drm_gem_vram_helper.h
- drm_lease.h
- drm_mipi_dbi.h
- drm_mipi_dsi.h
- drm_of.h
- drm_simple_kms_helper.h
- drm_sysfs.h
- drm_writeback.h
- gma_drm.h
- i2c/tda998x.h
- i915_mei_hdcp_interface.h
- intel-gtt.h

Exceptions:
- drm_agpsupport.h - was in original drm; wrong spdx header auto-added

GPL exclusions in dist/include/uapi/drm:

- armada_drm.h
- etnaviv_drm.h
- exynos_drm.h
- lima_drm.h
- omap_drm.h

Exceptions:
- i810_drm.h - was in original drm; spdx header is wrong
 1.1.1.3  27-Aug-2018  riastradh Import drm from Linux v4.4.143 (commit a8ea6276d00555387deaaa5eaeb380cd5c17bdc9).

drivers/gpu/drm -> sys/external/bsd/drm2/dist/drm
include/drm -> sys/external/bsd/drm2/dist/include/drm
include/uapi/drm -> sys/external/bsd/drm2/dist/uapi/drm

GPL sources excluded.
 1.1.1.2  16-Jul-2014  riastradh Import drm from Linux 3.15 (commitid 1860e379875dfe7271c649058aeddffe5afd9d0d).

drivers/gpu/drm -> sys/external/bsd/drm2/dist/drm
include/drm -> sys/external/bsd/drm2/dist/include/drm
include/uapi/drm -> sys/external/bsd/drm2/dist/uapi/drm

GPL sources excluded.
 1.1.1.1  23-Jul-2013  riastradh branches: 1.1.1.1.2; 1.1.1.1.4;
Import drm sources from Linux v3.8-rc6.
(commit id 88b62b915b0b7e25870eb0604ed9a92ba4bfc9f7)

Linux NetBSD
drivers/gpu/drm sys/external/bsd/drm2/dist/drm
include/drm sys/external/bsd/drm2/dist/include/drm
include/uapi/drm sys/external/bsd/drm2/dist/uapi/drm

Files/subtrees excluded because of licence issues, to be either
revisited later (particularly nouveau and radeon, which are mostly
permissively licensed but a number of whose files have no licence
statements), rewritten/ignored, or imported later as kernel modules
under external/gpl2 instead:

include/drm/drm_fb_cma_helper.h
include/drm/drm_gem_cma_helper.h
include/drm/drm_os_linux.h
include/drm/drm_pciids.h
include/drm/drm_sysfs.h
include/drm/drm_usb.h
include/drm/exynos_drm.h
include/drm/gma_drm.h
include/drm/intel-gtt.h
drm/cirrus
drm/drm_edid_load.c
drm/drm_fb_cma_helper.c
drm/drm_gem_cma_helper.c
drm/drm_sysfs.c
drm/drm_trace.h
drm/drm_trace_points.c
drm/drm_usb.c
drm/exynos
drm/gma500
drm/i915/i915_trace.h
drm/i915/i915_trace_points.c
drm/i915/intel_acpi.c
drm/mgag200
drm/nouveau
drm/radeon
drm/shmobile
drm/tegra
drm/udl
uapi/exynos_drm.h
 1.1.1.1.4.3  18-May-2014  rmind sync with head
 1.1.1.1.4.2  28-Aug-2013  rmind sync with head
 1.1.1.1.4.1  23-Jul-2013  rmind file i915_drv.c was added on branch rmind-smpnet on 2013-08-28 23:59:33 +0000
 1.1.1.1.2.14  08-Sep-2013  riastradh Hook up the i915_gem uvm pager ops.
 1.1.1.1.2.13  24-Jul-2013  riastradh Stub out the content, not definition, of intel_console_resume.
 1.1.1.1.2.12  24-Jul-2013  riastradh Ifdef out drm prime stuff from i915_drv.c.
 1.1.1.1.2.11  24-Jul-2013  riastradh Expose the i915 struct drm_driver and PCI id list from i915_drv.c.
 1.1.1.1.2.10  24-Jul-2013  riastradh Ifdef out Linux-specific stuff in i915_drv.c.

PCI driver attachment goop, VM hooks, power management operations,
file operations. We'll do this all in another file for NetBSD.

Ifdef out the now-unused i915_modeset parameter for now, too.
 1.1.1.1.2.9  24-Jul-2013  riastradh Omit more stuff that pmf does for us in i915_drv.c.
 1.1.1.1.2.8  24-Jul-2013  riastradh Omit Linux framebuffer stuff from i915_drv.c.
 1.1.1.1.2.7  24-Jul-2013  riastradh Use pci_dev_dev to get at a pci_dev's device_t in i915_drm_freeze.
 1.1.1.1.2.6  24-Jul-2013  riastradh Omit needless pci_save_state from i915_drm_freeze, courtesy pmf.
 1.1.1.1.2.5  24-Jul-2013  riastradh Need more zeros for struct pci_device_id initializer in i915_drv.c.
 1.1.1.1.2.4  24-Jul-2013  riastradh i915_drv.c needs <linux/moduleparam.h> and <linux/time.h>.
 1.1.1.1.2.3  24-Jul-2013  riastradh Replace i915 private regs from pci_ioremap to drm_ioremap.

Replace read/write{b,l,w} by DRM_READ/WRITE{8,16,32} in i915_drv.c.
 1.1.1.1.2.2  23-Jul-2013  riastradh sync with HEAD and actually get the drm2 import
 1.1.1.1.2.1  23-Jul-2013  riastradh file i915_drv.c was added on branch riastradh-drm2 on 2013-07-23 21:28:22 +0000
 1.2.4.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1  18-Mar-2014  yamt file i915_drv.c was added on branch yamt-pagecache on 2014-05-22 11:40:53 +0000
 1.2.2.1  10-Aug-2014  tls Rebase.
 1.6.30.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.6.30.1  10-Jun-2019  christos Sync with HEAD
 1.6.28.2  30-Sep-2018  pgoyette Ssync with HEAD
 1.6.28.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.6.4.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.4.1  26-Jul-2014  tls file i915_drv.c was added on branch tls-maxphys on 2014-08-20 00:04:09 +0000
 1.16.4.1  12-Dec-2019  martin Pull up following revision(s) (requested by maya in ticket #548):

sys/external/bsd/drm2/dist/drm/i915/intel_display.c: revision 1.28
sys/external/bsd/drm2/dist/drm/i915/i915_drv.h: revision 1.30
sys/external/bsd/common/include/linux/bitops.h: revision 1.9
sys/external/bsd/drm2/dist/drm/i915/intel_drv.h: revision 1.11
sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.h: revision 1.8
sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c: revision 1.16
sys/external/bsd/drm2/dist/drm/i915/i915_gem_execbuffer.c: revision 1.9
sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: revision 1.28
sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c: revision 1.19
sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.20
sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c: revision 1.11
sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h: revision 1.7
sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.14
sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c: revision 1.20
sys/external/bsd/drm2/dist/drm/i915/i915_gem_context.c: revision 1.10
sys/external/bsd/drm2/dist/drm/i915/i915_drv.c: revision 1.17

Add what appears to be the fixes to CVE-2019-0154, CVE-2019-0155.

This commit requires review, but I'd also like it to be tested by others
while it is being reviewed.
CVE-2019-0155:

It was discovered that the Intel i915 graphics chipsets allowed userspace
to modify page table entries via writes to MMIO from the Blitter Command
Streamer and expose kernel memory information. A local attacker could use
this to expose sensitive information or possibly elevate privileges.

CVE-2019-0154:
It was discovered that the Intel i915 graphics chipsets could cause
a system hang when userspace performed a read from GT memory mapped
input output (MMIO) when the product is in certain low power states.
A local attacker could use this to cause a denial of service.
From upstream commits to linux-4.4.y:
 1.17.2.1  29-Feb-2020  ad Sync with head.

RSS XML Feed