| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
this makes it more consistent with other drivers.
|
| |
|
| |
|
|
|
|
|
| |
From Alexei Podtelezhnikov
f2bde2546b81b64fb58aa04888fdd82a090b3908 in mainline linux
|
| |
|
|
|
|
| |
ok kettenis@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The first wait-loop in tht_fw_load() can sleep for at least 10ms per
iteration instead of up to 1 tick per iteration with no ill effects.
The worst-case scenario is that we sleep a little longer than we do
now while we wait.
The second wait-loop can be simplified to sleep for at least 10ms per
iteration for up to 2000ms instead of using a timeout. This method is
less precise and less efficient but is far simpler to read and
understand than using a timeout. We can then remove all the
timeout-related stuff from if_tht.c.
Discussed with mpi@.
ok dlg@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
there's a comment that explains how it works now, but the result is
that i get much tighter and more consistent synchronisation between
the kernel clock and the values derived from the mcx timestamps
now.
however, i only just worked out that there is still an unresolved
problem where the kernel clock changes how fast it ticks. this
happens when ntpd uses adjtime(2) or adjfreq(2) to try and make the
kernel tick at the same rate as the rest of the universe (well, the
small bit of it that it can observe). these adjustments to the
kernel clock immediately skew the timestamps that mcx calculates,
but then it also throws off the mcx calibration calculations that
run every 30 seconds. the offsets calculated in the next calibration
period are often (very) negative.
eg, when things are synced up nicely and you do a read of the mcx
timer and immediately follow it with a nanouptime(9) call, on this
box it calculates that the time in between those two events is about
2600ns. in the calibration period after ntpd did a very small adjtime
call, it now thinks the time between those two events is -700000ns.
this is a pretty obvious problem in hindsight. i can't think of a
simple solution to it at the moment though so i'm going to leave
mcx timestamping disabled for now.
|
|
|
|
|
|
|
| |
fun fact, my Connect-x 4 Lx boards seem to run at 156MHz. less fun
fact, mcx_calibrate() seems to work that out pretty well anyway,
but the maths is still a bit too wonky to make it usable for mbuf
timestamps.
|
|
|
|
|
|
|
|
| |
the idea is to avoid some other work, like a hardware interrupt,
running in between the reads of the kernel and chip clocks and
therefore skewing the interval calculations. this tightens up a
lot of the slop seen when using the cqe timestamp for an mbuf
timestamp, but there's still something not quite right.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
we see too many ntp replies (appear to) arrive before the request
for them was sent, which ntpd handles by disabling the peer for an
hour.
this was a lot easier to narrow down after fixing up bpf and
timestamps, cos it let me see this:
16:50:36.051696 802.1Q vid 871 pri 3 192.0.2.55.47079 > 162.159.200.123.123: v4 client strat 0 poll 0 prec 0 [tos 0x10]
16:50:36.047201 802.1Q vid 871 pri 3 162.159.200.123.123 > 192.0.2.55.47079: v4 server strat 3 poll 0 prec -25 (DF)
im going to borrow the link0 flag for a bit to allow turning
timestamping on.
|
|
|
|
| |
grumble grumble
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
OK dlg@, bluhm@
No Opinion mpi@
Not against it claudio@
|
| |
|
| |
|
|
|
|
|
|
|
| |
luckily tx_rings and rx_rings have ix_softc pointers in the same
place, so we got away with it.
from Christiano Haesbaert
|
|
|
|
|
|
| |
function pointer in ttm_tt_swapout(). Reduces the diff to linux.
ok kettenis@
|
|
|
|
|
|
|
|
| |
Avoids a double free of gtt in amdgpu_ttm_tt_create() if the
bus_dmamap_create() call in ttm_sg_tt_init() fails and ttm_tt_destroy()
calls amdgpu_ttm_backend_destroy().
feedback from and ok kettenis@
|
|
|
|
|
|
|
|
|
|
| |
Calculating "remain" by subtracting the offset after every parsed MPDU
is wrong and not necessary. "offset" always points to the current position
in the receive buffer and the maximum size of the buffer is fixed,
thus knowing "offset" is sufficient for finding "maxlen".
Found by and fix from Christian Erhardt
ok stsp@
|
|
|
|
|
|
|
|
|
|
| |
Calculating "remain" by subtracting the offset after every parsed MPDU
is wrong and not necessary. "offset" always points to the current position
in the receive buffer and the maximum size of the buffer is fixed,
thus knowing "offset" is sufficient for finding "maxlen".
Found by and fix from Christian Erhardt
ok stsp@ phessler@
|
|
|
|
| |
this is supposed to return a va for a page not pa
|
|
|
|
| |
Types stay unsigned long; we don't do 64 bit paddr_t on any 32 bit arch.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The mbg(4) driver sometimes needs to spin until the MBG_BUSY flag goes
away. If the kernel is cold it calls delay(9) for 20us an iteration
for up to 50 iterations. If the kernel is not cold it sleeps for up 1
tick per iteration for up to hz/10 iterations.
To switch from tsleep(9) to tsleep_nsec(9) claudio@ suggests blocking
for at least 1ms per iteration for up to 10 iterations. He reasons
that the flag change is expected to take ~70us, so 10 x 1ms (or more)
is more than enough.
Discussed with mpi@.
ok claudio@
|
|
|
|
|
|
|
|
|
|
|
| |
SSE FP exception traps, update_bw_bounding_box() and
dcn20_populate_dml_pipes_from_context().
The scope around the dcn20_fast_validate_bw() call is large to match
DC_FP_START()/DC_FP_END() use in dcn20_resource.c and avoid the
situation where a dcn2.0 path would have nested DC_FP_START() calls.
ok kettenis@
|
| |
|
| |
|
|
|
|
| |
"yes guess so" deraadt@
|
|
|
|
| |
ok semarie@
|
|
|
|
|
|
| |
interrupts. Hence, update the link state manually.
Tested and ok bluhm@
|
|
|
|
| |
until the root cause is found. ok kevlo@ kettenis@
|
|
|
|
| |
ok patrick@, jsg@
|
|
|
|
|
|
|
|
|
|
|
|
| |
behaviour of Linux' implementation: arm64's bus space operations
have no barriers, so while Linux' iowrite32/ioread32 explicitly
contain barriers, using bus space read/write is not enough on arm64.
Add read barriers after a read to make sure that all reads have
completed before the following reads. Add write barriers before a
write to make sure all previous writes have completed before that
write. This fixes panics on the HoneyComb LX2K with amdgpu(4).
ok kettenis@
|
|
|
|
| |
initial diff from and ok visa@
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
ok jsg@
|
|
|
|
|
|
|
|
| |
only call it when the first drm(4) instance attaches. Also add a cleanup
function that gets called when the last drm(4) instance detaches.
This makes sure that statically initialized IDR instances always work.
ok jsg@, semarie@
|
|
|
|
| |
ok kettenis@
|
|
|
|
|
|
|
| |
IDA functions in terms of IDR. Fixes issues with running out of PASIDs
in amdgpu(4).
ok jsg@
|
| |
|
|
|
|
|
|
| |
Spotted thanks to debugging work by semarie@
ok jsg@, semarie@
|