Up to [cvs.NetBSD.org] / src / sys / external / bsd / drm2 / dist / drm / i915
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Merge linux-drm-v5-6-rc3
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
Sync w/ HEAD.
interupt -> interrupt
Mostly merge changes from HEAD upto 20200411
Sync with head.
Reduce diffs by side-loading some header files like Linux. From riastradh
Reduce some more cosmetic diffs.
Undo the `enum pipe' -> `enum i915_pipe' rename.
Use a header file hack to cope with Linux/NetBSD namespace clashes. Currently serves for: ALIGN mutex_init mutex_destroy
Pull up following revision(s) (requested by msaitoh in ticket #677): sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v2_2.c: revision 1.2 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.18 sys/external/bsd/drm2/dist/drm/radeon/nid.h: revision 1.3 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.19 sys/external/bsd/drm2/dist/drm/radeon/rv770d.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/cikd.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v4_2.c: revision 1.2 sys/external/bsd/drm2/dist/include/drm/drm_fixed.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/sumod.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_reg.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_mode.h: revision 1.5 sys/external/bsd/drm2/dist/drm/radeon/r600d.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/r600d.h: revision 1.4 sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c: revision 1.2 sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd_v1_0.c: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_r600.c: revision 1.2 sys/external/bsd/drm2/dist/drm/radeon/evergreend.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/evergreend.h: revision 1.4 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.10 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.8 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.11 sys/external/bsd/drm2/dist/drm/i915/i915_reg.h: revision 1.13 sys/external/bsd/drm2/dist/drm/radeon/rv730d.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_rv770_smc.c: revision 1.2 sys/external/bsd/drm2/dist/drm/radeon/sid.h: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_si_smc.c: revision 1.2 sys/external/bsd/drm2/dist/drm/radeon/sid.h: revision 1.4 Use unsigned to avoid undefined behavior. Found by kUBSan.
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: ------------------- From 6d0cfddc7afc715835f0e17827106f832b14dd2a Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Thu, 12 Jul 2018 19:53:10 +0100 Subject: [PATCH] drm/i915/gtt: Add read only pages to gen8_pte_encode We can set a bit inside the ppGTT PTE to indicate a page is read-only; writes from the GPU will be discarded. We can use this to protect pages and in particular support read-only userptr mappings (necessary for importing PROT_READ vma). ------------------- From 774b68aa2105c70b40c3b1777feb7ab500d716dd Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Mon, 6 Aug 2018 14:10:48 -0700 Subject: [PATCH] drm/i915/gtt: Read-only pages for insert_entries on bdw+ Hook up the flags to allow read-only ppGTT mappings for gen8+ v2: Include a selftest to check that writes to a readonly PTE are dropped v3: Don't duplicate cpu_check() as we can just reuse it, and even worse don't wholesale copy the theory-of-operation comment from igt_ctx_exec without changing it to explain the intention behind the new test! v4: Joonas really likes magic mystery values ------------------- From 3fd1c2e65c60c1c513155e1d1d74138b141aa8a3 Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris%chris-wilson.co.uk@localhost> Date: Thu, 12 Jul 2018 19:53:12 +0100 Subject: [PATCH] drm/i915/gtt: Disable read-only support under GVT GVT is not propagating the PTE bits, and is always setting the read-write bit, thus breaking read-only support. ------------------- From e5e3c0154c19f2d8213e0af88b7a10d9de7fbafd Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Fri, 20 Apr 2018 14:26:01 -0700 Subject: [PATCH] drm/i915: Rename gen7 cmdparser tables We're about to introduce some new tables for later gens, and the current naming for the gen7 tables will no longer make sense. v2: rebase ------------------- From 3122671a5df3ee13f5cf22b7bdacf422b7b4319a Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Fri, 8 Jun 2018 08:53:46 -0700 Subject: [PATCH] drm/i915: Disable Secure Batches for gen6+ Retroactively stop reporting support for secure batches through the api for gen6+ so that older binaries trigger the fallback path instead. Older binaries use secure batches pre gen6 to access resources that are not available to normal usermode processes. However, all known userspace explicitly checks for HAS_SECURE_BATCHES before relying on the secure batch feature. Since there are no known binaries relying on this for newer gens we can kill secure batches from gen6, via I915_PARAM_HAS_SECURE_BATCHES. v2: rebase (Mika) v3: rebase (Mika) ------------------- From 544fd7d9d4cfe32357beab2f1dc543637d42e69f Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Fri, 8 Jun 2018 10:05:26 -0700 Subject: [PATCH] drm/i915: Remove Master tables from cmdparser The previous patch has killed support for secure batches on gen6+, and hence the cmdparsers master tables are now dead code. Remove them. ------------------- From 17e89f38212d8b3cba470efca91b997ac03c592c Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Wed, 1 Aug 2018 09:33:59 -0700 Subject: [PATCH] drm/i915: Add support for mandatory cmdparsing The existing cmdparser for gen7 can be bypassed by specifying batch_len=0 in the execbuf call. This is safe because bypassing simply reduces the cmd-set available. In a later patch we will introduce cmdparsing for gen9, as a security measure, which must be strictly enforced since without it we are vulnerable to DoS attacks. Introduce the concept of 'required' cmd parsing that cannot be bypassed by submitting zero-length bb's. v2: rebase (Mika) v2: rebase (Mika) v3: fix conflict on engine flags (Mika) ------------------- From 77524398bccea3592a25cbe92a9a54fa555013af Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Tue, 22 May 2018 13:59:06 -0700 Subject: [PATCH] drm/i915: Support ro ppgtt mapped cmdparser shadow buffers For Gen7, the original cmdparser motive was to permit limited use of register read/write instructions in unprivileged BB's. This worked by copying the user supplied bb to a kmd owned bb, and running it in secure mode, from the ggtt, only if the scanner finds no unsafe commands or registers. For Gen8+ we can't use this same technique because running bb's from the ggtt also disables access to ppgtt space. But we also do not actually require 'secure' execution since we are only trying to reduce the available command/register set. Instead we will copy the user buffer to a kmd owned read-only bb in ppgtt, and run in the usual non-secure mode. Note that ro pages are only supported by ppgtt (not ggtt), but luckily that's exactly what we need. Add the required paths to map the shadow buffer to ppgtt ro for Gen8+ v2: IS_GEN7/IS_GEN (Mika) v3: rebase v4: rebase v5: rebase ------------------- From 2ac501479a1325d00aca5012887ebfece8358032 Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Wed, 1 Aug 2018 09:45:50 -0700 Subject: [PATCH] drm/i915: Allow parsing of unsized batches In "drm/i915: Add support for mandatory cmdparsing" we introduced the concept of mandatory parsing. This allows the cmdparser to be invoked even when user passes batch_len=0 to the execbuf ioctl's. However, the cmdparser needs to know the extents of the buffer being scanned. Refactor the code to ensure the cmdparser uses the actual object size, instead of the incoming length, if user passes 0. ------------------- From 57c2c8f58ca07e8045f020e4e2548ac3bc3a5aab Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Mon, 23 Apr 2018 11:12:15 -0700 Subject: [PATCH] drm/i915: Add gen9 BCS cmdparsing For gen9 we enable cmdparsing on the BCS ring, specifically to catch inadvertent accesses to sensitive registers Unlike gen7/hsw, we use the parser only to block certain registers. We can rely on h/w to block restricted commands, so the command tables only provide enough info to allow the parser to delineate each command, and identify commands that access registers. Note: This patch deliberately ignores checkpatch issues in favour of matching the style of the surrounding code. We'll correct the entire file in one go in a later patch. v3: rebase (Mika) v4: Add RING_TIMESTAMP registers to whitelist (Jon) ------------------- From d88d2d3fc6076760e903e78135f5bef028e6e813 Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Fri, 21 Sep 2018 13:18:09 -0700 Subject: [PATCH] drm/i915/cmdparser: Add support for backward jumps To keep things manageable, the pre-gen9 cmdparser does not attempt to track any form of nested BB_START's. This did not prevent usermode from using nested starts, or even chained batches because the cmdparser is not strictly enforced pre gen9. Instead, the existence of a nested BB_START would cause the batch to be emitted in insecure mode, and any privileged capabilities would not be available. For Gen9, the cmdparser becomes mandatory (for BCS at least), and so not providing any form of nested BB_START support becomes overly restrictive. Any such batch will simply not run. We make heavy use of backward jumps in igt, and it is much easier to add support for this restricted subset of nested jumps, than to rewrite the whole of our test suite to avoid them. Add the required logic to support limited backward jumps, to instructions that have already been validated by the parser. Note that it's not sufficient to simply approve any BB_START that jumps backwards in the buffer because this would allow an attacker to embed a rogue instruction sequence within the operand words of a harmless instruction (say LRI) and jump to that. We introduce a bit array to track every instr offset successfully validated, and test the target of BB_START against this. If the target offset hits, it is re-written to the same offset in the shadow buffer and the BB_START cmd is allowed. Note: This patch deliberately ignores checkpatch issues in the cmdtables, in order to match the style of the surrounding code. We'll correct the entire file in one go in a later patch. v2: set dispatch secure late (Mika) v3: rebase (Mika) v4: Clear whitelist on each parse Minor review updates (Chris) v5: Correct backward jump batching v6: fix compilation error due to struct eb shuffle (Mika) ------------------- From 362917ebcfacbd9c2b5172d5a5fe8cbef3ab838f Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield%intel.com@localhost> Date: Thu, 20 Sep 2018 09:45:10 -0700 Subject: [PATCH] drm/i915/cmdparser: Ignore Length operands during command matching Some of the gen instruction macros (e.g. MI_DISPLAY_FLIP) have the length directly encoded in them. Since these are used directly in the tables, the Length becomes part of the comparison used for matching during parsing. Thus, if the cmd being parsed has a different length to that in the table, it is not matched and the cmd is accepted via the default variable length path. Fix by masking out everything except the Opcode in the cmd tables ------------------- From 1433b8d41b1aa346e100b839c19fc033871ac5a6 Mon Sep 17 00:00:00 2001 From: Uma Shankar <uma.shankar%intel.com@localhost> Date: Tue, 7 Aug 2018 21:15:35 +0530 Subject: [PATCH] drm/i915: Lower RM timeout to avoid DSI hard hangs In BXT/APL, device 2 MMIO reads from MIPI controller requires its PLL to be turned ON. When MIPI PLL is turned off (MIPI Display is not active or connected), and someone (host or GT engine) tries to read MIPI registers, it causes hard hang. This is a hardware restriction or limitation. Driver by itself doesn't read MIPI registers when MIPI display is off. But any userspace application can submit unprivileged batch buffer for execution. In that batch buffer there can be mmio reads. And these reads are allowed even for unprivileged applications. If these register reads are for MIPI DSI controller and MIPI display is not active during that time, then the MMIO read operation causes system hard hang and only way to recover is hard reboot. A genuine process/application won't submit batch buffer like this and doesn't cause any issue. But on a compromised system, a malign userspace process/app can generate such batch buffer and can trigger system hard hang (denial of service attack). The fix is to lower the internal MMIO timeout value to an optimum value of 950us as recommended by hardware team. If the timeout is beyond 1ms (which will hit for any value we choose if MMIO READ on a DSI specific register is performed without PLL ON), it causes the system hang. But if the timeout value is lower than it will be below the threshold (even if timeout happens) and system will not get into a hung state. This will avoid a system hang without losing any programming or GT interrupts, taking the worst case of lowest CDCLK frequency and early DC5 abort into account. ------------------- From 284d38667f7ed7171fd8f168c42490f9087c824c Mon Sep 17 00:00:00 2001 From: Imre Deak <imre.deak%intel.com@localhost> Date: Mon, 9 Jul 2018 18:24:27 +0300 Subject: [PATCH] drm/i915/gen8+: Add RC6 CTX corruption WA In some circumstances the RC6 context can get corrupted. We can detect this and take the required action, that is disable RC6 and runtime PM. The HW recovers from the corrupted state after a system suspend/resume cycle, so detect the recovery and re-enable RC6 and runtime PM. v2: rebase (Mika) v3: - Move intel_suspend_gt_powersave() to the end of the GEM suspend sequence. - Add commit message. v4: - Rebased on intel_uncore_forcewake_put(i915->uncore, ...) API change. v5: rebased on gem/gt split (Mika) ------------------- From 6dd52bae8a01af77236b88917e84e84dbcfe06db Mon Sep 17 00:00:00 2001 From: Ben Hutchings <ben%decadent.org.uk@localhost> Date: Mon, 11 Nov 2019 08:13:24 -0800 Subject: [PATCH] drm/i915/cmdparser: Fix jump whitelist clearing When a jump_whitelist bitmap is reused, it needs to be cleared. Currently this is done with memset() and the size calculation assumes bitmaps are made of 32-bit words, not longs. So on 64-bit architectures, only the first half of the bitmap is cleared. If some whitelist bits are carried over between successive batches submitted on the same context, this will presumably allow embedding the rogue instructions that we're trying to reject. Use bitmap_zero() instead, which gets the calculation right. Use the original linux function rather than my wrong translation. - ...Include the header to have it. Thanks Riastradh!
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: ------------------- From 6d0cfddc7afc715835f0e17827106f832b14dd2a Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Thu, 12 Jul 2018 19:53:10 +0100 Subject: [PATCH] drm/i915/gtt: Add read only pages to gen8_pte_encode We can set a bit inside the ppGTT PTE to indicate a page is read-only; writes from the GPU will be discarded. We can use this to protect pages and in particular support read-only userptr mappings (necessary for importing PROT_READ vma). ------------------- From 774b68aa2105c70b40c3b1777feb7ab500d716dd Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Mon, 6 Aug 2018 14:10:48 -0700 Subject: [PATCH] drm/i915/gtt: Read-only pages for insert_entries on bdw+ Hook up the flags to allow read-only ppGTT mappings for gen8+ v2: Include a selftest to check that writes to a readonly PTE are dropped v3: Don't duplicate cpu_check() as we can just reuse it, and even worse don't wholesale copy the theory-of-operation comment from igt_ctx_exec without changing it to explain the intention behind the new test! v4: Joonas really likes magic mystery values ------------------- From 3fd1c2e65c60c1c513155e1d1d74138b141aa8a3 Mon Sep 17 00:00:00 2001 From: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu, 12 Jul 2018 19:53:12 +0100 Subject: [PATCH] drm/i915/gtt: Disable read-only support under GVT GVT is not propagating the PTE bits, and is always setting the read-write bit, thus breaking read-only support. ------------------- From e5e3c0154c19f2d8213e0af88b7a10d9de7fbafd Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Fri, 20 Apr 2018 14:26:01 -0700 Subject: [PATCH] drm/i915: Rename gen7 cmdparser tables We're about to introduce some new tables for later gens, and the current naming for the gen7 tables will no longer make sense. v2: rebase ------------------- From 3122671a5df3ee13f5cf22b7bdacf422b7b4319a Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Fri, 8 Jun 2018 08:53:46 -0700 Subject: [PATCH] drm/i915: Disable Secure Batches for gen6+ Retroactively stop reporting support for secure batches through the api for gen6+ so that older binaries trigger the fallback path instead. Older binaries use secure batches pre gen6 to access resources that are not available to normal usermode processes. However, all known userspace explicitly checks for HAS_SECURE_BATCHES before relying on the secure batch feature. Since there are no known binaries relying on this for newer gens we can kill secure batches from gen6, via I915_PARAM_HAS_SECURE_BATCHES. v2: rebase (Mika) v3: rebase (Mika) ------------------- From 544fd7d9d4cfe32357beab2f1dc543637d42e69f Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Fri, 8 Jun 2018 10:05:26 -0700 Subject: [PATCH] drm/i915: Remove Master tables from cmdparser The previous patch has killed support for secure batches on gen6+, and hence the cmdparsers master tables are now dead code. Remove them. ------------------- From 17e89f38212d8b3cba470efca91b997ac03c592c Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Wed, 1 Aug 2018 09:33:59 -0700 Subject: [PATCH] drm/i915: Add support for mandatory cmdparsing The existing cmdparser for gen7 can be bypassed by specifying batch_len=0 in the execbuf call. This is safe because bypassing simply reduces the cmd-set available. In a later patch we will introduce cmdparsing for gen9, as a security measure, which must be strictly enforced since without it we are vulnerable to DoS attacks. Introduce the concept of 'required' cmd parsing that cannot be bypassed by submitting zero-length bb's. v2: rebase (Mika) v2: rebase (Mika) v3: fix conflict on engine flags (Mika) ------------------- From 77524398bccea3592a25cbe92a9a54fa555013af Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Tue, 22 May 2018 13:59:06 -0700 Subject: [PATCH] drm/i915: Support ro ppgtt mapped cmdparser shadow buffers For Gen7, the original cmdparser motive was to permit limited use of register read/write instructions in unprivileged BB's. This worked by copying the user supplied bb to a kmd owned bb, and running it in secure mode, from the ggtt, only if the scanner finds no unsafe commands or registers. For Gen8+ we can't use this same technique because running bb's from the ggtt also disables access to ppgtt space. But we also do not actually require 'secure' execution since we are only trying to reduce the available command/register set. Instead we will copy the user buffer to a kmd owned read-only bb in ppgtt, and run in the usual non-secure mode. Note that ro pages are only supported by ppgtt (not ggtt), but luckily that's exactly what we need. Add the required paths to map the shadow buffer to ppgtt ro for Gen8+ v2: IS_GEN7/IS_GEN (Mika) v3: rebase v4: rebase v5: rebase ------------------- From 2ac501479a1325d00aca5012887ebfece8358032 Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Wed, 1 Aug 2018 09:45:50 -0700 Subject: [PATCH] drm/i915: Allow parsing of unsized batches In "drm/i915: Add support for mandatory cmdparsing" we introduced the concept of mandatory parsing. This allows the cmdparser to be invoked even when user passes batch_len=0 to the execbuf ioctl's. However, the cmdparser needs to know the extents of the buffer being scanned. Refactor the code to ensure the cmdparser uses the actual object size, instead of the incoming length, if user passes 0. ------------------- From 57c2c8f58ca07e8045f020e4e2548ac3bc3a5aab Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Mon, 23 Apr 2018 11:12:15 -0700 Subject: [PATCH] drm/i915: Add gen9 BCS cmdparsing For gen9 we enable cmdparsing on the BCS ring, specifically to catch inadvertent accesses to sensitive registers Unlike gen7/hsw, we use the parser only to block certain registers. We can rely on h/w to block restricted commands, so the command tables only provide enough info to allow the parser to delineate each command, and identify commands that access registers. Note: This patch deliberately ignores checkpatch issues in favour of matching the style of the surrounding code. We'll correct the entire file in one go in a later patch. v3: rebase (Mika) v4: Add RING_TIMESTAMP registers to whitelist (Jon) ------------------- From d88d2d3fc6076760e903e78135f5bef028e6e813 Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Fri, 21 Sep 2018 13:18:09 -0700 Subject: [PATCH] drm/i915/cmdparser: Add support for backward jumps To keep things manageable, the pre-gen9 cmdparser does not attempt to track any form of nested BB_START's. This did not prevent usermode from using nested starts, or even chained batches because the cmdparser is not strictly enforced pre gen9. Instead, the existence of a nested BB_START would cause the batch to be emitted in insecure mode, and any privileged capabilities would not be available. For Gen9, the cmdparser becomes mandatory (for BCS at least), and so not providing any form of nested BB_START support becomes overly restrictive. Any such batch will simply not run. We make heavy use of backward jumps in igt, and it is much easier to add support for this restricted subset of nested jumps, than to rewrite the whole of our test suite to avoid them. Add the required logic to support limited backward jumps, to instructions that have already been validated by the parser. Note that it's not sufficient to simply approve any BB_START that jumps backwards in the buffer because this would allow an attacker to embed a rogue instruction sequence within the operand words of a harmless instruction (say LRI) and jump to that. We introduce a bit array to track every instr offset successfully validated, and test the target of BB_START against this. If the target offset hits, it is re-written to the same offset in the shadow buffer and the BB_START cmd is allowed. Note: This patch deliberately ignores checkpatch issues in the cmdtables, in order to match the style of the surrounding code. We'll correct the entire file in one go in a later patch. v2: set dispatch secure late (Mika) v3: rebase (Mika) v4: Clear whitelist on each parse Minor review updates (Chris) v5: Correct backward jump batching v6: fix compilation error due to struct eb shuffle (Mika) ------------------- From 362917ebcfacbd9c2b5172d5a5fe8cbef3ab838f Mon Sep 17 00:00:00 2001 From: Jon Bloomfield <jon.bloomfield@intel.com> Date: Thu, 20 Sep 2018 09:45:10 -0700 Subject: [PATCH] drm/i915/cmdparser: Ignore Length operands during command matching Some of the gen instruction macros (e.g. MI_DISPLAY_FLIP) have the length directly encoded in them. Since these are used directly in the tables, the Length becomes part of the comparison used for matching during parsing. Thus, if the cmd being parsed has a different length to that in the table, it is not matched and the cmd is accepted via the default variable length path. Fix by masking out everything except the Opcode in the cmd tables ------------------- From 1433b8d41b1aa346e100b839c19fc033871ac5a6 Mon Sep 17 00:00:00 2001 From: Uma Shankar <uma.shankar@intel.com> Date: Tue, 7 Aug 2018 21:15:35 +0530 Subject: [PATCH] drm/i915: Lower RM timeout to avoid DSI hard hangs In BXT/APL, device 2 MMIO reads from MIPI controller requires its PLL to be turned ON. When MIPI PLL is turned off (MIPI Display is not active or connected), and someone (host or GT engine) tries to read MIPI registers, it causes hard hang. This is a hardware restriction or limitation. Driver by itself doesn't read MIPI registers when MIPI display is off. But any userspace application can submit unprivileged batch buffer for execution. In that batch buffer there can be mmio reads. And these reads are allowed even for unprivileged applications. If these register reads are for MIPI DSI controller and MIPI display is not active during that time, then the MMIO read operation causes system hard hang and only way to recover is hard reboot. A genuine process/application won't submit batch buffer like this and doesn't cause any issue. But on a compromised system, a malign userspace process/app can generate such batch buffer and can trigger system hard hang (denial of service attack). The fix is to lower the internal MMIO timeout value to an optimum value of 950us as recommended by hardware team. If the timeout is beyond 1ms (which will hit for any value we choose if MMIO READ on a DSI specific register is performed without PLL ON), it causes the system hang. But if the timeout value is lower than it will be below the threshold (even if timeout happens) and system will not get into a hung state. This will avoid a system hang without losing any programming or GT interrupts, taking the worst case of lowest CDCLK frequency and early DC5 abort into account. ------------------- From 284d38667f7ed7171fd8f168c42490f9087c824c Mon Sep 17 00:00:00 2001 From: Imre Deak <imre.deak@intel.com> Date: Mon, 9 Jul 2018 18:24:27 +0300 Subject: [PATCH] drm/i915/gen8+: Add RC6 CTX corruption WA In some circumstances the RC6 context can get corrupted. We can detect this and take the required action, that is disable RC6 and runtime PM. The HW recovers from the corrupted state after a system suspend/resume cycle, so detect the recovery and re-enable RC6 and runtime PM. v2: rebase (Mika) v3: - Move intel_suspend_gt_powersave() to the end of the GEM suspend sequence. - Add commit message. v4: - Rebased on intel_uncore_forcewake_put(i915->uncore, ...) API change. v5: rebased on gem/gt split (Mika) ------------------- From 6dd52bae8a01af77236b88917e84e84dbcfe06db Mon Sep 17 00:00:00 2001 From: Ben Hutchings <ben@decadent.org.uk> Date: Mon, 11 Nov 2019 08:13:24 -0800 Subject: [PATCH] drm/i915/cmdparser: Fix jump whitelist clearing When a jump_whitelist bitmap is reused, it needs to be cleared. Currently this is done with memset() and the size calculation assumes bitmaps are made of 32-bit words, not longs. So on 64-bit architectures, only the first half of the bitmap is cleared. If some whitelist bits are carried over between successive batches submitted on the same context, this will presumably allow embedding the rogue instructions that we're trying to reject. Use bitmap_zero() instead, which gets the calculation right.
Use unsigned to avoid undefined behavior. Found by kUBSan.
Avoid undefined behavior. Found by kUBSan.
Use unsigned. Found by KUBSan.
Sync with HEAD
Ssync with HEAD
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.
Sync with HEAD Resolve a couple of conflicts (result of the uimin/uimax changes)
Use dtrace probes to implement i915_trace.h.
Mark unused.
Fix definition and initialization of mchdev_lock.
enum pipe -> enum i915_pipe
Forgot to nix conflicts after moving change to intel_runtime_pm.c.
merge linux-drm-v4-4-143
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.
update from HEAD
Pull up following revision(s) (requested by riastradh in ticket #1156): sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.9 Cast uint8_t to uint32_t before shifting left by 24. Otherwise this is undefined behaviour unless int is 32-bit and the uint8_t value happens to be <=127.
Sync with HEAD
Cast uint8_t to uint32_t before shifting left by 24. Otherwise this is undefined behaviour unless int is 32-bit and the uint8_t value happens to be <=127.
Pull up following revision(s) (requested by riastradh in ticket #1080): sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: revision 1.14 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.8 sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c: revision 1.7 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: revision 1.7 sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/device.h: revision 1.5 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_base.c: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c: revision 1.5 sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c: revision 1.3 sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.c: revision 1.3 sys/external/bsd/drm2/include/linux/pci.h: revision 1.21 sys/external/bsd/drm2/include/linux/platform_device.h: revision 1.7 sys/external/bsd/drm2/nouveau/nouveau_pci.c: revision 1.5 Use nv_device_base(dev) like other callers, not dev->pdev->dev. First step in fixing the struct device nonsense. This won't actually fix anything yet until we also fix nv_device_base. -- dev->dev, not &dev->pdev->dev. Latter is a charlatan, soon to meet judgment for its sins. -- dev->dev, not &dev->pdev->dev. Latter is a mistake that is all my fault. Oops. -- Eliminate Linux struct pci_dev::dev, struct platform_device::dev.
Sync with HEAD (as of 26th Dec)
dev->dev, not &dev->pdev->dev. Latter is a charlatan, soon to meet judgment for its sins.
Sync with HEAD
Pull up following revision(s) (requested by abs in ticket #892): sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.7 Avoid NULL dev_priv->vlv_pctx-> deref in a WARN check on Lenovo B50-30, add an additional check for the NULL dev_priv->vlv_pctx. System now boots (though does not recognise any of the USB(3) ports)
Avoid NULL dev_priv->vlv_pctx-> deref in a WARN check on Lenovo B50-30, add an additional check for the NULL dev_priv->vlv_pctx. System now boots (though does not recognise any of the USB(3) ports) pullup#7
Sync with HEAD
Pull up following revision(s) (requested by mrg in ticket #573): sys/external/bsd/common/include/linux/kernel.h: 1.5, 1.6 sys/external/bsd/drm2/dist/drm/drm_ioctl.c: 1.4 sys/external/bsd/drm2/dist/drm/drm_irq.c: 1.6-1.8 sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: 1.13-1.15 sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: 1.23-1.27 sys/external/bsd/drm2/dist/drm/i915/i915_gem_execbuffer.c: 1.5 sys/external/bsd/drm2/dist/drm/i915/intel_display.c: 1.14, 1.15 sys/external/bsd/drm2/dist/drm/i915/intel_dp.c: 1.10 sys/external/bsd/drm2/dist/drm/i915/intel_drv.h: 1.8 sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: 1.8-1.13 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: 1.6 sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c: 1.5, 1.6 sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c: 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/device.h: 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/mc.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/pwr.h: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/os.h: 1.4, 1.5 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_base.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_pll.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/clock/nouveau_subdev_clock_base.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/clock/nouveau_subdev_clock_nv50.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit/fbmem.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit/nouveau_subdev_devinit_nv04.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nv50.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nvc0.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c: 1.2, 1.3 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mxm/nouveau_subdev_mxm_nv50.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/pwr/nouveau_subdev_pwr_base.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_ic.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/timer/nouveau_subdev_timer_nv04.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_base.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv04.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv44.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nv04.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.h: 1.3 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: 1.4, 1.5 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c: 1.3 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv84_fence.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c: 1.3 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_vga.h: 1.2 sys/external/bsd/drm2/dist/drm/radeon/radeon_fence.c: 1.6-1.8 sys/external/bsd/drm2/dist/drm/radeon/radeon_pm.c: 1.3 sys/external/bsd/drm2/dist/drm/radeon/rs400.c: 1.3 sys/external/bsd/drm2/dist/drm/via/via_dmablit.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/via/via_drv.h: 1.3 sys/external/bsd/drm2/dist/drm/via/via_irq.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/via/via_video.c: 1.3, 1.4 sys/external/bsd/drm2/dist/include/drm/drmP.h: 1.10 sys/external/bsd/drm2/dist/include/drm/drm_crtc.h: 1.4 sys/external/bsd/drm2/dist/include/drm/drm_modes.h: 1.3 sys/external/bsd/drm2/dist/uapi/drm/i915_drm.h: 1.2 sys/external/bsd/drm2/drm/drm_cache.c: 1.4-1.6 sys/external/bsd/drm2/drm/drm_drv.c: 1.14 sys/external/bsd/drm2/drm/drm_module.c: 1.10 sys/external/bsd/drm2/drm/drm_sysctl.c: 1.5 sys/external/bsd/drm2/drm/drm_vma_manager.c: 1.2 sys/external/bsd/drm2/drm/drmfb.c: 1.1 sys/external/bsd/drm2/drm/files.drmkms: 1.10, 1.11 sys/external/bsd/drm2/i2c/drm_encoder_slave.c: 1.1 sys/external/bsd/drm2/i915drm/files.i915drmkms: 1.7, 1.10 sys/external/bsd/drm2/i915drm/intelfb.c: 1.11, 1.12 sys/external/bsd/drm2/include/asm/io.h: 1.4 sys/external/bsd/drm2/include/asm/unaligned.h: 1.2, 1.3 sys/external/bsd/drm2/include/drm/drm_encoder_slave.h: 1.1 sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: 1.7-1.11 sys/external/bsd/drm2/include/drm/drmfb.h: 1.1 sys/external/bsd/drm2/include/drm/drmfb_pci.h: 1.1, 1.2 sys/external/bsd/drm2/include/linux/bitops.h: 1.9 sys/external/bsd/drm2/include/linux/i2c.h: 1.7, 1.8 sys/external/bsd/drm2/include/linux/io-mapping.h: 1.5 sys/external/bsd/drm2/include/linux/moduleparam.h: 1.5 sys/external/bsd/drm2/include/linux/pci.h: 1.12-1.15 sys/external/bsd/drm2/include/linux/pm.h: 1.4 sys/external/bsd/drm2/include/linux/reboot.h: 1.2 sys/external/bsd/drm2/include/linux/slab.h: 1.5 sys/external/bsd/drm2/include/linux/string.h: 1.4 sys/external/bsd/drm2/include/linux/vgaarb.h: 1.3 sys/external/bsd/drm2/include/linux/ww_mutex.h: 1.10 sys/external/bsd/drm2/linux/files.drmkms_linux: 1.8 sys/external/bsd/drm2/linux/linux_i2c.c: 1.3 sys/external/bsd/drm2/linux/linux_ww_mutex.c: 1.1 sys/external/bsd/drm2/nouveau/files.nouveau: 1.5-1.8 sys/external/bsd/drm2/nouveau/nouveau_pci.c: 1.1-1.3 sys/external/bsd/drm2/nouveau/nouveau_pci.h: 1.1 sys/external/bsd/drm2/nouveau/nouveau_sysfs.c: 1.1 sys/external/bsd/drm2/nouveau/nouveau_vga.c: 1.1 sys/external/bsd/drm2/nouveau/nouveaufb.c: 1.1 sys/external/bsd/drm2/nouveau/nouveaufb.h: 1.1 sys/external/bsd/drm2/pci/drm_pci.c: 1.10-1.12 sys/external/bsd/drm2/pci/drm_pci_module.c: 1.4 sys/external/bsd/drm2/pci/drmfb_pci.c: 1.1-1.3 sys/external/bsd/drm2/pci/files.drmkms_pci: 1.5 sys/external/bsd/drm2/radeon/radeon_pci.c: 1.5-1.7 sys/modules/drmkms/Makefile: 1.8, 1.9 sys/modules/drmkms_linux/Makefile: 1.6 sys/modules/drmkms_pci/Makefile: 1.5 sync drm2 with HEAD.
Initialize mchdev_lock earlier. Fixes i915drmkms boot on Ironlake. Derived from a patch sent to me by degroote@ longer ago than I care to admit.
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.
Change enum pipe to enum i915_pipe (enum pipe uses too global of a tag and conflicts with struct pipe).
Rebase to HEAD as of a few days ago.
Rebase.
file intel_pm.c was added on branch tls-maxphys on 2014-08-20 00:04:10 +0000
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.
fix merge conflicts
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.
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")
sync with head
file intel_pm.c was added on branch yamt-pagecache on 2014-05-22 11:40:53 +0000
Merge riastradh-drm2 to HEAD.
Fix a bunch of i915 error branches. Some of these fixes are necessary only on NetBSD because we require mutex_destroy, while Linux doesn't.
Adapt intel_pm.c to NetBSD. Drop stubs.
Add missing includes to intel_pm.c.
sync with head
Ifdef out Linux intel_ips kludge in intel_pm.c.
sync with HEAD and actually get the drm2 import
file intel_pm.c was added on branch rmind-smpnet on 2013-08-28 23:59:33 +0000
file intel_pm.c was added on branch riastradh-drm2 on 2013-07-23 21:28:22 +0000
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
Initial revision