Commit Graph

294655 Commits

Author SHA1 Message Date
riastradh 75757ff565 usbnet: Set and clear IFF_RUNNING slightly earlier and later.
- Set IFF_RUNNING before any calls to usbnet_rxeof are possible.
- Don't clear IFF_RUNNING until all transfers have been aborted.
2022-03-03 05:46:58 +00:00
riastradh ebb95733e5 usbnet: Simplify usbnet_isdying.
usbnet_detach (or its caller) stops all users before it returns.

If un->un_pri is null at this point, there's a bug -- something
didn't wait for everything to finish before calling usbnet_detach.
2022-03-03 05:46:50 +00:00
sjg 57865d3c11 Add nofilemon to meta mode tests
The unit-tests for meta mode do not depend on filemon.
Adding nofilemon to .MAKE.MODE allows these to pass on
a system that would use filemon_dev but does not have
the module loaded.
2022-03-02 19:32:15 +00:00
ozaki-r 7b24996912 mount_9p: check returned type for Tread 2022-03-02 07:48:20 +00:00
ozaki-r ab2dc16550 mount_9p: fix writing to a file opened with write-only mode
With the page cache, writing data to a file may demand to read contents
from a storage to fill a page in the page cache first.

Opening a file with write-only mode by a user lets a mount_9p process
open a file with write-only mode too at a 9p server.  Thus, a read
request to the file from the page cache fails.

So we need to open a file always with read mode (internally) even if it
is opened with write-only mode by a user.

Note that the change doesn't mean that mount_9p allows users to read
contents from a file that is opened with write-only mode.
2022-03-02 04:11:41 +00:00
gutteridge 08a9f63190 LOGIN: fix typo in description 2022-03-02 01:55:18 +00:00
rillig e186a41835 lint: remove redundant assignments to string buffer length
No functional change.
2022-03-01 20:00:47 +00:00
blymn f596e5447e Add the -F flag to the getopt string, it was there in the help and
in the arguments handling but getopt was not told about it.
2022-03-01 06:41:27 +00:00
rillig b8eac53e2f lint: add debug logging for symbols and the symbol table
This logging is not active by default, the functions debug_sym and
debug_symtab can be called as needed during a debug session.
2022-03-01 00:17:12 +00:00
rillig 79ea65346a lint: constify lexer keywords
No functional change.
2022-02-28 22:41:07 +00:00
riastradh 3eb670e512 drm: Fix ACPI crud in ALL kernel build. 2022-02-28 17:15:29 +00:00
joerg 2a95db84d8 When MKDEBUG is use, build LLVM with -g1 to significantly reduce debug
information. This still includes types and line tables, but skips e.g.
local variables and inline tracking.
2022-02-28 16:30:10 +00:00
wiz 9bc9835ae0 seq(1): add more examples, improve wording
From OpenBSD via jmc@OpenBSD
2022-02-28 13:49:50 +00:00
hannken 0ed40efe13 Revert the hack from the last commit now that VOP_UNLOCK()
no longer may hold v_interlock or vmobjlock.
2022-02-28 08:45:36 +00:00
hannken 73e2bd4a3d vrelel(): no VOP_UNLOCK() with v_interlock or vmobjlock held. 2022-02-28 08:44:04 +00:00
rillig 8aa297ebd7 lint: reorganize lexer functions
Move the keywords table to the top, reduce forward declarations.

No functional change.
2022-02-27 22:46:04 +00:00
rillig 148d047bc2 lint: group symbol table functions
No functional change.
2022-02-27 22:26:12 +00:00
riastradh f2e69d434e i915: Disable PSR for now.
Something seems to be wrong with it, causing the display to get
stuck.  To be diagnosed -- this is a performance optimization, but
it's better to work than to fail to work even if failing to work
costs a little less energy!
2022-02-27 21:23:39 +00:00
riastradh 3c8f726867 acpi: Assert acpi_register_notify is not called twice. 2022-02-27 21:22:09 +00:00
riastradh 2071d9e93e i915: Use new acpidisp_register_notify for ACPI VGA events. 2022-02-27 21:22:01 +00:00
riastradh f5e43f4218 acpivga(4): Provide hooks for ACPI display notifications.
The Intel i915 graphics driver needs to receive ACPI VGA 0x80
notifications, but with NetBSD's ACPI API, each ACPI node -- such as
the VGA node -- can only have one notifier attached, and acpivga(4)
already uses it.
2022-02-27 21:21:51 +00:00
zafer 7fd3f7926f fix typo 2022-02-27 21:05:11 +00:00
rillig fddd84be4f tests/lint: add tests for messages about old-style functions 2022-02-27 20:02:43 +00:00
rillig ab0cea4ce1 lint: concatenate string literals from left to right
Previously, the string literals "1" "2" "3" "4" were concatenated in the
order "23", "234", "1234".  This influenced the location of the
diagnostics for traditional C (which doesn't know concatenation at all)
and for mixing regular strings and wide strings.

Now the diagnostics occur exactly where they are expected.  The first
string literal defines whether the whole string is regular or wide, and
any further string literals must match it.

In traditional C mode, there are more diagnostics than before, but that
doesn't hurt since they are still correct and nobody uses lint in
traditional C mode anyway.
2022-02-27 19:32:51 +00:00
riastradh 6810334000 mips: Issue a sync plunger at the end of mutex_spin_exit.
Same as mutex_exit.  Relevant only on cnMIPS where the store buffers
get clogged.  Recommended by the Cavium documentation.  No semantic
change, only performance -- this only adds a barrier in some cases
where there was none before, so it can't hurt correctness.
2022-02-27 19:22:29 +00:00
riastradh 2c2e253c50 mips: Redefine LLSCSYNC as empty on non-Octeon MP.
This change deletes memory barriers on non-Octeon MP.  However, all
the appropriate acquire and release barriers are already used in
mutex stubs, and no barriers are needed in atomic_* unless we set
__HAVE_ATOMIC_AS_MEMBAR which we don't on MIPS.  So this should be
safe.

Unclear whether we need this even on Octeon -- don't have a clear
reference on why it's here.
2022-02-27 19:22:20 +00:00
riastradh aa41db1bd6 mips: Redefine BDSYNC as sync on Octeon, not syncw.
BDSYNC is used for membar_sync, which is supposed to be a full
sequential consistency barrier, which is not provided by syncw, so
this is necessary for correctness.

BDSYNC is not used for anything else, so this can't hurt performance,
except where it was necessary for correctness anyway or where the
semantic choice of membar_sync was too strong anyway.
2022-02-27 19:22:12 +00:00
riastradh 1945480f8d mips: Omit needless SYNC in mutex_exit.
This change deletes a memory barrier.  However, it should be safe:
The semantic requirement for this is already provided by the SYNC_REL
above, before the ll.  And as currently defined, SYNC_REL is at least
as strong as SYNC, so this change can't hurt correctness on its own
(barring CPU errata, which would apply to other users of SYNC_REL and
can be addressed in the definition of SYNC_REL).

Later, perhaps we can relax SYNC_REL to syncw on Octeon if we prove
that it is correct (e.g., if Octeon follows the SPARCv9 partial store
order semantics).

Nix now-unused SYNC macro in asm.h.
2022-02-27 19:22:02 +00:00
riastradh 05a5e24cff mips: Membar audit.
This change should be safe because it doesn't remove or weaken any
memory barriers, but does add, clarify, or strengthen barriers.

Goals:

- Make sure mutex_enter/exit and mutex_spin_enter/exit have
  acquire/release semantics.

- New macros make maintenance easier and purpose clearer:

  . SYNC_ACQ is for load-before-load/store barrier, and BDSYNC_ACQ
    for a branch delay slot -- currently defined as plain sync for MP
    and nothing, or nop, for UP; thus it is no weaker than SYNC and
    BDSYNC as currently defined, which is syncw on Octeon, plain sync
    on non-Octeon MP, and nothing/nop on UP.

    It is not clear to me whether load-then-syncw or ll/sc-then-syncw
    or even bare load provides load-acquire semantics on Octeon -- if
    no, this will fix bugs; if yes (like it is on SPARC PSO), we can
    relax SYNC_ACQ to be syncw or nothing later.

  . SYNC_REL is for load/store-before-store barrier -- currently
    defined as plain sync for MP and nothing for UP.

    It is not clear to me whether syncw-then-store is enough for
    store-release on Octeon -- if no, we can leave this as is; if
    yes, we can relax SYNC_REL to be syncw on Octeon.

  . SYNC_PLUNGER is there to flush clogged Cavium store buffers, and
    BDSYNC_PLUNGER for a branch delay slot -- syncw on Octeon,
    nothing or nop on non-Octeon.

    => This is not necessary (or, as far as I'm aware, sufficient)
       for acquire semantics -- it serves only to flush store buffers
       where stores might otherwise linger for hundreds of thousands
       of cycles, which would, e.g., cause spin locks to be held for
       unreasonably long durations.

  Newerish revisions of the MIPS ISA also have finer-grained sync
  variants that could be plopped in here.

Mechanism:

Insert these barriers in the right places, replacing only those where
the definition is currently equivalent, so this change is safe.

- Replace #ifdef _MIPS_ARCH_OCTEONP / syncw / #endif at the end of
  atomic_cas_* by SYNC_PLUNGER, which is `sync 4' (a.k.a. syncw) if
  __OCTEON__ and empty otherwise.

  => From what I can tell, __OCTEON__ is defined in at least as many
     contexts as _MIPS_ARCH_OCTEONP -- i.e., there are some Octeons
     with no _MIPS_ARCH_OCTEONP, but I don't know if any of them are
     relevant to us or ever saw the light of day outside Cavium; we
     seem to buid with `-march=octeonp' so this is unlikely to make a
     difference.  If it turns out that we do care, well, now there's
     a central place to make the distinction for sync instructions.

- Replace post-ll/sc SYNC by SYNC_ACQ in _atomic_cas_*, which are
  internal kernel versions used in sys/arch/mips/include/lock.h where
  it assumes they have load-acquire semantics.  Should move this to
  lock.h later, since we _don't_ define __HAVE_ATOMIC_AS_MEMBAR on
  MIPS and so the extra barrier might be costly.

- Insert SYNC_REL before ll/sc, and replace post-ll/sc SYNC by
  SYNC_ACQ, in _ucas_*, which is used without any barriers in futex
  code and doesn't mention barriers in the man page so I have to
  assume it is required to be a release/acquire barrier.

- Change BDSYNC to BDSYNC_ACQ in mutex_enter and mutex_spin_enter.
  This is necessary to provide load-acquire semantics -- unclear if
  it was provided already by syncw on Octeon, but it seems more
  likely that either (a) no sync or syncw is needed at all, or (b)
  syncw is not enough and sync is needed, since syncw is only a
  store-before-store ordering barrier.

- Insert SYNC_REL before ll/sc in mutex_exit and mutex_spin_exit.
  This is currently redundant with the SYNC already there, but
  SYNC_REL more clearly identifies the necessary semantics in case we
  want to define it differently on different systems, and having a
  sync in the middle of an ll/sc is a bit weird and possibly not a
  good idea, so I intend to (carefully) remove the redundant SYNC in
  a later change.

- Change BDSYNC to BDSYNC_PLUNGER at the end of mutex_exit.  This has
  no semantic change right now -- it's syncw on Octeon, sync on
  non-Octeon MP, nop on UP -- but we can relax it later to nop on
  non-Cavium MP.

- Leave LLSCSYNC in for now -- it is apparently there for a Cavium
  erratum, but I'm not sure what the erratum is, exactly, and I have
  no reference for it.  I suspect these can be safely removed, but we
  might have to double up some other syncw instructions -- Linux uses
  it only in store-release sequences, not at the head of every ll/sc.
2022-02-27 19:21:53 +00:00
riastradh 9240f0bf59 mips: Make sure that mutex_spin_exit works even if !DIAGNOSTIC.
The critical store has been under #ifdef DIAGNOSTIC since, uh, 2011.
2022-02-27 19:21:44 +00:00
rillig 0eb316d78b vmstat: unexport file-scope variable numdisks
There is no need to make this variable externally visible.  There are
several more variables in this file that could be unexported, leave
these for someone who knows whether vmstat.c is used by other parts of
the tree as well.

No functional change, OK mrg.
2022-02-27 19:00:46 +00:00
rillig 6262bf18d3 tests/lint: test where exactly lint complains about concatenation
This only applies to traditional C and ensures that the behavior is
preserved when rearranging the C parser to evaluate string concatenation
from left to right.
2022-02-27 18:57:16 +00:00
rillig e970c8c0da tests/lint: demonstrate unexpected ordering of string concatenations
When lint concatenates the strings "1" "2" "3" "4", it first
concatenates "23", then "234" and finally "1234".
2022-02-27 18:51:21 +00:00
rillig 900cc20080 lint: merge duplicate code for handling plain and wide strings
No functional change.  As before, the string literals "1" "2" "3" are
not concatenated from left to right, instead concatenation starts with
"23" and then proceeds to "123".
2022-02-27 18:29:14 +00:00
rillig e3262a2e12 lint: clean up code for handling filenames
No functional change.
2022-02-27 17:12:06 +00:00
jakllsch 924c79c8d3 only build linux_acpi.c if we have acpi(4) in the kernel 2022-02-27 15:02:58 +00:00
riastradh d74951364b drm: Use ACPI_FREE, not kfree, for ACPI_ALLOCATE_BUFFER result.
Most of this code is not currently enabled, but it might be enabled
soon.
2022-02-27 14:24:26 +00:00
riastradh 1b1d530c73 vmem(9): Assert addresses are quantum-aligned. 2022-02-27 14:24:11 +00:00
riastradh e4a2ed4f90 amdgpu: Make amdgpu_bios.c ACPI stuff build. 2022-02-27 14:23:24 +00:00
riastradh 742aa562a4 radeon: Make radeon_bios.c ACPI stuff build. 2022-02-27 14:23:16 +00:00
riastradh 833d5b2e00 linux: Define PCI_CLASS_DISPLAY_OTHER, wanted by radeon/amdgpu. 2022-02-27 14:23:08 +00:00
riastradh b2dc201f43 linux: Define acpi_size as alias for ACPI_SIZE. 2022-02-27 14:22:50 +00:00
riastradh 7282f92ed4 drm: Move Linux ACPI case aliases to new nbsd-namespace-acpi.h. 2022-02-27 14:22:42 +00:00
riastradh 9996ea54bf drm: Omit needless conditionals around #include "acpica.h". 2022-02-27 14:22:29 +00:00
riastradh c981a8797d drm: Move acpi_check_dsm &c. from intel_acpi.c to new linux_acpi.c. 2022-02-27 14:22:21 +00:00
riastradh 19ebad9e18 i915: Omit needless ifdefs around ACPI API. 2022-02-27 14:20:30 +00:00
riastradh b07b58a53d i915: Use pci_get_segment, not 0. 2022-02-27 14:19:35 +00:00
riastradh 96633a0d67 drm: Deconditionalize pci_get_segment. 2022-02-27 14:19:20 +00:00
riastradh 402ed3092e acpi: Nix conditional pci_get_segment use.
New MI default of 0 serves.
2022-02-27 14:19:07 +00:00
riastradh 6124f7e542 pci(9): Provide default definition of pci_get_segment, always zero.
pci_machdep.h can define __HAVE_PCI_GET_SEGMENT to provide a nonzero
definition.
2022-02-27 14:18:52 +00:00