History log of /src/sys/external/bsd/common/linux/
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.7 19-Dec-2021 riastradh

linux: Fix rcu_barrier so it actually waits for everything.


1.6 19-Dec-2021 riastradh

linux: Rate-limit RCU GC thread as a cheap experiment.


1.5 19-Dec-2021 riastradh

linux: Use kmem directly for Linux kmalloc.

Take advantage of this to do LOCKDEBUG_MEM_CHECK at the point of
kfree_rcu rather than in the RCU GC thread.


1.4 19-Dec-2021 riastradh

Make intel_psr.c build
netbsd-ify
Stub out intel_lpe_audio.c (for now?).
Hammer intel_opregion.c into shape.
Hack up intel_lrc.c
Adapt intel_reset.c
Stub out intel_region_lmem.c
Adapt intel_ring_submission.c
Adapt intel_rps.c
Adapt intel_sdvo.c
Adapt intel_runtime_pm.c
Adapt intel_sideband.c
Adapt intel_sprite.c
Adapt intel_tv.c
Adapt intel_tc.c
Adapt intel_sseu.c
Adapt intel_timeline.c
Adapt intel_uc_fw.c and fix typo
Fix up intel_uncore.c
intel_vga.c
intel_wakeref.c
intel_vdsc.c
intel_wopcm.c
intel_workarounds.c
i915_globals.c
Fix up intelfb.c
Stub out intel_guc_log.c
Stub out intel_dsi_dcs_backlight.c
i915_perf.c
intel_hdmi.c
intel_hdcp.c


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>


1.3 19-Dec-2021 riastradh

linux: Add cond_synchronize_rcu.


1.2 19-Dec-2021 riastradh

linux/rcupdate: Stub init_rcu_head, destroy_rcu_head.


1.1 19-Dec-2021 riastradh

Move Linux RCU to common.


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.4 19-Dec-2021 riastradh

Make intel_psr.c build
netbsd-ify
Stub out intel_lpe_audio.c (for now?).
Hammer intel_opregion.c into shape.
Hack up intel_lrc.c
Adapt intel_reset.c
Stub out intel_region_lmem.c
Adapt intel_ring_submission.c
Adapt intel_rps.c
Adapt intel_sdvo.c
Adapt intel_runtime_pm.c
Adapt intel_sideband.c
Adapt intel_sprite.c
Adapt intel_tv.c
Adapt intel_tc.c
Adapt intel_sseu.c
Adapt intel_timeline.c
Adapt intel_uc_fw.c and fix typo
Fix up intel_uncore.c
intel_vga.c
intel_wakeref.c
intel_vdsc.c
intel_wopcm.c
intel_workarounds.c
i915_globals.c
Fix up intelfb.c
Stub out intel_guc_log.c
Stub out intel_dsi_dcs_backlight.c
i915_perf.c
intel_hdmi.c
intel_hdcp.c


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>


1.3 19-Dec-2021 riastradh

'struct srcu' is actually called 'struct srcu_struct'


Author: Iain Hibbert <plunky@netbsd.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>


1.2 19-Dec-2021 riastradh

Omit __insn_barrier where implied or subsumed by volatile.


1.1 19-Dec-2021 riastradh

Move Linux SRCU to common.


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
1.12 24-Feb-2023 riastradh

drm: Eliminate __HAVE_ATOMIC_AS_MEMBAR conditionals.

Discussed on tech-kern:
https://mail-index.netbsd.org/tech-kern/2023/02/23/msg028729.html


Revision tags: netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.11 09-Apr-2022 riastradh

branches: 1.11.4;
linux: Convert various API shims to use membar_release/acquire.


1.10 27-Dec-2021 riastradh

linux: Fix copypasto in comment.


1.9 19-Dec-2021 riastradh

drm: Sprinkle miscellaneous includes.


1.8 19-Dec-2021 riastradh

linux: Use indirection for percpu simpleq.

Simpleq requires pointers into the head to work, but percpu(9) may
move objects around, so we have to allocate the simpleq head
separately with kmem(9).


1.7 19-Dec-2021 riastradh

Make intel_psr.c build
netbsd-ify
Stub out intel_lpe_audio.c (for now?).
Hammer intel_opregion.c into shape.
Hack up intel_lrc.c
Adapt intel_reset.c
Stub out intel_region_lmem.c
Adapt intel_ring_submission.c
Adapt intel_rps.c
Adapt intel_sdvo.c
Adapt intel_runtime_pm.c
Adapt intel_sideband.c
Adapt intel_sprite.c
Adapt intel_tv.c
Adapt intel_tc.c
Adapt intel_sseu.c
Adapt intel_timeline.c
Adapt intel_uc_fw.c and fix typo
Fix up intel_uncore.c
intel_vga.c
intel_wakeref.c
intel_vdsc.c
intel_wopcm.c
intel_workarounds.c
i915_globals.c
Fix up intelfb.c
Stub out intel_guc_log.c
Stub out intel_dsi_dcs_backlight.c
i915_perf.c
intel_hdmi.c
intel_hdcp.c


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>


1.6 19-Dec-2021 riastradh

Fix membars in tasklet_disable/enable.


1.5 19-Dec-2021 riastradh

Rework linux_tasklet.c a little.

Provide some more hacks for i915's grubby paws.


1.4 19-Dec-2021 riastradh

Omit __insn_barrier where implied or subsumed by volatile.


1.3 19-Dec-2021 riastradh

Add some i915drmkms additions to the tasklet API.


1.2 19-Dec-2021 riastradh

Sprinkle in another assertion for good measure.


1.1 19-Dec-2021 riastradh

Draft Linux tasklet implementation.


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
1.61 09-Apr-2022 riastradh

linux: Convert various API shims to use membar_release/acquire.


1.60 31-Dec-2021 riastradh

drm: Convert noisy flush_workqueue message to dtrace probe.


1.59 19-Dec-2021 riastradh

linux: Downgrade warning about flushing from workqueue to debug.


1.58 19-Dec-2021 riastradh

linux: Make flush_workqueue a noop if run from the workqueue.

I think this matches Linux semantics but this is very much not clear
and not written down anywhere obvious and why is this such a
semantically incoherent mess.


1.57 19-Dec-2021 riastradh

linux: Fix flush_workqueue.

Simplify mechanism: we know there's only a single thread here that
processes scheduled work in FIFO order (no multi-CPU workqueues --
would have to adapt if there were), so just schedule a work item that
notifies of completion. The previous mechanism of counting 0, 1, or
2 generation numbers was broken by an earlier change to avoid abuse
of tailqs arising from clever TAILQ_CONCAT.


1.56 19-Dec-2021 riastradh

linux: Update workqueue flush to reflect TAILQ_CONCAT change.


1.55 19-Dec-2021 riastradh

linux/workqueue: Draft queue_rcu_work.


1.54 19-Dec-2021 riastradh

linux/workqueue: Use atomic_load/store.


1.53 19-Dec-2021 riastradh

i915: another whack at it


1.52 19-Dec-2021 riastradh

alloc_workqueue


1.51 19-Dec-2021 riastradh

Constify work_pending, delayed_work_pending.


1.50 19-Dec-2021 riastradh

drain_workqueue


1.49 19-Dec-2021 riastradh

Add work_pending, delayed_work_pending.


1.48 19-Dec-2021 riastradh

Implement return value of flush_work, flush_delayed_work.


1.47 19-Dec-2021 riastradh

New system_unbound_wq.


1.46 19-Dec-2021 riastradh

Fix copypasta in error branch.

XXX pullup to HEAD


Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
1.45 01-Feb-2020 riastradh

Fix abuse of TAILQ_CONCAT.

Other parts of this expect that the entries will be on wq->wq_queue
or wq->wq_dqueue, so we can't just move a batch of entries onto a
temporary queue. Instead, use a marker node to delimit when the
batch ends.

XXX pullup


Revision tags: netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
1.44 19-Mar-2019 ryo

branches: 1.44.4; 1.44.6;
- dwc2 need calling linux_workqueue_init() to avoid panic.
- use INIT_ONCE/FINI_ONCE to linux_workqueue_{init,fini}() for being called from dwc2.

TODO: dwc2 should be written as kernel module depenging on a linux module.


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
1.43 27-Aug-2018 riastradh

Workqueue lock must be at IPL_VM for use in interrupts, duh.


1.42 27-Aug-2018 riastradh

Don't skimp on the last batch of work when worker is dying.

This is capitalism. We can't afford to waste time the worker could
spend on labour even if we work 'em to death!


1.41 27-Aug-2018 riastradh

Sprinkle dtrace probes all over the Linux workqueue stuff.


1.40 27-Aug-2018 riastradh

Fix post-cancellation case of queue_delayed_work.

Request the callout queue immediately, as if it hadn't been cancelled
at all, rather than reschedule for the next tick.


1.39 27-Aug-2018 riastradh

Rework Linux workqueue synchronization yet again.

- Use a low bit in the pointer to the queue, rather than whether the
pointer is null or not, to determine whether the work item is
queued/scheduled.

- _Preserve_ the pointer to the queue after we release the work.

- Release the work _before_ executing the function, not after.

This simplifies some things: we no longer have to distinguish whether
the work is queued or running in the functions where we are trying to
modify it. The pointer has to be preserved even after the work is
released so that we can flush the workqueue after the work has been
released.


1.38 27-Aug-2018 riastradh

Fix flush_delayed_work semantics: run it now if it was scheduled.


1.37 27-Aug-2018 riastradh

Reorder fields to get better space savings than bit fields.


1.36 27-Aug-2018 riastradh

Document workqueue semantics as I understand it.


1.35 27-Aug-2018 riastradh

Avoid the prospect of callout calls piling up.

Don't ever callout_schedule the callout while an existing call may be
in progress.

Echo some cases from cancel_delayed_work in flush_delayed_work.


1.34 27-Aug-2018 riastradh

Don't let more than one thread claim credit for cancellation.


1.33 27-Aug-2018 riastradh

Factor out waiting for current work.


1.32 27-Aug-2018 riastradh

Merge two similar branches.


1.31 27-Aug-2018 riastradh

Deduplicate callout destruction.


1.30 27-Aug-2018 riastradh

Deduplicate callout initialization.


1.29 27-Aug-2018 riastradh

Handle a bazillion additional cases I hadn't considered.

There's a lot of duplication here. To be deduplicated in a
subsequent commit.


1.28 27-Aug-2018 riastradh

Fix semantics of flush_work and flush_delayed_work.

- Change return type to void.
=> Upstream it is bool, but exactly one of hundreds of callers
actually use it, and I don't think the semantics is clear.

- Make sure to wait for whichever of the current work _and_ the next
batch queued is currently there in the workqueue.

- Don't retry a cancelled callout. Cancellation in the state
DELAYED_WORK_CANCELLED is guaranteed.


1.27 27-Aug-2018 riastradh

Reverse the sense of some branches for simplicity.


1.26 27-Aug-2018 riastradh

Fix bugs in workqueue destruction.


1.25 27-Aug-2018 riastradh

Fully initialize workqueue struct. Zalloc for paranoia.


1.24 27-Aug-2018 riastradh

No need to retry in cancel_delayed_work_sync after all.


1.23 27-Aug-2018 riastradh

Deduplicate post-cancellation logic.


1.22 27-Aug-2018 riastradh

Don't touch a work after it is released.


1.21 27-Aug-2018 riastradh

Non-waiting cancellation may need to release work too.


1.20 27-Aug-2018 riastradh

After cancel and callout_halt, may need to reload workqueue.


1.19 27-Aug-2018 riastradh

Don't wait forever to flush if the worker thread has no work.


1.18 27-Aug-2018 riastradh

Sprinkle some assertions.


1.17 27-Aug-2018 riastradh

Exercise greater care in acquiring and releasing work.


1.16 27-Aug-2018 riastradh

Add missing break.


1.15 27-Aug-2018 riastradh

Add KASSERT about state after callout fires.


1.14 27-Aug-2018 riastradh

Work is not necessarily queued in flush_work either.

Regularize style: use initializer only if the wq is guaranteed, and
confirmed by KASSERT, to be set


1.13 27-Aug-2018 riastradh

Work is not necessarily queued in cancel_work.


1.12 27-Aug-2018 riastradh

Draft rewrite of Linux workqueue reimplementation.

Just use an explicit thread; don't attempt to fudge it with
workqueue(9). No doubt there are various mistakes in here, but they
should be easier to get right than the mega-kludgerific nonsense that
preceded this draft.


1.11 27-Aug-2018 riastradh

Make flush_delayed_work actually run it. Oops.

XXX pullup-7
XXX pullup-8


1.10 27-Aug-2018 riastradh

Disable broken workqueue_whoami garbage.


1.9 27-Aug-2018 riastradh

Omit vestigial cruft.


1.8 27-Aug-2018 riastradh

Try to avoid uninitialized garbage that gcc helpfully ignores.


1.7 27-Aug-2018 riastradh

Try not to ask rbtree to overwrite random fields with garbage.


1.6 27-Aug-2018 riastradh

Add system_power_efficient_wq.


1.5 27-Aug-2018 riastradh

Implement flush_delayed_work.


1.4 27-Aug-2018 riastradh

Also Linux wants work->func to work.


1.3 27-Aug-2018 riastradh

Add mega-kludgerific current_work().


1.2 27-Aug-2018 riastradh

Add system_long_wq.


Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
1.1 24-Feb-2016 skrll

branches: 1.1.2; 1.1.6; 1.1.10; 1.1.22; 1.1.24; 1.1.26;
Move linux_work.c and workqueue.h from sys/external/bsd/drm2 to
sys/external/common so that they can be used by others.

LGTM from riastradh@

These should really live outside sys/external, but that can be decided
later