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.
|
|
|
|
#
|
2000-08-22 05:01:08 +00:00
|
|
|
linux_genassym.o optional compat_linux \
|
|
|
|
dependency "$S/i386/linux/linux_genassym.c" \
|
2002-01-11 07:52:02 +00:00
|
|
|
compile-with "${CC} ${CFLAGS: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"
|
|
|
|
#
|
2000-08-22 05:01:08 +00:00
|
|
|
svr4_genassym.o optional compat_svr4 \
|
|
|
|
dependency "$S/i386/svr4/svr4_genassym.c" \
|
2002-01-11 07:52:02 +00:00
|
|
|
compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
|
2000-08-22 05:01:08 +00:00
|
|
|
no-obj no-implicit-rule \
|
|
|
|
clean "svr4_genassym.o"
|
|
|
|
#
|
|
|
|
svr4_assym.h optional compat_svr4 \
|
|
|
|
dependency "$S/kern/genassym.sh svr4_genassym.o" \
|
2000-06-02 09:27:48 +00:00
|
|
|
compile-with "sh $S/kern/genassym.sh svr4_genassym.o > ${.TARGET}" \
|
2000-08-22 05:01:08 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
1999-12-08 12:13:13 +00:00
|
|
|
clean "svr4_assym.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
|
|
|
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 \
|
2000-08-22 05:01:08 +00:00
|
|
|
compile-with "/usr/sbin/kbdcontrol -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 \
|
2000-08-22 05:01:08 +00:00
|
|
|
compile-with "/usr/sbin/kbdcontrol -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
|
|
|
|
#
|
2012-03-27 21:23:56 +00:00
|
|
|
cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}"
|
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
|
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
|
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
|
|
|
|
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
|
|
|
|
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
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/svr4/imgact_svr4.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_fcntl.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_filio.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_ioctl.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_ipc.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_misc.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_resource.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_signal.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_socket.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_sockio.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_stat.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_stream.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_syscallnames.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_sysent.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_sysvec.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_termios.c optional compat_svr4
|
2007-07-03 12:13:45 +00:00
|
|
|
bf_enc.o optional crypto | ipsec \
|
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" \
|
|
|
|
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${PROF} -mmmx -msse -msse4 -maes -mpclmul ${.IMPSRC}" \
|
|
|
|
no-implicit-rule \
|
|
|
|
clean "aesni_ghash.o"
|
2013-09-03 18:31:23 +00:00
|
|
|
aesni_wrap.o optional aesni \
|
|
|
|
dependency "$S/crypto/aesni/aesni_wrap.c" \
|
2014-12-12 19:56:36 +00:00
|
|
|
compile-with "${CC} -c ${CFLAGS:C/^-O2$/-O3/:N-nostdinc} ${WERROR} ${PROF} -mmmx -msse -msse4 -maes ${.IMPSRC}" \
|
2013-09-03 18:31:23 +00:00
|
|
|
no-implicit-rule \
|
|
|
|
clean "aesni_wrap.o"
|
2013-06-28 21:00:08 +00:00
|
|
|
crypto/des/arch/i386/des_enc.S optional crypto | ipsec | netsmb
|
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
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/advansys/adv_isa.c optional adv isa
|
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
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/aic/aic_isa.c optional aic isa
|
2009-11-30 11:44:03 +00:00
|
|
|
dev/amdsbwd/amdsbwd.c optional amdsbwd
|
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}"
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/cm/if_cm_isa.c optional cm isa
|
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
|
2013-05-21 03:05:49 +00:00
|
|
|
dev/fdt/fdt_x86.c optional fdt
|
2005-01-04 06:07:25 +00:00
|
|
|
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
|
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
|
2005-04-29 02:40:16 +00:00
|
|
|
dev/hwpmc/hwpmc_pentium.c optional hwpmc
|
|
|
|
dev/hwpmc/hwpmc_piv.c optional hwpmc
|
|
|
|
dev/hwpmc/hwpmc_ppro.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
|
2013-12-05 00:54:38 +00:00
|
|
|
dev/hyperv/netvsc/hv_net_vsc.c optional hyperv
|
|
|
|
dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c optional hyperv
|
|
|
|
dev/hyperv/netvsc/hv_rndis_filter.c optional hyperv
|
|
|
|
dev/hyperv/stordisengage/hv_ata_pci_disengage.c optional hyperv
|
|
|
|
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
|
2013-12-05 00:54:38 +00:00
|
|
|
dev/hyperv/utilities/hv_util.c optional hyperv
|
|
|
|
dev/hyperv/vmbus/hv_channel.c optional hyperv
|
|
|
|
dev/hyperv/vmbus/hv_channel_mgmt.c optional hyperv
|
|
|
|
dev/hyperv/vmbus/hv_connection.c optional hyperv
|
|
|
|
dev/hyperv/vmbus/hv_hv.c optional hyperv
|
|
|
|
dev/hyperv/vmbus/hv_ring_buffer.c optional hyperv
|
|
|
|
dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c 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
|
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
|
2013-12-05 22:38:53 +00:00
|
|
|
dev/kbd/kbd.c optional atkbd | sc | ukbd | vt
|
2006-05-17 21:25:23 +00:00
|
|
|
dev/le/if_le_isa.c optional le isa
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/mse/mse.c optional mse
|
|
|
|
dev/mse/mse_isa.c optional mse isa
|
2006-06-26 23:41:07 +00:00
|
|
|
dev/nfe/if_nfe.c optional nfe pci
|
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
|
2005-10-28 15:58:19 +00:00
|
|
|
dev/pcf/pcf_isa.c optional pcf
|
2013-10-06 22:45:02 +00:00
|
|
|
dev/random/ivy.c optional rdrand_rng
|
|
|
|
dev/random/nehemiah.c optional padlock_rng
|
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
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/syscons/apm/apm_saver.c optional apm_saver apm
|
Replace syscons terminal renderer by a new renderer that uses libteken.
Some time ago I started working on a library called libteken, which is
terminal emulator. It does not buffer any screen contents, but only
keeps terminal state, such as cursor position, attributes, etc. It
should implement all escape sequences that are implemented by the
cons25 terminal emulator, but also a fair amount of sequences that are
present in VT100 and xterm.
A lot of random notes, which could be of interest to users/developers:
- Even though I'm leaving the terminal type set to `cons25', users can
do experiments with placing `xterm-color' in /etc/ttys. Because we
only implement a subset of features of xterm, this may cause
artifacts. We should consider extending libteken, because in my
opinion xterm is the way to go. Some missing features:
- Keypad application mode (DECKPAM)
- Character sets (SCS)
- libteken is filled with a fair amount of assertions, but unfortunately
we cannot go into the debugger anymore if we fail them. I've done
development of this library almost entirely in userspace. In
sys/dev/syscons/teken there are two applications that can be helpful
when debugging the code:
- teken_demo: a terminal emulator that can be started from a regular
xterm that emulates a terminal using libteken. This application can
be very useful to debug any rendering issues.
- teken_stress: a stress testing application that emulates random
terminal output. libteken has literally survived multiple terabytes
of random input.
- libteken also includes support for UTF-8, but unfortunately our input
layer and font renderer don't support this. If users want to
experiment with UTF-8 support, they can enable `TEKEN_UTF8' in
teken.h. If you recompile your kernel or the teken_demo application,
you can hold some nice experiments.
- I've left PC98 the way it is right now. The PC98 platform has a custom
syscons renderer, which supports some form of localised input. Maybe
we should port PC98 to libteken by the time syscons supports UTF-8?
- I've removed the `dumb' terminal emulator. It has been broken for
years. It hasn't survived the `struct proc' -> `struct thread'
conversion.
- To prevent confusion among people that want to hack on libteken:
unlike syscons, the state machines that parse the escape sequences are
machine generated. This means that if you want to add new escape
sequences, you have to add an entry to the `sequences' file. This will
cause new entries to be added to `teken_state.h'.
- Any rendering artifacts that didn't occur prior to this commit are by
accident. They should be reported to me, so I can fix them.
Discussed on: current@, hackers@
Discussed with: philip (at 25C3)
2009-01-01 13:26:53 +00:00
|
|
|
dev/syscons/scterm-teken.c optional sc
|
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
|
|
|
|
dev/syscons/scvtb.c optional sc
|
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
|
2004-06-30 14:19:28 +00:00
|
|
|
dev/acpica/acpi_if.m standard
|
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
|
2007-11-08 22:09:37 +00:00
|
|
|
dev/wpi/if_wpi.c optional wpi
|
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 \
|
|
|
|
dependency "$S/i386/acpica/acpi_wakecode.S assym.s" \
|
|
|
|
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/mca_machdep.c optional mca
|
|
|
|
i386/bios/smapi.c optional smapi
|
|
|
|
i386/bios/smapi_bios.S optional smapi
|
|
|
|
#i386/i386/apic_vector.s optional apic
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/i386/atomic.c standard \
|
2000-01-09 08:24:27 +00:00
|
|
|
compile-with "${CC} -c ${CFLAGS} ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}"
|
1999-07-03 19:19:34 +00:00
|
|
|
i386/i386/autoconf.c standard
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/i386/bios.c optional native
|
|
|
|
i386/i386/bioscall.s optional native
|
2005-12-07 21:30:47 +00:00
|
|
|
i386/i386/bpf_jit_machdep.c optional bpf_jitter
|
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
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/i386/exception.s optional native
|
|
|
|
i386/xen/exception.s optional xen
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/gdb_machdep.c optional gdb
|
|
|
|
i386/i386/geode.c optional cpu_geode
|
|
|
|
i386/i386/i686_mem.c optional mem
|
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
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/i386/locore.s optional native no-obj
|
|
|
|
i386/xen/locore.s optional xen 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
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/xen/xen_machdep.c optional xen
|
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
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/mp_clock.c optional smp
|
2008-09-23 03:13:33 +00:00
|
|
|
i386/i386/mp_machdep.c optional native smp
|
|
|
|
i386/xen/mp_machdep.c optional xen smp
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/mp_watchdog.c optional mp_watchdog smp
|
2008-09-23 03:13:33 +00:00
|
|
|
i386/i386/mpboot.s optional smp native
|
|
|
|
i386/xen/mptable.c optional apic xen
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/perfmon.c optional perfmon
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/i386/pmap.c optional native
|
|
|
|
i386/xen/pmap.c optional xen
|
2005-05-31 09:43:04 +00:00
|
|
|
i386/i386/ptrace_machdep.c standard
|
Break out stack(9) from ddb(4):
- Introduce per-architecture stack_machdep.c to hold stack_save(9).
- Introduce per-architecture machine/stack.h to capture any common
definitions required between db_trace.c and stack_machdep.c.
- Add new kernel option "options STACK"; we will build in stack(9) if it is
defined, or also if "options DDB" is defined to provide compatibility
with existing users of stack(9).
Add new stack_save_td(9) function, which allows the capture of a stacktrace
of another thread rather than the current thread, which the existing
stack_save(9) was limited to. It requires that the thread be neither
swapped out nor running, which is the responsibility of the consumer to
enforce.
Update stack(9) man page.
Build tested: amd64, arm, i386, ia64, powerpc, sparc64, sun4v
Runtime tested: amd64 (rwatson), arm (cognet), i386 (rwatson)
2007-12-02 20:40:35 +00:00
|
|
|
i386/i386/stack_machdep.c optional ddb | stack
|
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/ibcs2/ibcs2_errno.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_fcntl.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_ioctl.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_ipc.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_isc.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_isc_sysent.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_misc.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_msg.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_other.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_signal.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_socksys.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_stat.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_sysent.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_sysi86.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_sysvec.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_util.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_xenix.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2
|
|
|
|
i386/ibcs2/imgact_coff.c optional ibcs2
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/xen/clock.c optional xen
|
2005-11-27 21:41:58 +00:00
|
|
|
i386/isa/elink.c optional ep | ie
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/isa/npx.c optional npx
|
|
|
|
i386/isa/pmtimer.c optional pmtimer
|
|
|
|
i386/isa/prof_machdep.c optional profiling-routine
|
|
|
|
i386/isa/spic.c optional spic
|
|
|
|
i386/linux/imgact_linux.c optional compat_linux
|
|
|
|
i386/linux/linux_dummy.c optional compat_linux
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/linux/linux_locore.s optional compat_linux \
|
1996-03-15 07:49:02 +00:00
|
|
|
dependency "linux_assym.h"
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/linux/linux_machdep.c optional compat_linux
|
|
|
|
i386/linux/linux_ptrace.c optional compat_linux
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/linux/linux_support.s optional compat_linux \
|
2007-05-23 15:45:52 +00:00
|
|
|
dependency "linux_assym.h"
|
2005-01-04 06:07:25 +00:00
|
|
|
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
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/svr4/svr4_locore.s optional compat_svr4 \
|
2001-01-09 05:03:08 +00:00
|
|
|
dependency "svr4_assym.h" \
|
2002-08-20 00:29:16 +00:00
|
|
|
warning "COMPAT_SVR4 is broken and should be avoided"
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/svr4/svr4_machdep.c optional compat_svr4
|
2000-10-09 13:41:07 +00:00
|
|
|
#
|
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
|
2014-02-14 15:18:37 +00:00
|
|
|
libkern/flsll.c standard
|
2009-02-28 16:21:25 +00:00
|
|
|
libkern/memmove.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
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/xbox/xbox.c optional xbox
|
|
|
|
i386/xbox/xboxfb.c optional xboxfb
|
|
|
|
dev/fb/boot_font.c optional xboxfb
|
|
|
|
i386/xbox/pic16l.s optional xbox
|
2009-09-22 07:10:23 +00:00
|
|
|
#
|
2015-03-01 20:54:29 +00:00
|
|
|
# x86 real mode BIOS support, required by atkbdc/dpms/pci/vesa
|
2009-09-22 07:10:23 +00:00
|
|
|
#
|
2015-03-01 20:54:29 +00:00
|
|
|
compat/x86bios/x86bios.c optional x86bios | atkbd | 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
|
|
|
|
#
|
2010-02-25 14:13:39 +00:00
|
|
|
# x86 shared code between IA32, AMD64 and PC98 architectures
|
|
|
|
#
|
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
|
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
|
2012-03-09 19:42:48 +00:00
|
|
|
x86/isa/atrtc.c optional native
|
2010-02-25 14:13:39 +00:00
|
|
|
x86/isa/clock.c optional native
|
2012-03-09 19:42:48 +00:00
|
|
|
x86/isa/elcr.c optional atpic | apic native
|
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
|
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
|
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
|
2012-03-30 19:10:14 +00:00
|
|
|
x86/x86/legacy.c optional native
|
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
|
2010-10-28 07:58:06 +00:00
|
|
|
x86/x86/mptable.c optional apic native
|
2011-07-17 01:23:50 +00:00
|
|
|
x86/x86/mptable_pci.c optional apic native pci
|
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
|
2010-12-08 00:09:24 +00:00
|
|
|
x86/x86/tsc.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
|
|
|
|
x86/xen/xen_intr.c optional xen | xenhvm
|
2014-06-16 08:43:45 +00:00
|
|
|
x86/xen/xen_apic.c optional xenhvm
|
2014-06-16 08:44:33 +00:00
|
|
|
x86/xen/xenpv.c optional xen | xenhvm
|
2014-06-16 08:45:51 +00:00
|
|
|
x86/xen/xen_nexus.c optional xen | xenhvm
|
2014-09-30 16:46:45 +00:00
|
|
|
x86/xen/xen_msi.c optional xen | xenhvm
|