12877 Commits

Author SHA1 Message Date
marius
649b6c7e5b MFC: r274054 (missed in r276076)
Fix XEN kernel build.
2015-02-08 23:04:32 +00:00
kib
9dc38ea5dc MFC r278001:
Do not qualify the mcontext_t *mcp argument for set_mcontext(9) as const.
2015-02-07 08:47:15 +00:00
kib
da566e85be MFC r277047:
For x86, read MAXPHYADDR into variable cpu_maxphyaddr.
2015-01-19 10:52:55 +00:00
nwhitehorn
d454042db9 MFC r265329:
Disable ACPI and P4TCC throttling by default, following discussion on
freebsd-current. These CPU speed control techniques are usually unhelpful
at best. For now, continue building the relevant code into GENERIC so that
it can trivially be re-enabled at runtime if anyone wants it.

Relnotes:	yes
2015-01-11 17:10:07 +00:00
dchagin
c9ac1e485b Regen for r276810. 2015-01-08 06:24:43 +00:00
dchagin
8d0bd37b09 MFC r276508, r276509:
Correct an argument status of wait4 syscall for Linuxulator.
2015-01-08 06:23:11 +00:00
alc
d5a13901bf MFC r273701, r274556
By the time that pmap_init() runs, vm_phys_segs[] has been initialized.
  Obtaining the end of memory address from vm_phys_segs[] is a little
  easier than obtaining it from phys_avail[].

  Enable the use of VM_PHYSSEG_SPARSE on amd64 and i386, making it the
  default on i386 PAE.  (The use of VM_PHYSSEG_SPARSE on i386 PAE saves
  us some precious kernel virtual address space that would have been
  wasted on unused vm_page structures.)
2015-01-02 17:45:52 +00:00
nyan
f42424055b MFC: r272492
Merge pc98's machdep.c into i386/i386/machdep.c.
2014-12-23 12:13:31 +00:00
jhb
3f04bf5b7c MFC 275035:
MFamd64: Check for invalid flags in the machine context in sigreturn()
and setcontext().
2014-12-22 21:46:35 +00:00
jhb
5ae50f92a8 MFC 273988,273989,273995,274057:
MFamd64: Add support for extended FPU states on i386.  This includes
support for AVX on i386.
2014-12-22 21:32:39 +00:00
jhb
af2ee162da MFC 273991:
MFamd64: Move extern declaration of _ucodesel and _udatasel to
<machine/md_var.h>
2014-12-22 20:53:45 +00:00
jhb
71f9e38fa2 MFC 271405,271408,271409,272658:
MFamd64: Use initializecpu() to set various model-specific registers on
AP startup and AP resume (it was already used for BSP startup and BSP
resume).
2014-12-22 19:53:55 +00:00
jhb
2b345a08ed MFC 260557,271076,271077,271082,271083,271098:
- Remove spaces from boot messages when we print the CPU ID/Family/Stepping
- Move prototypes for various functions into out of C files and into
  <machine/md_var.h>.
- Reduce diffs between i386 and amd64 initcpu.c and identcpu.c files.
- Move blacklists of broken TSCs out of the printcpuinfo() function
  and into the TSC probe routine.
- Merge the amd64 and i386 identcpu.c into a single x86 implementation.
2014-12-22 18:40:59 +00:00
jhb
3f663b8b40 MFC 273871:
Skip the smap sysctl instead of panicing if no kernel metadata can be
found.
2014-12-18 23:00:17 +00:00
bryanv
f9a98c5bdd MFC r273515, r274055, r274063, r274215, r274065, r274502:
Add VirtIO console driver.
2014-11-29 22:48:40 +00:00
kib
e4b2ee7e2b Merge the fueword(9) and casueword(9). In particular,
MFC r273783:
Add fueword(9) and casueword(9) functions.
MFC note: ia64 is handled like arm, with NO_FUEWORD define.

MFC r273784:
Replace some calls to fuword() by fueword() with proper error checking.

MFC r273785:
Convert kern_umtx.c to use fueword() and casueword().
MFC note: the sys__umtx_lock and sys__umtx_unlock syscalls are not
converted, they are removed from HEAD, and not used.  The do_sem2*()
family is not yet merged to stable/10, corresponding chunk will be
merged after do_sem2* are committed.

MFC r273788 (by jkim):
Actually install casuword(9) to fix build.

MFC r273911:
Add type qualifier volatile to the base (userspace) address argument
of fuword(9) and suword(9).
2014-11-18 12:53:32 +00:00
kib
92c5a45b89 MFC r272761:
Add an argument to the x86 pmap_invalidate_cache_range() to request
forced invalidation of the cache range regardless of the presence of
self-snoop feature.

MFC r272943:
MFi386 r272761.
2014-10-15 14:07:24 +00:00
jhb
5595ee4003 MFC 270828,271487,271495:
Add sysctls to export the BIOS SMAP and EFI memory maps along with
handlers in the sysctl(8) binary to format them.
2014-10-10 20:47:23 +00:00
bz
26cc830ced This is a direct commit rather than an MFC of r271744.
Re-gen after r272020 (r271743 in head) implementing most of
  timer_{create,settime,gettime,getoverrun,delete}.

Approved by:	re (gjb)
Sponsored by:	DARPA/AFRL
2014-09-23 07:53:32 +00:00
bz
cbd13542a7 MFC r271743:
Implement most of timer_{create,settime,gettime,getoverrun,delete}
  for amd64/linux32.  Fix the entirely bogus (untested) version from
  r161310 for i386/linux using the same shared code in compat/linux.

  It is unclear to me if we could support more clock mappings but
  the current set allows me to successfully run commercial
  32bit linux software under linuxolator on amd64.

  Reviewed by:			jhb
  Differential Revision:	D784
Sponsored by:			DARPA, AFRL
Approved by:			re (gjb)
2014-09-23 07:50:04 +00:00
jhb
09bff45095 MFC 270850,271053,271192,271717:
Save and restore FPU state across suspend and resume on i386.
- Create a separate structure for per-CPU state saved across suspend and
  resume that is a superset of a pcb.
- Store the FPU state for suspend and resume in the new structure
  (for amd64, this moves it out of the PCB)
- On both i386 and amd64, all of the FPU suspend/resume handling is now
  done in C.

Approved by:	re (hrs)
2014-09-22 20:34:36 +00:00
kib
42e5d75eb4 MFC r271716:
Presence of any VM_PROT bits in the permission argument on x86 implies
that the entry is readable and valid.

Approved by:	re (gjb)
2014-09-20 14:24:48 +00:00
pfg
661c0752aa MFC r271149:
Apply known workarounds for less modern MacBooks.

The legacy USB circuit tends to give trouble on older MacBooks.
While the original report covered MacBook4, extend the fix
preemptively for the newer MacBookPro4 too.

PR:		191693
Reviewed by:	emaste
Approved by:	re
2014-09-13 18:27:47 +00:00
markj
7b2b287dbf MFC r271137:
Add mrsas(4) to GENERIC for i386 and amd64.

Approved by:	re (gjb)
2014-09-07 18:43:26 +00:00
jhb
ed4c49e7dd MFC 270826:
MFamd64: Add a machdep.bootmethod sysctl to inform the installer which
firmware method was used for booting.  This is hardcoded to BIOS on i386.

PR:		192962
Approved by:	re (gjb)
2014-09-06 15:15:06 +00:00
emaste
f8ae63e6ed MFC r263005 by royger: howto_names: unify declaration 2014-09-04 20:47:14 +00:00
pfg
4480b8a63d MFC r270844:
Minor space/tab cleanups.

Most of them were ripped from the GSoC 2104
SMAP + kpatch project (but unrelated).
Only cosmetic changes.

Taken from:	Oliver Pinter (op@)
2014-09-04 00:40:41 +00:00
kib
798eea1614 Fix a leak of the wired pages when unwiring of the PROT_NONE-mapped
wired region.  Rework the handling of unwire to do the it in batch,
both at pmap and object level.

All commits below are by alc.

MFC r268327:
Introduce pmap_unwire().

MFC r268591:
Implement pmap_unwire() for powerpc.

MFC r268776:
Implement pmap_unwire() for arm.

MFC r268806:
pmap_unwire(9) man page.

MFC r269134:
When unwiring a region of an address space, do not assume that the
underlying physical pages are mapped by the pmap.  This fixes a leak
of the wired pages on the unwiring of the region mapped with no access
allowed.

MFC r269339:
In the implementation of the new function pmap_unwire(), the call to
MOEA64_PVO_TO_PTE() must be performed before any changes are made to the
PVO. Otherwise, MOEA64_PVO_TO_PTE() will panic.

MFC r269365:
Correct a long-standing problem in moea{,64}_pvo_enter() that was revealed
by the combination of r268591 and r269134: When we attempt to add the
wired attribute to an existing mapping, moea{,64}_pvo_enter() do nothing.
(They only set the wired attribute on newly created mappings.)

MFC r269433:
Handle wiring failures in vm_map_wire() with the new functions
pmap_unwire() and vm_object_unwire().
Retire vm_fault_{un,}wire(), since they are no longer used.

MFC r269438:
Rewrite a loop in vm_map_wire() so that gcc doesn't think that the variable
"rv" is uninitialized.

MFC r269485:
Retire pmap_change_wiring().

Reviewed by:	alc
2014-09-01 07:58:15 +00:00
kib
b1ece437b7 MFC r270038:
Complete r254667, do not destroy pmap lock if KVA allocation failed.
2014-08-24 07:59:01 +00:00
kib
25782a7fab Merge the changes to pmap_enter(9) for sleep-less operation (requested
by flag).  The ia64 pmap.c changes are direct commit, since ia64 is
removed on head.

MFC r269368 (by alc):
Retire PVO_EXECUTABLE.

MFC r269728:
Change pmap_enter(9) interface to take flags parameter and superpage
mapping size (currently unused).

MFC r269759 (by alc):
Update the text of a KASSERT() to reflect the changes in r269728.

MFC r269822 (by alc):
Change {_,}pmap_allocpte() so that they look for the flag
PMAP_ENTER_NOSLEEP instead of M_NOWAIT/M_WAITOK when deciding whether
to sleep on page table page allocation.

MFC r270151 (by alc):
Replace KASSERT that no PV list locks are held with a conditional
unlock.

Reviewed by:	alc
Approved by:	re (gjb)
Sponsored by:	The FreeBSD Foundation
2014-08-24 07:53:15 +00:00
markj
57990c0ba4 MFC r266826, r266827
Move some duplicated hook definitions from machine-dependent files to
kern_dtrace.c.
2014-08-09 14:05:01 +00:00
markj
8116ff7597 MFC r263329:
Only invoke fasttrap hooks for traps from user mode, and ensure that they're
called with interrupts enabled. Calling fasttrap_pid_probe() with interrupts
disabled can lead to deadlock if fasttrap writes to the process' address
space.
2014-07-29 20:33:18 +00:00
marius
4f9788cb2b MFC: r269050
- Copying and zeroing pages via temporary mappings involves updating the
  corresponding page tables followed by accesses to the pages in question.
  This sequence is subject to the situation exactly described in the "AMD64
  Architecture Programmer's Manual Volume 2: System Programming" rev. 3.23,
  "7.3.1 Special Coherency Considerations" [1, p. 171 f.]. Therefore, issuing
  the INVLPG right after modifying the PTE bits is crucial.
  For pmap_copy_page(), this has been broken in r124956 and later on carried
  over to pmap_copy_pages() derived from the former, while all other places
  in the i386 PMAP code use the correct order of instructions in this regard.
  Fixing the latter breakage solves the problem of data corruption seen with
  unmapped I/O enabled when running at least bare metal on AMD R-268D APUs.
  However, this might also fix similar corruption reported for virtualized
  environments.
- In pmap_copy_pages(), correctly set the cache bits on the source page being
  copied. This change is thought to be a NOP for the real world, though. [2]

1: http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/24593_APM_v21.pdf

Submitted by:	kib [2]
Reviewed by:	alc, kib
Sponsored by:	Bally Wulff Games & Entertainment GmbH
2014-07-29 13:08:37 +00:00
kib
d7d6313cf4 MFC r267213 (by alc):
Add a page size field to struct vm_page.

Approved by:	alc
2014-07-24 16:29:44 +00:00
jhb
cf1a222326 MFC 260847,264055,264867:
- Add a very simple virtio_random(4) driver for FreeBSD guests to harvest
  entropy from hypervisors.
- Add support to bhyve for the virtio RNG entropy-source device to provide
  entry to bhyve guests.
2014-07-21 00:21:56 +00:00
imp
07bb5d08f3 MFC r263749,267146:
>r267146 | imp | 2014-06-05 22:08:55 -0600 (Thu, 05 Jun 2014) | 4 lines
>Restore comments accidentally removed.

>r263749 | imp | 2014-03-25 16:08:31 -0600 (Tue, 25 Mar 2014) | 18 lines
>Rather than require a makeoptions DEBUG to get debug correct,
>add it in kern.mk, but only if we're using clang. While this
>option is supported by both clang and gcc, in the future there
>may be changes to clang which change the defaults that require
>a tweak to build our kernel such that other tools in our tree
>will work. Set a good example by forcing -gdwarf-2 only for
>clang builds, and only if the user hasn't specified another
>dwarf level already. Update UPDATING to reflect the changed
>state of affairs. This also keeps us from having to update
>all the ARM kernels to add this, and also keeps us from
>in the future having to update all the MIPS kernels and is
>one less place the user will have to know to do something
>special for clang and one less thing developers will need
>to do when moving an architecture to clang.
2014-07-17 22:31:46 +00:00
kib
c2d1e1826f MFC r268383:
Correct si_code for the SIGBUS signal generated by the alignment trap.
2014-07-15 10:01:33 +00:00
ray
74b8e10dc8 267622 Log:
Rename vt(4) vga module to dismiss interference with syscons(4) vga module.
267623 Log:
  Remove stale link to deleted vt(4) xboxfb driver.
267624 Log:
  syscons(4) and vt(4) can be built together now.
267625 Log:
  Allow to disable syscons(4) if "hw.syscons.disable" kenv is set.
267626 Log:
  Suspend vt(4) initialization if "kern.vt.disable" kenv is set.
267965 by emaste@ Log:
  Use a common tunable to choose between vt(4)/sc(4)
  With this change and previous work from ray@ it will be possible to put
  both in GENERIC, and have one enabled by default, but allow the other to
  be selected via the loader.
  (The previous implementation had separate kern.vt.disable and
  hw.syscons.disable tunables, and would panic if both drivers were
  compiled in and neither was explicitly disabled.)
268175 by emaste@ Log:
  Fix vt(4) detection in kbdcontrol and vidcontrol
  As sc(4) and vt(4) coexist and are both enabled in GENERIC, the existence
  of a vt(4) sysctl is not sufficient to determine that vt(4) is in use.
  Reported by:  Trond Endrestøl
268045 by emaste@ Log:
  Add vt(4) to GENERIC and retire the separate VT config
  vt(4) and sc(4) can now coexist in the same kernel.  To choose the vt
  driver, set the loader tunable kern.vty=vt .

Sponsored by:	The FreeBSD Foundation
2014-07-07 14:16:05 +00:00
kib
d02ef38799 MFC r267767:
Add FPU_KERN_KTHR flag to fpu_kern_enter(9).
Apply the flag to padlock(4) and aesni(4).
In aesni_cipher_process(), do not leak FPU context state on error.
2014-06-30 09:48:44 +00:00
jhb
bdcad19a9a MFC 261781:
Don't waste a page of KVA for the boot-time memory test on x86.  For amd64,
reuse the first page of the crashdumpmap as CMAP1/CADDR1.  For i386,
remove CMAP1/CADDR1 entirely and reuse CMAP3/CADDR3 for the memory test.
2014-06-27 17:22:18 +00:00
kib
abdd2eb078 MFC r267492:
Fix some cosmetic issues with the use of kmem_malloc() in the i386 LDT
sysarch(2) code.
2014-06-22 08:32:31 +00:00
dchagin
4fc6560286 Revert MFC r266925 because it can lead to instant panic at fexecve():
To allow to run interpreter itself add a new ELF branding type.

Pointed out by:	kib, mjg
2014-06-17 05:21:48 +00:00
marius
226f09e56e Fix mismerge in r267049 and put makeoptions DEBUG=-gdwarf-2 instead of
DEBUG=-g back.
Still, the original comment should be restored in head and then be MFCed
along with r263749.
2014-06-05 13:08:08 +00:00
marius
b421df8fef MFC: r266821 (partial)
- Actually, modules are built correctly when compiled along the kernel as
  they then pick up an opt_global.h from KERNBUILDDIR having PAE defined.
  Thus, build all modules by default except those which still really are
  defective as of r267043.
- Minor style cleanup.
2014-06-04 12:03:51 +00:00
marius
dc8ade23a0 MFC: r266820 (partial)
- Shrink the list of excluded modules to what actually still doesn't build
  as of r267043.
- Some style cleanups.
2014-06-04 11:06:38 +00:00
dchagin
e871acf5e4 MFC r266925:
To allow to run the interpreter itself add a new ELF branding type.
Allow Linux ABI to run ELF interpreter.
2014-06-03 04:31:42 +00:00
ian
4c5f4bdec5 MFC 263301
In kernel config files, it is supposed to be 'options<space><tab>' not
  'options<tab><tab>', per long standing (but recently not so strictly
  enforced) convention.
2014-05-17 17:34:37 +00:00
ian
d7afc2b3b0 MFC 263246: Align all comments in config files on same column. 2014-05-17 16:57:17 +00:00
ian
3724a25461 MFC 263036, 263059: delete advertising clause in licenses, renumber. 2014-05-17 13:59:11 +00:00
ian
3fad78482e MFC 264304: Really only allow IMGACT_BINMISC for amd64/i386 builds. 2014-05-16 22:55:01 +00:00