History log of /openbsd-current/sys/dev/pci/drm/i915/i915_irq.c
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.42 16-Jan-2024 jsg

update drm to linux 6.6.12

Thanks to the OpenBSD Foundation for sponsoring this work.


Revision tags: OPENBSD_7_3_BASE OPENBSD_7_4_BASE
# 1.41 13-Jan-2023 jsg

drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence

From Jani Nikula
c7229577d93d53870fd77e961143305aeec97a7b in linux-6.1.y/6.1.5
963bbdb32b47cfa67a449e715e1dcc525fbd01fc in mainline linux


# 1.40 01-Jan-2023 jsg

update drm to linux 6.1.2

new hardware support includes

AMD
Raphael, Ryzen 7000 desktop, gfx1036/GC 10.3.6
Mendocino, Ryzen & Athlon 7020 Series mobile APU, gfx1037/GC 10.3.7
Navi 31, gfx1100 dGPU, GC 11.0.0, Radeon RX 7900 XT/XTX
gfx1101 dGPU
gfx1102 dGPU
gfx1103 APU

Thanks to the OpenBSD Foundation for sponsoring this work.


Revision tags: OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.39 14-Jan-2022 jsg

update drm to linux 5.15.14

new hardware support includes

Intel
ehl/Elkhart Lake (embedded)
jsl/Jasper Lake (atom)
rkl/Rocket Lake (desktop)

AMD
van gogh APU (gfx1033)
yellow carp / rembrandt APU (gfx1035?)
Ryzen 6000 APU
navy flounder / navi 22 (gfx1031)
RX 6700, RX 6700 XT, RX 6700M, RX 6800M, RX 6850M XT
dimgrey cavefish / navi 23 (gfx1032)
Pro W6600, Pro W6600M, RX 6600, RX 6600 XT, RX 6600M,
RX 6600S, RX 6650M, RX 6650M XT, RX 6700S, RX 6800S
beige goby / navi 24 (gfx1034)
RX 6500 XT, RX 6400, RX 6500M, RX 6300M

Thanks to the OpenBSD Foundation for sponsoring this work
niklas@ for helping with ttm and amdgpu and patrick@ for adapting
rockchip drm.


Revision tags: OPENBSD_7_0_BASE
# 1.38 07-Jul-2021 jsg

update drm to linux 5.10.47

hardware support changes include
inteldrm: better support for tiger lake
amdgpu: support for navi12, navi21 "sienna_cichlid", arcturus
amdgpu: support for cezanne "green sardine" ryzen 5000 apu

Thanks to the OpenBSD Foundation for sponsoring this work,
patrick@ for helping adapt rockchip drm, kettenis@ and mpi@
for uvm discussions and various testers.


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.37 02-Jul-2020 jsg

use intr_barrier(9) for synchronize_irq() and synchronize_hardirq()


# 1.36 26-Jun-2020 jsg

drm/i915/icl+: Fix hotplug interrupt disabling after storm detection

From Imre Deak
2e61678ba2383c0d10a7c862721150a37ffe4eee in linux 5.7.y/5.7.6
a3005c2edf7e8c3478880db1ca84028a2b6819bb in mainline linux


# 1.35 08-Jun-2020 jsg

update drm to linux 5.7

adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.


Revision tags: OPENBSD_6_7_BASE
# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.41 13-Jan-2023 jsg

drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence

From Jani Nikula
c7229577d93d53870fd77e961143305aeec97a7b in linux-6.1.y/6.1.5
963bbdb32b47cfa67a449e715e1dcc525fbd01fc in mainline linux


# 1.40 01-Jan-2023 jsg

update drm to linux 6.1.2

new hardware support includes

AMD
Raphael, Ryzen 7000 desktop, gfx1036/GC 10.3.6
Mendocino, Ryzen & Athlon 7020 Series mobile APU, gfx1037/GC 10.3.7
Navi 31, gfx1100 dGPU, GC 11.0.0, Radeon RX 7900 XT/XTX
gfx1101 dGPU
gfx1102 dGPU
gfx1103 APU

Thanks to the OpenBSD Foundation for sponsoring this work.


Revision tags: OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.39 14-Jan-2022 jsg

update drm to linux 5.15.14

new hardware support includes

Intel
ehl/Elkhart Lake (embedded)
jsl/Jasper Lake (atom)
rkl/Rocket Lake (desktop)

AMD
van gogh APU (gfx1033)
yellow carp / rembrandt APU (gfx1035?)
Ryzen 6000 APU
navy flounder / navi 22 (gfx1031)
RX 6700, RX 6700 XT, RX 6700M, RX 6800M, RX 6850M XT
dimgrey cavefish / navi 23 (gfx1032)
Pro W6600, Pro W6600M, RX 6600, RX 6600 XT, RX 6600M,
RX 6600S, RX 6650M, RX 6650M XT, RX 6700S, RX 6800S
beige goby / navi 24 (gfx1034)
RX 6500 XT, RX 6400, RX 6500M, RX 6300M

Thanks to the OpenBSD Foundation for sponsoring this work
niklas@ for helping with ttm and amdgpu and patrick@ for adapting
rockchip drm.


Revision tags: OPENBSD_7_0_BASE
# 1.38 07-Jul-2021 jsg

update drm to linux 5.10.47

hardware support changes include
inteldrm: better support for tiger lake
amdgpu: support for navi12, navi21 "sienna_cichlid", arcturus
amdgpu: support for cezanne "green sardine" ryzen 5000 apu

Thanks to the OpenBSD Foundation for sponsoring this work,
patrick@ for helping adapt rockchip drm, kettenis@ and mpi@
for uvm discussions and various testers.


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.37 02-Jul-2020 jsg

use intr_barrier(9) for synchronize_irq() and synchronize_hardirq()


# 1.36 26-Jun-2020 jsg

drm/i915/icl+: Fix hotplug interrupt disabling after storm detection

From Imre Deak
2e61678ba2383c0d10a7c862721150a37ffe4eee in linux 5.7.y/5.7.6
a3005c2edf7e8c3478880db1ca84028a2b6819bb in mainline linux


# 1.35 08-Jun-2020 jsg

update drm to linux 5.7

adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.


Revision tags: OPENBSD_6_7_BASE
# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.40 01-Jan-2023 jsg

update drm to linux 6.1.2

new hardware support includes

AMD
Raphael, Ryzen 7000 desktop, gfx1036/GC 10.3.6
Mendocino, Ryzen & Athlon 7020 Series mobile APU, gfx1037/GC 10.3.7
Navi 31, gfx1100 dGPU, GC 11.0.0, Radeon RX 7900 XT/XTX
gfx1101 dGPU
gfx1102 dGPU
gfx1103 APU

Thanks to the OpenBSD Foundation for sponsoring this work.


Revision tags: OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.39 14-Jan-2022 jsg

update drm to linux 5.15.14

new hardware support includes

Intel
ehl/Elkhart Lake (embedded)
jsl/Jasper Lake (atom)
rkl/Rocket Lake (desktop)

AMD
van gogh APU (gfx1033)
yellow carp / rembrandt APU (gfx1035?)
Ryzen 6000 APU
navy flounder / navi 22 (gfx1031)
RX 6700, RX 6700 XT, RX 6700M, RX 6800M, RX 6850M XT
dimgrey cavefish / navi 23 (gfx1032)
Pro W6600, Pro W6600M, RX 6600, RX 6600 XT, RX 6600M,
RX 6600S, RX 6650M, RX 6650M XT, RX 6700S, RX 6800S
beige goby / navi 24 (gfx1034)
RX 6500 XT, RX 6400, RX 6500M, RX 6300M

Thanks to the OpenBSD Foundation for sponsoring this work
niklas@ for helping with ttm and amdgpu and patrick@ for adapting
rockchip drm.


Revision tags: OPENBSD_7_0_BASE
# 1.38 07-Jul-2021 jsg

update drm to linux 5.10.47

hardware support changes include
inteldrm: better support for tiger lake
amdgpu: support for navi12, navi21 "sienna_cichlid", arcturus
amdgpu: support for cezanne "green sardine" ryzen 5000 apu

Thanks to the OpenBSD Foundation for sponsoring this work,
patrick@ for helping adapt rockchip drm, kettenis@ and mpi@
for uvm discussions and various testers.


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.37 02-Jul-2020 jsg

use intr_barrier(9) for synchronize_irq() and synchronize_hardirq()


# 1.36 26-Jun-2020 jsg

drm/i915/icl+: Fix hotplug interrupt disabling after storm detection

From Imre Deak
2e61678ba2383c0d10a7c862721150a37ffe4eee in linux 5.7.y/5.7.6
a3005c2edf7e8c3478880db1ca84028a2b6819bb in mainline linux


# 1.35 08-Jun-2020 jsg

update drm to linux 5.7

adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.


Revision tags: OPENBSD_6_7_BASE
# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.39 14-Jan-2022 jsg

update drm to linux 5.15.14

new hardware support includes

Intel
ehl/Elkhart Lake (embedded)
jsl/Jasper Lake (atom)
rkl/Rocket Lake (desktop)

AMD
van gogh APU (gfx1033)
yellow carp / rembrandt APU (gfx1035?)
Ryzen 6000 APU
navy flounder / navi 22 (gfx1031)
RX 6700, RX 6700 XT, RX 6700M, RX 6800M, RX 6850M XT
dimgrey cavefish / navi 23 (gfx1032)
Pro W6600, Pro W6600M, RX 6600, RX 6600 XT, RX 6600M,
RX 6600S, RX 6650M, RX 6650M XT, RX 6700S, RX 6800S
beige goby / navi 24 (gfx1034)
RX 6500 XT, RX 6400, RX 6500M, RX 6300M

Thanks to the OpenBSD Foundation for sponsoring this work
niklas@ for helping with ttm and amdgpu and patrick@ for adapting
rockchip drm.


Revision tags: OPENBSD_7_0_BASE
# 1.38 07-Jul-2021 jsg

update drm to linux 5.10.47

hardware support changes include
inteldrm: better support for tiger lake
amdgpu: support for navi12, navi21 "sienna_cichlid", arcturus
amdgpu: support for cezanne "green sardine" ryzen 5000 apu

Thanks to the OpenBSD Foundation for sponsoring this work,
patrick@ for helping adapt rockchip drm, kettenis@ and mpi@
for uvm discussions and various testers.


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.37 02-Jul-2020 jsg

use intr_barrier(9) for synchronize_irq() and synchronize_hardirq()


# 1.36 26-Jun-2020 jsg

drm/i915/icl+: Fix hotplug interrupt disabling after storm detection

From Imre Deak
2e61678ba2383c0d10a7c862721150a37ffe4eee in linux 5.7.y/5.7.6
a3005c2edf7e8c3478880db1ca84028a2b6819bb in mainline linux


# 1.35 08-Jun-2020 jsg

update drm to linux 5.7

adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.


Revision tags: OPENBSD_6_7_BASE
# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.38 07-Jul-2021 jsg

update drm to linux 5.10.47

hardware support changes include
inteldrm: better support for tiger lake
amdgpu: support for navi12, navi21 "sienna_cichlid", arcturus
amdgpu: support for cezanne "green sardine" ryzen 5000 apu

Thanks to the OpenBSD Foundation for sponsoring this work,
patrick@ for helping adapt rockchip drm, kettenis@ and mpi@
for uvm discussions and various testers.


Revision tags: OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.37 02-Jul-2020 jsg

use intr_barrier(9) for synchronize_irq() and synchronize_hardirq()


# 1.36 26-Jun-2020 jsg

drm/i915/icl+: Fix hotplug interrupt disabling after storm detection

From Imre Deak
2e61678ba2383c0d10a7c862721150a37ffe4eee in linux 5.7.y/5.7.6
a3005c2edf7e8c3478880db1ca84028a2b6819bb in mainline linux


# 1.35 08-Jun-2020 jsg

update drm to linux 5.7

adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.


Revision tags: OPENBSD_6_7_BASE
# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.37 02-Jul-2020 jsg

use intr_barrier(9) for synchronize_irq() and synchronize_hardirq()


# 1.36 26-Jun-2020 jsg

drm/i915/icl+: Fix hotplug interrupt disabling after storm detection

From Imre Deak
2e61678ba2383c0d10a7c862721150a37ffe4eee in linux 5.7.y/5.7.6
a3005c2edf7e8c3478880db1ca84028a2b6819bb in mainline linux


# 1.35 08-Jun-2020 jsg

update drm to linux 5.7

adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.


Revision tags: OPENBSD_6_7_BASE
# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.36 26-Jun-2020 jsg

drm/i915/icl+: Fix hotplug interrupt disabling after storm detection

From Imre Deak
2e61678ba2383c0d10a7c862721150a37ffe4eee in linux 5.7.y/5.7.6
a3005c2edf7e8c3478880db1ca84028a2b6819bb in mainline linux


# 1.35 08-Jun-2020 jsg

update drm to linux 5.7

adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.


Revision tags: OPENBSD_6_7_BASE
# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.35 08-Jun-2020 jsg

update drm to linux 5.7

adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.


Revision tags: OPENBSD_6_7_BASE
# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.34 14-Mar-2020 jsg

drm/i915: Don't try to use the hardware frame counter with i965gm TV output

From Ville Syrjala
32db0b6501d97b09e92e70caefc74fa35aa9a8d6 in mainline linux

Jon Whalen reported on misc@ that a 965gm with svideo on a
Dell Inspiron 1525 had excesively long timeouts. On the order of 30
seconds when booting and 60 seconds when starting xenocara with errors
showing up in dmesg.

While the other commit referenced in
https://bugs.freedesktop.org/show_bug.cgi?id=93782 appeared in the
4.19 lts branch this one while being marked for stable in the linux
commit never did.


Revision tags: OPENBSD_6_6_BASE
# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


# 1.33 14-Apr-2019 jsg

Update shared drm code, inteldrm(4) and radeondrm(4) from linux 4.4 to
linux 4.19.34.

Adds support for more Intel hardware:
Broxton/Apollo Lake (was is_preliminary in 4.4)
Amber Lake (another Kaby Lake refresh)
Gemini Lake
Coffee Lake
Whiskey Lake
Cannon Lake (though no hardware with Intel graphics ever shipped)
Ice Lake (alpha support, hardware not released)

This does not add support for new radeon hardware on the AMD side as
newer radeons have a different kernel driver (amdgpu).

Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping and a bunch of other developers for testing.


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.


Revision tags: OPENBSD_6_2_BASE
# 1.32 30-Sep-2017 robert

Add preliminary kabylake support to inteldrm(4) by backporting the relevant
commits from linux-4.8.x.
The changes are quiet minimal due to the fact that kabylake and skylake share
most of the code because they are both gen9 graphics.
This was tested by many and was also in snapshots for a while.

ok kettenis@


# 1.31 01-Jul-2017 kettenis

Update inteldrm(4) to code based on Linux 4.4.70. This brings us support for
Skylake and Cherryview and better support for Broadwell and Valleyview. Also
adds MST support. Some tweaks to the TTM code and radeondrm(4) to keep it
working with the updated generic DRM code needed for inteldrm(4).

Tested by many.


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE OPENBSD_6_1_BASE
# 1.30 01-Dec-2015 kettenis

Enable the GSE interrupt on Broadwell. Fixes acpi brightness control on
the MacBookPro12,1, 3rd gen Lenovo X1 Carbon (when hacked to use the standard
acpi mechanism for this purpose) and probably many others. Seems this
hasn't been figured out over in Linux land yet.


# 1.29 23-Sep-2015 kettenis

Update inteldrm to the code from Linux 3.14.52 (which corresponds to
commit 48f8f36a6c8018c2b36ea207aaf68ef5326c5075 on the linux-3.14.y
branch of the linux-stable tree). This brings preliminary support for
the GPU on Intel's Broadwell CPUs. Don't expect these to work
perfectly yet. There are some remaining issues with older hardware as
well, but no significant regressions have been uncovered.

This also updates some of drm core code. The radeondrm code remains
based on Linux 3.8 with some minimal canges to adjust to changes in
the core drm APIs.

Joint effort with jsg@, who did the initial update of the relevant drm
core bits. Committing this early to make sure it gets more testing
and make it possible for others to help getting the remaining wrinkles
straightened out.


Revision tags: OPENBSD_5_8_BASE
# 1.28 16-Jul-2015 kettenis

Introduce a Linux compatible wait_event API and use it in the inteldrm code.

ok jsg@, guenther@


# 1.27 26-Jun-2015 kettenis

Add Linux completion API and use it.

ok jsg@


# 1.26 24-Jun-2015 kettenis

Introduce Linux work queue APIs and use them. As a side-effect, this will
move some of the work from the system task queue to the driver-specific
task queue.

ok jsg@


# 1.25 12-Apr-2015 kettenis

Add a few missing trace functions, and "use" them. Add back the WATCH_GTT
code (that isn't actually compiled in). Use dev_priv->dev in one more place
now that we have it, and add set_normalized_timespec() and use it.


# 1.24 11-Apr-2015 jsg

rename i915 interrupt handlers from *_intr back to *_irq_handler


# 1.23 11-Apr-2015 jsg

change back to spinlock_t/DEFINE_SPINLOCK


# 1.22 06-Apr-2015 jsg

add and use macros for wake_up/wake_up_all/wake_up_all_locked


Revision tags: OPENBSD_5_7_BASE
# 1.21 12-Feb-2015 jsg

switch back to IRQ_NONE/IRQ_HANDLED


# 1.20 12-Feb-2015 kettenis

Rename the struct device member of inteldrm_softc to sc_dev and rename the
pointer to the drm subdevice to dev such that we can match the linux code
better.

ok jsg@


# 1.19 11-Feb-2015 jsg

Switch most printf style functions calls back to linux function names
and move DRM_INFO/pr_info/dev_info messages under DRMDEBUG.


# 1.18 10-Feb-2015 jsg

switch most mtx_* calls back to linux spinlocks


# 1.17 10-Feb-2015 jsg

switch most rwlock calls back to their linux equivalents


# 1.16 10-Feb-2015 jsg

use linux function names when locking mode config


# 1.15 10-Feb-2015 jsg

Remove DRM_LOCK macros, rename dev_lock to struct_mutex and directly
call linux style lock functions where these macros were used.


# 1.14 27-Jan-2015 dlg

remove the second void * argument on tasks.

when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.

now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.

so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.

ok krw@


Revision tags: OPENBSD_5_6_BASE
# 1.13 12-Jul-2014 tedu

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.


# 1.12 24-Mar-2014 kettenis

Another round of reducing diffs with the Linux codebase.


Revision tags: OPENBSD_5_5_BASE
# 1.11 05-Feb-2014 kettenis

We have WARN_ONCE now.


# 1.10 24-Jan-2014 jsg

drm/i915: Move num_pipes to intel info

From Ben Widawsky
7ed1faada973243b6e11fa209ada91c9cc1dab53 in ubuntu 3.8
7eb552aeae058a88eece91b902dd51fde45b1f41 in mainline linux


# 1.9 30-Oct-2013 dlg

deprecate taskq_systq() and replace it with extern struct taskq
*const systq defined in task.h

this reduces the cost of using the system taskq and looks less ugly.

requested by and ok kettenis@


# 1.8 29-Oct-2013 jsg

Move most of the uses of workqs in drm to the new task/taskq api.
Prevents unintended multiple additions to workqs that was causing
hangs on radeon, and lets us remove tasks more closely matching
the behaviour of the original linux code.

ok kettenis@
cause of the ttm/radeon hangs debugged by claudio@ and kettenis@


# 1.7 13-Aug-2013 jsg

add static back to functions that originally had it
reduces the diff to linux and makes ddb hangman a little easier


Revision tags: OPENBSD_5_4_BASE
# 1.6 05-Jul-2013 jsg

make use of the drm_i915_private macro to reduce the diff to linux


# 1.5 17-Apr-2013 kettenis

Another round of reducing diffs with Linux code.


# 1.4 28-Mar-2013 kettenis

Reduce diffs with Linux now that we have i915_enable_hangcheck.


# 1.3 21-Mar-2013 jsg

Enable the opregion code but keep the parts that try to talk to acpi
disabled for now. Makes the brightness keys on my x230 work.


# 1.2 20-Mar-2013 jsg

Backout some changes introduced in linux 3.8.3 which are known
to cause problems and have been reverted in linux 3.8.4-rc1:

"drm/i915: reorder setup sequence to have irqs for output setup"
"drm/i915: enable irqs earlier when resuming"

ok kettenis@


# 1.1 18-Mar-2013 jsg

Significantly increase the wordlist for ddb hangman,
and update our device independent DRM code and the Intel DRM code
to be mostly in sync with Linux 3.8.3. Among other things this
brings support for kernel modesetting and enables use of
the rings on gen6+ Intel hardware.

Based on some earlier work from matthieu@ with some hints from FreeBSD
and with lots of help from kettenis@ (including a beautiful accelerated
wscons framebuffer console!)

Thanks to M:Tier and the OpenBSD Foundation for sponsoring this work.