summaryrefslogtreecommitdiff
path: root/sys/conf
AgeCommit message (Collapse)Author
2022-11-06Add FDT-based attachment for qciic(4).Patrick Wildt
ok kettenis@
2022-11-06Add FDT-based attachment for qcgpio(4).Patrick Wildt
ok kettenis@
2022-11-05clockintr(9): initial commitScott Soule Cheloha
clockintr(9) is a machine-independent clock interrupt scheduler. It emulates most of what the machine-dependent clock interrupt code is doing on every platform. Every CPU has a work schedule based on the system uptime clock. For now, every CPU has a hardclock(9) and a statclock(). If schedhz is set, every CPU has a schedclock(), too. This commit only contains the MI pieces. All code is conditionally compiled with __HAVE_CLOCKINTR. This commit changes no behavior yet. At a high level, clockintr(9) is configured and used as follows: 1. During boot, the primary CPU calls clockintr_init(9). Global state is initialized. 2. Primary CPU calls clockintr_cpu_init(9). Local, per-CPU state is initialized. An "intrclock" struct may be installed, too. 3. Secondary CPUs call clockintr_cpu_init(9) to initialize their local state. 4. All CPUs repeatedly call clockintr_dispatch(9) from the MD clock interrupt handler. The CPUs complete work and rearm their local interrupt clock, if any, during the dispatch. 5. Repeat step (4) until the system shuts down, suspends, or hibernates. 6. During resume, the primary CPU calls inittodr(9) and advances the system uptime. 7. Go to step (2). This time around, clockintr_cpu_init(9) also advances the work schedule on the calling CPU to skip events that expired during suspend. This prevents a "thundering herd" of useless work during the first clock interrupt. In the long term, we need an MI clock interrupt scheduler in order to (1) provide control over the clock interrupt to MI subsystems like timeout(9) and dt(4) to improve their accuracy, (2) provide drivers like acpicpu(4) a means for slowing or stopping the clock interrupt on idle CPUs to conserve power, and (3) reduce the amount of duplicated code in the MD clock interrupt code. Before we can do any of that, though, we need to switch every platform over to using clockintr(9) and do some cleanup. Prompted by "the vmm(4) time bug," among other problems, and a discussion at a2k19 on the subject. Lots of design input from kettenis@. Early versions reviewed by kettenis@ and mlarkin@. Platform-specific help and testing from kettenis@, gkoehler@, mlarkin@, miod@, aoyama@, visa@, and dv@. Babysitting and spiritual guidance from mlarkin@ and kettenis@. Link: https://marc.info/?l=openbsd-tech&m=166697497302283&w=2 ok kettenis@ mlarkin@
2022-09-30re-enable POOL_DEBUGJonathan Gray
ok deraadt@
2022-09-27we are now working on 7.2-currentTheo de Raadt
2022-09-24disable POOL_DEBUG for releaseJonathan Gray
ok deraadt@
2022-09-11drop the -betaTheo de Raadt
2022-07-29Replace the swap extent(9) usage by a blist data structure.Sebastien Marie
It makes uvm_swap_free() faster: extents have a cost of O(n*n) which doesn't really scale with gigabytes of swap. Based on initial work from mpi@ The blist implementation comes from DragonFlyBSD. The diff adds also a ddb(4) 'show swap' command to show the blist and help debugging, and fix some off-by-one in size printed during hibernate. ok mpi@
2022-07-20move to 7.2-beta. this gets done very early, to avoid finding outTheo de Raadt
version number issues close to release
2022-07-12Add db_rint(), an MI interface to db_enter() copied from kdbrint() in vax codeJeremie Courreges-Anglas
If ddb.console is set and your serial console driver uses it, db_rint(), lets you enter ddb(4) by typing the ESC D escape sequence. This is useful for drivers like sfuart(4) where the hardware doesn't have a true BREAK mechanism. Suggested by miod@, ok kettenis@ miod@
2022-04-19enable kstat(4) and kstat(1).David Gwynne
kstat allows the kernel to expose arbitrary data for userland to consume. currently this is used by some network card drivers to expose hardware counters they provide, and a bit by the network stack to show things like ifq counters. ok bluhm@ deraadt@
2022-04-13Use a simpler "formula" to decide a default kern.maxthread value;Stuart Henderson
just 2*NPROCESS rather than NPROCESS+8*MAXUSERS. Results in a slightly higher maxthread value - the previous value was fairly likely to be exceeded on a system running a couple of heavily threaded processes. > previous new > MAXUSERS NPROCESS maxthread (2*NPROCESS) > 80 1310 1950 2620 > 64 1054 1566 2108 > 32 542 798 1084 ok kettenis@
2022-04-05re-enable POOL_DEBUGChristian Weisgerber
2022-04-05back to working on 7.1-currentTheo de Raadt
2022-04-05disable pool debug for releaseTheo de Raadt
2022-03-29close enough to release, we drop -betaTheo de Raadt
2022-03-19Add 11ac/VHT Tx rate adaptation support to net80211.Stefan Sperling
Based on our existing RA module for 11n. The main difference is in dealing with 11ac-specific ratesets. Tx rate selection heuristics remain identical. Only supports 80MHz channels, for now. 160MHz is left for future work. ok sthen@
2022-03-08remove files used by isa radio drivers removed in 2016Jonathan Gray
lm700x: az, rt tc921x: sfr pt2254a: sfr, sf2r
2022-03-07remove WD33C93 SCSI codeJonathan Gray
used by wdsc on sgi (removed in 2021) ok krw@
2022-03-06remove unused usbdev and btbus attributesJonathan Gray
2022-02-20we should be 7.1-beta not 7.1-currentStuart Henderson
2022-02-20move to 7.1-betaTheo de Raadt
2022-02-16rewrite vxlan to better fit the current kernel infrastructure.David Gwynne
the big change is removing the integration with and reliance on bridge(4) for learning vxlan endpoints. we have the etherbridge layer now (which is used by veb, nvgre, bpe, etc) so vxlan can operate independently of bridge(4) (or any other driver) while still dynamically learning about other endpoints. vxlan now uses the udp socket upcall mechanism to receive packets. this means it actually creates and binds udp sockets to use rather adding code in the udp layer for stealing packets from the udp layer. i think it's also important to note that this adds loop prevention to the code. this stops a vxlan interface being used to transmit a packet that was encapsulated in itself. i want to clear this out of my tree where it's been sitting for nearly a year. noone seems too concerned with the change either way. ok claudio@
2022-02-08The suspend/resume code is a sticky mess of MI, MD, and ACPI sequencing.Theo de Raadt
This splits out the MI sequencing, backing it with per-architecture helper functions. Further steps will be neccesary because ACPI and MD are too tightly coupled, but soon we'll be able to use this code for more architectures (which depends on figuring out the lowest-level cpu sleeping method) ok kettenis
2022-01-09Add attribute for indicating sdhc dependency.Visa Hankala
OK deraadt@ phessler@
2022-01-04remove the last part of driver for aic-6250 scsi on aviionJonathan Gray
2021-12-23Template for option WITNESS is in the architecture GENERIC.MP fileAlexander Bluhm
if it is supported. Remove it from the global GENERIC config. OK visa@ claudio@
2021-11-11Retire switch(4) it never really was production ready and the OpenFlowClaudio Jeker
API implemented is a deadend. OK akoshibe@ yasuoka@ deraadt@ kn@ patrick@ sthen@
2021-11-08remove reference to ieee80211_mira.c which has been sent to the AtticStefan Sperling
2021-09-22enable POOL_DEBUG again.Sebastian Benoit
2021-09-22we are now working on 7.0-currentTheo de Raadt
2021-09-19disable pool debug for releaseSebastian Benoit
ok deraadt@
2021-09-13take us out of betaTheo de Raadt
2021-09-03add kprobes provider for dtJasper Lievisse Adriaanse
this allows us to dynamically trace function boundaries with btrace by patching prologues and epilogues with a breakpoint upon which the handler records the data, sends it back to userland for btrace to consume. currently it's hidden behind DDBPROF, and there is still a lot to cleanup and improve, but basic scripts that observe return codes from a probed function work. from Tom Rollet, with various changes by me feedback and ok mpi@
2021-08-177.0-betaTheo de Raadt
2021-06-29move some config lines to ensure drm.h is always createdJonathan Gray
ok deraadt@ kettenis@
2021-05-02Put -stable template into #if 0 section of current newvers.sh.Alexander Bluhm
OK deraadt@
2021-04-28Enable dt(4) on amd64, arm64, i386, and powerpc64 in GENERIC kernel.Alexander Bluhm
Support to skip frames is missing on arm64 and i386, but the stack traces are useful anyway. sparc64 should work, but I could not test it. Other architectures do not have stacktrace_save_at() and dynamic tracer does not link. from patrick@; OK semarie@
2021-04-22reenable POOL_DEBUGChristian Weisgerber
2021-04-18post 6.9 development continues...Theo de Raadt
2021-04-16Unhook ieee80211_mira.c from the build. All consumers have switched to RA.Stefan Sperling
Keeping files in CVS HEAD for now until we are certain we're not going back. ok deraadt@
2021-04-11bwfm(4) needs firmloadkn
Otherwise compiling a kernel witout any other wifi drivers fails. OK patrick deraadt
2021-04-07disable POOL_DEBUG for releaseJonathan Gray
ok deraadt@
2021-04-04leave -betaTheo de Raadt
2021-03-31Make ddb's dependency on libz explicit.Visa Hankala
OK deraadt@ mpi@
2021-03-12Add RA, a new 11n Tx rate adaptation module for net80211.Stefan Sperling
Written by Christian Ehrhardt and myself, based on ieee80211_mira.c but with significant changes. The main difference is that RA does not attempt to precisely measure actual throughput but simply deducts a loss percentage from the theoretical throughput which can be achieved by a given MCS. Unlike MiRa, RA does not use timeouts to trigger probing. Probing is triggered only by changes in measured throughput. Unlike MiRA, RA doesn't care whether a frame was part of an A-MPDU. RA simply collects statistics for individual subframes. This makes reporting very easy for drivers and seems to work well enough in practice. Another difference is that drivers can report multi-rate retries properly via ieee80211_ra_add_stats_ht(mcs, total, fail) which can be called several times before ieee80211_ra_choose() selects a new Tx rate. There is no reason any issues could not be fixed in ieee8011_mira.c but I felt it was a good moment to burn the house down and start over. And since this code diverges from how MiRA is described in the research paper applying the "MiRA" label becomes inappropriate.
2021-02-25enable veb(4), it's time for wider testing.David Gwynne
apart from the semantic differences between bridge(4) and veb(4), the only missing bits in veb(4) is the transparent ipsec interception support, and spanning tree.
2021-02-23add veb(4), a Virtual Ethernet Bridge driver.David Gwynne
my intention is to replace bridge(4), but the way it works is different enough from from bridge that a name change is justified to distinguish them. it also makes it easier to commit it to the tree and work on it in parallel to bridge, and allows a window of migration. the main difference between veb(4) and bridge(4) is how they use interfaces as ports. veb takes over interfaces completely and only uses them to receive and transmit ethernet packets. bridge also use each interface as a port to the ethernet segment it's connected to, but also tries to continue supporting the use of the interface as a way to talk to the network stack on the local system. supporting the use of interfaces for both external and local communication is where most of my confusion with bridge comes from, both when i'm trying to operate it and also understand the code. changing this semantic is where most of the simplification in veb comes from compared to bridge. because veb takes over interfaces, the ethernet network set up on a veb is isolated from the host network stack. by default veb does not interact with pf or the ip (and mpls) stacks. to enable pf for ip frames going over veb ports link1 on the veb interface must be set. to have the stack interact with a veb network, vport interfaces must be created and added as ports to a veb. the vport interface driver is provided as part of veb, and is handled specially by veb. veb usually prevents the use of ports by the stack for sending an receiving packets, but that's why vports exist, so veb has special handling for them. veb already supports a lot of the other features that bridge has, including bridge rules and protected domains, but i got tired of working out of the tree and stopped implementing them. the main outstanding features is better address table management, the blocknonip flag on ports, transparent ipsec interception, and spanning tree. i may not bother with spanning tree unless someone tells me that they actually use it. the core ethernet learning bridge functionality is provided by the etherbridge code that was factored out of nvgre and bpe. veb is already (a lot) faster than bridge, and is better prepared to operate in parallel on multiple CPUs concurrently. thanks to hrvoje popovski for testing some earlier versions of this. discussed with many ok patrick@ jmatthew@
2021-02-21cut nvgre(4) over to use common etherbridge code.David Gwynne
the "ports" that nvgre provides to etherbridge are ip addresses used in the underlay network. ok patrick@ jmatthew@
2021-02-21cut bpe(4) over to using the common etherbridge code.David Gwynne
it's pretty straightforward since etherbridge was mostly based on this code in the first place. the etherbridge_ops that bpe provides to etherbridge set entries up to point at mac addresses in the underlay network. ok patrick@ jmatthew@