Home | History | Annotate | Download | only in i915
History log of /src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c
RevisionDateAuthorComments
 1.28  19-Dec-2021  riastradh i915: Omit more unnecessary local diffs.
 1.27  19-Dec-2021  riastradh Give up on figuring side-loading, we need bitmap_* functions.


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.26  19-Dec-2021  riastradh PRIx64 for u64


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.25  19-Dec-2021  riastradh NetBSD-ify clflush size


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

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

From riastradh
 1.21  14-Feb-2020  riastradh Eliminate -Wpointer-arith patches; use -Wno-pointer-arith instead.
 1.20  05-Dec-2019  maya branches: 1.20.2;
Use the original linux function rather than my wrong translation.

...Include the header to have it.

Thanks Riastradh!
 1.19  05-Dec-2019  maya 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.18  09-Sep-2018  pgoyette branches: 1.18.4;
Add __diagused attribute to some diagnostic routines.

OK riastradh@
 1.17  27-Aug-2018  riastradh Handle uvm object reference counts in uvm_map more carefully.

Acquire a reference unconditionally first; then let uvm_map consume
it on success, and release it ourselves on failure.

As we did before -- acquiring a fresh reference on success -- another
thread might release the reference with a concurrent uvm_unmap before
we could acquire it back, thereby destroying the object.

XXX pullup-7 in part (i915_gem_fault)
XXX pullup-8 in part (i915_gem_fault)
 1.16  27-Aug-2018  riastradh Fix order of arguments to kcopy. @#&!$!*#

Add const qualifiers to src to compiler will detect this.
 1.15  27-Aug-2018  riastradh Use kcopy, not memcpy, in case of failure to page in dst. From chs@.
 1.14  27-Aug-2018  riastradh Forgot again to restore reference consumed by uvm_map.

Add missing errno comment while here.
 1.13  27-Aug-2018  riastradh For reasons beyond me, map does size/offset but unmap does start/end.
 1.12  27-Aug-2018  riastradh Use uvm_map directly and make sure we unmap correct length.
 1.11  27-Aug-2018  riastradh Fix mapping of non-page-aligned stuff in vmap_batch.
 1.10  27-Aug-2018  riastradh uvm_map consumes reference on success, so be sure to acquire another.
 1.9  27-Aug-2018  riastradh Remove wrong comment.
 1.8  27-Aug-2018  riastradh Just use uvm_map on the uvm object instead of futzing with pages.
 1.7  27-Aug-2018  riastradh Rework how we map i915 drm gem objects.

The old way made no sense at all. This way might make sense.
 1.6  27-Aug-2018  riastradh No arithmetic on void *.
 1.5  27-Aug-2018  riastradh merge linux-drm-v4-4-143
 1.4  17-Sep-2014  riastradh branches: 1.4.18; 1.4.20;
Avoid missing field initializers.
 1.3  18-Jul-2014  riastradh branches: 1.3.2; 1.3.4; 1.3.6;
Don't cast ptrdiff_t to unsigned long before formatting it with %td.

Noted by Robert Swindells and Patrick Welche.
 1.2  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.1  16-Jul-2014  riastradh branches: 1.1.1;
Initial revision
 1.1.1.3  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.2  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.1  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.3.6.3  03-Dec-2017  jdolecek update from HEAD
 1.3.6.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.6.1  18-Jul-2014  tls file i915_cmd_parser.c was added on branch tls-maxphys on 2014-08-20 00:04:09 +0000
 1.3.4.1  10-Nov-2014  martin Pull up following revision(s) (requested by snj in ticket #191):
sys/external/bsd/drm2/include/linux/io-mapping.h: revision 1.4
sys/external/bsd/drm2/dist/uapi/drm/drm.h: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_panel.c: revision 1.5
sys/external/bsd/drm2/dist/uapi/drm/drm.h: revision 1.6
sys/external/bsd/drm2/dist/drm/i915/intel_drv.h: revision 1.7
sys/external/bsd/drm2/include/linux/ww_mutex.h: revision 1.7
sys/external/bsd/drm2/dist/drm/i915/intel_dp.c: revision 1.8
sys/external/bsd/drm2/dist/drm/i915/i915_ums.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/i915_drv.h: revision 1.9
sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c: revision 1.4
sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c: revision 1.3
sys/external/bsd/drm2/dist/drm/i915/intel_display.c: revision 1.11
sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_display.c: revision 1.12
sys/external/bsd/drm2/include/asm/processor.h: revision 1.3
sys/external/bsd/drm2/dist/drm/i915/intel_crt.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_tv.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: revision 1.11
sys/external/bsd/drm2/dist/drm/i915/i915_irq.c: revision 1.10
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.16
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.17
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revision 1.6
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revision 1.7
sys/external/bsd/drm2/drm/drm_module.c: revision 1.8
sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c: revision 1.2
sys/external/bsd/drm2/i915drm/intelfb.c: revision 1.10
sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c: revision 1.6
sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c: revision 1.6
Code cleanup and minor bugfixes for drm2.
 1.3.2.2  10-Aug-2014  tls Rebase.
 1.3.2.1  18-Jul-2014  tls file i915_cmd_parser.c was added on branch tls-earlyentropy on 2014-08-10 06:55:29 +0000
 1.4.20.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.4.20.1  10-Jun-2019  christos Sync with HEAD
 1.4.18.2  30-Sep-2018  pgoyette Ssync with HEAD
 1.4.18.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.18.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.20.2.1  29-Feb-2020  ad Sync with head.

RSS XML Feed