1993-08-21 22:24:24 +00:00
|
|
|
# This file tells config what files go into building a kernel,
|
|
|
|
# files marked standard are always included.
|
1993-06-12 14:58:17 +00:00
|
|
|
#
|
1999-08-28 01:08:13 +00:00
|
|
|
# $FreeBSD$
|
Mega-commit for Linux emulator update.. This has been stress tested under
netscape-2.0 for Linux running all the Java stuff. The scrollbars are now
working, at least on my machine. (whew! :-)
I'm uncomfortable with the size of this commit, but it's too
inter-dependant to easily seperate out.
The main changes:
COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386
machine dependent section into the linux emulator itself. The int 0x80
syscall code was almost identical to the lcall 7,0 code and a minor tweak
allows them to both be used with the same C code. All kernels can now
just modload the lkm and it'll DTRT without having to rebuild the kernel
first. Like IBCS2, you can statically compile it in with "options LINUX".
A pile of new syscalls implemented, including getdents(), llseek(),
readv(), writev(), msync(), personality(). The Linux-ELF libraries want
to use some of these.
linux_select() now obeys Linux semantics, ie: returns the time remaining
of the timeout value rather than leaving it the original value.
Quite a few bugs removed, including incorrect arguments being used in
syscalls.. eg: mixups between passing the sigset as an int, vs passing
it as a pointer and doing a copyin(), missing return values, unhandled
cases, SIOC* ioctls, etc.
The build for the code has changed. i386/conf/files now knows how
to build linux_genassym and generate linux_assym.h on the fly.
Supporting changes elsewhere in the kernel:
The user-mode signal trampoline has moved from the U area to immediately
below the top of the stack (below PS_STRINGS). This allows the different
binary emulations to have their own signal trampoline code (which gets rid
of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
that the emulator can provide the exact "struct sigcontext *" argument to
the program's signal handlers.
The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
intended for sigaction only. This enables the support of a SA_RESETHAND
flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
semantics where the signal handler is reset when it's triggered.
makesyscalls.sh no longer appends the struct sysentvec on the end of the
generated init_sysent.c code. It's a lot saner to have it in a seperate
file rather than trying to update the structure inside the awk script. :-)
At exec time, the dozen bytes or so of signal trampoline code are copied
to the top of the user's stack, rather than obtaining the trampoline code
the old way by getting a clone of the parent's user area. This allows
Linux and native binaries to freely exec each other without getting
trampolines mixed up.
1996-03-02 19:38:20 +00:00
|
|
|
#
|
1997-06-01 20:25:55 +00:00
|
|
|
# The long compile-with and dependency lines are required because of
|
|
|
|
# limitations in config: backslash-newline doesn't work in strings, and
|
|
|
|
# dependency lines other than the first are silently ignored.
|
|
|
|
#
|
2016-08-22 17:37:31 +00:00
|
|
|
cloudabi32_vdso.o optional compat_cloudabi32 \
|
|
|
|
dependency "$S/contrib/cloudabi/cloudabi_vdso_i686.S" \
|
|
|
|
compile-with "${CC} -x assembler-with-cpp -shared -nostdinc -nostdlib -Wl,-T$S/compat/cloudabi/cloudabi_vdso.lds $S/contrib/cloudabi/cloudabi_vdso_i686.S -o ${.TARGET}" \
|
|
|
|
no-obj no-implicit-rule \
|
|
|
|
clean "cloudabi32_vdso.o"
|
|
|
|
#
|
|
|
|
cloudabi32_vdso_blob.o optional compat_cloudabi32 \
|
|
|
|
dependency "cloudabi32_vdso.o" \
|
|
|
|
compile-with "${OBJCOPY} --input-target binary --output-target elf32-i386-freebsd --binary-architecture i386 cloudabi32_vdso.o ${.TARGET}" \
|
|
|
|
no-implicit-rule \
|
|
|
|
clean "cloudabi32_vdso_blob.o"
|
|
|
|
#
|
2000-08-22 05:01:08 +00:00
|
|
|
linux_genassym.o optional compat_linux \
|
2018-07-03 21:02:25 +00:00
|
|
|
dependency "$S/i386/linux/linux_genassym.c offset.inc" \
|
2017-02-21 18:59:17 +00:00
|
|
|
compile-with "${CC} ${CFLAGS:N-flto:N-fno-common} -c ${.IMPSRC}" \
|
2000-08-22 05:01:08 +00:00
|
|
|
no-obj no-implicit-rule \
|
1999-12-23 21:52:17 +00:00
|
|
|
clean "linux_genassym.o"
|
Mega-commit for Linux emulator update.. This has been stress tested under
netscape-2.0 for Linux running all the Java stuff. The scrollbars are now
working, at least on my machine. (whew! :-)
I'm uncomfortable with the size of this commit, but it's too
inter-dependant to easily seperate out.
The main changes:
COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386
machine dependent section into the linux emulator itself. The int 0x80
syscall code was almost identical to the lcall 7,0 code and a minor tweak
allows them to both be used with the same C code. All kernels can now
just modload the lkm and it'll DTRT without having to rebuild the kernel
first. Like IBCS2, you can statically compile it in with "options LINUX".
A pile of new syscalls implemented, including getdents(), llseek(),
readv(), writev(), msync(), personality(). The Linux-ELF libraries want
to use some of these.
linux_select() now obeys Linux semantics, ie: returns the time remaining
of the timeout value rather than leaving it the original value.
Quite a few bugs removed, including incorrect arguments being used in
syscalls.. eg: mixups between passing the sigset as an int, vs passing
it as a pointer and doing a copyin(), missing return values, unhandled
cases, SIOC* ioctls, etc.
The build for the code has changed. i386/conf/files now knows how
to build linux_genassym and generate linux_assym.h on the fly.
Supporting changes elsewhere in the kernel:
The user-mode signal trampoline has moved from the U area to immediately
below the top of the stack (below PS_STRINGS). This allows the different
binary emulations to have their own signal trampoline code (which gets rid
of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
that the emulator can provide the exact "struct sigcontext *" argument to
the program's signal handlers.
The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
intended for sigaction only. This enables the support of a SA_RESETHAND
flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
semantics where the signal handler is reset when it's triggered.
makesyscalls.sh no longer appends the struct sysentvec on the end of the
generated init_sysent.c code. It's a lot saner to have it in a seperate
file rather than trying to update the structure inside the awk script. :-)
At exec time, the dozen bytes or so of signal trampoline code are copied
to the top of the user's stack, rather than obtaining the trampoline code
the old way by getting a clone of the parent's user area. This allows
Linux and native binaries to freely exec each other without getting
trampolines mixed up.
1996-03-02 19:38:20 +00:00
|
|
|
#
|
2000-08-22 05:01:08 +00:00
|
|
|
linux_assym.h optional compat_linux \
|
|
|
|
dependency "$S/kern/genassym.sh linux_genassym.o" \
|
2000-06-02 09:27:48 +00:00
|
|
|
compile-with "sh $S/kern/genassym.sh linux_genassym.o > ${.TARGET}" \
|
2000-08-22 05:01:08 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
Mega-commit for Linux emulator update.. This has been stress tested under
netscape-2.0 for Linux running all the Java stuff. The scrollbars are now
working, at least on my machine. (whew! :-)
I'm uncomfortable with the size of this commit, but it's too
inter-dependant to easily seperate out.
The main changes:
COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386
machine dependent section into the linux emulator itself. The int 0x80
syscall code was almost identical to the lcall 7,0 code and a minor tweak
allows them to both be used with the same C code. All kernels can now
just modload the lkm and it'll DTRT without having to rebuild the kernel
first. Like IBCS2, you can statically compile it in with "options LINUX".
A pile of new syscalls implemented, including getdents(), llseek(),
readv(), writev(), msync(), personality(). The Linux-ELF libraries want
to use some of these.
linux_select() now obeys Linux semantics, ie: returns the time remaining
of the timeout value rather than leaving it the original value.
Quite a few bugs removed, including incorrect arguments being used in
syscalls.. eg: mixups between passing the sigset as an int, vs passing
it as a pointer and doing a copyin(), missing return values, unhandled
cases, SIOC* ioctls, etc.
The build for the code has changed. i386/conf/files now knows how
to build linux_genassym and generate linux_assym.h on the fly.
Supporting changes elsewhere in the kernel:
The user-mode signal trampoline has moved from the U area to immediately
below the top of the stack (below PS_STRINGS). This allows the different
binary emulations to have their own signal trampoline code (which gets rid
of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
that the emulator can provide the exact "struct sigcontext *" argument to
the program's signal handlers.
The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
intended for sigaction only. This enables the support of a SA_RESETHAND
flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
semantics where the signal handler is reset when it's triggered.
makesyscalls.sh no longer appends the struct sysentvec on the end of the
generated init_sysent.c code. It's a lot saner to have it in a seperate
file rather than trying to update the structure inside the awk script. :-)
At exec time, the dozen bytes or so of signal trampoline code are copied
to the top of the user's stack, rather than obtaining the trampoline code
the old way by getting a clone of the parent's user area. This allows
Linux and native binaries to freely exec each other without getting
trampolines mixed up.
1996-03-02 19:38:20 +00:00
|
|
|
clean "linux_assym.h"
|
|
|
|
#
|
2015-05-24 15:28:17 +00:00
|
|
|
linux_locore.o optional compat_linux \
|
|
|
|
dependency "linux_assym.h $S/i386/linux/linux_locore.s" \
|
2017-06-03 03:40:11 +00:00
|
|
|
compile-with "${CC} -x assembler-with-cpp -DLOCORE -shared -s -pipe -I. -I$S -Werror -Wall -fPIC -fno-common -nostdinc -nostdlib -Wl,-T$S/i386/linux/linux_vdso.lds.s -Wl,-soname=linux_vdso.so,--eh-frame-hdr,-warn-common ${.IMPSRC} -o ${.TARGET}" \
|
2015-05-24 15:28:17 +00:00
|
|
|
no-obj no-implicit-rule \
|
|
|
|
clean "linux_locore.o"
|
|
|
|
#
|
|
|
|
linux_vdso.so optional compat_linux \
|
|
|
|
dependency "linux_locore.o" \
|
2015-05-25 01:07:55 +00:00
|
|
|
compile-with "${OBJCOPY} --input-target binary --output-target elf32-i386-freebsd --binary-architecture i386 linux_locore.o ${.TARGET}" \
|
2015-05-24 15:28:17 +00:00
|
|
|
no-implicit-rule \
|
|
|
|
clean "linux_vdso.so"
|
|
|
|
#
|
The second phase of syscons reorganization.
- Split syscons source code into manageable chunks and reorganize
some of complicated functions.
- Many static variables are moved to the softc structure.
- Added a new key function, PREV. When this key is pressed, the vty
immediately before the current vty will become foreground. Analogue
to PREV, which is usually assigned to the PrntScrn key.
PR: kern/10113
Submitted by: Christian Weisgerber <naddy@mips.rhein-neckar.de>
- Modified the kernel console input function sccngetc() so that it
handles function keys properly.
- Reorganized the screen update routine.
- VT switching code is reorganized. It now should be slightly more
robust than before.
- Added the DEVICE_RESUME function so that syscons no longer hooks the
APM resume event directly.
- New kernel configuration options: SC_NO_CUTPASTE, SC_NO_FONT_LOADING,
SC_NO_HISTORY and SC_NO_SYSMOUSE.
Various parts of syscons can be omitted so that the kernel size is
reduced.
SC_PIXEL_MODE
Made the VESA 800x600 mode an option, rather than a standard part of
syscons.
SC_DISABLE_DDBKEY
Disables the `debug' key combination.
SC_ALT_MOUSE_IMAGE
Inverse the character cell at the mouse cursor position in the text
console, rather than drawing an arrow on the screen.
Submitted by: Nick Hibma (n_hibma@FreeBSD.ORG)
SC_DFLT_FONT
makeoptions "SC_DFLT_FONT=_font_name_"
Include the named font as the default font of syscons. 16-line,
14-line and 8-line font data will be compiled in. This option replaces
the existing STD8X16FONT option, which loads 16-line font data only.
- The VGA driver is split into /sys/dev/fb/vga.c and /sys/isa/vga_isa.c.
- The video driver provides a set of ioctl commands to manipulate the
frame buffer.
- New kernel configuration option: VGA_WIDTH90
Enables 90 column modes: 90x25, 90x30, 90x43, 90x50, 90x60. These
modes are mot always supported by the video card.
PR: i386/7510
Submitted by: kbyanc@freedomnet.com and alexv@sui.gda.itesm.mx.
- The header file machine/console.h is reorganized; its contents is now
split into sys/fbio.h, sys/kbio.h (a new file) and sys/consio.h
(another new file). machine/console.h is still maintained for
compatibility reasons.
- Kernel console selection/installation routines are fixed and
slightly rebumped so that it should now be possible to switch between
the interanl kernel console (sc or vt) and a remote kernel console
(sio) again, as it was in 2.x, 3.0 and 3.1.
- Screen savers and splash screen decoders
Because of the header file reorganization described above, screen
savers and splash screen decoders are slightly modified. After this
update, /sys/modules/syscons/saver.h is no longer necessary and is
removed.
1999-06-22 14:14:06 +00:00
|
|
|
font.h optional sc_dflt_font \
|
2007-10-25 14:16:07 +00:00
|
|
|
compile-with "uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'static u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'static u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'static u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \
|
The second phase of syscons reorganization.
- Split syscons source code into manageable chunks and reorganize
some of complicated functions.
- Many static variables are moved to the softc structure.
- Added a new key function, PREV. When this key is pressed, the vty
immediately before the current vty will become foreground. Analogue
to PREV, which is usually assigned to the PrntScrn key.
PR: kern/10113
Submitted by: Christian Weisgerber <naddy@mips.rhein-neckar.de>
- Modified the kernel console input function sccngetc() so that it
handles function keys properly.
- Reorganized the screen update routine.
- VT switching code is reorganized. It now should be slightly more
robust than before.
- Added the DEVICE_RESUME function so that syscons no longer hooks the
APM resume event directly.
- New kernel configuration options: SC_NO_CUTPASTE, SC_NO_FONT_LOADING,
SC_NO_HISTORY and SC_NO_SYSMOUSE.
Various parts of syscons can be omitted so that the kernel size is
reduced.
SC_PIXEL_MODE
Made the VESA 800x600 mode an option, rather than a standard part of
syscons.
SC_DISABLE_DDBKEY
Disables the `debug' key combination.
SC_ALT_MOUSE_IMAGE
Inverse the character cell at the mouse cursor position in the text
console, rather than drawing an arrow on the screen.
Submitted by: Nick Hibma (n_hibma@FreeBSD.ORG)
SC_DFLT_FONT
makeoptions "SC_DFLT_FONT=_font_name_"
Include the named font as the default font of syscons. 16-line,
14-line and 8-line font data will be compiled in. This option replaces
the existing STD8X16FONT option, which loads 16-line font data only.
- The VGA driver is split into /sys/dev/fb/vga.c and /sys/isa/vga_isa.c.
- The video driver provides a set of ioctl commands to manipulate the
frame buffer.
- New kernel configuration option: VGA_WIDTH90
Enables 90 column modes: 90x25, 90x30, 90x43, 90x50, 90x60. These
modes are mot always supported by the video card.
PR: i386/7510
Submitted by: kbyanc@freedomnet.com and alexv@sui.gda.itesm.mx.
- The header file machine/console.h is reorganized; its contents is now
split into sys/fbio.h, sys/kbio.h (a new file) and sys/consio.h
(another new file). machine/console.h is still maintained for
compatibility reasons.
- Kernel console selection/installation routines are fixed and
slightly rebumped so that it should now be possible to switch between
the interanl kernel console (sc or vt) and a remote kernel console
(sio) again, as it was in 2.x, 3.0 and 3.1.
- Screen savers and splash screen decoders
Because of the header file reorganization described above, screen
savers and splash screen decoders are slightly modified. After this
update, /sys/modules/syscons/saver.h is no longer necessary and is
removed.
1999-06-22 14:14:06 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
2000-03-23 15:42:24 +00:00
|
|
|
clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8"
|
1997-07-25 11:53:30 +00:00
|
|
|
#
|
Keyboard driver update in preparation for the USB keyboard driver.
- Refined internal interface in keyboard drivers so that:
1. the side effect of device probe is kept minimal,
2. polling mode function is added,
3. and new ioctl and configuration options are added (see below).
- Added new ioctl: KDSETREPEAT
Set keyboard typematic rate. There has existed an ioctl command,
KDSETRAD, for the same purpose. However, KDSETRAD is dependent on
the AT keyboard. KDSETREPEAT provides more generic interface.
KDSETRAD will still be supported in the atkbd driver.
- Added new configuration options:
ATKBD_DFLT_KEYMAP
Specify a keymap to be used as the default, built-in keymap.
(There has been undocumented options, DKKEYMAP, UKKEYMAP, GRKEYMAP,
SWKEYMAP, RUKEYMAP, ESKEYMAP, and ISKEYMAP to set the default keymap.
These options are now gone for good. The new option is more general.)
KBD_DISABLE_KEYMAP_LOADING
Don't allow the user to change the keymap.
1999-03-10 10:36:53 +00:00
|
|
|
atkbdmap.h optional atkbd_dflt_keymap \
|
2016-03-28 19:51:45 +00:00
|
|
|
compile-with "kbdcontrol -P ${S:S/sys$/share/}/vt/keymaps -P ${S:S/sys$/share/}/syscons/keymaps -L ${ATKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h" \
|
Keyboard driver update in preparation for the USB keyboard driver.
- Refined internal interface in keyboard drivers so that:
1. the side effect of device probe is kept minimal,
2. polling mode function is added,
3. and new ioctl and configuration options are added (see below).
- Added new ioctl: KDSETREPEAT
Set keyboard typematic rate. There has existed an ioctl command,
KDSETRAD, for the same purpose. However, KDSETRAD is dependent on
the AT keyboard. KDSETREPEAT provides more generic interface.
KDSETRAD will still be supported in the atkbd driver.
- Added new configuration options:
ATKBD_DFLT_KEYMAP
Specify a keymap to be used as the default, built-in keymap.
(There has been undocumented options, DKKEYMAP, UKKEYMAP, GRKEYMAP,
SWKEYMAP, RUKEYMAP, ESKEYMAP, and ISKEYMAP to set the default keymap.
These options are now gone for good. The new option is more general.)
KBD_DISABLE_KEYMAP_LOADING
Don't allow the user to change the keymap.
1999-03-10 10:36:53 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
|
|
|
clean "atkbdmap.h"
|
|
|
|
#
|
|
|
|
ukbdmap.h optional ukbd_dflt_keymap \
|
2016-03-28 19:51:45 +00:00
|
|
|
compile-with "kbdcontrol -P ${S:S/sys$/share/}/vt/keymaps -P ${S:S/sys$/share/}/syscons/keymaps -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \
|
Keyboard driver update in preparation for the USB keyboard driver.
- Refined internal interface in keyboard drivers so that:
1. the side effect of device probe is kept minimal,
2. polling mode function is added,
3. and new ioctl and configuration options are added (see below).
- Added new ioctl: KDSETREPEAT
Set keyboard typematic rate. There has existed an ioctl command,
KDSETRAD, for the same purpose. However, KDSETRAD is dependent on
the AT keyboard. KDSETREPEAT provides more generic interface.
KDSETRAD will still be supported in the atkbd driver.
- Added new configuration options:
ATKBD_DFLT_KEYMAP
Specify a keymap to be used as the default, built-in keymap.
(There has been undocumented options, DKKEYMAP, UKKEYMAP, GRKEYMAP,
SWKEYMAP, RUKEYMAP, ESKEYMAP, and ISKEYMAP to set the default keymap.
These options are now gone for good. The new option is more general.)
KBD_DISABLE_KEYMAP_LOADING
Don't allow the user to change the keymap.
1999-03-10 10:36:53 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
|
|
|
clean "ukbdmap.h"
|
|
|
|
#
|
2011-12-28 23:26:58 +00:00
|
|
|
hpt27xx_lib.o optional hpt27xx \
|
|
|
|
dependency "$S/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu" \
|
|
|
|
compile-with "uudecode < $S/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu" \
|
|
|
|
no-implicit-rule
|
2013-07-06 07:49:41 +00:00
|
|
|
#
|
2004-10-24 08:53:40 +00:00
|
|
|
hptmvraid.o optional hptmv \
|
2007-10-25 14:16:07 +00:00
|
|
|
dependency "$S/dev/hptmv/i386-elf.raid.o.uu" \
|
|
|
|
compile-with "uudecode < $S/dev/hptmv/i386-elf.raid.o.uu" \
|
2004-10-24 08:53:40 +00:00
|
|
|
no-implicit-rule
|
|
|
|
#
|
2013-07-06 07:49:41 +00:00
|
|
|
hptnr_lib.o optional hptnr \
|
|
|
|
dependency "$S/dev/hptnr/i386-elf.hptnr_lib.o.uu" \
|
|
|
|
compile-with "uudecode < $S/dev/hptnr/i386-elf.hptnr_lib.o.uu" \
|
|
|
|
no-implicit-rule
|
|
|
|
#
|
2007-12-15 00:56:17 +00:00
|
|
|
hptrr_lib.o optional hptrr \
|
|
|
|
dependency "$S/dev/hptrr/i386-elf.hptrr_lib.o.uu" \
|
|
|
|
compile-with "uudecode < $S/dev/hptrr/i386-elf.hptrr_lib.o.uu" \
|
|
|
|
no-implicit-rule
|
|
|
|
#
|
2015-06-10 15:53:39 +00:00
|
|
|
cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S optional zfs | dtrace compile-with "${ZFS_S}"
|
|
|
|
cddl/dev/dtrace/i386/dtrace_asm.S optional dtrace compile-with "${DTRACE_S}"
|
|
|
|
cddl/dev/dtrace/i386/dtrace_subr.c optional dtrace compile-with "${DTRACE_C}"
|
|
|
|
cddl/dev/fbt/x86/fbt_isa.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
|
|
|
|
cddl/dev/dtrace/x86/dis_tables.c optional dtrace_fbt | dtraceall compile-with "${DTRACE_C}"
|
2016-07-20 00:02:10 +00:00
|
|
|
cddl/dev/dtrace/x86/instr_size.c optional dtrace_fbt | dtraceall compile-with "${DTRACE_C}"
|
2006-05-07 18:12:18 +00:00
|
|
|
compat/linprocfs/linprocfs.c optional linprocfs
|
2006-05-09 22:27:01 +00:00
|
|
|
compat/linsysfs/linsysfs.c optional linsysfs
|
2015-05-24 16:41:39 +00:00
|
|
|
compat/linux/linux_event.c optional compat_linux
|
Add the linux 2.6.x stuff (not used by default!):
- TLS - complete
- pid/tid mangling - complete
- thread area - complete
- futexes - complete with issues
- clone() extension - complete with some possible minor issues
- mq*/timer*/clock* stuff - complete but untested and the mq* stuff is
disabled when not build as part of the kernel with native FreeBSD mq*
support (module support for this will come later)
Tested with:
- linux-firefox - works, tested
- linux-opera - works, tested
- linux-realplay - doesnt work, issue with futexes
- linux-skype - doesnt work, issue with futexes
- linux-rt2-demo - works, tested
- linux-acroread - doesnt work, unknown reason (coredump) and sometimes
issue with futexes
- various unix utilities in linux-base-gentoo3 and linux-base-fc4:
everything tried worked
On amd64 not everything is supported like on i386, the catchup is planned for
later when the remaining bugs in the new functions are fixed.
To test this new stuff, you have to run
sysctl compat.linux.osrelease=2.6.16
to switch back use
sysctl compat.linux.osrelease=2.4.2
Don't switch while running a linux program, strange things may or may not
happen.
Sponsored by: Google SoC 2006
Submitted by: rdivacky
Some suggestions/help by: jhb, kib, manu@NetBSD.org, netchild
2006-08-15 12:54:30 +00:00
|
|
|
compat/linux/linux_emul.c optional compat_linux
|
2018-03-16 14:46:38 +00:00
|
|
|
compat/linux/linux_errno.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/linux/linux_file.c optional compat_linux
|
2011-02-12 18:17:12 +00:00
|
|
|
compat/linux/linux_fork.c optional compat_linux
|
Add the linux 2.6.x stuff (not used by default!):
- TLS - complete
- pid/tid mangling - complete
- thread area - complete
- futexes - complete with issues
- clone() extension - complete with some possible minor issues
- mq*/timer*/clock* stuff - complete but untested and the mq* stuff is
disabled when not build as part of the kernel with native FreeBSD mq*
support (module support for this will come later)
Tested with:
- linux-firefox - works, tested
- linux-opera - works, tested
- linux-realplay - doesnt work, issue with futexes
- linux-skype - doesnt work, issue with futexes
- linux-rt2-demo - works, tested
- linux-acroread - doesnt work, unknown reason (coredump) and sometimes
issue with futexes
- various unix utilities in linux-base-gentoo3 and linux-base-fc4:
everything tried worked
On amd64 not everything is supported like on i386, the catchup is planned for
later when the remaining bugs in the new functions are fixed.
To test this new stuff, you have to run
sysctl compat.linux.osrelease=2.6.16
to switch back use
sysctl compat.linux.osrelease=2.4.2
Don't switch while running a linux program, strange things may or may not
happen.
Sponsored by: Google SoC 2006
Submitted by: rdivacky
Some suggestions/help by: jhb, kib, manu@NetBSD.org, netchild
2006-08-15 12:54:30 +00:00
|
|
|
compat/linux/linux_futex.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/linux/linux_getcwd.c optional compat_linux
|
|
|
|
compat/linux/linux_ioctl.c optional compat_linux
|
|
|
|
compat/linux/linux_ipc.c optional compat_linux
|
|
|
|
compat/linux/linux_mib.c optional compat_linux
|
|
|
|
compat/linux/linux_misc.c optional compat_linux
|
2016-07-10 08:38:10 +00:00
|
|
|
compat/linux/linux_mmap.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/linux/linux_signal.c optional compat_linux
|
|
|
|
compat/linux/linux_socket.c optional compat_linux
|
|
|
|
compat/linux/linux_stats.c optional compat_linux
|
|
|
|
compat/linux/linux_sysctl.c optional compat_linux
|
Add the linux 2.6.x stuff (not used by default!):
- TLS - complete
- pid/tid mangling - complete
- thread area - complete
- futexes - complete with issues
- clone() extension - complete with some possible minor issues
- mq*/timer*/clock* stuff - complete but untested and the mq* stuff is
disabled when not build as part of the kernel with native FreeBSD mq*
support (module support for this will come later)
Tested with:
- linux-firefox - works, tested
- linux-opera - works, tested
- linux-realplay - doesnt work, issue with futexes
- linux-skype - doesnt work, issue with futexes
- linux-rt2-demo - works, tested
- linux-acroread - doesnt work, unknown reason (coredump) and sometimes
issue with futexes
- various unix utilities in linux-base-gentoo3 and linux-base-fc4:
everything tried worked
On amd64 not everything is supported like on i386, the catchup is planned for
later when the remaining bugs in the new functions are fixed.
To test this new stuff, you have to run
sysctl compat.linux.osrelease=2.6.16
to switch back use
sysctl compat.linux.osrelease=2.4.2
Don't switch while running a linux program, strange things may or may not
happen.
Sponsored by: Google SoC 2006
Submitted by: rdivacky
Some suggestions/help by: jhb, kib, manu@NetBSD.org, netchild
2006-08-15 12:54:30 +00:00
|
|
|
compat/linux/linux_time.c optional compat_linux
|
2014-09-18 08:36:45 +00:00
|
|
|
compat/linux/linux_timer.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/linux/linux_uid16.c optional compat_linux
|
|
|
|
compat/linux/linux_util.c optional compat_linux
|
2015-05-24 15:28:17 +00:00
|
|
|
compat/linux/linux_vdso.c optional compat_linux
|
2015-05-24 17:47:20 +00:00
|
|
|
compat/linux/linux.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/ndis/kern_ndis.c optional ndisapi pci
|
Next step on the road to IRPs: create and use an imitation of the
Windows DRIVER_OBJECT and DEVICE_OBJECT mechanism so that we can
simulate driver stacking.
In Windows, each loaded driver image is attached to a DRIVER_OBJECT
structure. Windows uses the registry to match up a given vendor/device
ID combination with a corresponding DRIVER_OBJECT. When a driver image
is first loaded, its DriverEntry() routine is invoked, which sets up
the AddDevice() function pointer in the DRIVER_OBJECT and creates
a dispatch table (based on IRP major codes). When a Windows bus driver
detects a new device, it creates a Physical Device Object (PDO) for
it. This is a DEVICE_OBJECT structure, with semantics analagous to
that of a device_t in FreeBSD. The Windows PNP manager will invoke
the driver's AddDevice() function and pass it pointers to the DRIVER_OBJECT
and the PDO.
The AddDevice() function then creates a new DRIVER_OBJECT structure of
its own. This is known as the Functional Device Object (FDO) and
corresponds roughly to a private softc instance. The driver uses
IoAttachDeviceToDeviceStack() to add this device object to the
driver stack for this PDO. Subsequent drivers (called filter drivers
in Windows-speak) can be loaded which add themselves to the stack.
When someone issues an IRP to a device, it travel along the stack
passing through several possible filter drivers until it reaches
the functional driver (which actually knows how to talk to the hardware)
at which point it will be completed. This is how Windows achieves
driver layering.
Project Evil now simulates most of this. if_ndis now has a modevent
handler which will use MOD_LOAD and MOD_UNLOAD events to drive the
creation and destruction of DRIVER_OBJECTs. (The load event also
does the relocation/dynalinking of the image.) We don't have a registry,
so the DRIVER_OBJECTS are stored in a linked list for now. Eventually,
the list entry will contain the vendor/device ID list extracted from
the .INF file. When ndis_probe() is called and detectes a supported
device, it will create a PDO for the device instance and attach it
to the DRIVER_OBJECT just as in Windows. ndis_attach() will then call
our NdisAddDevice() handler to create the FDO. The NDIS miniport block
is now a device extension hung off the FDO, just as it is in Windows.
The miniport characteristics table is now an extension hung off the
DRIVER_OBJECT as well (the characteristics are the same for all devices
handled by a given driver, so they don't need to be per-instance.)
We also do an IoAttachDeviceToDeviceStack() to put the FDO on the
stack for the PDO. There are a couple of fake bus drivers created
for the PCI and pccard buses. Eventually, there will be one for USB,
which will actually accept USB IRP.s
Things should still work just as before, only now we do things in
the proper order and maintain the correct framework to support passing
IRPs between drivers.
Various changes:
- corrected the comments about IRQL handling in subr_hal.c to more
accurately reflect reality
- update ndiscvt to make the drv_data symbol in ndis_driver_data.h a
global so that if_ndis_pci.o and/or if_ndis_pccard.o can see it.
- Obtain the softc pointer from the miniport block by referencing
the PDO rather than a private pointer of our own (nmb_ifp is no
longer used)
- implement IoAttachDeviceToDeviceStack(), IoDetachDevice(),
IoGetAttachedDevice(), IoAllocateDriverObjectExtension(),
IoGetDriverObjectExtension(), IoCreateDevice(), IoDeleteDevice(),
IoAllocateIrp(), IoReuseIrp(), IoMakeAssociatedIrp(), IoFreeIrp(),
IoInitializeIrp()
- fix a few mistakes in the driver_object and device_object definitions
- add a new module, kern_windrv.c, to handle the driver registration
and relocation/dynalinkign duties (which don't really belong in
kern_ndis.c).
- made ndis_block and ndis_chars in the ndis_softc stucture pointers
and modified all references to it
- fixed NdisMRegisterMiniport() and NdisInitializeWrapper() so they
work correctly with the new driver_object mechanism
- changed ndis_attach() to call NdisAddDevice() instead of ndis_load_driver()
(which is now deprecated)
- used ExAllocatePoolWithTag()/ExFreePool() in lookaside list routines
instead of kludged up alloc/free routines
- added kern_windrv.c to sys/modules/ndis/Makefile and files.i386.
2005-02-08 17:23:25 +00:00
|
|
|
compat/ndis/kern_windrv.c optional ndisapi pci
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/ndis/subr_hal.c optional ndisapi pci
|
|
|
|
compat/ndis/subr_ndis.c optional ndisapi pci
|
|
|
|
compat/ndis/subr_ntoskrnl.c optional ndisapi pci
|
|
|
|
compat/ndis/subr_pe.c optional ndisapi pci
|
- Correct one aspect of the driver_object/device_object/IRP framework:
when we create a PDO, the driver_object associated with it is that
of the parent driver, not the driver we're trying to attach. For
example, if we attach a PCI device, the PDO we pass to the NdisAddDevice()
function should contain a pointer to fake_pci_driver, not to the NDIS
driver itself. For PCI or PCMCIA devices this doesn't matter because
the child never needs to talk to the parent bus driver, but for USB,
the child needs to be able to send IRPs to the parent USB bus driver, and
for that to work the parent USB bus driver has to be hung off the PDO.
This involves modifying windrv_lookup() so that we can search for
bus drivers by name, if necessary. Our fake bus drivers attach themselves
as "PCI Bus," "PCCARD Bus" and "USB Bus," so we can search for them
using those names.
The individual attachment stubs now create and attach PDOs to the
parent bus drivers instead of hanging them off the NDIS driver's
object, and in if_ndis.c, we now search for the correct driver
object depending on the bus type, and use that to find the correct PDO.
With this fix, I can get my sample USB ethernet driver to deliver
an IRP to my fake parent USB bus driver's dispatch routines.
- Add stub modules for USB support: subr_usbd.c, usbd_var.h and
if_ndis_usb.c. The subr_usbd.c module is hooked up the build
but currently doesn't do very much. It provides the stub USB
parent driver object and a dispatch routine for
IRM_MJ_INTERNAL_DEVICE_CONTROL. The only exported function at
the moment is USBD_GetUSBDIVersion(). The if_ndis_usb.c stub
compiles, but is not hooked up to the build yet. I'm putting
these here so I can keep them under source code control as I
flesh them out.
2005-02-24 21:49:14 +00:00
|
|
|
compat/ndis/subr_usbd.c optional ndisapi pci
|
2005-04-11 16:23:13 +00:00
|
|
|
compat/ndis/winx32_wrap.S optional ndisapi pci
|
2017-02-06 08:49:57 +00:00
|
|
|
bf_enc.o optional crypto | ipsec | ipsec_support \
|
2005-11-27 21:41:58 +00:00
|
|
|
dependency "$S/crypto/blowfish/arch/i386/bf_enc.S $S/crypto/blowfish/arch/i386/bf_enc_586.S $S/crypto/blowfish/arch/i386/bf_enc_686.S" \
|
|
|
|
compile-with "${CC} -c -I$S/crypto/blowfish/arch/i386 ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}" \
|
2002-03-05 09:19:02 +00:00
|
|
|
no-implicit-rule
|
2010-07-23 11:00:46 +00:00
|
|
|
crypto/aesni/aeskeys_i386.S optional aesni
|
|
|
|
crypto/aesni/aesni.c optional aesni
|
2014-12-12 19:56:36 +00:00
|
|
|
aesni_ghash.o optional aesni \
|
|
|
|
dependency "$S/crypto/aesni/aesni_ghash.c" \
|
2015-03-14 17:19:48 +00:00
|
|
|
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -mmmx -msse -msse4 -maes -mpclmul ${.IMPSRC}" \
|
2014-12-12 19:56:36 +00:00
|
|
|
no-implicit-rule \
|
|
|
|
clean "aesni_ghash.o"
|
2019-05-25 07:26:30 +00:00
|
|
|
aesni_ccm.o optional aesni \
|
|
|
|
dependency "$S/crypto/aesni/aesni_ccm.c" \
|
|
|
|
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -mmmx -msse -msse4 -maes -mpclmul ${.IMPSRC}" \
|
|
|
|
no-implicit-rule \
|
|
|
|
clean "aesni_ccm.o"
|
2013-09-03 18:31:23 +00:00
|
|
|
aesni_wrap.o optional aesni \
|
|
|
|
dependency "$S/crypto/aesni/aesni_wrap.c" \
|
2015-03-14 17:19:48 +00:00
|
|
|
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${NO_WCAST_QUAL} ${PROF} -mmmx -msse -msse4 -maes ${.IMPSRC}" \
|
2013-09-03 18:31:23 +00:00
|
|
|
no-implicit-rule \
|
|
|
|
clean "aesni_wrap.o"
|
2017-02-06 08:49:57 +00:00
|
|
|
crypto/des/arch/i386/des_enc.S optional crypto | ipsec | ipsec_support | netsmb
|
2017-09-26 23:12:32 +00:00
|
|
|
intel_sha1.o optional aesni \
|
|
|
|
dependency "$S/crypto/aesni/intel_sha1.c" \
|
|
|
|
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${PROF} -mmmx -msse -msse4 -msha ${.IMPSRC}" \
|
|
|
|
no-implicit-rule \
|
|
|
|
clean "intel_sha1.o"
|
|
|
|
intel_sha256.o optional aesni \
|
|
|
|
dependency "$S/crypto/aesni/intel_sha256.c" \
|
|
|
|
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${PROF} -mmmx -msse -msse4 -msha ${.IMPSRC}" \
|
|
|
|
no-implicit-rule \
|
|
|
|
clean "intel_sha256.o"
|
2005-08-18 00:30:22 +00:00
|
|
|
crypto/via/padlock.c optional padlock
|
2006-07-22 16:18:47 +00:00
|
|
|
crypto/via/padlock_cipher.c optional padlock
|
|
|
|
crypto/via/padlock_hash.c optional padlock
|
2017-02-06 14:41:34 +00:00
|
|
|
dev/acpica/acpi_pci.c optional acpi pci
|
|
|
|
dev/acpica/acpi_pci_link.c optional acpi pci
|
|
|
|
dev/acpica/acpi_pcib.c optional acpi pci
|
|
|
|
dev/acpica/acpi_pcib_acpi.c optional acpi pci
|
|
|
|
dev/acpica/acpi_pcib_pci.c optional acpi pci
|
2009-01-23 17:48:18 +00:00
|
|
|
dev/agp/agp_ali.c optional agp
|
|
|
|
dev/agp/agp_amd.c optional agp
|
|
|
|
dev/agp/agp_amd64.c optional agp
|
|
|
|
dev/agp/agp_ati.c optional agp
|
|
|
|
dev/agp/agp_i810.c optional agp
|
|
|
|
dev/agp/agp_intel.c optional agp
|
2007-11-12 21:51:38 +00:00
|
|
|
dev/agp/agp_nvidia.c optional agp
|
2009-01-23 17:48:18 +00:00
|
|
|
dev/agp/agp_sis.c optional agp
|
|
|
|
dev/agp/agp_via.c optional agp
|
2009-11-30 11:44:03 +00:00
|
|
|
dev/amdsbwd/amdsbwd.c optional amdsbwd
|
2017-09-05 15:19:14 +00:00
|
|
|
dev/amdsmn/amdsmn.c optional amdsmn | amdtemp
|
2009-03-13 16:08:08 +00:00
|
|
|
dev/amdtemp/amdtemp.c optional amdtemp
|
2005-03-31 20:21:43 +00:00
|
|
|
dev/arcmsr/arcmsr.c optional arcmsr pci
|
2007-11-07 20:08:15 +00:00
|
|
|
dev/asmc/asmc.c optional asmc isa
|
2005-06-10 20:56:38 +00:00
|
|
|
dev/atkbdc/atkbd.c optional atkbd atkbdc
|
|
|
|
dev/atkbdc/atkbd_atkbdc.c optional atkbd atkbdc
|
|
|
|
dev/atkbdc/atkbdc.c optional atkbdc
|
|
|
|
dev/atkbdc/atkbdc_isa.c optional atkbdc isa
|
|
|
|
dev/atkbdc/atkbdc_subr.c optional atkbdc
|
|
|
|
dev/atkbdc/psm.c optional psm atkbdc
|
2013-09-20 20:18:49 +00:00
|
|
|
dev/bxe/bxe.c optional bxe pci
|
|
|
|
dev/bxe/bxe_stats.c optional bxe pci
|
|
|
|
dev/bxe/bxe_debug.c optional bxe pci
|
|
|
|
dev/bxe/ecore_sp.c optional bxe pci
|
|
|
|
dev/bxe/bxe_elink.c optional bxe pci
|
|
|
|
dev/bxe/57710_init_values.c optional bxe pci
|
|
|
|
dev/bxe/57711_init_values.c optional bxe pci
|
|
|
|
dev/bxe/57712_init_values.c optional bxe pci
|
2006-01-31 23:11:35 +00:00
|
|
|
dev/ce/ceddk.c optional ce
|
|
|
|
dev/ce/if_ce.c optional ce
|
2011-12-29 21:17:35 +00:00
|
|
|
dev/ce/tau32-ddk.c optional ce \
|
|
|
|
compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}"
|
2007-08-15 19:26:03 +00:00
|
|
|
dev/coretemp/coretemp.c optional coretemp
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/cp/cpddk.c optional cp
|
|
|
|
dev/cp/if_cp.c optional cp
|
2008-08-08 16:26:53 +00:00
|
|
|
dev/cpuctl/cpuctl.c optional cpuctl
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/ctau/ctau.c optional ctau
|
|
|
|
dev/ctau/ctddk.c optional ctau
|
|
|
|
dev/ctau/if_ct.c optional ctau
|
|
|
|
dev/cx/csigma.c optional cx
|
|
|
|
dev/cx/cxddk.c optional cx
|
|
|
|
dev/cx/if_cx.c optional cx
|
2009-09-21 07:08:20 +00:00
|
|
|
dev/dpms/dpms.c optional dpms
|
2005-02-09 20:03:40 +00:00
|
|
|
dev/ed/if_ed_3c503.c optional ed isa ed_3c503
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/ed/if_ed_isa.c optional ed isa
|
2005-02-09 20:03:40 +00:00
|
|
|
dev/ed/if_ed_wd80x3.c optional ed isa
|
|
|
|
dev/ed/if_ed_hpp.c optional ed isa ed_hpp
|
|
|
|
dev/ed/if_ed_sic.c optional ed isa ed_sic
|
2005-11-27 21:41:58 +00:00
|
|
|
dev/fb/fb.c optional fb | vga
|
2009-09-21 07:05:48 +00:00
|
|
|
dev/fb/s3_pci.c optional s3pci
|
2009-09-21 07:08:20 +00:00
|
|
|
dev/fb/vesa.c optional vga vesa
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/fb/vga.c optional vga
|
|
|
|
dev/fdc/fdc.c optional fdc
|
|
|
|
dev/fdc/fdc_acpi.c optional fdc
|
|
|
|
dev/fdc/fdc_isa.c optional fdc isa
|
|
|
|
dev/fdc/fdc_pccard.c optional fdc pccard
|
|
|
|
dev/fe/if_fe_isa.c optional fe isa
|
2011-05-15 14:01:23 +00:00
|
|
|
dev/glxiic/glxiic.c optional glxiic
|
2008-08-09 14:52:31 +00:00
|
|
|
dev/glxsb/glxsb.c optional glxsb
|
|
|
|
dev/glxsb/glxsb_hash.c optional glxsb
|
2016-11-04 16:24:38 +00:00
|
|
|
dev/gpio/bytgpio.c optional bytgpio
|
2018-02-22 19:12:32 +00:00
|
|
|
dev/gpio/chvgpio.c optional chvgpio
|
2013-07-06 07:49:41 +00:00
|
|
|
dev/hpt27xx/hpt27xx_os_bsd.c optional hpt27xx
|
|
|
|
dev/hpt27xx/hpt27xx_osm_bsd.c optional hpt27xx
|
2011-12-28 23:26:58 +00:00
|
|
|
dev/hpt27xx/hpt27xx_config.c optional hpt27xx
|
2005-01-10 04:40:23 +00:00
|
|
|
dev/hptmv/entry.c optional hptmv
|
|
|
|
dev/hptmv/mv.c optional hptmv
|
2005-03-02 05:14:28 +00:00
|
|
|
dev/hptmv/gui_lib.c optional hptmv
|
|
|
|
dev/hptmv/hptproc.c optional hptmv
|
|
|
|
dev/hptmv/ioctl.c optional hptmv
|
2013-07-06 07:49:41 +00:00
|
|
|
dev/hptnr/hptnr_os_bsd.c optional hptnr
|
|
|
|
dev/hptnr/hptnr_osm_bsd.c optional hptnr
|
|
|
|
dev/hptnr/hptnr_config.c optional hptnr
|
2007-12-15 00:56:17 +00:00
|
|
|
dev/hptrr/hptrr_os_bsd.c optional hptrr
|
|
|
|
dev/hptrr/hptrr_osm_bsd.c optional hptrr
|
|
|
|
dev/hptrr/hptrr_config.c optional hptrr
|
2005-04-29 02:40:16 +00:00
|
|
|
dev/hwpmc/hwpmc_amd.c optional hwpmc
|
2008-11-09 17:37:54 +00:00
|
|
|
dev/hwpmc/hwpmc_intel.c optional hwpmc
|
- Add support for PMCs in Intel CPUs of Family 6, model 0xE (Core Solo
and Core Duo), models 0xF (Core2), model 0x17 (Core2Extreme) and
model 0x1C (Atom).
In these CPUs, the actual numbers, kinds and widths of PMCs present
need to queried at run time. Support for specific "architectural"
events also needs to be queried at run time.
Model 0xE CPUs support programmable PMCs, subsequent CPUs
additionally support "fixed-function" counters.
- Use event names that are close to vendor documentation, taking in
account that:
- events with identical semantics on two or more CPUs in this family
can have differing names in vendor documentation,
- identical vendor event names may map to differing events across
CPUs,
- each type of CPU supports a different subset of measurable
events.
Fixed-function and programmable counters both use the same vendor
names for events. The use of a class name prefix ("iaf-" or
"iap-" respectively) permits these to be distinguished.
- In libpmc, refactor pmc_name_of_event() into a public interface
and an internal helper function, for use by log handling code.
- Minor code tweaks: staticize a global, freshen a few comments.
Tested by: gnn
2008-11-27 09:00:47 +00:00
|
|
|
dev/hwpmc/hwpmc_core.c optional hwpmc
|
2010-04-02 13:23:49 +00:00
|
|
|
dev/hwpmc/hwpmc_uncore.c optional hwpmc
|
2008-11-09 17:37:54 +00:00
|
|
|
dev/hwpmc/hwpmc_tsc.c optional hwpmc
|
2005-06-09 19:45:09 +00:00
|
|
|
dev/hwpmc/hwpmc_x86.c optional hwpmc
|
2016-11-18 06:44:18 +00:00
|
|
|
dev/hyperv/pcib/vmbus_pcib.c optional hyperv pci
|
2016-10-28 07:48:17 +00:00
|
|
|
dev/hyperv/netvsc/hn_nvs.c optional hyperv
|
2016-10-31 01:36:28 +00:00
|
|
|
dev/hyperv/netvsc/hn_rndis.c optional hyperv
|
2016-11-01 06:54:25 +00:00
|
|
|
dev/hyperv/netvsc/if_hn.c optional hyperv
|
2013-12-05 00:54:38 +00:00
|
|
|
dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c optional hyperv
|
2014-09-13 02:15:31 +00:00
|
|
|
dev/hyperv/utilities/hv_kvp.c optional hyperv
|
hyperv/vss: Add driver and tools for VSS
VSS stands for "Volume Shadow Copy Service". Unlike virtual machine
snapshot, it only takes snapshot for the virtual disks, so both
filesystem and applications have to aware of it, and cooperate the
whole VSS process.
This driver exposes two device files to the userland:
/dev/hv_fsvss_dev
Normally userland programs should _not_ mess with this device file.
It is currently used by the hv_vss_daemon(8), which freezes and
thaws the filesystem. NOTE: currently only UFS is supported, if
the system mounts _any_ other filesystems, the hv_vss_daemon(8)
will veto the VSS process.
If hv_vss_daemon(8) was disabled, then this device file must be
opened, and proper ioctls must be issued to keep the VSS working.
/dev/hv_appvss_dev
Userland application can opened this device file to receive the
VSS freeze notification, hold the VSS for a while (mainly to flush
application data to filesystem), release the VSS process, and
receive the VSS thaw notification i.e. applications can run again.
The VSS will still work, even if this device file is not opened.
However, only filesystem consistency is promised, if this device
file is not opened or is not operated properly.
hv_vss_daemon(8) is started by devd(8) by default. It can be disabled
by editting /etc/devd/hyperv.conf.
Submitted by: Hongjiang Zhang <honzhan microsoft com>
Reviewed by: kib, mckusick
MFC after: 3 weeks
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D8224
2016-11-15 02:36:12 +00:00
|
|
|
dev/hyperv/utilities/hv_snapshot.c optional hyperv
|
2016-12-20 09:46:14 +00:00
|
|
|
dev/hyperv/utilities/vmbus_heartbeat.c optional hyperv
|
2016-12-20 07:14:24 +00:00
|
|
|
dev/hyperv/utilities/vmbus_ic.c optional hyperv
|
2016-12-20 09:46:14 +00:00
|
|
|
dev/hyperv/utilities/vmbus_shutdown.c optional hyperv
|
|
|
|
dev/hyperv/utilities/vmbus_timesync.c optional hyperv
|
2016-06-01 09:20:52 +00:00
|
|
|
dev/hyperv/vmbus/hyperv.c optional hyperv
|
2016-05-23 06:35:11 +00:00
|
|
|
dev/hyperv/vmbus/hyperv_busdma.c optional hyperv
|
2016-11-18 05:33:01 +00:00
|
|
|
dev/hyperv/vmbus/vmbus.c optional hyperv pci
|
2016-07-27 09:27:08 +00:00
|
|
|
dev/hyperv/vmbus/vmbus_br.c optional hyperv
|
2016-07-19 07:51:22 +00:00
|
|
|
dev/hyperv/vmbus/vmbus_chan.c optional hyperv
|
2016-06-01 09:20:52 +00:00
|
|
|
dev/hyperv/vmbus/vmbus_et.c optional hyperv
|
2016-07-12 07:33:39 +00:00
|
|
|
dev/hyperv/vmbus/vmbus_if.m optional hyperv
|
2017-05-10 05:28:14 +00:00
|
|
|
dev/hyperv/vmbus/vmbus_res.c optional hyperv
|
2016-08-11 05:49:49 +00:00
|
|
|
dev/hyperv/vmbus/vmbus_xact.c optional hyperv
|
2016-06-06 05:55:37 +00:00
|
|
|
dev/hyperv/vmbus/i386/hyperv_machdep.c optional hyperv
|
2016-06-01 09:20:52 +00:00
|
|
|
dev/hyperv/vmbus/i386/vmbus_vector.S optional hyperv
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/ichwd/ichwd.c optional ichwd
|
|
|
|
dev/if_ndis/if_ndis.c optional ndis
|
|
|
|
dev/if_ndis/if_ndis_pccard.c optional ndis pccard
|
2005-11-27 21:41:58 +00:00
|
|
|
dev/if_ndis/if_ndis_pci.c optional ndis cardbus | ndis pci
|
Throw the switch on the new driver generation/loading mechanism. From
here on in, if_ndis.ko will be pre-built as a module, and can be built
into a static kernel (though it's not part of GENERIC). Drivers are
created using the new ndisgen(8) script, which uses ndiscvt(8) under
the covers, along with a few other tools. The result is a driver module
that can be kldloaded into the kernel.
A driver with foo.inf and foo.sys files will be converted into
foo_sys.ko (and foo_sys.o, for those who want/need to make static
kernels). This module contains all of the necessary info from the
.INF file and the driver binary image, converted into an ELF module.
You can kldload this module (or add it to /boot/loader.conf) to have
it loaded automatically. Any required firmware files can be bundled
into the module as well (or converted/loaded separately).
Also, add a workaround for a problem in NdisMSleep(). During system
bootstrap (cold == 1), msleep() always returns 0 without actually
sleeping. The Intel 2200BG driver uses NdisMSleep() to wait for
the NIC's firmware to come to life, and fails to load if NdisMSleep()
doesn't actually delay. As a workaround, if msleep() (and hence
ndis_thsuspend()) returns 0, use a hard DELAY() to sleep instead).
This is not really the right thing to do, but we can't really do much
else. At the very least, this makes the Intel driver happy.
There are probably other drivers that fail in this way during bootstrap.
Unfortunately, the only workaround for those is to avoid pre-loading
them and kldload them once the system is running instead.
2005-04-24 20:21:22 +00:00
|
|
|
dev/if_ndis/if_ndis_usb.c optional ndis usb
|
imcsmb(4): Intel integrated Memory Controller (iMC) SMBus controller driver
imcsmb(4) provides smbus(4) support for the SMBus controller functionality
in the integrated Memory Controllers (iMCs) embedded in Intel Sandybridge-
Xeon, Ivybridge-Xeon, Haswell-Xeon, and Broadwell-Xeon CPUs. Each CPU
implements one or more iMCs, depending on the number of cores; each iMC
implements two SMBus controllers (iMC-SMBs).
*** IMPORTANT NOTE ***
Because motherboard firmware or the BMC might try to use the iMC-SMBs for
monitoring DIMM temperatures and/or managing an NVDIMM, the driver might
need to temporarily disable those functions, or take a hardware interlock,
before using the iMC-SMBs. Details on how to do this may vary from board to
board, and the procedure may be proprietary. It is strongly suggested that
anyone wishing to use this driver contact their motherboard vendor, and
modify the driver as described in the manual page and in the driver itself.
(For what it's worth, the driver as-is has been tested on various SuperMicro
motherboards.)
Reviewed by: avg, jhb
MFC after: 1 week
Relnotes: yes
Sponsored by: Panasas
Differential Revision: https://reviews.freebsd.org/D14447
Discussed with: avg, ian, jhb
Tested by: allanjude (previous version), Panasas
2018-03-03 01:53:51 +00:00
|
|
|
dev/imcsmb/imcsmb.c optional imcsmb
|
|
|
|
dev/imcsmb/imcsmb_pci.c optional imcsmb pci
|
2016-12-27 22:37:24 +00:00
|
|
|
dev/intel/spi.c optional intelspi
|
2005-01-10 04:40:23 +00:00
|
|
|
dev/io/iodev.c optional io
|
2006-02-13 17:56:24 +00:00
|
|
|
dev/ipmi/ipmi.c optional ipmi
|
2006-09-22 22:11:29 +00:00
|
|
|
dev/ipmi/ipmi_acpi.c optional ipmi acpi
|
|
|
|
dev/ipmi/ipmi_isa.c optional ipmi isa
|
|
|
|
dev/ipmi/ipmi_kcs.c optional ipmi
|
|
|
|
dev/ipmi/ipmi_smic.c optional ipmi
|
|
|
|
dev/ipmi/ipmi_smbus.c optional ipmi smbus
|
|
|
|
dev/ipmi/ipmi_smbios.c optional ipmi
|
|
|
|
dev/ipmi/ipmi_ssif.c optional ipmi smbus
|
2006-02-13 17:56:24 +00:00
|
|
|
dev/ipmi/ipmi_pci.c optional ipmi pci
|
2009-03-26 20:23:21 +00:00
|
|
|
dev/ipmi/ipmi_linux.c optional ipmi compat_linux
|
2006-05-17 21:25:23 +00:00
|
|
|
dev/le/if_le_isa.c optional le isa
|
2017-03-30 15:05:10 +00:00
|
|
|
dev/nctgpio/nctgpio.c optional nctgpio
|
2006-06-26 23:41:07 +00:00
|
|
|
dev/nfe/if_nfe.c optional nfe pci
|
2015-10-13 17:22:23 +00:00
|
|
|
dev/ntb/if_ntb/if_ntb.c optional if_ntb
|
2017-08-30 21:16:32 +00:00
|
|
|
dev/ntb/ntb_transport.c optional ntb_transport | if_ntb
|
2017-09-01 19:15:53 +00:00
|
|
|
dev/ntb/ntb.c optional ntb | ntb_transport | if_ntb | ntb_hw_intel | ntb_hw_plx | ntb_hw
|
|
|
|
dev/ntb/ntb_if.m optional ntb | ntb_transport | if_ntb | ntb_hw_intel | ntb_hw_plx | ntb_hw
|
|
|
|
dev/ntb/ntb_hw/ntb_hw_intel.c optional ntb_hw_intel | ntb_hw
|
|
|
|
dev/ntb/ntb_hw/ntb_hw_plx.c optional ntb_hw_plx | ntb_hw
|
2012-09-17 19:26:33 +00:00
|
|
|
dev/nvd/nvd.c optional nvd nvme
|
|
|
|
dev/nvme/nvme.c optional nvme
|
|
|
|
dev/nvme/nvme_ctrlr.c optional nvme
|
|
|
|
dev/nvme/nvme_ctrlr_cmd.c optional nvme
|
|
|
|
dev/nvme/nvme_ns.c optional nvme
|
|
|
|
dev/nvme/nvme_ns_cmd.c optional nvme
|
|
|
|
dev/nvme/nvme_qpair.c optional nvme
|
|
|
|
dev/nvme/nvme_sysctl.c optional nvme
|
|
|
|
dev/nvme/nvme_test.c optional nvme
|
2013-07-19 21:40:57 +00:00
|
|
|
dev/nvme/nvme_util.c optional nvme
|
2007-10-26 03:23:54 +00:00
|
|
|
dev/nvram/nvram.c optional nvram isa
|
2016-03-29 15:19:56 +00:00
|
|
|
dev/ofw/ofwpci.c optional fdt pci
|
2005-10-28 15:58:19 +00:00
|
|
|
dev/pcf/pcf_isa.c optional pcf
|
random(4): Fix RANDOM_LOADABLE build
I introduced an obvious compiler error in r346282, so this change fixes
that.
Unfortunately, RANDOM_LOADABLE isn't covered by our existing tinderbox, and
it seems like there were existing latent linking problems. I believe these
were introduced on accident in r338324 during reduction of the boolean
expression(s) adjacent to randomdev.c and hash.c. It seems the
RANDOM_LOADABLE build breakage has gone unnoticed for nine months.
This change correctly annotates randomdev.c and hash.c with !random_loadable
to match the pre-r338324 logic; and additionally updates the HWRNG drivers
in MD 'files.*', which depend on random_device symbols, with
!random_loadable (it is invalid for the kernel to depend on symbols from a
module).
(The expression for both randomdev.c and hash.c was the same, prior to
r338324: "optional random random_yarrow | random !random_yarrow
!random_loadable". I.e., "random && (yarrow || !loadable)." When Yarrow
was removed ("yarrow := False"), the expression was incorrectly reduced to
"optional random" when it should have retained "random && !loadable".)
Additionally, I discovered that virtio_random was missing a MODULE_DEPEND on
random_device, which breaks kld load/link of the driver on RANDOM_LOADABLE
kernels. Address that issue as well.
PR: 238223
Reported by: Eir Nym <eirnym AT gmail.com>
Reviewed by: delphij, markm
Approved by: secteam(delphij)
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D20466
2019-06-01 01:22:21 +00:00
|
|
|
dev/random/ivy.c optional rdrand_rng !random_loadable
|
|
|
|
dev/random/nehemiah.c optional padlock_rng !random_loadable
|
2008-09-10 18:36:58 +00:00
|
|
|
dev/sbni/if_sbni.c optional sbni
|
|
|
|
dev/sbni/if_sbni_isa.c optional sbni isa
|
|
|
|
dev/sbni/if_sbni_pci.c optional sbni pci
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/sio/sio.c optional sio
|
|
|
|
dev/sio/sio_isa.c optional sio isa
|
2006-07-29 18:38:54 +00:00
|
|
|
dev/sio/sio_pccard.c optional sio pccard
|
|
|
|
dev/sio/sio_pci.c optional sio pci
|
|
|
|
dev/sio/sio_puc.c optional sio puc
|
2005-11-11 09:57:32 +00:00
|
|
|
dev/speaker/spkr.c optional speaker
|
add superio driver
The goal of this driver is consolidate information about SuperIO chips
and to provide for peaceful coexistence of drivers that need to access
SuperIO configuration registers.
While SuperIO chips can host various functions most of them are
discoverable and accessible without any knowledge of the SuperIO.
Examples are: keyboard and mouse controllers, UARTs, floppy disk
controllers. SuperIO-s also provide non-standard functions such as
GPIO, watchdog timers and hardware monitoring. Such functions do
require drivers with a knowledge of a specific SuperIO.
At this time the driver supports a number of ITE and Nuvoton (fka
Winbond) SuperIO chips.
There is a single driver for all devices. So, I have not done the usual
split between the hardware driver and the bus functionality. Although,
superio does act as a bus for devices that represent known non-standard
functions of a SuperIO chip. The bus provides enumeration of child
devices based on the hardcoded knowledge of such functions. The
knowledge as extracted from datasheets and other drivers.
As there is a single driver, I have not defined a kobj interface for it.
So, its interface is currently made of simple functions.
I think that we can the flexibility (and complications) when we actually
need it.
I am planning to convert nctgpio and wbwd to superio bus very soon.
Also, I am working on itwd driver (watchdog in ITE SuperIO-s).
Additionally, there is ithwm driver based on the reverted sensors
import, but I am not sure how to integrate it given that we still lack
any sensors interface.
Discussed with: imp, jhb
MFC after: 7 weeks
Differential Revision: https://reviews.freebsd.org/D8175
2019-07-01 17:05:41 +00:00
|
|
|
dev/superio/superio.c optional superio isa
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/syscons/apm/apm_saver.c optional apm_saver apm
|
2009-09-21 07:08:20 +00:00
|
|
|
dev/syscons/scvesactl.c optional sc vga vesa
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/syscons/scvgarndr.c optional sc vga
|
2010-08-12 00:16:18 +00:00
|
|
|
dev/tpm/tpm.c optional tpm
|
|
|
|
dev/tpm/tpm_acpi.c optional tpm acpi
|
|
|
|
dev/tpm/tpm_isa.c optional tpm isa
|
2012-04-11 02:42:01 +00:00
|
|
|
dev/uart/uart_cpu_x86.c optional uart
|
2011-12-12 09:50:33 +00:00
|
|
|
dev/viawd/viawd.c optional viawd
|
2013-08-23 20:47:16 +00:00
|
|
|
dev/vmware/vmxnet3/if_vmx.c optional vmx
|
2018-03-25 00:57:00 +00:00
|
|
|
dev/vmware/vmci/vmci.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_datagram.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_doorbell.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_driver.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_event.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_hashtable.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_kernel_if.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_qpair.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_queue_pair.c optional vmci
|
|
|
|
dev/vmware/vmci/vmci_resource.c optional vmci
|
2004-06-30 14:19:28 +00:00
|
|
|
dev/acpica/acpi_if.m standard
|
2015-04-28 16:51:48 +00:00
|
|
|
dev/acpica/acpi_hpet.c optional acpi
|
2016-11-22 18:13:04 +00:00
|
|
|
dev/acpica/acpi_timer.c optional acpi
|
2018-12-08 19:10:58 +00:00
|
|
|
dev/acpica/acpi_pxm.c optional acpi
|
2009-06-23 13:17:25 +00:00
|
|
|
dev/acpi_support/acpi_wmi_if.m standard
|
2012-03-06 18:44:52 +00:00
|
|
|
dev/wbwd/wbwd.c optional wbwd
|
2012-01-31 19:38:18 +00:00
|
|
|
dev/isci/isci.c optional isci
|
|
|
|
dev/isci/isci_controller.c optional isci
|
|
|
|
dev/isci/isci_domain.c optional isci
|
|
|
|
dev/isci/isci_interrupt.c optional isci
|
|
|
|
dev/isci/isci_io_request.c optional isci
|
|
|
|
dev/isci/isci_logger.c optional isci
|
|
|
|
dev/isci/isci_oem_parameters.c optional isci
|
|
|
|
dev/isci/isci_remote_device.c optional isci
|
|
|
|
dev/isci/isci_sysctl.c optional isci
|
|
|
|
dev/isci/isci_task_request.c optional isci
|
|
|
|
dev/isci/isci_timer.c optional isci
|
|
|
|
dev/isci/scil/sati.c optional isci
|
|
|
|
dev/isci/scil/sati_abort_task_set.c optional isci
|
|
|
|
dev/isci/scil/sati_atapi.c optional isci
|
|
|
|
dev/isci/scil/sati_device.c optional isci
|
|
|
|
dev/isci/scil/sati_inquiry.c optional isci
|
|
|
|
dev/isci/scil/sati_log_sense.c optional isci
|
|
|
|
dev/isci/scil/sati_lun_reset.c optional isci
|
|
|
|
dev/isci/scil/sati_mode_pages.c optional isci
|
|
|
|
dev/isci/scil/sati_mode_select.c optional isci
|
|
|
|
dev/isci/scil/sati_mode_sense.c optional isci
|
|
|
|
dev/isci/scil/sati_mode_sense_10.c optional isci
|
|
|
|
dev/isci/scil/sati_mode_sense_6.c optional isci
|
|
|
|
dev/isci/scil/sati_move.c optional isci
|
|
|
|
dev/isci/scil/sati_passthrough.c optional isci
|
|
|
|
dev/isci/scil/sati_read.c optional isci
|
|
|
|
dev/isci/scil/sati_read_buffer.c optional isci
|
|
|
|
dev/isci/scil/sati_read_capacity.c optional isci
|
|
|
|
dev/isci/scil/sati_reassign_blocks.c optional isci
|
|
|
|
dev/isci/scil/sati_report_luns.c optional isci
|
|
|
|
dev/isci/scil/sati_request_sense.c optional isci
|
|
|
|
dev/isci/scil/sati_start_stop_unit.c optional isci
|
|
|
|
dev/isci/scil/sati_synchronize_cache.c optional isci
|
|
|
|
dev/isci/scil/sati_test_unit_ready.c optional isci
|
|
|
|
dev/isci/scil/sati_unmap.c optional isci
|
|
|
|
dev/isci/scil/sati_util.c optional isci
|
|
|
|
dev/isci/scil/sati_verify.c optional isci
|
|
|
|
dev/isci/scil/sati_write.c optional isci
|
|
|
|
dev/isci/scil/sati_write_and_verify.c optional isci
|
|
|
|
dev/isci/scil/sati_write_buffer.c optional isci
|
|
|
|
dev/isci/scil/sati_write_long.c optional isci
|
|
|
|
dev/isci/scil/sci_abstract_list.c optional isci
|
|
|
|
dev/isci/scil/sci_base_controller.c optional isci
|
|
|
|
dev/isci/scil/sci_base_domain.c optional isci
|
|
|
|
dev/isci/scil/sci_base_iterator.c optional isci
|
|
|
|
dev/isci/scil/sci_base_library.c optional isci
|
|
|
|
dev/isci/scil/sci_base_logger.c optional isci
|
|
|
|
dev/isci/scil/sci_base_memory_descriptor_list.c optional isci
|
|
|
|
dev/isci/scil/sci_base_memory_descriptor_list_decorator.c optional isci
|
|
|
|
dev/isci/scil/sci_base_object.c optional isci
|
|
|
|
dev/isci/scil/sci_base_observer.c optional isci
|
|
|
|
dev/isci/scil/sci_base_phy.c optional isci
|
|
|
|
dev/isci/scil/sci_base_port.c optional isci
|
|
|
|
dev/isci/scil/sci_base_remote_device.c optional isci
|
|
|
|
dev/isci/scil/sci_base_request.c optional isci
|
|
|
|
dev/isci/scil/sci_base_state_machine.c optional isci
|
|
|
|
dev/isci/scil/sci_base_state_machine_logger.c optional isci
|
|
|
|
dev/isci/scil/sci_base_state_machine_observer.c optional isci
|
|
|
|
dev/isci/scil/sci_base_subject.c optional isci
|
|
|
|
dev/isci/scil/sci_util.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_controller.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_library.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_pci.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_phy.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_port.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_port_configuration_agent.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_remote_device.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_remote_node_context.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_remote_node_table.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_request.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_sgpio.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_smp_remote_device.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_smp_request.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_ssp_request.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_stp_packet_request.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_stp_remote_device.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_stp_request.c optional isci
|
|
|
|
dev/isci/scil/scic_sds_unsolicited_frame_control.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_controller.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_controller_state_handlers.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_controller_states.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_domain.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_domain_state_handlers.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_domain_states.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_high_priority_request_queue.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_internal_io_request.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_io_request.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_io_request_state_handlers.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_io_request_states.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_library.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_remote_device.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_remote_device_ready_substate_handlers.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_remote_device_ready_substates.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_remote_device_starting_substate_handlers.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_remote_device_starting_substates.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_remote_device_state_handlers.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_remote_device_states.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_request.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_smp_activity_clear_affiliation.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_smp_io_request.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_smp_phy.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_smp_remote_device.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_stp_io_request.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_stp_remote_device.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_stp_task_request.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_task_request.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_task_request_state_handlers.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_task_request_states.c optional isci
|
|
|
|
dev/isci/scil/scif_sas_timer.c optional isci
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/acpica/acpi_machdep.c optional acpi
|
2010-11-12 20:55:14 +00:00
|
|
|
acpi_wakecode.o optional acpi \
|
2018-03-20 17:58:51 +00:00
|
|
|
dependency "$S/i386/acpica/acpi_wakecode.S assym.inc" \
|
2010-11-12 20:55:14 +00:00
|
|
|
compile-with "${NORMAL_S}" \
|
2001-07-20 06:07:34 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
2010-11-12 20:55:14 +00:00
|
|
|
clean "acpi_wakecode.o"
|
|
|
|
acpi_wakecode.bin optional acpi \
|
|
|
|
dependency "acpi_wakecode.o" \
|
2012-09-12 13:58:18 +00:00
|
|
|
compile-with "${OBJCOPY} -S -O binary acpi_wakecode.o ${.TARGET}" \
|
2010-11-12 20:55:14 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
|
|
|
clean "acpi_wakecode.bin"
|
|
|
|
acpi_wakecode.h optional acpi \
|
|
|
|
dependency "acpi_wakecode.bin" \
|
|
|
|
compile-with "file2c -sx 'static char wakecode[] = {' '};' < acpi_wakecode.bin > ${.TARGET}" \
|
|
|
|
no-obj no-implicit-rule before-depend \
|
|
|
|
clean "acpi_wakecode.h"
|
|
|
|
acpi_wakedata.h optional acpi \
|
|
|
|
dependency "acpi_wakecode.o" \
|
|
|
|
compile-with '${NM} -n --defined-only acpi_wakecode.o | while read offset dummy what; do echo "#define $${what} 0x$${offset}"; done > ${.TARGET}' \
|
|
|
|
no-obj no-implicit-rule before-depend \
|
|
|
|
clean "acpi_wakedata.h"
|
2001-07-20 06:07:34 +00:00
|
|
|
#
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/bios/apm.c optional apm
|
|
|
|
i386/bios/smapi.c optional smapi
|
|
|
|
i386/bios/smapi_bios.S optional smapi
|
2016-08-22 17:37:31 +00:00
|
|
|
i386/cloudabi32/cloudabi32_sysvec.c optional compat_cloudabi32
|
2005-01-04 06:07:25 +00:00
|
|
|
#i386/i386/apic_vector.s optional apic
|
2015-04-30 15:48:48 +00:00
|
|
|
i386/i386/bios.c standard
|
|
|
|
i386/i386/bioscall.s standard
|
2005-12-07 21:30:47 +00:00
|
|
|
i386/i386/bpf_jit_machdep.c optional bpf_jitter
|
i386 4/4G split.
The change makes the user and kernel address spaces on i386
independent, giving each almost the full 4G of usable virtual addresses
except for one PDE at top used for trampoline and per-CPU trampoline
stacks, and system structures that must be always mapped, namely IDT,
GDT, common TSS and LDT, and process-private TSS and LDT if allocated.
By using 1:1 mapping for the kernel text and data, it appeared
possible to eliminate assembler part of the locore.S which bootstraps
initial page table and KPTmap. The code is rewritten in C and moved
into the pmap_cold(). The comment in vmparam.h explains the KVA
layout.
There is no PCID mechanism available in protected mode, so each
kernel/user switch forth and back completely flushes the TLB, except
for the trampoline PTD region. The TLB invalidations for userspace
becomes trivial, because IPI handlers switch page tables. On the other
hand, context switches no longer need to reload %cr3.
copyout(9) was rewritten to use vm_fault_quick_hold(). An issue for
new copyout(9) is compatibility with wiring user buffers around sysctl
handlers. This explains two kind of locks for copyout ptes and
accounting of the vslock() calls. The vm_fault_quick_hold() AKA slow
path, is only tried after the 'fast path' failed, which temporary
changes mapping to the userspace and copies the data to/from small
per-cpu buffer in the trampoline. If a page fault occurs during the
copy, it is short-circuit by exception.s to not even reach C code.
The change was motivated by the need to implement the Meltdown
mitigation, but instead of KPTI the full split is done. The i386
architecture already shows the sizing problems, in particular, it is
impossible to link clang and lld with debugging. I expect that the
issues due to the virtual address space limits would only exaggerate
and the split gives more liveness to the platform.
Tested by: pho
Discussed with: bde
Sponsored by: The FreeBSD Foundation
MFC after: 1 month
Differential revision: https://reviews.freebsd.org/D14633
2018-04-13 20:30:49 +00:00
|
|
|
i386/i386/copyout.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/db_disasm.c optional ddb
|
|
|
|
i386/i386/db_interface.c optional ddb
|
|
|
|
i386/i386/db_trace.c optional ddb
|
2005-11-27 21:41:58 +00:00
|
|
|
i386/i386/elan-mmcr.c optional cpu_elan | cpu_soekris
|
1998-10-09 23:08:14 +00:00
|
|
|
i386/i386/elf_machdep.c standard
|
2015-04-30 15:48:48 +00:00
|
|
|
i386/i386/exception.s standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/gdb_machdep.c optional gdb
|
|
|
|
i386/i386/geode.c optional cpu_geode
|
2011-04-20 12:58:30 +00:00
|
|
|
i386/i386/in_cksum.c optional inet | inet6
|
1997-03-22 18:54:54 +00:00
|
|
|
i386/i386/initcpu.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/io.c optional io
|
|
|
|
i386/i386/k6_mem.c optional mem
|
2015-04-30 15:48:48 +00:00
|
|
|
i386/i386/locore.s standard no-obj
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/longrun.c optional cpu_enable_longrun
|
1994-08-30 17:18:34 +00:00
|
|
|
i386/i386/machdep.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/mem.c optional mem
|
2006-04-21 04:28:43 +00:00
|
|
|
i386/i386/minidump_machdep.c standard
|
i386: Merge PAE and non-PAE pmaps into same kernel.
Effectively all i386 kernels now have two pmaps compiled in: one
managing PAE pagetables, and another non-PAE. The implementation is
selected at cold time depending on the CPU features. The vm_paddr_t is
always 64bit now. As result, nx bit can be used on all capable CPUs.
Option PAE only affects the bus_addr_t: it is still 32bit for non-PAE
configs, for drivers compatibility. Kernel layout, esp. max kernel
address, low memory PDEs and max user address (same as trampoline
start) are now same for PAE and for non-PAE regardless of the type of
page tables used.
Non-PAE kernel (when using PAE pagetables) can handle physical memory
up to 24G now, larger memory requires re-tuning the KVA consumers and
instead the code caps the maximum at 24G. Unfortunately, a lot of
drivers do not use busdma(9) properly so by default even 4G barrier is
not easy. There are two tunables added: hw.above4g_allow and
hw.above24g_allow, the first one is kept enabled for now to evaluate
the status on HEAD, second is only for dev use.
i386 now creates three freelists if there is any memory above 4G, to
allow proper bounce pages allocation. Also, VM_KMEM_SIZE_SCALE changed
from 3 to 1.
The PAE_TABLES kernel config option is retired.
In collaboarion with: pho
Discussed with: emaste
Reviewed by: markj
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D18894
2019-01-30 02:07:13 +00:00
|
|
|
i386/i386/minidump_machdep_pae.c standard
|
|
|
|
i386/i386/minidump_machdep_nopae.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/mp_clock.c optional smp
|
2015-04-30 15:48:48 +00:00
|
|
|
i386/i386/mp_machdep.c optional smp
|
|
|
|
i386/i386/mpboot.s optional smp
|
2017-12-30 11:33:04 +00:00
|
|
|
i386/i386/npx.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/perfmon.c optional perfmon
|
i386: Merge PAE and non-PAE pmaps into same kernel.
Effectively all i386 kernels now have two pmaps compiled in: one
managing PAE pagetables, and another non-PAE. The implementation is
selected at cold time depending on the CPU features. The vm_paddr_t is
always 64bit now. As result, nx bit can be used on all capable CPUs.
Option PAE only affects the bus_addr_t: it is still 32bit for non-PAE
configs, for drivers compatibility. Kernel layout, esp. max kernel
address, low memory PDEs and max user address (same as trampoline
start) are now same for PAE and for non-PAE regardless of the type of
page tables used.
Non-PAE kernel (when using PAE pagetables) can handle physical memory
up to 24G now, larger memory requires re-tuning the KVA consumers and
instead the code caps the maximum at 24G. Unfortunately, a lot of
drivers do not use busdma(9) properly so by default even 4G barrier is
not easy. There are two tunables added: hw.above4g_allow and
hw.above24g_allow, the first one is kept enabled for now to evaluate
the status on HEAD, second is only for dev use.
i386 now creates three freelists if there is any memory above 4G, to
allow proper bounce pages allocation. Also, VM_KMEM_SIZE_SCALE changed
from 3 to 1.
The PAE_TABLES kernel config option is retired.
In collaboarion with: pho
Discussed with: emaste
Reviewed by: markj
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D18894
2019-01-30 02:07:13 +00:00
|
|
|
i386/i386/pmap_base.c standard
|
|
|
|
i386/i386/pmap_nopae.c standard
|
|
|
|
i386/i386/pmap_pae.c standard
|
2018-01-10 16:51:55 +00:00
|
|
|
i386/i386/prof_machdep.c optional profiling-routine
|
2005-05-31 09:43:04 +00:00
|
|
|
i386/i386/ptrace_machdep.c standard
|
2018-02-06 00:02:30 +00:00
|
|
|
i386/i386/sigtramp.s standard
|
1994-08-30 17:18:34 +00:00
|
|
|
i386/i386/support.s standard
|
|
|
|
i386/i386/swtch.s standard
|
1993-06-12 14:58:17 +00:00
|
|
|
i386/i386/sys_machdep.c standard
|
|
|
|
i386/i386/trap.c standard
|
2004-03-21 20:28:36 +00:00
|
|
|
i386/i386/uio_machdep.c standard
|
1999-06-01 18:18:39 +00:00
|
|
|
i386/i386/vm86.c standard
|
1999-06-29 16:14:20 +00:00
|
|
|
i386/i386/vm_machdep.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/linux/imgact_linux.c optional compat_linux
|
2018-04-24 12:50:21 +00:00
|
|
|
i386/linux/linux_copyout.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/linux/linux_dummy.c optional compat_linux
|
|
|
|
i386/linux/linux_machdep.c optional compat_linux
|
|
|
|
i386/linux/linux_ptrace.c optional compat_linux
|
|
|
|
i386/linux/linux_sysent.c optional compat_linux
|
|
|
|
i386/linux/linux_sysvec.c optional compat_linux
|
|
|
|
i386/pci/pci_cfgreg.c optional pci
|
2012-09-12 19:36:54 +00:00
|
|
|
i386/pci/pci_pir.c optional pci
|
2005-01-04 06:07:25 +00:00
|
|
|
isa/syscons_isa.c optional sc
|
|
|
|
isa/vga_isa.c optional vga
|
2010-07-14 18:43:27 +00:00
|
|
|
kern/kern_clocksource.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
kern/imgact_aout.c optional compat_aout
|
|
|
|
kern/imgact_gzip.c optional gzip
|
2014-08-05 09:44:10 +00:00
|
|
|
kern/subr_sfbuf.c standard
|
1995-12-26 13:58:31 +00:00
|
|
|
libkern/divdi3.c standard
|
2015-10-22 20:28:37 +00:00
|
|
|
libkern/ffsll.c standard
|
2014-02-14 15:18:37 +00:00
|
|
|
libkern/flsll.c standard
|
2018-09-27 14:05:44 +00:00
|
|
|
libkern/memcmp.c standard
|
2007-04-06 11:29:52 +00:00
|
|
|
libkern/memset.c standard
|
1995-12-26 13:58:31 +00:00
|
|
|
libkern/moddi3.c standard
|
|
|
|
libkern/qdivrem.c standard
|
2000-12-01 09:54:17 +00:00
|
|
|
libkern/ucmpdi2.c standard
|
1995-12-26 13:58:31 +00:00
|
|
|
libkern/udivdi3.c standard
|
|
|
|
libkern/umoddi3.c standard
|
Use inline asm instead of unportable intrinsics for the SSE4 crc32
optimization.
This fixes building with gcc-4.2.1 (it doesn't support SSE4).
gas-2.17.50 [FreeBSD] supports SSE4 instructions, so this doesn't
need using .byte directives.
This fixes depending on host user headers in the kernel.
Fix user includes (don't depend on namespace pollution in <nmmintrin.h>
that is not included now).
The instrinsics had no advantages except to sometimes avoid compiler
pessimixations. clang understands them a bit better than inline asm,
and generates better looking code which also runs better for cem, but
for me it just at the same speed or slower by doing excessive
unrollowing in all the wrong places. gcc-4.2.1 also doesn't understand
what it is doing with unrolling, but with -O3 somehow it does more
unrolling that helps.
Reduce 1 of the the compiler pessimizations (copying a variable which
already satisfies an "rm" constraint in a good way by being in memory
and not used again, to different memory and accessing it there. Force
copying it to a register instead).
Try to optimize the inner loops significantly, so as to run at full
speed on smaller inputs. The algorithm is already very MD, and was
tuned for the throughput of 3 crc32 instructions per cycle found on
at least Sandybridge through Haswell. Now it is even more tuned for
this, so depends more on the compiler not rearranging or unrolling
things too much. The main inner loop for should have no difficulty
runing at full speed on these CPUs unless the compiler unrolls it too
much. However, the main inner loop wasn't even used for buffers smaller
than 24K. Now it is used for buffers larger than 384 bytes. Now it
is not so long, and the main outer loop is used more. The new
optimization is to try to arrange that the outer loop runs in parallel
with the next inner loop except for the final iteration; then reduce
the loop sizes significantly to take advantage of this.
Approved by: cem
Not tested in production by: bde
2017-03-26 10:31:48 +00:00
|
|
|
libkern/x86/crc32_sse42.c standard
|
2009-09-22 07:10:23 +00:00
|
|
|
#
|
2015-04-30 17:49:35 +00:00
|
|
|
# x86 real mode BIOS support, required by dpms/pci/vesa
|
2009-09-22 07:10:23 +00:00
|
|
|
#
|
2015-04-30 17:49:35 +00:00
|
|
|
compat/x86bios/x86bios.c optional x86bios | dpms | pci | vesa
|
2010-02-25 14:13:39 +00:00
|
|
|
#
|
2014-02-07 18:46:27 +00:00
|
|
|
# bvm console
|
|
|
|
#
|
|
|
|
dev/bvm/bvm_console.c optional bvmconsole
|
|
|
|
dev/bvm/bvm_dbg.c optional bvmdebug
|
|
|
|
#
|
2017-01-28 02:22:15 +00:00
|
|
|
# x86 shared code between IA32 and AMD64 architectures
|
2010-02-25 14:13:39 +00:00
|
|
|
#
|
2010-11-09 00:27:18 +00:00
|
|
|
x86/acpica/OsdEnvironment.c optional acpi
|
2010-11-10 01:29:56 +00:00
|
|
|
x86/acpica/acpi_apm.c optional acpi
|
2012-06-10 02:38:51 +00:00
|
|
|
x86/acpica/acpi_wakeup.c optional acpi
|
2010-11-08 20:57:02 +00:00
|
|
|
x86/acpica/madt.c optional acpi apic
|
2010-07-27 20:40:46 +00:00
|
|
|
x86/acpica/srat.c optional acpi
|
2010-02-25 14:13:39 +00:00
|
|
|
x86/bios/smbios.c optional smbios
|
|
|
|
x86/bios/vpd.c optional vpd
|
|
|
|
x86/cpufreq/est.c optional cpufreq
|
|
|
|
x86/cpufreq/hwpstate.c optional cpufreq
|
|
|
|
x86/cpufreq/p4tcc.c optional cpufreq
|
|
|
|
x86/cpufreq/powernow.c optional cpufreq
|
|
|
|
x86/cpufreq/smist.c optional cpufreq
|
Import the driver for VT-d DMAR hardware, as specified in the revision
1.3 of Intelб╝ Virtualization Technology for Directed I/O Architecture
Specification. The Extended Context and PASIDs from the rev. 2.2 are
not supported, but I am not aware of any released hardware which
implements them. Code does not use queued invalidation, see comments
for the reason, and does not provide interrupt remapping services.
Code implements the management of the guest address space per domain
and allows to establish and tear down arbitrary mappings, but not
partial unmapping. The superpages are created as needed, but not
promoted. Faults are recorded, fault records could be obtained
programmatically, and printed on the console.
Implement the busdma(9) using DMARs. This busdma backend avoids
bouncing and provides security against misbehaving hardware and driver
bad programming, preventing leaks and corruption of the memory by wild
DMA accesses.
By default, the implementation is compiled into amd64 GENERIC kernel
but disabled; to enable, set hw.dmar.enable=1 loader tunable. Code is
written to work on i386, but testing there was low priority, and
driver is not enabled in GENERIC. Even with the DMAR turned on,
individual devices could be directed to use the bounce busdma with the
hw.busdma.pci<domain>:<bus>:<device>:<function>.bounce=1 tunable. If
DMARs are capable of the pass-through translations, it is used,
otherwise, an identity-mapping page table is constructed.
The driver was tested on Xeon 5400/5500 chipset legacy machine,
Haswell desktop and E5 SandyBridge dual-socket boxes, with ahci(4),
ata(4), bce(4), ehci(4), mfi(4), uhci(4), xhci(4) devices. It also
works with em(4) and igb(4), but there some fixes are needed for
drivers, which are not committed yet. Intel GPUs do not work with
DMAR (yet).
Many thanks to John Baldwin, who explained me the newbus integration;
Peter Holm, who did all testing and helped me to discover and
understand several incredible bugs; and to Jim Harris for the access
to the EDS and BWG and for listening when I have to explain my
findings to somebody.
Sponsored by: The FreeBSD Foundation
MFC after: 1 month
2013-10-28 13:33:29 +00:00
|
|
|
x86/iommu/busdma_dmar.c optional acpi acpi_dmar pci
|
|
|
|
x86/iommu/intel_ctx.c optional acpi acpi_dmar pci
|
|
|
|
x86/iommu/intel_drv.c optional acpi acpi_dmar pci
|
|
|
|
x86/iommu/intel_fault.c optional acpi acpi_dmar pci
|
|
|
|
x86/iommu/intel_gas.c optional acpi acpi_dmar pci
|
|
|
|
x86/iommu/intel_idpgtbl.c optional acpi acpi_dmar pci
|
Use VT-d interrupt remapping block (IR) to perform FSB messages
translation. In particular, despite IO-APICs only take 8bit apic id,
IR translation structures accept 32bit APIC Id, which allows x2APIC
mode to function properly. Extend msi_cpu of struct msi_intrsrc and
io_cpu of ioapic_intsrc to full int from one byte.
KPI of IR is isolated into the x86/iommu/iommu_intrmap.h, to avoid
bringing all dmar headers into interrupt code. The non-PCI(e) devices
which generate message interrupts on FSB require special handling. The
HPET FSB interrupts are remapped, while DMAR interrupts are not.
For each msi and ioapic interrupt source, the iommu cookie is added,
which is in fact index of the IRE (interrupt remap entry) in the IR
table. Cookie is made at the source allocation time, and then used at
the map time to fill both IRE and device registers. The MSI
address/data registers and IO-APIC redirection registers are
programmed with the special values which are recognized by IR and used
to restore the IRE index, to find proper delivery mode and target.
Map all MSI interrupts in the block when msi_map() is called.
Since an interrupt source setup and dismantle code are done in the
non-sleepable context, flushing interrupt entries cache in the IR
hardware, which is done async and ideally waits for the interrupt,
requires busy-wait for queue to drain. The dmar_qi_wait_for_seq() is
modified to take a boolean argument requesting busy-wait for the
written sequence number instead of waiting for interrupt.
Some interrupts are configured before IR is initialized, e.g. ACPI
SCI. Add intr_reprogram() function to reprogram all already
configured interrupts, and call it immediately before an IR unit is
enabled. There is still a small window after the IO-APIC redirection
entry is reprogrammed with cookie but before the unit is enabled, but
to fix this properly, IR must be started much earlier.
Add workarounds for 5500 and X58 northbridges, some revisions of which
have severe flaws in handling IR. Use the same identification methods
as employed by Linux.
Review: https://reviews.freebsd.org/D1892
Reviewed by: neel
Discussed with: jhb
Tested by: glebius, pho (previous versions)
Sponsored by: The FreeBSD Foundation
MFC after: 3 weeks
2015-03-19 13:57:47 +00:00
|
|
|
x86/iommu/intel_intrmap.c optional acpi acpi_dmar pci
|
2013-11-01 17:38:52 +00:00
|
|
|
x86/iommu/intel_qi.c optional acpi acpi_dmar pci
|
Import the driver for VT-d DMAR hardware, as specified in the revision
1.3 of Intelб╝ Virtualization Technology for Directed I/O Architecture
Specification. The Extended Context and PASIDs from the rev. 2.2 are
not supported, but I am not aware of any released hardware which
implements them. Code does not use queued invalidation, see comments
for the reason, and does not provide interrupt remapping services.
Code implements the management of the guest address space per domain
and allows to establish and tear down arbitrary mappings, but not
partial unmapping. The superpages are created as needed, but not
promoted. Faults are recorded, fault records could be obtained
programmatically, and printed on the console.
Implement the busdma(9) using DMARs. This busdma backend avoids
bouncing and provides security against misbehaving hardware and driver
bad programming, preventing leaks and corruption of the memory by wild
DMA accesses.
By default, the implementation is compiled into amd64 GENERIC kernel
but disabled; to enable, set hw.dmar.enable=1 loader tunable. Code is
written to work on i386, but testing there was low priority, and
driver is not enabled in GENERIC. Even with the DMAR turned on,
individual devices could be directed to use the bounce busdma with the
hw.busdma.pci<domain>:<bus>:<device>:<function>.bounce=1 tunable. If
DMARs are capable of the pass-through translations, it is used,
otherwise, an identity-mapping page table is constructed.
The driver was tested on Xeon 5400/5500 chipset legacy machine,
Haswell desktop and E5 SandyBridge dual-socket boxes, with ahci(4),
ata(4), bce(4), ehci(4), mfi(4), uhci(4), xhci(4) devices. It also
works with em(4) and igb(4), but there some fixes are needed for
drivers, which are not committed yet. Intel GPUs do not work with
DMAR (yet).
Many thanks to John Baldwin, who explained me the newbus integration;
Peter Holm, who did all testing and helped me to discover and
understand several incredible bugs; and to Jim Harris for the access
to the EDS and BWG and for listening when I have to explain my
findings to somebody.
Sponsored by: The FreeBSD Foundation
MFC after: 1 month
2013-10-28 13:33:29 +00:00
|
|
|
x86/iommu/intel_quirks.c optional acpi acpi_dmar pci
|
|
|
|
x86/iommu/intel_utils.c optional acpi acpi_dmar pci
|
2012-09-12 19:36:54 +00:00
|
|
|
x86/isa/atpic.c optional atpic
|
2015-04-30 15:48:48 +00:00
|
|
|
x86/isa/atrtc.c standard
|
|
|
|
x86/isa/clock.c standard
|
|
|
|
x86/isa/elcr.c optional atpic | apic
|
2010-02-25 14:13:39 +00:00
|
|
|
x86/isa/isa.c optional isa
|
|
|
|
x86/isa/isa_dma.c optional isa
|
|
|
|
x86/isa/nmi.c standard
|
|
|
|
x86/isa/orm.c optional isa
|
2011-06-22 21:04:13 +00:00
|
|
|
x86/pci/pci_bus.c optional pci
|
|
|
|
x86/pci/qpi.c optional pci
|
2016-04-03 23:03:54 +00:00
|
|
|
x86/x86/autoconf.c standard
|
Better support memory mapped console devices, such as VGA and EFI
frame buffers and memory mapped UARTs.
1. Delay calling cninit() until after pmap_bootstrap(). This makes
sure we have PMAP initialized enough to add translations. Keep
kdb_init() after cninit() so that we have console when we need
to break into the debugger on boot.
2. Unfortunately, the ATPIC code had be moved as well so as to
avoid a spurious trap #30. The reason for which is not known
at this time.
3. In pmap_mapdev_attr(), when we need to map a device prior to the
VM system being initialized, use virtual_avail as the KVA to map
the device at. In particular, avoid using the direct map on amd64
because we can't demote by virtue of not being able to allocate
yet. Keep track of the translation.
Re-use the translation after the VM has been initialized to not
waste KVA and to satisfy the assumption in uart(4) that the handle
returned for the low-level console is the same as later returned
when the device is probed and attached.
4. In pmap_unmapdev() remove the mapping from the table when called
pre-init. Otherwise keep the mapping. During bus probe and attach
device resources are mapped and unmapped multiple times, which
would have us destroy the mapping used by the low-level console.
5. In pmap_init(), set pmap_initialized to signal that we're not
pre-init anymore. On amd64, bring the direct map in sync with the
translations created at that time.
6. Implement bus_space_map() and bus_space_unmap() for real: when
the tag corresponds to memory space, call the corresponding
pmap_mapdev() and pmap_unmapdev() functions to construct and
actual handle.
7. In efifb.c and vt_vga.c, remove the crutches and hacks and simply
call pmap_mapdev_attr() or bus_space_map() as desired.
Notes:
1. uart(4) already used bus_space_map() during low-level console
setup but since serial ports have traditionally been I/O port
based, the lack of a proper implementation for said function
was not a problem. It has always supported memory mapped UARTs
for low-level consoles by setting hw.uart.console accordingly.
2. The use of the direct map on amd64 without setting caching
attributes has been a bigger problem than previously thought.
This change has the fortunate (and unexpected) side-effect of
fixing various EFI frame buffer problems (though not all).
PR: 191564, 194952
Special thanks to:
1. XipLink, Inc -- generously donated an Intel Bay Trail E3800
based eval board (ADLE3800PC).
2. The FreeBSD Foundation, in particular emaste@ -- for UEFI
support in general and testing.
3. Everyone who tested the proposed for PR 191564.
4. jhb@ and kib@ for being a soundboard and applying a clue bat
if so needed.
2015-08-12 15:26:32 +00:00
|
|
|
x86/x86/bus_machdep.c standard
|
2013-10-27 22:05:10 +00:00
|
|
|
x86/x86/busdma_bounce.c standard
|
2010-12-09 06:41:50 +00:00
|
|
|
x86/x86/busdma_machdep.c standard
|
2015-04-22 12:32:14 +00:00
|
|
|
x86/x86/cpu_machdep.c standard
|
2010-10-26 12:46:26 +00:00
|
|
|
x86/x86/dump_machdep.c standard
|
2013-05-21 03:05:49 +00:00
|
|
|
x86/x86/fdt_machdep.c optional fdt
|
2014-09-04 14:26:25 +00:00
|
|
|
x86/x86/identcpu.c standard
|
2012-03-09 20:43:29 +00:00
|
|
|
x86/x86/intr_machdep.c standard
|
2010-06-08 17:51:21 +00:00
|
|
|
x86/x86/io_apic.c optional apic
|
2015-04-30 15:48:48 +00:00
|
|
|
x86/x86/legacy.c standard
|
2010-06-08 17:51:21 +00:00
|
|
|
x86/x86/local_apic.c optional apic
|
2010-06-08 18:04:07 +00:00
|
|
|
x86/x86/mca.c standard
|
2017-02-17 21:08:32 +00:00
|
|
|
x86/x86/x86_mem.c optional mem
|
2015-04-30 15:48:48 +00:00
|
|
|
x86/x86/mptable.c optional apic
|
|
|
|
x86/x86/mptable_pci.c optional apic pci
|
|
|
|
x86/x86/mp_x86.c optional smp
|
2016-08-03 13:51:53 +00:00
|
|
|
x86/x86/mp_watchdog.c optional mp_watchdog smp
|
2010-06-08 18:36:03 +00:00
|
|
|
x86/x86/msi.c optional apic pci
|
2010-10-28 16:31:39 +00:00
|
|
|
x86/x86/nexus.c standard
|
2015-09-11 03:24:07 +00:00
|
|
|
x86/x86/stack_machdep.c optional ddb | stack
|
2010-12-08 00:09:24 +00:00
|
|
|
x86/x86/tsc.c standard
|
2018-08-13 17:13:09 +00:00
|
|
|
x86/x86/ucode.c standard
|
2015-02-04 08:26:43 +00:00
|
|
|
x86/x86/pvclock.c standard
|
2014-03-11 10:20:42 +00:00
|
|
|
x86/x86/delay.c standard
|
Implement vector callback for PVHVM and unify event channel implementations
Re-structure Xen HVM support so that:
- Xen is detected and hypercalls can be performed very
early in system startup.
- Xen interrupt services are implemented using FreeBSD's native
interrupt delivery infrastructure.
- the Xen interrupt service implementation is shared between PV
and HVM guests.
- Xen interrupt handlers can optionally use a filter handler
in order to avoid the overhead of dispatch to an interrupt
thread.
- interrupt load can be distributed among all available CPUs.
- the overhead of accessing the emulated local and I/O apics
on HVM is removed for event channel port events.
- a similar optimization can eventually, and fairly easily,
be used to optimize MSI.
Early Xen detection, HVM refactoring, PVHVM interrupt infrastructure,
and misc Xen cleanups:
Sponsored by: Spectra Logic Corporation
Unification of PV & HVM interrupt infrastructure, bug fixes,
and misc Xen cleanups:
Submitted by: Roger Pau Monné
Sponsored by: Citrix Systems R&D
sys/x86/x86/local_apic.c:
sys/amd64/include/apicvar.h:
sys/i386/include/apicvar.h:
sys/amd64/amd64/apic_vector.S:
sys/i386/i386/apic_vector.s:
sys/amd64/amd64/machdep.c:
sys/i386/i386/machdep.c:
sys/i386/xen/exception.s:
sys/x86/include/segments.h:
Reserve IDT vector 0x93 for the Xen event channel upcall
interrupt handler. On Hypervisors that support the direct
vector callback feature, we can request that this vector be
called directly by an injected HVM interrupt event, instead
of a simulated PCI interrupt on the Xen platform PCI device.
This avoids all of the overhead of dealing with the emulated
I/O APIC and local APIC. It also means that the Hypervisor
can inject these events on any CPU, allowing upcalls for
different ports to be handled in parallel.
sys/amd64/amd64/mp_machdep.c:
sys/i386/i386/mp_machdep.c:
Map Xen per-vcpu area during AP startup.
sys/amd64/include/intr_machdep.h:
sys/i386/include/intr_machdep.h:
Increase the FreeBSD IRQ vector table to include space
for event channel interrupt sources.
sys/amd64/include/pcpu.h:
sys/i386/include/pcpu.h:
Remove Xen HVM per-cpu variable data. These fields are now
allocated via the dynamic per-cpu scheme. See xen_intr.c
for details.
sys/amd64/include/xen/hypercall.h:
sys/dev/xen/blkback/blkback.c:
sys/i386/include/xen/xenvar.h:
sys/i386/xen/clock.c:
sys/i386/xen/xen_machdep.c:
sys/xen/gnttab.c:
Prefer FreeBSD primatives to Linux ones in Xen support code.
sys/amd64/include/xen/xen-os.h:
sys/i386/include/xen/xen-os.h:
sys/xen/xen-os.h:
sys/dev/xen/balloon/balloon.c:
sys/dev/xen/blkback/blkback.c:
sys/dev/xen/blkfront/blkfront.c:
sys/dev/xen/console/xencons_ring.c:
sys/dev/xen/control/control.c:
sys/dev/xen/netback/netback.c:
sys/dev/xen/netfront/netfront.c:
sys/dev/xen/xenpci/xenpci.c:
sys/i386/i386/machdep.c:
sys/i386/include/pmap.h:
sys/i386/include/xen/xenfunc.h:
sys/i386/isa/npx.c:
sys/i386/xen/clock.c:
sys/i386/xen/mp_machdep.c:
sys/i386/xen/mptable.c:
sys/i386/xen/xen_clock_util.c:
sys/i386/xen/xen_machdep.c:
sys/i386/xen/xen_rtc.c:
sys/xen/evtchn/evtchn_dev.c:
sys/xen/features.c:
sys/xen/gnttab.c:
sys/xen/gnttab.h:
sys/xen/hvm.h:
sys/xen/xenbus/xenbus.c:
sys/xen/xenbus/xenbus_if.m:
sys/xen/xenbus/xenbusb_front.c:
sys/xen/xenbus/xenbusvar.h:
sys/xen/xenstore/xenstore.c:
sys/xen/xenstore/xenstore_dev.c:
sys/xen/xenstore/xenstorevar.h:
Pull common Xen OS support functions/settings into xen/xen-os.h.
sys/amd64/include/xen/xen-os.h:
sys/i386/include/xen/xen-os.h:
sys/xen/xen-os.h:
Remove constants, macros, and functions unused in FreeBSD's Xen
support.
sys/xen/xen-os.h:
sys/i386/xen/xen_machdep.c:
sys/x86/xen/hvm.c:
Introduce new functions xen_domain(), xen_pv_domain(), and
xen_hvm_domain(). These are used in favor of #ifdefs so that
FreeBSD can dynamically detect and adapt to the presence of
a hypervisor. The goal is to have an HVM optimized GENERIC,
but more is necessary before this is possible.
sys/amd64/amd64/machdep.c:
sys/dev/xen/xenpci/xenpcivar.h:
sys/dev/xen/xenpci/xenpci.c:
sys/x86/xen/hvm.c:
sys/sys/kernel.h:
Refactor magic ioport, Hypercall table and Hypervisor shared
information page setup, and move it to a dedicated HVM support
module.
HVM mode initialization is now triggered during the
SI_SUB_HYPERVISOR phase of system startup. This currently
occurs just after the kernel VM is fully setup which is
just enough infrastructure to allow the hypercall table
and shared info page to be properly mapped.
sys/xen/hvm.h:
sys/x86/xen/hvm.c:
Add definitions and a method for configuring Hypervisor event
delievery via a direct vector callback.
sys/amd64/include/xen/xen-os.h:
sys/x86/xen/hvm.c:
sys/conf/files:
sys/conf/files.amd64:
sys/conf/files.i386:
Adjust kernel build to reflect the refactoring of early
Xen startup code and Xen interrupt services.
sys/dev/xen/blkback/blkback.c:
sys/dev/xen/blkfront/blkfront.c:
sys/dev/xen/blkfront/block.h:
sys/dev/xen/control/control.c:
sys/dev/xen/evtchn/evtchn_dev.c:
sys/dev/xen/netback/netback.c:
sys/dev/xen/netfront/netfront.c:
sys/xen/xenstore/xenstore.c:
sys/xen/evtchn/evtchn_dev.c:
sys/dev/xen/console/console.c:
sys/dev/xen/console/xencons_ring.c
Adjust drivers to use new xen_intr_*() API.
sys/dev/xen/blkback/blkback.c:
Since blkback defers all event handling to a taskqueue,
convert this task queue to a "fast" taskqueue, and schedule
it via an interrupt filter. This avoids an unnecessary
ithread context switch.
sys/xen/xenstore/xenstore.c:
The xenstore driver is MPSAFE. Indicate as much when
registering its interrupt handler.
sys/xen/xenbus/xenbus.c:
sys/xen/xenbus/xenbusvar.h:
Remove unused event channel APIs.
sys/xen/evtchn.h:
Remove all kernel Xen interrupt service API definitions
from this file. It is now only used for structure and
ioctl definitions related to the event channel userland
device driver.
Update the definitions in this file to match those from
NetBSD. Implementing this interface will be necessary for
Dom0 support.
sys/xen/evtchn/evtchnvar.h:
Add a header file for implemenation internal APIs related
to managing event channels event delivery. This is used
to allow, for example, the event channel userland device
driver to access low-level routines that typical kernel
consumers of event channel services should never access.
sys/xen/interface/event_channel.h:
sys/xen/xen_intr.h:
Standardize on the evtchn_port_t type for referring to
an event channel port id. In order to prevent low-level
event channel APIs from leaking to kernel consumers who
should not have access to this data, the type is defined
twice: Once in the Xen provided event_channel.h, and again
in xen/xen_intr.h. The double declaration is protected by
__XEN_EVTCHN_PORT_DEFINED__ to ensure it is never declared
twice within a given compilation unit.
sys/xen/xen_intr.h:
sys/xen/evtchn/evtchn.c:
sys/x86/xen/xen_intr.c:
sys/dev/xen/xenpci/evtchn.c:
sys/dev/xen/xenpci/xenpcivar.h:
New implementation of Xen interrupt services. This is
similar in many respects to the i386 PV implementation with
the exception that events for bound to event channel ports
(i.e. not IPI, virtual IRQ, or physical IRQ) are further
optimized to avoid mask/unmask operations that aren't
necessary for these edge triggered events.
Stubs exist for supporting physical IRQ binding, but will
need additional work before this implementation can be
fully shared between PV and HVM.
sys/amd64/amd64/mp_machdep.c:
sys/i386/i386/mp_machdep.c:
sys/i386/xen/mp_machdep.c
sys/x86/xen/hvm.c:
Add support for placing vcpu_info into an arbritary memory
page instead of using HYPERVISOR_shared_info->vcpu_info.
This allows the creation of domains with more than 32 vcpus.
sys/i386/i386/machdep.c:
sys/i386/xen/clock.c:
sys/i386/xen/xen_machdep.c:
sys/i386/xen/exception.s:
Add support for new event channle implementation.
2013-08-29 19:52:18 +00:00
|
|
|
x86/xen/hvm.c optional xenhvm
|
2015-04-30 15:48:48 +00:00
|
|
|
x86/xen/xen_intr.c optional xenhvm
|
2014-06-16 08:43:45 +00:00
|
|
|
x86/xen/xen_apic.c optional xenhvm
|
2015-04-30 15:48:48 +00:00
|
|
|
x86/xen/xenpv.c optional xenhvm
|
|
|
|
x86/xen/xen_nexus.c optional xenhvm
|
|
|
|
x86/xen/xen_msi.c optional xenhvm
|