The NetBSD Project

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

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

Request diff between arbitrary revisions


Default branch: MAIN
Current tag: MAIN


Revision 1.197 / (download) - annotate - [select for diffs], Mon Oct 16 17:29:31 2023 UTC (5 months ago) by bouyer
Branch: MAIN
CVS Tags: triaxx-drm, thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, HEAD
Changes since 1.196: +3 -3 lines
Diff to previous 1.196 (colored) to selected 1.51 (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.196 / (download) - annotate - [select for diffs], Sun Jul 16 19:55:43 2023 UTC (8 months ago) by riastradh
Branch: MAIN
Changes since 1.195: +27 -2 lines
Diff to previous 1.195 (colored) to selected 1.51 (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.195 / (download) - annotate - [select for diffs], Sun May 14 09:05:38 2023 UTC (10 months ago) by riastradh
Branch: MAIN
Changes since 1.194: +13 -13 lines
Diff to previous 1.194 (colored) to selected 1.51 (colored)

x86/locore.S: Nix trailing whitespace.

Revision 1.194 / (download) - annotate - [select for diffs], Fri Mar 3 14:32:27 2023 UTC (12 months, 2 weeks ago) by riastradh
Branch: MAIN
Changes since 1.193: +3 -18 lines
Diff to previous 1.193 (colored) to selected 1.51 (colored)

Revert "x86: Add kthread_fpu_enter/exit support, take two -- forgot i386 bits."

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

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

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

No functional change intended.

PR kern/57240

Revision 1.192 / (download) - annotate - [select for diffs], Sat Feb 25 18:35:54 2023 UTC (12 months, 3 weeks ago) by riastradh
Branch: MAIN
Changes since 1.191: +18 -3 lines
Diff to previous 1.191 (colored) to selected 1.51 (colored)

x86: Add kthread_fpu_enter/exit support, take two -- forgot i386 bits.

Revision 1.191 / (download) - annotate - [select for diffs], Fri Feb 3 09:21:58 2023 UTC (13 months, 2 weeks ago) by mlelstv
Branch: MAIN
Changes since 1.190: +3 -3 lines
Diff to previous 1.190 (colored) to selected 1.51 (colored)

Make multiboot1 continue with common boot code and not skip CPU type
detection.

Fixes PR 57017 and PR 56935.

Revision 1.190 / (download) - annotate - [select for diffs], Wed Sep 7 00:40:18 2022 UTC (18 months, 1 week 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.189: +6 -6 lines
Diff to previous 1.189 (colored) to selected 1.51 (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.189 / (download) - annotate - [select for diffs], Sun Jun 12 11:36:42 2022 UTC (21 months, 1 week ago) by bouyer
Branch: MAIN
Changes since 1.188: +11 -2 lines
Diff to previous 1.188 (colored) to selected 1.51 (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.188 / (download) - annotate - [select for diffs], Tue May 31 18:04:11 2022 UTC (21 months, 2 weeks ago) by bouyer
Branch: MAIN
Changes since 1.187: +3 -2 lines
Diff to previous 1.187 (colored) to selected 1.51 (colored)

For some reason on my system, the guest starts with a pending event in
the shared structure. On i386, this cause hypervisor_callback to be
entered before cpu_info_primary is fully initialised, especially on i386
ci_intrstack is still NULL, which cause a crash when we try to use it.
Work around by recycling the boot's tmp stack for this until cpu_attach()
is called.

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

s/annouce/announce/ in comment.

Revision 1.186 / (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.185: +3 -3 lines
Diff to previous 1.185 (colored) to selected 1.51 (colored)

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

Revision 1.185 / (download) - annotate - [select for diffs], Wed May 27 19:33:40 2020 UTC (3 years, 9 months ago) by ad
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.184: +2 -39 lines
Diff to previous 1.184 (colored) to selected 1.51 (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.184 / (download) - annotate - [select for diffs], Tue May 5 09:07:35 2020 UTC (3 years, 10 months ago) by bouyer
Branch: MAIN
Changes since 1.183: +4 -4 lines
Diff to previous 1.183 (colored) to selected 1.51 (colored)

build start_xenpvh only if XEN. Fixes NET4501 build issue reported by
John D. Baker

Revision 1.183 / (download) - annotate - [select for diffs], Sat May 2 18:49:57 2020 UTC (3 years, 10 months ago) by bouyer
Branch: MAIN
Changes since 1.182: +4 -4 lines
Diff to previous 1.182 (colored) to selected 1.51 (colored)

HANDLE_DEFERRED_FPU has to be donne with interrupt disabled;
move it before STIC.
Fix fpudna panic on i386 PV

Revision 1.182 / (download) - annotate - [select for diffs], Sat May 2 16:44:35 2020 UTC (3 years, 10 months ago) by bouyer
Branch: MAIN
Changes since 1.181: +111 -29 lines
Diff to previous 1.181 (colored) to selected 1.51 (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.181 / (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.180: +23 -2 lines
Diff to previous 1.180 (colored) to selected 1.51 (colored)

Switch to templates.

Revision 1.180 / (download) - annotate - [select for diffs], Sat Apr 25 15:26:17 2020 UTC (3 years, 10 months ago) by bouyer
Branch: MAIN
Changes since 1.179: +10 -8 lines
Diff to previous 1.179 (colored) to selected 1.51 (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.179 / (download) - annotate - [select for diffs], Fri Mar 27 21:05:03 2020 UTC (3 years, 11 months ago) by ad
Branch: MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base
Branch point for: bouyer-xenpvh
Changes since 1.178: +2 -17 lines
Diff to previous 1.178 (colored) to selected 1.51 (colored)

PR kern/55114: Install fails with "cpu_switchto: switching above IPL_SCHED (8)"

cpu_switch(): Remove stuff dealing with interrupt levels.  From memory it
was something to do with TLB shootdown interrupts but they have long been
outside the SPL framework.

Revision 1.178 / (download) - annotate - [select for diffs], Mon Feb 10 22:13:50 2020 UTC (4 years, 1 month ago) by skrll
Branch: MAIN
CVS Tags: is-mlppp-base, is-mlppp, ad-namecache-base3
Changes since 1.177: +4 -4 lines
Diff to previous 1.177 (colored) to selected 1.51 (colored)

Fix a comment

Revision 1.177 / (download) - annotate - [select for diffs], Wed Jan 15 18:47:23 2020 UTC (4 years, 2 months ago) by ad
Branch: MAIN
CVS Tags: ad-namecache-base2, ad-namecache-base1
Changes since 1.176: +2 -6 lines
Diff to previous 1.176 (colored) to selected 1.51 (colored)

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

Revision 1.176 / (download) - annotate - [select for diffs], Mon Jan 13 12:03:41 2020 UTC (4 years, 2 months ago) by ad
Branch: MAIN
Changes since 1.175: +6 -2 lines
Diff to previous 1.175 (colored) to selected 1.51 (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.175 / (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.174: +2 -6 lines
Diff to previous 1.174 (colored) to selected 1.51 (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.174 / (download) - annotate - [select for diffs], Thu Nov 21 19:27:54 2019 UTC (4 years, 3 months ago) by ad
Branch: MAIN
CVS Tags: ad-namecache-base
Branch point for: ad-namecache
Changes since 1.173: +3 -3 lines
Diff to previous 1.173 (colored) to selected 1.51 (colored)

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

Revision 1.173 / (download) - annotate - [select for diffs], Fri Oct 18 01:38:28 2019 UTC (4 years, 5 months ago) by manu
Branch: MAIN
CVS Tags: phil-wifi-20191119
Changes since 1.172: +227 -6 lines
Diff to previous 1.172 (colored) to selected 1.51 (colored)

Multiboot2 kernel support for i386

That implementation works either with BIOS or UEFI bootstrap

This requires the following kernel changes:

Add UEFI boot services and I/O method protoypes
src/sys/arch/x86/include/efi.h 1.8 - 1.9

Fix EFI system table mapping in virtual space
src/sys/arch/x86/x86/efi.c 1.19 - 1.20

Make sure no bioscall is issued when booting off UEFI system
src/sys/arch/i386/i386/machdep.c 1.821 - 1.822
src/sys/arch/i386/pci/piixpcib.c 1.22 - 1.23

And the following bootstrap changes:

Add kernel symbols for multiboot1
src/sys/arch/i386/stand/lib/exec_multiboot1.c 1.2 - 1.3
src/sys/arch/i386/stand/lib/libi386.h 1.45 - 1.47

Fix kernel symbols for multiboot2
src/sys/arch/i386/stand/lib/exec_multiboot2.c 1.2 - 1.3

Revision 1.172 / (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.171: +6 -23 lines
Diff to previous 1.171 (colored) to selected 1.51 (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.171 / (download) - annotate - [select for diffs], Fri Oct 4 15:28:00 2019 UTC (4 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.170: +13 -6 lines
Diff to previous 1.170 (colored) to selected 1.51 (colored)

Misc reordering, to clarify and reduce the diff against amd64.

Revision 1.170 / (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.169: +3 -3 lines
Diff to previous 1.169 (colored) to selected 1.51 (colored)

Rename fpu_eagerswitch to fpu_switch, and add fpu_xstate_reload to
simplify.

Revision 1.169 / (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.168: +3 -6 lines
Diff to previous 1.168 (colored) to selected 1.51 (colored)

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

Revision 1.168 / (download) - annotate - [select for diffs], Sun May 19 08:17:02 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, netbsd-9
Changes since 1.167: +4 -4 lines
Diff to previous 1.167 (colored) to selected 1.51 (colored)

Misc changes in the x86 FPU code. Reduces a future diff. No real functional
change.

Revision 1.167 / (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.166: +2 -4 lines
Diff to previous 1.166 (colored) to selected 1.51 (colored)

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

Revision 1.166 / (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.165: +16 -16 lines
Diff to previous 1.165 (colored) to selected 1.51 (colored)

Start replacing the x86 PTE bits.

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

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

Revision 1.164 / (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.163: +22 -5 lines
Diff to previous 1.163 (colored) to selected 1.51 (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.163 / (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.162: +22 -20 lines
Diff to previous 1.162 (colored) to selected 1.51 (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.162 / (download) - annotate - [select for diffs], Wed Dec 26 06:37:31 2018 UTC (5 years, 2 months ago) by cherry
Branch: MAIN
CVS Tags: pgoyette-compat-20190127, pgoyette-compat-20190118
Changes since 1.161: +6 -6 lines
Diff to previous 1.161 (colored) to selected 1.51 (colored)

Missed a file during previous commit completing transition to
separate handler queues for i386.

This should fix the build (hopefully!)

Thanks to Robert Elz for pointing it out.

Revision 1.161 / (download) - annotate - [select for diffs], Wed Aug 1 13:35:01 2018 UTC (5 years, 7 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906
Changes since 1.160: +2 -6 lines
Diff to previous 1.160 (colored) to selected 1.51 (colored)

Xen is PAE, so remove ifdefs.

Revision 1.160 / (download) - annotate - [select for diffs], Thu Jul 26 09:29:08 2018 UTC (5 years, 7 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-0728
Changes since 1.159: +8 -2 lines
Diff to previous 1.159 (colored) to selected 1.51 (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.159 / (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.158: +6 -6 lines
Diff to previous 1.158 (colored) to selected 1.51 (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.158 / (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.157: +15 -15 lines
Diff to previous 1.157 (colored) to selected 1.51 (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 / (download) - annotate - [select for diffs], Thu Jun 14 17:58:22 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.156: +15 -2 lines
Diff to previous 1.156 (colored) to selected 1.51 (colored)

Eager FPU on i386.

Revision 1.156 / (download) - annotate - [select for diffs], Thu Jan 4 14:02:23 2018 UTC (6 years, 2 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-base, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315
Branch point for: pgoyette-compat
Changes since 1.155: +3 -3 lines
Diff to previous 1.155 (colored) to selected 1.51 (colored)

Declare IOMAP_VALIDOFF, not to use ci_tss pointers.

Revision 1.155 / (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.154: +10 -7 lines
Diff to previous 1.154 (colored) to selected 1.51 (colored)

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

Revision 1.154 / (download) - annotate - [select for diffs], Mon Oct 2 17:48:01 2017 UTC (6 years, 5 months ago) by bouyer
Branch: MAIN
CVS Tags: tls-maxphys-base-20171202
Changes since 1.153: +3 -2 lines
Diff to previous 1.153 (colored) to selected 1.51 (colored)

Fix (once again) Xen boot

Revision 1.153 / (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.152: +3 -2 lines
Diff to previous 1.152 (colored) to selected 1.51 (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.152 / (download) - annotate - [select for diffs], Sun Sep 17 09:59:23 2017 UTC (6 years, 6 months ago) by maxv
Branch: MAIN
Changes since 1.151: +19 -2 lines
Diff to previous 1.151 (colored) to selected 1.51 (colored)

Declare INTRFASTEXIT as a function, like amd64; will be expanded soon.

Revision 1.151 / (download) - annotate - [select for diffs], Sat Aug 12 07:21:57 2017 UTC (6 years, 7 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20170825
Changes since 1.150: +2 -3 lines
Diff to previous 1.150 (colored) to selected 1.51 (colored)

Remove vm86.

Pass 3.

Revision 1.150 / (download) - annotate - [select for diffs], Thu Aug 10 14:13:45 2017 UTC (6 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.149: +8 -6 lines
Diff to previous 1.149 (colored) to selected 1.51 (colored)

Switch to the temporary stack right away when booted via multiboot. GRUB
happens to give a correct stack, but it is not guaranteed by the spec. This
temporary stack will be reset later, which is fine.

Fixes PR/50245.

Revision 1.149 / (download) - annotate - [select for diffs], Sat Jul 29 12:34:34 2017 UTC (6 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.148: +2 -20 lines
Diff to previous 1.148 (colored) to selected 1.51 (colored)

Remove undocumented hack.

Revision 1.148 / (download) - annotate - [select for diffs], Sat Jul 29 11:54:14 2017 UTC (6 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.147: +2 -35 lines
Diff to previous 1.147 (colored) to selected 1.51 (colored)

Drop support for svr4 on i386. This feature is not maintained, not
reliable, and of a limited use case. Most svr4 applications got time to be
ported to linux, and we do have a functional, maintained linux emulation.

Reduces the number of entry points into the kernel, the number of
places that need special care (cpu context).

Note that compat_svr4 is still available on sparc.

Revision 1.147 / (download) - annotate - [select for diffs], Sat Jul 29 06:29:31 2017 UTC (6 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.146: +2 -3 lines
Diff to previous 1.146 (colored) to selected 1.51 (colored)

Remove the remaining parts of compat_oldboot.

Revision 1.146 / (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.145: +2 -20 lines
Diff to previous 1.145 (colored) to selected 1.51 (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.145 / (download) - annotate - [select for diffs], Thu Feb 2 19:12:09 2017 UTC (7 years, 1 month ago) by maxv
Branch: MAIN
CVS Tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-20170426, pgoyette-localcount-20170320, nick-nhusb-base-20170204, netbsd-8-base, jdolecek-ncq-base, jdolecek-ncq, bouyer-socketcan-base1
Branch point for: netbsd-8
Changes since 1.144: +3 -3 lines
Diff to previous 1.144 (colored) to selected 1.51 (colored)

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

Revision 1.144 / (download) - annotate - [select for diffs], Fri Jan 6 08:36:56 2017 UTC (7 years, 2 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-localcount-20170107, bouyer-socketcan-base
Branch point for: bouyer-socketcan
Changes since 1.143: +5 -4 lines
Diff to previous 1.143 (colored) to selected 1.51 (colored)

Explain the computation

Revision 1.143 / (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.142: +4 -4 lines
Diff to previous 1.142 (colored) to selected 1.51 (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.142 / (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.141: +3 -3 lines
Diff to previous 1.141 (colored) to selected 1.51 (colored)

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

Revision 1.141 / (download) - annotate - [select for diffs], Fri Nov 25 14:12:55 2016 UTC (7 years, 3 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20161204
Changes since 1.140: +2 -12 lines
Diff to previous 1.140 (colored) to selected 1.51 (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.140 / (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.139: +2 -2 lines
Diff to previous 1.139 (colored) to selected 1.51 (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.139 / (download) - annotate - [select for diffs], Fri Nov 11 11:00:38 2016 UTC (7 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.138: +26 -21 lines
Diff to previous 1.138 (colored) to selected 1.51 (colored)

KNF and simplify Xen, and reduce the diff with amd64 a little

Revision 1.138 / (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.137: +3 -14 lines
Diff to previous 1.137 (colored) to selected 1.51 (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.137 / (download) - annotate - [select for diffs], Mon Jul 25 16:03:38 2016 UTC (7 years, 7 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-localcount-20160806, pgoyette-localcount-20160726, nick-nhusb-base-20161004, localcount-20160914
Changes since 1.136: +2 -16 lines
Diff to previous 1.136 (colored) to selected 1.51 (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.136 / (download) - annotate - [select for diffs], Mon Jul 25 15:18:41 2016 UTC (7 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.135: +2 -6 lines
Diff to previous 1.135 (colored) to selected 1.51 (colored)

This needs to be page-aligned anyway.

Revision 1.135 / (download) - annotate - [select for diffs], Sat Jul 9 06:58:06 2016 UTC (7 years, 8 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-localcount-base, nick-nhusb-base-20160907
Branch point for: pgoyette-localcount
Changes since 1.134: +4 -4 lines
Diff to previous 1.134 (colored) to selected 1.51 (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.134 / (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.133: +4 -4 lines
Diff to previous 1.133 (colored) to selected 1.51 (colored)

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

Revision 1.133 / (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.132: +15 -16 lines
Diff to previous 1.132 (colored) to selected 1.51 (colored)

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

Revision 1.132 / (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.131: +27 -23 lines
Diff to previous 1.131 (colored) to selected 1.51 (colored)

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

Revision 1.131 / (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.130: +2 -2 lines
Diff to previous 1.130 (colored) to selected 1.51 (colored)

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

Revision 1.130 / (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.129: +8 -6 lines
Diff to previous 1.129 (colored) to selected 1.51 (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.129 / (download) - annotate - [select for diffs], Sat Jun 4 10:02:12 2016 UTC (7 years, 9 months ago) by maxv
Branch: MAIN
Changes since 1.128: +18 -7 lines
Diff to previous 1.128 (colored) to selected 1.51 (colored)

Define and use fillkpt_blank on i386, like amd64. The PAE case is
included in fillkpt_blank, since PDE_SIZE is either 4 or 8 bytes.

Revision 1.128 / (download) - annotate - [select for diffs], Sat Jun 4 09:52:41 2016 UTC (7 years, 9 months ago) by maxv
Branch: MAIN
Changes since 1.127: +1 -3 lines
Diff to previous 1.127 (colored) to selected 1.51 (colored)

Initialize cpuid_level at compile-time, not run-time. Same as amd64.

Revision 1.127 / (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.126: +49 -45 lines
Diff to previous 1.126 (colored) to selected 1.51 (colored)

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

Revision 1.126 / (download) - annotate - [select for diffs], Sun May 29 09:16:12 2016 UTC (7 years, 9 months ago) by maxv
Branch: MAIN
Changes since 1.125: +4 -3 lines
Diff to previous 1.125 (colored) to selected 1.51 (colored)

Define tablesize. Useful when debugging.

Revision 1.125 / (download) - annotate - [select for diffs], Thu May 26 07:24:55 2016 UTC (7 years, 9 months ago) by maxv
Branch: MAIN
CVS Tags: nick-nhusb-base-20160529
Changes since 1.124: +10 -4 lines
Diff to previous 1.124 (colored) to selected 1.51 (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.124 / (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.123: +9 -10 lines
Diff to previous 1.123 (colored) to selected 1.51 (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.123 / (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.122: +6 -4 lines
Diff to previous 1.122 (colored) to selected 1.51 (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.122 / (download) - annotate - [select for diffs], Sat May 14 09:51:56 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.121: +12 -12 lines
Diff to previous 1.121 (colored) to selected 1.51 (colored)

Actually, put the NOX identification above. Old CPUs do not support the
cpuid instruction.

Revision 1.121 / (download) - annotate - [select for diffs], Sat May 14 08:49:16 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.120: +31 -11 lines
Diff to previous 1.120 (colored) to selected 1.51 (colored)

Map rodata and data+bss independently, and give them R and RW with
fillkpt_nox. The code is exactly the same as amd64's.

Revision 1.120 / (download) - annotate - [select for diffs], Sat May 14 08:39:41 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.119: +13 -0 lines
Diff to previous 1.119 (colored) to selected 1.51 (colored)

Define fillkpt_nox on i386, same as amd64.

But there is a difference in the way it is done here. If PAE is not enabled,
PDE_SIZE = 4, so there is no NOX bit set. If PAE is enabled, PDE_SIZE = 8,
so the NOX bit is set.

This works exactly as intended, since NOX does not exist in the non-PAE
case.

Revision 1.119 / (download) - annotate - [select for diffs], Sat May 14 08:34:00 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.118: +34 -3 lines
Diff to previous 1.118 (colored) to selected 1.51 (colored)

Fix the secondary CPUs bug in i386. Same as amd64.

Revision 1.118 / (download) - annotate - [select for diffs], Sat May 14 06:49:34 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.117: +15 -7 lines
Diff to previous 1.117 (colored) to selected 1.51 (colored)

Define killkpt, and don't use _RELOC. Same as amd64.

Revision 1.117 / (download) - annotate - [select for diffs], Fri May 13 14:03:00 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.116: +73 -49 lines
Diff to previous 1.116 (colored) to selected 1.51 (colored)

Bring some amd64 swag. No functional changes.

Revision 1.116 / (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.115: +4 -4 lines
Diff to previous 1.115 (colored) to selected 1.51 (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.115 / (download) - annotate - [select for diffs], Wed May 11 17:48:05 2016 UTC (7 years, 10 months ago) by maxv
Branch: MAIN
Changes since 1.114: +140 -135 lines
Diff to previous 1.114 (colored) to selected 1.51 (colored)

Switch to C-style comments, and reduce a little the diff between i386 and
amd64. No functional changes.

Revision 1.114 / (download) - annotate - [select for diffs], Sun Aug 30 01:46:03 2015 UTC (8 years, 6 months ago) by uebayasi
Branch: MAIN
CVS Tags: nick-nhusb-base-20160422, nick-nhusb-base-20160319, nick-nhusb-base-20151226, nick-nhusb-base-20150921
Changes since 1.113: +5 -4 lines
Diff to previous 1.113 (colored) to selected 1.51 (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.113 / (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.112: +4 -4 lines
Diff to previous 1.112 (colored) to selected 1.51 (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.112 / (download) - annotate - [select for diffs], Thu Feb 20 18:19:10 2014 UTC (10 years ago) by dsl
Branch: MAIN
CVS Tags: yamt-pagecache-base9, tls-maxphys-base, tls-earlyentropy-base, tls-earlyentropy, rmind-smpnet-nbase, rmind-smpnet-base, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, 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.111: +5 -5 lines
Diff to previous 1.111 (colored) to selected 1.51 (colored)

Move the amd64 and i386 pcb to the bottom of the uarea, and move the
  kernel stack to the top.
Change the pcb layouts so that fpu save area is at the end and is
  64byte aligned ready for xsave (saving the ymm registers).
Welcome to 6.99.32

Revision 1.111 / (download) - annotate - [select for diffs], Sun Feb 2 22:41:20 2014 UTC (10 years, 1 month ago) by dsl
Branch: MAIN
Changes since 1.110: +4 -4 lines
Diff to previous 1.110 (colored) to selected 1.51 (colored)

Minor fpu initialisation cleanups:
Set default CR) so that the FPU is enabled (unset CR0_EM) and initialise
  i386_fpu_present to 1.
No need to call the npx trap indirectly, rename to fpunda() to match amd64.
Remove the i386_fpu_exception variable and sysctl (It used to indicate
  which irq was used for fpu exceptions, but we only support 'internal'
  now).  Hopefully no one cares.
fpuinit() now only needs to clear TS before the fninit(). Apart from the
  checks for 486SX and the 'fdiv bug' this matches the amd64 version.
Exclude fpuinit() from XEN kernels, they don't call it - which rather begs
  the question as to whether it is needed at all!

Revision 1.110 / (download) - annotate - [select for diffs], Sun Jan 26 19:16:17 2014 UTC (10 years, 1 month ago) by dsl
Branch: MAIN
Changes since 1.109: +4 -37 lines
Diff to previous 1.109 (colored) to selected 1.51 (colored)

Remove support for 'external' floating point units and the MS-DOS
  compatible method of handling floating point exceptions.
Make kernel support for teh fpu non-optional (486SX should still work).
Only 386 cpus support external fpu, and i386 support was removed years ago.
This means that the npx code no longer uses port 0xf0 or interupt 13.
All the "npx at isa" lines go from the configs, arch/i386/isa/npx.c
  is now mandatory for all i386 kernels.
I've renamed npxinit() to fpuinit() and npxinit_cpu() to fpuinit_cpu()
  to match the very similar amd64 functions.
The fpu of the boot cpu is now initialised by a direct call from
  cpu_configure(), this enables FP emulation for a 486SX.
  (for amd64 the cr0 values are set in locore.S and similar).
This fixes a long-standing bug in linux_setregs() - which did not
  save the fpu regsiters if they were active.
I've test booted a single cpu i386 kernel (using anita).
amd64 builds - none of teh changes should affect it.
The i386 XEN kernels build, but I'm not sure where they set cr0, and
  it might have got lost!

Revision 1.109 / (download) - annotate - [select for diffs], Sat Jan 11 17:05:17 2014 UTC (10 years, 2 months ago) by christos
Branch: MAIN
Changes since 1.108: +5 -4 lines
Diff to previous 1.108 (colored) to selected 1.51 (colored)

fix a comment (cpu_switch() -> cpu_switchto()) (Richard Hansen)

Revision 1.108 / (download) - annotate - [select for diffs], Sun Dec 1 01:05:16 2013 UTC (10 years, 3 months ago) by christos
Branch: MAIN
Changes since 1.107: +11 -2 lines
Diff to previous 1.107 (colored) to selected 1.51 (colored)

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

Revision 1.107 / (download) - annotate - [select for diffs], Wed Oct 23 20:18:50 2013 UTC (10 years, 4 months ago) by drochner
Branch: MAIN
Changes since 1.106: +4 -13 lines
Diff to previous 1.106 (colored) to selected 1.51 (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.106 / (download) - annotate - [select for diffs], Sun Jun 23 09:00:36 2013 UTC (10 years, 8 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.105: +19 -19 lines
Diff to previous 1.105 (colored) to selected 1.51 (colored)

Whitespace, comment, NBPG -> PAGE_SIZE.

Revision 1.105 / (download) - annotate - [select for diffs], Sun Jun 23 03:16:46 2013 UTC (10 years, 8 months ago) by uebayasi
Branch: MAIN
Changes since 1.104: +43 -43 lines
Diff to previous 1.104 (colored) to selected 1.51 (colored)

Whitespace.

Revision 1.104 / (download) - annotate - [select for diffs], Sat Jun 22 15:13:55 2013 UTC (10 years, 8 months ago) by uebayasi
Branch: MAIN
Changes since 1.103: +52 -27 lines
Diff to previous 1.103 (colored) to selected 1.51 (colored)

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

Revision 1.103 / (download) - annotate - [select for diffs], Fri Oct 26 14:46:44 2012 UTC (11 years, 4 months ago) by chs
Branch: MAIN
CVS Tags: yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, khorben-n900, agc-symver-base, agc-symver
Changes since 1.102: +3 -3 lines
Diff to previous 1.102 (colored) to selected 1.51 (colored)

in osyscall, set the PSL_I bit into the correct field of the trapframe.
it was going into tf_eip instead of tf_eflags, which would sometimes
corrupt %eip and always return to user mode with interrupts disabled.
this was found with a netbsd 1.0 binary, and dsl@ points out that
this should also fix PR 41342.

Revision 1.102 / (download) - annotate - [select for diffs], Sat Sep 1 23:19:46 2012 UTC (11 years, 6 months ago) by cherry
Branch: MAIN
Branch point for: tls-maxphys
Changes since 1.101: +3 -3 lines
Diff to previous 1.101 (colored) to selected 1.51 (colored)

Restrict export of the tmpgdt symbol to XEN kernels

Spotted by uwe@

Revision 1.101 / (download) - annotate - [select for diffs], Wed Jun 27 00:37:08 2012 UTC (11 years, 8 months ago) by jym
Branch: MAIN
Changes since 1.100: +4 -11 lines
Diff to previous 1.100 (colored) to selected 1.51 (colored)

Retire XEN_COMPAT_030001 as detailed on port-xen@:

http://mail-index.netbsd.org/port-xen/2012/06/25/msg007431.html

The xen_p2m API comes next.

ok bouyer@.
Tested on i386 PAE and amd64 (Xen 3.3 on private test bed, and
Xen 3.4 for Amazon EC2).

FWIW, Amazon always reported:

hypervisor0 at mainbus0: Xen version 3.4.3-kaos_t1micro

multiple times for Europe and US West-1, so I guess they are now at
3.4 (32 and 64 bits).

Revision 1.100 / (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.99: +9 -9 lines
Diff to previous 1.99 (colored) to selected 1.51 (colored)

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

Revision 1.99 / (download) - annotate - [select for diffs], Thu Apr 19 18:07:05 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.98: +3 -3 lines
Diff to previous 1.98 (colored) to selected 1.51 (colored)

Mirror what is done for amd64 boot and ACPI wakeup code by setting
CR0_WP (write protection bit) early on boot. Although it is set later via
cpu_init(), this can help tracking down invalid writes to pages mapped
as read only from ring 0.

No regression observed when booting under anita (QEMU) or a P4 host.

Depending on your hardware or setup, you may trigger code paths I have
overlooked. So if your machine does not start properly, or you get
page faults early during boot, please report them to me.

Revision 1.98 / (download) - annotate - [select for diffs], Thu Apr 19 18:00:35 2012 UTC (11 years, 11 months ago) by jym
Branch: MAIN
Changes since 1.97: +3 -3 lines
Diff to previous 1.97 (colored) to selected 1.51 (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.97 / (download) - annotate - [select for diffs], Fri Mar 2 16:43:31 2012 UTC (12 years ago) by bouyer
Branch: MAIN
CVS Tags: yamt-pagecache-base4, jmcneill-usbmp-base8, jmcneill-usbmp-base7, jmcneill-usbmp-base6, jmcneill-usbmp-base4
Changes since 1.96: +12 -6 lines
Diff to previous 1.96 (colored) to selected 1.51 (colored)

Follow locore.S and move FPU handling from x86_64_switch_context() to
x86_64_tls_switch(); raise IPL to IPL_HIGH in x86_64_switch_context()
and test ci_fpcurlwp to decide to disable FPU or not.
Change the Xen i386 context switch code to be like the amd64 one.

Revision 1.96 / (download) - annotate - [select for diffs], Fri Feb 24 08:06:07 2012 UTC (12 years ago) by cherry
Branch: MAIN
CVS Tags: jmcneill-usbmp-base5
Changes since 1.95: +17 -3 lines
Diff to previous 1.95 (colored) to selected 1.51 (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.95 / (download) - annotate - [select for diffs], Fri Mar 18 15:18:16 2011 UTC (13 years ago) by joerg
Branch: MAIN
CVS Tags: yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, rmind-uvmplock-nbase, rmind-uvmplock-base, netbsd-6-base, jym-xensuspend-nbase, jym-xensuspend-base, jmcneill-usbmp-pre-base2, jmcneill-usbmp-base3, jmcneill-usbmp-base2, jmcneill-usbmp-base, jmcneill-audiomp3-base, jmcneill-audiomp3, cherry-xenmp-base, cherry-xenmp
Branch point for: yamt-pagecache, netbsd-6, jmcneill-usbmp
Changes since 1.94: +3 -3 lines
Diff to previous 1.94 (colored) to selected 1.51 (colored)

Remove static branch prediction hints. They pessimize code for all CPUs
but Pentium IV. Discussed with ad@ and dsl@

Revision 1.94 / (download) - annotate - [select for diffs], Mon Dec 20 00:25:35 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.93: +4 -3 lines
Diff to previous 1.93 (colored) to selected 1.51 (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.93 / (download) - annotate - [select for diffs], Sat Jul 24 00:45:54 2010 UTC (13 years, 7 months ago) by jym
Branch: MAIN
CVS Tags: yamt-nfs-mp-base11, yamt-nfs-mp-base10, uebayasi-xip-base6, uebayasi-xip-base5, uebayasi-xip-base4, uebayasi-xip-base3, uebayasi-xip-base2
Changes since 1.92: +74 -32 lines
Diff to previous 1.92 (colored) to selected 1.51 (colored)

Welcome PAE inside i386 current.

This patch is inspired by work previously done by Jeremy Morse, ported by me
to -current, merged with the work previously done for port-xen, together with
additionals fixes and improvements.

PAE option is disabled by default in GENERIC (but will be enabled in ALL in
the next few days).

In quick, PAE switches the CPU to a mode where physical addresses become
36 bits (64 GiB). Virtual address space remains at 32 bits (4 GiB). To cope
with the increased size of the physical address, they are manipulated as
64 bits variables by kernel and MMU.

When supported by the CPU, it also allows the use of the NX/XD bit that
provides no-execution right enforcement on a per physical page basis.

Notes:

- reworked locore.S

- introduce cpu_load_pmap(), used to switch pmap for the curcpu. Due to the
different handling of pmap mappings with PAE vs !PAE, Xen vs native, details
are hidden within this function. This helps calling it from assembly,
as some features, like BIOS calls, switch to pmap_kernel before mapping
trampoline code in low memory.

- some changes in bioscall and kvm86_call, to reflect the above.

- the L3 is "pinned" per-CPU, and is only manipulated by a
reduced set of functions within pmap. To track the L3, I added two
elements to struct cpu_info, namely ci_l3_pdirpa (PA of the L3), and
ci_l3_pdir (the L3 VA). Rest of the code considers that it runs "just
like" a normal i386, except that the L2 is 4 pages long (PTP_LEVELS is
still 2).

- similar to the ci_pae_l3_pdir{,pa} variables, amd64's xen_current_user_pgd
becomes an element of cpu_info (slowly paving the way for MP world).

- bootinfo_source struct declaration is modified, to cope with paddr_t size
change with PAE (it is not correct to assume that bs_addr is a paddr_t when
compiled with PAE - it should remain 32 bits). bs_addrs is now a
void * array (in bootloader's code under i386/stand/, the bs_addrs
is a physaddr_t, which is an unsigned long).

- fixes in multiboot code (same reason as bootinfo): paddr_t size
change. I used Elf32_* types, use RELOC() where necessary, and move the
memcpy() functions out of the if/else if (I do not expect sym and str tables
to overlap with ELF).

- 64 bits atomic functions for pmap

- all pmap_pdirpa access are now done through the pmap_pdirpa macro. It
hides the L3/L2 stuff from PAE, as well as the pm_pdirpa change in
struct pmap (it now becomes a PDP_SIZE array, with or without PAE).

- manipulation of recursive mappings ( PDIR_SLOT_{,A}PTEs ) is done via
loops on PDP_SIZE.

See also http://mail-index.netbsd.org/port-i386/2010/07/17/msg002062.html

No objection raised on port-i386@ and port-xen@R for about a week.

XXX kvm(3) will be fixed in another patch to properly handle both PAE and !PAE
kernel dumps (VA => PA macros are slightly different, and need proper 64 bits
PA support in kvm_i386).

XXX Mixing PAE and !PAE modules may lead to unwanted/unexpected results. This
cannot be solved easily, and needs lots of thinking before being declared
safe (paddr_t/bus_addr_t size handling, PD/PT macros abstractions).

Revision 1.92 / (download) - annotate - [select for diffs], Thu Jul 15 18:55:27 2010 UTC (13 years, 8 months ago) by jym
Branch: MAIN
Changes since 1.91: +8 -6 lines
Diff to previous 1.91 (colored) to selected 1.51 (colored)

In Xen PAE case, fix argument size passed to init386(), by pushing the
upper bits onto stack (we do not expect first_avail to be above 4GiB, so
assume their value is 0).

Remove macros (PROC0PDIR and PROC0STACK) that were never used.

Revision 1.91 / (download) - annotate - [select for diffs], Fri Nov 27 03:23:10 2009 UTC (14 years, 3 months ago) by rmind
Branch: MAIN
CVS Tags: yamt-nfs-mp-base9, uebayasi-xip-base1, uebayasi-xip-base, matt-premerge-20091211
Branch point for: uebayasi-xip, rmind-uvmplock
Changes since 1.90: +8 -8 lines
Diff to previous 1.90 (colored) to selected 1.51 (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.90 / (download) - annotate - [select for diffs], Wed Nov 25 14:28:50 2009 UTC (14 years, 3 months ago) by rmind
Branch: MAIN
Changes since 1.89: +4 -4 lines
Diff to previous 1.89 (colored) to selected 1.51 (colored)

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

Revision 1.89 / (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.88: +2 -7 lines
Diff to previous 1.88 (colored) to selected 1.51 (colored)

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

Revision 1.88 / (download) - annotate - [select for diffs], Wed Jul 29 12:02:05 2009 UTC (14 years, 7 months ago) by cegger
Branch: MAIN
CVS Tags: yamt-nfs-mp-base8, yamt-nfs-mp-base7
Changes since 1.87: +4 -12 lines
Diff to previous 1.87 (colored) to selected 1.51 (colored)

remove Xen2 support.
ok bouyer@

Revision 1.87 / (download) - annotate - [select for diffs], Mon May 4 11:47:29 2009 UTC (14 years, 10 months ago) by ad
Branch: MAIN
CVS Tags: yamt-nfs-mp-base6, yamt-nfs-mp-base5, yamt-nfs-mp-base4, jymxensuspend-base
Changes since 1.86: +5 -2 lines
Diff to previous 1.86 (colored) to selected 1.51 (colored)

PR kern/41342: BSDi binaries cause panic

XXX Manuel, please have a look as I am not sure what to do for XEN here!

Revision 1.86 / (download) - annotate - [select for diffs], Sat Mar 21 22:55:08 2009 UTC (15 years ago) by ad
Branch: MAIN
CVS Tags: yamt-nfs-mp-base3, nick-hppapmap-base4, nick-hppapmap-base3, nick-hppapmap-base
Changes since 1.85: +3 -2 lines
Diff to previous 1.85 (colored) to selected 1.51 (colored)

Add 2 event counters:

"x86", "io bitmap copy"
"x86", "ldt sync"

Revision 1.85 / (download) - annotate - [select for diffs], Sat Mar 21 14:41:29 2009 UTC (15 years ago) by ad
Branch: MAIN
Changes since 1.84: +6 -2 lines
Diff to previous 1.84 (colored) to selected 1.51 (colored)

PR port-i386/40143 Viewing an mpeg transport stream with mplayer causes crash

Fix numerous problems:

1. LDT updates are not atomic.

2. Number of processes running with private LDTs and/or I/O bitmaps
   is not capped. System with high maxprocs can be paniced.

3. LDTR can be leaked over context switch.

4. GDT slot allocations can race, giving the same LDT slot to two procs.

5. Incomplete interrupt/trap frames can be stacked.

6. In some rare cases segment faults are not handled correctly.

Revision 1.84 / (download) - annotate - [select for diffs], Sun Mar 8 16:03:31 2009 UTC (15 years ago) by ad
Branch: MAIN
Changes since 1.83: +8 -8 lines
Diff to previous 1.83 (colored) to selected 1.51 (colored)

printf -> panic so MP panics work correctly

Revision 1.83 / (download) - annotate - [select for diffs], Fri Feb 13 22:41:02 2009 UTC (15 years, 1 month ago) by apb
Branch: MAIN
CVS Tags: nick-hppapmap-base2
Changes since 1.82: +3 -2 lines
Diff to previous 1.82 (colored) to selected 1.51 (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.82 / (download) - annotate - [select for diffs], Wed Dec 3 11:40:17 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.81: +3 -3 lines
Diff to previous 1.81 (colored) to selected 1.51 (colored)

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

Revision 1.81 / (download) - annotate - [select for diffs], Wed Nov 19 18:35:58 2008 UTC (15 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.80: +34 -2 lines
Diff to previous 1.80 (colored) to selected 1.51 (colored)

Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime

Revision 1.80 / (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.79: +4 -4 lines
Diff to previous 1.79 (colored) to selected 1.51 (colored)

LKM -> MODULAR

Revision 1.79 / (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.78: +5 -6 lines
Diff to previous 1.78 (colored) to selected 1.51 (colored)

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

Fix race conditions in FPU IPI handling.

Revision 1.78 / (download) - annotate - [select for diffs], Sun Oct 19 14:12:28 2008 UTC (15 years, 5 months ago) by joerg
Branch: MAIN
CVS Tags: netbsd-5-base, matt-mips64-base2
Branch point for: nick-hppapmap, netbsd-5
Changes since 1.77: +3 -2 lines
Diff to previous 1.77 (colored) to selected 1.51 (colored)

Include opt_multiboot.h to allow the option to work.

Revision 1.77 / (download) - annotate - [select for diffs], Fri Jun 27 00:41:39 2008 UTC (15 years, 8 months ago) by gmcgarry
Branch: MAIN
CVS Tags: wrstuden-revivesa-base-4, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, simonb-wapbl-nbase, simonb-wapbl-base, haad-dm-base1
Branch point for: haad-dm
Changes since 1.76: +3 -3 lines
Diff to previous 1.76 (colored) to selected 1.51 (colored)

Replace lines beginning with assembler-style comments with c-style comments,
since '#' can be interpretted as a preprocessor directive.  Remove single
quote ''' from assembler-style comments, as the preprocessor may ignore
everything between them.

Fixes compilation with pcc.

Revision 1.76 / (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-1, wrstuden-revivesa-base
Branch point for: simonb-wapbl
Changes since 1.75: +13 -55 lines
Diff to previous 1.75 (colored) to selected 1.51 (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.75 / (download) - annotate - [select for diffs], Sun Jun 1 18:37:12 2008 UTC (15 years, 9 months ago) by ad
Branch: MAIN
Changes since 1.74: +33 -18 lines
Diff to previous 1.74 (colored) to selected 1.51 (colored)

- sse2_zero_page: do 64-bytes (1 cache line) at a time.
- sse2_copy_page: increase from 16 to 32 bytes per loop.

Revision 1.74 / (download) - annotate - [select for diffs], Sun Jun 1 15:54:02 2008 UTC (15 years, 9 months ago) by christos
Branch: MAIN
Changes since 1.73: +5 -4 lines
Diff to previous 1.73 (colored) to selected 1.51 (colored)

fix typo and add level to the printf.

Revision 1.73 / (download) - annotate - [select for diffs], Sun May 11 14:44:54 2008 UTC (15 years, 10 months ago) by ad
Branch: MAIN
CVS Tags: yamt-pf42-base2, yamt-nfs-mp-base2, hpcarm-cleanup-nbase
Changes since 1.72: +8 -6 lines
Diff to previous 1.72 (colored) to selected 1.51 (colored)

Simplify x86 identcpu code, and share between i386/amd64.

Revision 1.72 / (download) - annotate - [select for diffs], Sat May 3 05:56:44 2008 UTC (15 years, 10 months ago) by yamt
Branch: MAIN
Branch point for: wrstuden-revivesa
Changes since 1.71: +17 -2 lines
Diff to previous 1.71 (colored) to selected 1.51 (colored)

sprinkle END/IDTVEC_END.

Revision 1.71 / (download) - annotate - [select for diffs], Fri May 2 15:26:38 2008 UTC (15 years, 10 months ago) by ad
Branch: MAIN
Changes since 1.70: +14 -5 lines
Diff to previous 1.70 (colored) to selected 1.51 (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.70 / (download) - annotate - [select for diffs], Tue Apr 29 18:27:18 2008 UTC (15 years, 10 months ago) by ad
Branch: MAIN
Changes since 1.69: +12 -2 lines
Diff to previous 1.69 (colored) to selected 1.51 (colored)

cpu_switchto: if DIAGNOSTIC, assert not above IPL_SCHED.

Revision 1.69 / (download) - annotate - [select for diffs], Mon Apr 28 20:23:24 2008 UTC (15 years, 10 months ago) by martin
Branch: MAIN
Changes since 1.68: +2 -9 lines
Diff to previous 1.68 (colored) to selected 1.51 (colored)

Remove clause 3 and 4 from TNF licenses

Revision 1.68 / (download) - annotate - [select for diffs], Sun Apr 27 22:40:09 2008 UTC (15 years, 10 months ago) by ad
Branch: MAIN
Changes since 1.67: +23 -28 lines
Diff to previous 1.67 (colored) to selected 1.51 (colored)

- Make some entry/exit points preemption safe.
- Avoid mispredicted branches in Xsyscall.

Revision 1.67 / (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.66: +3 -2 lines
Diff to previous 1.66 (colored) to selected 1.51 (colored)

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

Revision 1.66 / (download) - annotate - [select for diffs], Wed Jan 23 19:46:44 2008 UTC (16 years, 1 month ago) by bouyer
Branch: MAIN
CVS Tags: nick-net80211-sync-base, nick-net80211-sync, mjf-devfs-base, hpcarm-cleanup-base
Branch point for: mjf-devfs2, keiichi-mipv6
Changes since 1.65: +5 -2 lines
Diff to previous 1.65 (colored) to selected 1.51 (colored)

Merge the bouyer-xeni386 branch. This brings in PAE support to NetBSD xeni386
(domU only). PAE support is enabled by 'options PAE', see the new XEN3PAE_DOMU
and INSTALL_XEN3PAE_DOMU kernel config files.

See the comments in arch/i386/include/{pte.h,pmap.h} to see how it works.
In short, we still handle it as a 2-level MMU, with the second level page
directory being 4 pages in size. pmap switching is done by switching the
L2 pages in the L3 entries, instead of loading %cr3. This is almost required
by Xen, which handle the last L2 page (the one mapping 0xc0000000 - 0xffffffff)
in a very special way. But this approach should also work for native PAE
support if ever supported (in fact, the pmap should almost suport native
PAE, what's missing is bootstrap code in locore.S).

Revision 1.65 / (download) - annotate - [select for diffs], Mon Jan 21 08:22:42 2008 UTC (16 years, 2 months ago) by skrll
Branch: MAIN
CVS Tags: bouyer-xeni386-nbase
Changes since 1.64: +14 -17 lines
Diff to previous 1.64 (colored) to selected 1.51 (colored)

Slightly better version of dumpsys from ad via simonb.

Revision 1.64 / (download) - annotate - [select for diffs], Sun Jan 20 12:43:00 2008 UTC (16 years, 2 months ago) by skrll
Branch: MAIN
CVS Tags: bouyer-xeni386-base
Changes since 1.63: +20 -2 lines
Diff to previous 1.63 (colored) to selected 1.51 (colored)

Do the dumpsys/dodumpsys thing on i386...

dumpsys() now mimics cpu_switchto() (pushes a switchframe onto the stack)
for postmortem debugging.

From simonb.

Revision 1.63 / (download) - annotate - [select for diffs], Sun Jan 13 11:03:04 2008 UTC (16 years, 2 months ago) by bouyer
Branch: MAIN
Changes since 1.62: +3 -3 lines
Diff to previous 1.62 (colored) to selected 1.51 (colored)

Revert tmpstk size to 512 bytes, it was bumped to 1024 by mistake when
bouyer-xeni386 was merged.

Revision 1.62 / (download) - annotate - [select for diffs], Fri Jan 11 20:00:14 2008 UTC (16 years, 2 months ago) by bouyer
Branch: MAIN
Changes since 1.61: +199 -10 lines
Diff to previous 1.61 (colored) to selected 1.51 (colored)

Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
  pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
  the build will find them via the xen-ma/machine link.

Revision 1.61 / (download) - annotate - [select for diffs], Thu Jan 10 20:14:11 2008 UTC (16 years, 2 months ago) by ad
Branch: MAIN
Changes since 1.60: +8 -4 lines
Diff to previous 1.60 (colored) to selected 1.51 (colored)

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

Revision 1.60 / (download) - annotate - [select for diffs], Fri Jan 4 15:55:32 2008 UTC (16 years, 2 months ago) by yamt
Branch: MAIN
CVS Tags: matt-armv6-base
Changes since 1.59: +28 -9 lines
Diff to previous 1.59 (colored) to selected 1.51 (colored)

i386:
	- make tss per-cpu.  this considerably speeds up context switch for,
	  at least, pentium4, where ltr instruction seems very slow.
i386, xen:
	- kill cpu_maxproc.
kvm86:
	- adapt to per-cpu tss.
	- cleanup and simplify.
	- move kvm86_mp_lock to more meaningful place.
	- disable preemption during a call.

Revision 1.59 / (download) - annotate - [select for diffs], Tue Dec 11 23:06:13 2007 UTC (16 years, 3 months ago) by lukem
Branch: MAIN
CVS Tags: yamt-kmem-base3, vmlocking2-base3
Changes since 1.58: +4 -2 lines
Diff to previous 1.58 (colored) to selected 1.51 (colored)

Use __KERNEL_RCSID().  For these .S files, the following style was
adopted, a la .C files and <sys/cdefs.h>:
  *  move <machine/asm.h> to the top
  *  use __KERNEL_RCSID() immediately after it

Revision 1.58 / (download) - annotate - [select for diffs], Mon Dec 3 19:06:36 2007 UTC (16 years, 3 months ago) by ad
Branch: MAIN
CVS Tags: yamt-kmem-base2, yamt-kmem-base, vmlocking2-base2, vmlocking2-base1, reinoud-bufcleanup-nbase, reinoud-bufcleanup-base, jmcneill-pm-base, cube-autoconf-base, cube-autoconf
Branch point for: yamt-kmem, vmlocking2, bouyer-xeni386
Changes since 1.57: +14 -9 lines
Diff to previous 1.57 (colored) to selected 1.51 (colored)

Merge from vmlocking.

Revision 1.57 / (download) - annotate - [select for diffs], Wed Nov 14 17:54:59 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
CVS Tags: vmlocking-nbase, bouyer-xenamd64-base2, bouyer-xenamd64-base
Changes since 1.56: +1 -2 lines
Diff to previous 1.56 (colored) to selected 1.51 (colored)

- Remove I486_CPU, I586_CPU, I686_CPU options. They buy us nothing and
  clutter the code significantly.
- Remove pccons.

Revision 1.56 / (download) - annotate - [select for diffs], Tue Nov 13 18:20:18 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.55: +6 -6 lines
Diff to previous 1.55 (colored) to selected 1.51 (colored)

Fix the fsbase/gsbase stuff to work in combination with RAS.
Still not working reliably on my AMD K7 for some reason.

Revision 1.55 / (download) - annotate - [select for diffs], Sat Nov 10 23:04:29 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.54: +5 -5 lines
Diff to previous 1.54 (colored) to selected 1.51 (colored)

fsbase/gsbase:

- Fix a few bugs with it, in particular fork/exec handling.
- Store the descriptors in the PCB, not in the LWP.

Revision 1.54 / (download) - annotate - [select for diffs], Sat Nov 10 20:06:24 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.53: +13 -3 lines
Diff to previous 1.53 (colored) to selected 1.51 (colored)

- When computing the TSC frequency, call i8254_delay() and not DELAY().
- Use atomics to adjust the pmap reference count, instead of taking locks.
- Implement I386_{SET,GET}_{FS,GS}BASE, allowing %fs and %gs to be used
  as per-thread registers. This is compatible with FreeBSD.
- Run patches after we have attached CPUs, since we then know if the
  system is uniprocessor or not. Eliminates a lot of #ifdef MULTIPROCESSOR
  and makes running MP kernels on UP systems cheaper.
- Patch out many of the 'lock' prefixes to nops if uniprocessor.
- Do a wbinvd after patching to ensure that the trace/instruction cache
  is up to date.

Revision 1.53 / (download) - annotate - [select for diffs], Thu Oct 18 15:28:35 2007 UTC (16 years, 5 months ago) by yamt
Branch: MAIN
CVS Tags: jmcneill-base
Branch point for: mjf-devfs
Changes since 1.52: +139 -80 lines
Diff to previous 1.52 (colored) to selected 1.51 (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.52 / (download) - annotate - [select for diffs], Wed Oct 17 19:54:45 2007 UTC (16 years, 5 months ago) by garbled
Branch: MAIN
CVS Tags: yamt-x86pmap-base4
Changes since 1.51: +1 -1 lines
Diff to previous 1.51 (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.51 / (download) - annotate - [selected], Wed Sep 26 19:48:36 2007 UTC (16 years, 5 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.50: +1 -42 lines
Diff to previous 1.50 (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.50 / (download) - annotate - [select for diffs], Wed Aug 29 23:38:04 2007 UTC (16 years, 6 months ago) by ad
Branch: MAIN
CVS Tags: yamt-x86pmap-base, nick-csl-alignment-base5
Branch point for: yamt-x86pmap
Changes since 1.49: +63 -1 lines
Diff to previous 1.49 (colored) to selected 1.51 (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.49 / (download) - annotate - [select for diffs], Thu Aug 16 17:00:05 2007 UTC (16 years, 7 months ago) by ad
Branch: MAIN
Branch point for: matt-armv6
Changes since 1.48: +3 -2 lines
Diff to previous 1.48 (colored) to selected 1.51 (colored)

cpu_switchto: fix a well dodgy bit of assembly that broke RAS.

Revision 1.48 / (download) - annotate - [select for diffs], Thu May 17 14:51:21 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, jmcneill-pm
Changes since 1.47: +104 -501 lines
Diff to previous 1.47 (colored) to selected 1.51 (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.47 / (download) - annotate - [select for diffs], Mon Feb 19 11:46:10 2007 UTC (17 years, 1 month ago) by skrll
Branch: MAIN
CVS Tags: yamt-idlelwp-base8, thorpej-atomic-base, thorpej-atomic, reinoud-bufcleanup, ad-audiomp-base, ad-audiomp
Branch point for: vmlocking, ppcoea-renovation, mjf-ufs-trans
Changes since 1.46: +2 -2 lines
Diff to previous 1.46 (colored) to selected 1.51 (colored)

Correct a comment

Revision 1.46 / (download) - annotate - [select for diffs], Sat Feb 17 22:31:37 2007 UTC (17 years, 1 month ago) by pavel
Branch: MAIN
Changes since 1.45: +2 -2 lines
Diff to previous 1.45 (colored) to selected 1.51 (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.45 / (download) - annotate - [select for diffs], Fri Feb 9 21:55:04 2007 UTC (17 years, 1 month ago) by ad
Branch: MAIN
CVS Tags: post-newlock2-merge
Branch point for: yamt-idlelwp
Changes since 1.44: +13 -19 lines
Diff to previous 1.44 (colored) to selected 1.51 (colored)

Merge newlock2 to head.

Revision 1.44 / (download) - annotate - [select for diffs], Wed Oct 25 13:56:15 2006 UTC (17 years, 4 months ago) by jmmv
Branch: MAIN
CVS Tags: yamt-splraiseipl-base5, yamt-splraiseipl-base4, yamt-splraiseipl-base3, wrstuden-fixsa-newbase, wrstuden-fixsa-base-1, wrstuden-fixsa-base, wrstuden-fixsa, 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
Branch point for: netbsd-4
Changes since 1.43: +2 -8 lines
Diff to previous 1.43 (colored) to selected 1.51 (colored)

Remove the usage of Multiboot's "a.out kludge" to tell the boot loader to
reserve some more space for the BSS section than the binary says.  This
trick was used to leave room after the kernel's image to copy the symbol
table following the format required by ksyms_init.  (It was also used to
workaround a bug in the physical address fields of the binary, but this has
been long fixed.)  Yes, the MULTIBOOT_SYMTAB_SPACE option goes away; yay!

Instead, copy the required data after the kernel in a way that avoids having
to reserve space and use the new ksyms_init_explicit function to avoid the
need to construct a minimal ELF image.

Fixes ksyms when using an "unpatched" GRUB (one that does not contain the
fix to honour the "a.out kludge" for ELF images, even when present) -- i.e.
ddb and lkms.  As a side effect, the new code is much clearer to read and
digest.

Closes PR port-i386/32865.

Revision 1.43 / (download) - annotate - [select for diffs], Tue Jul 25 00:23:38 2006 UTC (17 years, 7 months ago) by mrg
Branch: MAIN
CVS Tags: yamt-splraiseipl-base2, yamt-splraiseipl-base, yamt-pdpolicy-base9, yamt-pdpolicy-base8, yamt-pdpolicy-base7, rpaulo-netinet-merge-pcb-base, abandoned-netbsd-4-base, abandoned-netbsd-4
Branch point for: yamt-splraiseipl, newlock2
Changes since 1.42: +5 -3 lines
Diff to previous 1.42 (colored) to selected 1.51 (colored)

fix a typo in a comment and a very minor KNF.

Revision 1.42 / (download) - annotate - [select for diffs], Sat Jul 8 20:30:00 2006 UTC (17 years, 8 months ago) by christos
Branch: MAIN
Changes since 1.41: +1 -2 lines
Diff to previous 1.41 (colored) to selected 1.51 (colored)

- apm.c -> apmbios.c and s/NAPM/NAPMBIOS/
- adjust to new function call signatures.

Revision 1.41 / (download) - annotate - [select for diffs], Sat Jul 1 09:21:28 2006 UTC (17 years, 8 months ago) by jmmv
Branch: MAIN
Changes since 1.40: +2 -2 lines
Diff to previous 1.40 (colored) to selected 1.51 (colored)

Fix order of biosbasemem and biosextmem order in a comment to match reality.
Closes PR kern/32082 by Dave J. Barnes.

Revision 1.40 / (download) - annotate - [select for diffs], Mon May 22 13:44:53 2006 UTC (17 years, 10 months ago) by yamt
Branch: MAIN
CVS Tags: yamt-pdpolicy-base6, yamt-pdpolicy-base5, simonb-timecounters-base, gdamore-uart-base, chap-midi-nbase, chap-midi-base
Branch point for: gdamore-uart
Changes since 1.39: +6 -6 lines
Diff to previous 1.39 (colored) to selected 1.51 (colored)

i386 and xen: move struct user to the highest address in uarea
and reduce UPAGES from 4 to 3 in the case of !NOREDZONE.

Revision 1.39 / (download) - annotate - [select for diffs], Sat May 13 08:56:08 2006 UTC (17 years, 10 months ago) by skrll
Branch: MAIN
Branch point for: chap-midi
Changes since 1.38: +3 -3 lines
Diff to previous 1.38 (colored) to selected 1.51 (colored)

Fix some more comments.

Revision 1.38 / (download) - annotate - [select for diffs], Wed Apr 12 13:48:52 2006 UTC (17 years, 11 months ago) by jmmv
Branch: MAIN
CVS Tags: elad-kernelauth-base
Changes since 1.37: +11 -77 lines
Diff to previous 1.37 (colored) to selected 1.51 (colored)

Convert the code that fetches bootinfo information and stores it into the
kernel from assembler to C and add several comments to make things clearer.
I've been running with these changes for a couple of months without problems.

Revision 1.37 / (download) - annotate - [select for diffs], Fri Feb 3 11:08:24 2006 UTC (18 years, 1 month ago) by jmmv
Branch: MAIN
CVS Tags: yamt-uio_vmspace-base5, yamt-pdpolicy-base4, yamt-pdpolicy-base3, yamt-pdpolicy-base2, yamt-pdpolicy-base, peter-altq-base
Branch point for: yamt-pdpolicy, simonb-timecounters, peter-altq, elad-kernelauth
Changes since 1.36: +46 -1 lines
Diff to previous 1.36 (colored) to selected 1.51 (colored)

Implement support for 'The Multiboot Specification' so that i386 kernels
can be booted directly from Multiboot-compliant boot loaders (e.g. GRUB).
See the added multiboot(8) manual page for more information.

No objections in tech-kern@; only positive comments.

Revision 1.36 / (download) - annotate - [select for diffs], Sun Dec 11 12:17:41 2005 UTC (18 years, 3 months ago) by christos
Branch: MAIN
Branch point for: yamt-uio_vmspace, rpaulo-netinet-merge-pcb
Changes since 1.35: +1 -1 lines
Diff to previous 1.35 (colored) to selected 1.51 (colored)

merge ktrace-lwp.

Revision 1.35 / (download) - annotate - [select for diffs], Mon Nov 7 11:42:34 2005 UTC (18 years, 4 months ago) by yamt
Branch: MAIN
CVS Tags: yamt-readahead-pervnode, yamt-readahead-perfile, yamt-readahead-base3, yamt-readahead-base2, yamt-readahead-base, yamt-readahead, ktrace-lwp-base
Changes since 1.34: +7 -890 lines
Diff to previous 1.34 (colored) to selected 1.51 (colored)

some assym cleanup.
- move copyin and friends from locore.S to their own file, copy.S.
  share it between i386 and xen.
- defparam KERNBASE and kill KERNBASE_LOCORE hack.
- add more symbols to assym.h and use it where appropriate.

Revision 1.34 / (download) - annotate - [select for diffs], Fri Apr 1 11:59:31 2005 UTC (18 years, 11 months ago) by yamt
Branch: MAIN
CVS Tags: yamt-vop-base3, yamt-vop-base2, yamt-vop-base, yamt-vop, thorpej-vnode-attr-base, thorpej-vnode-attr, kent-audio2-base
Branch point for: yamt-lazymbuf
Changes since 1.33: +1 -3 lines
Diff to previous 1.33 (colored) to selected 1.51 (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.33 / (download) - annotate - [select for diffs], Mon Mar 14 21:50:59 2005 UTC (19 years ago) by fvdl
Branch: MAIN
CVS Tags: yamt-km-base4, yamt-km-base3, 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
Changes since 1.32: +3 -1 lines
Diff to previous 1.32 (colored) to selected 1.51 (colored)

Check the passed in address as well as determining the maximum length
using VM_MAXUSER_ADDRESS in copyinstr and copyoutstr.

Problem originally fixed in OpenBSD/i386.
This fix suggested by Charles Hannum (mycroft at netbsd dot org).

Revision 1.32 / (download) - annotate - [select for diffs], Wed Mar 2 12:00:25 2005 UTC (19 years ago) by mycroft
Branch: MAIN
Changes since 1.31: +2 -2 lines
Diff to previous 1.31 (colored) to selected 1.51 (colored)

Copyright maintenance.

Revision 1.31 / (download) - annotate - [select for diffs], Thu Aug 26 10:12:33 2004 UTC (19 years, 6 months ago) by junyoung
Branch: MAIN
CVS Tags: yamt-km-base2, yamt-km-base, kent-audio1-beforemerge, kent-audio1-base, kent-audio1
Branch point for: yamt-km, kent-audio2
Changes since 1.30: +13 -31 lines
Diff to previous 1.30 (colored) to selected 1.51 (colored)

As suggested on tech-kern@ days ago:
* Get rid of PTmap, PTD, PTDpde, APTmap, APTD, and APTDpde from locore.S.
* Rename PTDpaddr to PDPpaddr, ptdpaddr in struct cpu_kcore_hdr to pdppaddr for consistency.

Revision 1.30 / (download) - annotate - [select for diffs], Sun Aug 22 06:46:34 2004 UTC (19 years, 7 months ago) by junyoung
Branch: MAIN
Changes since 1.29: +53 -53 lines
Diff to previous 1.29 (colored) to selected 1.51 (colored)

Remove trailing spaces.

Revision 1.29 / (download) - annotate - [select for diffs], Thu Aug 5 15:25:29 2004 UTC (19 years, 7 months ago) by mycroft
Branch: MAIN
Changes since 1.28: +11 -4 lines
Diff to previous 1.28 (colored) to selected 1.51 (colored)

Increase nkpde automatically to adjust for the kernel size.  Also, if we did
adjust nkpde, save the new value.  This should enable us to boot extremely
large kernels without fiddling with NKPTP.

Revision 1.28 / (download) - annotate - [select for diffs], Thu May 13 12:15:01 2004 UTC (19 years, 10 months ago) by yamt
Branch: MAIN
Changes since 1.27: +4 -1 lines
Diff to previous 1.27 (colored) to selected 1.51 (colored)

witch_return: call Xspllower only when there're pending interrupts.

Revision 1.27 / (download) - annotate - [select for diffs], Tue Apr 20 11:59:20 2004 UTC (19 years, 11 months ago) by yamt
Branch: MAIN
Changes since 1.26: +4 -4 lines
Diff to previous 1.26 (colored) to selected 1.51 (colored)

add '.L' prefixes to local labels.

Revision 1.26 / (download) - annotate - [select for diffs], Mon Apr 12 13:17:46 2004 UTC (19 years, 11 months ago) by yamt
Branch: MAIN
Changes since 1.25: +9 -4 lines
Diff to previous 1.25 (colored) to selected 1.51 (colored)

- keep cr3 register and its copy in TSS synchronized.
  otherwise an interrupt vector using a task gate (ie. ddbipi) messes it up.
- defer LDTR loading as well as cr3.
- tweak comments to make three copies of switching code more synchronized.

Revision 1.25 / (download) - annotate - [select for diffs], Fri Mar 26 19:05:33 2004 UTC (19 years, 11 months ago) by drochner
Branch: MAIN
CVS Tags: netbsd-2-0-base
Branch point for: netbsd-2-0
Changes since 1.24: +1 -7 lines
Diff to previous 1.24 (colored) to selected 1.51 (colored)

fix references to the syscall formerly known as SYS___sigreturn14

Revision 1.24 / (download) - annotate - [select for diffs], Fri Feb 20 17:35:01 2004 UTC (20 years, 1 month ago) by yamt
Branch: MAIN
Changes since 1.23: +53 -18 lines
Diff to previous 1.23 (colored) to selected 1.51 (colored)

defer pmap switching until it's really needed
to avoid frequent loading of cr3 register, which involves tlb flush.

with some fixes/improvements from Stephan Uphoff and Bang Jun-Young.

Revision 1.23 / (download) - annotate - [select for diffs], Mon Feb 16 17:11:27 2004 UTC (20 years, 1 month ago) by wiz
Branch: MAIN
Changes since 1.22: +1 -2 lines
Diff to previous 1.22 (colored) to selected 1.51 (colored)

Remove last traces of DUMMY_NOPS option that was removed some
time ago.
From Jeff Rizzo in PR 24442.

Revision 1.22 / (download) - annotate - [select for diffs], Fri Feb 13 11:36:13 2004 UTC (20 years, 1 month ago) by wiz
Branch: MAIN
Changes since 1.21: +3 -3 lines
Diff to previous 1.21 (colored) to selected 1.51 (colored)

Uppercase CPU, plural is CPUs.

Revision 1.21 / (download) - annotate - [select for diffs], Sun Jan 4 11:44:52 2004 UTC (20 years, 2 months ago) by jdolecek
Branch: MAIN
Changes since 1.20: +7 -12 lines
Diff to previous 1.20 (colored) to selected 1.51 (colored)

Process and lwp exit path always executes lwp_exit2() now and cpu_exit()
is empty besides calling switch_exit(). So, rename switch_exit() to
cpu_exit() and modify the routine to call lwp_exit2() direct.
This saves couple cycles on the exit path.

Revision 1.20 / (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.19: +15 -12 lines
Diff to previous 1.19 (colored) to selected 1.51 (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.19 / (download) - annotate - [select for diffs], Fri Sep 12 16:51:04 2003 UTC (20 years, 6 months ago) by christos
Branch: MAIN
Changes since 1.18: +7 -1 lines
Diff to previous 1.18 (colored) to selected 1.51 (colored)

pick up the right sigreturn symbol. we could have #define __HAVE_SIGINFO
instead too.

Revision 1.18 / (download) - annotate - [select for diffs], Fri Sep 12 12:39:59 2003 UTC (20 years, 6 months ago) by christos
Branch: MAIN
Changes since 1.17: +7 -6 lines
Diff to previous 1.17 (colored) to selected 1.51 (colored)

include opt_compat_netbsd.h, sort includes. Thanks yamt.

Revision 1.17 / (download) - annotate - [select for diffs], Wed Sep 10 19:48:49 2003 UTC (20 years, 6 months ago) by christos
Branch: MAIN
Changes since 1.16: +2 -2 lines
Diff to previous 1.16 (colored) to selected 1.51 (colored)

move compat_16 stuff into a separate file.

Revision 1.16 / (download) - annotate - [select for diffs], Wed Sep 10 16:46:59 2003 UTC (20 years, 6 months ago) by christos
Branch: MAIN
Changes since 1.15: +3 -2 lines
Diff to previous 1.15 (colored) to selected 1.51 (colored)

make obsolete trampoline code COMPAT_16. Unfortunately sigreturn14 is used
by IBCS2; grr.

Revision 1.15 / (download) - annotate - [select for diffs], Wed Aug 20 21:48:37 2003 UTC (20 years, 7 months ago) by fvdl
Branch: MAIN
Changes since 1.14: +5 -1 lines
Diff to previous 1.14 (colored) to selected 1.51 (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.14 / (download) - annotate - [select for diffs], Mon Aug 11 21:15:50 2003 UTC (20 years, 7 months ago) by fvdl
Branch: MAIN
Changes since 1.13: +2 -1 lines
Diff to previous 1.13 (colored) to selected 1.51 (colored)

Fix deadlock issue. Slight variation on patch by Stephan Uphoff.

Revision 1.13 / (download) - annotate - [select for diffs], Fri Aug 8 20:14:06 2003 UTC (20 years, 7 months ago) by christos
Branch: MAIN
Changes since 1.12: +8 -8 lines
Diff to previous 1.12 (colored) to selected 1.51 (colored)

use KERNBASE_LOCORE

Revision 1.12 / (download) - annotate - [select for diffs], Thu Aug 7 16:27:54 2003 UTC (20 years, 7 months ago) by agc
Branch: MAIN
Changes since 1.11: +2 -6 lines
Diff to previous 1.11 (colored) to selected 1.51 (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.11 / (download) - annotate - [select for diffs], Thu Jun 26 16:47:15 2003 UTC (20 years, 8 months ago) by drochner
Branch: MAIN
Branch point for: ktrace-lwp
Changes since 1.10: +1 -4 lines
Diff to previous 1.10 (colored) to selected 1.51 (colored)

cpu_feature is not set (nor used) by locore since SMP, so move the
definition to C code

Revision 1.10 / (download) - annotate - [select for diffs], Tue May 13 09:35:16 2003 UTC (20 years, 10 months ago) by fvdl
Branch: MAIN
Changes since 1.9: +3 -3 lines
Diff to previous 1.9 (colored) to selected 1.51 (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.9 / (download) - annotate - [select for diffs], Tue May 13 08:26:32 2003 UTC (20 years, 10 months ago) by fvdl
Branch: MAIN
Changes since 1.8: +5 -3 lines
Diff to previous 1.8 (colored) to selected 1.51 (colored)

Make cpu_switch return the correct value. From Stephan Uphoff, PR 21558

Revision 1.8 / (download) - annotate - [select for diffs], Sat Apr 26 18:13:16 2003 UTC (20 years, 10 months ago) by fvdl
Branch: MAIN
Changes since 1.7: +3 -2 lines
Diff to previous 1.7 (colored) to selected 1.51 (colored)

Save symtabspace in the LKM || KSYMS case as well; otherwise it'll overlap
with the page table pages for the kernel, and Bad Things will happen.

Revision 1.7 / (download) - annotate - [select for diffs], Tue Apr 8 23:48:48 2003 UTC (20 years, 11 months ago) by thorpej
Branch: MAIN
Changes since 1.6: +13 -13 lines
Diff to previous 1.6 (colored) to selected 1.51 (colored)

Use PAGE_SIZE rather than NBPG.

Revision 1.6 / (download) - annotate - [select for diffs], Sun Feb 9 15:49:34 2003 UTC (21 years, 1 month ago) by drochner
Branch: MAIN
Changes since 1.5: +2 -2 lines
Diff to previous 1.5 (colored) to selected 1.51 (colored)

fix a lint stub

Revision 1.5 / (download) - annotate - [select for diffs], Fri Jan 17 23:10:30 2003 UTC (21 years, 2 months ago) by thorpej
Branch: MAIN
Changes since 1.4: +121 -71 lines
Diff to previous 1.4 (colored) to selected 1.51 (colored)

Merge the nathanw_sa branch.

Revision 1.4 / (download) - annotate - [select for diffs], Tue Dec 17 20:49:07 2002 UTC (21 years, 3 months ago) by gmcgarry
Branch: MAIN
CVS Tags: nathanw_sa_before_merge, nathanw_sa_base, gmcgarry_ctxsw_base, fvdl_fs64_base
Branch point for: gmcgarry_ctxsw
Changes since 1.3: +4 -7 lines
Diff to previous 1.3 (colored) to selected 1.51 (colored)

Use callee-saved registers in RAS processing.

Revision 1.3 / (download) - annotate - [select for diffs], Tue Dec 17 19:47:15 2002 UTC (21 years, 3 months ago) by gmcgarry
Branch: MAIN
CVS Tags: gmcgarry_ucred_base, gmcgarry_ucred
Changes since 1.2: +1 -76 lines
Diff to previous 1.2 (colored) to selected 1.51 (colored)

Move to MI runqueue functions.

Revision 1.2 / (download) - annotate - [select for diffs], Wed Dec 11 12:02:07 2002 UTC (21 years, 3 months ago) by fvdl
Branch: MAIN
Changes since 1.1: +5 -3 lines
Diff to previous 1.1 (colored) to selected 1.51 (colored)

Since a CPU may spin waiting for another CPU to handle an IPI, an
IPI must be the very first thing to be handled in splx(), if it
had been blocked before. Change things around a bit to guarantee
this.

Revision 1.1 / (download) - annotate - [select for diffs], Fri Nov 22 15:01:17 2002 UTC (21 years, 4 months ago) by fvdl
Branch: MAIN
Branch point for: nathanw_sa
Diff to selected 1.51 (colored)

.s -> .S rename. New files: vector.S and spl.S, they have been split
off from locore.s, plus parts of isa/vector.s and isa/icu.s

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>