OpenBSD cvs log

created 2020-11-29T23:30:10Z
begin 2020-10-07T00:00:00Z
end 2020-10-08T00:00:00Z
path src/sys
commits 20

date 2020-10-07T01:15:18Z
author jsg
files src/sys/dev/pci/pcidevs log diff annotate
message add Intel 495 Series LP PCH and Ice Lake graphics ids

date 2020-10-07T01:18:26Z
author jsg
files src/sys/dev/pci/pcidevs.h log diff annotate
message regen

date 2020-10-07T01:18:27Z
author jsg
files src/sys/dev/pci/pcidevs_data.h log diff annotate
message regen

date 2020-10-07T06:26:43Z
author jsg
files src/sys/dev/pci/pcidevs log diff annotate
message add Intel 400 Series and 400 Series V PCH ids

date 2020-10-07T06:27:22Z
author jsg
files src/sys/dev/pci/pcidevs.h log diff annotate
message regen

date 2020-10-07T06:27:23Z
author jsg
files src/sys/dev/pci/pcidevs_data.h log diff annotate
message regen

date 2020-10-07T11:14:59Z
author jsg
files src/sys/dev/pci/pcidevs log diff annotate
message add more Intel 100, 200 and 300 Series PCH ids

date 2020-10-07T11:15:31Z
author jsg
files src/sys/dev/pci/pcidevs.h log diff annotate
src/sys/dev/pci/pcidevs_data.h log diff annotate
message regen

date 2020-10-07T11:17:59Z
author jsg
files src/sys/dev/pci/dwiic_pci.c log diff annotate
message match on more Intel dwiic pci ids

date 2020-10-07T11:19:28Z
author jsg
files src/sys/dev/pci/pchtemp.c log diff annotate
message match on more pch thermal ids

date 2020-10-07T11:20:41Z
author jsg
files src/sys/dev/pci/pucdata.c log diff annotate
message match on more pch kt ids

date 2020-10-07T11:23:05Z
author jsg
files src/sys/dev/pci/ichiic.c log diff annotate
message match more Intel PCH SMBus ids

date 2020-10-07T12:13:23Z
author mpi
files src/sys/arch/m88k/m88k/softintr.c log diff annotate
src/sys/arch/mips64/mips64/softintr.c log diff annotate
src/sys/arch/powerpc64/powerpc64/softintr.c log diff annotate
src/sys/arch/sh/sh/interrupt.c log diff annotate
message Include <sys/systm.h> directly instead of relying on hidden UVM includes.

The header is being pulled via uvm_extern.h -> uvm_map.h

date 2020-10-07T12:26:20Z
author mpi
files src/sys/uvm/uvm_mmap.c log diff annotate
message Do not release the KERNEL_LOCK() when mmap(2)ing files.

Previous attempt to unlock amap & anon exposed a race in vnode reference
counting. So be conservative with the code paths that we're not fully moving
out of the KERNEL_LOCK() to allow us to concentrate on one area at a time.

The panic reported was:

....panic: vref used where vget required
....db_enter() at db_enter+0x5
....panic() at panic+0x129
....vref(ffffff03b20d29e8) at vref+0x5d
....uvn_attach(1010000,ffffff03a5879dc0) at uvn_attach+0x11d
....uvm_mmapfile(7,ffffff03a5879dc0,2,1,13,100000012) at uvm_mmapfile+0x12c
....sys_mmap(c50,ffff8000225f82a0,1) at sys_mmap+0x604
....syscall() at syscall+0x279

Note that this change has no effect as long as mmap(2) is still executed with
ze big lock.

ok kettenis@

date 2020-10-07T12:33:03Z
author mpi
files src/sys/kern/vfs_vops.c log diff annotate
message Document that `a_p' is always curproc by using a KASSERT().

One exception of this rule is VOP_CLOSE() where NULL is used instead
of curproc when the garbace collector of unix sockets, that runs in
a kernel thread, drops the last reference of a file.

This will allows for future simplifications of the VFS interfaces.

Previous version ok visa@, anton@.

ok kn@

date 2020-10-07T13:37:32Z
author jan
files src/sys/arch/arm64/arm64/conf.c log diff annotate
message Remove dead marko cdev_joy_init.

ok mpi@, kettenis@, patrick@

date 2020-10-07T13:37:33Z
author jan
files src/sys/arch/amd64/amd64/conf.c log diff annotate
message Remove dead marko cdev_joy_init.

ok mpi@, kettenis@, patrick@

date 2020-10-07T15:45:00Z
author cheloha
files src/sys/kern/kern_time.c log diff annotate
message getitimer(2), setitimer(2): merge critical sections

Merge the common code from sys_getitimer() and sys_setitimer() into a
new kernel subroutine, setitimer(). setitimer() performs all of the
error-free work for both system calls within a single critical
section. We need a single critical section to make the setitimer(2)
timer swap operation atomic relative to realitexpire() and hardclock(9).

The downside of the new atomicity is that the behavior of setitimer(2)
must change. With a single critical section we can no longer copyout(9)
the old timer before installing the new timer. So If SCARG(uap, oitv)
points to invalid memory, setitimer(2) now fail with EFAULT but the
new timer will be left running. You can see this in action with code
like the following:

struct itv, olditv;

itv.it_value.tv_sec = 1;
itv.it_value.tv_usec = 0;
itv.it_interval = itv.it_value;

/* This should EFAULT. 0x1 is probably an invalid address. */
if (setitimer(ITIMER_REAL, &itv, (void *)0x1) == -1)
warn("setitimer");

/* The timer will be running anyway. */
getitimer(ITIMER_REAL, &olditv);
printf("time left: %lld.%06ld\n",
olditv.it_value.tv_sec, olditv.it_value.tv_usec);

There is no easy way to work around this. Both FreeBSD's and Linux's
setitimer(2) implementations have a single critical section and they
too fail with EFAULT in this case and leave the new timer running.
I imagine their developers decided that fixing this error case was
a waste of effort. Without permitting copyout(9) from within a mutex
I'm not sure it is even possible to avoid it on OpenBSD without
sacrificing atomicity during a setitimer(2) timer swap.

Given the rarity of this error case I would rather have an atomic swap.

Behavior change discussed with deraadt@.

date 2020-10-07T16:17:25Z
author cheloha
files src/sys/kern/kern_time.c log diff annotate
message getitimer(2), setitimer(2): ITIMER_REAL: call getnanouptime(9) once

Now that the critical sections are merged we should call
getnanouptime(9) once. This makes an ITIMER_REAL timer swap atomic
with respect to the clock: the time remaining on the old timer is
computed with the same timestamp used to schedule the new timer.

date 2020-10-07T17:53:44Z
author cheloha
files src/sys/kern/kern_time.c log diff annotate
message sys_getitimer(), sys_setitimer(): style(9), misc. cleanup

- Consolidate variable declarations.
- Remove superfluous parentheses from return statements.
- Prefer sizeof(variable) to sizeof(type) for copyin(9)/copyout(9).
- Remove some intermediate pointers from sys_setitimer(). Using SCARG()
directly here makes it more obvious to the reader what you're copying.