Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
IDA functions in terms of IDR. Fixes issues with running out of PASIDs
in amdgpu(4).
ok jsg@
|
|
Gives rwlocks defined this way a non-NULL rwl_name.
Move ttm_pool_shrink_scan() DEFINE_MUTEX use out of function scope to fix
build with WITNESS after this change and expand macro to have a better
name than "lock".
Found by and ok semarie@
|
|
Previously we would initialise a variable specific mutex in
ATOMIC64_INIT() or atomic64_set() but the drm code in multiple places
zeroes memory and later accesses it without calling these resulting
in a mutex with IPL_NONE instead of IPL_HIGH.
Fixes a 'locking against myself' panic reported by Anthony Richardby
on macppc with PowerBook5,6 and RV350.
ok kettenis@
|
|
|
|
Linux rwlocks are read/write spin locks which don't sleep.
Fixes a panic claudio@ reported with a WITNESS kernel on inteldrm(4)
'panic: acquiring blockable sleep lock with spinlock or critical section
held (rwlock) drmvma'
Patch from kettenis@ with a small tweak from me. ok kettenis@
|
|
|
|
ok tobhe@
|
|
- Reverse byte order on big-endian architectures (except on sparc64)
- Add memory barriers
Note that sparc64 is special as we use a little-endian mapping for
PCI bus space, so we shouldn't reverse the byte order there.
ok jsg@
|
|
|
|
|
|
ok kettenis@
|
|
|
|
reduces the diff to linux 5.7.y
ok kettenis@
|
|
Without this boot time tests from setting amdgpu_testing = 1 fail.
For example on Vega 56:
drm: GART: 512M 0x0000000000000000 - 0x000000001FFFFFFF
...
[drm] Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0xa00000
[drm] Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0xb00000
...
[drm] Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0x1fe00000
[drm] Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0x1ff00000
[drm] *ERROR* 0xffff80000135f858 bind failed
Error while testing BO move
ok kettenis@
|
|
|
|
Adapt kettenis' amdgpu interval tree replacement functions for the
interval_tree.h functions radeondrm uses on cayman, aruba and GCN.
|
|
|
|
SLAB_HWCACHE_ALIGN flag.
tested by semarie@
|
|
From Swathi Dhanavanthri
3882581753d1cca0d32b5a8ad81791b79fb35d67 in mainline linux
|
|
We don't walk the chain in dma_fence_chain_for_each() but can provide
the first fence.
|
|
ok kettenis@
|
|
ok kettenis@ deraadt@
|
|
The header is being pulled via db_machdep.h -> uvm_extern.h -> uvm_map.h
|
|
avoids unimplemented function warnings when running Mesa iris driver
|
|
of the min value to delay. On the iMac11,2 this was too short, causing
a timeout in the DP AUX transaction retry loop, leaving the eDP dark
after the KMS initialization attempt. Affected code line for reference:
sys/dev/pci/drm/drm_dp_helper.c:771, revision 1.11
Therefore we change the behavior of usleep_range(min, max) to delay
the average value of min and max instead, which finally fixes the KMS
initialization on the iMac11,2.
Help and ok jsg@
|
|
From Sam Ravnborg
cea0a7943a30a6d0320c8558a844dd27e8f0aa8b in linux 5.7.y/5.7.15
2a1658bf922ffd9b7907e270a7d9cdc9643fc45d in mainline linux
|
|
|
|
Change from using timevals for ktime to 64 bit count of nanoseconds
to closer match linux.
tweak from and ok cheloha@
ok kettenis@ on an earlier version
|
|
|
|
There seems to have been some confusion about the granularity of
certain time interfaces in the Linux kernel when our DRM compatibility
layer was written.
To be clear: the Linux ktime_get() and ktime_get_real() interfaces are
*high resolution* clocks. We should to implement them with high
resolution interfaces from our own kernel.
Thus, use microuptime(9) to implement ktime_get() and microtime(9) to
implement ktime_get_real().
While here, ktime_get_raw_ns() should use ktime_get_raw(), not
ktime_get().
Discussed with kettenis@ and jsg@.
ok jsg@
|
|
|
|
|
|
|
|
ok kettenis@
|
|
|
|
|
|
|
|
|
|
|
|
found the hard way by deraadt@ on sparc64
fix suggested by kettenis@
|
|
|
|
ok stsp@ kettenis@
|
|
with help from cheloha@
|
|
time_second(9) and time_uptime(9) are widely used in the kernel to
quickly get the system UTC or system uptime as a time_t. However,
time_t is 64-bit everywhere, so it is not generally safe to use them
on 32-bit platforms: you have a split-read problem if your hardware
cannot perform atomic 64-bit reads.
This patch replaces time_second(9) with gettime(9), a safer successor
interface, throughout the kernel. Similarly, time_uptime(9) is replaced
with getuptime(9).
There is a performance cost on 32-bit platforms in exchange for
eliminating the split-read problem: instead of two register reads you
now have a lockless read loop to pull the values from the timehands.
This is really not *too* bad in the grand scheme of things, but
compared to what we were doing before it is several times slower.
There is no performance cost on 64-bit (__LP64__) platforms.
With input from visa@, dlg@, and tedu@.
Several bugs squashed by visa@.
ok kettenis@
|
|
|
|
|
|
matches how the interfaces are documented
|