Home | History | Annotate | Download | only in drm
History log of /src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h
RevisionDateAuthorComments
 1.19  19-Dec-2021  riastradh drm: Fix comments about wait return values.
 1.18  19-Dec-2021  riastradh drm: Ensure DRM_*WAIT* never counts down from MAX_SCHEDULE_TIMEOUT.

This faux timeout means `wait forever'.
 1.17  03-Jul-2020  maxv hardclock_ticks -> getticks()
 1.16  14-Feb-2020  riastradh DRM_HZ -> HZ, to reduce diffs.
 1.15  16-Apr-2019  mrg branches: 1.15.6;
fix various problems i've seen where cv_*wait*() return ERESTART,
which is -3 in netbsd, which we have mapped linux ERESTARTSYS to.

this has a problem because linux code often returns errors and
pointers in the same value, and pointer values between -4095 and
-1 are considered as error returns, but -3 ends up as 3 and thus
is not considered an error, and mayhem ensues.

with this in place my kabylake system seems actually stable, i
have not triggered any of my prior issues in almost 4 weeks now.


Taylor asked me to write up a description and then wrote most of
the text below for me :-)


In Linux code, we always work with ERESTARTSYS so the code meaning
start over is a positive NetBSD errno safe for PTR_ERR/ERR_PTR.
To achieve this:
1. adapt all cv_waits that return to Linux so they map ERESTART to
ERESTARTSYS, and
2. adapt all returns to userland so they convert ERESTARTSYS to
ERESTART.
Leave EINTR and all other error codes alone.
 1.14  13-May-2016  christos branches: 1.14.10; 1.14.18;
We now use cpu_intr_p() all the time.
 1.13  12-Apr-2015  riastradh Don't break when hardclock_ticks wraps around.

Since we now only count time spent in wait, rather than determining
the end time and checking whether we've passed it, timeouts might be
marginally longer in effect. Unlikely to be an issue.
 1.12  04-Apr-2015  riastradh In DRM_SPIN_WAIT_ON, don't stop after waiting only one tick.

Continue the loop to recheck the condition and count the whole
duration.
 1.11  28-Feb-2015  riastradh Actually poll every tick as advertised.
 1.10  28-Feb-2015  riastradh Remove extraneous blank line.
 1.9  28-Feb-2015  riastradh New macro DRM_SPIN_WAIT_ON better reflects DRM_WAIT_ON.

We still need to adapt all waits from upstream to use an interlock,
so we can't implement DRM_WAIT_ON verbatim, but this more closely
reflects the API of DRM_WAIT_ON than DRM_*WAIT*_UNTIL do.

Major difference is that this polls every tick, like DRM_WAIT_ON,
unlike DRM_*WAIT*_UNTIL. So it will mask missing wakeups, but it
wouldn't surprise me if there were such things upstream.
 1.8  28-Feb-2015  riastradh Elaborate on essay about DRM_*WAIT*_UNTIL reutrn convention.
 1.7  28-Feb-2015  riastradh Write an essay to remind myself about (timed) wait return values.
 1.6  26-Feb-2015  riastradh Another attempt to fix the drm timed wait blarf blugh blahhh.
 1.5  26-Aug-2014  riastradh branches: 1.5.2;
Return 0, not uninitialized, if the condition is already true.
 1.4  16-Jul-2014  riastradh branches: 1.4.2; 1.4.4;
First whack at radeon driver.

No hardware to test yet, but it builds.
 1.3  16-Jul-2014  riastradh Make it build and boot on my test machines.

Screen blanks on boot on the Ivy Bridge system with

DRM error in cpt_serr_int_handler: PCH transcoder A FIFO underrun

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

I think there's a cache flushing issue somewhere -- there are little
display artefacts on my T60.
 1.2  18-Mar-2014  riastradh branches: 1.2.2; 1.2.4; 1.2.6;
Merge riastradh-drm2 to HEAD.
 1.1  24-Jul-2013  riastradh branches: 1.1.2;
file drm_wait_netbsd.h was initially added on branch riastradh-drm2.
 1.1.2.9  05-Mar-2014  riastradh Implement and use non-interruptible DRM_WAIT_* gizmos.
 1.1.2.8  08-Sep-2013  riastradh Fix DRM_WAIT_UNTIL to initialize (RET) on every exit.
 1.1.2.7  08-Sep-2013  riastradh Fix result of DRM_TIMED_WAIT_UNTIL.

This has to return a positive number of ticks left if we haven't
timed out in order to match the semantics of Linux waitqueues.

This also fixes the amount of time for timeout if we ever wait for
more than one iteration.

Now we can actually wait for results from the ring buffers!
 1.1.2.6  24-Jul-2013  riastradh Add DRM_WAITERS_P and DRM_SPIN_WAITERS_P to drm_wait_netbsd.h.
 1.1.2.5  24-Jul-2013  riastradh Add DRM_DESTROY_WAITQUEUE to drm_wait_netbsd.h.
 1.1.2.4  24-Jul-2013  riastradh Define DRM_HZ to be hz (super-kludgey!) in drm_wait_netbsd.h.
 1.1.2.3  24-Jul-2013  riastradh Add variants of drm wait/wakeup for spin locks in drm_wait_netbsd.h.
 1.1.2.2  24-Jul-2013  riastradh Tweak drm waitqueue compatibility interface.

Use (Linux) struct mutex for drm_interlock_t, and split DRM_WAKEUP
into DRM_WAKEUP_ONE (cv_signal) and DRM_WAKEUP_ALL (cv_broadcast).
 1.1.2.1  24-Jul-2013  riastradh Implement drm waitqueues with condvars. Include in drm_os_netbsd.h.
 1.2.6.2  22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1  18-Mar-2014  yamt file drm_wait_netbsd.h was added on branch yamt-pagecache on 2014-05-22 11:40:56 +0000
 1.2.4.2  18-May-2014  rmind sync with head
 1.2.4.1  18-Mar-2014  rmind file drm_wait_netbsd.h was added on branch rmind-smpnet on 2014-05-18 17:46:01 +0000
 1.2.2.1  10-Aug-2014  tls Rebase.
 1.4.4.3  03-Dec-2017  jdolecek update from HEAD
 1.4.4.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.4.1  16-Jul-2014  tls file drm_wait_netbsd.h was added on branch tls-maxphys on 2014-08-20 00:04:21 +0000
 1.4.2.5  12-Dec-2016  msaitoh Pull up following revision(s) (requested by snj in ticket #1280):
sys/external/bsd/drm2/ttm/ttm_bus_dma.c: revision 1.2
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: revision 1.14
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_dp.c: revision 1.2
sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c: revision 1.7
sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c: revision 1.11
sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nv40.c: revision 1.2
sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_driver.h: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c: revision 1.8
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_connector.c: revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_gem.c: revision 1.4
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit/nouveau_subdev_devinit_nv04.c: revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c: revision 1.7
sys/external/bsd/drm2/dist/drm/nouveau/core/core/nouveau_core_object.c: revision 1.3
sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c: revision 1.4
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mxm/nouveau_subdev_mxm_mxms.c: revision 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mxm/nouveau_subdev_mxm_nv50.c: revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/core/engine/disp/nouveau_engine_disp_nvd0.c: revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_base.c: revision 1.5
sys/external/bsd/drm2/include/drm/ttm/ttm_page_alloc.h: revision 1.2
sys/external/bsd/drm2/drm/drm_vma_manager.c: revision 1.4
sys/external/bsd/drm2/nouveau/nouveau_pci.c: revision 1.8
- fix non-debug build
- Use %"PRIx8", not %hx, for uint8_t. %hx is for unsigned short.
- Flush unused function. Found by joerg.
- Make sure rbtrees are empty on desctruction.
If related to PR kern/51076, might help catch the bug a bit earlier.
- revert rev 1.6. we don't have access to those files as normal files
and possible will get them directly elsewhere soon.
(if i hack my nouveau to ignore fireware failure, it end up having
a vaguely working console and slowly working X, which is better than
the current situation.)
- Avoid possible null pointer dereference. Found by Coverity, CID 709895.
- Mark fallthrough to suppress Coverity complaints.
CID 143119
CID 143120
CID 143121
CID 143122
CID 143123
CID 143124
- Sanity-check that the encoder we found is not null.
I think the previous code guarantees that finding this encoder should
work, so this should be a moot point. CID 145720.
- Mark intended fallthrough to suppress Coverity CID 201378.
- Mark fallthrough with a comment to appease Coverity, CID 703385.
- Make it clearer to Coverity that there's no array overrun. CID 989067.
- Rework ttm tt swapin/swapout logic.
Rather than handling `swapping in/out' here, per se, we let uvm do
that, we interpret `swap out' as `deactivate pages', and we add
generic ttm operations to wire and unwire pages, for the ttm_tt
driver to use.
This fixes certain graphics buffer eviction logic, which enables
nouveau to suspend/resume on one of my machines. (The machine
doesn't resume overall for other reasons, but the nouveau device
suspends and resumes in isolation.)
- Use bus_space_subregion to get fifo channels out of mmio registers.
Evidently it is not enough to just map them separately. Ran out of
time to investigate why, last time I poked at this and confirmed this
change works.
- Avoid taking locks during interrupts and explain why we are doing it this way.
- We now use cpu_intr_p() all the time.
 1.4.2.4  23-Apr-2015  snj branches: 1.4.2.4.4;
Pull up following revision(s) (requested by mrg in ticket #718):
sys/arch/x86/include/pmap.h: revision 1.56
sys/arch/x86/x86/pmap.c: revision 1.188
sys/dev/pci/agp_amd64.c: revision 1.8
sys/dev/pci/agp_i810.c: revision 1.118
sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: revision 1.16
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.29
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_agp.c: revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c: revision 1.4
sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_agp.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_crtc.c: revision 1.2
sys/external/bsd/drm2/dist/drm/radeon/radeon_object.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c: revision 1.7
sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c: revisions 1.7-1.10
sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c: revision 1.5
sys/external/bsd/drm2/i915drm/intelfb.c: revision 1.13
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: revisions 1.12, 1.13
sys/external/bsd/drm2/include/linux/mm.h: revision 1.5
sys/external/bsd/drm2/include/linux/pci.h: revisions 1.16, 1.17
sys/external/bsd/drm2/nouveau/nouveaufb.c: revision 1.2
sys/external/bsd/drm2/radeon/radeon_pci.c: revisions 1.8, 1.9
sys/uvm/uvm_init.c: revision 1.46
Hack against the blank console problem:
Leave the CLUT alone on ancient cards. At least this leaves us with a
semi working console (red and blue are flipped). Leave an example of what
seems to be happening but disable it because colors are better than 444 bit
greyscale.
--
Initialize P->V tracking for unmanaged device pages in uvm_init.

Conditional on __HAVE_PMAP_PV_TRACK until we add it to all pmaps.

MI part of pmap_pv(9) change proposed on tech-kern:

https://mail-index.netbsd.org/tech-kern/2015/03/26/msg018561.html
--
Implement pmap_pv(9) for x86 for P->V tracking of unmanaged pages.

Proposed on tech-kern with no objections:

https://mail-index.netbsd.org/tech-kern/2015/03/26/msg018561.html
--
Use pmap_pv(9) to remove mappings of Intel graphics aperture pages.

Proposed on tech-kern with no objections:

https://mail-index.netbsd.org/tech-kern/2015/03/26/msg018561.html

Further background at:

https://mail-index.netbsd.org/tech-kern/2014/07/23/msg017392.html
--
Use pmap_pv(9) to remove mappings of device pages in TTM.

Adapt nouveau and radeon to do pmap_pv_track for their device pages.

Proposed on tech-kern with no objections:

https://mail-index.netbsd.org/tech-kern/2015/03/26/msg018561.html

Further background at:

https://mail-index.netbsd.org/tech-kern/2014/07/23/msg017392.html
--
Fix error branches in agp_amd64.c.

- agp_generic_detach always.
- Free asc if it was allocated. (Found by Brainy, noted by maxv@.)
- Free the GATT if it was allocated.
--
pmf_device_register returns false on failure, not true
--
In DRM_SPIN_WAIT_ON, don't stop after waiting only one tick.

Continue the loop to recheck the condition and count the whole
duration.
--
Don't use the video BIOS memory as an i915 flush page!
--
Don't let anyone else allocate the video BIOS either.
--
Missed a zero: it's 0x100000, not 0x10000.
--
Don't reserve if atomic -- caller must have pre-pinned the buffer.
--
Don't reserve if atomic -- caller must have pre-pinned the buffer.
--
almost add radeondrmkms suspend/resume support. it unfortunately doesn't work.
--
Need the page's uvm object lock to do pmap_page_protect.
--
Use KASSERTMSG to show bad base/offset.
--
KASSERT about page-alignment on initialization too.
--
Don't break when hardclock_ticks wraps around.

Since we now only count time spent in wait, rather than determining
the end time and checking whether we've passed it, timeouts might be
marginally longer in effect. Unlikely to be an issue.
--
Remove broken drm2 vm_mmap stub. Can't possibly have ever worked.
--
apply some of the additional changes from Arto Huusko in PR#49645:
- call pmf_device_deregister on detach.

i've kept the "resume = true" for radeon_resume_kms() call as it
seems to work for me (indeed, code inspection shows it is unused
on netbsd :-)

my old nforce4 box that can resume old drm (or could, last i tried
several years ago) while X and GL apps were running, can at least
survive a resume if X hasn't started. my one attempt so far with
X exited, but having run, did not work.
--
First attempt to make ttm_buffer_object_transfer less bogus.
--
Make sure mem.bus.is_iomem is initialized. PR 49833
 1.4.2.3  06-Mar-2015  snj Pull up following revision(s) (requested by mrg in ticket #573):
sys/external/bsd/common/include/linux/kernel.h: 1.5, 1.6
sys/external/bsd/drm2/dist/drm/drm_ioctl.c: 1.4
sys/external/bsd/drm2/dist/drm/drm_irq.c: 1.6-1.8
sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: 1.13-1.15
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: 1.23-1.27
sys/external/bsd/drm2/dist/drm/i915/i915_gem_execbuffer.c: 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_display.c: 1.14, 1.15
sys/external/bsd/drm2/dist/drm/i915/intel_dp.c: 1.10
sys/external/bsd/drm2/dist/drm/i915/intel_drv.h: 1.8
sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: 1.8-1.13
sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: 1.6
sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c: 1.5, 1.6
sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c: 1.4
sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c: 1.3, 1.4
sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c: 1.3, 1.4
sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/device.h: 1.4
sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/mc.h: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/pwr.h: 1.3, 1.4
sys/external/bsd/drm2/dist/drm/nouveau/core/os.h: 1.4, 1.5
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_base.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_pll.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/clock/nouveau_subdev_clock_base.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/clock/nouveau_subdev_clock_nv50.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit/fbmem.h: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit/nouveau_subdev_devinit_nv04.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nv50.h: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nvc0.h: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c: 1.2, 1.3
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mxm/nouveau_subdev_mxm_nv50.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/pwr/nouveau_subdev_pwr_base.c: 1.3, 1.4
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_ic.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/timer/nouveau_subdev_timer_nv04.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_base.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv04.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv44.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nv04.h: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.h: 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: 1.4, 1.5
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c: 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv84_fence.c: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c: 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.h: 1.2
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_vga.h: 1.2
sys/external/bsd/drm2/dist/drm/radeon/radeon_fence.c: 1.6-1.8
sys/external/bsd/drm2/dist/drm/radeon/radeon_pm.c: 1.3
sys/external/bsd/drm2/dist/drm/radeon/rs400.c: 1.3
sys/external/bsd/drm2/dist/drm/via/via_dmablit.c: 1.3, 1.4
sys/external/bsd/drm2/dist/drm/via/via_drv.h: 1.3
sys/external/bsd/drm2/dist/drm/via/via_irq.c: 1.3, 1.4
sys/external/bsd/drm2/dist/drm/via/via_video.c: 1.3, 1.4
sys/external/bsd/drm2/dist/include/drm/drmP.h: 1.10
sys/external/bsd/drm2/dist/include/drm/drm_crtc.h: 1.4
sys/external/bsd/drm2/dist/include/drm/drm_modes.h: 1.3
sys/external/bsd/drm2/dist/uapi/drm/i915_drm.h: 1.2
sys/external/bsd/drm2/drm/drm_cache.c: 1.4-1.6
sys/external/bsd/drm2/drm/drm_drv.c: 1.14
sys/external/bsd/drm2/drm/drm_module.c: 1.10
sys/external/bsd/drm2/drm/drm_sysctl.c: 1.5
sys/external/bsd/drm2/drm/drm_vma_manager.c: 1.2
sys/external/bsd/drm2/drm/drmfb.c: 1.1
sys/external/bsd/drm2/drm/files.drmkms: 1.10, 1.11
sys/external/bsd/drm2/i2c/drm_encoder_slave.c: 1.1
sys/external/bsd/drm2/i915drm/files.i915drmkms: 1.7, 1.10
sys/external/bsd/drm2/i915drm/intelfb.c: 1.11, 1.12
sys/external/bsd/drm2/include/asm/io.h: 1.4
sys/external/bsd/drm2/include/asm/unaligned.h: 1.2, 1.3
sys/external/bsd/drm2/include/drm/drm_encoder_slave.h: 1.1
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: 1.7-1.11
sys/external/bsd/drm2/include/drm/drmfb.h: 1.1
sys/external/bsd/drm2/include/drm/drmfb_pci.h: 1.1, 1.2
sys/external/bsd/drm2/include/linux/bitops.h: 1.9
sys/external/bsd/drm2/include/linux/i2c.h: 1.7, 1.8
sys/external/bsd/drm2/include/linux/io-mapping.h: 1.5
sys/external/bsd/drm2/include/linux/moduleparam.h: 1.5
sys/external/bsd/drm2/include/linux/pci.h: 1.12-1.15
sys/external/bsd/drm2/include/linux/pm.h: 1.4
sys/external/bsd/drm2/include/linux/reboot.h: 1.2
sys/external/bsd/drm2/include/linux/slab.h: 1.5
sys/external/bsd/drm2/include/linux/string.h: 1.4
sys/external/bsd/drm2/include/linux/vgaarb.h: 1.3
sys/external/bsd/drm2/include/linux/ww_mutex.h: 1.10
sys/external/bsd/drm2/linux/files.drmkms_linux: 1.8
sys/external/bsd/drm2/linux/linux_i2c.c: 1.3
sys/external/bsd/drm2/linux/linux_ww_mutex.c: 1.1
sys/external/bsd/drm2/nouveau/files.nouveau: 1.5-1.8
sys/external/bsd/drm2/nouveau/nouveau_pci.c: 1.1-1.3
sys/external/bsd/drm2/nouveau/nouveau_pci.h: 1.1
sys/external/bsd/drm2/nouveau/nouveau_sysfs.c: 1.1
sys/external/bsd/drm2/nouveau/nouveau_vga.c: 1.1
sys/external/bsd/drm2/nouveau/nouveaufb.c: 1.1
sys/external/bsd/drm2/nouveau/nouveaufb.h: 1.1
sys/external/bsd/drm2/pci/drm_pci.c: 1.10-1.12
sys/external/bsd/drm2/pci/drm_pci_module.c: 1.4
sys/external/bsd/drm2/pci/drmfb_pci.c: 1.1-1.3
sys/external/bsd/drm2/pci/files.drmkms_pci: 1.5
sys/external/bsd/drm2/radeon/radeon_pci.c: 1.5-1.7
sys/modules/drmkms/Makefile: 1.8, 1.9
sys/modules/drmkms_linux/Makefile: 1.6
sys/modules/drmkms_pci/Makefile: 1.5
sync drm2 with HEAD.
 1.4.2.2  27-Feb-2015  martin Pull up following revision(s) (requested by snj in ticket #553):
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.20
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.21
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.22
sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: revision 1.6
sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: revision 1.7
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: revision 1.6
Fix returned timeout in wait_seqno: remaining time, not time slept.
-
Fix return code of __wait_seqno.
-
MAX(ret, 0) is 0 if ret is negative, but if ret is negative we want
to return that negative value, meaning error. Should've been
MIN(ret, 0), but I'll just rewrite it to clarify a wee bit.
-
If the GPU reset, call i915_gem_check_wedge and always return failure
like Linux does. Caller must retry in that case.
-
Limit scope of ret and omit needless use of it to reduce confusion.
-
Make gmbus_wait_hw_status consistently use 50ms timeout like Linux.
-
Another attempt to fix the drm timed wait blarf blugh blahhh.
...aaaaand one more fix for __wait_seqno return value.
-
Also get the sense of the condition to wait until right.
 1.4.2.1  21-Sep-2014  snj Pull up following revision(s) (requested by riastradh in ticket #98):
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: revision 1.5
Return 0, not uninitialized, if the condition is already true.
 1.4.2.4.4.1  18-Jan-2017  skrll Sync with netbsd-5
 1.5.2.3  29-May-2016  skrll Sync with HEAD
 1.5.2.2  06-Jun-2015  skrll Sync with HEAD
 1.5.2.1  06-Apr-2015  skrll Sync with HEAD
 1.14.18.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.14.18.1  10-Jun-2019  christos Sync with HEAD
 1.14.10.1  23-Apr-2019  martin Pull up following revision(s) via patch (requested by mrg in ticket #1242):

sys/external/bsd/common/include/linux/err.h: revision 1.3
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: revision 1.15
sys/external/bsd/common/include/linux/errno.h: revision 1.4
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: revision 1.17
sys/external/bsd/drm2/linux/linux_ww_mutex.c: revision 1.6
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c: revision 1.14

fix various problems i've seen where cv_*wait*() return ERESTART,
which is -3 in netbsd, which we have mapped linux ERESTARTSYS to.

this has a problem because linux code often returns errors and
pointers in the same value, and pointer values between -4095 and
- -1 are considered as error returns, but -3 ends up as 3 and thus
is not considered an error, and mayhem ensues.

with this in place my kabylake system seems actually stable, i
have not triggered any of my prior issues in almost 4 weeks now.

Taylor asked me to write up a description and then wrote most of
the text below for me :-)

In Linux code, we always work with ERESTARTSYS so the code meaning
start over is a positive NetBSD errno safe for PTR_ERR/ERR_PTR.

To achieve this:

1. adapt all cv_waits that return to Linux so they map ERESTART to
ERESTARTSYS, and

2. adapt all returns to userland so they convert ERESTARTSYS to
ERESTART.

Leave EINTR and all other error codes alone.
 1.15.6.1  29-Feb-2020  ad Sync with head.

RSS XML Feed