The NetBSD Project

CVS log for src/sys/arch/amd64/amd64/locore.S

[BACK] Up to [cvs.NetBSD.org] / src / sys / arch / amd64 / amd64

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.214.4.2 / (download) - annotate - [select for diffs], Wed Oct 18 15:19:09 2023 UTC (5 months, 1 week ago) by martin
Branch: netbsd-10
CVS Tags: netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1
Changes since 1.214.4.1: +2 -2 lines
Diff to previous 1.214.4.1 (colored) to branchpoint 1.214 (colored) next main 1.215 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by bouyer in ticket #427):

	sys/arch/xen/include/hypervisor.h: revision 1.58
	sys/arch/i386/i386/locore.S: revision 1.197
	sys/arch/amd64/amd64/locore.S: revision 1.224

Xen's start_info_t is larger than 512 bytes these days, so bump the copy
size to a whole PAGE_SIZE, and CTASSERT() that start_info_t is smaller.

Luckily we didn't use yet the parts skipped

Revision 1.224 / (download) - annotate - [select for diffs], Mon Oct 16 17:29:30 2023 UTC (5 months, 1 week ago) by bouyer
Branch: MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, HEAD
Changes since 1.223: +2 -2 lines
Diff to previous 1.223 (colored) to selected 1.85 (colored)

Xen's start_info_t is larger than 512 bytes these days, so bump the copy
size to a whole PAGE_SIZE, and CTASSERT() that start_info_t is smaller.
Luckily we didn't use yet the parts skipped

Revision 1.223 / (download) - annotate - [select for diffs], Sun Jul 16 19:55:43 2023 UTC (8 months, 1 week ago) by riastradh
Branch: MAIN
Changes since 1.222: +15 -1 lines
Diff to previous 1.222 (colored) to selected 1.85 (colored)

x86: Sprinkle extensive commentary about %fs/%gs initialization.

Plus some other side quests like the three-stage GDT metamorphosis
lifecycle.

No functional change intended.

Revision 1.222 / (download) - annotate - [select for diffs], Sat Jun 24 05:31:04 2023 UTC (9 months ago) by msaitoh
Branch: MAIN
Changes since 1.221: +2 -2 lines
Diff to previous 1.221 (colored) to selected 1.85 (colored)

Fix typo in comment.

Revision 1.221 / (download) - annotate - [select for diffs], Sun May 14 09:05:39 2023 UTC (10 months, 2 weeks ago) by riastradh
Branch: MAIN
Changes since 1.220: +8 -8 lines
Diff to previous 1.220 (colored) to selected 1.85 (colored)

x86/locore.S: Nix trailing whitespace.

Revision 1.214.4.1 / (download) - annotate - [select for diffs], Sat May 13 13:26:57 2023 UTC (10 months, 2 weeks ago) by martin
Branch: netbsd-10
Changes since 1.214: +149 -1 lines
Diff to previous 1.214 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by manu in ticket #159):

	share/man/man8/man8.x86/boot.8: revision 1.27
	sys/arch/i386/stand/efiboot/version: revision 1.3
	share/man/man8/man8.x86/boot.8: revision 1.28
	share/man/man8/man8.x86/boot.8: revision 1.29
	sys/arch/i386/stand/lib/exec.c: revision 1.79
	sys/arch/i386/stand/efiboot/efiboot.c: revision 1.13
	sys/arch/i386/stand/efiboot/bootx64/efibootx64.c: revision 1.6
	sys/arch/i386/stand/efiboot/bootia32/efibootia32.c: revision 1.6
	sys/arch/i386/stand/efiboot/boot.c: revision 1.22
	sys/arch/amd64/amd64/locore.S: revision 1.219
	sys/arch/i386/stand/efiboot/bootia32/startprog32.S: revision 1.3
	sys/arch/i386/stand/efiboot/efiboot.h: revision 1.12
	sys/arch/amd64/conf/files.amd64: revision 1.121
	sys/arch/amd64/conf/std.amd64: revision 1.13
	share/man/man8/man8.x86/pxeboot.8: revision 1.6
	sys/arch/i386/stand/efiboot/bootx64/startprog64.S: revision 1.4
	sys/arch/amd64/amd64/locore.S: revision 1.220
	share/man/man8/man8.x86/dosboot.8: revision 1.4
	share/man/man4/options.4: revision 1.524

Add reloc keyworkd to let EFI bootstrap load amd64 kernel at any address

EFI bootstrap assumes it can copy the amd64 kernel to its ELF load
address (that is KERNTEXTOFF - KERNBASE = 0x200000), but it can
clash with previous UEFI memory allocation, as described here:
http://mail-index.netbsd.org/tech-kern/2023/04/07/msg028833.html

This change adds a reloc keyword for controling where the EFI
boostrap will copy the kernel image. Possible values are:
default - the default and prior behavior, copy at 0x200000.
none - do not copy and use the kernel image where it was loaded.
address - specify an explicit address where to copy the kernel.

This comes with an amd64 kernel patch that makes it self-relocatable.
It first discover where it was loaded in memory, and if this is
different than the expected 0x200000, hhe the kernel relocates
itself and start over at the right address.


Merge x86 boot options in x86/boot(8) and add undocumented UEFI options

We were supposed to keep the option list in x86/boot(8), x86/dosoot(8)
and x86/pxeboot(8) in sync, but it did not happen, hence it may work
better with all the options in x86/boot(8). Also add the undocumented
UEFI boot options.


Add a SELFRELOC kernel option for the sake of documentation clarity.
Instead of telling that x86/boot(8) reloc command needs a kernel able
to self relocate, we can tell it needs a kernel built with the
SELFRELOC option. This keeps the reader from wondering what could
make a kernel able to self relocate.

Remove XXX todo marker left by mistake

Raise the version for new feature (here reloc command)
Suggested by Masanobu SAITOH

Revision 1.185.2.1 / (download) - annotate - [select for diffs], Sat May 13 11:45:53 2023 UTC (10 months, 2 weeks ago) by martin
Branch: netbsd-9
Changes since 1.185: +149 -1 lines
Diff to previous 1.185 (colored) next main 1.186 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by manu in ticket #1632):

	share/man/man8/man8.x86/boot.8: revision 1.27
	sys/arch/i386/stand/efiboot/version: revision 1.3
	share/man/man8/man8.x86/boot.8: revision 1.28 (via patch)
	share/man/man8/man8.x86/boot.8: revision 1.29 (via patch)
	sys/arch/i386/stand/lib/exec.c: revision 1.79
	sys/arch/i386/stand/efiboot/efiboot.c: revision 1.13
	sys/arch/i386/stand/efiboot/bootx64/efibootx64.c: revision 1.6
	sys/arch/i386/stand/efiboot/bootia32/efibootia32.c: revision 1.6
	sys/arch/i386/stand/efiboot/boot.c: revision 1.22
	sys/arch/amd64/amd64/locore.S: revision 1.219
	sys/arch/i386/stand/efiboot/bootia32/startprog32.S: revision 1.3
	sys/arch/i386/stand/efiboot/efiboot.h: revision 1.12
	sys/arch/amd64/conf/files.amd64: revision 1.121
	sys/arch/amd64/conf/std.amd64: revision 1.13
	share/man/man8/man8.x86/pxeboot.8: revision 1.6
	sys/arch/i386/stand/efiboot/bootx64/startprog64.S: revision 1.4
	sys/arch/amd64/amd64/locore.S: revision 1.220
	share/man/man8/man8.x86/dosboot.8: revision 1.4
	share/man/man4/options.4: revision 1.524

Add reloc keyworkd to let EFI bootstrap load amd64 kernel at any address

EFI bootstrap assumes it can copy the amd64 kernel to its ELF load
address (that is KERNTEXTOFF - KERNBASE = 0x200000), but it can
clash with previous UEFI memory allocation, as described here:
http://mail-index.netbsd.org/tech-kern/2023/04/07/msg028833.html

This change adds a reloc keyword for controling where the EFI
boostrap will copy the kernel image. Possible values are:
default - the default and prior behavior, copy at 0x200000.
none - do not copy and use the kernel image where it was loaded.
address - specify an explicit address where to copy the kernel.

This comes with an amd64 kernel patch that makes it self-relocatable.
It first discover where it was loaded in memory, and if this is
different than the expected 0x200000, hhe the kernel relocates
itself and start over at the right address.

Merge x86 boot options in x86/boot(8) and add undocumented UEFI options

We were supposed to keep the option list in x86/boot(8), x86/dosoot(8)
and x86/pxeboot(8) in sync, but it did not happen, hence it may work
better with all the options in x86/boot(8). Also add the undocumented
UEFI boot options.

Add a SELFRELOC kernel option for the sake of documentation clarity.
Instead of telling that x86/boot(8) reloc command needs a kernel able
to self relocate, we can tell it needs a kernel built with the
SELFRELOC option. This keeps the reader from wondering what could
make a kernel able to self relocate.

Remove XXX todo marker left by mistake

Raise the version for new feature (here reloc command)
Suggested by Masanobu SAITOH

Revision 1.220 / (download) - annotate - [select for diffs], Fri May 5 00:34:41 2023 UTC (10 months, 3 weeks ago) by manu
Branch: MAIN
Changes since 1.219: +6 -1 lines
Diff to previous 1.219 (colored) to selected 1.85 (colored)

Add a SELFRELOC kernel option for the sake of documentation clarity.

Instead of telling that x86/boot(8) reloc command needs a kernel able
to self relocate, we can tell it needs a kernel built with the
SELFRELOC option. This keeps the reader from wondering what could
make a kernel able to self relocate.

Revision 1.219 / (download) - annotate - [select for diffs], Thu Apr 20 00:42:23 2023 UTC (11 months, 1 week ago) by manu
Branch: MAIN
Changes since 1.218: +144 -1 lines
Diff to previous 1.218 (colored) to selected 1.85 (colored)

Add reloc keyworkd to let EFI bootstrap load amd64 kernel at any address

EFI bootstrap assumes it can copy the amd64 kernel to its ELF load
address (that is KERNTEXTOFF - KERNBASE = 0x200000), but it can
clash with previous UEFI memory allocation, as described here:
http://mail-index.netbsd.org/tech-kern/2023/04/07/msg028833.html

This change adds a reloc keyword for controling where the EFI
boostrap will copy the kernel image. Possible values are:
default - the default and prior behavior, copy at 0x200000.
none - do not copy and use the kernel image where it was loaded.
address - specify an explicit address where to copy the kernel.

This comes with an amd64 kernel patch that makes it self-relocatable.
It first discover where it was loaded in memory, and if this is
different than the expected 0x200000, hhe the kernel relocates
itself and start over at the right address.

Revision 1.218 / (download) - annotate - [select for diffs], Fri Mar 3 14:32:48 2023 UTC (12 months, 3 weeks ago) by riastradh
Branch: MAIN
Changes since 1.217: +2 -17 lines
Diff to previous 1.217 (colored) to selected 1.85 (colored)

Revert "x86: Add kthread_fpu_enter/exit support, take two."

kthread_fpu_enter/exit changes broke some hardware, unclear why, to
investigate before fixing and reapplying these changes.

Revision 1.217 / (download) - annotate - [select for diffs], Wed Mar 1 08:38:50 2023 UTC (12 months, 4 weeks ago) by riastradh
Branch: MAIN
Changes since 1.216: +27 -3 lines
Diff to previous 1.216 (colored) to selected 1.85 (colored)

x86: Expand on comments on ordering around stores to ci_curlwp.

No functional change intended.

PR kern/57240

Revision 1.216 / (download) - annotate - [select for diffs], Sat Feb 25 18:04:42 2023 UTC (13 months ago) by riastradh
Branch: MAIN
Changes since 1.215: +17 -2 lines
Diff to previous 1.215 (colored) to selected 1.85 (colored)

x86: Add kthread_fpu_enter/exit support, take two.

This time, make sure to restore the FPU state when switching to a
kthread in the middle of kthread_fpu_enter/exit.

This adds a single predicted-taken branch for the case of kthreads
that are not in kthread_fpu_enter/exit, so it incurs a penalty only
for threads that actually use it.  Since it avoids FPU state
switching in kthreads that do use the FPU, namely cgd worker threads,
this should be a net performance win on systems using it and have
negligible impact otherwise.

XXX pullup-10

Revision 1.215 / (download) - annotate - [select for diffs], Mon Dec 26 17:46:00 2022 UTC (15 months ago) by christos
Branch: MAIN
Changes since 1.214: +2 -2 lines
Diff to previous 1.214 (colored) to selected 1.85 (colored)

sysret -> sysretl for new binutils

Revision 1.214 / (download) - annotate - [select for diffs], Wed Sep 7 00:40:18 2022 UTC (18 months, 2 weeks ago) by knakahara
Branch: MAIN
CVS Tags: netbsd-10-base, bouyer-sunxi-drm-base, bouyer-sunxi-drm
Branch point for: netbsd-10
Changes since 1.213: +4 -4 lines
Diff to previous 1.213 (colored) to selected 1.85 (colored)

NetBSD/x86: Raise the number of interrupt sources per CPU from 32 to 56.

There has been no objection for three years.
    https://mail-index.netbsd.org/port-amd64/2019/09/22/msg003012.html
Implemented by nonaka@n.o, updated by me.

Revision 1.213 / (download) - annotate - [select for diffs], Sun Jun 12 11:36:42 2022 UTC (21 months, 2 weeks ago) by bouyer
Branch: MAIN
Changes since 1.212: +11 -1 lines
Diff to previous 1.212 (colored) to selected 1.85 (colored)

XenPV: in cpu_switchto(), reset ci_xen_clockf_usermode/ci_xen_clockf_pc,
in case a clock interrupt is deffered while we're switching lwp.
Fix a (rare) panic:
panic: kernel diagnostic assertion "p != NULL" failed: file "/usr/src/sys/kern/kern_clock.c", line 438
seen when xen_timer_handler() is called from the splx() at the end of
mi_switch()

Revision 1.212 / (download) - annotate - [select for diffs], Wed Nov 10 15:59:07 2021 UTC (2 years, 4 months ago) by msaitoh
Branch: MAIN
Changes since 1.211: +2 -2 lines
Diff to previous 1.211 (colored) to selected 1.85 (colored)

s/annouce/announce/ in comment.

Revision 1.211 / (download) - annotate - [select for diffs], Fri Aug 13 20:26:07 2021 UTC (2 years, 7 months ago) by andvar
Branch: MAIN
Changes since 1.210: +2 -2 lines
Diff to previous 1.210 (colored) to selected 1.85 (colored)

s/struture/structure/ s/structre/structure/

Revision 1.210 / (download) - annotate - [select for diffs], Sun Jun 21 16:57:18 2020 UTC (3 years, 9 months ago) by bouyer
Branch: MAIN
CVS Tags: thorpej-i2c-spi-conf2-base, thorpej-i2c-spi-conf2, thorpej-i2c-spi-conf-base, thorpej-i2c-spi-conf, thorpej-futex2-base, thorpej-futex2, thorpej-futex-base, thorpej-futex, thorpej-cfargs2-base, thorpej-cfargs2, thorpej-cfargs-base, thorpej-cfargs, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Changes since 1.209: +11 -2 lines
Diff to previous 1.209 (colored) to selected 1.85 (colored)

On amd64, Xen PV calls syscalls and traps with events enabled.
Disable events on entry to be safe.
It should have been mostly safe for most cases, but for FPU traps
we need to reload the FPU state if we got interrupted at trap entry.

Hopefully fixes:
panic: kernel diagnostic assertion "curlwp->l_md.md_flags & MDL_FPU_IN_CPU" failed: file "/home/source/ab/HEAD/src/sys/arch/x86/x86/fpu.c", line 524

when running tests.

Revision 1.209 / (download) - annotate - [select for diffs], Wed May 27 19:33:40 2020 UTC (3 years, 10 months ago) by ad
Branch: MAIN
Changes since 1.208: +1 -56 lines
Diff to previous 1.208 (colored) to selected 1.85 (colored)

- Add a couple of wrapper functions around STOS and MOVS and use them to zero
  and copy PTEs in preference to memset()/memcpy().

- Remove related SSE / pageidlezero stuff.

Revision 1.208 / (download) - annotate - [select for diffs], Tue May 5 06:32:43 2020 UTC (3 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.207: +5 -4 lines
Diff to previous 1.207 (colored) to selected 1.85 (colored)

Fix KASAN, init_xen_early must be called after kasan_early_init.

Revision 1.207 / (download) - annotate - [select for diffs], Sat May 2 19:01:08 2020 UTC (3 years, 10 months ago) by christos
Branch: MAIN
Changes since 1.206: +4 -4 lines
Diff to previous 1.206 (colored) to selected 1.85 (colored)

Fix build without XEN

Revision 1.206 / (download) - annotate - [select for diffs], Sat May 2 16:44:34 2020 UTC (3 years, 10 months ago) by bouyer
Branch: MAIN
Changes since 1.205: +84 -5 lines
Diff to previous 1.205 (colored) to selected 1.85 (colored)

Introduce Xen PVH support in GENERIC.
This is compiled in with
options XENPVHVM
x86 changes:
- add Xen section and xen pvh entry points to locore.S. Set vm_guest
  to VM_GUEST_XENPVH in this entry point.
  Most of the boot procedure (especially page table setup and switch to
  paged mode) is shared with native.
- change some x86_delay() to delay_func(), which points to x86_delay() for
  native/HVM, and xen_delay() for PVH

Xen changes:
- remove Xen bits from init_x86_64_ksyms() and init386_ksyms()
  and move to xen_init_ksyms(), used for both PV and PVH
- set ISA no-legacy-devices property for PVH
- factor out code from Xen's cpu_bootconf() to xen_bootconf()
  in xen_machdep.c
- set up a specific pvh_consinit() which starts with printk()
  (which uses a simple hypercall that is available early) and switch to
  xencons when we can use pmap_kenter_pa().

Revision 1.205 / (download) - annotate - [select for diffs], Sat May 2 16:28:37 2020 UTC (3 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.204: +6 -1 lines
Diff to previous 1.204 (colored) to selected 1.85 (colored)

Call kasan_early_init earlier, to unbreak KASAN after the recent RNG
changes. Will also prevent further trouble.

Revision 1.204 / (download) - annotate - [select for diffs], Thu Apr 30 17:21:12 2020 UTC (3 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.203: +1 -11 lines
Diff to previous 1.203 (colored) to selected 1.85 (colored)

The labels are already global, drop unused.

Revision 1.203 / (download) - annotate - [select for diffs], Thu Apr 30 17:17:33 2020 UTC (3 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.202: +21 -1 lines
Diff to previous 1.202 (colored) to selected 1.85 (colored)

Switch to templates.

Revision 1.202 / (download) - annotate - [select for diffs], Sun Apr 26 14:07:43 2020 UTC (3 years, 11 months ago) by maxv
Branch: MAIN
Changes since 1.201: +3 -1 lines
Diff to previous 1.201 (colored) to selected 1.85 (colored)

Put the template functions in the rodata section; they get hotpatched
into other places, but never execute directly.

Revision 1.201 / (download) - annotate - [select for diffs], Sat Apr 25 15:26:16 2020 UTC (3 years, 11 months ago) by bouyer
Branch: MAIN
Changes since 1.200: +4 -2 lines
Diff to previous 1.200 (colored) to selected 1.85 (colored)

Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor

Revision 1.200.4.2 / (download) - annotate - [select for diffs], Thu Apr 16 09:45:56 2020 UTC (3 years, 11 months ago) by bouyer
Branch: bouyer-xenpvh
Changes since 1.200.4.1: +2 -2 lines
Diff to previous 1.200.4.1 (colored) to branchpoint 1.200 (colored) next main 1.201 (colored) to selected 1.85 (colored)

More #ifndef XEN -> #ifndef XENPV

Revision 1.166.2.3 / (download) - annotate - [select for diffs], Mon Apr 13 08:03:30 2020 UTC (3 years, 11 months ago) by martin
Branch: phil-wifi
Changes since 1.166.2.2: +18 -37 lines
Diff to previous 1.166.2.2 (colored) to branchpoint 1.166 (colored) next main 1.167 (colored) to selected 1.85 (colored)

Mostly merge changes from HEAD upto 20200411

Revision 1.200.4.1 / (download) - annotate - [select for diffs], Wed Apr 8 17:59:16 2020 UTC (3 years, 11 months ago) by bouyer
Branch: bouyer-xenpvh
Changes since 1.200: +3 -1 lines
Diff to previous 1.200 (colored) to selected 1.85 (colored)

Remove VM_GUEST_XEN and define only Xen subtypes:
VM_GUEST_XENPV
VM_GUEST_XENPVH
VM_GUEST_XENHVM
VM_GUEST_XENPVHVM

Set vm_guest in the start routine, if it is hypervisor-specific (e.g Xen PV).
If vm_guest was not set early and we detect Xen in identify_hypervisor(),
assume it is VM_GUEST_XENHVM. Refine to VM_GUEST_PVXENHVM in
hypervisor_match().

Revision 1.166.2.2 / (download) - annotate - [select for diffs], Wed Apr 8 14:07:25 2020 UTC (3 years, 11 months ago) by martin
Branch: phil-wifi
Changes since 1.166.2.1: +11 -23 lines
Diff to previous 1.166.2.1 (colored) to branchpoint 1.166 (colored) to selected 1.85 (colored)

Merge changes from current as of 20200406

Revision 1.195.2.1 / (download) - annotate - [select for diffs], Fri Jan 17 21:47:22 2020 UTC (4 years, 2 months ago) by ad
Branch: ad-namecache
Changes since 1.195: +3 -764 lines
Diff to previous 1.195 (colored) next main 1.196 (colored) to selected 1.85 (colored)

Sync with head.

Revision 1.200 / (download) - annotate - [select for diffs], Wed Jan 15 18:47:23 2020 UTC (4 years, 2 months ago) by ad
Branch: MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, is-mlppp-base, is-mlppp, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, ad-namecache-base3, ad-namecache-base2, ad-namecache-base1
Branch point for: bouyer-xenpvh
Changes since 1.199: +1 -5 lines
Diff to previous 1.199 (colored) to selected 1.85 (colored)

Back out the cpu_switchto() workaround now that it's no longer needed.

Revision 1.199 / (download) - annotate - [select for diffs], Mon Jan 13 11:40:15 2020 UTC (4 years, 2 months ago) by ad
Branch: MAIN
Changes since 1.198: +5 -1 lines
Diff to previous 1.198 (colored) to selected 1.85 (colored)

It looks like Xen cpu_hatch() calls cpu_switchto() with prevlwp=NULL,
instead of calling idle_loop() directly.  I can't test a change to
cpu_hatch() right now so allow for prevlwp=NULL.

Revision 1.198 / (download) - annotate - [select for diffs], Thu Jan 9 00:42:24 2020 UTC (4 years, 2 months ago) by manu
Branch: MAIN
Changes since 1.197: +1 -758 lines
Diff to previous 1.197 (colored) to selected 1.85 (colored)

Rollback multiboot2 for amd64, as requested by core

Revision 1.197 / (download) - annotate - [select for diffs], Wed Jan 8 20:59:18 2020 UTC (4 years, 2 months ago) by skrll
Branch: MAIN
Changes since 1.196: +3 -3 lines
Diff to previous 1.196 (colored) to selected 1.85 (colored)

oldlwp is always non-NULL in cpu_switchto so remove the test for NULL.

Revision 1.196 / (download) - annotate - [select for diffs], Wed Jan 8 17:38:41 2020 UTC (4 years, 2 months ago) by ad
Branch: MAIN
Changes since 1.195: +1 -5 lines
Diff to previous 1.195 (colored) to selected 1.85 (colored)

Hopefully fix some problems seen with MP support on non-x86, in particular
where curcpu() is defined as curlwp->l_cpu:

- mi_switch(): undo the ~2007ish optimisation to unlock curlwp before
  calling cpu_switchto().  It's not safe to let other actors mess with the
  LWP (in particular l->l_cpu) while it's still context switching.  This
  removes l->l_ctxswtch.

- Move the LP_RUNNING flag into l->l_flag and rename to LW_RUNNING since
  it's now covered by the LWP's lock.

- Ditch lwp_exit_switchaway() and just call mi_switch() instead.  Everything
  is in cache anyway so it wasn't buying much by trying to avoid saving old
  state.  This means cpu_switchto() will never be called with prevlwp ==
  NULL.

- Remove some KERNEL_LOCK handling which hasn't been needed for years.

Revision 1.195 / (download) - annotate - [select for diffs], Sun Dec 15 02:58:21 2019 UTC (4 years, 3 months ago) by manu
Branch: MAIN
CVS Tags: ad-namecache-base
Branch point for: ad-namecache
Changes since 1.194: +1 -1 lines
Diff to previous 1.194 (colored) to selected 1.85 (colored)

Fix typo that caused two instructions  to be commented out

Oddly, that did not break booting.

Revision 1.194 / (download) - annotate - [select for diffs], Sun Dec 15 02:56:40 2019 UTC (4 years, 3 months ago) by manu
Branch: MAIN
Changes since 1.193: +2 -2 lines
Diff to previous 1.193 (colored) to selected 1.85 (colored)

Restore multiboot 2 header in amd64 kernel

The header must appear below 32k offset in the kernel file, but we
have to make sure it does not load at low addresses, otherwise we
break BIOS boot.

.text section used to load at 0x200000, we just load multiboot section
there, and have .text loaded just after.

Revision 1.193 / (download) - annotate - [select for diffs], Tue Dec 10 02:06:07 2019 UTC (4 years, 3 months ago) by manu
Branch: MAIN
Changes since 1.192: +758 -1 lines
Diff to previous 1.192 (colored) to selected 1.85 (colored)

Add multiboot 2 support to amd64 kernel

Revision 1.192 / (download) - annotate - [select for diffs], Fri Nov 22 23:36:25 2019 UTC (4 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.191: +8 -16 lines
Diff to previous 1.191 (colored) to selected 1.85 (colored)

- On-demand zeroing pages with MOVNTI is crazy.  It empties L1/L2/L3.
- Disable zeroing in the idle loop.  That needs a cache-friendly strategy.

Result: 3 to 4% reduction in kernel build time on my test system.
Inspired by a discussion with Mateusz Guzik and David Maxwell.

Revision 1.191 / (download) - annotate - [select for diffs], Thu Nov 21 19:27:54 2019 UTC (4 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.190: +2 -2 lines
Diff to previous 1.190 (colored) to selected 1.85 (colored)

x86: abort pageidlezero unconditionally if there is something to run.

Revision 1.190 / (download) - annotate - [select for diffs], Thu Nov 14 16:23:52 2019 UTC (4 years, 4 months ago) by maxv
Branch: MAIN
CVS Tags: phil-wifi-20191119
Changes since 1.189: +10 -1 lines
Diff to previous 1.189 (colored) to selected 1.85 (colored)

Add support for Kernel Memory Sanitizer (kMSan). It detects uninitialized
memory used by the kernel at run time, and just like kASan and kCSan, it
is an excellent feature. It has already detected 38 uninitialized variables
in the kernel during my testing, which I have since discreetly fixed.

We use two shadows:
 - "shad", to track uninitialized memory with a bit granularity (1:1).
   Each bit set to 1 in the shad corresponds to one uninitialized bit of
   real kernel memory.
 - "orig", to track the origin of the memory with a 4-byte granularity
   (1:1). Each uint32_t cell in the orig indicates the origin of the
   associated uint32_t of real kernel memory.

The memory consumption of these shadows is consequent, so at least 4GB of
RAM is recommended to run kMSan.

The compiler inserts calls to specific __msan_* functions on each memory
access, to manage both the shad and the orig and detect uninitialized
memory accesses that change the execution flow (like an "if" on an
uninitialized variable).

We mark as uninit several types of memory buffers (stack, pools, kmem,
malloc, uvm_km), and check each buffer passed to copyout, copyoutstr,
bwrite, if_transmit_lock and DMA operations, to detect uninitialized memory
that leaves the system. This allows us to detect kernel info leaks in a way
that is more efficient and also more user-friendly than KLEAK.

Contrary to kASan, kMSan requires comprehensive coverage, ie we cannot
tolerate having one non-instrumented function, because this could cause
false positives. kMSan cannot instrument ASM functions, so I converted
most of them to __asm__ inlines, which kMSan is able to instrument. Those
that remain receive special treatment.

Contrary to kASan again, kMSan uses a TLS, so we must context-switch this
TLS during interrupts. We use different contexts depending on the interrupt
level.

The orig tracks precisely the origin of a buffer. We use a special encoding
for the orig values, and pack together in each uint32_t cell of the orig:
 - a code designating the type of memory (Stack, Pool, etc), and
 - a compressed pointer, which points either (1) to a string containing
   the name of the variable associated with the cell, or (2) to an area
   in the kernel .text section which we resolve to a symbol name + offset.

This encoding allows us not to consume extra memory for associating
information with each cell, and produces a precise output, that can tell
for example the name of an uninitialized variable on the stack, the
function in which it was pushed on the stack, and the function where we
accessed this uninitialized variable.

kMSan is available with LLVM, but not with GCC.

The code is organized in a way that is similar to kASan and kCSan, so it
means that other architectures than amd64 can be supported.

Revision 1.189 / (download) - annotate - [select for diffs], Sat Oct 12 06:31:03 2019 UTC (4 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.188: +5 -22 lines
Diff to previous 1.188 (colored) to selected 1.85 (colored)

Rewrite the FPU code on x86. This greatly simplifies the logic and removes
the dependency on IPL_HIGH. NVMM is updated accordingly. Posted on
port-amd64 a week ago.

Bump the kernel version to 9.99.16.

Revision 1.188 / (download) - annotate - [select for diffs], Fri Oct 4 11:47:07 2019 UTC (4 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.187: +2 -2 lines
Diff to previous 1.187 (colored) to selected 1.85 (colored)

Rename fpu_eagerswitch to fpu_switch, and add fpu_xstate_reload to
simplify.

Revision 1.187 / (download) - annotate - [select for diffs], Thu Oct 3 05:06:29 2019 UTC (4 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.186: +2 -5 lines
Diff to previous 1.186 (colored) to selected 1.85 (colored)

Remove the LazyFPU code, as posted 5 months ago on port-amd64@.

Revision 1.186 / (download) - annotate - [select for diffs], Wed Aug 21 16:35:10 2019 UTC (4 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.185: +4 -12 lines
Diff to previous 1.185 (colored) to selected 1.85 (colored)

Switch from printf to panic. These messages were notorious for being
unreadable, and at least a clean panic allows the user to inspect the
system via DDB. Also simplify the output, EAX gets overwritten with
the error code so it indicates nothing meaningful.

Revision 1.166.2.1 / (download) - annotate - [select for diffs], Mon Jun 10 22:05:47 2019 UTC (4 years, 9 months ago) by christos
Branch: phil-wifi
Changes since 1.166: +114 -117 lines
Diff to previous 1.166 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.185 / (download) - annotate - [select for diffs], Sat May 18 13:32:12 2019 UTC (4 years, 10 months ago) by maxv
Branch: MAIN
CVS Tags: phil-wifi-20190609, netbsd-9-base, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1
Branch point for: netbsd-9
Changes since 1.184: +17 -25 lines
Diff to previous 1.184 (colored) to selected 1.85 (colored)

Two changes in the CPU mitigations:

 * Micro-optimize: put every mitigation in the same branch. This removes
   two branches in each exc/int return path, and removes all branches in
   the syscall return path.

 * Modify the SpectreV2 mitigation to be compatible with SpectreV4. I
   recently realized that both couldn't be enabled at the same time on
   Intel. This is because initially, when there was just SpectreV2, we
   could reset the whole IA32_SPEC_CTRL MSR. But then Intel added another
   bit in it for SpectreV4, so it isn't right to reset it entirely
   anymore. SSBD needs to stay.

Revision 1.184 / (download) - annotate - [select for diffs], Sat May 18 07:58:58 2019 UTC (4 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.183: +2 -1 lines
Diff to previous 1.183 (colored) to selected 1.85 (colored)

Set the symbol type for intrfastexit, so that tools like tprof can find
the symbol name.

Revision 1.183 / (download) - annotate - [select for diffs], Wed May 15 18:27:51 2019 UTC (4 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.182: +1 -3 lines
Diff to previous 1.182 (colored) to selected 1.85 (colored)

Enable EagerFPU on Xen PV. Should work as-is. Sent on port-amd64@.

Revision 1.182 / (download) - annotate - [select for diffs], Wed May 15 17:31:41 2019 UTC (4 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.181: +1 -29 lines
Diff to previous 1.181 (colored) to selected 1.85 (colored)

Change the way SVS is disabled. Now you have to pass "boot -3" from the
bootloader. The machdep.svs.enabled sysctl becomes read-only, and just
indicates whether SVS is enabled.

Sent on port-amd64@.

Revision 1.123.6.9 / (download) - annotate - [select for diffs], Tue May 14 17:12:19 2019 UTC (4 years, 10 months ago) by martin
Branch: netbsd-8
CVS Tags: netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1
Changes since 1.123.6.8: +18 -1 lines
Diff to previous 1.123.6.8 (colored) to branchpoint 1.123 (colored) next main 1.124 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #1269):

	sys/arch/amd64/amd64/locore.S: revision 1.181 (adapted)
	sys/arch/amd64/amd64/amd64_trap.S: revision 1.47 (adapted)
	sys/arch/x86/include/specialreg.h: revision 1.144 (adapted)
	sys/arch/amd64/include/frameasm.h: revision 1.43 (adapted)
	sys/arch/x86/x86/spectre.c: revision 1.27 (adapted)

Mitigation for INTEL-SA-00233: Microarchitectural Data Sampling (MDS).
It requires a microcode update, now available on the Intel website. The
microcode modifies the behavior of the VERW instruction, and makes it flush
internal CPU buffers. We hotpatch the return-to-userland path to add VERW.

Two sysctls are added:

	machdep.mds.mitigated = {0/1} user-settable
	machdep.mds.method = {string} constructed by the kernel

The kernel will automatically enable the mitigation if the updated
microcode is present. If the new microcode is not present, the user can
load it via cpuctl, and set machdep.mds.mitigated=1.

Revision 1.181 / (download) - annotate - [select for diffs], Tue May 14 16:59:25 2019 UTC (4 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.180: +18 -1 lines
Diff to previous 1.180 (colored) to selected 1.85 (colored)

Mitigation for INTEL-SA-00233: Microarchitectural Data Sampling (MDS).

It requires a microcode update, now available on the Intel website. The
microcode modifies the behavior of the VERW instruction, and makes it flush
internal CPU buffers. We hotpatch the return-to-userland path to add VERW.

Two sysctls are added:

	machdep.mds.mitigated = {0/1} user-settable
	machdep.mds.method = {string} constructed by the kernel

The kernel will automatically enable the mitigation if the updated
microcode is present. If the new microcode is not present, the user can
load it via cpuctl, and set machdep.mds.mitigated=1.

Revision 1.180 / (download) - annotate - [select for diffs], Sat Mar 9 08:42:25 2019 UTC (5 years ago) by maxv
Branch: MAIN
CVS Tags: isaki-audio2-base, isaki-audio2
Changes since 1.179: +18 -18 lines
Diff to previous 1.179 (colored) to selected 1.85 (colored)

Start replacing the x86 PTE bits.

Revision 1.179 / (download) - annotate - [select for diffs], Thu Mar 7 13:26:24 2019 UTC (5 years ago) by maxv
Branch: MAIN
Changes since 1.178: +3 -3 lines
Diff to previous 1.178 (colored) to selected 1.85 (colored)

Drop PG_RO, PG_KR and PG_PROT, they are useless and create confusion.

Revision 1.178 / (download) - annotate - [select for diffs], Thu Feb 14 08:18:25 2019 UTC (5 years, 1 month ago) by cherry
Branch: MAIN
Changes since 1.177: +2 -2 lines
Diff to previous 1.177 (colored) to selected 1.85 (colored)

Welcome XENPVHVM mode.

It is UP only, has xbd(4) and xennet(4) as PV drivers.

The console is com0 at isa and the native portion is very
rudimentary AT architecture, so is probably suboptimal to
run without PV support.

Revision 1.177 / (download) - annotate - [select for diffs], Wed Feb 13 05:36:59 2019 UTC (5 years, 1 month ago) by cherry
Branch: MAIN
Changes since 1.176: +9 -5 lines
Diff to previous 1.176 (colored) to selected 1.85 (colored)

Rig the hypercall callback page such that when the kernel happens to
run without a XEN domain loader having previously overwritten the
hypercall page with its hypercall trampoline machine code, we still
get to detect its presence by calling the xen_version hypercall stub.

We use this hack to detect the presence or absence of the hypervisor,
without relying on the MSR support on HVM domains.

This works as an added sanity check that the hypercall page
registration has indeed succeeded in HVM mode.

Revision 1.176 / (download) - annotate - [select for diffs], Mon Feb 11 14:59:32 2019 UTC (5 years, 1 month ago) by cherry
Branch: MAIN
Changes since 1.175: +17 -15 lines
Diff to previous 1.175 (colored) to selected 1.85 (colored)

We reorganise definitions for XEN source support as follows:

XEN - common sources required for baseline XEN support.
XENPV - sources required for support of XEN in PV mode.
XENPVHVM - sources required for support for XEN in HVM mode.
XENPVH - sources required for support for XEN in PVH mode.

Revision 1.175 / (download) - annotate - [select for diffs], Sat Feb 2 12:32:54 2019 UTC (5 years, 1 month ago) by cherry
Branch: MAIN
Changes since 1.174: +3 -3 lines
Diff to previous 1.174 (colored) to selected 1.85 (colored)

Switch NetBSD/xen to use XEN api tag RELEASE-4.11.1

The headers for this api are in sys/external/mit/xen-include-public/dist/

Revision 1.157.2.9 / (download) - annotate - [select for diffs], Thu Sep 6 06:55:24 2018 UTC (5 years, 6 months ago) by pgoyette
Branch: pgoyette-compat
CVS Tags: pgoyette-compat-merge-20190127
Changes since 1.157.2.8: +1 -8 lines
Diff to previous 1.157.2.8 (colored) to branchpoint 1.157 (colored) next main 1.158 (colored) to selected 1.85 (colored)

Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)

Revision 1.174 / (download) - annotate - [select for diffs], Sun Aug 12 15:31:01 2018 UTC (5 years, 7 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906
Changes since 1.173: +1 -8 lines
Diff to previous 1.173 (colored) to selected 1.85 (colored)

More ASLR: randomize the location of the PTE area. The PTE slot is not
created in locore anymore, but a little later; by using the already
entered L4 page, rather than the recursive slot itself (which doesn't
exist yet).

In the prekern we still map the slot - the prekern behaves as an external
locore -, because we need it as part of the randomization/relocation
work. The kernel then removes this slot, and regenerates a randomized
one.

Tested on GENERIC and GENERIC_KASLR, Xen doesn't have it and dom0 still
boots fine.

Revision 1.157.2.8 / (download) - annotate - [select for diffs], Sat Jul 28 04:37:26 2018 UTC (5 years, 8 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.157.2.7: +53 -35 lines
Diff to previous 1.157.2.7 (colored) to branchpoint 1.157 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.173 / (download) - annotate - [select for diffs], Thu Jul 26 09:29:08 2018 UTC (5 years, 8 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-0728
Changes since 1.172: +6 -1 lines
Diff to previous 1.172 (colored) to selected 1.85 (colored)

Rework dbregs, to switch the registers during context switches, and not on
each user->kernel transition via userret. Reloads of DR6/DR7 are expensive
on both native and xen.

Revision 1.172 / (download) - annotate - [select for diffs], Sat Jul 21 06:09:13 2018 UTC (5 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.171: +2 -1 lines
Diff to previous 1.171 (colored) to selected 1.85 (colored)

More ASLR. Randomize the location of the direct map at boot time on amd64.
This doesn't need "options KASLR" and works on GENERIC. Will soon be
enabled by default.

The location of the areas is abstracted in a slotspace structure. Ideally
we should always use this structure when touching the L4 slots, instead of
the current cocktail of global variables and constants.

machdep initializes the structure with the default values, and we then
randomize its dmap entry. Ideally machdep should randomize everything at
once, but in the case of the direct map its size is determined a little
later in the boot procedure, so we're forced to randomize its location
later too.

Revision 1.171 / (download) - annotate - [select for diffs], Sat Jul 14 14:29:40 2018 UTC (5 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.170: +3 -3 lines
Diff to previous 1.170 (colored) to selected 1.85 (colored)

Drop NENTRY() from the x86 kernels, use ENTRY(). With PMCs (and other hardware
tracing facilities) we have a much better ways of monitoring the CPU activity
than GPROF, without software modification.

Also I think GPROF has never worked, because the 'start' functions of both
i386 and amd64 use ENTRY(), and it would have caused a function call while the
kernel was not yet relocated.

Revision 1.170 / (download) - annotate - [select for diffs], Thu Jul 12 19:48:16 2018 UTC (5 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.169: +21 -1 lines
Diff to previous 1.169 (colored) to selected 1.85 (colored)

Handle NMIs correctly when SVS is enabled. We store the kernel's CR3 at the
top of the NMI stack, and we unconditionally switch to it, because we don't
know with which page tables we received the NMI. Hotpatch the whole thing as
usual.

This restores the ability to use PMCs on Intel CPUs.

Revision 1.123.6.8 / (download) - annotate - [select for diffs], Tue Jul 10 15:35:26 2018 UTC (5 years, 8 months ago) by martin
Branch: netbsd-8
CVS Tags: netbsd-8-0-RELEASE
Changes since 1.123.6.7: +13 -15 lines
Diff to previous 1.123.6.7 (colored) to branchpoint 1.123 (colored) to selected 1.85 (colored)

Pull up the following, requested by maxv in ticket #910:

	sys/arch/amd64/amd64/locore.S	r1.167 (patch)
	sys/arch/i386/i386/locore.S	r1.158 (patch)
	sys/arch/x86/x86/fpu.c		r1.44 (patch)

Don't switch the FPU when leaving a softint. This fixes
several problems when EagerFPU is enabled.

Revision 1.169 / (download) - annotate - [select for diffs], Mon Jul 9 18:52:04 2018 UTC (5 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.168: +1 -7 lines
Diff to previous 1.168 (colored) to selected 1.85 (colored)

Don't push/pop %rdx, we don't care about preserving its value.

Revision 1.168 / (download) - annotate - [select for diffs], Mon Jul 9 18:43:05 2018 UTC (5 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.167: +18 -20 lines
Diff to previous 1.167 (colored) to selected 1.85 (colored)

Small optimization: don't execute the Meltdown/SpectreV2 cswitch code if
we're leaving a softint. We were executing the softint with the LWP's
context, so no need to switch the SVS/IBRS contexts, we already are in
the desired contexts.

Revision 1.167 / (download) - annotate - [select for diffs], Fri Jun 29 19:21:43 2018 UTC (5 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.166: +13 -13 lines
Diff to previous 1.166 (colored) to selected 1.85 (colored)

Call fpu_eagerswitch a little later, after we make sure newlwp is not
pinned.

Because if it is, the fpu state of the lwp we are context-switching to
is already installed on the current cpu, so no point re-installing it.
Or, it isn't, and in this case we don't want to install it.

This wrong re-installation can occur when we leave a softint.

It may fix bugs in places that call fpusave_lwp with spl != IPL_HIGH,
and that expect the fpu state to stay in memory. As far as I can tell
only cpu_lwp_free meets these conditions, and as far as I can tell
again, there it's harmless.

Should help PR/53399.

Revision 1.157.2.7 / (download) - annotate - [select for diffs], Mon Jun 25 07:25:38 2018 UTC (5 years, 9 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.157.2.6: +14 -2 lines
Diff to previous 1.157.2.6 (colored) to branchpoint 1.157 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.123.6.7 / (download) - annotate - [select for diffs], Sat Jun 23 11:39:01 2018 UTC (5 years, 9 months ago) by martin
Branch: netbsd-8
CVS Tags: netbsd-8-0-RC2
Changes since 1.123.6.6: +15 -1 lines
Diff to previous 1.123.6.6 (colored) to branchpoint 1.123 (colored) to selected 1.85 (colored)

Pull up the following, via patch, requested by maxv in ticket #897:

	sys/arch/amd64/amd64/locore.S           1.166 (patch)
	sys/arch/i386/i386/locore.S             1.157 (patch)
	sys/arch/x86/include/cpu.h              1.92 (patch)
	sys/arch/x86/include/fpu.h              1.9 (patch)
	sys/arch/x86/x86/fpu.c                  1.33-1.39 (patch)
	sys/arch/x86/x86/identcpu.c             1.72 (patch)
	sys/arch/x86/x86/vm_machdep.c           1.34 (patch)
	sys/arch/x86/x86/x86_machdep.c          1.116,1.117 (patch)

Support eager fpu switch, to work around INTEL-SA-00145.
Provide a sysctl machdep.fpu_eager, which gets automatically
initialized to 1 on affected CPUs.

Revision 1.166 / (download) - annotate - [select for diffs], Thu Jun 14 14:36:46 2018 UTC (5 years, 9 months ago) by maxv
Branch: MAIN
CVS Tags: phil-wifi-base, pgoyette-compat-0625
Branch point for: phil-wifi
Changes since 1.165: +14 -2 lines
Diff to previous 1.165 (colored) to selected 1.85 (colored)

Add some code to support eager fpu switch, INTEL-SA-00145. We restore the
FPU state of the lwp right away during context switches. This guarantees
that when the CPU executes in userland, the FPU doesn't contain secrets.

Maybe we also need to clear the FPU in setregs(), not sure about this one.

Can be enabled/disabled via:

	machdep.fpu_eager = {0/1}

Not yet turned on automatically on affected CPUs (Intel Family 6).

More generally it would be good to turn it on automatically when XSAVEOPT
is supported, because in this case there is probably a non-negligible
performance gain; but we need to fix PR/52966.

Revision 1.123.6.6 / (download) - annotate - [select for diffs], Sat May 5 15:00:29 2018 UTC (5 years, 10 months ago) by martin
Branch: netbsd-8
Changes since 1.123.6.5: +6 -6 lines
Diff to previous 1.123.6.5 (colored) to branchpoint 1.123 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #786):

	sys/arch/amd64/amd64/locore.S: revision 1.164,1.165

Adjust Xsyscall_svs to not use movq for 64bit immediates either.

Do not use movq for loading arbitrary 64bit immediates. The ISA
restricts it to 32bit immediates.

Revision 1.157.2.6 / (download) - annotate - [select for diffs], Wed May 2 07:20:02 2018 UTC (5 years, 10 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.157.2.5: +4 -4 lines
Diff to previous 1.157.2.5 (colored) to branchpoint 1.157 (colored) to selected 1.85 (colored)

Synch with HEAD

Revision 1.165 / (download) - annotate - [select for diffs], Mon Apr 23 22:53:04 2018 UTC (5 years, 11 months ago) by joerg
Branch: MAIN
CVS Tags: pgoyette-compat-0521, pgoyette-compat-0502
Changes since 1.164: +4 -4 lines
Diff to previous 1.164 (colored) to selected 1.85 (colored)

Adjust Xsyscall_svs to not use movq for 64bit immediates either.

Revision 1.157.2.5 / (download) - annotate - [select for diffs], Sun Apr 22 07:20:17 2018 UTC (5 years, 11 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.157.2.4: +3 -3 lines
Diff to previous 1.157.2.4 (colored) to branchpoint 1.157 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.164 / (download) - annotate - [select for diffs], Sat Apr 21 23:25:01 2018 UTC (5 years, 11 months ago) by joerg
Branch: MAIN
CVS Tags: pgoyette-compat-0422
Changes since 1.163: +3 -3 lines
Diff to previous 1.163 (colored) to selected 1.85 (colored)

Do not use movq for loading arbitrary 64bit immediates. The ISA
restricts it to 32bit immediates.

Revision 1.157.2.4 / (download) - annotate - [select for diffs], Sat Apr 7 04:12:11 2018 UTC (5 years, 11 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.157.2.3: +1 -1 lines
Diff to previous 1.157.2.3 (colored) to branchpoint 1.157 (colored) to selected 1.85 (colored)

Sync with HEAD.  77 conflicts resolved - all of them $NetBSD$

Revision 1.157.2.3 / (download) - annotate - [select for diffs], Fri Mar 30 10:09:07 2018 UTC (6 years ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.157.2.2: +3 -1 lines
Diff to previous 1.157.2.2 (colored) to branchpoint 1.157 (colored) to selected 1.85 (colored)

Extract compat_14 stuff into its own module

Revision 1.163 / (download) - annotate - [select for diffs], Fri Mar 30 09:53:08 2018 UTC (6 years ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-0415, pgoyette-compat-0407
Changes since 1.162: +3 -1 lines
Diff to previous 1.162 (colored) to selected 1.85 (colored)

Add #ifndef XEN, xen doesn't have speculation_barrier.

Revision 1.157.2.2 / (download) - annotate - [select for diffs], Fri Mar 30 06:20:11 2018 UTC (6 years ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.157.2.1: +42 -1 lines
Diff to previous 1.157.2.1 (colored) to branchpoint 1.157 (colored) to selected 1.85 (colored)

Resolve conflicts between branch and HEAD

Revision 1.162 / (download) - annotate - [select for diffs], Thu Mar 29 07:21:24 2018 UTC (6 years ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-0330
Changes since 1.161: +9 -1 lines
Diff to previous 1.161 (colored) to selected 1.85 (colored)

Allow IBRS to be disabled dynamically.

Revision 1.161 / (download) - annotate - [select for diffs], Wed Mar 28 19:56:40 2018 UTC (6 years ago) by maxv
Branch: MAIN
Changes since 1.160: +5 -1 lines
Diff to previous 1.160 (colored) to selected 1.85 (colored)

The call to svs_lwp_switch can clobber %rdi/%rsi, so restore them before
calling speculation_barrier.

Revision 1.160 / (download) - annotate - [select for diffs], Wed Mar 28 16:02:49 2018 UTC (6 years ago) by maxv
Branch: MAIN
Changes since 1.159: +30 -1 lines
Diff to previous 1.159 (colored) to selected 1.85 (colored)

Add the IBRS mitigation for SpectreV2 on amd64.

Different operations are performed during context transitions:

	user->kernel: IBRS <- 1
	kernel->user: IBRS <- 0

And during context switches:

	user->user:   IBPB <- 0
	kernel->user: IBPB <- 0
	[user->kernel:IBPB <- 0 this one may not be needed]

We use two macros, IBRS_ENTER and IBRS_LEAVE, to set the IBRS bit. The
thing is hotpatched for better performance, like SVS.

The idea is that IBRS is a "privileged" bit, which is set to 1 in kernel
mode and 0 in user mode. To protect the branch predictor between user
processes (which are of the same privilege), we use the IBPB barrier.

The Intel manual also talks about (MWAIT/HLT)+HyperThreading, and says
that when using either of the two instructions IBRS must be disabled for
better performance on the core. I'm not totally sure about this part, so
I'm not adding it now.

IBRS is available only when the Intel microcode update is applied. The
mitigation must be enabled manually with machdep.spectreV2.mitigated.

Tested by msaitoh a week ago (but I adapted a few things since). Probably
more changes to come.

Revision 1.123.6.5 / (download) - annotate - [select for diffs], Thu Mar 22 16:59:03 2018 UTC (6 years ago) by martin
Branch: netbsd-8
CVS Tags: netbsd-8-0-RC1
Changes since 1.123.6.4: +241 -99 lines
Diff to previous 1.123.6.4 (colored) to branchpoint 1.123 (colored) to selected 1.85 (colored)

Pull up the following revisions, requested by maxv in ticket #652:

	sys/arch/amd64/amd64/amd64_trap.S	upto 1.39 (partial, patch)
	sys/arch/amd64/amd64/db_machdep.c	1.6 (patch)
	sys/arch/amd64/amd64/genassym.cf	1.65,1.66,1.67 (patch)
	sys/arch/amd64/amd64/locore.S		upto 1.159 (partial, patch)
	sys/arch/amd64/amd64/machdep.c		1.299-1.302 (patch)
	sys/arch/amd64/amd64/trap.c		upto 1.113 (partial, patch)
	sys/arch/amd64/amd64/amd64/vector.S	upto 1.61 (partial, patch)
	sys/arch/amd64/conf/GENERIC		1.477,1.478 (patch)
	sys/arch/amd64/conf/kern.ldscript	1.26 (patch)
	sys/arch/amd64/include/frameasm.h	upto 1.37 (partial, patch)
	sys/arch/amd64/include/param.h		1.25 (patch)
	sys/arch/amd64/include/pmap.h		1.41,1.43,1.44 (patch)
	sys/arch/x86/conf/files.x86		1.91,1.93 (patch)
	sys/arch/x86/include/cpu.h		1.88,1.89 (patch)
	sys/arch/x86/include/pmap.h		1.75 (patch)
	sys/arch/x86/x86/cpu.c			1.144,1.146,1.148,1.149 (patch)
	sys/arch/x86/x86/pmap.c			upto 1.289 (partial, patch)
	sys/arch/x86/x86/vm_machdep.c		1.31,1.32 (patch)
	sys/arch/x86/x86/x86_machdep.c		1.104,1.106,1.108 (patch)
	sys/arch/x86/x86/svs.c			1.1-1.14
	sys/arch/xen/conf/files.compat		1.30 (patch)

Backport SVS. Not enabled yet.

Revision 1.157.2.1 / (download) - annotate - [select for diffs], Thu Mar 22 01:44:41 2018 UTC (6 years ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.157: +3 -6 lines
Diff to previous 1.157 (colored) to selected 1.85 (colored)

Synch with HEAD, resolve conflicts

Revision 1.159 / (download) - annotate - [select for diffs], Tue Mar 20 18:27:58 2018 UTC (6 years ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-0322
Changes since 1.158: +3 -4 lines
Diff to previous 1.158 (colored) to selected 1.85 (colored)

(Re)Fix handling of segment register faults. My previous attempt did fix
faults occuring when reloading %es/%ds/%fs/%gs, but it did not fix faults
occuring when executing 'iretq', because before iretq we needed to do +16
in %rsp, and the resulting stack layout was not the one kernuser_reenter()
expected (tf_trapno and tf_err were not there).

So now: pop tf_trapno and tf_err right away in intrfastexit(), and update
the layout in kernuser_reenter() accordingly. The resulting code is
actually simpler.

Tested by "hardcoding" an iretq fault; the process correctly receives a
SIGSEGV.

(Note that segment register faults do not happen in the wild, you really
need to try hard to trigger one.)

Revision 1.158 / (download) - annotate - [select for diffs], Tue Mar 20 14:26:49 2018 UTC (6 years ago) by maxv
Branch: MAIN
Changes since 1.157: +1 -3 lines
Diff to previous 1.157 (colored) to selected 1.85 (colored)

Remove the sysretq fault handler. It is broken with SVS, and not really
needed anyway. Initially I had added it so that if such a fault was
received the kernel would panic "cleanly" instead of crashing in a
potentially undefined way.

I'll re-add this handler later.

Revision 1.123.6.4 / (download) - annotate - [select for diffs], Tue Mar 13 15:47:44 2018 UTC (6 years ago) by martin
Branch: netbsd-8
Changes since 1.123.6.3: +3 -2 lines
Diff to previous 1.123.6.3 (colored) to branchpoint 1.123 (colored) to selected 1.85 (colored)

Pullup the following revisions via patch, requested by maxv in ticket #629:

	sys/arch/amd64/amd64/genassym.cf		1.63,1.64
	sys/arch/amd64/amd64/locore.S			1.144
	sys/arch/amd64/amd64/machdep.c			1.281-1.283
	sys/arch/i386/i386/genassym.cf			1.105-1.106
	sys/arch/i386/i386/locore.S			1.155
	sys/arch/i386/i386/machdep.c			1.802 (adapted),1.803
	sys/arch/x86/include/cpu.h			1.85
	sys/arch/x86/x86/intr.c				1.115-1.116
	sys/arch/x86/x86/pmap.c				1.275
	sys/arch/x86/x86/sys_machdep.c			1.45
	sys/arch/xen/x86/cpu.c				1.117

Stop sharing the double-fault stack.
Merge the TSS structures into one single cpu_tss structure, and
allocate it dynamically.

Revision 1.123.6.3 / (download) - annotate - [select for diffs], Wed Mar 7 14:50:56 2018 UTC (6 years ago) by martin
Branch: netbsd-8
Changes since 1.123.6.2: +15 -1 lines
Diff to previous 1.123.6.2 (colored) to branchpoint 1.123 (colored) to selected 1.85 (colored)

Pull up the following revisions (via patch), requested by maxv in ticket #610:

sys/arch/amd64/amd64/amd64_trap.S	1.8,1.10,1.12 (partial),1.13-1.15,
					1.19 (partial),1.20,1.21,1.22,1.24
					(via patch)
sys/arch/amd64/amd64/locore.S		1.129 (partial),1.132 (via patch)
sys/arch/amd64/amd64/trap.c		1.97 (partial),1.111 (via patch)
sys/arch/amd64/amd64/vector.S		1.54,1.55 (via patch)
sys/arch/amd64/include/frameasm.h	1.21,1.23 (via patch)
sys/arch/x86/x86/cpu.c			1.138 (via patch)
sys/arch/xen/conf/Makefile.xen		1.45 (via patch)

Rename and reorder several things in amd64_trap.S.
Compile amd64_trap.S as a file.
Introduce nmitrap and doubletrap.
Have the CPU clear PSL_D automatically in the syscall entry point.

Revision 1.157 / (download) - annotate - [select for diffs], Sun Feb 25 12:37:16 2018 UTC (6 years, 1 month ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-base, pgoyette-compat-0315
Branch point for: pgoyette-compat
Changes since 1.156: +21 -11 lines
Diff to previous 1.156 (colored) to selected 1.85 (colored)

Fix handling of segment register faults when running with SVS. The behavior
is changed also in the non-SVS case.

I've put a documentation in amd64_trap.S. Basically, the problem with SVS
is that if iret faults, we already have a full trapframe pushed on the
stack and the CPU will push another frame on this stack (nested), but it
hits the redzone below the stack since it is still running with the user
page table loaded.

To fix that, we pop a good part of the trapframe earlier in intrfastexit.
If iret faults, the current %rsp has enough room for an iret frame, and
the CPU can push that without problem. We then switch back to the outer
iret frame (the frame the CPU was trying to pop by executing iret, but that
it didn't pop for real because iret faulted), call INTRENTRY, and handle
the trap as if it had been received from userland directly.

Revision 1.156 / (download) - annotate - [select for diffs], Sat Feb 24 17:12:10 2018 UTC (6 years, 1 month ago) by maxv
Branch: MAIN
Changes since 1.155: +19 -26 lines
Diff to previous 1.155 (colored) to selected 1.85 (colored)

Use %rax instead of %r15 in the non-SVS case, to reduce the diff against
SVS. In SVS we use %rax instead of %r15 because the following instructions
cannot be encoded:

	movq	%r15,SVS_UTLS+UTLS_SCRATCH
	movq	SVS_UTLS+UTLS_RSP0,%r15

Revision 1.155 / (download) - annotate - [select for diffs], Thu Feb 22 14:57:11 2018 UTC (6 years, 1 month ago) by maxv
Branch: MAIN
Changes since 1.154: +3 -5 lines
Diff to previous 1.154 (colored) to selected 1.85 (colored)

Adapt previous; put #ifdef SVS around the declaration directly.

Revision 1.154 / (download) - annotate - [select for diffs], Thu Feb 22 14:08:48 2018 UTC (6 years, 1 month ago) by martin
Branch: MAIN
Changes since 1.153: +5 -1 lines
Diff to previous 1.153 (colored) to selected 1.85 (colored)

Protect the SVS part of SYSCALL_ENTRY by #ifdef SVS to make non-SVS
kernels compile again.

Revision 1.153 / (download) - annotate - [select for diffs], Thu Feb 22 10:42:10 2018 UTC (6 years, 1 month ago) by maxv
Branch: MAIN
Changes since 1.152: +25 -9 lines
Diff to previous 1.152 (colored) to selected 1.85 (colored)

Make the machdep.svs_enabled sysctl writable, and add the kernel code
needed to disable SVS at runtime.

We set 'svs_enabled' to false, and hotpatch the kernel entry/exit points
to eliminate the context switch code.

We need to make sure there is no remote CPU that is executing the code we
are hotpatching. So we use two barriers:

 * After the first one each CPU is guaranteed to be executing in
   svs_disable_cpu with interrupts disabled (this way it can't leave this
   place).

 * After the second one it is guaranteed that SVS is disabled, so we flush
   the cache, enable interrupts and continue execution normally.

Between the two barriers, cpu0 will disable SVS (svs_enabled=false and
hotpatch), and each CPU will restore the generic syscall entry point.

Three notes:

 * We should call svs_pgg_update(true) afterwards, to put back PG_G on
   the kernel pages (for better performance). This will be done in another
   commit.

 * The fact that we disable interrupts does not prevent us from receiving
   an NMI, and it would be problematic. So we need to add some code to
   verify that PMCs are disabled before hotpatching. This will be done
   in another commit.

 * In svs_disable() we expect each CPU to be online. We need to add a
   check to make sure they indeed are.

The sysctl allows only a 1->0 transition. There is no point in doing 0->1
transitions anyway, and it would be complicated to implement because we
need to re-synchronize the CPU user page tables with the current ones (we
lost track of them in the last 1->0 transition).

Revision 1.152 / (download) - annotate - [select for diffs], Thu Feb 22 08:56:51 2018 UTC (6 years, 1 month ago) by maxv
Branch: MAIN
Changes since 1.151: +102 -30 lines
Diff to previous 1.151 (colored) to selected 1.85 (colored)

Add a dynamic detection for SVS.

The SVS_* macros are now compiled as skip-noopt. When the system boots, if
the cpu is from Intel, they are hotpatched to their real content.
Typically:

		jmp	1f
		int3
		int3
		int3
		... int3 ...
	1:

gets hotpatched to:

		movq	SVS_UTLS+UTLS_KPDIRPA,%rax
		movq	%rax,%cr3
		movq	CPUVAR(KRSP0),%rsp

These two chunks of code being of the exact same size. We put int3 (0xCC)
to make sure we never execute there.

In the non-SVS (ie non-Intel) case, all it costs is one jump. Given that
the SVS_* macros are small, this jump will likely leave us in the same
icache line, so it's pretty fast.

The syscall entry point is special, because there we use a scratch uint64_t
not in curcpu but in the UTLS page, and it's difficult to hotpatch this
properly. So instead of hotpatching we declare the entry point as an ASM
macro, and define two functions: syscall and syscall_svs, the latter being
the one used in the SVS case.

While here 'syscall' is optimized not to contain an SVS_ENTER - this way
we don't even need to do a jump on the non-SVS case.

When adding pages in the user page tables, make sure we don't have PG_G,
now that it's dynamic.

A read-only sysctl is added, machdep.svs_enabled, that tells whether the
kernel uses SVS or not.

More changes to come, svs_init() is not very clean.

Revision 1.151 / (download) - annotate - [select for diffs], Sun Feb 18 14:07:29 2018 UTC (6 years, 1 month ago) by maxv
Branch: MAIN
Changes since 1.150: +5 -1 lines
Diff to previous 1.150 (colored) to selected 1.85 (colored)

Add svs_enabled, which defaults to 'true' when SVS is compiled (no dynamic
detection yet).

Revision 1.150 / (download) - annotate - [select for diffs], Sat Jan 27 17:54:13 2018 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.149: +2 -2 lines
Diff to previous 1.149 (colored) to selected 1.85 (colored)

Use testb, faster.

Revision 1.149 / (download) - annotate - [select for diffs], Mon Jan 22 08:14:09 2018 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.148: +1 -4 lines
Diff to previous 1.148 (colored) to selected 1.85 (colored)

Ah, remove duplicate SVS_LEAVE. Fixes 32bit binaries. While here remove
duplicate 'cli', but that's harmless.

Revision 1.148 / (download) - annotate - [select for diffs], Sun Jan 21 11:21:40 2018 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.147: +107 -85 lines
Diff to previous 1.147 (colored) to selected 1.85 (colored)

Unmap the kernel from userland in SVS, and leave only the needed
trampolines. As explained below, SVS should now completely mitigate
Meltdown on GENERIC kernels, even though it needs some more tweaking
for GENERIC_KASLR.

Until now the kernel entry points looked like:

	FUNC(intr)
		pushq	$ERR
		pushq	$TRAPNO
		INTRENTRY
		... handle interrupt ...
		INTRFASTEXIT
	END(intr)

With this change they are split and become:

	FUNC(handle)
		... handle interrupt ...
		INTRFASTEXIT
	END(handle)

		TEXT_USER_BEGIN
	FUNC(intr)
		pushq	$ERR
		pushq	$TRAPNO
		INTRENTRY
		jmp	handle
	END(intr)
		TEXT_USER_END

A new section is introduced, .text.user, that contains minimal kernel
entry/exit points. In order to choose what to put in this section, two
macros are introduced, TEXT_USER_BEGIN and TEXT_USER_END.

The section is mapped in userland with normal 4K pages.

In GENERIC, the section is 4K-page-aligned and embedded in .text, which
is mapped with large pages. That is to say, when an interrupt comes in,
the CPU has the user page tables loaded and executes the 'intr' functions
on 4K pages; after calling SVS_ENTER (in INTRENTRY) these 4K pages become
2MB large pages, and remain so when executing in kernel mode.

In GENERIC_KASLR, the section is 4K-page-aligned and independent from the
other kernel texts. The prekern just picks it up and maps it at a random
address.

In GENERIC, SVS should now completely mitigate Meltdown: what we put in
.text.user is not secret.

In GENERIC_KASLR, SVS would have to be improved a bit more: the
'jmp handle' instruction is actually secret, since it leaks the address
of the section we are jumping into. By exploiting Meltdown on Intel, this
theoretically allows a local user to reconstruct the address of the first
text section. But given that our KASLR produces several texts, and that
each section is not correlated with the others, the level of protection
KASLR provides is still good.

Revision 1.147 / (download) - annotate - [select for diffs], Thu Jan 18 07:25:34 2018 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.146: +22 -7 lines
Diff to previous 1.146 (colored) to selected 1.85 (colored)

Unmap the kernel heap from the user page tables (SVS).

This implementation is optimized and organized in such a way that we
don't need to copy the kernel stack to a safe place during user<->kernel
transitions. We create two VAs that point to the same physical page; one
will be mapped in userland and is offset in order to contain only the
trapframe, the other is mapped in the kernel and maps the entire stack.

Sent on tech-kern@ a week ago.

Revision 1.146 / (download) - annotate - [select for diffs], Thu Jan 11 09:00:04 2018 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.145: +2 -2 lines
Diff to previous 1.145 (colored) to selected 1.85 (colored)

Declare new SVS_* variants: SVS_ENTER_NOSTACK and SVS_LEAVE_NOSTACK. Use
SVS_ENTER_NOSTACK in the syscall entry point, and put it before the code
that touches curlwp. (curlwp is located in the direct map.)

Then, disable __HAVE_CPU_UAREA_ROUTINES (to be removed later). This moves
the kernel stack into pmap_kernel(), and not the direct map. That's a
change I've always wanted to make: because of the direct map we can't add
a redzone on the stack, and basically, a stack overflow can go very far
in memory without being detected (as far as erasing all of the system's
memory).

Finally, unmap the direct map from userland.

Revision 1.145 / (download) - annotate - [select for diffs], Sun Jan 7 16:10:16 2018 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.144: +12 -1 lines
Diff to previous 1.144 (colored) to selected 1.85 (colored)

Add a new option, SVS (for Separate Virtual Space), that unmaps kernel
pages when running in userland. For now, only the PTE area is unmapped.

Sent on tech-kern@.

Revision 1.144 / (download) - annotate - [select for diffs], Thu Jan 4 13:36:30 2018 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
Changes since 1.143: +3 -2 lines
Diff to previous 1.143 (colored) to selected 1.85 (colored)

Allocate the TSS area dynamically. This way cpu_info and cpu_tss can be
put in separate pages.

Revision 1.70.2.2 / (download) - annotate - [select for diffs], Sun Dec 3 11:35:47 2017 UTC (6 years, 3 months ago) by jdolecek
Branch: tls-maxphys
Changes since 1.70.2.1: +602 -480 lines
Diff to previous 1.70.2.1 (colored) to branchpoint 1.70 (colored) next main 1.71 (colored) to selected 1.85 (colored)

update from HEAD

Revision 1.143 / (download) - annotate - [select for diffs], Sun Nov 26 15:00:16 2017 UTC (6 years, 4 months ago) by maxv
Branch: MAIN
CVS Tags: tls-maxphys-base-20171202
Changes since 1.142: +2 -2 lines
Diff to previous 1.142 (colored) to selected 1.85 (colored)

Update a comment, and use testw instead.

Revision 1.142 / (download) - annotate - [select for diffs], Sun Nov 26 14:54:43 2017 UTC (6 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.141: +42 -42 lines
Diff to previous 1.141 (colored) to selected 1.85 (colored)

Hide a bunch of raw symbols.

Revision 1.141 / (download) - annotate - [select for diffs], Tue Nov 21 09:58:09 2017 UTC (6 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.140: +1 -4 lines
Diff to previous 1.140 (colored) to selected 1.85 (colored)

Remove unused symbol - it is aligned to 4096 and this reduces the number
of possible locations for .bss in KASLR kernels.

Revision 1.140 / (download) - annotate - [select for diffs], Sat Oct 28 20:57:17 2017 UTC (6 years, 5 months ago) by bouyer
Branch: MAIN
Changes since 1.139: +2 -2 lines
Diff to previous 1.139 (colored) to selected 1.85 (colored)

Use FLAT_RING3_CS64 (defined in Xen public headers) instead of numeric
value.

Revision 1.139 / (download) - annotate - [select for diffs], Sat Oct 28 20:06:31 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.138: +4 -0 lines
Diff to previous 1.138 (colored) to selected 1.85 (colored)

It appears that Xen remaps the userland %cs to 0xE033. So add it to the
checklist. Otherwise we're going through Luexit32: %fs gets reloaded,
which sets the FS.base to NULL, which will cause the thread to page-fault
next time it accesses its TLS (as seen in PR/52662).

This fix is not very clean, and it would be nice to understand why Xen
remaps %cs. But I'm committing it now anyway, so that people can test.

Revision 1.138 / (download) - annotate - [select for diffs], Sat Oct 21 08:08:26 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.137: +9 -1 lines
Diff to previous 1.137 (colored) to selected 1.85 (colored)

Use labels instead of disassembling *(%rip). intrfastexit is now the
only place where the segregs can fault.

Revision 1.137 / (download) - annotate - [select for diffs], Sat Oct 21 06:55:54 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.136: +6 -3 lines
Diff to previous 1.136 (colored) to selected 1.85 (colored)

Improve our segregs model. Pass 3/3.

Treat %gs the same way we treat %ds/%es/%fs: restore it in INTRFASTEXIT
on 32bit LWPs.

On Xen however, its behavior does not change, because we need to do an
hypercall before INTR_RESTORE_GPRS, and that's too complicated for now.

As a side effect, this change fixes a bug in the ACPI wakeup code; %fs/%gs
were not restored on 32bit LWPs, and chances are they would segfault
shortly afterwards.

Support for USER_LDT on amd64 is almost complete now.

Revision 1.136 / (download) - annotate - [select for diffs], Thu Oct 19 20:27:12 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.135: +3 -3 lines
Diff to previous 1.135 (colored) to selected 1.85 (colored)

Use cmpw.

Revision 1.135 / (download) - annotate - [select for diffs], Thu Oct 19 19:05:53 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.134: +4 -3 lines
Diff to previous 1.134 (colored) to selected 1.85 (colored)

Improve our segregs model. Pass 2/3.

Treat %fs the same way we treat %ds and %es. For a new 32bit LWP %fs is
set to GUDATA32_SEL, and always updated in INTRFASTEXIT.

This solves an important issue we had until now: we couldn't handle the
faults generated by the "movw $val,%fs" instructions, because they were
deep into the kernel context. Now %fs can fault only in INTRFASTEXIT,
which is safe.

Note that it also fixes a bug I believe affected the kernel: on AMD CPUs,
setting %fs to zero does not flush the internal register state, and
therefore we could leak the %fs base address when context-switching. This
being said, I couldn't trigger the issue on the AMD cpu I have. Whatever,
it's fixed now, since we first set %fs to GUDATA32 - which does flush the
register state.

Revision 1.134 / (download) - annotate - [select for diffs], Thu Oct 19 18:36:31 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.133: +31 -16 lines
Diff to previous 1.133 (colored) to selected 1.85 (colored)

Improve our segregs model. Pass 1/3.

Right now, we are saving and restoring %ds/%es each time we enter/leave the
kernel. However, we let %fs/%gs live in the kernel space, and we rely on
the fact that when switching to an LWP, %fs/%gs are set right away (via
cpu_switchto or setregs).

It has two drawbacks: we are taking care of %ds/%es while they are
deprecated (useless) on 64bit LWPs, and we are restricting %fs/%gs while
they still have a meaning on 32bit LWPs.

Therefore, handle 32bit and 64bit LWPs differently:
 * 64bit LWPs use fixed segregs, which are not taken care of.
 * 32bit LWPs have dynamic segregs, always saved/restored.

For now, only %ds and %es are changed; %fs and %gs will be in the next
passes.

The trapframe is constructed as usual. In INTRFASTEXIT, we restore %ds/%es
depending on the %cs value. If %cs contains one of the two standard 64bit
selectors, don't do anything. Otherwise, restore everything.

When doing a context switch, just restore %ds/%es to their default values.
On a 32bit LWP they will be overwritten by INTRFASTEXIT; on a 64bit LWP
they won't be updated.

In the ACPI wakeup code, restore %ds/%es to the default 64bit user value.

Revision 1.133 / (download) - annotate - [select for diffs], Tue Oct 17 07:48:10 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.132: +2 -2 lines
Diff to previous 1.132 (colored) to selected 1.85 (colored)

Move %ds and %es into the GDT on 64bit LWPs.

Revision 1.132 / (download) - annotate - [select for diffs], Tue Oct 17 07:33:44 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.131: +2 -1 lines
Diff to previous 1.131 (colored) to selected 1.85 (colored)

Have the cpu clear PSL_D automatically when entering the kernel via a
syscall. Then, don't clear PSL_D and PSL_AC in the syscall entry point,
they are now both cleared by the cpu (faster). However they still need to
be manually cleared in the interrupt/trap entry points.

Revision 1.131 / (download) - annotate - [select for diffs], Sat Sep 30 11:43:57 2017 UTC (6 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.130: +4 -2 lines
Diff to previous 1.130 (colored) to selected 1.85 (colored)

Add a bootspace structure. It describes the physical and virtual space
layout created by the early kernel bootstrap code. Start using it, and
eliminate several references to KERNBASE and other global symbols. While
here clean up xen-i386, it's really tiring.

Revision 1.130 / (download) - annotate - [select for diffs], Thu Sep 28 17:35:08 2017 UTC (6 years, 6 months ago) by maxv
Branch: MAIN
Changes since 1.129: +7 -4 lines
Diff to previous 1.129 (colored) to selected 1.85 (colored)

Clean up, and initialize the lwp0 fields in init_x86_64.

Revision 1.129 / (download) - annotate - [select for diffs], Fri Sep 15 17:32:12 2017 UTC (6 years, 6 months ago) by maxv
Branch: MAIN
Changes since 1.128: +28 -13 lines
Diff to previous 1.128 (colored) to selected 1.85 (colored)

Declare INTRFASTEXIT as a function, so that there is only one iretq in the
kernel. Then, check %rip against the address of this iretq instead of
disassembling (%rip) - which could fault again, or point at some random
address which happens to contain the iretq opcode. The same is true for gs
below, but I'll fix that in another commit.

Revision 1.123.6.2 / (download) - annotate - [select for diffs], Mon Sep 4 20:41:28 2017 UTC (6 years, 6 months ago) by snj
Branch: netbsd-8
CVS Tags: matt-nb8-mediatek-base, matt-nb8-mediatek
Changes since 1.123.6.1: +1 -9 lines
Diff to previous 1.123.6.1 (colored) to branchpoint 1.123 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #257):
	sys/compat/linux/arch/amd64/linux_machdep.c: 1.52
	sys/arch/amd64/amd64/copy.S: 1.21-1.24
	sys/arch/amd64/amd64/locore.S: 1.125
	sys/arch/amd64/amd64/machdep.c: 1.256
Fix a bug in ucas_32 and ucas_64. There is a branch where they don't
initialize %rax.
--
style, reduces an incoming diff
00
Split comment, otherwise it is misleading. kcopy operates on kernel
memory, and must *not* be used with userland pages.
--
Move incq outside of the copy section. No functional change, reduces
my smap diff.
--
Remove dumb debug code and outdated comment.
--
Don't forget to clean l_md.md_flags, otherwise there may be MDL_COMPAT32,
in which case the kernel would always use iret (slower).

Revision 1.128 / (download) - annotate - [select for diffs], Thu Aug 31 10:30:58 2017 UTC (6 years, 6 months ago) by maxv
Branch: MAIN
Changes since 1.127: +2 -0 lines
Diff to previous 1.127 (colored) to selected 1.85 (colored)

Add a layer of mitigation against the intel sysret vuln: restore %gs when
sysretq faults. Right now we try to make sure that %rip is canonical by
performing sanity checks in several places, but I've already found missing
checks two times already, and there may be others.

By performing an additional swapgs here, we are turning ring0 exploits to
simple DoSes - which are still security bugs, but of a lower impact.

Revision 1.127 / (download) - annotate - [select for diffs], Thu Aug 31 09:27:28 2017 UTC (6 years, 6 months ago) by maxv
Branch: MAIN
Changes since 1.126: +4 -13 lines
Diff to previous 1.126 (colored) to selected 1.85 (colored)

Construct the trap frame with interrupts disabled, for safety, just like
the rest of the interrupt entry points.

Revision 1.77.2.8 / (download) - annotate - [select for diffs], Mon Aug 28 17:51:27 2017 UTC (6 years, 7 months ago) by skrll
Branch: nick-nhusb
Changes since 1.77.2.7: +26 -45 lines
Diff to previous 1.77.2.7 (colored) to branchpoint 1.77 (colored) next main 1.78 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.126 / (download) - annotate - [select for diffs], Thu Aug 10 12:49:11 2017 UTC (6 years, 7 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20170825
Changes since 1.125: +1 -2 lines
Diff to previous 1.125 (colored) to selected 1.85 (colored)

Don't include opt_compat_ibcs2.h. No idea what it was doing in amd64,
since it never got implemented there.

Revision 1.125 / (download) - annotate - [select for diffs], Tue Aug 8 17:00:42 2017 UTC (6 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.124: +1 -9 lines
Diff to previous 1.124 (colored) to selected 1.85 (colored)

Remove dumb debug code and outdated comment.

Revision 1.66.2.2 / (download) - annotate - [select for diffs], Tue Aug 8 12:00:35 2017 UTC (6 years, 7 months ago) by martin
Branch: netbsd-6
Changes since 1.66.2.1: +1 -22 lines
Diff to previous 1.66.2.1 (colored) to branchpoint 1.66 (colored) next main 1.67 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #1464):

	sys/arch/i386/i386/trap.c:     revision 1.288		(patch)
	sys/arch/i386/i386/machdep.c:  revision 1.783		(patch)
	sys/arch/i386/i386/locore.S:   revision 1.146		(patch)
	sys/arch/amd64/amd64/locore.S: revision 1.122,1.124	(patch)
	sys/arch/amd64/amd64/machdep.c revision 1.254		(patch)
	sys/arch/amd64/amd64/trap.c:   revision 1.95-1.96	(patch)

Remove the osyscall call gate and emulate it. There is a
one-instruction race in it that could panic the kernel.

Restore the ability to run netbsd 1.0 32-bit executables by checking
for the relevant lcall instruction in the trap handler and treating it
as a syscall.

Revision 1.66.2.1.6.1 / (download) - annotate - [select for diffs], Tue Aug 8 11:59:16 2017 UTC (6 years, 7 months ago) by martin
Branch: netbsd-6-1
Changes since 1.66.2.1: +1 -22 lines
Diff to previous 1.66.2.1 (colored) next main 1.66.2.2 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #1464):

	sys/arch/i386/i386/trap.c:     revision 1.288		(patch)
	sys/arch/i386/i386/machdep.c:  revision 1.783		(patch)
	sys/arch/i386/i386/locore.S:   revision 1.146		(patch)
	sys/arch/amd64/amd64/locore.S: revision 1.122,1.124	(patch)
	sys/arch/amd64/amd64/machdep.c revision 1.254		(patch)
	sys/arch/amd64/amd64/trap.c:   revision 1.95-1.96	(patch)

Remove the osyscall call gate and emulate it. There is a
one-instruction race in it that could panic the kernel.

Restore the ability to run netbsd 1.0 32-bit executables by checking
for the relevant lcall instruction in the trap handler and treating it
as a syscall.

Revision 1.66.2.1.4.1 / (download) - annotate - [select for diffs], Tue Aug 8 11:55:20 2017 UTC (6 years, 7 months ago) by martin
Branch: netbsd-6-0
Changes since 1.66.2.1: +1 -22 lines
Diff to previous 1.66.2.1 (colored) next main 1.66.2.2 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #1464):

	sys/arch/i386/i386/trap.c:     revision 1.288		(patch)
	sys/arch/i386/i386/machdep.c:  revision 1.783		(patch)
	sys/arch/i386/i386/locore.S:   revision 1.146		(patch)
	sys/arch/amd64/amd64/locore.S: revision 1.122,1.124	(patch)
	sys/arch/amd64/amd64/machdep.c revision 1.254		(patch)
	sys/arch/amd64/amd64/trap.c:   revision 1.95-1.96	(patch)

Remove the osyscall call gate and emulate it. There is a
one-instruction race in it that could panic the kernel.

Restore the ability to run netbsd 1.0 32-bit executables by checking
for the relevant lcall instruction in the trap handler and treating it
as a syscall.

Revision 1.76.2.2 / (download) - annotate - [select for diffs], Thu Jul 20 01:43:40 2017 UTC (6 years, 8 months ago) by snj
Branch: netbsd-7
CVS Tags: netbsd-7-2-RELEASE
Changes since 1.76.2.1: +1 -2 lines
Diff to previous 1.76.2.1 (colored) to branchpoint 1.76 (colored) next main 1.77 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #1441):
	sys/arch/i386/i386/trap.c: revision 1.288 via patch
	sys/arch/i386/i386/machdep.c: revision 1.783 via patch
	sys/arch/i386/i386/locore.S: revision 1.146 via patch
	sys/arch/amd64/amd64/locore.S: revision 1.124 via patch
Remove the osyscall call gate on i386, and emulate it. There is a one-
instruction race in it that could panic the kernel.

Revision 1.76.8.2 / (download) - annotate - [select for diffs], Thu Jul 20 01:43:10 2017 UTC (6 years, 8 months ago) by snj
Branch: netbsd-7-1
CVS Tags: netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE
Changes since 1.76.8.1: +1 -2 lines
Diff to previous 1.76.8.1 (colored) to branchpoint 1.76 (colored) next main 1.77 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #1441):
	sys/arch/i386/i386/trap.c: revision 1.288 via patch
	sys/arch/i386/i386/machdep.c: revision 1.783 via patch
	sys/arch/i386/i386/locore.S: revision 1.146 via patch
	sys/arch/amd64/amd64/locore.S: revision 1.124 via patch
Remove the osyscall call gate on i386, and emulate it. There is a one-
instruction race in it that could panic the kernel.

Revision 1.76.4.2 / (download) - annotate - [select for diffs], Thu Jul 20 01:42:39 2017 UTC (6 years, 8 months ago) by snj
Branch: netbsd-7-0
Changes since 1.76.4.1: +1 -2 lines
Diff to previous 1.76.4.1 (colored) to branchpoint 1.76 (colored) next main 1.77 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #1441):
	sys/arch/i386/i386/trap.c: revision 1.288 via patch
	sys/arch/i386/i386/machdep.c: revision 1.783 via patch
	sys/arch/i386/i386/locore.S: revision 1.146 via patch
	sys/arch/amd64/amd64/locore.S: revision 1.124 via patch
Remove the osyscall call gate on i386, and emulate it. There is a one-
instruction race in it that could panic the kernel.

Revision 1.123.6.1 / (download) - annotate - [select for diffs], Wed Jul 5 19:59:29 2017 UTC (6 years, 8 months ago) by snj
Branch: netbsd-8
Changes since 1.123: +1 -2 lines
Diff to previous 1.123 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by maxv in ticket #88):
	sys/arch/amd64/amd64/locore.S: revision 1.124
	sys/arch/i386/i386/locore.S: revision 1.146
	sys/arch/i386/i386/machdep.c: revision 1.783
	sys/arch/i386/i386/trap.c: revision 1.288
Remove the osyscall call gate on i386, and emulate it. There is a one-
instruction race in it that could panic the kernel.

Revision 1.124 / (download) - annotate - [select for diffs], Sat Jul 1 10:44:42 2017 UTC (6 years, 8 months ago) by maxv
Branch: MAIN
CVS Tags: perseant-stdc-iso10646-base, perseant-stdc-iso10646
Changes since 1.123: +1 -2 lines
Diff to previous 1.123 (colored) to selected 1.85 (colored)

Remove the osyscall call gate on i386, and emulate it. There is a one-
instruction race in it that could panic the kernel.

Revision 1.76.2.1 / (download) - annotate - [select for diffs], Wed Apr 26 14:52:50 2017 UTC (6 years, 11 months ago) by martin
Branch: netbsd-7
Changes since 1.76: +1 -22 lines
Diff to previous 1.76 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by bsiegert in ticket #1397):

	sys/arch/amd64/amd64/locore.S			1.122 (via patch)
	sys/arch/amd64/amd64/machdep.c			1.254 (via patch)
	sys/arch/amd64/amd64/trap.c			1.95 (via patch)

Remove the call gate on amd64, it is useless and vulnerable.

Revision 1.76.8.1 / (download) - annotate - [select for diffs], Wed Apr 26 14:51:58 2017 UTC (6 years, 11 months ago) by martin
Branch: netbsd-7-1
Changes since 1.76: +1 -22 lines
Diff to previous 1.76 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by bsiegert in ticket #1397):

	sys/arch/amd64/amd64/locore.S			1.122 (via patch)
	sys/arch/amd64/amd64/machdep.c			1.254 (via patch)
	sys/arch/amd64/amd64/trap.c			1.95 (via patch)

Remove the call gate on amd64, it is useless and vulnerable.

Revision 1.76.4.1 / (download) - annotate - [select for diffs], Wed Apr 26 14:50:51 2017 UTC (6 years, 11 months ago) by martin
Branch: netbsd-7-0
Changes since 1.76: +1 -22 lines
Diff to previous 1.76 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by bsiegert in ticket #1397):

	sys/arch/amd64/amd64/locore.S			1.122 (via patch)
	sys/arch/amd64/amd64/machdep.c			1.254 (via patch)
	sys/arch/amd64/amd64/trap.c			1.95 (via patch)

Remove the call gate on amd64, it is useless and vulnerable.

Revision 1.107.2.5 / (download) - annotate - [select for diffs], Wed Apr 26 02:52:59 2017 UTC (6 years, 11 months ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.107.2.4: +1 -23 lines
Diff to previous 1.107.2.4 (colored) to branchpoint 1.107 (colored) next main 1.108 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.118.2.1 / (download) - annotate - [select for diffs], Fri Apr 21 16:53:21 2017 UTC (6 years, 11 months ago) by bouyer
Branch: bouyer-socketcan
Changes since 1.118: +27 -36 lines
Diff to previous 1.118 (colored) next main 1.119 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.123 / (download) - annotate - [select for diffs], Sat Mar 25 15:07:21 2017 UTC (7 years ago) by maxv
Branch: MAIN
CVS Tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-20170426, netbsd-8-base, jdolecek-ncq-base, jdolecek-ncq, bouyer-socketcan-base1
Branch point for: netbsd-8
Changes since 1.122: +1 -2 lines
Diff to previous 1.122 (colored) to selected 1.85 (colored)

Don't need gdtstore here.

Revision 1.122 / (download) - annotate - [select for diffs], Thu Mar 23 17:25:51 2017 UTC (7 years ago) by maxv
Branch: MAIN
Changes since 1.121: +1 -22 lines
Diff to previous 1.121 (colored) to selected 1.85 (colored)

Remove this call gate on amd64, it is useless and vulnerable.

Call gates do not modify %rflags, so interrupts are not disabled when
entering the gate. There is a small window where we are in kernel mode and
with a userland %gs, and if an interrupt happens here we will rejump into
the kernel but not switch to the kernel TLS.

Userland can simply perform a gate call in a loop, and hope that at some
point an interrupt will be received in this window - which necessarily will
be the case. With a specially-crafted %gs it is certainly enough to
escalate privileges.

Revision 1.107.2.4 / (download) - annotate - [select for diffs], Mon Mar 20 06:57:09 2017 UTC (7 years ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.107.2.3: +27 -14 lines
Diff to previous 1.107.2.3 (colored) to branchpoint 1.107 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.121 / (download) - annotate - [select for diffs], Thu Feb 9 19:30:56 2017 UTC (7 years, 1 month ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-localcount-20170320
Changes since 1.120: +25 -10 lines
Diff to previous 1.120 (colored) to selected 1.85 (colored)

If the preloaded modules cannot be mapped with the initial amount of VA,
discard the associated bootinfo entry. Otherwise the machine faults and
reboots immediately.

I spotted this bug more than a year ago, but I recently saw that there is
already PR/42645 (7 years old), so just fix it. The size has been increased
in the meantime, so the limit is unlikely to be reached anyway.

Revision 1.120 / (download) - annotate - [select for diffs], Thu Feb 9 08:23:46 2017 UTC (7 years, 1 month ago) by maxv
Branch: MAIN
Changes since 1.119: +2 -4 lines
Diff to previous 1.119 (colored) to selected 1.85 (colored)

Restore %ds before swapgs. Movs to segment registers are allowed to fault
in kernel mode but simply cause a signal to be sent to userland. The thing
is, in this case %gs is not restored when entering the trap routine, which
means the kernel uses userland's TLS instead of using its own. Which in
short makes it easy to escalate privileges.

Currently, this bug is triggered only in one place, which I am about to
fix too.

Revision 1.77.2.7 / (download) - annotate - [select for diffs], Sun Feb 5 13:40:01 2017 UTC (7 years, 1 month ago) by skrll
Branch: nick-nhusb
Changes since 1.77.2.6: +12 -10 lines
Diff to previous 1.77.2.6 (colored) to branchpoint 1.77 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.119 / (download) - annotate - [select for diffs], Thu Feb 2 19:12:09 2017 UTC (7 years, 1 month ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20170204
Changes since 1.118: +2 -2 lines
Diff to previous 1.118 (colored) to selected 1.85 (colored)

Fix these comments, we probably won't want to keep them up to date.

Revision 1.107.2.3 / (download) - annotate - [select for diffs], Sat Jan 7 08:56:09 2017 UTC (7 years, 2 months ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.107.2.2: +29 -43 lines
Diff to previous 1.107.2.2 (colored) to branchpoint 1.107 (colored) to selected 1.85 (colored)

Sync with HEAD.  (Note that most of these changes are simply $NetBSD$
tag issues.)

Revision 1.118 / (download) - annotate - [select for diffs], Sat Dec 17 13:49:05 2016 UTC (7 years, 3 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-localcount-20170107, bouyer-socketcan-base
Branch point for: bouyer-socketcan
Changes since 1.117: +4 -4 lines
Diff to previous 1.117 (colored) to selected 1.85 (colored)

Fix the name of the labels. I think I got confused by jne, so while here
replace it by jnz, which is more explicit.

Revision 1.117 / (download) - annotate - [select for diffs], Fri Dec 16 19:52:22 2016 UTC (7 years, 3 months ago) by maxv
Branch: MAIN
Changes since 1.116: +3 -3 lines
Diff to previous 1.116 (colored) to selected 1.85 (colored)

The way the xen dummy page is taken care of makes absolutely no sense at
all, with magic offsets here and there in different layers of the system.
It is just blind luck that everything has always worked as expected so
far.

Due to this wrong design we have a problem now: we allocate one physical
page for lapic, and it happens to overlap with the dummy page, which
causes the system to crash.

Fix this by keeping the dummy va directly in a variable instead of magic
offsets. The asm locore now increments the first pa to hide the dummy page
to machdep and pmap.

Revision 1.116 / (download) - annotate - [select for diffs], Fri Dec 9 17:57:24 2016 UTC (7 years, 3 months ago) by maxv
Branch: MAIN
Changes since 1.115: +5 -3 lines
Diff to previous 1.115 (colored) to selected 1.85 (colored)

On amd64 we try to guarantee that VA = PA + KERNBASE in the bootstrap
memory. But we have a problem with the ISA I/O MEM, because its va is
located above the kernel and its pa below it, so it does not respect
the rule.

To compensate for that we make the map look like the ISA stuff is above
the kernel by applying an offset on the pa. The issue with this design is
that we systematically lose 96 pages of physical memory.

Fix this by applying the offset on the va instead. Now these 96 pages are
internalized into uvm, and the rule is respected until kern_end.

Revision 1.115 / (download) - annotate - [select for diffs], Tue Dec 6 15:05:07 2016 UTC (7 years, 3 months ago) by maxv
Branch: MAIN
Changes since 1.114: +2 -2 lines
Diff to previous 1.114 (colored) to selected 1.85 (colored)

Use __kernel_end instead. Does not change anything, but will be meaningful
soon.

Revision 1.77.2.6 / (download) - annotate - [select for diffs], Mon Dec 5 10:54:49 2016 UTC (7 years, 3 months ago) by skrll
Branch: nick-nhusb
Changes since 1.77.2.5: +20 -41 lines
Diff to previous 1.77.2.5 (colored) to branchpoint 1.77 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.114 / (download) - annotate - [select for diffs], Fri Nov 25 14:12:55 2016 UTC (7 years, 4 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20161204
Changes since 1.113: +1 -11 lines
Diff to previous 1.113 (colored) to selected 1.85 (colored)

Move the virtual address of the LAPIC page out of the data segment on amd64
and i386. The old design was error-prone, and it didn't allow us to map the
data segment with large pages.

Now, the VA is allocated dynamically in the pmap bootstrap code, and entered
manually later. We go from using &local_apic to using *local_apic_va, and we
therefore need one more level of indirection in the asm code.

Discussed on tech-kern.

Revision 1.113 / (download) - annotate - [select for diffs], Fri Nov 11 11:34:51 2016 UTC (7 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.112: +3 -3 lines
Diff to previous 1.112 (colored) to selected 1.85 (colored)

Rename xen_pmap_bootstrap to xen_locore, it really has nothing to do with
pmap and is just a C version of what amd64 and i386 do in asm.

Revision 1.112 / (download) - annotate - [select for diffs], Fri Nov 11 11:31:26 2016 UTC (7 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.111: +11 -1 lines
Diff to previous 1.111 (colored) to selected 1.85 (colored)

Mmh, I mistakenly removed the lapic page (which is part of another diff),
put it back in.

Revision 1.111 / (download) - annotate - [select for diffs], Fri Nov 11 10:40:00 2016 UTC (7 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.110: +19 -35 lines
Diff to previous 1.110 (colored) to selected 1.85 (colored)

KNF and simplify Xen

Revision 1.107.2.2 / (download) - annotate - [select for diffs], Fri Nov 4 14:48:57 2016 UTC (7 years, 4 months ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.107.2.1: +3 -8 lines
Diff to previous 1.107.2.1 (colored) to branchpoint 1.107 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.110 / (download) - annotate - [select for diffs], Sun Oct 16 10:51:31 2016 UTC (7 years, 5 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-localcount-20161104
Changes since 1.109: +3 -8 lines
Diff to previous 1.109 (colored) to selected 1.85 (colored)

Remove lapic_tpr on amd64 and i386, unused. Now, we have only one pointer
to the LAPIC page, and each register access is done with relative offsets.

Revision 1.77.2.5 / (download) - annotate - [select for diffs], Wed Oct 5 20:55:23 2016 UTC (7 years, 5 months ago) by skrll
Branch: nick-nhusb
Changes since 1.77.2.4: +45 -53 lines
Diff to previous 1.77.2.4 (colored) to branchpoint 1.77 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.109 / (download) - annotate - [select for diffs], Sun Aug 21 09:53:25 2016 UTC (7 years, 7 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20161004, localcount-20160914
Changes since 1.108: +7 -8 lines
Diff to previous 1.108 (colored) to selected 1.85 (colored)

Simplify.

Revision 1.107.2.1 / (download) - annotate - [select for diffs], Tue Jul 26 03:24:16 2016 UTC (7 years, 8 months ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.107: +3 -17 lines
Diff to previous 1.107 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.108 / (download) - annotate - [select for diffs], Mon Jul 25 16:03:38 2016 UTC (7 years, 8 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-localcount-20160806, pgoyette-localcount-20160726
Changes since 1.107: +3 -17 lines
Diff to previous 1.107 (colored) to selected 1.85 (colored)

Remove lapic_id, lapic_ppr and lapic_isr. We need to be careful though: the
offset of lapic_tpr must not change, and the whole area must be exactly one
page.

Revision 1.107 / (download) - annotate - [select for diffs], Mon Jul 11 14:52:54 2016 UTC (7 years, 8 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-localcount-base
Branch point for: pgoyette-localcount
Changes since 1.106: +42 -35 lines
Diff to previous 1.106 (colored) to selected 1.85 (colored)

KNF and simplify.

Revision 1.77.2.4 / (download) - annotate - [select for diffs], Sat Jul 9 20:24:49 2016 UTC (7 years, 8 months ago) by skrll
Branch: nick-nhusb
Changes since 1.77.2.3: +115 -100 lines
Diff to previous 1.77.2.3 (colored) to branchpoint 1.77 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.106 / (download) - annotate - [select for diffs], Sat Jul 9 06:58:06 2016 UTC (7 years, 8 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20160907
Changes since 1.105: +4 -4 lines
Diff to previous 1.105 (colored) to selected 1.85 (colored)

The CPU considers a given va as executable if none of its levels have
the NOX bit. With the top level recursive slot, however, several levels
are recursively omitted, which implies that each entry that is not the
child of NOX-ed parents actually appears somewhere in the virtual space
as executable via this slot, even if it is followed by an underlying
entry that has the NOX bit.

This recursive slot is only used to edit the page tree itself. Make it
non-executable.

Revision 1.105 / (download) - annotate - [select for diffs], Fri Jul 8 09:15:38 2016 UTC (7 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.104: +3 -3 lines
Diff to previous 1.104 (colored) to selected 1.85 (colored)

The preloaded modules are now reallocated dynamically by the kernel. This
area does not need to be executable anymore.

Revision 1.104 / (download) - annotate - [select for diffs], Mon Jul 4 07:56:07 2016 UTC (7 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.103: +11 -12 lines
Diff to previous 1.103 (colored) to selected 1.85 (colored)

Make the execution flow canonical instead of jumping back and forth, and
complete the userland check.

Revision 1.103 / (download) - annotate - [select for diffs], Fri Jul 1 13:11:21 2016 UTC (7 years, 8 months ago) by maxv
Branch: MAIN
Changes since 1.102: +39 -35 lines
Diff to previous 1.102 (colored) to selected 1.85 (colored)

Try to make this part more readable. No functional change.

Revision 1.102 / (download) - annotate - [select for diffs], Sat Jun 4 10:48:11 2016 UTC (7 years, 9 months ago) by maxv
Branch: MAIN
Changes since 1.101: +2 -2 lines
Diff to previous 1.101 (colored) to selected 1.85 (colored)

The ISA I/O MEM does not need to be executable. Remove the X permission
on it.

Revision 1.101 / (download) - annotate - [select for diffs], Sat Jun 4 10:19:09 2016 UTC (7 years, 9 months ago) by maxv
Branch: MAIN
Changes since 1.100: +8 -6 lines
Diff to previous 1.100 (colored) to selected 1.85 (colored)

Use the same instruction layout to map the ISA I/O. No functional
change.

The comment is still wrong: we are not on (4), we are actually below
the kernel area in physical memory. I'll fix that later.

Revision 1.100 / (download) - annotate - [select for diffs], Sat Jun 4 09:45:57 2016 UTC (7 years, 9 months ago) by maxv
Branch: MAIN
Changes since 1.99: +6 -6 lines
Diff to previous 1.99 (colored) to selected 1.85 (colored)

Reorder some definitions. Reduces the diff between amd64 and i386.

Revision 1.99 / (download) - annotate - [select for diffs], Sun May 29 17:06:17 2016 UTC (7 years, 10 months ago) by bouyer
Branch: MAIN
Changes since 1.98: +30 -10 lines
Diff to previous 1.98 (colored) to selected 1.85 (colored)

Switch to elf notes for amd64 instead of the old key=value list to describe the
  guest requirements and support.
Add infrastructure to query the hypervisor about features support.
For verbose boot, print the features suppoted by the hypervisor for this
  guest.

Revision 1.98 / (download) - annotate - [select for diffs], Sun May 29 09:16:11 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.97: +4 -0 lines
Diff to previous 1.97 (colored) to selected 1.85 (colored)

Define tablesize. Useful when debugging.

Revision 1.97 / (download) - annotate - [select for diffs], Sun May 29 09:04:19 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.96: +21 -35 lines
Diff to previous 1.96 (colored) to selected 1.85 (colored)

Revert rev1.94. It apparently raises a page fault from SMEP. I need to
investigate the whole kernel mappings anyway, so I'll recommit this
patch later.

Revision 1.77.2.3 / (download) - annotate - [select for diffs], Sun May 29 08:44:15 2016 UTC (7 years, 10 months ago) by skrll
Branch: nick-nhusb
Changes since 1.77.2.2: +263 -159 lines
Diff to previous 1.77.2.2 (colored) to branchpoint 1.77 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.96 / (download) - annotate - [select for diffs], Sat May 28 09:03:16 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20160529
Changes since 1.95: +18 -4 lines
Diff to previous 1.95 (colored) to selected 1.85 (colored)

Define fillkpt_blank, which creates blank entries in a page table. Use
it to map the first MB. No functional change.

Revision 1.95 / (download) - annotate - [select for diffs], Sat May 28 08:43:16 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.94: +33 -19 lines
Diff to previous 1.94 (colored) to selected 1.85 (colored)

Move proc0's stack out of the BOOTSTRAP TABLES, and map it independently
with RW permissions. Reduces the impact of a stack overflow.

Revision 1.94 / (download) - annotate - [select for diffs], Thu May 26 07:24:55 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.93: +9 -3 lines
Diff to previous 1.93 (colored) to selected 1.85 (colored)

There is an issue in the way the fillkpt macro sets up pages on both
amd64 and i386.

The fillkpt loop is equivalent to the following:

	do {
		/* fill in the slot */
		/* increment %ebx to the next slot */
		/* increment %eax to the next pa */
	} while (%ecx > 0)

The issue here is that if %ecx = 0 (i.e., the chunk we are trying to
map is zero-sized), there is still one entry created in the page table.
The kernel expects the va<->pa translation to be linear in low memory.
If there is a zero-sized chunk, the dead entry creates a +4096 offset in
the virtual space, with two consecutive entries that point to the same
physical address. In other words, the mappings are not linear anymore,
which causes the kernel to die.

Before my recent changes, there were only two big chunks that were
mapped, and neither of these could be zero-sized. Now, with multiple,
fine-grained chunks, it is possible that the [SYMS]+[PRELOADED_MODULES]
chunk could be zero-sized.

[PRELOADED_MODULES] is almost never here, and [SYMS] is always here on
default kernels. Except for floppies, where the bootloader does not load
[SYMS].

Should fix PR 51148.

Revision 1.93 / (download) - annotate - [select for diffs], Sun May 22 10:11:55 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.92: +6 -6 lines
Diff to previous 1.92 (colored) to selected 1.85 (colored)

Save L4's physical address earlier. Also, PDE_SIZE has nothing to do
here, we are just zeroing out the upper 32bits of the 64bit pointer.

Revision 1.92 / (download) - annotate - [select for diffs], Sun May 15 07:17:53 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.91: +9 -10 lines
Diff to previous 1.91 (colored) to selected 1.85 (colored)

Split the PRELOADED_MODULES+BOOTSTRAP_TABLES chunk into two separate
chunks mapped independently with RWX and RW, on both amd64 and i386.

This way the BOOTSTRAP TABLES are non-executable.

Revision 1.91 / (download) - annotate - [select for diffs], Sun May 15 07:01:36 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.90: +13 -13 lines
Diff to previous 1.90 (colored) to selected 1.85 (colored)

Reduce the diff between amd64 and i386. We invert two instructions on
amd64, but it makes no difference since PDE_SIZE = 8.

Revision 1.90 / (download) - annotate - [select for diffs], Thu May 12 09:05:16 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.89: +14 -6 lines
Diff to previous 1.89 (colored) to selected 1.85 (colored)

Map the data+bss chunk independently on amd64, and remove the X
permission on it.

Revision 1.89 / (download) - annotate - [select for diffs], Thu May 12 07:51:09 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.88: +16 -3 lines
Diff to previous 1.88 (colored) to selected 1.85 (colored)

Define fillkpt_nox, which sets up a set of pages and puts the NOX bit on
them by using nox_flag. Use fillkpt_nox to map the rodata segment
without X permissions.

Revision 1.88 / (download) - annotate - [select for diffs], Thu May 12 07:21:18 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.87: +17 -14 lines
Diff to previous 1.87 (colored) to selected 1.85 (colored)

Map the rodata segment independently on amd64, and remove the W permission
on it.

Revision 1.87 / (download) - annotate - [select for diffs], Thu May 12 06:45:16 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.86: +3 -3 lines
Diff to previous 1.86 (colored) to selected 1.85 (colored)

Split the {text+rodata} chunk in two separate chunks on x86. The
rodata segment now loses the large page optimization, gets mapped inside
the data segment, and therefore becomes RWX. It may break the build on
Xen.

Revision 1.86 / (download) - annotate - [select for diffs], Wed May 11 19:35:08 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.85: +25 -3 lines
Diff to previous 1.85 (colored)

There is a bug in the way the secondary CPUs are launched on amd64.

When CPU0 is launched, EFER_NXE is enabled in it, and it allows it to
handle pages that have the NOX bit. When the secondary CPUs are
launched, however, EFER_NXE is enabled only after paging is set in their
%cr0. And therefore, between the moment when paging is enabled and the
moment when EFER_NXE is enabled, the secondary CPUs cannot access pages
that have the NOX bit - they crash if they try to.

The funny thing is that in order to enable EFER_NXE, the secondary CPUs
give a look at cpu_feature[2], which is in the DATA segment, which in
turn could have the NOX bit. In other words, the secondary CPUs crash if
the DATA segment is mapped with the NOX bit.

Fix this by enabling EFER_NXE in the secondary CPUs before enabling
paging. CPU0 initializes nox_flag to the 32bit version of PG_NX if NOX
is supported; the secondary CPUs then use nox_flag to know whether NOX
is supported.

nox_flag will be used for other purposes soon.

Revision 1.85 / (download) - annotate - [selected], Sun May 8 08:22:58 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.84: +2 -4 lines
Diff to previous 1.84 (colored)

Use killkpt for the PML4 entries as well.

Revision 1.84 / (download) - annotate - [select for diffs], Sat May 7 11:49:21 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.83: +151 -124 lines
Diff to previous 1.83 (colored) to selected 1.85 (colored)

clarify

Revision 1.77.2.2 / (download) - annotate - [select for diffs], Sun Dec 27 12:09:28 2015 UTC (8 years, 3 months ago) by skrll
Branch: nick-nhusb
Changes since 1.77.2.1: +155 -149 lines
Diff to previous 1.77.2.1 (colored) to branchpoint 1.77 (colored) to selected 1.85 (colored)

Sync with HEAD (as of 26th Dec)

Revision 1.83 / (download) - annotate - [select for diffs], Wed Nov 25 16:00:09 2015 UTC (8 years, 4 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20160422, nick-nhusb-base-20160319, nick-nhusb-base-20151226
Changes since 1.82: +76 -75 lines
Diff to previous 1.82 (colored) to selected 1.85 (colored)

Cosmetic changes.

Revision 1.82 / (download) - annotate - [select for diffs], Sun Nov 22 14:06:08 2015 UTC (8 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.81: +1 -11 lines
Diff to previous 1.81 (colored) to selected 1.85 (colored)

Remove cpu_vendorname (unused). It is retrieved later in identcpu.c.

Revision 1.81 / (download) - annotate - [select for diffs], Sun Nov 22 10:18:59 2015 UTC (8 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.80: +76 -53 lines
Diff to previous 1.80 (colored) to selected 1.85 (colored)

Clarify:
 - add some comments
 - rename some jumps
 - KNF
No functional change.

Revision 1.80 / (download) - annotate - [select for diffs], Fri Nov 20 11:58:00 2015 UTC (8 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.79: +17 -24 lines
Diff to previous 1.79 (colored) to selected 1.85 (colored)

A few changes:
 - remove cpu_id and cpu_brand_id (unused)
 - copy a comment from i386 about fillkpt
 - define PDE_SIZE (i386)

Revision 1.79 / (download) - annotate - [select for diffs], Sat Nov 14 14:01:23 2015 UTC (8 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.78: +4 -5 lines
Diff to previous 1.78 (colored) to selected 1.85 (colored)

KNF, and fix some comments

Revision 1.77.2.1 / (download) - annotate - [select for diffs], Tue Sep 22 12:05:35 2015 UTC (8 years, 6 months ago) by skrll
Branch: nick-nhusb
Changes since 1.77: +3 -2 lines
Diff to previous 1.77 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.78 / (download) - annotate - [select for diffs], Sun Aug 30 01:46:02 2015 UTC (8 years, 7 months ago) by uebayasi
Branch: MAIN
CVS Tags: nick-nhusb-base-20150921
Changes since 1.77: +3 -2 lines
Diff to previous 1.77 (colored) to selected 1.85 (colored)

Use makeoptions_COPY_SYMTAB via opt_copy_symtab.h in sources.  Remove a hack
to set -DCOPY_SYMTAB from sys/conf/Makefile.kern.inc.  Remove unnecessary
dependencies too.

Revision 1.70.2.1 / (download) - annotate - [select for diffs], Wed Aug 20 00:02:42 2014 UTC (9 years, 7 months ago) by tls
Branch: tls-maxphys
Changes since 1.70: +168 -99 lines
Diff to previous 1.70 (colored) to selected 1.85 (colored)

Rebase to HEAD as of a few days ago.

Revision 1.77 / (download) - annotate - [select for diffs], Sun Aug 17 21:17:43 2014 UTC (9 years, 7 months ago) by joerg
Branch: MAIN
CVS Tags: nick-nhusb-base-20150606, nick-nhusb-base-20150406, nick-nhusb-base
Branch point for: nick-nhusb
Changes since 1.76: +2 -2 lines
Diff to previous 1.76 (colored) to selected 1.85 (colored)

Reorganize symbol table embedding.  The existing option SYMTAB_SPACE is
replaced by the make option COPY_SYMTAB set to any value. The copy of
the symbol table is no longer put into a buffer in kern_ksyms.o, but a
small helper object. This object is build first with a dummy size, then
the kernel is linked to compute the real dimension of the symbol table
buffer. After that, the helper object is rebuild and the kernel linked
again.

Revision 1.75.2.1 / (download) - annotate - [select for diffs], Sun Aug 10 06:53:49 2014 UTC (9 years, 7 months ago) by tls
Branch: tls-earlyentropy
Changes since 1.75: +3 -4 lines
Diff to previous 1.75 (colored) next main 1.76 (colored) to selected 1.85 (colored)

Rebase.

Revision 1.65.4.4 / (download) - annotate - [select for diffs], Thu May 22 11:39:28 2014 UTC (9 years, 10 months ago) by yamt
Branch: yamt-pagecache
Changes since 1.65.4.3: +166 -96 lines
Diff to previous 1.65.4.3 (colored) to branchpoint 1.65 (colored) next main 1.66 (colored) to selected 1.85 (colored)

sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")

Revision 1.73.2.1 / (download) - annotate - [select for diffs], Sun May 18 17:44:54 2014 UTC (9 years, 10 months ago) by rmind
Branch: rmind-smpnet
Changes since 1.73: +3 -4 lines
Diff to previous 1.73 (colored) next main 1.74 (colored) to selected 1.85 (colored)

sync with head

Revision 1.76 / (download) - annotate - [select for diffs], Fri May 16 00:48:41 2014 UTC (9 years, 10 months ago) by rmind
Branch: MAIN
CVS Tags: tls-maxphys-base, tls-earlyentropy-base, rmind-smpnet-nbase, rmind-smpnet-base, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE
Branch point for: netbsd-7-1, netbsd-7-0, netbsd-7
Changes since 1.75: +3 -4 lines
Diff to previous 1.75 (colored) to selected 1.85 (colored)

pcu(9):
- Remove PCU_KERNEL (hi matt!) and significantly simplify the code.
  This experimental feature was tried on ARM did not meet the expectations.
  It may be revived one day, but it should be done in a much simpler way.
- Add a message structure for xcall function, pass the LWP ower and thus
  optimise a race condition: if LWP is discarding its state on a remote CPU,
  but another LWP already did it - do not cause an unecessary re-faulting.
- Reduce the variety of flags for PCU operations (only PCU_VALID and
  PCU_REENABLE are used now), pass them only to the pcu_state_load().
- Rename pcu_used_p() to pcu_valid_p(); hopefully it is less confusing.
- pcu_save_all_on_cpu: SPL ought to be used here.
- Update and improve the pcu(9) man page; it needs wizd(8) though.

Revision 1.75 / (download) - annotate - [select for diffs], Sun Dec 1 01:05:16 2013 UTC (10 years, 3 months ago) by christos
Branch: MAIN
CVS Tags: yamt-pagecache-base9, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3
Branch point for: tls-earlyentropy
Changes since 1.74: +11 -2 lines
Diff to previous 1.74 (colored) to selected 1.85 (colored)

revert fpu/pcu changes until we figure out what's wrong; they cause random
freezes

Revision 1.74 / (download) - annotate - [select for diffs], Wed Oct 23 20:18:50 2013 UTC (10 years, 5 months ago) by drochner
Branch: MAIN
Changes since 1.73: +3 -12 lines
Diff to previous 1.73 (colored) to selected 1.85 (colored)

Use the MI "pcu" framework for bookkeeping of npx/fpu states on x86.
This reduces the amount of MD code enormously, and makes it easier
to implement support for newer CPU features which require more fpu
state, or for fpu usage by the kernel.
For access to FPU state across CPUs, an xcall kthread is used now
rather than a dedicated IPI.
No user visible changes intended.

Revision 1.73 / (download) - annotate - [select for diffs], Sun Jun 23 09:00:37 2013 UTC (10 years, 9 months ago) by uebayasi
Branch: MAIN
CVS Tags: riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2
Branch point for: rmind-smpnet
Changes since 1.72: +65 -57 lines
Diff to previous 1.72 (colored) to selected 1.85 (colored)

Whitespace, comment, NBPG -> PAGE_SIZE.

Revision 1.72 / (download) - annotate - [select for diffs], Sun Jun 23 03:16:46 2013 UTC (10 years, 9 months ago) by uebayasi
Branch: MAIN
Changes since 1.71: +2 -2 lines
Diff to previous 1.71 (colored) to selected 1.85 (colored)

Whitespace.

Revision 1.71 / (download) - annotate - [select for diffs], Sat Jun 22 15:13:56 2013 UTC (10 years, 9 months ago) by uebayasi
Branch: MAIN
Changes since 1.70: +99 -37 lines
Diff to previous 1.70 (colored) to selected 1.85 (colored)

Use END() markers, etc.  Pure ELF .symtab (size) changes.

Revision 1.65.4.3 / (download) - annotate - [select for diffs], Tue Oct 30 17:18:43 2012 UTC (11 years, 4 months ago) by yamt
Branch: yamt-pagecache
CVS Tags: yamt-pagecache-tag8
Changes since 1.65.4.2: +70 -105 lines
Diff to previous 1.65.4.2 (colored) to branchpoint 1.65 (colored) to selected 1.85 (colored)

sync with head

Revision 1.70 / (download) - annotate - [select for diffs], Sun Jul 15 15:17:56 2012 UTC (11 years, 8 months ago) by dsl
Branch: MAIN
CVS Tags: yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, khorben-n900, agc-symver-base, agc-symver
Branch point for: tls-maxphys
Changes since 1.69: +68 -103 lines
Diff to previous 1.69 (colored) to selected 1.85 (colored)

Rename MDP_IRET to MDL_IRET since it is an lwp flag, not a proc one.
Add an MDL_COMPAT32 flag to the lwp's md_flags, set it for 32bit lwps
  and use it to force 'return to user' with iret (as is done when
  MDL_IRET is set).
Split the iret/sysret code paths much later.
Remove all the replicated code for 32bit system calls - which was only
  needed so that iret was always used.
frameasm.h for XEN contains '#define swapgs', while XEN probable never
  needs swapgs, this is likely to be confusing.
Add a SWAPGS which is a nop on XEN and swapgs otherwise.
(I've not yet checked all the swapgs in files that include frameasm.h)
Simple x86 programs still work.
Hijack 6.99.9 kernel bump (needed for compat32 modules)

Revision 1.69 / (download) - annotate - [select for diffs], Sat Jun 16 17:30:19 2012 UTC (11 years, 9 months ago) by chs
Branch: MAIN
Changes since 1.68: +3 -3 lines
Diff to previous 1.68 (colored) to selected 1.85 (colored)

rename the global variable "cpu" to "cputype" to avoid conflicting with
dtrace, which wants to use "cpu" as a local variable.

Revision 1.65.4.2 / (download) - annotate - [select for diffs], Wed May 23 10:07:39 2012 UTC (11 years, 10 months ago) by yamt
Branch: yamt-pagecache
Changes since 1.65.4.1: +2 -2 lines
Diff to previous 1.65.4.1 (colored) to branchpoint 1.65 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.65.8.3 / (download) - annotate - [select for diffs], Sun Apr 29 23:04:36 2012 UTC (11 years, 11 months ago) by mrg
Branch: jmcneill-usbmp
Changes since 1.65.8.2: +2 -2 lines
Diff to previous 1.65.8.2 (colored) to branchpoint 1.65 (colored) next main 1.66 (colored) to selected 1.85 (colored)

sync to latest -current.

Revision 1.66.2.1 / (download) - annotate - [select for diffs], Fri Apr 20 23:32:14 2012 UTC (11 years, 11 months ago) by riz
Branch: netbsd-6
CVS Tags: netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus
Branch point for: netbsd-6-1, netbsd-6-0
Changes since 1.66: +2 -2 lines
Diff to previous 1.66 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by jym in ticket #189):
	sys/arch/x86/include/psl.h: revision 1.7
	sys/arch/i386/i386/locore.S: revision 1.98
	sys/arch/amd64/acpi/acpi_wakecode.S: revision 1.11
	sys/arch/amd64/amd64/mptramp.S: revision 1.13
	sys/arch/i386/acpi/acpi_wakecode.S: revision 1.15
	sys/arch/i386/i386/mptramp.S: revision 1.23
	sys/arch/amd64/amd64/locore.S: revision 1.68
Set the CR0_AM bit so processes can enable alignment check errors under
x86 through PSL_AC bit.
ATF test incoming shortly.
PSL_AC is user-settable.

Revision 1.68 / (download) - annotate - [select for diffs], Thu Apr 19 18:00:34 2012 UTC (11 years, 11 months ago) by jym
Branch: MAIN
CVS Tags: yamt-pagecache-base5, jmcneill-usbmp-base9, jmcneill-usbmp-base10
Changes since 1.67: +2 -2 lines
Diff to previous 1.67 (colored) to selected 1.85 (colored)

Set the CR0_AM bit so processes can enable alignment check errors under
x86 through PSL_AC bit.

ATF test incoming shortly.

Revision 1.65.4.1 / (download) - annotate - [select for diffs], Tue Apr 17 00:05:58 2012 UTC (11 years, 11 months ago) by yamt
Branch: yamt-pagecache
Changes since 1.65: +32 -2 lines
Diff to previous 1.65 (colored) to selected 1.85 (colored)

sync with head

Revision 1.65.8.2 / (download) - annotate - [select for diffs], Sun Mar 4 00:46:02 2012 UTC (12 years ago) by mrg
Branch: jmcneill-usbmp
Changes since 1.65.8.1: +6 -1 lines
Diff to previous 1.65.8.1 (colored) to branchpoint 1.65 (colored) to selected 1.85 (colored)

sync to latest -current.

Revision 1.67 / (download) - annotate - [select for diffs], Fri Feb 24 08:06:07 2012 UTC (12 years, 1 month ago) by cherry
Branch: MAIN
CVS Tags: yamt-pagecache-base4, jmcneill-usbmp-base8, jmcneill-usbmp-base7, jmcneill-usbmp-base6, jmcneill-usbmp-base5, jmcneill-usbmp-base4
Changes since 1.66: +6 -1 lines
Diff to previous 1.66 (colored) to selected 1.85 (colored)

(xen) - remove the (*xpq_cpu)() shim.We hasten the %fs/%gs setup process during boot.Although this is hacky, it lets us use the non-xen specificpmap_pte_xxx() functions in pmap code (and others).

Revision 1.65.8.1 / (download) - annotate - [select for diffs], Sat Feb 18 07:31:09 2012 UTC (12 years, 1 month ago) by mrg
Branch: jmcneill-usbmp
Changes since 1.65: +27 -2 lines
Diff to previous 1.65 (colored) to selected 1.85 (colored)

merge to -current.

Revision 1.66 / (download) - annotate - [select for diffs], Sun Dec 4 16:24:13 2011 UTC (12 years, 3 months ago) by chs
Branch: MAIN
CVS Tags: netbsd-6-base, jmcneill-usbmp-base3, jmcneill-usbmp-base2
Branch point for: netbsd-6
Changes since 1.65: +27 -2 lines
Diff to previous 1.65 (colored) to selected 1.85 (colored)

map all of physical memory using large pages.
ported from openbsd years ago by Murray Armfield,
updated for changes since then by me.

Revision 1.50.4.4 / (download) - annotate - [select for diffs], Sat Aug 27 15:37:22 2011 UTC (12 years, 7 months ago) by jym
Branch: jym-xensuspend
Changes since 1.50.4.3: +3 -3 lines
Diff to previous 1.50.4.3 (colored) to branchpoint 1.50 (colored) next main 1.51 (colored) to selected 1.85 (colored)

Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.

Revision 1.64.2.1 / (download) - annotate - [select for diffs], Mon Jun 6 09:04:47 2011 UTC (12 years, 9 months ago) by jruoho
Branch: jruoho-x86intr
Changes since 1.64: +3 -3 lines
Diff to previous 1.64 (colored) next main 1.65 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.55.4.3 / (download) - annotate - [select for diffs], Tue May 31 03:03:53 2011 UTC (12 years, 10 months ago) by rmind
Branch: rmind-uvmplock
Changes since 1.55.4.2: +2 -2 lines
Diff to previous 1.55.4.2 (colored) to branchpoint 1.55 (colored) next main 1.56 (colored) to selected 1.85 (colored)

sync with head

Revision 1.65 / (download) - annotate - [select for diffs], Fri May 20 13:32:35 2011 UTC (12 years, 10 months ago) by joerg
Branch: MAIN
CVS Tags: yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, rmind-uvmplock-nbase, rmind-uvmplock-base, jym-xensuspend-nbase, jym-xensuspend-base, jmcneill-usbmp-pre-base2, jmcneill-usbmp-base, jmcneill-audiomp3-base, jmcneill-audiomp3, cherry-xenmp-base, cherry-xenmp
Branch point for: yamt-pagecache, jmcneill-usbmp
Changes since 1.64: +3 -3 lines
Diff to previous 1.64 (colored) to selected 1.85 (colored)

Be more explicit that the "w" part of %r11 is meant.

Revision 1.47.8.2.4.1 / (download) - annotate - [select for diffs], Fri May 20 08:11:19 2011 UTC (12 years, 10 months ago) by matt
Branch: matt-nb5-mips64
Changes since 1.47.8.2: +28 -19 lines
Diff to previous 1.47.8.2 (colored) next main 1.47.8.3 (colored) to selected 1.85 (colored)

bring matt-nb5-mips64 up to date with netbsd-5-1-RELEASE (except compat).

Revision 1.50.4.3 / (download) - annotate - [select for diffs], Mon Mar 28 23:58:09 2011 UTC (13 years ago) by jym
Branch: jym-xensuspend
Changes since 1.50.4.2: +115 -69 lines
Diff to previous 1.50.4.2 (colored) to branchpoint 1.50 (colored) to selected 1.85 (colored)

Cure sync hiccups. Code with compile errors is not really useful, heh.

Revision 1.55.4.2 / (download) - annotate - [select for diffs], Sat Mar 5 20:49:15 2011 UTC (13 years ago) by rmind
Branch: rmind-uvmplock
Changes since 1.55.4.1: +80 -42 lines
Diff to previous 1.55.4.1 (colored) to branchpoint 1.55 (colored) to selected 1.85 (colored)

sync with head

Revision 1.64 / (download) - annotate - [select for diffs], Mon Dec 20 00:25:24 2010 UTC (13 years, 3 months ago) by matt
Branch: MAIN
CVS Tags: uebayasi-xip-base7, matt-mips64-premerge-20101231, jruoho-x86intr-base, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2
Branch point for: jruoho-x86intr
Changes since 1.63: +2 -2 lines
Diff to previous 1.63 (colored) to selected 1.85 (colored)

Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits.  Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.

Revision 1.63 / (download) - annotate - [select for diffs], Sat Dec 18 13:53:34 2010 UTC (13 years, 3 months ago) by jym
Branch: MAIN
Changes since 1.62: +2 -7 lines
Diff to previous 1.62 (colored) to selected 1.85 (colored)

Free tables are already zeroed in xen_pmap_bootstrap. No need to
do it a second time in assembly code.

Revision 1.55.2.3 / (download) - annotate - [select for diffs], Fri Oct 22 07:20:57 2010 UTC (13 years, 5 months ago) by uebayasi
Branch: uebayasi-xip
Changes since 1.55.2.2: +25 -23 lines
Diff to previous 1.55.2.2 (colored) to branchpoint 1.55 (colored) next main 1.56 (colored) to selected 1.85 (colored)

Sync with HEAD (-D20101022).

Revision 1.62 / (download) - annotate - [select for diffs], Thu Oct 21 11:43:22 2010 UTC (13 years, 5 months ago) by yamt
Branch: MAIN
CVS Tags: uebayasi-xip-base6, uebayasi-xip-base5, uebayasi-xip-base4, uebayasi-xip-base3
Changes since 1.61: +24 -20 lines
Diff to previous 1.61 (colored) to selected 1.85 (colored)

Xosyscall: sync with Xsyscall.

Revision 1.61 / (download) - annotate - [select for diffs], Thu Oct 21 11:42:26 2010 UTC (13 years, 5 months ago) by yamt
Branch: MAIN
Changes since 1.60: +1 -2 lines
Diff to previous 1.60 (colored) to selected 1.85 (colored)

Xsyscall: remove a stale comment.

Revision 1.60 / (download) - annotate - [select for diffs], Thu Oct 21 11:41:31 2010 UTC (13 years, 5 months ago) by yamt
Branch: MAIN
Changes since 1.59: +1 -2 lines
Diff to previous 1.59 (colored) to selected 1.85 (colored)

Xsyscall: remove an unused label.

Revision 1.59 / (download) - annotate - [select for diffs], Thu Oct 21 11:39:45 2010 UTC (13 years, 5 months ago) by yamt
Branch: MAIN
Changes since 1.58: +3 -3 lines
Diff to previous 1.58 (colored) to selected 1.85 (colored)

Xsyscall: save %es before enabling interrupts.  otherwise it can be
clobbered by preemption.  PR/43903.

Revision 1.55.2.2 / (download) - annotate - [select for diffs], Tue Aug 17 06:43:51 2010 UTC (13 years, 7 months ago) by uebayasi
Branch: uebayasi-xip
Changes since 1.55.2.1: +52 -11 lines
Diff to previous 1.55.2.1 (colored) to branchpoint 1.55 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.40.4.4 / (download) - annotate - [select for diffs], Wed Aug 11 22:51:33 2010 UTC (13 years, 7 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.40.4.3: +80 -30 lines
Diff to previous 1.40.4.3 (colored) to branchpoint 1.40 (colored) next main 1.41 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.58 / (download) - annotate - [select for diffs], Wed Jul 7 01:14:52 2010 UTC (13 years, 8 months ago) by chs
Branch: MAIN
CVS Tags: yamt-nfs-mp-base11, yamt-nfs-mp-base10, uebayasi-xip-base2
Changes since 1.57: +53 -12 lines
Diff to previous 1.57 (colored) to selected 1.85 (colored)

add the guts of TLS support on amd64.  based on joerg's patch,
reworked by me to support 32-bit processes as well.
we now keep %fs and %gs loaded with the user values
while in the kernel, which means we don't need to
reload them when returning to user mode.

Revision 1.55.4.1 / (download) - annotate - [select for diffs], Sun May 30 05:16:35 2010 UTC (13 years, 10 months ago) by rmind
Branch: rmind-uvmplock
Changes since 1.55: +28 -19 lines
Diff to previous 1.55 (colored) to selected 1.85 (colored)

sync with head

Revision 1.55.2.1 / (download) - annotate - [select for diffs], Fri Apr 30 14:39:03 2010 UTC (13 years, 11 months ago) by uebayasi
Branch: uebayasi-xip
Changes since 1.55: +28 -19 lines
Diff to previous 1.55 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.47.8.2.2.2 / (download) - annotate - [select for diffs], Fri Apr 23 04:17:29 2010 UTC (13 years, 11 months ago) by snj
Branch: netbsd-5-0
Changes since 1.47.8.2.2.1: +3 -14 lines
Diff to previous 1.47.8.2.2.1 (colored) to branchpoint 1.47.8.2 (colored) next main 1.47.8.3 (colored) to selected 1.85 (colored)

Apply patch (requested by jym in ticket #1380):
Fix the NX regression issue observed on amd64 kernels, where per-page
execution right was disabled (therefore leading to the inability
of the kernel to detect fraudulent use of memory mappings marked as not
being executable).

Revision 1.47.8.4 / (download) - annotate - [select for diffs], Thu Apr 22 20:02:48 2010 UTC (13 years, 11 months ago) by snj
Branch: netbsd-5
CVS Tags: netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, matt-nb5-pq3-base, matt-nb5-pq3
Changes since 1.47.8.3: +3 -14 lines
Diff to previous 1.47.8.3 (colored) to branchpoint 1.47 (colored) next main 1.48 (colored) to selected 1.85 (colored)

Apply patch (requested by jym in ticket #1380):
Fix the NX regression issue observed on amd64 kernels, where per-page
execution right was disabled (therefore leading to the inability
of the kernel to detect fraudulent use of memory mappings marked as not
being executable).

Revision 1.47.8.3 / (download) - annotate - [select for diffs], Thu Apr 22 19:54:34 2010 UTC (13 years, 11 months ago) by snj
Branch: netbsd-5
Changes since 1.47.8.2: +26 -6 lines
Diff to previous 1.47.8.2 (colored) to branchpoint 1.47 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by jym in ticket #1376):
	sys/arch/amd64/amd64/locore.S: revision 1.56
When kernel remaps to high memory in amd64 locore, the GDT used before
becomes invalid. As such, split it in two parts, one for use when system
boots in low memory, and one for use when it jumps to high memory.

Revision 1.47.8.2.2.1 / (download) - annotate - [select for diffs], Thu Apr 22 19:39:44 2010 UTC (13 years, 11 months ago) by snj
Branch: netbsd-5-0
Changes since 1.47.8.2: +26 -6 lines
Diff to previous 1.47.8.2 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by jym in ticket #1376):
	sys/arch/amd64/amd64/locore.S: revision 1.56
When kernel remaps to high memory in amd64 locore, the GDT used before
becomes invalid. As such, split it in two parts, one for use when system
boots in low memory, and one for use when it jumps to high memory.

Revision 1.57 / (download) - annotate - [select for diffs], Sun Apr 18 23:47:50 2010 UTC (13 years, 11 months ago) by jym
Branch: MAIN
CVS Tags: uebayasi-xip-base1
Changes since 1.56: +3 -14 lines
Diff to previous 1.56 (colored) to selected 1.85 (colored)

This patch fixes the NX regression issue observed on amd64 kernels, where
per-page execution right was disabled (therefore leading to the inability
of the kernel to detect fraudulent use of memory mappings marked as not
being executable).

- replace cpu_feature and ci_feature_flags variables by cpu_feature and
ci_feat_val arrays. This makes it cleaner and brings kernel code closer
to the design of cpuctl(8). A warning will be raised for each CPU that
does not expose the same features as the Boot Processor (BP).

- the blacklist of CPU features is now a macro defined in the
specialreg.h header, instead of hardcoding it inside MD initialization
code; fix comments.

- replace checks against CPUID_TSC with the cpu_hascounter() function.

- clean up the code in init_x86_64(), as cpu_feature variables are set
inside cpu_probe().

- use cpu_init_msrs() for i386. It will be eventually used later for NX
feature under i386 PAE kernels.

- remove code that checks for CPUID_NOX in amd64 mptramp.S, this is already
performed by cpu_hatch() through cpu_init_msrs().

- remove cpu_signature and feature_flags members from struct mpbios_proc
(they were never used).

This patch was tested with i386 MONOLITHIC, XEN3PAE_DOM0 and XEN3_DOM0 under
a native i386 host, and amd64 GENERIC, XEN3_DOM0 via QEMU virtual machines.

XXX Should kernel rev be bumped?

XXX A similar patch should be pulled-up for NetBSD-5, hopefully tomorrow.

Revision 1.56 / (download) - annotate - [select for diffs], Sun Apr 18 15:24:54 2010 UTC (13 years, 11 months ago) by jym
Branch: MAIN
Changes since 1.55: +26 -6 lines
Diff to previous 1.55 (colored) to selected 1.85 (colored)

When kernel remaps to high memory in amd64 locore, the GDT used before
becomes invalid. As such, split it in two parts, one for use when system
boots in low memory, and one for use when it jumps to high memory.

Revision 1.40.4.3 / (download) - annotate - [select for diffs], Thu Mar 11 15:01:58 2010 UTC (14 years ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.40.4.2: +9 -15 lines
Diff to previous 1.40.4.2 (colored) to branchpoint 1.40 (colored) to selected 1.85 (colored)

sync with head

Revision 1.55 / (download) - annotate - [select for diffs], Fri Nov 27 03:23:04 2009 UTC (14 years, 4 months ago) by rmind
Branch: MAIN
CVS Tags: yamt-nfs-mp-base9, uebayasi-xip-base, matt-premerge-20091211
Branch point for: uebayasi-xip, rmind-uvmplock
Changes since 1.54: +6 -6 lines
Diff to previous 1.54 (colored) to selected 1.85 (colored)

- Use uvm_lwp_setuarea() instead of directly setting address to lwp_t::l_addr.
- Replace most remaining uses of l_addr with uvm_lwp_getuarea() or lwp_getpcb().
- Amend assembly in ports where it accesses PCB via struct user.
- Rename L_ADDR to L_PCB in few places.  Reduce sys/user.h inclusions.

Revision 1.54 / (download) - annotate - [select for diffs], Thu Nov 26 00:19:12 2009 UTC (14 years, 4 months ago) by matt
Branch: MAIN
Changes since 1.53: +4 -5 lines
Diff to previous 1.53 (colored) to selected 1.85 (colored)

Kill proc0paddr.  Use lwp0.l_addr instead.

Revision 1.53 / (download) - annotate - [select for diffs], Wed Nov 25 14:28:50 2009 UTC (14 years, 4 months ago) by rmind
Branch: MAIN
Changes since 1.52: +3 -3 lines
Diff to previous 1.52 (colored) to selected 1.85 (colored)

Remove IPL_LPT and IPL_IPI aliases, use the actual IPLs.
Fix some broken comments.

Revision 1.50.4.2 / (download) - annotate - [select for diffs], Sun Nov 1 13:58:48 2009 UTC (14 years, 4 months ago) by jym
Branch: jym-xensuspend
Changes since 1.50.4.1: +1 -6 lines
Diff to previous 1.50.4.1 (colored) to branchpoint 1.50 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.52 / (download) - annotate - [select for diffs], Mon Oct 19 18:41:10 2009 UTC (14 years, 5 months ago) by bouyer
Branch: MAIN
Changes since 1.51: +1 -6 lines
Diff to previous 1.51 (colored) to selected 1.85 (colored)

Remove closes 3 & 4 from my licence. Lots of thanks to Soren Jacobsen
for the booring work !

Revision 1.50.4.1 / (download) - annotate - [select for diffs], Wed May 13 17:16:08 2009 UTC (14 years, 10 months ago) by jym
Branch: jym-xensuspend
Changes since 1.50: +2 -1 lines
Diff to previous 1.50 (colored) to selected 1.85 (colored)

Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.

Revision 1.40.4.2 / (download) - annotate - [select for diffs], Mon May 4 08:10:32 2009 UTC (14 years, 10 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.40.4.1: +26 -35 lines
Diff to previous 1.40.4.1 (colored) to branchpoint 1.40 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.47.6.2 / (download) - annotate - [select for diffs], Tue Mar 3 18:28:50 2009 UTC (15 years ago) by skrll
Branch: nick-hppapmap
Changes since 1.47.6.1: +2 -1 lines
Diff to previous 1.47.6.1 (colored) to branchpoint 1.47 (colored) next main 1.48 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.51 / (download) - annotate - [select for diffs], Fri Feb 13 22:41:00 2009 UTC (15 years, 1 month ago) by apb
Branch: MAIN
CVS Tags: yamt-nfs-mp-base8, yamt-nfs-mp-base7, yamt-nfs-mp-base6, yamt-nfs-mp-base5, yamt-nfs-mp-base4, yamt-nfs-mp-base3, nick-hppapmap-base4, nick-hppapmap-base3, nick-hppapmap-base2, nick-hppapmap-base, jymxensuspend-base
Changes since 1.50: +2 -1 lines
Diff to previous 1.50 (colored) to selected 1.85 (colored)

Use "defopt MODULAR" in sys/conf/files, and #include "opt_modular.h"
in all kernel sources that use the MODULAR option.
Proposed in tech-kern on 18 Jan 2009.

Revision 1.47.8.2 / (download) - annotate - [select for diffs], Mon Feb 2 03:24:05 2009 UTC (15 years, 1 month ago) by snj
Branch: netbsd-5
CVS Tags: netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb4-mips64-k7-u2a-k9b
Branch point for: netbsd-5-0, matt-nb5-mips64
Changes since 1.47.8.1: +2 -2 lines
Diff to previous 1.47.8.1 (colored) to branchpoint 1.47 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by ad in ticket #345):
	sys/arch/amd64/amd64/locore.S: revision 1.50
Don't abort pageidlezero unless a realtime thread wants to run.

Revision 1.47.6.1 / (download) - annotate - [select for diffs], Mon Jan 19 13:15:54 2009 UTC (15 years, 2 months ago) by skrll
Branch: nick-hppapmap
Changes since 1.47: +6 -7 lines
Diff to previous 1.47 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.39.6.4 / (download) - annotate - [select for diffs], Sat Jan 17 13:27:48 2009 UTC (15 years, 2 months ago) by mjf
Branch: mjf-devfs2
Changes since 1.39.6.3: +5 -6 lines
Diff to previous 1.39.6.3 (colored) to branchpoint 1.39 (colored) next main 1.40 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.47.4.1 / (download) - annotate - [select for diffs], Sat Dec 13 01:12:58 2008 UTC (15 years, 3 months ago) by haad
Branch: haad-dm
Changes since 1.47: +6 -7 lines
Diff to previous 1.47 (colored) next main 1.48 (colored) to selected 1.85 (colored)

Update haad-dm branch to haad-dm-base2.

Revision 1.50 / (download) - annotate - [select for diffs], Wed Dec 3 12:04:59 2008 UTC (15 years, 3 months ago) by ad
Branch: MAIN
CVS Tags: mjf-devfs2-base, haad-nbase2, haad-dm-base2, haad-dm-base, ad-audiomp2-base, ad-audiomp2
Branch point for: jym-xensuspend
Changes since 1.49: +2 -2 lines
Diff to previous 1.49 (colored) to selected 1.85 (colored)

Don't abort pageidlezero unless a realtime thread wants to run.

Revision 1.47.8.1 / (download) - annotate - [select for diffs], Mon Nov 17 18:53:53 2008 UTC (15 years, 4 months ago) by snj
Branch: netbsd-5
CVS Tags: netbsd-5-0-RC1
Changes since 1.47: +3 -4 lines
Diff to previous 1.47 (colored) to selected 1.85 (colored)

Pull up following revision(s) (requested by ad in ticket #74):
	sys/arch/i386/isa/npx.c: revision 1.131
	sys/arch/amd64/amd64/fpu.c: revision 1.28
	sys/arch/i386/i386/genassym.cf: revision 1.77
	sys/arch/i386/i386/autoconf.c: revision 1.93
	sys/arch/amd64/amd64/locore.S: revision 1.48
	sys/arch/amd64/amd64/machdep.c: revision 1.104
	sys/arch/i386/i386/machdep.c: revision 1.646
	sys/arch/amd64/amd64/genassym.cf: revision 1.38
	sys/arch/i386/i386/locore.S: revision 1.79
PR port-amd64/38293 panic: fp_save ipi didn't
Fix race conditions in FPU IPI handling.

Revision 1.49 / (download) - annotate - [select for diffs], Thu Nov 13 10:53:30 2008 UTC (15 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.48: +3 -3 lines
Diff to previous 1.48 (colored) to selected 1.85 (colored)

LKM -> MODULAR

Revision 1.48 / (download) - annotate - [select for diffs], Tue Nov 11 14:40:18 2008 UTC (15 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.47: +3 -4 lines
Diff to previous 1.47 (colored) to selected 1.85 (colored)

PR port-amd64/38293 panic: fp_save ipi didn't

Fix race conditions in FPU IPI handling.

Revision 1.18.12.1 / (download) - annotate - [select for diffs], Tue Sep 16 18:49:33 2008 UTC (15 years, 6 months ago) by bouyer
Branch: netbsd-4
Changes since 1.18: +22 -1 lines
Diff to previous 1.18 (colored) next main 1.19 (colored) to selected 1.85 (colored)

Sync with the following revisions (requested by skrll in ticket #1196):
	gnu/dist/gdb						removed
	gnu/usr.bin/gdb53					removed
	distrib/cats/instkernel/Makefile			1.14.6.1
	gnu/dist/gdb6/bfd/config.bfd				1.3.6.1
	gnu/dist/gdb6/bfd/elfxx-sparc.c				1.1.1.2.6.1
	gnu/dist/gdb6/bfd/elfxx-sparc.h				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/Makefile.in				1.2.2.1.2.2
	gnu/dist/gdb6/gdb/alpha-tdep.c				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/alpha-tdep.h				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/alphabsd-nat.c			1.1.1.2.6.2
	gnu/dist/gdb6/gdb/alphabsd-nat.h			1.1.2.1
	gnu/dist/gdb6/gdb/alphabsd-tdep.c			1.1.1.2.6.1
	gnu/dist/gdb6/gdb/alphabsd-tdep.h			1.1.1.2.6.1
	gnu/dist/gdb6/gdb/alphanbsd-nat.c			1.1.2.1
	gnu/dist/gdb6/gdb/alphanbsd-tdep.c			1.1.1.2.6.1
	gnu/dist/gdb6/gdb/amd64-nat.c				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/amd64bsd-nat.c			1.1.1.2.6.1
	gnu/dist/gdb6/gdb/amd64nbsd-nat.c			1.1.1.2.6.3
	gnu/dist/gdb6/gdb/amd64nbsd-tdep.c			1.1.1.2.6.1
	gnu/dist/gdb6/gdb/arm-tdep.h				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/armbsd-tdep.c				1.1.2.1
	gnu/dist/gdb6/gdb/armnbsd-nat.c				1.1.1.2.6.2
	gnu/dist/gdb6/gdb/armnbsd-tdep.c			1.1.1.2.6.1
	gnu/dist/gdb6/gdb/configure				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/configure.ac				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/i386bsd-nat.c				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/i386nbsd-tdep.c			1.1.1.2.6.1
	gnu/dist/gdb6/gdb/m68kbsd-nat.c				1.1.1.2.6.2
	gnu/dist/gdb6/gdb/mipsnbsd-nat.c			1.1.1.2.6.2
	gnu/dist/gdb6/gdb/nbsd-thread.c				1.1.2.3
	gnu/dist/gdb6/gdb/ppcnbsd-nat.c				1.1.1.2.6.2
	gnu/dist/gdb6/gdb/ppcnbsd-tdep.c			1.3.6.1
	gnu/dist/gdb6/gdb/sh-tdep.c				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/shnbsd-nat.c				1.1.1.2.6.3
	gnu/dist/gdb6/gdb/shnbsd-tdep.c				1.1.1.2.6.4
	gnu/dist/gdb6/gdb/shnbsd-tdep.h				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/sparc-nat.c				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/sparc64nbsd-nat.c			1.1.1.2.6.2
	gnu/dist/gdb6/gdb/sparcnbsd-nat.c			1.1.1.2.6.2
	gnu/dist/gdb6/gdb/tramp-frame.h				1.1.1.2.6.1
	gnu/dist/gdb6/gdb/vaxbsd-nat.c				1.1.1.2.6.2
	gnu/dist/gdb6/gdb/config/alpha/nbsd.mh			1.1.1.2.6.1
	gnu/dist/gdb6/gdb/config/arm/nbsd.mt			1.1.1.1.6.1
	gnu/dist/gdb6/gdb/config/arm/nbsdelf.mh			1.1.1.1.6.1
	gnu/dist/gdb6/gdb/config/i386/nbsd64.mh			1.1.1.1.6.1
	gnu/dist/gdb6/gdb/config/m68k/nbsdelf.mh		1.1.1.1.6.1
	gnu/dist/gdb6/gdb/config/mips/nbsd.mh			1.1.1.1.6.1
	gnu/dist/gdb6/gdb/config/powerpc/nbsd.mh		1.1.1.2.6.1
	gnu/dist/gdb6/gdb/config/sh/nbsd.mh			1.1.1.1.6.2
	gnu/dist/gdb6/gdb/config/sh/tm-nbsd.h			1.1.1.1.6.1
	gnu/dist/gdb6/gdb/config/sparc/nbsd64.mh		1.1.1.1.6.1
	gnu/dist/gdb6/gdb/config/sparc/nbsdelf.mh		1.1.1.1.6.1
	gnu/dist/gdb6/gdb/config/vax/nbsdelf.mh			1.1.1.1.6.1
	gnu/dist/gdb6/opcodes/configure				1.1.1.2.6.1
	gnu/dist/gdb6/opcodes/configure.in			1.1.1.2.6.1
	gnu/usr.bin/Makefile					1.126.4.1
	gnu/usr.bin/gdb6/arch/alpha/config.h			1.3.4.1
	gnu/usr.bin/gdb6/arch/alpha/defs.mk			1.2.6.1
	gnu/usr.bin/gdb6/arch/alpha/init.c			1.2.6.1
	gnu/usr.bin/gdb6/arch/alpha/nm.h			1.2.6.1
	gnu/usr.bin/gdb6/arch/arm/defs.mk			1.2.6.2
	gnu/usr.bin/gdb6/arch/arm/init.c			1.1.6.1
	gnu/usr.bin/gdb6/arch/armeb/config.h			1.1.6.2
	gnu/usr.bin/gdb6/arch/armeb/defs.mk			1.1.6.3
	gnu/usr.bin/gdb6/arch/armeb/init.c			1.1.6.2
	gnu/usr.bin/gdb6/arch/armeb/tm.h			1.1.6.2
	gnu/usr.bin/gdb6/arch/armeb/version.c			1.1.6.2
	gnu/usr.bin/gdb6/arch/i386/defs.mk			1.4.4.1
	gnu/usr.bin/gdb6/arch/i386/init.c			1.3.6.1
	gnu/usr.bin/gdb6/arch/m68000/config.h			1.1.6.2
	gnu/usr.bin/gdb6/arch/m68000/defs.mk			1.1.6.2
	gnu/usr.bin/gdb6/arch/m68000/init.c			1.1.6.2
	gnu/usr.bin/gdb6/arch/m68000/tm.h			1.1.6.2
	gnu/usr.bin/gdb6/arch/m68000/version.c			1.1.6.2
	gnu/usr.bin/gdb6/arch/m68k/defs.mk			1.1.4.1
	gnu/usr.bin/gdb6/arch/m68k/init.c			1.1.4.1
	gnu/usr.bin/gdb6/arch/mipseb/config.h			1.3.4.1
	gnu/usr.bin/gdb6/arch/mipseb/defs.mk			1.2.6.2
	gnu/usr.bin/gdb6/arch/mipseb/init.c			1.2.6.2
	gnu/usr.bin/gdb6/arch/mipsel/config.h			1.2.6.3
	gnu/usr.bin/gdb6/arch/mipsel/defs.mk			1.2.6.3
	gnu/usr.bin/gdb6/arch/mipsel/init.c			1.2.6.3
	gnu/usr.bin/gdb6/arch/mipsel/tm.h			1.2.6.2
	gnu/usr.bin/gdb6/arch/mipsel/version.c			1.2.6.2
	gnu/usr.bin/gdb6/arch/powerpc/defs.mk			1.3.6.1
	gnu/usr.bin/gdb6/arch/powerpc/init.c			1.3.6.1
	gnu/usr.bin/gdb6/arch/sh3eb/config.h			1.2.2.2
	gnu/usr.bin/gdb6/arch/sh3eb/defs.mk			1.2.8.3
	gnu/usr.bin/gdb6/arch/sh3eb/init.c			1.1.8.3
	gnu/usr.bin/gdb6/arch/sh3eb/nm.h			1.1.8.2
	gnu/usr.bin/gdb6/arch/sh3eb/tm.h			1.1.8.2
	gnu/usr.bin/gdb6/arch/sh3eb/version.c			1.1.8.2
	gnu/usr.bin/gdb6/arch/sh3el/config.h			1.2.2.2
	gnu/usr.bin/gdb6/arch/sh3el/defs.mk			1.2.8.3
	gnu/usr.bin/gdb6/arch/sh3el/init.c			1.1.8.3
	gnu/usr.bin/gdb6/arch/sh3el/nm.h			1.1.8.2
	gnu/usr.bin/gdb6/arch/sh3el/tm.h			1.1.8.2
	gnu/usr.bin/gdb6/arch/sh3el/version.c			1.1.8.2
	gnu/usr.bin/gdb6/arch/sparc/defs.mk			1.2.6.1
	gnu/usr.bin/gdb6/arch/sparc/init.c			1.1.6.1
	gnu/usr.bin/gdb6/arch/sparc64/defs.mk			1.2.6.1
	gnu/usr.bin/gdb6/arch/sparc64/init.c			1.1.6.1
	gnu/usr.bin/gdb6/arch/vax/config.h			1.1.6.2
	gnu/usr.bin/gdb6/arch/vax/defs.mk			1.1.6.2
	gnu/usr.bin/gdb6/arch/vax/init.c			1.1.6.2
	gnu/usr.bin/gdb6/arch/vax/tm.h				1.1.6.2
	gnu/usr.bin/gdb6/arch/vax/version.c			1.1.6.2
	gnu/usr.bin/gdb6/arch/x86_64/defs.mk			1.2.6.1
	gnu/usr.bin/gdb6/arch/x86_64/init.c			1.1.6.1
	gnu/usr.bin/gdb6/bfd/arch/armeb/bfd.h			1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/armeb/bfdver.h		1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/armeb/config.h		1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/armeb/defs.mk			1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/m68000/bfd.h			1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/m68000/bfdver.h		1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/m68000/config.h		1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/m68000/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/mipsel/bfd.h			1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/mipsel/bfdver.h		1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/mipsel/config.h		1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/mipsel/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/sh3eb/bfd.h			1.1.8.3
	gnu/usr.bin/gdb6/bfd/arch/sh3eb/bfdver.h		1.1.8.2
	gnu/usr.bin/gdb6/bfd/arch/sh3eb/config.h		1.1.8.2
	gnu/usr.bin/gdb6/bfd/arch/sh3eb/defs.mk			1.1.8.3
	gnu/usr.bin/gdb6/bfd/arch/sh3el/bfd.h			1.1.8.3
	gnu/usr.bin/gdb6/bfd/arch/sh3el/bfdver.h		1.1.8.2
	gnu/usr.bin/gdb6/bfd/arch/sh3el/config.h		1.1.8.2
	gnu/usr.bin/gdb6/bfd/arch/sh3el/defs.mk			1.1.8.3
	gnu/usr.bin/gdb6/bfd/arch/vax/bfd.h			1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/vax/bfdver.h			1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/vax/config.h			1.1.6.2
	gnu/usr.bin/gdb6/bfd/arch/vax/defs.mk			1.1.6.2
	gnu/usr.bin/gdb6/gdb/Makefile				1.5.2.1.2.2
	gnu/usr.bin/gdb6/gdbtui/Makefile			1.2.6.1
	gnu/usr.bin/gdb6/libiberty/arch/armeb/config.h		1.1.6.2
	gnu/usr.bin/gdb6/libiberty/arch/armeb/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/libiberty/arch/m68000/config.h		1.1.6.2
	gnu/usr.bin/gdb6/libiberty/arch/m68000/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/libiberty/arch/mipsel/config.h		1.1.6.2
	gnu/usr.bin/gdb6/libiberty/arch/mipsel/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/libiberty/arch/sh3eb/config.h		1.1.8.2
	gnu/usr.bin/gdb6/libiberty/arch/sh3eb/defs.mk		1.1.8.2
	gnu/usr.bin/gdb6/libiberty/arch/sh3el/config.h		1.1.8.2
	gnu/usr.bin/gdb6/libiberty/arch/sh3el/defs.mk		1.1.8.2
	gnu/usr.bin/gdb6/libiberty/arch/vax/config.h		1.1.6.2
	gnu/usr.bin/gdb6/libiberty/arch/vax/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/opcodes/arch/armeb/config.h		1.1.6.2
	gnu/usr.bin/gdb6/opcodes/arch/armeb/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/opcodes/arch/m68000/config.h		1.1.6.2
	gnu/usr.bin/gdb6/opcodes/arch/m68000/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/opcodes/arch/mipsel/config.h		1.1.6.2
	gnu/usr.bin/gdb6/opcodes/arch/mipsel/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/opcodes/arch/sh3eb/config.h		1.1.8.2
	gnu/usr.bin/gdb6/opcodes/arch/sh3eb/defs.mk		1.1.8.3
	gnu/usr.bin/gdb6/opcodes/arch/sh3el/config.h		1.1.8.2
	gnu/usr.bin/gdb6/opcodes/arch/sh3el/defs.mk		1.1.8.3
	gnu/usr.bin/gdb6/opcodes/arch/vax/config.h		1.1.6.2
	gnu/usr.bin/gdb6/opcodes/arch/vax/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/readline/arch/armeb/config.h		1.1.6.2
	gnu/usr.bin/gdb6/readline/arch/armeb/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/readline/arch/m68000/config.h		1.1.6.2
	gnu/usr.bin/gdb6/readline/arch/m68000/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/readline/arch/mipsel/config.h		1.1.6.2
	gnu/usr.bin/gdb6/readline/arch/mipsel/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/readline/arch/sh3eb/config.h		1.1.8.2
	gnu/usr.bin/gdb6/readline/arch/sh3eb/defs.mk		1.1.8.2
	gnu/usr.bin/gdb6/readline/arch/sh3el/config.h		1.1.8.2
	gnu/usr.bin/gdb6/readline/arch/sh3el/defs.mk		1.1.8.2
	gnu/usr.bin/gdb6/readline/arch/vax/config.h		1.1.6.2
	gnu/usr.bin/gdb6/readline/arch/vax/defs.mk		1.1.6.2
	gnu/usr.bin/gdb6/sim/arch/mipseb/cconfig.h		1.1.2.1
	gnu/usr.bin/gdb6/sim/arch/mipseb/config.h		1.1.2.1
	gnu/usr.bin/gdb6/sim/arch/mipseb/defs.mk		1.1.2.1
	gnu/usr.bin/gdb6/sim/arch/mipsel/cconfig.h		1.1.2.1
	gnu/usr.bin/gdb6/sim/arch/mipsel/config.h		1.1.2.1
	gnu/usr.bin/gdb6/sim/arch/mipsel/defs.mk		1.1.2.1
	lib/libkvm/kvm_sparc64.c				1.10.18.2
	lib/libpthread/pthread.c				1.48.6.4
	lib/libpthread/pthread_barrier.c			1.6.18.1
	lib/libpthread/pthread_cond.c				1.18.12.2
	lib/libpthread/pthread_debug.h				1.8.18.1
	lib/libpthread/pthread_int.h				1.34.4.5
	lib/libpthread/pthread_lock.c				1.14.6.1
	lib/libpthread/pthread_mutex.c				1.22.4.2
	lib/libpthread/pthread_run.c				1.18.12.4
	lib/libpthread/pthread_rwlock.c				1.13.6.2
	lib/libpthread/pthread_sa.c				1.37.6.5
	lib/libpthread/pthread_sig.c				1.47.4.8
	lib/libpthread/pthread_sleep.c				1.7.6.2
	lib/libpthread/sem.c					1.9.6.2
	lib/libpthread/arch/sh3/pthread_md.h			1.3.6.1
	regress/lib/libpthread/resolv/Makefile			1.1.12.1
	regress/lib/libpthread/sigrunning/Makefile		1.1.2.1
	regress/lib/libpthread/sigrunning/sigrunning.c		1.1.2.1
	share/mk/bsd.own.mk					1.489.4.3
	sys/arch/amd64/amd64/locore.S				1.18.14.1
	sys/arch/amd64/amd64/machdep.c				1.44.2.3.2.1
	sys/arch/amd64/conf/kern.ldscript			1.1.70.1
	sys/arch/cats/conf/Makefile.cats.inc			1.17.30.1
	sys/arch/shark/conf/Makefile.shark.inc			1.6.30.1
	sys/arch/sparc64/conf/kern.ldscript			1.7.26.2
	sys/arch/sparc64/conf/kern32.ldscript			1.6.26.2
	sys/arch/sparc64/include/kcore.h			1.4.92.2
	sys/arch/sparc64/sparc64/locore.s			1.232.4.4
	sys/arch/sparc64/sparc64/machdep.c			1.193.4.3
	sys/arch/sparc64/sparc64/pmap.c				1.184.2.1.2.4
	sys/conf/newvers.sh					1.42.26.2
	sys/kern/kern_sa.c					1.87.4.11
	sys/kern/kern_synch.c					1.173.4.2
	sys/sys/savar.h						1.20.10.2
	tools/gdb/Makefile					1.9.4.1
	tools/gdb/mknative-gdb					1.1.6.1

pullup the wrstuden-fixsa CVS branch to netbsd-4:
toolchain/35540 - GDB 6 support for pthreads.
port-sparc64/37534 - ktrace firefox gives
    kernel trap 30: data access expection
GDB changes:
- delete gdb53
- enable gdb6 on all architectures
- add support for amd64 crash dumps
- add support for sparc64 crash dumps
- add support for /proc pid to executable filename for all archs
- enable thread support for all architectures
- add a note section to kernels to all platforms
- support detection/unwinding of signals for most architectures.
- Fix PTHREAD_UCONTEXT_TO_REG / PTHREAD_REG_TO_UCONTEXT on sh3.
- Apply fix from binutils-current so that sparc gdb can be cross built
  on a 64bit host.
SA/pthread changes:
Pre-allocate memory needed for event delivery. Eliminates dropped
interrupts under load.
Deliver intra-process signals to running threads
Eliminate some deadlock scenarios
Fix intra-process signal delivery when delivering to a thread waiting
for signals. Makes afs work again!

Revision 1.43.2.1 / (download) - annotate - [select for diffs], Mon Jun 23 04:30:05 2008 UTC (15 years, 9 months ago) by wrstuden
Branch: wrstuden-revivesa
Changes since 1.43: +23 -31 lines
Diff to previous 1.43 (colored) next main 1.44 (colored) to selected 1.85 (colored)

Sync w/ -current. 34 merge conflicts to follow.

Revision 1.39.6.3 / (download) - annotate - [select for diffs], Thu Jun 5 19:14:32 2008 UTC (15 years, 9 months ago) by mjf
Branch: mjf-devfs2
Changes since 1.39.6.2: +15 -28 lines
Diff to previous 1.39.6.2 (colored) to branchpoint 1.39 (colored) to selected 1.85 (colored)

Sync with HEAD.

Also fix build.

Revision 1.40.2.2 / (download) - annotate - [select for diffs], Wed Jun 4 02:04:39 2008 UTC (15 years, 9 months ago) by yamt
Branch: yamt-pf42
Changes since 1.40.2.1: +17 -30 lines
Diff to previous 1.40.2.1 (colored) to branchpoint 1.40 (colored) next main 1.41 (colored) to selected 1.85 (colored)

sync with head

Revision 1.47 / (download) - annotate - [select for diffs], Mon Jun 2 14:41:41 2008 UTC (15 years, 9 months ago) by ad
Branch: MAIN
CVS Tags: yamt-pf42-base4, yamt-pf42-base3, wrstuden-revivesa-base-4, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, simonb-wapbl-nbase, simonb-wapbl-base, simonb-wapbl, netbsd-5-base, matt-mips64-base2, haad-dm-base1
Branch point for: nick-hppapmap, netbsd-5, haad-dm
Changes since 1.46: +16 -29 lines
Diff to previous 1.46 (colored) to selected 1.85 (colored)

- Don't bother using sse to copy/zero pages on demand.  It turns out not
  to be worth it.
- If the machine has sse, re-enable zeroing pages in the idle loop and
  use the sse instructions so that we don't blow out the cache.

Revision 1.39.6.2 / (download) - annotate - [select for diffs], Mon Jun 2 13:21:48 2008 UTC (15 years, 9 months ago) by mjf
Branch: mjf-devfs2
Changes since 1.39.6.1: +51 -33 lines
Diff to previous 1.39.6.1 (colored) to branchpoint 1.39 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.46 / (download) - annotate - [select for diffs], Wed May 21 03:50:42 2008 UTC (15 years, 10 months ago) by ad
Branch: MAIN
Changes since 1.45: +2 -2 lines
Diff to previous 1.45 (colored) to selected 1.85 (colored)

PR port-amd64/38708 lkm_map issues on amd64

Don't plonk lkm_map right on top of the ISA ROM/video hole.

Revision 1.40.2.1 / (download) - annotate - [select for diffs], Sun May 18 12:31:27 2008 UTC (15 years, 10 months ago) by yamt
Branch: yamt-pf42
Changes since 1.40: +51 -33 lines
Diff to previous 1.40 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.45 / (download) - annotate - [select for diffs], Fri May 16 17:18:25 2008 UTC (15 years, 10 months ago) by bouyer
Branch: MAIN
CVS Tags: yamt-pf42-base2, hpcarm-cleanup-nbase
Changes since 1.44: +5 -1 lines
Diff to previous 1.44 (colored) to selected 1.85 (colored)

Initialize cpuid_level for Xen too.

Revision 1.40.4.1 / (download) - annotate - [select for diffs], Fri May 16 02:21:49 2008 UTC (15 years, 10 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.40: +47 -33 lines
Diff to previous 1.40 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.44 / (download) - annotate - [select for diffs], Sun May 11 13:33:54 2008 UTC (15 years, 10 months ago) by ad
Branch: MAIN
CVS Tags: yamt-nfs-mp-base2
Changes since 1.43: +3 -2 lines
Diff to previous 1.43 (colored) to selected 1.85 (colored)

Expose the 'cpu' variable.:

Revision 1.43 / (download) - annotate - [select for diffs], Fri May 2 15:26:38 2008 UTC (15 years, 10 months ago) by ad
Branch: MAIN
Branch point for: wrstuden-revivesa
Changes since 1.42: +22 -2 lines
Diff to previous 1.42 (colored) to selected 1.85 (colored)

- Give x86 BIOS boot the ability to load new style modules and pass them
  into the kernel. Based on a patch by jmcneill@, with many fixes and
  improvements by me.

- Put MEMORY_DISK_DYNAMIC and MODULAR into the GENERIC kernels, so that
  you can load miniroot.kmod from the boot blocks and boot into the
  installer!

Revision 1.42 / (download) - annotate - [select for diffs], Mon Apr 28 20:23:12 2008 UTC (15 years, 11 months ago) by martin
Branch: MAIN
Changes since 1.41: +1 -8 lines
Diff to previous 1.41 (colored) to selected 1.85 (colored)

Remove clause 3 and 4 from TNF licenses

Revision 1.41 / (download) - annotate - [select for diffs], Mon Apr 28 19:35:56 2008 UTC (15 years, 11 months ago) by ad
Branch: MAIN
Changes since 1.40: +24 -24 lines
Diff to previous 1.40 (colored) to selected 1.85 (colored)

- Make some entry/exit points preemption safe.
- Try to avoid mispredicted bracnhes in Xsyscall.
- Interrupts were being enabled in Xsyscall _after_ checking for ASTs,
  while could have resulted in ugly behaviour like delayed signals or
  context switches. Fix it.

Revision 1.39.6.1 / (download) - annotate - [select for diffs], Thu Apr 3 12:42:10 2008 UTC (15 years, 11 months ago) by mjf
Branch: mjf-devfs2
Changes since 1.39: +2 -1 lines
Diff to previous 1.39 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.39.2.1 / (download) - annotate - [select for diffs], Mon Mar 24 07:14:52 2008 UTC (16 years ago) by keiichi
Branch: keiichi-mipv6
Changes since 1.39: +2 -1 lines
Diff to previous 1.39 (colored) next main 1.40 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.25.10.3 / (download) - annotate - [select for diffs], Sun Mar 23 02:03:52 2008 UTC (16 years ago) by matt
Branch: matt-armv6
Changes since 1.25.10.2: +8 -3 lines
Diff to previous 1.25.10.2 (colored) to branchpoint 1.25 (colored) next main 1.26 (colored) to selected 1.85 (colored)

sync with HEAD

Revision 1.14.2.8 / (download) - annotate - [select for diffs], Mon Mar 17 09:14:14 2008 UTC (16 years ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.14.2.7: +2 -1 lines
Diff to previous 1.14.2.7 (colored) to branchpoint 1.14 (colored) next main 1.15 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.40 / (download) - annotate - [select for diffs], Tue Mar 11 02:24:43 2008 UTC (16 years ago) by ad
Branch: MAIN
CVS Tags: yamt-pf42-baseX, yamt-pf42-base, yamt-nfs-mp-base, yamt-lazymbuf-base15, yamt-lazymbuf-base14, matt-armv6-nbase, keiichi-mipv6-nbase, keiichi-mipv6-base, ad-socklock-base1
Branch point for: yamt-pf42, yamt-nfs-mp
Changes since 1.39: +2 -1 lines
Diff to previous 1.39 (colored) to selected 1.85 (colored)

Make context switch + syscall counters optionally per-CPU and accumulate
in schedclock() at "about 16 hz".

Revision 1.29.2.4 / (download) - annotate - [select for diffs], Mon Feb 18 21:04:20 2008 UTC (16 years, 1 month ago) by mjf
Branch: mjf-devfs
Changes since 1.29.2.3: +12 -10 lines
Diff to previous 1.29.2.3 (colored) to branchpoint 1.29 (colored) next main 1.30 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.14.2.7 / (download) - annotate - [select for diffs], Mon Jan 21 09:35:17 2008 UTC (16 years, 2 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.14.2.6: +32 -33 lines
Diff to previous 1.14.2.6 (colored) to branchpoint 1.14 (colored) to selected 1.85 (colored)

sync with head

Revision 1.35.4.3 / (download) - annotate - [select for diffs], Thu Jan 10 23:43:07 2008 UTC (16 years, 2 months ago) by bouyer
Branch: bouyer-xeni386
CVS Tags: bouyer-xeni386-merge1
Changes since 1.35.4.2: +6 -2 lines
Diff to previous 1.35.4.2 (colored) to branchpoint 1.35 (colored) next main 1.36 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.39 / (download) - annotate - [select for diffs], Thu Jan 10 20:14:10 2008 UTC (16 years, 2 months ago) by ad
Branch: MAIN
CVS Tags: nick-net80211-sync-base, nick-net80211-sync, mjf-devfs-base, hpcarm-cleanup-base, bouyer-xeni386-nbase, bouyer-xeni386-base
Branch point for: mjf-devfs2, keiichi-mipv6
Changes since 1.38: +7 -3 lines
Diff to previous 1.38 (colored) to selected 1.85 (colored)

- Fix a memory order problem with non-interlocked mutex release.
- Give kernel_lock its own cache line.

Revision 1.25.10.2 / (download) - annotate - [select for diffs], Wed Jan 9 01:44:45 2008 UTC (16 years, 2 months ago) by matt
Branch: matt-armv6
Changes since 1.25.10.1: +266 -48 lines
Diff to previous 1.25.10.1 (colored) to branchpoint 1.25 (colored) to selected 1.85 (colored)

sync with HEAD

Revision 1.35.4.2 / (download) - annotate - [select for diffs], Tue Jan 8 22:09:13 2008 UTC (16 years, 2 months ago) by bouyer
Branch: bouyer-xeni386
Changes since 1.35.4.1: +5 -7 lines
Diff to previous 1.35.4.1 (colored) to branchpoint 1.35 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.38 / (download) - annotate - [select for diffs], Sat Jan 5 21:47:19 2008 UTC (16 years, 2 months ago) by yamt
Branch: MAIN
CVS Tags: matt-armv6-base
Changes since 1.37: +6 -8 lines
Diff to previous 1.37 (colored) to selected 1.85 (colored)

- make amd64 use per-cpu tss.
- fix iopl syscall for amd64+xen.

Revision 1.35.4.1 / (download) - annotate - [select for diffs], Wed Jan 2 21:47:00 2008 UTC (16 years, 2 months ago) by bouyer
Branch: bouyer-xeni386
Changes since 1.35: +21 -24 lines
Diff to previous 1.35 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.29.2.3 / (download) - annotate - [select for diffs], Thu Dec 27 00:42:50 2007 UTC (16 years, 3 months ago) by mjf
Branch: mjf-devfs
Changes since 1.29.2.2: +21 -24 lines
Diff to previous 1.29.2.2 (colored) to branchpoint 1.29 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.34.2.2 / (download) - annotate - [select for diffs], Wed Dec 26 21:38:41 2007 UTC (16 years, 3 months ago) by ad
Branch: vmlocking2
Changes since 1.34.2.1: +21 -24 lines
Diff to previous 1.34.2.1 (colored) to branchpoint 1.34 (colored) next main 1.35 (colored) to selected 1.85 (colored)

Sync with head.

Revision 1.37 / (download) - annotate - [select for diffs], Fri Dec 21 20:43:45 2007 UTC (16 years, 3 months ago) by dsl
Branch: MAIN
CVS Tags: vmlocking2-base3
Changes since 1.36: +11 -12 lines
Diff to previous 1.36 (colored) to selected 1.85 (colored)

Create the trap/syscall frame space for all the registers in one go.
Use the tramp-frame offsets (TF_foo) for all references to the registers.
Sort the saving of the GP registers into the same order as the trap frame
because consequetive memory accesses are liekly to be faster.

Revision 1.36 / (download) - annotate - [select for diffs], Fri Dec 21 19:18:14 2007 UTC (16 years, 3 months ago) by dsl
Branch: MAIN
Changes since 1.35: +11 -13 lines
Diff to previous 1.35 (colored) to selected 1.85 (colored)

Change the xen CLI() and STI() defines to only use one scratch register.
As well as saving an instruction, in one place it saves a push/pop pair.

Revision 1.25.8.8 / (download) - annotate - [select for diffs], Sun Dec 9 19:34:16 2007 UTC (16 years, 3 months ago) by jmcneill
Branch: jmcneill-pm
Changes since 1.25.8.7: +14 -13 lines
Diff to previous 1.25.8.7 (colored) to branchpoint 1.25 (colored) next main 1.26 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.29.2.2 / (download) - annotate - [select for diffs], Sat Dec 8 18:16:24 2007 UTC (16 years, 3 months ago) by mjf
Branch: mjf-devfs
Changes since 1.29.2.1: +257 -34 lines
Diff to previous 1.29.2.1 (colored) to branchpoint 1.29 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.34.2.1 / (download) - annotate - [select for diffs], Sat Dec 8 17:56:14 2007 UTC (16 years, 3 months ago) by ad
Branch: vmlocking2
Changes since 1.34: +14 -13 lines
Diff to previous 1.34 (colored) to selected 1.85 (colored)

Sync with head.

Revision 1.14.2.6 / (download) - annotate - [select for diffs], Fri Dec 7 17:23:58 2007 UTC (16 years, 3 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.14.2.5: +257 -34 lines
Diff to previous 1.14.2.5 (colored) to branchpoint 1.14 (colored) to selected 1.85 (colored)

sync with head

Revision 1.35 / (download) - annotate - [select for diffs], Mon Dec 3 20:21:32 2007 UTC (16 years, 3 months ago) by ad
Branch: MAIN
CVS Tags: yamt-kmem-base3, yamt-kmem-base2, yamt-kmem-base, yamt-kmem, vmlocking2-base2, reinoud-bufcleanup-nbase, reinoud-bufcleanup-base, jmcneill-pm-base, cube-autoconf-base, cube-autoconf
Branch point for: bouyer-xeni386
Changes since 1.34: +14 -13 lines
Diff to previous 1.34 (colored) to selected 1.85 (colored)

Merge from vmlocking.

Revision 1.20.4.8 / (download) - annotate - [select for diffs], Mon Dec 3 19:02:35 2007 UTC (16 years, 3 months ago) by ad
Branch: vmlocking
Changes since 1.20.4.7: +5 -58 lines
Diff to previous 1.20.4.7 (colored) to branchpoint 1.20 (colored) next main 1.21 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.20.4.7 / (download) - annotate - [select for diffs], Mon Dec 3 18:34:38 2007 UTC (16 years, 3 months ago) by ad
Branch: vmlocking
Changes since 1.20.4.6: +299 -24 lines
Diff to previous 1.20.4.6 (colored) to branchpoint 1.20 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.25.8.7 / (download) - annotate - [select for diffs], Mon Dec 3 16:13:53 2007 UTC (16 years, 3 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.25.8.6: +18 -12 lines
Diff to previous 1.25.8.6 (colored) to branchpoint 1.25 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.34 / (download) - annotate - [select for diffs], Sun Dec 2 21:43:11 2007 UTC (16 years, 3 months ago) by dsl
Branch: MAIN
CVS Tags: vmlocking2-base1, vmlocking-nbase
Branch point for: vmlocking2
Changes since 1.33: +18 -12 lines
Diff to previous 1.33 (colored) to selected 1.85 (colored)

Improve the likelyhood of the 'oosyscall' code (ie that for system call entry
via a call gate for i386 netbsd 1.0 and ibcs2) doing the right thing.
Untested because I've failed to get an a.out netbsd 1.0 binary to load.

Revision 1.25.8.6 / (download) - annotate - [select for diffs], Tue Nov 27 19:35:26 2007 UTC (16 years, 4 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.25.8.5: +229 -13 lines
Diff to previous 1.25.8.5 (colored) to branchpoint 1.25 (colored) to selected 1.85 (colored)

Sync with HEAD. amd64 Xen support needs testing.

Revision 1.33 / (download) - annotate - [select for diffs], Fri Nov 23 15:38:52 2007 UTC (16 years, 4 months ago) by bouyer
Branch: MAIN
Changes since 1.32: +2 -2 lines
Diff to previous 1.32 (colored) to selected 1.85 (colored)

Sync BSD_SYMTAB declaration with xeni386, pointed out by Christoph Egger

Revision 1.32 / (download) - annotate - [select for diffs], Thu Nov 22 16:16:42 2007 UTC (16 years, 4 months ago) by bouyer
Branch: MAIN
Changes since 1.31: +229 -13 lines
Diff to previous 1.31 (colored) to selected 1.85 (colored)

Pull up the bouyer-xenamd64 branch to HEAD. This brings in amd64 support
to NetBSD/Xen, both Dom0 and DomU.

Revision 1.25.8.5 / (download) - annotate - [select for diffs], Wed Nov 21 21:52:59 2007 UTC (16 years, 4 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.25.8.4: +3 -3 lines
Diff to previous 1.25.8.4 (colored) to branchpoint 1.25 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.31 / (download) - annotate - [select for diffs], Mon Nov 19 19:02:20 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
CVS Tags: bouyer-xenamd64-base2, bouyer-xenamd64-base
Changes since 1.30: +3 -3 lines
Diff to previous 1.30 (colored) to selected 1.85 (colored)

IPL_IPI -> IPL_HIGH

Revision 1.29.2.1 / (download) - annotate - [select for diffs], Mon Nov 19 00:46:07 2007 UTC (16 years, 4 months ago) by mjf
Branch: mjf-devfs
Changes since 1.29: +4 -4 lines
Diff to previous 1.29 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.18.14.1 / (download) - annotate - [select for diffs], Sat Nov 17 21:04:59 2007 UTC (16 years, 4 months ago) by skrll
Branch: wrstuden-fixsa
Changes since 1.18: +22 -1 lines
Diff to previous 1.18 (colored) next main 1.19 (colored) to selected 1.85 (colored)

Back port of:

date: 2007/05/25 15:09:50;  author: yamt;  state: Exp;  lines: +4 -6
dumpsys: build a fake switchframe for postmortem debugging.
reviewed by Frank van der Linden.

Unfortunately struct switchframe changed in -current so the crashdumps
aren't compatible. *sigh*

Revision 1.20.4.6 / (download) - annotate - [select for diffs], Fri Nov 16 20:31:19 2007 UTC (16 years, 4 months ago) by ad
Branch: vmlocking
Changes since 1.20.4.5: +5 -9 lines
Diff to previous 1.20.4.5 (colored) to branchpoint 1.20 (colored) to selected 1.85 (colored)

- Don't bother entering the debugger for WARNING: SPL NOT LOWERED ...
  It's nearly impossible to debug at that point. Just patch things
  up and continue.
- Don't assign to ci_ilevel to drop the IPL, it can cause deadlock.
  Use spllower() instead.

Revision 1.27.2.5 / (download) - annotate - [select for diffs], Fri Nov 16 17:18:00 2007 UTC (16 years, 4 months ago) by bouyer
Branch: bouyer-xenamd64
Changes since 1.27.2.4: +1 -2 lines
Diff to previous 1.27.2.4 (colored) to branchpoint 1.27 (colored) next main 1.28 (colored) to selected 1.85 (colored)

Initial domain0 support for xenamd64. The kernel boots multiuser, but
xen tools have not been tried yet.
In this process, cleanup some more the page table bootstrap, and properly
handle event counters for soft interrupts.

Revision 1.14.2.5 / (download) - annotate - [select for diffs], Thu Nov 15 11:42:30 2007 UTC (16 years, 4 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.14.2.4: +4 -4 lines
Diff to previous 1.14.2.4 (colored) to branchpoint 1.14 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.25.8.4 / (download) - annotate - [select for diffs], Wed Nov 14 19:04:02 2007 UTC (16 years, 4 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.25.8.3: +4 -4 lines
Diff to previous 1.25.8.3 (colored) to branchpoint 1.25 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.27.2.4 / (download) - annotate - [select for diffs], Tue Nov 13 15:58:05 2007 UTC (16 years, 4 months ago) by bouyer
Branch: bouyer-xenamd64
Changes since 1.27.2.3: +4 -4 lines
Diff to previous 1.27.2.3 (colored) to branchpoint 1.27 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.30 / (download) - annotate - [select for diffs], Mon Nov 12 18:44:43 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.29: +4 -4 lines
Diff to previous 1.29 (colored) to selected 1.85 (colored)

- cpu_vendor was both an int and char[] on amd64 - fix it.
- Run the errata check/patch on all CPUs, not just the boot processor.

Revision 1.25.10.1 / (download) - annotate - [select for diffs], Tue Nov 6 23:14:06 2007 UTC (16 years, 4 months ago) by matt
Branch: matt-armv6
CVS Tags: matt-armv6-prevmlocking
Changes since 1.25: +84 -57 lines
Diff to previous 1.25 (colored) to selected 1.85 (colored)

sync with HEAD

Revision 1.14.2.4 / (download) - annotate - [select for diffs], Sat Oct 27 11:25:05 2007 UTC (16 years, 5 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.14.2.3: +32 -56 lines
Diff to previous 1.14.2.3 (colored) to branchpoint 1.14 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.25.8.3 / (download) - annotate - [select for diffs], Fri Oct 26 15:42:06 2007 UTC (16 years, 5 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.25.8.2: +32 -22 lines
Diff to previous 1.25.8.2 (colored) to branchpoint 1.25 (colored) to selected 1.85 (colored)

Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.

Revision 1.27.2.3 / (download) - annotate - [select for diffs], Fri Oct 26 13:46:50 2007 UTC (16 years, 5 months ago) by bouyer
Branch: bouyer-xenamd64
Changes since 1.27.2.2: +3 -1 lines
Diff to previous 1.27.2.2 (colored) to branchpoint 1.27 (colored) to selected 1.85 (colored)

Make amd64, i386 and xen kernels build and work again.

Revision 1.27.2.2 / (download) - annotate - [select for diffs], Thu Oct 25 23:59:22 2007 UTC (16 years, 5 months ago) by bouyer
Branch: bouyer-xenamd64
Changes since 1.27.2.1: +40 -30 lines
Diff to previous 1.27.2.1 (colored) to branchpoint 1.27 (colored) to selected 1.85 (colored)

Finish sync with HEAD. Especially use the new x86 pmap for xenamd64.
For this:
- rename pmap_pte_set() to pmap_pte_testset()
- make pmap_pte_set() a function or macro for non-atomic PTE write
- define and use pmap_pa2pte()/pmap_pte2pa() to read/write PTE entries
- define pmap_pte_flush() which is a nop in x86 case, and flush the
  MMUops queue in the Xen case

Revision 1.20.4.5 / (download) - annotate - [select for diffs], Tue Oct 23 20:11:37 2007 UTC (16 years, 5 months ago) by ad
Branch: vmlocking
Changes since 1.20.4.4: +34 -24 lines
Diff to previous 1.20.4.4 (colored) to branchpoint 1.20 (colored) to selected 1.85 (colored)

Sync with head.

Revision 1.29 / (download) - annotate - [select for diffs], Thu Oct 18 15:28:32 2007 UTC (16 years, 5 months ago) by yamt
Branch: MAIN
CVS Tags: jmcneill-base
Branch point for: mjf-devfs
Changes since 1.28: +32 -22 lines
Diff to previous 1.28 (colored) to selected 1.85 (colored)

merge yamt-x86pmap branch.

- reduce differences between amd64 and i386.  notably, share pmap.c
  between them.  it makes several i386 pmap improvements available to
  amd64, including tlb shootdown reduction and bug fixes from Stephan Uphoff.
- implement deferred pmap switching for amd64.
- remove LARGEPAGES option.  always use large pages if available.
  also, make it work on amd64.

Revision 1.27.2.1 / (download) - annotate - [select for diffs], Wed Oct 17 21:38:14 2007 UTC (16 years, 5 months ago) by bouyer
Branch: bouyer-xenamd64
Changes since 1.27: +224 -9 lines
Diff to previous 1.27 (colored) to selected 1.85 (colored)

amd64 (aka x86-64) support for Xen. Based on the OpenBSD port done by
Mathieu Ropert in 2006.
DomU-only for now. An INSTALL_XEN3_DOMU kernel with a ramdisk will boot to
sysinst if you're lucky. Often it panics because a runable LWP has
a NULL stack (really, it's all of l->l_addr which is has been zeroed out
while the process was on the queue !)
TODO:
- bug fixes :)
- Most of the xpq_* functions should be shared with xen/i386
- The xen/i386 assembly bootstrap code should be remplaced with the C
  version in xenamd64/amd64/xpmap.c
- see if a config(5) trick could allow to merge xenamd64 back to xen or amd64.

Revision 1.28 / (download) - annotate - [select for diffs], Wed Oct 17 19:53:01 2007 UTC (16 years, 5 months ago) by garbled
Branch: MAIN
CVS Tags: yamt-x86pmap-base4
Changes since 1.27: +1 -1 lines
Diff to previous 1.27 (colored) to selected 1.85 (colored)

Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree.  Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches.  The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.

Revision 1.20.4.4 / (download) - annotate - [select for diffs], Tue Oct 9 15:22:01 2007 UTC (16 years, 5 months ago) by ad
Branch: vmlocking
Changes since 1.20.4.3: +1 -35 lines
Diff to previous 1.20.4.3 (colored) to branchpoint 1.20 (colored) to selected 1.85 (colored)

Sync with head.

Revision 1.26.2.6 / (download) - annotate - [select for diffs], Mon Oct 8 11:00:14 2007 UTC (16 years, 5 months ago) by yamt
Branch: yamt-x86pmap
Changes since 1.26.2.5: +0 -1 lines
Diff to previous 1.26.2.5 (colored) to branchpoint 1.26 (colored) next main 1.27 (colored) to selected 1.85 (colored)

fix off-by-one.

Revision 1.26.2.5 / (download) - annotate - [select for diffs], Sun Oct 7 13:33:34 2007 UTC (16 years, 5 months ago) by yamt
Branch: yamt-x86pmap
Changes since 1.26.2.4: +3 -3 lines
Diff to previous 1.26.2.4 (colored) to branchpoint 1.26 (colored) to selected 1.85 (colored)

rename PTDpaddr to PDPpaddr to match with i386.
(if you think it's a good idea to make gratuitous renames like this,
please do it for both of i386 and amd64 consistently.)

Revision 1.26.2.4 / (download) - annotate - [select for diffs], Sun Oct 7 12:51:15 2007 UTC (16 years, 5 months ago) by yamt
Branch: yamt-x86pmap
Changes since 1.26.2.3: +1 -3 lines
Diff to previous 1.26.2.3 (colored) to branchpoint 1.26 (colored) to selected 1.85 (colored)

remove some #ifdef _LOCORE and use genassym instead.

Revision 1.26.2.3 / (download) - annotate - [select for diffs], Sat Oct 6 15:39:38 2007 UTC (16 years, 5 months ago) by yamt
Branch: yamt-x86pmap
Changes since 1.26.2.2: +1 -35 lines
Diff to previous 1.26.2.2 (colored) to branchpoint 1.26 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.26.2.2 / (download) - annotate - [select for diffs], Thu Oct 4 15:04:31 2007 UTC (16 years, 5 months ago) by yamt
Branch: yamt-x86pmap
Changes since 1.26.2.1: +4 -4 lines
Diff to previous 1.26.2.1 (colored) to branchpoint 1.26 (colored) to selected 1.85 (colored)

- move etext before rodata.  define __data_start at the start of
  .data section and use it instead of etext where appropriate.
- put .rodata.* into .rodata section as well.
- pmap_bootstrap: don't assume NBPD_L2 alignment.
- pmap_bootstrap: if DEBUG, print how many large pages and normal pages are
  used to map kernel text.

Revision 1.20.12.3 / (download) - annotate - [select for diffs], Wed Oct 3 19:22:08 2007 UTC (16 years, 5 months ago) by garbled
Branch: ppcoea-renovation
Changes since 1.20.12.2: +53 -36 lines
Diff to previous 1.20.12.2 (colored) to branchpoint 1.20 (colored) next main 1.21 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.25.8.2 / (download) - annotate - [select for diffs], Tue Oct 2 18:26:40 2007 UTC (16 years, 5 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.25.8.1: +1 -35 lines
Diff to previous 1.25.8.1 (colored) to branchpoint 1.25 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.26.2.1 / (download) - annotate - [select for diffs], Sun Sep 30 15:32:20 2007 UTC (16 years, 6 months ago) by yamt
Branch: yamt-x86pmap
Changes since 1.26: +25 -12 lines
Diff to previous 1.26 (colored) to selected 1.85 (colored)

implement deferred pmap switching for amd64, and make amd64 use
x86 shared pmap code.  it makes several i386 pmap improvements available
to amd64, including tlb shootdown reduction and bug fixes from Stephan Uphoff.

Revision 1.27 / (download) - annotate - [select for diffs], Wed Sep 26 19:48:35 2007 UTC (16 years, 6 months ago) by ad
Branch: MAIN
CVS Tags: yamt-x86pmap-base3, yamt-x86pmap-base2, vmlocking-base, ppcoea-renovation-base
Branch point for: bouyer-xenamd64
Changes since 1.26: +1 -35 lines
Diff to previous 1.26 (colored) to selected 1.85 (colored)

x86 changes for pcc and LKMs.

- Replace most inline assembly with proper functions. As a side effect
  this reduces the size of amd64 GENERIC by about 120kB, and i386 by a
  smaller amount. Nearly all of the inlines did something slow, or something
  that does not need to be fast.
- Make curcpu() and curlwp functions proper, unless __GNUC__ && _KERNEL.
  In that case make them inlines. Makes curlwp LKM and preemption safe.
- Make bus_space and bus_dma more LKM friendly.
- Share a few more files between the ports.
- Other minor changes.

Revision 1.25.8.1 / (download) - annotate - [select for diffs], Mon Sep 3 16:47:00 2007 UTC (16 years, 6 months ago) by jmcneill
Branch: jmcneill-pm
Changes since 1.25: +53 -2 lines
Diff to previous 1.25 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.14.2.3 / (download) - annotate - [select for diffs], Mon Sep 3 14:22:31 2007 UTC (16 years, 6 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.14.2.2: +178 -423 lines
Diff to previous 1.14.2.2 (colored) to branchpoint 1.14 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.25.4.1 / (download) - annotate - [select for diffs], Mon Sep 3 10:18:10 2007 UTC (16 years, 6 months ago) by skrll
Branch: nick-csl-alignment
Changes since 1.25: +53 -2 lines
Diff to previous 1.25 (colored) next main 1.26 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.26 / (download) - annotate - [select for diffs], Wed Aug 29 23:38:02 2007 UTC (16 years, 7 months ago) by ad
Branch: MAIN
CVS Tags: yamt-x86pmap-base, nick-csl-alignment-base5
Branch point for: yamt-x86pmap
Changes since 1.25: +53 -2 lines
Diff to previous 1.25 (colored) to selected 1.85 (colored)

Merge most x86 changes from the vmlocking branch, except the threaded soft
interrupt stuff. This is mostly comprised of changes to the pmap modules to
work on multiprocessor systems without kernel_lock, and changes to speed up
tlb shootdowns.

Revision 1.20.4.3 / (download) - annotate - [select for diffs], Thu Aug 23 19:44:08 2007 UTC (16 years, 7 months ago) by ad
Branch: vmlocking
Changes since 1.20.4.2: +49 -1 lines
Diff to previous 1.20.4.2 (colored) to branchpoint 1.20 (colored) to selected 1.85 (colored)

Add sse2_zero_page(), sse2_copy_page().

Revision 1.20.4.2 / (download) - annotate - [select for diffs], Thu Aug 23 12:07:49 2007 UTC (16 years, 7 months ago) by ad
Branch: vmlocking
Changes since 1.20.4.1: +5 -2 lines
Diff to previous 1.20.4.1 (colored) to branchpoint 1.20 (colored) to selected 1.85 (colored)

Save cpu_feature2, like i386.

Revision 1.20.6.1 / (download) - annotate - [select for diffs], Wed Jul 11 19:57:33 2007 UTC (16 years, 8 months ago) by mjf
Branch: mjf-ufs-trans
Changes since 1.20: +126 -422 lines
Diff to previous 1.20 (colored) next main 1.21 (colored) to selected 1.85 (colored)

Sync with head.

Revision 1.20.12.2 / (download) - annotate - [select for diffs], Tue Jun 26 18:11:57 2007 UTC (16 years, 9 months ago) by garbled
Branch: ppcoea-renovation
Changes since 1.20.12.1: +21 -1 lines
Diff to previous 1.20.12.1 (colored) to branchpoint 1.20 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.20.4.1 / (download) - annotate - [select for diffs], Sun May 27 12:26:57 2007 UTC (16 years, 10 months ago) by ad
Branch: vmlocking
Changes since 1.20: +126 -422 lines
Diff to previous 1.20 (colored) to selected 1.85 (colored)

Sync with head.

Revision 1.25 / (download) - annotate - [select for diffs], Fri May 25 15:09:50 2007 UTC (16 years, 10 months ago) by yamt
Branch: MAIN
CVS Tags: nick-csl-alignment-base, mjf-ufs-trans-base, matt-mips64-base, matt-mips64, hpcarm-cleanup
Branch point for: nick-csl-alignment, matt-armv6, jmcneill-pm
Changes since 1.24: +21 -1 lines
Diff to previous 1.24 (colored) to selected 1.85 (colored)

dumpsys: build a fake switchframe for postmortem debugging.
reviewed by Frank van der Linden.

Revision 1.20.12.1 / (download) - annotate - [select for diffs], Tue May 22 17:26:31 2007 UTC (16 years, 10 months ago) by matt
Branch: ppcoea-renovation
Changes since 1.20: +109 -425 lines
Diff to previous 1.20 (colored) to selected 1.85 (colored)

Update to HEAD.

Revision 1.24 / (download) - annotate - [select for diffs], Mon May 21 08:10:38 2007 UTC (16 years, 10 months ago) by fvdl
Branch: MAIN
Changes since 1.23: +5 -1 lines
Diff to previous 1.23 (colored) to selected 1.85 (colored)

Revert fs/gs changes until I figure out issues with them.

Revision 1.23 / (download) - annotate - [select for diffs], Sat May 19 20:20:47 2007 UTC (16 years, 10 months ago) by fvdl
Branch: MAIN
Changes since 1.22: +2 -2 lines
Diff to previous 1.22 (colored) to selected 1.85 (colored)

cpu_switchto: PCB_CR0(%r14) is a 32bit value, so don't use movq to retrieve it.
Using movq would copy pcb_flags along as well, which would cause traps
because bad bits would be written into %cr0 a few instructions later.
This wouldn't happen for native NetBSD processes (no pcb_flags set), but
it would happen for Linux processes.

Revision 1.22 / (download) - annotate - [select for diffs], Thu May 17 14:51:14 2007 UTC (16 years, 10 months ago) by yamt
Branch: MAIN
Changes since 1.21: +109 -425 lines
Diff to previous 1.21 (colored) to selected 1.85 (colored)

merge yamt-idlelwp branch.  asked by core@.  some ports still needs work.

from doc/BRANCHES:

	idle lwp, and some changes depending on it.

	1. separate context switching and thread scheduling.
	   (cf. gmcgarry_ctxsw)
	2. implement idle lwp.
	3. clean up related MD/MI interfaces.
	4. make scheduler(s) modular.

Revision 1.19.2.4 / (download) - annotate - [select for diffs], Thu May 17 13:40:48 2007 UTC (16 years, 10 months ago) by yamt
Branch: yamt-idlelwp
Changes since 1.19.2.3: +1 -5 lines
Diff to previous 1.19.2.3 (colored) to branchpoint 1.19 (colored) next main 1.20 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.21 / (download) - annotate - [select for diffs], Fri May 11 14:01:46 2007 UTC (16 years, 10 months ago) by fvdl
Branch: MAIN
CVS Tags: yamt-idlelwp-base8
Changes since 1.20: +1 -5 lines
Diff to previous 1.20 (colored) to selected 1.85 (colored)

Don't save/restore %fs and %gs in trapframe. The kernel won't touch them.
Instead, save/restore them on context switch. For 32bit processes, save/restore
the selector values only, for 64bit processes, save/restore the appropriate
MSRs. Iff the defaults have been changed.

Revision 1.19.2.3 / (download) - annotate - [select for diffs], Tue Apr 10 23:07:31 2007 UTC (16 years, 11 months ago) by ad
Branch: yamt-idlelwp
Changes since 1.19.2.2: +91 -117 lines
Diff to previous 1.19.2.2 (colored) to branchpoint 1.19 (colored) to selected 1.85 (colored)

Sync with i386.

Revision 1.19.2.2 / (download) - annotate - [select for diffs], Sat Mar 3 15:42:48 2007 UTC (17 years ago) by yamt
Branch: yamt-idlelwp
Changes since 1.19.2.1: +37 -327 lines
Diff to previous 1.19.2.1 (colored) to branchpoint 1.19 (colored) to selected 1.85 (colored)

adapt amd64.

XXX changes in identcpu.c is minmum for MONITOR.
XXX identcpu.c should be shared with i386.

Revision 1.19.2.1 / (download) - annotate - [select for diffs], Tue Feb 27 16:48:43 2007 UTC (17 years, 1 month ago) by yamt
Branch: yamt-idlelwp
Changes since 1.19: +2 -2 lines
Diff to previous 1.19 (colored) to selected 1.85 (colored)

- sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.

Revision 1.14.2.2 / (download) - annotate - [select for diffs], Mon Feb 26 09:05:40 2007 UTC (17 years, 1 month ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.14.2.1: +22 -23 lines
Diff to previous 1.14.2.1 (colored) to branchpoint 1.14 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.20 / (download) - annotate - [select for diffs], Sat Feb 17 22:31:37 2007 UTC (17 years, 1 month ago) by pavel
Branch: MAIN
CVS Tags: thorpej-atomic-base, thorpej-atomic, reinoud-bufcleanup, ad-audiomp-base, ad-audiomp
Branch point for: vmlocking, ppcoea-renovation, mjf-ufs-trans
Changes since 1.19: +2 -2 lines
Diff to previous 1.19 (colored) to selected 1.85 (colored)

Change the process/lwp flags seen by userland via sysctl back to the
P_*/L_* naming convention, and rename the in-kernel flags to avoid
conflict. (P_ -> PK_, L_ -> LW_ ). Add back the (now unused) LSDEAD
constant.

Restores source compatibility with pre-newlock2 tools like ps or top.

Reviewed by Andrew Doran.

Revision 1.19 / (download) - annotate - [select for diffs], Fri Feb 9 21:55:01 2007 UTC (17 years, 1 month ago) by ad
Branch: MAIN
CVS Tags: post-newlock2-merge
Branch point for: yamt-idlelwp
Changes since 1.18: +21 -22 lines
Diff to previous 1.18 (colored) to selected 1.85 (colored)

Merge newlock2 to head.

Revision 1.18.8.10 / (download) - annotate - [select for diffs], Thu Feb 1 04:17:13 2007 UTC (17 years, 1 month ago) by ad
Branch: newlock2
Changes since 1.18.8.9: +3 -3 lines
Diff to previous 1.18.8.9 (colored) to branchpoint 1.18 (colored) next main 1.19 (colored) to selected 1.85 (colored)

Call spllower() from the idle loop, not Xspllower().

Revision 1.18.8.9 / (download) - annotate - [select for diffs], Tue Jan 30 11:45:26 2007 UTC (17 years, 2 months ago) by ad
Branch: newlock2
Changes since 1.18.8.8: +1 -7 lines
Diff to previous 1.18.8.8 (colored) to branchpoint 1.18 (colored) to selected 1.85 (colored)

For now always call sched_unlock_idle/sched_lock_idle. They will be
removed by yamt's cpu_switchto() changes.

Revision 1.18.8.8 / (download) - annotate - [select for diffs], Sat Jan 27 07:09:02 2007 UTC (17 years, 2 months ago) by ad
Branch: newlock2
Changes since 1.18.8.7: +7 -1 lines
Diff to previous 1.18.8.7 (colored) to branchpoint 1.18 (colored) to selected 1.85 (colored)

If running on a PPro or later, at boot patch in versions of spllower() and
similar that use cmpxchg8b instead of cli/sti. Cuts the clock cycles for
splx() by a factor of ~6 on the P4, and ~3 on the PIII when bracketed by
serializing instructions (and hopefully more when not).

Revision 1.18.8.7 / (download) - annotate - [select for diffs], Fri Jan 19 20:07:55 2007 UTC (17 years, 2 months ago) by ad
Branch: newlock2
Changes since 1.18.8.6: +4 -5 lines
Diff to previous 1.18.8.6 (colored) to branchpoint 1.18 (colored) to selected 1.85 (colored)

cpu_exit: be more conservative and only clear curlwp after TR has been
loaded.

Revision 1.18.8.6 / (download) - annotate - [select for diffs], Fri Jan 19 19:35:22 2007 UTC (17 years, 2 months ago) by ad
Branch: newlock2
Changes since 1.18.8.5: +3 -3 lines
Diff to previous 1.18.8.5 (colored) to branchpoint 1.18 (colored) to selected 1.85 (colored)

- cpu_exit(): move 'cli' behind clearing curlwp to close a race with
  lwp_free(). Noted by yamt@.
- Don't bother calling lwp_exit2() any more.

Revision 1.18.8.5 / (download) - annotate - [select for diffs], Sun Jan 14 13:57:13 2007 UTC (17 years, 2 months ago) by ad
Branch: newlock2
Changes since 1.18.8.4: +19 -22 lines
Diff to previous 1.18.8.4 (colored) to branchpoint 1.18 (colored) to selected 1.85 (colored)

- Restore previous locking behaviour in cpu_switch(). Seems to fix what
  look like corrupted trap frames.
- Micro-optimisation for AST check/clear.

Revision 1.18.8.4 / (download) - annotate - [select for diffs], Fri Jan 12 14:24:17 2007 UTC (17 years, 2 months ago) by ad
Branch: newlock2
Changes since 1.18.8.3: +7 -15 lines
Diff to previous 1.18.8.3 (colored) to branchpoint 1.18 (colored) to selected 1.85 (colored)

Make amd64 build again.

Revision 1.18.8.3 / (download) - annotate - [select for diffs], Fri Dec 29 20:27:41 2006 UTC (17 years, 3 months ago) by ad
Branch: newlock2
Changes since 1.18.8.2: +7 -7 lines
Diff to previous 1.18.8.2 (colored) to branchpoint 1.18 (colored) to selected 1.85 (colored)

Checkpoint work in progress.

Revision 1.18.8.2 / (download) - annotate - [select for diffs], Tue Oct 24 21:10:22 2006 UTC (17 years, 5 months ago) by ad
Branch: newlock2
Changes since 1.18.8.1: +1 -6 lines
Diff to previous 1.18.8.1 (colored) to branchpoint 1.18 (colored) to selected 1.85 (colored)

- Redo LWP locking slightly and fix some races.
- Fix some locking botches.
- Make signal mask / stack per-proc for SA processes.
- Add _lwp_kill().

Revision 1.18.8.1 / (download) - annotate - [select for diffs], Fri Oct 20 19:42:24 2006 UTC (17 years, 5 months ago) by ad
Branch: newlock2
Changes since 1.18: +41 -25 lines
Diff to previous 1.18 (colored) to selected 1.85 (colored)

- Acquire/release sched_mutex in the correct places.
- Donate ci->ci_sched_mutex to newly scheduled LWPs.

Revision 1.15.4.1 / (download) - annotate - [select for diffs], Sat Sep 9 02:37:05 2006 UTC (17 years, 6 months ago) by rpaulo
Branch: rpaulo-netinet-merge-pcb
Changes since 1.15: +5 -5 lines
Diff to previous 1.15 (colored) next main 1.16 (colored) to selected 1.85 (colored)

sync with head

Revision 1.14.2.1 / (download) - annotate - [select for diffs], Wed Jun 21 14:48:18 2006 UTC (17 years, 9 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.14: +5 -5 lines
Diff to previous 1.14 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.15.6.1 / (download) - annotate - [select for diffs], Thu Jun 1 22:34:10 2006 UTC (17 years, 10 months ago) by kardel
Branch: simonb-timecounters
CVS Tags: simonb-timcounters-final
Changes since 1.15: +5 -5 lines
Diff to previous 1.15 (colored) next main 1.16 (colored) to selected 1.85 (colored)

Sync with head.

Revision 1.15.12.1 / (download) - annotate - [select for diffs], Wed May 24 15:47:50 2006 UTC (17 years, 10 months ago) by tron
Branch: peter-altq
Changes since 1.15: +5 -5 lines
Diff to previous 1.15 (colored) next main 1.16 (colored) to selected 1.85 (colored)

Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.

Revision 1.15.8.1 / (download) - annotate - [select for diffs], Wed May 24 10:56:33 2006 UTC (17 years, 10 months ago) by yamt
Branch: yamt-pdpolicy
Changes since 1.15: +5 -5 lines
Diff to previous 1.15 (colored) next main 1.16 (colored) to selected 1.85 (colored)

sync with head.

Revision 1.18 / (download) - annotate - [select for diffs], Sun May 14 21:55:09 2006 UTC (17 years, 10 months ago) by elad
Branch: MAIN
CVS Tags: yamt-splraiseipl-base5, yamt-splraiseipl-base4, yamt-splraiseipl-base3, yamt-splraiseipl-base2, yamt-splraiseipl-base, yamt-splraiseipl, yamt-pdpolicy-base9, yamt-pdpolicy-base8, yamt-pdpolicy-base7, yamt-pdpolicy-base6, yamt-pdpolicy-base5, wrstuden-fixsa-newbase, wrstuden-fixsa-base-1, wrstuden-fixsa-base, simonb-timecounters-base, rpaulo-netinet-merge-pcb-base, newlock2-nbase, newlock2-base, netbsd-4-base, netbsd-4-0-RELEASE, netbsd-4-0-RC5, netbsd-4-0-RC4, netbsd-4-0-RC3, netbsd-4-0-RC2, netbsd-4-0-RC1, netbsd-4-0-1-RELEASE, netbsd-4-0, matt-nb4-arm-base, matt-nb4-arm, gdamore-uart-base, gdamore-uart, chap-midi-nbase, chap-midi-base, chap-midi, abandoned-netbsd-4-base, abandoned-netbsd-4
Branch point for: wrstuden-fixsa, newlock2, netbsd-4
Changes since 1.17: +1 -1 lines
Diff to previous 1.17 (colored) to selected 1.85 (colored)

integrate kauth.

Revision 1.17 / (download) - annotate - [select for diffs], Sat May 13 08:56:08 2006 UTC (17 years, 10 months ago) by skrll
Branch: MAIN
Changes since 1.16: +4 -4 lines
Diff to previous 1.16 (colored) to selected 1.85 (colored)

Fix some more comments.

Revision 1.15.10.1 / (download) - annotate - [select for diffs], Thu May 11 23:26:18 2006 UTC (17 years, 10 months ago) by elad
Branch: elad-kernelauth
Changes since 1.15: +2 -2 lines
Diff to previous 1.15 (colored) next main 1.16 (colored) to selected 1.85 (colored)

sync with head

Revision 1.16 / (download) - annotate - [select for diffs], Sun Apr 30 19:50:19 2006 UTC (17 years, 11 months ago) by rjs
Branch: MAIN
CVS Tags: elad-kernelauth-base
Changes since 1.15: +2 -2 lines
Diff to previous 1.15 (colored) to selected 1.85 (colored)

Fix comment for cpu_switch().

Revision 1.15 / (download) - annotate - [select for diffs], Sun Dec 11 12:16:21 2005 UTC (18 years, 3 months ago) by christos
Branch: MAIN
CVS Tags: yamt-uio_vmspace-base5, yamt-uio_vmspace, yamt-pdpolicy-base4, yamt-pdpolicy-base3, yamt-pdpolicy-base2, yamt-pdpolicy-base, peter-altq-base
Branch point for: yamt-pdpolicy, simonb-timecounters, rpaulo-netinet-merge-pcb, peter-altq, elad-kernelauth
Changes since 1.14: +1 -1 lines
Diff to previous 1.14 (colored) to selected 1.85 (colored)

merge ktrace-lwp.

Revision 1.13.8.1 / (download) - annotate - [select for diffs], Fri Apr 29 11:27:59 2005 UTC (18 years, 11 months ago) by kent
Branch: kent-audio2
Changes since 1.13: +2 -3 lines
Diff to previous 1.13 (colored) next main 1.14 (colored) to selected 1.85 (colored)

sync with -current

Revision 1.4.2.4 / (download) - annotate - [select for diffs], Fri Apr 1 14:26:50 2005 UTC (19 years ago) by skrll
Branch: ktrace-lwp
Changes since 1.4.2.3: +2 -3 lines
Diff to previous 1.4.2.3 (colored) next main 1.5 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.14 / (download) - annotate - [select for diffs], Fri Apr 1 11:59:22 2005 UTC (19 years ago) by yamt
Branch: MAIN
CVS Tags: yamt-vop-base3, yamt-vop-base2, yamt-vop-base, yamt-vop, yamt-readahead-pervnode, yamt-readahead-perfile, yamt-readahead-base3, yamt-readahead-base2, yamt-readahead-base, yamt-readahead, thorpej-vnode-attr-base, thorpej-vnode-attr, ktrace-lwp-base, kent-audio2-base
Branch point for: yamt-lazymbuf
Changes since 1.13: +2 -3 lines
Diff to previous 1.13 (colored) to selected 1.85 (colored)

merge yamt-km branch.
- don't use managed mappings/backing objects for wired memory allocations.
  save some resources like pv_entry.  also fix (most of) PR/27030.
- simplify kernel memory management API.
- simplify pmap bootstrap of some ports.
- some related cleanups.

Revision 1.13.10.1 / (download) - annotate - [select for diffs], Sun Feb 13 10:06:04 2005 UTC (19 years, 1 month ago) by yamt
Branch: yamt-km
Changes since 1.13: +2 -3 lines
Diff to previous 1.13 (colored) next main 1.14 (colored) to selected 1.85 (colored)

remove no longer needed .globl decls.

Revision 1.4.2.3 / (download) - annotate - [select for diffs], Tue Sep 21 13:12:07 2004 UTC (19 years, 6 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.4.2.2: +1 -1 lines
Diff to previous 1.4.2.2 (colored) to selected 1.85 (colored)

Fix the sync with head I botched.

Revision 1.4.2.2 / (download) - annotate - [select for diffs], Sat Sep 18 14:31:13 2004 UTC (19 years, 6 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.4.2.1: +0 -0 lines
Diff to previous 1.4.2.1 (colored) to selected 1.85 (colored)

Sync with HEAD.

Revision 1.4.2.1 / (download) - annotate - [select for diffs], Tue Aug 3 10:31:30 2004 UTC (19 years, 7 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.4: +30 -27 lines
Diff to previous 1.4 (colored) to selected 1.85 (colored)

Sync with HEAD

Revision 1.13 / (download) - annotate - [select for diffs], Thu Mar 25 18:33:17 2004 UTC (20 years ago) by drochner
Branch: MAIN
CVS Tags: yamt-km-base4, yamt-km-base3, yamt-km-base2, yamt-km-base, netbsd-3-base, netbsd-3-1-RELEASE, netbsd-3-1-RC4, netbsd-3-1-RC3, netbsd-3-1-RC2, netbsd-3-1-RC1, netbsd-3-1-1-RELEASE, netbsd-3-1, netbsd-3-0-RELEASE, netbsd-3-0-RC6, netbsd-3-0-RC5, netbsd-3-0-RC4, netbsd-3-0-RC3, netbsd-3-0-RC2, netbsd-3-0-RC1, netbsd-3-0-3-RELEASE, netbsd-3-0-2-RELEASE, netbsd-3-0-1-RELEASE, netbsd-3-0, netbsd-3, netbsd-2-base, netbsd-2-1-RELEASE, netbsd-2-1-RC6, netbsd-2-1-RC5, netbsd-2-1-RC4, netbsd-2-1-RC3, netbsd-2-1-RC2, netbsd-2-1-RC1, netbsd-2-1, netbsd-2-0-base, netbsd-2-0-RELEASE, netbsd-2-0-RC5, netbsd-2-0-RC4, netbsd-2-0-RC3, netbsd-2-0-RC2, netbsd-2-0-RC1, netbsd-2-0-3-RELEASE, netbsd-2-0-2-RELEASE, netbsd-2-0-1-RELEASE, netbsd-2-0, netbsd-2, kent-audio1-beforemerge, kent-audio1-base, kent-audio1
Branch point for: yamt-km, kent-audio2
Changes since 1.12: +1 -18 lines
Diff to previous 1.12 (colored) to selected 1.85 (colored)

Native code doesn't need sigcode. Never.
So replace it by a dummy setting sigcode=esigcode=0, just to get
COMPAT_16+COMPAT_NETBSD32 kernels linking.

Revision 1.12 / (download) - annotate - [select for diffs], Tue Mar 23 19:39:42 2004 UTC (20 years ago) by drochner
Branch: MAIN
Changes since 1.11: +14 -2 lines
Diff to previous 1.11 (colored) to selected 1.85 (colored)

put the old and the very old syscall glue into appropriate
COMPAT_ conditionals

Revision 1.11 / (download) - annotate - [select for diffs], Mon Mar 1 12:10:41 2004 UTC (20 years, 1 month ago) by drochner
Branch: MAIN
Changes since 1.10: +4 -2 lines
Diff to previous 1.10 (colored) to selected 1.85 (colored)

on (fast) syscall exit, force %ds to its standard value --
it might have been modified by a netbsd32 process

Revision 1.10 / (download) - annotate - [select for diffs], Thu Feb 19 17:18:38 2004 UTC (20 years, 1 month ago) by drochner
Branch: MAIN
Changes since 1.9: +6 -1 lines
Diff to previous 1.9 (colored) to selected 1.85 (colored)

use no-execute page permissions if supported

Revision 1.9 / (download) - annotate - [select for diffs], Sun Nov 30 23:58:51 2003 UTC (20 years, 4 months ago) by fvdl
Branch: MAIN
Changes since 1.8: +2 -1 lines
Diff to previous 1.8 (colored) to selected 1.85 (colored)

Reenable interrupts sooner in the idle_exit case.

Revision 1.8 / (download) - annotate - [select for diffs], Mon Nov 10 08:51:51 2003 UTC (20 years, 4 months ago) by wiz
Branch: MAIN
Changes since 1.7: +2 -2 lines
Diff to previous 1.7 (colored) to selected 1.85 (colored)

Spell address with two d's. Inspired by similar changes in OpenBSD,
originating from Jonathon Gray and forwarded by jmc@openbsd.

Revision 1.7 / (download) - annotate - [select for diffs], Tue Nov 4 10:33:15 2003 UTC (20 years, 4 months ago) by dsl
Branch: MAIN
Changes since 1.6: +2 -2 lines
Diff to previous 1.6 (colored) to selected 1.85 (colored)

Remove p_nras from struct proc - use LIST_EMPTY(&p->p_raslist) instead.
Remove p_raslock and rename p_lwplock p_lock (one lock is enough).
Simplify window test when adding a ras and correct test on VM_MAXUSER_ADDRESS.
Avoid unpredictable branch in i386 locore.S
(pad fields left in struct proc to avoid kernel bump)

Revision 1.6 / (download) - annotate - [select for diffs], Wed Aug 20 21:48:47 2003 UTC (20 years, 7 months ago) by fvdl
Branch: MAIN
Changes since 1.5: +5 -1 lines
Diff to previous 1.5 (colored) to selected 1.85 (colored)

Pass pointers to frames from assembly, do not use the 'frame on stack
as argument passed by value' trick, as gcc 3.3.x makes (valid) assumptions
about the stack that will not be true. Costs 2 instructions per trap/syscall
on i386, 4 per interrupt for MP. One instruction per trap/syscall on amd64,
2 per interrupt for MP. I expect gcc 3.3.1 to make up for this by better
optimization (it'd better..)

While here, make amd64 compile again by using subr_mbr_disk.c

Revision 1.5 / (download) - annotate - [select for diffs], Thu Aug 7 16:26:35 2003 UTC (20 years, 7 months ago) by agc
Branch: MAIN
Changes since 1.4: +2 -6 lines
Diff to previous 1.4 (colored) to selected 1.85 (colored)

Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.

Revision 1.4 / (download) - annotate - [select for diffs], Tue May 13 09:35:16 2003 UTC (20 years, 10 months ago) by fvdl
Branch: MAIN
Branch point for: ktrace-lwp
Changes since 1.3: +3 -3 lines
Diff to previous 1.3 (colored) to selected 1.85 (colored)

While the previous change actually made the code do what it intended,
it was still wrong. cpu_switch() must return 1 when it switched to
a different LWP, 0 if it didn't. It was doing exactly the reverse.

Revision 1.3 / (download) - annotate - [select for diffs], Tue May 13 08:33:58 2003 UTC (20 years, 10 months ago) by fvdl
Branch: MAIN
Changes since 1.2: +6 -4 lines
Diff to previous 1.2 (colored) to selected 1.85 (colored)

Return the correct value in cpu_switch; from Stephan Uphoff for i386.

Revision 1.2 / (download) - annotate - [select for diffs], Sat Apr 26 19:34:45 2003 UTC (20 years, 11 months ago) by fvdl
Branch: MAIN
Changes since 1.1: +3 -2 lines
Diff to previous 1.1 (colored) to selected 1.85 (colored)

Skip sym space if ksyms or LKMs are included, too.

Revision 1.1 / (download) - annotate - [select for diffs], Sat Apr 26 18:39:29 2003 UTC (20 years, 11 months ago) by fvdl
Branch: MAIN
Diff to selected 1.85 (colored)

Rename the x86_64 port to amd64, as this is the actual name used for
the processor family now. x86_64 is kept as the MACHINE_ARCH value,
since it's already widely used (by e.g. the toolchain, etc), and
by other operating systems.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>